@datalayer/lexical-loro 0.2.5 → 1.0.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 (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,492 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
3
- import { useLexicalEditable } from '@lexical/react/useLexicalEditable';
4
- import { $computeTableMapSkipCellCheck, $deleteTableColumnAtSelection, $deleteTableRowAtSelection, $getNodeTriplet, $getTableCellNodeFromLexicalNode, $getTableColumnIndexFromTableCellNode, $getTableNodeFromLexicalNodeOrThrow, $getTableRowIndexFromTableCellNode, $insertTableColumnAtSelection, $insertTableRowAtSelection, $isTableCellNode, $isTableSelection, $mergeCells, $unmergeCell, getTableElement, getTableObserverFromTableElement, TableCellHeaderStates, TableCellNode, } from '@lexical/table';
5
- import { mergeRegister } from '@lexical/utils';
6
- import { $getSelection, $isElementNode, $isRangeSelection, $isTextNode, $setSelection, COMMAND_PRIORITY_CRITICAL, getDOMSelection, isDOMNode, SELECTION_CHANGE_COMMAND, } from 'lexical';
7
- import { useCallback, useEffect, useRef, useState } from 'react';
8
- import { createPortal } from 'react-dom';
9
- import useModal from '../../hooks/useModal';
10
- import ColorPicker from '../../ui/ColorPicker';
11
- import DropDown, { DropDownItem } from '../../ui/DropDown';
12
- function computeSelectionCount(selection) {
13
- const selectionShape = selection.getShape();
14
- return {
15
- columns: selectionShape.toX - selectionShape.fromX + 1,
16
- rows: selectionShape.toY - selectionShape.fromY + 1,
17
- };
18
- }
19
- function $canUnmerge() {
20
- const selection = $getSelection();
21
- if (($isRangeSelection(selection) && !selection.isCollapsed()) ||
22
- ($isTableSelection(selection) && !selection.anchor.is(selection.focus)) ||
23
- (!$isRangeSelection(selection) && !$isTableSelection(selection))) {
24
- return false;
25
- }
26
- const [cell] = $getNodeTriplet(selection.anchor);
27
- return cell.__colSpan > 1 || cell.__rowSpan > 1;
28
- }
29
- function $selectLastDescendant(node) {
30
- const lastDescendant = node.getLastDescendant();
31
- if ($isTextNode(lastDescendant)) {
32
- lastDescendant.select();
33
- }
34
- else if ($isElementNode(lastDescendant)) {
35
- lastDescendant.selectEnd();
36
- }
37
- else if (lastDescendant !== null) {
38
- lastDescendant.selectNext();
39
- }
40
- }
41
- function currentCellBackgroundColor(editor) {
42
- return editor.getEditorState().read(() => {
43
- const selection = $getSelection();
44
- if ($isRangeSelection(selection) || $isTableSelection(selection)) {
45
- const [cell] = $getNodeTriplet(selection.anchor);
46
- if ($isTableCellNode(cell)) {
47
- return cell.getBackgroundColor();
48
- }
49
- }
50
- return null;
51
- });
52
- }
53
- function TableActionMenu({ onClose, tableCellNode: _tableCellNode, setIsMenuOpen, contextRef, cellMerge, showColorPickerModal, }) {
54
- const [editor] = useLexicalComposerContext();
55
- const dropDownRef = useRef(null);
56
- const [tableCellNode, updateTableCellNode] = useState(_tableCellNode);
57
- const [selectionCounts, updateSelectionCounts] = useState({
58
- columns: 1,
59
- rows: 1,
60
- });
61
- const [canMergeCells, setCanMergeCells] = useState(false);
62
- const [canUnmergeCell, setCanUnmergeCell] = useState(false);
63
- const [backgroundColor, setBackgroundColor] = useState(() => currentCellBackgroundColor(editor) || '');
64
- useEffect(() => {
65
- return editor.registerMutationListener(TableCellNode, (nodeMutations) => {
66
- const nodeUpdated = nodeMutations.get(tableCellNode.getKey()) === 'updated';
67
- if (nodeUpdated) {
68
- editor.getEditorState().read(() => {
69
- updateTableCellNode(tableCellNode.getLatest());
70
- });
71
- setBackgroundColor(currentCellBackgroundColor(editor) || '');
72
- }
73
- }, { skipInitialization: true });
74
- }, [editor, tableCellNode]);
75
- useEffect(() => {
76
- editor.getEditorState().read(() => {
77
- const selection = $getSelection();
78
- // Merge cells
79
- if ($isTableSelection(selection)) {
80
- const currentSelectionCounts = computeSelectionCount(selection);
81
- updateSelectionCounts(computeSelectionCount(selection));
82
- setCanMergeCells(currentSelectionCounts.columns > 1 || currentSelectionCounts.rows > 1);
83
- }
84
- // Unmerge cell
85
- setCanUnmergeCell($canUnmerge());
86
- });
87
- }, [editor]);
88
- useEffect(() => {
89
- const menuButtonElement = contextRef.current;
90
- const dropDownElement = dropDownRef.current;
91
- const rootElement = editor.getRootElement();
92
- if (menuButtonElement != null &&
93
- dropDownElement != null &&
94
- rootElement != null) {
95
- const rootEleRect = rootElement.getBoundingClientRect();
96
- const menuButtonRect = menuButtonElement.getBoundingClientRect();
97
- dropDownElement.style.opacity = '1';
98
- const dropDownElementRect = dropDownElement.getBoundingClientRect();
99
- const margin = 5;
100
- let leftPosition = menuButtonRect.right + margin;
101
- if (leftPosition + dropDownElementRect.width > window.innerWidth ||
102
- leftPosition + dropDownElementRect.width > rootEleRect.right) {
103
- const position = menuButtonRect.left - dropDownElementRect.width - margin;
104
- leftPosition = (position < 0 ? margin : position) + window.pageXOffset;
105
- }
106
- dropDownElement.style.left = `${leftPosition + window.pageXOffset}px`;
107
- let topPosition = menuButtonRect.top;
108
- if (topPosition + dropDownElementRect.height > window.innerHeight) {
109
- const position = menuButtonRect.bottom - dropDownElementRect.height;
110
- topPosition = position < 0 ? margin : position;
111
- }
112
- dropDownElement.style.top = `${topPosition}px`;
113
- }
114
- }, [contextRef, dropDownRef, editor]);
115
- useEffect(() => {
116
- function handleClickOutside(event) {
117
- if (dropDownRef.current != null &&
118
- contextRef.current != null &&
119
- isDOMNode(event.target) &&
120
- !dropDownRef.current.contains(event.target) &&
121
- !contextRef.current.contains(event.target)) {
122
- setIsMenuOpen(false);
123
- }
124
- }
125
- window.addEventListener('click', handleClickOutside);
126
- return () => window.removeEventListener('click', handleClickOutside);
127
- }, [setIsMenuOpen, contextRef]);
128
- const clearTableSelection = useCallback(() => {
129
- editor.update(() => {
130
- if (tableCellNode.isAttached()) {
131
- const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
132
- const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNode.getKey()));
133
- if (tableElement === null) {
134
- throw new Error('TableActionMenu: Expected to find tableElement in DOM');
135
- }
136
- const tableObserver = getTableObserverFromTableElement(tableElement);
137
- if (tableObserver !== null) {
138
- tableObserver.$clearHighlight();
139
- }
140
- tableNode.markDirty();
141
- updateTableCellNode(tableCellNode.getLatest());
142
- }
143
- $setSelection(null);
144
- });
145
- }, [editor, tableCellNode]);
146
- const mergeTableCellsAtSelection = () => {
147
- editor.update(() => {
148
- const selection = $getSelection();
149
- if (!$isTableSelection(selection)) {
150
- return;
151
- }
152
- const nodes = selection.getNodes();
153
- const tableCells = nodes.filter($isTableCellNode);
154
- const targetCell = $mergeCells(tableCells);
155
- if (targetCell) {
156
- $selectLastDescendant(targetCell);
157
- onClose();
158
- }
159
- });
160
- };
161
- const unmergeTableCellsAtSelection = () => {
162
- editor.update(() => {
163
- $unmergeCell();
164
- });
165
- };
166
- const insertTableRowAtSelection = useCallback((shouldInsertAfter) => {
167
- editor.update(() => {
168
- for (let i = 0; i < selectionCounts.rows; i++) {
169
- $insertTableRowAtSelection(shouldInsertAfter);
170
- }
171
- onClose();
172
- });
173
- }, [editor, onClose, selectionCounts.rows]);
174
- const insertTableColumnAtSelection = useCallback((shouldInsertAfter) => {
175
- editor.update(() => {
176
- for (let i = 0; i < selectionCounts.columns; i++) {
177
- $insertTableColumnAtSelection(shouldInsertAfter);
178
- }
179
- onClose();
180
- });
181
- }, [editor, onClose, selectionCounts.columns]);
182
- const deleteTableRowAtSelection = useCallback(() => {
183
- editor.update(() => {
184
- $deleteTableRowAtSelection();
185
- onClose();
186
- });
187
- }, [editor, onClose]);
188
- const deleteTableAtSelection = useCallback(() => {
189
- editor.update(() => {
190
- const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
191
- tableNode.remove();
192
- clearTableSelection();
193
- onClose();
194
- });
195
- }, [editor, tableCellNode, clearTableSelection, onClose]);
196
- const deleteTableColumnAtSelection = useCallback(() => {
197
- editor.update(() => {
198
- $deleteTableColumnAtSelection();
199
- onClose();
200
- });
201
- }, [editor, onClose]);
202
- const toggleTableRowIsHeader = useCallback(() => {
203
- editor.update(() => {
204
- const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
205
- const tableRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode);
206
- const [gridMap] = $computeTableMapSkipCellCheck(tableNode, null, null);
207
- const rowCells = new Set();
208
- const newStyle = tableCellNode.getHeaderStyles() ^ TableCellHeaderStates.ROW;
209
- for (let col = 0; col < gridMap[tableRowIndex].length; col++) {
210
- const mapCell = gridMap[tableRowIndex][col];
211
- if (!mapCell?.cell) {
212
- continue;
213
- }
214
- if (!rowCells.has(mapCell.cell)) {
215
- rowCells.add(mapCell.cell);
216
- mapCell.cell.setHeaderStyles(newStyle, TableCellHeaderStates.ROW);
217
- }
218
- }
219
- clearTableSelection();
220
- onClose();
221
- });
222
- }, [editor, tableCellNode, clearTableSelection, onClose]);
223
- const toggleTableColumnIsHeader = useCallback(() => {
224
- editor.update(() => {
225
- const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
226
- const tableColumnIndex = $getTableColumnIndexFromTableCellNode(tableCellNode);
227
- const [gridMap] = $computeTableMapSkipCellCheck(tableNode, null, null);
228
- const columnCells = new Set();
229
- const newStyle = tableCellNode.getHeaderStyles() ^ TableCellHeaderStates.COLUMN;
230
- for (let row = 0; row < gridMap.length; row++) {
231
- const mapCell = gridMap[row][tableColumnIndex];
232
- if (!mapCell?.cell) {
233
- continue;
234
- }
235
- if (!columnCells.has(mapCell.cell)) {
236
- columnCells.add(mapCell.cell);
237
- mapCell.cell.setHeaderStyles(newStyle, TableCellHeaderStates.COLUMN);
238
- }
239
- }
240
- clearTableSelection();
241
- onClose();
242
- });
243
- }, [editor, tableCellNode, clearTableSelection, onClose]);
244
- const toggleRowStriping = useCallback(() => {
245
- editor.update(() => {
246
- if (tableCellNode.isAttached()) {
247
- const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
248
- if (tableNode) {
249
- tableNode.setRowStriping(!tableNode.getRowStriping());
250
- }
251
- }
252
- clearTableSelection();
253
- onClose();
254
- });
255
- }, [editor, tableCellNode, clearTableSelection, onClose]);
256
- const toggleFirstRowFreeze = useCallback(() => {
257
- editor.update(() => {
258
- if (tableCellNode.isAttached()) {
259
- const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
260
- if (tableNode) {
261
- tableNode.setFrozenRows(tableNode.getFrozenRows() === 0 ? 1 : 0);
262
- }
263
- }
264
- clearTableSelection();
265
- onClose();
266
- });
267
- }, [editor, tableCellNode, clearTableSelection, onClose]);
268
- const toggleFirstColumnFreeze = useCallback(() => {
269
- editor.update(() => {
270
- if (tableCellNode.isAttached()) {
271
- const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
272
- if (tableNode) {
273
- tableNode.setFrozenColumns(tableNode.getFrozenColumns() === 0 ? 1 : 0);
274
- }
275
- }
276
- clearTableSelection();
277
- onClose();
278
- });
279
- }, [editor, tableCellNode, clearTableSelection, onClose]);
280
- const handleCellBackgroundColor = useCallback((value) => {
281
- editor.update(() => {
282
- const selection = $getSelection();
283
- if ($isRangeSelection(selection) || $isTableSelection(selection)) {
284
- const [cell] = $getNodeTriplet(selection.anchor);
285
- if ($isTableCellNode(cell)) {
286
- cell.setBackgroundColor(value);
287
- }
288
- if ($isTableSelection(selection)) {
289
- const nodes = selection.getNodes();
290
- for (let i = 0; i < nodes.length; i++) {
291
- const node = nodes[i];
292
- if ($isTableCellNode(node)) {
293
- node.setBackgroundColor(value);
294
- }
295
- }
296
- }
297
- }
298
- });
299
- }, [editor]);
300
- const formatVerticalAlign = (value) => {
301
- editor.update(() => {
302
- const selection = $getSelection();
303
- if ($isRangeSelection(selection) || $isTableSelection(selection)) {
304
- const [cell] = $getNodeTriplet(selection.anchor);
305
- if ($isTableCellNode(cell)) {
306
- cell.setVerticalAlign(value);
307
- }
308
- if ($isTableSelection(selection)) {
309
- const nodes = selection.getNodes();
310
- for (let i = 0; i < nodes.length; i++) {
311
- const node = nodes[i];
312
- if ($isTableCellNode(node)) {
313
- node.setVerticalAlign(value);
314
- }
315
- }
316
- }
317
- }
318
- });
319
- };
320
- let mergeCellButton = null;
321
- if (cellMerge) {
322
- if (canMergeCells) {
323
- mergeCellButton = (_jsx("button", { type: "button", className: "item", onClick: () => mergeTableCellsAtSelection(), "data-test-id": "table-merge-cells", children: _jsx("span", { className: "text", children: "Merge cells" }) }));
324
- }
325
- else if (canUnmergeCell) {
326
- mergeCellButton = (_jsx("button", { type: "button", className: "item", onClick: () => unmergeTableCellsAtSelection(), "data-test-id": "table-unmerge-cells", children: _jsx("span", { className: "text", children: "Unmerge cells" }) }));
327
- }
328
- }
329
- return createPortal(
330
- // eslint-disable-next-line jsx-a11y/no-static-element-interactions
331
- _jsxs("div", { className: "dropdown", ref: dropDownRef, onClick: (e) => {
332
- e.stopPropagation();
333
- }, children: [mergeCellButton, _jsx("button", { type: "button", className: "item", onClick: () => showColorPickerModal('Cell background color', () => (_jsx(ColorPicker, { color: backgroundColor, onChange: handleCellBackgroundColor }))), "data-test-id": "table-background-color", children: _jsx("span", { className: "text", children: "Background color" }) }), _jsx("button", { type: "button", className: "item", onClick: () => toggleRowStriping(), "data-test-id": "table-row-striping", children: _jsx("span", { className: "text", children: "Toggle Row Striping" }) }), _jsxs(DropDown, { buttonLabel: "Vertical Align", buttonClassName: "item", buttonAriaLabel: "Formatting options for vertical alignment", children: [_jsx(DropDownItem, { onClick: () => {
334
- formatVerticalAlign('top');
335
- }, className: "item wide", children: _jsxs("div", { className: "icon-text-container", children: [_jsx("i", { className: "icon vertical-top" }), _jsx("span", { className: "text", children: "Top Align" })] }) }), _jsx(DropDownItem, { onClick: () => {
336
- formatVerticalAlign('middle');
337
- }, className: "item wide", children: _jsxs("div", { className: "icon-text-container", children: [_jsx("i", { className: "icon vertical-middle" }), _jsx("span", { className: "text", children: "Middle Align" })] }) }), _jsx(DropDownItem, { onClick: () => {
338
- formatVerticalAlign('bottom');
339
- }, className: "item wide", children: _jsxs("div", { className: "icon-text-container", children: [_jsx("i", { className: "icon vertical-bottom" }), _jsx("span", { className: "text", children: "Bottom Align" })] }) })] }), _jsx("button", { type: "button", className: "item", onClick: () => toggleFirstRowFreeze(), "data-test-id": "table-freeze-first-row", children: _jsx("span", { className: "text", children: "Toggle First Row Freeze" }) }), _jsx("button", { type: "button", className: "item", onClick: () => toggleFirstColumnFreeze(), "data-test-id": "table-freeze-first-column", children: _jsx("span", { className: "text", children: "Toggle First Column Freeze" }) }), _jsx("hr", {}), _jsx("button", { type: "button", className: "item", onClick: () => insertTableRowAtSelection(false), "data-test-id": "table-insert-row-above", children: _jsxs("span", { className: "text", children: ["Insert", ' ', selectionCounts.rows === 1 ? 'row' : `${selectionCounts.rows} rows`, ' ', "above"] }) }), _jsx("button", { type: "button", className: "item", onClick: () => insertTableRowAtSelection(true), "data-test-id": "table-insert-row-below", children: _jsxs("span", { className: "text", children: ["Insert", ' ', selectionCounts.rows === 1 ? 'row' : `${selectionCounts.rows} rows`, ' ', "below"] }) }), _jsx("hr", {}), _jsx("button", { type: "button", className: "item", onClick: () => insertTableColumnAtSelection(false), "data-test-id": "table-insert-column-before", children: _jsxs("span", { className: "text", children: ["Insert", ' ', selectionCounts.columns === 1
340
- ? 'column'
341
- : `${selectionCounts.columns} columns`, ' ', "left"] }) }), _jsx("button", { type: "button", className: "item", onClick: () => insertTableColumnAtSelection(true), "data-test-id": "table-insert-column-after", children: _jsxs("span", { className: "text", children: ["Insert", ' ', selectionCounts.columns === 1
342
- ? 'column'
343
- : `${selectionCounts.columns} columns`, ' ', "right"] }) }), _jsx("hr", {}), _jsx("button", { type: "button", className: "item", onClick: () => deleteTableColumnAtSelection(), "data-test-id": "table-delete-columns", children: _jsx("span", { className: "text", children: "Delete column" }) }), _jsx("button", { type: "button", className: "item", onClick: () => deleteTableRowAtSelection(), "data-test-id": "table-delete-rows", children: _jsx("span", { className: "text", children: "Delete row" }) }), _jsx("button", { type: "button", className: "item", onClick: () => deleteTableAtSelection(), "data-test-id": "table-delete", children: _jsx("span", { className: "text", children: "Delete table" }) }), _jsx("hr", {}), _jsx("button", { type: "button", className: "item", onClick: () => toggleTableRowIsHeader(), "data-test-id": "table-row-header", children: _jsxs("span", { className: "text", children: [(tableCellNode.__headerState & TableCellHeaderStates.ROW) ===
344
- TableCellHeaderStates.ROW
345
- ? 'Remove'
346
- : 'Add', ' ', "row header"] }) }), _jsx("button", { type: "button", className: "item", onClick: () => toggleTableColumnIsHeader(), "data-test-id": "table-column-header", children: _jsxs("span", { className: "text", children: [(tableCellNode.__headerState & TableCellHeaderStates.COLUMN) ===
347
- TableCellHeaderStates.COLUMN
348
- ? 'Remove'
349
- : 'Add', ' ', "column header"] }) })] }), document.body);
350
- }
351
- function TableCellActionMenuContainer({ anchorElem, cellMerge, }) {
352
- const [editor] = useLexicalComposerContext();
353
- const menuButtonRef = useRef(null);
354
- const menuRootRef = useRef(null);
355
- const [isMenuOpen, setIsMenuOpen] = useState(false);
356
- const [tableCellNode, setTableMenuCellNode] = useState(null);
357
- const [colorPickerModal, showColorPickerModal] = useModal();
358
- const checkTableCellOverflow = useCallback((tableCellParentNodeDOM) => {
359
- const scrollableContainer = tableCellParentNodeDOM.closest('.PlaygroundEditorTheme__tableScrollableWrapper');
360
- if (scrollableContainer) {
361
- const containerRect = scrollableContainer.getBoundingClientRect();
362
- const cellRect = tableCellParentNodeDOM.getBoundingClientRect();
363
- // Calculate where the action button would be positioned (5px from right edge of cell)
364
- // Also account for the button width and table cell padding (8px)
365
- const actionButtonRight = cellRect.right - 5;
366
- const actionButtonLeft = actionButtonRight - 28; // 20px width + 8px padding
367
- // Only hide if the action button would overflow the container
368
- if (actionButtonRight > containerRect.right ||
369
- actionButtonLeft < containerRect.left) {
370
- return true;
371
- }
372
- }
373
- return false;
374
- }, []);
375
- const $moveMenu = useCallback(() => {
376
- const menu = menuButtonRef.current;
377
- const selection = $getSelection();
378
- const nativeSelection = getDOMSelection(editor._window);
379
- const activeElement = document.activeElement;
380
- function disable() {
381
- if (menu) {
382
- menu.classList.remove('table-cell-action-button-container--active');
383
- menu.classList.add('table-cell-action-button-container--inactive');
384
- }
385
- setTableMenuCellNode(null);
386
- }
387
- if (selection == null || menu == null) {
388
- return disable();
389
- }
390
- const rootElement = editor.getRootElement();
391
- let tableObserver = null;
392
- let tableCellParentNodeDOM = null;
393
- if ($isRangeSelection(selection) &&
394
- rootElement !== null &&
395
- nativeSelection !== null &&
396
- rootElement.contains(nativeSelection.anchorNode)) {
397
- const tableCellNodeFromSelection = $getTableCellNodeFromLexicalNode(selection.anchor.getNode());
398
- if (tableCellNodeFromSelection == null) {
399
- return disable();
400
- }
401
- tableCellParentNodeDOM = editor.getElementByKey(tableCellNodeFromSelection.getKey());
402
- if (tableCellParentNodeDOM == null ||
403
- !tableCellNodeFromSelection.isAttached()) {
404
- return disable();
405
- }
406
- if (checkTableCellOverflow(tableCellParentNodeDOM)) {
407
- return disable();
408
- }
409
- const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNodeFromSelection);
410
- const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNode.getKey()));
411
- if (tableElement === null) {
412
- throw new Error('TableActionMenu: Expected to find tableElement in DOM');
413
- }
414
- tableObserver = getTableObserverFromTableElement(tableElement);
415
- setTableMenuCellNode(tableCellNodeFromSelection);
416
- }
417
- else if ($isTableSelection(selection)) {
418
- const anchorNode = $getTableCellNodeFromLexicalNode(selection.anchor.getNode());
419
- if (!$isTableCellNode(anchorNode)) {
420
- throw new Error('TableSelection anchorNode must be a TableCellNode');
421
- }
422
- const tableNode = $getTableNodeFromLexicalNodeOrThrow(anchorNode);
423
- const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNode.getKey()));
424
- if (tableElement === null) {
425
- throw new Error('TableActionMenu: Expected to find tableElement in DOM');
426
- }
427
- tableObserver = getTableObserverFromTableElement(tableElement);
428
- tableCellParentNodeDOM = editor.getElementByKey(anchorNode.getKey());
429
- if (tableCellParentNodeDOM === null) {
430
- return disable();
431
- }
432
- if (checkTableCellOverflow(tableCellParentNodeDOM)) {
433
- return disable();
434
- }
435
- }
436
- else if (!activeElement) {
437
- return disable();
438
- }
439
- if (tableObserver === null || tableCellParentNodeDOM === null) {
440
- return disable();
441
- }
442
- const enabled = !tableObserver || !tableObserver.isSelecting;
443
- menu.classList.toggle('table-cell-action-button-container--active', enabled);
444
- menu.classList.toggle('table-cell-action-button-container--inactive', !enabled);
445
- if (enabled) {
446
- const tableCellRect = tableCellParentNodeDOM.getBoundingClientRect();
447
- const anchorRect = anchorElem.getBoundingClientRect();
448
- const top = tableCellRect.top - anchorRect.top;
449
- const left = tableCellRect.right - anchorRect.left;
450
- menu.style.transform = `translate(${left}px, ${top}px)`;
451
- }
452
- }, [editor, anchorElem, checkTableCellOverflow]);
453
- useEffect(() => {
454
- // We call the $moveMenu callback every time the selection changes,
455
- // once up front, and once after each pointerUp
456
- let timeoutId = undefined;
457
- const callback = () => {
458
- timeoutId = undefined;
459
- editor.getEditorState().read($moveMenu);
460
- };
461
- const delayedCallback = () => {
462
- if (timeoutId === undefined) {
463
- timeoutId = setTimeout(callback, 0);
464
- }
465
- return false;
466
- };
467
- return mergeRegister(editor.registerUpdateListener(delayedCallback), editor.registerCommand(SELECTION_CHANGE_COMMAND, delayedCallback, COMMAND_PRIORITY_CRITICAL), editor.registerRootListener((rootElement, prevRootElement) => {
468
- if (prevRootElement) {
469
- prevRootElement.removeEventListener('pointerup', delayedCallback);
470
- }
471
- if (rootElement) {
472
- rootElement.addEventListener('pointerup', delayedCallback);
473
- delayedCallback();
474
- }
475
- }), () => clearTimeout(timeoutId));
476
- });
477
- const prevTableCellDOM = useRef(tableCellNode);
478
- useEffect(() => {
479
- if (prevTableCellDOM.current !== tableCellNode) {
480
- setIsMenuOpen(false);
481
- }
482
- prevTableCellDOM.current = tableCellNode;
483
- }, [prevTableCellDOM, tableCellNode]);
484
- return (_jsx("div", { className: "table-cell-action-button-container", ref: menuButtonRef, children: tableCellNode != null && (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", className: "table-cell-action-button chevron-down", onClick: (e) => {
485
- e.stopPropagation();
486
- setIsMenuOpen(!isMenuOpen);
487
- }, ref: menuRootRef, children: _jsx("i", { className: "chevron-down" }) }), colorPickerModal, isMenuOpen && (_jsx(TableActionMenu, { contextRef: menuRootRef, setIsMenuOpen: setIsMenuOpen, onClose: () => setIsMenuOpen(false), tableCellNode: tableCellNode, cellMerge: cellMerge, showColorPickerModal: showColorPickerModal }))] })) }));
488
- }
489
- export default function TableActionMenuPlugin({ anchorElem = document.body, cellMerge = false, }) {
490
- const isEditable = useLexicalEditable();
491
- return createPortal(isEditable ? (_jsx(TableCellActionMenuContainer, { anchorElem: anchorElem, cellMerge: cellMerge })) : null, anchorElem);
492
- }
@@ -1,3 +0,0 @@
1
- import './index.css';
2
- import { ReactPortal } from 'react';
3
- export default function TableCellResizerPlugin(): null | ReactPortal;