@datalayer/lexical-loro 0.0.7 → 0.1.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 (406) hide show
  1. package/README.md +24 -137
  2. package/lib/App.d.ts +2 -0
  3. package/lib/App.js +141 -0
  4. package/lib/Editor.d.ts +2 -0
  5. package/lib/Editor.js +111 -0
  6. package/lib/Settings.d.ts +2 -0
  7. package/lib/Settings.js +57 -0
  8. package/lib/appSettings.d.ts +36 -0
  9. package/lib/appSettings.js +44 -0
  10. package/lib/collab/loro/Bindings.d.ts +41 -0
  11. package/lib/collab/loro/Bindings.js +95 -0
  12. package/lib/collab/loro/Debug.d.ts +33 -0
  13. package/lib/collab/loro/Debug.js +448 -0
  14. package/lib/collab/loro/LexicalCollaborationContext.d.ts +19 -0
  15. package/lib/collab/loro/LexicalCollaborationContext.js +48 -0
  16. package/lib/collab/loro/LexicalCollaborationPlugin.d.ts +24 -0
  17. package/lib/collab/loro/LexicalCollaborationPlugin.js +83 -0
  18. package/lib/collab/loro/State.d.ts +53 -0
  19. package/lib/collab/loro/State.js +90 -0
  20. package/lib/collab/loro/components/LoroCollaborationUI.d.ts +13 -0
  21. package/lib/collab/loro/components/LoroCollaborationUI.js +9 -0
  22. package/lib/collab/loro/components/LoroCollaborators.d.ts +8 -0
  23. package/lib/collab/loro/components/LoroCollaborators.js +97 -0
  24. package/lib/collab/loro/components/index.d.ts +2 -0
  25. package/lib/collab/loro/components/index.js +2 -0
  26. package/lib/collab/loro/index.d.ts +6 -0
  27. package/lib/collab/loro/index.js +6 -0
  28. package/lib/collab/loro/integrators/BaseIntegrator.d.ts +14 -0
  29. package/lib/collab/loro/integrators/BaseIntegrator.js +1 -0
  30. package/lib/collab/loro/integrators/CounterIntegrator.d.ts +23 -0
  31. package/lib/collab/loro/integrators/CounterIntegrator.js +40 -0
  32. package/lib/collab/loro/integrators/ListIntegrator.d.ts +23 -0
  33. package/lib/collab/loro/integrators/ListIntegrator.js +49 -0
  34. package/lib/collab/loro/integrators/MapIntegrator.d.ts +24 -0
  35. package/lib/collab/loro/integrators/MapIntegrator.js +177 -0
  36. package/lib/collab/loro/integrators/TextIntegrator.d.ts +25 -0
  37. package/lib/collab/loro/integrators/TextIntegrator.js +51 -0
  38. package/lib/collab/loro/integrators/TreeIntegrator.d.ts +25 -0
  39. package/lib/collab/loro/integrators/TreeIntegrator.js +201 -0
  40. package/lib/collab/loro/nodes/NodeFactory.d.ts +8 -0
  41. package/lib/collab/loro/nodes/NodeFactory.js +105 -0
  42. package/lib/collab/loro/nodes/NodesMapper.d.ts +111 -0
  43. package/lib/collab/loro/nodes/NodesMapper.js +258 -0
  44. package/lib/collab/loro/propagators/DecoratorNodePropagator.d.ts +60 -0
  45. package/lib/collab/loro/propagators/DecoratorNodePropagator.js +302 -0
  46. package/lib/collab/loro/propagators/ElementNodePropagator.d.ts +62 -0
  47. package/lib/collab/loro/propagators/ElementNodePropagator.js +335 -0
  48. package/lib/collab/loro/propagators/LineBreakNodePropagator.d.ts +57 -0
  49. package/lib/collab/loro/propagators/LineBreakNodePropagator.js +196 -0
  50. package/lib/collab/loro/propagators/RootNodePropagator.d.ts +55 -0
  51. package/lib/collab/loro/propagators/RootNodePropagator.js +168 -0
  52. package/lib/collab/loro/propagators/TextNodePropagator.d.ts +60 -0
  53. package/lib/collab/loro/propagators/TextNodePropagator.js +434 -0
  54. package/lib/collab/loro/propagators/index.d.ts +49 -0
  55. package/lib/collab/loro/propagators/index.js +32 -0
  56. package/lib/collab/loro/provider/websocket.d.ts +116 -0
  57. package/lib/collab/loro/provider/websocket.js +907 -0
  58. package/lib/collab/loro/servers/index.d.ts +0 -0
  59. package/lib/collab/loro/servers/index.js +0 -0
  60. package/lib/collab/loro/servers/ws/callback.d.ts +5 -0
  61. package/lib/collab/loro/servers/ws/callback.js +85 -0
  62. package/lib/collab/loro/servers/ws/server.d.ts +2 -0
  63. package/lib/collab/loro/servers/ws/server.js +25 -0
  64. package/lib/collab/loro/servers/ws/utils.d.ts +40 -0
  65. package/lib/collab/loro/servers/ws/utils.js +513 -0
  66. package/lib/collab/loro/sync/SyncCursors.d.ts +32 -0
  67. package/lib/collab/loro/sync/SyncCursors.js +435 -0
  68. package/lib/collab/loro/sync/SyncLexicalToLoro.d.ts +4 -0
  69. package/lib/collab/loro/sync/SyncLexicalToLoro.js +80 -0
  70. package/lib/collab/loro/sync/SyncLoroToLexical.d.ts +5 -0
  71. package/lib/collab/loro/sync/SyncLoroToLexical.js +96 -0
  72. package/lib/collab/loro/types/LexicalNodeData.d.ts +32 -0
  73. package/lib/collab/loro/types/LexicalNodeData.js +71 -0
  74. package/lib/collab/loro/useCollaboration.d.ts +12 -0
  75. package/lib/collab/loro/useCollaboration.js +248 -0
  76. package/lib/collab/loro/utils/InitialContent.d.ts +64 -0
  77. package/lib/collab/loro/utils/InitialContent.js +109 -0
  78. package/lib/collab/loro/utils/LexicalToLoro.d.ts +18 -0
  79. package/lib/collab/loro/utils/LexicalToLoro.js +96 -0
  80. package/lib/collab/loro/utils/Utils.d.ts +44 -0
  81. package/lib/collab/loro/utils/Utils.js +153 -0
  82. package/lib/collab/loro/wsProvider.d.ts +8 -0
  83. package/lib/collab/loro/wsProvider.js +31 -0
  84. package/lib/collab/utils/invariant.d.ts +1 -0
  85. package/lib/collab/utils/invariant.js +11 -0
  86. package/lib/collab/utils/simpleDiffWithCursor.d.ts +5 -0
  87. package/lib/collab/utils/simpleDiffWithCursor.js +31 -0
  88. package/lib/collab/yjs/Bindings.d.ts +23 -0
  89. package/lib/collab/yjs/Bindings.js +26 -0
  90. package/lib/collab/yjs/Debug.d.ts +23 -0
  91. package/lib/collab/yjs/Debug.js +213 -0
  92. package/lib/collab/yjs/LexicalCollaborationContext.d.ts +10 -0
  93. package/lib/collab/yjs/LexicalCollaborationContext.js +37 -0
  94. package/lib/collab/yjs/LexicalCollaborationPlugin.d.ts +21 -0
  95. package/lib/collab/yjs/LexicalCollaborationPlugin.js +63 -0
  96. package/lib/collab/yjs/State.d.ts +51 -0
  97. package/lib/collab/yjs/State.js +35 -0
  98. package/lib/collab/yjs/nodes/AnyCollabNode.d.ts +5 -0
  99. package/lib/collab/yjs/nodes/AnyCollabNode.js +1 -0
  100. package/lib/collab/yjs/nodes/CollabDecoratorNode.d.ts +22 -0
  101. package/lib/collab/yjs/nodes/CollabDecoratorNode.js +64 -0
  102. package/lib/collab/yjs/nodes/CollabElementNode.d.ts +40 -0
  103. package/lib/collab/yjs/nodes/CollabElementNode.js +462 -0
  104. package/lib/collab/yjs/nodes/CollabLineBreakNode.d.ts +19 -0
  105. package/lib/collab/yjs/nodes/CollabLineBreakNode.js +44 -0
  106. package/lib/collab/yjs/nodes/CollabTextNode.d.ts +25 -0
  107. package/lib/collab/yjs/nodes/CollabTextNode.js +103 -0
  108. package/lib/collab/yjs/provider/websocket.d.ts +88 -0
  109. package/lib/collab/yjs/provider/websocket.js +415 -0
  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 +5 -0
  113. package/lib/collab/yjs/servers/ws/callback.js +72 -0
  114. package/lib/collab/yjs/servers/ws/server.d.ts +2 -0
  115. package/lib/collab/yjs/servers/ws/server.js +25 -0
  116. package/lib/collab/yjs/servers/ws/utils.d.ts +49 -0
  117. package/lib/collab/yjs/servers/ws/utils.js +284 -0
  118. package/lib/collab/yjs/sync/SyncCursors.d.ts +39 -0
  119. package/lib/collab/yjs/sync/SyncCursors.js +351 -0
  120. package/lib/collab/yjs/sync/SyncEditorStates.d.ts +10 -0
  121. package/lib/collab/yjs/sync/SyncEditorStates.js +200 -0
  122. package/lib/collab/yjs/useCollaboration.d.ts +12 -0
  123. package/lib/collab/yjs/useCollaboration.js +255 -0
  124. package/lib/collab/yjs/utils/Utils.d.ts +25 -0
  125. package/lib/collab/yjs/utils/Utils.js +402 -0
  126. package/lib/collab/yjs/wsProvider.d.ts +3 -0
  127. package/lib/collab/yjs/wsProvider.js +21 -0
  128. package/lib/commenting/index.d.ts +41 -0
  129. package/lib/commenting/index.js +324 -0
  130. package/lib/context/FlashMessageContext.d.ts +7 -0
  131. package/lib/context/FlashMessageContext.js +24 -0
  132. package/lib/context/SettingsContext.d.ts +12 -0
  133. package/lib/context/SettingsContext.js +38 -0
  134. package/lib/context/SharedHistoryContext.d.ts +11 -0
  135. package/lib/context/SharedHistoryContext.js +11 -0
  136. package/lib/context/ToolbarContext.d.ts +65 -0
  137. package/lib/context/ToolbarContext.js +84 -0
  138. package/lib/demo.d.ts +12 -0
  139. package/lib/demo.js +41 -0
  140. package/lib/hooks/useFlashMessage.d.ts +2 -0
  141. package/lib/hooks/useFlashMessage.js +4 -0
  142. package/lib/hooks/useModal.d.ts +5 -0
  143. package/lib/hooks/useModal.js +26 -0
  144. package/lib/hooks/useReport.d.ts +1 -0
  145. package/lib/hooks/useReport.js +46 -0
  146. package/lib/index.d.ts +1 -1
  147. package/lib/index.js +1 -5
  148. package/lib/nodes/AutocompleteNode.d.ts +27 -0
  149. package/lib/nodes/AutocompleteNode.js +56 -0
  150. package/lib/nodes/CounterComponent.d.ts +6 -0
  151. package/lib/nodes/CounterComponent.js +137 -0
  152. package/lib/nodes/CounterNode.d.ts +23 -0
  153. package/lib/nodes/CounterNode.js +47 -0
  154. package/lib/nodes/DateTimeNode/DateTimeComponent.d.ts +8 -0
  155. package/lib/nodes/DateTimeNode/DateTimeComponent.js +119 -0
  156. package/lib/nodes/DateTimeNode/DateTimeNode.d.ts +27 -0
  157. package/lib/nodes/DateTimeNode/DateTimeNode.js +82 -0
  158. package/lib/nodes/EmojiNode.d.ts +18 -0
  159. package/lib/nodes/EmojiNode.js +50 -0
  160. package/lib/nodes/EquationComponent.d.ts +9 -0
  161. package/lib/nodes/EquationComponent.js +75 -0
  162. package/lib/nodes/EquationNode.d.ts +26 -0
  163. package/lib/nodes/EquationNode.js +109 -0
  164. package/lib/nodes/ExcalidrawNode/ExcalidrawComponent.d.ts +8 -0
  165. package/lib/nodes/ExcalidrawNode/ExcalidrawComponent.js +110 -0
  166. package/lib/nodes/ExcalidrawNode/ExcalidrawImage.d.ts +50 -0
  167. package/lib/nodes/ExcalidrawNode/ExcalidrawImage.js +55 -0
  168. package/lib/nodes/ExcalidrawNode/index.d.ts +32 -0
  169. package/lib/nodes/ExcalidrawNode/index.js +117 -0
  170. package/lib/nodes/FigmaNode.d.ts +20 -0
  171. package/lib/nodes/FigmaNode.js +52 -0
  172. package/lib/nodes/ImageComponent.d.ts +16 -0
  173. package/lib/nodes/ImageComponent.js +272 -0
  174. package/lib/nodes/ImageNode.d.ts +50 -0
  175. package/lib/nodes/ImageNode.js +151 -0
  176. package/lib/nodes/InlineImageNode/InlineImageComponent.d.ts +26 -0
  177. package/lib/nodes/InlineImageNode/InlineImageComponent.js +161 -0
  178. package/lib/nodes/InlineImageNode/InlineImageNode.d.ts +59 -0
  179. package/lib/nodes/InlineImageNode/InlineImageNode.js +162 -0
  180. package/lib/nodes/KeywordNode.d.ts +14 -0
  181. package/lib/nodes/KeywordNode.js +33 -0
  182. package/lib/nodes/LayoutContainerNode.d.ts +24 -0
  183. package/lib/nodes/LayoutContainerNode.js +91 -0
  184. package/lib/nodes/LayoutItemNode.d.ts +16 -0
  185. package/lib/nodes/LayoutItemNode.js +65 -0
  186. package/lib/nodes/MentionNode.d.ts +20 -0
  187. package/lib/nodes/MentionNode.js +81 -0
  188. package/lib/nodes/PageBreakNode/index.d.ts +17 -0
  189. package/lib/nodes/PageBreakNode/index.js +83 -0
  190. package/lib/nodes/PlaygroundNodes.d.ts +3 -0
  191. package/lib/nodes/PlaygroundNodes.js +71 -0
  192. package/lib/nodes/PollComponent.d.ts +9 -0
  193. package/lib/nodes/PollComponent.js +85 -0
  194. package/lib/nodes/PollNode.d.ts +43 -0
  195. package/lib/nodes/PollNode.js +153 -0
  196. package/lib/nodes/SpecialTextNode.d.ts +24 -0
  197. package/lib/nodes/SpecialTextNode.js +50 -0
  198. package/lib/nodes/StickyComponent.d.ts +10 -0
  199. package/lib/nodes/StickyComponent.js +162 -0
  200. package/lib/nodes/StickyNode.d.ts +31 -0
  201. package/lib/nodes/StickyNode.js +76 -0
  202. package/lib/nodes/TweetNode.d.ts +21 -0
  203. package/lib/nodes/TweetNode.js +119 -0
  204. package/lib/nodes/YouTubeNode.d.ts +22 -0
  205. package/lib/nodes/YouTubeNode.js +84 -0
  206. package/lib/plugins/ActionsPlugin/index.d.ts +5 -0
  207. package/lib/plugins/ActionsPlugin/index.js +168 -0
  208. package/lib/plugins/AutoEmbedPlugin/index.d.ts +19 -0
  209. package/lib/plugins/AutoEmbedPlugin/index.js +158 -0
  210. package/lib/plugins/AutoLinkPlugin/index.d.ts +2 -0
  211. package/lib/plugins/AutoLinkPlugin/index.js +15 -0
  212. package/lib/plugins/AutocompletePlugin/index.d.ts +10 -0
  213. package/lib/plugins/AutocompletePlugin/index.js +2473 -0
  214. package/lib/plugins/CodeActionMenuPlugin/components/CopyButton/index.d.ts +7 -0
  215. package/lib/plugins/CodeActionMenuPlugin/components/CopyButton/index.js +42 -0
  216. package/lib/plugins/CodeActionMenuPlugin/components/PrettierButton/index.d.ts +17 -0
  217. package/lib/plugins/CodeActionMenuPlugin/components/PrettierButton/index.js +111 -0
  218. package/lib/plugins/CodeActionMenuPlugin/index.d.ts +5 -0
  219. package/lib/plugins/CodeActionMenuPlugin/index.js +104 -0
  220. package/lib/plugins/CodeActionMenuPlugin/utils.d.ts +1 -0
  221. package/lib/plugins/CodeActionMenuPlugin/utils.js +18 -0
  222. package/lib/plugins/CodeHighlightPrismPlugin/index.d.ts +2 -0
  223. package/lib/plugins/CodeHighlightPrismPlugin/index.js +10 -0
  224. package/lib/plugins/CodeHighlightShikiPlugin/index.d.ts +2 -0
  225. package/lib/plugins/CodeHighlightShikiPlugin/index.js +10 -0
  226. package/lib/plugins/CollapsiblePlugin/CollapsibleContainerNode.d.ts +25 -0
  227. package/lib/plugins/CollapsiblePlugin/CollapsibleContainerNode.js +131 -0
  228. package/lib/plugins/CollapsiblePlugin/CollapsibleContentNode.d.ts +16 -0
  229. package/lib/plugins/CollapsiblePlugin/CollapsibleContentNode.js +79 -0
  230. package/lib/plugins/CollapsiblePlugin/CollapsibleTitleNode.d.ts +16 -0
  231. package/lib/plugins/CollapsiblePlugin/CollapsibleTitleNode.js +81 -0
  232. package/lib/plugins/CollapsiblePlugin/CollapsibleUtils.d.ts +2 -0
  233. package/lib/plugins/CollapsiblePlugin/CollapsibleUtils.js +8 -0
  234. package/lib/plugins/CollapsiblePlugin/index.d.ts +3 -0
  235. package/lib/plugins/CollapsiblePlugin/index.js +128 -0
  236. package/lib/plugins/CommentPlugin/index.d.ts +9 -0
  237. package/lib/plugins/CommentPlugin/index.js +460 -0
  238. package/lib/plugins/ComponentPickerPlugin/index.d.ts +2 -0
  239. package/lib/plugins/ComponentPickerPlugin/index.js +276 -0
  240. package/lib/plugins/ContextMenuPlugin/index.d.ts +2 -0
  241. package/lib/plugins/ContextMenuPlugin/index.js +112 -0
  242. package/lib/plugins/CounterPlugin/index.d.ts +3 -0
  243. package/lib/plugins/CounterPlugin/index.js +20 -0
  244. package/lib/plugins/DatalayerPlugin/index.d.ts +2 -0
  245. package/lib/plugins/DatalayerPlugin/index.js +218 -0
  246. package/lib/plugins/DateTimePlugin/index.d.ts +8 -0
  247. package/lib/plugins/DateTimePlugin/index.js +24 -0
  248. package/lib/plugins/DocsPlugin/index.d.ts +2 -0
  249. package/lib/plugins/DocsPlugin/index.js +4 -0
  250. package/lib/plugins/DragDropPastePlugin/index.d.ts +1 -0
  251. package/lib/plugins/DragDropPastePlugin/index.js +33 -0
  252. package/lib/plugins/DraggableBlockPlugin/index.d.ts +12 -0
  253. package/lib/plugins/DraggableBlockPlugin/index.js +36 -0
  254. package/lib/plugins/EmojiPickerPlugin/index.d.ts +1 -0
  255. package/lib/plugins/EmojiPickerPlugin/index.js +80 -0
  256. package/lib/plugins/EmojisPlugin/index.d.ts +2 -0
  257. package/lib/plugins/EmojisPlugin/index.js +52 -0
  258. package/lib/plugins/EquationsPlugin/index.d.ts +14 -0
  259. package/lib/plugins/EquationsPlugin/index.js +34 -0
  260. package/lib/plugins/ExcalidrawPlugin/index.d.ts +5 -0
  261. package/lib/plugins/ExcalidrawPlugin/index.js +44 -0
  262. package/lib/plugins/FigmaPlugin/index.d.ts +4 -0
  263. package/lib/plugins/FigmaPlugin/index.js +20 -0
  264. package/lib/plugins/FloatingLinkEditorPlugin/index.d.ts +15 -0
  265. package/lib/plugins/FloatingLinkEditorPlugin/index.js +280 -0
  266. package/lib/plugins/FloatingTextFormatToolbarPlugin/index.d.ts +7 -0
  267. package/lib/plugins/FloatingTextFormatToolbarPlugin/index.js +219 -0
  268. package/lib/plugins/ImagesPlugin/index.d.ts +24 -0
  269. package/lib/plugins/ImagesPlugin/index.js +195 -0
  270. package/lib/plugins/InlineImagePlugin/index.d.ts +17 -0
  271. package/lib/plugins/InlineImagePlugin/index.js +180 -0
  272. package/lib/plugins/KeywordsPlugin/index.d.ts +2 -0
  273. package/lib/plugins/KeywordsPlugin/index.js +31 -0
  274. package/lib/plugins/LayoutPlugin/InsertLayoutDialog.d.ts +6 -0
  275. package/lib/plugins/LayoutPlugin/InsertLayoutDialog.js +21 -0
  276. package/lib/plugins/LayoutPlugin/LayoutPlugin.d.ts +7 -0
  277. package/lib/plugins/LayoutPlugin/LayoutPlugin.js +131 -0
  278. package/lib/plugins/LinkPlugin/index.d.ts +6 -0
  279. package/lib/plugins/LinkPlugin/index.js +11 -0
  280. package/lib/plugins/MarkdownShortcutPlugin/index.d.ts +2 -0
  281. package/lib/plugins/MarkdownShortcutPlugin/index.js +6 -0
  282. package/lib/plugins/MarkdownTransformers/index.d.ts +8 -0
  283. package/lib/plugins/MarkdownTransformers/index.js +234 -0
  284. package/lib/plugins/MaxLengthPlugin/index.d.ts +3 -0
  285. package/lib/plugins/MaxLengthPlugin/index.js +37 -0
  286. package/lib/plugins/MentionsPlugin/index.d.ts +2 -0
  287. package/lib/plugins/MentionsPlugin/index.js +564 -0
  288. package/lib/plugins/PageBreakPlugin/index.d.ts +4 -0
  289. package/lib/plugins/PageBreakPlugin/index.js +27 -0
  290. package/lib/plugins/PasteLogPlugin/index.d.ts +2 -0
  291. package/lib/plugins/PasteLogPlugin/index.js +27 -0
  292. package/lib/plugins/PollPlugin/index.d.ts +8 -0
  293. package/lib/plugins/PollPlugin/index.js +38 -0
  294. package/lib/plugins/ShortcutsPlugin/index.d.ts +6 -0
  295. package/lib/plugins/ShortcutsPlugin/index.js +112 -0
  296. package/lib/plugins/ShortcutsPlugin/shortcuts.d.ts +59 -0
  297. package/lib/plugins/ShortcutsPlugin/shortcuts.js +169 -0
  298. package/lib/plugins/SpecialTextPlugin/index.d.ts +2 -0
  299. package/lib/plugins/SpecialTextPlugin/index.js +46 -0
  300. package/lib/plugins/SpeechToTextPlugin/index.d.ts +5 -0
  301. package/lib/plugins/SpeechToTextPlugin/index.js +82 -0
  302. package/lib/plugins/StickyPlugin/index.d.ts +2 -0
  303. package/lib/plugins/StickyPlugin/index.js +12 -0
  304. package/lib/plugins/TabFocusPlugin/index.d.ts +1 -0
  305. package/lib/plugins/TabFocusPlugin/index.js +34 -0
  306. package/lib/plugins/TableActionMenuPlugin/index.d.ts +5 -0
  307. package/lib/plugins/TableActionMenuPlugin/index.js +492 -0
  308. package/lib/plugins/TableCellResizer/index.d.ts +3 -0
  309. package/lib/plugins/TableCellResizer/index.js +297 -0
  310. package/lib/plugins/TableHoverActionsPlugin/index.d.ts +4 -0
  311. package/lib/plugins/TableHoverActionsPlugin/index.js +188 -0
  312. package/lib/plugins/TableOfContentsPlugin/index.d.ts +2 -0
  313. package/lib/plugins/TableOfContentsPlugin/index.js +116 -0
  314. package/lib/plugins/TablePlugin.d.ts +31 -0
  315. package/lib/plugins/TablePlugin.js +63 -0
  316. package/lib/plugins/TestRecorderPlugin/index.d.ts +3 -0
  317. package/lib/plugins/TestRecorderPlugin/index.js +346 -0
  318. package/lib/plugins/ToolbarPlugin/fontSize.d.ts +9 -0
  319. package/lib/plugins/ToolbarPlugin/fontSize.js +80 -0
  320. package/lib/plugins/ToolbarPlugin/index.d.ts +9 -0
  321. package/lib/plugins/ToolbarPlugin/index.js +500 -0
  322. package/lib/plugins/ToolbarPlugin/utils.d.ts +26 -0
  323. package/lib/plugins/ToolbarPlugin/utils.js +243 -0
  324. package/lib/plugins/TreeViewPlugin/index.d.ts +2 -0
  325. package/lib/plugins/TreeViewPlugin/index.js +7 -0
  326. package/lib/plugins/TwitterPlugin/index.d.ts +4 -0
  327. package/lib/plugins/TwitterPlugin/index.js +20 -0
  328. package/lib/plugins/TypingPerfPlugin/index.d.ts +2 -0
  329. package/lib/plugins/TypingPerfPlugin/index.js +93 -0
  330. package/lib/plugins/YouTubePlugin/index.d.ts +4 -0
  331. package/lib/plugins/YouTubePlugin/index.js +20 -0
  332. package/lib/server/validation.d.ts +1 -0
  333. package/lib/server/validation.js +111 -0
  334. package/lib/setupEnv.d.ts +2 -0
  335. package/lib/setupEnv.js +25 -0
  336. package/lib/themes/CommentEditorTheme.d.ts +4 -0
  337. package/lib/themes/CommentEditorTheme.js +7 -0
  338. package/lib/themes/PlaygroundEditorTheme.d.ts +4 -0
  339. package/lib/themes/PlaygroundEditorTheme.js +120 -0
  340. package/lib/themes/StickyEditorTheme.d.ts +4 -0
  341. package/lib/themes/StickyEditorTheme.js +7 -0
  342. package/lib/tyes.dt.d.ts +12 -0
  343. package/lib/tyes.dt.js +0 -0
  344. package/lib/ui/Button.d.ts +12 -0
  345. package/lib/ui/Button.js +6 -0
  346. package/lib/ui/ColorPicker.d.ts +14 -0
  347. package/lib/ui/ColorPicker.js +219 -0
  348. package/lib/ui/ContentEditable.d.ts +9 -0
  349. package/lib/ui/ContentEditable.js +6 -0
  350. package/lib/ui/Dialog.d.ts +10 -0
  351. package/lib/ui/Dialog.js +8 -0
  352. package/lib/ui/DropDown.d.ts +18 -0
  353. package/lib/ui/DropDown.js +133 -0
  354. package/lib/ui/DropdownColorPicker.d.ts +13 -0
  355. package/lib/ui/DropdownColorPicker.js +6 -0
  356. package/lib/ui/EquationEditor.d.ts +8 -0
  357. package/lib/ui/EquationEditor.js +11 -0
  358. package/lib/ui/ExcalidrawModal.d.ts +42 -0
  359. package/lib/ui/ExcalidrawModal.js +103 -0
  360. package/lib/ui/FileInput.d.ts +10 -0
  361. package/lib/ui/FileInput.js +5 -0
  362. package/lib/ui/FlashMessage.d.ts +7 -0
  363. package/lib/ui/FlashMessage.js +6 -0
  364. package/lib/ui/ImageResizer.d.ts +17 -0
  365. package/lib/ui/ImageResizer.js +171 -0
  366. package/lib/ui/KatexEquationAlterer.d.ts +8 -0
  367. package/lib/ui/KatexEquationAlterer.js +23 -0
  368. package/lib/ui/KatexRenderer.d.ts +6 -0
  369. package/lib/ui/KatexRenderer.js +24 -0
  370. package/lib/ui/Modal.d.ts +9 -0
  371. package/lib/ui/Modal.js +48 -0
  372. package/lib/ui/Select.d.ts +8 -0
  373. package/lib/ui/Select.js +5 -0
  374. package/lib/ui/Switch.d.ts +8 -0
  375. package/lib/ui/Switch.js +6 -0
  376. package/lib/ui/TextInput.d.ts +13 -0
  377. package/lib/ui/TextInput.js +7 -0
  378. package/lib/utils/docSerialization.d.ts +3 -0
  379. package/lib/utils/docSerialization.js +56 -0
  380. package/lib/utils/emoji-list.d.ts +20 -0
  381. package/lib/utils/emoji-list.js +16605 -0
  382. package/lib/utils/getDOMRangeRect.d.ts +8 -0
  383. package/lib/utils/getDOMRangeRect.js +22 -0
  384. package/lib/utils/getSelectedNode.d.ts +2 -0
  385. package/lib/utils/getSelectedNode.js +24 -0
  386. package/lib/utils/getThemeSelector.d.ts +2 -0
  387. package/lib/utils/getThemeSelector.js +10 -0
  388. package/lib/utils/isMobileWidth.d.ts +7 -0
  389. package/lib/utils/isMobileWidth.js +7 -0
  390. package/lib/utils/joinClasses.d.ts +1 -0
  391. package/lib/utils/joinClasses.js +3 -0
  392. package/lib/utils/setFloatingElemPosition.d.ts +1 -0
  393. package/lib/utils/setFloatingElemPosition.js +55 -0
  394. package/lib/utils/setFloatingElemPositionForLinkEditor.d.ts +1 -0
  395. package/lib/utils/setFloatingElemPositionForLinkEditor.js +32 -0
  396. package/lib/utils/swipe.d.ts +4 -0
  397. package/lib/utils/swipe.js +90 -0
  398. package/lib/utils/url.d.ts +2 -0
  399. package/lib/utils/url.js +27 -0
  400. package/package.json +82 -51
  401. package/lib/DiffMerge.d.ts +0 -39
  402. package/lib/DiffMerge.js +0 -437
  403. package/lib/LoroCollaborativePlugin.d.ts +0 -62
  404. package/lib/LoroCollaborativePlugin.js +0 -2826
  405. package/lib/stableNodeState.d.ts +0 -8
  406. package/lib/stableNodeState.js +0 -15
@@ -0,0 +1,120 @@
1
+ import './PlaygroundEditorTheme.css';
2
+ const theme = {
3
+ autocomplete: 'PlaygroundEditorTheme__autocomplete',
4
+ blockCursor: 'PlaygroundEditorTheme__blockCursor',
5
+ characterLimit: 'PlaygroundEditorTheme__characterLimit',
6
+ code: 'PlaygroundEditorTheme__code',
7
+ codeHighlight: {
8
+ atrule: 'PlaygroundEditorTheme__tokenAttr',
9
+ attr: 'PlaygroundEditorTheme__tokenAttr',
10
+ boolean: 'PlaygroundEditorTheme__tokenProperty',
11
+ builtin: 'PlaygroundEditorTheme__tokenSelector',
12
+ cdata: 'PlaygroundEditorTheme__tokenComment',
13
+ char: 'PlaygroundEditorTheme__tokenSelector',
14
+ class: 'PlaygroundEditorTheme__tokenFunction',
15
+ 'class-name': 'PlaygroundEditorTheme__tokenFunction',
16
+ comment: 'PlaygroundEditorTheme__tokenComment',
17
+ constant: 'PlaygroundEditorTheme__tokenProperty',
18
+ deleted: 'PlaygroundEditorTheme__tokenDeleted',
19
+ doctype: 'PlaygroundEditorTheme__tokenComment',
20
+ entity: 'PlaygroundEditorTheme__tokenOperator',
21
+ function: 'PlaygroundEditorTheme__tokenFunction',
22
+ important: 'PlaygroundEditorTheme__tokenVariable',
23
+ inserted: 'PlaygroundEditorTheme__tokenInserted',
24
+ keyword: 'PlaygroundEditorTheme__tokenAttr',
25
+ namespace: 'PlaygroundEditorTheme__tokenVariable',
26
+ number: 'PlaygroundEditorTheme__tokenProperty',
27
+ operator: 'PlaygroundEditorTheme__tokenOperator',
28
+ prolog: 'PlaygroundEditorTheme__tokenComment',
29
+ property: 'PlaygroundEditorTheme__tokenProperty',
30
+ punctuation: 'PlaygroundEditorTheme__tokenPunctuation',
31
+ regex: 'PlaygroundEditorTheme__tokenVariable',
32
+ selector: 'PlaygroundEditorTheme__tokenSelector',
33
+ string: 'PlaygroundEditorTheme__tokenSelector',
34
+ symbol: 'PlaygroundEditorTheme__tokenProperty',
35
+ tag: 'PlaygroundEditorTheme__tokenProperty',
36
+ unchanged: 'PlaygroundEditorTheme__tokenUnchanged',
37
+ url: 'PlaygroundEditorTheme__tokenOperator',
38
+ variable: 'PlaygroundEditorTheme__tokenVariable',
39
+ },
40
+ embedBlock: {
41
+ base: 'PlaygroundEditorTheme__embedBlock',
42
+ focus: 'PlaygroundEditorTheme__embedBlockFocus',
43
+ },
44
+ hashtag: 'PlaygroundEditorTheme__hashtag',
45
+ heading: {
46
+ h1: 'PlaygroundEditorTheme__h1',
47
+ h2: 'PlaygroundEditorTheme__h2',
48
+ h3: 'PlaygroundEditorTheme__h3',
49
+ h4: 'PlaygroundEditorTheme__h4',
50
+ h5: 'PlaygroundEditorTheme__h5',
51
+ h6: 'PlaygroundEditorTheme__h6',
52
+ },
53
+ hr: 'PlaygroundEditorTheme__hr',
54
+ hrSelected: 'PlaygroundEditorTheme__hrSelected',
55
+ image: 'editor-image',
56
+ indent: 'PlaygroundEditorTheme__indent',
57
+ inlineImage: 'inline-editor-image',
58
+ layoutContainer: 'PlaygroundEditorTheme__layoutContainer',
59
+ layoutItem: 'PlaygroundEditorTheme__layoutItem',
60
+ link: 'PlaygroundEditorTheme__link',
61
+ list: {
62
+ checklist: 'PlaygroundEditorTheme__checklist',
63
+ listitem: 'PlaygroundEditorTheme__listItem',
64
+ listitemChecked: 'PlaygroundEditorTheme__listItemChecked',
65
+ listitemUnchecked: 'PlaygroundEditorTheme__listItemUnchecked',
66
+ nested: {
67
+ listitem: 'PlaygroundEditorTheme__nestedListItem',
68
+ },
69
+ olDepth: [
70
+ 'PlaygroundEditorTheme__ol1',
71
+ 'PlaygroundEditorTheme__ol2',
72
+ 'PlaygroundEditorTheme__ol3',
73
+ 'PlaygroundEditorTheme__ol4',
74
+ 'PlaygroundEditorTheme__ol5',
75
+ ],
76
+ ul: 'PlaygroundEditorTheme__ul',
77
+ },
78
+ ltr: 'PlaygroundEditorTheme__ltr',
79
+ mark: 'PlaygroundEditorTheme__mark',
80
+ markOverlap: 'PlaygroundEditorTheme__markOverlap',
81
+ paragraph: 'PlaygroundEditorTheme__paragraph',
82
+ quote: 'PlaygroundEditorTheme__quote',
83
+ rtl: 'PlaygroundEditorTheme__rtl',
84
+ specialText: 'PlaygroundEditorTheme__specialText',
85
+ tab: 'PlaygroundEditorTheme__tabNode',
86
+ table: 'PlaygroundEditorTheme__table',
87
+ tableAddColumns: 'PlaygroundEditorTheme__tableAddColumns',
88
+ tableAddRows: 'PlaygroundEditorTheme__tableAddRows',
89
+ tableAlignment: {
90
+ center: 'PlaygroundEditorTheme__tableAlignmentCenter',
91
+ right: 'PlaygroundEditorTheme__tableAlignmentRight',
92
+ },
93
+ tableCell: 'PlaygroundEditorTheme__tableCell',
94
+ tableCellActionButton: 'PlaygroundEditorTheme__tableCellActionButton',
95
+ tableCellActionButtonContainer: 'PlaygroundEditorTheme__tableCellActionButtonContainer',
96
+ tableCellHeader: 'PlaygroundEditorTheme__tableCellHeader',
97
+ tableCellResizer: 'PlaygroundEditorTheme__tableCellResizer',
98
+ tableCellSelected: 'PlaygroundEditorTheme__tableCellSelected',
99
+ tableFrozenColumn: 'PlaygroundEditorTheme__tableFrozenColumn',
100
+ tableFrozenRow: 'PlaygroundEditorTheme__tableFrozenRow',
101
+ tableRowStriping: 'PlaygroundEditorTheme__tableRowStriping',
102
+ tableScrollableWrapper: 'PlaygroundEditorTheme__tableScrollableWrapper',
103
+ tableSelected: 'PlaygroundEditorTheme__tableSelected',
104
+ tableSelection: 'PlaygroundEditorTheme__tableSelection',
105
+ text: {
106
+ bold: 'PlaygroundEditorTheme__textBold',
107
+ capitalize: 'PlaygroundEditorTheme__textCapitalize',
108
+ code: 'PlaygroundEditorTheme__textCode',
109
+ highlight: 'PlaygroundEditorTheme__textHighlight',
110
+ italic: 'PlaygroundEditorTheme__textItalic',
111
+ lowercase: 'PlaygroundEditorTheme__textLowercase',
112
+ strikethrough: 'PlaygroundEditorTheme__textStrikethrough',
113
+ subscript: 'PlaygroundEditorTheme__textSubscript',
114
+ superscript: 'PlaygroundEditorTheme__textSuperscript',
115
+ underline: 'PlaygroundEditorTheme__textUnderline',
116
+ underlineStrikethrough: 'PlaygroundEditorTheme__textUnderlineStrikethrough',
117
+ uppercase: 'PlaygroundEditorTheme__textUppercase',
118
+ },
119
+ };
120
+ export default theme;
@@ -0,0 +1,4 @@
1
+ import type { EditorThemeClasses } from 'lexical';
2
+ import './StickyEditorTheme.css';
3
+ declare const theme: EditorThemeClasses;
4
+ export default theme;
@@ -0,0 +1,7 @@
1
+ import './StickyEditorTheme.css';
2
+ import baseTheme from './PlaygroundEditorTheme';
3
+ const theme = {
4
+ ...baseTheme,
5
+ paragraph: 'StickyEditorTheme__paragraph',
6
+ };
7
+ export default theme;
@@ -0,0 +1,12 @@
1
+ declare module '*.svg' {
2
+ const content: string;
3
+ export default content;
4
+ }
5
+ declare module '*.gif' {
6
+ const content: string;
7
+ export default content;
8
+ }
9
+ declare module '*.jpg' {
10
+ const content: string;
11
+ export default content;
12
+ }
package/lib/tyes.dt.js ADDED
File without changes
@@ -0,0 +1,12 @@
1
+ import type { JSX } from 'react';
2
+ import './Button.css';
3
+ import { ReactNode } from 'react';
4
+ export default function Button({ 'data-test-id': dataTestId, children, className, onClick, disabled, small, title, }: {
5
+ 'data-test-id'?: string;
6
+ children: ReactNode;
7
+ className?: string;
8
+ disabled?: boolean;
9
+ onClick: () => void;
10
+ small?: boolean;
11
+ title?: string;
12
+ }): JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import './Button.css';
3
+ import joinClasses from '../utils/joinClasses';
4
+ export default function Button({ 'data-test-id': dataTestId, children, className, onClick, disabled, small, title, }) {
5
+ return (_jsx("button", { disabled: disabled, className: joinClasses('Button__root', disabled && 'Button__disabled', small && 'Button__small', className), onClick: onClick, title: title, "aria-label": title, ...(dataTestId && { 'data-test-id': dataTestId }), children: children }));
6
+ }
@@ -0,0 +1,14 @@
1
+ import type { JSX } from 'react';
2
+ import './ColorPicker.css';
3
+ interface ColorPickerProps {
4
+ color: string;
5
+ onChange?: (value: string, skipHistoryStack: boolean) => void;
6
+ }
7
+ export declare function parseAllowedColor(input: string): string;
8
+ export default function ColorPicker({ color, onChange, }: Readonly<ColorPickerProps>): JSX.Element;
9
+ export interface Position {
10
+ x: number;
11
+ y: number;
12
+ }
13
+ export declare function toHex(value: string): string;
14
+ export {};
@@ -0,0 +1,219 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import './ColorPicker.css';
3
+ import { calculateZoomLevel } from '@lexical/utils';
4
+ import { useEffect, useMemo, useRef, useState } from 'react';
5
+ import TextInput from './TextInput';
6
+ let skipAddingToHistoryStack = false;
7
+ export function parseAllowedColor(input) {
8
+ return /^rgb\(\d+, \d+, \d+\)$/.test(input) ? input : '';
9
+ }
10
+ const basicColors = [
11
+ '#d0021b',
12
+ '#f5a623',
13
+ '#f8e71c',
14
+ '#8b572a',
15
+ '#7ed321',
16
+ '#417505',
17
+ '#bd10e0',
18
+ '#9013fe',
19
+ '#4a90e2',
20
+ '#50e3c2',
21
+ '#b8e986',
22
+ '#000000',
23
+ '#4a4a4a',
24
+ '#9b9b9b',
25
+ '#ffffff',
26
+ ];
27
+ const WIDTH = 214;
28
+ const HEIGHT = 150;
29
+ export default function ColorPicker({ color, onChange, }) {
30
+ const [selfColor, setSelfColor] = useState(transformColor('hex', color));
31
+ const [inputColor, setInputColor] = useState(color);
32
+ const innerDivRef = useRef(null);
33
+ const saturationPosition = useMemo(() => ({
34
+ x: (selfColor.hsv.s / 100) * WIDTH,
35
+ y: ((100 - selfColor.hsv.v) / 100) * HEIGHT,
36
+ }), [selfColor.hsv.s, selfColor.hsv.v]);
37
+ const huePosition = useMemo(() => ({
38
+ x: (selfColor.hsv.h / 360) * WIDTH,
39
+ }), [selfColor.hsv]);
40
+ const onSetHex = (hex) => {
41
+ setInputColor(hex);
42
+ if (/^#[0-9A-Fa-f]{6}$/i.test(hex)) {
43
+ const newColor = transformColor('hex', hex);
44
+ setSelfColor(newColor);
45
+ }
46
+ };
47
+ const onMoveSaturation = ({ x, y }) => {
48
+ const newHsv = {
49
+ ...selfColor.hsv,
50
+ s: (x / WIDTH) * 100,
51
+ v: 100 - (y / HEIGHT) * 100,
52
+ };
53
+ const newColor = transformColor('hsv', newHsv);
54
+ setSelfColor(newColor);
55
+ setInputColor(newColor.hex);
56
+ };
57
+ const onMoveHue = ({ x }) => {
58
+ const newHsv = { ...selfColor.hsv, h: (x / WIDTH) * 360 };
59
+ const newColor = transformColor('hsv', newHsv);
60
+ setSelfColor(newColor);
61
+ setInputColor(newColor.hex);
62
+ };
63
+ useEffect(() => {
64
+ // Check if the dropdown is actually active
65
+ if (innerDivRef.current !== null && onChange) {
66
+ onChange(selfColor.hex, skipAddingToHistoryStack);
67
+ setInputColor(selfColor.hex);
68
+ }
69
+ }, [selfColor, onChange]);
70
+ useEffect(() => {
71
+ if (color === undefined) {
72
+ return;
73
+ }
74
+ const newColor = transformColor('hex', color);
75
+ setSelfColor(newColor);
76
+ setInputColor(newColor.hex);
77
+ }, [color]);
78
+ return (_jsxs("div", { className: "color-picker-wrapper", style: { width: WIDTH }, ref: innerDivRef, children: [_jsx(TextInput, { label: "Hex", onChange: onSetHex, value: inputColor }), _jsx("div", { className: "color-picker-basic-color", children: basicColors.map((basicColor) => (_jsx("button", { className: basicColor === selfColor.hex ? ' active' : '', style: { backgroundColor: basicColor }, onClick: () => {
79
+ setInputColor(basicColor);
80
+ setSelfColor(transformColor('hex', basicColor));
81
+ } }, basicColor))) }), _jsx(MoveWrapper, { className: "color-picker-saturation", style: { backgroundColor: `hsl(${selfColor.hsv.h}, 100%, 50%)` }, onChange: onMoveSaturation, children: _jsx("div", { className: "color-picker-saturation_cursor", style: {
82
+ backgroundColor: selfColor.hex,
83
+ left: saturationPosition.x,
84
+ top: saturationPosition.y,
85
+ } }) }), _jsx(MoveWrapper, { className: "color-picker-hue", onChange: onMoveHue, children: _jsx("div", { className: "color-picker-hue_cursor", style: {
86
+ backgroundColor: `hsl(${selfColor.hsv.h}, 100%, 50%)`,
87
+ left: huePosition.x,
88
+ } }) }), _jsx("div", { className: "color-picker-color", style: { backgroundColor: selfColor.hex } })] }));
89
+ }
90
+ function MoveWrapper({ className, style, onChange, children }) {
91
+ const divRef = useRef(null);
92
+ const draggedRef = useRef(false);
93
+ const move = (e) => {
94
+ if (divRef.current) {
95
+ const { current: div } = divRef;
96
+ const { width, height, left, top } = div.getBoundingClientRect();
97
+ const zoom = calculateZoomLevel(div);
98
+ const x = clamp(e.clientX / zoom - left, width, 0);
99
+ const y = clamp(e.clientY / zoom - top, height, 0);
100
+ onChange({ x, y });
101
+ }
102
+ };
103
+ const onMouseDown = (e) => {
104
+ if (e.button !== 0) {
105
+ return;
106
+ }
107
+ move(e);
108
+ const onMouseMove = (_e) => {
109
+ draggedRef.current = true;
110
+ skipAddingToHistoryStack = true;
111
+ move(_e);
112
+ };
113
+ const onMouseUp = (_e) => {
114
+ if (draggedRef.current) {
115
+ skipAddingToHistoryStack = false;
116
+ }
117
+ document.removeEventListener('mousemove', onMouseMove, false);
118
+ document.removeEventListener('mouseup', onMouseUp, false);
119
+ move(_e);
120
+ draggedRef.current = false;
121
+ };
122
+ document.addEventListener('mousemove', onMouseMove, false);
123
+ document.addEventListener('mouseup', onMouseUp, false);
124
+ };
125
+ return (_jsx("div", { ref: divRef, className: className, style: style, onMouseDown: onMouseDown, children: children }));
126
+ }
127
+ function clamp(value, max, min) {
128
+ return value > max ? max : value < min ? min : value;
129
+ }
130
+ export function toHex(value) {
131
+ if (!value.startsWith('#')) {
132
+ const ctx = document.createElement('canvas').getContext('2d');
133
+ if (!ctx) {
134
+ throw new Error('2d context not supported or canvas already initialized');
135
+ }
136
+ ctx.fillStyle = value;
137
+ return ctx.fillStyle;
138
+ }
139
+ else if (value.length === 4 || value.length === 5) {
140
+ value = value
141
+ .split('')
142
+ .map((v, i) => (i ? v + v : '#'))
143
+ .join('');
144
+ return value;
145
+ }
146
+ else if (value.length === 7 || value.length === 9) {
147
+ return value;
148
+ }
149
+ return '#000000';
150
+ }
151
+ function hex2rgb(hex) {
152
+ const rbgArr = (hex
153
+ .replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, (m, r, g, b) => '#' + r + r + g + g + b + b)
154
+ .substring(1)
155
+ .match(/.{2}/g) || []).map((x) => parseInt(x, 16));
156
+ return {
157
+ b: rbgArr[2],
158
+ g: rbgArr[1],
159
+ r: rbgArr[0],
160
+ };
161
+ }
162
+ function rgb2hsv({ r, g, b }) {
163
+ r /= 255;
164
+ g /= 255;
165
+ b /= 255;
166
+ const max = Math.max(r, g, b);
167
+ const d = max - Math.min(r, g, b);
168
+ const h = d
169
+ ? (max === r
170
+ ? (g - b) / d + (g < b ? 6 : 0)
171
+ : max === g
172
+ ? 2 + (b - r) / d
173
+ : 4 + (r - g) / d) * 60
174
+ : 0;
175
+ const s = max ? (d / max) * 100 : 0;
176
+ const v = max * 100;
177
+ return { h, s, v };
178
+ }
179
+ function hsv2rgb({ h, s, v }) {
180
+ s /= 100;
181
+ v /= 100;
182
+ const i = ~~(h / 60);
183
+ const f = h / 60 - i;
184
+ const p = v * (1 - s);
185
+ const q = v * (1 - s * f);
186
+ const t = v * (1 - s * (1 - f));
187
+ const index = i % 6;
188
+ const r = Math.round([v, q, p, p, t, v][index] * 255);
189
+ const g = Math.round([t, v, v, q, p, p][index] * 255);
190
+ const b = Math.round([p, p, t, v, v, q][index] * 255);
191
+ return { b, g, r };
192
+ }
193
+ function rgb2hex({ b, g, r }) {
194
+ return '#' + [r, g, b].map((x) => x.toString(16).padStart(2, '0')).join('');
195
+ }
196
+ function transformColor(format, color) {
197
+ let hex = toHex('#121212');
198
+ let rgb = hex2rgb(hex);
199
+ let hsv = rgb2hsv(rgb);
200
+ if (format === 'hex') {
201
+ const value = color;
202
+ hex = toHex(value);
203
+ rgb = hex2rgb(hex);
204
+ hsv = rgb2hsv(rgb);
205
+ }
206
+ else if (format === 'rgb') {
207
+ const value = color;
208
+ rgb = value;
209
+ hex = rgb2hex(rgb);
210
+ hsv = rgb2hsv(rgb);
211
+ }
212
+ else if (format === 'hsv') {
213
+ const value = color;
214
+ hsv = value;
215
+ rgb = hsv2rgb(hsv);
216
+ hex = rgb2hex(rgb);
217
+ }
218
+ return { hex, hsv, rgb };
219
+ }
@@ -0,0 +1,9 @@
1
+ import type { JSX } from 'react';
2
+ import './ContentEditable.css';
3
+ type Props = {
4
+ className?: string;
5
+ placeholderClassName?: string;
6
+ placeholder: string;
7
+ };
8
+ export default function LexicalContentEditable({ className, placeholder, placeholderClassName, }: Props): JSX.Element;
9
+ export {};
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import './ContentEditable.css';
3
+ import { ContentEditable } from '@lexical/react/LexicalContentEditable';
4
+ export default function LexicalContentEditable({ className, placeholder, placeholderClassName, }) {
5
+ return (_jsx(ContentEditable, { className: className ?? 'ContentEditable__root', "aria-placeholder": placeholder, placeholder: _jsx("div", { className: placeholderClassName ?? 'ContentEditable__placeholder', children: placeholder }) }));
6
+ }
@@ -0,0 +1,10 @@
1
+ import type { JSX } from 'react';
2
+ import './Dialog.css';
3
+ import { ReactNode } from 'react';
4
+ type Props = Readonly<{
5
+ 'data-test-id'?: string;
6
+ children: ReactNode;
7
+ }>;
8
+ export declare function DialogButtonsList({ children }: Props): JSX.Element;
9
+ export declare function DialogActions({ 'data-test-id': dataTestId, children, }: Props): JSX.Element;
10
+ export {};
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import './Dialog.css';
3
+ export function DialogButtonsList({ children }) {
4
+ return _jsx("div", { className: "DialogButtonsList", children: children });
5
+ }
6
+ export function DialogActions({ 'data-test-id': dataTestId, children, }) {
7
+ return (_jsx("div", { className: "DialogActions", "data-test-id": dataTestId, children: children }));
8
+ }
@@ -0,0 +1,18 @@
1
+ import type { JSX } from 'react';
2
+ import * as React from 'react';
3
+ import { ReactNode } from 'react';
4
+ export declare function DropDownItem({ children, className, onClick, title, }: {
5
+ children: React.ReactNode;
6
+ className: string;
7
+ onClick: (event: React.MouseEvent<HTMLButtonElement>) => void;
8
+ title?: string;
9
+ }): import("react/jsx-runtime").JSX.Element;
10
+ export default function DropDown({ disabled, buttonLabel, buttonAriaLabel, buttonClassName, buttonIconClassName, children, stopCloseOnClickSelf, }: {
11
+ disabled?: boolean;
12
+ buttonAriaLabel?: string;
13
+ buttonClassName: string;
14
+ buttonIconClassName?: string;
15
+ buttonLabel?: string;
16
+ children: ReactNode;
17
+ stopCloseOnClickSelf?: boolean;
18
+ }): JSX.Element;
@@ -0,0 +1,133 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { isDOMNode } from 'lexical';
3
+ import * as React from 'react';
4
+ import { useCallback, useEffect, useMemo, useRef, useState, } from 'react';
5
+ import { createPortal } from 'react-dom';
6
+ const DropDownContext = React.createContext(null);
7
+ const dropDownPadding = 4;
8
+ export function DropDownItem({ children, className, onClick, title, }) {
9
+ const ref = useRef(null);
10
+ const dropDownContext = React.useContext(DropDownContext);
11
+ if (dropDownContext === null) {
12
+ throw new Error('DropDownItem must be used within a DropDown');
13
+ }
14
+ const { registerItem } = dropDownContext;
15
+ useEffect(() => {
16
+ if (ref && ref.current) {
17
+ registerItem(ref);
18
+ }
19
+ }, [ref, registerItem]);
20
+ return (_jsx("button", { className: className, onClick: onClick, ref: ref, title: title, type: "button", children: children }));
21
+ }
22
+ function DropDownItems({ children, dropDownRef, onClose, }) {
23
+ const [items, setItems] = useState();
24
+ const [highlightedItem, setHighlightedItem] = useState();
25
+ const registerItem = useCallback((itemRef) => {
26
+ setItems((prev) => (prev ? [...prev, itemRef] : [itemRef]));
27
+ }, [setItems]);
28
+ const handleKeyDown = (event) => {
29
+ if (!items) {
30
+ return;
31
+ }
32
+ const key = event.key;
33
+ if (['Escape', 'ArrowUp', 'ArrowDown', 'Tab'].includes(key)) {
34
+ event.preventDefault();
35
+ }
36
+ if (key === 'Escape' || key === 'Tab') {
37
+ onClose();
38
+ }
39
+ else if (key === 'ArrowUp') {
40
+ setHighlightedItem((prev) => {
41
+ if (!prev) {
42
+ return items[0];
43
+ }
44
+ const index = items.indexOf(prev) - 1;
45
+ return items[index === -1 ? items.length - 1 : index];
46
+ });
47
+ }
48
+ else if (key === 'ArrowDown') {
49
+ setHighlightedItem((prev) => {
50
+ if (!prev) {
51
+ return items[0];
52
+ }
53
+ return items[items.indexOf(prev) + 1];
54
+ });
55
+ }
56
+ };
57
+ const contextValue = useMemo(() => ({
58
+ registerItem,
59
+ }), [registerItem]);
60
+ useEffect(() => {
61
+ if (items && !highlightedItem) {
62
+ setHighlightedItem(items[0]);
63
+ }
64
+ if (highlightedItem && highlightedItem.current) {
65
+ highlightedItem.current.focus();
66
+ }
67
+ }, [items, highlightedItem]);
68
+ return (_jsx(DropDownContext.Provider, { value: contextValue, children: _jsx("div", { className: "dropdown", ref: dropDownRef, onKeyDown: handleKeyDown, children: children }) }));
69
+ }
70
+ export default function DropDown({ disabled = false, buttonLabel, buttonAriaLabel, buttonClassName, buttonIconClassName, children, stopCloseOnClickSelf, }) {
71
+ const dropDownRef = useRef(null);
72
+ const buttonRef = useRef(null);
73
+ const [showDropDown, setShowDropDown] = useState(false);
74
+ const handleClose = () => {
75
+ setShowDropDown(false);
76
+ if (buttonRef && buttonRef.current) {
77
+ buttonRef.current.focus();
78
+ }
79
+ };
80
+ useEffect(() => {
81
+ const button = buttonRef.current;
82
+ const dropDown = dropDownRef.current;
83
+ if (showDropDown && button !== null && dropDown !== null) {
84
+ const { top, left } = button.getBoundingClientRect();
85
+ dropDown.style.top = `${top + button.offsetHeight + dropDownPadding}px`;
86
+ dropDown.style.left = `${Math.min(left, window.innerWidth - dropDown.offsetWidth - 20)}px`;
87
+ }
88
+ }, [dropDownRef, buttonRef, showDropDown]);
89
+ useEffect(() => {
90
+ const button = buttonRef.current;
91
+ if (button !== null && showDropDown) {
92
+ const handle = (event) => {
93
+ const target = event.target;
94
+ if (!isDOMNode(target)) {
95
+ return;
96
+ }
97
+ if (stopCloseOnClickSelf) {
98
+ if (dropDownRef.current && dropDownRef.current.contains(target)) {
99
+ return;
100
+ }
101
+ }
102
+ if (!button.contains(target)) {
103
+ setShowDropDown(false);
104
+ }
105
+ };
106
+ document.addEventListener('click', handle);
107
+ return () => {
108
+ document.removeEventListener('click', handle);
109
+ };
110
+ }
111
+ }, [dropDownRef, buttonRef, showDropDown, stopCloseOnClickSelf]);
112
+ useEffect(() => {
113
+ const handleButtonPositionUpdate = () => {
114
+ if (showDropDown) {
115
+ const button = buttonRef.current;
116
+ const dropDown = dropDownRef.current;
117
+ if (button !== null && dropDown !== null) {
118
+ const { top } = button.getBoundingClientRect();
119
+ const newPosition = top + button.offsetHeight + dropDownPadding;
120
+ if (newPosition !== dropDown.getBoundingClientRect().top) {
121
+ dropDown.style.top = `${newPosition}px`;
122
+ }
123
+ }
124
+ }
125
+ };
126
+ document.addEventListener('scroll', handleButtonPositionUpdate);
127
+ return () => {
128
+ document.removeEventListener('scroll', handleButtonPositionUpdate);
129
+ };
130
+ }, [buttonRef, dropDownRef, showDropDown]);
131
+ return (_jsxs(_Fragment, { children: [_jsxs("button", { type: "button", disabled: disabled, "aria-label": buttonAriaLabel || buttonLabel, className: buttonClassName, onClick: () => setShowDropDown(!showDropDown), ref: buttonRef, children: [buttonIconClassName && _jsx("span", { className: buttonIconClassName }), buttonLabel && (_jsx("span", { className: "text dropdown-button-text", children: buttonLabel })), _jsx("i", { className: "chevron-down" })] }), showDropDown &&
132
+ createPortal(_jsx(DropDownItems, { dropDownRef: dropDownRef, onClose: handleClose, children: children }), document.body)] }));
133
+ }
@@ -0,0 +1,13 @@
1
+ type Props = {
2
+ disabled?: boolean;
3
+ buttonAriaLabel?: string;
4
+ buttonClassName: string;
5
+ buttonIconClassName?: string;
6
+ buttonLabel?: string;
7
+ title?: string;
8
+ stopCloseOnClickSelf?: boolean;
9
+ color: string;
10
+ onChange?: (color: string, skipHistoryStack: boolean) => void;
11
+ };
12
+ export default function DropdownColorPicker({ disabled, stopCloseOnClickSelf, color, onChange, ...rest }: Props): import("react/jsx-runtime").JSX.Element;
13
+ export {};
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import ColorPicker from './ColorPicker';
3
+ import DropDown from './DropDown';
4
+ export default function DropdownColorPicker({ disabled = false, stopCloseOnClickSelf = true, color, onChange, ...rest }) {
5
+ return (_jsx(DropDown, { ...rest, disabled: disabled, stopCloseOnClickSelf: stopCloseOnClickSelf, children: _jsx(ColorPicker, { color: color, onChange: onChange }) }));
6
+ }
@@ -0,0 +1,8 @@
1
+ import './EquationEditor.css';
2
+ type BaseEquationEditorProps = {
3
+ equation: string;
4
+ inline: boolean;
5
+ setEquation: (equation: string) => void;
6
+ };
7
+ declare const _default: import("react").ForwardRefExoticComponent<BaseEquationEditorProps & import("react").RefAttributes<HTMLInputElement | HTMLTextAreaElement>>;
8
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import './EquationEditor.css';
3
+ import { isHTMLElement } from 'lexical';
4
+ import { forwardRef } from 'react';
5
+ function EquationEditor({ equation, setEquation, inline }, forwardedRef) {
6
+ const onChange = (event) => {
7
+ setEquation(event.target.value);
8
+ };
9
+ return inline && isHTMLElement(forwardedRef) ? (_jsxs("span", { className: "EquationEditor_inputBackground", children: [_jsx("span", { className: "EquationEditor_dollarSign", children: "$" }), _jsx("input", { className: "EquationEditor_inlineEditor", value: equation, onChange: onChange, autoFocus: true, ref: forwardedRef }), _jsx("span", { className: "EquationEditor_dollarSign", children: "$" })] })) : (_jsxs("div", { className: "EquationEditor_inputBackground", children: [_jsx("span", { className: "EquationEditor_dollarSign", children: '$$\n' }), _jsx("textarea", { className: "EquationEditor_blockEditor", value: equation, onChange: onChange, ref: forwardedRef }), _jsx("span", { className: "EquationEditor_dollarSign", children: '\n$$' })] }));
10
+ }
11
+ export default forwardRef(EquationEditor);