Implemento el editor WYSIWYG con draftjs y tengo un conjunto de reglas para corregir la tipografía. Uso Modifier.replaceText para reemplazar lo que quiero, pero el problema es que cuando lo llamo, elimina inlineStyles en el texto reemplazado.
Aquí hay un bloque de código que uso para la tipografía. Las entradas son reglas (matriz con reglas) y editorState.
rules.forEach(({ toReplace, replace }) => { const blockToReplace = []; let contentState = editorState.getCurrentContent(); const blockMap = contentState.getBlockMap(); blockMap.forEach(contentBlock => { const text = contentBlock.getText(); let matchArr; while ((matchArr = toReplace.exec(text)) !== null) { const start = matchArr.index; const end = start + matchArr[0].length; const blockKey = contentBlock.getKey(); const blockSelection = SelectionState.createEmpty(blockKey).merge({ anchorOffset: start, focusOffset: end, }); blockToReplace.push(blockSelection); } }); blockToReplace.reverse().forEach((selectionState) => { contentState = Modifier.replaceText( contentState, selectionState, text.replace(search, replace) ); }); editorState = EditorState.push(editorState, contentState); }); Entonces, mi entrada es: *bold...*
El resultado incorrecto es: *bold*…
Debería ser: *bold…*
Nota: los asteriscos son para la designación en negrita, el cambio son tres puntos a puntos suspensivos horizontales (U+2026)
¿Alguien tiene alguna idea? Busqué en Google durante dos días y nada...