@mdxeditor/editor
Advanced tools
Comparing version 3.0.7 to 3.0.8
@@ -23,5 +23,4 @@ import { realmPlugin } from "../../RealmWithPlugins.js"; | ||
import { MdastBreakVisitor } from "./MdastBreakVisitor.js"; | ||
import { MdastFormattingVisitor } from "./MdastFormattingVisitor.js"; | ||
import { formattingVisitors } from "./MdastFormattingVisitor.js"; | ||
import { MdastHTMLVisitor } from "./MdastHTMLVisitor.js"; | ||
import { MdastInlineCodeVisitor } from "./MdastInlineCodeVisitor.js"; | ||
import { MdastParagraphVisitor } from "./MdastParagraphVisitor.js"; | ||
@@ -482,10 +481,3 @@ import { MdastRootVisitor } from "./MdastRootVisitor.js"; | ||
[iconComponentFor$]: params == null ? void 0 : params.iconComponentFor, | ||
[addImportVisitor$]: [ | ||
MdastRootVisitor, | ||
MdastParagraphVisitor, | ||
MdastTextVisitor, | ||
MdastFormattingVisitor, | ||
MdastInlineCodeVisitor, | ||
MdastBreakVisitor | ||
], | ||
[addImportVisitor$]: [MdastRootVisitor, MdastParagraphVisitor, MdastTextVisitor, MdastBreakVisitor, ...formattingVisitors], | ||
[addLexicalNode$]: [ParagraphNode, TextNode, GenericHTMLNode], | ||
@@ -492,0 +484,0 @@ [addExportVisitor$]: [ |
import { $isTextNode } from "lexical"; | ||
import { IS_CODE, IS_ITALIC, IS_BOLD, IS_UNDERLINE } from "../../FormatConstants.js"; | ||
import { IS_ITALIC, IS_BOLD, IS_UNDERLINE, IS_CODE } from "../../FormatConstants.js"; | ||
function isMdastText(mdastNode) { | ||
@@ -38,8 +38,2 @@ return mdastNode.type === "text"; | ||
const style = lexicalNode.getStyle(); | ||
if (format & IS_CODE) { | ||
actions.addAndStepInto("inlineCode", { | ||
value: textContent | ||
}); | ||
return; | ||
} | ||
let localParentNode = mdastParent; | ||
@@ -94,2 +88,9 @@ if (style) { | ||
} | ||
if (format & IS_CODE) { | ||
actions.appendToParent(localParentNode, { | ||
type: "inlineCode", | ||
value: textContent | ||
}); | ||
return; | ||
} | ||
actions.appendToParent(localParentNode, { | ||
@@ -96,0 +97,0 @@ type: "text", |
@@ -1,2 +0,3 @@ | ||
import { IS_UNDERLINE, IS_ITALIC, IS_BOLD } from "../../FormatConstants.js"; | ||
import { IS_CODE, IS_ITALIC, IS_BOLD, IS_UNDERLINE } from "../../FormatConstants.js"; | ||
import { $createTextNode } from "lexical"; | ||
function isOpeningUnderlineNode(node) { | ||
@@ -11,27 +12,86 @@ return node.type === "html" && node.value === "<u>"; | ||
} | ||
const MdastFormattingVisitor = { | ||
testNode(mdastNode) { | ||
return mdastNode.type === "emphasis" || mdastNode.type === "strong" || isJsxUnderlineNode(mdastNode) || isOpeningUnderlineNode(mdastNode) || isClosingUnderlineNode(mdastNode); | ||
}, | ||
visitNode({ mdastNode, lexicalParent, actions, mdastParent }) { | ||
if (isOpeningUnderlineNode(mdastNode)) { | ||
actions.removeFormatting(IS_UNDERLINE, mdastParent); | ||
return; | ||
} | ||
if (isClosingUnderlineNode(mdastNode)) { | ||
actions.removeFormatting(IS_UNDERLINE, mdastParent); | ||
return; | ||
} | ||
if (mdastNode.type === "emphasis") { | ||
actions.addFormatting(IS_ITALIC); | ||
} else if (mdastNode.type === "strong") { | ||
actions.addFormatting(IS_BOLD); | ||
} else if (isJsxUnderlineNode(mdastNode)) { | ||
actions.addFormatting(IS_UNDERLINE); | ||
} | ||
function isJsxCodeNode(node) { | ||
return node.type === "mdxJsxTextElement" && node.name === "code"; | ||
} | ||
function isOpeningCodeNode(node) { | ||
return node.type === "html" && node.value === "<code>"; | ||
} | ||
function isClosingCodeNode(node) { | ||
return node.type === "html" && node.value === "</code>"; | ||
} | ||
const JsxCodeVisitor = { | ||
testNode: isJsxCodeNode, | ||
visitNode({ mdastNode, actions, lexicalParent }) { | ||
actions.addFormatting(IS_CODE); | ||
actions.visitChildren(mdastNode, lexicalParent); | ||
} | ||
}; | ||
const OpeningCodeVisitor = { | ||
testNode: isOpeningCodeNode, | ||
visitNode({ actions, mdastParent }) { | ||
actions.addFormatting(IS_CODE, mdastParent); | ||
} | ||
}; | ||
const ClosingCodeVisitor = { | ||
testNode: isClosingCodeNode, | ||
visitNode({ actions, mdastParent }) { | ||
actions.removeFormatting(IS_CODE, mdastParent); | ||
} | ||
}; | ||
const MdCodeVisitor = { | ||
testNode: "inlineCode", | ||
visitNode({ mdastNode, actions }) { | ||
actions.addAndStepInto($createTextNode(mdastNode.value).setFormat(actions.getParentFormatting() | IS_CODE)); | ||
} | ||
}; | ||
const MdEmphasisVisitor = { | ||
testNode: "emphasis", | ||
visitNode({ mdastNode, actions, lexicalParent }) { | ||
actions.addFormatting(IS_ITALIC); | ||
actions.visitChildren(mdastNode, lexicalParent); | ||
} | ||
}; | ||
const MdStrongVisitor = { | ||
testNode: "strong", | ||
visitNode({ mdastNode, actions, lexicalParent }) { | ||
actions.addFormatting(IS_BOLD); | ||
actions.visitChildren(mdastNode, lexicalParent); | ||
} | ||
}; | ||
const JsxUnderlineVisitor = { | ||
testNode: isJsxUnderlineNode, | ||
visitNode({ mdastNode, actions, lexicalParent }) { | ||
actions.addFormatting(IS_UNDERLINE); | ||
actions.visitChildren(mdastNode, lexicalParent); | ||
} | ||
}; | ||
const OpeningUnderlineVisitor = { | ||
testNode: isOpeningUnderlineNode, | ||
visitNode({ actions, mdastParent }) { | ||
actions.addFormatting(IS_UNDERLINE, mdastParent); | ||
} | ||
}; | ||
const ClosingUnderlineVisitor = { | ||
testNode: isClosingUnderlineNode, | ||
visitNode({ actions, mdastParent }) { | ||
actions.removeFormatting(IS_UNDERLINE, mdastParent); | ||
} | ||
}; | ||
const formattingVisitors = [ | ||
// emphasis | ||
MdEmphasisVisitor, | ||
// strong | ||
MdStrongVisitor, | ||
// underline | ||
JsxUnderlineVisitor, | ||
OpeningUnderlineVisitor, | ||
ClosingUnderlineVisitor, | ||
// code | ||
JsxCodeVisitor, | ||
OpeningCodeVisitor, | ||
ClosingCodeVisitor, | ||
MdCodeVisitor | ||
]; | ||
export { | ||
MdastFormattingVisitor | ||
formattingVisitors | ||
}; |
@@ -14,3 +14,3 @@ { | ||
"type": "module", | ||
"version": "3.0.7", | ||
"version": "3.0.8", | ||
"description": "React component for rich text markdown editing", | ||
@@ -113,4 +113,4 @@ "scripts": { | ||
"@types/unist": "^3.0.2", | ||
"@typescript-eslint/eslint-plugin": "^6.17.0", | ||
"@typescript-eslint/parser": "^6.17.0", | ||
"@typescript-eslint/eslint-plugin": "^7.9.0", | ||
"@typescript-eslint/parser": "^7.9.0", | ||
"@vitejs/plugin-react": "^4.0.0", | ||
@@ -146,9 +146,9 @@ "@vitejs/plugin-react-swc": "^3.5.0", | ||
"terser": "^5.26.0", | ||
"typedoc": "^0.25.6", | ||
"typedoc-plugin-markdown": "^3.17.1", | ||
"typedoc": "^0.25.13", | ||
"typedoc-plugin-markdown": "^4.0.2", | ||
"typedoc-plugin-no-inherit": "^1.4.0", | ||
"typescript": "^5.3.3", | ||
"typescript": "^5.4.5", | ||
"typescript-plugin-css-modules": "^5.0.2", | ||
"vite": "^5.0.10", | ||
"vite-plugin-dts": "^3.7.0", | ||
"vite-plugin-dts": "^3.9.1", | ||
"vite-plugin-svgr": "^4.2.0", | ||
@@ -155,0 +155,0 @@ "vite-tsconfig-paths": "^4.2.3", |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
502597
177
13426