@wordpress/reusable-blocks 3.0.7 → 3.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. package/build/components/reusable-blocks-menu-items/index.js +5 -4
  2. package/build/components/reusable-blocks-menu-items/index.js.map +1 -1
  3. package/build/components/reusable-blocks-menu-items/reusable-block-convert-button.js +48 -44
  4. package/build/components/reusable-blocks-menu-items/reusable-block-convert-button.js.map +1 -1
  5. package/build/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js +4 -3
  6. package/build/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js.map +1 -1
  7. package/build/store/actions.js +14 -11
  8. package/build/store/actions.js.map +1 -1
  9. package/build/store/index.js +4 -2
  10. package/build/store/index.js.map +1 -1
  11. package/build/store/reducer.js +5 -2
  12. package/build/store/reducer.js.map +1 -1
  13. package/build-module/components/reusable-blocks-menu-items/index.js +5 -4
  14. package/build-module/components/reusable-blocks-menu-items/index.js.map +1 -1
  15. package/build-module/components/reusable-blocks-menu-items/reusable-block-convert-button.js +48 -44
  16. package/build-module/components/reusable-blocks-menu-items/reusable-block-convert-button.js.map +1 -1
  17. package/build-module/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js +4 -3
  18. package/build-module/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js.map +1 -1
  19. package/build-module/store/actions.js +13 -10
  20. package/build-module/store/actions.js.map +1 -1
  21. package/build-module/store/reducer.js +4 -1
  22. package/build-module/store/reducer.js.map +1 -1
  23. package/package.json +13 -13
@@ -24,10 +24,11 @@ var _reusableBlocksManageButton = _interopRequireDefault(require("./reusable-blo
24
24
  /**
25
25
  * Internal dependencies
26
26
  */
27
- function ReusableBlocksMenuItems({
28
- clientIds,
29
- rootClientId
30
- }) {
27
+ function ReusableBlocksMenuItems(_ref) {
28
+ let {
29
+ clientIds,
30
+ rootClientId
31
+ } = _ref;
31
32
  return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_reusableBlockConvertButton.default, {
32
33
  clientIds: clientIds,
33
34
  rootClientId: rootClientId
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/index.js"],"names":["ReusableBlocksMenuItems","clientIds","rootClientId","length","select","getSelectedBlockClientIds","blockEditorStore"],"mappings":";;;;;;;;;;;AAGA;;AACA;;AAKA;;AACA;;AAVA;AACA;AACA;;AAIA;AACA;AACA;AAIA,SAASA,uBAAT,CAAkC;AAAEC,EAAAA,SAAF;AAAaC,EAAAA;AAAb,CAAlC,EAAgE;AAC/D,SACC,qDACC,4BAAC,mCAAD;AACC,IAAA,SAAS,EAAGD,SADb;AAEC,IAAA,YAAY,EAAGC;AAFhB,IADD,EAKGD,SAAS,CAACE,MAAV,KAAqB,CAArB,IACD,4BAAC,mCAAD;AAA4B,IAAA,QAAQ,EAAGF,SAAS,CAAE,CAAF;AAAhD,IANF,CADD;AAWA;;eAEc,sBAAcG,MAAF,IAAc;AACxC,QAAM;AAAEC,IAAAA;AAAF,MAAgCD,MAAM,CAAEE,kBAAF,CAA5C;AACA,SAAO;AACNL,IAAAA,SAAS,EAAEI,yBAAyB;AAD9B,GAAP;AAGA,CALc,EAKVL,uBALU,C","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { withSelect } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport ReusableBlockConvertButton from './reusable-block-convert-button';\nimport ReusableBlocksManageButton from './reusable-blocks-manage-button';\n\nfunction ReusableBlocksMenuItems( { clientIds, rootClientId } ) {\n\treturn (\n\t\t<>\n\t\t\t<ReusableBlockConvertButton\n\t\t\t\tclientIds={ clientIds }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t/>\n\t\t\t{ clientIds.length === 1 && (\n\t\t\t\t<ReusableBlocksManageButton clientId={ clientIds[ 0 ] } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default withSelect( ( select ) => {\n\tconst { getSelectedBlockClientIds } = select( blockEditorStore );\n\treturn {\n\t\tclientIds: getSelectedBlockClientIds(),\n\t};\n} )( ReusableBlocksMenuItems );\n"]}
1
+ {"version":3,"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/index.js"],"names":["ReusableBlocksMenuItems","clientIds","rootClientId","length","select","getSelectedBlockClientIds","blockEditorStore"],"mappings":";;;;;;;;;;;AAGA;;AACA;;AAKA;;AACA;;AAVA;AACA;AACA;;AAIA;AACA;AACA;AAIA,SAASA,uBAAT,OAAgE;AAAA,MAA9B;AAAEC,IAAAA,SAAF;AAAaC,IAAAA;AAAb,GAA8B;AAC/D,SACC,qDACC,4BAAC,mCAAD;AACC,IAAA,SAAS,EAAGD,SADb;AAEC,IAAA,YAAY,EAAGC;AAFhB,IADD,EAKGD,SAAS,CAACE,MAAV,KAAqB,CAArB,IACD,4BAAC,mCAAD;AAA4B,IAAA,QAAQ,EAAGF,SAAS,CAAE,CAAF;AAAhD,IANF,CADD;AAWA;;eAEc,sBAAcG,MAAF,IAAc;AACxC,QAAM;AAAEC,IAAAA;AAAF,MAAgCD,MAAM,CAAEE,kBAAF,CAA5C;AACA,SAAO;AACNL,IAAAA,SAAS,EAAEI,yBAAyB;AAD9B,GAAP;AAGA,CALc,EAKVL,uBALU,C","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { withSelect } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport ReusableBlockConvertButton from './reusable-block-convert-button';\nimport ReusableBlocksManageButton from './reusable-blocks-manage-button';\n\nfunction ReusableBlocksMenuItems( { clientIds, rootClientId } ) {\n\treturn (\n\t\t<>\n\t\t\t<ReusableBlockConvertButton\n\t\t\t\tclientIds={ clientIds }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t/>\n\t\t\t{ clientIds.length === 1 && (\n\t\t\t\t<ReusableBlocksManageButton clientId={ clientIds[ 0 ] } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default withSelect( ( select ) => {\n\tconst { getSelectedBlockClientIds } = select( blockEditorStore );\n\treturn {\n\t\tclientIds: getSelectedBlockClientIds(),\n\t};\n} )( ReusableBlocksMenuItems );\n"]}
@@ -41,10 +41,11 @@ var _store = require("../../store");
41
41
  * @param {string} props.rootClientId ID of the currently selected top-level block.
42
42
  * @return {import('@wordpress/element').WPComponent} The menu control or null.
43
43
  */
44
- function ReusableBlockConvertButton({
45
- clientIds,
46
- rootClientId
47
- }) {
44
+ function ReusableBlockConvertButton(_ref) {
45
+ let {
46
+ clientIds,
47
+ rootClientId
48
+ } = _ref;
48
49
  const [isModalOpen, setIsModalOpen] = (0, _element.useState)(false);
49
50
  const [title, setTitle] = (0, _element.useState)('');
50
51
  const canConvert = (0, _data.useSelect)(select => {
@@ -94,45 +95,48 @@ function ReusableBlockConvertButton({
94
95
  return null;
95
96
  }
96
97
 
97
- return (0, _element.createElement)(_blockEditor.BlockSettingsMenuControls, null, ({
98
- onClose
99
- }) => (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.MenuItem, {
100
- icon: _icons.reusableBlock,
101
- onClick: () => {
102
- setIsModalOpen(true);
103
- }
104
- }, (0, _i18n.__)('Add to Reusable blocks')), isModalOpen && (0, _element.createElement)(_components.Modal, {
105
- title: (0, _i18n.__)('Create Reusable block'),
106
- closeLabel: (0, _i18n.__)('Close'),
107
- onRequestClose: () => {
108
- setIsModalOpen(false);
109
- setTitle('');
110
- },
111
- overlayClassName: "reusable-blocks-menu-items__convert-modal"
112
- }, (0, _element.createElement)("form", {
113
- onSubmit: event => {
114
- event.preventDefault();
115
- onConvert(title);
116
- setIsModalOpen(false);
117
- setTitle('');
118
- onClose();
119
- }
120
- }, (0, _element.createElement)(_components.TextControl, {
121
- label: (0, _i18n.__)('Name'),
122
- value: title,
123
- onChange: setTitle
124
- }), (0, _element.createElement)(_components.Flex, {
125
- className: "reusable-blocks-menu-items__convert-modal-actions",
126
- justify: "flex-end"
127
- }, (0, _element.createElement)(_components.FlexItem, null, (0, _element.createElement)(_components.Button, {
128
- variant: "secondary",
129
- onClick: () => {
130
- setIsModalOpen(false);
131
- setTitle('');
132
- }
133
- }, (0, _i18n.__)('Cancel'))), (0, _element.createElement)(_components.FlexItem, null, (0, _element.createElement)(_components.Button, {
134
- variant: "primary",
135
- type: "submit"
136
- }, (0, _i18n.__)('Save'))))))));
98
+ return (0, _element.createElement)(_blockEditor.BlockSettingsMenuControls, null, _ref2 => {
99
+ let {
100
+ onClose
101
+ } = _ref2;
102
+ return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.MenuItem, {
103
+ icon: _icons.reusableBlock,
104
+ onClick: () => {
105
+ setIsModalOpen(true);
106
+ }
107
+ }, (0, _i18n.__)('Add to Reusable blocks')), isModalOpen && (0, _element.createElement)(_components.Modal, {
108
+ title: (0, _i18n.__)('Create Reusable block'),
109
+ closeLabel: (0, _i18n.__)('Close'),
110
+ onRequestClose: () => {
111
+ setIsModalOpen(false);
112
+ setTitle('');
113
+ },
114
+ overlayClassName: "reusable-blocks-menu-items__convert-modal"
115
+ }, (0, _element.createElement)("form", {
116
+ onSubmit: event => {
117
+ event.preventDefault();
118
+ onConvert(title);
119
+ setIsModalOpen(false);
120
+ setTitle('');
121
+ onClose();
122
+ }
123
+ }, (0, _element.createElement)(_components.TextControl, {
124
+ label: (0, _i18n.__)('Name'),
125
+ value: title,
126
+ onChange: setTitle
127
+ }), (0, _element.createElement)(_components.Flex, {
128
+ className: "reusable-blocks-menu-items__convert-modal-actions",
129
+ justify: "flex-end"
130
+ }, (0, _element.createElement)(_components.FlexItem, null, (0, _element.createElement)(_components.Button, {
131
+ variant: "secondary",
132
+ onClick: () => {
133
+ setIsModalOpen(false);
134
+ setTitle('');
135
+ }
136
+ }, (0, _i18n.__)('Cancel'))), (0, _element.createElement)(_components.FlexItem, null, (0, _element.createElement)(_components.Button, {
137
+ variant: "primary",
138
+ type: "submit"
139
+ }, (0, _i18n.__)('Save')))))));
140
+ });
137
141
  }
138
142
  //# sourceMappingURL=reusable-block-convert-button.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-block-convert-button.js"],"names":["ReusableBlockConvertButton","clientIds","rootClientId","isModalOpen","setIsModalOpen","title","setTitle","canConvert","select","canUser","coreStore","getBlocksByClientId","canInsertBlockType","blockEditorStore","blocks","isReusable","length","getEntityRecord","attributes","ref","_canConvert","every","block","isValid","name","__experimentalConvertBlocksToReusable","convertBlocksToReusable","store","createSuccessNotice","createErrorNotice","noticesStore","onConvert","reusableBlockTitle","type","error","message","onClose","reusableBlock","event","preventDefault"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { hasBlockSupport, isReusableBlock } from '@wordpress/blocks';\nimport {\n\tBlockSettingsMenuControls,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useCallback, useState } from '@wordpress/element';\nimport {\n\tMenuItem,\n\tModal,\n\tButton,\n\tTextControl,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { reusableBlock } from '@wordpress/icons';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store } from '../../store';\n\n/**\n * Menu control to convert block(s) to reusable block.\n *\n * @param {Object} props Component props.\n * @param {string[]} props.clientIds Client ids of selected blocks.\n * @param {string} props.rootClientId ID of the currently selected top-level block.\n * @return {import('@wordpress/element').WPComponent} The menu control or null.\n */\nexport default function ReusableBlockConvertButton( {\n\tclientIds,\n\trootClientId,\n} ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst [ title, setTitle ] = useState( '' );\n\tconst canConvert = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst { getBlocksByClientId, canInsertBlockType } = select(\n\t\t\t\tblockEditorStore\n\t\t\t);\n\n\t\t\tconst blocks = getBlocksByClientId( clientIds ) ?? [];\n\n\t\t\tconst isReusable =\n\t\t\t\tblocks.length === 1 &&\n\t\t\t\tblocks[ 0 ] &&\n\t\t\t\tisReusableBlock( blocks[ 0 ] ) &&\n\t\t\t\t!! select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblocks[ 0 ].attributes.ref\n\t\t\t\t);\n\n\t\t\tconst _canConvert =\n\t\t\t\t// Hide when this is already a reusable block.\n\t\t\t\t! isReusable &&\n\t\t\t\t// Hide when reusable blocks are disabled.\n\t\t\t\tcanInsertBlockType( 'core/block', rootClientId ) &&\n\t\t\t\tblocks.every(\n\t\t\t\t\t( block ) =>\n\t\t\t\t\t\t// Guard against the case where a regular block has *just* been converted.\n\t\t\t\t\t\t!! block &&\n\t\t\t\t\t\t// Hide on invalid blocks.\n\t\t\t\t\t\tblock.isValid &&\n\t\t\t\t\t\t// Hide when block doesn't support being made reusable.\n\t\t\t\t\t\thasBlockSupport( block.name, 'reusable', true )\n\t\t\t\t) &&\n\t\t\t\t// Hide when current doesn't have permission to do that.\n\t\t\t\t!! canUser( 'create', 'blocks' );\n\n\t\t\treturn _canConvert;\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst {\n\t\t__experimentalConvertBlocksToReusable: convertBlocksToReusable,\n\t} = useDispatch( store );\n\n\tconst { createSuccessNotice, createErrorNotice } = useDispatch(\n\t\tnoticesStore\n\t);\n\tconst onConvert = useCallback(\n\t\tasync function ( reusableBlockTitle ) {\n\t\t\ttry {\n\t\t\t\tawait convertBlocksToReusable( clientIds, reusableBlockTitle );\n\t\t\t\tcreateSuccessNotice( __( 'Reusable block created.' ), {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t} catch ( error ) {\n\t\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tif ( ! canConvert ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSettingsMenuControls>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\ticon={ reusableBlock }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetIsModalOpen( true );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Add to Reusable blocks' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t\t{ isModalOpen && (\n\t\t\t\t\t\t<Modal\n\t\t\t\t\t\t\ttitle={ __( 'Create Reusable block' ) }\n\t\t\t\t\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\t\t\t\t\tonRequestClose={ () => {\n\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\toverlayClassName=\"reusable-blocks-menu-items__convert-modal\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<form\n\t\t\t\t\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\tonConvert( title );\n\t\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\tclassName=\"reusable-blocks-menu-items__convert-modal-actions\"\n\t\t\t\t\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t\t\t<Button variant=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t</Modal>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</BlockSettingsMenuControls>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-block-convert-button.js"],"names":["ReusableBlockConvertButton","clientIds","rootClientId","isModalOpen","setIsModalOpen","title","setTitle","canConvert","select","canUser","coreStore","getBlocksByClientId","canInsertBlockType","blockEditorStore","blocks","isReusable","length","getEntityRecord","attributes","ref","_canConvert","every","block","isValid","name","__experimentalConvertBlocksToReusable","convertBlocksToReusable","store","createSuccessNotice","createErrorNotice","noticesStore","onConvert","reusableBlockTitle","type","error","message","onClose","reusableBlock","event","preventDefault"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { hasBlockSupport, isReusableBlock } from '@wordpress/blocks';\nimport {\n\tBlockSettingsMenuControls,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useCallback, useState } from '@wordpress/element';\nimport {\n\tMenuItem,\n\tModal,\n\tButton,\n\tTextControl,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { reusableBlock } from '@wordpress/icons';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store } from '../../store';\n\n/**\n * Menu control to convert block(s) to reusable block.\n *\n * @param {Object} props Component props.\n * @param {string[]} props.clientIds Client ids of selected blocks.\n * @param {string} props.rootClientId ID of the currently selected top-level block.\n * @return {import('@wordpress/element').WPComponent} The menu control or null.\n */\nexport default function ReusableBlockConvertButton( {\n\tclientIds,\n\trootClientId,\n} ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst [ title, setTitle ] = useState( '' );\n\tconst canConvert = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst { getBlocksByClientId, canInsertBlockType } = select(\n\t\t\t\tblockEditorStore\n\t\t\t);\n\n\t\t\tconst blocks = getBlocksByClientId( clientIds ) ?? [];\n\n\t\t\tconst isReusable =\n\t\t\t\tblocks.length === 1 &&\n\t\t\t\tblocks[ 0 ] &&\n\t\t\t\tisReusableBlock( blocks[ 0 ] ) &&\n\t\t\t\t!! select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblocks[ 0 ].attributes.ref\n\t\t\t\t);\n\n\t\t\tconst _canConvert =\n\t\t\t\t// Hide when this is already a reusable block.\n\t\t\t\t! isReusable &&\n\t\t\t\t// Hide when reusable blocks are disabled.\n\t\t\t\tcanInsertBlockType( 'core/block', rootClientId ) &&\n\t\t\t\tblocks.every(\n\t\t\t\t\t( block ) =>\n\t\t\t\t\t\t// Guard against the case where a regular block has *just* been converted.\n\t\t\t\t\t\t!! block &&\n\t\t\t\t\t\t// Hide on invalid blocks.\n\t\t\t\t\t\tblock.isValid &&\n\t\t\t\t\t\t// Hide when block doesn't support being made reusable.\n\t\t\t\t\t\thasBlockSupport( block.name, 'reusable', true )\n\t\t\t\t) &&\n\t\t\t\t// Hide when current doesn't have permission to do that.\n\t\t\t\t!! canUser( 'create', 'blocks' );\n\n\t\t\treturn _canConvert;\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst {\n\t\t__experimentalConvertBlocksToReusable: convertBlocksToReusable,\n\t} = useDispatch( store );\n\n\tconst { createSuccessNotice, createErrorNotice } = useDispatch(\n\t\tnoticesStore\n\t);\n\tconst onConvert = useCallback(\n\t\tasync function ( reusableBlockTitle ) {\n\t\t\ttry {\n\t\t\t\tawait convertBlocksToReusable( clientIds, reusableBlockTitle );\n\t\t\t\tcreateSuccessNotice( __( 'Reusable block created.' ), {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t} catch ( error ) {\n\t\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tif ( ! canConvert ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSettingsMenuControls>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\ticon={ reusableBlock }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetIsModalOpen( true );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Add to Reusable blocks' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t\t{ isModalOpen && (\n\t\t\t\t\t\t<Modal\n\t\t\t\t\t\t\ttitle={ __( 'Create Reusable block' ) }\n\t\t\t\t\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\t\t\t\t\tonRequestClose={ () => {\n\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\toverlayClassName=\"reusable-blocks-menu-items__convert-modal\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<form\n\t\t\t\t\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\tonConvert( title );\n\t\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\tclassName=\"reusable-blocks-menu-items__convert-modal-actions\"\n\t\t\t\t\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t\t\t<Button variant=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t</Modal>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</BlockSettingsMenuControls>\n\t);\n}\n"]}
@@ -30,9 +30,10 @@ var _store = require("../../store");
30
30
  /**
31
31
  * Internal dependencies
32
32
  */
33
- function ReusableBlocksManageButton({
34
- clientId
35
- }) {
33
+ function ReusableBlocksManageButton(_ref) {
34
+ let {
35
+ clientId
36
+ } = _ref;
36
37
  const {
37
38
  isVisible
38
39
  } = (0, _data.useSelect)(select => {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js"],"names":["ReusableBlocksManageButton","clientId","isVisible","select","getBlock","blockEditorStore","canUser","coreStore","reusableBlock","attributes","ref","__experimentalConvertBlockToStatic","convertBlockToStatic","reusableBlocksStore","post_type"],"mappings":";;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AAKA;;AAjBA;AACA;AACA;;AAYA;AACA;AACA;AAGA,SAASA,0BAAT,CAAqC;AAAEC,EAAAA;AAAF,CAArC,EAAoD;AACnD,QAAM;AAAEC,IAAAA;AAAF,MAAgB,qBACnBC,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA;AAAF,QAAeD,MAAM,CAAEE,kBAAF,CAA3B;AACA,UAAM;AAAEC,MAAAA;AAAF,QAAcH,MAAM,CAAEI,eAAF,CAA1B;AACA,UAAMC,aAAa,GAAGJ,QAAQ,CAAEH,QAAF,CAA9B;AAEA,WAAO;AACNC,MAAAA,SAAS,EACR,CAAC,CAAEM,aAAH,IACA,6BAAiBA,aAAjB,CADA,IAEA,CAAC,CAAEF,OAAO,CACT,QADS,EAET,QAFS,EAGTE,aAAa,CAACC,UAAd,CAAyBC,GAHhB;AAJL,KAAP;AAUA,GAhBoB,EAiBrB,CAAET,QAAF,CAjBqB,CAAtB;AAoBA,QAAM;AACLU,IAAAA,kCAAkC,EAAEC;AAD/B,MAEF,uBAAaC,YAAb,CAFJ;;AAIA,MAAK,CAAEX,SAAP,EAAmB;AAClB,WAAO,IAAP;AACA;;AAED,SACC,4BAAC,sCAAD,QACC,4BAAC,oBAAD;AACC,IAAA,IAAI,EAAG,uBAAc,UAAd,EAA0B;AAAEY,MAAAA,SAAS,EAAE;AAAb,KAA1B;AADR,KAGG,cAAI,wBAAJ,CAHH,CADD,EAMC,4BAAC,oBAAD;AAAU,IAAA,OAAO,EAAG,MAAMF,oBAAoB,CAAEX,QAAF;AAA9C,KACG,cAAI,2BAAJ,CADH,CAND,CADD;AAYA;;eAEcD,0B","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { isReusableBlock } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tBlockSettingsMenuControls,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { addQueryArgs } from '@wordpress/url';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as reusableBlocksStore } from '../../store';\n\nfunction ReusableBlocksManageButton( { clientId } ) {\n\tconst { isVisible } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock } = select( blockEditorStore );\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst reusableBlock = getBlock( clientId );\n\n\t\t\treturn {\n\t\t\t\tisVisible:\n\t\t\t\t\t!! reusableBlock &&\n\t\t\t\t\tisReusableBlock( reusableBlock ) &&\n\t\t\t\t\t!! canUser(\n\t\t\t\t\t\t'update',\n\t\t\t\t\t\t'blocks',\n\t\t\t\t\t\treusableBlock.attributes.ref\n\t\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst {\n\t\t__experimentalConvertBlockToStatic: convertBlockToStatic,\n\t} = useDispatch( reusableBlocksStore );\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSettingsMenuControls>\n\t\t\t<MenuItem\n\t\t\t\thref={ addQueryArgs( 'edit.php', { post_type: 'wp_block' } ) }\n\t\t\t>\n\t\t\t\t{ __( 'Manage Reusable blocks' ) }\n\t\t\t</MenuItem>\n\t\t\t<MenuItem onClick={ () => convertBlockToStatic( clientId ) }>\n\t\t\t\t{ __( 'Convert to regular blocks' ) }\n\t\t\t</MenuItem>\n\t\t</BlockSettingsMenuControls>\n\t);\n}\n\nexport default ReusableBlocksManageButton;\n"]}
1
+ {"version":3,"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js"],"names":["ReusableBlocksManageButton","clientId","isVisible","select","getBlock","blockEditorStore","canUser","coreStore","reusableBlock","attributes","ref","__experimentalConvertBlockToStatic","convertBlockToStatic","reusableBlocksStore","post_type"],"mappings":";;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AAKA;;AAjBA;AACA;AACA;;AAYA;AACA;AACA;AAGA,SAASA,0BAAT,OAAoD;AAAA,MAAf;AAAEC,IAAAA;AAAF,GAAe;AACnD,QAAM;AAAEC,IAAAA;AAAF,MAAgB,qBACnBC,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA;AAAF,QAAeD,MAAM,CAAEE,kBAAF,CAA3B;AACA,UAAM;AAAEC,MAAAA;AAAF,QAAcH,MAAM,CAAEI,eAAF,CAA1B;AACA,UAAMC,aAAa,GAAGJ,QAAQ,CAAEH,QAAF,CAA9B;AAEA,WAAO;AACNC,MAAAA,SAAS,EACR,CAAC,CAAEM,aAAH,IACA,6BAAiBA,aAAjB,CADA,IAEA,CAAC,CAAEF,OAAO,CACT,QADS,EAET,QAFS,EAGTE,aAAa,CAACC,UAAd,CAAyBC,GAHhB;AAJL,KAAP;AAUA,GAhBoB,EAiBrB,CAAET,QAAF,CAjBqB,CAAtB;AAoBA,QAAM;AACLU,IAAAA,kCAAkC,EAAEC;AAD/B,MAEF,uBAAaC,YAAb,CAFJ;;AAIA,MAAK,CAAEX,SAAP,EAAmB;AAClB,WAAO,IAAP;AACA;;AAED,SACC,4BAAC,sCAAD,QACC,4BAAC,oBAAD;AACC,IAAA,IAAI,EAAG,uBAAc,UAAd,EAA0B;AAAEY,MAAAA,SAAS,EAAE;AAAb,KAA1B;AADR,KAGG,cAAI,wBAAJ,CAHH,CADD,EAMC,4BAAC,oBAAD;AAAU,IAAA,OAAO,EAAG,MAAMF,oBAAoB,CAAEX,QAAF;AAA9C,KACG,cAAI,2BAAJ,CADH,CAND,CADD;AAYA;;eAEcD,0B","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { isReusableBlock } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tBlockSettingsMenuControls,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { addQueryArgs } from '@wordpress/url';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as reusableBlocksStore } from '../../store';\n\nfunction ReusableBlocksManageButton( { clientId } ) {\n\tconst { isVisible } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock } = select( blockEditorStore );\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst reusableBlock = getBlock( clientId );\n\n\t\t\treturn {\n\t\t\t\tisVisible:\n\t\t\t\t\t!! reusableBlock &&\n\t\t\t\t\tisReusableBlock( reusableBlock ) &&\n\t\t\t\t\t!! canUser(\n\t\t\t\t\t\t'update',\n\t\t\t\t\t\t'blocks',\n\t\t\t\t\t\treusableBlock.attributes.ref\n\t\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst {\n\t\t__experimentalConvertBlockToStatic: convertBlockToStatic,\n\t} = useDispatch( reusableBlocksStore );\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSettingsMenuControls>\n\t\t\t<MenuItem\n\t\t\t\thref={ addQueryArgs( 'edit.php', { post_type: 'wp_block' } ) }\n\t\t\t>\n\t\t\t\t{ __( 'Manage Reusable blocks' ) }\n\t\t\t</MenuItem>\n\t\t\t<MenuItem onClick={ () => convertBlockToStatic( clientId ) }>\n\t\t\t\t{ __( 'Convert to regular blocks' ) }\n\t\t\t</MenuItem>\n\t\t</BlockSettingsMenuControls>\n\t);\n}\n\nexport default ReusableBlocksManageButton;\n"]}
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.__experimentalSetEditingReusableBlock = __experimentalSetEditingReusableBlock;
7
6
  exports.__experimentalDeleteReusableBlock = exports.__experimentalConvertBlocksToReusable = exports.__experimentalConvertBlockToStatic = void 0;
7
+ exports.__experimentalSetEditingReusableBlock = __experimentalSetEditingReusableBlock;
8
8
 
9
9
  var _lodash = require("lodash");
10
10
 
@@ -27,9 +27,10 @@ var _i18n = require("@wordpress/i18n");
27
27
  *
28
28
  * @param {string} clientId The client ID of the block to attach.
29
29
  */
30
- const __experimentalConvertBlockToStatic = clientId => ({
31
- registry
32
- }) => {
30
+ const __experimentalConvertBlockToStatic = clientId => _ref => {
31
+ let {
32
+ registry
33
+ } = _ref;
33
34
  const oldBlock = registry.select(_blockEditor.store).getBlock(clientId);
34
35
  const reusableBlock = registry.select('core').getEditedEntityRecord('postType', 'wp_block', oldBlock.attributes.ref);
35
36
  const newBlocks = (0, _blocks.parse)((0, _lodash.isFunction)(reusableBlock.content) ? reusableBlock.content(reusableBlock) : reusableBlock.content);
@@ -45,10 +46,11 @@ const __experimentalConvertBlockToStatic = clientId => ({
45
46
 
46
47
  exports.__experimentalConvertBlockToStatic = __experimentalConvertBlockToStatic;
47
48
 
48
- const __experimentalConvertBlocksToReusable = (clientIds, title) => async ({
49
- registry,
50
- dispatch
51
- }) => {
49
+ const __experimentalConvertBlocksToReusable = (clientIds, title) => async _ref2 => {
50
+ let {
51
+ registry,
52
+ dispatch
53
+ } = _ref2;
52
54
  const reusableBlock = {
53
55
  title: title || (0, _i18n.__)('Untitled Reusable block'),
54
56
  content: (0, _blocks.serialize)(registry.select(_blockEditor.store).getBlocksByClientId(clientIds)),
@@ -71,9 +73,10 @@ const __experimentalConvertBlocksToReusable = (clientIds, title) => async ({
71
73
 
72
74
  exports.__experimentalConvertBlocksToReusable = __experimentalConvertBlocksToReusable;
73
75
 
74
- const __experimentalDeleteReusableBlock = id => async ({
75
- registry
76
- }) => {
76
+ const __experimentalDeleteReusableBlock = id => async _ref3 => {
77
+ let {
78
+ registry
79
+ } = _ref3;
77
80
  const reusableBlock = registry.select('core').getEditedEntityRecord('postType', 'wp_block', id); // Don't allow a reusable block with a temporary ID to be deleted
78
81
 
79
82
  if (!reusableBlock) {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/reusable-blocks/src/store/actions.js"],"names":["__experimentalConvertBlockToStatic","clientId","registry","oldBlock","select","blockEditorStore","getBlock","reusableBlock","getEditedEntityRecord","attributes","ref","newBlocks","content","dispatch","replaceBlocks","__experimentalConvertBlocksToReusable","clientIds","title","getBlocksByClientId","status","updatedRecord","saveEntityRecord","newBlock","id","__experimentalSetEditingReusableBlock","__experimentalDeleteReusableBlock","allBlocks","getBlocks","associatedBlocks","filter","block","associatedBlockClientIds","map","length","removeBlocks","deleteEntityRecord","isEditing","type"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { isFunction } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport {\n\tcreateBlock,\n\tisReusableBlock,\n\tparse,\n\tserialize,\n} from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Returns a generator converting a reusable block into a static block.\n *\n * @param {string} clientId The client ID of the block to attach.\n */\nexport const __experimentalConvertBlockToStatic = ( clientId ) => ( {\n\tregistry,\n} ) => {\n\tconst oldBlock = registry.select( blockEditorStore ).getBlock( clientId );\n\tconst reusableBlock = registry\n\t\t.select( 'core' )\n\t\t.getEditedEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_block',\n\t\t\toldBlock.attributes.ref\n\t\t);\n\n\tconst newBlocks = parse(\n\t\tisFunction( reusableBlock.content )\n\t\t\t? reusableBlock.content( reusableBlock )\n\t\t\t: reusableBlock.content\n\t);\n\tregistry\n\t\t.dispatch( blockEditorStore )\n\t\t.replaceBlocks( oldBlock.clientId, newBlocks );\n};\n\n/**\n * Returns a generator converting one or more static blocks into a reusable block.\n *\n * @param {string[]} clientIds The client IDs of the block to detach.\n * @param {string} title Reusable block title.\n */\nexport const __experimentalConvertBlocksToReusable = (\n\tclientIds,\n\ttitle\n) => async ( { registry, dispatch } ) => {\n\tconst reusableBlock = {\n\t\ttitle: title || __( 'Untitled Reusable block' ),\n\t\tcontent: serialize(\n\t\t\tregistry.select( blockEditorStore ).getBlocksByClientId( clientIds )\n\t\t),\n\t\tstatus: 'publish',\n\t};\n\n\tconst updatedRecord = await registry\n\t\t.dispatch( 'core' )\n\t\t.saveEntityRecord( 'postType', 'wp_block', reusableBlock );\n\n\tconst newBlock = createBlock( 'core/block', {\n\t\tref: updatedRecord.id,\n\t} );\n\tregistry.dispatch( blockEditorStore ).replaceBlocks( clientIds, newBlock );\n\tdispatch.__experimentalSetEditingReusableBlock( newBlock.clientId, true );\n};\n\n/**\n * Returns a generator deleting a reusable block.\n *\n * @param {string} id The ID of the reusable block to delete.\n */\nexport const __experimentalDeleteReusableBlock = ( id ) => async ( {\n\tregistry,\n} ) => {\n\tconst reusableBlock = registry\n\t\t.select( 'core' )\n\t\t.getEditedEntityRecord( 'postType', 'wp_block', id );\n\n\t// Don't allow a reusable block with a temporary ID to be deleted\n\tif ( ! reusableBlock ) {\n\t\treturn;\n\t}\n\n\t// Remove any other blocks that reference this reusable block\n\tconst allBlocks = registry.select( blockEditorStore ).getBlocks();\n\tconst associatedBlocks = allBlocks.filter(\n\t\t( block ) => isReusableBlock( block ) && block.attributes.ref === id\n\t);\n\tconst associatedBlockClientIds = associatedBlocks.map(\n\t\t( block ) => block.clientId\n\t);\n\n\t// Remove the parsed block.\n\tif ( associatedBlockClientIds.length ) {\n\t\tregistry\n\t\t\t.dispatch( blockEditorStore )\n\t\t\t.removeBlocks( associatedBlockClientIds );\n\t}\n\n\tawait registry\n\t\t.dispatch( 'core' )\n\t\t.deleteEntityRecord( 'postType', 'wp_block', id );\n};\n\n/**\n * Returns an action descriptor for SET_EDITING_REUSABLE_BLOCK action.\n *\n * @param {string} clientId The clientID of the reusable block to target.\n * @param {boolean} isEditing Whether the block should be in editing state.\n * @return {Object} Action descriptor.\n */\nexport function __experimentalSetEditingReusableBlock( clientId, isEditing ) {\n\treturn {\n\t\ttype: 'SET_EDITING_REUSABLE_BLOCK',\n\t\tclientId,\n\t\tisEditing,\n\t};\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/reusable-blocks/src/store/actions.js"],"names":["__experimentalConvertBlockToStatic","clientId","registry","oldBlock","select","blockEditorStore","getBlock","reusableBlock","getEditedEntityRecord","attributes","ref","newBlocks","content","dispatch","replaceBlocks","__experimentalConvertBlocksToReusable","clientIds","title","getBlocksByClientId","status","updatedRecord","saveEntityRecord","newBlock","id","__experimentalSetEditingReusableBlock","__experimentalDeleteReusableBlock","allBlocks","getBlocks","associatedBlocks","filter","block","associatedBlockClientIds","map","length","removeBlocks","deleteEntityRecord","isEditing","type"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { isFunction } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport {\n\tcreateBlock,\n\tisReusableBlock,\n\tparse,\n\tserialize,\n} from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Returns a generator converting a reusable block into a static block.\n *\n * @param {string} clientId The client ID of the block to attach.\n */\nexport const __experimentalConvertBlockToStatic = ( clientId ) => ( {\n\tregistry,\n} ) => {\n\tconst oldBlock = registry.select( blockEditorStore ).getBlock( clientId );\n\tconst reusableBlock = registry\n\t\t.select( 'core' )\n\t\t.getEditedEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_block',\n\t\t\toldBlock.attributes.ref\n\t\t);\n\n\tconst newBlocks = parse(\n\t\tisFunction( reusableBlock.content )\n\t\t\t? reusableBlock.content( reusableBlock )\n\t\t\t: reusableBlock.content\n\t);\n\tregistry\n\t\t.dispatch( blockEditorStore )\n\t\t.replaceBlocks( oldBlock.clientId, newBlocks );\n};\n\n/**\n * Returns a generator converting one or more static blocks into a reusable block.\n *\n * @param {string[]} clientIds The client IDs of the block to detach.\n * @param {string} title Reusable block title.\n */\nexport const __experimentalConvertBlocksToReusable = (\n\tclientIds,\n\ttitle\n) => async ( { registry, dispatch } ) => {\n\tconst reusableBlock = {\n\t\ttitle: title || __( 'Untitled Reusable block' ),\n\t\tcontent: serialize(\n\t\t\tregistry.select( blockEditorStore ).getBlocksByClientId( clientIds )\n\t\t),\n\t\tstatus: 'publish',\n\t};\n\n\tconst updatedRecord = await registry\n\t\t.dispatch( 'core' )\n\t\t.saveEntityRecord( 'postType', 'wp_block', reusableBlock );\n\n\tconst newBlock = createBlock( 'core/block', {\n\t\tref: updatedRecord.id,\n\t} );\n\tregistry.dispatch( blockEditorStore ).replaceBlocks( clientIds, newBlock );\n\tdispatch.__experimentalSetEditingReusableBlock( newBlock.clientId, true );\n};\n\n/**\n * Returns a generator deleting a reusable block.\n *\n * @param {string} id The ID of the reusable block to delete.\n */\nexport const __experimentalDeleteReusableBlock = ( id ) => async ( {\n\tregistry,\n} ) => {\n\tconst reusableBlock = registry\n\t\t.select( 'core' )\n\t\t.getEditedEntityRecord( 'postType', 'wp_block', id );\n\n\t// Don't allow a reusable block with a temporary ID to be deleted\n\tif ( ! reusableBlock ) {\n\t\treturn;\n\t}\n\n\t// Remove any other blocks that reference this reusable block\n\tconst allBlocks = registry.select( blockEditorStore ).getBlocks();\n\tconst associatedBlocks = allBlocks.filter(\n\t\t( block ) => isReusableBlock( block ) && block.attributes.ref === id\n\t);\n\tconst associatedBlockClientIds = associatedBlocks.map(\n\t\t( block ) => block.clientId\n\t);\n\n\t// Remove the parsed block.\n\tif ( associatedBlockClientIds.length ) {\n\t\tregistry\n\t\t\t.dispatch( blockEditorStore )\n\t\t\t.removeBlocks( associatedBlockClientIds );\n\t}\n\n\tawait registry\n\t\t.dispatch( 'core' )\n\t\t.deleteEntityRecord( 'postType', 'wp_block', id );\n};\n\n/**\n * Returns an action descriptor for SET_EDITING_REUSABLE_BLOCK action.\n *\n * @param {string} clientId The clientID of the reusable block to target.\n * @param {boolean} isEditing Whether the block should be in editing state.\n * @return {Object} Action descriptor.\n */\nexport function __experimentalSetEditingReusableBlock( clientId, isEditing ) {\n\treturn {\n\t\ttype: 'SET_EDITING_REUSABLE_BLOCK',\n\t\tclientId,\n\t\tisEditing,\n\t};\n}\n"]}
@@ -2,8 +2,6 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
@@ -17,6 +15,10 @@ var _reducer = _interopRequireDefault(require("./reducer"));
17
15
 
18
16
  var selectors = _interopRequireWildcard(require("./selectors"));
19
17
 
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
+
20
22
  /**
21
23
  * WordPress dependencies
22
24
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/reusable-blocks/src/store/index.js"],"names":["STORE_NAME","store","actions","reducer","selectors","__experimentalUseThunks"],"mappings":";;;;;;;;;;;AAGA;;AAKA;;AACA;;AACA;;AAVA;AACA;AACA;;AAGA;AACA;AACA;AAKA,MAAMA,UAAU,GAAG,sBAAnB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,MAAMC,KAAK,GAAG,4BAAkBD,UAAlB,EAA8B;AAClDE,EAAAA,OADkD;AAElDC,EAAAA,OAAO,EAAPA,gBAFkD;AAGlDC,EAAAA,SAHkD;AAIlDC,EAAAA,uBAAuB,EAAE;AAJyB,CAA9B,CAAd;;AAOP,oBAAUJ,KAAV","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport * as actions from './actions';\nimport reducer from './reducer';\nimport * as selectors from './selectors';\n\nconst STORE_NAME = 'core/reusable-blocks';\n\n/**\n * Store definition for the reusable blocks namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n *\n * @type {Object}\n */\nexport const store = createReduxStore( STORE_NAME, {\n\tactions,\n\treducer,\n\tselectors,\n\t__experimentalUseThunks: true,\n} );\n\nregister( store );\n"]}
1
+ {"version":3,"sources":["@wordpress/reusable-blocks/src/store/index.js"],"names":["STORE_NAME","store","actions","reducer","selectors","__experimentalUseThunks"],"mappings":";;;;;;;;;AAGA;;AAKA;;AACA;;AACA;;;;;;AAVA;AACA;AACA;;AAGA;AACA;AACA;AAKA,MAAMA,UAAU,GAAG,sBAAnB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,MAAMC,KAAK,GAAG,4BAAkBD,UAAlB,EAA8B;AAClDE,EAAAA,OADkD;AAElDC,EAAAA,OAAO,EAAPA,gBAFkD;AAGlDC,EAAAA,SAHkD;AAIlDC,EAAAA,uBAAuB,EAAE;AAJyB,CAA9B,CAAd;;AAOP,oBAAUJ,KAAV","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport * as actions from './actions';\nimport reducer from './reducer';\nimport * as selectors from './selectors';\n\nconst STORE_NAME = 'core/reusable-blocks';\n\n/**\n * Store definition for the reusable blocks namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n *\n * @type {Object}\n */\nexport const store = createReduxStore( STORE_NAME, {\n\tactions,\n\treducer,\n\tselectors,\n\t__experimentalUseThunks: true,\n} );\n\nregister( store );\n"]}
@@ -3,15 +3,18 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.isEditingReusableBlock = isEditingReusableBlock;
7
6
  exports.default = void 0;
7
+ exports.isEditingReusableBlock = isEditingReusableBlock;
8
8
 
9
9
  var _data = require("@wordpress/data");
10
10
 
11
11
  /**
12
12
  * WordPress dependencies
13
13
  */
14
- function isEditingReusableBlock(state = {}, action) {
14
+ function isEditingReusableBlock() {
15
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
16
+ let action = arguments.length > 1 ? arguments[1] : undefined;
17
+
15
18
  if ((action === null || action === void 0 ? void 0 : action.type) === 'SET_EDITING_REUSABLE_BLOCK') {
16
19
  return { ...state,
17
20
  [action.clientId]: action.isEditing
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/reusable-blocks/src/store/reducer.js"],"names":["isEditingReusableBlock","state","action","type","clientId","isEditing"],"mappings":";;;;;;;;AAGA;;AAHA;AACA;AACA;AAGO,SAASA,sBAAT,CAAiCC,KAAK,GAAG,EAAzC,EAA6CC,MAA7C,EAAsD;AAC5D,MAAK,CAAAA,MAAM,SAAN,IAAAA,MAAM,WAAN,YAAAA,MAAM,CAAEC,IAAR,MAAiB,4BAAtB,EAAqD;AACpD,WAAO,EACN,GAAGF,KADG;AAEN,OAAEC,MAAM,CAACE,QAAT,GAAqBF,MAAM,CAACG;AAFtB,KAAP;AAIA;;AAED,SAAOJ,KAAP;AACA;;eAEc,2BAAiB;AAC/BD,EAAAA;AAD+B,CAAjB,C","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\n\nexport function isEditingReusableBlock( state = {}, action ) {\n\tif ( action?.type === 'SET_EDITING_REUSABLE_BLOCK' ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t[ action.clientId ]: action.isEditing,\n\t\t};\n\t}\n\n\treturn state;\n}\n\nexport default combineReducers( {\n\tisEditingReusableBlock,\n} );\n"]}
1
+ {"version":3,"sources":["@wordpress/reusable-blocks/src/store/reducer.js"],"names":["isEditingReusableBlock","state","action","type","clientId","isEditing"],"mappings":";;;;;;;;AAGA;;AAHA;AACA;AACA;AAGO,SAASA,sBAAT,GAAsD;AAAA,MAArBC,KAAqB,uEAAb,EAAa;AAAA,MAATC,MAAS;;AAC5D,MAAK,CAAAA,MAAM,SAAN,IAAAA,MAAM,WAAN,YAAAA,MAAM,CAAEC,IAAR,MAAiB,4BAAtB,EAAqD;AACpD,WAAO,EACN,GAAGF,KADG;AAEN,OAAEC,MAAM,CAACE,QAAT,GAAqBF,MAAM,CAACG;AAFtB,KAAP;AAIA;;AAED,SAAOJ,KAAP;AACA;;eAEc,2BAAiB;AAC/BD,EAAAA;AAD+B,CAAjB,C","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\n\nexport function isEditingReusableBlock( state = {}, action ) {\n\tif ( action?.type === 'SET_EDITING_REUSABLE_BLOCK' ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t[ action.clientId ]: action.isEditing,\n\t\t};\n\t}\n\n\treturn state;\n}\n\nexport default combineReducers( {\n\tisEditingReusableBlock,\n} );\n"]}
@@ -12,10 +12,11 @@ import { store as blockEditorStore } from '@wordpress/block-editor';
12
12
  import ReusableBlockConvertButton from './reusable-block-convert-button';
13
13
  import ReusableBlocksManageButton from './reusable-blocks-manage-button';
14
14
 
15
- function ReusableBlocksMenuItems({
16
- clientIds,
17
- rootClientId
18
- }) {
15
+ function ReusableBlocksMenuItems(_ref) {
16
+ let {
17
+ clientIds,
18
+ rootClientId
19
+ } = _ref;
19
20
  return createElement(Fragment, null, createElement(ReusableBlockConvertButton, {
20
21
  clientIds: clientIds,
21
22
  rootClientId: rootClientId
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/index.js"],"names":["withSelect","store","blockEditorStore","ReusableBlockConvertButton","ReusableBlocksManageButton","ReusableBlocksMenuItems","clientIds","rootClientId","length","select","getSelectedBlockClientIds"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,UAAT,QAA2B,iBAA3B;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,yBAA1C;AAEA;AACA;AACA;;AACA,OAAOC,0BAAP,MAAuC,iCAAvC;AACA,OAAOC,0BAAP,MAAuC,iCAAvC;;AAEA,SAASC,uBAAT,CAAkC;AAAEC,EAAAA,SAAF;AAAaC,EAAAA;AAAb,CAAlC,EAAgE;AAC/D,SACC,8BACC,cAAC,0BAAD;AACC,IAAA,SAAS,EAAGD,SADb;AAEC,IAAA,YAAY,EAAGC;AAFhB,IADD,EAKGD,SAAS,CAACE,MAAV,KAAqB,CAArB,IACD,cAAC,0BAAD;AAA4B,IAAA,QAAQ,EAAGF,SAAS,CAAE,CAAF;AAAhD,IANF,CADD;AAWA;;AAED,eAAeN,UAAU,CAAIS,MAAF,IAAc;AACxC,QAAM;AAAEC,IAAAA;AAAF,MAAgCD,MAAM,CAAEP,gBAAF,CAA5C;AACA,SAAO;AACNI,IAAAA,SAAS,EAAEI,yBAAyB;AAD9B,GAAP;AAGA,CALwB,CAAV,CAKVL,uBALU,CAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { withSelect } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport ReusableBlockConvertButton from './reusable-block-convert-button';\nimport ReusableBlocksManageButton from './reusable-blocks-manage-button';\n\nfunction ReusableBlocksMenuItems( { clientIds, rootClientId } ) {\n\treturn (\n\t\t<>\n\t\t\t<ReusableBlockConvertButton\n\t\t\t\tclientIds={ clientIds }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t/>\n\t\t\t{ clientIds.length === 1 && (\n\t\t\t\t<ReusableBlocksManageButton clientId={ clientIds[ 0 ] } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default withSelect( ( select ) => {\n\tconst { getSelectedBlockClientIds } = select( blockEditorStore );\n\treturn {\n\t\tclientIds: getSelectedBlockClientIds(),\n\t};\n} )( ReusableBlocksMenuItems );\n"]}
1
+ {"version":3,"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/index.js"],"names":["withSelect","store","blockEditorStore","ReusableBlockConvertButton","ReusableBlocksManageButton","ReusableBlocksMenuItems","clientIds","rootClientId","length","select","getSelectedBlockClientIds"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,UAAT,QAA2B,iBAA3B;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,yBAA1C;AAEA;AACA;AACA;;AACA,OAAOC,0BAAP,MAAuC,iCAAvC;AACA,OAAOC,0BAAP,MAAuC,iCAAvC;;AAEA,SAASC,uBAAT,OAAgE;AAAA,MAA9B;AAAEC,IAAAA,SAAF;AAAaC,IAAAA;AAAb,GAA8B;AAC/D,SACC,8BACC,cAAC,0BAAD;AACC,IAAA,SAAS,EAAGD,SADb;AAEC,IAAA,YAAY,EAAGC;AAFhB,IADD,EAKGD,SAAS,CAACE,MAAV,KAAqB,CAArB,IACD,cAAC,0BAAD;AAA4B,IAAA,QAAQ,EAAGF,SAAS,CAAE,CAAF;AAAhD,IANF,CADD;AAWA;;AAED,eAAeN,UAAU,CAAIS,MAAF,IAAc;AACxC,QAAM;AAAEC,IAAAA;AAAF,MAAgCD,MAAM,CAAEP,gBAAF,CAA5C;AACA,SAAO;AACNI,IAAAA,SAAS,EAAEI,yBAAyB;AAD9B,GAAP;AAGA,CALwB,CAAV,CAKVL,uBALU,CAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { withSelect } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport ReusableBlockConvertButton from './reusable-block-convert-button';\nimport ReusableBlocksManageButton from './reusable-blocks-manage-button';\n\nfunction ReusableBlocksMenuItems( { clientIds, rootClientId } ) {\n\treturn (\n\t\t<>\n\t\t\t<ReusableBlockConvertButton\n\t\t\t\tclientIds={ clientIds }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t/>\n\t\t\t{ clientIds.length === 1 && (\n\t\t\t\t<ReusableBlocksManageButton clientId={ clientIds[ 0 ] } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default withSelect( ( select ) => {\n\tconst { getSelectedBlockClientIds } = select( blockEditorStore );\n\treturn {\n\t\tclientIds: getSelectedBlockClientIds(),\n\t};\n} )( ReusableBlocksMenuItems );\n"]}
@@ -26,10 +26,11 @@ import { store } from '../../store';
26
26
  * @return {import('@wordpress/element').WPComponent} The menu control or null.
27
27
  */
28
28
 
29
- export default function ReusableBlockConvertButton({
30
- clientIds,
31
- rootClientId
32
- }) {
29
+ export default function ReusableBlockConvertButton(_ref) {
30
+ let {
31
+ clientIds,
32
+ rootClientId
33
+ } = _ref;
33
34
  const [isModalOpen, setIsModalOpen] = useState(false);
34
35
  const [title, setTitle] = useState('');
35
36
  const canConvert = useSelect(select => {
@@ -79,45 +80,48 @@ export default function ReusableBlockConvertButton({
79
80
  return null;
80
81
  }
81
82
 
82
- return createElement(BlockSettingsMenuControls, null, ({
83
- onClose
84
- }) => createElement(Fragment, null, createElement(MenuItem, {
85
- icon: reusableBlock,
86
- onClick: () => {
87
- setIsModalOpen(true);
88
- }
89
- }, __('Add to Reusable blocks')), isModalOpen && createElement(Modal, {
90
- title: __('Create Reusable block'),
91
- closeLabel: __('Close'),
92
- onRequestClose: () => {
93
- setIsModalOpen(false);
94
- setTitle('');
95
- },
96
- overlayClassName: "reusable-blocks-menu-items__convert-modal"
97
- }, createElement("form", {
98
- onSubmit: event => {
99
- event.preventDefault();
100
- onConvert(title);
101
- setIsModalOpen(false);
102
- setTitle('');
103
- onClose();
104
- }
105
- }, createElement(TextControl, {
106
- label: __('Name'),
107
- value: title,
108
- onChange: setTitle
109
- }), createElement(Flex, {
110
- className: "reusable-blocks-menu-items__convert-modal-actions",
111
- justify: "flex-end"
112
- }, createElement(FlexItem, null, createElement(Button, {
113
- variant: "secondary",
114
- onClick: () => {
115
- setIsModalOpen(false);
116
- setTitle('');
117
- }
118
- }, __('Cancel'))), createElement(FlexItem, null, createElement(Button, {
119
- variant: "primary",
120
- type: "submit"
121
- }, __('Save'))))))));
83
+ return createElement(BlockSettingsMenuControls, null, _ref2 => {
84
+ let {
85
+ onClose
86
+ } = _ref2;
87
+ return createElement(Fragment, null, createElement(MenuItem, {
88
+ icon: reusableBlock,
89
+ onClick: () => {
90
+ setIsModalOpen(true);
91
+ }
92
+ }, __('Add to Reusable blocks')), isModalOpen && createElement(Modal, {
93
+ title: __('Create Reusable block'),
94
+ closeLabel: __('Close'),
95
+ onRequestClose: () => {
96
+ setIsModalOpen(false);
97
+ setTitle('');
98
+ },
99
+ overlayClassName: "reusable-blocks-menu-items__convert-modal"
100
+ }, createElement("form", {
101
+ onSubmit: event => {
102
+ event.preventDefault();
103
+ onConvert(title);
104
+ setIsModalOpen(false);
105
+ setTitle('');
106
+ onClose();
107
+ }
108
+ }, createElement(TextControl, {
109
+ label: __('Name'),
110
+ value: title,
111
+ onChange: setTitle
112
+ }), createElement(Flex, {
113
+ className: "reusable-blocks-menu-items__convert-modal-actions",
114
+ justify: "flex-end"
115
+ }, createElement(FlexItem, null, createElement(Button, {
116
+ variant: "secondary",
117
+ onClick: () => {
118
+ setIsModalOpen(false);
119
+ setTitle('');
120
+ }
121
+ }, __('Cancel'))), createElement(FlexItem, null, createElement(Button, {
122
+ variant: "primary",
123
+ type: "submit"
124
+ }, __('Save')))))));
125
+ });
122
126
  }
123
127
  //# sourceMappingURL=reusable-block-convert-button.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-block-convert-button.js"],"names":["hasBlockSupport","isReusableBlock","BlockSettingsMenuControls","store","blockEditorStore","useCallback","useState","MenuItem","Modal","Button","TextControl","Flex","FlexItem","reusableBlock","useDispatch","useSelect","__","noticesStore","coreStore","ReusableBlockConvertButton","clientIds","rootClientId","isModalOpen","setIsModalOpen","title","setTitle","canConvert","select","canUser","getBlocksByClientId","canInsertBlockType","blocks","isReusable","length","getEntityRecord","attributes","ref","_canConvert","every","block","isValid","name","__experimentalConvertBlocksToReusable","convertBlocksToReusable","createSuccessNotice","createErrorNotice","onConvert","reusableBlockTitle","type","error","message","onClose","event","preventDefault"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { hasBlockSupport, isReusableBlock } from '@wordpress/blocks';\nimport {\n\tBlockSettingsMenuControls,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useCallback, useState } from '@wordpress/element';\nimport {\n\tMenuItem,\n\tModal,\n\tButton,\n\tTextControl,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { reusableBlock } from '@wordpress/icons';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store } from '../../store';\n\n/**\n * Menu control to convert block(s) to reusable block.\n *\n * @param {Object} props Component props.\n * @param {string[]} props.clientIds Client ids of selected blocks.\n * @param {string} props.rootClientId ID of the currently selected top-level block.\n * @return {import('@wordpress/element').WPComponent} The menu control or null.\n */\nexport default function ReusableBlockConvertButton( {\n\tclientIds,\n\trootClientId,\n} ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst [ title, setTitle ] = useState( '' );\n\tconst canConvert = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst { getBlocksByClientId, canInsertBlockType } = select(\n\t\t\t\tblockEditorStore\n\t\t\t);\n\n\t\t\tconst blocks = getBlocksByClientId( clientIds ) ?? [];\n\n\t\t\tconst isReusable =\n\t\t\t\tblocks.length === 1 &&\n\t\t\t\tblocks[ 0 ] &&\n\t\t\t\tisReusableBlock( blocks[ 0 ] ) &&\n\t\t\t\t!! select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblocks[ 0 ].attributes.ref\n\t\t\t\t);\n\n\t\t\tconst _canConvert =\n\t\t\t\t// Hide when this is already a reusable block.\n\t\t\t\t! isReusable &&\n\t\t\t\t// Hide when reusable blocks are disabled.\n\t\t\t\tcanInsertBlockType( 'core/block', rootClientId ) &&\n\t\t\t\tblocks.every(\n\t\t\t\t\t( block ) =>\n\t\t\t\t\t\t// Guard against the case where a regular block has *just* been converted.\n\t\t\t\t\t\t!! block &&\n\t\t\t\t\t\t// Hide on invalid blocks.\n\t\t\t\t\t\tblock.isValid &&\n\t\t\t\t\t\t// Hide when block doesn't support being made reusable.\n\t\t\t\t\t\thasBlockSupport( block.name, 'reusable', true )\n\t\t\t\t) &&\n\t\t\t\t// Hide when current doesn't have permission to do that.\n\t\t\t\t!! canUser( 'create', 'blocks' );\n\n\t\t\treturn _canConvert;\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst {\n\t\t__experimentalConvertBlocksToReusable: convertBlocksToReusable,\n\t} = useDispatch( store );\n\n\tconst { createSuccessNotice, createErrorNotice } = useDispatch(\n\t\tnoticesStore\n\t);\n\tconst onConvert = useCallback(\n\t\tasync function ( reusableBlockTitle ) {\n\t\t\ttry {\n\t\t\t\tawait convertBlocksToReusable( clientIds, reusableBlockTitle );\n\t\t\t\tcreateSuccessNotice( __( 'Reusable block created.' ), {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t} catch ( error ) {\n\t\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tif ( ! canConvert ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSettingsMenuControls>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\ticon={ reusableBlock }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetIsModalOpen( true );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Add to Reusable blocks' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t\t{ isModalOpen && (\n\t\t\t\t\t\t<Modal\n\t\t\t\t\t\t\ttitle={ __( 'Create Reusable block' ) }\n\t\t\t\t\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\t\t\t\t\tonRequestClose={ () => {\n\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\toverlayClassName=\"reusable-blocks-menu-items__convert-modal\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<form\n\t\t\t\t\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\tonConvert( title );\n\t\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\tclassName=\"reusable-blocks-menu-items__convert-modal-actions\"\n\t\t\t\t\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t\t\t<Button variant=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t</Modal>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</BlockSettingsMenuControls>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-block-convert-button.js"],"names":["hasBlockSupport","isReusableBlock","BlockSettingsMenuControls","store","blockEditorStore","useCallback","useState","MenuItem","Modal","Button","TextControl","Flex","FlexItem","reusableBlock","useDispatch","useSelect","__","noticesStore","coreStore","ReusableBlockConvertButton","clientIds","rootClientId","isModalOpen","setIsModalOpen","title","setTitle","canConvert","select","canUser","getBlocksByClientId","canInsertBlockType","blocks","isReusable","length","getEntityRecord","attributes","ref","_canConvert","every","block","isValid","name","__experimentalConvertBlocksToReusable","convertBlocksToReusable","createSuccessNotice","createErrorNotice","onConvert","reusableBlockTitle","type","error","message","onClose","event","preventDefault"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,eAAT,EAA0BC,eAA1B,QAAiD,mBAAjD;AACA,SACCC,yBADD,EAECC,KAAK,IAAIC,gBAFV,QAGO,yBAHP;AAIA,SAASC,WAAT,EAAsBC,QAAtB,QAAsC,oBAAtC;AACA,SACCC,QADD,EAECC,KAFD,EAGCC,MAHD,EAICC,WAJD,EAKCC,IALD,EAMCC,QAND,QAOO,uBAPP;AAQA,SAASC,aAAT,QAA8B,kBAA9B;AACA,SAASC,WAAT,EAAsBC,SAAtB,QAAuC,iBAAvC;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASb,KAAK,IAAIc,YAAlB,QAAsC,oBAAtC;AACA,SAASd,KAAK,IAAIe,SAAlB,QAAmC,sBAAnC;AAEA;AACA;AACA;;AACA,SAASf,KAAT,QAAsB,aAAtB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASgB,0BAAT,OAGX;AAAA,MAHgD;AACnDC,IAAAA,SADmD;AAEnDC,IAAAA;AAFmD,GAGhD;AACH,QAAM,CAAEC,WAAF,EAAeC,cAAf,IAAkCjB,QAAQ,CAAE,KAAF,CAAhD;AACA,QAAM,CAAEkB,KAAF,EAASC,QAAT,IAAsBnB,QAAQ,CAAE,EAAF,CAApC;AACA,QAAMoB,UAAU,GAAGX,SAAS,CACzBY,MAAF,IAAc;AAAA;;AACb,UAAM;AAAEC,MAAAA;AAAF,QAAcD,MAAM,CAAET,SAAF,CAA1B;AACA,UAAM;AAAEW,MAAAA,mBAAF;AAAuBC,MAAAA;AAAvB,QAA8CH,MAAM,CACzDvB,gBADyD,CAA1D;AAIA,UAAM2B,MAAM,2BAAGF,mBAAmB,CAAET,SAAF,CAAtB,uEAAuC,EAAnD;AAEA,UAAMY,UAAU,GACfD,MAAM,CAACE,MAAP,KAAkB,CAAlB,IACAF,MAAM,CAAE,CAAF,CADN,IAEA9B,eAAe,CAAE8B,MAAM,CAAE,CAAF,CAAR,CAFf,IAGA,CAAC,CAAEJ,MAAM,CAAET,SAAF,CAAN,CAAoBgB,eAApB,CACF,UADE,EAEF,UAFE,EAGFH,MAAM,CAAE,CAAF,CAAN,CAAYI,UAAZ,CAAuBC,GAHrB,CAJJ;;AAUA,UAAMC,WAAW,GAChB;AACA,KAAEL,UAAF,IACA;AACAF,IAAAA,kBAAkB,CAAE,YAAF,EAAgBT,YAAhB,CAFlB,IAGAU,MAAM,CAACO,KAAP,CACGC,KAAF,IACC;AACA,KAAC,CAAEA,KAAH,IACA;AACAA,IAAAA,KAAK,CAACC,OAFN,IAGA;AACAxC,IAAAA,eAAe,CAAEuC,KAAK,CAACE,IAAR,EAAc,UAAd,EAA0B,IAA1B,CAPjB,CAHA,IAYA;AACA,KAAC,CAAEb,OAAO,CAAE,QAAF,EAAY,QAAZ,CAfX;;AAiBA,WAAOS,WAAP;AACA,GArC0B,EAsC3B,CAAEjB,SAAF,CAtC2B,CAA5B;AAyCA,QAAM;AACLsB,IAAAA,qCAAqC,EAAEC;AADlC,MAEF7B,WAAW,CAAEX,KAAF,CAFf;AAIA,QAAM;AAAEyC,IAAAA,mBAAF;AAAuBC,IAAAA;AAAvB,MAA6C/B,WAAW,CAC7DG,YAD6D,CAA9D;AAGA,QAAM6B,SAAS,GAAGzC,WAAW,CAC5B,gBAAiB0C,kBAAjB,EAAsC;AACrC,QAAI;AACH,YAAMJ,uBAAuB,CAAEvB,SAAF,EAAa2B,kBAAb,CAA7B;AACAH,MAAAA,mBAAmB,CAAE5B,EAAE,CAAE,yBAAF,CAAJ,EAAmC;AACrDgC,QAAAA,IAAI,EAAE;AAD+C,OAAnC,CAAnB;AAGA,KALD,CAKE,OAAQC,KAAR,EAAgB;AACjBJ,MAAAA,iBAAiB,CAAEI,KAAK,CAACC,OAAR,EAAiB;AACjCF,QAAAA,IAAI,EAAE;AAD2B,OAAjB,CAAjB;AAGA;AACD,GAZ2B,EAa5B,CAAE5B,SAAF,CAb4B,CAA7B;;AAgBA,MAAK,CAAEM,UAAP,EAAoB;AACnB,WAAO,IAAP;AACA;;AAED,SACC,cAAC,yBAAD,QACG;AAAA,QAAE;AAAEyB,MAAAA;AAAF,KAAF;AAAA,WACD,8BACC,cAAC,QAAD;AACC,MAAA,IAAI,EAAGtC,aADR;AAEC,MAAA,OAAO,EAAG,MAAM;AACfU,QAAAA,cAAc,CAAE,IAAF,CAAd;AACA;AAJF,OAMGP,EAAE,CAAE,wBAAF,CANL,CADD,EASGM,WAAW,IACZ,cAAC,KAAD;AACC,MAAA,KAAK,EAAGN,EAAE,CAAE,uBAAF,CADX;AAEC,MAAA,UAAU,EAAGA,EAAE,CAAE,OAAF,CAFhB;AAGC,MAAA,cAAc,EAAG,MAAM;AACtBO,QAAAA,cAAc,CAAE,KAAF,CAAd;AACAE,QAAAA,QAAQ,CAAE,EAAF,CAAR;AACA,OANF;AAOC,MAAA,gBAAgB,EAAC;AAPlB,OASC;AACC,MAAA,QAAQ,EAAK2B,KAAF,IAAa;AACvBA,QAAAA,KAAK,CAACC,cAAN;AACAP,QAAAA,SAAS,CAAEtB,KAAF,CAAT;AACAD,QAAAA,cAAc,CAAE,KAAF,CAAd;AACAE,QAAAA,QAAQ,CAAE,EAAF,CAAR;AACA0B,QAAAA,OAAO;AACP;AAPF,OASC,cAAC,WAAD;AACC,MAAA,KAAK,EAAGnC,EAAE,CAAE,MAAF,CADX;AAEC,MAAA,KAAK,EAAGQ,KAFT;AAGC,MAAA,QAAQ,EAAGC;AAHZ,MATD,EAcC,cAAC,IAAD;AACC,MAAA,SAAS,EAAC,mDADX;AAEC,MAAA,OAAO,EAAC;AAFT,OAIC,cAAC,QAAD,QACC,cAAC,MAAD;AACC,MAAA,OAAO,EAAC,WADT;AAEC,MAAA,OAAO,EAAG,MAAM;AACfF,QAAAA,cAAc,CAAE,KAAF,CAAd;AACAE,QAAAA,QAAQ,CAAE,EAAF,CAAR;AACA;AALF,OAOGT,EAAE,CAAE,QAAF,CAPL,CADD,CAJD,EAeC,cAAC,QAAD,QACC,cAAC,MAAD;AAAQ,MAAA,OAAO,EAAC,SAAhB;AAA0B,MAAA,IAAI,EAAC;AAA/B,OACGA,EAAE,CAAE,MAAF,CADL,CADD,CAfD,CAdD,CATD,CAVF,CADC;AAAA,GADH,CADD;AAgEA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { hasBlockSupport, isReusableBlock } from '@wordpress/blocks';\nimport {\n\tBlockSettingsMenuControls,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useCallback, useState } from '@wordpress/element';\nimport {\n\tMenuItem,\n\tModal,\n\tButton,\n\tTextControl,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { reusableBlock } from '@wordpress/icons';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store } from '../../store';\n\n/**\n * Menu control to convert block(s) to reusable block.\n *\n * @param {Object} props Component props.\n * @param {string[]} props.clientIds Client ids of selected blocks.\n * @param {string} props.rootClientId ID of the currently selected top-level block.\n * @return {import('@wordpress/element').WPComponent} The menu control or null.\n */\nexport default function ReusableBlockConvertButton( {\n\tclientIds,\n\trootClientId,\n} ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst [ title, setTitle ] = useState( '' );\n\tconst canConvert = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst { getBlocksByClientId, canInsertBlockType } = select(\n\t\t\t\tblockEditorStore\n\t\t\t);\n\n\t\t\tconst blocks = getBlocksByClientId( clientIds ) ?? [];\n\n\t\t\tconst isReusable =\n\t\t\t\tblocks.length === 1 &&\n\t\t\t\tblocks[ 0 ] &&\n\t\t\t\tisReusableBlock( blocks[ 0 ] ) &&\n\t\t\t\t!! select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblocks[ 0 ].attributes.ref\n\t\t\t\t);\n\n\t\t\tconst _canConvert =\n\t\t\t\t// Hide when this is already a reusable block.\n\t\t\t\t! isReusable &&\n\t\t\t\t// Hide when reusable blocks are disabled.\n\t\t\t\tcanInsertBlockType( 'core/block', rootClientId ) &&\n\t\t\t\tblocks.every(\n\t\t\t\t\t( block ) =>\n\t\t\t\t\t\t// Guard against the case where a regular block has *just* been converted.\n\t\t\t\t\t\t!! block &&\n\t\t\t\t\t\t// Hide on invalid blocks.\n\t\t\t\t\t\tblock.isValid &&\n\t\t\t\t\t\t// Hide when block doesn't support being made reusable.\n\t\t\t\t\t\thasBlockSupport( block.name, 'reusable', true )\n\t\t\t\t) &&\n\t\t\t\t// Hide when current doesn't have permission to do that.\n\t\t\t\t!! canUser( 'create', 'blocks' );\n\n\t\t\treturn _canConvert;\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst {\n\t\t__experimentalConvertBlocksToReusable: convertBlocksToReusable,\n\t} = useDispatch( store );\n\n\tconst { createSuccessNotice, createErrorNotice } = useDispatch(\n\t\tnoticesStore\n\t);\n\tconst onConvert = useCallback(\n\t\tasync function ( reusableBlockTitle ) {\n\t\t\ttry {\n\t\t\t\tawait convertBlocksToReusable( clientIds, reusableBlockTitle );\n\t\t\t\tcreateSuccessNotice( __( 'Reusable block created.' ), {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t} catch ( error ) {\n\t\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tif ( ! canConvert ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSettingsMenuControls>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\ticon={ reusableBlock }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetIsModalOpen( true );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Add to Reusable blocks' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t\t{ isModalOpen && (\n\t\t\t\t\t\t<Modal\n\t\t\t\t\t\t\ttitle={ __( 'Create Reusable block' ) }\n\t\t\t\t\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\t\t\t\t\tonRequestClose={ () => {\n\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\toverlayClassName=\"reusable-blocks-menu-items__convert-modal\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<form\n\t\t\t\t\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\tonConvert( title );\n\t\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\tclassName=\"reusable-blocks-menu-items__convert-modal-actions\"\n\t\t\t\t\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t\t\t<Button variant=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t</Modal>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</BlockSettingsMenuControls>\n\t);\n}\n"]}
@@ -16,9 +16,10 @@ import { store as coreStore } from '@wordpress/core-data';
16
16
 
17
17
  import { store as reusableBlocksStore } from '../../store';
18
18
 
19
- function ReusableBlocksManageButton({
20
- clientId
21
- }) {
19
+ function ReusableBlocksManageButton(_ref) {
20
+ let {
21
+ clientId
22
+ } = _ref;
22
23
  const {
23
24
  isVisible
24
25
  } = useSelect(select => {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js"],"names":["MenuItem","__","isReusableBlock","useSelect","useDispatch","BlockSettingsMenuControls","store","blockEditorStore","addQueryArgs","coreStore","reusableBlocksStore","ReusableBlocksManageButton","clientId","isVisible","select","getBlock","canUser","reusableBlock","attributes","ref","__experimentalConvertBlockToStatic","convertBlockToStatic","post_type"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,QAAT,QAAyB,uBAAzB;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,eAAT,QAAgC,mBAAhC;AACA,SAASC,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AACA,SACCC,yBADD,EAECC,KAAK,IAAIC,gBAFV,QAGO,yBAHP;AAIA,SAASC,YAAT,QAA6B,gBAA7B;AACA,SAASF,KAAK,IAAIG,SAAlB,QAAmC,sBAAnC;AAEA;AACA;AACA;;AACA,SAASH,KAAK,IAAII,mBAAlB,QAA6C,aAA7C;;AAEA,SAASC,0BAAT,CAAqC;AAAEC,EAAAA;AAAF,CAArC,EAAoD;AACnD,QAAM;AAAEC,IAAAA;AAAF,MAAgBV,SAAS,CAC5BW,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA;AAAF,QAAeD,MAAM,CAAEP,gBAAF,CAA3B;AACA,UAAM;AAAES,MAAAA;AAAF,QAAcF,MAAM,CAAEL,SAAF,CAA1B;AACA,UAAMQ,aAAa,GAAGF,QAAQ,CAAEH,QAAF,CAA9B;AAEA,WAAO;AACNC,MAAAA,SAAS,EACR,CAAC,CAAEI,aAAH,IACAf,eAAe,CAAEe,aAAF,CADf,IAEA,CAAC,CAAED,OAAO,CACT,QADS,EAET,QAFS,EAGTC,aAAa,CAACC,UAAd,CAAyBC,GAHhB;AAJL,KAAP;AAUA,GAhB6B,EAiB9B,CAAEP,QAAF,CAjB8B,CAA/B;AAoBA,QAAM;AACLQ,IAAAA,kCAAkC,EAAEC;AAD/B,MAEFjB,WAAW,CAAEM,mBAAF,CAFf;;AAIA,MAAK,CAAEG,SAAP,EAAmB;AAClB,WAAO,IAAP;AACA;;AAED,SACC,cAAC,yBAAD,QACC,cAAC,QAAD;AACC,IAAA,IAAI,EAAGL,YAAY,CAAE,UAAF,EAAc;AAAEc,MAAAA,SAAS,EAAE;AAAb,KAAd;AADpB,KAGGrB,EAAE,CAAE,wBAAF,CAHL,CADD,EAMC,cAAC,QAAD;AAAU,IAAA,OAAO,EAAG,MAAMoB,oBAAoB,CAAET,QAAF;AAA9C,KACGX,EAAE,CAAE,2BAAF,CADL,CAND,CADD;AAYA;;AAED,eAAeU,0BAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { isReusableBlock } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tBlockSettingsMenuControls,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { addQueryArgs } from '@wordpress/url';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as reusableBlocksStore } from '../../store';\n\nfunction ReusableBlocksManageButton( { clientId } ) {\n\tconst { isVisible } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock } = select( blockEditorStore );\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst reusableBlock = getBlock( clientId );\n\n\t\t\treturn {\n\t\t\t\tisVisible:\n\t\t\t\t\t!! reusableBlock &&\n\t\t\t\t\tisReusableBlock( reusableBlock ) &&\n\t\t\t\t\t!! canUser(\n\t\t\t\t\t\t'update',\n\t\t\t\t\t\t'blocks',\n\t\t\t\t\t\treusableBlock.attributes.ref\n\t\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst {\n\t\t__experimentalConvertBlockToStatic: convertBlockToStatic,\n\t} = useDispatch( reusableBlocksStore );\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSettingsMenuControls>\n\t\t\t<MenuItem\n\t\t\t\thref={ addQueryArgs( 'edit.php', { post_type: 'wp_block' } ) }\n\t\t\t>\n\t\t\t\t{ __( 'Manage Reusable blocks' ) }\n\t\t\t</MenuItem>\n\t\t\t<MenuItem onClick={ () => convertBlockToStatic( clientId ) }>\n\t\t\t\t{ __( 'Convert to regular blocks' ) }\n\t\t\t</MenuItem>\n\t\t</BlockSettingsMenuControls>\n\t);\n}\n\nexport default ReusableBlocksManageButton;\n"]}
1
+ {"version":3,"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js"],"names":["MenuItem","__","isReusableBlock","useSelect","useDispatch","BlockSettingsMenuControls","store","blockEditorStore","addQueryArgs","coreStore","reusableBlocksStore","ReusableBlocksManageButton","clientId","isVisible","select","getBlock","canUser","reusableBlock","attributes","ref","__experimentalConvertBlockToStatic","convertBlockToStatic","post_type"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,QAAT,QAAyB,uBAAzB;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,eAAT,QAAgC,mBAAhC;AACA,SAASC,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AACA,SACCC,yBADD,EAECC,KAAK,IAAIC,gBAFV,QAGO,yBAHP;AAIA,SAASC,YAAT,QAA6B,gBAA7B;AACA,SAASF,KAAK,IAAIG,SAAlB,QAAmC,sBAAnC;AAEA;AACA;AACA;;AACA,SAASH,KAAK,IAAII,mBAAlB,QAA6C,aAA7C;;AAEA,SAASC,0BAAT,OAAoD;AAAA,MAAf;AAAEC,IAAAA;AAAF,GAAe;AACnD,QAAM;AAAEC,IAAAA;AAAF,MAAgBV,SAAS,CAC5BW,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA;AAAF,QAAeD,MAAM,CAAEP,gBAAF,CAA3B;AACA,UAAM;AAAES,MAAAA;AAAF,QAAcF,MAAM,CAAEL,SAAF,CAA1B;AACA,UAAMQ,aAAa,GAAGF,QAAQ,CAAEH,QAAF,CAA9B;AAEA,WAAO;AACNC,MAAAA,SAAS,EACR,CAAC,CAAEI,aAAH,IACAf,eAAe,CAAEe,aAAF,CADf,IAEA,CAAC,CAAED,OAAO,CACT,QADS,EAET,QAFS,EAGTC,aAAa,CAACC,UAAd,CAAyBC,GAHhB;AAJL,KAAP;AAUA,GAhB6B,EAiB9B,CAAEP,QAAF,CAjB8B,CAA/B;AAoBA,QAAM;AACLQ,IAAAA,kCAAkC,EAAEC;AAD/B,MAEFjB,WAAW,CAAEM,mBAAF,CAFf;;AAIA,MAAK,CAAEG,SAAP,EAAmB;AAClB,WAAO,IAAP;AACA;;AAED,SACC,cAAC,yBAAD,QACC,cAAC,QAAD;AACC,IAAA,IAAI,EAAGL,YAAY,CAAE,UAAF,EAAc;AAAEc,MAAAA,SAAS,EAAE;AAAb,KAAd;AADpB,KAGGrB,EAAE,CAAE,wBAAF,CAHL,CADD,EAMC,cAAC,QAAD;AAAU,IAAA,OAAO,EAAG,MAAMoB,oBAAoB,CAAET,QAAF;AAA9C,KACGX,EAAE,CAAE,2BAAF,CADL,CAND,CADD;AAYA;;AAED,eAAeU,0BAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { isReusableBlock } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tBlockSettingsMenuControls,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { addQueryArgs } from '@wordpress/url';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as reusableBlocksStore } from '../../store';\n\nfunction ReusableBlocksManageButton( { clientId } ) {\n\tconst { isVisible } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock } = select( blockEditorStore );\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst reusableBlock = getBlock( clientId );\n\n\t\t\treturn {\n\t\t\t\tisVisible:\n\t\t\t\t\t!! reusableBlock &&\n\t\t\t\t\tisReusableBlock( reusableBlock ) &&\n\t\t\t\t\t!! canUser(\n\t\t\t\t\t\t'update',\n\t\t\t\t\t\t'blocks',\n\t\t\t\t\t\treusableBlock.attributes.ref\n\t\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst {\n\t\t__experimentalConvertBlockToStatic: convertBlockToStatic,\n\t} = useDispatch( reusableBlocksStore );\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockSettingsMenuControls>\n\t\t\t<MenuItem\n\t\t\t\thref={ addQueryArgs( 'edit.php', { post_type: 'wp_block' } ) }\n\t\t\t>\n\t\t\t\t{ __( 'Manage Reusable blocks' ) }\n\t\t\t</MenuItem>\n\t\t\t<MenuItem onClick={ () => convertBlockToStatic( clientId ) }>\n\t\t\t\t{ __( 'Convert to regular blocks' ) }\n\t\t\t</MenuItem>\n\t\t</BlockSettingsMenuControls>\n\t);\n}\n\nexport default ReusableBlocksManageButton;\n"]}
@@ -15,9 +15,10 @@ import { __ } from '@wordpress/i18n';
15
15
  * @param {string} clientId The client ID of the block to attach.
16
16
  */
17
17
 
18
- export const __experimentalConvertBlockToStatic = clientId => ({
19
- registry
20
- }) => {
18
+ export const __experimentalConvertBlockToStatic = clientId => _ref => {
19
+ let {
20
+ registry
21
+ } = _ref;
21
22
  const oldBlock = registry.select(blockEditorStore).getBlock(clientId);
22
23
  const reusableBlock = registry.select('core').getEditedEntityRecord('postType', 'wp_block', oldBlock.attributes.ref);
23
24
  const newBlocks = parse(isFunction(reusableBlock.content) ? reusableBlock.content(reusableBlock) : reusableBlock.content);
@@ -30,10 +31,11 @@ export const __experimentalConvertBlockToStatic = clientId => ({
30
31
  * @param {string} title Reusable block title.
31
32
  */
32
33
 
33
- export const __experimentalConvertBlocksToReusable = (clientIds, title) => async ({
34
- registry,
35
- dispatch
36
- }) => {
34
+ export const __experimentalConvertBlocksToReusable = (clientIds, title) => async _ref2 => {
35
+ let {
36
+ registry,
37
+ dispatch
38
+ } = _ref2;
37
39
  const reusableBlock = {
38
40
  title: title || __('Untitled Reusable block'),
39
41
  content: serialize(registry.select(blockEditorStore).getBlocksByClientId(clientIds)),
@@ -53,9 +55,10 @@ export const __experimentalConvertBlocksToReusable = (clientIds, title) => async
53
55
  * @param {string} id The ID of the reusable block to delete.
54
56
  */
55
57
 
56
- export const __experimentalDeleteReusableBlock = id => async ({
57
- registry
58
- }) => {
58
+ export const __experimentalDeleteReusableBlock = id => async _ref3 => {
59
+ let {
60
+ registry
61
+ } = _ref3;
59
62
  const reusableBlock = registry.select('core').getEditedEntityRecord('postType', 'wp_block', id); // Don't allow a reusable block with a temporary ID to be deleted
60
63
 
61
64
  if (!reusableBlock) {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/reusable-blocks/src/store/actions.js"],"names":["isFunction","store","blockEditorStore","createBlock","isReusableBlock","parse","serialize","__","__experimentalConvertBlockToStatic","clientId","registry","oldBlock","select","getBlock","reusableBlock","getEditedEntityRecord","attributes","ref","newBlocks","content","dispatch","replaceBlocks","__experimentalConvertBlocksToReusable","clientIds","title","getBlocksByClientId","status","updatedRecord","saveEntityRecord","newBlock","id","__experimentalSetEditingReusableBlock","__experimentalDeleteReusableBlock","allBlocks","getBlocks","associatedBlocks","filter","block","associatedBlockClientIds","map","length","removeBlocks","deleteEntityRecord","isEditing","type"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { isFunction } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport {\n\tcreateBlock,\n\tisReusableBlock,\n\tparse,\n\tserialize,\n} from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Returns a generator converting a reusable block into a static block.\n *\n * @param {string} clientId The client ID of the block to attach.\n */\nexport const __experimentalConvertBlockToStatic = ( clientId ) => ( {\n\tregistry,\n} ) => {\n\tconst oldBlock = registry.select( blockEditorStore ).getBlock( clientId );\n\tconst reusableBlock = registry\n\t\t.select( 'core' )\n\t\t.getEditedEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_block',\n\t\t\toldBlock.attributes.ref\n\t\t);\n\n\tconst newBlocks = parse(\n\t\tisFunction( reusableBlock.content )\n\t\t\t? reusableBlock.content( reusableBlock )\n\t\t\t: reusableBlock.content\n\t);\n\tregistry\n\t\t.dispatch( blockEditorStore )\n\t\t.replaceBlocks( oldBlock.clientId, newBlocks );\n};\n\n/**\n * Returns a generator converting one or more static blocks into a reusable block.\n *\n * @param {string[]} clientIds The client IDs of the block to detach.\n * @param {string} title Reusable block title.\n */\nexport const __experimentalConvertBlocksToReusable = (\n\tclientIds,\n\ttitle\n) => async ( { registry, dispatch } ) => {\n\tconst reusableBlock = {\n\t\ttitle: title || __( 'Untitled Reusable block' ),\n\t\tcontent: serialize(\n\t\t\tregistry.select( blockEditorStore ).getBlocksByClientId( clientIds )\n\t\t),\n\t\tstatus: 'publish',\n\t};\n\n\tconst updatedRecord = await registry\n\t\t.dispatch( 'core' )\n\t\t.saveEntityRecord( 'postType', 'wp_block', reusableBlock );\n\n\tconst newBlock = createBlock( 'core/block', {\n\t\tref: updatedRecord.id,\n\t} );\n\tregistry.dispatch( blockEditorStore ).replaceBlocks( clientIds, newBlock );\n\tdispatch.__experimentalSetEditingReusableBlock( newBlock.clientId, true );\n};\n\n/**\n * Returns a generator deleting a reusable block.\n *\n * @param {string} id The ID of the reusable block to delete.\n */\nexport const __experimentalDeleteReusableBlock = ( id ) => async ( {\n\tregistry,\n} ) => {\n\tconst reusableBlock = registry\n\t\t.select( 'core' )\n\t\t.getEditedEntityRecord( 'postType', 'wp_block', id );\n\n\t// Don't allow a reusable block with a temporary ID to be deleted\n\tif ( ! reusableBlock ) {\n\t\treturn;\n\t}\n\n\t// Remove any other blocks that reference this reusable block\n\tconst allBlocks = registry.select( blockEditorStore ).getBlocks();\n\tconst associatedBlocks = allBlocks.filter(\n\t\t( block ) => isReusableBlock( block ) && block.attributes.ref === id\n\t);\n\tconst associatedBlockClientIds = associatedBlocks.map(\n\t\t( block ) => block.clientId\n\t);\n\n\t// Remove the parsed block.\n\tif ( associatedBlockClientIds.length ) {\n\t\tregistry\n\t\t\t.dispatch( blockEditorStore )\n\t\t\t.removeBlocks( associatedBlockClientIds );\n\t}\n\n\tawait registry\n\t\t.dispatch( 'core' )\n\t\t.deleteEntityRecord( 'postType', 'wp_block', id );\n};\n\n/**\n * Returns an action descriptor for SET_EDITING_REUSABLE_BLOCK action.\n *\n * @param {string} clientId The clientID of the reusable block to target.\n * @param {boolean} isEditing Whether the block should be in editing state.\n * @return {Object} Action descriptor.\n */\nexport function __experimentalSetEditingReusableBlock( clientId, isEditing ) {\n\treturn {\n\t\ttype: 'SET_EDITING_REUSABLE_BLOCK',\n\t\tclientId,\n\t\tisEditing,\n\t};\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/reusable-blocks/src/store/actions.js"],"names":["isFunction","store","blockEditorStore","createBlock","isReusableBlock","parse","serialize","__","__experimentalConvertBlockToStatic","clientId","registry","oldBlock","select","getBlock","reusableBlock","getEditedEntityRecord","attributes","ref","newBlocks","content","dispatch","replaceBlocks","__experimentalConvertBlocksToReusable","clientIds","title","getBlocksByClientId","status","updatedRecord","saveEntityRecord","newBlock","id","__experimentalSetEditingReusableBlock","__experimentalDeleteReusableBlock","allBlocks","getBlocks","associatedBlocks","filter","block","associatedBlockClientIds","map","length","removeBlocks","deleteEntityRecord","isEditing","type"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { isFunction } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport {\n\tcreateBlock,\n\tisReusableBlock,\n\tparse,\n\tserialize,\n} from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Returns a generator converting a reusable block into a static block.\n *\n * @param {string} clientId The client ID of the block to attach.\n */\nexport const __experimentalConvertBlockToStatic = ( clientId ) => ( {\n\tregistry,\n} ) => {\n\tconst oldBlock = registry.select( blockEditorStore ).getBlock( clientId );\n\tconst reusableBlock = registry\n\t\t.select( 'core' )\n\t\t.getEditedEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_block',\n\t\t\toldBlock.attributes.ref\n\t\t);\n\n\tconst newBlocks = parse(\n\t\tisFunction( reusableBlock.content )\n\t\t\t? reusableBlock.content( reusableBlock )\n\t\t\t: reusableBlock.content\n\t);\n\tregistry\n\t\t.dispatch( blockEditorStore )\n\t\t.replaceBlocks( oldBlock.clientId, newBlocks );\n};\n\n/**\n * Returns a generator converting one or more static blocks into a reusable block.\n *\n * @param {string[]} clientIds The client IDs of the block to detach.\n * @param {string} title Reusable block title.\n */\nexport const __experimentalConvertBlocksToReusable = (\n\tclientIds,\n\ttitle\n) => async ( { registry, dispatch } ) => {\n\tconst reusableBlock = {\n\t\ttitle: title || __( 'Untitled Reusable block' ),\n\t\tcontent: serialize(\n\t\t\tregistry.select( blockEditorStore ).getBlocksByClientId( clientIds )\n\t\t),\n\t\tstatus: 'publish',\n\t};\n\n\tconst updatedRecord = await registry\n\t\t.dispatch( 'core' )\n\t\t.saveEntityRecord( 'postType', 'wp_block', reusableBlock );\n\n\tconst newBlock = createBlock( 'core/block', {\n\t\tref: updatedRecord.id,\n\t} );\n\tregistry.dispatch( blockEditorStore ).replaceBlocks( clientIds, newBlock );\n\tdispatch.__experimentalSetEditingReusableBlock( newBlock.clientId, true );\n};\n\n/**\n * Returns a generator deleting a reusable block.\n *\n * @param {string} id The ID of the reusable block to delete.\n */\nexport const __experimentalDeleteReusableBlock = ( id ) => async ( {\n\tregistry,\n} ) => {\n\tconst reusableBlock = registry\n\t\t.select( 'core' )\n\t\t.getEditedEntityRecord( 'postType', 'wp_block', id );\n\n\t// Don't allow a reusable block with a temporary ID to be deleted\n\tif ( ! reusableBlock ) {\n\t\treturn;\n\t}\n\n\t// Remove any other blocks that reference this reusable block\n\tconst allBlocks = registry.select( blockEditorStore ).getBlocks();\n\tconst associatedBlocks = allBlocks.filter(\n\t\t( block ) => isReusableBlock( block ) && block.attributes.ref === id\n\t);\n\tconst associatedBlockClientIds = associatedBlocks.map(\n\t\t( block ) => block.clientId\n\t);\n\n\t// Remove the parsed block.\n\tif ( associatedBlockClientIds.length ) {\n\t\tregistry\n\t\t\t.dispatch( blockEditorStore )\n\t\t\t.removeBlocks( associatedBlockClientIds );\n\t}\n\n\tawait registry\n\t\t.dispatch( 'core' )\n\t\t.deleteEntityRecord( 'postType', 'wp_block', id );\n};\n\n/**\n * Returns an action descriptor for SET_EDITING_REUSABLE_BLOCK action.\n *\n * @param {string} clientId The clientID of the reusable block to target.\n * @param {boolean} isEditing Whether the block should be in editing state.\n * @return {Object} Action descriptor.\n */\nexport function __experimentalSetEditingReusableBlock( clientId, isEditing ) {\n\treturn {\n\t\ttype: 'SET_EDITING_REUSABLE_BLOCK',\n\t\tclientId,\n\t\tisEditing,\n\t};\n}\n"]}
@@ -2,7 +2,10 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { combineReducers } from '@wordpress/data';
5
- export function isEditingReusableBlock(state = {}, action) {
5
+ export function isEditingReusableBlock() {
6
+ let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7
+ let action = arguments.length > 1 ? arguments[1] : undefined;
8
+
6
9
  if ((action === null || action === void 0 ? void 0 : action.type) === 'SET_EDITING_REUSABLE_BLOCK') {
7
10
  return { ...state,
8
11
  [action.clientId]: action.isEditing
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/reusable-blocks/src/store/reducer.js"],"names":["combineReducers","isEditingReusableBlock","state","action","type","clientId","isEditing"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,eAAT,QAAgC,iBAAhC;AAEA,OAAO,SAASC,sBAAT,CAAiCC,KAAK,GAAG,EAAzC,EAA6CC,MAA7C,EAAsD;AAC5D,MAAK,CAAAA,MAAM,SAAN,IAAAA,MAAM,WAAN,YAAAA,MAAM,CAAEC,IAAR,MAAiB,4BAAtB,EAAqD;AACpD,WAAO,EACN,GAAGF,KADG;AAEN,OAAEC,MAAM,CAACE,QAAT,GAAqBF,MAAM,CAACG;AAFtB,KAAP;AAIA;;AAED,SAAOJ,KAAP;AACA;AAED,eAAeF,eAAe,CAAE;AAC/BC,EAAAA;AAD+B,CAAF,CAA9B","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\n\nexport function isEditingReusableBlock( state = {}, action ) {\n\tif ( action?.type === 'SET_EDITING_REUSABLE_BLOCK' ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t[ action.clientId ]: action.isEditing,\n\t\t};\n\t}\n\n\treturn state;\n}\n\nexport default combineReducers( {\n\tisEditingReusableBlock,\n} );\n"]}
1
+ {"version":3,"sources":["@wordpress/reusable-blocks/src/store/reducer.js"],"names":["combineReducers","isEditingReusableBlock","state","action","type","clientId","isEditing"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,eAAT,QAAgC,iBAAhC;AAEA,OAAO,SAASC,sBAAT,GAAsD;AAAA,MAArBC,KAAqB,uEAAb,EAAa;AAAA,MAATC,MAAS;;AAC5D,MAAK,CAAAA,MAAM,SAAN,IAAAA,MAAM,WAAN,YAAAA,MAAM,CAAEC,IAAR,MAAiB,4BAAtB,EAAqD;AACpD,WAAO,EACN,GAAGF,KADG;AAEN,OAAEC,MAAM,CAACE,QAAT,GAAqBF,MAAM,CAACG;AAFtB,KAAP;AAIA;;AAED,SAAOJ,KAAP;AACA;AAED,eAAeF,eAAe,CAAE;AAC/BC,EAAAA;AAD+B,CAAF,CAA9B","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\n\nexport function isEditingReusableBlock( state = {}, action ) {\n\tif ( action?.type === 'SET_EDITING_REUSABLE_BLOCK' ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t[ action.clientId ]: action.isEditing,\n\t\t};\n\t}\n\n\treturn state;\n}\n\nexport default combineReducers( {\n\tisEditingReusableBlock,\n} );\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/reusable-blocks",
3
- "version": "3.0.7",
3
+ "version": "3.0.8",
4
4
  "description": "Reusable blocks utilities.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -28,21 +28,21 @@
28
28
  "{src,build,build-module}/{index.js,store/index.js}"
29
29
  ],
30
30
  "dependencies": {
31
- "@wordpress/block-editor": "^8.0.1",
32
- "@wordpress/blocks": "^11.1.3",
33
- "@wordpress/components": "^19.0.1",
34
- "@wordpress/compose": "^5.0.5",
35
- "@wordpress/core-data": "^4.0.6",
36
- "@wordpress/data": "^6.1.3",
37
- "@wordpress/element": "^4.0.3",
38
- "@wordpress/i18n": "^4.2.3",
39
- "@wordpress/icons": "^6.1.0",
40
- "@wordpress/notices": "^3.2.6",
41
- "@wordpress/url": "^3.3.0",
31
+ "@wordpress/block-editor": "^8.0.2",
32
+ "@wordpress/blocks": "^11.1.4",
33
+ "@wordpress/components": "^19.0.2",
34
+ "@wordpress/compose": "^5.0.6",
35
+ "@wordpress/core-data": "^4.0.7",
36
+ "@wordpress/data": "^6.1.4",
37
+ "@wordpress/element": "^4.0.4",
38
+ "@wordpress/i18n": "^4.2.4",
39
+ "@wordpress/icons": "^6.1.1",
40
+ "@wordpress/notices": "^3.2.7",
41
+ "@wordpress/url": "^3.3.1",
42
42
  "lodash": "^4.17.21"
43
43
  },
44
44
  "publishConfig": {
45
45
  "access": "public"
46
46
  },
47
- "gitHead": "68d15d606a5ebcbea3977f39b0e758bcf282b96a"
47
+ "gitHead": "9a1dd3474d937468e4cf9caf9886ad61ef0a8f50"
48
48
  }