diff --git a/app/javascript/editor/editor.ts b/app/javascript/editor/editor.ts index 3e340a4..0852050 100644 --- a/app/javascript/editor/editor.ts +++ b/app/javascript/editor/editor.ts @@ -38,6 +38,33 @@ function fixContent (editor: Editor, node: Element = editor.contentEl): void { node = el } + if (node instanceof HTMLImageElement) { + node.dataset.multimediaInner = '' + const figureEl = types.multimedia.create(editor) + + let targetEl = node.parentElement + if (!targetEl) throw new Error('No encontré lx objetivo') + while (true) { + const type = getType(targetEl) + if (!type) throw new Error('lx objetivo tiene tipo') + if (type.type.allowedChildren.includes('multimedia')) break + if (!targetEl.parentElement) throw new Error('No encontré lx objetivo') + targetEl = targetEl.parentElement + } + + let parentEl = [...targetEl.childNodes].find( + el => el.contains(node) + ) + if (!parentEl) throw new Error('no encontré lx pariente') + targetEl.insertBefore(figureEl, parentEl) + + const innerEl = figureEl.querySelector('[data-multimedia-inner]') + if (!innerEl) throw new Error('Raro.') + figureEl.replaceChild(node, innerEl) + + node = figureEl + } + const _type = getType(node) if (!_type) return