From 792047d4c8ea37ad3f292ade31507cdaa1462d92 Mon Sep 17 00:00:00 2001 From: void Date: Fri, 12 Feb 2021 20:33:23 +0000 Subject: [PATCH] WIP: arreglar espacios al final de la linea y / --- app/javascript/editor/editor.ts | 18 +++++++++++++++--- app/javascript/editor/types.ts | 6 ++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/app/javascript/editor/editor.ts b/app/javascript/editor/editor.ts index 92448bb..ba2403b 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 86b0093..bea3744 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 {