import { HIGHLIGHT_PRE_TAG, HIGHLIGHT_POST_TAG } from '../constants'; /** * Creates a data structure that allows to concatenate similar highlighting * parts in a single value. */ function createAttributeSet() { var initialValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var value = initialValue; return { get: function get() { return value; }, add: function add(part) { var lastPart = value[value.length - 1]; if ((lastPart === null || lastPart === void 0 ? void 0 : lastPart.isHighlighted) === part.isHighlighted) { value[value.length - 1] = { value: lastPart.value + part.value, isHighlighted: lastPart.isHighlighted }; } else { value.push(part); } } }; } export function parseAttribute(_ref) { var highlightedValue = _ref.highlightedValue; var preTagParts = highlightedValue.split(HIGHLIGHT_PRE_TAG); var firstValue = preTagParts.shift(); var parts = createAttributeSet(firstValue ? [{ value: firstValue, isHighlighted: false }] : []); preTagParts.forEach(function (part) { var postTagParts = part.split(HIGHLIGHT_POST_TAG); parts.add({ value: postTagParts[0], isHighlighted: true }); if (postTagParts[1] !== '') { parts.add({ value: postTagParts[1], isHighlighted: false }); } }); return parts.get(); }