{
  "version": 3,
  "sources": ["../src/update-formats.js"],
  "sourcesContent": ["/**\n * Internal dependencies\n */\n\nimport { isFormatEqual } from './is-format-equal';\n\n/** @typedef {import('./types').RichTextValue} RichTextValue */\n\n/**\n * Efficiently updates all the formats from `start` (including) until `end`\n * (excluding) with the active formats. Mutates `value`.\n *\n * @param {Object}        $1         Named paramentes.\n * @param {RichTextValue} $1.value   Value te update.\n * @param {number}        $1.start   Index to update from.\n * @param {number}        $1.end     Index to update until.\n * @param {Array}         $1.formats Replacement formats.\n *\n * @return {RichTextValue} Mutated value.\n */\nexport function updateFormats( { value, start, end, formats } ) {\n\t// Start and end may be switched in case of delete.\n\tconst min = Math.min( start, end );\n\tconst max = Math.max( start, end );\n\tconst formatsBefore = value.formats[ min - 1 ] || [];\n\tconst formatsAfter = value.formats[ max ] || [];\n\n\t// First, fix the references. If any format right before or after are\n\t// equal, the replacement format should use the same reference.\n\tvalue.activeFormats = formats.map( ( format, index ) => {\n\t\tif ( formatsBefore[ index ] ) {\n\t\t\tif ( isFormatEqual( format, formatsBefore[ index ] ) ) {\n\t\t\t\treturn formatsBefore[ index ];\n\t\t\t}\n\t\t} else if ( formatsAfter[ index ] ) {\n\t\t\tif ( isFormatEqual( format, formatsAfter[ index ] ) ) {\n\t\t\t\treturn formatsAfter[ index ];\n\t\t\t}\n\t\t}\n\n\t\treturn format;\n\t} );\n\n\twhile ( --end >= start ) {\n\t\tif ( value.activeFormats.length > 0 ) {\n\t\t\tvalue.formats[ end ] = value.activeFormats;\n\t\t} else {\n\t\t\tdelete value.formats[ end ];\n\t\t}\n\t}\n\n\treturn value;\n}\n"],
  "mappings": ";AAIA,SAAS,qBAAqB;AAgBvB,SAAS,cAAe,EAAE,OAAO,OAAO,KAAK,QAAQ,GAAI;AAE/D,QAAM,MAAM,KAAK,IAAK,OAAO,GAAI;AACjC,QAAM,MAAM,KAAK,IAAK,OAAO,GAAI;AACjC,QAAM,gBAAgB,MAAM,QAAS,MAAM,CAAE,KAAK,CAAC;AACnD,QAAM,eAAe,MAAM,QAAS,GAAI,KAAK,CAAC;AAI9C,QAAM,gBAAgB,QAAQ,IAAK,CAAE,QAAQ,UAAW;AACvD,QAAK,cAAe,KAAM,GAAI;AAC7B,UAAK,cAAe,QAAQ,cAAe,KAAM,CAAE,GAAI;AACtD,eAAO,cAAe,KAAM;AAAA,MAC7B;AAAA,IACD,WAAY,aAAc,KAAM,GAAI;AACnC,UAAK,cAAe,QAAQ,aAAc,KAAM,CAAE,GAAI;AACrD,eAAO,aAAc,KAAM;AAAA,MAC5B;AAAA,IACD;AAEA,WAAO;AAAA,EACR,CAAE;AAEF,SAAQ,EAAE,OAAO,OAAQ;AACxB,QAAK,MAAM,cAAc,SAAS,GAAI;AACrC,YAAM,QAAS,GAAI,IAAI,MAAM;AAAA,IAC9B,OAAO;AACN,aAAO,MAAM,QAAS,GAAI;AAAA,IAC3B;AAAA,EACD;AAEA,SAAO;AACR;",
  "names": []
}
