react-lz-editor
Version:
An open source react rich-text editor (mordern react editor includes media support such as texts, images, videos, audios, links etc.), development based on Draft-Js and Ant-design, good support html, markdown, draft-raw mode.
35 lines (31 loc) • 1.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = replaceTextWithMeta;
function replaceTextWithMeta(subject, searchText, replaceText) {
var text = subject.text,
characterMeta = subject.characterMeta;
var searchTextLength = searchText.length;
var replaceTextLength = replaceText.length;
var resultTextParts = [];
var resultCharMeta = characterMeta.slice(0, 0);
var lastEndIndex = 0;
var index = text.indexOf(searchText);
while (index !== -1) {
resultTextParts.push(text.slice(lastEndIndex, index) + replaceText);
resultCharMeta = resultCharMeta.concat(characterMeta.slice(lastEndIndex, index), repeatSeq(characterMeta.slice(index, index + 1), replaceTextLength));
lastEndIndex = index + searchTextLength;
index = text.indexOf(searchText, lastEndIndex);
}
resultTextParts.push(text.slice(lastEndIndex));
resultCharMeta = resultCharMeta.concat(characterMeta.slice(lastEndIndex));
return { text: resultTextParts.join(''), characterMeta: resultCharMeta };
}
function repeatSeq(seq, count) {
var result = seq.slice(0, 0);
while (count-- > 0) {
result = result.concat(seq);
}
return result;
}