@mdxeditor/editor
Version:
React component for rich text markdown editing
43 lines (42 loc) • 1.84 kB
JavaScript
import { useCellValues } from "@mdxeditor/gurx";
import React__default from "react";
import styles from "../../../styles/ui.module.css.js";
import { $isCodeBlockNode } from "../../codeblock/CodeBlockNode.js";
import { codeBlockLanguages$, EMPTY_VALUE } from "../../codemirror/index.js";
import { editorInFocus$, activeEditor$, useTranslation } from "../../core/index.js";
import { Select } from "../primitives/select.js";
const ChangeCodeMirrorLanguage = () => {
const [editorInFocus, theEditor, codeBlockLanguages] = useCellValues(editorInFocus$, activeEditor$, codeBlockLanguages$);
const codeBlockNode = $isCodeBlockNode(editorInFocus.rootNode) ? editorInFocus.rootNode : null;
const t = useTranslation();
if (!codeBlockNode) {
return null;
}
const rawLanguage = codeBlockNode.getLanguage();
let currentLanguage = codeBlockLanguages.keyMap[rawLanguage] ?? rawLanguage;
if (currentLanguage === "") {
currentLanguage = EMPTY_VALUE;
}
return /* @__PURE__ */ React__default.createElement("div", { className: styles.selectWithLabel }, /* @__PURE__ */ React__default.createElement("label", null, t("codeBlock.language", "Code block language")), /* @__PURE__ */ React__default.createElement(
Select,
{
value: currentLanguage,
onChange: (language) => {
theEditor == null ? void 0 : theEditor.update(() => {
codeBlockNode.setLanguage(language === EMPTY_VALUE ? "" : language);
setTimeout(() => {
theEditor.update(() => {
codeBlockNode.getLatest().select();
});
});
});
},
triggerTitle: t("codeBlock.selectLanguage", "Select code block language"),
placeholder: t("codeBlock.language", "Code block language"),
items: codeBlockLanguages.items
}
));
};
export {
ChangeCodeMirrorLanguage
};