@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,276 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { $createCodeNode } from '@lexical/code';
3
- import { INSERT_CHECK_LIST_COMMAND, INSERT_ORDERED_LIST_COMMAND, INSERT_UNORDERED_LIST_COMMAND, } from '@lexical/list';
4
- import { INSERT_EMBED_COMMAND } from '@lexical/react/LexicalAutoEmbedPlugin';
5
- import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
6
- import { INSERT_HORIZONTAL_RULE_COMMAND } from '@lexical/react/LexicalHorizontalRuleNode';
7
- import { LexicalTypeaheadMenuPlugin, MenuOption, useBasicTypeaheadTriggerMatch, } from '@lexical/react/LexicalTypeaheadMenuPlugin';
8
- import { $createHeadingNode, $createQuoteNode } from '@lexical/rich-text';
9
- import { $setBlocksType } from '@lexical/selection';
10
- import { INSERT_TABLE_COMMAND } from '@lexical/table';
11
- import { $createParagraphNode, $getSelection, $isRangeSelection, FORMAT_ELEMENT_COMMAND, } from 'lexical';
12
- import { useCallback, useMemo, useState } from 'react';
13
- import * as ReactDOM from 'react-dom';
14
- import useModal from '../../hooks/useModal';
15
- import catTypingGif from '../../images/cat-typing.gif';
16
- import { EmbedConfigs } from '../AutoEmbedPlugin';
17
- import { INSERT_COLLAPSIBLE_COMMAND } from '../CollapsiblePlugin';
18
- import { INSERT_DATETIME_COMMAND } from '../DateTimePlugin';
19
- import { InsertEquationDialog } from '../EquationsPlugin';
20
- import { INSERT_EXCALIDRAW_COMMAND } from '../ExcalidrawPlugin';
21
- import { INSERT_IMAGE_COMMAND, InsertImageDialog } from '../ImagesPlugin';
22
- import InsertLayoutDialog from '../LayoutPlugin/InsertLayoutDialog';
23
- import { INSERT_PAGE_BREAK } from '../PageBreakPlugin';
24
- import { InsertPollDialog } from '../PollPlugin';
25
- import { InsertTableDialog } from '../TablePlugin';
26
- class ComponentPickerOption extends MenuOption {
27
- // What shows up in the editor
28
- title;
29
- // Icon for display
30
- icon;
31
- // For extra searching.
32
- keywords;
33
- // TBD
34
- keyboardShortcut;
35
- // What happens when you select this option?
36
- onSelect;
37
- constructor(title, options) {
38
- super(title);
39
- this.title = title;
40
- this.keywords = options.keywords || [];
41
- this.icon = options.icon;
42
- this.keyboardShortcut = options.keyboardShortcut;
43
- this.onSelect = options.onSelect.bind(this);
44
- }
45
- }
46
- function ComponentPickerMenuItem({ index, isSelected, onClick, onMouseEnter, option, }) {
47
- let className = 'item';
48
- if (isSelected) {
49
- className += ' selected';
50
- }
51
- return (_jsxs("li", { tabIndex: -1, className: className, ref: option.setRefElement, role: "option", "aria-selected": isSelected, id: 'typeahead-item-' + index, onMouseEnter: onMouseEnter, onClick: onClick, children: [option.icon, _jsx("span", { className: "text", children: option.title })] }, option.key));
52
- }
53
- function getDynamicOptions(editor, queryString) {
54
- const options = [];
55
- if (queryString == null) {
56
- return options;
57
- }
58
- const tableMatch = queryString.match(/^([1-9]\d?)(?:x([1-9]\d?)?)?$/);
59
- if (tableMatch !== null) {
60
- const rows = tableMatch[1];
61
- const colOptions = tableMatch[2]
62
- ? [tableMatch[2]]
63
- : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(String);
64
- options.push(...colOptions.map((columns) => new ComponentPickerOption(`${rows}x${columns} Table`, {
65
- icon: _jsx("i", { className: "icon table" }),
66
- keywords: ['table'],
67
- onSelect: () => editor.dispatchCommand(INSERT_TABLE_COMMAND, { columns, rows }),
68
- })));
69
- }
70
- return options;
71
- }
72
- function getBaseOptions(editor, showModal) {
73
- return [
74
- new ComponentPickerOption('Paragraph', {
75
- icon: _jsx("i", { className: "icon paragraph" }),
76
- keywords: ['normal', 'paragraph', 'p', 'text'],
77
- onSelect: () => editor.update(() => {
78
- const selection = $getSelection();
79
- if ($isRangeSelection(selection)) {
80
- $setBlocksType(selection, () => $createParagraphNode());
81
- }
82
- }),
83
- }),
84
- ...[1, 2, 3].map((n) => new ComponentPickerOption(`Heading ${n}`, {
85
- icon: _jsx("i", { className: `icon h${n}` }),
86
- keywords: ['heading', 'header', `h${n}`],
87
- onSelect: () => editor.update(() => {
88
- const selection = $getSelection();
89
- if ($isRangeSelection(selection)) {
90
- $setBlocksType(selection, () => $createHeadingNode(`h${n}`));
91
- }
92
- }),
93
- })),
94
- new ComponentPickerOption('Table', {
95
- icon: _jsx("i", { className: "icon table" }),
96
- keywords: ['table', 'grid', 'spreadsheet', 'rows', 'columns'],
97
- onSelect: () => showModal('Insert Table', (onClose) => (_jsx(InsertTableDialog, { activeEditor: editor, onClose: onClose }))),
98
- }),
99
- new ComponentPickerOption('Numbered List', {
100
- icon: _jsx("i", { className: "icon number" }),
101
- keywords: ['numbered list', 'ordered list', 'ol'],
102
- onSelect: () => editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined),
103
- }),
104
- new ComponentPickerOption('Bulleted List', {
105
- icon: _jsx("i", { className: "icon bullet" }),
106
- keywords: ['bulleted list', 'unordered list', 'ul'],
107
- onSelect: () => editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined),
108
- }),
109
- new ComponentPickerOption('Check List', {
110
- icon: _jsx("i", { className: "icon check" }),
111
- keywords: ['check list', 'todo list'],
112
- onSelect: () => editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined),
113
- }),
114
- new ComponentPickerOption('Quote', {
115
- icon: _jsx("i", { className: "icon quote" }),
116
- keywords: ['block quote'],
117
- onSelect: () => editor.update(() => {
118
- const selection = $getSelection();
119
- if ($isRangeSelection(selection)) {
120
- $setBlocksType(selection, () => $createQuoteNode());
121
- }
122
- }),
123
- }),
124
- new ComponentPickerOption('Code', {
125
- icon: _jsx("i", { className: "icon code" }),
126
- keywords: ['javascript', 'python', 'js', 'codeblock'],
127
- onSelect: () => editor.update(() => {
128
- const selection = $getSelection();
129
- if ($isRangeSelection(selection)) {
130
- if (selection.isCollapsed()) {
131
- $setBlocksType(selection, () => $createCodeNode());
132
- }
133
- else {
134
- // Will this ever happen?
135
- const textContent = selection.getTextContent();
136
- const codeNode = $createCodeNode();
137
- selection.insertNodes([codeNode]);
138
- selection.insertRawText(textContent);
139
- }
140
- }
141
- }),
142
- }),
143
- new ComponentPickerOption('Divider', {
144
- icon: _jsx("i", { className: "icon horizontal-rule" }),
145
- keywords: ['horizontal rule', 'divider', 'hr'],
146
- onSelect: () => editor.dispatchCommand(INSERT_HORIZONTAL_RULE_COMMAND, undefined),
147
- }),
148
- new ComponentPickerOption('Page Break', {
149
- icon: _jsx("i", { className: "icon page-break" }),
150
- keywords: ['page break', 'divider'],
151
- onSelect: () => editor.dispatchCommand(INSERT_PAGE_BREAK, undefined),
152
- }),
153
- new ComponentPickerOption('Excalidraw', {
154
- icon: _jsx("i", { className: "icon diagram-2" }),
155
- keywords: ['excalidraw', 'diagram', 'drawing'],
156
- onSelect: () => editor.dispatchCommand(INSERT_EXCALIDRAW_COMMAND, undefined),
157
- }),
158
- new ComponentPickerOption('Poll', {
159
- icon: _jsx("i", { className: "icon poll" }),
160
- keywords: ['poll', 'vote'],
161
- onSelect: () => showModal('Insert Poll', (onClose) => (_jsx(InsertPollDialog, { activeEditor: editor, onClose: onClose }))),
162
- }),
163
- ...EmbedConfigs.map((embedConfig) => new ComponentPickerOption(`Embed ${embedConfig.contentName}`, {
164
- icon: embedConfig.icon,
165
- keywords: [...embedConfig.keywords, 'embed'],
166
- onSelect: () => editor.dispatchCommand(INSERT_EMBED_COMMAND, embedConfig.type),
167
- })),
168
- new ComponentPickerOption('Date', {
169
- icon: _jsx("i", { className: "icon calendar" }),
170
- keywords: ['date', 'calendar', 'time'],
171
- onSelect: () => {
172
- const dateTime = new Date();
173
- dateTime.setHours(0, 0, 0, 0); // Set time to midnight
174
- editor.dispatchCommand(INSERT_DATETIME_COMMAND, { dateTime });
175
- },
176
- }),
177
- new ComponentPickerOption('Today', {
178
- icon: _jsx("i", { className: "icon calendar" }),
179
- keywords: ['date', 'calendar', 'time', 'today'],
180
- onSelect: () => {
181
- const dateTime = new Date();
182
- dateTime.setHours(0, 0, 0, 0); // Set time to midnight
183
- editor.dispatchCommand(INSERT_DATETIME_COMMAND, { dateTime });
184
- },
185
- }),
186
- new ComponentPickerOption('Tomorrow', {
187
- icon: _jsx("i", { className: "icon calendar" }),
188
- keywords: ['date', 'calendar', 'time', 'tomorrow'],
189
- onSelect: () => {
190
- const dateTime = new Date();
191
- dateTime.setDate(dateTime.getDate() + 1);
192
- dateTime.setHours(0, 0, 0, 0); // Set time to midnight
193
- editor.dispatchCommand(INSERT_DATETIME_COMMAND, { dateTime });
194
- },
195
- }),
196
- new ComponentPickerOption('Yesterday', {
197
- icon: _jsx("i", { className: "icon calendar" }),
198
- keywords: ['date', 'calendar', 'time', 'yesterday'],
199
- onSelect: () => {
200
- const dateTime = new Date();
201
- dateTime.setDate(dateTime.getDate() - 1);
202
- dateTime.setHours(0, 0, 0, 0); // Set time to midnight
203
- editor.dispatchCommand(INSERT_DATETIME_COMMAND, { dateTime });
204
- },
205
- }),
206
- new ComponentPickerOption('Equation', {
207
- icon: _jsx("i", { className: "icon equation" }),
208
- keywords: ['equation', 'latex', 'math'],
209
- onSelect: () => showModal('Insert Equation', (onClose) => (_jsx(InsertEquationDialog, { activeEditor: editor, onClose: onClose }))),
210
- }),
211
- new ComponentPickerOption('GIF', {
212
- icon: _jsx("i", { className: "icon gif" }),
213
- keywords: ['gif', 'animate', 'image', 'file'],
214
- onSelect: () => editor.dispatchCommand(INSERT_IMAGE_COMMAND, {
215
- altText: 'Cat typing on a laptop',
216
- src: catTypingGif,
217
- }),
218
- }),
219
- new ComponentPickerOption('Image', {
220
- icon: _jsx("i", { className: "icon image" }),
221
- keywords: ['image', 'photo', 'picture', 'file'],
222
- onSelect: () => showModal('Insert Image', (onClose) => (_jsx(InsertImageDialog, { activeEditor: editor, onClose: onClose }))),
223
- }),
224
- new ComponentPickerOption('Collapsible', {
225
- icon: _jsx("i", { className: "icon caret-right" }),
226
- keywords: ['collapse', 'collapsible', 'toggle'],
227
- onSelect: () => editor.dispatchCommand(INSERT_COLLAPSIBLE_COMMAND, undefined),
228
- }),
229
- new ComponentPickerOption('Columns Layout', {
230
- icon: _jsx("i", { className: "icon columns" }),
231
- keywords: ['columns', 'layout', 'grid'],
232
- onSelect: () => showModal('Insert Columns Layout', (onClose) => (_jsx(InsertLayoutDialog, { activeEditor: editor, onClose: onClose }))),
233
- }),
234
- ...['left', 'center', 'right', 'justify'].map((alignment) => new ComponentPickerOption(`Align ${alignment}`, {
235
- icon: _jsx("i", { className: `icon ${alignment}-align` }),
236
- keywords: ['align', 'justify', alignment],
237
- onSelect: () => editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, alignment),
238
- })),
239
- ];
240
- }
241
- export default function ComponentPickerMenuPlugin() {
242
- const [editor] = useLexicalComposerContext();
243
- const [modal, showModal] = useModal();
244
- const [queryString, setQueryString] = useState(null);
245
- const checkForTriggerMatch = useBasicTypeaheadTriggerMatch('/', {
246
- allowWhitespace: true,
247
- minLength: 0,
248
- });
249
- const options = useMemo(() => {
250
- const baseOptions = getBaseOptions(editor, showModal);
251
- if (!queryString) {
252
- return baseOptions;
253
- }
254
- const regex = new RegExp(queryString, 'i');
255
- return [
256
- ...getDynamicOptions(editor, queryString),
257
- ...baseOptions.filter((option) => regex.test(option.title) ||
258
- option.keywords.some((keyword) => regex.test(keyword))),
259
- ];
260
- }, [editor, queryString, showModal]);
261
- const onSelectOption = useCallback((selectedOption, nodeToRemove, closeMenu, matchingString) => {
262
- editor.update(() => {
263
- nodeToRemove?.remove();
264
- selectedOption.onSelect(matchingString);
265
- closeMenu();
266
- });
267
- }, [editor]);
268
- return (_jsxs(_Fragment, { children: [modal, _jsx(LexicalTypeaheadMenuPlugin, { onQueryChange: setQueryString, onSelectOption: onSelectOption, triggerFn: checkForTriggerMatch, options: options, menuRenderFn: (anchorElementRef, { selectedIndex, selectOptionAndCleanUp, setHighlightedIndex }) => anchorElementRef.current && options.length
269
- ? ReactDOM.createPortal(_jsx("div", { className: "typeahead-popover component-picker-menu", children: _jsx("ul", { children: options.map((option, i) => (_jsx(ComponentPickerMenuItem, { index: i, isSelected: selectedIndex === i, onClick: () => {
270
- setHighlightedIndex(i);
271
- selectOptionAndCleanUp(option);
272
- }, onMouseEnter: () => {
273
- setHighlightedIndex(i);
274
- }, option: option }, option.key))) }) }), anchorElementRef.current)
275
- : null })] }));
276
- }
@@ -1,2 +0,0 @@
1
- import type { JSX } from 'react';
2
- export default function ContextMenuPlugin(): JSX.Element;
@@ -1,112 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { $isLinkNode, TOGGLE_LINK_COMMAND } from '@lexical/link';
3
- import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
4
- import { NodeContextMenuOption, NodeContextMenuPlugin, NodeContextMenuSeparator, } from '@lexical/react/LexicalNodeContextMenuPlugin';
5
- import { $getSelection, $isDecoratorNode, $isNodeSelection, $isRangeSelection, COPY_COMMAND, CUT_COMMAND, PASTE_COMMAND, } from 'lexical';
6
- import { useMemo } from 'react';
7
- export default function ContextMenuPlugin() {
8
- const [editor] = useLexicalComposerContext();
9
- const items = useMemo(() => {
10
- return [
11
- new NodeContextMenuOption(`Remove Link`, {
12
- $onSelect: () => {
13
- editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);
14
- },
15
- $showOn: (node) => $isLinkNode(node.getParent()),
16
- disabled: false,
17
- icon: _jsx("i", { className: "PlaygroundEditorTheme__contextMenuItemIcon" }),
18
- }),
19
- new NodeContextMenuSeparator({
20
- $showOn: (node) => $isLinkNode(node.getParent()),
21
- }),
22
- new NodeContextMenuOption(`Cut`, {
23
- $onSelect: () => {
24
- editor.dispatchCommand(CUT_COMMAND, null);
25
- },
26
- disabled: false,
27
- icon: (_jsx("i", { className: "PlaygroundEditorTheme__contextMenuItemIcon page-break" })),
28
- }),
29
- new NodeContextMenuOption(`Copy`, {
30
- $onSelect: () => {
31
- editor.dispatchCommand(COPY_COMMAND, null);
32
- },
33
- disabled: false,
34
- icon: _jsx("i", { className: "PlaygroundEditorTheme__contextMenuItemIcon copy" }),
35
- }),
36
- new NodeContextMenuOption(`Paste`, {
37
- $onSelect: () => {
38
- navigator.clipboard.read().then(async function (...args) {
39
- const data = new DataTransfer();
40
- const readClipboardItems = await navigator.clipboard.read();
41
- const item = readClipboardItems[0];
42
- const permission = await navigator.permissions.query({
43
- // @ts-expect-error These types are incorrect.
44
- name: 'clipboard-read',
45
- });
46
- if (permission.state === 'denied') {
47
- alert('Not allowed to paste from clipboard.');
48
- return;
49
- }
50
- for (const type of item.types) {
51
- const dataString = await (await item.getType(type)).text();
52
- data.setData(type, dataString);
53
- }
54
- const event = new ClipboardEvent('paste', {
55
- clipboardData: data,
56
- });
57
- editor.dispatchCommand(PASTE_COMMAND, event);
58
- });
59
- },
60
- disabled: false,
61
- icon: (_jsx("i", { className: "PlaygroundEditorTheme__contextMenuItemIcon paste" })),
62
- }),
63
- new NodeContextMenuOption(`Paste as Plain Text`, {
64
- $onSelect: () => {
65
- navigator.clipboard.read().then(async function (...args) {
66
- const permission = await navigator.permissions.query({
67
- // @ts-expect-error These types are incorrect.
68
- name: 'clipboard-read',
69
- });
70
- if (permission.state === 'denied') {
71
- alert('Not allowed to paste from clipboard.');
72
- return;
73
- }
74
- const data = new DataTransfer();
75
- const clipboardText = await navigator.clipboard.readText();
76
- data.setData('text/plain', clipboardText);
77
- const event = new ClipboardEvent('paste', {
78
- clipboardData: data,
79
- });
80
- editor.dispatchCommand(PASTE_COMMAND, event);
81
- });
82
- },
83
- disabled: false,
84
- icon: _jsx("i", { className: "PlaygroundEditorTheme__contextMenuItemIcon" }),
85
- }),
86
- new NodeContextMenuSeparator(),
87
- new NodeContextMenuOption(`Delete Node`, {
88
- $onSelect: () => {
89
- const selection = $getSelection();
90
- if ($isRangeSelection(selection)) {
91
- const currentNode = selection.anchor.getNode();
92
- const ancestorNodeWithRootAsParent = currentNode
93
- .getParents()
94
- .at(-2);
95
- ancestorNodeWithRootAsParent?.remove();
96
- }
97
- else if ($isNodeSelection(selection)) {
98
- const selectedNodes = selection.getNodes();
99
- selectedNodes.forEach((node) => {
100
- if ($isDecoratorNode(node)) {
101
- node.remove();
102
- }
103
- });
104
- }
105
- },
106
- disabled: false,
107
- icon: (_jsx("i", { className: "PlaygroundEditorTheme__contextMenuItemIcon clear" })),
108
- }),
109
- ];
110
- }, [editor]);
111
- return (_jsx(NodeContextMenuPlugin, { className: "PlaygroundEditorTheme__contextMenu", itemClassName: "PlaygroundEditorTheme__contextMenuItem", separatorClassName: "PlaygroundEditorTheme__contextMenuSeparator", items: items }));
112
- }
@@ -1,3 +0,0 @@
1
- import type { LexicalCommand } from 'lexical';
2
- export declare const INSERT_COUNTER_COMMAND: LexicalCommand<number | undefined>;
3
- export default function CounterPlugin(): null;
@@ -1,20 +0,0 @@
1
- import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
2
- import { $insertNodeToNearestRoot } from '@lexical/utils';
3
- import { createCommand, COMMAND_PRIORITY_EDITOR } from 'lexical';
4
- import { useEffect } from 'react';
5
- import { $createCounterNode, CounterNode } from '../../nodes/CounterNode';
6
- export const INSERT_COUNTER_COMMAND = createCommand('INSERT_COUNTER_COMMAND');
7
- export default function CounterPlugin() {
8
- const [editor] = useLexicalComposerContext();
9
- useEffect(() => {
10
- if (!editor.hasNodes([CounterNode])) {
11
- throw new Error('CounterPlugin: CounterNode not registered on editor');
12
- }
13
- return editor.registerCommand(INSERT_COUNTER_COMMAND, (payload) => {
14
- const counterNode = $createCounterNode(payload || 0);
15
- $insertNodeToNearestRoot(counterNode);
16
- return true;
17
- }, COMMAND_PRIORITY_EDITOR);
18
- }, [editor]);
19
- return null;
20
- }
@@ -1,2 +0,0 @@
1
- import type { JSX } from 'react';
2
- export default function DatalayerPlugin(): JSX.Element | null;
@@ -1,218 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useState, useEffect } from 'react';
3
- import { $getRoot, $createTextNode, $createParagraphNode } from 'lexical';
4
- import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
5
- export default function DatalayerPlugin() {
6
- const [editor] = useLexicalComposerContext();
7
- const [mcpTools, setMcpTools] = useState([]);
8
- const [selectedTool, setSelectedTool] = useState('');
9
- const [isLoadingTools, setIsLoadingTools] = useState(false);
10
- const [toolsError, setToolsError] = useState(null);
11
- // Fetch available MCP tools from the server
12
- const fetchMCPTools = async () => {
13
- setIsLoadingTools(true);
14
- setToolsError(null);
15
- try {
16
- // Query the MCP server for available tools
17
- const response = await fetch('http://localhost:3001/tools/list', {
18
- method: 'GET',
19
- headers: {
20
- 'Content-Type': 'application/json',
21
- }
22
- });
23
- if (!response.ok) {
24
- throw new Error(`HTTP error! status: ${response.status}`);
25
- }
26
- const data = await response.json();
27
- if (data.tools) {
28
- const tools = data.tools.map((tool) => ({
29
- name: tool.name,
30
- description: tool.description || '',
31
- parameters: tool.parameters || {}
32
- }));
33
- setMcpTools(tools);
34
- console.log('Fetched MCP tools:', tools);
35
- }
36
- else {
37
- throw new Error('Invalid response format from MCP server');
38
- }
39
- }
40
- catch (error) {
41
- console.error('Error fetching MCP tools:', error);
42
- setToolsError(error instanceof Error ? error.message : 'Unknown error occurred');
43
- // Set some mock tools for development
44
- setMcpTools([
45
- { name: 'create_file', description: 'Create a new file in the workspace' },
46
- { name: 'read_file', description: 'Read contents of a file' },
47
- { name: 'list_dir', description: 'List directory contents' }
48
- ]);
49
- }
50
- finally {
51
- setIsLoadingTools(false);
52
- }
53
- };
54
- // MCP tool execution functions
55
- const executeGetDocument = async () => {
56
- try {
57
- console.log('🔍 Executing get_document MCP tool...');
58
- const response = await fetch('http://localhost:3001/', {
59
- method: 'POST',
60
- headers: {
61
- 'Content-Type': 'application/json',
62
- },
63
- body: JSON.stringify({
64
- jsonrpc: '2.0',
65
- id: Date.now(),
66
- method: 'get_document',
67
- params: {
68
- doc_id: 'playground/0/main'
69
- }
70
- })
71
- });
72
- if (!response.ok) {
73
- throw new Error(`HTTP error! status: ${response.status}`);
74
- }
75
- const data = await response.json();
76
- console.log('📄 get_document result:', data);
77
- if (data.result) {
78
- console.log('✅ Document retrieved successfully:', data.result);
79
- }
80
- else if (data.error) {
81
- console.error('❌ MCP error:', data.error);
82
- }
83
- }
84
- catch (error) {
85
- console.error('💥 Error executing get_document:', error);
86
- }
87
- };
88
- const executeAppendParagraph = async () => {
89
- try {
90
- const timestamp = new Date().toISOString();
91
- const paragraphText = `New paragraph added at via MCP at ${timestamp}`;
92
- console.log('✏️ Executing append_paragraph MCP tool with text:', paragraphText);
93
- const response = await fetch('http://localhost:3001/', {
94
- method: 'POST',
95
- headers: {
96
- 'Content-Type': 'application/json',
97
- },
98
- body: JSON.stringify({
99
- jsonrpc: '2.0',
100
- id: Date.now(),
101
- method: 'append_paragraph',
102
- params: {
103
- doc_id: 'playground/0/main',
104
- text: paragraphText
105
- }
106
- })
107
- });
108
- if (!response.ok) {
109
- throw new Error(`HTTP error! status: ${response.status}`);
110
- }
111
- const data = await response.json();
112
- console.log('📝 append_paragraph result:', data);
113
- if (data.result) {
114
- console.log('✅ Paragraph appended successfully:', data.result);
115
- }
116
- else if (data.error) {
117
- console.error('❌ MCP error:', data.error);
118
- }
119
- }
120
- catch (error) {
121
- console.error('💥 Error executing append_paragraph:', error);
122
- }
123
- };
124
- // Handle tool selection and execution
125
- const handleToolChange = (toolName) => {
126
- if (toolName === '') {
127
- setSelectedTool('');
128
- return;
129
- }
130
- setSelectedTool(toolName);
131
- if (toolName === 'get_document') {
132
- executeGetDocument();
133
- }
134
- else if (toolName === 'append_paragraph') {
135
- executeAppendParagraph();
136
- }
137
- // Reset selection back to "Select a tool" after execution
138
- setTimeout(() => {
139
- setSelectedTool('');
140
- }, 100);
141
- };
142
- // Set hardcoded tools instead of fetching from server
143
- useEffect(() => {
144
- const hardcodedTools = [
145
- {
146
- name: 'get_document',
147
- description: 'Get document',
148
- parameters: {}
149
- },
150
- {
151
- name: 'append_paragraph',
152
- description: 'Append paragraph',
153
- parameters: {}
154
- }
155
- ];
156
- setMcpTools(hardcodedTools);
157
- console.log('🔧 Hardcoded MCP tools loaded:', hardcodedTools);
158
- }, []);
159
- const reloadState = (editor) => {
160
- const state = editor.getEditorState();
161
- // JSON needs to be parsed to load an new state.
162
- const newEditorState = editor.parseEditorState(JSON.stringify(state));
163
- editor.update(() => {
164
- // editor.setEditorState(state);
165
- editor.setEditorState(newEditorState);
166
- });
167
- console.log(editor.getEditorState().toJSON());
168
- };
169
- function addParagraph(editor) {
170
- editor.update(() => {
171
- const root = $getRoot();
172
- const timestamp = new Date().toISOString();
173
- const textNode = $createTextNode(`Hello ${timestamp}`);
174
- const paragraphNode = $createParagraphNode();
175
- paragraphNode.append(textNode);
176
- // Insert the paragraph at the beginning of the editor
177
- const firstChild = root.getFirstChild();
178
- if (firstChild) {
179
- firstChild.insertBefore(paragraphNode);
180
- }
181
- else {
182
- root.append(paragraphNode);
183
- }
184
- });
185
- }
186
- function first100Keys(editor) {
187
- editor.getEditorState().read(() => {
188
- const root = $getRoot();
189
- const children = root.getChildren();
190
- const keys = [];
191
- // Get up to 100 node keys
192
- const maxNodes = Math.min(100, children.length);
193
- for (let i = 0; i < maxNodes; i++) {
194
- keys.push(children[i].getKey());
195
- }
196
- console.log(`First ${keys.length} node keys:`, keys);
197
- });
198
- }
199
- return (_jsxs(_Fragment, { children: [_jsx("button", { onClick: () => { reloadState(editor); }, children: "Reload State" }), _jsx("button", { onClick: () => { addParagraph(editor); }, children: "Add Paragraph" }), _jsx("button", { onClick: () => { first100Keys(editor); }, children: "100 First keys" }), _jsxs("div", { style: { marginLeft: '10px', display: 'inline-block' }, children: [_jsx("label", { htmlFor: "mcp-tools-select", style: { marginRight: '5px', fontSize: '12px' }, children: "MCP Tools:" }), _jsxs("select", { id: "mcp-tools-select", value: selectedTool, onChange: (e) => handleToolChange(e.target.value), disabled: isLoadingTools, style: {
200
- padding: '4px 8px',
201
- borderRadius: '4px',
202
- border: '1px solid #ccc',
203
- minWidth: '150px',
204
- fontSize: '12px'
205
- }, children: [_jsx("option", { value: "", children: isLoadingTools ? 'Loading tools...' : 'Select a tool' }), mcpTools.map((tool) => (_jsxs("option", { value: tool.name, children: [tool.name, " ", tool.description ? `- ${tool.description}` : ''] }, tool.name)))] }), toolsError && (_jsxs("span", { style: {
206
- marginLeft: '10px',
207
- color: 'red',
208
- fontSize: '12px'
209
- }, children: ["Error: ", toolsError] })), _jsx("button", { onClick: fetchMCPTools, disabled: isLoadingTools, style: {
210
- marginLeft: '5px',
211
- padding: '4px 8px',
212
- fontSize: '12px'
213
- }, children: "\uD83D\uDD04 Refresh" }), selectedTool && (_jsx("span", { style: {
214
- marginLeft: '10px',
215
- color: 'green',
216
- fontSize: '12px'
217
- }, children: selectedTool }))] })] }));
218
- }
@@ -1,8 +0,0 @@
1
- import type { JSX } from 'react';
2
- import { LexicalCommand } from 'lexical';
3
- type CommandPayload = {
4
- dateTime: Date;
5
- };
6
- export declare const INSERT_DATETIME_COMMAND: LexicalCommand<CommandPayload>;
7
- export default function DateTimePlugin(): JSX.Element | null;
8
- export {};