@datalayer/lexical-loro 0.2.4 → 0.2.5

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/lib/App.d.ts +2 -0
  2. package/lib/App.js +141 -0
  3. package/lib/Editor.d.ts +2 -0
  4. package/lib/Editor.js +115 -0
  5. package/lib/Settings.d.ts +2 -0
  6. package/lib/Settings.js +57 -0
  7. package/lib/appSettings.d.ts +36 -0
  8. package/lib/appSettings.js +48 -0
  9. package/lib/collab/loro/Bindings.d.ts +41 -0
  10. package/lib/collab/loro/Bindings.js +99 -0
  11. package/lib/collab/loro/Debug.d.ts +33 -0
  12. package/lib/collab/loro/Debug.js +452 -0
  13. package/lib/collab/loro/LexicalCollaborationContext.d.ts +19 -0
  14. package/lib/collab/loro/LexicalCollaborationContext.js +52 -0
  15. package/lib/collab/loro/LexicalCollaborationPlugin.d.ts +24 -0
  16. package/lib/collab/loro/LexicalCollaborationPlugin.js +83 -0
  17. package/lib/collab/loro/State.d.ts +53 -0
  18. package/lib/collab/loro/State.js +94 -0
  19. package/lib/collab/loro/components/LoroCollaborationUI.d.ts +13 -0
  20. package/lib/collab/loro/components/LoroCollaborationUI.js +9 -0
  21. package/lib/collab/loro/components/LoroCollaborators.d.ts +8 -0
  22. package/lib/collab/loro/components/LoroCollaborators.js +102 -0
  23. package/lib/collab/loro/components/index.d.ts +2 -0
  24. package/lib/collab/loro/components/index.js +6 -0
  25. package/lib/collab/loro/index.d.ts +6 -0
  26. package/lib/collab/loro/index.js +10 -0
  27. package/lib/collab/loro/integrators/BaseIntegrator.d.ts +14 -0
  28. package/lib/collab/loro/integrators/BaseIntegrator.js +5 -0
  29. package/lib/collab/loro/integrators/CounterIntegrator.d.ts +23 -0
  30. package/lib/collab/loro/integrators/CounterIntegrator.js +44 -0
  31. package/lib/collab/loro/integrators/ListIntegrator.d.ts +23 -0
  32. package/lib/collab/loro/integrators/ListIntegrator.js +53 -0
  33. package/lib/collab/loro/integrators/MapIntegrator.d.ts +24 -0
  34. package/lib/collab/loro/integrators/MapIntegrator.js +235 -0
  35. package/lib/collab/loro/integrators/TextIntegrator.d.ts +25 -0
  36. package/lib/collab/loro/integrators/TextIntegrator.js +55 -0
  37. package/lib/collab/loro/integrators/TreeIntegrator.d.ts +36 -0
  38. package/lib/collab/loro/integrators/TreeIntegrator.js +251 -0
  39. package/lib/collab/loro/nodes/NodeFactory.d.ts +15 -0
  40. package/lib/collab/loro/nodes/NodeFactory.js +101 -0
  41. package/lib/collab/loro/nodes/NodesMapper.d.ts +120 -0
  42. package/lib/collab/loro/nodes/NodesMapper.js +277 -0
  43. package/lib/collab/loro/propagators/DecoratorNodePropagator.d.ts +60 -0
  44. package/lib/collab/loro/propagators/DecoratorNodePropagator.js +306 -0
  45. package/lib/collab/loro/propagators/ElementNodePropagator.d.ts +62 -0
  46. package/lib/collab/loro/propagators/ElementNodePropagator.js +326 -0
  47. package/lib/collab/loro/propagators/LineBreakNodePropagator.d.ts +57 -0
  48. package/lib/collab/loro/propagators/LineBreakNodePropagator.js +200 -0
  49. package/lib/collab/loro/propagators/RootNodePropagator.d.ts +55 -0
  50. package/lib/collab/loro/propagators/RootNodePropagator.js +174 -0
  51. package/lib/collab/loro/propagators/TextNodePropagator.d.ts +60 -0
  52. package/lib/collab/loro/propagators/TextNodePropagator.js +440 -0
  53. package/lib/collab/loro/propagators/index.d.ts +49 -0
  54. package/lib/collab/loro/propagators/index.js +30 -0
  55. package/lib/collab/loro/provider/websocket.d.ts +116 -0
  56. package/lib/collab/loro/provider/websocket.js +911 -0
  57. package/lib/collab/loro/servers/index.d.ts +0 -0
  58. package/lib/collab/loro/servers/index.js +4 -0
  59. package/lib/collab/loro/servers/ws/callback.d.ts +5 -0
  60. package/lib/collab/loro/servers/ws/callback.js +89 -0
  61. package/lib/collab/loro/servers/ws/server.d.ts +2 -0
  62. package/lib/collab/loro/servers/ws/server.js +29 -0
  63. package/lib/collab/loro/servers/ws/utils.d.ts +40 -0
  64. package/lib/collab/loro/servers/ws/utils.js +517 -0
  65. package/lib/collab/loro/sync/SyncCursors.d.ts +32 -0
  66. package/lib/collab/loro/sync/SyncCursors.js +475 -0
  67. package/lib/collab/loro/sync/SyncLexicalToLoro.d.ts +4 -0
  68. package/lib/collab/loro/sync/SyncLexicalToLoro.js +113 -0
  69. package/lib/collab/loro/sync/SyncLoroToLexical.d.ts +5 -0
  70. package/lib/collab/loro/sync/SyncLoroToLexical.js +100 -0
  71. package/lib/collab/loro/types/LexicalNodeData.d.ts +32 -0
  72. package/lib/collab/loro/types/LexicalNodeData.js +75 -0
  73. package/lib/collab/loro/useCollaboration.d.ts +12 -0
  74. package/lib/collab/loro/useCollaboration.js +260 -0
  75. package/lib/collab/loro/utils/InitialContent.d.ts +64 -0
  76. package/lib/collab/loro/utils/InitialContent.js +113 -0
  77. package/lib/collab/loro/utils/LexicalToLoro.d.ts +18 -0
  78. package/lib/collab/loro/utils/LexicalToLoro.js +100 -0
  79. package/lib/collab/loro/utils/Utils.d.ts +44 -0
  80. package/lib/collab/loro/utils/Utils.js +157 -0
  81. package/lib/collab/loro/wsProvider.d.ts +8 -0
  82. package/lib/collab/loro/wsProvider.js +35 -0
  83. package/lib/collab/utils/invariant.d.ts +1 -0
  84. package/lib/collab/utils/invariant.js +15 -0
  85. package/lib/collab/utils/simpleDiffWithCursor.d.ts +5 -0
  86. package/lib/collab/utils/simpleDiffWithCursor.js +35 -0
  87. package/lib/collab/yjs/Bindings.d.ts +23 -0
  88. package/lib/collab/yjs/Bindings.js +26 -0
  89. package/lib/collab/yjs/Debug.d.ts +23 -0
  90. package/lib/collab/yjs/Debug.js +213 -0
  91. package/lib/collab/yjs/LexicalCollaborationContext.d.ts +10 -0
  92. package/lib/collab/yjs/LexicalCollaborationContext.js +37 -0
  93. package/lib/collab/yjs/LexicalCollaborationPlugin.d.ts +21 -0
  94. package/lib/collab/yjs/LexicalCollaborationPlugin.js +63 -0
  95. package/lib/collab/yjs/State.d.ts +51 -0
  96. package/lib/collab/yjs/State.js +35 -0
  97. package/lib/collab/yjs/nodes/AnyCollabNode.d.ts +5 -0
  98. package/lib/collab/yjs/nodes/AnyCollabNode.js +1 -0
  99. package/lib/collab/yjs/nodes/CollabDecoratorNode.d.ts +22 -0
  100. package/lib/collab/yjs/nodes/CollabDecoratorNode.js +64 -0
  101. package/lib/collab/yjs/nodes/CollabElementNode.d.ts +40 -0
  102. package/lib/collab/yjs/nodes/CollabElementNode.js +462 -0
  103. package/lib/collab/yjs/nodes/CollabLineBreakNode.d.ts +19 -0
  104. package/lib/collab/yjs/nodes/CollabLineBreakNode.js +44 -0
  105. package/lib/collab/yjs/nodes/CollabTextNode.d.ts +25 -0
  106. package/lib/collab/yjs/nodes/CollabTextNode.js +103 -0
  107. package/lib/collab/yjs/provider/websocket.d.ts +88 -0
  108. package/lib/collab/yjs/provider/websocket.js +415 -0
  109. package/lib/collab/yjs/servers/index.d.ts +0 -0
  110. package/lib/collab/yjs/servers/index.js +0 -0
  111. package/lib/collab/yjs/servers/ws/callback.d.ts +5 -0
  112. package/lib/collab/yjs/servers/ws/callback.js +72 -0
  113. package/lib/collab/yjs/servers/ws/server.d.ts +2 -0
  114. package/lib/collab/yjs/servers/ws/server.js +25 -0
  115. package/lib/collab/yjs/servers/ws/utils.d.ts +49 -0
  116. package/lib/collab/yjs/servers/ws/utils.js +284 -0
  117. package/lib/collab/yjs/sync/SyncCursors.d.ts +39 -0
  118. package/lib/collab/yjs/sync/SyncCursors.js +351 -0
  119. package/lib/collab/yjs/sync/SyncEditorStates.d.ts +10 -0
  120. package/lib/collab/yjs/sync/SyncEditorStates.js +200 -0
  121. package/lib/collab/yjs/useCollaboration.d.ts +12 -0
  122. package/lib/collab/yjs/useCollaboration.js +255 -0
  123. package/lib/collab/yjs/utils/Utils.d.ts +25 -0
  124. package/lib/collab/yjs/utils/Utils.js +402 -0
  125. package/lib/collab/yjs/wsProvider.d.ts +3 -0
  126. package/lib/collab/yjs/wsProvider.js +21 -0
  127. package/lib/commenting/index.d.ts +41 -0
  128. package/lib/commenting/index.js +328 -0
  129. package/lib/context/FlashMessageContext.d.ts +7 -0
  130. package/lib/context/FlashMessageContext.js +24 -0
  131. package/lib/context/SettingsContext.d.ts +12 -0
  132. package/lib/context/SettingsContext.js +38 -0
  133. package/lib/context/SharedHistoryContext.d.ts +11 -0
  134. package/lib/context/SharedHistoryContext.js +11 -0
  135. package/lib/context/ToolbarContext.d.ts +65 -0
  136. package/lib/context/ToolbarContext.js +84 -0
  137. package/lib/demo.d.ts +12 -0
  138. package/lib/demo.js +45 -0
  139. package/lib/hooks/useFlashMessage.d.ts +2 -0
  140. package/lib/hooks/useFlashMessage.js +8 -0
  141. package/lib/hooks/useModal.d.ts +5 -0
  142. package/lib/hooks/useModal.js +26 -0
  143. package/lib/hooks/useReport.d.ts +1 -0
  144. package/lib/hooks/useReport.js +50 -0
  145. package/lib/index.d.ts +1 -0
  146. package/lib/index.js +5 -0
  147. package/lib/nodes/AutocompleteNode.d.ts +27 -0
  148. package/lib/nodes/AutocompleteNode.js +60 -0
  149. package/lib/nodes/CounterComponent.d.ts +6 -0
  150. package/lib/nodes/CounterComponent.js +137 -0
  151. package/lib/nodes/CounterNode.d.ts +23 -0
  152. package/lib/nodes/CounterNode.js +47 -0
  153. package/lib/nodes/DateTimeNode/DateTimeComponent.d.ts +8 -0
  154. package/lib/nodes/DateTimeNode/DateTimeComponent.js +119 -0
  155. package/lib/nodes/DateTimeNode/DateTimeNode.d.ts +27 -0
  156. package/lib/nodes/DateTimeNode/DateTimeNode.js +82 -0
  157. package/lib/nodes/EmojiNode.d.ts +18 -0
  158. package/lib/nodes/EmojiNode.js +54 -0
  159. package/lib/nodes/EquationComponent.d.ts +9 -0
  160. package/lib/nodes/EquationComponent.js +75 -0
  161. package/lib/nodes/EquationNode.d.ts +26 -0
  162. package/lib/nodes/EquationNode.js +109 -0
  163. package/lib/nodes/ExcalidrawNode/ExcalidrawComponent.d.ts +8 -0
  164. package/lib/nodes/ExcalidrawNode/ExcalidrawComponent.js +110 -0
  165. package/lib/nodes/ExcalidrawNode/ExcalidrawImage.d.ts +50 -0
  166. package/lib/nodes/ExcalidrawNode/ExcalidrawImage.js +55 -0
  167. package/lib/nodes/ExcalidrawNode/index.d.ts +32 -0
  168. package/lib/nodes/ExcalidrawNode/index.js +117 -0
  169. package/lib/nodes/FigmaNode.d.ts +20 -0
  170. package/lib/nodes/FigmaNode.js +52 -0
  171. package/lib/nodes/ImageComponent.d.ts +16 -0
  172. package/lib/nodes/ImageComponent.js +272 -0
  173. package/lib/nodes/ImageNode.d.ts +50 -0
  174. package/lib/nodes/ImageNode.js +151 -0
  175. package/lib/nodes/InlineImageNode/InlineImageComponent.d.ts +26 -0
  176. package/lib/nodes/InlineImageNode/InlineImageComponent.js +161 -0
  177. package/lib/nodes/InlineImageNode/InlineImageNode.d.ts +59 -0
  178. package/lib/nodes/InlineImageNode/InlineImageNode.js +162 -0
  179. package/lib/nodes/KeywordNode.d.ts +14 -0
  180. package/lib/nodes/KeywordNode.js +37 -0
  181. package/lib/nodes/LayoutContainerNode.d.ts +24 -0
  182. package/lib/nodes/LayoutContainerNode.js +95 -0
  183. package/lib/nodes/LayoutItemNode.d.ts +16 -0
  184. package/lib/nodes/LayoutItemNode.js +69 -0
  185. package/lib/nodes/MentionNode.d.ts +20 -0
  186. package/lib/nodes/MentionNode.js +85 -0
  187. package/lib/nodes/PageBreakNode/index.d.ts +17 -0
  188. package/lib/nodes/PageBreakNode/index.js +83 -0
  189. package/lib/nodes/PlaygroundNodes.d.ts +3 -0
  190. package/lib/nodes/PlaygroundNodes.js +75 -0
  191. package/lib/nodes/PollComponent.d.ts +9 -0
  192. package/lib/nodes/PollComponent.js +85 -0
  193. package/lib/nodes/PollNode.d.ts +43 -0
  194. package/lib/nodes/PollNode.js +153 -0
  195. package/lib/nodes/SpecialTextNode.d.ts +24 -0
  196. package/lib/nodes/SpecialTextNode.js +54 -0
  197. package/lib/nodes/StickyComponent.d.ts +10 -0
  198. package/lib/nodes/StickyComponent.js +162 -0
  199. package/lib/nodes/StickyNode.d.ts +31 -0
  200. package/lib/nodes/StickyNode.js +76 -0
  201. package/lib/nodes/TweetNode.d.ts +21 -0
  202. package/lib/nodes/TweetNode.js +119 -0
  203. package/lib/nodes/YouTubeNode.d.ts +22 -0
  204. package/lib/nodes/YouTubeNode.js +84 -0
  205. package/lib/plugins/ActionsPlugin/index.d.ts +5 -0
  206. package/lib/plugins/ActionsPlugin/index.js +168 -0
  207. package/lib/plugins/AutoEmbedPlugin/index.d.ts +19 -0
  208. package/lib/plugins/AutoEmbedPlugin/index.js +158 -0
  209. package/lib/plugins/AutoLinkPlugin/index.d.ts +2 -0
  210. package/lib/plugins/AutoLinkPlugin/index.js +15 -0
  211. package/lib/plugins/AutocompletePlugin/index.d.ts +10 -0
  212. package/lib/plugins/AutocompletePlugin/index.js +2477 -0
  213. package/lib/plugins/CodeActionMenuPlugin/components/CopyButton/index.d.ts +7 -0
  214. package/lib/plugins/CodeActionMenuPlugin/components/CopyButton/index.js +46 -0
  215. package/lib/plugins/CodeActionMenuPlugin/components/PrettierButton/index.d.ts +17 -0
  216. package/lib/plugins/CodeActionMenuPlugin/components/PrettierButton/index.js +115 -0
  217. package/lib/plugins/CodeActionMenuPlugin/index.d.ts +5 -0
  218. package/lib/plugins/CodeActionMenuPlugin/index.js +104 -0
  219. package/lib/plugins/CodeActionMenuPlugin/utils.d.ts +1 -0
  220. package/lib/plugins/CodeActionMenuPlugin/utils.js +22 -0
  221. package/lib/plugins/CodeHighlightPrismPlugin/index.d.ts +2 -0
  222. package/lib/plugins/CodeHighlightPrismPlugin/index.js +14 -0
  223. package/lib/plugins/CodeHighlightShikiPlugin/index.d.ts +2 -0
  224. package/lib/plugins/CodeHighlightShikiPlugin/index.js +14 -0
  225. package/lib/plugins/CollapsiblePlugin/CollapsibleContainerNode.d.ts +25 -0
  226. package/lib/plugins/CollapsiblePlugin/CollapsibleContainerNode.js +135 -0
  227. package/lib/plugins/CollapsiblePlugin/CollapsibleContentNode.d.ts +16 -0
  228. package/lib/plugins/CollapsiblePlugin/CollapsibleContentNode.js +83 -0
  229. package/lib/plugins/CollapsiblePlugin/CollapsibleTitleNode.d.ts +16 -0
  230. package/lib/plugins/CollapsiblePlugin/CollapsibleTitleNode.js +85 -0
  231. package/lib/plugins/CollapsiblePlugin/CollapsibleUtils.d.ts +2 -0
  232. package/lib/plugins/CollapsiblePlugin/CollapsibleUtils.js +12 -0
  233. package/lib/plugins/CollapsiblePlugin/index.d.ts +3 -0
  234. package/lib/plugins/CollapsiblePlugin/index.js +132 -0
  235. package/lib/plugins/CommentPlugin/index.d.ts +9 -0
  236. package/lib/plugins/CommentPlugin/index.js +460 -0
  237. package/lib/plugins/ComponentPickerPlugin/index.d.ts +2 -0
  238. package/lib/plugins/ComponentPickerPlugin/index.js +276 -0
  239. package/lib/plugins/ContextMenuPlugin/index.d.ts +2 -0
  240. package/lib/plugins/ContextMenuPlugin/index.js +112 -0
  241. package/lib/plugins/CounterPlugin/index.d.ts +3 -0
  242. package/lib/plugins/CounterPlugin/index.js +24 -0
  243. package/lib/plugins/DateTimePlugin/index.d.ts +8 -0
  244. package/lib/plugins/DateTimePlugin/index.js +28 -0
  245. package/lib/plugins/DebugPlugin/index.d.ts +3 -0
  246. package/lib/plugins/DebugPlugin/index.js +219 -0
  247. package/lib/plugins/DocsPlugin/index.d.ts +2 -0
  248. package/lib/plugins/DocsPlugin/index.js +4 -0
  249. package/lib/plugins/DragDropPastePlugin/index.d.ts +1 -0
  250. package/lib/plugins/DragDropPastePlugin/index.js +37 -0
  251. package/lib/plugins/DraggableBlockPlugin/index.d.ts +12 -0
  252. package/lib/plugins/DraggableBlockPlugin/index.js +36 -0
  253. package/lib/plugins/EmojiPickerPlugin/index.d.ts +1 -0
  254. package/lib/plugins/EmojiPickerPlugin/index.js +84 -0
  255. package/lib/plugins/EmojisPlugin/index.d.ts +2 -0
  256. package/lib/plugins/EmojisPlugin/index.js +56 -0
  257. package/lib/plugins/EquationsPlugin/index.d.ts +14 -0
  258. package/lib/plugins/EquationsPlugin/index.js +34 -0
  259. package/lib/plugins/ExcalidrawPlugin/index.d.ts +5 -0
  260. package/lib/plugins/ExcalidrawPlugin/index.js +44 -0
  261. package/lib/plugins/FigmaPlugin/index.d.ts +4 -0
  262. package/lib/plugins/FigmaPlugin/index.js +24 -0
  263. package/lib/plugins/FloatingLinkEditorPlugin/index.d.ts +15 -0
  264. package/lib/plugins/FloatingLinkEditorPlugin/index.js +280 -0
  265. package/lib/plugins/FloatingTextFormatToolbarPlugin/index.d.ts +7 -0
  266. package/lib/plugins/FloatingTextFormatToolbarPlugin/index.js +219 -0
  267. package/lib/plugins/ImagesPlugin/index.d.ts +24 -0
  268. package/lib/plugins/ImagesPlugin/index.js +195 -0
  269. package/lib/plugins/InlineImagePlugin/index.d.ts +17 -0
  270. package/lib/plugins/InlineImagePlugin/index.js +180 -0
  271. package/lib/plugins/KeywordsPlugin/index.d.ts +2 -0
  272. package/lib/plugins/KeywordsPlugin/index.js +35 -0
  273. package/lib/plugins/LayoutPlugin/InsertLayoutDialog.d.ts +6 -0
  274. package/lib/plugins/LayoutPlugin/InsertLayoutDialog.js +21 -0
  275. package/lib/plugins/LayoutPlugin/LayoutPlugin.d.ts +7 -0
  276. package/lib/plugins/LayoutPlugin/LayoutPlugin.js +135 -0
  277. package/lib/plugins/LinkPlugin/index.d.ts +6 -0
  278. package/lib/plugins/LinkPlugin/index.js +11 -0
  279. package/lib/plugins/MarkdownShortcutPlugin/index.d.ts +2 -0
  280. package/lib/plugins/MarkdownShortcutPlugin/index.js +6 -0
  281. package/lib/plugins/MarkdownTransformers/index.d.ts +8 -0
  282. package/lib/plugins/MarkdownTransformers/index.js +238 -0
  283. package/lib/plugins/MaxLengthPlugin/index.d.ts +3 -0
  284. package/lib/plugins/MaxLengthPlugin/index.js +41 -0
  285. package/lib/plugins/MentionsPlugin/index.d.ts +2 -0
  286. package/lib/plugins/MentionsPlugin/index.js +564 -0
  287. package/lib/plugins/PageBreakPlugin/index.d.ts +4 -0
  288. package/lib/plugins/PageBreakPlugin/index.js +31 -0
  289. package/lib/plugins/PasteLogPlugin/index.d.ts +2 -0
  290. package/lib/plugins/PasteLogPlugin/index.js +27 -0
  291. package/lib/plugins/PollPlugin/index.d.ts +8 -0
  292. package/lib/plugins/PollPlugin/index.js +38 -0
  293. package/lib/plugins/ShortcutsPlugin/index.d.ts +6 -0
  294. package/lib/plugins/ShortcutsPlugin/index.js +116 -0
  295. package/lib/plugins/ShortcutsPlugin/shortcuts.d.ts +59 -0
  296. package/lib/plugins/ShortcutsPlugin/shortcuts.js +173 -0
  297. package/lib/plugins/SpecialTextPlugin/index.d.ts +2 -0
  298. package/lib/plugins/SpecialTextPlugin/index.js +50 -0
  299. package/lib/plugins/SpeechToTextPlugin/index.d.ts +5 -0
  300. package/lib/plugins/SpeechToTextPlugin/index.js +86 -0
  301. package/lib/plugins/StickyPlugin/index.d.ts +2 -0
  302. package/lib/plugins/StickyPlugin/index.js +16 -0
  303. package/lib/plugins/TabFocusPlugin/index.d.ts +1 -0
  304. package/lib/plugins/TabFocusPlugin/index.js +38 -0
  305. package/lib/plugins/TableActionMenuPlugin/index.d.ts +5 -0
  306. package/lib/plugins/TableActionMenuPlugin/index.js +492 -0
  307. package/lib/plugins/TableCellResizer/index.d.ts +3 -0
  308. package/lib/plugins/TableCellResizer/index.js +297 -0
  309. package/lib/plugins/TableHoverActionsPlugin/index.d.ts +4 -0
  310. package/lib/plugins/TableHoverActionsPlugin/index.js +188 -0
  311. package/lib/plugins/TableOfContentsPlugin/index.d.ts +2 -0
  312. package/lib/plugins/TableOfContentsPlugin/index.js +116 -0
  313. package/lib/plugins/TablePlugin.d.ts +31 -0
  314. package/lib/plugins/TablePlugin.js +63 -0
  315. package/lib/plugins/TestRecorderPlugin/index.d.ts +3 -0
  316. package/lib/plugins/TestRecorderPlugin/index.js +346 -0
  317. package/lib/plugins/ToolbarPlugin/fontSize.d.ts +9 -0
  318. package/lib/plugins/ToolbarPlugin/fontSize.js +84 -0
  319. package/lib/plugins/ToolbarPlugin/index.d.ts +9 -0
  320. package/lib/plugins/ToolbarPlugin/index.js +500 -0
  321. package/lib/plugins/ToolbarPlugin/utils.d.ts +26 -0
  322. package/lib/plugins/ToolbarPlugin/utils.js +247 -0
  323. package/lib/plugins/TreeViewPlugin/index.d.ts +2 -0
  324. package/lib/plugins/TreeViewPlugin/index.js +7 -0
  325. package/lib/plugins/TwitterPlugin/index.d.ts +4 -0
  326. package/lib/plugins/TwitterPlugin/index.js +24 -0
  327. package/lib/plugins/TypingPerfPlugin/index.d.ts +2 -0
  328. package/lib/plugins/TypingPerfPlugin/index.js +97 -0
  329. package/lib/plugins/YouTubePlugin/index.d.ts +4 -0
  330. package/lib/plugins/YouTubePlugin/index.js +24 -0
  331. package/lib/server/validation.d.ts +1 -0
  332. package/lib/server/validation.js +115 -0
  333. package/lib/setupEnv.d.ts +2 -0
  334. package/lib/setupEnv.js +29 -0
  335. package/lib/themes/CommentEditorTheme.d.ts +4 -0
  336. package/lib/themes/CommentEditorTheme.js +11 -0
  337. package/lib/themes/PlaygroundEditorTheme.d.ts +4 -0
  338. package/lib/themes/PlaygroundEditorTheme.js +124 -0
  339. package/lib/themes/StickyEditorTheme.d.ts +4 -0
  340. package/lib/themes/StickyEditorTheme.js +11 -0
  341. package/lib/tyes.dt.d.ts +12 -0
  342. package/lib/tyes.dt.js +4 -0
  343. package/lib/ui/Button.d.ts +12 -0
  344. package/lib/ui/Button.js +6 -0
  345. package/lib/ui/ColorPicker.d.ts +14 -0
  346. package/lib/ui/ColorPicker.js +219 -0
  347. package/lib/ui/ContentEditable.d.ts +9 -0
  348. package/lib/ui/ContentEditable.js +6 -0
  349. package/lib/ui/Dialog.d.ts +10 -0
  350. package/lib/ui/Dialog.js +8 -0
  351. package/lib/ui/DropDown.d.ts +18 -0
  352. package/lib/ui/DropDown.js +133 -0
  353. package/lib/ui/DropdownColorPicker.d.ts +13 -0
  354. package/lib/ui/DropdownColorPicker.js +6 -0
  355. package/lib/ui/EquationEditor.d.ts +8 -0
  356. package/lib/ui/EquationEditor.js +11 -0
  357. package/lib/ui/ExcalidrawModal.d.ts +42 -0
  358. package/lib/ui/ExcalidrawModal.js +103 -0
  359. package/lib/ui/FileInput.d.ts +10 -0
  360. package/lib/ui/FileInput.js +5 -0
  361. package/lib/ui/FlashMessage.d.ts +7 -0
  362. package/lib/ui/FlashMessage.js +6 -0
  363. package/lib/ui/ImageResizer.d.ts +17 -0
  364. package/lib/ui/ImageResizer.js +171 -0
  365. package/lib/ui/KatexEquationAlterer.d.ts +8 -0
  366. package/lib/ui/KatexEquationAlterer.js +23 -0
  367. package/lib/ui/KatexRenderer.d.ts +6 -0
  368. package/lib/ui/KatexRenderer.js +24 -0
  369. package/lib/ui/Modal.d.ts +9 -0
  370. package/lib/ui/Modal.js +48 -0
  371. package/lib/ui/Select.d.ts +8 -0
  372. package/lib/ui/Select.js +5 -0
  373. package/lib/ui/Switch.d.ts +8 -0
  374. package/lib/ui/Switch.js +6 -0
  375. package/lib/ui/TextInput.d.ts +13 -0
  376. package/lib/ui/TextInput.js +7 -0
  377. package/lib/utils/docSerialization.d.ts +3 -0
  378. package/lib/utils/docSerialization.js +60 -0
  379. package/lib/utils/emoji-list.d.ts +20 -0
  380. package/lib/utils/emoji-list.js +16609 -0
  381. package/lib/utils/getDOMRangeRect.d.ts +8 -0
  382. package/lib/utils/getDOMRangeRect.js +26 -0
  383. package/lib/utils/getSelectedNode.d.ts +2 -0
  384. package/lib/utils/getSelectedNode.js +28 -0
  385. package/lib/utils/getThemeSelector.d.ts +2 -0
  386. package/lib/utils/getThemeSelector.js +14 -0
  387. package/lib/utils/isMobileWidth.d.ts +7 -0
  388. package/lib/utils/isMobileWidth.js +11 -0
  389. package/lib/utils/joinClasses.d.ts +1 -0
  390. package/lib/utils/joinClasses.js +7 -0
  391. package/lib/utils/setFloatingElemPosition.d.ts +1 -0
  392. package/lib/utils/setFloatingElemPosition.js +59 -0
  393. package/lib/utils/setFloatingElemPositionForLinkEditor.d.ts +1 -0
  394. package/lib/utils/setFloatingElemPositionForLinkEditor.js +36 -0
  395. package/lib/utils/swipe.d.ts +4 -0
  396. package/lib/utils/swipe.js +94 -0
  397. package/lib/utils/url.d.ts +2 -0
  398. package/lib/utils/url.js +31 -0
  399. package/package.json +1 -1
@@ -0,0 +1,328 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the MIT License.
4
+ */
5
+ import { COMMAND_PRIORITY_LOW } from 'lexical';
6
+ import { useEffect, useState } from 'react';
7
+ import { Array as YArray, Map as YMap, YArrayEvent, } from 'yjs';
8
+ import { TOGGLE_CONNECT_COMMAND } from '../collab/yjs/State';
9
+ function createUID() {
10
+ return Math.random()
11
+ .toString(36)
12
+ .replace(/[^a-z]+/g, '')
13
+ .substring(0, 5);
14
+ }
15
+ export function createComment(content, author, id, timeStamp, deleted) {
16
+ return {
17
+ author,
18
+ content,
19
+ deleted: deleted === undefined ? false : deleted,
20
+ id: id === undefined ? createUID() : id,
21
+ timeStamp: timeStamp === undefined
22
+ ? performance.timeOrigin + performance.now()
23
+ : timeStamp,
24
+ type: 'comment',
25
+ };
26
+ }
27
+ export function createThread(quote, comments, id) {
28
+ return {
29
+ comments,
30
+ id: id === undefined ? createUID() : id,
31
+ quote,
32
+ type: 'thread',
33
+ };
34
+ }
35
+ function cloneThread(thread) {
36
+ return {
37
+ comments: Array.from(thread.comments),
38
+ id: thread.id,
39
+ quote: thread.quote,
40
+ type: 'thread',
41
+ };
42
+ }
43
+ function markDeleted(comment) {
44
+ return {
45
+ author: comment.author,
46
+ content: '[Deleted Comment]',
47
+ deleted: true,
48
+ id: comment.id,
49
+ timeStamp: comment.timeStamp,
50
+ type: 'comment',
51
+ };
52
+ }
53
+ function triggerOnChange(commentStore) {
54
+ const listeners = commentStore._changeListeners;
55
+ for (const listener of listeners) {
56
+ listener();
57
+ }
58
+ }
59
+ export class CommentStore {
60
+ _editor;
61
+ _comments;
62
+ _changeListeners;
63
+ _collabProvider;
64
+ constructor(editor) {
65
+ this._comments = [];
66
+ this._editor = editor;
67
+ this._collabProvider = null;
68
+ this._changeListeners = new Set();
69
+ }
70
+ isCollaborative() {
71
+ return this._collabProvider !== null;
72
+ }
73
+ getComments() {
74
+ return this._comments;
75
+ }
76
+ addComment(commentOrThread, thread, offset) {
77
+ const nextComments = Array.from(this._comments);
78
+ // The YJS types explicitly use `any` as well.
79
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
80
+ const sharedCommentsArray = this._getCollabComments();
81
+ if (thread !== undefined && commentOrThread.type === 'comment') {
82
+ for (let i = 0; i < nextComments.length; i++) {
83
+ const comment = nextComments[i];
84
+ if (comment.type === 'thread' && comment.id === thread.id) {
85
+ const newThread = cloneThread(comment);
86
+ nextComments.splice(i, 1, newThread);
87
+ const insertOffset = offset !== undefined ? offset : newThread.comments.length;
88
+ if (this.isCollaborative() && sharedCommentsArray !== null) {
89
+ const parentSharedArray = sharedCommentsArray
90
+ .get(i)
91
+ .get('comments');
92
+ this._withRemoteTransaction(() => {
93
+ const sharedMap = this._createCollabSharedMap(commentOrThread);
94
+ parentSharedArray.insert(insertOffset, [sharedMap]);
95
+ });
96
+ }
97
+ newThread.comments.splice(insertOffset, 0, commentOrThread);
98
+ break;
99
+ }
100
+ }
101
+ }
102
+ else {
103
+ const insertOffset = offset !== undefined ? offset : nextComments.length;
104
+ if (this.isCollaborative() && sharedCommentsArray !== null) {
105
+ this._withRemoteTransaction(() => {
106
+ const sharedMap = this._createCollabSharedMap(commentOrThread);
107
+ sharedCommentsArray.insert(insertOffset, [sharedMap]);
108
+ });
109
+ }
110
+ nextComments.splice(insertOffset, 0, commentOrThread);
111
+ }
112
+ this._comments = nextComments;
113
+ triggerOnChange(this);
114
+ }
115
+ deleteCommentOrThread(commentOrThread, thread) {
116
+ const nextComments = Array.from(this._comments);
117
+ // The YJS types explicitly use `any` as well.
118
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
119
+ const sharedCommentsArray = this._getCollabComments();
120
+ let commentIndex = null;
121
+ if (thread !== undefined) {
122
+ for (let i = 0; i < nextComments.length; i++) {
123
+ const nextComment = nextComments[i];
124
+ if (nextComment.type === 'thread' && nextComment.id === thread.id) {
125
+ const newThread = cloneThread(nextComment);
126
+ nextComments.splice(i, 1, newThread);
127
+ const threadComments = newThread.comments;
128
+ commentIndex = threadComments.indexOf(commentOrThread);
129
+ if (this.isCollaborative() && sharedCommentsArray !== null) {
130
+ const parentSharedArray = sharedCommentsArray
131
+ .get(i)
132
+ .get('comments');
133
+ this._withRemoteTransaction(() => {
134
+ parentSharedArray.delete(commentIndex);
135
+ });
136
+ }
137
+ threadComments.splice(commentIndex, 1);
138
+ break;
139
+ }
140
+ }
141
+ }
142
+ else {
143
+ commentIndex = nextComments.indexOf(commentOrThread);
144
+ if (this.isCollaborative() && sharedCommentsArray !== null) {
145
+ this._withRemoteTransaction(() => {
146
+ sharedCommentsArray.delete(commentIndex);
147
+ });
148
+ }
149
+ nextComments.splice(commentIndex, 1);
150
+ }
151
+ this._comments = nextComments;
152
+ triggerOnChange(this);
153
+ if (commentOrThread.type === 'comment') {
154
+ return {
155
+ index: commentIndex,
156
+ markedComment: markDeleted(commentOrThread),
157
+ };
158
+ }
159
+ return null;
160
+ }
161
+ registerOnChange(onChange) {
162
+ const changeListeners = this._changeListeners;
163
+ changeListeners.add(onChange);
164
+ return () => {
165
+ changeListeners.delete(onChange);
166
+ };
167
+ }
168
+ _withRemoteTransaction(fn) {
169
+ const provider = this._collabProvider;
170
+ if (provider !== null) {
171
+ const doc = provider.doc;
172
+ doc.transact(fn, this);
173
+ }
174
+ }
175
+ _withLocalTransaction(fn) {
176
+ const collabProvider = this._collabProvider;
177
+ try {
178
+ this._collabProvider = null;
179
+ fn();
180
+ }
181
+ finally {
182
+ this._collabProvider = collabProvider;
183
+ }
184
+ }
185
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
186
+ _getCollabComments() {
187
+ const provider = this._collabProvider;
188
+ if (provider !== null) {
189
+ const doc = provider.doc;
190
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
191
+ return doc.get('comments', YArray);
192
+ }
193
+ return null;
194
+ }
195
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
196
+ _createCollabSharedMap(commentOrThread) {
197
+ const sharedMap = new YMap();
198
+ const type = commentOrThread.type;
199
+ const id = commentOrThread.id;
200
+ sharedMap.set('type', type);
201
+ sharedMap.set('id', id);
202
+ if (type === 'comment') {
203
+ sharedMap.set('author', commentOrThread.author);
204
+ sharedMap.set('content', commentOrThread.content);
205
+ sharedMap.set('deleted', commentOrThread.deleted);
206
+ sharedMap.set('timeStamp', commentOrThread.timeStamp);
207
+ }
208
+ else {
209
+ sharedMap.set('quote', commentOrThread.quote);
210
+ const commentsArray = new YArray();
211
+ commentOrThread.comments.forEach((comment, i) => {
212
+ const sharedChildComment = this._createCollabSharedMap(comment);
213
+ commentsArray.insert(i, [sharedChildComment]);
214
+ });
215
+ sharedMap.set('comments', commentsArray);
216
+ }
217
+ return sharedMap;
218
+ }
219
+ registerCollaboration(provider) {
220
+ this._collabProvider = provider;
221
+ const sharedCommentsArray = this._getCollabComments();
222
+ const connect = () => {
223
+ provider.connect();
224
+ };
225
+ const disconnect = () => {
226
+ try {
227
+ provider.disconnect();
228
+ }
229
+ catch (e) {
230
+ // Do nothing
231
+ }
232
+ };
233
+ const unsubscribe = this._editor.registerCommand(TOGGLE_CONNECT_COMMAND, (payload) => {
234
+ if (connect !== undefined && disconnect !== undefined) {
235
+ const shouldConnect = payload;
236
+ if (shouldConnect) {
237
+ // eslint-disable-next-line no-console
238
+ console.log('Comments connected!');
239
+ connect();
240
+ }
241
+ else {
242
+ // eslint-disable-next-line no-console
243
+ console.log('Comments disconnected!');
244
+ disconnect();
245
+ }
246
+ }
247
+ return false;
248
+ }, COMMAND_PRIORITY_LOW);
249
+ const onSharedCommentChanges = (
250
+ // The YJS types explicitly use `any` as well.
251
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
252
+ events, transaction) => {
253
+ if (transaction.origin !== this) {
254
+ for (let i = 0; i < events.length; i++) {
255
+ const event = events[i];
256
+ if (event instanceof YArrayEvent) {
257
+ const target = event.target;
258
+ const deltas = event.delta;
259
+ let offset = 0;
260
+ for (let s = 0; s < deltas.length; s++) {
261
+ const delta = deltas[s];
262
+ const insert = delta.insert;
263
+ const retain = delta.retain;
264
+ const del = delta.delete;
265
+ const parent = target.parent;
266
+ const parentThread = target === sharedCommentsArray
267
+ ? undefined
268
+ : parent instanceof YMap &&
269
+ this._comments.find((t) => t.id === parent.get('id'));
270
+ if (Array.isArray(insert)) {
271
+ insert
272
+ .slice()
273
+ .reverse()
274
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
275
+ .forEach((map) => {
276
+ const id = map.get('id');
277
+ const type = map.get('type');
278
+ const commentOrThread = type === 'thread'
279
+ ? createThread(map.get('quote'), map
280
+ .get('comments')
281
+ .toArray()
282
+ .map((innerComment) => createComment(innerComment.get('content'), innerComment.get('author'), innerComment.get('id'), innerComment.get('timeStamp'), innerComment.get('deleted'))), id)
283
+ : createComment(map.get('content'), map.get('author'), id, map.get('timeStamp'), map.get('deleted'));
284
+ this._withLocalTransaction(() => {
285
+ this.addComment(commentOrThread, parentThread, offset);
286
+ });
287
+ });
288
+ }
289
+ else if (typeof retain === 'number') {
290
+ offset += retain;
291
+ }
292
+ else if (typeof del === 'number') {
293
+ for (let d = 0; d < del; d++) {
294
+ const commentOrThread = parentThread === undefined || !parentThread
295
+ ? this._comments[offset]
296
+ : parentThread.comments[offset];
297
+ this._withLocalTransaction(() => {
298
+ this.deleteCommentOrThread(commentOrThread, parentThread);
299
+ });
300
+ offset++;
301
+ }
302
+ }
303
+ }
304
+ }
305
+ }
306
+ }
307
+ };
308
+ if (sharedCommentsArray === null) {
309
+ return () => null;
310
+ }
311
+ sharedCommentsArray.observeDeep(onSharedCommentChanges);
312
+ connect();
313
+ return () => {
314
+ sharedCommentsArray.unobserveDeep(onSharedCommentChanges);
315
+ unsubscribe();
316
+ this._collabProvider = null;
317
+ };
318
+ }
319
+ }
320
+ export function useCommentStore(commentStore) {
321
+ const [comments, setComments] = useState(commentStore.getComments());
322
+ useEffect(() => {
323
+ return commentStore.registerOnChange(() => {
324
+ setComments(commentStore.getComments());
325
+ });
326
+ }, [commentStore]);
327
+ return comments;
328
+ }
@@ -0,0 +1,7 @@
1
+ import type { JSX } from 'react';
2
+ import { ReactNode } from 'react';
3
+ export type ShowFlashMessage = (message?: React.ReactNode, duration?: number) => void;
4
+ export declare const FlashMessageContext: ({ children, }: {
5
+ children: ReactNode;
6
+ }) => JSX.Element;
7
+ export declare const useFlashMessageContext: () => ShowFlashMessage;
@@ -0,0 +1,24 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { createContext, useCallback, useContext, useEffect, useState, } from 'react';
3
+ import FlashMessage from '../ui/FlashMessage';
4
+ const Context = createContext(undefined);
5
+ const INITIAL_STATE = {};
6
+ const DEFAULT_DURATION = 1000;
7
+ export const FlashMessageContext = ({ children, }) => {
8
+ const [props, setProps] = useState(INITIAL_STATE);
9
+ const showFlashMessage = useCallback((message, duration) => setProps(message ? { duration, message } : INITIAL_STATE), []);
10
+ useEffect(() => {
11
+ if (props.message) {
12
+ const timeoutId = setTimeout(() => setProps(INITIAL_STATE), props.duration ?? DEFAULT_DURATION);
13
+ return () => clearTimeout(timeoutId);
14
+ }
15
+ }, [props]);
16
+ return (_jsxs(Context.Provider, { value: showFlashMessage, children: [children, props.message && _jsx(FlashMessage, { children: props.message })] }));
17
+ };
18
+ export const useFlashMessageContext = () => {
19
+ const ctx = useContext(Context);
20
+ if (!ctx) {
21
+ throw new Error('Missing FlashMessageContext');
22
+ }
23
+ return ctx;
24
+ };
@@ -0,0 +1,12 @@
1
+ import type { SettingName } from '../appSettings';
2
+ import type { JSX } from 'react';
3
+ import { ReactNode } from 'react';
4
+ type SettingsContextShape = {
5
+ setOption: (name: SettingName, value: boolean) => void;
6
+ settings: Record<SettingName, boolean>;
7
+ };
8
+ export declare const SettingsContext: ({ children, }: {
9
+ children: ReactNode;
10
+ }) => JSX.Element;
11
+ export declare const useSettings: () => SettingsContextShape;
12
+ export {};
@@ -0,0 +1,38 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useCallback, useContext, useMemo, useState, } from 'react';
3
+ import { DEFAULT_SETTINGS, INITIAL_SETTINGS } from '../appSettings';
4
+ const Context = createContext({
5
+ setOption: (name, value) => {
6
+ return;
7
+ },
8
+ settings: INITIAL_SETTINGS,
9
+ });
10
+ export const SettingsContext = ({ children, }) => {
11
+ const [settings, setSettings] = useState(INITIAL_SETTINGS);
12
+ const setOption = useCallback((setting, value) => {
13
+ setSettings((options) => ({
14
+ ...options,
15
+ [setting]: value,
16
+ }));
17
+ setURLParam(setting, value);
18
+ }, []);
19
+ const contextValue = useMemo(() => {
20
+ return { setOption, settings };
21
+ }, [setOption, settings]);
22
+ return _jsx(Context.Provider, { value: contextValue, children: children });
23
+ };
24
+ export const useSettings = () => {
25
+ return useContext(Context);
26
+ };
27
+ function setURLParam(param, value) {
28
+ const url = new URL(window.location.href);
29
+ const params = new URLSearchParams(url.search);
30
+ if (value !== DEFAULT_SETTINGS[param]) {
31
+ params.set(param, String(value));
32
+ }
33
+ else {
34
+ params.delete(param);
35
+ }
36
+ url.search = params.toString();
37
+ window.history.pushState(null, '', url.toString());
38
+ }
@@ -0,0 +1,11 @@
1
+ import type { HistoryState } from '@lexical/react/LexicalHistoryPlugin';
2
+ import type { JSX } from 'react';
3
+ import { ReactNode } from 'react';
4
+ type ContextShape = {
5
+ historyState?: HistoryState;
6
+ };
7
+ export declare const SharedHistoryContext: ({ children, }: {
8
+ children: ReactNode;
9
+ }) => JSX.Element;
10
+ export declare const useSharedHistoryContext: () => ContextShape;
11
+ export {};
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createEmptyHistoryState } from '@lexical/react/LexicalHistoryPlugin';
3
+ import { createContext, useContext, useMemo } from 'react';
4
+ const Context = createContext({});
5
+ export const SharedHistoryContext = ({ children, }) => {
6
+ const historyContext = useMemo(() => ({ historyState: createEmptyHistoryState() }), []);
7
+ return _jsx(Context.Provider, { value: historyContext, children: children });
8
+ };
9
+ export const useSharedHistoryContext = () => {
10
+ return useContext(Context);
11
+ };
@@ -0,0 +1,65 @@
1
+ import type { JSX } from 'react';
2
+ import { ElementFormatType } from 'lexical';
3
+ import { ReactNode } from 'react';
4
+ export declare const MIN_ALLOWED_FONT_SIZE = 8;
5
+ export declare const MAX_ALLOWED_FONT_SIZE = 72;
6
+ export declare const DEFAULT_FONT_SIZE = 15;
7
+ declare const rootTypeToRootName: {
8
+ root: string;
9
+ table: string;
10
+ };
11
+ export declare const blockTypeToBlockName: {
12
+ bullet: string;
13
+ check: string;
14
+ code: string;
15
+ h1: string;
16
+ h2: string;
17
+ h3: string;
18
+ h4: string;
19
+ h5: string;
20
+ h6: string;
21
+ number: string;
22
+ paragraph: string;
23
+ quote: string;
24
+ };
25
+ declare const INITIAL_TOOLBAR_STATE: {
26
+ bgColor: string;
27
+ blockType: keyof typeof blockTypeToBlockName;
28
+ canRedo: boolean;
29
+ canUndo: boolean;
30
+ codeLanguage: string;
31
+ codeTheme: string;
32
+ elementFormat: ElementFormatType;
33
+ fontColor: string;
34
+ fontFamily: string;
35
+ fontSize: string;
36
+ fontSizeInputValue: string;
37
+ isBold: boolean;
38
+ isCode: boolean;
39
+ isHighlight: boolean;
40
+ isImageCaption: boolean;
41
+ isItalic: boolean;
42
+ isLink: boolean;
43
+ isRTL: boolean;
44
+ isStrikethrough: boolean;
45
+ isSubscript: boolean;
46
+ isSuperscript: boolean;
47
+ isUnderline: boolean;
48
+ isLowercase: boolean;
49
+ isUppercase: boolean;
50
+ isCapitalize: boolean;
51
+ rootType: keyof typeof rootTypeToRootName;
52
+ listStartNumber: number | null;
53
+ };
54
+ type ToolbarState = typeof INITIAL_TOOLBAR_STATE;
55
+ type ToolbarStateKey = keyof ToolbarState;
56
+ type ToolbarStateValue<Key extends ToolbarStateKey> = ToolbarState[Key];
57
+ type ContextShape = {
58
+ toolbarState: ToolbarState;
59
+ updateToolbarState<Key extends ToolbarStateKey>(key: Key, value: ToolbarStateValue<Key>): void;
60
+ };
61
+ export declare const ToolbarContext: ({ children, }: {
62
+ children: ReactNode;
63
+ }) => JSX.Element;
64
+ export declare const useToolbarState: () => ContextShape;
65
+ export {};
@@ -0,0 +1,84 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useCallback, useContext, useEffect, useMemo, useState, } from 'react';
3
+ export const MIN_ALLOWED_FONT_SIZE = 8;
4
+ export const MAX_ALLOWED_FONT_SIZE = 72;
5
+ export const DEFAULT_FONT_SIZE = 15;
6
+ const rootTypeToRootName = {
7
+ root: 'Root',
8
+ table: 'Table',
9
+ };
10
+ export const blockTypeToBlockName = {
11
+ bullet: 'Bulleted List',
12
+ check: 'Check List',
13
+ code: 'Code Block',
14
+ h1: 'Heading 1',
15
+ h2: 'Heading 2',
16
+ h3: 'Heading 3',
17
+ h4: 'Heading 4',
18
+ h5: 'Heading 5',
19
+ h6: 'Heading 6',
20
+ number: 'Numbered List',
21
+ paragraph: 'Normal',
22
+ quote: 'Quote',
23
+ };
24
+ //disable eslint sorting rule for quick reference to toolbar state
25
+ /* eslint-disable sort-keys-fix/sort-keys-fix */
26
+ const INITIAL_TOOLBAR_STATE = {
27
+ bgColor: '#fff',
28
+ blockType: 'paragraph',
29
+ canRedo: false,
30
+ canUndo: false,
31
+ codeLanguage: '',
32
+ codeTheme: '',
33
+ elementFormat: 'left',
34
+ fontColor: '#000',
35
+ fontFamily: 'Arial',
36
+ // Current font size in px
37
+ fontSize: `${DEFAULT_FONT_SIZE}px`,
38
+ // Font size input value - for controlled input
39
+ fontSizeInputValue: `${DEFAULT_FONT_SIZE}`,
40
+ isBold: false,
41
+ isCode: false,
42
+ isHighlight: false,
43
+ isImageCaption: false,
44
+ isItalic: false,
45
+ isLink: false,
46
+ isRTL: false,
47
+ isStrikethrough: false,
48
+ isSubscript: false,
49
+ isSuperscript: false,
50
+ isUnderline: false,
51
+ isLowercase: false,
52
+ isUppercase: false,
53
+ isCapitalize: false,
54
+ rootType: 'root',
55
+ listStartNumber: null,
56
+ };
57
+ const Context = createContext(undefined);
58
+ export const ToolbarContext = ({ children, }) => {
59
+ const [toolbarState, setToolbarState] = useState(INITIAL_TOOLBAR_STATE);
60
+ const selectionFontSize = toolbarState.fontSize;
61
+ const updateToolbarState = useCallback((key, value) => {
62
+ setToolbarState((prev) => ({
63
+ ...prev,
64
+ [key]: value,
65
+ }));
66
+ }, []);
67
+ useEffect(() => {
68
+ updateToolbarState('fontSizeInputValue', selectionFontSize.slice(0, -2));
69
+ }, [selectionFontSize, updateToolbarState]);
70
+ const contextValue = useMemo(() => {
71
+ return {
72
+ toolbarState,
73
+ updateToolbarState,
74
+ };
75
+ }, [toolbarState, updateToolbarState]);
76
+ return _jsx(Context.Provider, { value: contextValue, children: children });
77
+ };
78
+ export const useToolbarState = () => {
79
+ const context = useContext(Context);
80
+ if (context === undefined) {
81
+ throw new Error('useToolbarState must be used within a ToolbarProvider');
82
+ }
83
+ return context;
84
+ };
package/lib/demo.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ import 'prismjs/components/prism-clike';
2
+ import 'prismjs/components/prism-javascript';
3
+ import 'prismjs/components/prism-markup';
4
+ import 'prismjs/components/prism-markdown';
5
+ import 'prismjs/components/prism-c';
6
+ import 'prismjs/components/prism-css';
7
+ import 'prismjs/components/prism-objectivec';
8
+ import 'prismjs/components/prism-sql';
9
+ import 'prismjs/components/prism-python';
10
+ import 'prismjs/components/prism-rust';
11
+ import 'prismjs/components/prism-swift';
12
+ import './index.css';
package/lib/demo.js ADDED
@@ -0,0 +1,45 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2023-2025 Datalayer, Inc.
4
+ * Distributed under the terms of the MIT License.
5
+ */
6
+ import { createRoot } from 'react-dom/client';
7
+ // setupEnv must load before App because lexical computes CAN_USE_BEFORE_INPUT
8
+ // at import time (disableBeforeInput is used to test legacy events)
9
+ import setupEnv from './setupEnv';
10
+ // Initialize Prism.js for code highlighting
11
+ import Prism from 'prismjs';
12
+ import 'prismjs/components/prism-clike';
13
+ import 'prismjs/components/prism-javascript';
14
+ import 'prismjs/components/prism-markup';
15
+ import 'prismjs/components/prism-markdown';
16
+ import 'prismjs/components/prism-c';
17
+ import 'prismjs/components/prism-css';
18
+ import 'prismjs/components/prism-objectivec';
19
+ import 'prismjs/components/prism-sql';
20
+ import 'prismjs/components/prism-python';
21
+ import 'prismjs/components/prism-rust';
22
+ import 'prismjs/components/prism-swift';
23
+ // Make Prism globally available
24
+ window.Prism = Prism;
25
+ import App from './App';
26
+ import './index.css';
27
+ if (setupEnv.disableBeforeInput) {
28
+ // vite is really aggressive about tree-shaking, this
29
+ // ensures that the side-effects of importing setupEnv happens
30
+ }
31
+ // Handle runtime errors
32
+ const showErrorOverlay = (err) => {
33
+ const ErrorOverlay = customElements.get('vite-error-overlay');
34
+ if (!ErrorOverlay) {
35
+ return;
36
+ }
37
+ const overlay = new ErrorOverlay(err);
38
+ const body = document.body;
39
+ if (body !== null) {
40
+ body.appendChild(overlay);
41
+ }
42
+ };
43
+ window.addEventListener('error', showErrorOverlay);
44
+ window.addEventListener('unhandledrejection', ({ reason }) => showErrorOverlay(reason));
45
+ createRoot(document.getElementById('root')).render(_jsx(App, {}));
@@ -0,0 +1,2 @@
1
+ import { type ShowFlashMessage } from '../context/FlashMessageContext';
2
+ export default function useFlashMessage(): ShowFlashMessage;
@@ -0,0 +1,8 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the MIT License.
4
+ */
5
+ import { useFlashMessageContext, } from '../context/FlashMessageContext';
6
+ export default function useFlashMessage() {
7
+ return useFlashMessageContext();
8
+ }
@@ -0,0 +1,5 @@
1
+ import type { JSX } from 'react';
2
+ export default function useModal(): [
3
+ JSX.Element | null,
4
+ (title: string, showModal: (onClose: () => void) => JSX.Element) => void
5
+ ];