@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,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;