diff --git a/app/javascript/editor/editor.ts b/app/javascript/editor/editor.ts index 92448bb2..ba2403b0 100644 --- a/app/javascript/editor/editor.ts +++ b/app/javascript/editor/editor.ts @@ -18,10 +18,23 @@ export interface Editor { // inserta un allowedChildren[0]) // * TODO: que haya una imágen sin
o que no esté como bloque (se ponen // después del bloque en el que están como bloque de por si) -// * TODO: convierte y en y +// * convierte y en y // Lo hace para que siga la estructura del documento y que no se borren por // cleanContent luego. function fixContent (editor: Editor, node: Element = editor.contentEl): void { + if (node.tagName === 'I') { + const el = document.createElement('em') + moveChildren(node, el, null) + node.parentElement?.replaceChild(el, node) + node = el + } + if (node.tagName === 'B') { + const el = document.createElement('strong') + moveChildren(node, el, null) + node.parentElement?.replaceChild(el, node) + node = el + } + const _type = getType(node) if (!_type) return @@ -55,8 +68,6 @@ function fixContent (editor: Editor, node: Element = editor.contentEl): void { // * no borramos los
por que se requieren para que los navegadores // funcionen bien al escribir. no se deberían mostrar de todas maneras function cleanContent (editor: Editor, node: Element = editor.contentEl): void { - if (node.tagName === 'BR') return - const _type = getType(node) if (!_type) { node.parentElement?.removeChild(node) @@ -76,6 +87,7 @@ function cleanContent (editor: Editor, node: Element = editor.contentEl): void { if (!(child instanceof Element)) continue const childType = getType(child) + if (childType?.typeName === 'br') continue if (!childType || type.allowedChildren.indexOf(childType.typeName) === -1) { // XXX: esto extrae las cosas de adentro para que no sea destructivo moveChildren(child, node, child) diff --git a/app/javascript/editor/types.ts b/app/javascript/editor/types.ts index 86b0093e..bea37448 100644 --- a/app/javascript/editor/types.ts +++ b/app/javascript/editor/types.ts @@ -31,6 +31,12 @@ export const types: { [propName: string]: EditorNode } = { handleEmpty: blocks.paragraph, create: () => { throw new Error('se intentó crear contentEl') } }, + br: { + selector: 'br', + allowedChildren: [], + handleEmpty: 'do-nothing', + create: () => { throw new Error('se intentó crear br') } + }, } export function getType (node: Element): { typeName: string, type: EditorNode } | null {