@blocklet/editor-lite 2.6.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 (550) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +33 -0
  3. package/lib/blocklet-editor-viewer.d.ts +4 -0
  4. package/lib/blocklet-editor-viewer.js +12 -0
  5. package/lib/blocklet-editor.d.ts +2 -0
  6. package/lib/blocklet-editor.js +12 -0
  7. package/lib/components/Loading.d.ts +4 -0
  8. package/lib/components/Loading.js +13 -0
  9. package/lib/components/SelectionPopper.d.ts +14 -0
  10. package/lib/components/SelectionPopper.js +73 -0
  11. package/lib/components/animateText.d.ts +3 -0
  12. package/lib/components/animateText.js +29 -0
  13. package/lib/components/createPortal.d.ts +2 -0
  14. package/lib/components/createPortal.js +16 -0
  15. package/lib/config.d.ts +37 -0
  16. package/lib/config.js +12 -0
  17. package/lib/ext/AIPlugin/AIIcon.d.ts +5 -0
  18. package/lib/ext/AIPlugin/AIIcon.js +7 -0
  19. package/lib/ext/AIPlugin/Arrow.d.ts +1 -0
  20. package/lib/ext/AIPlugin/Arrow.js +5 -0
  21. package/lib/ext/AIPlugin/TextGeneration.d.ts +6 -0
  22. package/lib/ext/AIPlugin/TextGeneration.js +131 -0
  23. package/lib/ext/AIPlugin/Writing.d.ts +1 -0
  24. package/lib/ext/AIPlugin/Writing.js +7 -0
  25. package/lib/ext/AIPlugin/index.d.ts +9 -0
  26. package/lib/ext/AIPlugin/index.js +180 -0
  27. package/lib/ext/AIPlugin/utils.d.ts +6 -0
  28. package/lib/ext/AIPlugin/utils.js +44 -0
  29. package/lib/ext/AITranslationPlugin/index.d.ts +9 -0
  30. package/lib/ext/AITranslationPlugin/index.js +124 -0
  31. package/lib/ext/AITranslationPlugin/selection.d.ts +3 -0
  32. package/lib/ext/AITranslationPlugin/selection.js +45 -0
  33. package/lib/ext/AITranslationPlugin/translation.d.ts +3 -0
  34. package/lib/ext/AITranslationPlugin/translation.js +67 -0
  35. package/lib/ext/AITranslationPlugin/types.d.ts +49 -0
  36. package/lib/ext/AITranslationPlugin/types.js +1 -0
  37. package/lib/ext/AITranslationPlugin/utils.d.ts +46 -0
  38. package/lib/ext/AITranslationPlugin/utils.js +343 -0
  39. package/lib/ext/Aide/Aide.d.ts +4 -0
  40. package/lib/ext/Aide/Aide.js +30 -0
  41. package/lib/ext/Aide/Delayed.d.ts +7 -0
  42. package/lib/ext/Aide/Delayed.js +12 -0
  43. package/lib/ext/Aide/Input.d.ts +6 -0
  44. package/lib/ext/Aide/Input.js +49 -0
  45. package/lib/ext/Aide/Menu.d.ts +4 -0
  46. package/lib/ext/Aide/Menu.js +29 -0
  47. package/lib/ext/Aide/Output.d.ts +4 -0
  48. package/lib/ext/Aide/Output.js +14 -0
  49. package/lib/ext/Aide/Templates.d.ts +4 -0
  50. package/lib/ext/Aide/Templates.js +34 -0
  51. package/lib/ext/Aide/builtin-templates.d.ts +3 -0
  52. package/lib/ext/Aide/builtin-templates.js +48 -0
  53. package/lib/ext/Aide/context.d.ts +47 -0
  54. package/lib/ext/Aide/context.js +114 -0
  55. package/lib/ext/Aide/external-templates/Breadcrumb.d.ts +10 -0
  56. package/lib/ext/Aide/external-templates/Breadcrumb.js +11 -0
  57. package/lib/ext/Aide/external-templates/Output.d.ts +8 -0
  58. package/lib/ext/Aide/external-templates/Output.js +22 -0
  59. package/lib/ext/Aide/external-templates/Search.d.ts +6 -0
  60. package/lib/ext/Aide/external-templates/Search.js +14 -0
  61. package/lib/ext/Aide/external-templates/Tags.d.ts +4 -0
  62. package/lib/ext/Aide/external-templates/Tags.js +44 -0
  63. package/lib/ext/Aide/external-templates/Template.d.ts +7 -0
  64. package/lib/ext/Aide/external-templates/Template.js +110 -0
  65. package/lib/ext/Aide/external-templates/Templates.d.ts +6 -0
  66. package/lib/ext/Aide/external-templates/Templates.js +61 -0
  67. package/lib/ext/Aide/external-templates/index.d.ts +4 -0
  68. package/lib/ext/Aide/external-templates/index.js +83 -0
  69. package/lib/ext/Aide/external-templates/parameter-field.d.ts +6 -0
  70. package/lib/ext/Aide/external-templates/parameter-field.js +92 -0
  71. package/lib/ext/Aide/hooks.d.ts +7 -0
  72. package/lib/ext/Aide/hooks.js +14 -0
  73. package/lib/ext/Aide/index.d.ts +2 -0
  74. package/lib/ext/Aide/index.js +2 -0
  75. package/lib/ext/Aide/types.d.ts +84 -0
  76. package/lib/ext/Aide/types.js +25 -0
  77. package/lib/ext/Aide/withAiAvailable.d.ts +5 -0
  78. package/lib/ext/Aide/withAiAvailable.js +11 -0
  79. package/lib/ext/Alert/AlertComponent.d.ts +10 -0
  80. package/lib/ext/Alert/AlertComponent.js +38 -0
  81. package/lib/ext/Alert/AlertNode.d.ts +28 -0
  82. package/lib/ext/Alert/AlertNode.js +105 -0
  83. package/lib/ext/Alert/AlertPlugin.d.ts +11 -0
  84. package/lib/ext/Alert/AlertPlugin.js +41 -0
  85. package/lib/ext/BilibiliPlugin/BilibiliNode.d.ts +31 -0
  86. package/lib/ext/BilibiliPlugin/BilibiliNode.js +95 -0
  87. package/lib/ext/BilibiliPlugin/BilibiliVideo.d.ts +6 -0
  88. package/lib/ext/BilibiliPlugin/BilibiliVideo.js +24 -0
  89. package/lib/ext/BilibiliPlugin/config.d.ts +2 -0
  90. package/lib/ext/BilibiliPlugin/config.js +40 -0
  91. package/lib/ext/BilibiliPlugin/index.d.ts +5 -0
  92. package/lib/ext/BilibiliPlugin/index.js +20 -0
  93. package/lib/ext/BlockletEmbedPlugin/BlockletEmbed.d.ts +7 -0
  94. package/lib/ext/BlockletEmbedPlugin/BlockletEmbed.js +51 -0
  95. package/lib/ext/BlockletEmbedPlugin/BlockletEmbedNode.d.ts +30 -0
  96. package/lib/ext/BlockletEmbedPlugin/BlockletEmbedNode.js +96 -0
  97. package/lib/ext/BlockletEmbedPlugin/index.d.ts +12 -0
  98. package/lib/ext/BlockletEmbedPlugin/index.js +76 -0
  99. package/lib/ext/BlurTextPlugin.d.ts +1 -0
  100. package/lib/ext/BlurTextPlugin.js +40 -0
  101. package/lib/ext/BookmarkPlugin/Bookmark.d.ts +7 -0
  102. package/lib/ext/BookmarkPlugin/Bookmark.js +175 -0
  103. package/lib/ext/BookmarkPlugin/BookmarkNode.d.ts +35 -0
  104. package/lib/ext/BookmarkPlugin/BookmarkNode.js +110 -0
  105. package/lib/ext/BookmarkPlugin/index.d.ts +11 -0
  106. package/lib/ext/BookmarkPlugin/index.js +45 -0
  107. package/lib/ext/BusyPlugin.d.ts +9 -0
  108. package/lib/ext/BusyPlugin.js +17 -0
  109. package/lib/ext/CharacterCountPlugin/index.d.ts +10 -0
  110. package/lib/ext/CharacterCountPlugin/index.js +39 -0
  111. package/lib/ext/CharacterCountPlugin/useCharacterCount.d.ts +11 -0
  112. package/lib/ext/CharacterCountPlugin/useCharacterCount.js +49 -0
  113. package/lib/ext/CharacterLimitPlugin/index.d.ts +9 -0
  114. package/lib/ext/CharacterLimitPlugin/index.js +49 -0
  115. package/lib/ext/CheckboxPlugin.d.ts +3 -0
  116. package/lib/ext/CheckboxPlugin.js +75 -0
  117. package/lib/ext/CodeCopyPlugin/CodeCopyPlugin.d.ts +2 -0
  118. package/lib/ext/CodeCopyPlugin/CodeCopyPlugin.js +90 -0
  119. package/lib/ext/CodeCopyPlugin/copy.svg +1 -0
  120. package/lib/ext/CodeCopyPlugin/index.d.ts +1 -0
  121. package/lib/ext/CodeCopyPlugin/index.js +1 -0
  122. package/lib/ext/CodeCopyPlugin/style.css +12 -0
  123. package/lib/ext/ContentLocale.d.ts +7 -0
  124. package/lib/ext/ContentLocale.js +15 -0
  125. package/lib/ext/CustomOnChangePlugin/index.d.ts +5 -0
  126. package/lib/ext/CustomOnChangePlugin/index.js +17 -0
  127. package/lib/ext/CustomOnChangePlugin/styles.css +14 -0
  128. package/lib/ext/CustomOnChangePlugin/utils.d.ts +30 -0
  129. package/lib/ext/CustomOnChangePlugin/utils.js +148 -0
  130. package/lib/ext/EditorHolderPlugin/EditorHolderContext.d.ts +13 -0
  131. package/lib/ext/EditorHolderPlugin/EditorHolderContext.js +15 -0
  132. package/lib/ext/EditorHolderPlugin/EditorHolderPlugin.d.ts +1 -0
  133. package/lib/ext/EditorHolderPlugin/EditorHolderPlugin.js +11 -0
  134. package/lib/ext/EditorHolderPlugin/index.d.ts +2 -0
  135. package/lib/ext/EditorHolderPlugin/index.js +2 -0
  136. package/lib/ext/EditorReadyPlugin.d.ts +3 -0
  137. package/lib/ext/EditorReadyPlugin.js +15 -0
  138. package/lib/ext/FilePlugin/FileNode.d.ts +44 -0
  139. package/lib/ext/FilePlugin/FileNode.js +195 -0
  140. package/lib/ext/FilePlugin/FilePlugin.d.ts +7 -0
  141. package/lib/ext/FilePlugin/FilePlugin.js +27 -0
  142. package/lib/ext/FilePlugin/index.d.ts +2 -0
  143. package/lib/ext/FilePlugin/index.js +2 -0
  144. package/lib/ext/HeadingsIdPlugin.d.ts +1 -0
  145. package/lib/ext/HeadingsIdPlugin.js +67 -0
  146. package/lib/ext/ImagePathFixerPlugin.d.ts +1 -0
  147. package/lib/ext/ImagePathFixerPlugin.js +31 -0
  148. package/lib/ext/InlineTranslationPlugin/EditorTranslator.d.ts +42 -0
  149. package/lib/ext/InlineTranslationPlugin/EditorTranslator.js +199 -0
  150. package/lib/ext/InlineTranslationPlugin/InlineTranslationPlugin.d.ts +12 -0
  151. package/lib/ext/InlineTranslationPlugin/InlineTranslationPlugin.js +232 -0
  152. package/lib/ext/InlineTranslationPlugin/TranslationNode.d.ts +23 -0
  153. package/lib/ext/InlineTranslationPlugin/TranslationNode.js +49 -0
  154. package/lib/ext/InlineTranslationPlugin/index.d.ts +4 -0
  155. package/lib/ext/InlineTranslationPlugin/index.js +4 -0
  156. package/lib/ext/InlineTranslationPlugin/store.d.ts +50 -0
  157. package/lib/ext/InlineTranslationPlugin/store.js +94 -0
  158. package/lib/ext/InlineTranslationPlugin/types.d.ts +1 -0
  159. package/lib/ext/InlineTranslationPlugin/types.js +1 -0
  160. package/lib/ext/LexicalEditorRefPlugin.d.ts +14 -0
  161. package/lib/ext/LexicalEditorRefPlugin.js +26 -0
  162. package/lib/ext/OnContentChangePlugin.d.ts +14 -0
  163. package/lib/ext/OnContentChangePlugin.js +35 -0
  164. package/lib/ext/PasteSlackImagePlugin/index.d.ts +2 -0
  165. package/lib/ext/PasteSlackImagePlugin/index.js +22 -0
  166. package/lib/ext/PostLinkEmbedPlugin/PostLinkNode.d.ts +32 -0
  167. package/lib/ext/PostLinkEmbedPlugin/PostLinkNode.js +140 -0
  168. package/lib/ext/PostLinkEmbedPlugin/fixInvalidPostLinkNodes.d.ts +1 -0
  169. package/lib/ext/PostLinkEmbedPlugin/fixInvalidPostLinkNodes.js +15 -0
  170. package/lib/ext/PostLinkEmbedPlugin/index.d.ts +21 -0
  171. package/lib/ext/PostLinkEmbedPlugin/index.js +148 -0
  172. package/lib/ext/RemoveListPlugin.d.ts +1 -0
  173. package/lib/ext/RemoveListPlugin.js +63 -0
  174. package/lib/ext/SafeAreaPlugin.d.ts +12 -0
  175. package/lib/ext/SafeAreaPlugin.js +56 -0
  176. package/lib/ext/SelectBlockPlugin.d.ts +1 -0
  177. package/lib/ext/SelectBlockPlugin.js +95 -0
  178. package/lib/ext/ShortcutPlugin/CtrlsShortcutPlugin.d.ts +6 -0
  179. package/lib/ext/ShortcutPlugin/CtrlsShortcutPlugin.js +17 -0
  180. package/lib/ext/ShortcutPlugin/index.d.ts +1 -0
  181. package/lib/ext/ShortcutPlugin/index.js +1 -0
  182. package/lib/ext/TemplatePlugin.d.ts +8 -0
  183. package/lib/ext/TemplatePlugin.js +170 -0
  184. package/lib/ext/VideoPathFixerPlugin.d.ts +1 -0
  185. package/lib/ext/VideoPathFixerPlugin.js +31 -0
  186. package/lib/ext/VideoPlugin/VideoComponent.d.ts +5 -0
  187. package/lib/ext/VideoPlugin/VideoComponent.js +5 -0
  188. package/lib/ext/VideoPlugin/VideoNode.d.ts +37 -0
  189. package/lib/ext/VideoPlugin/VideoNode.js +97 -0
  190. package/lib/ext/VideoPlugin/VideoPlugin.d.ts +7 -0
  191. package/lib/ext/VideoPlugin/VideoPlugin.js +26 -0
  192. package/lib/ext/VideoPlugin/index.d.ts +2 -0
  193. package/lib/ext/VideoPlugin/index.js +2 -0
  194. package/lib/ext/common.d.ts +15 -0
  195. package/lib/ext/common.js +62 -0
  196. package/lib/ext/nodes/GithubComp.d.ts +3 -0
  197. package/lib/ext/nodes/GithubComp.js +20 -0
  198. package/lib/ext/nodes/GithubNode.d.ts +28 -0
  199. package/lib/ext/nodes/GithubNode.js +94 -0
  200. package/lib/ext/nodes/util.d.ts +5 -0
  201. package/lib/ext/nodes/util.js +1 -0
  202. package/lib/ext/translation/translation-utils.d.ts +16 -0
  203. package/lib/ext/translation/translation-utils.js +63 -0
  204. package/lib/ext/utils.d.ts +21 -0
  205. package/lib/ext/utils.js +88 -0
  206. package/lib/global.d.ts +1 -0
  207. package/lib/index.d.ts +4 -0
  208. package/lib/index.js +5 -0
  209. package/lib/lexical-utils/index.d.ts +46 -0
  210. package/lib/lexical-utils/index.js +243 -0
  211. package/lib/libs/sort-array-by-key.d.ts +4 -0
  212. package/lib/libs/sort-array-by-key.js +68 -0
  213. package/lib/libs/utm.d.ts +9 -0
  214. package/lib/libs/utm.js +43 -0
  215. package/lib/main/appSettings.d.ts +11 -0
  216. package/lib/main/appSettings.js +20 -0
  217. package/lib/main/context/SharedAutocompleteContext.d.ts +16 -0
  218. package/lib/main/context/SharedAutocompleteContext.js +35 -0
  219. package/lib/main/context/SharedHistoryContext.d.ts +17 -0
  220. package/lib/main/context/SharedHistoryContext.js +11 -0
  221. package/lib/main/editor-root.d.ts +2 -0
  222. package/lib/main/editor-root.js +46 -0
  223. package/lib/main/editor.d.ts +21 -0
  224. package/lib/main/editor.js +99 -0
  225. package/lib/main/hooks/hooks.d.ts +15 -0
  226. package/lib/main/hooks/hooks.js +49 -0
  227. package/lib/main/hooks/medium-zoom.d.ts +9 -0
  228. package/lib/main/hooks/medium-zoom.js +34 -0
  229. package/lib/main/hooks/use-mobile.d.ts +4 -0
  230. package/lib/main/hooks/use-mobile.js +6 -0
  231. package/lib/main/hooks/useBeforeUnload.d.ts +1 -0
  232. package/lib/main/hooks/useBeforeUnload.js +15 -0
  233. package/lib/main/hooks/useHasNodes.d.ts +1 -0
  234. package/lib/main/hooks/useHasNodes.js +8 -0
  235. package/lib/main/hooks/useIsFocused.d.ts +1 -0
  236. package/lib/main/hooks/useIsFocused.js +20 -0
  237. package/lib/main/hooks/useModal.d.ts +12 -0
  238. package/lib/main/hooks/useModal.js +33 -0
  239. package/lib/main/hooks/useReport.d.ts +8 -0
  240. package/lib/main/hooks/useReport.js +48 -0
  241. package/lib/main/hooks/useResponsiveTable.d.ts +5 -0
  242. package/lib/main/hooks/useResponsiveTable.js +31 -0
  243. package/lib/main/hooks/useTranslationListener.d.ts +4 -0
  244. package/lib/main/hooks/useTranslationListener.js +94 -0
  245. package/lib/main/icons.d.ts +3 -0
  246. package/lib/main/icons.js +25 -0
  247. package/lib/main/images/emoji/1F600.png +0 -0
  248. package/lib/main/images/emoji/1F641.png +0 -0
  249. package/lib/main/images/emoji/1F642.png +0 -0
  250. package/lib/main/images/emoji/2764.png +0 -0
  251. package/lib/main/images/excalidraw.svg +3 -0
  252. package/lib/main/images/icons/arrow-clockwise.svg +1 -0
  253. package/lib/main/images/icons/arrow-counterclockwise.svg +1 -0
  254. package/lib/main/images/icons/bg-color.svg +1 -0
  255. package/lib/main/images/icons/camera.svg +1 -0
  256. package/lib/main/images/icons/caret-right-fill.svg +1 -0
  257. package/lib/main/images/icons/chat-left-text.svg +1 -0
  258. package/lib/main/images/icons/chat-right-dots.svg +1 -0
  259. package/lib/main/images/icons/chat-right-text.svg +1 -0
  260. package/lib/main/images/icons/chat-right.svg +1 -0
  261. package/lib/main/images/icons/chat-square-quote.svg +1 -0
  262. package/lib/main/images/icons/chevron-down.svg +1 -0
  263. package/lib/main/images/icons/clipboard.svg +1 -0
  264. package/lib/main/images/icons/close.svg +1 -0
  265. package/lib/main/images/icons/code.svg +1 -0
  266. package/lib/main/images/icons/comments.svg +1 -0
  267. package/lib/main/images/icons/copy.svg +1 -0
  268. package/lib/main/images/icons/diagram-2.svg +1 -0
  269. package/lib/main/images/icons/download.svg +1 -0
  270. package/lib/main/images/icons/draggable-block-menu.svg +1 -0
  271. package/lib/main/images/icons/dropdown-more.svg +1 -0
  272. package/lib/main/images/icons/figma.svg +1 -0
  273. package/lib/main/images/icons/file-image.svg +1 -0
  274. package/lib/main/images/icons/filetype-gif.svg +1 -0
  275. package/lib/main/images/icons/font-color.svg +1 -0
  276. package/lib/main/images/icons/font-family.svg +1 -0
  277. package/lib/main/images/icons/gear.svg +1 -0
  278. package/lib/main/images/icons/horizontal-rule.svg +1 -0
  279. package/lib/main/images/icons/indent.svg +1 -0
  280. package/lib/main/images/icons/journal-code.svg +1 -0
  281. package/lib/main/images/icons/journal-text.svg +1 -0
  282. package/lib/main/images/icons/justify.svg +1 -0
  283. package/lib/main/images/icons/link.svg +1 -0
  284. package/lib/main/images/icons/list-ol.svg +1 -0
  285. package/lib/main/images/icons/list-ul.svg +1 -0
  286. package/lib/main/images/icons/lock-fill.svg +1 -0
  287. package/lib/main/images/icons/lock.svg +1 -0
  288. package/lib/main/images/icons/markdown.svg +1 -0
  289. package/lib/main/images/icons/mic.svg +1 -0
  290. package/lib/main/images/icons/outdent.svg +1 -0
  291. package/lib/main/images/icons/paint-bucket.svg +1 -0
  292. package/lib/main/images/icons/palette.svg +1 -0
  293. package/lib/main/images/icons/pencil-fill.svg +1 -0
  294. package/lib/main/images/icons/plug-fill.svg +1 -0
  295. package/lib/main/images/icons/plug.svg +1 -0
  296. package/lib/main/images/icons/plus-slash-minus.svg +1 -0
  297. package/lib/main/images/icons/plus.svg +1 -0
  298. package/lib/main/images/icons/prettier-error.svg +1 -0
  299. package/lib/main/images/icons/prettier.svg +1 -0
  300. package/lib/main/images/icons/send.svg +1 -0
  301. package/lib/main/images/icons/square-check.svg +1 -0
  302. package/lib/main/images/icons/sticky.svg +1 -0
  303. package/lib/main/images/icons/success.svg +1 -0
  304. package/lib/main/images/icons/table.svg +1 -0
  305. package/lib/main/images/icons/text-center.svg +1 -0
  306. package/lib/main/images/icons/text-left.svg +1 -0
  307. package/lib/main/images/icons/text-paragraph.svg +1 -0
  308. package/lib/main/images/icons/text-right.svg +1 -0
  309. package/lib/main/images/icons/trash.svg +1 -0
  310. package/lib/main/images/icons/trash3.svg +1 -0
  311. package/lib/main/images/icons/tweet.svg +1 -0
  312. package/lib/main/images/icons/type-bold.svg +1 -0
  313. package/lib/main/images/icons/type-h1.svg +1 -0
  314. package/lib/main/images/icons/type-h2.svg +1 -0
  315. package/lib/main/images/icons/type-h3.svg +1 -0
  316. package/lib/main/images/icons/type-h4.svg +1 -0
  317. package/lib/main/images/icons/type-h5.svg +1 -0
  318. package/lib/main/images/icons/type-h6.svg +1 -0
  319. package/lib/main/images/icons/type-italic.svg +1 -0
  320. package/lib/main/images/icons/type-strikethrough.svg +1 -0
  321. package/lib/main/images/icons/type-subscript.svg +1 -0
  322. package/lib/main/images/icons/type-superscript.svg +1 -0
  323. package/lib/main/images/icons/type-underline.svg +1 -0
  324. package/lib/main/images/icons/upload.svg +1 -0
  325. package/lib/main/images/icons/user.svg +1 -0
  326. package/lib/main/images/icons/youtube.svg +1 -0
  327. package/lib/main/images/landscape.jpg +0 -0
  328. package/lib/main/index.css +257 -0
  329. package/lib/main/index.d.ts +28 -0
  330. package/lib/main/index.js +52 -0
  331. package/lib/main/nodes/EmojiNode.d.ts +25 -0
  332. package/lib/main/nodes/EmojiNode.js +57 -0
  333. package/lib/main/nodes/EquationNode.d.ts +31 -0
  334. package/lib/main/nodes/EquationNode.js +65 -0
  335. package/lib/main/nodes/ExcalidrawNode/ExcalidrawComponent.d.ts +13 -0
  336. package/lib/main/nodes/ExcalidrawNode/ExcalidrawComponent.js +155 -0
  337. package/lib/main/nodes/ExcalidrawNode/ExcalidrawImage.d.ts +58 -0
  338. package/lib/main/nodes/ExcalidrawNode/ExcalidrawImage.js +60 -0
  339. package/lib/main/nodes/ExcalidrawNode/ExcalidrawModal.css +75 -0
  340. package/lib/main/nodes/ExcalidrawNode/ExcalidrawModal.d.ts +49 -0
  341. package/lib/main/nodes/ExcalidrawNode/ExcalidrawModal.js +197 -0
  342. package/lib/main/nodes/ExcalidrawNode/index.d.ts +30 -0
  343. package/lib/main/nodes/ExcalidrawNode/index.js +95 -0
  344. package/lib/main/nodes/ExcalidrawNode/utils.d.ts +5 -0
  345. package/lib/main/nodes/ExcalidrawNode/utils.js +71 -0
  346. package/lib/main/nodes/FigmaNode.d.ts +30 -0
  347. package/lib/main/nodes/FigmaNode.js +59 -0
  348. package/lib/main/nodes/ImageComponent.d.ts +27 -0
  349. package/lib/main/nodes/ImageComponent.js +432 -0
  350. package/lib/main/nodes/ImageNode.css +51 -0
  351. package/lib/main/nodes/ImageNode.d.ts +74 -0
  352. package/lib/main/nodes/ImageNode.js +151 -0
  353. package/lib/main/nodes/KeywordNode.d.ts +25 -0
  354. package/lib/main/nodes/KeywordNode.js +52 -0
  355. package/lib/main/nodes/MentionNode.d.ts +27 -0
  356. package/lib/main/nodes/MentionNode.js +88 -0
  357. package/lib/main/nodes/PlaygroundNodes.d.ts +10 -0
  358. package/lib/main/nodes/PlaygroundNodes.js +70 -0
  359. package/lib/main/nodes/TweetNode.d.ts +31 -0
  360. package/lib/main/nodes/TweetNode.js +126 -0
  361. package/lib/main/nodes/YouTubeNode.d.ts +32 -0
  362. package/lib/main/nodes/YouTubeNode.js +94 -0
  363. package/lib/main/plugins/AutoEmbedPlugin/index.d.ts +27 -0
  364. package/lib/main/plugins/AutoEmbedPlugin/index.js +353 -0
  365. package/lib/main/plugins/AutoEmbedPlugin/urlParseCache.d.ts +2 -0
  366. package/lib/main/plugins/AutoEmbedPlugin/urlParseCache.js +14 -0
  367. package/lib/main/plugins/AutoLinkPlugin/index.d.ts +9 -0
  368. package/lib/main/plugins/AutoLinkPlugin/index.js +39 -0
  369. package/lib/main/plugins/ClickableLinkPlugin/index.d.ts +8 -0
  370. package/lib/main/plugins/ClickableLinkPlugin/index.js +141 -0
  371. package/lib/main/plugins/CodeActionMenuPlugin/components/CopyButton/index.d.ts +7 -0
  372. package/lib/main/plugins/CodeActionMenuPlugin/components/CopyButton/index.js +44 -0
  373. package/lib/main/plugins/CodeActionMenuPlugin/index.css +46 -0
  374. package/lib/main/plugins/CodeActionMenuPlugin/index.d.ts +12 -0
  375. package/lib/main/plugins/CodeActionMenuPlugin/index.js +100 -0
  376. package/lib/main/plugins/CodeActionMenuPlugin/utils.d.ts +2 -0
  377. package/lib/main/plugins/CodeActionMenuPlugin/utils.js +18 -0
  378. package/lib/main/plugins/CodeHighlightPlugin/index.d.ts +9 -0
  379. package/lib/main/plugins/CodeHighlightPlugin/index.js +17 -0
  380. package/lib/main/plugins/CollapsiblePlugin/Collapsible.css +61 -0
  381. package/lib/main/plugins/CollapsiblePlugin/CollapsibleContainerNode.d.ts +30 -0
  382. package/lib/main/plugins/CollapsiblePlugin/CollapsibleContainerNode.js +120 -0
  383. package/lib/main/plugins/CollapsiblePlugin/CollapsibleContentNode.d.ts +24 -0
  384. package/lib/main/plugins/CollapsiblePlugin/CollapsibleContentNode.js +90 -0
  385. package/lib/main/plugins/CollapsiblePlugin/CollapsibleTitleNode.d.ts +24 -0
  386. package/lib/main/plugins/CollapsiblePlugin/CollapsibleTitleNode.js +95 -0
  387. package/lib/main/plugins/CollapsiblePlugin/CollapsibleUtils.d.ts +9 -0
  388. package/lib/main/plugins/CollapsiblePlugin/CollapsibleUtils.js +15 -0
  389. package/lib/main/plugins/CollapsiblePlugin/index.d.ts +11 -0
  390. package/lib/main/plugins/CollapsiblePlugin/index.js +147 -0
  391. package/lib/main/plugins/ComponentPickerPlugin/index.d.ts +12 -0
  392. package/lib/main/plugins/ComponentPickerPlugin/index.js +438 -0
  393. package/lib/main/plugins/DragDropPastePlugin/index.d.ts +8 -0
  394. package/lib/main/plugins/DragDropPastePlugin/index.js +32 -0
  395. package/lib/main/plugins/DraggableBlockPlugin/index.css +36 -0
  396. package/lib/main/plugins/DraggableBlockPlugin/index.d.ts +12 -0
  397. package/lib/main/plugins/DraggableBlockPlugin/index.js +288 -0
  398. package/lib/main/plugins/EmojisPlugin/index.d.ts +9 -0
  399. package/lib/main/plugins/EmojisPlugin/index.js +63 -0
  400. package/lib/main/plugins/ExcalidrawPlugin/index.d.ts +3 -0
  401. package/lib/main/plugins/ExcalidrawPlugin/index.js +30 -0
  402. package/lib/main/plugins/FigmaPlugin/index.d.ts +11 -0
  403. package/lib/main/plugins/FigmaPlugin/index.js +27 -0
  404. package/lib/main/plugins/FloatingLinkEditorPlugin/index.css +39 -0
  405. package/lib/main/plugins/FloatingLinkEditorPlugin/index.d.ts +12 -0
  406. package/lib/main/plugins/FloatingLinkEditorPlugin/index.js +181 -0
  407. package/lib/main/plugins/FloatingTextFormatToolbarPlugin/ColorPickerButton.d.ts +5 -0
  408. package/lib/main/plugins/FloatingTextFormatToolbarPlugin/ColorPickerButton.js +24 -0
  409. package/lib/main/plugins/FloatingTextFormatToolbarPlugin/index.css +128 -0
  410. package/lib/main/plugins/FloatingTextFormatToolbarPlugin/index.d.ts +12 -0
  411. package/lib/main/plugins/FloatingTextFormatToolbarPlugin/index.js +216 -0
  412. package/lib/main/plugins/HorizontalRulePlugin/index.d.ts +8 -0
  413. package/lib/main/plugins/HorizontalRulePlugin/index.js +30 -0
  414. package/lib/main/plugins/ImagesPlugin/index.d.ts +15 -0
  415. package/lib/main/plugins/ImagesPlugin/index.js +36 -0
  416. package/lib/main/plugins/LexicalTypeaheadMenuPlugin/index.d.ts +64 -0
  417. package/lib/main/plugins/LexicalTypeaheadMenuPlugin/index.js +493 -0
  418. package/lib/main/plugins/MarkdownShortcutPlugin/index.d.ts +9 -0
  419. package/lib/main/plugins/MarkdownShortcutPlugin/index.js +22 -0
  420. package/lib/main/plugins/MarkdownTransformers/index.d.ts +12 -0
  421. package/lib/main/plugins/MarkdownTransformers/index.js +185 -0
  422. package/lib/main/plugins/MaxLengthPlugin/index.d.ts +10 -0
  423. package/lib/main/plugins/MaxLengthPlugin/index.js +43 -0
  424. package/lib/main/plugins/MentionsPlugin/HighlightStyle.d.ts +2 -0
  425. package/lib/main/plugins/MentionsPlugin/HighlightStyle.js +13 -0
  426. package/lib/main/plugins/MentionsPlugin/index.d.ts +9 -0
  427. package/lib/main/plugins/MentionsPlugin/index.js +175 -0
  428. package/lib/main/plugins/TabFocusPlugin/index.d.ts +8 -0
  429. package/lib/main/plugins/TabFocusPlugin/index.js +41 -0
  430. package/lib/main/plugins/TableActionMenuPlugin/index.d.ts +12 -0
  431. package/lib/main/plugins/TableActionMenuPlugin/index.js +486 -0
  432. package/lib/main/plugins/TableCellResizer/index.css +20 -0
  433. package/lib/main/plugins/TableCellResizer/index.d.ts +3 -0
  434. package/lib/main/plugins/TableCellResizer/index.js +295 -0
  435. package/lib/main/plugins/TableOfContentsPlugin/index.css +87 -0
  436. package/lib/main/plugins/TableOfContentsPlugin/index.d.ts +2 -0
  437. package/lib/main/plugins/TableOfContentsPlugin/index.js +106 -0
  438. package/lib/main/plugins/TablePlugin.d.ts +38 -0
  439. package/lib/main/plugins/TablePlugin.js +63 -0
  440. package/lib/main/plugins/ToolbarPlugin/index.d.ts +8 -0
  441. package/lib/main/plugins/ToolbarPlugin/index.js +467 -0
  442. package/lib/main/plugins/TreeViewPlugin/index.d.ts +9 -0
  443. package/lib/main/plugins/TreeViewPlugin/index.js +14 -0
  444. package/lib/main/plugins/TwitterPlugin/index.d.ts +11 -0
  445. package/lib/main/plugins/TwitterPlugin/index.js +27 -0
  446. package/lib/main/plugins/TypingPerfPlugin/index.d.ts +9 -0
  447. package/lib/main/plugins/TypingPerfPlugin/index.js +100 -0
  448. package/lib/main/plugins/YouTubePlugin/index.d.ts +11 -0
  449. package/lib/main/plugins/YouTubePlugin/index.js +27 -0
  450. package/lib/main/server/validation.d.ts +8 -0
  451. package/lib/main/server/validation.js +119 -0
  452. package/lib/main/setupEnv.d.ts +8 -0
  453. package/lib/main/setupEnv.js +25 -0
  454. package/lib/main/style/editable.css +476 -0
  455. package/lib/main/styled-editor-content.d.ts +5 -0
  456. package/lib/main/styled-editor-content.js +206 -0
  457. package/lib/main/themes/code-highlight/index.d.ts +32 -0
  458. package/lib/main/themes/code-highlight/index.js +58 -0
  459. package/lib/main/themes/customTheme.d.ts +2 -0
  460. package/lib/main/themes/customTheme.js +324 -0
  461. package/lib/main/themes/defaultTheme.d.ts +10 -0
  462. package/lib/main/themes/defaultTheme.js +554 -0
  463. package/lib/main/themes/table/index.d.ts +3 -0
  464. package/lib/main/themes/table/index.js +20 -0
  465. package/lib/main/themes/table/table.css +214 -0
  466. package/lib/main/ui/Button.css +36 -0
  467. package/lib/main/ui/Button.d.ts +18 -0
  468. package/lib/main/ui/Button.js +13 -0
  469. package/lib/main/ui/ColorPicker.css +89 -0
  470. package/lib/main/ui/ColorPicker.d.ts +28 -0
  471. package/lib/main/ui/ColorPicker.js +206 -0
  472. package/lib/main/ui/ContentEditable.d.ts +2 -0
  473. package/lib/main/ui/ContentEditable.js +15 -0
  474. package/lib/main/ui/Dialog.css +17 -0
  475. package/lib/main/ui/Dialog.d.ts +16 -0
  476. package/lib/main/ui/Dialog.js +15 -0
  477. package/lib/main/ui/DropDown.d.ts +25 -0
  478. package/lib/main/ui/DropDown.js +146 -0
  479. package/lib/main/ui/FileInput.d.ts +17 -0
  480. package/lib/main/ui/FileInput.js +5 -0
  481. package/lib/main/ui/FrameMockup/browser.css +52 -0
  482. package/lib/main/ui/FrameMockup/browser.d.ts +13 -0
  483. package/lib/main/ui/FrameMockup/browser.js +22 -0
  484. package/lib/main/ui/FrameMockup/index.d.ts +113 -0
  485. package/lib/main/ui/FrameMockup/index.js +61 -0
  486. package/lib/main/ui/ImageEnhancer.d.ts +29 -0
  487. package/lib/main/ui/ImageEnhancer.js +113 -0
  488. package/lib/main/ui/ImageResizer.d.ts +24 -0
  489. package/lib/main/ui/ImageResizer.js +154 -0
  490. package/lib/main/ui/Input.css +30 -0
  491. package/lib/main/ui/Modal.css +62 -0
  492. package/lib/main/ui/Modal.d.ts +15 -0
  493. package/lib/main/ui/Modal.js +50 -0
  494. package/lib/main/ui/Placeholder.d.ts +6 -0
  495. package/lib/main/ui/Placeholder.js +20 -0
  496. package/lib/main/ui/TextInput.d.ts +20 -0
  497. package/lib/main/ui/TextInput.js +14 -0
  498. package/lib/main/utils/getDOMRangeRect.d.ts +8 -0
  499. package/lib/main/utils/getDOMRangeRect.js +22 -0
  500. package/lib/main/utils/getSelectedNode.d.ts +2 -0
  501. package/lib/main/utils/getSelectedNode.js +22 -0
  502. package/lib/main/utils/guard.d.ts +14 -0
  503. package/lib/main/utils/guard.js +36 -0
  504. package/lib/main/utils/images.d.ts +10 -0
  505. package/lib/main/utils/images.js +16 -0
  506. package/lib/main/utils/join-classes.d.ts +8 -0
  507. package/lib/main/utils/join-classes.js +10 -0
  508. package/lib/main/utils/point.d.ts +21 -0
  509. package/lib/main/utils/point.js +42 -0
  510. package/lib/main/utils/prevent-duplicate-upload.d.ts +2 -0
  511. package/lib/main/utils/prevent-duplicate-upload.js +25 -0
  512. package/lib/main/utils/rect.d.ts +45 -0
  513. package/lib/main/utils/rect.js +98 -0
  514. package/lib/main/utils/sanitizeUrl.d.ts +8 -0
  515. package/lib/main/utils/sanitizeUrl.js +17 -0
  516. package/lib/main/utils/setFloatingElemPosition.d.ts +1 -0
  517. package/lib/main/utils/setFloatingElemPosition.js +32 -0
  518. package/lib/main/utils/swipe.d.ts +11 -0
  519. package/lib/main/utils/swipe.js +98 -0
  520. package/lib/main/viewer/index.d.ts +5 -0
  521. package/lib/main/viewer/index.js +25 -0
  522. package/lib/main/viewer/types.d.ts +14 -0
  523. package/lib/main/viewer/types.js +1 -0
  524. package/lib/main/viewer/viewer.d.ts +3 -0
  525. package/lib/main/viewer/viewer.js +31 -0
  526. package/lib/shared/canUseDOM.d.ts +8 -0
  527. package/lib/shared/canUseDOM.js +10 -0
  528. package/lib/shared/environment.d.ts +24 -0
  529. package/lib/shared/environment.js +21 -0
  530. package/lib/shared/getDOMSelection.d.ts +9 -0
  531. package/lib/shared/getDOMSelection.js +10 -0
  532. package/lib/shared/invariant.d.ts +8 -0
  533. package/lib/shared/invariant.js +16 -0
  534. package/lib/shared/useLayoutEffect.d.ts +10 -0
  535. package/lib/shared/useLayoutEffect.js +11 -0
  536. package/lib/types.d.ts +19 -0
  537. package/lib/types.js +1 -0
  538. package/lib/vendor/LexicalCharacterLimitPlugin/LexicalCharacterLimitPlugin.d.ts +15 -0
  539. package/lib/vendor/LexicalCharacterLimitPlugin/LexicalCharacterLimitPlugin.js +45 -0
  540. package/lib/vendor/LexicalCharacterLimitPlugin/index.d.ts +1 -0
  541. package/lib/vendor/LexicalCharacterLimitPlugin/index.js +1 -0
  542. package/lib/vendor/LexicalCharacterLimitPlugin/useCharacterLimit.d.ts +16 -0
  543. package/lib/vendor/LexicalCharacterLimitPlugin/useCharacterLimit.js +208 -0
  544. package/lib/vendor/history/LexicalHistoryPlugin.d.ts +14 -0
  545. package/lib/vendor/history/LexicalHistoryPlugin.js +15 -0
  546. package/lib/vendor/history/history/index.d.ts +63 -0
  547. package/lib/vendor/history/history/index.js +351 -0
  548. package/lib/vendor/history/useHistory.d.ts +10 -0
  549. package/lib/vendor/history/useHistory.js +15 -0
  550. package/package.json +109 -0
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ import { ElementNode, } from 'lexical';
9
+ import { IS_CHROME } from '../../../shared/environment';
10
+ import invariant from '../../../shared/invariant';
11
+ import { $isCollapsibleContainerNode } from './CollapsibleContainerNode';
12
+ import { domOnBeforeMatch, setDomHiddenUntilFound } from './CollapsibleUtils';
13
+ export function $convertCollapsibleContentElement(domNode) {
14
+ const node = $createCollapsibleContentNode();
15
+ return {
16
+ node,
17
+ };
18
+ }
19
+ export class CollapsibleContentNode extends ElementNode {
20
+ static getType() {
21
+ return 'collapsible-content';
22
+ }
23
+ static clone(node) {
24
+ return new CollapsibleContentNode(node.__key);
25
+ }
26
+ createDOM(config, editor) {
27
+ const dom = document.createElement('div');
28
+ dom.classList.add('Collapsible__content');
29
+ if (IS_CHROME) {
30
+ editor.getEditorState().read(() => {
31
+ const containerNode = this.getParentOrThrow();
32
+ invariant($isCollapsibleContainerNode(containerNode), 'Expected parent node to be a CollapsibleContainerNode');
33
+ if (!containerNode.__open) {
34
+ setDomHiddenUntilFound(dom);
35
+ }
36
+ });
37
+ domOnBeforeMatch(dom, () => {
38
+ editor.update(() => {
39
+ const containerNode = this.getParentOrThrow().getLatest();
40
+ invariant($isCollapsibleContainerNode(containerNode), 'Expected parent node to be a CollapsibleContainerNode');
41
+ if (!containerNode.__open) {
42
+ containerNode.toggleOpen();
43
+ }
44
+ });
45
+ });
46
+ }
47
+ return dom;
48
+ }
49
+ updateDOM(prevNode, dom) {
50
+ return false;
51
+ }
52
+ static importDOM() {
53
+ return {
54
+ div: (domNode) => {
55
+ if (!domNode.hasAttribute('data-lexical-collapsible-content')) {
56
+ return null;
57
+ }
58
+ return {
59
+ conversion: $convertCollapsibleContentElement,
60
+ priority: 2,
61
+ };
62
+ },
63
+ };
64
+ }
65
+ exportDOM() {
66
+ const element = document.createElement('div');
67
+ element.classList.add('Collapsible__content');
68
+ element.setAttribute('data-lexical-collapsible-content', 'true');
69
+ return { element };
70
+ }
71
+ static importJSON(serializedNode) {
72
+ return $createCollapsibleContentNode();
73
+ }
74
+ isShadowRoot() {
75
+ return true;
76
+ }
77
+ exportJSON() {
78
+ return {
79
+ ...super.exportJSON(),
80
+ type: 'collapsible-content',
81
+ version: 1,
82
+ };
83
+ }
84
+ }
85
+ export function $createCollapsibleContentNode() {
86
+ return new CollapsibleContentNode();
87
+ }
88
+ export function $isCollapsibleContentNode(node) {
89
+ return node instanceof CollapsibleContentNode;
90
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ import { DOMConversionMap, DOMConversionOutput, EditorConfig, ElementNode, LexicalEditor, LexicalNode, RangeSelection, SerializedElementNode } from 'lexical';
9
+ type SerializedCollapsibleTitleNode = SerializedElementNode;
10
+ export declare function $convertSummaryElement(domNode: HTMLElement): DOMConversionOutput | null;
11
+ export declare class CollapsibleTitleNode extends ElementNode {
12
+ static getType(): string;
13
+ static clone(node: CollapsibleTitleNode): CollapsibleTitleNode;
14
+ createDOM(config: EditorConfig, editor: LexicalEditor): HTMLElement;
15
+ updateDOM(prevNode: CollapsibleTitleNode, dom: HTMLElement): boolean;
16
+ static importDOM(): DOMConversionMap | null;
17
+ static importJSON(serializedNode: SerializedCollapsibleTitleNode): CollapsibleTitleNode;
18
+ exportJSON(): SerializedCollapsibleTitleNode;
19
+ collapseAtStart(_selection: RangeSelection): boolean;
20
+ insertNewAfter(_: RangeSelection, restoreSelection?: boolean): ElementNode;
21
+ }
22
+ export declare function $createCollapsibleTitleNode(): CollapsibleTitleNode;
23
+ export declare function $isCollapsibleTitleNode(node: LexicalNode | null | undefined): node is CollapsibleTitleNode;
24
+ export {};
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ import { $createParagraphNode, $isElementNode, ElementNode, } from 'lexical';
9
+ import { IS_CHROME } from '../../../shared/environment';
10
+ import invariant from '../../../shared/invariant';
11
+ import { $isCollapsibleContainerNode } from './CollapsibleContainerNode';
12
+ import { $isCollapsibleContentNode } from './CollapsibleContentNode';
13
+ export function $convertSummaryElement(domNode) {
14
+ const node = $createCollapsibleTitleNode();
15
+ return {
16
+ node,
17
+ };
18
+ }
19
+ export class CollapsibleTitleNode extends ElementNode {
20
+ static getType() {
21
+ return 'collapsible-title';
22
+ }
23
+ static clone(node) {
24
+ return new CollapsibleTitleNode(node.__key);
25
+ }
26
+ createDOM(config, editor) {
27
+ const dom = document.createElement('summary');
28
+ dom.classList.add('Collapsible__title');
29
+ if (IS_CHROME) {
30
+ dom.addEventListener('click', () => {
31
+ editor.update(() => {
32
+ const collapsibleContainer = this.getLatest().getParentOrThrow();
33
+ invariant($isCollapsibleContainerNode(collapsibleContainer), 'Expected parent node to be a CollapsibleContainerNode');
34
+ collapsibleContainer.toggleOpen();
35
+ });
36
+ });
37
+ }
38
+ return dom;
39
+ }
40
+ updateDOM(prevNode, dom) {
41
+ return false;
42
+ }
43
+ static importDOM() {
44
+ return {
45
+ summary: (domNode) => {
46
+ return {
47
+ conversion: $convertSummaryElement,
48
+ priority: 1,
49
+ };
50
+ },
51
+ };
52
+ }
53
+ static importJSON(serializedNode) {
54
+ return $createCollapsibleTitleNode();
55
+ }
56
+ exportJSON() {
57
+ return {
58
+ ...super.exportJSON(),
59
+ type: 'collapsible-title',
60
+ version: 1,
61
+ };
62
+ }
63
+ collapseAtStart(_selection) {
64
+ this.getParentOrThrow().insertBefore(this);
65
+ return true;
66
+ }
67
+ insertNewAfter(_, restoreSelection = true) {
68
+ const containerNode = this.getParentOrThrow();
69
+ if (!$isCollapsibleContainerNode(containerNode)) {
70
+ throw new Error('CollapsibleTitleNode expects to be child of CollapsibleContainerNode');
71
+ }
72
+ if (containerNode.getOpen()) {
73
+ const contentNode = this.getNextSibling();
74
+ if (!$isCollapsibleContentNode(contentNode)) {
75
+ throw new Error('CollapsibleTitleNode expects to have CollapsibleContentNode sibling');
76
+ }
77
+ const firstChild = contentNode.getFirstChild();
78
+ if ($isElementNode(firstChild)) {
79
+ return firstChild;
80
+ }
81
+ const paragraph = $createParagraphNode();
82
+ contentNode.append(paragraph);
83
+ return paragraph;
84
+ }
85
+ const paragraph = $createParagraphNode();
86
+ containerNode.insertAfter(paragraph, restoreSelection);
87
+ return paragraph;
88
+ }
89
+ }
90
+ export function $createCollapsibleTitleNode() {
91
+ return new CollapsibleTitleNode();
92
+ }
93
+ export function $isCollapsibleTitleNode(node) {
94
+ return node instanceof CollapsibleTitleNode;
95
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ export declare function setDomHiddenUntilFound(dom: HTMLElement): void;
9
+ export declare function domOnBeforeMatch(dom: HTMLElement, callback: () => void): void;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ export function setDomHiddenUntilFound(dom) {
9
+ // @ts-expect-error
10
+ dom.hidden = 'until-found';
11
+ }
12
+ export function domOnBeforeMatch(dom, callback) {
13
+ // @ts-expect-error
14
+ dom.onbeforematch = callback;
15
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ import './Collapsible.css';
9
+ export declare const INSERT_COLLAPSIBLE_COMMAND: import("lexical").LexicalCommand<void>;
10
+ export declare const TOGGLE_COLLAPSIBLE_COMMAND: import("lexical").LexicalCommand<string>;
11
+ export default function CollapsiblePlugin(): null;
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ import './Collapsible.css';
9
+ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
10
+ import { $findMatchingParent, $insertNodeToNearestRoot, mergeRegister } from '@lexical/utils';
11
+ import { $createParagraphNode, $getSelection, $isRangeSelection, COMMAND_PRIORITY_LOW, createCommand, DELETE_CHARACTER_COMMAND, INSERT_PARAGRAPH_COMMAND, KEY_ARROW_DOWN_COMMAND, KEY_ARROW_LEFT_COMMAND, KEY_ARROW_RIGHT_COMMAND, KEY_ARROW_UP_COMMAND, } from 'lexical';
12
+ import { useEffect } from 'react';
13
+ import { $createCollapsibleContainerNode, $isCollapsibleContainerNode, CollapsibleContainerNode, } from './CollapsibleContainerNode';
14
+ import { $createCollapsibleContentNode, $isCollapsibleContentNode, CollapsibleContentNode, } from './CollapsibleContentNode';
15
+ import { $createCollapsibleTitleNode, $isCollapsibleTitleNode, CollapsibleTitleNode } from './CollapsibleTitleNode';
16
+ export const INSERT_COLLAPSIBLE_COMMAND = createCommand();
17
+ export const TOGGLE_COLLAPSIBLE_COMMAND = createCommand();
18
+ export default function CollapsiblePlugin() {
19
+ const [editor] = useLexicalComposerContext();
20
+ useEffect(() => {
21
+ if (!editor.hasNodes([CollapsibleContainerNode, CollapsibleTitleNode, CollapsibleContentNode])) {
22
+ throw new Error('CollapsiblePlugin: CollapsibleContainerNode, CollapsibleTitleNode, or CollapsibleContentNode not registered on editor');
23
+ }
24
+ const $onEscapeUp = () => {
25
+ const selection = $getSelection();
26
+ if ($isRangeSelection(selection) && selection.isCollapsed() && selection.anchor.offset === 0) {
27
+ const container = $findMatchingParent(selection.anchor.getNode(), $isCollapsibleContainerNode);
28
+ if ($isCollapsibleContainerNode(container)) {
29
+ const parent = container.getParent();
30
+ if (parent !== null &&
31
+ parent.getFirstChild() === container &&
32
+ selection.anchor.key === container.getFirstDescendant()?.getKey()) {
33
+ container.insertBefore($createParagraphNode());
34
+ }
35
+ }
36
+ }
37
+ return false;
38
+ };
39
+ const $onEscapeDown = () => {
40
+ const selection = $getSelection();
41
+ if ($isRangeSelection(selection) && selection.isCollapsed()) {
42
+ const container = $findMatchingParent(selection.anchor.getNode(), $isCollapsibleContainerNode);
43
+ if ($isCollapsibleContainerNode(container)) {
44
+ const parent = container.getParent();
45
+ if (parent !== null && parent.getLastChild() === container) {
46
+ const titleParagraph = container.getFirstDescendant();
47
+ const contentParagraph = container.getLastDescendant();
48
+ if ((contentParagraph !== null &&
49
+ selection.anchor.key === contentParagraph.getKey() &&
50
+ selection.anchor.offset === contentParagraph.getTextContentSize()) ||
51
+ (titleParagraph !== null &&
52
+ selection.anchor.key === titleParagraph.getKey() &&
53
+ selection.anchor.offset === titleParagraph.getTextContentSize())) {
54
+ container.insertAfter($createParagraphNode());
55
+ }
56
+ }
57
+ }
58
+ }
59
+ return false;
60
+ };
61
+ return mergeRegister(
62
+ // Structure enforcing transformers for each node type. In case nesting structure is not
63
+ // "Container > Title + Content" it'll unwrap nodes and convert it back
64
+ // to regular content.
65
+ editor.registerNodeTransform(CollapsibleContentNode, (node) => {
66
+ const parent = node.getParent();
67
+ if (!$isCollapsibleContainerNode(parent)) {
68
+ const children = node.getChildren();
69
+ for (const child of children) {
70
+ node.insertBefore(child);
71
+ }
72
+ node.remove();
73
+ }
74
+ }), editor.registerNodeTransform(CollapsibleTitleNode, (node) => {
75
+ const parent = node.getParent();
76
+ if (!$isCollapsibleContainerNode(parent)) {
77
+ node.replace($createParagraphNode().append(...node.getChildren()));
78
+ }
79
+ }), editor.registerNodeTransform(CollapsibleContainerNode, (node) => {
80
+ const children = node.getChildren();
81
+ if (children.length !== 2 || !$isCollapsibleTitleNode(children[0]) || !$isCollapsibleContentNode(children[1])) {
82
+ for (const child of children) {
83
+ node.insertBefore(child);
84
+ }
85
+ node.remove();
86
+ }
87
+ }),
88
+ // This handles the case when container is collapsed and we delete its previous sibling
89
+ // into it, it would cause collapsed content deleted (since it's display: none, and selection
90
+ // swallows it when deletes single char). Instead we expand container, which is although
91
+ // not perfect, but avoids bigger problem
92
+ editor.registerCommand(DELETE_CHARACTER_COMMAND, () => {
93
+ const selection = $getSelection();
94
+ if (!$isRangeSelection(selection) || !selection.isCollapsed() || selection.anchor.offset !== 0) {
95
+ return false;
96
+ }
97
+ const anchorNode = selection.anchor.getNode();
98
+ const topLevelElement = anchorNode.getTopLevelElement();
99
+ if (topLevelElement === null) {
100
+ return false;
101
+ }
102
+ const container = topLevelElement.getPreviousSibling();
103
+ if (!$isCollapsibleContainerNode(container) || container.getOpen()) {
104
+ return false;
105
+ }
106
+ container.setOpen(true);
107
+ return true;
108
+ }, COMMAND_PRIORITY_LOW),
109
+ // When collapsible is the last child pressing down/right arrow will insert paragraph
110
+ // below it to allow adding more content. It's similar what $insertBlockNode
111
+ // (mainly for decorators), except it'll always be possible to continue adding
112
+ // new content even if trailing paragraph is accidentally deleted
113
+ editor.registerCommand(KEY_ARROW_DOWN_COMMAND, $onEscapeDown, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_ARROW_RIGHT_COMMAND, $onEscapeDown, COMMAND_PRIORITY_LOW),
114
+ // When collapsible is the first child pressing up/left arrow will insert paragraph
115
+ // above it to allow adding more content. It's similar what $insertBlockNode
116
+ // (mainly for decorators), except it'll always be possible to continue adding
117
+ // new content even if leading paragraph is accidentally deleted
118
+ editor.registerCommand(KEY_ARROW_UP_COMMAND, $onEscapeUp, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_ARROW_LEFT_COMMAND, $onEscapeUp, COMMAND_PRIORITY_LOW),
119
+ // Enter goes from Title to Content rather than a new line inside Title
120
+ editor.registerCommand(INSERT_PARAGRAPH_COMMAND, () => {
121
+ const selection = $getSelection();
122
+ if ($isRangeSelection(selection)) {
123
+ const titleNode = $findMatchingParent(selection.anchor.getNode(), (node) => $isCollapsibleTitleNode(node));
124
+ if ($isCollapsibleTitleNode(titleNode)) {
125
+ const container = titleNode.getParent();
126
+ if (container && $isCollapsibleContainerNode(container)) {
127
+ if (!container.getOpen()) {
128
+ container.toggleOpen();
129
+ }
130
+ titleNode.getNextSibling()?.selectEnd();
131
+ return true;
132
+ }
133
+ }
134
+ }
135
+ return false;
136
+ }, COMMAND_PRIORITY_LOW), editor.registerCommand(INSERT_COLLAPSIBLE_COMMAND, () => {
137
+ editor.update(() => {
138
+ const title = $createCollapsibleTitleNode();
139
+ const paragraph = $createParagraphNode();
140
+ $insertNodeToNearestRoot($createCollapsibleContainerNode(true).append(title.append(paragraph), $createCollapsibleContentNode().append($createParagraphNode())));
141
+ paragraph.select();
142
+ });
143
+ return true;
144
+ }, COMMAND_PRIORITY_LOW));
145
+ }, [editor]);
146
+ return null;
147
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ import { LexicalEditor } from 'lexical';
9
+ import { type JSX } from 'react';
10
+ export declare const INSERT_COMPONENT_COMMAND: import("lexical").LexicalCommand<unknown>;
11
+ export default function ComponentPickerMenuPlugin(): JSX.Element;
12
+ export declare const uploadFile: (editor: LexicalEditor) => void;