"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = getEntityRanges; exports.EMPTY_SET = void 0; var _immutable = require("immutable"); var EMPTY_SET = new _immutable.OrderedSet(); exports.EMPTY_SET = EMPTY_SET; 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; }