@wordpress/editor
Version:
Enhanced block editor for WordPress posts.
8 lines (7 loc) • 3.62 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": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAuC;AACvC,0BAA0C;AAC1C,wBAAyB;AACzB,oBAA4B;AAC5B,kBAAmB;AACnB,qBAAyB;AACzB,qBAAsC;AACtC,mBAA6B;AAC7B,uBAAmC;AAKnC,oBAAwC;AAuCtC;AArCa,SAAR,sBAAwC,EAAE,WAAW,OAAO,GAAI;AACtE,QAAM,CAAE,aAAa,cAAe,QAAI,yBAAU,KAAM;AACxD,QAAM,EAAE,cAAc,QAAI,yBAAa,oBAAAA,KAAiB;AACxD,QAAM,EAAE,oBAAoB,QAAI,yBAAa,eAAAC,KAAa;AAE1D,QAAM,EAAE,mBAAmB,UAAU,QAAI,uBAAW,CAAE,WAAY;AACjE,WAAO;AAAA,MACN,mBACC,OAAQ,iBAAAC,KAAU,EAAE,gBAAgB,GAAG;AAAA,MACxC,WACC,OAAQ,oBAAAF,KAAiB,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,UACA,2BAAa,sBAAsB;AAAA,QAClC,MAAM,aAAa;AAAA,QACnB,OAAO,aAAa;AAAA,MACrB,CAAE;AAAA,IACH;AACA,4BAAqB,gBAAI,wBAAyB,GAAG;AAAA,MACpD,MAAM;AAAA,IACP,CAAE;AAAA,EAIH;AAEA,SACC,4EACC;AAAA;AAAA,MAAC;AAAA;AAAA,QACA,MAAO;AAAA,QACP,SAAU,MAAM;AACf,yBAAgB,IAAK;AAAA,QACtB;AAAA,QACA,iBAAgB;AAAA,QAChB,iBAAc;AAAA,QAEZ,8BAAI,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": ["blockEditorStore", "noticesStore", "coreStore"]
}