@wordpress/patterns 2.36.1-next.76cff8c98.0 → 2.36.1-next.8fd3f8831.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 (71) hide show
  1. package/LICENSE.md +1 -1
  2. package/build/api/index.cjs +14 -1
  3. package/build/api/index.cjs.map +2 -2
  4. package/build/components/create-pattern-modal.cjs +1 -1
  5. package/build/components/duplicate-pattern-modal.cjs +1 -1
  6. package/build/components/index.cjs +2 -2
  7. package/build/components/overrides-panel.cjs +4 -9
  8. package/build/components/overrides-panel.cjs.map +2 -2
  9. package/build/components/pattern-convert-button.cjs +1 -1
  10. package/build/constants.cjs +8 -0
  11. package/build/constants.cjs.map +2 -2
  12. package/build/private-apis.cjs +11 -9
  13. package/build/private-apis.cjs.map +2 -2
  14. package/build/store/index.cjs +3 -3
  15. package/build-module/api/index.js +22 -0
  16. package/build-module/api/index.js.map +7 -0
  17. package/build-module/components/{allow-overrides-modal.mjs → allow-overrides-modal.js} +1 -1
  18. package/build-module/components/{category-selector.mjs → category-selector.js} +1 -1
  19. package/build-module/components/{create-pattern-modal.mjs → create-pattern-modal.js} +6 -6
  20. package/build-module/components/{duplicate-pattern-modal.mjs → duplicate-pattern-modal.js} +3 -3
  21. package/build-module/components/{index.mjs → index.js} +3 -3
  22. package/build-module/components/{overrides-panel.mjs → overrides-panel.js} +7 -12
  23. package/build-module/components/overrides-panel.js.map +7 -0
  24. package/build-module/components/{pattern-convert-button.mjs → pattern-convert-button.js} +5 -5
  25. package/build-module/components/{pattern-overrides-controls.mjs → pattern-overrides-controls.js} +3 -3
  26. package/build-module/components/{patterns-manage-button.mjs → patterns-manage-button.js} +3 -3
  27. package/build-module/components/{rename-pattern-category-modal.mjs → rename-pattern-category-modal.js} +2 -2
  28. package/build-module/components/{rename-pattern-modal.mjs → rename-pattern-modal.js} +1 -1
  29. package/build-module/components/{reset-overrides-control.mjs → reset-overrides-control.js} +1 -1
  30. package/build-module/{constants.mjs → constants.js} +8 -1
  31. package/build-module/constants.js.map +7 -0
  32. package/build-module/index.js +7 -0
  33. package/build-module/{lock-unlock.mjs → lock-unlock.js} +1 -1
  34. package/build-module/{private-apis.mjs → private-apis.js} +18 -15
  35. package/build-module/private-apis.js.map +7 -0
  36. package/build-module/{private-hooks.mjs → private-hooks.js} +2 -2
  37. package/build-module/store/{actions.mjs → actions.js} +2 -2
  38. package/build-module/store/{constants.mjs → constants.js} +1 -1
  39. package/build-module/store/{index.mjs → index.js} +6 -6
  40. package/build-module/store/{reducer.mjs → reducer.js} +1 -1
  41. package/build-module/store/{selectors.mjs → selectors.js} +1 -1
  42. package/package.json +22 -21
  43. package/src/api/index.js +24 -0
  44. package/src/components/overrides-panel.js +4 -14
  45. package/src/constants.js +8 -0
  46. package/src/private-apis.js +4 -1
  47. package/build-module/api/index.mjs +0 -10
  48. package/build-module/api/index.mjs.map +0 -7
  49. package/build-module/components/overrides-panel.mjs.map +0 -7
  50. package/build-module/constants.mjs.map +0 -7
  51. package/build-module/index.mjs +0 -7
  52. package/build-module/private-apis.mjs.map +0 -7
  53. /package/build-module/components/{allow-overrides-modal.mjs.map → allow-overrides-modal.js.map} +0 -0
  54. /package/build-module/components/{category-selector.mjs.map → category-selector.js.map} +0 -0
  55. /package/build-module/components/{create-pattern-modal.mjs.map → create-pattern-modal.js.map} +0 -0
  56. /package/build-module/components/{duplicate-pattern-modal.mjs.map → duplicate-pattern-modal.js.map} +0 -0
  57. /package/build-module/components/{index.mjs.map → index.js.map} +0 -0
  58. /package/build-module/components/{pattern-convert-button.mjs.map → pattern-convert-button.js.map} +0 -0
  59. /package/build-module/components/{pattern-overrides-controls.mjs.map → pattern-overrides-controls.js.map} +0 -0
  60. /package/build-module/components/{patterns-manage-button.mjs.map → patterns-manage-button.js.map} +0 -0
  61. /package/build-module/components/{rename-pattern-category-modal.mjs.map → rename-pattern-category-modal.js.map} +0 -0
  62. /package/build-module/components/{rename-pattern-modal.mjs.map → rename-pattern-modal.js.map} +0 -0
  63. /package/build-module/components/{reset-overrides-control.mjs.map → reset-overrides-control.js.map} +0 -0
  64. /package/build-module/{index.mjs.map → index.js.map} +0 -0
  65. /package/build-module/{lock-unlock.mjs.map → lock-unlock.js.map} +0 -0
  66. /package/build-module/{private-hooks.mjs.map → private-hooks.js.map} +0 -0
  67. /package/build-module/store/{actions.mjs.map → actions.js.map} +0 -0
  68. /package/build-module/store/{constants.mjs.map → constants.js.map} +0 -0
  69. /package/build-module/store/{index.mjs.map → index.js.map} +0 -0
  70. /package/build-module/store/{reducer.mjs.map → reducer.js.map} +0 -0
  71. /package/build-module/store/{selectors.mjs.map → selectors.js.map} +0 -0
package/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ## Gutenberg
2
2
 
3
- Copyright 2016-2026 by the contributors
3
+ Copyright 2016-2025 by the contributors
4
4
 
5
5
  **License for Contributions (on and after April 15, 2021)**
6
6
 
@@ -19,16 +19,29 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  // packages/patterns/src/api/index.js
20
20
  var api_exports = {};
21
21
  __export(api_exports, {
22
+ hasOverridableBlocks: () => hasOverridableBlocks,
22
23
  isOverridableBlock: () => isOverridableBlock
23
24
  });
24
25
  module.exports = __toCommonJS(api_exports);
26
+ var import_constants = require("../constants.cjs");
25
27
  function isOverridableBlock(block) {
26
- return !!block.attributes.metadata?.name && !!block.attributes.metadata?.bindings && Object.values(block.attributes.metadata.bindings).some(
28
+ return Object.keys(import_constants.PARTIAL_SYNCING_SUPPORTED_BLOCKS).includes(
29
+ block.name
30
+ ) && !!block.attributes.metadata?.name && !!block.attributes.metadata?.bindings && Object.values(block.attributes.metadata.bindings).some(
27
31
  (binding) => binding.source === "core/pattern-overrides"
28
32
  );
29
33
  }
34
+ function hasOverridableBlocks(blocks) {
35
+ return blocks.some((block) => {
36
+ if (isOverridableBlock(block)) {
37
+ return true;
38
+ }
39
+ return hasOverridableBlocks(block.innerBlocks);
40
+ });
41
+ }
30
42
  // Annotate the CommonJS export names for ESM import in node:
31
43
  0 && (module.exports = {
44
+ hasOverridableBlocks,
32
45
  isOverridableBlock
33
46
  });
34
47
  //# sourceMappingURL=index.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/api/index.js"],
4
- "sourcesContent": ["/**\n * Determines whether a block is overridable.\n *\n * @param {WPBlock} block The block to test.\n *\n * @return {boolean} `true` if a block is overridable, `false` otherwise.\n */\nexport function isOverridableBlock( block ) {\n\treturn (\n\t\t!! block.attributes.metadata?.name &&\n\t\t!! block.attributes.metadata?.bindings &&\n\t\tObject.values( block.attributes.metadata.bindings ).some(\n\t\t\t( binding ) => binding.source === 'core/pattern-overrides'\n\t\t)\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOO,SAAS,mBAAoB,OAAQ;AAC3C,SACC,CAAC,CAAE,MAAM,WAAW,UAAU,QAC9B,CAAC,CAAE,MAAM,WAAW,UAAU,YAC9B,OAAO,OAAQ,MAAM,WAAW,SAAS,QAAS,EAAE;AAAA,IACnD,CAAE,YAAa,QAAQ,WAAW;AAAA,EACnC;AAEF;",
4
+ "sourcesContent": ["/**\n * Internal dependencies\n */\nimport { PARTIAL_SYNCING_SUPPORTED_BLOCKS } from '../constants';\n\n/**\n * Determines whether a block is overridable.\n *\n * @param {WPBlock} block The block to test.\n *\n * @return {boolean} `true` if a block is overridable, `false` otherwise.\n */\nexport function isOverridableBlock( block ) {\n\treturn (\n\t\tObject.keys( PARTIAL_SYNCING_SUPPORTED_BLOCKS ).includes(\n\t\t\tblock.name\n\t\t) &&\n\t\t!! block.attributes.metadata?.name &&\n\t\t!! block.attributes.metadata?.bindings &&\n\t\tObject.values( block.attributes.metadata.bindings ).some(\n\t\t\t( binding ) => binding.source === 'core/pattern-overrides'\n\t\t)\n\t);\n}\n\n/**\n * Determines whether the blocks list has overridable blocks.\n *\n * @param {WPBlock[]} blocks The blocks list.\n *\n * @return {boolean} `true` if the list has overridable blocks, `false` otherwise.\n */\nexport function hasOverridableBlocks( blocks ) {\n\treturn blocks.some( ( block ) => {\n\t\tif ( isOverridableBlock( block ) ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn hasOverridableBlocks( block.innerBlocks );\n\t} );\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,uBAAiD;AAS1C,SAAS,mBAAoB,OAAQ;AAC3C,SACC,OAAO,KAAM,iDAAiC,EAAE;AAAA,IAC/C,MAAM;AAAA,EACP,KACA,CAAC,CAAE,MAAM,WAAW,UAAU,QAC9B,CAAC,CAAE,MAAM,WAAW,UAAU,YAC9B,OAAO,OAAQ,MAAM,WAAW,SAAS,QAAS,EAAE;AAAA,IACnD,CAAE,YAAa,QAAQ,WAAW;AAAA,EACnC;AAEF;AASO,SAAS,qBAAsB,QAAS;AAC9C,SAAO,OAAO,KAAM,CAAE,UAAW;AAChC,QAAK,mBAAoB,KAAM,GAAI;AAClC,aAAO;AAAA,IACR;AACA,WAAO,qBAAsB,MAAM,WAAY;AAAA,EAChD,CAAE;AACH;",
6
6
  "names": []
7
7
  }
@@ -41,7 +41,7 @@ var import_notices = require("@wordpress/notices");
41
41
  var import_core_data = require("@wordpress/core-data");
42
42
  var import_constants = require("../constants.cjs");
43
43
  var import_store = require("../store/index.cjs");
44
- var import_category_selector = __toESM(require("./category-selector.cjs"));
44
+ var import_category_selector = __toESM(require("./category-selector.cjs"), 1);
45
45
  var import_private_hooks = require("../private-hooks.cjs");
46
46
  var import_lock_unlock = require("../lock-unlock.cjs");
47
47
  var import_jsx_runtime = require("react/jsx-runtime");
@@ -37,7 +37,7 @@ var import_core_data = require("@wordpress/core-data");
37
37
  var import_data = require("@wordpress/data");
38
38
  var import_i18n = require("@wordpress/i18n");
39
39
  var import_notices = require("@wordpress/notices");
40
- var import_create_pattern_modal = __toESM(require("./create-pattern-modal.cjs"));
40
+ var import_create_pattern_modal = __toESM(require("./create-pattern-modal.cjs"), 1);
41
41
  var import_constants = require("../constants.cjs");
42
42
  var import_jsx_runtime = require("react/jsx-runtime");
43
43
  function getTermLabels(pattern, categories) {
@@ -33,8 +33,8 @@ __export(components_exports, {
33
33
  });
34
34
  module.exports = __toCommonJS(components_exports);
35
35
  var import_block_editor = require("@wordpress/block-editor");
36
- var import_pattern_convert_button = __toESM(require("./pattern-convert-button.cjs"));
37
- var import_patterns_manage_button = __toESM(require("./patterns-manage-button.cjs"));
36
+ var import_pattern_convert_button = __toESM(require("./pattern-convert-button.cjs"), 1);
37
+ var import_patterns_manage_button = __toESM(require("./patterns-manage-button.cjs"), 1);
38
38
  var import_jsx_runtime = require("react/jsx-runtime");
39
39
  function PatternsMenuItems({ rootClientId }) {
40
40
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_editor.BlockSettingsMenuControls, { children: ({ selectedClientIds, onClose }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
@@ -32,22 +32,17 @@ var import_lock_unlock = require("../lock-unlock.cjs");
32
32
  var import_jsx_runtime = require("react/jsx-runtime");
33
33
  var { BlockQuickNavigation } = (0, import_lock_unlock.unlock)(import_block_editor.privateApis);
34
34
  function OverridesPanel() {
35
- const { allClientIds, supportedBlockTypes } = (0, import_data.useSelect)(
36
- (select) => ({
37
- allClientIds: select(import_block_editor.store).getClientIdsWithDescendants(),
38
- supportedBlockTypes: Object.keys(
39
- select(import_block_editor.store).getSettings()?.__experimentalBlockBindingsSupportedAttributes || {}
40
- )
41
- }),
35
+ const allClientIds = (0, import_data.useSelect)(
36
+ (select) => select(import_block_editor.store).getClientIdsWithDescendants(),
42
37
  []
43
38
  );
44
39
  const { getBlock } = (0, import_data.useSelect)(import_block_editor.store);
45
40
  const clientIdsWithOverrides = (0, import_element.useMemo)(
46
41
  () => allClientIds.filter((clientId) => {
47
42
  const block = getBlock(clientId);
48
- return supportedBlockTypes.includes(block.name) && (0, import_api.isOverridableBlock)(block);
43
+ return (0, import_api.isOverridableBlock)(block);
49
44
  }),
50
- [allClientIds, getBlock, supportedBlockTypes]
45
+ [allClientIds, getBlock]
51
46
  );
52
47
  if (!clientIdsWithOverrides?.length) {
53
48
  return null;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/components/overrides-panel.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { PanelBody } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { isOverridableBlock } from '../api';\nimport { unlock } from '../lock-unlock';\n\nconst { BlockQuickNavigation } = unlock( blockEditorPrivateApis );\n\nexport default function OverridesPanel() {\n\tconst { allClientIds, supportedBlockTypes } = useSelect(\n\t\t( select ) => ( {\n\t\t\tallClientIds:\n\t\t\t\tselect( blockEditorStore ).getClientIdsWithDescendants(),\n\t\t\tsupportedBlockTypes: Object.keys(\n\t\t\t\tselect( blockEditorStore ).getSettings()\n\t\t\t\t\t?.__experimentalBlockBindingsSupportedAttributes || {}\n\t\t\t),\n\t\t} ),\n\t\t[]\n\t);\n\tconst { getBlock } = useSelect( blockEditorStore );\n\tconst clientIdsWithOverrides = useMemo(\n\t\t() =>\n\t\t\tallClientIds.filter( ( clientId ) => {\n\t\t\t\tconst block = getBlock( clientId );\n\t\t\t\treturn (\n\t\t\t\t\tsupportedBlockTypes.includes( block.name ) &&\n\t\t\t\t\tisOverridableBlock( block )\n\t\t\t\t);\n\t\t\t} ),\n\t\t[ allClientIds, getBlock, supportedBlockTypes ]\n\t);\n\n\tif ( ! clientIdsWithOverrides?.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PanelBody title={ __( 'Overrides' ) }>\n\t\t\t<BlockQuickNavigation clientIds={ clientIdsWithOverrides } />\n\t\t</PanelBody>\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,0BAGO;AACP,wBAA0B;AAC1B,kBAA0B;AAC1B,qBAAwB;AACxB,kBAAmB;AAKnB,iBAAmC;AACnC,yBAAuB;AAmCpB;AAjCH,IAAM,EAAE,qBAAqB,QAAI,2BAAQ,oBAAAA,WAAuB;AAEjD,SAAR,iBAAkC;AACxC,QAAM,EAAE,cAAc,oBAAoB,QAAI;AAAA,IAC7C,CAAE,YAAc;AAAA,MACf,cACC,OAAQ,oBAAAC,KAAiB,EAAE,4BAA4B;AAAA,MACxD,qBAAqB,OAAO;AAAA,QAC3B,OAAQ,oBAAAA,KAAiB,EAAE,YAAY,GACpC,kDAAkD,CAAC;AAAA,MACvD;AAAA,IACD;AAAA,IACA,CAAC;AAAA,EACF;AACA,QAAM,EAAE,SAAS,QAAI,uBAAW,oBAAAA,KAAiB;AACjD,QAAM,6BAAyB;AAAA,IAC9B,MACC,aAAa,OAAQ,CAAE,aAAc;AACpC,YAAM,QAAQ,SAAU,QAAS;AACjC,aACC,oBAAoB,SAAU,MAAM,IAAK,SACzC,+BAAoB,KAAM;AAAA,IAE5B,CAAE;AAAA,IACH,CAAE,cAAc,UAAU,mBAAoB;AAAA,EAC/C;AAEA,MAAK,CAAE,wBAAwB,QAAS;AACvC,WAAO;AAAA,EACR;AAEA,SACC,4CAAC,+BAAU,WAAQ,gBAAI,WAAY,GAClC,sDAAC,wBAAqB,WAAY,wBAAyB,GAC5D;AAEF;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { PanelBody } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { isOverridableBlock } from '../api';\nimport { unlock } from '../lock-unlock';\n\nconst { BlockQuickNavigation } = unlock( blockEditorPrivateApis );\n\nexport default function OverridesPanel() {\n\tconst allClientIds = useSelect(\n\t\t( select ) => select( blockEditorStore ).getClientIdsWithDescendants(),\n\t\t[]\n\t);\n\tconst { getBlock } = useSelect( blockEditorStore );\n\tconst clientIdsWithOverrides = useMemo(\n\t\t() =>\n\t\t\tallClientIds.filter( ( clientId ) => {\n\t\t\t\tconst block = getBlock( clientId );\n\t\t\t\treturn isOverridableBlock( block );\n\t\t\t} ),\n\t\t[ allClientIds, getBlock ]\n\t);\n\n\tif ( ! clientIdsWithOverrides?.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PanelBody title={ __( 'Overrides' ) }>\n\t\t\t<BlockQuickNavigation clientIds={ clientIdsWithOverrides } />\n\t\t</PanelBody>\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,0BAGO;AACP,wBAA0B;AAC1B,kBAA0B;AAC1B,qBAAwB;AACxB,kBAAmB;AAKnB,iBAAmC;AACnC,yBAAuB;AAyBpB;AAvBH,IAAM,EAAE,qBAAqB,QAAI,2BAAQ,oBAAAA,WAAuB;AAEjD,SAAR,iBAAkC;AACxC,QAAM,mBAAe;AAAA,IACpB,CAAE,WAAY,OAAQ,oBAAAC,KAAiB,EAAE,4BAA4B;AAAA,IACrE,CAAC;AAAA,EACF;AACA,QAAM,EAAE,SAAS,QAAI,uBAAW,oBAAAA,KAAiB;AACjD,QAAM,6BAAyB;AAAA,IAC9B,MACC,aAAa,OAAQ,CAAE,aAAc;AACpC,YAAM,QAAQ,SAAU,QAAS;AACjC,iBAAO,+BAAoB,KAAM;AAAA,IAClC,CAAE;AAAA,IACH,CAAE,cAAc,QAAS;AAAA,EAC1B;AAEA,MAAK,CAAE,wBAAwB,QAAS;AACvC,WAAO;AAAA,EACR;AAEA,SACC,4CAAC,+BAAU,WAAQ,gBAAI,WAAY,GAClC,sDAAC,wBAAqB,WAAY,wBAAyB,GAC5D;AAEF;",
6
6
  "names": ["blockEditorPrivateApis", "blockEditorStore"]
7
7
  }
@@ -42,7 +42,7 @@ var import_core_data = require("@wordpress/core-data");
42
42
  var import_i18n = require("@wordpress/i18n");
43
43
  var import_notices = require("@wordpress/notices");
44
44
  var import_store = require("../store/index.cjs");
45
- var import_create_pattern_modal = __toESM(require("./create-pattern-modal.cjs"));
45
+ var import_create_pattern_modal = __toESM(require("./create-pattern-modal.cjs"), 1);
46
46
  var import_lock_unlock = require("../lock-unlock.cjs");
47
47
  var import_constants = require("../constants.cjs");
48
48
  var import_jsx_runtime = require("react/jsx-runtime");
@@ -20,6 +20,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  var constants_exports = {};
21
21
  __export(constants_exports, {
22
22
  EXCLUDED_PATTERN_SOURCES: () => EXCLUDED_PATTERN_SOURCES,
23
+ PARTIAL_SYNCING_SUPPORTED_BLOCKS: () => PARTIAL_SYNCING_SUPPORTED_BLOCKS,
23
24
  PATTERN_DEFAULT_CATEGORY: () => PATTERN_DEFAULT_CATEGORY,
24
25
  PATTERN_OVERRIDES_BINDING_SOURCE: () => PATTERN_OVERRIDES_BINDING_SOURCE,
25
26
  PATTERN_SYNC_TYPES: () => PATTERN_SYNC_TYPES,
@@ -42,10 +43,17 @@ var PATTERN_SYNC_TYPES = {
42
43
  full: "fully",
43
44
  unsynced: "unsynced"
44
45
  };
46
+ var PARTIAL_SYNCING_SUPPORTED_BLOCKS = {
47
+ "core/paragraph": ["content"],
48
+ "core/heading": ["content"],
49
+ "core/button": ["text", "url", "linkTarget", "rel"],
50
+ "core/image": ["id", "url", "title", "alt", "caption"]
51
+ };
45
52
  var PATTERN_OVERRIDES_BINDING_SOURCE = "core/pattern-overrides";
46
53
  // Annotate the CommonJS export names for ESM import in node:
47
54
  0 && (module.exports = {
48
55
  EXCLUDED_PATTERN_SOURCES,
56
+ PARTIAL_SYNCING_SUPPORTED_BLOCKS,
49
57
  PATTERN_DEFAULT_CATEGORY,
50
58
  PATTERN_OVERRIDES_BINDING_SOURCE,
51
59
  PATTERN_SYNC_TYPES,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/constants.js"],
4
- "sourcesContent": ["export const PATTERN_TYPES = {\n\ttheme: 'pattern',\n\tuser: 'wp_block',\n};\n\nexport const PATTERN_DEFAULT_CATEGORY = 'all-patterns';\nexport const PATTERN_USER_CATEGORY = 'my-patterns';\nexport const EXCLUDED_PATTERN_SOURCES = [\n\t'core',\n\t'pattern-directory/core',\n\t'pattern-directory/featured',\n];\nexport const PATTERN_SYNC_TYPES = {\n\tfull: 'fully',\n\tunsynced: 'unsynced',\n};\n\nexport const PATTERN_OVERRIDES_BINDING_SOURCE = 'core/pattern-overrides';\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAM,gBAAgB;AAAA,EAC5B,OAAO;AAAA,EACP,MAAM;AACP;AAEO,IAAM,2BAA2B;AACjC,IAAM,wBAAwB;AAC9B,IAAM,2BAA2B;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AACD;AACO,IAAM,qBAAqB;AAAA,EACjC,MAAM;AAAA,EACN,UAAU;AACX;AAEO,IAAM,mCAAmC;",
4
+ "sourcesContent": ["export const PATTERN_TYPES = {\n\ttheme: 'pattern',\n\tuser: 'wp_block',\n};\n\nexport const PATTERN_DEFAULT_CATEGORY = 'all-patterns';\nexport const PATTERN_USER_CATEGORY = 'my-patterns';\nexport const EXCLUDED_PATTERN_SOURCES = [\n\t'core',\n\t'pattern-directory/core',\n\t'pattern-directory/featured',\n];\nexport const PATTERN_SYNC_TYPES = {\n\tfull: 'fully',\n\tunsynced: 'unsynced',\n};\n\n// TODO: This should not be hardcoded. Maybe there should be a config and/or an UI.\nexport const PARTIAL_SYNCING_SUPPORTED_BLOCKS = {\n\t'core/paragraph': [ 'content' ],\n\t'core/heading': [ 'content' ],\n\t'core/button': [ 'text', 'url', 'linkTarget', 'rel' ],\n\t'core/image': [ 'id', 'url', 'title', 'alt', 'caption' ],\n};\n\nexport const PATTERN_OVERRIDES_BINDING_SOURCE = 'core/pattern-overrides';\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAM,gBAAgB;AAAA,EAC5B,OAAO;AAAA,EACP,MAAM;AACP;AAEO,IAAM,2BAA2B;AACjC,IAAM,wBAAwB;AAC9B,IAAM,2BAA2B;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AACD;AACO,IAAM,qBAAqB;AAAA,EACjC,MAAM;AAAA,EACN,UAAU;AACX;AAGO,IAAM,mCAAmC;AAAA,EAC/C,kBAAkB,CAAE,SAAU;AAAA,EAC9B,gBAAgB,CAAE,SAAU;AAAA,EAC5B,eAAe,CAAE,QAAQ,OAAO,cAAc,KAAM;AAAA,EACpD,cAAc,CAAE,MAAM,OAAO,SAAS,OAAO,SAAU;AACxD;AAEO,IAAM,mCAAmC;",
6
6
  "names": []
7
7
  }
@@ -33,15 +33,15 @@ __export(private_apis_exports, {
33
33
  });
34
34
  module.exports = __toCommonJS(private_apis_exports);
35
35
  var import_lock_unlock = require("./lock-unlock.cjs");
36
- var import_overrides_panel = __toESM(require("./components/overrides-panel.cjs"));
37
- var import_create_pattern_modal = __toESM(require("./components/create-pattern-modal.cjs"));
38
- var import_duplicate_pattern_modal = __toESM(require("./components/duplicate-pattern-modal.cjs"));
36
+ var import_overrides_panel = __toESM(require("./components/overrides-panel.cjs"), 1);
37
+ var import_create_pattern_modal = __toESM(require("./components/create-pattern-modal.cjs"), 1);
38
+ var import_duplicate_pattern_modal = __toESM(require("./components/duplicate-pattern-modal.cjs"), 1);
39
39
  var import_api = require("./api/index.cjs");
40
- var import_rename_pattern_modal = __toESM(require("./components/rename-pattern-modal.cjs"));
41
- var import_components = __toESM(require("./components/index.cjs"));
42
- var import_rename_pattern_category_modal = __toESM(require("./components/rename-pattern-category-modal.cjs"));
43
- var import_pattern_overrides_controls = __toESM(require("./components/pattern-overrides-controls.cjs"));
44
- var import_reset_overrides_control = __toESM(require("./components/reset-overrides-control.cjs"));
40
+ var import_rename_pattern_modal = __toESM(require("./components/rename-pattern-modal.cjs"), 1);
41
+ var import_components = __toESM(require("./components/index.cjs"), 1);
42
+ var import_rename_pattern_category_modal = __toESM(require("./components/rename-pattern-category-modal.cjs"), 1);
43
+ var import_pattern_overrides_controls = __toESM(require("./components/pattern-overrides-controls.cjs"), 1);
44
+ var import_reset_overrides_control = __toESM(require("./components/reset-overrides-control.cjs"), 1);
45
45
  var import_private_hooks = require("./private-hooks.cjs");
46
46
  var import_constants = require("./constants.cjs");
47
47
  var privateApis = {};
@@ -51,6 +51,7 @@ var privateApis = {};
51
51
  CreatePatternModalContents: import_create_pattern_modal.CreatePatternModalContents,
52
52
  DuplicatePatternModal: import_duplicate_pattern_modal.default,
53
53
  isOverridableBlock: import_api.isOverridableBlock,
54
+ hasOverridableBlocks: import_api.hasOverridableBlocks,
54
55
  useDuplicatePatternProps: import_duplicate_pattern_modal.useDuplicatePatternProps,
55
56
  RenamePatternModal: import_rename_pattern_modal.default,
56
57
  PatternsMenuItems: import_components.default,
@@ -62,7 +63,8 @@ var privateApis = {};
62
63
  PATTERN_DEFAULT_CATEGORY: import_constants.PATTERN_DEFAULT_CATEGORY,
63
64
  PATTERN_USER_CATEGORY: import_constants.PATTERN_USER_CATEGORY,
64
65
  EXCLUDED_PATTERN_SOURCES: import_constants.EXCLUDED_PATTERN_SOURCES,
65
- PATTERN_SYNC_TYPES: import_constants.PATTERN_SYNC_TYPES
66
+ PATTERN_SYNC_TYPES: import_constants.PATTERN_SYNC_TYPES,
67
+ PARTIAL_SYNCING_SUPPORTED_BLOCKS: import_constants.PARTIAL_SYNCING_SUPPORTED_BLOCKS
66
68
  });
67
69
  // Annotate the CommonJS export names for ESM import in node:
68
70
  0 && (module.exports = {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/private-apis.js"],
4
- "sourcesContent": ["/**\n * Internal dependencies\n */\nimport { lock } from './lock-unlock';\nimport OverridesPanel from './components/overrides-panel';\nimport {\n\tdefault as CreatePatternModal,\n\tCreatePatternModalContents,\n} from './components/create-pattern-modal';\nimport {\n\tdefault as DuplicatePatternModal,\n\tuseDuplicatePatternProps,\n} from './components/duplicate-pattern-modal';\nimport { isOverridableBlock } from './api';\nimport RenamePatternModal from './components/rename-pattern-modal';\nimport PatternsMenuItems from './components';\nimport RenamePatternCategoryModal from './components/rename-pattern-category-modal';\nimport PatternOverridesControls from './components/pattern-overrides-controls';\nimport ResetOverridesControl from './components/reset-overrides-control';\nimport { useAddPatternCategory } from './private-hooks';\nimport {\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tEXCLUDED_PATTERN_SOURCES,\n\tPATTERN_SYNC_TYPES,\n} from './constants';\n\nexport const privateApis = {};\nlock( privateApis, {\n\tOverridesPanel,\n\tCreatePatternModal,\n\tCreatePatternModalContents,\n\tDuplicatePatternModal,\n\tisOverridableBlock,\n\tuseDuplicatePatternProps,\n\tRenamePatternModal,\n\tPatternsMenuItems,\n\tRenamePatternCategoryModal,\n\tPatternOverridesControls,\n\tResetOverridesControl,\n\tuseAddPatternCategory,\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tEXCLUDED_PATTERN_SOURCES,\n\tPATTERN_SYNC_TYPES,\n} );\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,yBAAqB;AACrB,6BAA2B;AAC3B,kCAGO;AACP,qCAGO;AACP,iBAAmC;AACnC,kCAA+B;AAC/B,wBAA8B;AAC9B,2CAAuC;AACvC,wCAAqC;AACrC,qCAAkC;AAClC,2BAAsC;AACtC,uBAMO;AAEA,IAAM,cAAc,CAAC;AAAA,IAC5B,yBAAM,aAAa;AAAA,EAClB,uCAAAA;AAAA,EACA,gDAAAC;AAAA,EACA;AAAA,EACA,sDAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA,gDAAAC;AAAA,EACA,qCAAAC;AAAA,EACA,iEAAAC;AAAA,EACA,4DAAAC;AAAA,EACA,sDAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAE;",
4
+ "sourcesContent": ["/**\n * Internal dependencies\n */\nimport { lock } from './lock-unlock';\nimport OverridesPanel from './components/overrides-panel';\nimport {\n\tdefault as CreatePatternModal,\n\tCreatePatternModalContents,\n} from './components/create-pattern-modal';\nimport {\n\tdefault as DuplicatePatternModal,\n\tuseDuplicatePatternProps,\n} from './components/duplicate-pattern-modal';\nimport { isOverridableBlock, hasOverridableBlocks } from './api';\nimport RenamePatternModal from './components/rename-pattern-modal';\nimport PatternsMenuItems from './components';\nimport RenamePatternCategoryModal from './components/rename-pattern-category-modal';\nimport PatternOverridesControls from './components/pattern-overrides-controls';\nimport ResetOverridesControl from './components/reset-overrides-control';\nimport { useAddPatternCategory } from './private-hooks';\nimport {\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tEXCLUDED_PATTERN_SOURCES,\n\tPATTERN_SYNC_TYPES,\n\tPARTIAL_SYNCING_SUPPORTED_BLOCKS,\n} from './constants';\n\nexport const privateApis = {};\nlock( privateApis, {\n\tOverridesPanel,\n\tCreatePatternModal,\n\tCreatePatternModalContents,\n\tDuplicatePatternModal,\n\tisOverridableBlock,\n\thasOverridableBlocks,\n\tuseDuplicatePatternProps,\n\tRenamePatternModal,\n\tPatternsMenuItems,\n\tRenamePatternCategoryModal,\n\tPatternOverridesControls,\n\tResetOverridesControl,\n\tuseAddPatternCategory,\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tEXCLUDED_PATTERN_SOURCES,\n\tPATTERN_SYNC_TYPES,\n\tPARTIAL_SYNCING_SUPPORTED_BLOCKS,\n} );\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,yBAAqB;AACrB,6BAA2B;AAC3B,kCAGO;AACP,qCAGO;AACP,iBAAyD;AACzD,kCAA+B;AAC/B,wBAA8B;AAC9B,2CAAuC;AACvC,wCAAqC;AACrC,qCAAkC;AAClC,2BAAsC;AACtC,uBAOO;AAEA,IAAM,cAAc,CAAC;AAAA,IAC5B,yBAAM,aAAa;AAAA,EAClB,uCAAAA;AAAA,EACA,gDAAAC;AAAA,EACA;AAAA,EACA,sDAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gDAAAC;AAAA,EACA,qCAAAC;AAAA,EACA,iEAAAC;AAAA,EACA,4DAAAC;AAAA,EACA,sDAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAE;",
6
6
  "names": ["OverridesPanel", "CreatePatternModal", "DuplicatePatternModal", "RenamePatternModal", "PatternsMenuItems", "RenamePatternCategoryModal", "PatternOverridesControls", "ResetOverridesControl"]
7
7
  }
@@ -34,10 +34,10 @@ __export(store_exports, {
34
34
  });
35
35
  module.exports = __toCommonJS(store_exports);
36
36
  var import_data = require("@wordpress/data");
37
- var import_reducer = __toESM(require("./reducer.cjs"));
38
- var actions = __toESM(require("./actions.cjs"));
37
+ var import_reducer = __toESM(require("./reducer.cjs"), 1);
38
+ var actions = __toESM(require("./actions.cjs"), 1);
39
39
  var import_constants = require("./constants.cjs");
40
- var selectors = __toESM(require("./selectors.cjs"));
40
+ var selectors = __toESM(require("./selectors.cjs"), 1);
41
41
  var import_lock_unlock = require("../lock-unlock.cjs");
42
42
  var storeConfig = {
43
43
  reducer: import_reducer.default
@@ -0,0 +1,22 @@
1
+ // packages/patterns/src/api/index.js
2
+ import { PARTIAL_SYNCING_SUPPORTED_BLOCKS } from "../constants.js";
3
+ function isOverridableBlock(block) {
4
+ return Object.keys(PARTIAL_SYNCING_SUPPORTED_BLOCKS).includes(
5
+ block.name
6
+ ) && !!block.attributes.metadata?.name && !!block.attributes.metadata?.bindings && Object.values(block.attributes.metadata.bindings).some(
7
+ (binding) => binding.source === "core/pattern-overrides"
8
+ );
9
+ }
10
+ function hasOverridableBlocks(blocks) {
11
+ return blocks.some((block) => {
12
+ if (isOverridableBlock(block)) {
13
+ return true;
14
+ }
15
+ return hasOverridableBlocks(block.innerBlocks);
16
+ });
17
+ }
18
+ export {
19
+ hasOverridableBlocks,
20
+ isOverridableBlock
21
+ };
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/api/index.js"],
4
+ "sourcesContent": ["/**\n * Internal dependencies\n */\nimport { PARTIAL_SYNCING_SUPPORTED_BLOCKS } from '../constants';\n\n/**\n * Determines whether a block is overridable.\n *\n * @param {WPBlock} block The block to test.\n *\n * @return {boolean} `true` if a block is overridable, `false` otherwise.\n */\nexport function isOverridableBlock( block ) {\n\treturn (\n\t\tObject.keys( PARTIAL_SYNCING_SUPPORTED_BLOCKS ).includes(\n\t\t\tblock.name\n\t\t) &&\n\t\t!! block.attributes.metadata?.name &&\n\t\t!! block.attributes.metadata?.bindings &&\n\t\tObject.values( block.attributes.metadata.bindings ).some(\n\t\t\t( binding ) => binding.source === 'core/pattern-overrides'\n\t\t)\n\t);\n}\n\n/**\n * Determines whether the blocks list has overridable blocks.\n *\n * @param {WPBlock[]} blocks The blocks list.\n *\n * @return {boolean} `true` if the list has overridable blocks, `false` otherwise.\n */\nexport function hasOverridableBlocks( blocks ) {\n\treturn blocks.some( ( block ) => {\n\t\tif ( isOverridableBlock( block ) ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn hasOverridableBlocks( block.innerBlocks );\n\t} );\n}\n"],
5
+ "mappings": ";AAGA,SAAS,wCAAwC;AAS1C,SAAS,mBAAoB,OAAQ;AAC3C,SACC,OAAO,KAAM,gCAAiC,EAAE;AAAA,IAC/C,MAAM;AAAA,EACP,KACA,CAAC,CAAE,MAAM,WAAW,UAAU,QAC9B,CAAC,CAAE,MAAM,WAAW,UAAU,YAC9B,OAAO,OAAQ,MAAM,WAAW,SAAS,QAAS,EAAE;AAAA,IACnD,CAAE,YAAa,QAAQ,WAAW;AAAA,EACnC;AAEF;AASO,SAAS,qBAAsB,QAAS;AAC9C,SAAO,OAAO,KAAM,CAAE,UAAW;AAChC,QAAK,mBAAoB,KAAM,GAAI;AAClC,aAAO;AAAA,IACR;AACA,WAAO,qBAAsB,MAAM,WAAY;AAAA,EAChD,CAAE;AACH;",
6
+ "names": []
7
+ }
@@ -145,4 +145,4 @@ export {
145
145
  AllowOverridesModal,
146
146
  DisallowOverridesModal
147
147
  };
148
- //# sourceMappingURL=allow-overrides-modal.mjs.map
148
+ //# sourceMappingURL=allow-overrides-modal.js.map
@@ -54,4 +54,4 @@ export {
54
54
  CATEGORY_SLUG,
55
55
  CategorySelector as default
56
56
  };
57
- //# sourceMappingURL=category-selector.mjs.map
57
+ //# sourceMappingURL=category-selector.js.map
@@ -16,11 +16,11 @@ import {
16
16
  PATTERN_DEFAULT_CATEGORY,
17
17
  PATTERN_SYNC_TYPES,
18
18
  PATTERN_TYPES
19
- } from "../constants.mjs";
20
- import { store as patternsStore } from "../store/index.mjs";
21
- import CategorySelector from "./category-selector.mjs";
22
- import { useAddPatternCategory } from "../private-hooks.mjs";
23
- import { unlock } from "../lock-unlock.mjs";
19
+ } from "../constants.js";
20
+ import { store as patternsStore } from "../store/index.js";
21
+ import CategorySelector from "./category-selector.js";
22
+ import { useAddPatternCategory } from "../private-hooks.js";
23
+ import { unlock } from "../lock-unlock.js";
24
24
  import { jsx, jsxs } from "react/jsx-runtime";
25
25
  function CreatePatternModal({
26
26
  className = "patterns-menu-items__convert-modal",
@@ -168,4 +168,4 @@ export {
168
168
  CreatePatternModalContents,
169
169
  CreatePatternModal as default
170
170
  };
171
- //# sourceMappingURL=create-pattern-modal.mjs.map
171
+ //# sourceMappingURL=create-pattern-modal.js.map
@@ -3,8 +3,8 @@ import { store as coreStore } from "@wordpress/core-data";
3
3
  import { useDispatch, useSelect } from "@wordpress/data";
4
4
  import { __, _x, sprintf } from "@wordpress/i18n";
5
5
  import { store as noticesStore } from "@wordpress/notices";
6
- import CreatePatternModal from "./create-pattern-modal.mjs";
7
- import { PATTERN_SYNC_TYPES, PATTERN_TYPES } from "../constants.mjs";
6
+ import CreatePatternModal from "./create-pattern-modal.js";
7
+ import { PATTERN_SYNC_TYPES, PATTERN_TYPES } from "../constants.js";
8
8
  import { jsx } from "react/jsx-runtime";
9
9
  function getTermLabels(pattern, categories) {
10
10
  if (pattern.type !== PATTERN_TYPES.user) {
@@ -77,4 +77,4 @@ export {
77
77
  DuplicatePatternModal as default,
78
78
  useDuplicatePatternProps
79
79
  };
80
- //# sourceMappingURL=duplicate-pattern-modal.mjs.map
80
+ //# sourceMappingURL=duplicate-pattern-modal.js.map
@@ -1,7 +1,7 @@
1
1
  // packages/patterns/src/components/index.js
2
2
  import { BlockSettingsMenuControls } from "@wordpress/block-editor";
3
- import PatternConvertButton from "./pattern-convert-button.mjs";
4
- import PatternsManageButton from "./patterns-manage-button.mjs";
3
+ import PatternConvertButton from "./pattern-convert-button.js";
4
+ import PatternsManageButton from "./patterns-manage-button.js";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
6
  function PatternsMenuItems({ rootClientId }) {
7
7
  return /* @__PURE__ */ jsx(BlockSettingsMenuControls, { children: ({ selectedClientIds, onClose }) => /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -24,4 +24,4 @@ function PatternsMenuItems({ rootClientId }) {
24
24
  export {
25
25
  PatternsMenuItems as default
26
26
  };
27
- //# sourceMappingURL=index.mjs.map
27
+ //# sourceMappingURL=index.js.map
@@ -7,27 +7,22 @@ import { PanelBody } from "@wordpress/components";
7
7
  import { useSelect } from "@wordpress/data";
8
8
  import { useMemo } from "@wordpress/element";
9
9
  import { __ } from "@wordpress/i18n";
10
- import { isOverridableBlock } from "../api/index.mjs";
11
- import { unlock } from "../lock-unlock.mjs";
10
+ import { isOverridableBlock } from "../api/index.js";
11
+ import { unlock } from "../lock-unlock.js";
12
12
  import { jsx } from "react/jsx-runtime";
13
13
  var { BlockQuickNavigation } = unlock(blockEditorPrivateApis);
14
14
  function OverridesPanel() {
15
- const { allClientIds, supportedBlockTypes } = useSelect(
16
- (select) => ({
17
- allClientIds: select(blockEditorStore).getClientIdsWithDescendants(),
18
- supportedBlockTypes: Object.keys(
19
- select(blockEditorStore).getSettings()?.__experimentalBlockBindingsSupportedAttributes || {}
20
- )
21
- }),
15
+ const allClientIds = useSelect(
16
+ (select) => select(blockEditorStore).getClientIdsWithDescendants(),
22
17
  []
23
18
  );
24
19
  const { getBlock } = useSelect(blockEditorStore);
25
20
  const clientIdsWithOverrides = useMemo(
26
21
  () => allClientIds.filter((clientId) => {
27
22
  const block = getBlock(clientId);
28
- return supportedBlockTypes.includes(block.name) && isOverridableBlock(block);
23
+ return isOverridableBlock(block);
29
24
  }),
30
- [allClientIds, getBlock, supportedBlockTypes]
25
+ [allClientIds, getBlock]
31
26
  );
32
27
  if (!clientIdsWithOverrides?.length) {
33
28
  return null;
@@ -37,4 +32,4 @@ function OverridesPanel() {
37
32
  export {
38
33
  OverridesPanel as default
39
34
  };
40
- //# sourceMappingURL=overrides-panel.mjs.map
35
+ //# sourceMappingURL=overrides-panel.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/overrides-panel.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { PanelBody } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { isOverridableBlock } from '../api';\nimport { unlock } from '../lock-unlock';\n\nconst { BlockQuickNavigation } = unlock( blockEditorPrivateApis );\n\nexport default function OverridesPanel() {\n\tconst allClientIds = useSelect(\n\t\t( select ) => select( blockEditorStore ).getClientIdsWithDescendants(),\n\t\t[]\n\t);\n\tconst { getBlock } = useSelect( blockEditorStore );\n\tconst clientIdsWithOverrides = useMemo(\n\t\t() =>\n\t\t\tallClientIds.filter( ( clientId ) => {\n\t\t\t\tconst block = getBlock( clientId );\n\t\t\t\treturn isOverridableBlock( block );\n\t\t\t} ),\n\t\t[ allClientIds, getBlock ]\n\t);\n\n\tif ( ! clientIdsWithOverrides?.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PanelBody title={ __( 'Overrides' ) }>\n\t\t\t<BlockQuickNavigation clientIds={ clientIdsWithOverrides } />\n\t\t</PanelBody>\n\t);\n}\n"],
5
+ "mappings": ";AAGA;AAAA,EACC,eAAe;AAAA,EACf,SAAS;AAAA,OACH;AACP,SAAS,iBAAiB;AAC1B,SAAS,iBAAiB;AAC1B,SAAS,eAAe;AACxB,SAAS,UAAU;AAKnB,SAAS,0BAA0B;AACnC,SAAS,cAAc;AAyBpB;AAvBH,IAAM,EAAE,qBAAqB,IAAI,OAAQ,sBAAuB;AAEjD,SAAR,iBAAkC;AACxC,QAAM,eAAe;AAAA,IACpB,CAAE,WAAY,OAAQ,gBAAiB,EAAE,4BAA4B;AAAA,IACrE,CAAC;AAAA,EACF;AACA,QAAM,EAAE,SAAS,IAAI,UAAW,gBAAiB;AACjD,QAAM,yBAAyB;AAAA,IAC9B,MACC,aAAa,OAAQ,CAAE,aAAc;AACpC,YAAM,QAAQ,SAAU,QAAS;AACjC,aAAO,mBAAoB,KAAM;AAAA,IAClC,CAAE;AAAA,IACH,CAAE,cAAc,QAAS;AAAA,EAC1B;AAEA,MAAK,CAAE,wBAAwB,QAAS;AACvC,WAAO;AAAA,EACR;AAEA,SACC,oBAAC,aAAU,OAAQ,GAAI,WAAY,GAClC,8BAAC,wBAAqB,WAAY,wBAAyB,GAC5D;AAEF;",
6
+ "names": []
7
+ }
@@ -14,10 +14,10 @@ import { useSelect, useDispatch } from "@wordpress/data";
14
14
  import { store as coreStore } from "@wordpress/core-data";
15
15
  import { __, sprintf } from "@wordpress/i18n";
16
16
  import { store as noticesStore } from "@wordpress/notices";
17
- import { store as patternsStore } from "../store/index.mjs";
18
- import CreatePatternModal from "./create-pattern-modal.mjs";
19
- import { unlock } from "../lock-unlock.mjs";
20
- import { PATTERN_SYNC_TYPES } from "../constants.mjs";
17
+ import { store as patternsStore } from "../store/index.js";
18
+ import CreatePatternModal from "./create-pattern-modal.js";
19
+ import { unlock } from "../lock-unlock.js";
20
+ import { PATTERN_SYNC_TYPES } from "../constants.js";
21
21
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
22
22
  function PatternConvertButton({
23
23
  clientIds,
@@ -147,4 +147,4 @@ function PatternConvertButton({
147
147
  export {
148
148
  PatternConvertButton as default
149
149
  };
150
- //# sourceMappingURL=pattern-convert-button.mjs.map
150
+ //# sourceMappingURL=pattern-convert-button.js.map
@@ -6,11 +6,11 @@ import {
6
6
  } from "@wordpress/block-editor";
7
7
  import { BaseControl, Button } from "@wordpress/components";
8
8
  import { __ } from "@wordpress/i18n";
9
- import { PATTERN_OVERRIDES_BINDING_SOURCE } from "../constants.mjs";
9
+ import { PATTERN_OVERRIDES_BINDING_SOURCE } from "../constants.js";
10
10
  import {
11
11
  AllowOverridesModal,
12
12
  DisallowOverridesModal
13
- } from "./allow-overrides-modal.mjs";
13
+ } from "./allow-overrides-modal.js";
14
14
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
15
15
  function PatternOverridesControls({
16
16
  attributes,
@@ -98,4 +98,4 @@ var pattern_overrides_controls_default = PatternOverridesControls;
98
98
  export {
99
99
  pattern_overrides_controls_default as default
100
100
  };
101
- //# sourceMappingURL=pattern-overrides-controls.mjs.map
101
+ //# sourceMappingURL=pattern-overrides-controls.js.map
@@ -6,8 +6,8 @@ import { useSelect, useDispatch } from "@wordpress/data";
6
6
  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
- import { store as patternsStore } from "../store/index.mjs";
10
- import { unlock } from "../lock-unlock.mjs";
9
+ import { store as patternsStore } from "../store/index.js";
10
+ import { unlock } from "../lock-unlock.js";
11
11
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
12
12
  function PatternsManageButton({ clientId }) {
13
13
  const {
@@ -87,4 +87,4 @@ var patterns_manage_button_default = PatternsManageButton;
87
87
  export {
88
88
  patterns_manage_button_default as default
89
89
  };
90
- //# sourceMappingURL=patterns-manage-button.mjs.map
90
+ //# sourceMappingURL=patterns-manage-button.js.map
@@ -13,7 +13,7 @@ import { decodeEntities } from "@wordpress/html-entities";
13
13
  import { __ } from "@wordpress/i18n";
14
14
  import { store as noticesStore } from "@wordpress/notices";
15
15
  import { speak } from "@wordpress/a11y";
16
- import { CATEGORY_SLUG } from "./category-selector.mjs";
16
+ import { CATEGORY_SLUG } from "./category-selector.js";
17
17
  import { jsx, jsxs } from "react/jsx-runtime";
18
18
  function RenamePatternCategoryModal({
19
19
  category,
@@ -151,4 +151,4 @@ function RenamePatternCategoryModal({
151
151
  export {
152
152
  RenamePatternCategoryModal as default
153
153
  };
154
- //# sourceMappingURL=rename-pattern-category-modal.mjs.map
154
+ //# sourceMappingURL=rename-pattern-category-modal.js.map
@@ -114,4 +114,4 @@ function RenamePatternModal({
114
114
  export {
115
115
  RenamePatternModal as default
116
116
  };
117
- //# sourceMappingURL=rename-pattern-modal.mjs.map
117
+ //# sourceMappingURL=rename-pattern-modal.js.map
@@ -63,4 +63,4 @@ function ResetOverridesControl(props) {
63
63
  export {
64
64
  ResetOverridesControl as default
65
65
  };
66
- //# sourceMappingURL=reset-overrides-control.mjs.map
66
+ //# sourceMappingURL=reset-overrides-control.js.map
@@ -14,13 +14,20 @@ var PATTERN_SYNC_TYPES = {
14
14
  full: "fully",
15
15
  unsynced: "unsynced"
16
16
  };
17
+ var PARTIAL_SYNCING_SUPPORTED_BLOCKS = {
18
+ "core/paragraph": ["content"],
19
+ "core/heading": ["content"],
20
+ "core/button": ["text", "url", "linkTarget", "rel"],
21
+ "core/image": ["id", "url", "title", "alt", "caption"]
22
+ };
17
23
  var PATTERN_OVERRIDES_BINDING_SOURCE = "core/pattern-overrides";
18
24
  export {
19
25
  EXCLUDED_PATTERN_SOURCES,
26
+ PARTIAL_SYNCING_SUPPORTED_BLOCKS,
20
27
  PATTERN_DEFAULT_CATEGORY,
21
28
  PATTERN_OVERRIDES_BINDING_SOURCE,
22
29
  PATTERN_SYNC_TYPES,
23
30
  PATTERN_TYPES,
24
31
  PATTERN_USER_CATEGORY
25
32
  };
26
- //# sourceMappingURL=constants.mjs.map
33
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/constants.js"],
4
+ "sourcesContent": ["export const PATTERN_TYPES = {\n\ttheme: 'pattern',\n\tuser: 'wp_block',\n};\n\nexport const PATTERN_DEFAULT_CATEGORY = 'all-patterns';\nexport const PATTERN_USER_CATEGORY = 'my-patterns';\nexport const EXCLUDED_PATTERN_SOURCES = [\n\t'core',\n\t'pattern-directory/core',\n\t'pattern-directory/featured',\n];\nexport const PATTERN_SYNC_TYPES = {\n\tfull: 'fully',\n\tunsynced: 'unsynced',\n};\n\n// TODO: This should not be hardcoded. Maybe there should be a config and/or an UI.\nexport const PARTIAL_SYNCING_SUPPORTED_BLOCKS = {\n\t'core/paragraph': [ 'content' ],\n\t'core/heading': [ 'content' ],\n\t'core/button': [ 'text', 'url', 'linkTarget', 'rel' ],\n\t'core/image': [ 'id', 'url', 'title', 'alt', 'caption' ],\n};\n\nexport const PATTERN_OVERRIDES_BINDING_SOURCE = 'core/pattern-overrides';\n"],
5
+ "mappings": ";AAAO,IAAM,gBAAgB;AAAA,EAC5B,OAAO;AAAA,EACP,MAAM;AACP;AAEO,IAAM,2BAA2B;AACjC,IAAM,wBAAwB;AAC9B,IAAM,2BAA2B;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AACD;AACO,IAAM,qBAAqB;AAAA,EACjC,MAAM;AAAA,EACN,UAAU;AACX;AAGO,IAAM,mCAAmC;AAAA,EAC/C,kBAAkB,CAAE,SAAU;AAAA,EAC9B,gBAAgB,CAAE,SAAU;AAAA,EAC5B,eAAe,CAAE,QAAQ,OAAO,cAAc,KAAM;AAAA,EACpD,cAAc,CAAE,MAAM,OAAO,SAAS,OAAO,SAAU;AACxD;AAEO,IAAM,mCAAmC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,7 @@
1
+ // packages/patterns/src/index.js
2
+ import { store } from "./store/index.js";
3
+ export * from "./private-apis.js";
4
+ export {
5
+ store
6
+ };
7
+ //# sourceMappingURL=index.js.map
@@ -8,4 +8,4 @@ export {
8
8
  lock,
9
9
  unlock
10
10
  };
11
- //# sourceMappingURL=lock-unlock.mjs.map
11
+ //# sourceMappingURL=lock-unlock.js.map
@@ -1,28 +1,29 @@
1
1
  // packages/patterns/src/private-apis.js
2
- import { lock } from "./lock-unlock.mjs";
3
- import OverridesPanel from "./components/overrides-panel.mjs";
2
+ import { lock } from "./lock-unlock.js";
3
+ import OverridesPanel from "./components/overrides-panel.js";
4
4
  import {
5
5
  default as CreatePatternModal,
6
6
  CreatePatternModalContents
7
- } from "./components/create-pattern-modal.mjs";
7
+ } from "./components/create-pattern-modal.js";
8
8
  import {
9
9
  default as DuplicatePatternModal,
10
10
  useDuplicatePatternProps
11
- } from "./components/duplicate-pattern-modal.mjs";
12
- import { isOverridableBlock } from "./api/index.mjs";
13
- import RenamePatternModal from "./components/rename-pattern-modal.mjs";
14
- import PatternsMenuItems from "./components/index.mjs";
15
- import RenamePatternCategoryModal from "./components/rename-pattern-category-modal.mjs";
16
- import PatternOverridesControls from "./components/pattern-overrides-controls.mjs";
17
- import ResetOverridesControl from "./components/reset-overrides-control.mjs";
18
- import { useAddPatternCategory } from "./private-hooks.mjs";
11
+ } from "./components/duplicate-pattern-modal.js";
12
+ import { isOverridableBlock, hasOverridableBlocks } from "./api/index.js";
13
+ import RenamePatternModal from "./components/rename-pattern-modal.js";
14
+ import PatternsMenuItems from "./components/index.js";
15
+ import RenamePatternCategoryModal from "./components/rename-pattern-category-modal.js";
16
+ import PatternOverridesControls from "./components/pattern-overrides-controls.js";
17
+ import ResetOverridesControl from "./components/reset-overrides-control.js";
18
+ import { useAddPatternCategory } from "./private-hooks.js";
19
19
  import {
20
20
  PATTERN_TYPES,
21
21
  PATTERN_DEFAULT_CATEGORY,
22
22
  PATTERN_USER_CATEGORY,
23
23
  EXCLUDED_PATTERN_SOURCES,
24
- PATTERN_SYNC_TYPES
25
- } from "./constants.mjs";
24
+ PATTERN_SYNC_TYPES,
25
+ PARTIAL_SYNCING_SUPPORTED_BLOCKS
26
+ } from "./constants.js";
26
27
  var privateApis = {};
27
28
  lock(privateApis, {
28
29
  OverridesPanel,
@@ -30,6 +31,7 @@ lock(privateApis, {
30
31
  CreatePatternModalContents,
31
32
  DuplicatePatternModal,
32
33
  isOverridableBlock,
34
+ hasOverridableBlocks,
33
35
  useDuplicatePatternProps,
34
36
  RenamePatternModal,
35
37
  PatternsMenuItems,
@@ -41,9 +43,10 @@ lock(privateApis, {
41
43
  PATTERN_DEFAULT_CATEGORY,
42
44
  PATTERN_USER_CATEGORY,
43
45
  EXCLUDED_PATTERN_SOURCES,
44
- PATTERN_SYNC_TYPES
46
+ PATTERN_SYNC_TYPES,
47
+ PARTIAL_SYNCING_SUPPORTED_BLOCKS
45
48
  });
46
49
  export {
47
50
  privateApis
48
51
  };
49
- //# sourceMappingURL=private-apis.mjs.map
52
+ //# sourceMappingURL=private-apis.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/private-apis.js"],
4
+ "sourcesContent": ["/**\n * Internal dependencies\n */\nimport { lock } from './lock-unlock';\nimport OverridesPanel from './components/overrides-panel';\nimport {\n\tdefault as CreatePatternModal,\n\tCreatePatternModalContents,\n} from './components/create-pattern-modal';\nimport {\n\tdefault as DuplicatePatternModal,\n\tuseDuplicatePatternProps,\n} from './components/duplicate-pattern-modal';\nimport { isOverridableBlock, hasOverridableBlocks } from './api';\nimport RenamePatternModal from './components/rename-pattern-modal';\nimport PatternsMenuItems from './components';\nimport RenamePatternCategoryModal from './components/rename-pattern-category-modal';\nimport PatternOverridesControls from './components/pattern-overrides-controls';\nimport ResetOverridesControl from './components/reset-overrides-control';\nimport { useAddPatternCategory } from './private-hooks';\nimport {\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tEXCLUDED_PATTERN_SOURCES,\n\tPATTERN_SYNC_TYPES,\n\tPARTIAL_SYNCING_SUPPORTED_BLOCKS,\n} from './constants';\n\nexport const privateApis = {};\nlock( privateApis, {\n\tOverridesPanel,\n\tCreatePatternModal,\n\tCreatePatternModalContents,\n\tDuplicatePatternModal,\n\tisOverridableBlock,\n\thasOverridableBlocks,\n\tuseDuplicatePatternProps,\n\tRenamePatternModal,\n\tPatternsMenuItems,\n\tRenamePatternCategoryModal,\n\tPatternOverridesControls,\n\tResetOverridesControl,\n\tuseAddPatternCategory,\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tEXCLUDED_PATTERN_SOURCES,\n\tPATTERN_SYNC_TYPES,\n\tPARTIAL_SYNCING_SUPPORTED_BLOCKS,\n} );\n"],
5
+ "mappings": ";AAGA,SAAS,YAAY;AACrB,OAAO,oBAAoB;AAC3B;AAAA,EACC,WAAW;AAAA,EACX;AAAA,OACM;AACP;AAAA,EACC,WAAW;AAAA,EACX;AAAA,OACM;AACP,SAAS,oBAAoB,4BAA4B;AACzD,OAAO,wBAAwB;AAC/B,OAAO,uBAAuB;AAC9B,OAAO,gCAAgC;AACvC,OAAO,8BAA8B;AACrC,OAAO,2BAA2B;AAClC,SAAS,6BAA6B;AACtC;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAEA,IAAM,cAAc,CAAC;AAC5B,KAAM,aAAa;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAE;",
6
+ "names": []
7
+ }
@@ -2,7 +2,7 @@
2
2
  import { useSelect, useDispatch } from "@wordpress/data";
3
3
  import { store as coreStore } from "@wordpress/core-data";
4
4
  import { useMemo } from "@wordpress/element";
5
- import { CATEGORY_SLUG } from "./components/category-selector.mjs";
5
+ import { CATEGORY_SLUG } from "./components/category-selector.js";
6
6
  function useAddPatternCategory() {
7
7
  const { saveEntityRecord, invalidateResolution } = useDispatch(coreStore);
8
8
  const { corePatternCategories, userPatternCategories } = useSelect(
@@ -63,4 +63,4 @@ function useAddPatternCategory() {
63
63
  export {
64
64
  useAddPatternCategory
65
65
  };
66
- //# sourceMappingURL=private-hooks.mjs.map
66
+ //# sourceMappingURL=private-hooks.js.map
@@ -2,7 +2,7 @@
2
2
  import { getBlockType, cloneBlock } from "@wordpress/blocks";
3
3
  import { store as coreStore } from "@wordpress/core-data";
4
4
  import { store as blockEditorStore } from "@wordpress/block-editor";
5
- import { PATTERN_SYNC_TYPES } from "../constants.mjs";
5
+ import { PATTERN_SYNC_TYPES } from "../constants.js";
6
6
  var createPattern = (title, syncType, content, categories) => async ({ registry }) => {
7
7
  const meta = syncType === PATTERN_SYNC_TYPES.unsynced ? {
8
8
  wp_pattern_sync_status: syncType
@@ -85,4 +85,4 @@ export {
85
85
  createPatternFromFile,
86
86
  setEditingPattern
87
87
  };
88
- //# sourceMappingURL=actions.mjs.map
88
+ //# sourceMappingURL=actions.js.map
@@ -3,4 +3,4 @@ var STORE_NAME = "core/patterns";
3
3
  export {
4
4
  STORE_NAME
5
5
  };
6
- //# sourceMappingURL=constants.mjs.map
6
+ //# sourceMappingURL=constants.js.map
@@ -1,10 +1,10 @@
1
1
  // packages/patterns/src/store/index.js
2
2
  import { createReduxStore, register } from "@wordpress/data";
3
- import reducer from "./reducer.mjs";
4
- import * as actions from "./actions.mjs";
5
- import { STORE_NAME } from "./constants.mjs";
6
- import * as selectors from "./selectors.mjs";
7
- import { unlock } from "../lock-unlock.mjs";
3
+ import reducer from "./reducer.js";
4
+ import * as actions from "./actions.js";
5
+ import { STORE_NAME } from "./constants.js";
6
+ import * as selectors from "./selectors.js";
7
+ import { unlock } from "../lock-unlock.js";
8
8
  var storeConfig = {
9
9
  reducer
10
10
  };
@@ -18,4 +18,4 @@ export {
18
18
  store,
19
19
  storeConfig
20
20
  };
21
- //# sourceMappingURL=index.mjs.map
21
+ //# sourceMappingURL=index.js.map
@@ -16,4 +16,4 @@ export {
16
16
  reducer_default as default,
17
17
  isEditingPattern
18
18
  };
19
- //# sourceMappingURL=reducer.mjs.map
19
+ //# sourceMappingURL=reducer.js.map
@@ -5,4 +5,4 @@ function isEditingPattern(state, clientId) {
5
5
  export {
6
6
  isEditingPattern
7
7
  };
8
- //# sourceMappingURL=selectors.mjs.map
8
+ //# sourceMappingURL=selectors.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/patterns",
3
- "version": "2.36.1-next.76cff8c98.0",
3
+ "version": "2.36.1-next.8fd3f8831.0",
4
4
  "description": "Management of user pattern editing.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -30,11 +30,12 @@
30
30
  "build-types",
31
31
  "*.md"
32
32
  ],
33
+ "type": "module",
33
34
  "main": "build/index.cjs",
34
- "module": "build-module/index.mjs",
35
+ "module": "build-module/index.js",
35
36
  "exports": {
36
37
  ".": {
37
- "import": "./build-module/index.mjs",
38
+ "import": "./build-module/index.js",
38
39
  "require": "./build/index.cjs"
39
40
  },
40
41
  "./package.json": "./package.json"
@@ -48,25 +49,25 @@
48
49
  "src/store/index.js",
49
50
  "build/index.cjs",
50
51
  "build/store/index.cjs",
51
- "build-module/index.mjs",
52
- "build-module/store/index.mjs"
52
+ "build-module/index.js",
53
+ "build-module/store/index.js"
53
54
  ],
54
55
  "dependencies": {
55
- "@wordpress/a11y": "^4.36.1-next.76cff8c98.0",
56
- "@wordpress/base-styles": "^6.12.2-next.76cff8c98.0",
57
- "@wordpress/block-editor": "^15.9.1-next.76cff8c98.0",
58
- "@wordpress/blocks": "^15.9.1-next.76cff8c98.0",
59
- "@wordpress/components": "^31.0.1-next.76cff8c98.0",
60
- "@wordpress/compose": "^7.36.1-next.76cff8c98.0",
61
- "@wordpress/core-data": "^7.36.1-next.76cff8c98.0",
62
- "@wordpress/data": "^10.36.1-next.76cff8c98.0",
63
- "@wordpress/element": "^6.36.1-next.76cff8c98.0",
64
- "@wordpress/html-entities": "^4.36.1-next.76cff8c98.0",
65
- "@wordpress/i18n": "^6.9.1-next.76cff8c98.0",
66
- "@wordpress/icons": "^11.3.1-next.76cff8c98.0",
67
- "@wordpress/notices": "^5.36.1-next.76cff8c98.0",
68
- "@wordpress/private-apis": "^1.36.1-next.76cff8c98.0",
69
- "@wordpress/url": "^4.36.1-next.76cff8c98.0"
56
+ "@wordpress/a11y": "^4.36.1-next.8fd3f8831.0",
57
+ "@wordpress/base-styles": "^6.12.1-next.8fd3f8831.0",
58
+ "@wordpress/block-editor": "^15.9.1-next.8fd3f8831.0",
59
+ "@wordpress/blocks": "^15.9.1-next.8fd3f8831.0",
60
+ "@wordpress/components": "^31.0.1-next.8fd3f8831.0",
61
+ "@wordpress/compose": "^7.36.1-next.8fd3f8831.0",
62
+ "@wordpress/core-data": "^7.36.1-next.8fd3f8831.0",
63
+ "@wordpress/data": "^10.36.1-next.8fd3f8831.0",
64
+ "@wordpress/element": "^6.36.1-next.8fd3f8831.0",
65
+ "@wordpress/html-entities": "^4.36.1-next.8fd3f8831.0",
66
+ "@wordpress/i18n": "^6.9.1-next.8fd3f8831.0",
67
+ "@wordpress/icons": "^11.3.1-next.8fd3f8831.0",
68
+ "@wordpress/notices": "^5.36.1-next.8fd3f8831.0",
69
+ "@wordpress/private-apis": "^1.36.1-next.8fd3f8831.0",
70
+ "@wordpress/url": "^4.36.1-next.8fd3f8831.0"
70
71
  },
71
72
  "peerDependencies": {
72
73
  "react": "^18.0.0",
@@ -75,5 +76,5 @@
75
76
  "publishConfig": {
76
77
  "access": "public"
77
78
  },
78
- "gitHead": "368727f14b858e75179e140967c2d9ec965c8790"
79
+ "gitHead": "e582b351bc4c4b8734bb087f63a3beec9875c3c7"
79
80
  }
package/src/api/index.js CHANGED
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { PARTIAL_SYNCING_SUPPORTED_BLOCKS } from '../constants';
5
+
1
6
  /**
2
7
  * Determines whether a block is overridable.
3
8
  *
@@ -7,6 +12,9 @@
7
12
  */
8
13
  export function isOverridableBlock( block ) {
9
14
  return (
15
+ Object.keys( PARTIAL_SYNCING_SUPPORTED_BLOCKS ).includes(
16
+ block.name
17
+ ) &&
10
18
  !! block.attributes.metadata?.name &&
11
19
  !! block.attributes.metadata?.bindings &&
12
20
  Object.values( block.attributes.metadata.bindings ).some(
@@ -14,3 +22,19 @@ export function isOverridableBlock( block ) {
14
22
  )
15
23
  );
16
24
  }
25
+
26
+ /**
27
+ * Determines whether the blocks list has overridable blocks.
28
+ *
29
+ * @param {WPBlock[]} blocks The blocks list.
30
+ *
31
+ * @return {boolean} `true` if the list has overridable blocks, `false` otherwise.
32
+ */
33
+ export function hasOverridableBlocks( blocks ) {
34
+ return blocks.some( ( block ) => {
35
+ if ( isOverridableBlock( block ) ) {
36
+ return true;
37
+ }
38
+ return hasOverridableBlocks( block.innerBlocks );
39
+ } );
40
+ }
@@ -19,15 +19,8 @@ import { unlock } from '../lock-unlock';
19
19
  const { BlockQuickNavigation } = unlock( blockEditorPrivateApis );
20
20
 
21
21
  export default function OverridesPanel() {
22
- const { allClientIds, supportedBlockTypes } = useSelect(
23
- ( select ) => ( {
24
- allClientIds:
25
- select( blockEditorStore ).getClientIdsWithDescendants(),
26
- supportedBlockTypes: Object.keys(
27
- select( blockEditorStore ).getSettings()
28
- ?.__experimentalBlockBindingsSupportedAttributes || {}
29
- ),
30
- } ),
22
+ const allClientIds = useSelect(
23
+ ( select ) => select( blockEditorStore ).getClientIdsWithDescendants(),
31
24
  []
32
25
  );
33
26
  const { getBlock } = useSelect( blockEditorStore );
@@ -35,12 +28,9 @@ export default function OverridesPanel() {
35
28
  () =>
36
29
  allClientIds.filter( ( clientId ) => {
37
30
  const block = getBlock( clientId );
38
- return (
39
- supportedBlockTypes.includes( block.name ) &&
40
- isOverridableBlock( block )
41
- );
31
+ return isOverridableBlock( block );
42
32
  } ),
43
- [ allClientIds, getBlock, supportedBlockTypes ]
33
+ [ allClientIds, getBlock ]
44
34
  );
45
35
 
46
36
  if ( ! clientIdsWithOverrides?.length ) {
package/src/constants.js CHANGED
@@ -15,4 +15,12 @@ export const PATTERN_SYNC_TYPES = {
15
15
  unsynced: 'unsynced',
16
16
  };
17
17
 
18
+ // TODO: This should not be hardcoded. Maybe there should be a config and/or an UI.
19
+ export const PARTIAL_SYNCING_SUPPORTED_BLOCKS = {
20
+ 'core/paragraph': [ 'content' ],
21
+ 'core/heading': [ 'content' ],
22
+ 'core/button': [ 'text', 'url', 'linkTarget', 'rel' ],
23
+ 'core/image': [ 'id', 'url', 'title', 'alt', 'caption' ],
24
+ };
25
+
18
26
  export const PATTERN_OVERRIDES_BINDING_SOURCE = 'core/pattern-overrides';
@@ -11,7 +11,7 @@ import {
11
11
  default as DuplicatePatternModal,
12
12
  useDuplicatePatternProps,
13
13
  } from './components/duplicate-pattern-modal';
14
- import { isOverridableBlock } from './api';
14
+ import { isOverridableBlock, hasOverridableBlocks } from './api';
15
15
  import RenamePatternModal from './components/rename-pattern-modal';
16
16
  import PatternsMenuItems from './components';
17
17
  import RenamePatternCategoryModal from './components/rename-pattern-category-modal';
@@ -24,6 +24,7 @@ import {
24
24
  PATTERN_USER_CATEGORY,
25
25
  EXCLUDED_PATTERN_SOURCES,
26
26
  PATTERN_SYNC_TYPES,
27
+ PARTIAL_SYNCING_SUPPORTED_BLOCKS,
27
28
  } from './constants';
28
29
 
29
30
  export const privateApis = {};
@@ -33,6 +34,7 @@ lock( privateApis, {
33
34
  CreatePatternModalContents,
34
35
  DuplicatePatternModal,
35
36
  isOverridableBlock,
37
+ hasOverridableBlocks,
36
38
  useDuplicatePatternProps,
37
39
  RenamePatternModal,
38
40
  PatternsMenuItems,
@@ -45,4 +47,5 @@ lock( privateApis, {
45
47
  PATTERN_USER_CATEGORY,
46
48
  EXCLUDED_PATTERN_SOURCES,
47
49
  PATTERN_SYNC_TYPES,
50
+ PARTIAL_SYNCING_SUPPORTED_BLOCKS,
48
51
  } );
@@ -1,10 +0,0 @@
1
- // packages/patterns/src/api/index.js
2
- function isOverridableBlock(block) {
3
- return !!block.attributes.metadata?.name && !!block.attributes.metadata?.bindings && Object.values(block.attributes.metadata.bindings).some(
4
- (binding) => binding.source === "core/pattern-overrides"
5
- );
6
- }
7
- export {
8
- isOverridableBlock
9
- };
10
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/api/index.js"],
4
- "sourcesContent": ["/**\n * Determines whether a block is overridable.\n *\n * @param {WPBlock} block The block to test.\n *\n * @return {boolean} `true` if a block is overridable, `false` otherwise.\n */\nexport function isOverridableBlock( block ) {\n\treturn (\n\t\t!! block.attributes.metadata?.name &&\n\t\t!! block.attributes.metadata?.bindings &&\n\t\tObject.values( block.attributes.metadata.bindings ).some(\n\t\t\t( binding ) => binding.source === 'core/pattern-overrides'\n\t\t)\n\t);\n}\n"],
5
- "mappings": ";AAOO,SAAS,mBAAoB,OAAQ;AAC3C,SACC,CAAC,CAAE,MAAM,WAAW,UAAU,QAC9B,CAAC,CAAE,MAAM,WAAW,UAAU,YAC9B,OAAO,OAAQ,MAAM,WAAW,SAAS,QAAS,EAAE;AAAA,IACnD,CAAE,YAAa,QAAQ,WAAW;AAAA,EACnC;AAEF;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/components/overrides-panel.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { PanelBody } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { isOverridableBlock } from '../api';\nimport { unlock } from '../lock-unlock';\n\nconst { BlockQuickNavigation } = unlock( blockEditorPrivateApis );\n\nexport default function OverridesPanel() {\n\tconst { allClientIds, supportedBlockTypes } = useSelect(\n\t\t( select ) => ( {\n\t\t\tallClientIds:\n\t\t\t\tselect( blockEditorStore ).getClientIdsWithDescendants(),\n\t\t\tsupportedBlockTypes: Object.keys(\n\t\t\t\tselect( blockEditorStore ).getSettings()\n\t\t\t\t\t?.__experimentalBlockBindingsSupportedAttributes || {}\n\t\t\t),\n\t\t} ),\n\t\t[]\n\t);\n\tconst { getBlock } = useSelect( blockEditorStore );\n\tconst clientIdsWithOverrides = useMemo(\n\t\t() =>\n\t\t\tallClientIds.filter( ( clientId ) => {\n\t\t\t\tconst block = getBlock( clientId );\n\t\t\t\treturn (\n\t\t\t\t\tsupportedBlockTypes.includes( block.name ) &&\n\t\t\t\t\tisOverridableBlock( block )\n\t\t\t\t);\n\t\t\t} ),\n\t\t[ allClientIds, getBlock, supportedBlockTypes ]\n\t);\n\n\tif ( ! clientIdsWithOverrides?.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PanelBody title={ __( 'Overrides' ) }>\n\t\t\t<BlockQuickNavigation clientIds={ clientIdsWithOverrides } />\n\t\t</PanelBody>\n\t);\n}\n"],
5
- "mappings": ";AAGA;AAAA,EACC,eAAe;AAAA,EACf,SAAS;AAAA,OACH;AACP,SAAS,iBAAiB;AAC1B,SAAS,iBAAiB;AAC1B,SAAS,eAAe;AACxB,SAAS,UAAU;AAKnB,SAAS,0BAA0B;AACnC,SAAS,cAAc;AAmCpB;AAjCH,IAAM,EAAE,qBAAqB,IAAI,OAAQ,sBAAuB;AAEjD,SAAR,iBAAkC;AACxC,QAAM,EAAE,cAAc,oBAAoB,IAAI;AAAA,IAC7C,CAAE,YAAc;AAAA,MACf,cACC,OAAQ,gBAAiB,EAAE,4BAA4B;AAAA,MACxD,qBAAqB,OAAO;AAAA,QAC3B,OAAQ,gBAAiB,EAAE,YAAY,GACpC,kDAAkD,CAAC;AAAA,MACvD;AAAA,IACD;AAAA,IACA,CAAC;AAAA,EACF;AACA,QAAM,EAAE,SAAS,IAAI,UAAW,gBAAiB;AACjD,QAAM,yBAAyB;AAAA,IAC9B,MACC,aAAa,OAAQ,CAAE,aAAc;AACpC,YAAM,QAAQ,SAAU,QAAS;AACjC,aACC,oBAAoB,SAAU,MAAM,IAAK,KACzC,mBAAoB,KAAM;AAAA,IAE5B,CAAE;AAAA,IACH,CAAE,cAAc,UAAU,mBAAoB;AAAA,EAC/C;AAEA,MAAK,CAAE,wBAAwB,QAAS;AACvC,WAAO;AAAA,EACR;AAEA,SACC,oBAAC,aAAU,OAAQ,GAAI,WAAY,GAClC,8BAAC,wBAAqB,WAAY,wBAAyB,GAC5D;AAEF;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/constants.js"],
4
- "sourcesContent": ["export const PATTERN_TYPES = {\n\ttheme: 'pattern',\n\tuser: 'wp_block',\n};\n\nexport const PATTERN_DEFAULT_CATEGORY = 'all-patterns';\nexport const PATTERN_USER_CATEGORY = 'my-patterns';\nexport const EXCLUDED_PATTERN_SOURCES = [\n\t'core',\n\t'pattern-directory/core',\n\t'pattern-directory/featured',\n];\nexport const PATTERN_SYNC_TYPES = {\n\tfull: 'fully',\n\tunsynced: 'unsynced',\n};\n\nexport const PATTERN_OVERRIDES_BINDING_SOURCE = 'core/pattern-overrides';\n"],
5
- "mappings": ";AAAO,IAAM,gBAAgB;AAAA,EAC5B,OAAO;AAAA,EACP,MAAM;AACP;AAEO,IAAM,2BAA2B;AACjC,IAAM,wBAAwB;AAC9B,IAAM,2BAA2B;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AACD;AACO,IAAM,qBAAqB;AAAA,EACjC,MAAM;AAAA,EACN,UAAU;AACX;AAEO,IAAM,mCAAmC;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- // packages/patterns/src/index.js
2
- import { store } from "./store/index.mjs";
3
- export * from "./private-apis.mjs";
4
- export {
5
- store
6
- };
7
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/private-apis.js"],
4
- "sourcesContent": ["/**\n * Internal dependencies\n */\nimport { lock } from './lock-unlock';\nimport OverridesPanel from './components/overrides-panel';\nimport {\n\tdefault as CreatePatternModal,\n\tCreatePatternModalContents,\n} from './components/create-pattern-modal';\nimport {\n\tdefault as DuplicatePatternModal,\n\tuseDuplicatePatternProps,\n} from './components/duplicate-pattern-modal';\nimport { isOverridableBlock } from './api';\nimport RenamePatternModal from './components/rename-pattern-modal';\nimport PatternsMenuItems from './components';\nimport RenamePatternCategoryModal from './components/rename-pattern-category-modal';\nimport PatternOverridesControls from './components/pattern-overrides-controls';\nimport ResetOverridesControl from './components/reset-overrides-control';\nimport { useAddPatternCategory } from './private-hooks';\nimport {\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tEXCLUDED_PATTERN_SOURCES,\n\tPATTERN_SYNC_TYPES,\n} from './constants';\n\nexport const privateApis = {};\nlock( privateApis, {\n\tOverridesPanel,\n\tCreatePatternModal,\n\tCreatePatternModalContents,\n\tDuplicatePatternModal,\n\tisOverridableBlock,\n\tuseDuplicatePatternProps,\n\tRenamePatternModal,\n\tPatternsMenuItems,\n\tRenamePatternCategoryModal,\n\tPatternOverridesControls,\n\tResetOverridesControl,\n\tuseAddPatternCategory,\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tEXCLUDED_PATTERN_SOURCES,\n\tPATTERN_SYNC_TYPES,\n} );\n"],
5
- "mappings": ";AAGA,SAAS,YAAY;AACrB,OAAO,oBAAoB;AAC3B;AAAA,EACC,WAAW;AAAA,EACX;AAAA,OACM;AACP;AAAA,EACC,WAAW;AAAA,EACX;AAAA,OACM;AACP,SAAS,0BAA0B;AACnC,OAAO,wBAAwB;AAC/B,OAAO,uBAAuB;AAC9B,OAAO,gCAAgC;AACvC,OAAO,8BAA8B;AACrC,OAAO,2BAA2B;AAClC,SAAS,6BAA6B;AACtC;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAEA,IAAM,cAAc,CAAC;AAC5B,KAAM,aAAa;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAE;",
6
- "names": []
7
- }
File without changes