@wordpress/editor
Version:
Enhanced block editor for WordPress posts.
8 lines (7 loc) • 3.58 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../src/components/template-part-menu-items/convert-to-template-part.js"],
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { MenuItem } from '@wordpress/components';\nimport { createBlock } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { symbolFilled } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { CreateTemplatePartModal } from '@wordpress/fields';\n\nexport default function ConvertToTemplatePart( { clientIds, blocks } ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\n\tconst { isBlockBasedTheme, canCreate } = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tisBlockBasedTheme:\n\t\t\t\tselect( coreStore ).getCurrentTheme()?.is_block_theme,\n\t\t\tcanCreate:\n\t\t\t\tselect( blockEditorStore ).canInsertBlockType(\n\t\t\t\t\t'core/template-part'\n\t\t\t\t),\n\t\t};\n\t}, [] );\n\n\tif ( ! isBlockBasedTheme || ! canCreate ) {\n\t\treturn null;\n\t}\n\n\tconst onConvert = async ( templatePart ) => {\n\t\treplaceBlocks(\n\t\t\tclientIds,\n\t\t\tcreateBlock( 'core/template-part', {\n\t\t\t\tslug: templatePart.slug,\n\t\t\t\ttheme: templatePart.theme,\n\t\t\t} )\n\t\t);\n\t\tcreateSuccessNotice( __( 'Template part created.' ), {\n\t\t\ttype: 'snackbar',\n\t\t} );\n\n\t\t// The modal and this component will be unmounted because of `replaceBlocks` above,\n\t\t// so no need to call `closeModal` or `onClose`.\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem\n\t\t\t\ticon={ symbolFilled }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tsetIsModalOpen( true );\n\t\t\t\t} }\n\t\t\t\taria-expanded={ isModalOpen }\n\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t>\n\t\t\t\t{ __( 'Create template part' ) }\n\t\t\t</MenuItem>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<CreateTemplatePartModal\n\t\t\t\t\tcloseModal={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t} }\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tonCreate={ onConvert }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],
"mappings": ";AAGA,SAAS,aAAa,iBAAiB;AACvC,SAAS,SAAS,wBAAwB;AAC1C,SAAS,gBAAgB;AACzB,SAAS,mBAAmB;AAC5B,SAAS,UAAU;AACnB,SAAS,gBAAgB;AACzB,SAAS,SAAS,oBAAoB;AACtC,SAAS,oBAAoB;AAC7B,SAAS,SAAS,iBAAiB;AAKnC,SAAS,+BAA+B;AAuCtC,mBACC,KADD;AArCa,SAAR,sBAAwC,EAAE,WAAW,OAAO,GAAI;AACtE,QAAM,CAAE,aAAa,cAAe,IAAI,SAAU,KAAM;AACxD,QAAM,EAAE,cAAc,IAAI,YAAa,gBAAiB;AACxD,QAAM,EAAE,oBAAoB,IAAI,YAAa,YAAa;AAE1D,QAAM,EAAE,mBAAmB,UAAU,IAAI,UAAW,CAAE,WAAY;AACjE,WAAO;AAAA,MACN,mBACC,OAAQ,SAAU,EAAE,gBAAgB,GAAG;AAAA,MACxC,WACC,OAAQ,gBAAiB,EAAE;AAAA,QAC1B;AAAA,MACD;AAAA,IACF;AAAA,EACD,GAAG,CAAC,CAAE;AAEN,MAAK,CAAE,qBAAqB,CAAE,WAAY;AACzC,WAAO;AAAA,EACR;AAEA,QAAM,YAAY,OAAQ,iBAAkB;AAC3C;AAAA,MACC;AAAA,MACA,YAAa,sBAAsB;AAAA,QAClC,MAAM,aAAa;AAAA,QACnB,OAAO,aAAa;AAAA,MACrB,CAAE;AAAA,IACH;AACA,wBAAqB,GAAI,wBAAyB,GAAG;AAAA,MACpD,MAAM;AAAA,IACP,CAAE;AAAA,EAIH;AAEA,SACC,iCACC;AAAA;AAAA,MAAC;AAAA;AAAA,QACA,MAAO;AAAA,QACP,SAAU,MAAM;AACf,yBAAgB,IAAK;AAAA,QACtB;AAAA,QACA,iBAAgB;AAAA,QAChB,iBAAc;AAAA,QAEZ,aAAI,sBAAuB;AAAA;AAAA,IAC9B;AAAA,IACE,eACD;AAAA,MAAC;AAAA;AAAA,QACA,YAAa,MAAM;AAClB,yBAAgB,KAAM;AAAA,QACvB;AAAA,QACA;AAAA,QACA,UAAW;AAAA;AAAA,IACZ;AAAA,KAEF;AAEF;",
"names": []
}