@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,52 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { BlockWithAlignableContents } from '@lexical/react/LexicalBlockWithAlignableContents';
3
- import { DecoratorBlockNode, } from '@lexical/react/LexicalDecoratorBlockNode';
4
- function FigmaComponent({ className, format, nodeKey, documentID, }) {
5
- return (_jsx(BlockWithAlignableContents, { className: className, format: format, nodeKey: nodeKey, children: _jsx("iframe", { width: "560", height: "315", src: `https://www.figma.com/embed?embed_host=lexical&url=\
6
- https://www.figma.com/file/${documentID}`, allowFullScreen: true }) }));
7
- }
8
- export class FigmaNode extends DecoratorBlockNode {
9
- __id;
10
- static getType() {
11
- return 'figma';
12
- }
13
- static clone(node) {
14
- return new FigmaNode(node.__id, node.__format, node.__key);
15
- }
16
- static importJSON(serializedNode) {
17
- return $createFigmaNode(serializedNode.documentID).updateFromJSON(serializedNode);
18
- }
19
- exportJSON() {
20
- return {
21
- ...super.exportJSON(),
22
- documentID: this.__id,
23
- };
24
- }
25
- constructor(id, format, key) {
26
- super(format, key);
27
- this.__id = id;
28
- }
29
- updateDOM() {
30
- return false;
31
- }
32
- getId() {
33
- return this.__id;
34
- }
35
- getTextContent(_includeInert, _includeDirectionless) {
36
- return `https://www.figma.com/file/${this.__id}`;
37
- }
38
- decorate(_editor, config) {
39
- const embedBlockTheme = config.theme.embedBlock || {};
40
- const className = {
41
- base: embedBlockTheme.base || '',
42
- focus: embedBlockTheme.focus || '',
43
- };
44
- return (_jsx(FigmaComponent, { className: className, format: this.__format, nodeKey: this.getKey(), documentID: this.__id }));
45
- }
46
- }
47
- export function $createFigmaNode(documentID) {
48
- return new FigmaNode(documentID);
49
- }
50
- export function $isFigmaNode(node) {
51
- return node instanceof FigmaNode;
52
- }
@@ -1,16 +0,0 @@
1
- import type { LexicalCommand, LexicalEditor, NodeKey } from 'lexical';
2
- import type { JSX } from 'react';
3
- import './ImageNode.css';
4
- export declare const RIGHT_CLICK_IMAGE_COMMAND: LexicalCommand<MouseEvent>;
5
- export default function ImageComponent({ src, altText, nodeKey, width, height, maxWidth, resizable, showCaption, caption, captionsEnabled, }: {
6
- altText: string;
7
- caption: LexicalEditor;
8
- height: 'inherit' | number;
9
- maxWidth: number;
10
- nodeKey: NodeKey;
11
- resizable: boolean;
12
- showCaption: boolean;
13
- src: string;
14
- width: 'inherit' | number;
15
- captionsEnabled: boolean;
16
- }): JSX.Element;
@@ -1,272 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import './ImageNode.css';
3
- import { AutoFocusPlugin } from '@lexical/react/LexicalAutoFocusPlugin';
4
- import { useCollaborationContext } from '@lexical/react/LexicalCollaborationContext';
5
- import { CollaborationPlugin } from '@lexical/react/LexicalCollaborationPlugin';
6
- import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
7
- import { LexicalErrorBoundary } from '@lexical/react/LexicalErrorBoundary';
8
- import { HashtagPlugin } from '@lexical/react/LexicalHashtagPlugin';
9
- import { HistoryPlugin } from '@lexical/react/LexicalHistoryPlugin';
10
- import { LexicalNestedComposer } from '@lexical/react/LexicalNestedComposer';
11
- import { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin';
12
- import { useLexicalEditable } from '@lexical/react/useLexicalEditable';
13
- import { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection';
14
- import { mergeRegister } from '@lexical/utils';
15
- import { $getNodeByKey, $getSelection, $isNodeSelection, $isRangeSelection, $setSelection, CLICK_COMMAND, COMMAND_PRIORITY_LOW, createCommand, DRAGSTART_COMMAND, KEY_ENTER_COMMAND, KEY_ESCAPE_COMMAND, SELECTION_CHANGE_COMMAND, } from 'lexical';
16
- import { Suspense, useCallback, useEffect, useRef, useState } from 'react';
17
- import { createWebsocketProvider } from '../collab/yjs/wsProvider';
18
- import { useSettings } from '../context/SettingsContext';
19
- import { useSharedHistoryContext } from '../context/SharedHistoryContext';
20
- import brokenImage from '../images/image-broken.svg';
21
- import EmojisPlugin from '../plugins/EmojisPlugin';
22
- import KeywordsPlugin from '../plugins/KeywordsPlugin';
23
- import LinkPlugin from '../plugins/LinkPlugin';
24
- import MentionsPlugin from '../plugins/MentionsPlugin';
25
- import TreeViewPlugin from '../plugins/TreeViewPlugin';
26
- import ContentEditable from '../ui/ContentEditable';
27
- import ImageResizer from '../ui/ImageResizer';
28
- import { $isImageNode } from './ImageNode';
29
- const imageCache = new Map();
30
- export const RIGHT_CLICK_IMAGE_COMMAND = createCommand('RIGHT_CLICK_IMAGE_COMMAND');
31
- function useSuspenseImage(src) {
32
- let cached = imageCache.get(src);
33
- if (typeof cached === 'boolean') {
34
- return cached;
35
- }
36
- else if (!cached) {
37
- cached = new Promise((resolve) => {
38
- const img = new Image();
39
- img.src = src;
40
- img.onload = () => resolve(false);
41
- img.onerror = () => resolve(true);
42
- }).then((hasError) => {
43
- imageCache.set(src, hasError);
44
- return hasError;
45
- });
46
- imageCache.set(src, cached);
47
- throw cached;
48
- }
49
- throw cached;
50
- }
51
- function isSVG(src) {
52
- return src.toLowerCase().endsWith('.svg');
53
- }
54
- function LazyImage({ altText, className, imageRef, src, width, height, maxWidth, onError, }) {
55
- const [dimensions, setDimensions] = useState(null);
56
- const isSVGImage = isSVG(src);
57
- // Set initial dimensions for SVG images
58
- useEffect(() => {
59
- if (imageRef.current && isSVGImage) {
60
- const { naturalWidth, naturalHeight } = imageRef.current;
61
- setDimensions({
62
- height: naturalHeight,
63
- width: naturalWidth,
64
- });
65
- }
66
- }, [imageRef, isSVGImage]);
67
- const hasError = useSuspenseImage(src);
68
- useEffect(() => {
69
- if (hasError) {
70
- onError();
71
- }
72
- }, [hasError, onError]);
73
- if (hasError) {
74
- return _jsx(BrokenImage, {});
75
- }
76
- // Calculate final dimensions with proper scaling
77
- const calculateDimensions = () => {
78
- if (!isSVGImage) {
79
- return {
80
- height,
81
- maxWidth,
82
- width,
83
- };
84
- }
85
- // Use natural dimensions if available, otherwise fallback to defaults
86
- const naturalWidth = dimensions?.width || 200;
87
- const naturalHeight = dimensions?.height || 200;
88
- let finalWidth = naturalWidth;
89
- let finalHeight = naturalHeight;
90
- // Scale down if width exceeds maxWidth while maintaining aspect ratio
91
- if (finalWidth > maxWidth) {
92
- const scale = maxWidth / finalWidth;
93
- finalWidth = maxWidth;
94
- finalHeight = Math.round(finalHeight * scale);
95
- }
96
- // Scale down if height exceeds maxHeight while maintaining aspect ratio
97
- const maxHeight = 500;
98
- if (finalHeight > maxHeight) {
99
- const scale = maxHeight / finalHeight;
100
- finalHeight = maxHeight;
101
- finalWidth = Math.round(finalWidth * scale);
102
- }
103
- return {
104
- height: finalHeight,
105
- maxWidth,
106
- width: finalWidth,
107
- };
108
- };
109
- const imageStyle = calculateDimensions();
110
- return (_jsx("img", { className: className || undefined, src: src, alt: altText, ref: imageRef, style: imageStyle, onError: onError, draggable: "false", onLoad: (e) => {
111
- if (isSVGImage) {
112
- const img = e.currentTarget;
113
- setDimensions({
114
- height: img.naturalHeight,
115
- width: img.naturalWidth,
116
- });
117
- }
118
- } }));
119
- }
120
- function BrokenImage() {
121
- return (_jsx("img", { src: brokenImage, style: {
122
- height: 200,
123
- opacity: 0.2,
124
- width: 200,
125
- }, draggable: "false", alt: "Broken image" }));
126
- }
127
- export default function ImageComponent({ src, altText, nodeKey, width, height, maxWidth, resizable, showCaption, caption, captionsEnabled, }) {
128
- const imageRef = useRef(null);
129
- const buttonRef = useRef(null);
130
- const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey);
131
- const [isResizing, setIsResizing] = useState(false);
132
- const { isCollabActive } = useCollaborationContext();
133
- const [editor] = useLexicalComposerContext();
134
- const [selection, setSelection] = useState(null);
135
- const activeEditorRef = useRef(null);
136
- const [isLoadError, setIsLoadError] = useState(false);
137
- const isEditable = useLexicalEditable();
138
- const $onEnter = useCallback((event) => {
139
- const latestSelection = $getSelection();
140
- const buttonElem = buttonRef.current;
141
- if (isSelected &&
142
- $isNodeSelection(latestSelection) &&
143
- latestSelection.getNodes().length === 1) {
144
- if (showCaption) {
145
- // Move focus into nested editor
146
- $setSelection(null);
147
- event.preventDefault();
148
- caption.focus();
149
- return true;
150
- }
151
- else if (buttonElem !== null &&
152
- buttonElem !== document.activeElement) {
153
- event.preventDefault();
154
- buttonElem.focus();
155
- return true;
156
- }
157
- }
158
- return false;
159
- }, [caption, isSelected, showCaption]);
160
- const $onEscape = useCallback((event) => {
161
- if (activeEditorRef.current === caption ||
162
- buttonRef.current === event.target) {
163
- $setSelection(null);
164
- editor.update(() => {
165
- setSelected(true);
166
- const parentRootElement = editor.getRootElement();
167
- if (parentRootElement !== null) {
168
- parentRootElement.focus();
169
- }
170
- });
171
- return true;
172
- }
173
- return false;
174
- }, [caption, editor, setSelected]);
175
- const onClick = useCallback((payload) => {
176
- const event = payload;
177
- if (isResizing) {
178
- return true;
179
- }
180
- if (event.target === imageRef.current) {
181
- if (event.shiftKey) {
182
- setSelected(!isSelected);
183
- }
184
- else {
185
- clearSelection();
186
- setSelected(true);
187
- }
188
- return true;
189
- }
190
- return false;
191
- }, [isResizing, isSelected, setSelected, clearSelection]);
192
- const onRightClick = useCallback((event) => {
193
- editor.getEditorState().read(() => {
194
- const latestSelection = $getSelection();
195
- const domElement = event.target;
196
- if (domElement.tagName === 'IMG' &&
197
- $isRangeSelection(latestSelection) &&
198
- latestSelection.getNodes().length === 1) {
199
- editor.dispatchCommand(RIGHT_CLICK_IMAGE_COMMAND, event);
200
- }
201
- });
202
- }, [editor]);
203
- useEffect(() => {
204
- const rootElement = editor.getRootElement();
205
- const unregister = mergeRegister(editor.registerUpdateListener(({ editorState }) => {
206
- const updatedSelection = editorState.read(() => $getSelection());
207
- if ($isNodeSelection(updatedSelection)) {
208
- setSelection(updatedSelection);
209
- }
210
- else {
211
- setSelection(null);
212
- }
213
- }), editor.registerCommand(SELECTION_CHANGE_COMMAND, (_, activeEditor) => {
214
- activeEditorRef.current = activeEditor;
215
- return false;
216
- }, COMMAND_PRIORITY_LOW), editor.registerCommand(CLICK_COMMAND, onClick, COMMAND_PRIORITY_LOW), editor.registerCommand(RIGHT_CLICK_IMAGE_COMMAND, onClick, COMMAND_PRIORITY_LOW), editor.registerCommand(DRAGSTART_COMMAND, (event) => {
217
- if (event.target === imageRef.current) {
218
- // TODO This is just a temporary workaround for FF to behave like other browsers.
219
- // Ideally, this handles drag & drop too (and all browsers).
220
- event.preventDefault();
221
- return true;
222
- }
223
- return false;
224
- }, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_ENTER_COMMAND, $onEnter, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_ESCAPE_COMMAND, $onEscape, COMMAND_PRIORITY_LOW));
225
- rootElement?.addEventListener('contextmenu', onRightClick);
226
- return () => {
227
- unregister();
228
- rootElement?.removeEventListener('contextmenu', onRightClick);
229
- };
230
- }, [
231
- clearSelection,
232
- editor,
233
- isResizing,
234
- isSelected,
235
- nodeKey,
236
- $onEnter,
237
- $onEscape,
238
- onClick,
239
- onRightClick,
240
- setSelected,
241
- ]);
242
- const setShowCaption = () => {
243
- editor.update(() => {
244
- const node = $getNodeByKey(nodeKey);
245
- if ($isImageNode(node)) {
246
- node.setShowCaption(true);
247
- }
248
- });
249
- };
250
- const onResizeEnd = (nextWidth, nextHeight) => {
251
- // Delay hiding the resize bars for click case
252
- setTimeout(() => {
253
- setIsResizing(false);
254
- }, 200);
255
- editor.update(() => {
256
- const node = $getNodeByKey(nodeKey);
257
- if ($isImageNode(node)) {
258
- node.setWidthAndHeight(nextWidth, nextHeight);
259
- }
260
- });
261
- };
262
- const onResizeStart = () => {
263
- setIsResizing(true);
264
- };
265
- const { historyState } = useSharedHistoryContext();
266
- const { settings: { showNestedEditorTreeView }, } = useSettings();
267
- const draggable = isSelected && $isNodeSelection(selection) && !isResizing;
268
- const isFocused = (isSelected || isResizing) && isEditable;
269
- return (_jsx(Suspense, { fallback: null, children: _jsxs(_Fragment, { children: [_jsx("div", { draggable: draggable, children: isLoadError ? (_jsx(BrokenImage, {})) : (_jsx(LazyImage, { className: isFocused
270
- ? `focused ${$isNodeSelection(selection) ? 'draggable' : ''}`
271
- : null, src: src, altText: altText, imageRef: imageRef, width: width, height: height, maxWidth: maxWidth, onError: () => setIsLoadError(true) })) }), showCaption && (_jsx("div", { className: "image-caption-container", children: _jsxs(LexicalNestedComposer, { initialEditor: caption, children: [_jsx(AutoFocusPlugin, {}), _jsx(MentionsPlugin, {}), _jsx(LinkPlugin, {}), _jsx(EmojisPlugin, {}), _jsx(HashtagPlugin, {}), _jsx(KeywordsPlugin, {}), isCollabActive ? (_jsx(CollaborationPlugin, { id: caption.getKey(), providerFactory: createWebsocketProvider, shouldBootstrap: true })) : (_jsx(HistoryPlugin, { externalHistoryState: historyState })), _jsx(RichTextPlugin, { contentEditable: _jsx(ContentEditable, { placeholder: "Enter a caption...", placeholderClassName: "ImageNode__placeholder", className: "ImageNode__contentEditable" }), ErrorBoundary: LexicalErrorBoundary }), showNestedEditorTreeView === true ? _jsx(TreeViewPlugin, {}) : null] }) })), resizable && $isNodeSelection(selection) && isFocused && (_jsx(ImageResizer, { showCaption: showCaption, setShowCaption: setShowCaption, editor: editor, buttonRef: buttonRef, imageRef: imageRef, maxWidth: maxWidth, onResizeStart: onResizeStart, onResizeEnd: onResizeEnd, captionsEnabled: !isLoadError && captionsEnabled }))] }) }));
272
- }
@@ -1,50 +0,0 @@
1
- import type { DOMConversionMap, DOMExportOutput, EditorConfig, LexicalEditor, LexicalNode, LexicalUpdateJSON, NodeKey, SerializedEditor, SerializedLexicalNode, Spread } from 'lexical';
2
- import type { JSX } from 'react';
3
- import { DecoratorNode } from 'lexical';
4
- export interface ImagePayload {
5
- altText: string;
6
- caption?: LexicalEditor;
7
- height?: number;
8
- key?: NodeKey;
9
- maxWidth?: number;
10
- showCaption?: boolean;
11
- src: string;
12
- width?: number;
13
- captionsEnabled?: boolean;
14
- }
15
- export type SerializedImageNode = Spread<{
16
- altText: string;
17
- caption: SerializedEditor;
18
- height?: number;
19
- maxWidth: number;
20
- showCaption: boolean;
21
- src: string;
22
- width?: number;
23
- }, SerializedLexicalNode>;
24
- export declare class ImageNode extends DecoratorNode<JSX.Element> {
25
- __src: string;
26
- __altText: string;
27
- __width: 'inherit' | number;
28
- __height: 'inherit' | number;
29
- __maxWidth: number;
30
- __showCaption: boolean;
31
- __caption: LexicalEditor;
32
- __captionsEnabled: boolean;
33
- static getType(): string;
34
- static clone(node: ImageNode): ImageNode;
35
- static importJSON(serializedNode: SerializedImageNode): ImageNode;
36
- updateFromJSON(serializedNode: LexicalUpdateJSON<SerializedImageNode>): this;
37
- exportDOM(): DOMExportOutput;
38
- static importDOM(): DOMConversionMap | null;
39
- constructor(src: string, altText: string, maxWidth: number, width?: 'inherit' | number, height?: 'inherit' | number, showCaption?: boolean, caption?: LexicalEditor, captionsEnabled?: boolean, key?: NodeKey);
40
- exportJSON(): SerializedImageNode;
41
- setWidthAndHeight(width: 'inherit' | number, height: 'inherit' | number): void;
42
- setShowCaption(showCaption: boolean): void;
43
- createDOM(config: EditorConfig): HTMLElement;
44
- updateDOM(): false;
45
- getSrc(): string;
46
- getAltText(): string;
47
- decorate(): JSX.Element;
48
- }
49
- export declare function $createImageNode({ altText, height, maxWidth, captionsEnabled, src, width, showCaption, caption, key, }: ImagePayload): ImageNode;
50
- export declare function $isImageNode(node: LexicalNode | null | undefined): node is ImageNode;
@@ -1,151 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { HashtagNode } from '@lexical/hashtag';
3
- import { LinkNode } from '@lexical/link';
4
- import { $applyNodeReplacement, createEditor, DecoratorNode, LineBreakNode, ParagraphNode, RootNode, TextNode, } from 'lexical';
5
- import * as React from 'react';
6
- import { EmojiNode } from './EmojiNode';
7
- import { KeywordNode } from './KeywordNode';
8
- const ImageComponent = React.lazy(() => import('./ImageComponent'));
9
- function isGoogleDocCheckboxImg(img) {
10
- return (img.parentElement != null &&
11
- img.parentElement.tagName === 'LI' &&
12
- img.previousSibling === null &&
13
- img.getAttribute('aria-roledescription') === 'checkbox');
14
- }
15
- function $convertImageElement(domNode) {
16
- const img = domNode;
17
- if (img.src.startsWith('file:///') || isGoogleDocCheckboxImg(img)) {
18
- return null;
19
- }
20
- const { alt: altText, src, width, height } = img;
21
- const node = $createImageNode({ altText, height, src, width });
22
- return { node };
23
- }
24
- export class ImageNode extends DecoratorNode {
25
- __src;
26
- __altText;
27
- __width;
28
- __height;
29
- __maxWidth;
30
- __showCaption;
31
- __caption;
32
- // Captions cannot yet be used within editor cells
33
- __captionsEnabled;
34
- static getType() {
35
- return 'image';
36
- }
37
- static clone(node) {
38
- return new ImageNode(node.__src, node.__altText, node.__maxWidth, node.__width, node.__height, node.__showCaption, node.__caption, node.__captionsEnabled, node.__key);
39
- }
40
- static importJSON(serializedNode) {
41
- const { altText, height, width, maxWidth, src, showCaption } = serializedNode;
42
- return $createImageNode({
43
- altText,
44
- height,
45
- maxWidth,
46
- showCaption,
47
- src,
48
- width,
49
- }).updateFromJSON(serializedNode);
50
- }
51
- updateFromJSON(serializedNode) {
52
- const node = super.updateFromJSON(serializedNode);
53
- const { caption } = serializedNode;
54
- const nestedEditor = node.__caption;
55
- const editorState = nestedEditor.parseEditorState(caption.editorState);
56
- if (!editorState.isEmpty()) {
57
- nestedEditor.setEditorState(editorState);
58
- }
59
- return node;
60
- }
61
- exportDOM() {
62
- const element = document.createElement('img');
63
- element.setAttribute('src', this.__src);
64
- element.setAttribute('alt', this.__altText);
65
- element.setAttribute('width', this.__width.toString());
66
- element.setAttribute('height', this.__height.toString());
67
- return { element };
68
- }
69
- static importDOM() {
70
- return {
71
- img: (node) => ({
72
- conversion: $convertImageElement,
73
- priority: 0,
74
- }),
75
- };
76
- }
77
- constructor(src, altText, maxWidth, width, height, showCaption, caption, captionsEnabled, key) {
78
- super(key);
79
- this.__src = src;
80
- this.__altText = altText;
81
- this.__maxWidth = maxWidth;
82
- this.__width = width || 'inherit';
83
- this.__height = height || 'inherit';
84
- this.__showCaption = showCaption || false;
85
- this.__caption =
86
- caption ||
87
- createEditor({
88
- namespace: 'Playground/ImageNodeCaption',
89
- nodes: [
90
- RootNode,
91
- TextNode,
92
- LineBreakNode,
93
- ParagraphNode,
94
- LinkNode,
95
- EmojiNode,
96
- HashtagNode,
97
- KeywordNode,
98
- ],
99
- });
100
- this.__captionsEnabled = captionsEnabled || captionsEnabled === undefined;
101
- }
102
- exportJSON() {
103
- return {
104
- ...super.exportJSON(),
105
- altText: this.getAltText(),
106
- caption: this.__caption.toJSON(),
107
- height: this.__height === 'inherit' ? 0 : this.__height,
108
- maxWidth: this.__maxWidth,
109
- showCaption: this.__showCaption,
110
- src: this.getSrc(),
111
- width: this.__width === 'inherit' ? 0 : this.__width,
112
- };
113
- }
114
- setWidthAndHeight(width, height) {
115
- const writable = this.getWritable();
116
- writable.__width = width;
117
- writable.__height = height;
118
- }
119
- setShowCaption(showCaption) {
120
- const writable = this.getWritable();
121
- writable.__showCaption = showCaption;
122
- }
123
- // View
124
- createDOM(config) {
125
- const span = document.createElement('span');
126
- const theme = config.theme;
127
- const className = theme.image;
128
- if (className !== undefined) {
129
- span.className = className;
130
- }
131
- return span;
132
- }
133
- updateDOM() {
134
- return false;
135
- }
136
- getSrc() {
137
- return this.__src;
138
- }
139
- getAltText() {
140
- return this.__altText;
141
- }
142
- decorate() {
143
- return (_jsx(ImageComponent, { src: this.__src, altText: this.__altText, width: this.__width, height: this.__height, maxWidth: this.__maxWidth, nodeKey: this.getKey(), showCaption: this.__showCaption, caption: this.__caption, captionsEnabled: this.__captionsEnabled, resizable: true }));
144
- }
145
- }
146
- export function $createImageNode({ altText, height, maxWidth = 500, captionsEnabled, src, width, showCaption, caption, key, }) {
147
- return $applyNodeReplacement(new ImageNode(src, altText, maxWidth, width, height, showCaption, caption, captionsEnabled, key));
148
- }
149
- export function $isImageNode(node) {
150
- return node instanceof ImageNode;
151
- }
@@ -1,26 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- */
8
- import type { Position } from './InlineImageNode';
9
- import type { LexicalEditor, NodeKey } from 'lexical';
10
- import type { JSX } from 'react';
11
- import './InlineImageNode.css';
12
- export declare function UpdateInlineImageDialog({ activeEditor, nodeKey, onClose, }: {
13
- activeEditor: LexicalEditor;
14
- nodeKey: NodeKey;
15
- onClose: () => void;
16
- }): JSX.Element;
17
- export default function InlineImageComponent({ src, altText, nodeKey, width, height, showCaption, caption, position, }: {
18
- altText: string;
19
- caption: LexicalEditor;
20
- height: 'inherit' | number;
21
- nodeKey: NodeKey;
22
- showCaption: boolean;
23
- src: string;
24
- width: 'inherit' | number;
25
- position: Position;
26
- }): JSX.Element;