@wordpress/reusable-blocks 5.34.0 → 5.35.0

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 (43) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/index.js +2 -0
  3. package/build/components/index.js.map +1 -1
  4. package/build/components/reusable-blocks-menu-items/index.js +3 -1
  5. package/build/components/reusable-blocks-menu-items/index.js.map +1 -1
  6. package/build/components/reusable-blocks-menu-items/reusable-block-convert-button.js +3 -1
  7. package/build/components/reusable-blocks-menu-items/reusable-block-convert-button.js.map +1 -1
  8. package/build/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js +4 -2
  9. package/build/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js.map +2 -2
  10. package/build/index.js +2 -0
  11. package/build/index.js.map +1 -1
  12. package/build/lock-unlock.js +3 -1
  13. package/build/lock-unlock.js.map +1 -1
  14. package/build/store/actions.js +5 -3
  15. package/build/store/actions.js.map +1 -1
  16. package/build/store/index.js +4 -2
  17. package/build/store/index.js.map +1 -1
  18. package/build/store/reducer.js +2 -0
  19. package/build/store/reducer.js.map +1 -1
  20. package/build/store/selectors.js +2 -0
  21. package/build/store/selectors.js.map +1 -1
  22. package/build-module/components/index.js +1 -0
  23. package/build-module/components/index.js.map +1 -1
  24. package/build-module/components/reusable-blocks-menu-items/index.js +2 -1
  25. package/build-module/components/reusable-blocks-menu-items/index.js.map +1 -1
  26. package/build-module/components/reusable-blocks-menu-items/reusable-block-convert-button.js +2 -1
  27. package/build-module/components/reusable-blocks-menu-items/reusable-block-convert-button.js.map +1 -1
  28. package/build-module/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js +3 -2
  29. package/build-module/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js.map +2 -2
  30. package/build-module/index.js +1 -0
  31. package/build-module/index.js.map +1 -1
  32. package/build-module/lock-unlock.js +2 -1
  33. package/build-module/lock-unlock.js.map +1 -1
  34. package/build-module/store/actions.js +4 -3
  35. package/build-module/store/actions.js.map +1 -1
  36. package/build-module/store/index.js +3 -2
  37. package/build-module/store/index.js.map +1 -1
  38. package/build-module/store/reducer.js +1 -0
  39. package/build-module/store/reducer.js.map +1 -1
  40. package/build-module/store/selectors.js +1 -0
  41. package/build-module/store/selectors.js.map +1 -1
  42. package/package.json +14 -14
  43. package/src/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 5.35.0 (2025-11-12)
6
+
5
7
  ## 5.34.0 (2025-10-29)
6
8
 
7
9
  ## 5.33.0 (2025-10-17)
@@ -25,6 +25,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
25
25
  mod
26
26
  ));
27
27
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // packages/reusable-blocks/src/components/index.js
28
30
  var components_exports = {};
29
31
  __export(components_exports, {
30
32
  ReusableBlocksMenuItems: () => import_reusable_blocks_menu_items.default
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/components/index.js"],
4
4
  "sourcesContent": ["export { default as ReusableBlocksMenuItems } from './reusable-blocks-menu-items';\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wCAAmD;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wCAAmD;",
6
6
  "names": []
7
7
  }
@@ -25,15 +25,17 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
25
25
  mod
26
26
  ));
27
27
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // packages/reusable-blocks/src/components/reusable-blocks-menu-items/index.js
28
30
  var reusable_blocks_menu_items_exports = {};
29
31
  __export(reusable_blocks_menu_items_exports, {
30
32
  default: () => ReusableBlocksMenuItems
31
33
  });
32
34
  module.exports = __toCommonJS(reusable_blocks_menu_items_exports);
33
- var import_jsx_runtime = require("react/jsx-runtime");
34
35
  var import_block_editor = require("@wordpress/block-editor");
35
36
  var import_reusable_block_convert_button = __toESM(require("./reusable-block-convert-button"));
36
37
  var import_reusable_blocks_manage_button = __toESM(require("./reusable-blocks-manage-button"));
38
+ var import_jsx_runtime = require("react/jsx-runtime");
37
39
  function ReusableBlocksMenuItems({ rootClientId }) {
38
40
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_editor.BlockSettingsMenuControls, { children: ({ onClose, selectedClientIds }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
39
41
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/reusable-blocks-menu-items/index.js"],
4
4
  "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { BlockSettingsMenuControls } 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\nexport default function ReusableBlocksMenuItems( { rootClientId } ) {\n\treturn (\n\t\t<BlockSettingsMenuControls>\n\t\t\t{ ( { onClose, selectedClientIds } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<ReusableBlockConvertButton\n\t\t\t\t\t\tclientIds={ selectedClientIds }\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t/>\n\t\t\t\t\t{ selectedClientIds.length === 1 && (\n\t\t\t\t\t\t<ReusableBlocksManageButton\n\t\t\t\t\t\t\tclientId={ selectedClientIds[ 0 ] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</BlockSettingsMenuControls>\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAeI;AAZJ,0BAA0C;AAK1C,2CAAuC;AACvC,2CAAuC;AAExB,SAAR,wBAA0C,EAAE,aAAa,GAAI;AACnE,SACC,4CAAC,iDACE,WAAE,EAAE,SAAS,kBAAkB,MAChC,4EACC;AAAA;AAAA,MAAC,qCAAAA;AAAA,MAAA;AAAA,QACA,WAAY;AAAA,QACZ;AAAA,QACA;AAAA;AAAA,IACD;AAAA,IACE,kBAAkB,WAAW,KAC9B;AAAA,MAAC,qCAAAC;AAAA,MAAA;AAAA,QACA,UAAW,kBAAmB,CAAE;AAAA;AAAA,IACjC;AAAA,KAEF,GAEF;AAEF;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,0BAA0C;AAK1C,2CAAuC;AACvC,2CAAuC;AAMnC;AAJW,SAAR,wBAA0C,EAAE,aAAa,GAAI;AACnE,SACC,4CAAC,iDACE,WAAE,EAAE,SAAS,kBAAkB,MAChC,4EACC;AAAA;AAAA,MAAC,qCAAAA;AAAA,MAAA;AAAA,QACA,WAAY;AAAA,QACZ;AAAA,QACA;AAAA;AAAA,IACD;AAAA,IACE,kBAAkB,WAAW,KAC9B;AAAA,MAAC,qCAAAC;AAAA,MAAA;AAAA,QACA,UAAW,kBAAmB,CAAE;AAAA;AAAA,IACjC;AAAA,KAEF,GAEF;AAEF;",
6
6
  "names": ["ReusableBlockConvertButton", "ReusableBlocksManageButton"]
7
7
  }
@@ -15,12 +15,13 @@ var __copyProps = (to, from, except, desc) => {
15
15
  return to;
16
16
  };
17
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // packages/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-block-convert-button.js
18
20
  var reusable_block_convert_button_exports = {};
19
21
  __export(reusable_block_convert_button_exports, {
20
22
  default: () => ReusableBlockConvertButton
21
23
  });
22
24
  module.exports = __toCommonJS(reusable_block_convert_button_exports);
23
- var import_jsx_runtime = require("react/jsx-runtime");
24
25
  var import_blocks = require("@wordpress/blocks");
25
26
  var import_block_editor = require("@wordpress/block-editor");
26
27
  var import_element = require("@wordpress/element");
@@ -31,6 +32,7 @@ var import_i18n = require("@wordpress/i18n");
31
32
  var import_notices = require("@wordpress/notices");
32
33
  var import_core_data = require("@wordpress/core-data");
33
34
  var import_store = require("../../store");
35
+ var import_jsx_runtime = require("react/jsx-runtime");
34
36
  function ReusableBlockConvertButton({
35
37
  clientIds,
36
38
  rootClientId,
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/reusable-blocks-menu-items/reusable-block-convert-button.js"],
4
4
  "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { hasBlockSupport, isReusableBlock } from '@wordpress/blocks';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useCallback, useState } from '@wordpress/element';\nimport {\n\tMenuItem,\n\tModal,\n\tButton,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tToggleControl,\n} from '@wordpress/components';\nimport { symbol } from '@wordpress/icons';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __, _x, sprintf } 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 * @param {()=>void} props.onClose Callback to close the menu.\n * @return {import('react').ComponentType} The menu control or null.\n */\nexport default function ReusableBlockConvertButton( {\n\tclientIds,\n\trootClientId,\n\tonClose,\n} ) {\n\tconst [ syncType, setSyncType ] = useState( undefined );\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 {\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst rootId =\n\t\t\t\trootClientId ||\n\t\t\t\t( clientIds.length > 0\n\t\t\t\t\t? getBlockRootClientId( clientIds[ 0 ] )\n\t\t\t\t\t: undefined );\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', rootId ) &&\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// Blocks refers to the wp_block post type, this checks the ability to create a post of that type.\n\t\t\t\t!! canUser( 'create', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_block',\n\t\t\t\t} );\n\n\t\t\treturn _canConvert;\n\t\t},\n\t\t[ clientIds, rootClientId ]\n\t);\n\n\tconst { __experimentalConvertBlocksToReusable: convertBlocksToReusable } =\n\t\tuseDispatch( store );\n\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst onConvert = useCallback(\n\t\tasync function ( reusableBlockTitle ) {\n\t\t\ttry {\n\t\t\t\tawait convertBlocksToReusable(\n\t\t\t\t\tclientIds,\n\t\t\t\t\treusableBlockTitle,\n\t\t\t\t\tsyncType\n\t\t\t\t);\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t! syncType\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: the name the user has given to the pattern.\n\t\t\t\t\t\t\t\t__( 'Synced pattern created: %s' ),\n\t\t\t\t\t\t\t\treusableBlockTitle\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: the name the user has given to the pattern.\n\t\t\t\t\t\t\t\t__( 'Unsynced pattern created: %s' ),\n\t\t\t\t\t\t\t\treusableBlockTitle\n\t\t\t\t\t\t ),\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\tid: 'convert-to-reusable-block-success',\n\t\t\t\t\t}\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\tid: 'convert-to-reusable-block-error',\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tconvertBlocksToReusable,\n\t\t\tclientIds,\n\t\t\tsyncType,\n\t\t\tcreateSuccessNotice,\n\t\t\tcreateErrorNotice,\n\t\t]\n\t);\n\n\tif ( ! canConvert ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem icon={ symbol } onClick={ () => setIsModalOpen( true ) }>\n\t\t\t\t{ __( 'Create pattern' ) }\n\t\t\t</MenuItem>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ __( 'Create pattern' ) }\n\t\t\t\t\tonRequestClose={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t} }\n\t\t\t\t\toverlayClassName=\"reusable-blocks-menu-items__convert-modal\"\n\t\t\t\t>\n\t\t\t\t\t<form\n\t\t\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tonConvert( title );\n\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<VStack spacing=\"5\">\n\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\t\t\tplaceholder={ __( 'My pattern' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ _x( 'Synced', 'pattern (singular)' ) }\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Sync this pattern across multiple locations.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tchecked={ ! syncType }\n\t\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\t\tsetSyncType(\n\t\t\t\t\t\t\t\t\t\t! syncType ? 'unsynced' : undefined\n\t\t\t\t\t\t\t\t\t);\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<HStack justify=\"right\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Create' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t</VStack>\n\t\t\t\t\t</form>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["coreStore", "blockEditorStore", "noticesStore", "VStack", "HStack"]
7
7
  }
@@ -15,12 +15,13 @@ var __copyProps = (to, from, except, desc) => {
15
15
  return to;
16
16
  };
17
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // packages/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js
18
20
  var reusable_blocks_manage_button_exports = {};
19
21
  __export(reusable_blocks_manage_button_exports, {
20
22
  default: () => reusable_blocks_manage_button_default
21
23
  });
22
24
  module.exports = __toCommonJS(reusable_blocks_manage_button_exports);
23
- var import_jsx_runtime = require("react/jsx-runtime");
24
25
  var import_components = require("@wordpress/components");
25
26
  var import_i18n = require("@wordpress/i18n");
26
27
  var import_blocks = require("@wordpress/blocks");
@@ -29,6 +30,7 @@ var import_block_editor = require("@wordpress/block-editor");
29
30
  var import_url = require("@wordpress/url");
30
31
  var import_core_data = require("@wordpress/core-data");
31
32
  var import_store = require("../../store");
33
+ var import_jsx_runtime = require("react/jsx-runtime");
32
34
  function ReusableBlocksManageButton({ clientId }) {
33
35
  const { canRemove, isVisible, managePatternsUrl } = (0, import_data.useSelect)(
34
36
  (select) => {
@@ -63,7 +65,7 @@ function ReusableBlocksManageButton({ clientId }) {
63
65
  }
64
66
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
65
67
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.MenuItem, { href: managePatternsUrl, children: (0, import_i18n.__)("Manage patterns") }),
66
- canRemove && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.MenuItem, { onClick: () => convertBlockToStatic(clientId), children: (0, import_i18n.__)("Detach") })
68
+ canRemove && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.MenuItem, { onClick: () => convertBlockToStatic(clientId), children: (0, import_i18n.__)("Disconnect pattern") })
67
69
  ] });
68
70
  }
69
71
  var reusable_blocks_manage_button_default = ReusableBlocksManageButton;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js"],
4
- "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 { store as blockEditorStore } 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 { canRemove, isVisible, managePatternsUrl } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, canRemoveBlock } = 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\tcanRemove: canRemoveBlock( clientId ),\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( 'update', {\n\t\t\t\t\t\tkind: 'postType',\n\t\t\t\t\t\tname: 'wp_block',\n\t\t\t\t\t\tid: reusableBlock.attributes.ref,\n\t\t\t\t\t} ),\n\t\t\t\t// The site editor and templates both check whether the user\n\t\t\t\t// has edit_theme_options capabilities. We can leverage that here\n\t\t\t\t// and omit the manage patterns link if the user can't access it.\n\t\t\t\tmanagePatternsUrl: canUser( 'create', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_template',\n\t\t\t\t} )\n\t\t\t\t\t? addQueryArgs( 'site-editor.php', {\n\t\t\t\t\t\t\tp: '/pattern',\n\t\t\t\t\t } )\n\t\t\t\t\t: addQueryArgs( 'edit.php', {\n\t\t\t\t\t\t\tpost_type: 'wp_block',\n\t\t\t\t\t } ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { __experimentalConvertBlockToStatic: convertBlockToStatic } =\n\t\tuseDispatch( reusableBlocksStore );\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem href={ managePatternsUrl }>\n\t\t\t\t{ __( 'Manage patterns' ) }\n\t\t\t</MenuItem>\n\t\t\t{ canRemove && (\n\t\t\t\t<MenuItem onClick={ () => convertBlockToStatic( clientId ) }>\n\t\t\t\t\t{ __( 'Detach' ) }\n\t\t\t\t</MenuItem>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default ReusableBlocksManageButton;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA2DE;AAxDF,wBAAyB;AACzB,kBAAmB;AACnB,oBAAgC;AAChC,kBAAuC;AACvC,0BAA0C;AAC1C,iBAA6B;AAC7B,uBAAmC;AAKnC,mBAA6C;AAE7C,SAAS,2BAA4B,EAAE,SAAS,GAAI;AACnD,QAAM,EAAE,WAAW,WAAW,kBAAkB,QAAI;AAAA,IACnD,CAAE,WAAY;AACb,YAAM,EAAE,UAAU,eAAe,IAAI,OAAQ,oBAAAA,KAAiB;AAC9D,YAAM,EAAE,QAAQ,IAAI,OAAQ,iBAAAC,KAAU;AACtC,YAAM,gBAAgB,SAAU,QAAS;AAEzC,aAAO;AAAA,QACN,WAAW,eAAgB,QAAS;AAAA,QACpC,WACC,CAAC,CAAE,qBACH,+BAAiB,aAAc,KAC/B,CAAC,CAAE,QAAS,UAAU;AAAA,UACrB,MAAM;AAAA,UACN,MAAM;AAAA,UACN,IAAI,cAAc,WAAW;AAAA,QAC9B,CAAE;AAAA;AAAA;AAAA;AAAA,QAIH,mBAAmB,QAAS,UAAU;AAAA,UACrC,MAAM;AAAA,UACN,MAAM;AAAA,QACP,CAAE,QACC,yBAAc,mBAAmB;AAAA,UACjC,GAAG;AAAA,QACH,CAAE,QACF,yBAAc,YAAY;AAAA,UAC1B,WAAW;AAAA,QACX,CAAE;AAAA,MACN;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAEA,QAAM,EAAE,oCAAoC,qBAAqB,QAChE,yBAAa,aAAAC,KAAoB;AAElC,MAAK,CAAE,WAAY;AAClB,WAAO;AAAA,EACR;AAEA,SACC,4EACC;AAAA,gDAAC,8BAAS,MAAO,mBACd,8BAAI,iBAAkB,GACzB;AAAA,IACE,aACD,4CAAC,8BAAS,SAAU,MAAM,qBAAsB,QAAS,GACtD,8BAAI,QAAS,GAChB;AAAA,KAEF;AAEF;AAEA,IAAO,wCAAQ;",
4
+ "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 { store as blockEditorStore } 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 { canRemove, isVisible, managePatternsUrl } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, canRemoveBlock } = 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\tcanRemove: canRemoveBlock( clientId ),\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( 'update', {\n\t\t\t\t\t\tkind: 'postType',\n\t\t\t\t\t\tname: 'wp_block',\n\t\t\t\t\t\tid: reusableBlock.attributes.ref,\n\t\t\t\t\t} ),\n\t\t\t\t// The site editor and templates both check whether the user\n\t\t\t\t// has edit_theme_options capabilities. We can leverage that here\n\t\t\t\t// and omit the manage patterns link if the user can't access it.\n\t\t\t\tmanagePatternsUrl: canUser( 'create', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_template',\n\t\t\t\t} )\n\t\t\t\t\t? addQueryArgs( 'site-editor.php', {\n\t\t\t\t\t\t\tp: '/pattern',\n\t\t\t\t\t } )\n\t\t\t\t\t: addQueryArgs( 'edit.php', {\n\t\t\t\t\t\t\tpost_type: 'wp_block',\n\t\t\t\t\t } ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { __experimentalConvertBlockToStatic: convertBlockToStatic } =\n\t\tuseDispatch( reusableBlocksStore );\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem href={ managePatternsUrl }>\n\t\t\t\t{ __( 'Manage patterns' ) }\n\t\t\t</MenuItem>\n\t\t\t{ canRemove && (\n\t\t\t\t<MenuItem onClick={ () => convertBlockToStatic( clientId ) }>\n\t\t\t\t\t{ __( 'Disconnect pattern' ) }\n\t\t\t\t</MenuItem>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default ReusableBlocksManageButton;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAAyB;AACzB,kBAAmB;AACnB,oBAAgC;AAChC,kBAAuC;AACvC,0BAA0C;AAC1C,iBAA6B;AAC7B,uBAAmC;AAKnC,mBAA6C;AA6C3C;AA3CF,SAAS,2BAA4B,EAAE,SAAS,GAAI;AACnD,QAAM,EAAE,WAAW,WAAW,kBAAkB,QAAI;AAAA,IACnD,CAAE,WAAY;AACb,YAAM,EAAE,UAAU,eAAe,IAAI,OAAQ,oBAAAA,KAAiB;AAC9D,YAAM,EAAE,QAAQ,IAAI,OAAQ,iBAAAC,KAAU;AACtC,YAAM,gBAAgB,SAAU,QAAS;AAEzC,aAAO;AAAA,QACN,WAAW,eAAgB,QAAS;AAAA,QACpC,WACC,CAAC,CAAE,qBACH,+BAAiB,aAAc,KAC/B,CAAC,CAAE,QAAS,UAAU;AAAA,UACrB,MAAM;AAAA,UACN,MAAM;AAAA,UACN,IAAI,cAAc,WAAW;AAAA,QAC9B,CAAE;AAAA;AAAA;AAAA;AAAA,QAIH,mBAAmB,QAAS,UAAU;AAAA,UACrC,MAAM;AAAA,UACN,MAAM;AAAA,QACP,CAAE,QACC,yBAAc,mBAAmB;AAAA,UACjC,GAAG;AAAA,QACH,CAAE,QACF,yBAAc,YAAY;AAAA,UAC1B,WAAW;AAAA,QACX,CAAE;AAAA,MACN;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAEA,QAAM,EAAE,oCAAoC,qBAAqB,QAChE,yBAAa,aAAAC,KAAoB;AAElC,MAAK,CAAE,WAAY;AAClB,WAAO;AAAA,EACR;AAEA,SACC,4EACC;AAAA,gDAAC,8BAAS,MAAO,mBACd,8BAAI,iBAAkB,GACzB;AAAA,IACE,aACD,4CAAC,8BAAS,SAAU,MAAM,qBAAsB,QAAS,GACtD,8BAAI,oBAAqB,GAC5B;AAAA,KAEF;AAEF;AAEA,IAAO,wCAAQ;",
6
6
  "names": ["blockEditorStore", "coreStore", "reusableBlocksStore"]
7
7
  }
package/build/index.js CHANGED
@@ -16,6 +16,8 @@ var __copyProps = (to, from, except, desc) => {
16
16
  };
17
17
  var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // packages/reusable-blocks/src/index.js
19
21
  var index_exports = {};
20
22
  __export(index_exports, {
21
23
  store: () => import_store.store
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/index.js"],
4
4
  "sourcesContent": ["export { store } from './store';\nexport * from './components';\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAsB;AACtB,0BAAc,yBADd;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAsB;AACtB,0BAAc,yBADd;",
6
6
  "names": []
7
7
  }
@@ -15,13 +15,15 @@ var __copyProps = (to, from, except, desc) => {
15
15
  return to;
16
16
  };
17
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // packages/reusable-blocks/src/lock-unlock.js
18
20
  var lock_unlock_exports = {};
19
21
  __export(lock_unlock_exports, {
20
22
  unlock: () => unlock
21
23
  });
22
24
  module.exports = __toCommonJS(lock_unlock_exports);
23
25
  var import_private_apis = require("@wordpress/private-apis");
24
- const { unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
26
+ var { unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
25
27
  "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
26
28
  "@wordpress/reusable-blocks"
27
29
  );
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/lock-unlock.js"],
4
4
  "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\n\nexport const { unlock } = __dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t'I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.',\n\t'@wordpress/reusable-blocks'\n);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,0BAAiE;AAE1D,MAAM,EAAE,OAAO,QAAI;AAAA,EACzB;AAAA,EACA;AACD;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,0BAAiE;AAE1D,IAAM,EAAE,OAAO,QAAI;AAAA,EACzB;AAAA,EACA;AACD;",
6
6
  "names": []
7
7
  }
@@ -15,6 +15,8 @@ var __copyProps = (to, from, except, desc) => {
15
15
  return to;
16
16
  };
17
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // packages/reusable-blocks/src/store/actions.js
18
20
  var actions_exports = {};
19
21
  __export(actions_exports, {
20
22
  __experimentalConvertBlockToStatic: () => __experimentalConvertBlockToStatic,
@@ -26,7 +28,7 @@ module.exports = __toCommonJS(actions_exports);
26
28
  var import_block_editor = require("@wordpress/block-editor");
27
29
  var import_blocks = require("@wordpress/blocks");
28
30
  var import_i18n = require("@wordpress/i18n");
29
- const __experimentalConvertBlockToStatic = (clientId) => ({ registry }) => {
31
+ var __experimentalConvertBlockToStatic = (clientId) => ({ registry }) => {
30
32
  const oldBlock = registry.select(import_block_editor.store).getBlock(clientId);
31
33
  const reusableBlock = registry.select("core").getEditedEntityRecord(
32
34
  "postType",
@@ -38,7 +40,7 @@ const __experimentalConvertBlockToStatic = (clientId) => ({ registry }) => {
38
40
  );
39
41
  registry.dispatch(import_block_editor.store).replaceBlocks(oldBlock.clientId, newBlocks);
40
42
  };
41
- const __experimentalConvertBlocksToReusable = (clientIds, title, syncType) => async ({ registry, dispatch }) => {
43
+ var __experimentalConvertBlocksToReusable = (clientIds, title, syncType) => async ({ registry, dispatch }) => {
42
44
  const meta = syncType === "unsynced" ? {
43
45
  wp_pattern_sync_status: syncType
44
46
  } : void 0;
@@ -63,7 +65,7 @@ const __experimentalConvertBlocksToReusable = (clientIds, title, syncType) => as
63
65
  true
64
66
  );
65
67
  };
66
- const __experimentalDeleteReusableBlock = (id) => async ({ registry }) => {
68
+ var __experimentalDeleteReusableBlock = (id) => async ({ registry }) => {
67
69
  const reusableBlock = registry.select("core").getEditedEntityRecord("postType", "wp_block", id);
68
70
  if (!reusableBlock) {
69
71
  return;
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/store/actions.js"],
4
4
  "sourcesContent": ["/**\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 =\n\t( clientId ) =>\n\t( { registry } ) => {\n\t\tconst oldBlock = registry\n\t\t\t.select( blockEditorStore )\n\t\t\t.getBlock( clientId );\n\t\tconst reusableBlock = registry\n\t\t\t.select( 'core' )\n\t\t\t.getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_block',\n\t\t\t\toldBlock.attributes.ref\n\t\t\t);\n\n\t\tconst newBlocks = parse(\n\t\t\ttypeof reusableBlock.content === 'function'\n\t\t\t\t? reusableBlock.content( reusableBlock )\n\t\t\t\t: reusableBlock.content\n\t\t);\n\t\tregistry\n\t\t\t.dispatch( blockEditorStore )\n\t\t\t.replaceBlocks( oldBlock.clientId, newBlocks );\n\t};\n\n/**\n * Returns a generator converting one or more static blocks into a pattern.\n *\n * @param {string[]} clientIds The client IDs of the block to detach.\n * @param {string} title Pattern title.\n * @param {undefined|'unsynced'} syncType They way block is synced, current undefined (synced) and 'unsynced'.\n */\nexport const __experimentalConvertBlocksToReusable =\n\t( clientIds, title, syncType ) =>\n\tasync ( { registry, dispatch } ) => {\n\t\tconst meta =\n\t\t\tsyncType === 'unsynced'\n\t\t\t\t? {\n\t\t\t\t\t\twp_pattern_sync_status: syncType,\n\t\t\t\t }\n\t\t\t\t: undefined;\n\n\t\tconst reusableBlock = {\n\t\t\ttitle: title || __( 'Untitled pattern block' ),\n\t\t\tcontent: serialize(\n\t\t\t\tregistry\n\t\t\t\t\t.select( blockEditorStore )\n\t\t\t\t\t.getBlocksByClientId( clientIds )\n\t\t\t),\n\t\t\tstatus: 'publish',\n\t\t\tmeta,\n\t\t};\n\n\t\tconst updatedRecord = await registry\n\t\t\t.dispatch( 'core' )\n\t\t\t.saveEntityRecord( 'postType', 'wp_block', reusableBlock );\n\n\t\tif ( syncType === 'unsynced' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newBlock = createBlock( 'core/block', {\n\t\t\tref: updatedRecord.id,\n\t\t} );\n\t\tregistry\n\t\t\t.dispatch( blockEditorStore )\n\t\t\t.replaceBlocks( clientIds, newBlock );\n\t\tdispatch.__experimentalSetEditingReusableBlock(\n\t\t\tnewBlock.clientId,\n\t\t\ttrue\n\t\t);\n\t};\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 =\n\t( id ) =>\n\tasync ( { registry } ) => {\n\t\tconst reusableBlock = registry\n\t\t\t.select( 'core' )\n\t\t\t.getEditedEntityRecord( 'postType', 'wp_block', id );\n\n\t\t// Don't allow a reusable block with a temporary ID to be deleted.\n\t\tif ( ! reusableBlock ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remove any other blocks that reference this reusable block.\n\t\tconst allBlocks = registry.select( blockEditorStore ).getBlocks();\n\t\tconst associatedBlocks = allBlocks.filter(\n\t\t\t( block ) => isReusableBlock( block ) && block.attributes.ref === id\n\t\t);\n\t\tconst associatedBlockClientIds = associatedBlocks.map(\n\t\t\t( block ) => block.clientId\n\t\t);\n\n\t\t// Remove the parsed block.\n\t\tif ( associatedBlockClientIds.length ) {\n\t\t\tregistry\n\t\t\t\t.dispatch( blockEditorStore )\n\t\t\t\t.removeBlocks( associatedBlockClientIds );\n\t\t}\n\n\t\tawait registry\n\t\t\t.dispatch( 'core' )\n\t\t\t.deleteEntityRecord( 'postType', 'wp_block', id );\n\t};\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"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,0BAA0C;AAC1C,oBAKO;AACP,kBAAmB;AAOZ,MAAM,qCACZ,CAAE,aACF,CAAE,EAAE,SAAS,MAAO;AACnB,QAAM,WAAW,SACf,OAAQ,oBAAAA,KAAiB,EACzB,SAAU,QAAS;AACrB,QAAM,gBAAgB,SACpB,OAAQ,MAAO,EACf;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,WAAW;AAAA,EACrB;AAED,QAAM,gBAAY;AAAA,IACjB,OAAO,cAAc,YAAY,aAC9B,cAAc,QAAS,aAAc,IACrC,cAAc;AAAA,EAClB;AACA,WACE,SAAU,oBAAAA,KAAiB,EAC3B,cAAe,SAAS,UAAU,SAAU;AAC/C;AASM,MAAM,wCACZ,CAAE,WAAW,OAAO,aACpB,OAAQ,EAAE,UAAU,SAAS,MAAO;AACnC,QAAM,OACL,aAAa,aACV;AAAA,IACA,wBAAwB;AAAA,EACxB,IACA;AAEJ,QAAM,gBAAgB;AAAA,IACrB,OAAO,aAAS,gBAAI,wBAAyB;AAAA,IAC7C,aAAS;AAAA,MACR,SACE,OAAQ,oBAAAA,KAAiB,EACzB,oBAAqB,SAAU;AAAA,IAClC;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,EACD;AAEA,QAAM,gBAAgB,MAAM,SAC1B,SAAU,MAAO,EACjB,iBAAkB,YAAY,YAAY,aAAc;AAE1D,MAAK,aAAa,YAAa;AAC9B;AAAA,EACD;AAEA,QAAM,eAAW,2BAAa,cAAc;AAAA,IAC3C,KAAK,cAAc;AAAA,EACpB,CAAE;AACF,WACE,SAAU,oBAAAA,KAAiB,EAC3B,cAAe,WAAW,QAAS;AACrC,WAAS;AAAA,IACR,SAAS;AAAA,IACT;AAAA,EACD;AACD;AAOM,MAAM,oCACZ,CAAE,OACF,OAAQ,EAAE,SAAS,MAAO;AACzB,QAAM,gBAAgB,SACpB,OAAQ,MAAO,EACf,sBAAuB,YAAY,YAAY,EAAG;AAGpD,MAAK,CAAE,eAAgB;AACtB;AAAA,EACD;AAGA,QAAM,YAAY,SAAS,OAAQ,oBAAAA,KAAiB,EAAE,UAAU;AAChE,QAAM,mBAAmB,UAAU;AAAA,IAClC,CAAE,cAAW,+BAAiB,KAAM,KAAK,MAAM,WAAW,QAAQ;AAAA,EACnE;AACA,QAAM,2BAA2B,iBAAiB;AAAA,IACjD,CAAE,UAAW,MAAM;AAAA,EACpB;AAGA,MAAK,yBAAyB,QAAS;AACtC,aACE,SAAU,oBAAAA,KAAiB,EAC3B,aAAc,wBAAyB;AAAA,EAC1C;AAEA,QAAM,SACJ,SAAU,MAAO,EACjB,mBAAoB,YAAY,YAAY,EAAG;AAClD;AASM,SAAS,sCAAuC,UAAU,WAAY;AAC5E,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACD;AACD;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,0BAA0C;AAC1C,oBAKO;AACP,kBAAmB;AAOZ,IAAM,qCACZ,CAAE,aACF,CAAE,EAAE,SAAS,MAAO;AACnB,QAAM,WAAW,SACf,OAAQ,oBAAAA,KAAiB,EACzB,SAAU,QAAS;AACrB,QAAM,gBAAgB,SACpB,OAAQ,MAAO,EACf;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,WAAW;AAAA,EACrB;AAED,QAAM,gBAAY;AAAA,IACjB,OAAO,cAAc,YAAY,aAC9B,cAAc,QAAS,aAAc,IACrC,cAAc;AAAA,EAClB;AACA,WACE,SAAU,oBAAAA,KAAiB,EAC3B,cAAe,SAAS,UAAU,SAAU;AAC/C;AASM,IAAM,wCACZ,CAAE,WAAW,OAAO,aACpB,OAAQ,EAAE,UAAU,SAAS,MAAO;AACnC,QAAM,OACL,aAAa,aACV;AAAA,IACA,wBAAwB;AAAA,EACxB,IACA;AAEJ,QAAM,gBAAgB;AAAA,IACrB,OAAO,aAAS,gBAAI,wBAAyB;AAAA,IAC7C,aAAS;AAAA,MACR,SACE,OAAQ,oBAAAA,KAAiB,EACzB,oBAAqB,SAAU;AAAA,IAClC;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,EACD;AAEA,QAAM,gBAAgB,MAAM,SAC1B,SAAU,MAAO,EACjB,iBAAkB,YAAY,YAAY,aAAc;AAE1D,MAAK,aAAa,YAAa;AAC9B;AAAA,EACD;AAEA,QAAM,eAAW,2BAAa,cAAc;AAAA,IAC3C,KAAK,cAAc;AAAA,EACpB,CAAE;AACF,WACE,SAAU,oBAAAA,KAAiB,EAC3B,cAAe,WAAW,QAAS;AACrC,WAAS;AAAA,IACR,SAAS;AAAA,IACT;AAAA,EACD;AACD;AAOM,IAAM,oCACZ,CAAE,OACF,OAAQ,EAAE,SAAS,MAAO;AACzB,QAAM,gBAAgB,SACpB,OAAQ,MAAO,EACf,sBAAuB,YAAY,YAAY,EAAG;AAGpD,MAAK,CAAE,eAAgB;AACtB;AAAA,EACD;AAGA,QAAM,YAAY,SAAS,OAAQ,oBAAAA,KAAiB,EAAE,UAAU;AAChE,QAAM,mBAAmB,UAAU;AAAA,IAClC,CAAE,cAAW,+BAAiB,KAAM,KAAK,MAAM,WAAW,QAAQ;AAAA,EACnE;AACA,QAAM,2BAA2B,iBAAiB;AAAA,IACjD,CAAE,UAAW,MAAM;AAAA,EACpB;AAGA,MAAK,yBAAyB,QAAS;AACtC,aACE,SAAU,oBAAAA,KAAiB,EAC3B,aAAc,wBAAyB;AAAA,EAC1C;AAEA,QAAM,SACJ,SAAU,MAAO,EACjB,mBAAoB,YAAY,YAAY,EAAG;AAClD;AASM,SAAS,sCAAuC,UAAU,WAAY;AAC5E,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACD;AACD;",
6
6
  "names": ["blockEditorStore"]
7
7
  }
@@ -25,6 +25,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
25
25
  mod
26
26
  ));
27
27
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // packages/reusable-blocks/src/store/index.js
28
30
  var store_exports = {};
29
31
  __export(store_exports, {
30
32
  store: () => store
@@ -34,8 +36,8 @@ var import_data = require("@wordpress/data");
34
36
  var actions = __toESM(require("./actions"));
35
37
  var import_reducer = __toESM(require("./reducer"));
36
38
  var selectors = __toESM(require("./selectors"));
37
- const STORE_NAME = "core/reusable-blocks";
38
- const store = (0, import_data.createReduxStore)(STORE_NAME, {
39
+ var STORE_NAME = "core/reusable-blocks";
40
+ var store = (0, import_data.createReduxStore)(STORE_NAME, {
39
41
  actions,
40
42
  reducer: import_reducer.default,
41
43
  selectors
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/store/index.js"],
4
4
  "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} );\n\nregister( store );\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA2C;AAK3C,cAAyB;AACzB,qBAAoB;AACpB,gBAA2B;AAE3B,MAAM,aAAa;AASZ,MAAM,YAAQ,8BAAkB,YAAY;AAAA,EAClD;AAAA,EACA,wBAAAA;AAAA,EACA;AACD,CAAE;AAAA,IAEF,sBAAU,KAAM;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAA2C;AAK3C,cAAyB;AACzB,qBAAoB;AACpB,gBAA2B;AAE3B,IAAM,aAAa;AASZ,IAAM,YAAQ,8BAAkB,YAAY;AAAA,EAClD;AAAA,EACA,wBAAAA;AAAA,EACA;AACD,CAAE;AAAA,IAEF,sBAAU,KAAM;",
6
6
  "names": ["reducer"]
7
7
  }
@@ -15,6 +15,8 @@ var __copyProps = (to, from, except, desc) => {
15
15
  return to;
16
16
  };
17
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // packages/reusable-blocks/src/store/reducer.js
18
20
  var reducer_exports = {};
19
21
  __export(reducer_exports, {
20
22
  default: () => reducer_default,
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/store/reducer.js"],
4
4
  "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"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAgC;AAEzB,SAAS,uBAAwB,QAAQ,CAAC,GAAG,QAAS;AAC5D,MAAK,QAAQ,SAAS,8BAA+B;AACpD,WAAO;AAAA,MACN,GAAG;AAAA,MACH,CAAE,OAAO,QAAS,GAAG,OAAO;AAAA,IAC7B;AAAA,EACD;AAEA,SAAO;AACR;AAEA,IAAO,sBAAQ,6BAAiB;AAAA,EAC/B;AACD,CAAE;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAgC;AAEzB,SAAS,uBAAwB,QAAQ,CAAC,GAAG,QAAS;AAC5D,MAAK,QAAQ,SAAS,8BAA+B;AACpD,WAAO;AAAA,MACN,GAAG;AAAA,MACH,CAAE,OAAO,QAAS,GAAG,OAAO;AAAA,IAC7B;AAAA,EACD;AAEA,SAAO;AACR;AAEA,IAAO,sBAAQ,6BAAiB;AAAA,EAC/B;AACD,CAAE;",
6
6
  "names": []
7
7
  }
@@ -15,6 +15,8 @@ var __copyProps = (to, from, except, desc) => {
15
15
  return to;
16
16
  };
17
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // packages/reusable-blocks/src/store/selectors.js
18
20
  var selectors_exports = {};
19
21
  __export(selectors_exports, {
20
22
  __experimentalIsEditingReusableBlock: () => __experimentalIsEditingReusableBlock
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/store/selectors.js"],
4
4
  "sourcesContent": ["/**\n * Returns true if reusable block is in the editing state.\n *\n * @param {Object} state Global application state.\n * @param {number} clientId the clientID of the block.\n * @return {boolean} Whether the reusable block is in the editing state.\n */\nexport function __experimentalIsEditingReusableBlock( state, clientId ) {\n\treturn state.isEditingReusableBlock[ clientId ];\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOO,SAAS,qCAAsC,OAAO,UAAW;AACvE,SAAO,MAAM,uBAAwB,QAAS;AAC/C;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOO,SAAS,qCAAsC,OAAO,UAAW;AACvE,SAAO,MAAM,uBAAwB,QAAS;AAC/C;",
6
6
  "names": []
7
7
  }
@@ -1,3 +1,4 @@
1
+ // packages/reusable-blocks/src/components/index.js
1
2
  import { default as default2 } from "./reusable-blocks-menu-items";
2
3
  export {
3
4
  default2 as ReusableBlocksMenuItems
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/components/index.js"],
4
4
  "sourcesContent": ["export { default as ReusableBlocksMenuItems } from './reusable-blocks-menu-items';\n"],
5
- "mappings": "AAAA,SAAoB,WAAXA,gBAA0C;",
5
+ "mappings": ";AAAA,SAAoB,WAAXA,gBAA0C;",
6
6
  "names": ["default"]
7
7
  }
@@ -1,7 +1,8 @@
1
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
1
+ // packages/reusable-blocks/src/components/reusable-blocks-menu-items/index.js
2
2
  import { BlockSettingsMenuControls } from "@wordpress/block-editor";
3
3
  import ReusableBlockConvertButton from "./reusable-block-convert-button";
4
4
  import ReusableBlocksManageButton from "./reusable-blocks-manage-button";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
6
  function ReusableBlocksMenuItems({ rootClientId }) {
6
7
  return /* @__PURE__ */ jsx(BlockSettingsMenuControls, { children: ({ onClose, selectedClientIds }) => /* @__PURE__ */ jsxs(Fragment, { children: [
7
8
  /* @__PURE__ */ jsx(
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/reusable-blocks-menu-items/index.js"],
4
4
  "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { BlockSettingsMenuControls } 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\nexport default function ReusableBlocksMenuItems( { rootClientId } ) {\n\treturn (\n\t\t<BlockSettingsMenuControls>\n\t\t\t{ ( { onClose, selectedClientIds } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<ReusableBlockConvertButton\n\t\t\t\t\t\tclientIds={ selectedClientIds }\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t/>\n\t\t\t\t\t{ selectedClientIds.length === 1 && (\n\t\t\t\t\t\t<ReusableBlocksManageButton\n\t\t\t\t\t\t\tclientId={ selectedClientIds[ 0 ] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</BlockSettingsMenuControls>\n\t);\n}\n"],
5
- "mappings": "AAeI,mBACC,KADD;AAZJ,SAAS,iCAAiC;AAK1C,OAAO,gCAAgC;AACvC,OAAO,gCAAgC;AAExB,SAAR,wBAA0C,EAAE,aAAa,GAAI;AACnE,SACC,oBAAC,6BACE,WAAE,EAAE,SAAS,kBAAkB,MAChC,iCACC;AAAA;AAAA,MAAC;AAAA;AAAA,QACA,WAAY;AAAA,QACZ;AAAA,QACA;AAAA;AAAA,IACD;AAAA,IACE,kBAAkB,WAAW,KAC9B;AAAA,MAAC;AAAA;AAAA,QACA,UAAW,kBAAmB,CAAE;AAAA;AAAA,IACjC;AAAA,KAEF,GAEF;AAEF;",
5
+ "mappings": ";AAGA,SAAS,iCAAiC;AAK1C,OAAO,gCAAgC;AACvC,OAAO,gCAAgC;AAMnC,mBACC,KADD;AAJW,SAAR,wBAA0C,EAAE,aAAa,GAAI;AACnE,SACC,oBAAC,6BACE,WAAE,EAAE,SAAS,kBAAkB,MAChC,iCACC;AAAA;AAAA,MAAC;AAAA;AAAA,QACA,WAAY;AAAA,QACZ;AAAA,QACA;AAAA;AAAA,IACD;AAAA,IACE,kBAAkB,WAAW,KAC9B;AAAA,MAAC;AAAA;AAAA,QACA,UAAW,kBAAmB,CAAE;AAAA;AAAA,IACjC;AAAA,KAEF,GAEF;AAEF;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,4 @@
1
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
1
+ // packages/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-block-convert-button.js
2
2
  import { hasBlockSupport, isReusableBlock } from "@wordpress/blocks";
3
3
  import { store as blockEditorStore } from "@wordpress/block-editor";
4
4
  import { useCallback, useState } from "@wordpress/element";
@@ -17,6 +17,7 @@ import { __, _x, sprintf } from "@wordpress/i18n";
17
17
  import { store as noticesStore } from "@wordpress/notices";
18
18
  import { store as coreStore } from "@wordpress/core-data";
19
19
  import { store } from "../../store";
20
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
20
21
  function ReusableBlockConvertButton({
21
22
  clientIds,
22
23
  rootClientId,
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/reusable-blocks-menu-items/reusable-block-convert-button.js"],
4
4
  "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { hasBlockSupport, isReusableBlock } from '@wordpress/blocks';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useCallback, useState } from '@wordpress/element';\nimport {\n\tMenuItem,\n\tModal,\n\tButton,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tToggleControl,\n} from '@wordpress/components';\nimport { symbol } from '@wordpress/icons';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __, _x, sprintf } 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 * @param {()=>void} props.onClose Callback to close the menu.\n * @return {import('react').ComponentType} The menu control or null.\n */\nexport default function ReusableBlockConvertButton( {\n\tclientIds,\n\trootClientId,\n\tonClose,\n} ) {\n\tconst [ syncType, setSyncType ] = useState( undefined );\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 {\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst rootId =\n\t\t\t\trootClientId ||\n\t\t\t\t( clientIds.length > 0\n\t\t\t\t\t? getBlockRootClientId( clientIds[ 0 ] )\n\t\t\t\t\t: undefined );\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', rootId ) &&\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// Blocks refers to the wp_block post type, this checks the ability to create a post of that type.\n\t\t\t\t!! canUser( 'create', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_block',\n\t\t\t\t} );\n\n\t\t\treturn _canConvert;\n\t\t},\n\t\t[ clientIds, rootClientId ]\n\t);\n\n\tconst { __experimentalConvertBlocksToReusable: convertBlocksToReusable } =\n\t\tuseDispatch( store );\n\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst onConvert = useCallback(\n\t\tasync function ( reusableBlockTitle ) {\n\t\t\ttry {\n\t\t\t\tawait convertBlocksToReusable(\n\t\t\t\t\tclientIds,\n\t\t\t\t\treusableBlockTitle,\n\t\t\t\t\tsyncType\n\t\t\t\t);\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t! syncType\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: the name the user has given to the pattern.\n\t\t\t\t\t\t\t\t__( 'Synced pattern created: %s' ),\n\t\t\t\t\t\t\t\treusableBlockTitle\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: the name the user has given to the pattern.\n\t\t\t\t\t\t\t\t__( 'Unsynced pattern created: %s' ),\n\t\t\t\t\t\t\t\treusableBlockTitle\n\t\t\t\t\t\t ),\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\tid: 'convert-to-reusable-block-success',\n\t\t\t\t\t}\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\tid: 'convert-to-reusable-block-error',\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tconvertBlocksToReusable,\n\t\t\tclientIds,\n\t\t\tsyncType,\n\t\t\tcreateSuccessNotice,\n\t\t\tcreateErrorNotice,\n\t\t]\n\t);\n\n\tif ( ! canConvert ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem icon={ symbol } onClick={ () => setIsModalOpen( true ) }>\n\t\t\t\t{ __( 'Create pattern' ) }\n\t\t\t</MenuItem>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ __( 'Create pattern' ) }\n\t\t\t\t\tonRequestClose={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t} }\n\t\t\t\t\toverlayClassName=\"reusable-blocks-menu-items__convert-modal\"\n\t\t\t\t>\n\t\t\t\t\t<form\n\t\t\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tonConvert( title );\n\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<VStack spacing=\"5\">\n\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\t\t\tplaceholder={ __( 'My pattern' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ _x( 'Synced', 'pattern (singular)' ) }\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Sync this pattern across multiple locations.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tchecked={ ! syncType }\n\t\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\t\tsetSyncType(\n\t\t\t\t\t\t\t\t\t\t! syncType ? 'unsynced' : undefined\n\t\t\t\t\t\t\t\t\t);\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<HStack justify=\"right\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Create' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t</VStack>\n\t\t\t\t\t</form>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,4 @@
1
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
1
+ // packages/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js
2
2
  import { MenuItem } from "@wordpress/components";
3
3
  import { __ } from "@wordpress/i18n";
4
4
  import { isReusableBlock } from "@wordpress/blocks";
@@ -7,6 +7,7 @@ import { store as blockEditorStore } from "@wordpress/block-editor";
7
7
  import { addQueryArgs } from "@wordpress/url";
8
8
  import { store as coreStore } from "@wordpress/core-data";
9
9
  import { store as reusableBlocksStore } from "../../store";
10
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
11
  function ReusableBlocksManageButton({ clientId }) {
11
12
  const { canRemove, isVisible, managePatternsUrl } = useSelect(
12
13
  (select) => {
@@ -41,7 +42,7 @@ function ReusableBlocksManageButton({ clientId }) {
41
42
  }
42
43
  return /* @__PURE__ */ jsxs(Fragment, { children: [
43
44
  /* @__PURE__ */ jsx(MenuItem, { href: managePatternsUrl, children: __("Manage patterns") }),
44
- canRemove && /* @__PURE__ */ jsx(MenuItem, { onClick: () => convertBlockToStatic(clientId), children: __("Detach") })
45
+ canRemove && /* @__PURE__ */ jsx(MenuItem, { onClick: () => convertBlockToStatic(clientId), children: __("Disconnect pattern") })
45
46
  ] });
46
47
  }
47
48
  var reusable_blocks_manage_button_default = ReusableBlocksManageButton;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js"],
4
- "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 { store as blockEditorStore } 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 { canRemove, isVisible, managePatternsUrl } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, canRemoveBlock } = 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\tcanRemove: canRemoveBlock( clientId ),\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( 'update', {\n\t\t\t\t\t\tkind: 'postType',\n\t\t\t\t\t\tname: 'wp_block',\n\t\t\t\t\t\tid: reusableBlock.attributes.ref,\n\t\t\t\t\t} ),\n\t\t\t\t// The site editor and templates both check whether the user\n\t\t\t\t// has edit_theme_options capabilities. We can leverage that here\n\t\t\t\t// and omit the manage patterns link if the user can't access it.\n\t\t\t\tmanagePatternsUrl: canUser( 'create', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_template',\n\t\t\t\t} )\n\t\t\t\t\t? addQueryArgs( 'site-editor.php', {\n\t\t\t\t\t\t\tp: '/pattern',\n\t\t\t\t\t } )\n\t\t\t\t\t: addQueryArgs( 'edit.php', {\n\t\t\t\t\t\t\tpost_type: 'wp_block',\n\t\t\t\t\t } ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { __experimentalConvertBlockToStatic: convertBlockToStatic } =\n\t\tuseDispatch( reusableBlocksStore );\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem href={ managePatternsUrl }>\n\t\t\t\t{ __( 'Manage patterns' ) }\n\t\t\t</MenuItem>\n\t\t\t{ canRemove && (\n\t\t\t\t<MenuItem onClick={ () => convertBlockToStatic( clientId ) }>\n\t\t\t\t\t{ __( 'Detach' ) }\n\t\t\t\t</MenuItem>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default ReusableBlocksManageButton;\n"],
5
- "mappings": "AA2DE,mBACC,KADD;AAxDF,SAAS,gBAAgB;AACzB,SAAS,UAAU;AACnB,SAAS,uBAAuB;AAChC,SAAS,WAAW,mBAAmB;AACvC,SAAS,SAAS,wBAAwB;AAC1C,SAAS,oBAAoB;AAC7B,SAAS,SAAS,iBAAiB;AAKnC,SAAS,SAAS,2BAA2B;AAE7C,SAAS,2BAA4B,EAAE,SAAS,GAAI;AACnD,QAAM,EAAE,WAAW,WAAW,kBAAkB,IAAI;AAAA,IACnD,CAAE,WAAY;AACb,YAAM,EAAE,UAAU,eAAe,IAAI,OAAQ,gBAAiB;AAC9D,YAAM,EAAE,QAAQ,IAAI,OAAQ,SAAU;AACtC,YAAM,gBAAgB,SAAU,QAAS;AAEzC,aAAO;AAAA,QACN,WAAW,eAAgB,QAAS;AAAA,QACpC,WACC,CAAC,CAAE,iBACH,gBAAiB,aAAc,KAC/B,CAAC,CAAE,QAAS,UAAU;AAAA,UACrB,MAAM;AAAA,UACN,MAAM;AAAA,UACN,IAAI,cAAc,WAAW;AAAA,QAC9B,CAAE;AAAA;AAAA;AAAA;AAAA,QAIH,mBAAmB,QAAS,UAAU;AAAA,UACrC,MAAM;AAAA,UACN,MAAM;AAAA,QACP,CAAE,IACC,aAAc,mBAAmB;AAAA,UACjC,GAAG;AAAA,QACH,CAAE,IACF,aAAc,YAAY;AAAA,UAC1B,WAAW;AAAA,QACX,CAAE;AAAA,MACN;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAEA,QAAM,EAAE,oCAAoC,qBAAqB,IAChE,YAAa,mBAAoB;AAElC,MAAK,CAAE,WAAY;AAClB,WAAO;AAAA,EACR;AAEA,SACC,iCACC;AAAA,wBAAC,YAAS,MAAO,mBACd,aAAI,iBAAkB,GACzB;AAAA,IACE,aACD,oBAAC,YAAS,SAAU,MAAM,qBAAsB,QAAS,GACtD,aAAI,QAAS,GAChB;AAAA,KAEF;AAEF;AAEA,IAAO,wCAAQ;",
4
+ "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 { store as blockEditorStore } 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 { canRemove, isVisible, managePatternsUrl } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, canRemoveBlock } = 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\tcanRemove: canRemoveBlock( clientId ),\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( 'update', {\n\t\t\t\t\t\tkind: 'postType',\n\t\t\t\t\t\tname: 'wp_block',\n\t\t\t\t\t\tid: reusableBlock.attributes.ref,\n\t\t\t\t\t} ),\n\t\t\t\t// The site editor and templates both check whether the user\n\t\t\t\t// has edit_theme_options capabilities. We can leverage that here\n\t\t\t\t// and omit the manage patterns link if the user can't access it.\n\t\t\t\tmanagePatternsUrl: canUser( 'create', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_template',\n\t\t\t\t} )\n\t\t\t\t\t? addQueryArgs( 'site-editor.php', {\n\t\t\t\t\t\t\tp: '/pattern',\n\t\t\t\t\t } )\n\t\t\t\t\t: addQueryArgs( 'edit.php', {\n\t\t\t\t\t\t\tpost_type: 'wp_block',\n\t\t\t\t\t } ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { __experimentalConvertBlockToStatic: convertBlockToStatic } =\n\t\tuseDispatch( reusableBlocksStore );\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem href={ managePatternsUrl }>\n\t\t\t\t{ __( 'Manage patterns' ) }\n\t\t\t</MenuItem>\n\t\t\t{ canRemove && (\n\t\t\t\t<MenuItem onClick={ () => convertBlockToStatic( clientId ) }>\n\t\t\t\t\t{ __( 'Disconnect pattern' ) }\n\t\t\t\t</MenuItem>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default ReusableBlocksManageButton;\n"],
5
+ "mappings": ";AAGA,SAAS,gBAAgB;AACzB,SAAS,UAAU;AACnB,SAAS,uBAAuB;AAChC,SAAS,WAAW,mBAAmB;AACvC,SAAS,SAAS,wBAAwB;AAC1C,SAAS,oBAAoB;AAC7B,SAAS,SAAS,iBAAiB;AAKnC,SAAS,SAAS,2BAA2B;AA6C3C,mBACC,KADD;AA3CF,SAAS,2BAA4B,EAAE,SAAS,GAAI;AACnD,QAAM,EAAE,WAAW,WAAW,kBAAkB,IAAI;AAAA,IACnD,CAAE,WAAY;AACb,YAAM,EAAE,UAAU,eAAe,IAAI,OAAQ,gBAAiB;AAC9D,YAAM,EAAE,QAAQ,IAAI,OAAQ,SAAU;AACtC,YAAM,gBAAgB,SAAU,QAAS;AAEzC,aAAO;AAAA,QACN,WAAW,eAAgB,QAAS;AAAA,QACpC,WACC,CAAC,CAAE,iBACH,gBAAiB,aAAc,KAC/B,CAAC,CAAE,QAAS,UAAU;AAAA,UACrB,MAAM;AAAA,UACN,MAAM;AAAA,UACN,IAAI,cAAc,WAAW;AAAA,QAC9B,CAAE;AAAA;AAAA;AAAA;AAAA,QAIH,mBAAmB,QAAS,UAAU;AAAA,UACrC,MAAM;AAAA,UACN,MAAM;AAAA,QACP,CAAE,IACC,aAAc,mBAAmB;AAAA,UACjC,GAAG;AAAA,QACH,CAAE,IACF,aAAc,YAAY;AAAA,UAC1B,WAAW;AAAA,QACX,CAAE;AAAA,MACN;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAEA,QAAM,EAAE,oCAAoC,qBAAqB,IAChE,YAAa,mBAAoB;AAElC,MAAK,CAAE,WAAY;AAClB,WAAO;AAAA,EACR;AAEA,SACC,iCACC;AAAA,wBAAC,YAAS,MAAO,mBACd,aAAI,iBAAkB,GACzB;AAAA,IACE,aACD,oBAAC,YAAS,SAAU,MAAM,qBAAsB,QAAS,GACtD,aAAI,oBAAqB,GAC5B;AAAA,KAEF;AAEF;AAEA,IAAO,wCAAQ;",
6
6
  "names": []
7
7
  }
@@ -1,3 +1,4 @@
1
+ // packages/reusable-blocks/src/index.js
1
2
  import { store } from "./store";
2
3
  export * from "./components";
3
4
  export {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/index.js"],
4
4
  "sourcesContent": ["export { store } from './store';\nexport * from './components';\n"],
5
- "mappings": "AAAA,SAAS,aAAa;AACtB,cAAc;",
5
+ "mappings": ";AAAA,SAAS,aAAa;AACtB,cAAc;",
6
6
  "names": []
7
7
  }
@@ -1,5 +1,6 @@
1
+ // packages/reusable-blocks/src/lock-unlock.js
1
2
  import { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from "@wordpress/private-apis";
2
- const { unlock } = __dangerousOptInToUnstableAPIsOnlyForCoreModules(
3
+ var { unlock } = __dangerousOptInToUnstableAPIsOnlyForCoreModules(
3
4
  "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
4
5
  "@wordpress/reusable-blocks"
5
6
  );
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/lock-unlock.js"],
4
4
  "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\n\nexport const { unlock } = __dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t'I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.',\n\t'@wordpress/reusable-blocks'\n);\n"],
5
- "mappings": "AAGA,SAAS,wDAAwD;AAE1D,MAAM,EAAE,OAAO,IAAI;AAAA,EACzB;AAAA,EACA;AACD;",
5
+ "mappings": ";AAGA,SAAS,wDAAwD;AAE1D,IAAM,EAAE,OAAO,IAAI;AAAA,EACzB;AAAA,EACA;AACD;",
6
6
  "names": []
7
7
  }
@@ -1,3 +1,4 @@
1
+ // packages/reusable-blocks/src/store/actions.js
1
2
  import { store as blockEditorStore } from "@wordpress/block-editor";
2
3
  import {
3
4
  createBlock,
@@ -6,7 +7,7 @@ import {
6
7
  serialize
7
8
  } from "@wordpress/blocks";
8
9
  import { __ } from "@wordpress/i18n";
9
- const __experimentalConvertBlockToStatic = (clientId) => ({ registry }) => {
10
+ var __experimentalConvertBlockToStatic = (clientId) => ({ registry }) => {
10
11
  const oldBlock = registry.select(blockEditorStore).getBlock(clientId);
11
12
  const reusableBlock = registry.select("core").getEditedEntityRecord(
12
13
  "postType",
@@ -18,7 +19,7 @@ const __experimentalConvertBlockToStatic = (clientId) => ({ registry }) => {
18
19
  );
19
20
  registry.dispatch(blockEditorStore).replaceBlocks(oldBlock.clientId, newBlocks);
20
21
  };
21
- const __experimentalConvertBlocksToReusable = (clientIds, title, syncType) => async ({ registry, dispatch }) => {
22
+ var __experimentalConvertBlocksToReusable = (clientIds, title, syncType) => async ({ registry, dispatch }) => {
22
23
  const meta = syncType === "unsynced" ? {
23
24
  wp_pattern_sync_status: syncType
24
25
  } : void 0;
@@ -43,7 +44,7 @@ const __experimentalConvertBlocksToReusable = (clientIds, title, syncType) => as
43
44
  true
44
45
  );
45
46
  };
46
- const __experimentalDeleteReusableBlock = (id) => async ({ registry }) => {
47
+ var __experimentalDeleteReusableBlock = (id) => async ({ registry }) => {
47
48
  const reusableBlock = registry.select("core").getEditedEntityRecord("postType", "wp_block", id);
48
49
  if (!reusableBlock) {
49
50
  return;
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/store/actions.js"],
4
4
  "sourcesContent": ["/**\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 =\n\t( clientId ) =>\n\t( { registry } ) => {\n\t\tconst oldBlock = registry\n\t\t\t.select( blockEditorStore )\n\t\t\t.getBlock( clientId );\n\t\tconst reusableBlock = registry\n\t\t\t.select( 'core' )\n\t\t\t.getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_block',\n\t\t\t\toldBlock.attributes.ref\n\t\t\t);\n\n\t\tconst newBlocks = parse(\n\t\t\ttypeof reusableBlock.content === 'function'\n\t\t\t\t? reusableBlock.content( reusableBlock )\n\t\t\t\t: reusableBlock.content\n\t\t);\n\t\tregistry\n\t\t\t.dispatch( blockEditorStore )\n\t\t\t.replaceBlocks( oldBlock.clientId, newBlocks );\n\t};\n\n/**\n * Returns a generator converting one or more static blocks into a pattern.\n *\n * @param {string[]} clientIds The client IDs of the block to detach.\n * @param {string} title Pattern title.\n * @param {undefined|'unsynced'} syncType They way block is synced, current undefined (synced) and 'unsynced'.\n */\nexport const __experimentalConvertBlocksToReusable =\n\t( clientIds, title, syncType ) =>\n\tasync ( { registry, dispatch } ) => {\n\t\tconst meta =\n\t\t\tsyncType === 'unsynced'\n\t\t\t\t? {\n\t\t\t\t\t\twp_pattern_sync_status: syncType,\n\t\t\t\t }\n\t\t\t\t: undefined;\n\n\t\tconst reusableBlock = {\n\t\t\ttitle: title || __( 'Untitled pattern block' ),\n\t\t\tcontent: serialize(\n\t\t\t\tregistry\n\t\t\t\t\t.select( blockEditorStore )\n\t\t\t\t\t.getBlocksByClientId( clientIds )\n\t\t\t),\n\t\t\tstatus: 'publish',\n\t\t\tmeta,\n\t\t};\n\n\t\tconst updatedRecord = await registry\n\t\t\t.dispatch( 'core' )\n\t\t\t.saveEntityRecord( 'postType', 'wp_block', reusableBlock );\n\n\t\tif ( syncType === 'unsynced' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newBlock = createBlock( 'core/block', {\n\t\t\tref: updatedRecord.id,\n\t\t} );\n\t\tregistry\n\t\t\t.dispatch( blockEditorStore )\n\t\t\t.replaceBlocks( clientIds, newBlock );\n\t\tdispatch.__experimentalSetEditingReusableBlock(\n\t\t\tnewBlock.clientId,\n\t\t\ttrue\n\t\t);\n\t};\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 =\n\t( id ) =>\n\tasync ( { registry } ) => {\n\t\tconst reusableBlock = registry\n\t\t\t.select( 'core' )\n\t\t\t.getEditedEntityRecord( 'postType', 'wp_block', id );\n\n\t\t// Don't allow a reusable block with a temporary ID to be deleted.\n\t\tif ( ! reusableBlock ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remove any other blocks that reference this reusable block.\n\t\tconst allBlocks = registry.select( blockEditorStore ).getBlocks();\n\t\tconst associatedBlocks = allBlocks.filter(\n\t\t\t( block ) => isReusableBlock( block ) && block.attributes.ref === id\n\t\t);\n\t\tconst associatedBlockClientIds = associatedBlocks.map(\n\t\t\t( block ) => block.clientId\n\t\t);\n\n\t\t// Remove the parsed block.\n\t\tif ( associatedBlockClientIds.length ) {\n\t\t\tregistry\n\t\t\t\t.dispatch( blockEditorStore )\n\t\t\t\t.removeBlocks( associatedBlockClientIds );\n\t\t}\n\n\t\tawait registry\n\t\t\t.dispatch( 'core' )\n\t\t\t.deleteEntityRecord( 'postType', 'wp_block', id );\n\t};\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"],
5
- "mappings": "AAGA,SAAS,SAAS,wBAAwB;AAC1C;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,UAAU;AAOZ,MAAM,qCACZ,CAAE,aACF,CAAE,EAAE,SAAS,MAAO;AACnB,QAAM,WAAW,SACf,OAAQ,gBAAiB,EACzB,SAAU,QAAS;AACrB,QAAM,gBAAgB,SACpB,OAAQ,MAAO,EACf;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,WAAW;AAAA,EACrB;AAED,QAAM,YAAY;AAAA,IACjB,OAAO,cAAc,YAAY,aAC9B,cAAc,QAAS,aAAc,IACrC,cAAc;AAAA,EAClB;AACA,WACE,SAAU,gBAAiB,EAC3B,cAAe,SAAS,UAAU,SAAU;AAC/C;AASM,MAAM,wCACZ,CAAE,WAAW,OAAO,aACpB,OAAQ,EAAE,UAAU,SAAS,MAAO;AACnC,QAAM,OACL,aAAa,aACV;AAAA,IACA,wBAAwB;AAAA,EACxB,IACA;AAEJ,QAAM,gBAAgB;AAAA,IACrB,OAAO,SAAS,GAAI,wBAAyB;AAAA,IAC7C,SAAS;AAAA,MACR,SACE,OAAQ,gBAAiB,EACzB,oBAAqB,SAAU;AAAA,IAClC;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,EACD;AAEA,QAAM,gBAAgB,MAAM,SAC1B,SAAU,MAAO,EACjB,iBAAkB,YAAY,YAAY,aAAc;AAE1D,MAAK,aAAa,YAAa;AAC9B;AAAA,EACD;AAEA,QAAM,WAAW,YAAa,cAAc;AAAA,IAC3C,KAAK,cAAc;AAAA,EACpB,CAAE;AACF,WACE,SAAU,gBAAiB,EAC3B,cAAe,WAAW,QAAS;AACrC,WAAS;AAAA,IACR,SAAS;AAAA,IACT;AAAA,EACD;AACD;AAOM,MAAM,oCACZ,CAAE,OACF,OAAQ,EAAE,SAAS,MAAO;AACzB,QAAM,gBAAgB,SACpB,OAAQ,MAAO,EACf,sBAAuB,YAAY,YAAY,EAAG;AAGpD,MAAK,CAAE,eAAgB;AACtB;AAAA,EACD;AAGA,QAAM,YAAY,SAAS,OAAQ,gBAAiB,EAAE,UAAU;AAChE,QAAM,mBAAmB,UAAU;AAAA,IAClC,CAAE,UAAW,gBAAiB,KAAM,KAAK,MAAM,WAAW,QAAQ;AAAA,EACnE;AACA,QAAM,2BAA2B,iBAAiB;AAAA,IACjD,CAAE,UAAW,MAAM;AAAA,EACpB;AAGA,MAAK,yBAAyB,QAAS;AACtC,aACE,SAAU,gBAAiB,EAC3B,aAAc,wBAAyB;AAAA,EAC1C;AAEA,QAAM,SACJ,SAAU,MAAO,EACjB,mBAAoB,YAAY,YAAY,EAAG;AAClD;AASM,SAAS,sCAAuC,UAAU,WAAY;AAC5E,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACD;AACD;",
5
+ "mappings": ";AAGA,SAAS,SAAS,wBAAwB;AAC1C;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,UAAU;AAOZ,IAAM,qCACZ,CAAE,aACF,CAAE,EAAE,SAAS,MAAO;AACnB,QAAM,WAAW,SACf,OAAQ,gBAAiB,EACzB,SAAU,QAAS;AACrB,QAAM,gBAAgB,SACpB,OAAQ,MAAO,EACf;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,WAAW;AAAA,EACrB;AAED,QAAM,YAAY;AAAA,IACjB,OAAO,cAAc,YAAY,aAC9B,cAAc,QAAS,aAAc,IACrC,cAAc;AAAA,EAClB;AACA,WACE,SAAU,gBAAiB,EAC3B,cAAe,SAAS,UAAU,SAAU;AAC/C;AASM,IAAM,wCACZ,CAAE,WAAW,OAAO,aACpB,OAAQ,EAAE,UAAU,SAAS,MAAO;AACnC,QAAM,OACL,aAAa,aACV;AAAA,IACA,wBAAwB;AAAA,EACxB,IACA;AAEJ,QAAM,gBAAgB;AAAA,IACrB,OAAO,SAAS,GAAI,wBAAyB;AAAA,IAC7C,SAAS;AAAA,MACR,SACE,OAAQ,gBAAiB,EACzB,oBAAqB,SAAU;AAAA,IAClC;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,EACD;AAEA,QAAM,gBAAgB,MAAM,SAC1B,SAAU,MAAO,EACjB,iBAAkB,YAAY,YAAY,aAAc;AAE1D,MAAK,aAAa,YAAa;AAC9B;AAAA,EACD;AAEA,QAAM,WAAW,YAAa,cAAc;AAAA,IAC3C,KAAK,cAAc;AAAA,EACpB,CAAE;AACF,WACE,SAAU,gBAAiB,EAC3B,cAAe,WAAW,QAAS;AACrC,WAAS;AAAA,IACR,SAAS;AAAA,IACT;AAAA,EACD;AACD;AAOM,IAAM,oCACZ,CAAE,OACF,OAAQ,EAAE,SAAS,MAAO;AACzB,QAAM,gBAAgB,SACpB,OAAQ,MAAO,EACf,sBAAuB,YAAY,YAAY,EAAG;AAGpD,MAAK,CAAE,eAAgB;AACtB;AAAA,EACD;AAGA,QAAM,YAAY,SAAS,OAAQ,gBAAiB,EAAE,UAAU;AAChE,QAAM,mBAAmB,UAAU;AAAA,IAClC,CAAE,UAAW,gBAAiB,KAAM,KAAK,MAAM,WAAW,QAAQ;AAAA,EACnE;AACA,QAAM,2BAA2B,iBAAiB;AAAA,IACjD,CAAE,UAAW,MAAM;AAAA,EACpB;AAGA,MAAK,yBAAyB,QAAS;AACtC,aACE,SAAU,gBAAiB,EAC3B,aAAc,wBAAyB;AAAA,EAC1C;AAEA,QAAM,SACJ,SAAU,MAAO,EACjB,mBAAoB,YAAY,YAAY,EAAG;AAClD;AASM,SAAS,sCAAuC,UAAU,WAAY;AAC5E,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACD;AACD;",
6
6
  "names": []
7
7
  }
@@ -1,9 +1,10 @@
1
+ // packages/reusable-blocks/src/store/index.js
1
2
  import { createReduxStore, register } from "@wordpress/data";
2
3
  import * as actions from "./actions";
3
4
  import reducer from "./reducer";
4
5
  import * as selectors from "./selectors";
5
- const STORE_NAME = "core/reusable-blocks";
6
- const store = createReduxStore(STORE_NAME, {
6
+ var STORE_NAME = "core/reusable-blocks";
7
+ var store = createReduxStore(STORE_NAME, {
7
8
  actions,
8
9
  reducer,
9
10
  selectors
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/store/index.js"],
4
4
  "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} );\n\nregister( store );\n"],
5
- "mappings": "AAGA,SAAS,kBAAkB,gBAAgB;AAK3C,YAAY,aAAa;AACzB,OAAO,aAAa;AACpB,YAAY,eAAe;AAE3B,MAAM,aAAa;AASZ,MAAM,QAAQ,iBAAkB,YAAY;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AACD,CAAE;AAEF,SAAU,KAAM;",
5
+ "mappings": ";AAGA,SAAS,kBAAkB,gBAAgB;AAK3C,YAAY,aAAa;AACzB,OAAO,aAAa;AACpB,YAAY,eAAe;AAE3B,IAAM,aAAa;AASZ,IAAM,QAAQ,iBAAkB,YAAY;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AACD,CAAE;AAEF,SAAU,KAAM;",
6
6
  "names": []
7
7
  }
@@ -1,3 +1,4 @@
1
+ // packages/reusable-blocks/src/store/reducer.js
1
2
  import { combineReducers } from "@wordpress/data";
2
3
  function isEditingReusableBlock(state = {}, action) {
3
4
  if (action?.type === "SET_EDITING_REUSABLE_BLOCK") {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/store/reducer.js"],
4
4
  "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"],
5
- "mappings": "AAGA,SAAS,uBAAuB;AAEzB,SAAS,uBAAwB,QAAQ,CAAC,GAAG,QAAS;AAC5D,MAAK,QAAQ,SAAS,8BAA+B;AACpD,WAAO;AAAA,MACN,GAAG;AAAA,MACH,CAAE,OAAO,QAAS,GAAG,OAAO;AAAA,IAC7B;AAAA,EACD;AAEA,SAAO;AACR;AAEA,IAAO,kBAAQ,gBAAiB;AAAA,EAC/B;AACD,CAAE;",
5
+ "mappings": ";AAGA,SAAS,uBAAuB;AAEzB,SAAS,uBAAwB,QAAQ,CAAC,GAAG,QAAS;AAC5D,MAAK,QAAQ,SAAS,8BAA+B;AACpD,WAAO;AAAA,MACN,GAAG;AAAA,MACH,CAAE,OAAO,QAAS,GAAG,OAAO;AAAA,IAC7B;AAAA,EACD;AAEA,SAAO;AACR;AAEA,IAAO,kBAAQ,gBAAiB;AAAA,EAC/B;AACD,CAAE;",
6
6
  "names": []
7
7
  }
@@ -1,3 +1,4 @@
1
+ // packages/reusable-blocks/src/store/selectors.js
1
2
  function __experimentalIsEditingReusableBlock(state, clientId) {
2
3
  return state.isEditingReusableBlock[clientId];
3
4
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/store/selectors.js"],
4
4
  "sourcesContent": ["/**\n * Returns true if reusable block is in the editing state.\n *\n * @param {Object} state Global application state.\n * @param {number} clientId the clientID of the block.\n * @return {boolean} Whether the reusable block is in the editing state.\n */\nexport function __experimentalIsEditingReusableBlock( state, clientId ) {\n\treturn state.isEditingReusableBlock[ clientId ];\n}\n"],
5
- "mappings": "AAOO,SAAS,qCAAsC,OAAO,UAAW;AACvE,SAAO,MAAM,uBAAwB,QAAS;AAC/C;",
5
+ "mappings": ";AAOO,SAAS,qCAAsC,OAAO,UAAW;AACvE,SAAO,MAAM,uBAAwB,QAAS;AAC/C;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/reusable-blocks",
3
- "version": "5.34.0",
3
+ "version": "5.35.0",
4
4
  "description": "Reusable blocks utilities.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -37,18 +37,18 @@
37
37
  "{src,build,build-module}/{index.js,store/index.js}"
38
38
  ],
39
39
  "dependencies": {
40
- "@wordpress/base-styles": "^6.10.0",
41
- "@wordpress/block-editor": "^15.7.0",
42
- "@wordpress/blocks": "^15.7.0",
43
- "@wordpress/components": "^30.7.0",
44
- "@wordpress/core-data": "^7.34.0",
45
- "@wordpress/data": "^10.34.0",
46
- "@wordpress/element": "^6.34.0",
47
- "@wordpress/i18n": "^6.7.0",
48
- "@wordpress/icons": "^11.1.0",
49
- "@wordpress/notices": "^5.34.0",
50
- "@wordpress/private-apis": "^1.34.0",
51
- "@wordpress/url": "^4.34.0"
40
+ "@wordpress/base-styles": "^6.11.0",
41
+ "@wordpress/block-editor": "^15.8.0",
42
+ "@wordpress/blocks": "^15.8.0",
43
+ "@wordpress/components": "^30.8.0",
44
+ "@wordpress/core-data": "^7.35.0",
45
+ "@wordpress/data": "^10.35.0",
46
+ "@wordpress/element": "^6.35.0",
47
+ "@wordpress/i18n": "^6.8.0",
48
+ "@wordpress/icons": "^11.2.0",
49
+ "@wordpress/notices": "^5.35.0",
50
+ "@wordpress/private-apis": "^1.35.0",
51
+ "@wordpress/url": "^4.35.0"
52
52
  },
53
53
  "peerDependencies": {
54
54
  "react": "^18.0.0",
@@ -57,5 +57,5 @@
57
57
  "publishConfig": {
58
58
  "access": "public"
59
59
  },
60
- "gitHead": "ceebff807958d2e8fc755b5a20473939c78b4d1d"
60
+ "gitHead": "77aa1f194edceafe8ac2a1b9438bf84b557e76e3"
61
61
  }
@@ -63,7 +63,7 @@ function ReusableBlocksManageButton( { clientId } ) {
63
63
  </MenuItem>
64
64
  { canRemove && (
65
65
  <MenuItem onClick={ () => convertBlockToStatic( clientId ) }>
66
- { __( 'Detach' ) }
66
+ { __( 'Disconnect pattern' ) }
67
67
  </MenuItem>
68
68
  ) }
69
69
  </>