UNPKG

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.

47 lines (42 loc) 1.44 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.EMPTY_SET = undefined; exports.default = getEntityRanges; var _immutable = require('immutable'); var EMPTY_SET = exports.EMPTY_SET = new _immutable.OrderedSet(); function getEntityRanges(text, charMetaList) { var charEntity = null; var prevCharEntity = null; var ranges = []; var rangeStart = 0; for (var i = 0, len = text.length; i < len; i++) { prevCharEntity = charEntity; var meta = charMetaList.get(i); charEntity = meta ? meta.getEntity() : null; if (i > 0 && charEntity !== prevCharEntity) { ranges.push([prevCharEntity, getStyleRanges(text.slice(rangeStart, i), charMetaList.slice(rangeStart, i))]); rangeStart = i; } } ranges.push([charEntity, getStyleRanges(text.slice(rangeStart), charMetaList.slice(rangeStart))]); return ranges; } function getStyleRanges(text, charMetaList) { var charStyle = EMPTY_SET; var prevCharStyle = EMPTY_SET; var ranges = []; var rangeStart = 0; for (var i = 0, len = text.length; i < len; i++) { prevCharStyle = charStyle; var meta = charMetaList.get(i); charStyle = meta ? meta.getStyle() : EMPTY_SET; if (i > 0 && !(0, _immutable.is)(charStyle, prevCharStyle)) { ranges.push([text.slice(rangeStart, i), prevCharStyle]); rangeStart = i; } } ranges.push([text.slice(rangeStart), charStyle]); return ranges; }