@wordpress/patterns 2.0.1 → 2.0.3

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.
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = PatternOverridesBlockControls;
7
+ var _element = require("@wordpress/element");
8
+ var _i18n = require("@wordpress/i18n");
9
+ var _components = require("@wordpress/components");
10
+ var _blocks = require("@wordpress/blocks");
11
+ var _data = require("@wordpress/data");
12
+ var _icons = require("@wordpress/icons");
13
+ var _blockEditor = require("@wordpress/block-editor");
14
+ var _lockUnlock = require("../lock-unlock");
15
+ var _constants = require("../constants");
16
+ var _jsxRuntime = require("react/jsx-runtime");
17
+ /**
18
+ * WordPress dependencies
19
+ */
20
+
21
+ /**
22
+ * Internal dependencies
23
+ */
24
+
25
+ const {
26
+ useBlockDisplayTitle
27
+ } = (0, _lockUnlock.unlock)(_blockEditor.privateApis);
28
+ function PatternOverridesToolbarIndicator({
29
+ clientIds
30
+ }) {
31
+ const isSingleBlockSelected = clientIds.length === 1;
32
+ const {
33
+ icon,
34
+ firstBlockName
35
+ } = (0, _data.useSelect)(select => {
36
+ const {
37
+ getBlockAttributes,
38
+ getBlockNamesByClientId
39
+ } = select(_blockEditor.store);
40
+ const {
41
+ getBlockType,
42
+ getActiveBlockVariation
43
+ } = select(_blocks.store);
44
+ const blockTypeNames = getBlockNamesByClientId(clientIds);
45
+ const _firstBlockTypeName = blockTypeNames[0];
46
+ const firstBlockType = getBlockType(_firstBlockTypeName);
47
+ let _icon;
48
+ if (isSingleBlockSelected) {
49
+ const match = getActiveBlockVariation(_firstBlockTypeName, getBlockAttributes(clientIds[0]));
50
+ // Take into account active block variations.
51
+ _icon = match?.icon || firstBlockType.icon;
52
+ } else {
53
+ const isSelectionOfSameType = new Set(blockTypeNames).size === 1;
54
+ // When selection consists of blocks of multiple types, display an
55
+ // appropriate icon to communicate the non-uniformity.
56
+ _icon = isSelectionOfSameType ? firstBlockType.icon : _icons.copy;
57
+ }
58
+ return {
59
+ icon: _icon,
60
+ firstBlockName: getBlockAttributes(clientIds[0]).metadata.name
61
+ };
62
+ }, [clientIds, isSingleBlockSelected]);
63
+ const firstBlockTitle = useBlockDisplayTitle({
64
+ clientId: clientIds[0],
65
+ maximumLength: 35
66
+ });
67
+ const blockDescription = isSingleBlockSelected ? (0, _i18n.sprintf)( /* translators: %1s: The block type's name; %2s: The block's user-provided name (the same as the override name). */
68
+ (0, _i18n.__)('This %1$s is editable using the "%2$s" override.'), firstBlockTitle.toLowerCase(), firstBlockName) : (0, _i18n.__)('These blocks are editable using overrides.');
69
+ const descriptionId = (0, _element.useId)();
70
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToolbarItem, {
71
+ children: toggleProps => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.DropdownMenu, {
72
+ className: "patterns-pattern-overrides-toolbar-indicator",
73
+ label: firstBlockTitle,
74
+ popoverProps: {
75
+ placement: 'bottom-start',
76
+ className: 'patterns-pattern-overrides-toolbar-indicator__popover'
77
+ },
78
+ icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
79
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockEditor.BlockIcon, {
80
+ icon: icon,
81
+ className: "patterns-pattern-overrides-toolbar-indicator-icon",
82
+ showColors: true
83
+ })
84
+ }),
85
+ toggleProps: {
86
+ describedBy: blockDescription,
87
+ ...toggleProps
88
+ },
89
+ menuProps: {
90
+ orientation: 'both',
91
+ 'aria-describedby': descriptionId
92
+ },
93
+ children: () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalText, {
94
+ id: descriptionId,
95
+ children: blockDescription
96
+ })
97
+ })
98
+ });
99
+ }
100
+ function PatternOverridesBlockControls() {
101
+ const {
102
+ clientIds,
103
+ hasPatternOverrides,
104
+ hasParentPattern
105
+ } = (0, _data.useSelect)(select => {
106
+ const {
107
+ getBlockAttributes,
108
+ getSelectedBlockClientIds,
109
+ getBlockParentsByBlockName
110
+ } = select(_blockEditor.store);
111
+ const selectedClientIds = getSelectedBlockClientIds();
112
+ const _hasPatternOverrides = selectedClientIds.every(clientId => {
113
+ var _getBlockAttributes$m;
114
+ return Object.values((_getBlockAttributes$m = getBlockAttributes(clientId)?.metadata?.bindings) !== null && _getBlockAttributes$m !== void 0 ? _getBlockAttributes$m : {}).some(binding => binding?.source === _constants.PATTERN_OVERRIDES_BINDING_SOURCE);
115
+ });
116
+ const _hasParentPattern = selectedClientIds.every(clientId => getBlockParentsByBlockName(clientId, 'core/block', true).length > 0);
117
+ return {
118
+ clientIds: selectedClientIds,
119
+ hasPatternOverrides: _hasPatternOverrides,
120
+ hasParentPattern: _hasParentPattern
121
+ };
122
+ }, []);
123
+ return hasPatternOverrides && hasParentPattern ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockEditor.BlockControls, {
124
+ group: "parent",
125
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PatternOverridesToolbarIndicator, {
126
+ clientIds: clientIds
127
+ })
128
+ }) : null;
129
+ }
130
+ //# sourceMappingURL=pattern-overrides-block-controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_element","require","_i18n","_components","_blocks","_data","_icons","_blockEditor","_lockUnlock","_constants","_jsxRuntime","useBlockDisplayTitle","unlock","blockEditorPrivateApis","PatternOverridesToolbarIndicator","clientIds","isSingleBlockSelected","length","icon","firstBlockName","useSelect","select","getBlockAttributes","getBlockNamesByClientId","blockEditorStore","getBlockType","getActiveBlockVariation","blocksStore","blockTypeNames","_firstBlockTypeName","firstBlockType","_icon","match","isSelectionOfSameType","Set","size","copy","metadata","name","firstBlockTitle","clientId","maximumLength","blockDescription","sprintf","__","toLowerCase","descriptionId","useId","jsx","ToolbarItem","children","toggleProps","DropdownMenu","className","label","popoverProps","placement","Fragment","BlockIcon","showColors","describedBy","menuProps","orientation","__experimentalText","id","PatternOverridesBlockControls","hasPatternOverrides","hasParentPattern","getSelectedBlockClientIds","getBlockParentsByBlockName","selectedClientIds","_hasPatternOverrides","every","_getBlockAttributes$m","Object","values","bindings","some","binding","source","PATTERN_OVERRIDES_BINDING_SOURCE","_hasParentPattern","BlockControls","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: %1s: The block type's name; %2s: 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\tdescribedBy: 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":[]}
@@ -39,7 +39,8 @@ function addBindings(bindings) {
39
39
  }
40
40
  function PatternOverridesControls({
41
41
  attributes,
42
- setAttributes
42
+ setAttributes,
43
+ name: blockName
43
44
  }) {
44
45
  const controlId = (0, _element.useId)();
45
46
  const [showAllowOverridesModal, setShowAllowOverridesModal] = (0, _element.useState)(false);
@@ -67,13 +68,15 @@ function PatternOverridesControls({
67
68
  if (isConnectedToOtherSources) {
68
69
  return null;
69
70
  }
71
+ const hasUnsupportedImageAttributes = blockName === 'core/image' && (!!attributes.caption?.length || !!attributes.href?.length);
72
+ const helpText = hasUnsupportedImageAttributes ? (0, _i18n.__)(`Overrides currently don't support image captions or links. Remove the caption or link first before enabling overrides.`) : (0, _i18n.__)('Allow changes to this block throughout instances of this pattern.');
70
73
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
71
74
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_blockEditor.InspectorControls, {
72
75
  group: "advanced",
73
76
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.BaseControl, {
74
77
  id: controlId,
75
78
  label: (0, _i18n.__)('Overrides'),
76
- help: (0, _i18n.__)('Allow changes to this block throughout instances of this pattern.'),
79
+ help: helpText,
77
80
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
78
81
  __next40pxDefaultSize: true,
79
82
  className: "pattern-overrides-control__allow-overrides-button",
@@ -86,6 +89,8 @@ function PatternOverridesControls({
86
89
  setShowAllowOverridesModal(true);
87
90
  }
88
91
  },
92
+ disabled: hasUnsupportedImageAttributes,
93
+ __experimentalIsFocusable: true,
89
94
  children: allowOverrides ? (0, _i18n.__)('Disable overrides') : (0, _i18n.__)('Enable overrides')
90
95
  })
91
96
  })
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_blockEditor","_components","_i18n","_constants","_allowOverridesModal","_jsxRuntime","removeBindings","bindings","updatedBindings","__default","Object","keys","length","undefined","addBindings","source","PATTERN_OVERRIDES_BINDING_SOURCE","PatternOverridesControls","attributes","setAttributes","controlId","useId","showAllowOverridesModal","setShowAllowOverridesModal","useState","showDisallowOverridesModal","setShowDisallowOverridesModal","hasName","metadata","name","defaultBindings","allowOverrides","isConnectedToOtherSources","updateBindings","isChecked","customName","prevBindings","updatedMetadata","jsxs","Fragment","children","jsx","InspectorControls","group","BaseControl","id","label","__","help","Button","__next40pxDefaultSize","className","variant","onClick","AllowOverridesModal","initialName","onClose","onSave","newName","DisallowOverridesModal","_default","exports","default"],"sources":["@wordpress/patterns/src/components/pattern-overrides-controls.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useId } from '@wordpress/element';\nimport { InspectorControls } 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 removeBindings( bindings ) {\n\tlet updatedBindings = { ...bindings };\n\tdelete updatedBindings.__default;\n\tif ( ! Object.keys( updatedBindings ).length ) {\n\t\tupdatedBindings = undefined;\n\t}\n\treturn updatedBindings;\n}\n\nfunction addBindings( bindings ) {\n\treturn {\n\t\t...bindings,\n\t\t__default: { source: PATTERN_OVERRIDES_BINDING_SOURCE },\n\t};\n}\n\nfunction PatternOverridesControls( { attributes, setAttributes } ) {\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 allowOverrides =\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\n\tfunction updateBindings( isChecked, customName ) {\n\t\tconst prevBindings = attributes?.metadata?.bindings;\n\t\tconst updatedBindings = isChecked\n\t\t\t? addBindings( prevBindings )\n\t\t\t: removeBindings( prevBindings );\n\n\t\tconst updatedMetadata = {\n\t\t\t...attributes.metadata,\n\t\t\tbindings: updatedBindings,\n\t\t};\n\n\t\tif ( customName ) {\n\t\t\tupdatedMetadata.name = customName;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\tmetadata: updatedMetadata,\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\treturn (\n\t\t<>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t<BaseControl\n\t\t\t\t\tid={ controlId }\n\t\t\t\t\tlabel={ __( 'Overrides' ) }\n\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t'Allow changes to this block throughout instances of this pattern.'\n\t\t\t\t\t) }\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 ( allowOverrides ) {\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>\n\t\t\t\t\t\t{ allowOverrides\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
+ {"version":3,"names":["_element","require","_blockEditor","_components","_i18n","_constants","_allowOverridesModal","_jsxRuntime","removeBindings","bindings","updatedBindings","__default","Object","keys","length","undefined","addBindings","source","PATTERN_OVERRIDES_BINDING_SOURCE","PatternOverridesControls","attributes","setAttributes","name","blockName","controlId","useId","showAllowOverridesModal","setShowAllowOverridesModal","useState","showDisallowOverridesModal","setShowDisallowOverridesModal","hasName","metadata","defaultBindings","allowOverrides","isConnectedToOtherSources","updateBindings","isChecked","customName","prevBindings","updatedMetadata","hasUnsupportedImageAttributes","caption","href","helpText","__","jsxs","Fragment","children","jsx","InspectorControls","group","BaseControl","id","label","help","Button","__next40pxDefaultSize","className","variant","onClick","disabled","__experimentalIsFocusable","AllowOverridesModal","initialName","onClose","onSave","newName","DisallowOverridesModal","_default","exports","default"],"sources":["@wordpress/patterns/src/components/pattern-overrides-controls.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useId } from '@wordpress/element';\nimport { InspectorControls } 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 removeBindings( bindings ) {\n\tlet updatedBindings = { ...bindings };\n\tdelete updatedBindings.__default;\n\tif ( ! Object.keys( updatedBindings ).length ) {\n\t\tupdatedBindings = undefined;\n\t}\n\treturn updatedBindings;\n}\n\nfunction addBindings( bindings ) {\n\treturn {\n\t\t...bindings,\n\t\t__default: { source: PATTERN_OVERRIDES_BINDING_SOURCE },\n\t};\n}\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 allowOverrides =\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\n\tfunction updateBindings( isChecked, customName ) {\n\t\tconst prevBindings = attributes?.metadata?.bindings;\n\t\tconst updatedBindings = isChecked\n\t\t\t? addBindings( prevBindings )\n\t\t\t: removeBindings( prevBindings );\n\n\t\tconst updatedMetadata = {\n\t\t\t...attributes.metadata,\n\t\t\tbindings: updatedBindings,\n\t\t};\n\n\t\tif ( customName ) {\n\t\t\tupdatedMetadata.name = customName;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\tmetadata: updatedMetadata,\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 = hasUnsupportedImageAttributes\n\t\t? __(\n\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 )\n\t\t: __(\n\t\t\t\t'Allow changes to this block throughout instances of this pattern.'\n\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\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 ( allowOverrides ) {\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={ hasUnsupportedImageAttributes }\n\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t>\n\t\t\t\t\t\t{ allowOverrides\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":[]}
@@ -12,7 +12,7 @@ var _privateApis = require("@wordpress/private-apis");
12
12
  const {
13
13
  lock,
14
14
  unlock
15
- } = (0, _privateApis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)('I know using unstable features means my theme or plugin will inevitably break in the next version of WordPress.', '@wordpress/patterns');
15
+ } = (0, _privateApis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)('I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.', '@wordpress/patterns');
16
16
  exports.unlock = unlock;
17
17
  exports.lock = lock;
18
18
  //# sourceMappingURL=lock-unlock.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_privateApis","require","lock","unlock","__dangerousOptInToUnstableAPIsOnlyForCoreModules","exports"],"sources":["@wordpress/patterns/src/lock-unlock.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I know using unstable features means my theme or plugin will inevitably break in the next version of WordPress.',\n\t\t'@wordpress/patterns'\n\t);\n"],"mappings":";;;;;;AAGA,IAAAA,YAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAEO,MAAM;EAAEC,IAAI;EAAEC;AAAO,CAAC,GAC5B,IAAAC,6DAAgD,EAC/C,iHAAiH,EACjH,qBACD,CAAC;AAACC,OAAA,CAAAF,MAAA,GAAAA,MAAA;AAAAE,OAAA,CAAAH,IAAA,GAAAA,IAAA","ignoreList":[]}
1
+ {"version":3,"names":["_privateApis","require","lock","unlock","__dangerousOptInToUnstableAPIsOnlyForCoreModules","exports"],"sources":["@wordpress/patterns/src/lock-unlock.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.',\n\t\t'@wordpress/patterns'\n\t);\n"],"mappings":";;;;;;AAGA,IAAAA,YAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAEO,MAAM;EAAEC,IAAI;EAAEC;AAAO,CAAC,GAC5B,IAAAC,6DAAgD,EAC/C,+HAA+H,EAC/H,qBACD,CAAC;AAACC,OAAA,CAAAF,MAAA,GAAAA,MAAA;AAAAE,OAAA,CAAAH,IAAA,GAAAA,IAAA","ignoreList":[]}
@@ -15,6 +15,7 @@ var _components = _interopRequireDefault(require("./components"));
15
15
  var _renamePatternCategoryModal = _interopRequireDefault(require("./components/rename-pattern-category-modal"));
16
16
  var _patternOverridesControls = _interopRequireDefault(require("./components/pattern-overrides-controls"));
17
17
  var _resetOverridesControl = _interopRequireDefault(require("./components/reset-overrides-control"));
18
+ var _patternOverridesBlockControls = _interopRequireDefault(require("./components/pattern-overrides-block-controls"));
18
19
  var _privateHooks = require("./private-hooks");
19
20
  var _constants = require("./constants");
20
21
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
@@ -37,6 +38,7 @@ const privateApis = exports.privateApis = {};
37
38
  RenamePatternCategoryModal: _renamePatternCategoryModal.default,
38
39
  PatternOverridesControls: _patternOverridesControls.default,
39
40
  ResetOverridesControl: _resetOverridesControl.default,
41
+ PatternOverridesBlockControls: _patternOverridesBlockControls.default,
40
42
  useAddPatternCategory: _privateHooks.useAddPatternCategory,
41
43
  PATTERN_TYPES: _constants.PATTERN_TYPES,
42
44
  PATTERN_DEFAULT_CATEGORY: _constants.PATTERN_DEFAULT_CATEGORY,
@@ -1 +1 @@
1
- {"version":3,"names":["_lockUnlock","require","_overridesPanel","_interopRequireDefault","_createPatternModal","_interopRequireWildcard","_duplicatePatternModal","_api","_renamePatternModal","_components","_renamePatternCategoryModal","_patternOverridesControls","_resetOverridesControl","_privateHooks","_constants","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","privateApis","exports","lock","OverridesPanel","CreatePatternModal","CreatePatternModalContents","DuplicatePatternModal","isOverridableBlock","hasOverridableBlocks","useDuplicatePatternProps","RenamePatternModal","PatternsMenuItems","RenamePatternCategoryModal","PatternOverridesControls","ResetOverridesControl","useAddPatternCategory","PATTERN_TYPES","PATTERN_DEFAULT_CATEGORY","PATTERN_USER_CATEGORY","EXCLUDED_PATTERN_SOURCES","PATTERN_SYNC_TYPES","PARTIAL_SYNCING_SUPPORTED_BLOCKS"],"sources":["@wordpress/patterns/src/private-apis.js"],"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"],"mappings":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,mBAAA,GAAAC,uBAAA,CAAAJ,OAAA;AAIA,IAAAK,sBAAA,GAAAD,uBAAA,CAAAJ,OAAA;AAIA,IAAAM,IAAA,GAAAN,OAAA;AACA,IAAAO,mBAAA,GAAAL,sBAAA,CAAAF,OAAA;AACA,IAAAQ,WAAA,GAAAN,sBAAA,CAAAF,OAAA;AACA,IAAAS,2BAAA,GAAAP,sBAAA,CAAAF,OAAA;AACA,IAAAU,yBAAA,GAAAR,sBAAA,CAAAF,OAAA;AACA,IAAAW,sBAAA,GAAAT,sBAAA,CAAAF,OAAA;AACA,IAAAY,aAAA,GAAAZ,OAAA;AACA,IAAAa,UAAA,GAAAb,OAAA;AAOqB,SAAAc,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAX,wBAAAW,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AA3BrB;AACA;AACA;;AA2BO,MAAMW,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,CAAC,CAAC;AAC7B,IAAAE,gBAAI,EAAEF,WAAW,EAAE;EAClBG,cAAc,EAAdA,uBAAc;EACdC,kBAAkB,EAAlBA,2BAAkB;EAClBC,0BAA0B,EAA1BA,8CAA0B;EAC1BC,qBAAqB,EAArBA,8BAAqB;EACrBC,kBAAkB,EAAlBA,uBAAkB;EAClBC,oBAAoB,EAApBA,yBAAoB;EACpBC,wBAAwB,EAAxBA,+CAAwB;EACxBC,kBAAkB,EAAlBA,2BAAkB;EAClBC,iBAAiB,EAAjBA,mBAAiB;EACjBC,0BAA0B,EAA1BA,mCAA0B;EAC1BC,wBAAwB,EAAxBA,iCAAwB;EACxBC,qBAAqB,EAArBA,8BAAqB;EACrBC,qBAAqB,EAArBA,mCAAqB;EACrBC,aAAa,EAAbA,wBAAa;EACbC,wBAAwB,EAAxBA,mCAAwB;EACxBC,qBAAqB,EAArBA,gCAAqB;EACrBC,wBAAwB,EAAxBA,mCAAwB;EACxBC,kBAAkB,EAAlBA,6BAAkB;EAClBC,gCAAgC,EAAhCA;AACD,CAAE,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_lockUnlock","require","_overridesPanel","_interopRequireDefault","_createPatternModal","_interopRequireWildcard","_duplicatePatternModal","_api","_renamePatternModal","_components","_renamePatternCategoryModal","_patternOverridesControls","_resetOverridesControl","_patternOverridesBlockControls","_privateHooks","_constants","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","privateApis","exports","lock","OverridesPanel","CreatePatternModal","CreatePatternModalContents","DuplicatePatternModal","isOverridableBlock","hasOverridableBlocks","useDuplicatePatternProps","RenamePatternModal","PatternsMenuItems","RenamePatternCategoryModal","PatternOverridesControls","ResetOverridesControl","PatternOverridesBlockControls","useAddPatternCategory","PATTERN_TYPES","PATTERN_DEFAULT_CATEGORY","PATTERN_USER_CATEGORY","EXCLUDED_PATTERN_SOURCES","PATTERN_SYNC_TYPES","PARTIAL_SYNCING_SUPPORTED_BLOCKS"],"sources":["@wordpress/patterns/src/private-apis.js"],"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 PatternOverridesBlockControls from './components/pattern-overrides-block-controls';\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\tPatternOverridesBlockControls,\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"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,124 @@
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 } from "react/jsx-runtime";
18
+ import { Fragment as _Fragment } from "react/jsx-runtime";
19
+ const {
20
+ useBlockDisplayTitle
21
+ } = unlock(blockEditorPrivateApis);
22
+ function PatternOverridesToolbarIndicator({
23
+ clientIds
24
+ }) {
25
+ const isSingleBlockSelected = clientIds.length === 1;
26
+ const {
27
+ icon,
28
+ firstBlockName
29
+ } = useSelect(select => {
30
+ const {
31
+ getBlockAttributes,
32
+ getBlockNamesByClientId
33
+ } = select(blockEditorStore);
34
+ const {
35
+ getBlockType,
36
+ getActiveBlockVariation
37
+ } = select(blocksStore);
38
+ const blockTypeNames = getBlockNamesByClientId(clientIds);
39
+ const _firstBlockTypeName = blockTypeNames[0];
40
+ const firstBlockType = getBlockType(_firstBlockTypeName);
41
+ let _icon;
42
+ if (isSingleBlockSelected) {
43
+ const match = getActiveBlockVariation(_firstBlockTypeName, getBlockAttributes(clientIds[0]));
44
+ // Take into account active block variations.
45
+ _icon = match?.icon || firstBlockType.icon;
46
+ } else {
47
+ const isSelectionOfSameType = new Set(blockTypeNames).size === 1;
48
+ // When selection consists of blocks of multiple types, display an
49
+ // appropriate icon to communicate the non-uniformity.
50
+ _icon = isSelectionOfSameType ? firstBlockType.icon : copy;
51
+ }
52
+ return {
53
+ icon: _icon,
54
+ firstBlockName: getBlockAttributes(clientIds[0]).metadata.name
55
+ };
56
+ }, [clientIds, isSingleBlockSelected]);
57
+ const firstBlockTitle = useBlockDisplayTitle({
58
+ clientId: clientIds[0],
59
+ maximumLength: 35
60
+ });
61
+ const blockDescription = isSingleBlockSelected ? sprintf( /* translators: %1s: The block type's name; %2s: The block's user-provided name (the same as the override name). */
62
+ __('This %1$s is editable using the "%2$s" override.'), firstBlockTitle.toLowerCase(), firstBlockName) : __('These blocks are editable using overrides.');
63
+ const descriptionId = useId();
64
+ return /*#__PURE__*/_jsx(ToolbarItem, {
65
+ children: toggleProps => /*#__PURE__*/_jsx(DropdownMenu, {
66
+ className: "patterns-pattern-overrides-toolbar-indicator",
67
+ label: firstBlockTitle,
68
+ popoverProps: {
69
+ placement: 'bottom-start',
70
+ className: 'patterns-pattern-overrides-toolbar-indicator__popover'
71
+ },
72
+ icon: /*#__PURE__*/_jsx(_Fragment, {
73
+ children: /*#__PURE__*/_jsx(BlockIcon, {
74
+ icon: icon,
75
+ className: "patterns-pattern-overrides-toolbar-indicator-icon",
76
+ showColors: true
77
+ })
78
+ }),
79
+ toggleProps: {
80
+ describedBy: blockDescription,
81
+ ...toggleProps
82
+ },
83
+ menuProps: {
84
+ orientation: 'both',
85
+ 'aria-describedby': descriptionId
86
+ },
87
+ children: () => /*#__PURE__*/_jsx(Text, {
88
+ id: descriptionId,
89
+ children: blockDescription
90
+ })
91
+ })
92
+ });
93
+ }
94
+ export default function PatternOverridesBlockControls() {
95
+ const {
96
+ clientIds,
97
+ hasPatternOverrides,
98
+ hasParentPattern
99
+ } = useSelect(select => {
100
+ const {
101
+ getBlockAttributes,
102
+ getSelectedBlockClientIds,
103
+ getBlockParentsByBlockName
104
+ } = select(blockEditorStore);
105
+ const selectedClientIds = getSelectedBlockClientIds();
106
+ const _hasPatternOverrides = selectedClientIds.every(clientId => {
107
+ var _getBlockAttributes$m;
108
+ return Object.values((_getBlockAttributes$m = getBlockAttributes(clientId)?.metadata?.bindings) !== null && _getBlockAttributes$m !== void 0 ? _getBlockAttributes$m : {}).some(binding => binding?.source === PATTERN_OVERRIDES_BINDING_SOURCE);
109
+ });
110
+ const _hasParentPattern = selectedClientIds.every(clientId => getBlockParentsByBlockName(clientId, 'core/block', true).length > 0);
111
+ return {
112
+ clientIds: selectedClientIds,
113
+ hasPatternOverrides: _hasPatternOverrides,
114
+ hasParentPattern: _hasParentPattern
115
+ };
116
+ }, []);
117
+ return hasPatternOverrides && hasParentPattern ? /*#__PURE__*/_jsx(BlockControls, {
118
+ group: "parent",
119
+ children: /*#__PURE__*/_jsx(PatternOverridesToolbarIndicator, {
120
+ clientIds: clientIds
121
+ })
122
+ }) : null;
123
+ }
124
+ //# sourceMappingURL=pattern-overrides-block-controls.js.map
@@ -0,0 +1 @@
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","describedBy","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: %1s: The block type's name; %2s: 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\tdescribedBy: 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":[]}
@@ -34,7 +34,8 @@ function addBindings(bindings) {
34
34
  }
35
35
  function PatternOverridesControls({
36
36
  attributes,
37
- setAttributes
37
+ setAttributes,
38
+ name: blockName
38
39
  }) {
39
40
  const controlId = useId();
40
41
  const [showAllowOverridesModal, setShowAllowOverridesModal] = useState(false);
@@ -62,13 +63,15 @@ function PatternOverridesControls({
62
63
  if (isConnectedToOtherSources) {
63
64
  return null;
64
65
  }
66
+ const hasUnsupportedImageAttributes = blockName === 'core/image' && (!!attributes.caption?.length || !!attributes.href?.length);
67
+ const helpText = 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.');
65
68
  return /*#__PURE__*/_jsxs(_Fragment, {
66
69
  children: [/*#__PURE__*/_jsx(InspectorControls, {
67
70
  group: "advanced",
68
71
  children: /*#__PURE__*/_jsx(BaseControl, {
69
72
  id: controlId,
70
73
  label: __('Overrides'),
71
- help: __('Allow changes to this block throughout instances of this pattern.'),
74
+ help: helpText,
72
75
  children: /*#__PURE__*/_jsx(Button, {
73
76
  __next40pxDefaultSize: true,
74
77
  className: "pattern-overrides-control__allow-overrides-button",
@@ -81,6 +84,8 @@ function PatternOverridesControls({
81
84
  setShowAllowOverridesModal(true);
82
85
  }
83
86
  },
87
+ disabled: hasUnsupportedImageAttributes,
88
+ __experimentalIsFocusable: true,
84
89
  children: allowOverrides ? __('Disable overrides') : __('Enable overrides')
85
90
  })
86
91
  })
@@ -1 +1 @@
1
- {"version":3,"names":["useState","useId","InspectorControls","BaseControl","Button","__","PATTERN_OVERRIDES_BINDING_SOURCE","AllowOverridesModal","DisallowOverridesModal","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","removeBindings","bindings","updatedBindings","__default","Object","keys","length","undefined","addBindings","source","PatternOverridesControls","attributes","setAttributes","controlId","showAllowOverridesModal","setShowAllowOverridesModal","showDisallowOverridesModal","setShowDisallowOverridesModal","hasName","metadata","name","defaultBindings","allowOverrides","isConnectedToOtherSources","updateBindings","isChecked","customName","prevBindings","updatedMetadata","children","group","id","label","help","__next40pxDefaultSize","className","variant","onClick","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 { InspectorControls } 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 removeBindings( bindings ) {\n\tlet updatedBindings = { ...bindings };\n\tdelete updatedBindings.__default;\n\tif ( ! Object.keys( updatedBindings ).length ) {\n\t\tupdatedBindings = undefined;\n\t}\n\treturn updatedBindings;\n}\n\nfunction addBindings( bindings ) {\n\treturn {\n\t\t...bindings,\n\t\t__default: { source: PATTERN_OVERRIDES_BINDING_SOURCE },\n\t};\n}\n\nfunction PatternOverridesControls( { attributes, setAttributes } ) {\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 allowOverrides =\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\n\tfunction updateBindings( isChecked, customName ) {\n\t\tconst prevBindings = attributes?.metadata?.bindings;\n\t\tconst updatedBindings = isChecked\n\t\t\t? addBindings( prevBindings )\n\t\t\t: removeBindings( prevBindings );\n\n\t\tconst updatedMetadata = {\n\t\t\t...attributes.metadata,\n\t\t\tbindings: updatedBindings,\n\t\t};\n\n\t\tif ( customName ) {\n\t\t\tupdatedMetadata.name = customName;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\tmetadata: updatedMetadata,\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\treturn (\n\t\t<>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t<BaseControl\n\t\t\t\t\tid={ controlId }\n\t\t\t\t\tlabel={ __( 'Overrides' ) }\n\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t'Allow changes to this block throughout instances of this pattern.'\n\t\t\t\t\t) }\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 ( allowOverrides ) {\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>\n\t\t\t\t\t\t{ allowOverrides\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":"AAAA;AACA;AACA;AACA,SAASA,QAAQ,EAAEC,KAAK,QAAQ,oBAAoB;AACpD,SAASC,iBAAiB,QAAQ,yBAAyB;AAC3D,SAASC,WAAW,EAAEC,MAAM,QAAQ,uBAAuB;AAC3D,SAASC,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,SAASC,gCAAgC,QAAQ,cAAc;AAC/D,SACCC,mBAAmB,EACnBC,sBAAsB,QAChB,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAEjC,SAASC,cAAcA,CAAEC,QAAQ,EAAG;EACnC,IAAIC,eAAe,GAAG;IAAE,GAAGD;EAAS,CAAC;EACrC,OAAOC,eAAe,CAACC,SAAS;EAChC,IAAK,CAAEC,MAAM,CAACC,IAAI,CAAEH,eAAgB,CAAC,CAACI,MAAM,EAAG;IAC9CJ,eAAe,GAAGK,SAAS;EAC5B;EACA,OAAOL,eAAe;AACvB;AAEA,SAASM,WAAWA,CAAEP,QAAQ,EAAG;EAChC,OAAO;IACN,GAAGA,QAAQ;IACXE,SAAS,EAAE;MAAEM,MAAM,EAAElB;IAAiC;EACvD,CAAC;AACF;AAEA,SAASmB,wBAAwBA,CAAE;EAAEC,UAAU;EAAEC;AAAc,CAAC,EAAG;EAClE,MAAMC,SAAS,GAAG3B,KAAK,CAAC,CAAC;EACzB,MAAM,CAAE4B,uBAAuB,EAAEC,0BAA0B,CAAE,GAC5D9B,QAAQ,CAAE,KAAM,CAAC;EAClB,MAAM,CAAE+B,0BAA0B,EAAEC,6BAA6B,CAAE,GAClEhC,QAAQ,CAAE,KAAM,CAAC;EAElB,MAAMiC,OAAO,GAAG,CAAC,CAAEP,UAAU,CAACQ,QAAQ,EAAEC,IAAI;EAC5C,MAAMC,eAAe,GAAGV,UAAU,CAACQ,QAAQ,EAAElB,QAAQ,EAAEE,SAAS;EAChE,MAAMmB,cAAc,GACnBJ,OAAO,IAAIG,eAAe,EAAEZ,MAAM,KAAKlB,gCAAgC;EACxE,MAAMgC,yBAAyB,GAC9BF,eAAe,EAAEZ,MAAM,IACvBY,eAAe,CAACZ,MAAM,KAAKlB,gCAAgC;EAE5D,SAASiC,cAAcA,CAAEC,SAAS,EAAEC,UAAU,EAAG;IAChD,MAAMC,YAAY,GAAGhB,UAAU,EAAEQ,QAAQ,EAAElB,QAAQ;IACnD,MAAMC,eAAe,GAAGuB,SAAS,GAC9BjB,WAAW,CAAEmB,YAAa,CAAC,GAC3B3B,cAAc,CAAE2B,YAAa,CAAC;IAEjC,MAAMC,eAAe,GAAG;MACvB,GAAGjB,UAAU,CAACQ,QAAQ;MACtBlB,QAAQ,EAAEC;IACX,CAAC;IAED,IAAKwB,UAAU,EAAG;MACjBE,eAAe,CAACR,IAAI,GAAGM,UAAU;IAClC;IAEAd,aAAa,CAAE;MACdO,QAAQ,EAAES;IACX,CAAE,CAAC;EACJ;;EAEA;EACA,IAAKL,yBAAyB,EAAG;IAChC,OAAO,IAAI;EACZ;EAEA,oBACCxB,KAAA,CAAAF,SAAA;IAAAgC,QAAA,gBACClC,IAAA,CAACR,iBAAiB;MAAC2C,KAAK,EAAC,UAAU;MAAAD,QAAA,eAClClC,IAAA,CAACP,WAAW;QACX2C,EAAE,EAAGlB,SAAW;QAChBmB,KAAK,EAAG1C,EAAE,CAAE,WAAY,CAAG;QAC3B2C,IAAI,EAAG3C,EAAE,CACR,mEACD,CAAG;QAAAuC,QAAA,eAEHlC,IAAA,CAACN,MAAM;UACN6C,qBAAqB;UACrBC,SAAS,EAAC,mDAAmD;UAC7DC,OAAO,EAAC,WAAW;UACnB,iBAAc,QAAQ;UACtBC,OAAO,EAAGA,CAAA,KAAM;YACf,IAAKf,cAAc,EAAG;cACrBL,6BAA6B,CAAE,IAAK,CAAC;YACtC,CAAC,MAAM;cACNF,0BAA0B,CAAE,IAAK,CAAC;YACnC;UACD,CAAG;UAAAc,QAAA,EAEDP,cAAc,GACbhC,EAAE,CAAE,mBAAoB,CAAC,GACzBA,EAAE,CAAE,kBAAmB;QAAC,CACpB;MAAC,CACG;IAAC,CACI,CAAC,EAElBwB,uBAAuB,iBACxBnB,IAAA,CAACH,mBAAmB;MACnB8C,WAAW,EAAG3B,UAAU,CAACQ,QAAQ,EAAEC,IAAM;MACzCmB,OAAO,EAAGA,CAAA,KAAMxB,0BAA0B,CAAE,KAAM,CAAG;MACrDyB,MAAM,EAAKC,OAAO,IAAM;QACvBjB,cAAc,CAAE,IAAI,EAAEiB,OAAQ,CAAC;MAChC;IAAG,CACH,CACD,EACCzB,0BAA0B,iBAC3BrB,IAAA,CAACF,sBAAsB;MACtB8C,OAAO,EAAGA,CAAA,KAAMtB,6BAA6B,CAAE,KAAM,CAAG;MACxDuB,MAAM,EAAGA,CAAA,KAAMhB,cAAc,CAAE,KAAM;IAAG,CACxC,CACD;EAAA,CACA,CAAC;AAEL;AAEA,eAAed,wBAAwB","ignoreList":[]}
1
+ {"version":3,"names":["useState","useId","InspectorControls","BaseControl","Button","__","PATTERN_OVERRIDES_BINDING_SOURCE","AllowOverridesModal","DisallowOverridesModal","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","removeBindings","bindings","updatedBindings","__default","Object","keys","length","undefined","addBindings","source","PatternOverridesControls","attributes","setAttributes","name","blockName","controlId","showAllowOverridesModal","setShowAllowOverridesModal","showDisallowOverridesModal","setShowDisallowOverridesModal","hasName","metadata","defaultBindings","allowOverrides","isConnectedToOtherSources","updateBindings","isChecked","customName","prevBindings","updatedMetadata","hasUnsupportedImageAttributes","caption","href","helpText","children","group","id","label","help","__next40pxDefaultSize","className","variant","onClick","disabled","__experimentalIsFocusable","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 { InspectorControls } 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 removeBindings( bindings ) {\n\tlet updatedBindings = { ...bindings };\n\tdelete updatedBindings.__default;\n\tif ( ! Object.keys( updatedBindings ).length ) {\n\t\tupdatedBindings = undefined;\n\t}\n\treturn updatedBindings;\n}\n\nfunction addBindings( bindings ) {\n\treturn {\n\t\t...bindings,\n\t\t__default: { source: PATTERN_OVERRIDES_BINDING_SOURCE },\n\t};\n}\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 allowOverrides =\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\n\tfunction updateBindings( isChecked, customName ) {\n\t\tconst prevBindings = attributes?.metadata?.bindings;\n\t\tconst updatedBindings = isChecked\n\t\t\t? addBindings( prevBindings )\n\t\t\t: removeBindings( prevBindings );\n\n\t\tconst updatedMetadata = {\n\t\t\t...attributes.metadata,\n\t\t\tbindings: updatedBindings,\n\t\t};\n\n\t\tif ( customName ) {\n\t\t\tupdatedMetadata.name = customName;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\tmetadata: updatedMetadata,\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 = hasUnsupportedImageAttributes\n\t\t? __(\n\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 )\n\t\t: __(\n\t\t\t\t'Allow changes to this block throughout instances of this pattern.'\n\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\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 ( allowOverrides ) {\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={ hasUnsupportedImageAttributes }\n\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t>\n\t\t\t\t\t\t{ allowOverrides\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":[]}
@@ -5,5 +5,5 @@ import { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/pri
5
5
  export const {
6
6
  lock,
7
7
  unlock
8
- } = __dangerousOptInToUnstableAPIsOnlyForCoreModules('I know using unstable features means my theme or plugin will inevitably break in the next version of WordPress.', '@wordpress/patterns');
8
+ } = __dangerousOptInToUnstableAPIsOnlyForCoreModules('I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.', '@wordpress/patterns');
9
9
  //# sourceMappingURL=lock-unlock.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__dangerousOptInToUnstableAPIsOnlyForCoreModules","lock","unlock"],"sources":["@wordpress/patterns/src/lock-unlock.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I know using unstable features means my theme or plugin will inevitably break in the next version of WordPress.',\n\t\t'@wordpress/patterns'\n\t);\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,gDAAgD,QAAQ,yBAAyB;AAC1F,OAAO,MAAM;EAAEC,IAAI;EAAEC;AAAO,CAAC,GAC5BF,gDAAgD,CAC/C,iHAAiH,EACjH,qBACD,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["__dangerousOptInToUnstableAPIsOnlyForCoreModules","lock","unlock"],"sources":["@wordpress/patterns/src/lock-unlock.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.',\n\t\t'@wordpress/patterns'\n\t);\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,gDAAgD,QAAQ,yBAAyB;AAC1F,OAAO,MAAM;EAAEC,IAAI;EAAEC;AAAO,CAAC,GAC5BF,gDAAgD,CAC/C,+HAA+H,EAC/H,qBACD,CAAC","ignoreList":[]}
@@ -11,6 +11,7 @@ import PatternsMenuItems from './components';
11
11
  import RenamePatternCategoryModal from './components/rename-pattern-category-modal';
12
12
  import PatternOverridesControls from './components/pattern-overrides-controls';
13
13
  import ResetOverridesControl from './components/reset-overrides-control';
14
+ import PatternOverridesBlockControls from './components/pattern-overrides-block-controls';
14
15
  import { useAddPatternCategory } from './private-hooks';
15
16
  import { PATTERN_TYPES, PATTERN_DEFAULT_CATEGORY, PATTERN_USER_CATEGORY, EXCLUDED_PATTERN_SOURCES, PATTERN_SYNC_TYPES, PARTIAL_SYNCING_SUPPORTED_BLOCKS } from './constants';
16
17
  export const privateApis = {};
@@ -27,6 +28,7 @@ lock(privateApis, {
27
28
  RenamePatternCategoryModal,
28
29
  PatternOverridesControls,
29
30
  ResetOverridesControl,
31
+ PatternOverridesBlockControls,
30
32
  useAddPatternCategory,
31
33
  PATTERN_TYPES,
32
34
  PATTERN_DEFAULT_CATEGORY,
@@ -1 +1 @@
1
- {"version":3,"names":["lock","OverridesPanel","default","CreatePatternModal","CreatePatternModalContents","DuplicatePatternModal","useDuplicatePatternProps","isOverridableBlock","hasOverridableBlocks","RenamePatternModal","PatternsMenuItems","RenamePatternCategoryModal","PatternOverridesControls","ResetOverridesControl","useAddPatternCategory","PATTERN_TYPES","PATTERN_DEFAULT_CATEGORY","PATTERN_USER_CATEGORY","EXCLUDED_PATTERN_SOURCES","PATTERN_SYNC_TYPES","PARTIAL_SYNCING_SUPPORTED_BLOCKS","privateApis"],"sources":["@wordpress/patterns/src/private-apis.js"],"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"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,IAAI,QAAQ,eAAe;AACpC,OAAOC,cAAc,MAAM,8BAA8B;AACzD,SACCC,OAAO,IAAIC,kBAAkB,EAC7BC,0BAA0B,QACpB,mCAAmC;AAC1C,SACCF,OAAO,IAAIG,qBAAqB,EAChCC,wBAAwB,QAClB,sCAAsC;AAC7C,SAASC,kBAAkB,EAAEC,oBAAoB,QAAQ,OAAO;AAChE,OAAOC,kBAAkB,MAAM,mCAAmC;AAClE,OAAOC,iBAAiB,MAAM,cAAc;AAC5C,OAAOC,0BAA0B,MAAM,4CAA4C;AACnF,OAAOC,wBAAwB,MAAM,yCAAyC;AAC9E,OAAOC,qBAAqB,MAAM,sCAAsC;AACxE,SAASC,qBAAqB,QAAQ,iBAAiB;AACvD,SACCC,aAAa,EACbC,wBAAwB,EACxBC,qBAAqB,EACrBC,wBAAwB,EACxBC,kBAAkB,EAClBC,gCAAgC,QAC1B,aAAa;AAEpB,OAAO,MAAMC,WAAW,GAAG,CAAC,CAAC;AAC7BrB,IAAI,CAAEqB,WAAW,EAAE;EAClBpB,cAAc;EACdE,kBAAkB;EAClBC,0BAA0B;EAC1BC,qBAAqB;EACrBE,kBAAkB;EAClBC,oBAAoB;EACpBF,wBAAwB;EACxBG,kBAAkB;EAClBC,iBAAiB;EACjBC,0BAA0B;EAC1BC,wBAAwB;EACxBC,qBAAqB;EACrBC,qBAAqB;EACrBC,aAAa;EACbC,wBAAwB;EACxBC,qBAAqB;EACrBC,wBAAwB;EACxBC,kBAAkB;EAClBC;AACD,CAAE,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["lock","OverridesPanel","default","CreatePatternModal","CreatePatternModalContents","DuplicatePatternModal","useDuplicatePatternProps","isOverridableBlock","hasOverridableBlocks","RenamePatternModal","PatternsMenuItems","RenamePatternCategoryModal","PatternOverridesControls","ResetOverridesControl","PatternOverridesBlockControls","useAddPatternCategory","PATTERN_TYPES","PATTERN_DEFAULT_CATEGORY","PATTERN_USER_CATEGORY","EXCLUDED_PATTERN_SOURCES","PATTERN_SYNC_TYPES","PARTIAL_SYNCING_SUPPORTED_BLOCKS","privateApis"],"sources":["@wordpress/patterns/src/private-apis.js"],"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 PatternOverridesBlockControls from './components/pattern-overrides-block-controls';\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\tPatternOverridesBlockControls,\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"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,IAAI,QAAQ,eAAe;AACpC,OAAOC,cAAc,MAAM,8BAA8B;AACzD,SACCC,OAAO,IAAIC,kBAAkB,EAC7BC,0BAA0B,QACpB,mCAAmC;AAC1C,SACCF,OAAO,IAAIG,qBAAqB,EAChCC,wBAAwB,QAClB,sCAAsC;AAC7C,SAASC,kBAAkB,EAAEC,oBAAoB,QAAQ,OAAO;AAChE,OAAOC,kBAAkB,MAAM,mCAAmC;AAClE,OAAOC,iBAAiB,MAAM,cAAc;AAC5C,OAAOC,0BAA0B,MAAM,4CAA4C;AACnF,OAAOC,wBAAwB,MAAM,yCAAyC;AAC9E,OAAOC,qBAAqB,MAAM,sCAAsC;AACxE,OAAOC,6BAA6B,MAAM,+CAA+C;AACzF,SAASC,qBAAqB,QAAQ,iBAAiB;AACvD,SACCC,aAAa,EACbC,wBAAwB,EACxBC,qBAAqB,EACrBC,wBAAwB,EACxBC,kBAAkB,EAClBC,gCAAgC,QAC1B,aAAa;AAEpB,OAAO,MAAMC,WAAW,GAAG,CAAC,CAAC;AAC7BtB,IAAI,CAAEsB,WAAW,EAAE;EAClBrB,cAAc;EACdE,kBAAkB;EAClBC,0BAA0B;EAC1BC,qBAAqB;EACrBE,kBAAkB;EAClBC,oBAAoB;EACpBF,wBAAwB;EACxBG,kBAAkB;EAClBC,iBAAiB;EACjBC,0BAA0B;EAC1BC,wBAAwB;EACxBC,qBAAqB;EACrBC,6BAA6B;EAC7BC,qBAAqB;EACrBC,aAAa;EACbC,wBAAwB;EACxBC,qBAAqB;EACrBC,wBAAwB;EACxBC,kBAAkB;EAClBC;AACD,CAAE,CAAC","ignoreList":[]}
@@ -144,4 +144,17 @@
144
144
  .pattern-overrides-control__allow-overrides-button {
145
145
  width: 100%;
146
146
  justify-content: center;
147
+ }
148
+
149
+ .patterns-pattern-overrides-toolbar-indicator__popover .components-popover__content {
150
+ min-width: 260px;
151
+ padding: 16px;
152
+ }
153
+
154
+ .patterns-pattern-overrides-toolbar-indicator .patterns-pattern-overrides-toolbar-indicator-icon.has-colors svg {
155
+ fill: var(--wp-block-synced-color);
156
+ }
157
+
158
+ .editor-collapsible-block-toolbar .patterns-pattern-overrides-toolbar-indicator {
159
+ height: 32px;
147
160
  }
@@ -144,4 +144,17 @@
144
144
  .pattern-overrides-control__allow-overrides-button {
145
145
  width: 100%;
146
146
  justify-content: center;
147
+ }
148
+
149
+ .patterns-pattern-overrides-toolbar-indicator__popover .components-popover__content {
150
+ min-width: 260px;
151
+ padding: 16px;
152
+ }
153
+
154
+ .patterns-pattern-overrides-toolbar-indicator .patterns-pattern-overrides-toolbar-indicator-icon.has-colors svg {
155
+ fill: var(--wp-block-synced-color);
156
+ }
157
+
158
+ .editor-collapsible-block-toolbar .patterns-pattern-overrides-toolbar-indicator {
159
+ height: 32px;
147
160
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/patterns",
3
- "version": "2.0.1",
3
+ "version": "2.0.3",
4
4
  "description": "Management of user pattern editing.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -33,18 +33,18 @@
33
33
  "dependencies": {
34
34
  "@babel/runtime": "^7.16.0",
35
35
  "@wordpress/a11y": "^4.0.1",
36
- "@wordpress/block-editor": "^13.0.1",
37
- "@wordpress/blocks": "^13.0.1",
38
- "@wordpress/components": "^28.0.1",
36
+ "@wordpress/block-editor": "^13.0.3",
37
+ "@wordpress/blocks": "^13.0.3",
38
+ "@wordpress/components": "^28.0.3",
39
39
  "@wordpress/compose": "^7.0.1",
40
- "@wordpress/core-data": "^7.0.1",
41
- "@wordpress/data": "^10.0.1",
40
+ "@wordpress/core-data": "^7.0.3",
41
+ "@wordpress/data": "^10.0.2",
42
42
  "@wordpress/element": "^6.0.1",
43
43
  "@wordpress/html-entities": "^4.0.1",
44
44
  "@wordpress/i18n": "^5.0.1",
45
- "@wordpress/icons": "^10.0.1",
46
- "@wordpress/notices": "^5.0.1",
47
- "@wordpress/private-apis": "^1.0.1",
45
+ "@wordpress/icons": "^10.0.2",
46
+ "@wordpress/notices": "^5.0.2",
47
+ "@wordpress/private-apis": "^1.0.2",
48
48
  "@wordpress/url": "^4.0.1"
49
49
  },
50
50
  "peerDependencies": {
@@ -54,5 +54,5 @@
54
54
  "publishConfig": {
55
55
  "access": "public"
56
56
  },
57
- "gitHead": "0e973525f7787401b5a544e0727774d52a78639f"
57
+ "gitHead": "9dd5f8dcfa4fc7242e5d48be20ee789ad087b432"
58
58
  }
@@ -0,0 +1,155 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useId } from '@wordpress/element';
5
+ import { __, sprintf } from '@wordpress/i18n';
6
+ import {
7
+ DropdownMenu,
8
+ ToolbarItem,
9
+ __experimentalText as Text,
10
+ } from '@wordpress/components';
11
+ import { store as blocksStore } from '@wordpress/blocks';
12
+ import { useSelect } from '@wordpress/data';
13
+ import { copy } from '@wordpress/icons';
14
+ import {
15
+ store as blockEditorStore,
16
+ BlockIcon,
17
+ privateApis as blockEditorPrivateApis,
18
+ BlockControls,
19
+ } from '@wordpress/block-editor';
20
+
21
+ /**
22
+ * Internal dependencies
23
+ */
24
+ import { unlock } from '../lock-unlock';
25
+ import { PATTERN_OVERRIDES_BINDING_SOURCE } from '../constants';
26
+
27
+ const { useBlockDisplayTitle } = unlock( blockEditorPrivateApis );
28
+
29
+ function PatternOverridesToolbarIndicator( { clientIds } ) {
30
+ const isSingleBlockSelected = clientIds.length === 1;
31
+ const { icon, firstBlockName } = useSelect(
32
+ ( select ) => {
33
+ const { getBlockAttributes, getBlockNamesByClientId } =
34
+ select( blockEditorStore );
35
+ const { getBlockType, 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(
43
+ _firstBlockTypeName,
44
+ getBlockAttributes( clientIds[ 0 ] )
45
+ );
46
+ // Take into account active block variations.
47
+ _icon = match?.icon || firstBlockType.icon;
48
+ } else {
49
+ const isSelectionOfSameType =
50
+ new Set( blockTypeNames ).size === 1;
51
+ // When selection consists of blocks of multiple types, display an
52
+ // appropriate icon to communicate the non-uniformity.
53
+ _icon = isSelectionOfSameType ? firstBlockType.icon : copy;
54
+ }
55
+
56
+ return {
57
+ icon: _icon,
58
+ firstBlockName: getBlockAttributes( clientIds[ 0 ] ).metadata
59
+ .name,
60
+ };
61
+ },
62
+ [ clientIds, isSingleBlockSelected ]
63
+ );
64
+ const firstBlockTitle = useBlockDisplayTitle( {
65
+ clientId: clientIds[ 0 ],
66
+ maximumLength: 35,
67
+ } );
68
+
69
+ const blockDescription = isSingleBlockSelected
70
+ ? sprintf(
71
+ /* translators: %1s: The block type's name; %2s: The block's user-provided name (the same as the override name). */
72
+ __( 'This %1$s is editable using the "%2$s" override.' ),
73
+ firstBlockTitle.toLowerCase(),
74
+ firstBlockName
75
+ )
76
+ : __( 'These blocks are editable using overrides.' );
77
+
78
+ const descriptionId = useId();
79
+
80
+ return (
81
+ <ToolbarItem>
82
+ { ( toggleProps ) => (
83
+ <DropdownMenu
84
+ className="patterns-pattern-overrides-toolbar-indicator"
85
+ label={ firstBlockTitle }
86
+ popoverProps={ {
87
+ placement: 'bottom-start',
88
+ className:
89
+ 'patterns-pattern-overrides-toolbar-indicator__popover',
90
+ } }
91
+ icon={
92
+ <>
93
+ <BlockIcon
94
+ icon={ icon }
95
+ className="patterns-pattern-overrides-toolbar-indicator-icon"
96
+ showColors
97
+ />
98
+ </>
99
+ }
100
+ toggleProps={ {
101
+ describedBy: blockDescription,
102
+ ...toggleProps,
103
+ } }
104
+ menuProps={ {
105
+ orientation: 'both',
106
+ 'aria-describedby': descriptionId,
107
+ } }
108
+ >
109
+ { () => (
110
+ <Text id={ descriptionId }>{ blockDescription }</Text>
111
+ ) }
112
+ </DropdownMenu>
113
+ ) }
114
+ </ToolbarItem>
115
+ );
116
+ }
117
+
118
+ export default function PatternOverridesBlockControls() {
119
+ const { clientIds, hasPatternOverrides, hasParentPattern } = useSelect(
120
+ ( select ) => {
121
+ const {
122
+ getBlockAttributes,
123
+ getSelectedBlockClientIds,
124
+ getBlockParentsByBlockName,
125
+ } = select( blockEditorStore );
126
+ const selectedClientIds = getSelectedBlockClientIds();
127
+ const _hasPatternOverrides = selectedClientIds.every(
128
+ ( clientId ) =>
129
+ Object.values(
130
+ getBlockAttributes( clientId )?.metadata?.bindings ?? {}
131
+ ).some(
132
+ ( binding ) =>
133
+ binding?.source === PATTERN_OVERRIDES_BINDING_SOURCE
134
+ )
135
+ );
136
+ const _hasParentPattern = selectedClientIds.every(
137
+ ( clientId ) =>
138
+ getBlockParentsByBlockName( clientId, 'core/block', true )
139
+ .length > 0
140
+ );
141
+ return {
142
+ clientIds: selectedClientIds,
143
+ hasPatternOverrides: _hasPatternOverrides,
144
+ hasParentPattern: _hasParentPattern,
145
+ };
146
+ },
147
+ []
148
+ );
149
+
150
+ return hasPatternOverrides && hasParentPattern ? (
151
+ <BlockControls group="parent">
152
+ <PatternOverridesToolbarIndicator clientIds={ clientIds } />
153
+ </BlockControls>
154
+ ) : null;
155
+ }
@@ -31,7 +31,11 @@ function addBindings( bindings ) {
31
31
  };
32
32
  }
33
33
 
34
- function PatternOverridesControls( { attributes, setAttributes } ) {
34
+ function PatternOverridesControls( {
35
+ attributes,
36
+ setAttributes,
37
+ name: blockName,
38
+ } ) {
35
39
  const controlId = useId();
36
40
  const [ showAllowOverridesModal, setShowAllowOverridesModal ] =
37
41
  useState( false );
@@ -71,15 +75,25 @@ function PatternOverridesControls( { attributes, setAttributes } ) {
71
75
  return null;
72
76
  }
73
77
 
78
+ const hasUnsupportedImageAttributes =
79
+ blockName === 'core/image' &&
80
+ ( !! attributes.caption?.length || !! attributes.href?.length );
81
+
82
+ const helpText = hasUnsupportedImageAttributes
83
+ ? __(
84
+ `Overrides currently don't support image captions or links. Remove the caption or link first before enabling overrides.`
85
+ )
86
+ : __(
87
+ 'Allow changes to this block throughout instances of this pattern.'
88
+ );
89
+
74
90
  return (
75
91
  <>
76
92
  <InspectorControls group="advanced">
77
93
  <BaseControl
78
94
  id={ controlId }
79
95
  label={ __( 'Overrides' ) }
80
- help={ __(
81
- 'Allow changes to this block throughout instances of this pattern.'
82
- ) }
96
+ help={ helpText }
83
97
  >
84
98
  <Button
85
99
  __next40pxDefaultSize
@@ -93,6 +107,8 @@ function PatternOverridesControls( { attributes, setAttributes } ) {
93
107
  setShowAllowOverridesModal( true );
94
108
  }
95
109
  } }
110
+ disabled={ hasUnsupportedImageAttributes }
111
+ __experimentalIsFocusable
96
112
  >
97
113
  { allowOverrides
98
114
  ? __( 'Disable overrides' )
@@ -44,3 +44,16 @@
44
44
  justify-content: center;
45
45
  }
46
46
 
47
+
48
+ .patterns-pattern-overrides-toolbar-indicator__popover .components-popover__content {
49
+ min-width: 260px;
50
+ padding: $grid-unit-20;
51
+ }
52
+
53
+ .patterns-pattern-overrides-toolbar-indicator .patterns-pattern-overrides-toolbar-indicator-icon.has-colors svg {
54
+ fill: var(--wp-block-synced-color);
55
+ }
56
+
57
+ .editor-collapsible-block-toolbar .patterns-pattern-overrides-toolbar-indicator {
58
+ height: 32px;
59
+ }
@@ -4,6 +4,6 @@
4
4
  import { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';
5
5
  export const { lock, unlock } =
6
6
  __dangerousOptInToUnstableAPIsOnlyForCoreModules(
7
- 'I know using unstable features means my theme or plugin will inevitably break in the next version of WordPress.',
7
+ 'I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.',
8
8
  '@wordpress/patterns'
9
9
  );
@@ -17,6 +17,7 @@ import PatternsMenuItems from './components';
17
17
  import RenamePatternCategoryModal from './components/rename-pattern-category-modal';
18
18
  import PatternOverridesControls from './components/pattern-overrides-controls';
19
19
  import ResetOverridesControl from './components/reset-overrides-control';
20
+ import PatternOverridesBlockControls from './components/pattern-overrides-block-controls';
20
21
  import { useAddPatternCategory } from './private-hooks';
21
22
  import {
22
23
  PATTERN_TYPES,
@@ -41,6 +42,7 @@ lock( privateApis, {
41
42
  RenamePatternCategoryModal,
42
43
  PatternOverridesControls,
43
44
  ResetOverridesControl,
45
+ PatternOverridesBlockControls,
44
46
  useAddPatternCategory,
45
47
  PATTERN_TYPES,
46
48
  PATTERN_DEFAULT_CATEGORY,