@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,81 +0,0 @@
1
- import { $applyNodeReplacement, TextNode, } from 'lexical';
2
- function $convertMentionElement(domNode) {
3
- const textContent = domNode.textContent;
4
- const mentionName = domNode.getAttribute('data-lexical-mention-name');
5
- if (textContent !== null) {
6
- const node = $createMentionNode(typeof mentionName === 'string' ? mentionName : textContent, textContent);
7
- return {
8
- node,
9
- };
10
- }
11
- return null;
12
- }
13
- const mentionStyle = 'background-color: rgba(24, 119, 232, 0.2)';
14
- export class MentionNode extends TextNode {
15
- __mention;
16
- static getType() {
17
- return 'mention';
18
- }
19
- static clone(node) {
20
- return new MentionNode(node.__mention, node.__text, node.__key);
21
- }
22
- static importJSON(serializedNode) {
23
- return $createMentionNode(serializedNode.mentionName).updateFromJSON(serializedNode);
24
- }
25
- constructor(mentionName, text, key) {
26
- super(text ?? mentionName, key);
27
- this.__mention = mentionName;
28
- }
29
- exportJSON() {
30
- return {
31
- ...super.exportJSON(),
32
- mentionName: this.__mention,
33
- };
34
- }
35
- createDOM(config) {
36
- const dom = super.createDOM(config);
37
- dom.style.cssText = mentionStyle;
38
- dom.className = 'mention';
39
- dom.spellcheck = false;
40
- return dom;
41
- }
42
- exportDOM() {
43
- const element = document.createElement('span');
44
- element.setAttribute('data-lexical-mention', 'true');
45
- if (this.__text !== this.__mention) {
46
- element.setAttribute('data-lexical-mention-name', this.__mention);
47
- }
48
- element.textContent = this.__text;
49
- return { element };
50
- }
51
- static importDOM() {
52
- return {
53
- span: (domNode) => {
54
- if (!domNode.hasAttribute('data-lexical-mention')) {
55
- return null;
56
- }
57
- return {
58
- conversion: $convertMentionElement,
59
- priority: 1,
60
- };
61
- },
62
- };
63
- }
64
- isTextEntity() {
65
- return true;
66
- }
67
- canInsertTextBefore() {
68
- return false;
69
- }
70
- canInsertTextAfter() {
71
- return false;
72
- }
73
- }
74
- export function $createMentionNode(mentionName, textContent) {
75
- const mentionNode = new MentionNode(mentionName, (textContent = mentionName));
76
- mentionNode.setMode('segmented').toggleDirectionless();
77
- return $applyNodeReplacement(mentionNode);
78
- }
79
- export function $isMentionNode(node) {
80
- return node instanceof MentionNode;
81
- }
@@ -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,71 +0,0 @@
1
- import { CodeHighlightNode, CodeNode } from '@lexical/code';
2
- import { HashtagNode } from '@lexical/hashtag';
3
- import { AutoLinkNode, LinkNode } from '@lexical/link';
4
- import { ListItemNode, ListNode } from '@lexical/list';
5
- import { MarkNode } from '@lexical/mark';
6
- import { OverflowNode } from '@lexical/overflow';
7
- import { HorizontalRuleNode } from '@lexical/react/LexicalHorizontalRuleNode';
8
- import { HeadingNode, QuoteNode } from '@lexical/rich-text';
9
- import { TableCellNode, TableNode, TableRowNode } from '@lexical/table';
10
- import { CollapsibleContainerNode } from '../plugins/CollapsiblePlugin/CollapsibleContainerNode';
11
- import { CollapsibleContentNode } from '../plugins/CollapsiblePlugin/CollapsibleContentNode';
12
- import { CollapsibleTitleNode } from '../plugins/CollapsiblePlugin/CollapsibleTitleNode';
13
- import { AutocompleteNode } from './AutocompleteNode';
14
- import { CounterNode } from './CounterNode';
15
- import { DateTimeNode } from './DateTimeNode/DateTimeNode';
16
- import { EmojiNode } from './EmojiNode';
17
- import { EquationNode } from './EquationNode';
18
- import { ExcalidrawNode } from './ExcalidrawNode';
19
- import { FigmaNode } from './FigmaNode';
20
- import { ImageNode } from './ImageNode';
21
- import { InlineImageNode } from './InlineImageNode/InlineImageNode';
22
- import { KeywordNode } from './KeywordNode';
23
- import { LayoutContainerNode } from './LayoutContainerNode';
24
- import { LayoutItemNode } from './LayoutItemNode';
25
- import { MentionNode } from './MentionNode';
26
- import { PageBreakNode } from './PageBreakNode';
27
- import { PollNode } from './PollNode';
28
- import { SpecialTextNode } from './SpecialTextNode';
29
- import { StickyNode } from './StickyNode';
30
- import { TweetNode } from './TweetNode';
31
- import { YouTubeNode } from './YouTubeNode';
32
- const PlaygroundNodes = [
33
- HeadingNode,
34
- ListNode,
35
- ListItemNode,
36
- QuoteNode,
37
- CodeNode,
38
- TableNode,
39
- TableCellNode,
40
- TableRowNode,
41
- HashtagNode,
42
- CodeHighlightNode,
43
- AutoLinkNode,
44
- LinkNode,
45
- OverflowNode,
46
- PollNode,
47
- StickyNode,
48
- ImageNode,
49
- InlineImageNode,
50
- MentionNode,
51
- EmojiNode,
52
- ExcalidrawNode,
53
- EquationNode,
54
- AutocompleteNode,
55
- CounterNode,
56
- KeywordNode,
57
- HorizontalRuleNode,
58
- TweetNode,
59
- YouTubeNode,
60
- FigmaNode,
61
- MarkNode,
62
- CollapsibleContainerNode,
63
- CollapsibleContentNode,
64
- CollapsibleTitleNode,
65
- PageBreakNode,
66
- LayoutContainerNode,
67
- LayoutItemNode,
68
- SpecialTextNode,
69
- DateTimeNode,
70
- ];
71
- 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,50 +0,0 @@
1
- import { addClassNamesToElement } from '@lexical/utils';
2
- import { $applyNodeReplacement, TextNode } from 'lexical';
3
- /** @noInheritDoc */
4
- export class SpecialTextNode extends TextNode {
5
- static getType() {
6
- return 'specialText';
7
- }
8
- static clone(node) {
9
- return new SpecialTextNode(node.__text, node.__key);
10
- }
11
- createDOM(config) {
12
- const dom = document.createElement('span');
13
- addClassNamesToElement(dom, config.theme.specialText);
14
- dom.textContent = this.getTextContent();
15
- return dom;
16
- }
17
- updateDOM(prevNode, dom, config) {
18
- if (prevNode.__text.startsWith('[') && prevNode.__text.endsWith(']')) {
19
- const strippedText = this.__text.substring(1, this.__text.length - 1); // Strip brackets again
20
- dom.textContent = strippedText; // Update the text content
21
- }
22
- addClassNamesToElement(dom, config.theme.specialText);
23
- return false;
24
- }
25
- static importJSON(serializedNode) {
26
- return $createSpecialTextNode().updateFromJSON(serializedNode);
27
- }
28
- isTextEntity() {
29
- return true;
30
- }
31
- canInsertTextAfter() {
32
- return false; // Prevents appending text to this node
33
- }
34
- }
35
- /**
36
- * Creates a SpecialTextNode with the given text.
37
- * @param text - Text content for the SpecialTextNode.
38
- * @returns A new SpecialTextNode instance.
39
- */
40
- export function $createSpecialTextNode(text = '') {
41
- return $applyNodeReplacement(new SpecialTextNode(text));
42
- }
43
- /**
44
- * Checks if a node is a SpecialTextNode.
45
- * @param node - Node to check.
46
- * @returns True if the node is a SpecialTextNode.
47
- */
48
- export function $isSpecialTextNode(node) {
49
- return node instanceof SpecialTextNode;
50
- }
@@ -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;