@wordpress/reusable-blocks 4.16.0 → 4.17.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 (47) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/index.js +0 -2
  3. package/build/components/index.js.map +1 -1
  4. package/build/components/reusable-blocks-menu-items/index.js +11 -15
  5. package/build/components/reusable-blocks-menu-items/index.js.map +1 -1
  6. package/build/components/reusable-blocks-menu-items/index.native.js +0 -2
  7. package/build/components/reusable-blocks-menu-items/index.native.js.map +1 -1
  8. package/build/components/reusable-blocks-menu-items/reusable-block-convert-button.js +21 -30
  9. package/build/components/reusable-blocks-menu-items/reusable-block-convert-button.js.map +1 -1
  10. package/build/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js +2 -16
  11. package/build/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js.map +1 -1
  12. package/build/index.js +0 -3
  13. package/build/index.js.map +1 -1
  14. package/build/index.native.js +0 -4
  15. package/build/index.native.js.map +1 -1
  16. package/build/lock-unlock.js +1 -2
  17. package/build/lock-unlock.js.map +1 -1
  18. package/build/store/actions.js +9 -21
  19. package/build/store/actions.js.map +1 -1
  20. package/build/store/index.js +2 -9
  21. package/build/store/index.js.map +1 -1
  22. package/build/store/reducer.js +3 -6
  23. package/build/store/reducer.js.map +1 -1
  24. package/build/store/selectors.js +0 -1
  25. package/build/store/selectors.js.map +1 -1
  26. package/build-module/components/index.js.map +1 -1
  27. package/build-module/components/reusable-blocks-menu-items/index.js +12 -11
  28. package/build-module/components/reusable-blocks-menu-items/index.js.map +1 -1
  29. package/build-module/components/reusable-blocks-menu-items/index.native.js.map +1 -1
  30. package/build-module/components/reusable-blocks-menu-items/reusable-block-convert-button.js +24 -22
  31. package/build-module/components/reusable-blocks-menu-items/reusable-block-convert-button.js.map +1 -1
  32. package/build-module/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js +4 -11
  33. package/build-module/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js.map +1 -1
  34. package/build-module/index.js.map +1 -1
  35. package/build-module/index.native.js.map +1 -1
  36. package/build-module/lock-unlock.js.map +1 -1
  37. package/build-module/store/actions.js +10 -12
  38. package/build-module/store/actions.js.map +1 -1
  39. package/build-module/store/index.js +2 -2
  40. package/build-module/store/index.js.map +1 -1
  41. package/build-module/store/reducer.js +2 -2
  42. package/build-module/store/reducer.js.map +1 -1
  43. package/build-module/store/selectors.js.map +1 -1
  44. package/package.json +14 -13
  45. package/src/components/reusable-blocks-menu-items/index.js +16 -15
  46. package/src/components/reusable-blocks-menu-items/reusable-block-convert-button.js +64 -72
  47. package/src/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js +3 -6
package/CHANGELOG.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 4.17.0 (2023-08-16)
6
+
5
7
  ## 4.16.0 (2023-08-10)
6
8
 
7
9
  ## 4.15.0 (2023-07-20)
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
@@ -11,6 +10,5 @@ Object.defineProperty(exports, "ReusableBlocksMenuItems", {
11
10
  return _reusableBlocksMenuItems.default;
12
11
  }
13
12
  });
14
-
15
13
  var _reusableBlocksMenuItems = _interopRequireDefault(require("./reusable-blocks-menu-items"));
16
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/reusable-blocks/src/components/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA","sourcesContent":["export { default as ReusableBlocksMenuItems } from './reusable-blocks-menu-items';\n"]}
1
+ {"version":3,"names":["_reusableBlocksMenuItems","_interopRequireDefault","require"],"sources":["@wordpress/reusable-blocks/src/components/index.js"],"sourcesContent":["export { default as ReusableBlocksMenuItems } from './reusable-blocks-menu-items';\n"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,wBAAA,GAAAC,sBAAA,CAAAC,OAAA"}
@@ -1,22 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = ReusableBlocksMenuItems;
9
-
10
8
  var _element = require("@wordpress/element");
11
-
12
- var _data = require("@wordpress/data");
13
-
14
9
  var _blockEditor = require("@wordpress/block-editor");
15
-
16
10
  var _reusableBlockConvertButton = _interopRequireDefault(require("./reusable-block-convert-button"));
17
-
18
11
  var _reusableBlocksManageButton = _interopRequireDefault(require("./reusable-blocks-manage-button"));
19
-
20
12
  /**
21
13
  * WordPress dependencies
22
14
  */
@@ -24,15 +16,19 @@ var _reusableBlocksManageButton = _interopRequireDefault(require("./reusable-blo
24
16
  /**
25
17
  * Internal dependencies
26
18
  */
19
+
27
20
  function ReusableBlocksMenuItems({
28
21
  rootClientId
29
22
  }) {
30
- const clientIds = (0, _data.useSelect)(select => select(_blockEditor.store).getSelectedBlockClientIds(), []);
31
- return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_reusableBlockConvertButton.default, {
32
- clientIds: clientIds,
33
- rootClientId: rootClientId
34
- }), clientIds.length === 1 && (0, _element.createElement)(_reusableBlocksManageButton.default, {
35
- clientId: clientIds[0]
36
- }));
23
+ return (0, _element.createElement)(_blockEditor.BlockSettingsMenuControls, null, ({
24
+ onClose,
25
+ selectedClientIds
26
+ }) => (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_reusableBlockConvertButton.default, {
27
+ clientIds: selectedClientIds,
28
+ rootClientId: rootClientId,
29
+ onClose: onClose
30
+ }), selectedClientIds.length === 1 && (0, _element.createElement)(_reusableBlocksManageButton.default, {
31
+ clientId: selectedClientIds[0]
32
+ })));
37
33
  }
38
34
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/index.js"],"names":["ReusableBlocksMenuItems","rootClientId","clientIds","select","blockEditorStore","getSelectedBlockClientIds","length"],"mappings":";;;;;;;;;;;AAGA;;AACA;;AAKA;;AACA;;AAVA;AACA;AACA;;AAIA;AACA;AACA;AAIe,SAASA,uBAAT,CAAkC;AAAEC,EAAAA;AAAF,CAAlC,EAAqD;AACnE,QAAMC,SAAS,GAAG,qBACfC,MAAF,IAAcA,MAAM,CAAEC,kBAAF,CAAN,CAA2BC,yBAA3B,EADG,EAEjB,EAFiB,CAAlB;AAKA,SACC,qDACC,4BAAC,mCAAD;AACC,IAAA,SAAS,EAAGH,SADb;AAEC,IAAA,YAAY,EAAGD;AAFhB,IADD,EAKGC,SAAS,CAACI,MAAV,KAAqB,CAArB,IACD,4BAAC,mCAAD;AAA4B,IAAA,QAAQ,EAAGJ,SAAS,CAAE,CAAF;AAAhD,IANF,CADD;AAWA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } 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\nexport default function ReusableBlocksMenuItems( { rootClientId } ) {\n\tconst clientIds = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSelectedBlockClientIds(),\n\t\t[]\n\t);\n\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"]}
1
+ {"version":3,"names":["_blockEditor","require","_reusableBlockConvertButton","_interopRequireDefault","_reusableBlocksManageButton","ReusableBlocksMenuItems","rootClientId","_element","createElement","BlockSettingsMenuControls","onClose","selectedClientIds","Fragment","default","clientIds","length","clientId"],"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/index.js"],"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"],"mappings":";;;;;;;;AAGA,IAAAA,YAAA,GAAAC,OAAA;AAKA,IAAAC,2BAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,2BAAA,GAAAD,sBAAA,CAAAF,OAAA;AATA;AACA;AACA;;AAGA;AACA;AACA;;AAIe,SAASI,uBAAuBA,CAAE;EAAEC;AAAa,CAAC,EAAG;EACnE,OACC,IAAAC,QAAA,CAAAC,aAAA,EAACR,YAAA,CAAAS,yBAAyB,QACvB,CAAE;IAAEC,OAAO;IAAEC;EAAkB,CAAC,KACjC,IAAAJ,QAAA,CAAAC,aAAA,EAAAD,QAAA,CAAAK,QAAA,QACC,IAAAL,QAAA,CAAAC,aAAA,EAACN,2BAAA,CAAAW,OAA0B;IAC1BC,SAAS,EAAGH,iBAAmB;IAC/BL,YAAY,EAAGA,YAAc;IAC7BI,OAAO,EAAGA;EAAS,CACnB,CAAC,EACAC,iBAAiB,CAACI,MAAM,KAAK,CAAC,IAC/B,IAAAR,QAAA,CAAAC,aAAA,EAACJ,2BAAA,CAAAS,OAA0B;IAC1BG,QAAQ,EAAGL,iBAAiB,CAAE,CAAC;EAAI,CACnC,CAED,CAEuB,CAAC;AAE9B"}
@@ -4,8 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _default = () => null;
9
-
10
8
  exports.default = _default;
11
9
  //# sourceMappingURL=index.native.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/index.native.js"],"names":[],"mappings":";;;;;;;eAAe,MAAM,I","sourcesContent":["export default () => null;\n"]}
1
+ {"version":3,"names":["_default","exports","default"],"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/index.native.js"],"sourcesContent":["export default () => null;\n"],"mappings":";;;;;;eAAeA,CAAA,KAAM,IAAI;AAAAC,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
@@ -4,29 +4,17 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = ReusableBlockConvertButton;
7
-
8
7
  var _element = require("@wordpress/element");
9
-
10
8
  var _blocks = require("@wordpress/blocks");
11
-
12
9
  var _blockEditor = require("@wordpress/block-editor");
13
-
14
10
  var _components = require("@wordpress/components");
15
-
16
11
  var _icons = require("@wordpress/icons");
17
-
18
12
  var _data = require("@wordpress/data");
19
-
20
13
  var _i18n = require("@wordpress/i18n");
21
-
22
14
  var _notices = require("@wordpress/notices");
23
-
24
15
  var _coreData = require("@wordpress/core-data");
25
-
26
16
  var _store = require("../../store");
27
-
28
17
  var _lockUnlock = require("../../lock-unlock");
29
-
30
18
  /**
31
19
  * WordPress dependencies
32
20
  */
@@ -41,11 +29,13 @@ var _lockUnlock = require("../../lock-unlock");
41
29
  * @param {Object} props Component props.
42
30
  * @param {string[]} props.clientIds Client ids of selected blocks.
43
31
  * @param {string} props.rootClientId ID of the currently selected top-level block.
32
+ * @param {()=>void} props.onClose Callback to close the menu.
44
33
  * @return {import('@wordpress/element').WPComponent} The menu control or null.
45
34
  */
46
35
  function ReusableBlockConvertButton({
47
36
  clientIds,
48
- rootClientId
37
+ rootClientId,
38
+ onClose
49
39
  }) {
50
40
  const {
51
41
  useReusableBlocksRenameHint,
@@ -57,7 +47,6 @@ function ReusableBlockConvertButton({
57
47
  const [title, setTitle] = (0, _element.useState)('');
58
48
  const canConvert = (0, _data.useSelect)(select => {
59
49
  var _getBlocksByClientId;
60
-
61
50
  const {
62
51
  canUser
63
52
  } = select(_coreData.store);
@@ -69,15 +58,19 @@ function ReusableBlockConvertButton({
69
58
  const rootId = rootClientId || (clientIds.length > 0 ? getBlockRootClientId(clientIds[0]) : undefined);
70
59
  const blocks = (_getBlocksByClientId = getBlocksByClientId(clientIds)) !== null && _getBlocksByClientId !== void 0 ? _getBlocksByClientId : [];
71
60
  const isReusable = blocks.length === 1 && blocks[0] && (0, _blocks.isReusableBlock)(blocks[0]) && !!select(_coreData.store).getEntityRecord('postType', 'wp_block', blocks[0].attributes.ref);
72
-
73
- const _canConvert = // Hide when this is already a reusable block.
74
- !isReusable && // Hide when reusable blocks are disabled.
75
- canInsertBlockType('core/block', rootId) && blocks.every(block => // Guard against the case where a regular block has *just* been converted.
76
- !!block && // Hide on invalid blocks.
77
- block.isValid && // Hide when block doesn't support being made reusable.
78
- (0, _blocks.hasBlockSupport)(block.name, 'reusable', true)) && // Hide when current doesn't have permission to do that.
61
+ const _canConvert =
62
+ // Hide when this is already a reusable block.
63
+ !isReusable &&
64
+ // Hide when reusable blocks are disabled.
65
+ canInsertBlockType('core/block', rootId) && blocks.every(block =>
66
+ // Guard against the case where a regular block has *just* been converted.
67
+ !!block &&
68
+ // Hide on invalid blocks.
69
+ block.isValid &&
70
+ // Hide when block doesn't support being made reusable.
71
+ (0, _blocks.hasBlockSupport)(block.name, 'reusable', true)) &&
72
+ // Hide when current doesn't have permission to do that.
79
73
  !!canUser('create', 'blocks');
80
-
81
74
  return _canConvert;
82
75
  }, [clientIds, rootClientId]);
83
76
  const {
@@ -90,8 +83,10 @@ function ReusableBlockConvertButton({
90
83
  const onConvert = (0, _element.useCallback)(async function (reusableBlockTitle) {
91
84
  try {
92
85
  await convertBlocksToReusable(clientIds, reusableBlockTitle, syncType);
93
- createSuccessNotice(!syncType ? (0, _i18n.sprintf)( // translators: %s: the name the user has given to the pattern.
94
- (0, _i18n.__)('Synced Pattern created: %s'), reusableBlockTitle) : (0, _i18n.sprintf)( // translators: %s: the name the user has given to the pattern.
86
+ createSuccessNotice(!syncType ? (0, _i18n.sprintf)(
87
+ // translators: %s: the name the user has given to the pattern.
88
+ (0, _i18n.__)('Synced Pattern created: %s'), reusableBlockTitle) : (0, _i18n.sprintf)(
89
+ // translators: %s: the name the user has given to the pattern.
95
90
  (0, _i18n.__)('Unsynced Pattern created: %s'), reusableBlockTitle), {
96
91
  type: 'snackbar',
97
92
  id: 'convert-to-reusable-block-success'
@@ -103,14 +98,10 @@ function ReusableBlockConvertButton({
103
98
  });
104
99
  }
105
100
  }, [convertBlocksToReusable, clientIds, syncType, createSuccessNotice, createErrorNotice]);
106
-
107
101
  if (!canConvert) {
108
102
  return null;
109
103
  }
110
-
111
- return (0, _element.createElement)(_blockEditor.BlockSettingsMenuControls, null, ({
112
- onClose
113
- }) => (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.MenuItem, {
104
+ return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.MenuItem, {
114
105
  icon: _icons.symbol,
115
106
  onClick: () => setIsModalOpen(true)
116
107
  }, showRenameHint ? (0, _i18n.__)('Create pattern/reusable block') : (0, _i18n.__)('Create pattern')), isModalOpen && (0, _element.createElement)(_components.Modal, {
@@ -154,6 +145,6 @@ function ReusableBlockConvertButton({
154
145
  }, (0, _i18n.__)('Cancel')), (0, _element.createElement)(_components.Button, {
155
146
  variant: "primary",
156
147
  type: "submit"
157
- }, (0, _i18n.__)('Create'))))))));
148
+ }, (0, _i18n.__)('Create')))))));
158
149
  }
159
150
  //# 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","useReusableBlocksRenameHint","ReusableBlocksRenameHint","blockEditorPrivateApis","showRenameHint","syncType","setSyncType","undefined","isModalOpen","setIsModalOpen","title","setTitle","canConvert","select","canUser","coreStore","getBlocksByClientId","canInsertBlockType","getBlockRootClientId","blockEditorStore","rootId","length","blocks","isReusable","getEntityRecord","attributes","ref","_canConvert","every","block","isValid","name","__experimentalConvertBlocksToReusable","convertBlocksToReusable","store","createSuccessNotice","createErrorNotice","noticesStore","onConvert","reusableBlockTitle","type","id","error","message","onClose","symbol","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\tprivateApis as blockEditorPrivateApis,\n} 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 { __, 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';\nimport { unlock } from '../../lock-unlock';\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 { useReusableBlocksRenameHint, ReusableBlocksRenameHint } = unlock(\n\t\tblockEditorPrivateApis\n\t);\n\tconst showRenameHint = useReusableBlocksRenameHint();\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!! canUser( 'create', 'blocks' );\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<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={ symbol }\n\t\t\t\t\t\tonClick={ () => setIsModalOpen( true ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ showRenameHint\n\t\t\t\t\t\t\t? __( 'Create pattern/reusable block' )\n\t\t\t\t\t\t\t: __( 'Create pattern' ) }\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 pattern' ) }\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<VStack spacing=\"5\">\n\t\t\t\t\t\t\t\t\t<ReusableBlocksRenameHint />\n\t\t\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\t\t\t\t\tplaceholder={ __( 'My pattern' ) }\n\t\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Synced' ) }\n\t\t\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t\t\t'Editing the pattern will update it anywhere it is used.'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tchecked={ ! syncType }\n\t\t\t\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetSyncType(\n\t\t\t\t\t\t\t\t\t\t\t\t! syncType\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 'unsynced'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\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/>\n\t\t\t\t\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\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\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{ __( 'Create' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t\t</VStack>\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,"names":["_element","require","_blocks","_blockEditor","_components","_icons","_data","_i18n","_notices","_coreData","_store","_lockUnlock","ReusableBlockConvertButton","clientIds","rootClientId","onClose","useReusableBlocksRenameHint","ReusableBlocksRenameHint","unlock","blockEditorPrivateApis","showRenameHint","syncType","setSyncType","useState","undefined","isModalOpen","setIsModalOpen","title","setTitle","canConvert","useSelect","select","_getBlocksByClientId","canUser","coreStore","getBlocksByClientId","canInsertBlockType","getBlockRootClientId","blockEditorStore","rootId","length","blocks","isReusable","isReusableBlock","getEntityRecord","attributes","ref","_canConvert","every","block","isValid","hasBlockSupport","name","__experimentalConvertBlocksToReusable","convertBlocksToReusable","useDispatch","store","createSuccessNotice","createErrorNotice","noticesStore","onConvert","useCallback","reusableBlockTitle","sprintf","__","type","id","error","message","createElement","Fragment","MenuItem","icon","symbol","onClick","Modal","onRequestClose","overlayClassName","onSubmit","event","preventDefault","__experimentalVStack","spacing","TextControl","__nextHasNoMarginBottom","label","value","onChange","placeholder","ToggleControl","help","checked","__experimentalHStack","justify","Button","variant"],"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-block-convert-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { hasBlockSupport, isReusableBlock } from '@wordpress/blocks';\nimport {\n\tstore as blockEditorStore,\n\tprivateApis as blockEditorPrivateApis,\n} 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 { __, 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';\nimport { unlock } from '../../lock-unlock';\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('@wordpress/element').WPComponent} The menu control or null.\n */\nexport default function ReusableBlockConvertButton( {\n\tclientIds,\n\trootClientId,\n\tonClose,\n} ) {\n\tconst { useReusableBlocksRenameHint, ReusableBlocksRenameHint } = unlock(\n\t\tblockEditorPrivateApis\n\t);\n\tconst showRenameHint = useReusableBlocksRenameHint();\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!! canUser( 'create', 'blocks' );\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{ showRenameHint\n\t\t\t\t\t? __( 'Create pattern/reusable block' )\n\t\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<ReusableBlocksRenameHint />\n\t\t\t\t\t\t\t<TextControl\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\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Synced' ) }\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Editing the pattern will update it anywhere it is used.'\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\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 variant=\"primary\" type=\"submit\">\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"],"mappings":"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"}
@@ -4,25 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _element = require("@wordpress/element");
9
-
10
8
  var _components = require("@wordpress/components");
11
-
12
9
  var _i18n = require("@wordpress/i18n");
13
-
14
10
  var _blocks = require("@wordpress/blocks");
15
-
16
11
  var _data = require("@wordpress/data");
17
-
18
12
  var _blockEditor = require("@wordpress/block-editor");
19
-
20
13
  var _url = require("@wordpress/url");
21
-
22
14
  var _coreData = require("@wordpress/core-data");
23
-
24
15
  var _store = require("../../store");
25
-
26
16
  /**
27
17
  * WordPress dependencies
28
18
  */
@@ -30,6 +20,7 @@ var _store = require("../../store");
30
20
  /**
31
21
  * Internal dependencies
32
22
  */
23
+
33
24
  function ReusableBlocksManageButton({
34
25
  clientId
35
26
  }) {
@@ -49,9 +40,7 @@ function ReusableBlocksManageButton({
49
40
  canUser
50
41
  } = select(_coreData.store);
51
42
  const reusableBlock = getBlock(clientId);
52
-
53
43
  const isBlockTheme = getSettings().__unstableIsBlockBasedTheme;
54
-
55
44
  return {
56
45
  canRemove: canRemoveBlock(clientId),
57
46
  isVisible: !!reusableBlock && (0, _blocks.isReusableBlock)(reusableBlock) && !!canUser('update', 'blocks', reusableBlock.attributes.ref),
@@ -69,18 +58,15 @@ function ReusableBlocksManageButton({
69
58
  const {
70
59
  __experimentalConvertBlockToStatic: convertBlockToStatic
71
60
  } = (0, _data.useDispatch)(_store.store);
72
-
73
61
  if (!isVisible) {
74
62
  return null;
75
63
  }
76
-
77
- return (0, _element.createElement)(_blockEditor.BlockSettingsMenuControls, null, (0, _element.createElement)(_components.MenuItem, {
64
+ return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.MenuItem, {
78
65
  href: managePatternsUrl
79
66
  }, (0, _i18n.__)('Manage patterns')), canRemove && (0, _element.createElement)(_components.MenuItem, {
80
67
  onClick: () => convertBlockToStatic(clientId)
81
68
  }, innerBlockCount > 1 ? (0, _i18n.__)('Detach patterns') : (0, _i18n.__)('Detach pattern')));
82
69
  }
83
-
84
70
  var _default = ReusableBlocksManageButton;
85
71
  exports.default = _default;
86
72
  //# sourceMappingURL=reusable-blocks-manage-button.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js"],"names":["ReusableBlocksManageButton","clientId","canRemove","isVisible","innerBlockCount","managePatternsUrl","select","getBlock","canRemoveBlock","getBlockCount","getSettings","blockEditorStore","canUser","coreStore","reusableBlock","isBlockTheme","__unstableIsBlockBasedTheme","attributes","ref","path","post_type","__experimentalConvertBlockToStatic","convertBlockToStatic","reusableBlocksStore"],"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,SAAF;AAAaC,IAAAA,SAAb;AAAwBC,IAAAA,eAAxB;AAAyCC,IAAAA;AAAzC,MACL,qBACGC,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA,QAAF;AAAYC,MAAAA,cAAZ;AAA4BC,MAAAA,aAA5B;AAA2CC,MAAAA;AAA3C,QACLJ,MAAM,CAAEK,kBAAF,CADP;AAEA,UAAM;AAAEC,MAAAA;AAAF,QAAcN,MAAM,CAAEO,eAAF,CAA1B;AACA,UAAMC,aAAa,GAAGP,QAAQ,CAAEN,QAAF,CAA9B;;AACA,UAAMc,YAAY,GAAGL,WAAW,GAAGM,2BAAnC;;AAEA,WAAO;AACNd,MAAAA,SAAS,EAAEM,cAAc,CAAEP,QAAF,CADnB;AAENE,MAAAA,SAAS,EACR,CAAC,CAAEW,aAAH,IACA,6BAAiBA,aAAjB,CADA,IAEA,CAAC,CAAEF,OAAO,CACT,QADS,EAET,QAFS,EAGTE,aAAa,CAACG,UAAd,CAAyBC,GAHhB,CALL;AAUNd,MAAAA,eAAe,EAAEK,aAAa,CAAER,QAAF,CAVxB;AAWN;AACA;AACA;AACAI,MAAAA,iBAAiB,EAChBU,YAAY,IAAIH,OAAO,CAAE,MAAF,EAAU,WAAV,CAAvB,GACG,uBAAc,iBAAd,EAAiC;AACjCO,QAAAA,IAAI,EAAE;AAD2B,OAAjC,CADH,GAIG,uBAAc,UAAd,EAA0B;AAC1BC,QAAAA,SAAS,EAAE;AADe,OAA1B;AAnBE,KAAP;AAuBA,GA/BF,EAgCC,CAAEnB,QAAF,CAhCD,CADD;AAoCA,QAAM;AAAEoB,IAAAA,kCAAkC,EAAEC;AAAtC,MACL,uBAAaC,YAAb,CADD;;AAGA,MAAK,CAAEpB,SAAP,EAAmB;AAClB,WAAO,IAAP;AACA;;AAED,SACC,4BAAC,sCAAD,QACC,4BAAC,oBAAD;AAAU,IAAA,IAAI,EAAGE;AAAjB,KACG,cAAI,iBAAJ,CADH,CADD,EAIGH,SAAS,IACV,4BAAC,oBAAD;AAAU,IAAA,OAAO,EAAG,MAAMoB,oBAAoB,CAAErB,QAAF;AAA9C,KACGG,eAAe,GAAG,CAAlB,GACC,cAAI,iBAAJ,CADD,GAEC,cAAI,gBAAJ,CAHJ,CALF,CADD;AAcA;;eAEcJ,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 { canRemove, isVisible, innerBlockCount, managePatternsUrl } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst { getBlock, canRemoveBlock, getBlockCount, getSettings } =\n\t\t\t\t\tselect( blockEditorStore );\n\t\t\t\tconst { canUser } = select( coreStore );\n\t\t\t\tconst reusableBlock = getBlock( clientId );\n\t\t\t\tconst isBlockTheme = getSettings().__unstableIsBlockBasedTheme;\n\n\t\t\t\treturn {\n\t\t\t\t\tcanRemove: canRemoveBlock( clientId ),\n\t\t\t\t\tisVisible:\n\t\t\t\t\t\t!! reusableBlock &&\n\t\t\t\t\t\tisReusableBlock( reusableBlock ) &&\n\t\t\t\t\t\t!! canUser(\n\t\t\t\t\t\t\t'update',\n\t\t\t\t\t\t\t'blocks',\n\t\t\t\t\t\t\treusableBlock.attributes.ref\n\t\t\t\t\t\t),\n\t\t\t\t\tinnerBlockCount: getBlockCount( clientId ),\n\t\t\t\t\t// The site editor and templates both check whether the user\n\t\t\t\t\t// has edit_theme_options capabilities. We can leverage that here\n\t\t\t\t\t// and omit the manage patterns link if the user can't access it.\n\t\t\t\t\tmanagePatternsUrl:\n\t\t\t\t\t\tisBlockTheme && canUser( 'read', 'templates' )\n\t\t\t\t\t\t\t? addQueryArgs( 'site-editor.php', {\n\t\t\t\t\t\t\t\t\tpath: '/patterns',\n\t\t\t\t\t\t\t } )\n\t\t\t\t\t\t\t: addQueryArgs( 'edit.php', {\n\t\t\t\t\t\t\t\t\tpost_type: 'wp_block',\n\t\t\t\t\t\t\t } ),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ clientId ]\n\t\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<BlockSettingsMenuControls>\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{ innerBlockCount > 1\n\t\t\t\t\t\t? __( 'Detach patterns' )\n\t\t\t\t\t\t: __( 'Detach pattern' ) }\n\t\t\t\t</MenuItem>\n\t\t\t) }\n\t\t</BlockSettingsMenuControls>\n\t);\n}\n\nexport default ReusableBlocksManageButton;\n"]}
1
+ {"version":3,"names":["_components","require","_i18n","_blocks","_data","_blockEditor","_url","_coreData","_store","ReusableBlocksManageButton","clientId","canRemove","isVisible","innerBlockCount","managePatternsUrl","useSelect","select","getBlock","canRemoveBlock","getBlockCount","getSettings","blockEditorStore","canUser","coreStore","reusableBlock","isBlockTheme","__unstableIsBlockBasedTheme","isReusableBlock","attributes","ref","addQueryArgs","path","post_type","__experimentalConvertBlockToStatic","convertBlockToStatic","useDispatch","reusableBlocksStore","_element","createElement","Fragment","MenuItem","href","__","onClick","_default","exports","default"],"sources":["@wordpress/reusable-blocks/src/components/reusable-blocks-menu-items/reusable-blocks-manage-button.js"],"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, innerBlockCount, managePatternsUrl } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst { getBlock, canRemoveBlock, getBlockCount, getSettings } =\n\t\t\t\t\tselect( blockEditorStore );\n\t\t\t\tconst { canUser } = select( coreStore );\n\t\t\t\tconst reusableBlock = getBlock( clientId );\n\t\t\t\tconst isBlockTheme = getSettings().__unstableIsBlockBasedTheme;\n\n\t\t\t\treturn {\n\t\t\t\t\tcanRemove: canRemoveBlock( clientId ),\n\t\t\t\t\tisVisible:\n\t\t\t\t\t\t!! reusableBlock &&\n\t\t\t\t\t\tisReusableBlock( reusableBlock ) &&\n\t\t\t\t\t\t!! canUser(\n\t\t\t\t\t\t\t'update',\n\t\t\t\t\t\t\t'blocks',\n\t\t\t\t\t\t\treusableBlock.attributes.ref\n\t\t\t\t\t\t),\n\t\t\t\t\tinnerBlockCount: getBlockCount( clientId ),\n\t\t\t\t\t// The site editor and templates both check whether the user\n\t\t\t\t\t// has edit_theme_options capabilities. We can leverage that here\n\t\t\t\t\t// and omit the manage patterns link if the user can't access it.\n\t\t\t\t\tmanagePatternsUrl:\n\t\t\t\t\t\tisBlockTheme && canUser( 'read', 'templates' )\n\t\t\t\t\t\t\t? addQueryArgs( 'site-editor.php', {\n\t\t\t\t\t\t\t\t\tpath: '/patterns',\n\t\t\t\t\t\t\t } )\n\t\t\t\t\t\t\t: addQueryArgs( 'edit.php', {\n\t\t\t\t\t\t\t\t\tpost_type: 'wp_block',\n\t\t\t\t\t\t\t } ),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ clientId ]\n\t\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{ innerBlockCount > 1\n\t\t\t\t\t\t? __( 'Detach patterns' )\n\t\t\t\t\t\t: __( 'Detach pattern' ) }\n\t\t\t\t</MenuItem>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default ReusableBlocksManageButton;\n"],"mappings":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,IAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AAKA,IAAAO,MAAA,GAAAP,OAAA;AAdA;AACA;AACA;;AASA;AACA;AACA;;AAGA,SAASQ,0BAA0BA,CAAE;EAAEC;AAAS,CAAC,EAAG;EACnD,MAAM;IAAEC,SAAS;IAAEC,SAAS;IAAEC,eAAe;IAAEC;EAAkB,CAAC,GACjE,IAAAC,eAAS,EACNC,MAAM,IAAM;IACb,MAAM;MAAEC,QAAQ;MAAEC,cAAc;MAAEC,aAAa;MAAEC;IAAY,CAAC,GAC7DJ,MAAM,CAAEK,kBAAiB,CAAC;IAC3B,MAAM;MAAEC;IAAQ,CAAC,GAAGN,MAAM,CAAEO,eAAU,CAAC;IACvC,MAAMC,aAAa,GAAGP,QAAQ,CAAEP,QAAS,CAAC;IAC1C,MAAMe,YAAY,GAAGL,WAAW,CAAC,CAAC,CAACM,2BAA2B;IAE9D,OAAO;MACNf,SAAS,EAAEO,cAAc,CAAER,QAAS,CAAC;MACrCE,SAAS,EACR,CAAC,CAAEY,aAAa,IAChB,IAAAG,uBAAe,EAAEH,aAAc,CAAC,IAChC,CAAC,CAAEF,OAAO,CACT,QAAQ,EACR,QAAQ,EACRE,aAAa,CAACI,UAAU,CAACC,GAC1B,CAAC;MACFhB,eAAe,EAAEM,aAAa,CAAET,QAAS,CAAC;MAC1C;MACA;MACA;MACAI,iBAAiB,EAChBW,YAAY,IAAIH,OAAO,CAAE,MAAM,EAAE,WAAY,CAAC,GAC3C,IAAAQ,iBAAY,EAAE,iBAAiB,EAAE;QACjCC,IAAI,EAAE;MACN,CAAE,CAAC,GACH,IAAAD,iBAAY,EAAE,UAAU,EAAE;QAC1BE,SAAS,EAAE;MACX,CAAE;IACP,CAAC;EACF,CAAC,EACD,CAAEtB,QAAQ,CACX,CAAC;EAEF,MAAM;IAAEuB,kCAAkC,EAAEC;EAAqB,CAAC,GACjE,IAAAC,iBAAW,EAAEC,YAAoB,CAAC;EAEnC,IAAK,CAAExB,SAAS,EAAG;IAClB,OAAO,IAAI;EACZ;EAEA,OACC,IAAAyB,QAAA,CAAAC,aAAA,EAAAD,QAAA,CAAAE,QAAA,QACC,IAAAF,QAAA,CAAAC,aAAA,EAACtC,WAAA,CAAAwC,QAAQ;IAACC,IAAI,EAAG3B;EAAmB,GACjC,IAAA4B,QAAE,EAAE,iBAAkB,CACf,CAAC,EACT/B,SAAS,IACV,IAAA0B,QAAA,CAAAC,aAAA,EAACtC,WAAA,CAAAwC,QAAQ;IAACG,OAAO,EAAGA,CAAA,KAAMT,oBAAoB,CAAExB,QAAS;EAAG,GACzDG,eAAe,GAAG,CAAC,GAClB,IAAA6B,QAAE,EAAE,iBAAkB,CAAC,GACvB,IAAAA,QAAE,EAAE,gBAAiB,CACf,CAEV,CAAC;AAEL;AAAC,IAAAE,QAAA,GAEcnC,0BAA0B;AAAAoC,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
package/build/index.js CHANGED
@@ -12,11 +12,8 @@ Object.defineProperty(exports, "store", {
12
12
  return _store.store;
13
13
  }
14
14
  });
15
-
16
15
  var _store = require("./store");
17
-
18
16
  var _components = require("./components");
19
-
20
17
  Object.keys(_components).forEach(function (key) {
21
18
  if (key === "default" || key === "__esModule") return;
22
19
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/reusable-blocks/src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export { store } from './store';\nexport * from './components';\n"]}
1
+ {"version":3,"names":["_store","require","_components","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get"],"sources":["@wordpress/reusable-blocks/src/index.js"],"sourcesContent":["export { store } from './store';\nexport * from './components';\n"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,WAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,WAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,WAAA,CAAAI,GAAA;IAAA;EAAA;AAAA"}
@@ -12,13 +12,9 @@ Object.defineProperty(exports, "store", {
12
12
  return _store.store;
13
13
  }
14
14
  });
15
-
16
15
  require("@wordpress/core-data");
17
-
18
16
  var _store = require("./store");
19
-
20
17
  var _components = require("./components");
21
-
22
18
  Object.keys(_components).forEach(function (key) {
23
19
  if (key === "default" || key === "__esModule") return;
24
20
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/reusable-blocks/src/index.native.js"],"names":[],"mappings":";;;;;;;;;;;;;;;AAGA;;AAEA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport '@wordpress/core-data';\n\nexport { store } from './store';\nexport * from './components';\n"]}
1
+ {"version":3,"names":["require","_store","_components","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get"],"sources":["@wordpress/reusable-blocks/src/index.native.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport '@wordpress/core-data';\n\nexport { store } from './store';\nexport * from './components';\n"],"mappings":";;;;;;;;;;;;;;AAGAA,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAF,WAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,WAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,WAAA,CAAAI,GAAA;IAAA;EAAA;AAAA"}
@@ -4,12 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.unlock = void 0;
7
-
8
7
  var _privateApis = require("@wordpress/private-apis");
9
-
10
8
  /**
11
9
  * WordPress dependencies
12
10
  */
11
+
13
12
  const {
14
13
  unlock
15
14
  } = (0, _privateApis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)('I know using unstable features means my plugin or theme will inevitably break on the next WordPress release.', '@wordpress/reusable-blocks');
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/reusable-blocks/src/lock-unlock.js"],"names":["unlock"],"mappings":";;;;;;;AAGA;;AAHA;AACA;AACA;AAGO,MAAM;AAAEA,EAAAA;AAAF,IAAa,mEACzB,8GADyB,EAEzB,4BAFyB,CAAnB","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\n\nexport const { unlock } = __dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t'I know using unstable features means my plugin or theme will inevitably break on the next WordPress release.',\n\t'@wordpress/reusable-blocks'\n);\n"]}
1
+ {"version":3,"names":["_privateApis","require","unlock","__dangerousOptInToUnstableAPIsOnlyForCoreModules","exports"],"sources":["@wordpress/reusable-blocks/src/lock-unlock.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\n\nexport const { unlock } = __dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t'I know using unstable features means my plugin or theme will inevitably break on the next WordPress release.',\n\t'@wordpress/reusable-blocks'\n);\n"],"mappings":";;;;;;AAGA,IAAAA,YAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAGO,MAAM;EAAEC;AAAO,CAAC,GAAG,IAAAC,6DAAgD,EACzE,8GAA8G,EAC9G,4BACD,CAAC;AAACC,OAAA,CAAAF,MAAA,GAAAA,MAAA"}
@@ -5,13 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.__experimentalDeleteReusableBlock = exports.__experimentalConvertBlocksToReusable = exports.__experimentalConvertBlockToStatic = void 0;
7
7
  exports.__experimentalSetEditingReusableBlock = __experimentalSetEditingReusableBlock;
8
-
9
8
  var _blockEditor = require("@wordpress/block-editor");
10
-
11
9
  var _blocks = require("@wordpress/blocks");
12
-
13
10
  var _i18n = require("@wordpress/i18n");
14
-
15
11
  /**
16
12
  * WordPress dependencies
17
13
  */
@@ -29,6 +25,7 @@ const __experimentalConvertBlockToStatic = clientId => ({
29
25
  const newBlocks = (0, _blocks.parse)(typeof reusableBlock.content === 'function' ? reusableBlock.content(reusableBlock) : reusableBlock.content);
30
26
  registry.dispatch(_blockEditor.store).replaceBlocks(oldBlock.clientId, newBlocks);
31
27
  };
28
+
32
29
  /**
33
30
  * Returns a generator converting one or more static blocks into a pattern.
34
31
  *
@@ -36,10 +33,7 @@ const __experimentalConvertBlockToStatic = clientId => ({
36
33
  * @param {string} title Pattern title.
37
34
  * @param {undefined|'unsynced'} syncType They way block is synced, current undefined (synced) and 'unsynced'.
38
35
  */
39
-
40
-
41
36
  exports.__experimentalConvertBlockToStatic = __experimentalConvertBlockToStatic;
42
-
43
37
  const __experimentalConvertBlocksToReusable = (clientIds, title, syncType) => async ({
44
38
  registry,
45
39
  dispatch
@@ -54,47 +48,44 @@ const __experimentalConvertBlocksToReusable = (clientIds, title, syncType) => as
54
48
  meta
55
49
  };
56
50
  const updatedRecord = await registry.dispatch('core').saveEntityRecord('postType', 'wp_block', reusableBlock);
57
-
58
51
  if (syncType === 'unsynced') {
59
52
  return;
60
53
  }
61
-
62
54
  const newBlock = (0, _blocks.createBlock)('core/block', {
63
55
  ref: updatedRecord.id
64
56
  });
65
57
  registry.dispatch(_blockEditor.store).replaceBlocks(clientIds, newBlock);
66
-
67
58
  dispatch.__experimentalSetEditingReusableBlock(newBlock.clientId, true);
68
59
  };
60
+
69
61
  /**
70
62
  * Returns a generator deleting a reusable block.
71
63
  *
72
64
  * @param {string} id The ID of the reusable block to delete.
73
65
  */
74
-
75
-
76
66
  exports.__experimentalConvertBlocksToReusable = __experimentalConvertBlocksToReusable;
77
-
78
67
  const __experimentalDeleteReusableBlock = id => async ({
79
68
  registry
80
69
  }) => {
81
- const reusableBlock = registry.select('core').getEditedEntityRecord('postType', 'wp_block', id); // Don't allow a reusable block with a temporary ID to be deleted.
70
+ const reusableBlock = registry.select('core').getEditedEntityRecord('postType', 'wp_block', id);
82
71
 
72
+ // Don't allow a reusable block with a temporary ID to be deleted.
83
73
  if (!reusableBlock) {
84
74
  return;
85
- } // Remove any other blocks that reference this reusable block.
86
-
75
+ }
87
76
 
77
+ // Remove any other blocks that reference this reusable block.
88
78
  const allBlocks = registry.select(_blockEditor.store).getBlocks();
89
79
  const associatedBlocks = allBlocks.filter(block => (0, _blocks.isReusableBlock)(block) && block.attributes.ref === id);
90
- const associatedBlockClientIds = associatedBlocks.map(block => block.clientId); // Remove the parsed block.
80
+ const associatedBlockClientIds = associatedBlocks.map(block => block.clientId);
91
81
 
82
+ // Remove the parsed block.
92
83
  if (associatedBlockClientIds.length) {
93
84
  registry.dispatch(_blockEditor.store).removeBlocks(associatedBlockClientIds);
94
85
  }
95
-
96
86
  await registry.dispatch('core').deleteEntityRecord('postType', 'wp_block', id);
97
87
  };
88
+
98
89
  /**
99
90
  * Returns an action descriptor for SET_EDITING_REUSABLE_BLOCK action.
100
91
  *
@@ -102,10 +93,7 @@ const __experimentalDeleteReusableBlock = id => async ({
102
93
  * @param {boolean} isEditing Whether the block should be in editing state.
103
94
  * @return {Object} Action descriptor.
104
95
  */
105
-
106
-
107
96
  exports.__experimentalDeleteReusableBlock = __experimentalDeleteReusableBlock;
108
-
109
97
  function __experimentalSetEditingReusableBlock(clientId, isEditing) {
110
98
  return {
111
99
  type: 'SET_EDITING_REUSABLE_BLOCK',
@@ -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","syncType","meta","wp_pattern_sync_status","undefined","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 * 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"]}
1
+ {"version":3,"names":["_blockEditor","require","_blocks","_i18n","__experimentalConvertBlockToStatic","clientId","registry","oldBlock","select","blockEditorStore","getBlock","reusableBlock","getEditedEntityRecord","attributes","ref","newBlocks","parse","content","dispatch","replaceBlocks","exports","__experimentalConvertBlocksToReusable","clientIds","title","syncType","meta","wp_pattern_sync_status","undefined","__","serialize","getBlocksByClientId","status","updatedRecord","saveEntityRecord","newBlock","createBlock","id","__experimentalSetEditingReusableBlock","__experimentalDeleteReusableBlock","allBlocks","getBlocks","associatedBlocks","filter","block","isReusableBlock","associatedBlockClientIds","map","length","removeBlocks","deleteEntityRecord","isEditing","type"],"sources":["@wordpress/reusable-blocks/src/store/actions.js"],"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"],"mappings":"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"}
@@ -1,24 +1,16 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.store = void 0;
9
-
10
8
  var _data = require("@wordpress/data");
11
-
12
9
  var actions = _interopRequireWildcard(require("./actions"));
13
-
14
10
  var _reducer = _interopRequireDefault(require("./reducer"));
15
-
16
11
  var selectors = _interopRequireWildcard(require("./selectors"));
17
-
18
12
  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
13
  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
-
22
14
  /**
23
15
  * WordPress dependencies
24
16
  */
@@ -26,7 +18,9 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
26
18
  /**
27
19
  * Internal dependencies
28
20
  */
21
+
29
22
  const STORE_NAME = 'core/reusable-blocks';
23
+
30
24
  /**
31
25
  * Store definition for the reusable blocks namespace.
32
26
  *
@@ -34,7 +28,6 @@ const STORE_NAME = 'core/reusable-blocks';
34
28
  *
35
29
  * @type {Object}
36
30
  */
37
-
38
31
  const store = (0, _data.createReduxStore)(STORE_NAME, {
39
32
  actions,
40
33
  reducer: _reducer.default,