@datalayer/lexical-loro 0.2.5 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. package/package.json +1 -1
  2. package/lib/App.d.ts +0 -2
  3. package/lib/App.js +0 -141
  4. package/lib/Editor.d.ts +0 -2
  5. package/lib/Editor.js +0 -115
  6. package/lib/Settings.d.ts +0 -2
  7. package/lib/Settings.js +0 -57
  8. package/lib/appSettings.d.ts +0 -36
  9. package/lib/appSettings.js +0 -48
  10. package/lib/collab/loro/Bindings.d.ts +0 -41
  11. package/lib/collab/loro/Bindings.js +0 -99
  12. package/lib/collab/loro/Debug.d.ts +0 -33
  13. package/lib/collab/loro/Debug.js +0 -452
  14. package/lib/collab/loro/LexicalCollaborationContext.d.ts +0 -19
  15. package/lib/collab/loro/LexicalCollaborationContext.js +0 -52
  16. package/lib/collab/loro/LexicalCollaborationPlugin.d.ts +0 -24
  17. package/lib/collab/loro/LexicalCollaborationPlugin.js +0 -83
  18. package/lib/collab/loro/State.d.ts +0 -53
  19. package/lib/collab/loro/State.js +0 -94
  20. package/lib/collab/loro/components/LoroCollaborationUI.d.ts +0 -13
  21. package/lib/collab/loro/components/LoroCollaborationUI.js +0 -9
  22. package/lib/collab/loro/components/LoroCollaborators.d.ts +0 -8
  23. package/lib/collab/loro/components/LoroCollaborators.js +0 -102
  24. package/lib/collab/loro/components/index.d.ts +0 -2
  25. package/lib/collab/loro/components/index.js +0 -6
  26. package/lib/collab/loro/index.d.ts +0 -6
  27. package/lib/collab/loro/index.js +0 -10
  28. package/lib/collab/loro/integrators/BaseIntegrator.d.ts +0 -14
  29. package/lib/collab/loro/integrators/BaseIntegrator.js +0 -5
  30. package/lib/collab/loro/integrators/CounterIntegrator.d.ts +0 -23
  31. package/lib/collab/loro/integrators/CounterIntegrator.js +0 -44
  32. package/lib/collab/loro/integrators/ListIntegrator.d.ts +0 -23
  33. package/lib/collab/loro/integrators/ListIntegrator.js +0 -53
  34. package/lib/collab/loro/integrators/MapIntegrator.d.ts +0 -24
  35. package/lib/collab/loro/integrators/MapIntegrator.js +0 -235
  36. package/lib/collab/loro/integrators/TextIntegrator.d.ts +0 -25
  37. package/lib/collab/loro/integrators/TextIntegrator.js +0 -55
  38. package/lib/collab/loro/integrators/TreeIntegrator.d.ts +0 -36
  39. package/lib/collab/loro/integrators/TreeIntegrator.js +0 -251
  40. package/lib/collab/loro/nodes/NodeFactory.d.ts +0 -15
  41. package/lib/collab/loro/nodes/NodeFactory.js +0 -101
  42. package/lib/collab/loro/nodes/NodesMapper.d.ts +0 -120
  43. package/lib/collab/loro/nodes/NodesMapper.js +0 -277
  44. package/lib/collab/loro/propagators/DecoratorNodePropagator.d.ts +0 -60
  45. package/lib/collab/loro/propagators/DecoratorNodePropagator.js +0 -306
  46. package/lib/collab/loro/propagators/ElementNodePropagator.d.ts +0 -62
  47. package/lib/collab/loro/propagators/ElementNodePropagator.js +0 -326
  48. package/lib/collab/loro/propagators/LineBreakNodePropagator.d.ts +0 -57
  49. package/lib/collab/loro/propagators/LineBreakNodePropagator.js +0 -200
  50. package/lib/collab/loro/propagators/RootNodePropagator.d.ts +0 -55
  51. package/lib/collab/loro/propagators/RootNodePropagator.js +0 -174
  52. package/lib/collab/loro/propagators/TextNodePropagator.d.ts +0 -60
  53. package/lib/collab/loro/propagators/TextNodePropagator.js +0 -440
  54. package/lib/collab/loro/propagators/index.d.ts +0 -49
  55. package/lib/collab/loro/propagators/index.js +0 -30
  56. package/lib/collab/loro/provider/websocket.d.ts +0 -116
  57. package/lib/collab/loro/provider/websocket.js +0 -911
  58. package/lib/collab/loro/servers/index.d.ts +0 -0
  59. package/lib/collab/loro/servers/index.js +0 -4
  60. package/lib/collab/loro/servers/ws/callback.d.ts +0 -5
  61. package/lib/collab/loro/servers/ws/callback.js +0 -89
  62. package/lib/collab/loro/servers/ws/server.d.ts +0 -2
  63. package/lib/collab/loro/servers/ws/server.js +0 -29
  64. package/lib/collab/loro/servers/ws/utils.d.ts +0 -40
  65. package/lib/collab/loro/servers/ws/utils.js +0 -517
  66. package/lib/collab/loro/sync/SyncCursors.d.ts +0 -32
  67. package/lib/collab/loro/sync/SyncCursors.js +0 -475
  68. package/lib/collab/loro/sync/SyncLexicalToLoro.d.ts +0 -4
  69. package/lib/collab/loro/sync/SyncLexicalToLoro.js +0 -113
  70. package/lib/collab/loro/sync/SyncLoroToLexical.d.ts +0 -5
  71. package/lib/collab/loro/sync/SyncLoroToLexical.js +0 -100
  72. package/lib/collab/loro/types/LexicalNodeData.d.ts +0 -32
  73. package/lib/collab/loro/types/LexicalNodeData.js +0 -75
  74. package/lib/collab/loro/useCollaboration.d.ts +0 -12
  75. package/lib/collab/loro/useCollaboration.js +0 -260
  76. package/lib/collab/loro/utils/InitialContent.d.ts +0 -64
  77. package/lib/collab/loro/utils/InitialContent.js +0 -113
  78. package/lib/collab/loro/utils/LexicalToLoro.d.ts +0 -18
  79. package/lib/collab/loro/utils/LexicalToLoro.js +0 -100
  80. package/lib/collab/loro/utils/Utils.d.ts +0 -44
  81. package/lib/collab/loro/utils/Utils.js +0 -157
  82. package/lib/collab/loro/wsProvider.d.ts +0 -8
  83. package/lib/collab/loro/wsProvider.js +0 -35
  84. package/lib/collab/utils/invariant.d.ts +0 -1
  85. package/lib/collab/utils/invariant.js +0 -15
  86. package/lib/collab/utils/simpleDiffWithCursor.d.ts +0 -5
  87. package/lib/collab/utils/simpleDiffWithCursor.js +0 -35
  88. package/lib/collab/yjs/Bindings.d.ts +0 -23
  89. package/lib/collab/yjs/Bindings.js +0 -26
  90. package/lib/collab/yjs/Debug.d.ts +0 -23
  91. package/lib/collab/yjs/Debug.js +0 -213
  92. package/lib/collab/yjs/LexicalCollaborationContext.d.ts +0 -10
  93. package/lib/collab/yjs/LexicalCollaborationContext.js +0 -37
  94. package/lib/collab/yjs/LexicalCollaborationPlugin.d.ts +0 -21
  95. package/lib/collab/yjs/LexicalCollaborationPlugin.js +0 -63
  96. package/lib/collab/yjs/State.d.ts +0 -51
  97. package/lib/collab/yjs/State.js +0 -35
  98. package/lib/collab/yjs/nodes/AnyCollabNode.d.ts +0 -5
  99. package/lib/collab/yjs/nodes/AnyCollabNode.js +0 -1
  100. package/lib/collab/yjs/nodes/CollabDecoratorNode.d.ts +0 -22
  101. package/lib/collab/yjs/nodes/CollabDecoratorNode.js +0 -64
  102. package/lib/collab/yjs/nodes/CollabElementNode.d.ts +0 -40
  103. package/lib/collab/yjs/nodes/CollabElementNode.js +0 -462
  104. package/lib/collab/yjs/nodes/CollabLineBreakNode.d.ts +0 -19
  105. package/lib/collab/yjs/nodes/CollabLineBreakNode.js +0 -44
  106. package/lib/collab/yjs/nodes/CollabTextNode.d.ts +0 -25
  107. package/lib/collab/yjs/nodes/CollabTextNode.js +0 -103
  108. package/lib/collab/yjs/provider/websocket.d.ts +0 -88
  109. package/lib/collab/yjs/provider/websocket.js +0 -415
  110. package/lib/collab/yjs/servers/index.d.ts +0 -0
  111. package/lib/collab/yjs/servers/index.js +0 -0
  112. package/lib/collab/yjs/servers/ws/callback.d.ts +0 -5
  113. package/lib/collab/yjs/servers/ws/callback.js +0 -72
  114. package/lib/collab/yjs/servers/ws/server.d.ts +0 -2
  115. package/lib/collab/yjs/servers/ws/server.js +0 -25
  116. package/lib/collab/yjs/servers/ws/utils.d.ts +0 -49
  117. package/lib/collab/yjs/servers/ws/utils.js +0 -284
  118. package/lib/collab/yjs/sync/SyncCursors.d.ts +0 -39
  119. package/lib/collab/yjs/sync/SyncCursors.js +0 -351
  120. package/lib/collab/yjs/sync/SyncEditorStates.d.ts +0 -10
  121. package/lib/collab/yjs/sync/SyncEditorStates.js +0 -200
  122. package/lib/collab/yjs/useCollaboration.d.ts +0 -12
  123. package/lib/collab/yjs/useCollaboration.js +0 -255
  124. package/lib/collab/yjs/utils/Utils.d.ts +0 -25
  125. package/lib/collab/yjs/utils/Utils.js +0 -402
  126. package/lib/collab/yjs/wsProvider.d.ts +0 -3
  127. package/lib/collab/yjs/wsProvider.js +0 -21
  128. package/lib/commenting/index.d.ts +0 -41
  129. package/lib/commenting/index.js +0 -328
  130. package/lib/context/FlashMessageContext.d.ts +0 -7
  131. package/lib/context/FlashMessageContext.js +0 -24
  132. package/lib/context/SettingsContext.d.ts +0 -12
  133. package/lib/context/SettingsContext.js +0 -38
  134. package/lib/context/SharedHistoryContext.d.ts +0 -11
  135. package/lib/context/SharedHistoryContext.js +0 -11
  136. package/lib/context/ToolbarContext.d.ts +0 -65
  137. package/lib/context/ToolbarContext.js +0 -84
  138. package/lib/demo.d.ts +0 -12
  139. package/lib/demo.js +0 -45
  140. package/lib/hooks/useFlashMessage.d.ts +0 -2
  141. package/lib/hooks/useFlashMessage.js +0 -8
  142. package/lib/hooks/useModal.d.ts +0 -5
  143. package/lib/hooks/useModal.js +0 -26
  144. package/lib/hooks/useReport.d.ts +0 -1
  145. package/lib/hooks/useReport.js +0 -50
  146. package/lib/index.d.ts +0 -1
  147. package/lib/index.js +0 -5
  148. package/lib/nodes/AutocompleteNode.d.ts +0 -27
  149. package/lib/nodes/AutocompleteNode.js +0 -60
  150. package/lib/nodes/CounterComponent.d.ts +0 -6
  151. package/lib/nodes/CounterComponent.js +0 -137
  152. package/lib/nodes/CounterNode.d.ts +0 -23
  153. package/lib/nodes/CounterNode.js +0 -47
  154. package/lib/nodes/DateTimeNode/DateTimeComponent.d.ts +0 -8
  155. package/lib/nodes/DateTimeNode/DateTimeComponent.js +0 -119
  156. package/lib/nodes/DateTimeNode/DateTimeNode.d.ts +0 -27
  157. package/lib/nodes/DateTimeNode/DateTimeNode.js +0 -82
  158. package/lib/nodes/EmojiNode.d.ts +0 -18
  159. package/lib/nodes/EmojiNode.js +0 -54
  160. package/lib/nodes/EquationComponent.d.ts +0 -9
  161. package/lib/nodes/EquationComponent.js +0 -75
  162. package/lib/nodes/EquationNode.d.ts +0 -26
  163. package/lib/nodes/EquationNode.js +0 -109
  164. package/lib/nodes/ExcalidrawNode/ExcalidrawComponent.d.ts +0 -8
  165. package/lib/nodes/ExcalidrawNode/ExcalidrawComponent.js +0 -110
  166. package/lib/nodes/ExcalidrawNode/ExcalidrawImage.d.ts +0 -50
  167. package/lib/nodes/ExcalidrawNode/ExcalidrawImage.js +0 -55
  168. package/lib/nodes/ExcalidrawNode/index.d.ts +0 -32
  169. package/lib/nodes/ExcalidrawNode/index.js +0 -117
  170. package/lib/nodes/FigmaNode.d.ts +0 -20
  171. package/lib/nodes/FigmaNode.js +0 -52
  172. package/lib/nodes/ImageComponent.d.ts +0 -16
  173. package/lib/nodes/ImageComponent.js +0 -272
  174. package/lib/nodes/ImageNode.d.ts +0 -50
  175. package/lib/nodes/ImageNode.js +0 -151
  176. package/lib/nodes/InlineImageNode/InlineImageComponent.d.ts +0 -26
  177. package/lib/nodes/InlineImageNode/InlineImageComponent.js +0 -161
  178. package/lib/nodes/InlineImageNode/InlineImageNode.d.ts +0 -59
  179. package/lib/nodes/InlineImageNode/InlineImageNode.js +0 -162
  180. package/lib/nodes/KeywordNode.d.ts +0 -14
  181. package/lib/nodes/KeywordNode.js +0 -37
  182. package/lib/nodes/LayoutContainerNode.d.ts +0 -24
  183. package/lib/nodes/LayoutContainerNode.js +0 -95
  184. package/lib/nodes/LayoutItemNode.d.ts +0 -16
  185. package/lib/nodes/LayoutItemNode.js +0 -69
  186. package/lib/nodes/MentionNode.d.ts +0 -20
  187. package/lib/nodes/MentionNode.js +0 -85
  188. package/lib/nodes/PageBreakNode/index.d.ts +0 -17
  189. package/lib/nodes/PageBreakNode/index.js +0 -83
  190. package/lib/nodes/PlaygroundNodes.d.ts +0 -3
  191. package/lib/nodes/PlaygroundNodes.js +0 -75
  192. package/lib/nodes/PollComponent.d.ts +0 -9
  193. package/lib/nodes/PollComponent.js +0 -85
  194. package/lib/nodes/PollNode.d.ts +0 -43
  195. package/lib/nodes/PollNode.js +0 -153
  196. package/lib/nodes/SpecialTextNode.d.ts +0 -24
  197. package/lib/nodes/SpecialTextNode.js +0 -54
  198. package/lib/nodes/StickyComponent.d.ts +0 -10
  199. package/lib/nodes/StickyComponent.js +0 -162
  200. package/lib/nodes/StickyNode.d.ts +0 -31
  201. package/lib/nodes/StickyNode.js +0 -76
  202. package/lib/nodes/TweetNode.d.ts +0 -21
  203. package/lib/nodes/TweetNode.js +0 -119
  204. package/lib/nodes/YouTubeNode.d.ts +0 -22
  205. package/lib/nodes/YouTubeNode.js +0 -84
  206. package/lib/plugins/ActionsPlugin/index.d.ts +0 -5
  207. package/lib/plugins/ActionsPlugin/index.js +0 -168
  208. package/lib/plugins/AutoEmbedPlugin/index.d.ts +0 -19
  209. package/lib/plugins/AutoEmbedPlugin/index.js +0 -158
  210. package/lib/plugins/AutoLinkPlugin/index.d.ts +0 -2
  211. package/lib/plugins/AutoLinkPlugin/index.js +0 -15
  212. package/lib/plugins/AutocompletePlugin/index.d.ts +0 -10
  213. package/lib/plugins/AutocompletePlugin/index.js +0 -2477
  214. package/lib/plugins/CodeActionMenuPlugin/components/CopyButton/index.d.ts +0 -7
  215. package/lib/plugins/CodeActionMenuPlugin/components/CopyButton/index.js +0 -46
  216. package/lib/plugins/CodeActionMenuPlugin/components/PrettierButton/index.d.ts +0 -17
  217. package/lib/plugins/CodeActionMenuPlugin/components/PrettierButton/index.js +0 -115
  218. package/lib/plugins/CodeActionMenuPlugin/index.d.ts +0 -5
  219. package/lib/plugins/CodeActionMenuPlugin/index.js +0 -104
  220. package/lib/plugins/CodeActionMenuPlugin/utils.d.ts +0 -1
  221. package/lib/plugins/CodeActionMenuPlugin/utils.js +0 -22
  222. package/lib/plugins/CodeHighlightPrismPlugin/index.d.ts +0 -2
  223. package/lib/plugins/CodeHighlightPrismPlugin/index.js +0 -14
  224. package/lib/plugins/CodeHighlightShikiPlugin/index.d.ts +0 -2
  225. package/lib/plugins/CodeHighlightShikiPlugin/index.js +0 -14
  226. package/lib/plugins/CollapsiblePlugin/CollapsibleContainerNode.d.ts +0 -25
  227. package/lib/plugins/CollapsiblePlugin/CollapsibleContainerNode.js +0 -135
  228. package/lib/plugins/CollapsiblePlugin/CollapsibleContentNode.d.ts +0 -16
  229. package/lib/plugins/CollapsiblePlugin/CollapsibleContentNode.js +0 -83
  230. package/lib/plugins/CollapsiblePlugin/CollapsibleTitleNode.d.ts +0 -16
  231. package/lib/plugins/CollapsiblePlugin/CollapsibleTitleNode.js +0 -85
  232. package/lib/plugins/CollapsiblePlugin/CollapsibleUtils.d.ts +0 -2
  233. package/lib/plugins/CollapsiblePlugin/CollapsibleUtils.js +0 -12
  234. package/lib/plugins/CollapsiblePlugin/index.d.ts +0 -3
  235. package/lib/plugins/CollapsiblePlugin/index.js +0 -132
  236. package/lib/plugins/CommentPlugin/index.d.ts +0 -9
  237. package/lib/plugins/CommentPlugin/index.js +0 -460
  238. package/lib/plugins/ComponentPickerPlugin/index.d.ts +0 -2
  239. package/lib/plugins/ComponentPickerPlugin/index.js +0 -276
  240. package/lib/plugins/ContextMenuPlugin/index.d.ts +0 -2
  241. package/lib/plugins/ContextMenuPlugin/index.js +0 -112
  242. package/lib/plugins/CounterPlugin/index.d.ts +0 -3
  243. package/lib/plugins/CounterPlugin/index.js +0 -24
  244. package/lib/plugins/DateTimePlugin/index.d.ts +0 -8
  245. package/lib/plugins/DateTimePlugin/index.js +0 -28
  246. package/lib/plugins/DebugPlugin/index.d.ts +0 -3
  247. package/lib/plugins/DebugPlugin/index.js +0 -219
  248. package/lib/plugins/DocsPlugin/index.d.ts +0 -2
  249. package/lib/plugins/DocsPlugin/index.js +0 -4
  250. package/lib/plugins/DragDropPastePlugin/index.d.ts +0 -1
  251. package/lib/plugins/DragDropPastePlugin/index.js +0 -37
  252. package/lib/plugins/DraggableBlockPlugin/index.d.ts +0 -12
  253. package/lib/plugins/DraggableBlockPlugin/index.js +0 -36
  254. package/lib/plugins/EmojiPickerPlugin/index.d.ts +0 -1
  255. package/lib/plugins/EmojiPickerPlugin/index.js +0 -84
  256. package/lib/plugins/EmojisPlugin/index.d.ts +0 -2
  257. package/lib/plugins/EmojisPlugin/index.js +0 -56
  258. package/lib/plugins/EquationsPlugin/index.d.ts +0 -14
  259. package/lib/plugins/EquationsPlugin/index.js +0 -34
  260. package/lib/plugins/ExcalidrawPlugin/index.d.ts +0 -5
  261. package/lib/plugins/ExcalidrawPlugin/index.js +0 -44
  262. package/lib/plugins/FigmaPlugin/index.d.ts +0 -4
  263. package/lib/plugins/FigmaPlugin/index.js +0 -24
  264. package/lib/plugins/FloatingLinkEditorPlugin/index.d.ts +0 -15
  265. package/lib/plugins/FloatingLinkEditorPlugin/index.js +0 -280
  266. package/lib/plugins/FloatingTextFormatToolbarPlugin/index.d.ts +0 -7
  267. package/lib/plugins/FloatingTextFormatToolbarPlugin/index.js +0 -219
  268. package/lib/plugins/ImagesPlugin/index.d.ts +0 -24
  269. package/lib/plugins/ImagesPlugin/index.js +0 -195
  270. package/lib/plugins/InlineImagePlugin/index.d.ts +0 -17
  271. package/lib/plugins/InlineImagePlugin/index.js +0 -180
  272. package/lib/plugins/KeywordsPlugin/index.d.ts +0 -2
  273. package/lib/plugins/KeywordsPlugin/index.js +0 -35
  274. package/lib/plugins/LayoutPlugin/InsertLayoutDialog.d.ts +0 -6
  275. package/lib/plugins/LayoutPlugin/InsertLayoutDialog.js +0 -21
  276. package/lib/plugins/LayoutPlugin/LayoutPlugin.d.ts +0 -7
  277. package/lib/plugins/LayoutPlugin/LayoutPlugin.js +0 -135
  278. package/lib/plugins/LinkPlugin/index.d.ts +0 -6
  279. package/lib/plugins/LinkPlugin/index.js +0 -11
  280. package/lib/plugins/MarkdownShortcutPlugin/index.d.ts +0 -2
  281. package/lib/plugins/MarkdownShortcutPlugin/index.js +0 -6
  282. package/lib/plugins/MarkdownTransformers/index.d.ts +0 -8
  283. package/lib/plugins/MarkdownTransformers/index.js +0 -238
  284. package/lib/plugins/MaxLengthPlugin/index.d.ts +0 -3
  285. package/lib/plugins/MaxLengthPlugin/index.js +0 -41
  286. package/lib/plugins/MentionsPlugin/index.d.ts +0 -2
  287. package/lib/plugins/MentionsPlugin/index.js +0 -564
  288. package/lib/plugins/PageBreakPlugin/index.d.ts +0 -4
  289. package/lib/plugins/PageBreakPlugin/index.js +0 -31
  290. package/lib/plugins/PasteLogPlugin/index.d.ts +0 -2
  291. package/lib/plugins/PasteLogPlugin/index.js +0 -27
  292. package/lib/plugins/PollPlugin/index.d.ts +0 -8
  293. package/lib/plugins/PollPlugin/index.js +0 -38
  294. package/lib/plugins/ShortcutsPlugin/index.d.ts +0 -6
  295. package/lib/plugins/ShortcutsPlugin/index.js +0 -116
  296. package/lib/plugins/ShortcutsPlugin/shortcuts.d.ts +0 -59
  297. package/lib/plugins/ShortcutsPlugin/shortcuts.js +0 -173
  298. package/lib/plugins/SpecialTextPlugin/index.d.ts +0 -2
  299. package/lib/plugins/SpecialTextPlugin/index.js +0 -50
  300. package/lib/plugins/SpeechToTextPlugin/index.d.ts +0 -5
  301. package/lib/plugins/SpeechToTextPlugin/index.js +0 -86
  302. package/lib/plugins/StickyPlugin/index.d.ts +0 -2
  303. package/lib/plugins/StickyPlugin/index.js +0 -16
  304. package/lib/plugins/TabFocusPlugin/index.d.ts +0 -1
  305. package/lib/plugins/TabFocusPlugin/index.js +0 -38
  306. package/lib/plugins/TableActionMenuPlugin/index.d.ts +0 -5
  307. package/lib/plugins/TableActionMenuPlugin/index.js +0 -492
  308. package/lib/plugins/TableCellResizer/index.d.ts +0 -3
  309. package/lib/plugins/TableCellResizer/index.js +0 -297
  310. package/lib/plugins/TableHoverActionsPlugin/index.d.ts +0 -4
  311. package/lib/plugins/TableHoverActionsPlugin/index.js +0 -188
  312. package/lib/plugins/TableOfContentsPlugin/index.d.ts +0 -2
  313. package/lib/plugins/TableOfContentsPlugin/index.js +0 -116
  314. package/lib/plugins/TablePlugin.d.ts +0 -31
  315. package/lib/plugins/TablePlugin.js +0 -63
  316. package/lib/plugins/TestRecorderPlugin/index.d.ts +0 -3
  317. package/lib/plugins/TestRecorderPlugin/index.js +0 -346
  318. package/lib/plugins/ToolbarPlugin/fontSize.d.ts +0 -9
  319. package/lib/plugins/ToolbarPlugin/fontSize.js +0 -84
  320. package/lib/plugins/ToolbarPlugin/index.d.ts +0 -9
  321. package/lib/plugins/ToolbarPlugin/index.js +0 -500
  322. package/lib/plugins/ToolbarPlugin/utils.d.ts +0 -26
  323. package/lib/plugins/ToolbarPlugin/utils.js +0 -247
  324. package/lib/plugins/TreeViewPlugin/index.d.ts +0 -2
  325. package/lib/plugins/TreeViewPlugin/index.js +0 -7
  326. package/lib/plugins/TwitterPlugin/index.d.ts +0 -4
  327. package/lib/plugins/TwitterPlugin/index.js +0 -24
  328. package/lib/plugins/TypingPerfPlugin/index.d.ts +0 -2
  329. package/lib/plugins/TypingPerfPlugin/index.js +0 -97
  330. package/lib/plugins/YouTubePlugin/index.d.ts +0 -4
  331. package/lib/plugins/YouTubePlugin/index.js +0 -24
  332. package/lib/server/validation.d.ts +0 -1
  333. package/lib/server/validation.js +0 -115
  334. package/lib/setupEnv.d.ts +0 -2
  335. package/lib/setupEnv.js +0 -29
  336. package/lib/themes/CommentEditorTheme.d.ts +0 -4
  337. package/lib/themes/CommentEditorTheme.js +0 -11
  338. package/lib/themes/PlaygroundEditorTheme.d.ts +0 -4
  339. package/lib/themes/PlaygroundEditorTheme.js +0 -124
  340. package/lib/themes/StickyEditorTheme.d.ts +0 -4
  341. package/lib/themes/StickyEditorTheme.js +0 -11
  342. package/lib/tyes.dt.d.ts +0 -12
  343. package/lib/tyes.dt.js +0 -4
  344. package/lib/ui/Button.d.ts +0 -12
  345. package/lib/ui/Button.js +0 -6
  346. package/lib/ui/ColorPicker.d.ts +0 -14
  347. package/lib/ui/ColorPicker.js +0 -219
  348. package/lib/ui/ContentEditable.d.ts +0 -9
  349. package/lib/ui/ContentEditable.js +0 -6
  350. package/lib/ui/Dialog.d.ts +0 -10
  351. package/lib/ui/Dialog.js +0 -8
  352. package/lib/ui/DropDown.d.ts +0 -18
  353. package/lib/ui/DropDown.js +0 -133
  354. package/lib/ui/DropdownColorPicker.d.ts +0 -13
  355. package/lib/ui/DropdownColorPicker.js +0 -6
  356. package/lib/ui/EquationEditor.d.ts +0 -8
  357. package/lib/ui/EquationEditor.js +0 -11
  358. package/lib/ui/ExcalidrawModal.d.ts +0 -42
  359. package/lib/ui/ExcalidrawModal.js +0 -103
  360. package/lib/ui/FileInput.d.ts +0 -10
  361. package/lib/ui/FileInput.js +0 -5
  362. package/lib/ui/FlashMessage.d.ts +0 -7
  363. package/lib/ui/FlashMessage.js +0 -6
  364. package/lib/ui/ImageResizer.d.ts +0 -17
  365. package/lib/ui/ImageResizer.js +0 -171
  366. package/lib/ui/KatexEquationAlterer.d.ts +0 -8
  367. package/lib/ui/KatexEquationAlterer.js +0 -23
  368. package/lib/ui/KatexRenderer.d.ts +0 -6
  369. package/lib/ui/KatexRenderer.js +0 -24
  370. package/lib/ui/Modal.d.ts +0 -9
  371. package/lib/ui/Modal.js +0 -48
  372. package/lib/ui/Select.d.ts +0 -8
  373. package/lib/ui/Select.js +0 -5
  374. package/lib/ui/Switch.d.ts +0 -8
  375. package/lib/ui/Switch.js +0 -6
  376. package/lib/ui/TextInput.d.ts +0 -13
  377. package/lib/ui/TextInput.js +0 -7
  378. package/lib/utils/docSerialization.d.ts +0 -3
  379. package/lib/utils/docSerialization.js +0 -60
  380. package/lib/utils/emoji-list.d.ts +0 -20
  381. package/lib/utils/emoji-list.js +0 -16609
  382. package/lib/utils/getDOMRangeRect.d.ts +0 -8
  383. package/lib/utils/getDOMRangeRect.js +0 -26
  384. package/lib/utils/getSelectedNode.d.ts +0 -2
  385. package/lib/utils/getSelectedNode.js +0 -28
  386. package/lib/utils/getThemeSelector.d.ts +0 -2
  387. package/lib/utils/getThemeSelector.js +0 -14
  388. package/lib/utils/isMobileWidth.d.ts +0 -7
  389. package/lib/utils/isMobileWidth.js +0 -11
  390. package/lib/utils/joinClasses.d.ts +0 -1
  391. package/lib/utils/joinClasses.js +0 -7
  392. package/lib/utils/setFloatingElemPosition.d.ts +0 -1
  393. package/lib/utils/setFloatingElemPosition.js +0 -59
  394. package/lib/utils/setFloatingElemPositionForLinkEditor.d.ts +0 -1
  395. package/lib/utils/setFloatingElemPositionForLinkEditor.js +0 -36
  396. package/lib/utils/swipe.d.ts +0 -4
  397. package/lib/utils/swipe.js +0 -94
  398. package/lib/utils/url.d.ts +0 -2
  399. package/lib/utils/url.js +0 -31
@@ -1,297 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import './index.css';
3
- import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
4
- import { useLexicalEditable } from '@lexical/react/useLexicalEditable';
5
- import { $computeTableMapSkipCellCheck, $getTableNodeFromLexicalNodeOrThrow, $getTableRowIndexFromTableCellNode, $isTableCellNode, $isTableRowNode, getDOMCellFromTarget, getTableElement, TableNode, } from '@lexical/table';
6
- import { calculateZoomLevel, mergeRegister } from '@lexical/utils';
7
- import { $getNearestNodeFromDOMNode, isHTMLElement, SKIP_SCROLL_INTO_VIEW_TAG, } from 'lexical';
8
- import { useCallback, useEffect, useMemo, useRef, useState, } from 'react';
9
- import { createPortal } from 'react-dom';
10
- const MIN_ROW_HEIGHT = 33;
11
- const MIN_COLUMN_WIDTH = 92;
12
- function TableCellResizer({ editor }) {
13
- const targetRef = useRef(null);
14
- const resizerRef = useRef(null);
15
- const tableRectRef = useRef(null);
16
- const [hasTable, setHasTable] = useState(false);
17
- const pointerStartPosRef = useRef(null);
18
- const [pointerCurrentPos, updatePointerCurrentPos] = useState(null);
19
- const [activeCell, updateActiveCell] = useState(null);
20
- const [draggingDirection, updateDraggingDirection] = useState(null);
21
- const resetState = useCallback(() => {
22
- updateActiveCell(null);
23
- targetRef.current = null;
24
- updateDraggingDirection(null);
25
- pointerStartPosRef.current = null;
26
- tableRectRef.current = null;
27
- }, []);
28
- useEffect(() => {
29
- const tableKeys = new Set();
30
- return mergeRegister(editor.registerMutationListener(TableNode, (nodeMutations) => {
31
- for (const [nodeKey, mutation] of nodeMutations) {
32
- if (mutation === 'destroyed') {
33
- tableKeys.delete(nodeKey);
34
- }
35
- else {
36
- tableKeys.add(nodeKey);
37
- }
38
- }
39
- setHasTable(tableKeys.size > 0);
40
- }), editor.registerNodeTransform(TableNode, (tableNode) => {
41
- if (tableNode.getColWidths()) {
42
- return tableNode;
43
- }
44
- const numColumns = tableNode.getColumnCount();
45
- const columnWidth = MIN_COLUMN_WIDTH;
46
- tableNode.setColWidths(Array(numColumns).fill(columnWidth));
47
- return tableNode;
48
- }));
49
- }, [editor]);
50
- useEffect(() => {
51
- if (!hasTable) {
52
- return;
53
- }
54
- const onPointerMove = (event) => {
55
- const target = event.target;
56
- if (!isHTMLElement(target)) {
57
- return;
58
- }
59
- if (draggingDirection) {
60
- event.preventDefault();
61
- event.stopPropagation();
62
- updatePointerCurrentPos({
63
- x: event.clientX,
64
- y: event.clientY,
65
- });
66
- return;
67
- }
68
- if (resizerRef.current && resizerRef.current.contains(target)) {
69
- return;
70
- }
71
- if (targetRef.current !== target) {
72
- targetRef.current = target;
73
- const cell = getDOMCellFromTarget(target);
74
- if (cell && activeCell !== cell) {
75
- editor.getEditorState().read(() => {
76
- const tableCellNode = $getNearestNodeFromDOMNode(cell.elem);
77
- if (!tableCellNode) {
78
- throw new Error('TableCellResizer: Table cell node not found.');
79
- }
80
- const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
81
- const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNode.getKey()));
82
- if (!tableElement) {
83
- throw new Error('TableCellResizer: Table element not found.');
84
- }
85
- targetRef.current = target;
86
- tableRectRef.current = tableElement.getBoundingClientRect();
87
- updateActiveCell(cell);
88
- }, { editor });
89
- }
90
- else if (cell == null) {
91
- resetState();
92
- }
93
- }
94
- };
95
- const onPointerDown = (event) => {
96
- const isTouchEvent = event.pointerType === 'touch';
97
- if (isTouchEvent) {
98
- onPointerMove(event);
99
- }
100
- };
101
- const resizerContainer = resizerRef.current;
102
- resizerContainer?.addEventListener('pointermove', onPointerMove, {
103
- capture: true,
104
- });
105
- const removeRootListener = editor.registerRootListener((rootElement, prevRootElement) => {
106
- prevRootElement?.removeEventListener('pointermove', onPointerMove);
107
- prevRootElement?.removeEventListener('pointerdown', onPointerDown);
108
- rootElement?.addEventListener('pointermove', onPointerMove);
109
- rootElement?.addEventListener('pointerdown', onPointerDown);
110
- });
111
- return () => {
112
- removeRootListener();
113
- resizerContainer?.removeEventListener('pointermove', onPointerMove);
114
- };
115
- }, [activeCell, draggingDirection, editor, resetState, hasTable]);
116
- const isHeightChanging = (direction) => {
117
- if (direction === 'bottom') {
118
- return true;
119
- }
120
- return false;
121
- };
122
- const updateRowHeight = useCallback((heightChange) => {
123
- if (!activeCell) {
124
- throw new Error('TableCellResizer: Expected active cell.');
125
- }
126
- editor.update(() => {
127
- const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem);
128
- if (!$isTableCellNode(tableCellNode)) {
129
- throw new Error('TableCellResizer: Table cell node not found.');
130
- }
131
- const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
132
- const baseRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode);
133
- const tableRows = tableNode.getChildren();
134
- // Determine if this is a full row merge by checking colspan
135
- const isFullRowMerge = tableCellNode.getColSpan() === tableNode.getColumnCount();
136
- // For full row merges, apply to first row. For partial merges, apply to last row
137
- const tableRowIndex = isFullRowMerge
138
- ? baseRowIndex
139
- : baseRowIndex + tableCellNode.getRowSpan() - 1;
140
- if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {
141
- throw new Error('Expected table cell to be inside of table row.');
142
- }
143
- const tableRow = tableRows[tableRowIndex];
144
- if (!$isTableRowNode(tableRow)) {
145
- throw new Error('Expected table row');
146
- }
147
- let height = tableRow.getHeight();
148
- if (height === undefined) {
149
- const rowCells = tableRow.getChildren();
150
- height = Math.min(...rowCells.map((cell) => getCellNodeHeight(cell, editor) ?? Infinity));
151
- }
152
- const newHeight = Math.max(height + heightChange, MIN_ROW_HEIGHT);
153
- tableRow.setHeight(newHeight);
154
- }, { tag: SKIP_SCROLL_INTO_VIEW_TAG });
155
- }, [activeCell, editor]);
156
- const getCellNodeHeight = (cell, activeEditor) => {
157
- const domCellNode = activeEditor.getElementByKey(cell.getKey());
158
- return domCellNode?.clientHeight;
159
- };
160
- const getCellColumnIndex = (tableCellNode, tableMap) => {
161
- for (let row = 0; row < tableMap.length; row++) {
162
- for (let column = 0; column < tableMap[row].length; column++) {
163
- if (tableMap[row][column].cell === tableCellNode) {
164
- return column;
165
- }
166
- }
167
- }
168
- };
169
- const updateColumnWidth = useCallback((widthChange) => {
170
- if (!activeCell) {
171
- throw new Error('TableCellResizer: Expected active cell.');
172
- }
173
- editor.update(() => {
174
- const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem);
175
- if (!$isTableCellNode(tableCellNode)) {
176
- throw new Error('TableCellResizer: Table cell node not found.');
177
- }
178
- const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
179
- const [tableMap] = $computeTableMapSkipCellCheck(tableNode, null, null);
180
- const columnIndex = getCellColumnIndex(tableCellNode, tableMap);
181
- if (columnIndex === undefined) {
182
- throw new Error('TableCellResizer: Table column not found.');
183
- }
184
- const colWidths = tableNode.getColWidths();
185
- if (!colWidths) {
186
- return;
187
- }
188
- const width = colWidths[columnIndex];
189
- if (width === undefined) {
190
- return;
191
- }
192
- const newColWidths = [...colWidths];
193
- const newWidth = Math.max(width + widthChange, MIN_COLUMN_WIDTH);
194
- newColWidths[columnIndex] = newWidth;
195
- tableNode.setColWidths(newColWidths);
196
- }, { tag: SKIP_SCROLL_INTO_VIEW_TAG });
197
- }, [activeCell, editor]);
198
- const pointerUpHandler = useCallback((direction) => {
199
- const handler = (event) => {
200
- event.preventDefault();
201
- event.stopPropagation();
202
- if (!activeCell) {
203
- throw new Error('TableCellResizer: Expected active cell.');
204
- }
205
- if (pointerStartPosRef.current) {
206
- const { x, y } = pointerStartPosRef.current;
207
- if (activeCell === null) {
208
- return;
209
- }
210
- const zoom = calculateZoomLevel(event.target);
211
- if (isHeightChanging(direction)) {
212
- const heightChange = (event.clientY - y) / zoom;
213
- updateRowHeight(heightChange);
214
- }
215
- else {
216
- const widthChange = (event.clientX - x) / zoom;
217
- updateColumnWidth(widthChange);
218
- }
219
- resetState();
220
- document.removeEventListener('pointerup', handler);
221
- }
222
- };
223
- return handler;
224
- }, [activeCell, resetState, updateColumnWidth, updateRowHeight]);
225
- const toggleResize = useCallback((direction) => (event) => {
226
- event.preventDefault();
227
- event.stopPropagation();
228
- if (!activeCell) {
229
- throw new Error('TableCellResizer: Expected active cell.');
230
- }
231
- pointerStartPosRef.current = {
232
- x: event.clientX,
233
- y: event.clientY,
234
- };
235
- updatePointerCurrentPos(pointerStartPosRef.current);
236
- updateDraggingDirection(direction);
237
- document.addEventListener('pointerup', pointerUpHandler(direction));
238
- }, [activeCell, pointerUpHandler]);
239
- const getResizers = useCallback(() => {
240
- if (activeCell) {
241
- const { height, width, top, left } = activeCell.elem.getBoundingClientRect();
242
- const zoom = calculateZoomLevel(activeCell.elem);
243
- const zoneWidth = 16; // Pixel width of the zone where you can drag the edge
244
- const styles = {
245
- bottom: {
246
- backgroundColor: 'none',
247
- cursor: 'row-resize',
248
- height: `${zoneWidth}px`,
249
- left: `${window.scrollX + left}px`,
250
- top: `${window.scrollY + top + height - zoneWidth / 2}px`,
251
- width: `${width}px`,
252
- },
253
- right: {
254
- backgroundColor: 'none',
255
- cursor: 'col-resize',
256
- height: `${height}px`,
257
- left: `${window.scrollX + left + width - zoneWidth / 2}px`,
258
- top: `${window.scrollY + top}px`,
259
- width: `${zoneWidth}px`,
260
- },
261
- };
262
- const tableRect = tableRectRef.current;
263
- if (draggingDirection && pointerCurrentPos && tableRect) {
264
- if (isHeightChanging(draggingDirection)) {
265
- styles[draggingDirection].left = `${window.scrollX + tableRect.left}px`;
266
- styles[draggingDirection].top = `${window.scrollY + pointerCurrentPos.y / zoom}px`;
267
- styles[draggingDirection].height = '3px';
268
- styles[draggingDirection].width = `${tableRect.width}px`;
269
- }
270
- else {
271
- styles[draggingDirection].top = `${window.scrollY + tableRect.top}px`;
272
- styles[draggingDirection].left = `${window.scrollX + pointerCurrentPos.x / zoom}px`;
273
- styles[draggingDirection].width = '3px';
274
- styles[draggingDirection].height = `${tableRect.height}px`;
275
- }
276
- styles[draggingDirection].backgroundColor = '#adf';
277
- styles[draggingDirection].mixBlendMode = 'unset';
278
- }
279
- return styles;
280
- }
281
- return {
282
- bottom: null,
283
- left: null,
284
- right: null,
285
- top: null,
286
- };
287
- }, [activeCell, draggingDirection, pointerCurrentPos]);
288
- const resizerStyles = getResizers();
289
- return (_jsx("div", { ref: resizerRef, children: activeCell != null && (_jsxs(_Fragment, { children: [_jsx("div", { className: "TableCellResizer__resizer TableCellResizer__ui", style: resizerStyles.right || undefined, onPointerDown: toggleResize('right') }), _jsx("div", { className: "TableCellResizer__resizer TableCellResizer__ui", style: resizerStyles.bottom || undefined, onPointerDown: toggleResize('bottom') })] })) }));
290
- }
291
- export default function TableCellResizerPlugin() {
292
- const [editor] = useLexicalComposerContext();
293
- const isEditable = useLexicalEditable();
294
- return useMemo(() => isEditable
295
- ? createPortal(_jsx(TableCellResizer, { editor: editor }), document.body)
296
- : null, [editor, isEditable]);
297
- }
@@ -1,4 +0,0 @@
1
- import * as React from 'react';
2
- export default function TableHoverActionsPlugin({ anchorElem, }: {
3
- anchorElem?: HTMLElement;
4
- }): React.ReactPortal | null;
@@ -1,188 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
3
- import { useLexicalEditable } from '@lexical/react/useLexicalEditable';
4
- import { $getTableAndElementByKey, $getTableColumnIndexFromTableCellNode, $getTableRowIndexFromTableCellNode, $insertTableColumnAtSelection, $insertTableRowAtSelection, $isTableCellNode, $isTableNode, getTableElement, TableNode, } from '@lexical/table';
5
- import { $findMatchingParent, mergeRegister } from '@lexical/utils';
6
- import { $getNearestNodeFromDOMNode, isHTMLElement, } from 'lexical';
7
- import { useEffect, useMemo, useRef, useState } from 'react';
8
- import { createPortal } from 'react-dom';
9
- import { getThemeSelector } from '../../utils/getThemeSelector';
10
- import { useDebounce } from '../CodeActionMenuPlugin/utils';
11
- const BUTTON_WIDTH_PX = 20;
12
- function TableHoverActionsContainer({ anchorElem, }) {
13
- const [editor, { getTheme }] = useLexicalComposerContext();
14
- const isEditable = useLexicalEditable();
15
- const [isShownRow, setShownRow] = useState(false);
16
- const [isShownColumn, setShownColumn] = useState(false);
17
- const [shouldListenMouseMove, setShouldListenMouseMove] = useState(false);
18
- const [position, setPosition] = useState({});
19
- const tableSetRef = useRef(new Set());
20
- const tableCellDOMNodeRef = useRef(null);
21
- const debouncedOnMouseMove = useDebounce((event) => {
22
- const { isOutside, tableDOMNode } = getMouseInfo(event, getTheme);
23
- if (isOutside) {
24
- setShownRow(false);
25
- setShownColumn(false);
26
- return;
27
- }
28
- if (!tableDOMNode) {
29
- return;
30
- }
31
- tableCellDOMNodeRef.current = tableDOMNode;
32
- let hoveredRowNode = null;
33
- let hoveredColumnNode = null;
34
- let tableDOMElement = null;
35
- editor.getEditorState().read(() => {
36
- const maybeTableCell = $getNearestNodeFromDOMNode(tableDOMNode);
37
- if ($isTableCellNode(maybeTableCell)) {
38
- const table = $findMatchingParent(maybeTableCell, (node) => $isTableNode(node));
39
- if (!$isTableNode(table)) {
40
- return;
41
- }
42
- tableDOMElement = getTableElement(table, editor.getElementByKey(table.getKey()));
43
- if (tableDOMElement) {
44
- const rowCount = table.getChildrenSize();
45
- const colCount = table.getChildAtIndex(0)?.getChildrenSize();
46
- const rowIndex = $getTableRowIndexFromTableCellNode(maybeTableCell);
47
- const colIndex = $getTableColumnIndexFromTableCellNode(maybeTableCell);
48
- if (rowIndex === rowCount - 1) {
49
- hoveredRowNode = maybeTableCell;
50
- }
51
- else if (colIndex === colCount - 1) {
52
- hoveredColumnNode = maybeTableCell;
53
- }
54
- }
55
- }
56
- }, { editor });
57
- if (tableDOMElement) {
58
- const { width: tableElemWidth, y: tableElemY, right: tableElemRight, left: tableElemLeft, bottom: tableElemBottom, height: tableElemHeight, } = tableDOMElement.getBoundingClientRect();
59
- // Adjust for using the scrollable table container
60
- const parentElement = tableDOMElement
61
- .parentElement;
62
- let tableHasScroll = false;
63
- if (parentElement &&
64
- parentElement.classList.contains('PlaygroundEditorTheme__tableScrollableWrapper')) {
65
- tableHasScroll =
66
- parentElement.scrollWidth > parentElement.clientWidth;
67
- }
68
- const { y: editorElemY, left: editorElemLeft } = anchorElem.getBoundingClientRect();
69
- if (hoveredRowNode) {
70
- setShownColumn(false);
71
- setShownRow(true);
72
- setPosition({
73
- height: BUTTON_WIDTH_PX,
74
- left: tableHasScroll && parentElement
75
- ? parentElement.offsetLeft
76
- : tableElemLeft - editorElemLeft,
77
- top: tableElemBottom - editorElemY + 5,
78
- width: tableHasScroll && parentElement
79
- ? parentElement.offsetWidth
80
- : tableElemWidth,
81
- });
82
- }
83
- else if (hoveredColumnNode) {
84
- setShownColumn(true);
85
- setShownRow(false);
86
- setPosition({
87
- height: tableElemHeight,
88
- left: tableElemRight - editorElemLeft + 5,
89
- top: tableElemY - editorElemY,
90
- width: BUTTON_WIDTH_PX,
91
- });
92
- }
93
- }
94
- }, 50, 250);
95
- // Hide the buttons on any table dimensions change to prevent last row cells
96
- // overlap behind the 'Add Row' button when text entry changes cell height
97
- const tableResizeObserver = useMemo(() => {
98
- return new ResizeObserver(() => {
99
- setShownRow(false);
100
- setShownColumn(false);
101
- });
102
- }, []);
103
- useEffect(() => {
104
- if (!shouldListenMouseMove) {
105
- return;
106
- }
107
- document.addEventListener('mousemove', debouncedOnMouseMove);
108
- return () => {
109
- setShownRow(false);
110
- setShownColumn(false);
111
- debouncedOnMouseMove.cancel();
112
- document.removeEventListener('mousemove', debouncedOnMouseMove);
113
- };
114
- }, [shouldListenMouseMove, debouncedOnMouseMove]);
115
- useEffect(() => {
116
- return mergeRegister(editor.registerMutationListener(TableNode, (mutations) => {
117
- editor.getEditorState().read(() => {
118
- let resetObserver = false;
119
- for (const [key, type] of mutations) {
120
- switch (type) {
121
- case 'created': {
122
- tableSetRef.current.add(key);
123
- resetObserver = true;
124
- break;
125
- }
126
- case 'destroyed': {
127
- tableSetRef.current.delete(key);
128
- resetObserver = true;
129
- break;
130
- }
131
- default:
132
- break;
133
- }
134
- }
135
- if (resetObserver) {
136
- // Reset resize observers
137
- tableResizeObserver.disconnect();
138
- for (const tableKey of tableSetRef.current) {
139
- const { tableElement } = $getTableAndElementByKey(tableKey);
140
- tableResizeObserver.observe(tableElement);
141
- }
142
- setShouldListenMouseMove(tableSetRef.current.size > 0);
143
- }
144
- }, { editor });
145
- }, { skipInitialization: false }));
146
- }, [editor, tableResizeObserver]);
147
- const insertAction = (insertRow) => {
148
- editor.update(() => {
149
- if (tableCellDOMNodeRef.current) {
150
- const maybeTableNode = $getNearestNodeFromDOMNode(tableCellDOMNodeRef.current);
151
- maybeTableNode?.selectEnd();
152
- if (insertRow) {
153
- $insertTableRowAtSelection();
154
- setShownRow(false);
155
- }
156
- else {
157
- $insertTableColumnAtSelection();
158
- setShownColumn(false);
159
- }
160
- }
161
- });
162
- };
163
- if (!isEditable) {
164
- return null;
165
- }
166
- return (_jsxs(_Fragment, { children: [isShownRow && (_jsx("button", { className: `${getTheme()?.tableAddRows}`, style: { ...position }, onClick: () => insertAction(true) })), isShownColumn && (_jsx("button", { className: `${getTheme()?.tableAddColumns}`, style: { ...position }, onClick: () => insertAction(false) }))] }));
167
- }
168
- function getMouseInfo(event, getTheme) {
169
- const target = event.target;
170
- const tableCellClass = getThemeSelector(getTheme, 'tableCell');
171
- if (isHTMLElement(target)) {
172
- const tableDOMNode = target.closest(`td${tableCellClass}, th${tableCellClass}`);
173
- const isOutside = !(tableDOMNode ||
174
- target.closest(`button${getThemeSelector(getTheme, 'tableAddRows')}`) ||
175
- target.closest(`button${getThemeSelector(getTheme, 'tableAddColumns')}`) ||
176
- target.closest('div.TableCellResizer__resizer'));
177
- return { isOutside, tableDOMNode };
178
- }
179
- else {
180
- return { isOutside: true, tableDOMNode: null };
181
- }
182
- }
183
- export default function TableHoverActionsPlugin({ anchorElem = document.body, }) {
184
- const isEditable = useLexicalEditable();
185
- return isEditable
186
- ? createPortal(_jsx(TableHoverActionsContainer, { anchorElem: anchorElem }), anchorElem)
187
- : null;
188
- }
@@ -1,2 +0,0 @@
1
- import './index.css';
2
- export default function TableOfContentsPlugin(): import("react/jsx-runtime").JSX.Element;
@@ -1,116 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import './index.css';
3
- import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
4
- import { TableOfContentsPlugin as LexicalTableOfContentsPlugin } from '@lexical/react/LexicalTableOfContentsPlugin';
5
- import { useEffect, useRef, useState } from 'react';
6
- const MARGIN_ABOVE_EDITOR = 624;
7
- const HEADING_WIDTH = 9;
8
- function indent(tagName) {
9
- if (tagName === 'h2') {
10
- return 'heading2';
11
- }
12
- else if (tagName === 'h3') {
13
- return 'heading3';
14
- }
15
- }
16
- function isHeadingAtTheTopOfThePage(element) {
17
- const elementYPosition = element?.getClientRects()[0].y;
18
- return (elementYPosition >= MARGIN_ABOVE_EDITOR &&
19
- elementYPosition <= MARGIN_ABOVE_EDITOR + HEADING_WIDTH);
20
- }
21
- function isHeadingAboveViewport(element) {
22
- const elementYPosition = element?.getClientRects()[0].y;
23
- return elementYPosition < MARGIN_ABOVE_EDITOR;
24
- }
25
- function isHeadingBelowTheTopOfThePage(element) {
26
- const elementYPosition = element?.getClientRects()[0].y;
27
- return elementYPosition >= MARGIN_ABOVE_EDITOR + HEADING_WIDTH;
28
- }
29
- function TableOfContentsList({ tableOfContents, }) {
30
- const [selectedKey, setSelectedKey] = useState('');
31
- const selectedIndex = useRef(0);
32
- const [editor] = useLexicalComposerContext();
33
- function scrollToNode(key, currIndex) {
34
- editor.getEditorState().read(() => {
35
- const domElement = editor.getElementByKey(key);
36
- if (domElement !== null) {
37
- domElement.scrollIntoView({ behavior: 'smooth', block: 'center' });
38
- setSelectedKey(key);
39
- selectedIndex.current = currIndex;
40
- }
41
- });
42
- }
43
- useEffect(() => {
44
- function scrollCallback() {
45
- if (tableOfContents.length !== 0 &&
46
- selectedIndex.current < tableOfContents.length - 1) {
47
- let currentHeading = editor.getElementByKey(tableOfContents[selectedIndex.current][0]);
48
- if (currentHeading !== null) {
49
- if (isHeadingBelowTheTopOfThePage(currentHeading)) {
50
- //On natural scroll, user is scrolling up
51
- while (currentHeading !== null &&
52
- isHeadingBelowTheTopOfThePage(currentHeading) &&
53
- selectedIndex.current > 0) {
54
- const prevHeading = editor.getElementByKey(tableOfContents[selectedIndex.current - 1][0]);
55
- if (prevHeading !== null &&
56
- (isHeadingAboveViewport(prevHeading) ||
57
- isHeadingBelowTheTopOfThePage(prevHeading))) {
58
- selectedIndex.current--;
59
- }
60
- currentHeading = prevHeading;
61
- }
62
- const prevHeadingKey = tableOfContents[selectedIndex.current][0];
63
- setSelectedKey(prevHeadingKey);
64
- }
65
- else if (isHeadingAboveViewport(currentHeading)) {
66
- //On natural scroll, user is scrolling down
67
- while (currentHeading !== null &&
68
- isHeadingAboveViewport(currentHeading) &&
69
- selectedIndex.current < tableOfContents.length - 1) {
70
- const nextHeading = editor.getElementByKey(tableOfContents[selectedIndex.current + 1][0]);
71
- if (nextHeading !== null &&
72
- (isHeadingAtTheTopOfThePage(nextHeading) ||
73
- isHeadingAboveViewport(nextHeading))) {
74
- selectedIndex.current++;
75
- }
76
- currentHeading = nextHeading;
77
- }
78
- const nextHeadingKey = tableOfContents[selectedIndex.current][0];
79
- setSelectedKey(nextHeadingKey);
80
- }
81
- }
82
- }
83
- else {
84
- selectedIndex.current = 0;
85
- }
86
- }
87
- let timerId;
88
- function debounceFunction(func, delay) {
89
- clearTimeout(timerId);
90
- timerId = setTimeout(func, delay);
91
- }
92
- function onScroll() {
93
- debounceFunction(scrollCallback, 10);
94
- }
95
- document.addEventListener('scroll', onScroll);
96
- return () => document.removeEventListener('scroll', onScroll);
97
- }, [tableOfContents, editor]);
98
- return (_jsx("div", { className: "table-of-contents", children: _jsx("ul", { className: "headings", children: tableOfContents.map(([key, text, tag], index) => {
99
- if (index === 0) {
100
- return (_jsxs("div", { className: "normal-heading-wrapper", children: [_jsx("div", { className: "first-heading", onClick: () => scrollToNode(key, index), role: "button", tabIndex: 0, children: ('' + text).length > 20
101
- ? text.substring(0, 20) + '...'
102
- : text }), _jsx("br", {})] }, key));
103
- }
104
- else {
105
- return (_jsx("div", { className: `normal-heading-wrapper ${selectedKey === key ? 'selected-heading-wrapper' : ''}`, children: _jsx("div", { onClick: () => scrollToNode(key, index), role: "button", className: indent(tag), tabIndex: 0, children: _jsx("li", { className: `normal-heading ${selectedKey === key ? 'selected-heading' : ''}
106
- `, children: ('' + text).length > 27
107
- ? text.substring(0, 27) + '...'
108
- : text }) }) }, key));
109
- }
110
- }) }) }));
111
- }
112
- export default function TableOfContentsPlugin() {
113
- return (_jsx(LexicalTableOfContentsPlugin, { children: (tableOfContents) => {
114
- return _jsx(TableOfContentsList, { tableOfContents: tableOfContents });
115
- } }));
116
- }
@@ -1,31 +0,0 @@
1
- import type { JSX } from 'react';
2
- import { EditorThemeClasses, Klass, LexicalEditor, LexicalNode } from 'lexical';
3
- export type InsertTableCommandPayload = Readonly<{
4
- columns: string;
5
- rows: string;
6
- includeHeaders?: boolean;
7
- }>;
8
- export type CellContextShape = {
9
- cellEditorConfig: null | CellEditorConfig;
10
- cellEditorPlugins: null | JSX.Element | Array<JSX.Element>;
11
- set: (cellEditorConfig: null | CellEditorConfig, cellEditorPlugins: null | JSX.Element | Array<JSX.Element>) => void;
12
- };
13
- export type CellEditorConfig = Readonly<{
14
- namespace: string;
15
- nodes?: ReadonlyArray<Klass<LexicalNode>>;
16
- onError: (error: Error, editor: LexicalEditor) => void;
17
- readOnly?: boolean;
18
- theme?: EditorThemeClasses;
19
- }>;
20
- export declare const CellContext: import("react").Context<CellContextShape>;
21
- export declare function TableContext({ children }: {
22
- children: JSX.Element;
23
- }): import("react/jsx-runtime").JSX.Element;
24
- export declare function InsertTableDialog({ activeEditor, onClose, }: {
25
- activeEditor: LexicalEditor;
26
- onClose: () => void;
27
- }): JSX.Element;
28
- export declare function TablePlugin({ cellEditorConfig, children, }: {
29
- cellEditorConfig: CellEditorConfig;
30
- children: JSX.Element | Array<JSX.Element>;
31
- }): JSX.Element | null;