@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,45 @@
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 { Point } from './point';
9
+ type ContainsPointReturn = {
10
+ result: boolean;
11
+ reason: {
12
+ isOnTopSide: boolean;
13
+ isOnBottomSide: boolean;
14
+ isOnLeftSide: boolean;
15
+ isOnRightSide: boolean;
16
+ };
17
+ };
18
+ export declare class Rect {
19
+ private readonly _left;
20
+ private readonly _top;
21
+ private readonly _right;
22
+ private readonly _bottom;
23
+ constructor(left: number, top: number, right: number, bottom: number);
24
+ get top(): number;
25
+ get right(): number;
26
+ get bottom(): number;
27
+ get left(): number;
28
+ get width(): number;
29
+ get height(): number;
30
+ equals({ top, left, bottom, right }: Rect): boolean;
31
+ contains({ x, y }: Point): ContainsPointReturn;
32
+ contains({ top, left, bottom, right }: Rect): boolean;
33
+ intersectsWith(rect: Rect): boolean;
34
+ generateNewRect({ left, top, right, bottom }: {
35
+ left?: number | undefined;
36
+ top?: number | undefined;
37
+ right?: number | undefined;
38
+ bottom?: number | undefined;
39
+ }): Rect;
40
+ static fromLTRB(left: number, top: number, right: number, bottom: number): Rect;
41
+ static fromLWTH(left: number, width: number, top: number, height: number): Rect;
42
+ static fromPoints(startPoint: Point, endPoint: Point): Rect;
43
+ static fromDOM(dom: HTMLElement): Rect;
44
+ }
45
+ export {};
@@ -0,0 +1,98 @@
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 { isPoint } from './point';
9
+ export class Rect {
10
+ _left;
11
+ _top;
12
+ _right;
13
+ _bottom;
14
+ constructor(left, top, right, bottom) {
15
+ const [physicTop, physicBottom] = top <= bottom ? [top, bottom] : [bottom, top];
16
+ const [physicLeft, physicRight] = left <= right ? [left, right] : [right, left];
17
+ this._top = physicTop;
18
+ this._right = physicRight;
19
+ this._left = physicLeft;
20
+ this._bottom = physicBottom;
21
+ }
22
+ get top() {
23
+ return this._top;
24
+ }
25
+ get right() {
26
+ return this._right;
27
+ }
28
+ get bottom() {
29
+ return this._bottom;
30
+ }
31
+ get left() {
32
+ return this._left;
33
+ }
34
+ get width() {
35
+ return Math.abs(this._left - this._right);
36
+ }
37
+ get height() {
38
+ return Math.abs(this._bottom - this._top);
39
+ }
40
+ equals({ top, left, bottom, right }) {
41
+ return top === this._top && bottom === this._bottom && left === this._left && right === this._right;
42
+ }
43
+ contains(target) {
44
+ if (isPoint(target)) {
45
+ const { x, y } = target;
46
+ const isOnTopSide = y < this._top;
47
+ const isOnBottomSide = y > this._bottom;
48
+ const isOnLeftSide = x < this._left;
49
+ const isOnRightSide = x > this._right;
50
+ const result = !isOnTopSide && !isOnBottomSide && !isOnLeftSide && !isOnRightSide;
51
+ return {
52
+ reason: {
53
+ isOnBottomSide,
54
+ isOnLeftSide,
55
+ isOnRightSide,
56
+ isOnTopSide,
57
+ },
58
+ result,
59
+ };
60
+ }
61
+ const { top, left, bottom, right } = target;
62
+ return (top >= this._top &&
63
+ top <= this._bottom &&
64
+ bottom >= this._top &&
65
+ bottom <= this._bottom &&
66
+ left >= this._left &&
67
+ left <= this._right &&
68
+ right >= this._left &&
69
+ right <= this._right);
70
+ }
71
+ intersectsWith(rect) {
72
+ const { left: x1, top: y1, width: w1, height: h1 } = rect;
73
+ const { left: x2, top: y2, width: w2, height: h2 } = this;
74
+ const maxX = x1 + w1 >= x2 + w2 ? x1 + w1 : x2 + w2;
75
+ const maxY = y1 + h1 >= y2 + h2 ? y1 + h1 : y2 + h2;
76
+ const minX = x1 <= x2 ? x1 : x2;
77
+ const minY = y1 <= y2 ? y1 : y2;
78
+ return maxX - minX <= w1 + w2 && maxY - minY <= h1 + h2;
79
+ }
80
+ generateNewRect({ left = this.left, top = this.top, right = this.right, bottom = this.bottom }) {
81
+ return new Rect(left, top, right, bottom);
82
+ }
83
+ static fromLTRB(left, top, right, bottom) {
84
+ return new Rect(left, top, right, bottom);
85
+ }
86
+ static fromLWTH(left, width, top, height) {
87
+ return new Rect(left, top, left + width, top + height);
88
+ }
89
+ static fromPoints(startPoint, endPoint) {
90
+ const { y: top, x: left } = startPoint;
91
+ const { y: bottom, x: right } = endPoint;
92
+ return Rect.fromLTRB(left, top, right, bottom);
93
+ }
94
+ static fromDOM(dom) {
95
+ const { top, width, left, height } = dom.getBoundingClientRect();
96
+ return Rect.fromLWTH(left, width, top, height);
97
+ }
98
+ }
@@ -0,0 +1,8 @@
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 const sanitizeUrl: (url: string) => string;
@@ -0,0 +1,17 @@
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 const sanitizeUrl = (url) => {
9
+ /** A pattern that matches safe URLs. */
10
+ const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^&:/?#]*(?:[/?#]|$))/gi;
11
+ /** A pattern that matches safe data URLs. */
12
+ const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;
13
+ url = String(url).trim();
14
+ if (url.match(SAFE_URL_PATTERN) || url.match(DATA_URL_PATTERN))
15
+ return url;
16
+ return 'https://';
17
+ };
@@ -0,0 +1 @@
1
+ export declare function setFloatingElemPosition(targetRect: DOMRect | null, floatingElem: HTMLElement, anchorElem: HTMLElement, verticalGap?: number, horizontalOffset?: number): void;
@@ -0,0 +1,32 @@
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
+ const VERTICAL_GAP = 10;
9
+ const HORIZONTAL_OFFSET = 5;
10
+ export function setFloatingElemPosition(targetRect, floatingElem, anchorElem, verticalGap = VERTICAL_GAP, horizontalOffset = HORIZONTAL_OFFSET) {
11
+ const scrollerElem = anchorElem.parentElement;
12
+ if (targetRect === null || !scrollerElem) {
13
+ floatingElem.style.opacity = '0';
14
+ floatingElem.style.transform = 'translate(-10000px, -10000px)';
15
+ return;
16
+ }
17
+ const floatingElemRect = floatingElem.getBoundingClientRect();
18
+ const anchorElementRect = anchorElem.getBoundingClientRect();
19
+ const editorScrollerRect = scrollerElem.getBoundingClientRect();
20
+ let top = targetRect.top - floatingElemRect.height - verticalGap;
21
+ let left = targetRect.left - horizontalOffset;
22
+ if (top < editorScrollerRect.top + 36) {
23
+ top += floatingElemRect.height + targetRect.height + verticalGap * 2;
24
+ }
25
+ if (left + floatingElemRect.width > editorScrollerRect.right) {
26
+ left = editorScrollerRect.right - floatingElemRect.width - horizontalOffset;
27
+ }
28
+ top -= anchorElementRect.top;
29
+ left -= anchorElementRect.left;
30
+ floatingElem.style.opacity = '1';
31
+ floatingElem.style.transform = `translate(${left}px, ${top}px)`;
32
+ }
@@ -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
+ export declare function addSwipeLeftListener(element: HTMLElement, cb: (_force: number, e: TouchEvent) => void): () => void;
9
+ export declare function addSwipeRightListener(element: HTMLElement, cb: (_force: number, e: TouchEvent) => void): () => void;
10
+ export declare function addSwipeUpListener(element: HTMLElement, cb: (_force: number, e: TouchEvent) => void): () => void;
11
+ export declare function addSwipeDownListener(element: HTMLElement, cb: (_force: number, e: TouchEvent) => void): () => void;
@@ -0,0 +1,98 @@
1
+ /* eslint-disable no-unused-vars */
2
+ /**
3
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ *
8
+ */
9
+ const elements = new WeakMap();
10
+ function readTouch(e) {
11
+ const touch = e.changedTouches[0];
12
+ if (touch === undefined) {
13
+ return null;
14
+ }
15
+ return [touch.clientX, touch.clientY];
16
+ }
17
+ function addListener(element, cb) {
18
+ let elementValues = elements.get(element);
19
+ if (elementValues === undefined) {
20
+ const listeners = new Set();
21
+ const handleTouchstart = (e) => {
22
+ if (elementValues !== undefined) {
23
+ elementValues.start = readTouch(e);
24
+ }
25
+ };
26
+ const handleTouchend = (e) => {
27
+ if (elementValues === undefined) {
28
+ return;
29
+ }
30
+ const { start } = elementValues;
31
+ if (start === null) {
32
+ return;
33
+ }
34
+ const end = readTouch(e);
35
+ for (const listener of listeners) {
36
+ if (end !== null) {
37
+ listener([end[0] - start[0], end[1] - start[1]], e);
38
+ }
39
+ }
40
+ };
41
+ element.addEventListener('touchstart', handleTouchstart);
42
+ element.addEventListener('touchend', handleTouchend);
43
+ elementValues = {
44
+ handleTouchend,
45
+ handleTouchstart,
46
+ listeners,
47
+ start: null,
48
+ };
49
+ elements.set(element, elementValues);
50
+ }
51
+ elementValues.listeners.add(cb);
52
+ return () => deleteListener(element, cb);
53
+ }
54
+ function deleteListener(element, cb) {
55
+ const elementValues = elements.get(element);
56
+ if (elementValues === undefined) {
57
+ return;
58
+ }
59
+ const { listeners } = elementValues;
60
+ listeners.delete(cb);
61
+ if (listeners.size === 0) {
62
+ elements.delete(element);
63
+ element.removeEventListener('touchstart', elementValues.handleTouchstart);
64
+ element.removeEventListener('touchend', elementValues.handleTouchend);
65
+ }
66
+ }
67
+ export function addSwipeLeftListener(element, cb) {
68
+ return addListener(element, (force, e) => {
69
+ const [x, y] = force;
70
+ if (x < 0 && -x > Math.abs(y)) {
71
+ cb(x, e);
72
+ }
73
+ });
74
+ }
75
+ export function addSwipeRightListener(element, cb) {
76
+ return addListener(element, (force, e) => {
77
+ const [x, y] = force;
78
+ if (x > 0 && x > Math.abs(y)) {
79
+ cb(x, e);
80
+ }
81
+ });
82
+ }
83
+ export function addSwipeUpListener(element, cb) {
84
+ return addListener(element, (force, e) => {
85
+ const [x, y] = force;
86
+ if (y < 0 && -y > Math.abs(x)) {
87
+ cb(x, e);
88
+ }
89
+ });
90
+ }
91
+ export function addSwipeDownListener(element, cb) {
92
+ return addListener(element, (force, e) => {
93
+ const [x, y] = force;
94
+ if (y > 0 && y > Math.abs(x)) {
95
+ cb(x, e);
96
+ }
97
+ });
98
+ }
@@ -0,0 +1,5 @@
1
+ import '../index.css';
2
+ import { type JSX } from 'react';
3
+ import { EditorViewerProps } from './types';
4
+ export declare function BlockletEditorViewer({ editorState, markdown, ...props }: EditorViewerProps): JSX.Element;
5
+ export type { EditorViewerProps };
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import '../index.css';
3
+ import { cx } from '@emotion/css';
4
+ import { LexicalComposer } from '@lexical/react/LexicalComposer';
5
+ import { useTheme } from '@mui/material';
6
+ import PlaygroundNodes from '../nodes/PlaygroundNodes';
7
+ import { useCustomTheme } from '../themes/customTheme';
8
+ import { EditorViewer } from './viewer';
9
+ import { EditorRoot } from '../editor-root';
10
+ import { getInitialEditorState } from '../../lexical-utils';
11
+ export function BlockletEditorViewer({ editorState, markdown, ...props }) {
12
+ const muiTheme = useTheme();
13
+ const theme = useCustomTheme();
14
+ const initialConfig = {
15
+ namespace: 'Playground',
16
+ editorState: getInitialEditorState(editorState ?? '', markdown),
17
+ nodes: PlaygroundNodes,
18
+ editable: false,
19
+ onError: (error) => {
20
+ throw error;
21
+ },
22
+ theme,
23
+ };
24
+ return (_jsx(LexicalComposer, { initialConfig: initialConfig, children: _jsx(EditorRoot, { className: cx(props.className, 'be-shell'), "data-mode": muiTheme.palette.mode, children: _jsx(EditorViewer, { ...props }) }) }));
25
+ }
@@ -0,0 +1,14 @@
1
+ import { EditorState, LexicalEditor } from 'lexical';
2
+ import { MutableRefObject, ReactNode } from 'react';
3
+ export interface EditorViewerProps {
4
+ editorState?: string;
5
+ markdown?: boolean;
6
+ children?: ReactNode;
7
+ prepend?: ReactNode;
8
+ onChange?: (editorState: EditorState, editor: LexicalEditor) => void;
9
+ editorRef?: React.RefCallback<LexicalEditor> | MutableRefObject<LexicalEditor | null>;
10
+ onReady?: () => void;
11
+ enableHeadingsIdPlugin?: boolean;
12
+ onCheckboxChange?: (content: string) => Promise<any>;
13
+ className?: string;
14
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import { type JSX } from 'react';
2
+ import { EditorViewerProps } from './types';
3
+ export declare function EditorViewer({ children, prepend, onChange, editorRef, onReady, enableHeadingsIdPlugin, onCheckboxChange, }: EditorViewerProps): JSX.Element;
@@ -0,0 +1,31 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cx } from '@emotion/css';
3
+ import { CheckListPlugin } from '@lexical/react/LexicalCheckListPlugin';
4
+ import { LexicalErrorBoundary } from '@lexical/react/LexicalErrorBoundary';
5
+ import { LinkPlugin } from '@lexical/react/LexicalLinkPlugin';
6
+ import { ListPlugin } from '@lexical/react/LexicalListPlugin';
7
+ import { OnChangePlugin } from '@lexical/react/LexicalOnChangePlugin';
8
+ import { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin';
9
+ import { TablePlugin } from '@lexical/react/LexicalTablePlugin';
10
+ import useHasNodes from '../hooks/useHasNodes';
11
+ import ClickableLinkPlugin from '../plugins/ClickableLinkPlugin';
12
+ import CodeHighlightPlugin from '../plugins/CodeHighlightPlugin';
13
+ import CollapsiblePlugin from '../plugins/CollapsiblePlugin';
14
+ import MarkdownShortcutPlugin from '../plugins/MarkdownShortcutPlugin';
15
+ import TabFocusPlugin from '../plugins/TabFocusPlugin';
16
+ import ContentEditable from '../ui/ContentEditable';
17
+ import { EditorRefPlugin } from '../../ext/LexicalEditorRefPlugin';
18
+ import { HeadingsIdPlugin } from '../../ext/HeadingsIdPlugin';
19
+ import { EditorReadyPlugin } from '../../ext/EditorReadyPlugin';
20
+ import { EditorHolderPlugin } from '../../ext/EditorHolderPlugin';
21
+ import { StyledEditorContent } from '../styled-editor-content';
22
+ // import { CodeCopyPlugin } from '../../ext/CodeCopyPlugin';
23
+ import CheckboxPlugin from '../../ext/CheckboxPlugin';
24
+ import { VideoPathFixerPlugin } from '../../ext/VideoPathFixerPlugin';
25
+ import ImagePathFixerPlugin from '../../ext/ImagePathFixerPlugin';
26
+ import { useFixInvalidPostLinkNodes } from '../../ext/PostLinkEmbedPlugin/fixInvalidPostLinkNodes';
27
+ export function EditorViewer({ children, prepend, onChange, editorRef, onReady, enableHeadingsIdPlugin, onCheckboxChange, }) {
28
+ const hasNodes = useHasNodes();
29
+ useFixInvalidPostLinkNodes();
30
+ return (_jsxs(_Fragment, { children: [prepend, _jsx(VideoPathFixerPlugin, {}), _jsx(ImagePathFixerPlugin, {}), _jsx(StyledEditorContent, { className: "be-content", children: _jsx(RichTextPlugin, { contentEditable: _jsx(ContentEditable, { className: cx('be-editable', 'notranslate') }), ErrorBoundary: LexicalErrorBoundary }) }), _jsx(MarkdownShortcutPlugin, {}), hasNodes('code', 'code-highlight') && _jsx(CodeHighlightPlugin, {}), hasNodes('list', 'listitem') && _jsx(ListPlugin, {}), hasNodes('list', 'listitem') && _jsx(CheckListPlugin, {}), hasNodes('link') && _jsx(LinkPlugin, {}), hasNodes('link') && _jsx(ClickableLinkPlugin, {}), _jsx(TabFocusPlugin, {}), hasNodes('table', 'tablerow', 'tablecell') && (_jsx(TablePlugin, { hasCellMerge: true, hasCellBackgroundColor: true, hasHorizontalScroll: true })), hasNodes('collapsible-container', 'collapsible-content', 'collapsible-title') && _jsx(CollapsiblePlugin, {}), onChange && _jsx(OnChangePlugin, { onChange: onChange }), enableHeadingsIdPlugin && _jsx(HeadingsIdPlugin, {}), _jsx(EditorHolderPlugin, {}), editorRef && _jsx(EditorRefPlugin, { editorRef: editorRef }), onReady && _jsx(EditorReadyPlugin, { onReady: onReady }), _jsx(CheckboxPlugin, { send: onCheckboxChange }), children] }));
31
+ }
@@ -0,0 +1,8 @@
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 const CAN_USE_DOM: boolean;
@@ -0,0 +1,10 @@
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 const CAN_USE_DOM = typeof window !== 'undefined' &&
9
+ typeof window.document !== 'undefined' &&
10
+ typeof window.document.createElement !== 'undefined';
@@ -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
+ declare global {
9
+ interface Document {
10
+ documentMode?: unknown;
11
+ }
12
+ interface Window {
13
+ MSStream?: unknown;
14
+ }
15
+ }
16
+ export declare const IS_APPLE: boolean;
17
+ export declare const IS_FIREFOX: boolean;
18
+ export declare const CAN_USE_BEFORE_INPUT: boolean;
19
+ export declare const IS_SAFARI: boolean;
20
+ export declare const IS_IOS: boolean;
21
+ export declare const IS_ANDROID: boolean;
22
+ export declare const IS_CHROME: boolean;
23
+ export declare const IS_ANDROID_CHROME: boolean;
24
+ export declare const IS_APPLE_WEBKIT: boolean;
@@ -0,0 +1,21 @@
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 { CAN_USE_DOM } from './canUseDOM';
9
+ const documentMode = CAN_USE_DOM && 'documentMode' in document ? document.documentMode : null;
10
+ export const IS_APPLE = CAN_USE_DOM && /Mac|iPod|iPhone|iPad/.test(navigator.platform);
11
+ export const IS_FIREFOX = CAN_USE_DOM && /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);
12
+ export const CAN_USE_BEFORE_INPUT = CAN_USE_DOM && 'InputEvent' in window && !documentMode ? 'getTargetRanges' in new window.InputEvent('input') : false;
13
+ export const IS_SAFARI = CAN_USE_DOM && /Version\/[\d.]+.*Safari/.test(navigator.userAgent);
14
+ export const IS_IOS = CAN_USE_DOM && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
15
+ export const IS_ANDROID = CAN_USE_DOM && /Android/.test(navigator.userAgent);
16
+ // Keep these in case we need to use them in the future.
17
+ // export const IS_WINDOWS: boolean = CAN_USE_DOM && /Win/.test(navigator.platform);
18
+ export const IS_CHROME = CAN_USE_DOM && /^(?=.*Chrome).*/i.test(navigator.userAgent);
19
+ // export const canUseTextInputEvent: boolean = CAN_USE_DOM && 'TextEvent' in window && !documentMode;
20
+ export const IS_ANDROID_CHROME = CAN_USE_DOM && IS_ANDROID && IS_CHROME;
21
+ export const IS_APPLE_WEBKIT = CAN_USE_DOM && /AppleWebKit\/[\d.]+/.test(navigator.userAgent) && !IS_CHROME;
@@ -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
+ declare const getSelection: () => Selection | null;
9
+ export default getSelection;
@@ -0,0 +1,10 @@
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 { CAN_USE_DOM } from './canUseDOM';
9
+ const getSelection = () => (CAN_USE_DOM ? window.getSelection() : null);
10
+ export default getSelection;
@@ -0,0 +1,8 @@
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 default function invariant(cond?: boolean, message?: string, ...args: string[]): asserts cond;
@@ -0,0 +1,16 @@
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
+ // invariant(condition, message) will refine types based on "condition", and
9
+ // if "condition" is false will throw an error. This function is special-cased
10
+ // in flow itself, so we can't name it anything else.
11
+ export default function invariant(cond, message, ...args) {
12
+ if (cond) {
13
+ return;
14
+ }
15
+ throw new Error('Internal Lexical error: invariant() is meant to be replaced at compile time. There is no runtime version.');
16
+ }
@@ -0,0 +1,10 @@
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 { useLayoutEffect } from 'react';
9
+ declare const useLayoutEffectImpl: typeof useLayoutEffect;
10
+ export default useLayoutEffectImpl;
@@ -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 { useEffect, useLayoutEffect } from 'react';
9
+ import { CAN_USE_DOM } from './canUseDOM';
10
+ const useLayoutEffectImpl = CAN_USE_DOM ? useLayoutEffect : useEffect;
11
+ export default useLayoutEffectImpl;
package/lib/types.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ import type { Completions, FetchTemplateTags, FetchTemplates } from './ext/Aide/types';
2
+ export type { EditorState } from 'lexical';
3
+ export * from './ext/Aide/types';
4
+ export interface User {
5
+ did: string;
6
+ fullName: string;
7
+ avatar: string;
8
+ }
9
+ export interface UserService {
10
+ search: (keyword: string) => Promise<User[]>;
11
+ getCurrentUserDid?: () => string;
12
+ }
13
+ export interface AI {
14
+ fetchTemplateTags?: FetchTemplateTags;
15
+ fetchTemplates?: FetchTemplates;
16
+ completions: Completions;
17
+ checkAvailable: () => Promise<boolean> | boolean;
18
+ }
19
+ export type ImageSizeMode = 'small' | 'best-fit' | 'original';
package/lib/types.js ADDED
@@ -0,0 +1 @@
1
+ export * from './ext/Aide/types';
@@ -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
+ import type { JSX } from 'react';
9
+ export declare function CharacterLimitPlugin({ charset, maxLength, renderer, }: {
10
+ charset: 'UTF-8' | 'UTF-16';
11
+ maxLength: number;
12
+ renderer?: ({ remainingCharacters }: {
13
+ remainingCharacters: number;
14
+ }) => JSX.Element;
15
+ }): JSX.Element;
@@ -0,0 +1,45 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
3
+ import { useMemo, useState } from 'react';
4
+ import { useCharacterLimit } from './useCharacterLimit';
5
+ const CHARACTER_LIMIT = 5;
6
+ let textEncoderInstance = null;
7
+ function textEncoder() {
8
+ if (window.TextEncoder === undefined) {
9
+ return null;
10
+ }
11
+ if (textEncoderInstance === null) {
12
+ textEncoderInstance = new window.TextEncoder();
13
+ }
14
+ return textEncoderInstance;
15
+ }
16
+ function utf8Length(text) {
17
+ const currentTextEncoder = textEncoder();
18
+ if (currentTextEncoder === null) {
19
+ // http://stackoverflow.com/a/5515960/210370
20
+ const m = encodeURIComponent(text).match(/%[89ABab]/g);
21
+ return text.length + (m ? m.length : 0);
22
+ }
23
+ return currentTextEncoder.encode(text).length;
24
+ }
25
+ function DefaultRenderer({ remainingCharacters }) {
26
+ return (_jsx("span", { className: `characters-limit ${remainingCharacters < 0 ? 'characters-limit-exceeded' : ''}`, children: remainingCharacters }));
27
+ }
28
+ export function CharacterLimitPlugin({ charset = 'UTF-16', maxLength = CHARACTER_LIMIT, renderer = DefaultRenderer, }) {
29
+ const [editor] = useLexicalComposerContext();
30
+ const [remainingCharacters, setRemainingCharacters] = useState(maxLength);
31
+ const characterLimitProps = useMemo(() => ({
32
+ remainingCharacters: setRemainingCharacters,
33
+ strlen: (text) => {
34
+ if (charset === 'UTF-8') {
35
+ return utf8Length(text);
36
+ }
37
+ if (charset === 'UTF-16') {
38
+ return text.length;
39
+ }
40
+ throw new Error('Unrecognized charset');
41
+ },
42
+ }), [charset]);
43
+ useCharacterLimit(editor, maxLength, characterLimitProps);
44
+ return renderer({ remainingCharacters });
45
+ }
@@ -0,0 +1 @@
1
+ export * from './LexicalCharacterLimitPlugin';
@@ -0,0 +1 @@
1
+ export * from './LexicalCharacterLimitPlugin';