@lobehub/editor 4.15.1 → 4.15.2

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 (520) hide show
  1. package/es/_virtual/_rolldown/runtime.js +28 -0
  2. package/es/codemirror/components/CopyButton.d.ts +7 -0
  3. package/es/codemirror/components/CopyButton.js +24 -0
  4. package/es/codemirror/components/LanguageSelect.d.ts +7 -0
  5. package/es/codemirror/components/LanguageSelect.js +59 -0
  6. package/es/codemirror/components/MoreOptions.d.ts +7 -0
  7. package/es/codemirror/components/MoreOptions.js +66 -0
  8. package/es/codemirror/components/Toolbar.d.ts +7 -0
  9. package/es/codemirror/components/Toolbar.js +51 -0
  10. package/es/codemirror/components/style.js +7 -0
  11. package/es/codemirror/constants.d.ts +6 -0
  12. package/es/codemirror/constants.js +512 -0
  13. package/es/codemirror/loader.d.ts +61 -0
  14. package/es/codemirror/loader.js +77 -0
  15. package/es/codemirror/style.d.ts +4 -0
  16. package/es/codemirror/style.js +82 -0
  17. package/es/codemirror/theme.d.ts +132 -0
  18. package/es/codemirror/theme.js +75 -0
  19. package/es/codemirror/types.d.ts +53 -0
  20. package/es/codemirror.d.ts +9 -263
  21. package/es/codemirror.js +8 -1
  22. package/es/common/canUseDOM.js +11 -0
  23. package/es/common/sys.js +27 -0
  24. package/es/const/hotkey.js +100 -0
  25. package/es/editor-kernel/data-source.d.ts +15 -0
  26. package/es/editor-kernel/data-source.js +15 -0
  27. package/es/editor-kernel/event.d.ts +7 -0
  28. package/es/editor-kernel/event.js +19 -0
  29. package/es/editor-kernel/index.d.ts +5 -0
  30. package/es/editor-kernel/index.js +17 -0
  31. package/es/editor-kernel/inode/helper.js +87 -0
  32. package/es/editor-kernel/inode/i-element-node.d.ts +6 -0
  33. package/es/editor-kernel/inode/i-node.d.ts +6 -0
  34. package/es/editor-kernel/inode/index.d.ts +4 -0
  35. package/es/editor-kernel/inode/paragraph-node.d.ts +1 -0
  36. package/es/editor-kernel/inode/root-node.d.ts +9 -0
  37. package/es/editor-kernel/inode/text-node.d.ts +9 -0
  38. package/es/editor-kernel/kernel.d.ts +122 -0
  39. package/es/editor-kernel/kernel.js +661 -0
  40. package/es/editor-kernel/plugin.js +59 -0
  41. package/es/editor-kernel/react/LexicalErrorBoundary.d.ts +13 -0
  42. package/es/editor-kernel/react/LexicalErrorBoundary.js +19 -0
  43. package/es/editor-kernel/react/PortalAnchor.js +12 -0
  44. package/es/editor-kernel/react/PortalContainer.d.ts +14 -0
  45. package/es/editor-kernel/react/PortalContainer.js +25 -0
  46. package/es/editor-kernel/react/index.d.ts +5 -0
  47. package/es/editor-kernel/react/react-context.d.ts +11 -0
  48. package/es/editor-kernel/react/react-context.js +21 -0
  49. package/es/editor-kernel/react/react-editor.d.ts +16 -0
  50. package/es/editor-kernel/react/react-editor.js +32 -0
  51. package/es/editor-kernel/react/useAnchor.js +17 -0
  52. package/es/editor-kernel/react/useDecorators.js +54 -0
  53. package/es/editor-kernel/react/useEditable.js +25 -0
  54. package/es/editor-kernel/react/useLexicalEditor.d.ts +6 -0
  55. package/es/editor-kernel/react/useLexicalEditor.js +23 -0
  56. package/es/editor-kernel/react/useLexicalNodeSelection.js +86 -0
  57. package/es/editor-kernel/react/useTranslation.js +9 -0
  58. package/es/editor-kernel/utils.d.ts +46 -0
  59. package/es/editor-kernel/utils.js +138 -0
  60. package/es/headless/extract-media-from-editor-state.d.ts +22 -0
  61. package/es/headless/extract-media-from-editor-state.js +49 -0
  62. package/es/headless/index.d.ts +69 -0
  63. package/es/headless/index.js +189 -0
  64. package/es/headless/plugins/codeblock.js +82 -0
  65. package/es/headless.js +3 -20139
  66. package/es/index.d.ts +112 -3059
  67. package/es/index.js +100 -8484
  68. package/es/locale/index.d.ts +61 -0
  69. package/es/locale/index.js +62 -0
  70. package/es/node_modules/.pnpm/@types_mdast@4.0.4/node_modules/@types/mdast/index.d.ts +953 -0
  71. package/es/node_modules/.pnpm/@types_unist@3.0.3/node_modules/@types/unist/index.d.ts +83 -0
  72. package/es/plugins/auto-complete/index.d.ts +2 -0
  73. package/es/plugins/auto-complete/node/placeholderNode.js +89 -0
  74. package/es/plugins/auto-complete/plugin/index.d.ts +31 -0
  75. package/es/plugins/auto-complete/plugin/index.js +395 -0
  76. package/es/plugins/auto-complete/react/ReactAutoCompletePlugin.d.ts +7 -0
  77. package/es/plugins/auto-complete/react/ReactAutoCompletePlugin.js +60 -0
  78. package/es/plugins/auto-complete/react/index.d.ts +1 -0
  79. package/es/plugins/auto-complete/react/style.js +12 -0
  80. package/es/plugins/auto-complete/react/type.d.ts +25 -0
  81. package/es/plugins/block/command/index.d.ts +13 -0
  82. package/es/plugins/block/command/index.js +161 -0
  83. package/es/plugins/block/index.d.ts +5 -0
  84. package/es/plugins/block/plugin/index.d.ts +9 -0
  85. package/es/plugins/block/plugin/index.js +86 -0
  86. package/es/plugins/block/react/ReactBlockPlugin.d.ts +18 -0
  87. package/es/plugins/block/react/ReactBlockPlugin.js +457 -0
  88. package/es/plugins/block/react/core/runtime-context.js +19 -0
  89. package/es/plugins/block/react/core/types.d.ts +6 -0
  90. package/es/plugins/block/react/drag/drag-session.js +264 -0
  91. package/es/plugins/block/react/drag/drag-utils.js +95 -0
  92. package/es/plugins/block/react/index.d.ts +2 -0
  93. package/es/plugins/block/react/style.js +66 -0
  94. package/es/plugins/block/service/i-block-menu-service.d.ts +44 -0
  95. package/es/plugins/block/service/i-block-menu-service.js +43 -0
  96. package/es/plugins/block/service/index.d.ts +1 -0
  97. package/es/plugins/code/command/index.d.ts +7 -0
  98. package/es/plugins/code/command/index.js +30 -0
  99. package/es/plugins/code/index.d.ts +3 -0
  100. package/es/plugins/code/node/code.js +91 -0
  101. package/es/plugins/code/plugin/index.d.ts +9 -0
  102. package/es/plugins/code/plugin/index.js +74 -0
  103. package/es/plugins/code/plugin/registry.js +33 -0
  104. package/es/plugins/code/react/CodeReactPlugin.d.ts +7 -0
  105. package/es/plugins/code/react/CodeReactPlugin.js +27 -0
  106. package/es/plugins/code/react/index.d.ts +1 -0
  107. package/es/plugins/code/react/style.js +21 -0
  108. package/es/plugins/code/react/type.d.ts +7 -0
  109. package/es/plugins/codeblock/command/index.d.ts +8 -0
  110. package/es/plugins/codeblock/command/index.js +40 -0
  111. package/es/plugins/codeblock/index.d.ts +6 -0
  112. package/es/plugins/codeblock/index.js +5 -0
  113. package/es/plugins/codeblock/plugin/CodeHighlighterShiki.js +415 -0
  114. package/es/plugins/codeblock/plugin/FacadeShiki.js +193 -0
  115. package/es/plugins/codeblock/plugin/index.d.ts +16 -0
  116. package/es/plugins/codeblock/plugin/index.js +157 -0
  117. package/es/plugins/codeblock/plugin/invariant.js +14 -0
  118. package/es/plugins/codeblock/react/ReactCodeblockPlugin.d.ts +7 -0
  119. package/es/plugins/codeblock/react/ReactCodeblockPlugin.js +27 -0
  120. package/es/plugins/codeblock/react/index.d.ts +2 -0
  121. package/es/plugins/codeblock/react/style.js +58 -0
  122. package/es/plugins/codeblock/react/type.d.ts +8 -0
  123. package/es/plugins/codeblock/utils/language.js +9 -0
  124. package/es/plugins/codemirror-block/command/index.d.ts +13 -0
  125. package/es/plugins/codemirror-block/command/index.js +67 -0
  126. package/es/plugins/codemirror-block/index.d.ts +3 -0
  127. package/es/plugins/codemirror-block/lib/mode.js +8 -0
  128. package/es/plugins/codemirror-block/node/CodeMirrorNode.d.ts +48 -0
  129. package/es/plugins/codemirror-block/node/CodeMirrorNode.js +205 -0
  130. package/es/plugins/codemirror-block/plugin/index.d.ts +12 -0
  131. package/es/plugins/codemirror-block/plugin/index.js +80 -0
  132. package/es/plugins/codemirror-block/react/CodemirrorNode.js +219 -0
  133. package/es/plugins/codemirror-block/react/ReactCodemirrorNode.d.ts +7 -0
  134. package/es/plugins/codemirror-block/react/ReactCodemirrorNode.js +26 -0
  135. package/es/plugins/codemirror-block/react/index.d.ts +1 -0
  136. package/es/plugins/codemirror-block/react/type.d.ts +6 -0
  137. package/es/plugins/common/command/index.d.ts +11 -0
  138. package/es/plugins/common/command/index.js +24 -0
  139. package/es/plugins/common/data-source/json-data-source.js +133 -0
  140. package/es/plugins/common/data-source/text-data-source.js +32 -0
  141. package/es/plugins/common/index.d.ts +6 -0
  142. package/es/plugins/common/node/ElementDOMSlot.js +30 -0
  143. package/es/plugins/common/node/cursor.d.ts +16 -0
  144. package/es/plugins/common/node/cursor.js +189 -0
  145. package/es/plugins/common/plugin/index.d.ts +43 -0
  146. package/es/plugins/common/plugin/index.js +338 -0
  147. package/es/plugins/common/plugin/mdReader.js +62 -0
  148. package/es/plugins/common/plugin/paste-handler.d.ts +11 -0
  149. package/es/plugins/common/plugin/paste-handler.js +61 -0
  150. package/es/plugins/common/plugin/register.js +306 -0
  151. package/es/plugins/common/react/Placeholder/index.js +65 -0
  152. package/es/plugins/common/react/Placeholder/style.js +22 -0
  153. package/es/plugins/common/react/ReactEditorContent.d.ts +7 -0
  154. package/es/plugins/common/react/ReactEditorContent.js +8 -0
  155. package/es/plugins/common/react/ReactPlainText.d.ts +7 -0
  156. package/es/plugins/common/react/ReactPlainText.js +192 -0
  157. package/es/plugins/common/react/index.d.ts +3 -0
  158. package/es/plugins/common/react/style.js +206 -0
  159. package/es/plugins/common/react/type.d.ts +94 -0
  160. package/es/plugins/common/utils/index.js +135 -0
  161. package/es/plugins/content-blocks/data-source/content-blocks-data-source.d.ts +15 -0
  162. package/es/plugins/content-blocks/data-source/content-blocks-data-source.js +21 -0
  163. package/es/plugins/content-blocks/index.d.ts +6 -0
  164. package/es/plugins/content-blocks/plugin/index.d.ts +10 -0
  165. package/es/plugins/content-blocks/plugin/index.js +24 -0
  166. package/es/plugins/content-blocks/types.d.ts +33 -0
  167. package/es/plugins/content-blocks/types.js +4 -0
  168. package/es/plugins/content-blocks/utils/extract-media-lists.d.ts +7 -0
  169. package/es/plugins/content-blocks/utils/extract-media-lists.js +32 -0
  170. package/es/plugins/content-blocks/utils/extract.d.ts +8 -0
  171. package/es/plugins/content-blocks/utils/extract.js +188 -0
  172. package/es/plugins/file/command/index.d.ts +9 -0
  173. package/es/plugins/file/command/index.js +31 -0
  174. package/es/plugins/file/index.d.ts +4 -0
  175. package/es/plugins/file/node/FileNode.d.ts +38 -0
  176. package/es/plugins/file/node/FileNode.js +106 -0
  177. package/es/plugins/file/plugin/index.d.ts +18 -0
  178. package/es/plugins/file/plugin/index.js +103 -0
  179. package/es/plugins/file/react/ReactFilePlugin.d.ts +7 -0
  180. package/es/plugins/file/react/ReactFilePlugin.js +35 -0
  181. package/es/plugins/file/react/components/ReactFile.js +50 -0
  182. package/es/plugins/file/react/index.d.ts +2 -0
  183. package/es/plugins/file/react/style.js +32 -0
  184. package/es/plugins/file/react/type.d.ts +17 -0
  185. package/es/plugins/file/utils/index.js +29 -0
  186. package/es/plugins/hr/command/index.d.ts +7 -0
  187. package/es/plugins/hr/command/index.js +14 -0
  188. package/es/plugins/hr/index.d.ts +4 -0
  189. package/es/plugins/hr/node/HorizontalRuleNode.d.ts +18 -0
  190. package/es/plugins/hr/node/HorizontalRuleNode.js +59 -0
  191. package/es/plugins/hr/plugin/index.d.ts +12 -0
  192. package/es/plugins/hr/plugin/index.js +60 -0
  193. package/es/plugins/hr/react/ReactHRPlugin.d.ts +7 -0
  194. package/es/plugins/hr/react/ReactHRPlugin.js +28 -0
  195. package/es/plugins/hr/react/components/HRNode.js +36 -0
  196. package/es/plugins/hr/react/index.d.ts +2 -0
  197. package/es/plugins/hr/react/style.js +32 -0
  198. package/es/plugins/hr/react/type.d.ts +6 -0
  199. package/es/plugins/image/command/index.d.ts +12 -0
  200. package/es/plugins/image/command/index.js +53 -0
  201. package/es/plugins/image/index.d.ts +4 -0
  202. package/es/plugins/image/node/basie-image-node.d.ts +33 -0
  203. package/es/plugins/image/node/basie-image-node.js +68 -0
  204. package/es/plugins/image/node/block-image-node.d.ts +43 -0
  205. package/es/plugins/image/node/block-image-node.js +137 -0
  206. package/es/plugins/image/node/image-node.d.ts +41 -0
  207. package/es/plugins/image/node/image-node.js +128 -0
  208. package/es/plugins/image/plugin/index.d.ts +24 -0
  209. package/es/plugins/image/plugin/index.js +183 -0
  210. package/es/plugins/image/react/ReactImagePlugin.d.ts +7 -0
  211. package/es/plugins/image/react/ReactImagePlugin.js +41 -0
  212. package/es/plugins/image/react/components/BrokenImage.js +16 -0
  213. package/es/plugins/image/react/components/Image.js +190 -0
  214. package/es/plugins/image/react/components/ImageEditPopover.js +160 -0
  215. package/es/plugins/image/react/components/LazyImage.js +73 -0
  216. package/es/plugins/image/react/components/ResizeHandle.js +62 -0
  217. package/es/plugins/image/react/components/style.js +135 -0
  218. package/es/plugins/image/react/components/useSupenseImage.js +22 -0
  219. package/es/plugins/image/react/index.d.ts +2 -0
  220. package/es/plugins/image/react/style.js +31 -0
  221. package/es/plugins/image/react/type.d.ts +23 -0
  222. package/es/plugins/inode/index.d.ts +3 -0
  223. package/es/plugins/inode/plugin/index.d.ts +19 -0
  224. package/es/plugins/inode/plugin/index.js +23 -0
  225. package/es/plugins/inode/react/index.d.ts +6 -0
  226. package/es/plugins/inode/react/index.js +15 -0
  227. package/es/plugins/inode/service/index.d.ts +17 -0
  228. package/es/plugins/inode/service/index.js +22 -0
  229. package/es/plugins/link/command/index.d.ts +10 -0
  230. package/es/plugins/link/command/index.js +33 -0
  231. package/es/plugins/link/index.d.ts +5 -0
  232. package/es/plugins/link/node/LinkNode.d.ts +10 -0
  233. package/es/plugins/link/node/LinkNode.js +448 -0
  234. package/es/plugins/link/plugin/index.d.ts +16 -0
  235. package/es/plugins/link/plugin/index.js +106 -0
  236. package/es/plugins/link/plugin/registry.js +82 -0
  237. package/es/plugins/link/react/ReactLinkPlugin.d.ts +7 -0
  238. package/es/plugins/link/react/ReactLinkPlugin.js +50 -0
  239. package/es/plugins/link/react/components/LinkEdit.js +204 -0
  240. package/es/plugins/link/react/components/LinkToolbar.js +148 -0
  241. package/es/plugins/link/react/index.d.ts +2 -0
  242. package/es/plugins/link/react/style.js +34 -0
  243. package/es/plugins/link/react/type.d.ts +14 -0
  244. package/es/plugins/link/service/i-link-service.d.ts +10 -0
  245. package/es/plugins/link/service/i-link-service.js +19 -0
  246. package/es/plugins/link/utils/index.js +45 -0
  247. package/es/plugins/link-highlight/command/index.d.ts +8 -0
  248. package/es/plugins/link-highlight/command/index.js +30 -0
  249. package/es/plugins/link-highlight/index.d.ts +3 -0
  250. package/es/plugins/link-highlight/node/link-highlight.js +80 -0
  251. package/es/plugins/link-highlight/plugin/index.d.ts +18 -0
  252. package/es/plugins/link-highlight/plugin/index.js +109 -0
  253. package/es/plugins/link-highlight/plugin/registry.js +33 -0
  254. package/es/plugins/link-highlight/react/ReactLinkHighlightPlugin.d.ts +7 -0
  255. package/es/plugins/link-highlight/react/ReactLinkHighlightPlugin.js +29 -0
  256. package/es/plugins/link-highlight/react/index.d.ts +1 -0
  257. package/es/plugins/link-highlight/react/style.js +14 -0
  258. package/es/plugins/link-highlight/react/type.d.ts +16 -0
  259. package/es/plugins/list/command/index.d.ts +3 -0
  260. package/es/plugins/list/command/index.js +3 -0
  261. package/es/plugins/list/index.d.ts +5 -0
  262. package/es/plugins/list/plugin/checkList.d.ts +6 -0
  263. package/es/plugins/list/plugin/checkList.js +140 -0
  264. package/es/plugins/list/plugin/index.d.ts +9 -0
  265. package/es/plugins/list/plugin/index.js +195 -0
  266. package/es/plugins/list/plugin/registry.js +68 -0
  267. package/es/plugins/list/react/ReactListPlugin.d.ts +7 -0
  268. package/es/plugins/list/react/ReactListPlugin.js +21 -0
  269. package/es/plugins/list/react/index.d.ts +2 -0
  270. package/es/plugins/list/react/style.js +123 -0
  271. package/es/plugins/list/react/type.d.ts +7 -0
  272. package/es/plugins/list/utils/index.js +58 -0
  273. package/es/plugins/litexml/command/diffCommand.d.ts +17 -0
  274. package/es/plugins/litexml/command/diffCommand.js +97 -0
  275. package/es/plugins/litexml/command/index.d.ts +38 -0
  276. package/es/plugins/litexml/command/index.js +333 -0
  277. package/es/plugins/litexml/data-source/litexml-data-source.d.ts +65 -0
  278. package/es/plugins/litexml/data-source/litexml-data-source.js +286 -0
  279. package/es/plugins/litexml/index.d.ts +7 -0
  280. package/es/plugins/litexml/node/DiffNode.d.ts +29 -0
  281. package/es/plugins/litexml/node/DiffNode.js +95 -0
  282. package/es/plugins/litexml/plugin/index.d.ts +24 -0
  283. package/es/plugins/litexml/plugin/index.js +100 -0
  284. package/es/plugins/litexml/react/DiffNodeToolbar/index.js +60 -0
  285. package/es/plugins/litexml/react/DiffNodeToolbar/style.js +24 -0
  286. package/es/plugins/litexml/react/hooks/useHasDiffNode.d.ts +7 -0
  287. package/es/plugins/litexml/react/hooks/useHasDiffNode.js +35 -0
  288. package/es/plugins/litexml/react/index.d.ts +6 -0
  289. package/es/plugins/litexml/react/index.js +26 -0
  290. package/es/plugins/litexml/react/style.js +124 -0
  291. package/es/plugins/litexml/service/litexml-service.d.ts +93 -0
  292. package/es/plugins/litexml/service/litexml-service.js +42 -0
  293. package/es/plugins/litexml/utils/index.js +59 -0
  294. package/es/plugins/markdown/command/index.d.ts +14 -0
  295. package/es/plugins/markdown/command/index.js +74 -0
  296. package/es/plugins/markdown/data-source/markdown/parse.d.ts +14 -0
  297. package/es/plugins/markdown/data-source/markdown/parse.js +195 -0
  298. package/es/plugins/markdown/data-source/markdown-data-source.js +148 -0
  299. package/es/plugins/markdown/data-source/markdown-writer-context.js +40 -0
  300. package/es/plugins/markdown/index.d.ts +7 -0
  301. package/es/plugins/markdown/plugin/index.d.ts +22 -0
  302. package/es/plugins/markdown/plugin/index.js +285 -0
  303. package/es/plugins/markdown/react/index.d.ts +6 -0
  304. package/es/plugins/markdown/react/index.js +31 -0
  305. package/es/plugins/markdown/service/shortcut.d.ts +57 -0
  306. package/es/plugins/markdown/service/shortcut.js +101 -0
  307. package/es/plugins/markdown/service/transformers.d.ts +61 -0
  308. package/es/plugins/markdown/service/transformers.js +119 -0
  309. package/es/plugins/markdown/utils/detectLanguage.d.ts +22 -0
  310. package/es/plugins/markdown/utils/detectLanguage.js +251 -0
  311. package/es/plugins/markdown/utils/index.d.ts +11 -0
  312. package/es/plugins/markdown/utils/index.js +143 -0
  313. package/es/plugins/markdown/utils/logger.js +6 -0
  314. package/es/plugins/math/command/index.d.ts +9 -0
  315. package/es/plugins/math/command/index.js +38 -0
  316. package/es/plugins/math/index.d.ts +3 -0
  317. package/es/plugins/math/node/index.d.ts +44 -0
  318. package/es/plugins/math/node/index.js +161 -0
  319. package/es/plugins/math/plugin/index.d.ts +15 -0
  320. package/es/plugins/math/plugin/index.js +119 -0
  321. package/es/plugins/math/react/components/MathEditor.js +198 -0
  322. package/es/plugins/math/react/components/MathEditorContainer.js +101 -0
  323. package/es/plugins/math/react/components/MathEditorContent.js +133 -0
  324. package/es/plugins/math/react/components/MathInline.js +86 -0
  325. package/es/plugins/math/react/components/Placeholder.js +24 -0
  326. package/es/plugins/math/react/index.d.ts +7 -0
  327. package/es/plugins/math/react/index.js +35 -0
  328. package/es/plugins/math/react/style.js +96 -0
  329. package/es/plugins/math/react/type.d.ts +17 -0
  330. package/es/plugins/math/utils/index.js +23 -0
  331. package/es/plugins/mention/command/index.d.ts +10 -0
  332. package/es/plugins/mention/command/index.js +18 -0
  333. package/es/plugins/mention/index.d.ts +5 -0
  334. package/es/plugins/mention/node/MentionNode.d.ts +28 -0
  335. package/es/plugins/mention/node/MentionNode.js +86 -0
  336. package/es/plugins/mention/plugin/index.d.ts +18 -0
  337. package/es/plugins/mention/plugin/index.js +63 -0
  338. package/es/plugins/mention/plugin/register.js +30 -0
  339. package/es/plugins/mention/react/ReactMentionPlugin.d.ts +7 -0
  340. package/es/plugins/mention/react/ReactMentionPlugin.js +36 -0
  341. package/es/plugins/mention/react/components/Mention.js +33 -0
  342. package/es/plugins/mention/react/index.d.ts +2 -0
  343. package/es/plugins/mention/react/style.js +34 -0
  344. package/es/plugins/mention/react/type.d.ts +12 -0
  345. package/es/plugins/slash/index.d.ts +6 -0
  346. package/es/plugins/slash/plugin/index.d.ts +27 -0
  347. package/es/plugins/slash/plugin/index.js +160 -0
  348. package/es/plugins/slash/react/ReactSlashOption.d.ts +7 -0
  349. package/es/plugins/slash/react/ReactSlashOption.js +8 -0
  350. package/es/plugins/slash/react/ReactSlashPlugin.d.ts +7 -0
  351. package/es/plugins/slash/react/ReactSlashPlugin.js +190 -0
  352. package/es/plugins/slash/react/components/DefaultSlashMenu.js +168 -0
  353. package/es/plugins/slash/react/components/SlashMenu.d.ts +11 -0
  354. package/es/plugins/slash/react/components/SlashMenu.js +40 -0
  355. package/es/plugins/slash/react/index.d.ts +4 -0
  356. package/es/plugins/slash/react/type.d.ts +114 -0
  357. package/es/plugins/slash/react/utils.js +18 -0
  358. package/es/plugins/slash/service/i-slash-service.d.ts +50 -0
  359. package/es/plugins/slash/service/i-slash-service.js +55 -0
  360. package/es/plugins/slash/utils/utils.d.ts +1 -0
  361. package/es/plugins/slash/utils/utils.js +97 -0
  362. package/es/plugins/table/command/index.d.ts +17 -0
  363. package/es/plugins/table/command/index.js +57 -0
  364. package/es/plugins/table/index.d.ts +3 -0
  365. package/es/plugins/table/node/index.js +18 -0
  366. package/es/plugins/table/plugin/index.d.ts +8 -0
  367. package/es/plugins/table/plugin/index.js +172 -0
  368. package/es/plugins/table/react/TableActionMenu/ActionMenu.js +220 -0
  369. package/es/plugins/table/react/TableActionMenu/index.js +128 -0
  370. package/es/plugins/table/react/TableActionMenu/style.js +20 -0
  371. package/es/plugins/table/react/TableActionMenu/utils.js +34 -0
  372. package/es/plugins/table/react/TableHoverActions/index.js +147 -0
  373. package/es/plugins/table/react/TableHoverActions/style.js +14 -0
  374. package/es/plugins/table/react/TableHoverActions/utils.js +32 -0
  375. package/es/plugins/table/react/TableResize/index.js +253 -0
  376. package/es/plugins/table/react/TableResize/style.js +16 -0
  377. package/es/plugins/table/react/TableResize/utils.js +9 -0
  378. package/es/plugins/table/react/index.d.ts +7 -0
  379. package/es/plugins/table/react/index.js +49 -0
  380. package/es/plugins/table/react/style.js +63 -0
  381. package/es/plugins/table/react/type.d.ts +8 -0
  382. package/es/plugins/table/utils/index.js +48 -0
  383. package/es/plugins/toolbar/command/index.d.ts +12 -0
  384. package/es/plugins/toolbar/command/index.js +17 -0
  385. package/es/plugins/toolbar/index.d.ts +2 -0
  386. package/es/plugins/toolbar/react/index.d.ts +7 -0
  387. package/es/plugins/toolbar/react/index.js +109 -0
  388. package/es/plugins/toolbar/react/style.js +55 -0
  389. package/es/plugins/toolbar/react/type.d.ts +9 -0
  390. package/es/plugins/toolbar/utils/getDOMRangeRect.js +20 -0
  391. package/es/plugins/toolbar/utils/setFloatingElemPosition.js +50 -0
  392. package/es/plugins/upload/index.d.ts +2 -0
  393. package/es/plugins/upload/plugin/index.d.ts +6 -0
  394. package/es/plugins/upload/plugin/index.js +47 -0
  395. package/es/plugins/upload/service/i-upload-service.d.ts +13 -0
  396. package/es/plugins/upload/service/i-upload-service.js +30 -0
  397. package/es/plugins/upload/utils/index.js +15 -0
  398. package/es/plugins/virtual-block/index.d.ts +2 -0
  399. package/es/plugins/virtual-block/plugin/index.d.ts +8 -0
  400. package/es/plugins/virtual-block/plugin/index.js +19 -0
  401. package/es/plugins/virtual-block/plugin/register.js +150 -0
  402. package/es/plugins/virtual-block/react/ReactVirtualBlock.d.ts +6 -0
  403. package/es/plugins/virtual-block/react/ReactVirtualBlock.js +15 -0
  404. package/es/plugins/virtual-block/react/index.d.ts +1 -0
  405. package/es/react/ChatInput/ChatInput.d.ts +7 -0
  406. package/es/react/ChatInput/ChatInput.js +91 -0
  407. package/es/react/ChatInput/index.d.ts +2 -0
  408. package/es/react/ChatInput/style.js +115 -0
  409. package/es/react/ChatInput/type.d.ts +32 -0
  410. package/es/react/ChatInputActionBar/ChatInputActionBar.d.ts +7 -0
  411. package/es/react/ChatInputActionBar/ChatInputActionBar.js +22 -0
  412. package/es/react/ChatInputActionBar/index.d.ts +2 -0
  413. package/es/react/ChatInputActionBar/style.js +7 -0
  414. package/es/react/ChatInputActionBar/type.d.ts +10 -0
  415. package/es/react/ChatInputActions/ChatInputActions.d.ts +7 -0
  416. package/es/react/ChatInputActions/ChatInputActions.js +65 -0
  417. package/es/react/ChatInputActions/components/ActionItem.js +46 -0
  418. package/es/react/ChatInputActions/components/ActionRender.js +45 -0
  419. package/es/react/ChatInputActions/components/CollapsedActions.js +60 -0
  420. package/es/react/ChatInputActions/components/useDisplayActionCount.js +45 -0
  421. package/es/react/ChatInputActions/index.d.ts +2 -0
  422. package/es/react/ChatInputActions/style.js +20 -0
  423. package/es/react/ChatInputActions/type.d.ts +36 -0
  424. package/es/react/CodeLanguageSelect/CodeLanguageSelect.d.ts +7 -0
  425. package/es/react/CodeLanguageSelect/CodeLanguageSelect.js +67 -0
  426. package/es/react/CodeLanguageSelect/index.d.ts +2 -0
  427. package/es/react/CodeLanguageSelect/style.js +7 -0
  428. package/es/react/CodeLanguageSelect/type.d.ts +6 -0
  429. package/es/react/Editor/Editor.js +108 -0
  430. package/es/react/Editor/index.d.ts +16 -0
  431. package/es/react/Editor/index.js +11 -0
  432. package/es/react/Editor/type.d.ts +64 -0
  433. package/es/react/Editor/utils.d.ts +6 -0
  434. package/es/react/Editor/utils.js +6 -0
  435. package/es/react/EditorProvider/index.d.ts +28 -0
  436. package/es/react/EditorProvider/index.js +18 -0
  437. package/es/react/FloatActions/FloatActions.d.ts +7 -0
  438. package/es/react/FloatActions/FloatActions.js +34 -0
  439. package/es/react/FloatActions/components/ActionItem.js +46 -0
  440. package/es/react/FloatActions/components/ActionRender.js +45 -0
  441. package/es/react/FloatActions/components/CollapsedActions.js +60 -0
  442. package/es/react/FloatActions/index.d.ts +2 -0
  443. package/es/react/FloatActions/style.js +19 -0
  444. package/es/react/FloatActions/type.d.ts +33 -0
  445. package/es/react/FloatMenu/FloatMenu.d.ts +7 -0
  446. package/es/react/FloatMenu/FloatMenu.js +32 -0
  447. package/es/react/FloatMenu/index.d.ts +2 -0
  448. package/es/react/FloatMenu/style.js +28 -0
  449. package/es/react/FloatMenu/type.d.ts +25 -0
  450. package/es/react/SendButton/SendButton.d.ts +7 -0
  451. package/es/react/SendButton/SendButton.js +107 -0
  452. package/es/react/SendButton/components/SendIcon.js +23 -0
  453. package/es/react/SendButton/components/StopIcon.js +56 -0
  454. package/es/react/SendButton/index.d.ts +2 -0
  455. package/es/react/SendButton/style.js +68 -0
  456. package/es/react/SendButton/type.d.ts +12 -0
  457. package/es/react/SlashMenu/SlashMenu.d.ts +7 -0
  458. package/es/react/SlashMenu/SlashMenu.js +40 -0
  459. package/es/react/SlashMenu/index.d.ts +2 -0
  460. package/es/react/SlashMenu/type.d.ts +17 -0
  461. package/es/react/hooks/useEditor.d.ts +5 -0
  462. package/es/react/hooks/useEditor.js +8 -0
  463. package/es/react/hooks/useEditorState/index.d.ts +71 -0
  464. package/es/react/hooks/useEditorState/index.js +347 -0
  465. package/es/react/hooks/useEditorState/utils.js +28 -0
  466. package/es/react/hooks/useSize.js +61 -0
  467. package/es/react.d.ts +22 -334
  468. package/es/react.js +13 -1573
  469. package/es/renderer/LexicalDiff.d.ts +41 -0
  470. package/es/renderer/LexicalDiff.js +96 -0
  471. package/es/renderer/LexicalRenderer.d.ts +16 -0
  472. package/es/renderer/LexicalRenderer.js +48 -0
  473. package/es/renderer/diff/compute.js +396 -0
  474. package/es/renderer/diff/style.d.ts +4 -0
  475. package/es/renderer/diff/style.js +104 -0
  476. package/es/renderer/diff/types.d.ts +32 -0
  477. package/es/renderer/engine/render-builtin-node.js +196 -0
  478. package/es/renderer/engine/render-text-node.js +33 -0
  479. package/es/renderer/engine/render-tree.js +35 -0
  480. package/es/renderer/engine/shiki.d.ts +4 -0
  481. package/es/renderer/engine/shiki.js +24 -0
  482. package/es/renderer/engine/utils.js +16 -0
  483. package/es/renderer/nodes/index.d.ts +6 -0
  484. package/es/renderer/nodes/index.js +44 -0
  485. package/es/renderer/renderers/codeblock.js +21 -0
  486. package/es/renderer/renderers/file.js +29 -0
  487. package/es/renderer/renderers/horizontalrule.js +29 -0
  488. package/es/renderer/renderers/image.js +35 -0
  489. package/es/renderer/renderers/index.d.ts +6 -0
  490. package/es/renderer/renderers/index.js +21 -0
  491. package/es/renderer/renderers/math.js +19 -0
  492. package/es/renderer/renderers/mention.js +15 -0
  493. package/es/renderer/renderers/mermaid.js +17 -0
  494. package/es/renderer/style.js +52 -0
  495. package/es/renderer/types.d.ts +29 -0
  496. package/es/renderer.d.ts +8 -114
  497. package/es/renderer.js +5 -1153
  498. package/es/types/hotkey.d.ts +76 -0
  499. package/es/types/hotkey.js +65 -0
  500. package/es/types/index.d.ts +2 -0
  501. package/es/types/kernel.d.ts +359 -0
  502. package/es/types/locale.d.ts +11 -0
  503. package/es/utils/cx.js +4 -0
  504. package/es/utils/debug.d.ts +425 -0
  505. package/es/{debug-CIvbNHJu.js → utils/debug.js} +3 -35
  506. package/es/utils/hotkey/isHotkeyMatch.js +17 -0
  507. package/es/utils/hotkey/parseHotkeys.js +53 -0
  508. package/es/utils/hotkey/registerHotkey.d.ts +18 -0
  509. package/es/utils/hotkey/registerHotkey.js +35 -0
  510. package/es/utils/scrollIntoView.d.ts +8 -0
  511. package/es/utils/scrollIntoView.js +29 -0
  512. package/es/utils/updatePosition.js +26 -0
  513. package/es/utils/url.d.ts +18 -0
  514. package/es/utils/url.js +34 -0
  515. package/package.json +4 -1
  516. package/es/ReactSlashPlugin-BiVy_Iwf.js +0 -23072
  517. package/es/codemirror-3POv7f__.js +0 -923
  518. package/es/index-DHGp94p0.d.ts +0 -916
  519. package/es/style-DADgHVA1.js +0 -2889
  520. package/es/style-DMdPzCo-.js +0 -999
@@ -0,0 +1,59 @@
1
+ import { __esmMin } from "../_virtual/_rolldown/runtime.js";
2
+ import EventEmitter from "eventemitter3";
3
+ //#region src/editor-kernel/plugin.ts
4
+ var KernelPlugin;
5
+ var init_plugin = __esmMin((() => {
6
+ KernelPlugin = class extends EventEmitter {
7
+ constructor(..._args) {
8
+ super(..._args);
9
+ this.clears = [];
10
+ this.registeredDecorators = /* @__PURE__ */ new Set();
11
+ }
12
+ register(clear) {
13
+ this.clears.push(clear);
14
+ }
15
+ registerClears(...clears) {
16
+ clears.forEach((clear) => this.register(clear));
17
+ }
18
+ /**
19
+ * Register a node transform and automatically clean it up on plugin destroy
20
+ */
21
+ registerNodeTransform(kernel, transform) {
22
+ this.register(kernel.registerNodeTransform(transform));
23
+ }
24
+ /**
25
+ * Register className(s) on contenteditable root and auto cleanup
26
+ */
27
+ registerRootClassName(kernel, className) {
28
+ this.register(kernel.registerRootClassName(className));
29
+ }
30
+ /**
31
+ * Register a decorator and track it for cleanup
32
+ */
33
+ registerDecorator(kernel, name, decorator) {
34
+ kernel.registerDecorator(name, decorator);
35
+ this.registeredDecorators.add(name);
36
+ }
37
+ /**
38
+ * Unregister a specific decorator
39
+ */
40
+ unregisterDecorator(kernel, name) {
41
+ const result = kernel.unregisterDecorator(name);
42
+ if (result) this.registeredDecorators.delete(name);
43
+ return result;
44
+ }
45
+ /**
46
+ * Get all decorator names registered by this plugin
47
+ */
48
+ getRegisteredDecorators() {
49
+ return Array.from(this.registeredDecorators);
50
+ }
51
+ destroy() {
52
+ this.clears.forEach((clear) => clear());
53
+ this.registeredDecorators.clear();
54
+ }
55
+ };
56
+ }));
57
+ //#endregion
58
+ init_plugin();
59
+ export { KernelPlugin, init_plugin };
@@ -0,0 +1,13 @@
1
+ import { JSX } from "react";
2
+
3
+ //#region src/editor-kernel/react/LexicalErrorBoundary.d.ts
4
+ type LexicalErrorBoundaryProps = {
5
+ children: JSX.Element;
6
+ onError: (error: unknown) => void;
7
+ };
8
+ declare function LexicalErrorBoundary({
9
+ children,
10
+ onError
11
+ }: LexicalErrorBoundaryProps): JSX.Element;
12
+ //#endregion
13
+ export { LexicalErrorBoundary };
@@ -0,0 +1,19 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { ErrorBoundary } from "react-error-boundary";
3
+ //#region src/editor-kernel/react/LexicalErrorBoundary.tsx
4
+ function LexicalErrorBoundary({ children, onError }) {
5
+ return /* @__PURE__ */ jsx(ErrorBoundary, {
6
+ fallback: /* @__PURE__ */ jsx("div", {
7
+ style: {
8
+ border: "1px solid #f00",
9
+ color: "#f00",
10
+ padding: "8px"
11
+ },
12
+ children: "An error was thrown."
13
+ }),
14
+ onError,
15
+ children
16
+ });
17
+ }
18
+ //#endregion
19
+ export { LexicalErrorBoundary };
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { useAnchor } from "./useAnchor.js";
3
+ import { createPortal } from "react-dom";
4
+ //#region src/editor-kernel/react/PortalAnchor.tsx
5
+ const PortalAnchor = ({ children }) => {
6
+ const targetElement = useAnchor();
7
+ if (!targetElement) return null;
8
+ return createPortal(children, targetElement);
9
+ };
10
+ PortalAnchor.displayName = "PortalAnchor";
11
+ //#endregion
12
+ export { PortalAnchor as default };
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import { LexicalEditor, LexicalNode } from "lexical";
3
+
4
+ //#region src/editor-kernel/react/PortalContainer.d.ts
5
+ interface PortalContainerProps {
6
+ children: React.ReactNode;
7
+ className?: string;
8
+ editor: LexicalEditor;
9
+ node: LexicalNode;
10
+ style?: React.CSSProperties;
11
+ }
12
+ declare const LexicalPortalContainer: React.ForwardRefExoticComponent<PortalContainerProps & React.RefAttributes<HTMLDivElement | null>>;
13
+ //#endregion
14
+ export { LexicalPortalContainer };
@@ -0,0 +1,25 @@
1
+ import { forwardRef, useEffect, useImperativeHandle, useRef } from "react";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region src/editor-kernel/react/PortalContainer.tsx
4
+ const LexicalPortalContainer = forwardRef(({ editor, node, children }, ref) => {
5
+ const divRef = useRef(null);
6
+ useImperativeHandle(ref, () => divRef.current, []);
7
+ useEffect(() => {
8
+ return () => {
9
+ if (divRef.current) delete divRef.current[`__lexicalKey_${editor._key}`];
10
+ };
11
+ }, [editor, node]);
12
+ return /* @__PURE__ */ jsx("div", {
13
+ ref: (dom) => {
14
+ divRef.current = dom;
15
+ if (dom) {
16
+ const prop = `__lexicalKey_${editor._key}`;
17
+ dom[prop] = node.getKey();
18
+ }
19
+ },
20
+ children
21
+ });
22
+ });
23
+ LexicalPortalContainer.displayName = "LexicalPortalContainer";
24
+ //#endregion
25
+ export { LexicalPortalContainer as default };
@@ -0,0 +1,5 @@
1
+ import { LexicalErrorBoundary } from "./LexicalErrorBoundary.js";
2
+ import { LexicalPortalContainer } from "./PortalContainer.js";
3
+ import { useLexicalComposerContext } from "./react-context.js";
4
+ import { ReactEditor } from "./react-editor.js";
5
+ import { useLexicalEditor } from "./useLexicalEditor.js";
@@ -0,0 +1,11 @@
1
+ import { IEditor } from "../../types/kernel.js";
2
+ import { EditorThemeClasses } from "lexical";
3
+
4
+ //#region src/editor-kernel/react/react-context.d.ts
5
+ type LexicalComposerContextType = {
6
+ getTheme: () => EditorThemeClasses | null | undefined;
7
+ };
8
+ type LexicalComposerContextWithEditor = [IEditor, LexicalComposerContextType];
9
+ declare function useLexicalComposerContext(): LexicalComposerContextWithEditor;
10
+ //#endregion
11
+ export { useLexicalComposerContext };
@@ -0,0 +1,21 @@
1
+ import { assert, init_utils } from "../utils.js";
2
+ import { createContext, use } from "react";
3
+ //#region src/editor-kernel/react/react-context.ts
4
+ init_utils();
5
+ const LexicalComposerContext = createContext(null);
6
+ function createLexicalComposerContext(parent, theme) {
7
+ let parentContext = null;
8
+ if (parent) parentContext = parent[1];
9
+ function getTheme() {
10
+ if (theme !== null) return theme;
11
+ return parentContext !== null ? parentContext.getTheme() : null;
12
+ }
13
+ return { getTheme };
14
+ }
15
+ function useLexicalComposerContext() {
16
+ const composerContext = use(LexicalComposerContext);
17
+ if (!composerContext) assert(false, "LexicalComposerContext.useLexicalComposerContext: cannot find a LexicalComposerContext");
18
+ return composerContext;
19
+ }
20
+ //#endregion
21
+ export { LexicalComposerContext, createLexicalComposerContext, useLexicalComposerContext };
@@ -0,0 +1,16 @@
1
+ import { IEditor } from "../../types/kernel.js";
2
+ import { FC, ReactNode } from "react";
3
+
4
+ //#region src/editor-kernel/react/react-editor.d.ts
5
+ interface IReactEditorProps {
6
+ children?: ReactNode | undefined;
7
+ /** Editor configuration */
8
+ config?: Record<string, any>;
9
+ /** Editor instance to use */
10
+ editor?: IEditor;
11
+ /** Callback called when editor is initialized */
12
+ onInit?: (editor: IEditor) => void;
13
+ }
14
+ declare const ReactEditor: FC<IReactEditorProps>;
15
+ //#endregion
16
+ export { ReactEditor };
@@ -0,0 +1,32 @@
1
+ import Editor from "../index.js";
2
+ import { LexicalComposerContext, createLexicalComposerContext, useLexicalComposerContext } from "./react-context.js";
3
+ import { useEffect, useMemo, useRef } from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/editor-kernel/react/react-editor.tsx
6
+ /**
7
+ * Support configuration through react children
8
+ */
9
+ const ConfigInjector = ({ config }) => {
10
+ const [editor] = useLexicalComposerContext();
11
+ useEffect(() => {
12
+ if (config?.locale && Object.keys(config.locale).length > 0) editor.registerLocale(config.locale);
13
+ }, [editor, config]);
14
+ return null;
15
+ };
16
+ const ReactEditor = ({ editor: editorProp, children, config, onInit }) => {
17
+ const composerContext = useMemo(() => {
18
+ return [editorProp || Editor.createEditor(), createLexicalComposerContext(null, null)];
19
+ }, [editorProp]);
20
+ const onInitRef = useRef(onInit);
21
+ onInitRef.current = onInit;
22
+ useEffect(() => {
23
+ const editor = composerContext[0];
24
+ onInitRef.current?.(editor);
25
+ }, [composerContext]);
26
+ return /* @__PURE__ */ jsxs(LexicalComposerContext, {
27
+ value: composerContext,
28
+ children: [/* @__PURE__ */ jsx(ConfigInjector, { config }), children]
29
+ });
30
+ };
31
+ //#endregion
32
+ export { ReactEditor };
@@ -0,0 +1,17 @@
1
+ "use client";
2
+ import { useLexicalComposerContext } from "./react-context.js";
3
+ import { LOBE_THEME_APP_ID } from "@lobehub/ui";
4
+ import { useMemo } from "react";
5
+ //#region src/editor-kernel/react/useAnchor.ts
6
+ const useAnchor = () => {
7
+ const [editor] = useLexicalComposerContext();
8
+ return useMemo(() => {
9
+ if (typeof document === "undefined" || !editor) return;
10
+ const root = editor.getRootElement();
11
+ const anchor = root ? root.parentElement : null;
12
+ if (anchor) return anchor;
13
+ return document.querySelector(`#${LOBE_THEME_APP_ID}`) || document.body;
14
+ }, [editor]);
15
+ };
16
+ //#endregion
17
+ export { useAnchor };
@@ -0,0 +1,54 @@
1
+ import { CAN_USE_DOM } from "../../common/canUseDOM.js";
2
+ import { Suspense, useEffect, useLayoutEffect, useMemo, useState } from "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { createPortal, flushSync } from "react-dom";
5
+ //#region src/editor-kernel/react/useDecorators.tsx
6
+ const useLayoutEffectImpl = CAN_USE_DOM ? useLayoutEffect : useEffect;
7
+ function useDecorators(editor, ErrorBoundary) {
8
+ const [decorators, setDecorators] = useState(() => editor.getLexicalEditor()?.getDecorators() || {});
9
+ useLayoutEffectImpl(() => {
10
+ let clears = [];
11
+ const handleInit = (editor) => {
12
+ setDecorators(editor.getDecorators());
13
+ clears.push(editor.registerDecoratorListener((nextDecorators) => {
14
+ flushSync(() => {
15
+ setDecorators(nextDecorators);
16
+ });
17
+ }));
18
+ };
19
+ const lexicalEditor = editor.getLexicalEditor();
20
+ if (lexicalEditor) handleInit(lexicalEditor);
21
+ else {
22
+ editor.on("initialized", handleInit);
23
+ clears.push(() => {
24
+ editor.off("initialized", handleInit);
25
+ });
26
+ }
27
+ return () => {
28
+ clears.forEach((clear) => clear());
29
+ };
30
+ }, [editor]);
31
+ return useMemo(() => {
32
+ const decoratedPortals = [];
33
+ const decoratorKeys = Object.keys(decorators);
34
+ for (const nodeKey of decoratorKeys) {
35
+ const decorator = decorators[nodeKey];
36
+ const reactDecorator = /* @__PURE__ */ jsx(ErrorBoundary, {
37
+ onError: (e) => editor.getLexicalEditor()?._onError(e),
38
+ children: /* @__PURE__ */ jsx(Suspense, {
39
+ fallback: null,
40
+ children: "render" in decorator ? decorator.render : decorator
41
+ })
42
+ });
43
+ const element = editor.getLexicalEditor()?.getElementByKey(nodeKey);
44
+ if (element !== null && element !== void 0) decoratedPortals.push(createPortal(reactDecorator, "queryDOM" in decorator ? decorator.queryDOM(element) : element, nodeKey));
45
+ }
46
+ return decoratedPortals;
47
+ }, [
48
+ ErrorBoundary,
49
+ decorators,
50
+ editor
51
+ ]);
52
+ }
53
+ //#endregion
54
+ export { useDecorators };
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import { useLexicalComposerContext } from "./react-context.js";
3
+ import { useEffect, useState } from "react";
4
+ //#region src/editor-kernel/react/useEditable.ts
5
+ const useEditable = () => {
6
+ const [editor] = useLexicalComposerContext();
7
+ const [editable, setEditable] = useState(editor.isEditable());
8
+ useEffect(() => {
9
+ const updateEditable = (newEditable) => {
10
+ setEditable(newEditable);
11
+ };
12
+ const handleInitialized = () => {
13
+ setEditable(editor.isEditable());
14
+ };
15
+ editor.on("editableChange", updateEditable);
16
+ editor.on("initialized", handleInitialized);
17
+ return () => {
18
+ editor.off("editableChange", updateEditable);
19
+ editor.off("initialized", handleInitialized);
20
+ };
21
+ }, [editor]);
22
+ return { editable };
23
+ };
24
+ //#endregion
25
+ export { useEditable };
@@ -0,0 +1,6 @@
1
+ import { LexicalEditor } from "lexical";
2
+
3
+ //#region src/editor-kernel/react/useLexicalEditor.d.ts
4
+ declare function useLexicalEditor(handleEditor: (lexicalEditor: LexicalEditor) => (() => void) | undefined, deps?: any[]): void;
5
+ //#endregion
6
+ export { useLexicalEditor };
@@ -0,0 +1,23 @@
1
+ import { useLexicalComposerContext } from "./react-context.js";
2
+ import { useEffect } from "react";
3
+ //#region src/editor-kernel/react/useLexicalEditor.ts
4
+ function useLexicalEditor(handleEditor, deps = []) {
5
+ const [editor] = useLexicalComposerContext();
6
+ useEffect(() => {
7
+ let lexicalEditor = editor.getLexicalEditor();
8
+ if (lexicalEditor) return handleEditor(lexicalEditor);
9
+ else {
10
+ let remove = void 0;
11
+ const handle = (editor) => {
12
+ remove = handleEditor(editor);
13
+ };
14
+ editor.on("initialized", handle);
15
+ return () => {
16
+ editor.off("initialized", handle);
17
+ remove?.();
18
+ };
19
+ }
20
+ }, deps);
21
+ }
22
+ //#endregion
23
+ export { useLexicalEditor };
@@ -0,0 +1,86 @@
1
+ import { useLexicalComposerContext } from "./react-context.js";
2
+ import { useCallback, useEffect, useState } from "react";
3
+ import { $createNodeSelection, $getNodeByKey, $getSelection, $isNodeSelection, $setSelection } from "lexical";
4
+ //#region src/editor-kernel/react/useLexicalNodeSelection.ts
5
+ /**
6
+ * A helper function to determine if a specific node is selected in a Lexical editor.
7
+ *
8
+ * @param {LexicalEditor} editor - The LexicalEditor instance.
9
+ * @param {NodeKey} key - The key of the node to check.
10
+ * @returns {boolean} Whether the node is selected.
11
+ */
12
+ function isNodeSelected(editor, key) {
13
+ if (!editor) return false;
14
+ return editor.getEditorState().read(() => {
15
+ const node = $getNodeByKey(key);
16
+ if (node === null) return false;
17
+ return node.isSelected();
18
+ });
19
+ }
20
+ function detectNodeSelection(editor) {
21
+ if (!editor) return false;
22
+ return editor.getEditorState().read(() => {
23
+ return $getSelection()?.getNodes().length === 1;
24
+ });
25
+ }
26
+ /**
27
+ * A custom hook to manage the selection state of a specific node in a Lexical editor.
28
+ *
29
+ * This hook provides utilities to:
30
+ * - Check if a node is selected.
31
+ * - Update its selection state.
32
+ * - Clear the selection.
33
+ *
34
+ * @param {NodeKey} key - The key of the node to track selection for.
35
+ * @returns {[boolean, (selected: boolean) => void, () => void]} A tuple containing:
36
+ * - `isSelected` (boolean): Whether the node is currently selected.
37
+ * - `setSelected` (function): A function to set the selection state of the node.
38
+ * - `clearSelected` (function): A function to clear the selection of the node.
39
+ *
40
+ */
41
+ function useLexicalNodeSelection(key) {
42
+ const [editor] = useLexicalComposerContext();
43
+ const lexicalEditor = editor.getLexicalEditor();
44
+ const [isSelected, setIsSelected] = useState(() => isNodeSelected(lexicalEditor, key));
45
+ const [isNodeSelection, setIsNodeSelection] = useState(() => detectNodeSelection(lexicalEditor));
46
+ useEffect(() => {
47
+ let isMounted = true;
48
+ if (!lexicalEditor) return;
49
+ const unregister = lexicalEditor.registerUpdateListener(() => {
50
+ if (isMounted) {
51
+ setIsSelected(isNodeSelected(lexicalEditor, key));
52
+ setIsNodeSelection(detectNodeSelection(lexicalEditor));
53
+ }
54
+ });
55
+ return () => {
56
+ isMounted = false;
57
+ unregister();
58
+ };
59
+ }, [lexicalEditor, key]);
60
+ return [
61
+ isSelected,
62
+ useCallback((selected) => {
63
+ if (!lexicalEditor) return;
64
+ lexicalEditor.update(() => {
65
+ let selection = $getSelection();
66
+ if (selection?.getNodes().length === 1 && selection?.getNodes().map((v) => v.getKey()).includes(key)) return;
67
+ if (!$isNodeSelection(selection)) {
68
+ selection = $createNodeSelection();
69
+ $setSelection(selection);
70
+ }
71
+ if ($isNodeSelection(selection)) if (selected) selection.add(key);
72
+ else selection.delete(key);
73
+ });
74
+ }, [lexicalEditor, key]),
75
+ useCallback(() => {
76
+ if (!lexicalEditor) return;
77
+ lexicalEditor.update(() => {
78
+ const selection = $getSelection();
79
+ if ($isNodeSelection(selection)) selection.clear();
80
+ });
81
+ }, [lexicalEditor]),
82
+ isNodeSelection
83
+ ];
84
+ }
85
+ //#endregion
86
+ export { useLexicalNodeSelection };
@@ -0,0 +1,9 @@
1
+ import { useLexicalComposerContext } from "./react-context.js";
2
+ import { useCallback } from "react";
3
+ //#region src/editor-kernel/react/useTranslation.ts
4
+ function useTranslation() {
5
+ const [editor] = useLexicalComposerContext();
6
+ return useCallback((key, options) => editor.t(key, options), [editor]);
7
+ }
8
+ //#endregion
9
+ export { useTranslation };
@@ -0,0 +1,46 @@
1
+ import { IEditorKernel, IServiceID } from "../types/kernel.js";
2
+ import * as _$lexical from "lexical";
3
+ import { EditorConfig, ElementNode, LexicalEditor, LexicalNode, NodeKey } from "lexical";
4
+
5
+ //#region src/editor-kernel/utils.d.ts
6
+ declare const DOM_ELEMENT_TYPE = 1;
7
+ declare const DOM_TEXT_TYPE = 3;
8
+ declare const DOM_DOCUMENT_TYPE = 9;
9
+ declare const DOM_DOCUMENT_FRAGMENT_TYPE = 11;
10
+ declare function genServiceId<T>(name: string): IServiceID<T>;
11
+ declare const noop: () => void;
12
+ declare function createEmptyEditorState(): _$lexical.EditorState;
13
+ declare function assert(cond?: boolean, message?: string): asserts cond;
14
+ declare function getNodeKeyFromDOMNode(dom: Node, editor: LexicalEditor): NodeKey | undefined;
15
+ declare function $getNodeFromDOMNode(dom: Node, editor: LexicalEditor, editorState?: ReturnType<LexicalEditor['getEditorState']>): LexicalNode | null;
16
+ /**
17
+ * @param x - The element being tested
18
+ * @returns Returns true if x is a DOM Node, false otherwise.
19
+ */
20
+ declare function isDOMNode(x: unknown): x is Node;
21
+ /**
22
+ * @param x - The element being testing
23
+ * @returns Returns true if x is a document fragment, false otherwise.
24
+ */
25
+ declare function isDocumentFragment(x: unknown): x is DocumentFragment;
26
+ declare function getParentElement(node: Node): HTMLElement | null;
27
+ declare function $getNearestNodeFromDOMNode$1(startingDOM: Node, editor: LexicalEditor, editorState?: ReturnType<LexicalEditor['getEditorState']>): LexicalNode | null;
28
+ declare function getKernelFromEditor(editor: LexicalEditor): IEditorKernel;
29
+ declare const EDITOR_THEME_KEY = "__editorId";
30
+ declare function generateEditorId(): string;
31
+ declare function registerEditorKernel(id: string, kernel: IEditorKernel): void;
32
+ declare function unregisterEditorKernel(id: string): void;
33
+ declare function getKernelFromEditorConfig(config: EditorConfig): IEditorKernel | null;
34
+ /**
35
+ *
36
+ * @param nodeA
37
+ * @param nodeB
38
+ * @returns
39
+ */
40
+ declare function compareNodeOrder(nodeA: LexicalNode, nodeB: LexicalNode): number;
41
+ declare function $closest(node: LexicalNode | ElementNode | null, test: (node: LexicalNode) => boolean): LexicalNode | null;
42
+ declare function $closestNodeType(node: LexicalNode | ElementNode | null, type: string | string[]): LexicalNode | null;
43
+ declare function moment(): Promise<unknown>;
44
+ declare function reconcileDecorator(activeEditor: LexicalEditor, key: NodeKey, decorator: unknown): void;
45
+ //#endregion
46
+ export { $closest, $closestNodeType, $getNearestNodeFromDOMNode$1 as $getNearestNodeFromDOMNode, $getNodeFromDOMNode, DOM_DOCUMENT_FRAGMENT_TYPE, DOM_DOCUMENT_TYPE, DOM_ELEMENT_TYPE, DOM_TEXT_TYPE, EDITOR_THEME_KEY, assert, compareNodeOrder, createEmptyEditorState, genServiceId, generateEditorId, getKernelFromEditor, getKernelFromEditorConfig, getNodeKeyFromDOMNode, getParentElement, isDOMNode, isDocumentFragment, moment, noop, reconcileDecorator, registerEditorKernel, unregisterEditorKernel };
@@ -0,0 +1,138 @@
1
+ import { __esmMin } from "../_virtual/_rolldown/runtime.js";
2
+ import { $getNodeByKey, createEditor } from "lexical";
3
+ //#region src/editor-kernel/utils.ts
4
+ function genServiceId(name) {
5
+ return { __serviceId: name };
6
+ }
7
+ function createEmptyEditorState() {
8
+ return createEditor().getEditorState();
9
+ }
10
+ function assert(cond, message) {
11
+ if (cond) return;
12
+ throw new Error(message);
13
+ }
14
+ function getNodeKeyFromDOMNode(dom, editor) {
15
+ return dom[`__lexicalKey_${editor._key}`];
16
+ }
17
+ function $getNodeFromDOMNode(dom, editor, editorState) {
18
+ const key = getNodeKeyFromDOMNode(dom, editor);
19
+ if (key !== void 0) return $getNodeByKey(key, editorState);
20
+ return null;
21
+ }
22
+ /**
23
+ * @param x - The element being tested
24
+ * @returns Returns true if x is a DOM Node, false otherwise.
25
+ */
26
+ function isDOMNode(x) {
27
+ return typeof x === "object" && x !== null && "nodeType" in x && typeof x.nodeType === "number";
28
+ }
29
+ /**
30
+ * @param x - The element being testing
31
+ * @returns Returns true if x is a document fragment, false otherwise.
32
+ */
33
+ function isDocumentFragment(x) {
34
+ return isDOMNode(x) && x.nodeType === 11;
35
+ }
36
+ function getParentElement(node) {
37
+ const parentElement = node.assignedSlot || node.parentElement;
38
+ return isDocumentFragment(parentElement) ? parentElement.host : parentElement;
39
+ }
40
+ function $getNearestNodeFromDOMNode$1(startingDOM, editor, editorState) {
41
+ let dom = startingDOM;
42
+ while (dom !== null) {
43
+ const node = $getNodeFromDOMNode(dom, editor, editorState);
44
+ if (node !== null) return node;
45
+ dom = getParentElement(dom);
46
+ }
47
+ return null;
48
+ }
49
+ function getKernelFromEditor(editor) {
50
+ return editor._createEditorArgs?.__kernel || editor._kernel;
51
+ }
52
+ function generateEditorId() {
53
+ EditorId += 1;
54
+ return `editor-${EditorId}`;
55
+ }
56
+ function registerEditorKernel(id, kernel) {
57
+ EditorMap.set(id, kernel);
58
+ }
59
+ function unregisterEditorKernel(id) {
60
+ EditorMap.delete(id);
61
+ }
62
+ function getKernelFromEditorConfig(config) {
63
+ const id = config.theme[EDITOR_THEME_KEY];
64
+ return EditorMap.get(id) || null;
65
+ }
66
+ /**
67
+ *
68
+ * @param nodeA
69
+ * @param nodeB
70
+ * @returns
71
+ */
72
+ function compareNodeOrder(nodeA, nodeB) {
73
+ if (nodeA === nodeB) return 0;
74
+ const pathA = [];
75
+ const pathB = [];
76
+ let currentA = nodeA;
77
+ let currentB = nodeB;
78
+ while (currentA) {
79
+ pathA.unshift(currentA);
80
+ currentA = currentA.getParent();
81
+ }
82
+ while (currentB) {
83
+ pathB.unshift(currentB);
84
+ currentB = currentB.getParent();
85
+ }
86
+ const minLength = Math.min(pathA.length, pathB.length);
87
+ for (let i = 0; i < minLength; i++) if (pathA[i] !== pathB[i]) {
88
+ const siblings = pathA[i].getParent()?.getChildren() || [];
89
+ return siblings.indexOf(pathA[i]) - siblings.indexOf(pathB[i]);
90
+ }
91
+ if (pathA.length !== pathB.length) return pathA.length - pathB.length;
92
+ return 0;
93
+ }
94
+ function $closest(node, test) {
95
+ let current = node;
96
+ while (current) {
97
+ if (test(current)) return current;
98
+ current = current.getParent();
99
+ }
100
+ return null;
101
+ }
102
+ function $closestNodeType(node, type) {
103
+ return $closest(node, (n) => Array.isArray(type) ? type.includes(n.getType()) : n.getType() === type);
104
+ }
105
+ function moment() {
106
+ return new Promise((resolve) => {
107
+ queueMicrotask(() => resolve(true));
108
+ });
109
+ }
110
+ function cloneDecorators(editor) {
111
+ const currentDecorators = editor._decorators;
112
+ const pendingDecorators = Object.assign({}, currentDecorators);
113
+ editor._pendingDecorators = pendingDecorators;
114
+ return pendingDecorators;
115
+ }
116
+ function reconcileDecorator(activeEditor, key, decorator) {
117
+ let pendingDecorators = activeEditor._pendingDecorators;
118
+ const currentDecorators = activeEditor._decorators;
119
+ if (pendingDecorators === null) {
120
+ if (currentDecorators[key] === decorator) return;
121
+ pendingDecorators = cloneDecorators(activeEditor);
122
+ }
123
+ pendingDecorators[key] = decorator;
124
+ }
125
+ var DOM_ELEMENT_TYPE, DOM_TEXT_TYPE, DOM_DOCUMENT_TYPE, DOM_DOCUMENT_FRAGMENT_TYPE, noop, EditorId, EDITOR_THEME_KEY, EditorMap;
126
+ var init_utils = __esmMin((() => {
127
+ DOM_ELEMENT_TYPE = 1;
128
+ DOM_TEXT_TYPE = 3;
129
+ DOM_DOCUMENT_TYPE = 9;
130
+ DOM_DOCUMENT_FRAGMENT_TYPE = 11;
131
+ noop = () => {};
132
+ EditorId = 0;
133
+ EDITOR_THEME_KEY = "__editorId";
134
+ EditorMap = /* @__PURE__ */ new Map();
135
+ }));
136
+ //#endregion
137
+ init_utils();
138
+ export { $closest, $closestNodeType, $getNearestNodeFromDOMNode$1 as $getNearestNodeFromDOMNode, $getNodeFromDOMNode, DOM_DOCUMENT_FRAGMENT_TYPE, DOM_DOCUMENT_TYPE, DOM_ELEMENT_TYPE, DOM_TEXT_TYPE, EDITOR_THEME_KEY, assert, compareNodeOrder, createEmptyEditorState, genServiceId, generateEditorId, getKernelFromEditor, getKernelFromEditorConfig, getNodeKeyFromDOMNode, getParentElement, init_utils, isDOMNode, isDocumentFragment, moment, noop, reconcileDecorator, registerEditorKernel, unregisterEditorKernel };