* @param {Editor} editor
* @param {String} url
*/
+import {blockElementTypes} from "./util";
function register(editor, url) {
editor.insertContent(details.outerHTML);
editor.focus();
- const domDetails = editor.dom.select(`[data-id="${id}"]`);
- if (!domDetails.length) {
- const firstChild = domDetails.find('doc-root > *');
+ const domDetails = editor.dom.select(`[data-id="${id}"]`)[0] || null;
+ if (domDetails) {
+ const firstChild = domDetails.querySelector('doc-root > *');
if (firstChild) {
- firstChild[0].focus();
+ firstChild.focus();
}
- domDetails.removeAttr('data-id');
+ domDetails.removeAttribute('data-id');
}
});
unwrapDetailsEditable(detailsEl);
detailsEl.attr('contenteditable', 'false');
- const wrap = tinymce.html.Node.create('doc-root', {contenteditable: 'true'});
+ const rootWrap = tinymce.html.Node.create('doc-root', {contenteditable: 'true'});
+ let previousBlockWrap = null;
+
for (const child of detailsEl.children()) {
- if (child.name !== 'summary') {
- wrap.append(child);
+ if (child.name === 'summary') continue;
+ const isBlock = blockElementTypes.includes(child.name);
+
+ if (!isBlock) {
+ if (!previousBlockWrap) {
+ previousBlockWrap = tinymce.html.Node.create('p');
+ rootWrap.append(previousBlockWrap);
+ }
+ previousBlockWrap.append(child);
+ } else {
+ rootWrap.append(child);
+ previousBlockWrap = null;
}
}
- detailsEl.append(wrap);
+ detailsEl.append(rootWrap);
}
/**