@datalayer/lexical-loro 0.2.5 → 1.0.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 (399) hide show
  1. package/package.json +1 -1
  2. package/lib/App.d.ts +0 -2
  3. package/lib/App.js +0 -141
  4. package/lib/Editor.d.ts +0 -2
  5. package/lib/Editor.js +0 -115
  6. package/lib/Settings.d.ts +0 -2
  7. package/lib/Settings.js +0 -57
  8. package/lib/appSettings.d.ts +0 -36
  9. package/lib/appSettings.js +0 -48
  10. package/lib/collab/loro/Bindings.d.ts +0 -41
  11. package/lib/collab/loro/Bindings.js +0 -99
  12. package/lib/collab/loro/Debug.d.ts +0 -33
  13. package/lib/collab/loro/Debug.js +0 -452
  14. package/lib/collab/loro/LexicalCollaborationContext.d.ts +0 -19
  15. package/lib/collab/loro/LexicalCollaborationContext.js +0 -52
  16. package/lib/collab/loro/LexicalCollaborationPlugin.d.ts +0 -24
  17. package/lib/collab/loro/LexicalCollaborationPlugin.js +0 -83
  18. package/lib/collab/loro/State.d.ts +0 -53
  19. package/lib/collab/loro/State.js +0 -94
  20. package/lib/collab/loro/components/LoroCollaborationUI.d.ts +0 -13
  21. package/lib/collab/loro/components/LoroCollaborationUI.js +0 -9
  22. package/lib/collab/loro/components/LoroCollaborators.d.ts +0 -8
  23. package/lib/collab/loro/components/LoroCollaborators.js +0 -102
  24. package/lib/collab/loro/components/index.d.ts +0 -2
  25. package/lib/collab/loro/components/index.js +0 -6
  26. package/lib/collab/loro/index.d.ts +0 -6
  27. package/lib/collab/loro/index.js +0 -10
  28. package/lib/collab/loro/integrators/BaseIntegrator.d.ts +0 -14
  29. package/lib/collab/loro/integrators/BaseIntegrator.js +0 -5
  30. package/lib/collab/loro/integrators/CounterIntegrator.d.ts +0 -23
  31. package/lib/collab/loro/integrators/CounterIntegrator.js +0 -44
  32. package/lib/collab/loro/integrators/ListIntegrator.d.ts +0 -23
  33. package/lib/collab/loro/integrators/ListIntegrator.js +0 -53
  34. package/lib/collab/loro/integrators/MapIntegrator.d.ts +0 -24
  35. package/lib/collab/loro/integrators/MapIntegrator.js +0 -235
  36. package/lib/collab/loro/integrators/TextIntegrator.d.ts +0 -25
  37. package/lib/collab/loro/integrators/TextIntegrator.js +0 -55
  38. package/lib/collab/loro/integrators/TreeIntegrator.d.ts +0 -36
  39. package/lib/collab/loro/integrators/TreeIntegrator.js +0 -251
  40. package/lib/collab/loro/nodes/NodeFactory.d.ts +0 -15
  41. package/lib/collab/loro/nodes/NodeFactory.js +0 -101
  42. package/lib/collab/loro/nodes/NodesMapper.d.ts +0 -120
  43. package/lib/collab/loro/nodes/NodesMapper.js +0 -277
  44. package/lib/collab/loro/propagators/DecoratorNodePropagator.d.ts +0 -60
  45. package/lib/collab/loro/propagators/DecoratorNodePropagator.js +0 -306
  46. package/lib/collab/loro/propagators/ElementNodePropagator.d.ts +0 -62
  47. package/lib/collab/loro/propagators/ElementNodePropagator.js +0 -326
  48. package/lib/collab/loro/propagators/LineBreakNodePropagator.d.ts +0 -57
  49. package/lib/collab/loro/propagators/LineBreakNodePropagator.js +0 -200
  50. package/lib/collab/loro/propagators/RootNodePropagator.d.ts +0 -55
  51. package/lib/collab/loro/propagators/RootNodePropagator.js +0 -174
  52. package/lib/collab/loro/propagators/TextNodePropagator.d.ts +0 -60
  53. package/lib/collab/loro/propagators/TextNodePropagator.js +0 -440
  54. package/lib/collab/loro/propagators/index.d.ts +0 -49
  55. package/lib/collab/loro/propagators/index.js +0 -30
  56. package/lib/collab/loro/provider/websocket.d.ts +0 -116
  57. package/lib/collab/loro/provider/websocket.js +0 -911
  58. package/lib/collab/loro/servers/index.d.ts +0 -0
  59. package/lib/collab/loro/servers/index.js +0 -4
  60. package/lib/collab/loro/servers/ws/callback.d.ts +0 -5
  61. package/lib/collab/loro/servers/ws/callback.js +0 -89
  62. package/lib/collab/loro/servers/ws/server.d.ts +0 -2
  63. package/lib/collab/loro/servers/ws/server.js +0 -29
  64. package/lib/collab/loro/servers/ws/utils.d.ts +0 -40
  65. package/lib/collab/loro/servers/ws/utils.js +0 -517
  66. package/lib/collab/loro/sync/SyncCursors.d.ts +0 -32
  67. package/lib/collab/loro/sync/SyncCursors.js +0 -475
  68. package/lib/collab/loro/sync/SyncLexicalToLoro.d.ts +0 -4
  69. package/lib/collab/loro/sync/SyncLexicalToLoro.js +0 -113
  70. package/lib/collab/loro/sync/SyncLoroToLexical.d.ts +0 -5
  71. package/lib/collab/loro/sync/SyncLoroToLexical.js +0 -100
  72. package/lib/collab/loro/types/LexicalNodeData.d.ts +0 -32
  73. package/lib/collab/loro/types/LexicalNodeData.js +0 -75
  74. package/lib/collab/loro/useCollaboration.d.ts +0 -12
  75. package/lib/collab/loro/useCollaboration.js +0 -260
  76. package/lib/collab/loro/utils/InitialContent.d.ts +0 -64
  77. package/lib/collab/loro/utils/InitialContent.js +0 -113
  78. package/lib/collab/loro/utils/LexicalToLoro.d.ts +0 -18
  79. package/lib/collab/loro/utils/LexicalToLoro.js +0 -100
  80. package/lib/collab/loro/utils/Utils.d.ts +0 -44
  81. package/lib/collab/loro/utils/Utils.js +0 -157
  82. package/lib/collab/loro/wsProvider.d.ts +0 -8
  83. package/lib/collab/loro/wsProvider.js +0 -35
  84. package/lib/collab/utils/invariant.d.ts +0 -1
  85. package/lib/collab/utils/invariant.js +0 -15
  86. package/lib/collab/utils/simpleDiffWithCursor.d.ts +0 -5
  87. package/lib/collab/utils/simpleDiffWithCursor.js +0 -35
  88. package/lib/collab/yjs/Bindings.d.ts +0 -23
  89. package/lib/collab/yjs/Bindings.js +0 -26
  90. package/lib/collab/yjs/Debug.d.ts +0 -23
  91. package/lib/collab/yjs/Debug.js +0 -213
  92. package/lib/collab/yjs/LexicalCollaborationContext.d.ts +0 -10
  93. package/lib/collab/yjs/LexicalCollaborationContext.js +0 -37
  94. package/lib/collab/yjs/LexicalCollaborationPlugin.d.ts +0 -21
  95. package/lib/collab/yjs/LexicalCollaborationPlugin.js +0 -63
  96. package/lib/collab/yjs/State.d.ts +0 -51
  97. package/lib/collab/yjs/State.js +0 -35
  98. package/lib/collab/yjs/nodes/AnyCollabNode.d.ts +0 -5
  99. package/lib/collab/yjs/nodes/AnyCollabNode.js +0 -1
  100. package/lib/collab/yjs/nodes/CollabDecoratorNode.d.ts +0 -22
  101. package/lib/collab/yjs/nodes/CollabDecoratorNode.js +0 -64
  102. package/lib/collab/yjs/nodes/CollabElementNode.d.ts +0 -40
  103. package/lib/collab/yjs/nodes/CollabElementNode.js +0 -462
  104. package/lib/collab/yjs/nodes/CollabLineBreakNode.d.ts +0 -19
  105. package/lib/collab/yjs/nodes/CollabLineBreakNode.js +0 -44
  106. package/lib/collab/yjs/nodes/CollabTextNode.d.ts +0 -25
  107. package/lib/collab/yjs/nodes/CollabTextNode.js +0 -103
  108. package/lib/collab/yjs/provider/websocket.d.ts +0 -88
  109. package/lib/collab/yjs/provider/websocket.js +0 -415
  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 +0 -5
  113. package/lib/collab/yjs/servers/ws/callback.js +0 -72
  114. package/lib/collab/yjs/servers/ws/server.d.ts +0 -2
  115. package/lib/collab/yjs/servers/ws/server.js +0 -25
  116. package/lib/collab/yjs/servers/ws/utils.d.ts +0 -49
  117. package/lib/collab/yjs/servers/ws/utils.js +0 -284
  118. package/lib/collab/yjs/sync/SyncCursors.d.ts +0 -39
  119. package/lib/collab/yjs/sync/SyncCursors.js +0 -351
  120. package/lib/collab/yjs/sync/SyncEditorStates.d.ts +0 -10
  121. package/lib/collab/yjs/sync/SyncEditorStates.js +0 -200
  122. package/lib/collab/yjs/useCollaboration.d.ts +0 -12
  123. package/lib/collab/yjs/useCollaboration.js +0 -255
  124. package/lib/collab/yjs/utils/Utils.d.ts +0 -25
  125. package/lib/collab/yjs/utils/Utils.js +0 -402
  126. package/lib/collab/yjs/wsProvider.d.ts +0 -3
  127. package/lib/collab/yjs/wsProvider.js +0 -21
  128. package/lib/commenting/index.d.ts +0 -41
  129. package/lib/commenting/index.js +0 -328
  130. package/lib/context/FlashMessageContext.d.ts +0 -7
  131. package/lib/context/FlashMessageContext.js +0 -24
  132. package/lib/context/SettingsContext.d.ts +0 -12
  133. package/lib/context/SettingsContext.js +0 -38
  134. package/lib/context/SharedHistoryContext.d.ts +0 -11
  135. package/lib/context/SharedHistoryContext.js +0 -11
  136. package/lib/context/ToolbarContext.d.ts +0 -65
  137. package/lib/context/ToolbarContext.js +0 -84
  138. package/lib/demo.d.ts +0 -12
  139. package/lib/demo.js +0 -45
  140. package/lib/hooks/useFlashMessage.d.ts +0 -2
  141. package/lib/hooks/useFlashMessage.js +0 -8
  142. package/lib/hooks/useModal.d.ts +0 -5
  143. package/lib/hooks/useModal.js +0 -26
  144. package/lib/hooks/useReport.d.ts +0 -1
  145. package/lib/hooks/useReport.js +0 -50
  146. package/lib/index.d.ts +0 -1
  147. package/lib/index.js +0 -5
  148. package/lib/nodes/AutocompleteNode.d.ts +0 -27
  149. package/lib/nodes/AutocompleteNode.js +0 -60
  150. package/lib/nodes/CounterComponent.d.ts +0 -6
  151. package/lib/nodes/CounterComponent.js +0 -137
  152. package/lib/nodes/CounterNode.d.ts +0 -23
  153. package/lib/nodes/CounterNode.js +0 -47
  154. package/lib/nodes/DateTimeNode/DateTimeComponent.d.ts +0 -8
  155. package/lib/nodes/DateTimeNode/DateTimeComponent.js +0 -119
  156. package/lib/nodes/DateTimeNode/DateTimeNode.d.ts +0 -27
  157. package/lib/nodes/DateTimeNode/DateTimeNode.js +0 -82
  158. package/lib/nodes/EmojiNode.d.ts +0 -18
  159. package/lib/nodes/EmojiNode.js +0 -54
  160. package/lib/nodes/EquationComponent.d.ts +0 -9
  161. package/lib/nodes/EquationComponent.js +0 -75
  162. package/lib/nodes/EquationNode.d.ts +0 -26
  163. package/lib/nodes/EquationNode.js +0 -109
  164. package/lib/nodes/ExcalidrawNode/ExcalidrawComponent.d.ts +0 -8
  165. package/lib/nodes/ExcalidrawNode/ExcalidrawComponent.js +0 -110
  166. package/lib/nodes/ExcalidrawNode/ExcalidrawImage.d.ts +0 -50
  167. package/lib/nodes/ExcalidrawNode/ExcalidrawImage.js +0 -55
  168. package/lib/nodes/ExcalidrawNode/index.d.ts +0 -32
  169. package/lib/nodes/ExcalidrawNode/index.js +0 -117
  170. package/lib/nodes/FigmaNode.d.ts +0 -20
  171. package/lib/nodes/FigmaNode.js +0 -52
  172. package/lib/nodes/ImageComponent.d.ts +0 -16
  173. package/lib/nodes/ImageComponent.js +0 -272
  174. package/lib/nodes/ImageNode.d.ts +0 -50
  175. package/lib/nodes/ImageNode.js +0 -151
  176. package/lib/nodes/InlineImageNode/InlineImageComponent.d.ts +0 -26
  177. package/lib/nodes/InlineImageNode/InlineImageComponent.js +0 -161
  178. package/lib/nodes/InlineImageNode/InlineImageNode.d.ts +0 -59
  179. package/lib/nodes/InlineImageNode/InlineImageNode.js +0 -162
  180. package/lib/nodes/KeywordNode.d.ts +0 -14
  181. package/lib/nodes/KeywordNode.js +0 -37
  182. package/lib/nodes/LayoutContainerNode.d.ts +0 -24
  183. package/lib/nodes/LayoutContainerNode.js +0 -95
  184. package/lib/nodes/LayoutItemNode.d.ts +0 -16
  185. package/lib/nodes/LayoutItemNode.js +0 -69
  186. package/lib/nodes/MentionNode.d.ts +0 -20
  187. package/lib/nodes/MentionNode.js +0 -85
  188. package/lib/nodes/PageBreakNode/index.d.ts +0 -17
  189. package/lib/nodes/PageBreakNode/index.js +0 -83
  190. package/lib/nodes/PlaygroundNodes.d.ts +0 -3
  191. package/lib/nodes/PlaygroundNodes.js +0 -75
  192. package/lib/nodes/PollComponent.d.ts +0 -9
  193. package/lib/nodes/PollComponent.js +0 -85
  194. package/lib/nodes/PollNode.d.ts +0 -43
  195. package/lib/nodes/PollNode.js +0 -153
  196. package/lib/nodes/SpecialTextNode.d.ts +0 -24
  197. package/lib/nodes/SpecialTextNode.js +0 -54
  198. package/lib/nodes/StickyComponent.d.ts +0 -10
  199. package/lib/nodes/StickyComponent.js +0 -162
  200. package/lib/nodes/StickyNode.d.ts +0 -31
  201. package/lib/nodes/StickyNode.js +0 -76
  202. package/lib/nodes/TweetNode.d.ts +0 -21
  203. package/lib/nodes/TweetNode.js +0 -119
  204. package/lib/nodes/YouTubeNode.d.ts +0 -22
  205. package/lib/nodes/YouTubeNode.js +0 -84
  206. package/lib/plugins/ActionsPlugin/index.d.ts +0 -5
  207. package/lib/plugins/ActionsPlugin/index.js +0 -168
  208. package/lib/plugins/AutoEmbedPlugin/index.d.ts +0 -19
  209. package/lib/plugins/AutoEmbedPlugin/index.js +0 -158
  210. package/lib/plugins/AutoLinkPlugin/index.d.ts +0 -2
  211. package/lib/plugins/AutoLinkPlugin/index.js +0 -15
  212. package/lib/plugins/AutocompletePlugin/index.d.ts +0 -10
  213. package/lib/plugins/AutocompletePlugin/index.js +0 -2477
  214. package/lib/plugins/CodeActionMenuPlugin/components/CopyButton/index.d.ts +0 -7
  215. package/lib/plugins/CodeActionMenuPlugin/components/CopyButton/index.js +0 -46
  216. package/lib/plugins/CodeActionMenuPlugin/components/PrettierButton/index.d.ts +0 -17
  217. package/lib/plugins/CodeActionMenuPlugin/components/PrettierButton/index.js +0 -115
  218. package/lib/plugins/CodeActionMenuPlugin/index.d.ts +0 -5
  219. package/lib/plugins/CodeActionMenuPlugin/index.js +0 -104
  220. package/lib/plugins/CodeActionMenuPlugin/utils.d.ts +0 -1
  221. package/lib/plugins/CodeActionMenuPlugin/utils.js +0 -22
  222. package/lib/plugins/CodeHighlightPrismPlugin/index.d.ts +0 -2
  223. package/lib/plugins/CodeHighlightPrismPlugin/index.js +0 -14
  224. package/lib/plugins/CodeHighlightShikiPlugin/index.d.ts +0 -2
  225. package/lib/plugins/CodeHighlightShikiPlugin/index.js +0 -14
  226. package/lib/plugins/CollapsiblePlugin/CollapsibleContainerNode.d.ts +0 -25
  227. package/lib/plugins/CollapsiblePlugin/CollapsibleContainerNode.js +0 -135
  228. package/lib/plugins/CollapsiblePlugin/CollapsibleContentNode.d.ts +0 -16
  229. package/lib/plugins/CollapsiblePlugin/CollapsibleContentNode.js +0 -83
  230. package/lib/plugins/CollapsiblePlugin/CollapsibleTitleNode.d.ts +0 -16
  231. package/lib/plugins/CollapsiblePlugin/CollapsibleTitleNode.js +0 -85
  232. package/lib/plugins/CollapsiblePlugin/CollapsibleUtils.d.ts +0 -2
  233. package/lib/plugins/CollapsiblePlugin/CollapsibleUtils.js +0 -12
  234. package/lib/plugins/CollapsiblePlugin/index.d.ts +0 -3
  235. package/lib/plugins/CollapsiblePlugin/index.js +0 -132
  236. package/lib/plugins/CommentPlugin/index.d.ts +0 -9
  237. package/lib/plugins/CommentPlugin/index.js +0 -460
  238. package/lib/plugins/ComponentPickerPlugin/index.d.ts +0 -2
  239. package/lib/plugins/ComponentPickerPlugin/index.js +0 -276
  240. package/lib/plugins/ContextMenuPlugin/index.d.ts +0 -2
  241. package/lib/plugins/ContextMenuPlugin/index.js +0 -112
  242. package/lib/plugins/CounterPlugin/index.d.ts +0 -3
  243. package/lib/plugins/CounterPlugin/index.js +0 -24
  244. package/lib/plugins/DateTimePlugin/index.d.ts +0 -8
  245. package/lib/plugins/DateTimePlugin/index.js +0 -28
  246. package/lib/plugins/DebugPlugin/index.d.ts +0 -3
  247. package/lib/plugins/DebugPlugin/index.js +0 -219
  248. package/lib/plugins/DocsPlugin/index.d.ts +0 -2
  249. package/lib/plugins/DocsPlugin/index.js +0 -4
  250. package/lib/plugins/DragDropPastePlugin/index.d.ts +0 -1
  251. package/lib/plugins/DragDropPastePlugin/index.js +0 -37
  252. package/lib/plugins/DraggableBlockPlugin/index.d.ts +0 -12
  253. package/lib/plugins/DraggableBlockPlugin/index.js +0 -36
  254. package/lib/plugins/EmojiPickerPlugin/index.d.ts +0 -1
  255. package/lib/plugins/EmojiPickerPlugin/index.js +0 -84
  256. package/lib/plugins/EmojisPlugin/index.d.ts +0 -2
  257. package/lib/plugins/EmojisPlugin/index.js +0 -56
  258. package/lib/plugins/EquationsPlugin/index.d.ts +0 -14
  259. package/lib/plugins/EquationsPlugin/index.js +0 -34
  260. package/lib/plugins/ExcalidrawPlugin/index.d.ts +0 -5
  261. package/lib/plugins/ExcalidrawPlugin/index.js +0 -44
  262. package/lib/plugins/FigmaPlugin/index.d.ts +0 -4
  263. package/lib/plugins/FigmaPlugin/index.js +0 -24
  264. package/lib/plugins/FloatingLinkEditorPlugin/index.d.ts +0 -15
  265. package/lib/plugins/FloatingLinkEditorPlugin/index.js +0 -280
  266. package/lib/plugins/FloatingTextFormatToolbarPlugin/index.d.ts +0 -7
  267. package/lib/plugins/FloatingTextFormatToolbarPlugin/index.js +0 -219
  268. package/lib/plugins/ImagesPlugin/index.d.ts +0 -24
  269. package/lib/plugins/ImagesPlugin/index.js +0 -195
  270. package/lib/plugins/InlineImagePlugin/index.d.ts +0 -17
  271. package/lib/plugins/InlineImagePlugin/index.js +0 -180
  272. package/lib/plugins/KeywordsPlugin/index.d.ts +0 -2
  273. package/lib/plugins/KeywordsPlugin/index.js +0 -35
  274. package/lib/plugins/LayoutPlugin/InsertLayoutDialog.d.ts +0 -6
  275. package/lib/plugins/LayoutPlugin/InsertLayoutDialog.js +0 -21
  276. package/lib/plugins/LayoutPlugin/LayoutPlugin.d.ts +0 -7
  277. package/lib/plugins/LayoutPlugin/LayoutPlugin.js +0 -135
  278. package/lib/plugins/LinkPlugin/index.d.ts +0 -6
  279. package/lib/plugins/LinkPlugin/index.js +0 -11
  280. package/lib/plugins/MarkdownShortcutPlugin/index.d.ts +0 -2
  281. package/lib/plugins/MarkdownShortcutPlugin/index.js +0 -6
  282. package/lib/plugins/MarkdownTransformers/index.d.ts +0 -8
  283. package/lib/plugins/MarkdownTransformers/index.js +0 -238
  284. package/lib/plugins/MaxLengthPlugin/index.d.ts +0 -3
  285. package/lib/plugins/MaxLengthPlugin/index.js +0 -41
  286. package/lib/plugins/MentionsPlugin/index.d.ts +0 -2
  287. package/lib/plugins/MentionsPlugin/index.js +0 -564
  288. package/lib/plugins/PageBreakPlugin/index.d.ts +0 -4
  289. package/lib/plugins/PageBreakPlugin/index.js +0 -31
  290. package/lib/plugins/PasteLogPlugin/index.d.ts +0 -2
  291. package/lib/plugins/PasteLogPlugin/index.js +0 -27
  292. package/lib/plugins/PollPlugin/index.d.ts +0 -8
  293. package/lib/plugins/PollPlugin/index.js +0 -38
  294. package/lib/plugins/ShortcutsPlugin/index.d.ts +0 -6
  295. package/lib/plugins/ShortcutsPlugin/index.js +0 -116
  296. package/lib/plugins/ShortcutsPlugin/shortcuts.d.ts +0 -59
  297. package/lib/plugins/ShortcutsPlugin/shortcuts.js +0 -173
  298. package/lib/plugins/SpecialTextPlugin/index.d.ts +0 -2
  299. package/lib/plugins/SpecialTextPlugin/index.js +0 -50
  300. package/lib/plugins/SpeechToTextPlugin/index.d.ts +0 -5
  301. package/lib/plugins/SpeechToTextPlugin/index.js +0 -86
  302. package/lib/plugins/StickyPlugin/index.d.ts +0 -2
  303. package/lib/plugins/StickyPlugin/index.js +0 -16
  304. package/lib/plugins/TabFocusPlugin/index.d.ts +0 -1
  305. package/lib/plugins/TabFocusPlugin/index.js +0 -38
  306. package/lib/plugins/TableActionMenuPlugin/index.d.ts +0 -5
  307. package/lib/plugins/TableActionMenuPlugin/index.js +0 -492
  308. package/lib/plugins/TableCellResizer/index.d.ts +0 -3
  309. package/lib/plugins/TableCellResizer/index.js +0 -297
  310. package/lib/plugins/TableHoverActionsPlugin/index.d.ts +0 -4
  311. package/lib/plugins/TableHoverActionsPlugin/index.js +0 -188
  312. package/lib/plugins/TableOfContentsPlugin/index.d.ts +0 -2
  313. package/lib/plugins/TableOfContentsPlugin/index.js +0 -116
  314. package/lib/plugins/TablePlugin.d.ts +0 -31
  315. package/lib/plugins/TablePlugin.js +0 -63
  316. package/lib/plugins/TestRecorderPlugin/index.d.ts +0 -3
  317. package/lib/plugins/TestRecorderPlugin/index.js +0 -346
  318. package/lib/plugins/ToolbarPlugin/fontSize.d.ts +0 -9
  319. package/lib/plugins/ToolbarPlugin/fontSize.js +0 -84
  320. package/lib/plugins/ToolbarPlugin/index.d.ts +0 -9
  321. package/lib/plugins/ToolbarPlugin/index.js +0 -500
  322. package/lib/plugins/ToolbarPlugin/utils.d.ts +0 -26
  323. package/lib/plugins/ToolbarPlugin/utils.js +0 -247
  324. package/lib/plugins/TreeViewPlugin/index.d.ts +0 -2
  325. package/lib/plugins/TreeViewPlugin/index.js +0 -7
  326. package/lib/plugins/TwitterPlugin/index.d.ts +0 -4
  327. package/lib/plugins/TwitterPlugin/index.js +0 -24
  328. package/lib/plugins/TypingPerfPlugin/index.d.ts +0 -2
  329. package/lib/plugins/TypingPerfPlugin/index.js +0 -97
  330. package/lib/plugins/YouTubePlugin/index.d.ts +0 -4
  331. package/lib/plugins/YouTubePlugin/index.js +0 -24
  332. package/lib/server/validation.d.ts +0 -1
  333. package/lib/server/validation.js +0 -115
  334. package/lib/setupEnv.d.ts +0 -2
  335. package/lib/setupEnv.js +0 -29
  336. package/lib/themes/CommentEditorTheme.d.ts +0 -4
  337. package/lib/themes/CommentEditorTheme.js +0 -11
  338. package/lib/themes/PlaygroundEditorTheme.d.ts +0 -4
  339. package/lib/themes/PlaygroundEditorTheme.js +0 -124
  340. package/lib/themes/StickyEditorTheme.d.ts +0 -4
  341. package/lib/themes/StickyEditorTheme.js +0 -11
  342. package/lib/tyes.dt.d.ts +0 -12
  343. package/lib/tyes.dt.js +0 -4
  344. package/lib/ui/Button.d.ts +0 -12
  345. package/lib/ui/Button.js +0 -6
  346. package/lib/ui/ColorPicker.d.ts +0 -14
  347. package/lib/ui/ColorPicker.js +0 -219
  348. package/lib/ui/ContentEditable.d.ts +0 -9
  349. package/lib/ui/ContentEditable.js +0 -6
  350. package/lib/ui/Dialog.d.ts +0 -10
  351. package/lib/ui/Dialog.js +0 -8
  352. package/lib/ui/DropDown.d.ts +0 -18
  353. package/lib/ui/DropDown.js +0 -133
  354. package/lib/ui/DropdownColorPicker.d.ts +0 -13
  355. package/lib/ui/DropdownColorPicker.js +0 -6
  356. package/lib/ui/EquationEditor.d.ts +0 -8
  357. package/lib/ui/EquationEditor.js +0 -11
  358. package/lib/ui/ExcalidrawModal.d.ts +0 -42
  359. package/lib/ui/ExcalidrawModal.js +0 -103
  360. package/lib/ui/FileInput.d.ts +0 -10
  361. package/lib/ui/FileInput.js +0 -5
  362. package/lib/ui/FlashMessage.d.ts +0 -7
  363. package/lib/ui/FlashMessage.js +0 -6
  364. package/lib/ui/ImageResizer.d.ts +0 -17
  365. package/lib/ui/ImageResizer.js +0 -171
  366. package/lib/ui/KatexEquationAlterer.d.ts +0 -8
  367. package/lib/ui/KatexEquationAlterer.js +0 -23
  368. package/lib/ui/KatexRenderer.d.ts +0 -6
  369. package/lib/ui/KatexRenderer.js +0 -24
  370. package/lib/ui/Modal.d.ts +0 -9
  371. package/lib/ui/Modal.js +0 -48
  372. package/lib/ui/Select.d.ts +0 -8
  373. package/lib/ui/Select.js +0 -5
  374. package/lib/ui/Switch.d.ts +0 -8
  375. package/lib/ui/Switch.js +0 -6
  376. package/lib/ui/TextInput.d.ts +0 -13
  377. package/lib/ui/TextInput.js +0 -7
  378. package/lib/utils/docSerialization.d.ts +0 -3
  379. package/lib/utils/docSerialization.js +0 -60
  380. package/lib/utils/emoji-list.d.ts +0 -20
  381. package/lib/utils/emoji-list.js +0 -16609
  382. package/lib/utils/getDOMRangeRect.d.ts +0 -8
  383. package/lib/utils/getDOMRangeRect.js +0 -26
  384. package/lib/utils/getSelectedNode.d.ts +0 -2
  385. package/lib/utils/getSelectedNode.js +0 -28
  386. package/lib/utils/getThemeSelector.d.ts +0 -2
  387. package/lib/utils/getThemeSelector.js +0 -14
  388. package/lib/utils/isMobileWidth.d.ts +0 -7
  389. package/lib/utils/isMobileWidth.js +0 -11
  390. package/lib/utils/joinClasses.d.ts +0 -1
  391. package/lib/utils/joinClasses.js +0 -7
  392. package/lib/utils/setFloatingElemPosition.d.ts +0 -1
  393. package/lib/utils/setFloatingElemPosition.js +0 -59
  394. package/lib/utils/setFloatingElemPositionForLinkEditor.d.ts +0 -1
  395. package/lib/utils/setFloatingElemPositionForLinkEditor.js +0 -36
  396. package/lib/utils/swipe.d.ts +0 -4
  397. package/lib/utils/swipe.js +0 -94
  398. package/lib/utils/url.d.ts +0 -2
  399. package/lib/utils/url.js +0 -31
@@ -1,85 +0,0 @@
1
- /*
2
- * Copyright (c) 2023-2025 Datalayer, Inc.
3
- * Distributed under the terms of the MIT License.
4
- */
5
- import { $applyNodeReplacement, TextNode, } from 'lexical';
6
- function $convertMentionElement(domNode) {
7
- const textContent = domNode.textContent;
8
- const mentionName = domNode.getAttribute('data-lexical-mention-name');
9
- if (textContent !== null) {
10
- const node = $createMentionNode(typeof mentionName === 'string' ? mentionName : textContent, textContent);
11
- return {
12
- node,
13
- };
14
- }
15
- return null;
16
- }
17
- const mentionStyle = 'background-color: rgba(24, 119, 232, 0.2)';
18
- export class MentionNode extends TextNode {
19
- __mention;
20
- static getType() {
21
- return 'mention';
22
- }
23
- static clone(node) {
24
- return new MentionNode(node.__mention, node.__text, node.__key);
25
- }
26
- static importJSON(serializedNode) {
27
- return $createMentionNode(serializedNode.mentionName).updateFromJSON(serializedNode);
28
- }
29
- constructor(mentionName, text, key) {
30
- super(text ?? mentionName, key);
31
- this.__mention = mentionName;
32
- }
33
- exportJSON() {
34
- return {
35
- ...super.exportJSON(),
36
- mentionName: this.__mention,
37
- };
38
- }
39
- createDOM(config) {
40
- const dom = super.createDOM(config);
41
- dom.style.cssText = mentionStyle;
42
- dom.className = 'mention';
43
- dom.spellcheck = false;
44
- return dom;
45
- }
46
- exportDOM() {
47
- const element = document.createElement('span');
48
- element.setAttribute('data-lexical-mention', 'true');
49
- if (this.__text !== this.__mention) {
50
- element.setAttribute('data-lexical-mention-name', this.__mention);
51
- }
52
- element.textContent = this.__text;
53
- return { element };
54
- }
55
- static importDOM() {
56
- return {
57
- span: (domNode) => {
58
- if (!domNode.hasAttribute('data-lexical-mention')) {
59
- return null;
60
- }
61
- return {
62
- conversion: $convertMentionElement,
63
- priority: 1,
64
- };
65
- },
66
- };
67
- }
68
- isTextEntity() {
69
- return true;
70
- }
71
- canInsertTextBefore() {
72
- return false;
73
- }
74
- canInsertTextAfter() {
75
- return false;
76
- }
77
- }
78
- export function $createMentionNode(mentionName, textContent) {
79
- const mentionNode = new MentionNode(mentionName, (textContent = mentionName));
80
- mentionNode.setMode('segmented').toggleDirectionless();
81
- return $applyNodeReplacement(mentionNode);
82
- }
83
- export function $isMentionNode(node) {
84
- return node instanceof MentionNode;
85
- }
@@ -1,17 +0,0 @@
1
- import type { JSX } from 'react';
2
- import './index.css';
3
- import { DecoratorNode, DOMConversionMap, LexicalNode, SerializedLexicalNode } from 'lexical';
4
- export type SerializedPageBreakNode = SerializedLexicalNode;
5
- export declare class PageBreakNode extends DecoratorNode<JSX.Element> {
6
- static getType(): string;
7
- static clone(node: PageBreakNode): PageBreakNode;
8
- static importJSON(serializedNode: SerializedPageBreakNode): PageBreakNode;
9
- static importDOM(): DOMConversionMap | null;
10
- createDOM(): HTMLElement;
11
- getTextContent(): string;
12
- isInline(): false;
13
- updateDOM(): boolean;
14
- decorate(): JSX.Element;
15
- }
16
- export declare function $createPageBreakNode(): PageBreakNode;
17
- export declare function $isPageBreakNode(node: LexicalNode | null | undefined): node is PageBreakNode;
@@ -1,83 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import './index.css';
3
- import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
4
- import { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection';
5
- import { mergeRegister } from '@lexical/utils';
6
- import { CLICK_COMMAND, COMMAND_PRIORITY_HIGH, COMMAND_PRIORITY_LOW, DecoratorNode, } from 'lexical';
7
- import { useEffect } from 'react';
8
- function PageBreakComponent({ nodeKey }) {
9
- const [editor] = useLexicalComposerContext();
10
- const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey);
11
- useEffect(() => {
12
- return mergeRegister(editor.registerCommand(CLICK_COMMAND, (event) => {
13
- const pbElem = editor.getElementByKey(nodeKey);
14
- if (event.target === pbElem) {
15
- if (!event.shiftKey) {
16
- clearSelection();
17
- }
18
- setSelected(!isSelected);
19
- return true;
20
- }
21
- return false;
22
- }, COMMAND_PRIORITY_LOW));
23
- }, [clearSelection, editor, isSelected, nodeKey, setSelected]);
24
- useEffect(() => {
25
- const pbElem = editor.getElementByKey(nodeKey);
26
- if (pbElem !== null) {
27
- pbElem.className = isSelected ? 'selected' : '';
28
- }
29
- }, [editor, isSelected, nodeKey]);
30
- return null;
31
- }
32
- export class PageBreakNode extends DecoratorNode {
33
- static getType() {
34
- return 'page-break';
35
- }
36
- static clone(node) {
37
- return new PageBreakNode(node.__key);
38
- }
39
- static importJSON(serializedNode) {
40
- return $createPageBreakNode().updateFromJSON(serializedNode);
41
- }
42
- static importDOM() {
43
- return {
44
- figure: (domNode) => {
45
- const tp = domNode.getAttribute('type');
46
- if (tp !== this.getType()) {
47
- return null;
48
- }
49
- return {
50
- conversion: $convertPageBreakElement,
51
- priority: COMMAND_PRIORITY_HIGH,
52
- };
53
- },
54
- };
55
- }
56
- createDOM() {
57
- const el = document.createElement('figure');
58
- el.style.pageBreakAfter = 'always';
59
- el.setAttribute('type', this.getType());
60
- return el;
61
- }
62
- getTextContent() {
63
- return '\n';
64
- }
65
- isInline() {
66
- return false;
67
- }
68
- updateDOM() {
69
- return false;
70
- }
71
- decorate() {
72
- return _jsx(PageBreakComponent, { nodeKey: this.__key });
73
- }
74
- }
75
- function $convertPageBreakElement() {
76
- return { node: $createPageBreakNode() };
77
- }
78
- export function $createPageBreakNode() {
79
- return new PageBreakNode();
80
- }
81
- export function $isPageBreakNode(node) {
82
- return node instanceof PageBreakNode;
83
- }
@@ -1,3 +0,0 @@
1
- import type { Klass, LexicalNode } from 'lexical';
2
- declare const PlaygroundNodes: Array<Klass<LexicalNode>>;
3
- export default PlaygroundNodes;
@@ -1,75 +0,0 @@
1
- /*
2
- * Copyright (c) 2023-2025 Datalayer, Inc.
3
- * Distributed under the terms of the MIT License.
4
- */
5
- import { CodeHighlightNode, CodeNode } from '@lexical/code';
6
- import { HashtagNode } from '@lexical/hashtag';
7
- import { AutoLinkNode, LinkNode } from '@lexical/link';
8
- import { ListItemNode, ListNode } from '@lexical/list';
9
- import { MarkNode } from '@lexical/mark';
10
- import { OverflowNode } from '@lexical/overflow';
11
- import { HorizontalRuleNode } from '@lexical/react/LexicalHorizontalRuleNode';
12
- import { HeadingNode, QuoteNode } from '@lexical/rich-text';
13
- import { TableCellNode, TableNode, TableRowNode } from '@lexical/table';
14
- import { CollapsibleContainerNode } from '../plugins/CollapsiblePlugin/CollapsibleContainerNode';
15
- import { CollapsibleContentNode } from '../plugins/CollapsiblePlugin/CollapsibleContentNode';
16
- import { CollapsibleTitleNode } from '../plugins/CollapsiblePlugin/CollapsibleTitleNode';
17
- import { AutocompleteNode } from './AutocompleteNode';
18
- import { CounterNode } from './CounterNode';
19
- import { DateTimeNode } from './DateTimeNode/DateTimeNode';
20
- import { EmojiNode } from './EmojiNode';
21
- import { EquationNode } from './EquationNode';
22
- import { ExcalidrawNode } from './ExcalidrawNode';
23
- import { FigmaNode } from './FigmaNode';
24
- import { ImageNode } from './ImageNode';
25
- import { InlineImageNode } from './InlineImageNode/InlineImageNode';
26
- import { KeywordNode } from './KeywordNode';
27
- import { LayoutContainerNode } from './LayoutContainerNode';
28
- import { LayoutItemNode } from './LayoutItemNode';
29
- import { MentionNode } from './MentionNode';
30
- import { PageBreakNode } from './PageBreakNode';
31
- import { PollNode } from './PollNode';
32
- import { SpecialTextNode } from './SpecialTextNode';
33
- import { StickyNode } from './StickyNode';
34
- import { TweetNode } from './TweetNode';
35
- import { YouTubeNode } from './YouTubeNode';
36
- const PlaygroundNodes = [
37
- HeadingNode,
38
- ListNode,
39
- ListItemNode,
40
- QuoteNode,
41
- CodeNode,
42
- TableNode,
43
- TableCellNode,
44
- TableRowNode,
45
- HashtagNode,
46
- CodeHighlightNode,
47
- AutoLinkNode,
48
- LinkNode,
49
- OverflowNode,
50
- PollNode,
51
- StickyNode,
52
- ImageNode,
53
- InlineImageNode,
54
- MentionNode,
55
- EmojiNode,
56
- ExcalidrawNode,
57
- EquationNode,
58
- AutocompleteNode,
59
- CounterNode,
60
- KeywordNode,
61
- HorizontalRuleNode,
62
- TweetNode,
63
- YouTubeNode,
64
- FigmaNode,
65
- MarkNode,
66
- CollapsibleContainerNode,
67
- CollapsibleContentNode,
68
- CollapsibleTitleNode,
69
- PageBreakNode,
70
- LayoutContainerNode,
71
- LayoutItemNode,
72
- SpecialTextNode,
73
- DateTimeNode,
74
- ];
75
- export default PlaygroundNodes;
@@ -1,9 +0,0 @@
1
- import type { Options } from './PollNode';
2
- import type { JSX } from 'react';
3
- import './PollNode.css';
4
- import { NodeKey } from 'lexical';
5
- export default function PollComponent({ question, options, nodeKey, }: {
6
- nodeKey: NodeKey;
7
- options: Options;
8
- question: string;
9
- }): JSX.Element;
@@ -1,85 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import './PollNode.css';
3
- import { useCollaborationContext } from '@lexical/react/LexicalCollaborationContext';
4
- import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
5
- import { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection';
6
- import { mergeRegister } from '@lexical/utils';
7
- import { $getNodeByKey, $getSelection, $isNodeSelection, CLICK_COMMAND, COMMAND_PRIORITY_LOW, } from 'lexical';
8
- import { useEffect, useMemo, useRef, useState } from 'react';
9
- import Button from '../ui/Button';
10
- import joinClasses from '../utils/joinClasses';
11
- import { $isPollNode, createPollOption } from './PollNode';
12
- function getTotalVotes(options) {
13
- return options.reduce((totalVotes, next) => {
14
- return totalVotes + next.votes.length;
15
- }, 0);
16
- }
17
- function PollOptionComponent({ option, index, options, totalVotes, withPollNode, }) {
18
- const { clientID } = useCollaborationContext();
19
- const checkboxRef = useRef(null);
20
- const votesArray = option.votes;
21
- const checkedIndex = votesArray.indexOf(clientID);
22
- const checked = checkedIndex !== -1;
23
- const votes = votesArray.length;
24
- const text = option.text;
25
- return (_jsxs("div", { className: "PollNode__optionContainer", children: [_jsx("div", { className: joinClasses('PollNode__optionCheckboxWrapper', checked && 'PollNode__optionCheckboxChecked'), children: _jsx("input", { ref: checkboxRef, className: "PollNode__optionCheckbox", type: "checkbox", onChange: (e) => {
26
- withPollNode((node) => {
27
- node.toggleVote(option, clientID);
28
- });
29
- }, checked: checked }) }), _jsxs("div", { className: "PollNode__optionInputWrapper", children: [_jsx("div", { className: "PollNode__optionInputVotes", style: { width: `${votes === 0 ? 0 : (votes / totalVotes) * 100}%` } }), _jsx("span", { className: "PollNode__optionInputVotesCount", children: votes > 0 && (votes === 1 ? '1 vote' : `${votes} votes`) }), _jsx("input", { className: "PollNode__optionInput", type: "text", value: text, onChange: (e) => {
30
- const target = e.target;
31
- const value = target.value;
32
- const selectionStart = target.selectionStart;
33
- const selectionEnd = target.selectionEnd;
34
- withPollNode((node) => {
35
- node.setOptionText(option, value);
36
- }, () => {
37
- target.selectionStart = selectionStart;
38
- target.selectionEnd = selectionEnd;
39
- });
40
- }, placeholder: `Option ${index + 1}` })] }), _jsx("button", { disabled: options.length < 3, className: joinClasses('PollNode__optionDelete', options.length < 3 && 'PollNode__optionDeleteDisabled'), "aria-label": "Remove", onClick: () => {
41
- withPollNode((node) => {
42
- node.deleteOption(option);
43
- });
44
- } })] }));
45
- }
46
- export default function PollComponent({ question, options, nodeKey, }) {
47
- const [editor] = useLexicalComposerContext();
48
- const totalVotes = useMemo(() => getTotalVotes(options), [options]);
49
- const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey);
50
- const [selection, setSelection] = useState(null);
51
- const ref = useRef(null);
52
- useEffect(() => {
53
- return mergeRegister(editor.registerUpdateListener(({ editorState }) => {
54
- setSelection(editorState.read(() => $getSelection()));
55
- }), editor.registerCommand(CLICK_COMMAND, (payload) => {
56
- const event = payload;
57
- if (event.target === ref.current) {
58
- if (!event.shiftKey) {
59
- clearSelection();
60
- }
61
- setSelected(!isSelected);
62
- return true;
63
- }
64
- return false;
65
- }, COMMAND_PRIORITY_LOW));
66
- }, [clearSelection, editor, isSelected, nodeKey, setSelected]);
67
- const withPollNode = (cb, onUpdate) => {
68
- editor.update(() => {
69
- const node = $getNodeByKey(nodeKey);
70
- if ($isPollNode(node)) {
71
- cb(node);
72
- }
73
- }, { onUpdate });
74
- };
75
- const addOption = () => {
76
- withPollNode((node) => {
77
- node.addOption(createPollOption());
78
- });
79
- };
80
- const isFocused = $isNodeSelection(selection) && isSelected;
81
- return (_jsx("div", { className: `PollNode__container ${isFocused ? 'focused' : ''}`, ref: ref, children: _jsxs("div", { className: "PollNode__inner", children: [_jsx("h2", { className: "PollNode__heading", children: question }), options.map((option, index) => {
82
- const key = option.uid;
83
- return (_jsx(PollOptionComponent, { withPollNode: withPollNode, option: option, index: index, options: options, totalVotes: totalVotes }, key));
84
- }), _jsx("div", { className: "PollNode__footer", children: _jsx(Button, { onClick: addOption, small: true, children: "Add Option" }) })] }) }));
85
- }
@@ -1,43 +0,0 @@
1
- import type { JSX } from 'react';
2
- import { DecoratorNode, DOMExportOutput, LexicalNode, SerializedLexicalNode, Spread, StateConfigValue, type StateValueOrUpdater } from 'lexical';
3
- export type Options = ReadonlyArray<Option>;
4
- export type Option = Readonly<{
5
- text: string;
6
- uid: string;
7
- votes: Array<number>;
8
- }>;
9
- export declare function createPollOption(text?: string): Option;
10
- export type SerializedPollNode = Spread<{
11
- question: string;
12
- options: Options;
13
- }, SerializedLexicalNode>;
14
- declare const questionState: import("lexical").StateConfig<"question", string>;
15
- declare const optionsState: import("lexical").StateConfig<"options", Options>;
16
- export declare class PollNode extends DecoratorNode<JSX.Element> {
17
- $config(): import("lexical").StaticNodeConfigRecord<"poll", {
18
- extends: typeof DecoratorNode;
19
- importDOM: import("lexical").DOMConversionMap<HTMLElement>;
20
- stateConfigs: ({
21
- flat: true;
22
- stateConfig: import("lexical").StateConfig<"question", string>;
23
- } | {
24
- flat: true;
25
- stateConfig: import("lexical").StateConfig<"options", Options>;
26
- })[];
27
- }>;
28
- getQuestion(): StateConfigValue<typeof questionState>;
29
- setQuestion(valueOrUpdater: StateValueOrUpdater<typeof questionState>): this;
30
- getOptions(): StateConfigValue<typeof optionsState>;
31
- setOptions(valueOrUpdater: StateValueOrUpdater<typeof optionsState>): this;
32
- addOption(option: Option): this;
33
- deleteOption(option: Option): this;
34
- setOptionText(option: Option, text: string): this;
35
- toggleVote(option: Option, clientID: number): this;
36
- exportDOM(): DOMExportOutput;
37
- createDOM(): HTMLElement;
38
- updateDOM(): false;
39
- decorate(): JSX.Element;
40
- }
41
- export declare function $createPollNode(question: string, options: Options): PollNode;
42
- export declare function $isPollNode(node: LexicalNode | null | undefined): node is PollNode;
43
- export {};
@@ -1,153 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { $getState, $setState, buildImportMap, createState, DecoratorNode, } from 'lexical';
3
- import * as React from 'react';
4
- const PollComponent = React.lazy(() => import('./PollComponent'));
5
- function createUID() {
6
- return Math.random()
7
- .toString(36)
8
- .replace(/[^a-z]+/g, '')
9
- .substring(0, 5);
10
- }
11
- export function createPollOption(text = '') {
12
- return {
13
- text,
14
- uid: createUID(),
15
- votes: [],
16
- };
17
- }
18
- function cloneOption(option, text, votes) {
19
- return {
20
- text,
21
- uid: option.uid,
22
- votes: votes || Array.from(option.votes),
23
- };
24
- }
25
- function $convertPollElement(domNode) {
26
- const question = domNode.getAttribute('data-lexical-poll-question');
27
- const options = domNode.getAttribute('data-lexical-poll-options');
28
- if (question !== null && options !== null) {
29
- const node = $createPollNode(question, JSON.parse(options));
30
- return { node };
31
- }
32
- return null;
33
- }
34
- function parseOptions(json) {
35
- const options = [];
36
- if (Array.isArray(json)) {
37
- for (const row of json) {
38
- if (row &&
39
- typeof row.text === 'string' &&
40
- typeof row.uid === 'string' &&
41
- Array.isArray(row.votes) &&
42
- row.votes.every((v) => typeof v === 'number')) {
43
- options.push(row);
44
- }
45
- }
46
- }
47
- return options;
48
- }
49
- const questionState = createState('question', {
50
- parse: (v) => (typeof v === 'string' ? v : ''),
51
- });
52
- const optionsState = createState('options', {
53
- isEqual: (a, b) => a.length === b.length && JSON.stringify(a) === JSON.stringify(b),
54
- parse: parseOptions,
55
- });
56
- export class PollNode extends DecoratorNode {
57
- $config() {
58
- return this.config('poll', {
59
- extends: DecoratorNode,
60
- importDOM: buildImportMap({
61
- span: (domNode) => domNode.getAttribute('data-lexical-poll-question') !== null
62
- ? {
63
- conversion: $convertPollElement,
64
- priority: 2,
65
- }
66
- : null,
67
- }),
68
- stateConfigs: [
69
- { flat: true, stateConfig: questionState },
70
- { flat: true, stateConfig: optionsState },
71
- ],
72
- });
73
- }
74
- getQuestion() {
75
- return $getState(this, questionState);
76
- }
77
- setQuestion(valueOrUpdater) {
78
- return $setState(this, questionState, valueOrUpdater);
79
- }
80
- getOptions() {
81
- return $getState(this, optionsState);
82
- }
83
- setOptions(valueOrUpdater) {
84
- return $setState(this, optionsState, valueOrUpdater);
85
- }
86
- addOption(option) {
87
- return this.setOptions((options) => [...options, option]);
88
- }
89
- deleteOption(option) {
90
- return this.setOptions((prevOptions) => {
91
- const index = prevOptions.indexOf(option);
92
- if (index === -1) {
93
- return prevOptions;
94
- }
95
- const options = Array.from(prevOptions);
96
- options.splice(index, 1);
97
- return options;
98
- });
99
- }
100
- setOptionText(option, text) {
101
- return this.setOptions((prevOptions) => {
102
- const clonedOption = cloneOption(option, text);
103
- const options = Array.from(prevOptions);
104
- const index = options.indexOf(option);
105
- options[index] = clonedOption;
106
- return options;
107
- });
108
- }
109
- toggleVote(option, clientID) {
110
- return this.setOptions((prevOptions) => {
111
- const index = prevOptions.indexOf(option);
112
- if (index === -1) {
113
- return prevOptions;
114
- }
115
- const votes = option.votes;
116
- const votesClone = Array.from(votes);
117
- const voteIndex = votes.indexOf(clientID);
118
- if (voteIndex === -1) {
119
- votesClone.push(clientID);
120
- }
121
- else {
122
- votesClone.splice(voteIndex, 1);
123
- }
124
- const clonedOption = cloneOption(option, option.text, votesClone);
125
- const options = Array.from(prevOptions);
126
- options[index] = clonedOption;
127
- return options;
128
- });
129
- }
130
- exportDOM() {
131
- const element = document.createElement('span');
132
- element.setAttribute('data-lexical-poll-question', this.getQuestion());
133
- element.setAttribute('data-lexical-poll-options', JSON.stringify(this.getOptions()));
134
- return { element };
135
- }
136
- createDOM() {
137
- const elem = document.createElement('span');
138
- elem.style.display = 'inline-block';
139
- return elem;
140
- }
141
- updateDOM() {
142
- return false;
143
- }
144
- decorate() {
145
- return (_jsx(PollComponent, { question: this.getQuestion(), options: this.getOptions(), nodeKey: this.__key }));
146
- }
147
- }
148
- export function $createPollNode(question, options) {
149
- return new PollNode().setQuestion(question).setOptions(options);
150
- }
151
- export function $isPollNode(node) {
152
- return node instanceof PollNode;
153
- }
@@ -1,24 +0,0 @@
1
- import type { EditorConfig, LexicalNode, SerializedTextNode } from 'lexical';
2
- import { TextNode } from 'lexical';
3
- /** @noInheritDoc */
4
- export declare class SpecialTextNode extends TextNode {
5
- static getType(): string;
6
- static clone(node: SpecialTextNode): SpecialTextNode;
7
- createDOM(config: EditorConfig): HTMLElement;
8
- updateDOM(prevNode: this, dom: HTMLElement, config: EditorConfig): boolean;
9
- static importJSON(serializedNode: SerializedTextNode): SpecialTextNode;
10
- isTextEntity(): true;
11
- canInsertTextAfter(): boolean;
12
- }
13
- /**
14
- * Creates a SpecialTextNode with the given text.
15
- * @param text - Text content for the SpecialTextNode.
16
- * @returns A new SpecialTextNode instance.
17
- */
18
- export declare function $createSpecialTextNode(text?: string): SpecialTextNode;
19
- /**
20
- * Checks if a node is a SpecialTextNode.
21
- * @param node - Node to check.
22
- * @returns True if the node is a SpecialTextNode.
23
- */
24
- export declare function $isSpecialTextNode(node: LexicalNode | null | undefined): node is SpecialTextNode;
@@ -1,54 +0,0 @@
1
- /*
2
- * Copyright (c) 2023-2025 Datalayer, Inc.
3
- * Distributed under the terms of the MIT License.
4
- */
5
- import { addClassNamesToElement } from '@lexical/utils';
6
- import { $applyNodeReplacement, TextNode } from 'lexical';
7
- /** @noInheritDoc */
8
- export class SpecialTextNode extends TextNode {
9
- static getType() {
10
- return 'specialText';
11
- }
12
- static clone(node) {
13
- return new SpecialTextNode(node.__text, node.__key);
14
- }
15
- createDOM(config) {
16
- const dom = document.createElement('span');
17
- addClassNamesToElement(dom, config.theme.specialText);
18
- dom.textContent = this.getTextContent();
19
- return dom;
20
- }
21
- updateDOM(prevNode, dom, config) {
22
- if (prevNode.__text.startsWith('[') && prevNode.__text.endsWith(']')) {
23
- const strippedText = this.__text.substring(1, this.__text.length - 1); // Strip brackets again
24
- dom.textContent = strippedText; // Update the text content
25
- }
26
- addClassNamesToElement(dom, config.theme.specialText);
27
- return false;
28
- }
29
- static importJSON(serializedNode) {
30
- return $createSpecialTextNode().updateFromJSON(serializedNode);
31
- }
32
- isTextEntity() {
33
- return true;
34
- }
35
- canInsertTextAfter() {
36
- return false; // Prevents appending text to this node
37
- }
38
- }
39
- /**
40
- * Creates a SpecialTextNode with the given text.
41
- * @param text - Text content for the SpecialTextNode.
42
- * @returns A new SpecialTextNode instance.
43
- */
44
- export function $createSpecialTextNode(text = '') {
45
- return $applyNodeReplacement(new SpecialTextNode(text));
46
- }
47
- /**
48
- * Checks if a node is a SpecialTextNode.
49
- * @param node - Node to check.
50
- * @returns True if the node is a SpecialTextNode.
51
- */
52
- export function $isSpecialTextNode(node) {
53
- return node instanceof SpecialTextNode;
54
- }
@@ -1,10 +0,0 @@
1
- import type { LexicalEditor, NodeKey } from 'lexical';
2
- import type { JSX } from 'react';
3
- import './StickyNode.css';
4
- export default function StickyComponent({ x, y, nodeKey, color, caption, }: {
5
- caption: LexicalEditor;
6
- color: 'pink' | 'yellow';
7
- nodeKey: NodeKey;
8
- x: number;
9
- y: number;
10
- }): JSX.Element;