-
-
Notifications
You must be signed in to change notification settings - Fork 175
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node. #562
Comments
@Nquq Did not reproduce your error. react-md-editor/core/README.md Lines 614 to 701 in e660e56
|
jaywcjlove
added a commit
that referenced
this issue
Aug 10, 2023
@Nquq https://codesandbox.io/embed/markdown-editor-mermaid-for-react-forked-hxqn4r?fontsize=14&hidenavigation=1&theme=dark Use import React, {
useState,
useRef,
Fragment,
useEffect,
useCallback
} from "react";
import MDEditor from "@uiw/react-md-editor";
import mermaid from "mermaid";
import { createRoot } from "react-dom/client";
import { getCodeString } from "rehype-rewrite";
const mdMermaid = `The following are some examples of the diagrams, charts and graphs that can be made using Mermaid and the Markdown-inspired text specific to it.
\`\`\`mermaid
graph TD
A[Hard] -->|Text| B(Round)
B --> C{Decision}
C -->|One| D[Result 1]
C -->|Two| E[Result 2]
\`\`\`
\`\`\`mermaid
sequenceDiagram
Alice->>John: Hello John, how are you?
loop Healthcheck
John->>John: Fight against hypochondria
end
Note right of John: Rational thoughts!
John-->>Alice: Great!
John->>Bob: How about you?
Bob-->>John: Jolly good!
\`\`\`
`;
const randomid = () => parseInt(String(Math.random() * 1e15), 10).toString(36);
const Code = ({ inline, children = [], className, ...props }) => {
const demoid = useRef(`dome${randomid()}`);
const [container, setContainer] = useState(null);
const isMermaid =
className && /^language-mermaid/.test(className.toLocaleLowerCase());
const txt = children[0] || "";
const code =
props.node && props.node.children
? getCodeString(props.node.children)
: txt;
useEffect(() => {
if (container && isMermaid) {
try {
const str = mermaid.render(demoid.current, code);
container.innerHTML = str;
} catch (error) {
container.innerHTML = error;
}
}
}, [container, isMermaid, code, demoid]);
const refElement = useCallback((node) => {
if (node !== null) {
setContainer(node);
}
}, []);
if (isMermaid) {
return (
<Fragment>
<code id={demoid.current} style={{ display: "none" }} />
<code ref={refElement} data-name="mermaid" />
</Fragment>
);
}
return <code>{children}</code>;
};
export default function App() {
const [value, setValue] = useState(mdMermaid);
return (
<div data-color-mode="light">
<MDEditor
onChange={(newValue = "") => setValue(newValue)}
textareaProps={{
placeholder: "Please enter Markdown text"
}}
height={500}
value={value}
previewOptions={{
components: {
code: Code
}
}}
/>
</div>
);
}
const container = document.getElementById("container");
const root = createRoot(container);
root.render(<App />); |
@jaywcjlove thank a lot! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hello!
I have a problem with the mermaid plugin. When I start erasing the word 'mermaid' in the editor, I get an error like in the screenshot.
here is my code component
and MDEditor component
The text was updated successfully, but these errors were encountered: