WIP: arreglar espacios al final de la linea y <i>/<b>
This commit is contained in:
parent
6489680c57
commit
792047d4c8
2 changed files with 21 additions and 3 deletions
|
@ -18,10 +18,23 @@ export interface Editor {
|
||||||
// inserta un allowedChildren[0])
|
// inserta un allowedChildren[0])
|
||||||
// * TODO: que haya una imágen sin <figure> o que no esté como bloque (se ponen
|
// * TODO: que haya una imágen sin <figure> o que no esté como bloque (se ponen
|
||||||
// después del bloque en el que están como bloque de por si)
|
// después del bloque en el que están como bloque de por si)
|
||||||
// * TODO: convierte <i> y <b> en <em> y <strong>
|
// * convierte <i> y <b> en <em> y <strong>
|
||||||
// Lo hace para que siga la estructura del documento y que no se borren por
|
// Lo hace para que siga la estructura del documento y que no se borren por
|
||||||
// cleanContent luego.
|
// cleanContent luego.
|
||||||
function fixContent (editor: Editor, node: Element = editor.contentEl): void {
|
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)
|
const _type = getType(node)
|
||||||
if (!_type) return
|
if (!_type) return
|
||||||
|
|
||||||
|
@ -55,8 +68,6 @@ function fixContent (editor: Editor, node: Element = editor.contentEl): void {
|
||||||
// * no borramos los <br> por que se requieren para que los navegadores
|
// * no borramos los <br> por que se requieren para que los navegadores
|
||||||
// funcionen bien al escribir. no se deberían mostrar de todas maneras
|
// funcionen bien al escribir. no se deberían mostrar de todas maneras
|
||||||
function cleanContent (editor: Editor, node: Element = editor.contentEl): void {
|
function cleanContent (editor: Editor, node: Element = editor.contentEl): void {
|
||||||
if (node.tagName === 'BR') return
|
|
||||||
|
|
||||||
const _type = getType(node)
|
const _type = getType(node)
|
||||||
if (!_type) {
|
if (!_type) {
|
||||||
node.parentElement?.removeChild(node)
|
node.parentElement?.removeChild(node)
|
||||||
|
@ -76,6 +87,7 @@ function cleanContent (editor: Editor, node: Element = editor.contentEl): void {
|
||||||
if (!(child instanceof Element)) continue
|
if (!(child instanceof Element)) continue
|
||||||
|
|
||||||
const childType = getType(child)
|
const childType = getType(child)
|
||||||
|
if (childType?.typeName === 'br') continue
|
||||||
if (!childType || type.allowedChildren.indexOf(childType.typeName) === -1) {
|
if (!childType || type.allowedChildren.indexOf(childType.typeName) === -1) {
|
||||||
// XXX: esto extrae las cosas de adentro para que no sea destructivo
|
// XXX: esto extrae las cosas de adentro para que no sea destructivo
|
||||||
moveChildren(child, node, child)
|
moveChildren(child, node, child)
|
||||||
|
|
|
@ -31,6 +31,12 @@ export const types: { [propName: string]: EditorNode } = {
|
||||||
handleEmpty: blocks.paragraph,
|
handleEmpty: blocks.paragraph,
|
||||||
create: () => { throw new Error('se intentó crear contentEl') }
|
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 {
|
export function getType (node: Element): { typeName: string, type: EditorNode } | null {
|
||||||
|
|
Loading…
Reference in a new issue