* @param {function(string, string)} callback (Receives (code: string,language: string)
*/
function showPopup(editor, code, language, callback) {
- window.components.first('code-editor').open(code, language, (newCode, newLang) => {
+ window.$components.first('code-editor').open(code, language, (newCode, newLang) => {
callback(newCode, newLang)
editor.focus()
});
constructor() {
super();
this.attachShadow({mode: 'open'});
- const linkElem = document.createElement('link');
- linkElem.setAttribute('rel', 'stylesheet');
- linkElem.setAttribute('href', window.baseUrl('/dist/styles.css'));
+
+ const stylesToCopy = document.querySelectorAll('link[rel="stylesheet"]:not([media="print"])');
+ const copiedStyles = Array.from(stylesToCopy).map(styleEl => styleEl.cloneNode(false));
const cmContainer = document.createElement('div');
cmContainer.style.pointerEvents = 'none';
cmContainer.contentEditable = 'false';
cmContainer.classList.add('CodeMirrorContainer');
- this.shadowRoot.append(linkElem, cmContainer);
+ this.shadowRoot.append(...copiedStyles, cmContainer);
}
getLanguage() {
}
});
+ editor.ui.registry.addButton('editcodeeditor', {
+ tooltip: 'Edit code block',
+ icon: 'edit-block',
+ onAction() {
+ editor.execCommand('codeeditor');
+ }
+ });
+
editor.addCommand('codeeditor', () => {
const selectedNode = editor.selection.getNode();
const doc = selectedNode.ownerDocument;
});
});
+ editor.ui.registry.addContextToolbar('codeeditor', {
+ predicate: function (node) {
+ return node.nodeName.toLowerCase() === 'code-block';
+ },
+ items: 'editcodeeditor',
+ position: 'node',
+ scope: 'node'
+ });
+
editor.on('PreInit', () => {
defineCodeBlockCustomElement(editor);
});