@datalayer/lexical-loro 0.1.0 → 0.2.2

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