@mdxeditor/editor 0.0.1 → 0.0.5-development

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 (302) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +15 -75
  3. package/dist/FormatConstants.d.ts +9 -0
  4. package/dist/FormatConstants.js +10 -0
  5. package/dist/MDXEditor.d.ts +103 -0
  6. package/dist/MDXEditor.js +144 -0
  7. package/dist/directive-editors/AdmonitionDirectiveDescriptor.d.ts +17 -0
  8. package/dist/directive-editors/AdmonitionDirectiveDescriptor.js +28 -0
  9. package/dist/directive-editors/GenericDirectiveEditor.d.ts +8 -0
  10. package/dist/directive-editors/GenericDirectiveEditor.js +32 -0
  11. package/dist/exportMarkdownFromLexical.d.ts +138 -0
  12. package/dist/exportMarkdownFromLexical.js +239 -0
  13. package/dist/gurx/index.d.ts +3 -0
  14. package/dist/gurx/react.d.ts +152 -0
  15. package/dist/gurx/react.js +206 -0
  16. package/dist/gurx/realm.d.ts +148 -0
  17. package/dist/gurx/realm.js +489 -0
  18. package/dist/gurx/realmFactory.d.ts +79 -0
  19. package/dist/gurx/realmFactory.js +32 -0
  20. package/dist/icons/add_column.svg.js +5 -0
  21. package/dist/icons/add_photo.svg.js +5 -0
  22. package/dist/icons/add_row.svg.js +5 -0
  23. package/dist/icons/admonition.svg.js +5 -0
  24. package/dist/icons/arrow_drop_down.svg.js +5 -0
  25. package/dist/icons/check.svg.js +5 -0
  26. package/dist/icons/check_small.svg.js +5 -0
  27. package/dist/icons/close.svg.js +5 -0
  28. package/dist/icons/code.svg.js +5 -0
  29. package/dist/icons/content_copy.svg.js +5 -0
  30. package/dist/icons/delete_big.svg.js +5 -0
  31. package/dist/icons/delete_small.svg.js +5 -0
  32. package/dist/icons/difference.svg.js +5 -0
  33. package/dist/icons/edit.svg.js +5 -0
  34. package/dist/icons/extension.svg.js +7 -0
  35. package/dist/icons/format_align_center.svg.js +5 -0
  36. package/dist/icons/format_align_left.svg.js +5 -0
  37. package/dist/icons/format_align_right.svg.js +5 -0
  38. package/dist/icons/format_bold.svg.js +5 -0
  39. package/dist/icons/format_italic.svg.js +5 -0
  40. package/dist/icons/format_list_bulleted.svg.js +5 -0
  41. package/dist/icons/format_list_checked.svg.js +5 -0
  42. package/dist/icons/format_list_numbered.svg.js +5 -0
  43. package/dist/icons/format_underlined.svg.js +5 -0
  44. package/dist/icons/frame_source.svg.js +5 -0
  45. package/dist/icons/frontmatter.svg.js +5 -0
  46. package/dist/icons/horizontal_rule.svg.js +5 -0
  47. package/dist/icons/insert_col_left.svg.js +5 -0
  48. package/dist/icons/insert_col_right.svg.js +5 -0
  49. package/dist/icons/insert_row_above.svg.js +5 -0
  50. package/dist/icons/insert_row_below.svg.js +5 -0
  51. package/dist/icons/link.svg.js +5 -0
  52. package/dist/icons/link_off.svg.js +5 -0
  53. package/dist/icons/markdown.svg.js +5 -0
  54. package/dist/icons/more_horiz.svg.js +5 -0
  55. package/dist/icons/more_vert.svg.js +5 -0
  56. package/dist/icons/open_in_new.svg.js +5 -0
  57. package/dist/icons/redo.svg.js +5 -0
  58. package/dist/icons/rich_text.svg.js +5 -0
  59. package/dist/icons/sandpack.svg.js +5 -0
  60. package/dist/icons/settings.svg.js +5 -0
  61. package/dist/icons/table.svg.js +5 -0
  62. package/dist/icons/undo.svg.js +5 -0
  63. package/dist/importMarkdownToLexical.d.ts +101 -0
  64. package/dist/importMarkdownToLexical.js +93 -0
  65. package/dist/index.d.ts +62 -726
  66. package/dist/index.js +207 -4501
  67. package/dist/jsx-editors/GenericJsxEditor.d.ts +8 -0
  68. package/dist/jsx-editors/GenericJsxEditor.js +56 -0
  69. package/dist/plugins/codeblock/CodeBlockNode.d.ts +100 -0
  70. package/dist/plugins/codeblock/CodeBlockNode.js +158 -0
  71. package/dist/plugins/codeblock/CodeBlockVisitor.d.ts +4 -0
  72. package/dist/plugins/codeblock/CodeBlockVisitor.js +14 -0
  73. package/dist/plugins/codeblock/MdastCodeVisitor.d.ts +3 -0
  74. package/dist/plugins/codeblock/MdastCodeVisitor.js +16 -0
  75. package/dist/plugins/codeblock/index.d.ts +787 -0
  76. package/dist/plugins/codeblock/index.js +73 -0
  77. package/dist/plugins/codemirror/CodeMirrorEditor.d.ts +3 -0
  78. package/dist/plugins/codemirror/CodeMirrorEditor.js +42 -0
  79. package/dist/plugins/codemirror/index.d.ts +1038 -0
  80. package/dist/plugins/codemirror/index.js +62 -0
  81. package/dist/plugins/core/GenericHTMLNode.d.ts +38 -0
  82. package/dist/plugins/core/GenericHTMLNode.js +117 -0
  83. package/dist/plugins/core/Icon.d.ts +6 -0
  84. package/dist/plugins/core/Icon.js +96 -0
  85. package/dist/plugins/core/LexicalGenericHTMLNodeVisitor.d.ts +4 -0
  86. package/dist/plugins/core/LexicalGenericHTMLNodeVisitor.js +15 -0
  87. package/dist/plugins/core/LexicalLinebreakVisitor.d.ts +4 -0
  88. package/dist/plugins/core/LexicalLinebreakVisitor.js +10 -0
  89. package/dist/plugins/core/LexicalParagraphVisitor.d.ts +4 -0
  90. package/dist/plugins/core/LexicalParagraphVisitor.js +10 -0
  91. package/dist/plugins/core/LexicalRootVisitor.d.ts +4 -0
  92. package/dist/plugins/core/LexicalRootVisitor.js +10 -0
  93. package/dist/plugins/core/LexicalTextVisitor.d.ts +5 -0
  94. package/dist/plugins/core/LexicalTextVisitor.js +102 -0
  95. package/dist/plugins/core/MdastBreakVisitor.d.ts +3 -0
  96. package/dist/plugins/core/MdastBreakVisitor.js +10 -0
  97. package/dist/plugins/core/MdastFormattingVisitor.d.ts +4 -0
  98. package/dist/plugins/core/MdastFormattingVisitor.js +36 -0
  99. package/dist/plugins/core/MdastHTMLNode.d.ts +13 -0
  100. package/dist/plugins/core/MdastHTMLNode.js +122 -0
  101. package/dist/plugins/core/MdastHTMLVisitor.d.ts +3 -0
  102. package/dist/plugins/core/MdastHTMLVisitor.js +12 -0
  103. package/dist/plugins/core/MdastInlineCodeVisitor.d.ts +3 -0
  104. package/dist/plugins/core/MdastInlineCodeVisitor.js +27 -0
  105. package/dist/plugins/core/MdastParagraphVisitor.d.ts +3 -0
  106. package/dist/plugins/core/MdastParagraphVisitor.js +15 -0
  107. package/dist/plugins/core/MdastRootVisitor.d.ts +3 -0
  108. package/dist/plugins/core/MdastRootVisitor.js +9 -0
  109. package/dist/plugins/core/MdastTextVisitor.d.ts +3 -0
  110. package/dist/plugins/core/MdastTextVisitor.js +10 -0
  111. package/dist/plugins/core/NestedLexicalEditor.d.ts +92 -0
  112. package/dist/plugins/core/NestedLexicalEditor.js +185 -0
  113. package/dist/plugins/core/PropertyPopover.d.ts +23 -0
  114. package/dist/plugins/core/PropertyPopover.js +39 -0
  115. package/dist/plugins/core/SharedHistoryPlugin.d.ts +2 -0
  116. package/dist/plugins/core/SharedHistoryPlugin.js +10 -0
  117. package/dist/plugins/core/index.d.ts +583 -0
  118. package/dist/plugins/core/index.js +490 -0
  119. package/dist/plugins/core/ui/DownshiftAutoComplete.d.ts +15 -0
  120. package/dist/plugins/core/ui/DownshiftAutoComplete.js +83 -0
  121. package/dist/plugins/core/ui/PopoverUtils.d.ts +4 -0
  122. package/dist/plugins/core/ui/PopoverUtils.js +17 -0
  123. package/dist/plugins/diff-source/DiffSourceWrapper.d.ts +4 -0
  124. package/dist/plugins/diff-source/DiffSourceWrapper.js +14 -0
  125. package/dist/plugins/diff-source/DiffViewer.d.ts +2 -0
  126. package/dist/plugins/diff-source/DiffViewer.js +59 -0
  127. package/dist/plugins/diff-source/SourceEditor.d.ts +4 -0
  128. package/dist/plugins/diff-source/SourceEditor.js +53 -0
  129. package/dist/plugins/diff-source/index.d.ts +725 -0
  130. package/dist/plugins/diff-source/index.js +56 -0
  131. package/dist/plugins/directives/DirectiveNode.d.ts +51 -0
  132. package/dist/plugins/directives/DirectiveNode.js +92 -0
  133. package/dist/plugins/directives/DirectiveVisitor.d.ts +4 -0
  134. package/dist/plugins/directives/DirectiveVisitor.js +10 -0
  135. package/dist/plugins/directives/MdastDirectiveVisitor.d.ts +3 -0
  136. package/dist/plugins/directives/MdastDirectiveVisitor.js +13 -0
  137. package/dist/plugins/directives/index.d.ts +773 -0
  138. package/dist/plugins/directives/index.js +53 -0
  139. package/dist/plugins/frontmatter/FrontmatterEditor.d.ts +6 -0
  140. package/dist/plugins/frontmatter/FrontmatterEditor.js +85 -0
  141. package/dist/plugins/frontmatter/FrontmatterNode.d.ts +35 -0
  142. package/dist/plugins/frontmatter/FrontmatterNode.js +71 -0
  143. package/dist/plugins/frontmatter/LexicalFrontmatterVisitor.d.ts +4 -0
  144. package/dist/plugins/frontmatter/LexicalFrontmatterVisitor.js +10 -0
  145. package/dist/plugins/frontmatter/MdastFrontmatterVisitor.d.ts +3 -0
  146. package/dist/plugins/frontmatter/MdastFrontmatterVisitor.js +10 -0
  147. package/dist/plugins/frontmatter/index.d.ts +717 -0
  148. package/dist/plugins/frontmatter/index.js +76 -0
  149. package/dist/plugins/headings/LexicalHeadingVisitor.d.ts +4 -0
  150. package/dist/plugins/headings/LexicalHeadingVisitor.js +11 -0
  151. package/dist/plugins/headings/MdastHeadingVisitor.d.ts +3 -0
  152. package/dist/plugins/headings/MdastHeadingVisitor.js +10 -0
  153. package/dist/plugins/headings/index.d.ts +707 -0
  154. package/dist/plugins/headings/index.js +69 -0
  155. package/dist/plugins/image/ImageDialog.d.ts +2 -0
  156. package/dist/plugins/image/ImageDialog.js +70 -0
  157. package/dist/plugins/image/ImageEditor.d.ts +10 -0
  158. package/dist/plugins/image/ImageEditor.js +227 -0
  159. package/dist/plugins/image/ImageNode.d.ts +65 -0
  160. package/dist/plugins/image/ImageNode.js +152 -0
  161. package/dist/plugins/image/ImageResizer.d.ts +18 -0
  162. package/dist/plugins/image/ImageResizer.js +214 -0
  163. package/dist/plugins/image/LexicalImageVisitor.d.ts +4 -0
  164. package/dist/plugins/image/LexicalImageVisitor.js +35 -0
  165. package/dist/plugins/image/MdastImageVisitor.d.ts +6 -0
  166. package/dist/plugins/image/MdastImageVisitor.js +87 -0
  167. package/dist/plugins/image/index.d.ts +804 -0
  168. package/dist/plugins/image/index.js +300 -0
  169. package/dist/plugins/jsx/LexicalJsxNode.d.ts +54 -0
  170. package/dist/plugins/jsx/LexicalJsxNode.js +102 -0
  171. package/dist/plugins/jsx/LexicalJsxVisitor.d.ts +4 -0
  172. package/dist/plugins/jsx/LexicalJsxVisitor.js +24 -0
  173. package/dist/plugins/jsx/MdastMdxJsEsmVisitor.d.ts +3 -0
  174. package/dist/plugins/jsx/MdastMdxJsEsmVisitor.js +8 -0
  175. package/dist/plugins/jsx/MdastMdxJsxElementVisitor.d.ts +3 -0
  176. package/dist/plugins/jsx/MdastMdxJsxElementVisitor.js +12 -0
  177. package/dist/plugins/jsx/index.d.ts +779 -0
  178. package/dist/plugins/jsx/index.js +82 -0
  179. package/dist/plugins/link/AutoLinkPlugin.d.ts +9 -0
  180. package/dist/plugins/link/AutoLinkPlugin.js +18 -0
  181. package/dist/plugins/link/LexicalLinkVisitor.d.ts +4 -0
  182. package/dist/plugins/link/LexicalLinkVisitor.js +10 -0
  183. package/dist/plugins/link/MdastLinkVisitor.d.ts +3 -0
  184. package/dist/plugins/link/MdastLinkVisitor.js +14 -0
  185. package/dist/plugins/link/index.d.ts +101 -0
  186. package/dist/plugins/link/index.js +33 -0
  187. package/dist/plugins/link-dialog/LinkDialog.d.ts +16 -0
  188. package/dist/plugins/link-dialog/LinkDialog.js +148 -0
  189. package/dist/plugins/link-dialog/index.d.ts +669 -0
  190. package/dist/plugins/link-dialog/index.js +254 -0
  191. package/dist/plugins/lists/LexicalListItemVisitor.d.ts +4 -0
  192. package/dist/plugins/lists/LexicalListItemVisitor.js +23 -0
  193. package/dist/plugins/lists/LexicalListVisitor.d.ts +4 -0
  194. package/dist/plugins/lists/LexicalListVisitor.js +13 -0
  195. package/dist/plugins/lists/MdastListItemVisitor.d.ts +3 -0
  196. package/dist/plugins/lists/MdastListItemVisitor.js +10 -0
  197. package/dist/plugins/lists/MdastListVisitor.d.ts +3 -0
  198. package/dist/plugins/lists/MdastListVisitor.js +20 -0
  199. package/dist/plugins/lists/index.d.ts +703 -0
  200. package/dist/plugins/lists/index.js +122 -0
  201. package/dist/plugins/markdown-shortcut/index.d.ts +80 -0
  202. package/dist/plugins/markdown-shortcut/index.js +90 -0
  203. package/dist/plugins/quote/LexicalQuoteVisitor.d.ts +4 -0
  204. package/dist/plugins/quote/LexicalQuoteVisitor.js +12 -0
  205. package/dist/plugins/quote/MdastBlockQuoteVisitor.d.ts +3 -0
  206. package/dist/plugins/quote/MdastBlockQuoteVisitor.js +10 -0
  207. package/dist/plugins/quote/index.d.ts +480 -0
  208. package/dist/plugins/quote/index.js +26 -0
  209. package/dist/plugins/sandpack/SandpackEditor.d.ts +7 -0
  210. package/dist/plugins/sandpack/SandpackEditor.js +37 -0
  211. package/dist/plugins/sandpack/index.d.ts +1077 -0
  212. package/dist/plugins/sandpack/index.js +93 -0
  213. package/dist/plugins/sandpack/useCodeMirrorRef.d.ts +4 -0
  214. package/dist/plugins/sandpack/useCodeMirrorRef.js +96 -0
  215. package/dist/plugins/table/LexicalTableVisitor.d.ts +4 -0
  216. package/dist/plugins/table/LexicalTableVisitor.js +10 -0
  217. package/dist/plugins/table/MdastTableVisitor.d.ts +3 -0
  218. package/dist/plugins/table/MdastTableVisitor.js +10 -0
  219. package/dist/plugins/table/TableEditor.d.ts +21 -0
  220. package/dist/plugins/table/TableEditor.js +388 -0
  221. package/dist/plugins/table/TableNode.d.ts +52 -0
  222. package/dist/plugins/table/TableNode.js +152 -0
  223. package/dist/plugins/table/index.d.ts +704 -0
  224. package/dist/plugins/table/index.js +69 -0
  225. package/dist/plugins/thematic-break/LexicalThematicBreakVisitor.d.ts +4 -0
  226. package/dist/plugins/thematic-break/LexicalThematicBreakVisitor.js +10 -0
  227. package/dist/plugins/thematic-break/MdastThematicBreakVisitor.d.ts +3 -0
  228. package/dist/plugins/thematic-break/MdastThematicBreakVisitor.js +10 -0
  229. package/dist/plugins/thematic-break/index.d.ts +693 -0
  230. package/dist/plugins/thematic-break/index.js +39 -0
  231. package/dist/plugins/toolbar/components/BlockTypeSelect.d.ts +6 -0
  232. package/dist/plugins/toolbar/components/BlockTypeSelect.js +54 -0
  233. package/dist/plugins/toolbar/components/BoldItalicUnderlineToggles.d.ts +5 -0
  234. package/dist/plugins/toolbar/components/BoldItalicUnderlineToggles.js +33 -0
  235. package/dist/plugins/toolbar/components/ChangeAdmonitionType.d.ts +6 -0
  236. package/dist/plugins/toolbar/components/ChangeAdmonitionType.js +30 -0
  237. package/dist/plugins/toolbar/components/ChangeCodeMirrorLanguage.d.ts +7 -0
  238. package/dist/plugins/toolbar/components/ChangeCodeMirrorLanguage.js +32 -0
  239. package/dist/plugins/toolbar/components/CodeToggle.d.ts +6 -0
  240. package/dist/plugins/toolbar/components/CodeToggle.js +19 -0
  241. package/dist/plugins/toolbar/components/CreateLink.d.ts +6 -0
  242. package/dist/plugins/toolbar/components/CreateLink.js +20 -0
  243. package/dist/plugins/toolbar/components/DiffSourceToggleWrapper.d.ts +18 -0
  244. package/dist/plugins/toolbar/components/DiffSourceToggleWrapper.js +25 -0
  245. package/dist/plugins/toolbar/components/InsertAdmonition.d.ts +6 -0
  246. package/dist/plugins/toolbar/components/InsertAdmonition.js +29 -0
  247. package/dist/plugins/toolbar/components/InsertCodeBlock.d.ts +7 -0
  248. package/dist/plugins/toolbar/components/InsertCodeBlock.js +20 -0
  249. package/dist/plugins/toolbar/components/InsertFrontmatter.d.ts +6 -0
  250. package/dist/plugins/toolbar/components/InsertFrontmatter.js +24 -0
  251. package/dist/plugins/toolbar/components/InsertImage.d.ts +6 -0
  252. package/dist/plugins/toolbar/components/InsertImage.js +14 -0
  253. package/dist/plugins/toolbar/components/InsertSandpack.d.ts +6 -0
  254. package/dist/plugins/toolbar/components/InsertSandpack.js +13 -0
  255. package/dist/plugins/toolbar/components/InsertTable.d.ts +6 -0
  256. package/dist/plugins/toolbar/components/InsertTable.js +20 -0
  257. package/dist/plugins/toolbar/components/InsertThematicBreak.d.ts +6 -0
  258. package/dist/plugins/toolbar/components/InsertThematicBreak.js +11 -0
  259. package/dist/plugins/toolbar/components/KitchenSinkToolbar.d.ts +7 -0
  260. package/dist/plugins/toolbar/components/KitchenSinkToolbar.js +58 -0
  261. package/dist/plugins/toolbar/components/ListsToggle.d.ts +7 -0
  262. package/dist/plugins/toolbar/components/ListsToggle.js +23 -0
  263. package/dist/plugins/toolbar/components/ShowSandpackInfo.d.ts +7 -0
  264. package/dist/plugins/toolbar/components/ShowSandpackInfo.js +31 -0
  265. package/dist/plugins/toolbar/components/UndoRedo.d.ts +5 -0
  266. package/dist/plugins/toolbar/components/UndoRedo.js +58 -0
  267. package/dist/plugins/toolbar/index.d.ts +564 -0
  268. package/dist/plugins/toolbar/index.js +40 -0
  269. package/dist/plugins/toolbar/primitives/DialogButton.d.ts +40 -0
  270. package/dist/plugins/toolbar/primitives/DialogButton.js +114 -0
  271. package/dist/plugins/toolbar/primitives/TooltipWrap.d.ts +8 -0
  272. package/dist/plugins/toolbar/primitives/TooltipWrap.js +12 -0
  273. package/dist/plugins/toolbar/primitives/select.d.ts +50 -0
  274. package/dist/plugins/toolbar/primitives/select.js +55 -0
  275. package/dist/plugins/toolbar/primitives/toolbar.d.ts +163 -0
  276. package/dist/plugins/toolbar/primitives/toolbar.js +115 -0
  277. package/dist/style.css +1093 -288
  278. package/dist/styles/globals.css.js +4 -0
  279. package/dist/styles/lexical-theme.module.css.js +62 -0
  280. package/dist/styles/lexicalTheme.d.ts +2 -0
  281. package/dist/styles/lexicalTheme.js +31 -0
  282. package/dist/styles/ui.module.css.js +311 -0
  283. package/dist/utils/detectMac.d.ts +3 -0
  284. package/dist/utils/detectMac.js +13 -0
  285. package/dist/utils/fp.d.ts +47 -0
  286. package/dist/utils/fp.js +44 -0
  287. package/dist/utils/isPartOftheEditorUI.d.ts +1 -0
  288. package/dist/utils/isPartOftheEditorUI.js +12 -0
  289. package/dist/utils/lexicalHelpers.d.ts +11 -0
  290. package/dist/utils/lexicalHelpers.js +80 -0
  291. package/dist/utils/makeHslTransparent.d.ts +1 -0
  292. package/dist/utils/makeHslTransparent.js +6 -0
  293. package/dist/utils/mergeStyleAttributes.d.ts +1 -0
  294. package/dist/utils/mergeStyleAttributes.js +22 -0
  295. package/dist/utils/uuid4.d.ts +1 -0
  296. package/dist/utils/uuid4.js +10 -0
  297. package/dist/utils/voidEmitter.d.ts +14 -0
  298. package/dist/utils/voidEmitter.js +15 -0
  299. package/dist/utils/whitespaceConversion.d.ts +2 -0
  300. package/dist/utils/whitespaceConversion.js +9 -0
  301. package/package.json +326 -39
  302. package/dist/index.cjs +0 -1
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { JsxEditorProps } from '../plugins/jsx';
3
+ /**
4
+ * A generic editor that can be used as an universal UI for any JSX element.
5
+ * Allows editing of the element content and properties.
6
+ * Use this editor for the {@link JsxComponentDescriptor} Editor option.
7
+ */
8
+ export declare const GenericJsxEditor: React.FC<JsxEditorProps>;
@@ -0,0 +1,56 @@
1
+ import React__default from "react";
2
+ import { useMdastNodeUpdater, NestedLexicalEditor } from "../plugins/core/NestedLexicalEditor.js";
3
+ import { PropertyPopover } from "../plugins/core/PropertyPopover.js";
4
+ import styles from "../styles/ui.module.css.js";
5
+ const GenericJsxEditor = ({ mdastNode, descriptor }) => {
6
+ const updateMdastNode = useMdastNodeUpdater();
7
+ const properties = React__default.useMemo(() => {
8
+ return descriptor.props.reduce((acc, descriptor2) => {
9
+ const attribute = mdastNode.attributes.find((attr) => attr.name === descriptor2.name);
10
+ if (attribute) {
11
+ acc[descriptor2.name] = attribute.value;
12
+ } else {
13
+ acc[descriptor2.name] = "";
14
+ }
15
+ return acc;
16
+ }, {});
17
+ }, [mdastNode, descriptor]);
18
+ const onChange = React__default.useCallback(
19
+ (values) => {
20
+ const newAttributes = mdastNode.attributes.slice();
21
+ Object.entries(values).forEach(([key, value]) => {
22
+ const attributeToUpdate = newAttributes.find((attr) => attr.name === key);
23
+ if (value === "") {
24
+ if (attributeToUpdate) {
25
+ newAttributes.splice(newAttributes.indexOf(attributeToUpdate), 1);
26
+ }
27
+ } else {
28
+ if (attributeToUpdate) {
29
+ attributeToUpdate.value = value;
30
+ } else {
31
+ newAttributes.push({
32
+ type: "mdxJsxAttribute",
33
+ name: key,
34
+ value
35
+ });
36
+ }
37
+ }
38
+ });
39
+ updateMdastNode({ attributes: newAttributes });
40
+ },
41
+ [mdastNode, updateMdastNode]
42
+ );
43
+ return /* @__PURE__ */ React__default.createElement("div", { className: descriptor.kind === "text" ? styles.inlineEditor : styles.blockEditor }, descriptor.props.length == 0 && descriptor.hasChildren && descriptor.kind === "flow" ? /* @__PURE__ */ React__default.createElement("span", { className: styles.genericComponentName }, mdastNode.name) : null, descriptor.props.length > 0 ? /* @__PURE__ */ React__default.createElement(PropertyPopover, { properties, title: mdastNode.name || "", onChange }) : null, descriptor.hasChildren ? /* @__PURE__ */ React__default.createElement(
44
+ NestedLexicalEditor,
45
+ {
46
+ block: descriptor.kind === "flow",
47
+ getContent: (node) => node.children,
48
+ getUpdatedMdastNode: (mdastNode2, children) => {
49
+ return { ...mdastNode2, children };
50
+ }
51
+ }
52
+ ) : /* @__PURE__ */ React__default.createElement("span", { className: styles.genericComponentName }, mdastNode.name));
53
+ };
54
+ export {
55
+ GenericJsxEditor
56
+ };
@@ -0,0 +1,100 @@
1
+ import React from 'react';
2
+ import { DecoratorNode, EditorConfig, LexicalEditor, LexicalNode, NodeKey, SerializedLexicalNode, Spread } from 'lexical';
3
+ import { CodeBlockEditorProps } from '.';
4
+ /**
5
+ * The options necessary to construct a new code block node.
6
+ */
7
+ export interface CreateCodeBlockNodeOptions {
8
+ /**
9
+ * The code contents of the block.
10
+ */
11
+ code: string;
12
+ /**
13
+ * The language of the code block (i.e. `js`, `jsx`, etc.). This is used for syntax highlighting.
14
+ */
15
+ language: string;
16
+ /**
17
+ * The additional meta data of the block.
18
+ */
19
+ meta: string;
20
+ }
21
+ /**
22
+ * A serialized representation of an {@link CodeBlockNode}.
23
+ */
24
+ export type SerializedCodeBlockNode = Spread<CreateCodeBlockNodeOptions & {
25
+ type: 'codeblock';
26
+ version: 1;
27
+ }, SerializedLexicalNode>;
28
+ /**
29
+ * A lexical node that represents a fenced code block. Use {@link "$createCodeBlockNode"} to construct one.
30
+ */
31
+ export declare class CodeBlockNode extends DecoratorNode<JSX.Element> {
32
+ __code: string;
33
+ __meta: string;
34
+ __language: string;
35
+ __focusEmitter: {
36
+ publish: () => void; /**
37
+ * The code contents of the block.
38
+ */
39
+ subscribe: (cb: () => void) => void;
40
+ };
41
+ static getType(): string;
42
+ static clone(node: CodeBlockNode): CodeBlockNode;
43
+ static importJSON(serializedNode: SerializedCodeBlockNode): CodeBlockNode;
44
+ constructor(code: string, language: string, meta: string, key?: NodeKey);
45
+ exportJSON(): SerializedCodeBlockNode;
46
+ createDOM(_config: EditorConfig): HTMLDivElement;
47
+ updateDOM(): false;
48
+ getCode(): string;
49
+ getMeta(): string;
50
+ getLanguage(): string;
51
+ setCode: (code: string) => void;
52
+ setMeta: (meta: string) => void;
53
+ setLanguage: (language: string) => void;
54
+ select: () => void;
55
+ decorate(editor: LexicalEditor): JSX.Element;
56
+ isInline(): boolean;
57
+ }
58
+ interface CodeBlockEditorContainerProps extends CodeBlockEditorProps {
59
+ /** The Lexical editor that contains the node */
60
+ parentEditor: LexicalEditor;
61
+ /** The Lexical node that is being edited */
62
+ codeBlockNode: CodeBlockNode;
63
+ }
64
+ /**
65
+ * A set of functions that modify the underlying code block node. Get this with the {@link useCodeBlockEditorContext} hook.
66
+ */
67
+ export interface CodeBlockEditorContextValue {
68
+ /**
69
+ * Updates the code contents of the code block.
70
+ */
71
+ setCode: (code: string) => void;
72
+ /**
73
+ * Updates the language of the code block. See {@link https://www.markdownguide.org/extended-syntax/#syntax-highlighting} for language examples.
74
+ *
75
+ */
76
+ setLanguage: (language: string) => void;
77
+ /**
78
+ * Updates the meta of the code block. The meta is the additional string that comes after the code block language.
79
+ */
80
+ setMeta: (meta: string) => void;
81
+ /**
82
+ * The Lexical node that's being edited.
83
+ */
84
+ lexicalNode: CodeBlockNode;
85
+ }
86
+ /**
87
+ * Use this hook in your custom code block editors to modify the underlying node code, language, and meta.
88
+ */
89
+ export declare function useCodeBlockEditorContext(): CodeBlockEditorContextValue;
90
+ export declare function CodeBlockEditorContainer(props: CodeBlockEditorContainerProps): React.JSX.Element;
91
+ /**
92
+ * Creates a {@link CodeBlockNode}.
93
+ * @param options - The code contents, the language (i.e. js, jsx, etc.), and the additional meta data of the block.
94
+ */
95
+ export declare function $createCodeBlockNode(options: Partial<CreateCodeBlockNodeOptions>): CodeBlockNode;
96
+ /**
97
+ * Returns true if the given node is a {@link CodeBlockNode}.
98
+ */
99
+ export declare function $isCodeBlockNode(node: LexicalNode | null | undefined): node is CodeBlockNode;
100
+ export {};
@@ -0,0 +1,158 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => {
4
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ return value;
6
+ };
7
+ import React__default from "react";
8
+ import { DecoratorNode } from "lexical";
9
+ import { codeBlockPluginHooks } from "./index.js";
10
+ import { voidEmitter } from "../../utils/voidEmitter.js";
11
+ import { NESTED_EDITOR_UPDATED_COMMAND } from "../core/index.js";
12
+ class CodeBlockNode extends DecoratorNode {
13
+ constructor(code, language, meta, key) {
14
+ super(key);
15
+ __publicField(this, "__code");
16
+ __publicField(this, "__meta");
17
+ __publicField(this, "__language");
18
+ __publicField(this, "__focusEmitter", voidEmitter());
19
+ __publicField(this, "setCode", (code) => {
20
+ if (code !== this.__code) {
21
+ this.getWritable().__code = code;
22
+ }
23
+ });
24
+ __publicField(this, "setMeta", (meta) => {
25
+ if (meta !== this.__meta) {
26
+ this.getWritable().__meta = meta;
27
+ }
28
+ });
29
+ __publicField(this, "setLanguage", (language) => {
30
+ if (language !== this.__language) {
31
+ this.getWritable().__language = language;
32
+ }
33
+ });
34
+ __publicField(this, "select", () => {
35
+ this.__focusEmitter.publish();
36
+ });
37
+ this.__code = code;
38
+ this.__meta = meta;
39
+ this.__language = language;
40
+ }
41
+ static getType() {
42
+ return "codeblock";
43
+ }
44
+ static clone(node) {
45
+ return new CodeBlockNode(node.__code, node.__language, node.__meta, node.__key);
46
+ }
47
+ static importJSON(serializedNode) {
48
+ const { code, meta, language } = serializedNode;
49
+ return $createCodeBlockNode({
50
+ code,
51
+ language,
52
+ meta
53
+ });
54
+ }
55
+ exportJSON() {
56
+ return {
57
+ code: this.getCode(),
58
+ language: this.getLanguage(),
59
+ meta: this.getMeta(),
60
+ type: "codeblock",
61
+ version: 1
62
+ };
63
+ }
64
+ // View
65
+ createDOM(_config) {
66
+ return document.createElement("div");
67
+ }
68
+ updateDOM() {
69
+ return false;
70
+ }
71
+ getCode() {
72
+ return this.__code;
73
+ }
74
+ getMeta() {
75
+ return this.__meta;
76
+ }
77
+ getLanguage() {
78
+ return this.__language;
79
+ }
80
+ decorate(editor) {
81
+ return /* @__PURE__ */ React__default.createElement(
82
+ CodeBlockEditorContainer,
83
+ {
84
+ parentEditor: editor,
85
+ code: this.getCode(),
86
+ meta: this.getMeta(),
87
+ language: this.getLanguage(),
88
+ codeBlockNode: this,
89
+ nodeKey: this.getKey(),
90
+ focusEmitter: this.__focusEmitter
91
+ }
92
+ );
93
+ }
94
+ isInline() {
95
+ return false;
96
+ }
97
+ }
98
+ const CodeBlockEditorContext = React__default.createContext(null);
99
+ const CodeBlockEditorContextProvider = ({ parentEditor, lexicalNode, children }) => {
100
+ return /* @__PURE__ */ React__default.createElement(
101
+ CodeBlockEditorContext.Provider,
102
+ {
103
+ value: {
104
+ lexicalNode,
105
+ setCode: (code) => {
106
+ parentEditor.update(() => {
107
+ lexicalNode.setCode(code);
108
+ setTimeout(() => {
109
+ parentEditor.dispatchCommand(NESTED_EDITOR_UPDATED_COMMAND, void 0);
110
+ }, 0);
111
+ });
112
+ },
113
+ setLanguage: (language) => {
114
+ parentEditor.update(() => {
115
+ lexicalNode.setLanguage(language);
116
+ });
117
+ },
118
+ setMeta: (meta) => {
119
+ parentEditor.update(() => {
120
+ lexicalNode.setMeta(meta);
121
+ });
122
+ }
123
+ }
124
+ },
125
+ children
126
+ );
127
+ };
128
+ function useCodeBlockEditorContext() {
129
+ const context = React__default.useContext(CodeBlockEditorContext);
130
+ if (!context) {
131
+ throw new Error("useCodeBlockEditor must be used within a CodeBlockEditor");
132
+ }
133
+ return context;
134
+ }
135
+ function CodeBlockEditorContainer(props) {
136
+ const [codeBlockEditorDescriptors] = codeBlockPluginHooks.useEmitterValues("codeBlockEditorDescriptors");
137
+ const descriptor = codeBlockEditorDescriptors.sort((a, b) => b.priority - a.priority).find((descriptor2) => descriptor2.match(props.language || "", props.meta || ""));
138
+ if (!descriptor) {
139
+ throw new Error(`No CodeBlockEditor registered for language=${props.language} meta=${props.meta}`);
140
+ }
141
+ const Editor = descriptor.Editor;
142
+ const { codeBlockNode: _, parentEditor: __, ...restProps } = props;
143
+ return /* @__PURE__ */ React__default.createElement(CodeBlockEditorContextProvider, { parentEditor: props.parentEditor, lexicalNode: props.codeBlockNode }, /* @__PURE__ */ React__default.createElement(Editor, { ...restProps }));
144
+ }
145
+ function $createCodeBlockNode(options) {
146
+ const { code = "", language = "", meta = "" } = options;
147
+ return new CodeBlockNode(code, language, meta);
148
+ }
149
+ function $isCodeBlockNode(node) {
150
+ return node instanceof CodeBlockNode;
151
+ }
152
+ export {
153
+ $createCodeBlockNode,
154
+ $isCodeBlockNode,
155
+ CodeBlockEditorContainer,
156
+ CodeBlockNode,
157
+ useCodeBlockEditorContext
158
+ };
@@ -0,0 +1,4 @@
1
+ import * as Mdast from 'mdast';
2
+ import { CodeBlockNode } from './CodeBlockNode';
3
+ import { LexicalExportVisitor } from '../../exportMarkdownFromLexical';
4
+ export declare const CodeBlockVisitor: LexicalExportVisitor<CodeBlockNode, Mdast.Code>;
@@ -0,0 +1,14 @@
1
+ import { $isCodeBlockNode } from "./CodeBlockNode.js";
2
+ const CodeBlockVisitor = {
3
+ testLexicalNode: $isCodeBlockNode,
4
+ visitLexicalNode: ({ lexicalNode, actions }) => {
5
+ actions.addAndStepInto("code", {
6
+ value: lexicalNode.getCode(),
7
+ lang: lexicalNode.getLanguage(),
8
+ meta: lexicalNode.getMeta()
9
+ });
10
+ }
11
+ };
12
+ export {
13
+ CodeBlockVisitor
14
+ };
@@ -0,0 +1,3 @@
1
+ import * as Mdast from 'mdast';
2
+ import { MdastImportVisitor } from '../../importMarkdownToLexical';
3
+ export declare const MdastCodeVisitor: MdastImportVisitor<Mdast.Code>;
@@ -0,0 +1,16 @@
1
+ import { $createCodeBlockNode } from "./CodeBlockNode.js";
2
+ const MdastCodeVisitor = {
3
+ testNode: "code",
4
+ visitNode({ mdastNode, actions }) {
5
+ actions.addAndStepInto(
6
+ $createCodeBlockNode({
7
+ code: mdastNode.value,
8
+ language: mdastNode.lang,
9
+ meta: mdastNode.meta
10
+ })
11
+ );
12
+ }
13
+ };
14
+ export {
15
+ MdastCodeVisitor
16
+ };