UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 4.59 kB
{ "version": 3, "sources": ["../../../src/components/rich-text/get-rich-text-values.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { RawHTML, StrictMode, Fragment } from '@wordpress/element';\nimport {\n\tgetSaveElement,\n\t__unstableGetBlockProps as getBlockProps,\n} from '@wordpress/blocks';\nimport { RichTextData } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport InnerBlocks from '../inner-blocks';\nimport { Content } from './content';\n\n/*\n * This function is similar to `@wordpress/element`'s `renderToString` function,\n * except that it does not render the elements to a string, but instead collects\n * the values of all rich text `Content` elements.\n */\nfunction addValuesForElement( element, values, innerBlocks ) {\n\tif ( null === element || undefined === element || false === element ) {\n\t\treturn;\n\t}\n\n\tif ( Array.isArray( element ) ) {\n\t\treturn addValuesForElements( element, values, innerBlocks );\n\t}\n\n\tswitch ( typeof element ) {\n\t\tcase 'string':\n\t\tcase 'number':\n\t\t\treturn;\n\t}\n\n\tconst { type, props } = element;\n\n\tswitch ( type ) {\n\t\tcase StrictMode:\n\t\tcase Fragment:\n\t\t\treturn addValuesForElements( props.children, values, innerBlocks );\n\t\tcase RawHTML:\n\t\t\treturn;\n\t\tcase InnerBlocks.Content:\n\t\t\treturn addValuesForBlocks( values, innerBlocks );\n\t\tcase Content:\n\t\t\tvalues.push( props.value );\n\t\t\treturn;\n\t}\n\n\tswitch ( typeof type ) {\n\t\tcase 'string':\n\t\t\tif ( typeof props.children !== 'undefined' ) {\n\t\t\t\treturn addValuesForElements(\n\t\t\t\t\tprops.children,\n\t\t\t\t\tvalues,\n\t\t\t\t\tinnerBlocks\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn;\n\t\tcase 'function':\n\t\t\tconst el =\n\t\t\t\ttype.prototype && typeof type.prototype.render === 'function'\n\t\t\t\t\t? new type( props ).render()\n\t\t\t\t\t: type( props );\n\t\t\treturn addValuesForElement( el, values, innerBlocks );\n\t}\n}\n\nfunction addValuesForElements( children, ...args ) {\n\tchildren = Array.isArray( children ) ? children : [ children ];\n\n\tfor ( let i = 0; i < children.length; i++ ) {\n\t\taddValuesForElement( children[ i ], ...args );\n\t}\n}\n\nfunction addValuesForBlocks( values, blocks ) {\n\tfor ( let i = 0; i < blocks.length; i++ ) {\n\t\tconst { name, attributes, innerBlocks } = blocks[ i ];\n\t\tconst saveElement = getSaveElement(\n\t\t\tname,\n\t\t\tattributes,\n\t\t\t// Instead of letting save elements use `useInnerBlocksProps.save`,\n\t\t\t// force them to use InnerBlocks.Content instead so we can intercept\n\t\t\t// a single component.\n\t\t\t<InnerBlocks.Content />\n\t\t);\n\t\taddValuesForElement( saveElement, values, innerBlocks );\n\t}\n}\n\nexport function getRichTextValues( blocks = [] ) {\n\tgetBlockProps.skipFilters = true;\n\tconst values = [];\n\taddValuesForBlocks( values, blocks );\n\tgetBlockProps.skipFilters = false;\n\treturn values.map( ( value ) =>\n\t\tvalue instanceof RichTextData\n\t\t\t? value\n\t\t\t: RichTextData.fromHTMLString( value )\n\t);\n}\n"], "mappings": ";AAGA,SAAS,SAAS,YAAY,gBAAgB;AAC9C;AAAA,EACC;AAAA,EACA,2BAA2B;AAAA,OACrB;AACP,SAAS,oBAAoB;AAK7B,OAAO,iBAAiB;AACxB,SAAS,eAAe;AAyErB;AAlEH,SAAS,oBAAqB,SAAS,QAAQ,aAAc;AAC5D,MAAK,SAAS,WAAW,WAAc,WAAW,UAAU,SAAU;AACrE;AAAA,EACD;AAEA,MAAK,MAAM,QAAS,OAAQ,GAAI;AAC/B,WAAO,qBAAsB,SAAS,QAAQ,WAAY;AAAA,EAC3D;AAEA,UAAS,OAAO,SAAU;AAAA,IACzB,KAAK;AAAA,IACL,KAAK;AACJ;AAAA,EACF;AAEA,QAAM,EAAE,MAAM,MAAM,IAAI;AAExB,UAAS,MAAO;AAAA,IACf,KAAK;AAAA,IACL,KAAK;AACJ,aAAO,qBAAsB,MAAM,UAAU,QAAQ,WAAY;AAAA,IAClE,KAAK;AACJ;AAAA,IACD,KAAK,YAAY;AAChB,aAAO,mBAAoB,QAAQ,WAAY;AAAA,IAChD,KAAK;AACJ,aAAO,KAAM,MAAM,KAAM;AACzB;AAAA,EACF;AAEA,UAAS,OAAO,MAAO;AAAA,IACtB,KAAK;AACJ,UAAK,OAAO,MAAM,aAAa,aAAc;AAC5C,eAAO;AAAA,UACN,MAAM;AAAA,UACN;AAAA,UACA;AAAA,QACD;AAAA,MACD;AACA;AAAA,IACD,KAAK;AACJ,YAAM,KACL,KAAK,aAAa,OAAO,KAAK,UAAU,WAAW,aAChD,IAAI,KAAM,KAAM,EAAE,OAAO,IACzB,KAAM,KAAM;AAChB,aAAO,oBAAqB,IAAI,QAAQ,WAAY;AAAA,EACtD;AACD;AAEA,SAAS,qBAAsB,aAAa,MAAO;AAClD,aAAW,MAAM,QAAS,QAAS,IAAI,WAAW,CAAE,QAAS;AAE7D,WAAU,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAM;AAC3C,wBAAqB,SAAU,CAAE,GAAG,GAAG,IAAK;AAAA,EAC7C;AACD;AAEA,SAAS,mBAAoB,QAAQ,QAAS;AAC7C,WAAU,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAM;AACzC,UAAM,EAAE,MAAM,YAAY,YAAY,IAAI,OAAQ,CAAE;AACpD,UAAM,cAAc;AAAA,MACnB;AAAA,MACA;AAAA;AAAA;AAAA;AAAA,MAIA,oBAAC,YAAY,SAAZ,EAAoB;AAAA,IACtB;AACA,wBAAqB,aAAa,QAAQ,WAAY;AAAA,EACvD;AACD;AAEO,SAAS,kBAAmB,SAAS,CAAC,GAAI;AAChD,gBAAc,cAAc;AAC5B,QAAM,SAAS,CAAC;AAChB,qBAAoB,QAAQ,MAAO;AACnC,gBAAc,cAAc;AAC5B,SAAO,OAAO;AAAA,IAAK,CAAE,UACpB,iBAAiB,eACd,QACA,aAAa,eAAgB,KAAM;AAAA,EACvC;AACD;", "names": [] }