UNPKG

@wordpress/block-library

Version:
8 lines (7 loc) 4.38 kB
{ "version": 3, "sources": ["../../../../src/template-part/edit/utils/transformers.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tparse,\n\tcloneBlock,\n\tcreateBlock,\n\tgetGroupingBlockName,\n\tgetPossibleBlockTransformations,\n\tswitchToBlockType,\n} from '@wordpress/blocks';\n\n/**\n * Converts a widget entity record into a block.\n *\n * @param {Object} widget The widget entity record.\n * @return {Object} a block (converted from the entity record).\n */\nexport function transformWidgetToBlock( widget ) {\n\tif ( widget.id_base !== 'block' ) {\n\t\tlet attributes;\n\t\tif ( widget._embedded.about[ 0 ].is_multi ) {\n\t\t\tattributes = {\n\t\t\t\tidBase: widget.id_base,\n\t\t\t\tinstance: widget.instance,\n\t\t\t};\n\t\t} else {\n\t\t\tattributes = {\n\t\t\t\tid: widget.id,\n\t\t\t};\n\t\t}\n\n\t\treturn switchLegacyWidgetType(\n\t\t\tcreateBlock( 'core/legacy-widget', attributes )\n\t\t);\n\t}\n\n\tconst parsedBlocks = parse( widget.instance.raw.content, {\n\t\t__unstableSkipAutop: true,\n\t} );\n\n\tif ( ! parsedBlocks.length ) {\n\t\treturn undefined;\n\t}\n\n\tconst block = parsedBlocks[ 0 ];\n\n\tif ( block.name === 'core/widget-group' ) {\n\t\treturn createBlock(\n\t\t\tgetGroupingBlockName(),\n\t\t\tundefined,\n\t\t\ttransformInnerBlocks( block.innerBlocks )\n\t\t);\n\t}\n\n\tif ( block.innerBlocks.length > 0 ) {\n\t\treturn cloneBlock(\n\t\t\tblock,\n\t\t\tundefined,\n\t\t\ttransformInnerBlocks( block.innerBlocks )\n\t\t);\n\t}\n\n\treturn block;\n}\n\n/**\n * Switch Legacy Widget to the first matching transformation block.\n *\n * @param {Object} block Legacy Widget block object\n * @return {Object|undefined} a block\n */\nfunction switchLegacyWidgetType( block ) {\n\tconst transforms = getPossibleBlockTransformations( [ block ] ).filter(\n\t\t( item ) => {\n\t\t\t// The block without any transformations can't be a wildcard.\n\t\t\tif ( ! item.transforms ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst hasWildCardFrom = item.transforms?.from?.find(\n\t\t\t\t( from ) => from.blocks && from.blocks.includes( '*' )\n\t\t\t);\n\t\t\tconst hasWildCardTo = item.transforms?.to?.find(\n\t\t\t\t( to ) => to.blocks && to.blocks.includes( '*' )\n\t\t\t);\n\n\t\t\t// Skip wildcard transformations.\n\t\t\treturn ! hasWildCardFrom && ! hasWildCardTo;\n\t\t}\n\t);\n\n\tif ( ! transforms.length ) {\n\t\treturn undefined;\n\t}\n\n\treturn switchToBlockType( block, transforms[ 0 ].name );\n}\n\nfunction transformInnerBlocks( innerBlocks = [] ) {\n\treturn innerBlocks\n\t\t.flatMap( ( block ) => {\n\t\t\tif ( block.name === 'core/legacy-widget' ) {\n\t\t\t\treturn switchLegacyWidgetType( block );\n\t\t\t}\n\n\t\t\treturn createBlock(\n\t\t\t\tblock.name,\n\t\t\t\tblock.attributes,\n\t\t\t\ttransformInnerBlocks( block.innerBlocks )\n\t\t\t);\n\t\t} )\n\t\t.filter( ( block ) => !! block );\n}\n"], "mappings": ";AAGA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAQA,SAAS,uBAAwB,QAAS;AAChD,MAAK,OAAO,YAAY,SAAU;AACjC,QAAI;AACJ,QAAK,OAAO,UAAU,MAAO,CAAE,EAAE,UAAW;AAC3C,mBAAa;AAAA,QACZ,QAAQ,OAAO;AAAA,QACf,UAAU,OAAO;AAAA,MAClB;AAAA,IACD,OAAO;AACN,mBAAa;AAAA,QACZ,IAAI,OAAO;AAAA,MACZ;AAAA,IACD;AAEA,WAAO;AAAA,MACN,YAAa,sBAAsB,UAAW;AAAA,IAC/C;AAAA,EACD;AAEA,QAAM,eAAe,MAAO,OAAO,SAAS,IAAI,SAAS;AAAA,IACxD,qBAAqB;AAAA,EACtB,CAAE;AAEF,MAAK,CAAE,aAAa,QAAS;AAC5B,WAAO;AAAA,EACR;AAEA,QAAM,QAAQ,aAAc,CAAE;AAE9B,MAAK,MAAM,SAAS,qBAAsB;AACzC,WAAO;AAAA,MACN,qBAAqB;AAAA,MACrB;AAAA,MACA,qBAAsB,MAAM,WAAY;AAAA,IACzC;AAAA,EACD;AAEA,MAAK,MAAM,YAAY,SAAS,GAAI;AACnC,WAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA,qBAAsB,MAAM,WAAY;AAAA,IACzC;AAAA,EACD;AAEA,SAAO;AACR;AAQA,SAAS,uBAAwB,OAAQ;AACxC,QAAM,aAAa,gCAAiC,CAAE,KAAM,CAAE,EAAE;AAAA,IAC/D,CAAE,SAAU;AAEX,UAAK,CAAE,KAAK,YAAa;AACxB,eAAO;AAAA,MACR;AAEA,YAAM,kBAAkB,KAAK,YAAY,MAAM;AAAA,QAC9C,CAAE,SAAU,KAAK,UAAU,KAAK,OAAO,SAAU,GAAI;AAAA,MACtD;AACA,YAAM,gBAAgB,KAAK,YAAY,IAAI;AAAA,QAC1C,CAAE,OAAQ,GAAG,UAAU,GAAG,OAAO,SAAU,GAAI;AAAA,MAChD;AAGA,aAAO,CAAE,mBAAmB,CAAE;AAAA,IAC/B;AAAA,EACD;AAEA,MAAK,CAAE,WAAW,QAAS;AAC1B,WAAO;AAAA,EACR;AAEA,SAAO,kBAAmB,OAAO,WAAY,CAAE,EAAE,IAAK;AACvD;AAEA,SAAS,qBAAsB,cAAc,CAAC,GAAI;AACjD,SAAO,YACL,QAAS,CAAE,UAAW;AACtB,QAAK,MAAM,SAAS,sBAAuB;AAC1C,aAAO,uBAAwB,KAAM;AAAA,IACtC;AAEA,WAAO;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,qBAAsB,MAAM,WAAY;AAAA,IACzC;AAAA,EACD,CAAE,EACD,OAAQ,CAAE,UAAW,CAAC,CAAE,KAAM;AACjC;", "names": [] }