@datalayer/lexical-loro 0.0.3 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (402) hide show
  1. package/README.md +24 -137
  2. package/lib/App.d.ts +2 -0
  3. package/lib/App.js +141 -0
  4. package/lib/Editor.d.ts +2 -0
  5. package/lib/Editor.js +111 -0
  6. package/lib/Settings.d.ts +2 -0
  7. package/lib/Settings.js +57 -0
  8. package/lib/appSettings.d.ts +36 -0
  9. package/lib/appSettings.js +44 -0
  10. package/lib/collab/loro/Bindings.d.ts +41 -0
  11. package/lib/collab/loro/Bindings.js +95 -0
  12. package/lib/collab/loro/Debug.d.ts +33 -0
  13. package/lib/collab/loro/Debug.js +448 -0
  14. package/lib/collab/loro/LexicalCollaborationContext.d.ts +19 -0
  15. package/lib/collab/loro/LexicalCollaborationContext.js +48 -0
  16. package/lib/collab/loro/LexicalCollaborationPlugin.d.ts +24 -0
  17. package/lib/collab/loro/LexicalCollaborationPlugin.js +83 -0
  18. package/lib/collab/loro/State.d.ts +53 -0
  19. package/lib/collab/loro/State.js +90 -0
  20. package/lib/collab/loro/components/LoroCollaborationUI.d.ts +13 -0
  21. package/lib/collab/loro/components/LoroCollaborationUI.js +9 -0
  22. package/lib/collab/loro/components/LoroCollaborators.d.ts +8 -0
  23. package/lib/collab/loro/components/LoroCollaborators.js +97 -0
  24. package/lib/collab/loro/components/index.d.ts +2 -0
  25. package/lib/collab/loro/components/index.js +2 -0
  26. package/lib/collab/loro/index.d.ts +6 -0
  27. package/lib/collab/loro/index.js +6 -0
  28. package/lib/collab/loro/integrators/BaseIntegrator.d.ts +14 -0
  29. package/lib/collab/loro/integrators/BaseIntegrator.js +1 -0
  30. package/lib/collab/loro/integrators/CounterIntegrator.d.ts +23 -0
  31. package/lib/collab/loro/integrators/CounterIntegrator.js +40 -0
  32. package/lib/collab/loro/integrators/ListIntegrator.d.ts +23 -0
  33. package/lib/collab/loro/integrators/ListIntegrator.js +49 -0
  34. package/lib/collab/loro/integrators/MapIntegrator.d.ts +24 -0
  35. package/lib/collab/loro/integrators/MapIntegrator.js +177 -0
  36. package/lib/collab/loro/integrators/TextIntegrator.d.ts +25 -0
  37. package/lib/collab/loro/integrators/TextIntegrator.js +51 -0
  38. package/lib/collab/loro/integrators/TreeIntegrator.d.ts +25 -0
  39. package/lib/collab/loro/integrators/TreeIntegrator.js +201 -0
  40. package/lib/collab/loro/nodes/NodeFactory.d.ts +8 -0
  41. package/lib/collab/loro/nodes/NodeFactory.js +105 -0
  42. package/lib/collab/loro/nodes/NodesMapper.d.ts +111 -0
  43. package/lib/collab/loro/nodes/NodesMapper.js +258 -0
  44. package/lib/collab/loro/propagators/DecoratorNodePropagator.d.ts +60 -0
  45. package/lib/collab/loro/propagators/DecoratorNodePropagator.js +302 -0
  46. package/lib/collab/loro/propagators/ElementNodePropagator.d.ts +62 -0
  47. package/lib/collab/loro/propagators/ElementNodePropagator.js +335 -0
  48. package/lib/collab/loro/propagators/LineBreakNodePropagator.d.ts +57 -0
  49. package/lib/collab/loro/propagators/LineBreakNodePropagator.js +196 -0
  50. package/lib/collab/loro/propagators/RootNodePropagator.d.ts +55 -0
  51. package/lib/collab/loro/propagators/RootNodePropagator.js +168 -0
  52. package/lib/collab/loro/propagators/TextNodePropagator.d.ts +60 -0
  53. package/lib/collab/loro/propagators/TextNodePropagator.js +434 -0
  54. package/lib/collab/loro/propagators/index.d.ts +49 -0
  55. package/lib/collab/loro/propagators/index.js +32 -0
  56. package/lib/collab/loro/provider/websocket.d.ts +116 -0
  57. package/lib/collab/loro/provider/websocket.js +907 -0
  58. package/lib/collab/loro/servers/index.d.ts +0 -0
  59. package/lib/collab/loro/servers/index.js +0 -0
  60. package/lib/collab/loro/servers/ws/callback.d.ts +5 -0
  61. package/lib/collab/loro/servers/ws/callback.js +85 -0
  62. package/lib/collab/loro/servers/ws/server.d.ts +2 -0
  63. package/lib/collab/loro/servers/ws/server.js +25 -0
  64. package/lib/collab/loro/servers/ws/utils.d.ts +40 -0
  65. package/lib/collab/loro/servers/ws/utils.js +513 -0
  66. package/lib/collab/loro/sync/SyncCursors.d.ts +32 -0
  67. package/lib/collab/loro/sync/SyncCursors.js +435 -0
  68. package/lib/collab/loro/sync/SyncLexicalToLoro.d.ts +4 -0
  69. package/lib/collab/loro/sync/SyncLexicalToLoro.js +80 -0
  70. package/lib/collab/loro/sync/SyncLoroToLexical.d.ts +5 -0
  71. package/lib/collab/loro/sync/SyncLoroToLexical.js +96 -0
  72. package/lib/collab/loro/types/LexicalNodeData.d.ts +32 -0
  73. package/lib/collab/loro/types/LexicalNodeData.js +71 -0
  74. package/lib/collab/loro/useCollaboration.d.ts +12 -0
  75. package/lib/collab/loro/useCollaboration.js +248 -0
  76. package/lib/collab/loro/utils/InitialContent.d.ts +64 -0
  77. package/lib/collab/loro/utils/InitialContent.js +109 -0
  78. package/lib/collab/loro/utils/LexicalToLoro.d.ts +18 -0
  79. package/lib/collab/loro/utils/LexicalToLoro.js +96 -0
  80. package/lib/collab/loro/utils/Utils.d.ts +44 -0
  81. package/lib/collab/loro/utils/Utils.js +153 -0
  82. package/lib/collab/loro/wsProvider.d.ts +8 -0
  83. package/lib/collab/loro/wsProvider.js +31 -0
  84. package/lib/collab/utils/invariant.d.ts +1 -0
  85. package/lib/collab/utils/invariant.js +11 -0
  86. package/lib/collab/utils/simpleDiffWithCursor.d.ts +5 -0
  87. package/lib/collab/utils/simpleDiffWithCursor.js +31 -0
  88. package/lib/collab/yjs/Bindings.d.ts +23 -0
  89. package/lib/collab/yjs/Bindings.js +26 -0
  90. package/lib/collab/yjs/Debug.d.ts +23 -0
  91. package/lib/collab/yjs/Debug.js +213 -0
  92. package/lib/collab/yjs/LexicalCollaborationContext.d.ts +10 -0
  93. package/lib/collab/yjs/LexicalCollaborationContext.js +37 -0
  94. package/lib/collab/yjs/LexicalCollaborationPlugin.d.ts +21 -0
  95. package/lib/collab/yjs/LexicalCollaborationPlugin.js +63 -0
  96. package/lib/collab/yjs/State.d.ts +51 -0
  97. package/lib/collab/yjs/State.js +35 -0
  98. package/lib/collab/yjs/nodes/AnyCollabNode.d.ts +5 -0
  99. package/lib/collab/yjs/nodes/AnyCollabNode.js +1 -0
  100. package/lib/collab/yjs/nodes/CollabDecoratorNode.d.ts +22 -0
  101. package/lib/collab/yjs/nodes/CollabDecoratorNode.js +64 -0
  102. package/lib/collab/yjs/nodes/CollabElementNode.d.ts +40 -0
  103. package/lib/collab/yjs/nodes/CollabElementNode.js +462 -0
  104. package/lib/collab/yjs/nodes/CollabLineBreakNode.d.ts +19 -0
  105. package/lib/collab/yjs/nodes/CollabLineBreakNode.js +44 -0
  106. package/lib/collab/yjs/nodes/CollabTextNode.d.ts +25 -0
  107. package/lib/collab/yjs/nodes/CollabTextNode.js +103 -0
  108. package/lib/collab/yjs/provider/websocket.d.ts +88 -0
  109. package/lib/collab/yjs/provider/websocket.js +415 -0
  110. package/lib/collab/yjs/servers/index.d.ts +0 -0
  111. package/lib/collab/yjs/servers/index.js +0 -0
  112. package/lib/collab/yjs/servers/ws/callback.d.ts +5 -0
  113. package/lib/collab/yjs/servers/ws/callback.js +72 -0
  114. package/lib/collab/yjs/servers/ws/server.d.ts +2 -0
  115. package/lib/collab/yjs/servers/ws/server.js +25 -0
  116. package/lib/collab/yjs/servers/ws/utils.d.ts +49 -0
  117. package/lib/collab/yjs/servers/ws/utils.js +284 -0
  118. package/lib/collab/yjs/sync/SyncCursors.d.ts +39 -0
  119. package/lib/collab/yjs/sync/SyncCursors.js +351 -0
  120. package/lib/collab/yjs/sync/SyncEditorStates.d.ts +10 -0
  121. package/lib/collab/yjs/sync/SyncEditorStates.js +200 -0
  122. package/lib/collab/yjs/useCollaboration.d.ts +12 -0
  123. package/lib/collab/yjs/useCollaboration.js +255 -0
  124. package/lib/collab/yjs/utils/Utils.d.ts +25 -0
  125. package/lib/collab/yjs/utils/Utils.js +402 -0
  126. package/lib/collab/yjs/wsProvider.d.ts +3 -0
  127. package/lib/collab/yjs/wsProvider.js +21 -0
  128. package/lib/commenting/index.d.ts +41 -0
  129. package/lib/commenting/index.js +324 -0
  130. package/lib/context/FlashMessageContext.d.ts +7 -0
  131. package/lib/context/FlashMessageContext.js +24 -0
  132. package/lib/context/SettingsContext.d.ts +12 -0
  133. package/lib/context/SettingsContext.js +38 -0
  134. package/lib/context/SharedHistoryContext.d.ts +11 -0
  135. package/lib/context/SharedHistoryContext.js +11 -0
  136. package/lib/context/ToolbarContext.d.ts +65 -0
  137. package/lib/context/ToolbarContext.js +84 -0
  138. package/lib/demo.d.ts +12 -0
  139. package/lib/demo.js +41 -0
  140. package/lib/hooks/useFlashMessage.d.ts +2 -0
  141. package/lib/hooks/useFlashMessage.js +4 -0
  142. package/lib/hooks/useModal.d.ts +5 -0
  143. package/lib/hooks/useModal.js +26 -0
  144. package/lib/hooks/useReport.d.ts +1 -0
  145. package/lib/hooks/useReport.js +46 -0
  146. package/lib/index.d.ts +1 -1
  147. package/lib/index.js +1 -5
  148. package/lib/nodes/AutocompleteNode.d.ts +27 -0
  149. package/lib/nodes/AutocompleteNode.js +56 -0
  150. package/lib/nodes/CounterComponent.d.ts +6 -0
  151. package/lib/nodes/CounterComponent.js +137 -0
  152. package/lib/nodes/CounterNode.d.ts +23 -0
  153. package/lib/nodes/CounterNode.js +47 -0
  154. package/lib/nodes/DateTimeNode/DateTimeComponent.d.ts +8 -0
  155. package/lib/nodes/DateTimeNode/DateTimeComponent.js +119 -0
  156. package/lib/nodes/DateTimeNode/DateTimeNode.d.ts +27 -0
  157. package/lib/nodes/DateTimeNode/DateTimeNode.js +82 -0
  158. package/lib/nodes/EmojiNode.d.ts +18 -0
  159. package/lib/nodes/EmojiNode.js +50 -0
  160. package/lib/nodes/EquationComponent.d.ts +9 -0
  161. package/lib/nodes/EquationComponent.js +75 -0
  162. package/lib/nodes/EquationNode.d.ts +26 -0
  163. package/lib/nodes/EquationNode.js +109 -0
  164. package/lib/nodes/ExcalidrawNode/ExcalidrawComponent.d.ts +8 -0
  165. package/lib/nodes/ExcalidrawNode/ExcalidrawComponent.js +110 -0
  166. package/lib/nodes/ExcalidrawNode/ExcalidrawImage.d.ts +50 -0
  167. package/lib/nodes/ExcalidrawNode/ExcalidrawImage.js +55 -0
  168. package/lib/nodes/ExcalidrawNode/index.d.ts +32 -0
  169. package/lib/nodes/ExcalidrawNode/index.js +117 -0
  170. package/lib/nodes/FigmaNode.d.ts +20 -0
  171. package/lib/nodes/FigmaNode.js +52 -0
  172. package/lib/nodes/ImageComponent.d.ts +16 -0
  173. package/lib/nodes/ImageComponent.js +272 -0
  174. package/lib/nodes/ImageNode.d.ts +50 -0
  175. package/lib/nodes/ImageNode.js +151 -0
  176. package/lib/nodes/InlineImageNode/InlineImageComponent.d.ts +26 -0
  177. package/lib/nodes/InlineImageNode/InlineImageComponent.js +161 -0
  178. package/lib/nodes/InlineImageNode/InlineImageNode.d.ts +59 -0
  179. package/lib/nodes/InlineImageNode/InlineImageNode.js +162 -0
  180. package/lib/nodes/KeywordNode.d.ts +14 -0
  181. package/lib/nodes/KeywordNode.js +33 -0
  182. package/lib/nodes/LayoutContainerNode.d.ts +24 -0
  183. package/lib/nodes/LayoutContainerNode.js +91 -0
  184. package/lib/nodes/LayoutItemNode.d.ts +16 -0
  185. package/lib/nodes/LayoutItemNode.js +65 -0
  186. package/lib/nodes/MentionNode.d.ts +20 -0
  187. package/lib/nodes/MentionNode.js +81 -0
  188. package/lib/nodes/PageBreakNode/index.d.ts +17 -0
  189. package/lib/nodes/PageBreakNode/index.js +83 -0
  190. package/lib/nodes/PlaygroundNodes.d.ts +3 -0
  191. package/lib/nodes/PlaygroundNodes.js +71 -0
  192. package/lib/nodes/PollComponent.d.ts +9 -0
  193. package/lib/nodes/PollComponent.js +85 -0
  194. package/lib/nodes/PollNode.d.ts +43 -0
  195. package/lib/nodes/PollNode.js +153 -0
  196. package/lib/nodes/SpecialTextNode.d.ts +24 -0
  197. package/lib/nodes/SpecialTextNode.js +50 -0
  198. package/lib/nodes/StickyComponent.d.ts +10 -0
  199. package/lib/nodes/StickyComponent.js +162 -0
  200. package/lib/nodes/StickyNode.d.ts +31 -0
  201. package/lib/nodes/StickyNode.js +76 -0
  202. package/lib/nodes/TweetNode.d.ts +21 -0
  203. package/lib/nodes/TweetNode.js +119 -0
  204. package/lib/nodes/YouTubeNode.d.ts +22 -0
  205. package/lib/nodes/YouTubeNode.js +84 -0
  206. package/lib/plugins/ActionsPlugin/index.d.ts +5 -0
  207. package/lib/plugins/ActionsPlugin/index.js +168 -0
  208. package/lib/plugins/AutoEmbedPlugin/index.d.ts +19 -0
  209. package/lib/plugins/AutoEmbedPlugin/index.js +158 -0
  210. package/lib/plugins/AutoLinkPlugin/index.d.ts +2 -0
  211. package/lib/plugins/AutoLinkPlugin/index.js +15 -0
  212. package/lib/plugins/AutocompletePlugin/index.d.ts +10 -0
  213. package/lib/plugins/AutocompletePlugin/index.js +2473 -0
  214. package/lib/plugins/CodeActionMenuPlugin/components/CopyButton/index.d.ts +7 -0
  215. package/lib/plugins/CodeActionMenuPlugin/components/CopyButton/index.js +42 -0
  216. package/lib/plugins/CodeActionMenuPlugin/components/PrettierButton/index.d.ts +17 -0
  217. package/lib/plugins/CodeActionMenuPlugin/components/PrettierButton/index.js +111 -0
  218. package/lib/plugins/CodeActionMenuPlugin/index.d.ts +5 -0
  219. package/lib/plugins/CodeActionMenuPlugin/index.js +104 -0
  220. package/lib/plugins/CodeActionMenuPlugin/utils.d.ts +1 -0
  221. package/lib/plugins/CodeActionMenuPlugin/utils.js +18 -0
  222. package/lib/plugins/CodeHighlightPrismPlugin/index.d.ts +2 -0
  223. package/lib/plugins/CodeHighlightPrismPlugin/index.js +10 -0
  224. package/lib/plugins/CodeHighlightShikiPlugin/index.d.ts +2 -0
  225. package/lib/plugins/CodeHighlightShikiPlugin/index.js +10 -0
  226. package/lib/plugins/CollapsiblePlugin/CollapsibleContainerNode.d.ts +25 -0
  227. package/lib/plugins/CollapsiblePlugin/CollapsibleContainerNode.js +131 -0
  228. package/lib/plugins/CollapsiblePlugin/CollapsibleContentNode.d.ts +16 -0
  229. package/lib/plugins/CollapsiblePlugin/CollapsibleContentNode.js +79 -0
  230. package/lib/plugins/CollapsiblePlugin/CollapsibleTitleNode.d.ts +16 -0
  231. package/lib/plugins/CollapsiblePlugin/CollapsibleTitleNode.js +81 -0
  232. package/lib/plugins/CollapsiblePlugin/CollapsibleUtils.d.ts +2 -0
  233. package/lib/plugins/CollapsiblePlugin/CollapsibleUtils.js +8 -0
  234. package/lib/plugins/CollapsiblePlugin/index.d.ts +3 -0
  235. package/lib/plugins/CollapsiblePlugin/index.js +128 -0
  236. package/lib/plugins/CommentPlugin/index.d.ts +9 -0
  237. package/lib/plugins/CommentPlugin/index.js +460 -0
  238. package/lib/plugins/ComponentPickerPlugin/index.d.ts +2 -0
  239. package/lib/plugins/ComponentPickerPlugin/index.js +276 -0
  240. package/lib/plugins/ContextMenuPlugin/index.d.ts +2 -0
  241. package/lib/plugins/ContextMenuPlugin/index.js +112 -0
  242. package/lib/plugins/CounterPlugin/index.d.ts +3 -0
  243. package/lib/plugins/CounterPlugin/index.js +20 -0
  244. package/lib/plugins/DatalayerPlugin/index.d.ts +2 -0
  245. package/lib/plugins/DatalayerPlugin/index.js +218 -0
  246. package/lib/plugins/DateTimePlugin/index.d.ts +8 -0
  247. package/lib/plugins/DateTimePlugin/index.js +24 -0
  248. package/lib/plugins/DocsPlugin/index.d.ts +2 -0
  249. package/lib/plugins/DocsPlugin/index.js +4 -0
  250. package/lib/plugins/DragDropPastePlugin/index.d.ts +1 -0
  251. package/lib/plugins/DragDropPastePlugin/index.js +33 -0
  252. package/lib/plugins/DraggableBlockPlugin/index.d.ts +12 -0
  253. package/lib/plugins/DraggableBlockPlugin/index.js +36 -0
  254. package/lib/plugins/EmojiPickerPlugin/index.d.ts +1 -0
  255. package/lib/plugins/EmojiPickerPlugin/index.js +80 -0
  256. package/lib/plugins/EmojisPlugin/index.d.ts +2 -0
  257. package/lib/plugins/EmojisPlugin/index.js +52 -0
  258. package/lib/plugins/EquationsPlugin/index.d.ts +14 -0
  259. package/lib/plugins/EquationsPlugin/index.js +34 -0
  260. package/lib/plugins/ExcalidrawPlugin/index.d.ts +5 -0
  261. package/lib/plugins/ExcalidrawPlugin/index.js +44 -0
  262. package/lib/plugins/FigmaPlugin/index.d.ts +4 -0
  263. package/lib/plugins/FigmaPlugin/index.js +20 -0
  264. package/lib/plugins/FloatingLinkEditorPlugin/index.d.ts +15 -0
  265. package/lib/plugins/FloatingLinkEditorPlugin/index.js +280 -0
  266. package/lib/plugins/FloatingTextFormatToolbarPlugin/index.d.ts +7 -0
  267. package/lib/plugins/FloatingTextFormatToolbarPlugin/index.js +219 -0
  268. package/lib/plugins/ImagesPlugin/index.d.ts +24 -0
  269. package/lib/plugins/ImagesPlugin/index.js +195 -0
  270. package/lib/plugins/InlineImagePlugin/index.d.ts +17 -0
  271. package/lib/plugins/InlineImagePlugin/index.js +180 -0
  272. package/lib/plugins/KeywordsPlugin/index.d.ts +2 -0
  273. package/lib/plugins/KeywordsPlugin/index.js +31 -0
  274. package/lib/plugins/LayoutPlugin/InsertLayoutDialog.d.ts +6 -0
  275. package/lib/plugins/LayoutPlugin/InsertLayoutDialog.js +21 -0
  276. package/lib/plugins/LayoutPlugin/LayoutPlugin.d.ts +7 -0
  277. package/lib/plugins/LayoutPlugin/LayoutPlugin.js +131 -0
  278. package/lib/plugins/LinkPlugin/index.d.ts +6 -0
  279. package/lib/plugins/LinkPlugin/index.js +11 -0
  280. package/lib/plugins/MarkdownShortcutPlugin/index.d.ts +2 -0
  281. package/lib/plugins/MarkdownShortcutPlugin/index.js +6 -0
  282. package/lib/plugins/MarkdownTransformers/index.d.ts +8 -0
  283. package/lib/plugins/MarkdownTransformers/index.js +234 -0
  284. package/lib/plugins/MaxLengthPlugin/index.d.ts +3 -0
  285. package/lib/plugins/MaxLengthPlugin/index.js +37 -0
  286. package/lib/plugins/MentionsPlugin/index.d.ts +2 -0
  287. package/lib/plugins/MentionsPlugin/index.js +564 -0
  288. package/lib/plugins/PageBreakPlugin/index.d.ts +4 -0
  289. package/lib/plugins/PageBreakPlugin/index.js +27 -0
  290. package/lib/plugins/PasteLogPlugin/index.d.ts +2 -0
  291. package/lib/plugins/PasteLogPlugin/index.js +27 -0
  292. package/lib/plugins/PollPlugin/index.d.ts +8 -0
  293. package/lib/plugins/PollPlugin/index.js +38 -0
  294. package/lib/plugins/ShortcutsPlugin/index.d.ts +6 -0
  295. package/lib/plugins/ShortcutsPlugin/index.js +112 -0
  296. package/lib/plugins/ShortcutsPlugin/shortcuts.d.ts +59 -0
  297. package/lib/plugins/ShortcutsPlugin/shortcuts.js +169 -0
  298. package/lib/plugins/SpecialTextPlugin/index.d.ts +2 -0
  299. package/lib/plugins/SpecialTextPlugin/index.js +46 -0
  300. package/lib/plugins/SpeechToTextPlugin/index.d.ts +5 -0
  301. package/lib/plugins/SpeechToTextPlugin/index.js +82 -0
  302. package/lib/plugins/StickyPlugin/index.d.ts +2 -0
  303. package/lib/plugins/StickyPlugin/index.js +12 -0
  304. package/lib/plugins/TabFocusPlugin/index.d.ts +1 -0
  305. package/lib/plugins/TabFocusPlugin/index.js +34 -0
  306. package/lib/plugins/TableActionMenuPlugin/index.d.ts +5 -0
  307. package/lib/plugins/TableActionMenuPlugin/index.js +492 -0
  308. package/lib/plugins/TableCellResizer/index.d.ts +3 -0
  309. package/lib/plugins/TableCellResizer/index.js +297 -0
  310. package/lib/plugins/TableHoverActionsPlugin/index.d.ts +4 -0
  311. package/lib/plugins/TableHoverActionsPlugin/index.js +188 -0
  312. package/lib/plugins/TableOfContentsPlugin/index.d.ts +2 -0
  313. package/lib/plugins/TableOfContentsPlugin/index.js +116 -0
  314. package/lib/plugins/TablePlugin.d.ts +31 -0
  315. package/lib/plugins/TablePlugin.js +63 -0
  316. package/lib/plugins/TestRecorderPlugin/index.d.ts +3 -0
  317. package/lib/plugins/TestRecorderPlugin/index.js +346 -0
  318. package/lib/plugins/ToolbarPlugin/fontSize.d.ts +9 -0
  319. package/lib/plugins/ToolbarPlugin/fontSize.js +80 -0
  320. package/lib/plugins/ToolbarPlugin/index.d.ts +9 -0
  321. package/lib/plugins/ToolbarPlugin/index.js +500 -0
  322. package/lib/plugins/ToolbarPlugin/utils.d.ts +26 -0
  323. package/lib/plugins/ToolbarPlugin/utils.js +243 -0
  324. package/lib/plugins/TreeViewPlugin/index.d.ts +2 -0
  325. package/lib/plugins/TreeViewPlugin/index.js +7 -0
  326. package/lib/plugins/TwitterPlugin/index.d.ts +4 -0
  327. package/lib/plugins/TwitterPlugin/index.js +20 -0
  328. package/lib/plugins/TypingPerfPlugin/index.d.ts +2 -0
  329. package/lib/plugins/TypingPerfPlugin/index.js +93 -0
  330. package/lib/plugins/YouTubePlugin/index.d.ts +4 -0
  331. package/lib/plugins/YouTubePlugin/index.js +20 -0
  332. package/lib/server/validation.d.ts +1 -0
  333. package/lib/server/validation.js +111 -0
  334. package/lib/setupEnv.d.ts +2 -0
  335. package/lib/setupEnv.js +25 -0
  336. package/lib/themes/CommentEditorTheme.d.ts +4 -0
  337. package/lib/themes/CommentEditorTheme.js +7 -0
  338. package/lib/themes/PlaygroundEditorTheme.d.ts +4 -0
  339. package/lib/themes/PlaygroundEditorTheme.js +120 -0
  340. package/lib/themes/StickyEditorTheme.d.ts +4 -0
  341. package/lib/themes/StickyEditorTheme.js +7 -0
  342. package/lib/tyes.dt.d.ts +12 -0
  343. package/lib/tyes.dt.js +0 -0
  344. package/lib/ui/Button.d.ts +12 -0
  345. package/lib/ui/Button.js +6 -0
  346. package/lib/ui/ColorPicker.d.ts +14 -0
  347. package/lib/ui/ColorPicker.js +219 -0
  348. package/lib/ui/ContentEditable.d.ts +9 -0
  349. package/lib/ui/ContentEditable.js +6 -0
  350. package/lib/ui/Dialog.d.ts +10 -0
  351. package/lib/ui/Dialog.js +8 -0
  352. package/lib/ui/DropDown.d.ts +18 -0
  353. package/lib/ui/DropDown.js +133 -0
  354. package/lib/ui/DropdownColorPicker.d.ts +13 -0
  355. package/lib/ui/DropdownColorPicker.js +6 -0
  356. package/lib/ui/EquationEditor.d.ts +8 -0
  357. package/lib/ui/EquationEditor.js +11 -0
  358. package/lib/ui/ExcalidrawModal.d.ts +42 -0
  359. package/lib/ui/ExcalidrawModal.js +103 -0
  360. package/lib/ui/FileInput.d.ts +10 -0
  361. package/lib/ui/FileInput.js +5 -0
  362. package/lib/ui/FlashMessage.d.ts +7 -0
  363. package/lib/ui/FlashMessage.js +6 -0
  364. package/lib/ui/ImageResizer.d.ts +17 -0
  365. package/lib/ui/ImageResizer.js +171 -0
  366. package/lib/ui/KatexEquationAlterer.d.ts +8 -0
  367. package/lib/ui/KatexEquationAlterer.js +23 -0
  368. package/lib/ui/KatexRenderer.d.ts +6 -0
  369. package/lib/ui/KatexRenderer.js +24 -0
  370. package/lib/ui/Modal.d.ts +9 -0
  371. package/lib/ui/Modal.js +48 -0
  372. package/lib/ui/Select.d.ts +8 -0
  373. package/lib/ui/Select.js +5 -0
  374. package/lib/ui/Switch.d.ts +8 -0
  375. package/lib/ui/Switch.js +6 -0
  376. package/lib/ui/TextInput.d.ts +13 -0
  377. package/lib/ui/TextInput.js +7 -0
  378. package/lib/utils/docSerialization.d.ts +3 -0
  379. package/lib/utils/docSerialization.js +56 -0
  380. package/lib/utils/emoji-list.d.ts +20 -0
  381. package/lib/utils/emoji-list.js +16605 -0
  382. package/lib/utils/getDOMRangeRect.d.ts +8 -0
  383. package/lib/utils/getDOMRangeRect.js +22 -0
  384. package/lib/utils/getSelectedNode.d.ts +2 -0
  385. package/lib/utils/getSelectedNode.js +24 -0
  386. package/lib/utils/getThemeSelector.d.ts +2 -0
  387. package/lib/utils/getThemeSelector.js +10 -0
  388. package/lib/utils/isMobileWidth.d.ts +7 -0
  389. package/lib/utils/isMobileWidth.js +7 -0
  390. package/lib/utils/joinClasses.d.ts +1 -0
  391. package/lib/utils/joinClasses.js +3 -0
  392. package/lib/utils/setFloatingElemPosition.d.ts +1 -0
  393. package/lib/utils/setFloatingElemPosition.js +55 -0
  394. package/lib/utils/setFloatingElemPositionForLinkEditor.d.ts +1 -0
  395. package/lib/utils/setFloatingElemPositionForLinkEditor.js +32 -0
  396. package/lib/utils/swipe.d.ts +4 -0
  397. package/lib/utils/swipe.js +90 -0
  398. package/lib/utils/url.d.ts +2 -0
  399. package/lib/utils/url.js +27 -0
  400. package/package.json +84 -50
  401. package/lib/LoroCollaborativePlugin.d.ts +0 -16
  402. package/lib/LoroCollaborativePlugin.js +0 -2503
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ export declare function getDOMRangeRect(nativeSelection: Selection, rootElement: HTMLElement): DOMRect;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ export function getDOMRangeRect(nativeSelection, rootElement) {
9
+ const domRange = nativeSelection.getRangeAt(0);
10
+ let rect;
11
+ if (nativeSelection.anchorNode === rootElement) {
12
+ let inner = rootElement;
13
+ while (inner.firstElementChild != null) {
14
+ inner = inner.firstElementChild;
15
+ }
16
+ rect = inner.getBoundingClientRect();
17
+ }
18
+ else {
19
+ rect = domRange.getBoundingClientRect();
20
+ }
21
+ return rect;
22
+ }
@@ -0,0 +1,2 @@
1
+ import { ElementNode, RangeSelection, TextNode } from 'lexical';
2
+ export declare function getSelectedNode(selection: RangeSelection): TextNode | ElementNode;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ import { $isAtNodeEnd } from '@lexical/selection';
9
+ export function getSelectedNode(selection) {
10
+ const anchor = selection.anchor;
11
+ const focus = selection.focus;
12
+ const anchorNode = selection.anchor.getNode();
13
+ const focusNode = selection.focus.getNode();
14
+ if (anchorNode === focusNode) {
15
+ return anchorNode;
16
+ }
17
+ const isBackward = selection.isBackward();
18
+ if (isBackward) {
19
+ return $isAtNodeEnd(focus) ? anchorNode : focusNode;
20
+ }
21
+ else {
22
+ return $isAtNodeEnd(anchor) ? anchorNode : focusNode;
23
+ }
24
+ }
@@ -0,0 +1,2 @@
1
+ import { EditorThemeClasses } from 'lexical';
2
+ export declare function getThemeSelector(getTheme: () => EditorThemeClasses | null | undefined, name: keyof EditorThemeClasses): string;
@@ -0,0 +1,10 @@
1
+ export function getThemeSelector(getTheme, name) {
2
+ const className = getTheme()?.[name];
3
+ if (typeof className !== 'string') {
4
+ throw new Error(`getThemeClass: required theme property ${name} not defined`);
5
+ }
6
+ return className
7
+ .split(/\s+/g)
8
+ .map((cls) => `.${cls}`)
9
+ .join();
10
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
@@ -0,0 +1 @@
1
+ export default function joinClasses(...args: Array<string | boolean | null | undefined>): string;
@@ -0,0 +1,3 @@
1
+ export default function joinClasses(...args) {
2
+ return args.filter(Boolean).join(' ');
3
+ }
@@ -0,0 +1 @@
1
+ export declare function setFloatingElemPosition(targetRect: DOMRect | null, floatingElem: HTMLElement, anchorElem: HTMLElement, isLink?: boolean, verticalGap?: number, horizontalOffset?: number): void;
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ const VERTICAL_GAP = 10;
9
+ const HORIZONTAL_OFFSET = 5;
10
+ export function setFloatingElemPosition(targetRect, floatingElem, anchorElem, isLink = false, verticalGap = VERTICAL_GAP, horizontalOffset = HORIZONTAL_OFFSET) {
11
+ const scrollerElem = anchorElem.parentElement;
12
+ if (targetRect === null || !scrollerElem) {
13
+ floatingElem.style.opacity = '0';
14
+ floatingElem.style.transform = 'translate(-10000px, -10000px)';
15
+ return;
16
+ }
17
+ const floatingElemRect = floatingElem.getBoundingClientRect();
18
+ const anchorElementRect = anchorElem.getBoundingClientRect();
19
+ const editorScrollerRect = scrollerElem.getBoundingClientRect();
20
+ let top = targetRect.top - floatingElemRect.height - verticalGap;
21
+ let left = targetRect.left - horizontalOffset;
22
+ // Check if text is end-aligned
23
+ const selection = window.getSelection();
24
+ if (selection && selection.rangeCount > 0) {
25
+ const range = selection.getRangeAt(0);
26
+ const textNode = range.startContainer;
27
+ if (textNode.nodeType === Node.ELEMENT_NODE || textNode.parentElement) {
28
+ const textElement = textNode.nodeType === Node.ELEMENT_NODE
29
+ ? textNode
30
+ : textNode.parentElement;
31
+ const textAlign = window.getComputedStyle(textElement).textAlign;
32
+ if (textAlign === 'right' || textAlign === 'end') {
33
+ // For end-aligned text, position the toolbar relative to the text end
34
+ left = targetRect.right - floatingElemRect.width + horizontalOffset;
35
+ }
36
+ }
37
+ }
38
+ if (top < editorScrollerRect.top) {
39
+ // adjusted height for link element if the element is at top
40
+ top +=
41
+ floatingElemRect.height +
42
+ targetRect.height +
43
+ verticalGap * (isLink ? 9 : 2);
44
+ }
45
+ if (left + floatingElemRect.width > editorScrollerRect.right) {
46
+ left = editorScrollerRect.right - floatingElemRect.width - horizontalOffset;
47
+ }
48
+ if (left < editorScrollerRect.left) {
49
+ left = editorScrollerRect.left + horizontalOffset;
50
+ }
51
+ top -= anchorElementRect.top;
52
+ left -= anchorElementRect.left;
53
+ floatingElem.style.opacity = '1';
54
+ floatingElem.style.transform = `translate(${left}px, ${top}px)`;
55
+ }
@@ -0,0 +1 @@
1
+ export declare function setFloatingElemPositionForLinkEditor(targetRect: DOMRect | null, floatingElem: HTMLElement, anchorElem: HTMLElement, verticalGap?: number, horizontalOffset?: number): void;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ const VERTICAL_GAP = 10;
9
+ const HORIZONTAL_OFFSET = 5;
10
+ export function setFloatingElemPositionForLinkEditor(targetRect, floatingElem, anchorElem, verticalGap = VERTICAL_GAP, horizontalOffset = HORIZONTAL_OFFSET) {
11
+ const scrollerElem = anchorElem.parentElement;
12
+ if (targetRect === null || !scrollerElem) {
13
+ floatingElem.style.opacity = '0';
14
+ floatingElem.style.transform = 'translate(-10000px, -10000px)';
15
+ return;
16
+ }
17
+ const floatingElemRect = floatingElem.getBoundingClientRect();
18
+ const anchorElementRect = anchorElem.getBoundingClientRect();
19
+ const editorScrollerRect = scrollerElem.getBoundingClientRect();
20
+ let top = targetRect.top - verticalGap;
21
+ let left = targetRect.left - horizontalOffset;
22
+ if (top < editorScrollerRect.top) {
23
+ top += floatingElemRect.height + targetRect.height + verticalGap * 2;
24
+ }
25
+ if (left + floatingElemRect.width > editorScrollerRect.right) {
26
+ left = editorScrollerRect.right - floatingElemRect.width - horizontalOffset;
27
+ }
28
+ top -= anchorElementRect.top;
29
+ left -= anchorElementRect.left;
30
+ floatingElem.style.opacity = '1';
31
+ floatingElem.style.transform = `translate(${left}px, ${top}px)`;
32
+ }
@@ -0,0 +1,4 @@
1
+ export declare function addSwipeLeftListener(element: HTMLElement, cb: (_force: number, e: TouchEvent) => void): () => void;
2
+ export declare function addSwipeRightListener(element: HTMLElement, cb: (_force: number, e: TouchEvent) => void): () => void;
3
+ export declare function addSwipeUpListener(element: HTMLElement, cb: (_force: number, e: TouchEvent) => void): () => void;
4
+ export declare function addSwipeDownListener(element: HTMLElement, cb: (_force: number, e: TouchEvent) => void): () => void;
@@ -0,0 +1,90 @@
1
+ const elements = new WeakMap();
2
+ function readTouch(e) {
3
+ const touch = e.changedTouches[0];
4
+ if (touch === undefined) {
5
+ return null;
6
+ }
7
+ return [touch.clientX, touch.clientY];
8
+ }
9
+ function addListener(element, cb) {
10
+ let elementValues = elements.get(element);
11
+ if (elementValues === undefined) {
12
+ const listeners = new Set();
13
+ const handleTouchstart = (e) => {
14
+ if (elementValues !== undefined) {
15
+ elementValues.start = readTouch(e);
16
+ }
17
+ };
18
+ const handleTouchend = (e) => {
19
+ if (elementValues === undefined) {
20
+ return;
21
+ }
22
+ const start = elementValues.start;
23
+ if (start === null) {
24
+ return;
25
+ }
26
+ const end = readTouch(e);
27
+ for (const listener of listeners) {
28
+ if (end !== null) {
29
+ listener([end[0] - start[0], end[1] - start[1]], e);
30
+ }
31
+ }
32
+ };
33
+ element.addEventListener('touchstart', handleTouchstart);
34
+ element.addEventListener('touchend', handleTouchend);
35
+ elementValues = {
36
+ handleTouchend,
37
+ handleTouchstart,
38
+ listeners,
39
+ start: null,
40
+ };
41
+ elements.set(element, elementValues);
42
+ }
43
+ elementValues.listeners.add(cb);
44
+ return () => deleteListener(element, cb);
45
+ }
46
+ function deleteListener(element, cb) {
47
+ const elementValues = elements.get(element);
48
+ if (elementValues === undefined) {
49
+ return;
50
+ }
51
+ const listeners = elementValues.listeners;
52
+ listeners.delete(cb);
53
+ if (listeners.size === 0) {
54
+ elements.delete(element);
55
+ element.removeEventListener('touchstart', elementValues.handleTouchstart);
56
+ element.removeEventListener('touchend', elementValues.handleTouchend);
57
+ }
58
+ }
59
+ export function addSwipeLeftListener(element, cb) {
60
+ return addListener(element, (force, e) => {
61
+ const [x, y] = force;
62
+ if (x < 0 && -x > Math.abs(y)) {
63
+ cb(x, e);
64
+ }
65
+ });
66
+ }
67
+ export function addSwipeRightListener(element, cb) {
68
+ return addListener(element, (force, e) => {
69
+ const [x, y] = force;
70
+ if (x > 0 && x > Math.abs(y)) {
71
+ cb(x, e);
72
+ }
73
+ });
74
+ }
75
+ export function addSwipeUpListener(element, cb) {
76
+ return addListener(element, (force, e) => {
77
+ const [x, y] = force;
78
+ if (y < 0 && -y > Math.abs(x)) {
79
+ cb(x, e);
80
+ }
81
+ });
82
+ }
83
+ export function addSwipeDownListener(element, cb) {
84
+ return addListener(element, (force, e) => {
85
+ const [x, y] = force;
86
+ if (y > 0 && y > Math.abs(x)) {
87
+ cb(x, e);
88
+ }
89
+ });
90
+ }
@@ -0,0 +1,2 @@
1
+ export declare function sanitizeUrl(url: string): string;
2
+ export declare function validateUrl(url: string): boolean;
@@ -0,0 +1,27 @@
1
+ const SUPPORTED_URL_PROTOCOLS = new Set([
2
+ 'http:',
3
+ 'https:',
4
+ 'mailto:',
5
+ 'sms:',
6
+ 'tel:',
7
+ ]);
8
+ export function sanitizeUrl(url) {
9
+ try {
10
+ const parsedUrl = new URL(url);
11
+ // eslint-disable-next-line no-script-url
12
+ if (!SUPPORTED_URL_PROTOCOLS.has(parsedUrl.protocol)) {
13
+ return 'about:blank';
14
+ }
15
+ }
16
+ catch {
17
+ return url;
18
+ }
19
+ return url;
20
+ }
21
+ // Source: https://stackoverflow.com/a/8234912/2013580
22
+ const urlRegExp = new RegExp(/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=+$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=+$,\w]+@)[A-Za-z0-9.-]+)((?:\/[+~%/.\w-_]*)?\??(?:[-+=&;%@.\w_]*)#?(?:[\w]*))?)/);
23
+ export function validateUrl(url) {
24
+ // TODO Fix UI for link insertion; it should never default to an invalid URL such as https://.
25
+ // Maybe show a dialog where they user can type the URL before inserting it.
26
+ return url === 'https://' || urlRegExp.test(url);
27
+ }
package/package.json CHANGED
@@ -1,90 +1,124 @@
1
1
  {
2
2
  "name": "@datalayer/lexical-loro",
3
+ "version": "0.1.0",
3
4
  "private": false,
4
- "version": "0.0.3",
5
- "type": "module",
6
- "description": "Collaborative editing plugin for Lexical based on Loro CRDT",
7
5
  "main": "lib/index.js",
8
- "types": "lib/index.d.ts",
9
6
  "files": [
10
- "lib/**/*.*"
7
+ "lib/**/*.{css,d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}",
8
+ "style/**/*.{css,js,eot,gif,html,jpg,json,png,svg,woff2,ttf}",
9
+ "schema/*.json"
11
10
  ],
12
11
  "keywords": [
13
- "lexical",
14
- "loro",
15
- "crdt",
16
- "collaborative",
17
- "editor",
18
- "plugin",
12
+ "jupyter",
13
+ "jupyterlab",
19
14
  "react"
20
15
  ],
21
16
  "repository": {
22
17
  "type": "git",
23
18
  "url": "https://github.com/datalayer/lexical-loro.git"
24
19
  },
25
- "author": "Datalayer <info@datalayer.io>",
26
- "license": "MIT",
20
+ "sideEffects": [
21
+ "style/*.css",
22
+ "src/**/*.css",
23
+ "style/index.js"
24
+ ],
25
+ "styleModule": "style/index.js",
27
26
  "publishConfig": {
28
27
  "access": "public"
29
28
  },
30
29
  "scripts": {
31
30
  "build": "tsc -b && vite build",
31
+ "dev": "cross-env NODE_ENV=development concurrently \"npm:server:py:ws\" \"npm:server:mcp\" \"vite --host --port 3000\"",
32
+ "build:tsc": "tsc",
33
+ "build:dev": "vite build",
34
+ "build:prod": "vite build --mode production",
35
+ "server:loro": "fkill -s :1235 && cross-env HOST=localhost PORT=1235 YPERSISTENCE=./.wss-loro tsx src/collab/loro/servers/ws/server.ts",
36
+ "server:yjs": "fkill -s :1234 && cross-env HOST=localhost PORT=1234 YPERSISTENCE=./.wss-yjs tsx src/collab/yjs/servers/ws/server.ts",
37
+ "server:yjs:dist": "cross-env HOST=localhost PORT=1234 YPERSISTENCE=./.yjs-wss-db npx y-websocket",
38
+ "test": "npm run test:js && npm run test:py",
39
+ "test:watch": "jest --watch",
40
+ "test:coverage": "npm run test:js:coverage && npm run test:py:coverage",
41
+ "test:js:coverage": "jest --coverage",
42
+ "preview": "vite preview",
43
+ "watch:lib": "tsc -b -w",
32
44
  "clean": "rimraf dist lib",
33
- "dev": "npm run example",
34
45
  "dev:all:js": "npm run example:js",
35
46
  "dev:all:py": "npm run example:py",
36
47
  "dev:vite": "npm run example:vite",
37
- "example": "concurrently \"npm run server\" \"npm run server:py\" \"npm run example:vite\"",
48
+ "example": "concurrently \"npm run server\" \"npm run server:py\" \"npm run server:mcp\" \"npm run example:vite\"",
38
49
  "example:js": "concurrently \"npm run server\" \"npm run example:vite\"",
39
- "example:py": "concurrently \"npm run server:py:dev\" \"npm run server:py:minimal\" \"npm run example:vite\"",
50
+ "example:py": "concurrently \"npm run server:py:dev\" \"npm run example:vite\"",
40
51
  "example:vite": "vite",
41
52
  "lint": "eslint .",
42
- "preview": "vite preview",
43
- "server": "tsx node-js/server.ts",
53
+ "server": "tsx dev/node-server.ts",
44
54
  "server:py": "lexical-loro-server",
45
55
  "server:py:dev": "python3 -m lexical_loro.cli",
46
- "server:py:minimal": "python3 -m lexical_loro.cli_minimal",
47
- "test": "vitest",
56
+ "server:py:ws": "python3 -m lexical_loro.cli --host localhost --port 3002 --autosave-interval 5",
57
+ "server:mcp": "python3 -m lexical_loro.mcp.server --host 0.0.0.0 --port 3001",
48
58
  "test:js": "vitest run",
49
- "test:py": "python3 -m pytest lexical_loro/tests/ -v",
50
- "test:py:coverage": "python3 -m pytest lexical_loro/tests/ --cov=. --cov-report=html --cov-report=term",
51
- "test:py:watch": "python3 -m pytest lexical_loro/tests/ -v --tb=short -f"
59
+ "test:py": "python3 -m pytest tests/ -v",
60
+ "test:py:coverage": "python3 -m pytest tests/ --cov=lexical_loro --cov-report=html --cov-report=term",
61
+ "test:py:watch": "python3 -m pytest tests/ -v --tb=short -f"
52
62
  },
53
63
  "dependencies": {
54
- "loro-crdt": "^1.5.10",
55
- "react": "^18.3.1",
56
- "react-dom": "^18.3.1",
57
- "lexical": "^0.33.1",
58
- "@lexical/react": "^0.33.1",
59
- "@lexical/selection": "^0.33.1"
64
+ "@excalidraw/excalidraw": "^0.18.0",
65
+ "@floating-ui/react": "^0.27.8",
66
+ "@lexical/clipboard": "^0.35.0",
67
+ "@lexical/code": "^0.35.0",
68
+ "@lexical/code-shiki": "^0.35.0",
69
+ "@lexical/file": "^0.35.0",
70
+ "@lexical/hashtag": "^0.35.0",
71
+ "@lexical/headless": "^0.35.0",
72
+ "@lexical/link": "^0.35.0",
73
+ "@lexical/list": "^0.35.0",
74
+ "@lexical/mark": "^0.35.0",
75
+ "@lexical/overflow": "^0.35.0",
76
+ "@lexical/plain-text": "^0.35.0",
77
+ "@lexical/react": "^0.35.0",
78
+ "@lexical/rich-text": "^0.35.0",
79
+ "@lexical/selection": "^0.35.0",
80
+ "@lexical/table": "^0.35.0",
81
+ "@lexical/utils": "^0.35.0",
82
+ "date-fns": "^4.1.0",
83
+ "katex": "^0.16.10",
84
+ "lexical": "^0.35.0",
85
+ "loro-crdt": "^1.8.0",
86
+ "lodash-es": "^4.17.21",
87
+ "prettier": "^2.8.8",
88
+ "react": "^18.2.0",
89
+ "react-day-picker": "^9.7.0",
90
+ "react-dom": "^18.2.0",
91
+ "react-error-boundary": "^3.1.4",
92
+ "y-websocket": "3.0.0",
93
+ "yjs": ">=13.5.42"
60
94
  },
61
95
  "devDependencies": {
62
- "@eslint/js": "^9.30.1",
63
- "@types/react": "18.3.20",
64
- "@types/react-dom": "18.3.6",
65
- "@types/ws": "^8.18.1",
66
- "@vitejs/plugin-react": "^4.6.0",
96
+ "@babel/plugin-transform-flow-strip-types": "^7.24.7",
97
+ "@babel/preset-react": "^7.24.7",
98
+ "@rollup/plugin-babel": "^6.0.4",
99
+ "@rollup/plugin-commonjs": "^25.0.7",
100
+ "@types/jest": "^29.5.12",
101
+ "@types/lodash-es": "^4.14.182",
102
+ "@types/prettier": "^3.0.0",
103
+ "@vitejs/plugin-react": "^4.2.1",
67
104
  "concurrently": "^9.2.0",
105
+ "cross-env": "^7.0.3",
68
106
  "eslint": "^9.30.1",
69
107
  "eslint-plugin-react-hooks": "^5.2.0",
70
108
  "eslint-plugin-react-refresh": "^0.4.20",
71
- "globals": "^16.3.0",
72
- "@lexical/code": "^0.33.1",
73
- "@lexical/history": "^0.33.1",
74
- "@lexical/html": "^0.33.1",
75
- "@lexical/list": "^0.33.1",
76
- "@lexical/plain-text": "^0.33.1",
77
- "@lexical/rich-text": "^0.33.1",
78
- "@lexical/table": "^0.33.1",
79
- "@lexical/utils": "^0.33.1",
80
- "rimraf": "^6.0.1",
81
- "tsx": "^4.20.3",
82
- "typescript": "~5.8.3",
83
- "typescript-eslint": "^8.35.1",
84
- "vite": "^7.0.4",
85
- "vitest": "^2.1.4",
109
+ "fkill-cli": "^8.0.0",
110
+ "jest": "^29.7.0",
111
+ "jest-environment-jsdom": "^29.7.0",
112
+ "prettier": "^3.3.2",
113
+ "rollup-plugin-copy": "^3.5.0",
114
+ "ts-jest": "^29.1.2",
115
+ "ts-node": "^10.9.2",
116
+ "tsx": "^4.20.5",
117
+ "typescript": "^5.9.2",
118
+ "vite": "^7.0.0",
119
+ "vite-plugin-static-copy": "^3.1.2",
86
120
  "vite-plugin-top-level-await": "^1.6.0",
87
121
  "vite-plugin-wasm": "^3.5.0",
88
- "ws": "^8.18.3"
122
+ "vitest": "^3.2.4"
89
123
  }
90
124
  }
@@ -1,16 +0,0 @@
1
- interface LoroCollaborativePluginProps {
2
- websocketUrl: string;
3
- docId: string;
4
- onConnectionChange?: (connected: boolean) => void;
5
- onPeerIdChange?: (peerId: string) => void;
6
- onDisconnectReady?: (disconnectFn: () => void) => void;
7
- onAwarenessChange?: (awareness: Array<{
8
- peerId: string;
9
- userName: string;
10
- isCurrentUser?: boolean;
11
- }>) => void;
12
- onInitialization?: (success: boolean) => void;
13
- onSendMessageReady?: (sendMessageFn: (message: any) => void) => void;
14
- }
15
- export declare function LoroCollaborativePlugin({ websocketUrl, docId, onConnectionChange, onDisconnectReady, onPeerIdChange, onAwarenessChange, onInitialization, onSendMessageReady }: LoroCollaborativePluginProps): import("react/jsx-runtime").JSX.Element;
16
- export default LoroCollaborativePlugin;