{
  "version": 3,
  "sources": ["../src/to-html-string.js"],
  "sourcesContent": ["/**\n * WordPress dependencies\n */\n\nimport {\n\tescapeEditableHTML,\n\tescapeAttribute,\n\tisValidAttributeName,\n} from '@wordpress/escape-html';\n\n/**\n * Internal dependencies\n */\n\nimport { toTree } from './to-tree';\n\n/** @typedef {import('./types').RichTextValue} RichTextValue */\n\n/**\n * Create an HTML string from a Rich Text value.\n *\n * @param {Object}        $1                      Named arguments.\n * @param {RichTextValue} $1.value                Rich text value.\n * @param {boolean}       [$1.preserveWhiteSpace] Preserves newlines if true.\n *\n * @return {string} HTML string.\n */\nexport function toHTMLString( { value, preserveWhiteSpace } ) {\n\tconst tree = toTree( {\n\t\tvalue,\n\t\tpreserveWhiteSpace,\n\t\tcreateEmpty,\n\t\tappend,\n\t\tgetLastChild,\n\t\tgetParent,\n\t\tisText,\n\t\tgetText,\n\t\tremove,\n\t\tappendText,\n\t} );\n\n\treturn createChildrenHTML( tree.children );\n}\n\nfunction createEmpty() {\n\treturn {};\n}\n\nfunction getLastChild( { children } ) {\n\treturn children && children[ children.length - 1 ];\n}\n\nfunction append( parent, object ) {\n\tif ( typeof object === 'string' ) {\n\t\tobject = { text: object };\n\t}\n\n\tobject.parent = parent;\n\tparent.children = parent.children || [];\n\tparent.children.push( object );\n\treturn object;\n}\n\nfunction appendText( object, text ) {\n\tobject.text += text;\n}\n\nfunction getParent( { parent } ) {\n\treturn parent;\n}\n\nfunction isText( { text } ) {\n\treturn typeof text === 'string';\n}\n\nfunction getText( { text } ) {\n\treturn text;\n}\n\nfunction remove( object ) {\n\tconst index = object.parent.children.indexOf( object );\n\n\tif ( index !== -1 ) {\n\t\tobject.parent.children.splice( index, 1 );\n\t}\n\n\treturn object;\n}\n\nfunction createElementHTML( { type, attributes, object, children } ) {\n\tif ( type === '#comment' ) {\n\t\t// We can't restore the original comment delimiters, because once parsed\n\t\t// into DOM nodes, we don't have the information. But in the future we\n\t\t// could allow comment handlers to specify custom delimiters, for\n\t\t// example `</{comment-content}>` for Bits, where `comment-content`\n\t\t// would be `/{bit-name}` or `__{translatable-string}` (TBD).\n\t\treturn `<!--${ attributes[ 'data-rich-text-comment' ] }-->`;\n\t}\n\n\tlet attributeString = '';\n\n\tfor ( const key in attributes ) {\n\t\tif ( ! isValidAttributeName( key ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tattributeString += ` ${ key }=\"${ escapeAttribute(\n\t\t\tattributes[ key ]\n\t\t) }\"`;\n\t}\n\n\tif ( object ) {\n\t\treturn `<${ type }${ attributeString }>`;\n\t}\n\n\treturn `<${ type }${ attributeString }>${ createChildrenHTML(\n\t\tchildren\n\t) }</${ type }>`;\n}\n\nfunction createChildrenHTML( children = [] ) {\n\treturn children\n\t\t.map( ( child ) => {\n\t\t\tif ( child.html !== undefined ) {\n\t\t\t\treturn child.html;\n\t\t\t}\n\n\t\t\treturn child.text === undefined\n\t\t\t\t? createElementHTML( child )\n\t\t\t\t: escapeEditableHTML( child.text );\n\t\t} )\n\t\t.join( '' );\n}\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,yBAIO;AAMP,qBAAuB;AAahB,SAAS,aAAc,EAAE,OAAO,mBAAmB,GAAI;AAC7D,QAAM,WAAO,uBAAQ;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAE;AAEF,SAAO,mBAAoB,KAAK,QAAS;AAC1C;AAEA,SAAS,cAAc;AACtB,SAAO,CAAC;AACT;AAEA,SAAS,aAAc,EAAE,SAAS,GAAI;AACrC,SAAO,YAAY,SAAU,SAAS,SAAS,CAAE;AAClD;AAEA,SAAS,OAAQ,QAAQ,QAAS;AACjC,MAAK,OAAO,WAAW,UAAW;AACjC,aAAS,EAAE,MAAM,OAAO;AAAA,EACzB;AAEA,SAAO,SAAS;AAChB,SAAO,WAAW,OAAO,YAAY,CAAC;AACtC,SAAO,SAAS,KAAM,MAAO;AAC7B,SAAO;AACR;AAEA,SAAS,WAAY,QAAQ,MAAO;AACnC,SAAO,QAAQ;AAChB;AAEA,SAAS,UAAW,EAAE,OAAO,GAAI;AAChC,SAAO;AACR;AAEA,SAAS,OAAQ,EAAE,KAAK,GAAI;AAC3B,SAAO,OAAO,SAAS;AACxB;AAEA,SAAS,QAAS,EAAE,KAAK,GAAI;AAC5B,SAAO;AACR;AAEA,SAAS,OAAQ,QAAS;AACzB,QAAM,QAAQ,OAAO,OAAO,SAAS,QAAS,MAAO;AAErD,MAAK,UAAU,IAAK;AACnB,WAAO,OAAO,SAAS,OAAQ,OAAO,CAAE;AAAA,EACzC;AAEA,SAAO;AACR;AAEA,SAAS,kBAAmB,EAAE,MAAM,YAAY,QAAQ,SAAS,GAAI;AACpE,MAAK,SAAS,YAAa;AAM1B,WAAO,OAAQ,WAAY,wBAAyB,CAAE;AAAA,EACvD;AAEA,MAAI,kBAAkB;AAEtB,aAAY,OAAO,YAAa;AAC/B,QAAK,KAAE,yCAAsB,GAAI,GAAI;AACpC;AAAA,IACD;AAEA,uBAAmB,IAAK,GAAI,SAAM;AAAA,MACjC,WAAY,GAAI;AAAA,IACjB,CAAE;AAAA,EACH;AAEA,MAAK,QAAS;AACb,WAAO,IAAK,IAAK,GAAI,eAAgB;AAAA,EACtC;AAEA,SAAO,IAAK,IAAK,GAAI,eAAgB,IAAK;AAAA,IACzC;AAAA,EACD,CAAE,KAAM,IAAK;AACd;AAEA,SAAS,mBAAoB,WAAW,CAAC,GAAI;AAC5C,SAAO,SACL,IAAK,CAAE,UAAW;AAClB,QAAK,MAAM,SAAS,QAAY;AAC/B,aAAO,MAAM;AAAA,IACd;AAEA,WAAO,MAAM,SAAS,SACnB,kBAAmB,KAAM,QACzB,uCAAoB,MAAM,IAAK;AAAA,EACnC,CAAE,EACD,KAAM,EAAG;AACZ;",
  "names": []
}
