"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.insert = insert; var _create = require("./create"); var _normaliseFormats = require("./normalise-formats"); /** * Internal dependencies */ /** @typedef {import('./types').RichTextValue} RichTextValue */ /** * Insert a Rich Text value, an HTML string, or a plain text string, into a * Rich Text value at the given `startIndex`. Any content between `startIndex` * and `endIndex` will be removed. Indices are retrieved from the selection if * none are provided. * * @param {RichTextValue} value Value to modify. * @param {RichTextValue|string} valueToInsert Value to insert. * @param {number} [startIndex] Start index. * @param {number} [endIndex] End index. * * @return {RichTextValue} A new value with the value inserted. */ function insert(value, valueToInsert, startIndex = value.start, endIndex = value.end) { const { formats, replacements, text } = value; if (typeof valueToInsert === 'string') { valueToInsert = (0, _create.create)({ text: valueToInsert }); } const index = startIndex + valueToInsert.text.length; return (0, _normaliseFormats.normaliseFormats)({ formats: formats.slice(0, startIndex).concat(valueToInsert.formats, formats.slice(endIndex)), replacements: replacements.slice(0, startIndex).concat(valueToInsert.replacements, replacements.slice(endIndex)), text: text.slice(0, startIndex) + valueToInsert.text + text.slice(endIndex), start: index, end: index }); } //# sourceMappingURL=insert.js.map