@rtdui/editor
Version:
React rich text editor based on tiptap
54 lines (50 loc) • 1.56 kB
JavaScript
'use client';
;
var extensionCodeBlock = require('@tiptap/extension-code-block');
var prosemirrorShikiPlugin = require('./prosemirror-shiki-plugin.cjs');
const CodeBlockShiki = extensionCodeBlock.CodeBlock.extend({
addOptions() {
return {
...this.parent?.(),
defaultLanguage: null,
defaultTheme: "one-dark-pro",
HTMLAttributes: {
class: "shiki",
style: "background-color:#282c34;color:#abb2bf;"
}
};
},
addAttributes() {
return {
language: {
default: this.options.defaultLanguage,
parseHTML: (element) => {
const { languageClassPrefix } = this.options;
const classNames = [
...element.firstElementChild?.classList || []
];
const languages = classNames.filter((className) => className.startsWith(languageClassPrefix)).map((className) => className.replace(languageClassPrefix, ""));
const language = languages[0];
return language ?? this.options.defaultLanguage;
},
renderHTML: (attributes) => {
return {
"data-language": attributes.language
};
}
}
};
},
addProseMirrorPlugins() {
return [
...this.parent?.() || [],
prosemirrorShikiPlugin.ProseMirrorShikiPlugin({
name: this.name,
defaultLanguage: this.options.defaultLanguage,
defaultTheme: this.options.defaultTheme
})
];
}
});
exports.CodeBlockShiki = CodeBlockShiki;
//# sourceMappingURL=code-block-shiki.cjs.map