@wordpress/patterns 2.32.0 → 2.32.1-next.47f435fc9.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 (105) hide show
  1. package/build/api/index.js +35 -29
  2. package/build/api/index.js.map +7 -1
  3. package/build/components/allow-overrides-modal.js +149 -112
  4. package/build/components/allow-overrides-modal.js.map +7 -1
  5. package/build/components/category-selector.js +59 -38
  6. package/build/components/category-selector.js.map +7 -1
  7. package/build/components/create-pattern-modal.js +162 -111
  8. package/build/components/create-pattern-modal.js.map +7 -1
  9. package/build/components/duplicate-pattern-modal.js +85 -66
  10. package/build/components/duplicate-pattern-modal.js.map +7 -1
  11. package/build/components/index.js +50 -33
  12. package/build/components/index.js.map +7 -1
  13. package/build/components/overrides-panel.js +44 -39
  14. package/build/components/overrides-panel.js.map +7 -1
  15. package/build/components/pattern-convert-button.js +144 -133
  16. package/build/components/pattern-convert-button.js.map +7 -1
  17. package/build/components/pattern-overrides-block-controls.js +109 -109
  18. package/build/components/pattern-overrides-block-controls.js.map +7 -1
  19. package/build/components/pattern-overrides-controls.js +86 -69
  20. package/build/components/pattern-overrides-controls.js.map +7 -1
  21. package/build/components/patterns-manage-button.js +96 -97
  22. package/build/components/patterns-manage-button.js.map +7 -1
  23. package/build/components/rename-pattern-category-modal.js +122 -111
  24. package/build/components/rename-pattern-category-modal.js.map +7 -1
  25. package/build/components/rename-pattern-modal.js +95 -73
  26. package/build/components/rename-pattern-modal.js.map +7 -1
  27. package/build/components/reset-overrides-control.js +61 -57
  28. package/build/components/reset-overrides-control.js.map +7 -1
  29. package/build/constants.js +57 -23
  30. package/build/constants.js.map +7 -1
  31. package/build/index.js +27 -24
  32. package/build/index.js.map +7 -1
  33. package/build/lock-unlock.js +31 -15
  34. package/build/lock-unlock.js.map +7 -1
  35. package/build/private-apis.js +71 -48
  36. package/build/private-apis.js.map +7 -1
  37. package/build/private-hooks.js +57 -69
  38. package/build/private-hooks.js.map +7 -1
  39. package/build/store/actions.js +72 -85
  40. package/build/store/actions.js.map +7 -1
  41. package/build/store/constants.js +27 -10
  42. package/build/store/constants.js.map +7 -1
  43. package/build/store/index.js +50 -44
  44. package/build/store/index.js.map +7 -1
  45. package/build/store/reducer.js +30 -14
  46. package/build/store/reducer.js.map +7 -1
  47. package/build/store/selectors.js +26 -13
  48. package/build/store/selectors.js.map +7 -1
  49. package/build-module/api/index.js +14 -25
  50. package/build-module/api/index.js.map +7 -1
  51. package/build-module/components/allow-overrides-modal.js +131 -103
  52. package/build-module/components/allow-overrides-modal.js.map +7 -1
  53. package/build-module/components/category-selector.js +35 -29
  54. package/build-module/components/category-selector.js.map +7 -1
  55. package/build-module/components/create-pattern-modal.js +137 -99
  56. package/build-module/components/create-pattern-modal.js.map +7 -1
  57. package/build-module/components/duplicate-pattern-modal.js +53 -58
  58. package/build-module/components/duplicate-pattern-modal.js.map +7 -1
  59. package/build-module/components/index.js +22 -26
  60. package/build-module/components/index.js.map +7 -1
  61. package/build-module/components/overrides-panel.js +30 -34
  62. package/build-module/components/overrides-panel.js.map +7 -1
  63. package/build-module/components/pattern-convert-button.js +120 -125
  64. package/build-module/components/pattern-convert-button.js.map +7 -1
  65. package/build-module/components/pattern-overrides-block-controls.js +100 -103
  66. package/build-module/components/pattern-overrides-block-controls.js.map +7 -1
  67. package/build-module/components/pattern-overrides-controls.js +69 -58
  68. package/build-module/components/pattern-overrides-controls.js.map +7 -1
  69. package/build-module/components/patterns-manage-button.js +78 -91
  70. package/build-module/components/patterns-manage-button.js.map +7 -1
  71. package/build-module/components/rename-pattern-category-modal.js +106 -101
  72. package/build-module/components/rename-pattern-category-modal.js.map +7 -1
  73. package/build-module/components/rename-pattern-modal.js +80 -64
  74. package/build-module/components/rename-pattern-modal.js.map +7 -1
  75. package/build-module/components/reset-overrides-control.js +46 -51
  76. package/build-module/components/reset-overrides-control.js.map +7 -1
  77. package/build-module/constants.js +29 -18
  78. package/build-module/constants.js.map +7 -1
  79. package/build-module/index.js +6 -6
  80. package/build-module/index.js.map +7 -1
  81. package/build-module/lock-unlock.js +8 -7
  82. package/build-module/lock-unlock.js.map +7 -1
  83. package/build-module/private-apis.js +31 -18
  84. package/build-module/private-apis.js.map +7 -1
  85. package/build-module/private-hooks.js +35 -64
  86. package/build-module/private-hooks.js.map +7 -1
  87. package/build-module/store/actions.js +44 -74
  88. package/build-module/store/actions.js.map +7 -1
  89. package/build-module/store/constants.js +5 -5
  90. package/build-module/store/constants.js.map +7 -1
  91. package/build-module/store/index.js +13 -32
  92. package/build-module/store/index.js.map +7 -1
  93. package/build-module/store/reducer.js +9 -8
  94. package/build-module/store/reducer.js.map +7 -1
  95. package/build-module/store/selectors.js +5 -9
  96. package/build-module/store/selectors.js.map +7 -1
  97. package/build-style/style-rtl.css +3 -138
  98. package/build-style/style.css +3 -138
  99. package/package.json +24 -17
  100. package/src/components/style.scss +5 -0
  101. package/src/style.scss +2 -1
  102. package/build/index.native.js +0 -18
  103. package/build/index.native.js.map +0 -1
  104. package/build-module/index.native.js +0 -11
  105. package/build-module/index.native.js.map +0 -1
@@ -1,123 +1,120 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useId } from '@wordpress/element';
5
- import { __, sprintf } from '@wordpress/i18n';
6
- import { DropdownMenu, ToolbarItem, __experimentalText as Text } from '@wordpress/components';
7
- import { store as blocksStore } from '@wordpress/blocks';
8
- import { useSelect } from '@wordpress/data';
9
- import { copy } from '@wordpress/icons';
10
- import { store as blockEditorStore, BlockIcon, privateApis as blockEditorPrivateApis, BlockControls } from '@wordpress/block-editor';
11
-
12
- /**
13
- * Internal dependencies
14
- */
15
- import { unlock } from '../lock-unlock';
16
- import { PATTERN_OVERRIDES_BINDING_SOURCE } from '../constants';
17
- import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
18
- const {
19
- useBlockDisplayTitle
20
- } = unlock(blockEditorPrivateApis);
21
- function PatternOverridesToolbarIndicator({
22
- clientIds
23
- }) {
1
+ import { Fragment, jsx } from "react/jsx-runtime";
2
+ import { useId } from "@wordpress/element";
3
+ import { __, sprintf } from "@wordpress/i18n";
4
+ import {
5
+ DropdownMenu,
6
+ ToolbarItem,
7
+ __experimentalText as Text
8
+ } from "@wordpress/components";
9
+ import { store as blocksStore } from "@wordpress/blocks";
10
+ import { useSelect } from "@wordpress/data";
11
+ import { copy } from "@wordpress/icons";
12
+ import {
13
+ store as blockEditorStore,
14
+ BlockIcon,
15
+ privateApis as blockEditorPrivateApis,
16
+ BlockControls
17
+ } from "@wordpress/block-editor";
18
+ import { unlock } from "../lock-unlock";
19
+ import { PATTERN_OVERRIDES_BINDING_SOURCE } from "../constants";
20
+ const { useBlockDisplayTitle } = unlock(blockEditorPrivateApis);
21
+ function PatternOverridesToolbarIndicator({ clientIds }) {
24
22
  const isSingleBlockSelected = clientIds.length === 1;
25
- const {
26
- icon,
27
- firstBlockName
28
- } = useSelect(select => {
29
- const {
30
- getBlockAttributes,
31
- getBlockNamesByClientId
32
- } = select(blockEditorStore);
33
- const {
34
- getBlockType,
35
- getActiveBlockVariation
36
- } = select(blocksStore);
37
- const blockTypeNames = getBlockNamesByClientId(clientIds);
38
- const _firstBlockTypeName = blockTypeNames[0];
39
- const firstBlockType = getBlockType(_firstBlockTypeName);
40
- let _icon;
41
- if (isSingleBlockSelected) {
42
- const match = getActiveBlockVariation(_firstBlockTypeName, getBlockAttributes(clientIds[0]));
43
- // Take into account active block variations.
44
- _icon = match?.icon || firstBlockType.icon;
45
- } else {
46
- const isSelectionOfSameType = new Set(blockTypeNames).size === 1;
47
- // When selection consists of blocks of multiple types, display an
48
- // appropriate icon to communicate the non-uniformity.
49
- _icon = isSelectionOfSameType ? firstBlockType.icon : copy;
50
- }
51
- return {
52
- icon: _icon,
53
- firstBlockName: getBlockAttributes(clientIds[0]).metadata.name
54
- };
55
- }, [clientIds, isSingleBlockSelected]);
23
+ const { icon, firstBlockName } = useSelect(
24
+ (select) => {
25
+ const { getBlockAttributes, getBlockNamesByClientId } = select(blockEditorStore);
26
+ const { getBlockType, getActiveBlockVariation } = select(blocksStore);
27
+ const blockTypeNames = getBlockNamesByClientId(clientIds);
28
+ const _firstBlockTypeName = blockTypeNames[0];
29
+ const firstBlockType = getBlockType(_firstBlockTypeName);
30
+ let _icon;
31
+ if (isSingleBlockSelected) {
32
+ const match = getActiveBlockVariation(
33
+ _firstBlockTypeName,
34
+ getBlockAttributes(clientIds[0])
35
+ );
36
+ _icon = match?.icon || firstBlockType.icon;
37
+ } else {
38
+ const isSelectionOfSameType = new Set(blockTypeNames).size === 1;
39
+ _icon = isSelectionOfSameType ? firstBlockType.icon : copy;
40
+ }
41
+ return {
42
+ icon: _icon,
43
+ firstBlockName: getBlockAttributes(clientIds[0]).metadata.name
44
+ };
45
+ },
46
+ [clientIds, isSingleBlockSelected]
47
+ );
56
48
  const firstBlockTitle = useBlockDisplayTitle({
57
49
  clientId: clientIds[0],
58
50
  maximumLength: 35
59
51
  });
60
- const blockDescription = isSingleBlockSelected ? sprintf(/* translators: 1: The block type's name. 2: The block's user-provided name (the same as the override name). */
61
- __('This %1$s is editable using the "%2$s" override.'), firstBlockTitle.toLowerCase(), firstBlockName) : __('These blocks are editable using overrides.');
52
+ const blockDescription = isSingleBlockSelected ? sprintf(
53
+ /* translators: 1: The block type's name. 2: The block's user-provided name (the same as the override name). */
54
+ __('This %1$s is editable using the "%2$s" override.'),
55
+ firstBlockTitle.toLowerCase(),
56
+ firstBlockName
57
+ ) : __("These blocks are editable using overrides.");
62
58
  const descriptionId = useId();
63
- return /*#__PURE__*/_jsx(ToolbarItem, {
64
- children: toggleProps => /*#__PURE__*/_jsx(DropdownMenu, {
59
+ return /* @__PURE__ */ jsx(ToolbarItem, { children: (toggleProps) => /* @__PURE__ */ jsx(
60
+ DropdownMenu,
61
+ {
65
62
  className: "patterns-pattern-overrides-toolbar-indicator",
66
63
  label: firstBlockTitle,
67
64
  popoverProps: {
68
- placement: 'bottom-start',
69
- className: 'patterns-pattern-overrides-toolbar-indicator__popover'
65
+ placement: "bottom-start",
66
+ className: "patterns-pattern-overrides-toolbar-indicator__popover"
70
67
  },
71
- icon: /*#__PURE__*/_jsx(_Fragment, {
72
- children: /*#__PURE__*/_jsx(BlockIcon, {
73
- icon: icon,
68
+ icon: /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
69
+ BlockIcon,
70
+ {
71
+ icon,
74
72
  className: "patterns-pattern-overrides-toolbar-indicator-icon",
75
73
  showColors: true
76
- })
77
- }),
74
+ }
75
+ ) }),
78
76
  toggleProps: {
79
77
  description: blockDescription,
80
78
  ...toggleProps
81
79
  },
82
80
  menuProps: {
83
- orientation: 'both',
84
- 'aria-describedby': descriptionId
81
+ orientation: "both",
82
+ "aria-describedby": descriptionId
85
83
  },
86
- children: () => /*#__PURE__*/_jsx(Text, {
87
- id: descriptionId,
88
- children: blockDescription
89
- })
90
- })
91
- });
84
+ children: () => /* @__PURE__ */ jsx(Text, { id: descriptionId, children: blockDescription })
85
+ }
86
+ ) });
92
87
  }
93
- export default function PatternOverridesBlockControls() {
94
- const {
95
- clientIds,
96
- hasPatternOverrides,
97
- hasParentPattern
98
- } = useSelect(select => {
99
- const {
100
- getBlockAttributes,
101
- getSelectedBlockClientIds,
102
- getBlockParentsByBlockName
103
- } = select(blockEditorStore);
104
- const selectedClientIds = getSelectedBlockClientIds();
105
- const _hasPatternOverrides = selectedClientIds.every(clientId => {
106
- var _getBlockAttributes$m;
107
- return Object.values((_getBlockAttributes$m = getBlockAttributes(clientId)?.metadata?.bindings) !== null && _getBlockAttributes$m !== void 0 ? _getBlockAttributes$m : {}).some(binding => binding?.source === PATTERN_OVERRIDES_BINDING_SOURCE);
108
- });
109
- const _hasParentPattern = selectedClientIds.every(clientId => getBlockParentsByBlockName(clientId, 'core/block', true).length > 0);
110
- return {
111
- clientIds: selectedClientIds,
112
- hasPatternOverrides: _hasPatternOverrides,
113
- hasParentPattern: _hasParentPattern
114
- };
115
- }, []);
116
- return hasPatternOverrides && hasParentPattern ? /*#__PURE__*/_jsx(BlockControls, {
117
- group: "parent",
118
- children: /*#__PURE__*/_jsx(PatternOverridesToolbarIndicator, {
119
- clientIds: clientIds
120
- })
121
- }) : null;
88
+ function PatternOverridesBlockControls() {
89
+ const { clientIds, hasPatternOverrides, hasParentPattern } = useSelect(
90
+ (select) => {
91
+ const {
92
+ getBlockAttributes,
93
+ getSelectedBlockClientIds,
94
+ getBlockParentsByBlockName
95
+ } = select(blockEditorStore);
96
+ const selectedClientIds = getSelectedBlockClientIds();
97
+ const _hasPatternOverrides = selectedClientIds.every(
98
+ (clientId) => Object.values(
99
+ getBlockAttributes(clientId)?.metadata?.bindings ?? {}
100
+ ).some(
101
+ (binding) => binding?.source === PATTERN_OVERRIDES_BINDING_SOURCE
102
+ )
103
+ );
104
+ const _hasParentPattern = selectedClientIds.every(
105
+ (clientId) => getBlockParentsByBlockName(clientId, "core/block", true).length > 0
106
+ );
107
+ return {
108
+ clientIds: selectedClientIds,
109
+ hasPatternOverrides: _hasPatternOverrides,
110
+ hasParentPattern: _hasParentPattern
111
+ };
112
+ },
113
+ []
114
+ );
115
+ return hasPatternOverrides && hasParentPattern ? /* @__PURE__ */ jsx(BlockControls, { group: "parent", children: /* @__PURE__ */ jsx(PatternOverridesToolbarIndicator, { clientIds }) }) : null;
122
116
  }
123
- //# sourceMappingURL=pattern-overrides-block-controls.js.map
117
+ export {
118
+ PatternOverridesBlockControls as default
119
+ };
120
+ //# sourceMappingURL=pattern-overrides-block-controls.js.map
@@ -1 +1,7 @@
1
- {"version":3,"names":["useId","__","sprintf","DropdownMenu","ToolbarItem","__experimentalText","Text","store","blocksStore","useSelect","copy","blockEditorStore","BlockIcon","privateApis","blockEditorPrivateApis","BlockControls","unlock","PATTERN_OVERRIDES_BINDING_SOURCE","jsx","_jsx","Fragment","_Fragment","useBlockDisplayTitle","PatternOverridesToolbarIndicator","clientIds","isSingleBlockSelected","length","icon","firstBlockName","select","getBlockAttributes","getBlockNamesByClientId","getBlockType","getActiveBlockVariation","blockTypeNames","_firstBlockTypeName","firstBlockType","_icon","match","isSelectionOfSameType","Set","size","metadata","name","firstBlockTitle","clientId","maximumLength","blockDescription","toLowerCase","descriptionId","children","toggleProps","className","label","popoverProps","placement","showColors","description","menuProps","orientation","id","PatternOverridesBlockControls","hasPatternOverrides","hasParentPattern","getSelectedBlockClientIds","getBlockParentsByBlockName","selectedClientIds","_hasPatternOverrides","every","_getBlockAttributes$m","Object","values","bindings","some","binding","source","_hasParentPattern","group"],"sources":["@wordpress/patterns/src/components/pattern-overrides-block-controls.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useId } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarItem,\n\t__experimentalText as Text,\n} from '@wordpress/components';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\nimport {\n\tstore as blockEditorStore,\n\tBlockIcon,\n\tprivateApis as blockEditorPrivateApis,\n\tBlockControls,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\nimport { PATTERN_OVERRIDES_BINDING_SOURCE } from '../constants';\n\nconst { useBlockDisplayTitle } = unlock( blockEditorPrivateApis );\n\nfunction PatternOverridesToolbarIndicator( { clientIds } ) {\n\tconst isSingleBlockSelected = clientIds.length === 1;\n\tconst { icon, firstBlockName } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockAttributes, getBlockNamesByClientId } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { getBlockType, getActiveBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst blockTypeNames = getBlockNamesByClientId( clientIds );\n\t\t\tconst _firstBlockTypeName = blockTypeNames[ 0 ];\n\t\t\tconst firstBlockType = getBlockType( _firstBlockTypeName );\n\t\t\tlet _icon;\n\t\t\tif ( isSingleBlockSelected ) {\n\t\t\t\tconst match = getActiveBlockVariation(\n\t\t\t\t\t_firstBlockTypeName,\n\t\t\t\t\tgetBlockAttributes( clientIds[ 0 ] )\n\t\t\t\t);\n\t\t\t\t// Take into account active block variations.\n\t\t\t\t_icon = match?.icon || firstBlockType.icon;\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tnew Set( blockTypeNames ).size === 1;\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType ? firstBlockType.icon : copy;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ticon: _icon,\n\t\t\t\tfirstBlockName: getBlockAttributes( clientIds[ 0 ] ).metadata\n\t\t\t\t\t.name,\n\t\t\t};\n\t\t},\n\t\t[ clientIds, isSingleBlockSelected ]\n\t);\n\tconst firstBlockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\n\tconst blockDescription = isSingleBlockSelected\n\t\t? sprintf(\n\t\t\t\t/* translators: 1: The block type's name. 2: The block's user-provided name (the same as the override name). */\n\t\t\t\t__( 'This %1$s is editable using the \"%2$s\" override.' ),\n\t\t\t\tfirstBlockTitle.toLowerCase(),\n\t\t\t\tfirstBlockName\n\t\t )\n\t\t: __( 'These blocks are editable using overrides.' );\n\n\tconst descriptionId = useId();\n\n\treturn (\n\t\t<ToolbarItem>\n\t\t\t{ ( toggleProps ) => (\n\t\t\t\t<DropdownMenu\n\t\t\t\t\tclassName=\"patterns-pattern-overrides-toolbar-indicator\"\n\t\t\t\t\tlabel={ firstBlockTitle }\n\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\tplacement: 'bottom-start',\n\t\t\t\t\t\tclassName:\n\t\t\t\t\t\t\t'patterns-pattern-overrides-toolbar-indicator__popover',\n\t\t\t\t\t} }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\tclassName=\"patterns-pattern-overrides-toolbar-indicator-icon\"\n\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\tdescription: blockDescription,\n\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t} }\n\t\t\t\t\tmenuProps={ {\n\t\t\t\t\t\torientation: 'both',\n\t\t\t\t\t\t'aria-describedby': descriptionId,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ () => (\n\t\t\t\t\t\t<Text id={ descriptionId }>{ blockDescription }</Text>\n\t\t\t\t\t) }\n\t\t\t\t</DropdownMenu>\n\t\t\t) }\n\t\t</ToolbarItem>\n\t);\n}\n\nexport default function PatternOverridesBlockControls() {\n\tconst { clientIds, hasPatternOverrides, hasParentPattern } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst selectedClientIds = getSelectedBlockClientIds();\n\t\t\tconst _hasPatternOverrides = selectedClientIds.every(\n\t\t\t\t( clientId ) =>\n\t\t\t\t\tObject.values(\n\t\t\t\t\t\tgetBlockAttributes( clientId )?.metadata?.bindings ?? {}\n\t\t\t\t\t).some(\n\t\t\t\t\t\t( binding ) =>\n\t\t\t\t\t\t\tbinding?.source === PATTERN_OVERRIDES_BINDING_SOURCE\n\t\t\t\t\t)\n\t\t\t);\n\t\t\tconst _hasParentPattern = selectedClientIds.every(\n\t\t\t\t( clientId ) =>\n\t\t\t\t\tgetBlockParentsByBlockName( clientId, 'core/block', true )\n\t\t\t\t\t\t.length > 0\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tclientIds: selectedClientIds,\n\t\t\t\thasPatternOverrides: _hasPatternOverrides,\n\t\t\t\thasParentPattern: _hasParentPattern,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\treturn hasPatternOverrides && hasParentPattern ? (\n\t\t<BlockControls group=\"parent\">\n\t\t\t<PatternOverridesToolbarIndicator clientIds={ clientIds } />\n\t\t</BlockControls>\n\t) : null;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/pattern-overrides-block-controls.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useId } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarItem,\n\t__experimentalText as Text,\n} from '@wordpress/components';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\nimport {\n\tstore as blockEditorStore,\n\tBlockIcon,\n\tprivateApis as blockEditorPrivateApis,\n\tBlockControls,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\nimport { PATTERN_OVERRIDES_BINDING_SOURCE } from '../constants';\n\nconst { useBlockDisplayTitle } = unlock( blockEditorPrivateApis );\n\nfunction PatternOverridesToolbarIndicator( { clientIds } ) {\n\tconst isSingleBlockSelected = clientIds.length === 1;\n\tconst { icon, firstBlockName } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockAttributes, getBlockNamesByClientId } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { getBlockType, getActiveBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst blockTypeNames = getBlockNamesByClientId( clientIds );\n\t\t\tconst _firstBlockTypeName = blockTypeNames[ 0 ];\n\t\t\tconst firstBlockType = getBlockType( _firstBlockTypeName );\n\t\t\tlet _icon;\n\t\t\tif ( isSingleBlockSelected ) {\n\t\t\t\tconst match = getActiveBlockVariation(\n\t\t\t\t\t_firstBlockTypeName,\n\t\t\t\t\tgetBlockAttributes( clientIds[ 0 ] )\n\t\t\t\t);\n\t\t\t\t// Take into account active block variations.\n\t\t\t\t_icon = match?.icon || firstBlockType.icon;\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tnew Set( blockTypeNames ).size === 1;\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType ? firstBlockType.icon : copy;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ticon: _icon,\n\t\t\t\tfirstBlockName: getBlockAttributes( clientIds[ 0 ] ).metadata\n\t\t\t\t\t.name,\n\t\t\t};\n\t\t},\n\t\t[ clientIds, isSingleBlockSelected ]\n\t);\n\tconst firstBlockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\n\tconst blockDescription = isSingleBlockSelected\n\t\t? sprintf(\n\t\t\t\t/* translators: 1: The block type's name. 2: The block's user-provided name (the same as the override name). */\n\t\t\t\t__( 'This %1$s is editable using the \"%2$s\" override.' ),\n\t\t\t\tfirstBlockTitle.toLowerCase(),\n\t\t\t\tfirstBlockName\n\t\t )\n\t\t: __( 'These blocks are editable using overrides.' );\n\n\tconst descriptionId = useId();\n\n\treturn (\n\t\t<ToolbarItem>\n\t\t\t{ ( toggleProps ) => (\n\t\t\t\t<DropdownMenu\n\t\t\t\t\tclassName=\"patterns-pattern-overrides-toolbar-indicator\"\n\t\t\t\t\tlabel={ firstBlockTitle }\n\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\tplacement: 'bottom-start',\n\t\t\t\t\t\tclassName:\n\t\t\t\t\t\t\t'patterns-pattern-overrides-toolbar-indicator__popover',\n\t\t\t\t\t} }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\tclassName=\"patterns-pattern-overrides-toolbar-indicator-icon\"\n\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\tdescription: blockDescription,\n\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t} }\n\t\t\t\t\tmenuProps={ {\n\t\t\t\t\t\torientation: 'both',\n\t\t\t\t\t\t'aria-describedby': descriptionId,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ () => (\n\t\t\t\t\t\t<Text id={ descriptionId }>{ blockDescription }</Text>\n\t\t\t\t\t) }\n\t\t\t\t</DropdownMenu>\n\t\t\t) }\n\t\t</ToolbarItem>\n\t);\n}\n\nexport default function PatternOverridesBlockControls() {\n\tconst { clientIds, hasPatternOverrides, hasParentPattern } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst selectedClientIds = getSelectedBlockClientIds();\n\t\t\tconst _hasPatternOverrides = selectedClientIds.every(\n\t\t\t\t( clientId ) =>\n\t\t\t\t\tObject.values(\n\t\t\t\t\t\tgetBlockAttributes( clientId )?.metadata?.bindings ?? {}\n\t\t\t\t\t).some(\n\t\t\t\t\t\t( binding ) =>\n\t\t\t\t\t\t\tbinding?.source === PATTERN_OVERRIDES_BINDING_SOURCE\n\t\t\t\t\t)\n\t\t\t);\n\t\t\tconst _hasParentPattern = selectedClientIds.every(\n\t\t\t\t( clientId ) =>\n\t\t\t\t\tgetBlockParentsByBlockName( clientId, 'core/block', true )\n\t\t\t\t\t\t.length > 0\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tclientIds: selectedClientIds,\n\t\t\t\thasPatternOverrides: _hasPatternOverrides,\n\t\t\t\thasParentPattern: _hasParentPattern,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\treturn hasPatternOverrides && hasParentPattern ? (\n\t\t<BlockControls group=\"parent\">\n\t\t\t<PatternOverridesToolbarIndicator clientIds={ clientIds } />\n\t\t</BlockControls>\n\t) : null;\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,17 +1,16 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useState, useId } from '@wordpress/element';
5
- import { InspectorControls, useBlockBindingsUtils } from '@wordpress/block-editor';
6
- import { BaseControl, Button } from '@wordpress/components';
7
- import { __ } from '@wordpress/i18n';
8
-
9
- /**
10
- * Internal dependencies
11
- */
12
- import { PATTERN_OVERRIDES_BINDING_SOURCE } from '../constants';
13
- import { AllowOverridesModal, DisallowOverridesModal } from './allow-overrides-modal';
14
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { useState, useId } from "@wordpress/element";
3
+ import {
4
+ InspectorControls,
5
+ useBlockBindingsUtils
6
+ } from "@wordpress/block-editor";
7
+ import { BaseControl, Button } from "@wordpress/components";
8
+ import { __ } from "@wordpress/i18n";
9
+ import { PATTERN_OVERRIDES_BINDING_SOURCE } from "../constants";
10
+ import {
11
+ AllowOverridesModal,
12
+ DisallowOverridesModal
13
+ } from "./allow-overrides-modal";
15
14
  function PatternOverridesControls({
16
15
  attributes,
17
16
  setAttributes,
@@ -24,9 +23,7 @@ function PatternOverridesControls({
24
23
  const defaultBindings = attributes.metadata?.bindings?.__default;
25
24
  const hasOverrides = hasName && defaultBindings?.source === PATTERN_OVERRIDES_BINDING_SOURCE;
26
25
  const isConnectedToOtherSources = defaultBindings?.source && defaultBindings.source !== PATTERN_OVERRIDES_BINDING_SOURCE;
27
- const {
28
- updateBlockBindings
29
- } = useBlockBindingsUtils();
26
+ const { updateBlockBindings } = useBlockBindingsUtils();
30
27
  function updateBindings(isChecked, customName) {
31
28
  if (customName) {
32
29
  setAttributes({
@@ -37,54 +34,68 @@ function PatternOverridesControls({
37
34
  });
38
35
  }
39
36
  updateBlockBindings({
40
- __default: isChecked ? {
41
- source: PATTERN_OVERRIDES_BINDING_SOURCE
42
- } : undefined
37
+ __default: isChecked ? { source: PATTERN_OVERRIDES_BINDING_SOURCE } : void 0
43
38
  });
44
39
  }
45
-
46
- // Avoid overwriting other (e.g. meta) bindings.
47
40
  if (isConnectedToOtherSources) {
48
41
  return null;
49
42
  }
50
- const hasUnsupportedImageAttributes = blockName === 'core/image' && (!!attributes.caption?.length || !!attributes.href?.length);
51
- const helpText = !hasOverrides && hasUnsupportedImageAttributes ? __(`Overrides currently don't support image captions or links. Remove the caption or link first before enabling overrides.`) : __('Allow changes to this block throughout instances of this pattern.');
52
- return /*#__PURE__*/_jsxs(_Fragment, {
53
- children: [/*#__PURE__*/_jsx(InspectorControls, {
54
- group: "advanced",
55
- children: /*#__PURE__*/_jsx(BaseControl, {
43
+ const hasUnsupportedImageAttributes = blockName === "core/image" && (!!attributes.caption?.length || !!attributes.href?.length);
44
+ const helpText = !hasOverrides && hasUnsupportedImageAttributes ? __(
45
+ `Overrides currently don't support image captions or links. Remove the caption or link first before enabling overrides.`
46
+ ) : __(
47
+ "Allow changes to this block throughout instances of this pattern."
48
+ );
49
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
50
+ /* @__PURE__ */ jsx(InspectorControls, { group: "advanced", children: /* @__PURE__ */ jsx(
51
+ BaseControl,
52
+ {
56
53
  __nextHasNoMarginBottom: true,
57
54
  id: controlId,
58
- label: __('Overrides'),
55
+ label: __("Overrides"),
59
56
  help: helpText,
60
- children: /*#__PURE__*/_jsx(Button, {
61
- __next40pxDefaultSize: true,
62
- className: "pattern-overrides-control__allow-overrides-button",
63
- variant: "secondary",
64
- "aria-haspopup": "dialog",
65
- onClick: () => {
66
- if (hasOverrides) {
67
- setShowDisallowOverridesModal(true);
68
- } else {
69
- setShowAllowOverridesModal(true);
70
- }
71
- },
72
- disabled: !hasOverrides && hasUnsupportedImageAttributes,
73
- accessibleWhenDisabled: true,
74
- children: hasOverrides ? __('Disable overrides') : __('Enable overrides')
75
- })
76
- })
77
- }), showAllowOverridesModal && /*#__PURE__*/_jsx(AllowOverridesModal, {
78
- initialName: attributes.metadata?.name,
79
- onClose: () => setShowAllowOverridesModal(false),
80
- onSave: newName => {
81
- updateBindings(true, newName);
57
+ children: /* @__PURE__ */ jsx(
58
+ Button,
59
+ {
60
+ __next40pxDefaultSize: true,
61
+ className: "pattern-overrides-control__allow-overrides-button",
62
+ variant: "secondary",
63
+ "aria-haspopup": "dialog",
64
+ onClick: () => {
65
+ if (hasOverrides) {
66
+ setShowDisallowOverridesModal(true);
67
+ } else {
68
+ setShowAllowOverridesModal(true);
69
+ }
70
+ },
71
+ disabled: !hasOverrides && hasUnsupportedImageAttributes,
72
+ accessibleWhenDisabled: true,
73
+ children: hasOverrides ? __("Disable overrides") : __("Enable overrides")
74
+ }
75
+ )
82
76
  }
83
- }), showDisallowOverridesModal && /*#__PURE__*/_jsx(DisallowOverridesModal, {
84
- onClose: () => setShowDisallowOverridesModal(false),
85
- onSave: () => updateBindings(false)
86
- })]
87
- });
77
+ ) }),
78
+ showAllowOverridesModal && /* @__PURE__ */ jsx(
79
+ AllowOverridesModal,
80
+ {
81
+ initialName: attributes.metadata?.name,
82
+ onClose: () => setShowAllowOverridesModal(false),
83
+ onSave: (newName) => {
84
+ updateBindings(true, newName);
85
+ }
86
+ }
87
+ ),
88
+ showDisallowOverridesModal && /* @__PURE__ */ jsx(
89
+ DisallowOverridesModal,
90
+ {
91
+ onClose: () => setShowDisallowOverridesModal(false),
92
+ onSave: () => updateBindings(false)
93
+ }
94
+ )
95
+ ] });
88
96
  }
89
- export default PatternOverridesControls;
90
- //# sourceMappingURL=pattern-overrides-controls.js.map
97
+ var pattern_overrides_controls_default = PatternOverridesControls;
98
+ export {
99
+ pattern_overrides_controls_default as default
100
+ };
101
+ //# sourceMappingURL=pattern-overrides-controls.js.map
@@ -1 +1,7 @@
1
- {"version":3,"names":["useState","useId","InspectorControls","useBlockBindingsUtils","BaseControl","Button","__","PATTERN_OVERRIDES_BINDING_SOURCE","AllowOverridesModal","DisallowOverridesModal","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","PatternOverridesControls","attributes","setAttributes","name","blockName","controlId","showAllowOverridesModal","setShowAllowOverridesModal","showDisallowOverridesModal","setShowDisallowOverridesModal","hasName","metadata","defaultBindings","bindings","__default","hasOverrides","source","isConnectedToOtherSources","updateBlockBindings","updateBindings","isChecked","customName","undefined","hasUnsupportedImageAttributes","caption","length","href","helpText","children","group","__nextHasNoMarginBottom","id","label","help","__next40pxDefaultSize","className","variant","onClick","disabled","accessibleWhenDisabled","initialName","onClose","onSave","newName"],"sources":["@wordpress/patterns/src/components/pattern-overrides-controls.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useId } from '@wordpress/element';\nimport {\n\tInspectorControls,\n\tuseBlockBindingsUtils,\n} from '@wordpress/block-editor';\nimport { BaseControl, Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { PATTERN_OVERRIDES_BINDING_SOURCE } from '../constants';\nimport {\n\tAllowOverridesModal,\n\tDisallowOverridesModal,\n} from './allow-overrides-modal';\n\nfunction PatternOverridesControls( {\n\tattributes,\n\tsetAttributes,\n\tname: blockName,\n} ) {\n\tconst controlId = useId();\n\tconst [ showAllowOverridesModal, setShowAllowOverridesModal ] =\n\t\tuseState( false );\n\tconst [ showDisallowOverridesModal, setShowDisallowOverridesModal ] =\n\t\tuseState( false );\n\n\tconst hasName = !! attributes.metadata?.name;\n\tconst defaultBindings = attributes.metadata?.bindings?.__default;\n\tconst hasOverrides =\n\t\thasName && defaultBindings?.source === PATTERN_OVERRIDES_BINDING_SOURCE;\n\tconst isConnectedToOtherSources =\n\t\tdefaultBindings?.source &&\n\t\tdefaultBindings.source !== PATTERN_OVERRIDES_BINDING_SOURCE;\n\tconst { updateBlockBindings } = useBlockBindingsUtils();\n\n\tfunction updateBindings( isChecked, customName ) {\n\t\tif ( customName ) {\n\t\t\tsetAttributes( {\n\t\t\t\tmetadata: {\n\t\t\t\t\t...attributes.metadata,\n\t\t\t\t\tname: customName,\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\n\t\tupdateBlockBindings( {\n\t\t\t__default: isChecked\n\t\t\t\t? { source: PATTERN_OVERRIDES_BINDING_SOURCE }\n\t\t\t\t: undefined,\n\t\t} );\n\t}\n\n\t// Avoid overwriting other (e.g. meta) bindings.\n\tif ( isConnectedToOtherSources ) {\n\t\treturn null;\n\t}\n\n\tconst hasUnsupportedImageAttributes =\n\t\tblockName === 'core/image' &&\n\t\t( !! attributes.caption?.length || !! attributes.href?.length );\n\n\tconst helpText =\n\t\t! hasOverrides && hasUnsupportedImageAttributes\n\t\t\t? __(\n\t\t\t\t\t`Overrides currently don't support image captions or links. Remove the caption or link first before enabling overrides.`\n\t\t\t )\n\t\t\t: __(\n\t\t\t\t\t'Allow changes to this block throughout instances of this pattern.'\n\t\t\t );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t<BaseControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tid={ controlId }\n\t\t\t\t\tlabel={ __( 'Overrides' ) }\n\t\t\t\t\thelp={ helpText }\n\t\t\t\t>\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tclassName=\"pattern-overrides-control__allow-overrides-button\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tif ( hasOverrides ) {\n\t\t\t\t\t\t\t\tsetShowDisallowOverridesModal( true );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsetShowAllowOverridesModal( true );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t! hasOverrides && hasUnsupportedImageAttributes\n\t\t\t\t\t\t}\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t>\n\t\t\t\t\t\t{ hasOverrides\n\t\t\t\t\t\t\t? __( 'Disable overrides' )\n\t\t\t\t\t\t\t: __( 'Enable overrides' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</BaseControl>\n\t\t\t</InspectorControls>\n\n\t\t\t{ showAllowOverridesModal && (\n\t\t\t\t<AllowOverridesModal\n\t\t\t\t\tinitialName={ attributes.metadata?.name }\n\t\t\t\t\tonClose={ () => setShowAllowOverridesModal( false ) }\n\t\t\t\t\tonSave={ ( newName ) => {\n\t\t\t\t\t\tupdateBindings( true, newName );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showDisallowOverridesModal && (\n\t\t\t\t<DisallowOverridesModal\n\t\t\t\t\tonClose={ () => setShowDisallowOverridesModal( false ) }\n\t\t\t\t\tonSave={ () => updateBindings( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default PatternOverridesControls;\n"],"mappings":"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","ignoreList":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/pattern-overrides-controls.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useState, useId } from '@wordpress/element';\nimport {\n\tInspectorControls,\n\tuseBlockBindingsUtils,\n} from '@wordpress/block-editor';\nimport { BaseControl, Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { PATTERN_OVERRIDES_BINDING_SOURCE } from '../constants';\nimport {\n\tAllowOverridesModal,\n\tDisallowOverridesModal,\n} from './allow-overrides-modal';\n\nfunction PatternOverridesControls( {\n\tattributes,\n\tsetAttributes,\n\tname: blockName,\n} ) {\n\tconst controlId = useId();\n\tconst [ showAllowOverridesModal, setShowAllowOverridesModal ] =\n\t\tuseState( false );\n\tconst [ showDisallowOverridesModal, setShowDisallowOverridesModal ] =\n\t\tuseState( false );\n\n\tconst hasName = !! attributes.metadata?.name;\n\tconst defaultBindings = attributes.metadata?.bindings?.__default;\n\tconst hasOverrides =\n\t\thasName && defaultBindings?.source === PATTERN_OVERRIDES_BINDING_SOURCE;\n\tconst isConnectedToOtherSources =\n\t\tdefaultBindings?.source &&\n\t\tdefaultBindings.source !== PATTERN_OVERRIDES_BINDING_SOURCE;\n\tconst { updateBlockBindings } = useBlockBindingsUtils();\n\n\tfunction updateBindings( isChecked, customName ) {\n\t\tif ( customName ) {\n\t\t\tsetAttributes( {\n\t\t\t\tmetadata: {\n\t\t\t\t\t...attributes.metadata,\n\t\t\t\t\tname: customName,\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\n\t\tupdateBlockBindings( {\n\t\t\t__default: isChecked\n\t\t\t\t? { source: PATTERN_OVERRIDES_BINDING_SOURCE }\n\t\t\t\t: undefined,\n\t\t} );\n\t}\n\n\t// Avoid overwriting other (e.g. meta) bindings.\n\tif ( isConnectedToOtherSources ) {\n\t\treturn null;\n\t}\n\n\tconst hasUnsupportedImageAttributes =\n\t\tblockName === 'core/image' &&\n\t\t( !! attributes.caption?.length || !! attributes.href?.length );\n\n\tconst helpText =\n\t\t! hasOverrides && hasUnsupportedImageAttributes\n\t\t\t? __(\n\t\t\t\t\t`Overrides currently don't support image captions or links. Remove the caption or link first before enabling overrides.`\n\t\t\t )\n\t\t\t: __(\n\t\t\t\t\t'Allow changes to this block throughout instances of this pattern.'\n\t\t\t );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t<BaseControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tid={ controlId }\n\t\t\t\t\tlabel={ __( 'Overrides' ) }\n\t\t\t\t\thelp={ helpText }\n\t\t\t\t>\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tclassName=\"pattern-overrides-control__allow-overrides-button\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tif ( hasOverrides ) {\n\t\t\t\t\t\t\t\tsetShowDisallowOverridesModal( true );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsetShowAllowOverridesModal( true );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t! hasOverrides && hasUnsupportedImageAttributes\n\t\t\t\t\t\t}\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t>\n\t\t\t\t\t\t{ hasOverrides\n\t\t\t\t\t\t\t? __( 'Disable overrides' )\n\t\t\t\t\t\t\t: __( 'Enable overrides' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</BaseControl>\n\t\t\t</InspectorControls>\n\n\t\t\t{ showAllowOverridesModal && (\n\t\t\t\t<AllowOverridesModal\n\t\t\t\t\tinitialName={ attributes.metadata?.name }\n\t\t\t\t\tonClose={ () => setShowAllowOverridesModal( false ) }\n\t\t\t\t\tonSave={ ( newName ) => {\n\t\t\t\t\t\tupdateBindings( true, newName );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showDisallowOverridesModal && (\n\t\t\t\t<DisallowOverridesModal\n\t\t\t\t\tonClose={ () => setShowDisallowOverridesModal( false ) }\n\t\t\t\t\tonSave={ () => updateBindings( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default PatternOverridesControls;\n"],
5
+ "mappings": "AA4EE,mBAQG,KARH;AAzEF,SAAS,UAAU,aAAa;AAChC;AAAA,EACC;AAAA,EACA;AAAA,OACM;AACP,SAAS,aAAa,cAAc;AACpC,SAAS,UAAU;AAKnB,SAAS,wCAAwC;AACjD;AAAA,EACC;AAAA,EACA;AAAA,OACM;AAEP,SAAS,yBAA0B;AAAA,EAClC;AAAA,EACA;AAAA,EACA,MAAM;AACP,GAAI;AACH,QAAM,YAAY,MAAM;AACxB,QAAM,CAAE,yBAAyB,0BAA2B,IAC3D,SAAU,KAAM;AACjB,QAAM,CAAE,4BAA4B,6BAA8B,IACjE,SAAU,KAAM;AAEjB,QAAM,UAAU,CAAC,CAAE,WAAW,UAAU;AACxC,QAAM,kBAAkB,WAAW,UAAU,UAAU;AACvD,QAAM,eACL,WAAW,iBAAiB,WAAW;AACxC,QAAM,4BACL,iBAAiB,UACjB,gBAAgB,WAAW;AAC5B,QAAM,EAAE,oBAAoB,IAAI,sBAAsB;AAEtD,WAAS,eAAgB,WAAW,YAAa;AAChD,QAAK,YAAa;AACjB,oBAAe;AAAA,QACd,UAAU;AAAA,UACT,GAAG,WAAW;AAAA,UACd,MAAM;AAAA,QACP;AAAA,MACD,CAAE;AAAA,IACH;AAEA,wBAAqB;AAAA,MACpB,WAAW,YACR,EAAE,QAAQ,iCAAiC,IAC3C;AAAA,IACJ,CAAE;AAAA,EACH;AAGA,MAAK,2BAA4B;AAChC,WAAO;AAAA,EACR;AAEA,QAAM,gCACL,cAAc,iBACZ,CAAC,CAAE,WAAW,SAAS,UAAU,CAAC,CAAE,WAAW,MAAM;AAExD,QAAM,WACL,CAAE,gBAAgB,gCACf;AAAA,IACA;AAAA,EACA,IACA;AAAA,IACA;AAAA,EACA;AAEJ,SACC,iCACC;AAAA,wBAAC,qBAAkB,OAAM,YACxB;AAAA,MAAC;AAAA;AAAA,QACA,yBAAuB;AAAA,QACvB,IAAK;AAAA,QACL,OAAQ,GAAI,WAAY;AAAA,QACxB,MAAO;AAAA,QAEP;AAAA,UAAC;AAAA;AAAA,YACA,uBAAqB;AAAA,YACrB,WAAU;AAAA,YACV,SAAQ;AAAA,YACR,iBAAc;AAAA,YACd,SAAU,MAAM;AACf,kBAAK,cAAe;AACnB,8CAA+B,IAAK;AAAA,cACrC,OAAO;AACN,2CAA4B,IAAK;AAAA,cAClC;AAAA,YACD;AAAA,YACA,UACC,CAAE,gBAAgB;AAAA,YAEnB,wBAAsB;AAAA,YAEpB,yBACC,GAAI,mBAAoB,IACxB,GAAI,kBAAmB;AAAA;AAAA,QAC3B;AAAA;AAAA,IACD,GACD;AAAA,IAEE,2BACD;AAAA,MAAC;AAAA;AAAA,QACA,aAAc,WAAW,UAAU;AAAA,QACnC,SAAU,MAAM,2BAA4B,KAAM;AAAA,QAClD,QAAS,CAAE,YAAa;AACvB,yBAAgB,MAAM,OAAQ;AAAA,QAC/B;AAAA;AAAA,IACD;AAAA,IAEC,8BACD;AAAA,MAAC;AAAA;AAAA,QACA,SAAU,MAAM,8BAA+B,KAAM;AAAA,QACrD,QAAS,MAAM,eAAgB,KAAM;AAAA;AAAA,IACtC;AAAA,KAEF;AAEF;AAEA,IAAO,qCAAQ;",
6
+ "names": []
7
+ }