@wordpress/patterns 1.12.3 → 1.12.4

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.
@@ -28,7 +28,7 @@ function PartialSyncingControls({
28
28
  setAttributes
29
29
  }) {
30
30
  const syncedAttributes = _constants.PARTIAL_SYNCING_SUPPORTED_BLOCKS[name];
31
- const attributeSources = Object.keys(syncedAttributes).map(attributeName => attributes.metadata?.bindings?.[attributeName]?.source);
31
+ const attributeSources = syncedAttributes.map(attributeName => attributes.metadata?.bindings?.[attributeName]?.source);
32
32
  const isConnectedToOtherSources = attributeSources.every(source => source && source !== 'core/pattern-overrides');
33
33
 
34
34
  // Render nothing if all supported attributes are connected to other sources.
@@ -40,7 +40,7 @@ function PartialSyncingControls({
40
40
  ...attributes?.metadata?.bindings
41
41
  };
42
42
  if (!isChecked) {
43
- for (const attributeName of Object.keys(syncedAttributes)) {
43
+ for (const attributeName of syncedAttributes) {
44
44
  if (updatedBindings[attributeName]?.source === 'core/pattern-overrides') {
45
45
  delete updatedBindings[attributeName];
46
46
  }
@@ -56,7 +56,7 @@ function PartialSyncingControls({
56
56
  });
57
57
  return;
58
58
  }
59
- for (const attributeName of Object.keys(syncedAttributes)) {
59
+ for (const attributeName of syncedAttributes) {
60
60
  if (!updatedBindings[attributeName]) {
61
61
  updatedBindings[attributeName] = {
62
62
  source: 'core/pattern-overrides'
@@ -1 +1 @@
1
- {"version":3,"names":["_nanoid","require","_blockEditor","_components","_i18n","_constants","PartialSyncingControls","name","attributes","setAttributes","syncedAttributes","PARTIAL_SYNCING_SUPPORTED_BLOCKS","attributeSources","Object","keys","map","attributeName","metadata","bindings","source","isConnectedToOtherSources","every","updateBindings","isChecked","updatedBindings","length","undefined","id","nanoid","_react","createElement","InspectorControls","group","BaseControl","__nextHasNoMarginBottom","VisualLabel","__","CheckboxControl","label","checked","some","onChange","_default","exports","default"],"sources":["@wordpress/patterns/src/components/partial-syncing-controls.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { nanoid } from 'nanoid';\n\n/**\n * WordPress dependencies\n */\nimport { InspectorControls } from '@wordpress/block-editor';\nimport { BaseControl, CheckboxControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { PARTIAL_SYNCING_SUPPORTED_BLOCKS } from '../constants';\n\nfunction PartialSyncingControls( { name, attributes, setAttributes } ) {\n\tconst syncedAttributes = PARTIAL_SYNCING_SUPPORTED_BLOCKS[ name ];\n\tconst attributeSources = Object.keys( syncedAttributes ).map(\n\t\t( attributeName ) =>\n\t\t\tattributes.metadata?.bindings?.[ attributeName ]?.source\n\t);\n\tconst isConnectedToOtherSources = attributeSources.every(\n\t\t( source ) => source && source !== 'core/pattern-overrides'\n\t);\n\n\t// Render nothing if all supported attributes are connected to other sources.\n\tif ( isConnectedToOtherSources ) {\n\t\treturn null;\n\t}\n\n\tfunction updateBindings( isChecked ) {\n\t\tlet updatedBindings = {\n\t\t\t...attributes?.metadata?.bindings,\n\t\t};\n\n\t\tif ( ! isChecked ) {\n\t\t\tfor ( const attributeName of Object.keys( syncedAttributes ) ) {\n\t\t\t\tif (\n\t\t\t\t\tupdatedBindings[ attributeName ]?.source ===\n\t\t\t\t\t'core/pattern-overrides'\n\t\t\t\t) {\n\t\t\t\t\tdelete updatedBindings[ attributeName ];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( ! Object.keys( updatedBindings ).length ) {\n\t\t\t\tupdatedBindings = undefined;\n\t\t\t}\n\t\t\tsetAttributes( {\n\t\t\t\tmetadata: {\n\t\t\t\t\t...attributes.metadata,\n\t\t\t\t\tbindings: updatedBindings,\n\t\t\t\t},\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( const attributeName of Object.keys( syncedAttributes ) ) {\n\t\t\tif ( ! updatedBindings[ attributeName ] ) {\n\t\t\t\tupdatedBindings[ attributeName ] = {\n\t\t\t\t\tsource: 'core/pattern-overrides',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( typeof attributes.metadata?.id === 'string' ) {\n\t\t\tsetAttributes( {\n\t\t\t\tmetadata: {\n\t\t\t\t\t...attributes.metadata,\n\t\t\t\t\tbindings: updatedBindings,\n\t\t\t\t},\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\tconst id = nanoid( 6 );\n\t\tsetAttributes( {\n\t\t\tmetadata: {\n\t\t\t\t...attributes.metadata,\n\t\t\t\tid,\n\t\t\t\tbindings: updatedBindings,\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn (\n\t\t<InspectorControls group=\"advanced\">\n\t\t\t<BaseControl __nextHasNoMarginBottom>\n\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t{ __( 'Pattern overrides' ) }\n\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t<CheckboxControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Allow instance overrides' ) }\n\t\t\t\t\tchecked={ attributeSources.some(\n\t\t\t\t\t\t( source ) => source === 'core/pattern-overrides'\n\t\t\t\t\t) }\n\t\t\t\t\tonChange={ ( isChecked ) => {\n\t\t\t\t\t\tupdateBindings( isChecked );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BaseControl>\n\t\t</InspectorControls>\n\t);\n}\n\nexport default PartialSyncingControls;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_nanoid","require","_blockEditor","_components","_i18n","_constants","PartialSyncingControls","name","attributes","setAttributes","syncedAttributes","PARTIAL_SYNCING_SUPPORTED_BLOCKS","attributeSources","map","attributeName","metadata","bindings","source","isConnectedToOtherSources","every","updateBindings","isChecked","updatedBindings","Object","keys","length","undefined","id","nanoid","_react","createElement","InspectorControls","group","BaseControl","__nextHasNoMarginBottom","VisualLabel","__","CheckboxControl","label","checked","some","onChange","_default","exports","default"],"sources":["@wordpress/patterns/src/components/partial-syncing-controls.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { nanoid } from 'nanoid';\n\n/**\n * WordPress dependencies\n */\nimport { InspectorControls } from '@wordpress/block-editor';\nimport { BaseControl, CheckboxControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { PARTIAL_SYNCING_SUPPORTED_BLOCKS } from '../constants';\n\nfunction PartialSyncingControls( { name, attributes, setAttributes } ) {\n\tconst syncedAttributes = PARTIAL_SYNCING_SUPPORTED_BLOCKS[ name ];\n\tconst attributeSources = syncedAttributes.map(\n\t\t( attributeName ) =>\n\t\t\tattributes.metadata?.bindings?.[ attributeName ]?.source\n\t);\n\tconst isConnectedToOtherSources = attributeSources.every(\n\t\t( source ) => source && source !== 'core/pattern-overrides'\n\t);\n\n\t// Render nothing if all supported attributes are connected to other sources.\n\tif ( isConnectedToOtherSources ) {\n\t\treturn null;\n\t}\n\n\tfunction updateBindings( isChecked ) {\n\t\tlet updatedBindings = {\n\t\t\t...attributes?.metadata?.bindings,\n\t\t};\n\n\t\tif ( ! isChecked ) {\n\t\t\tfor ( const attributeName of syncedAttributes ) {\n\t\t\t\tif (\n\t\t\t\t\tupdatedBindings[ attributeName ]?.source ===\n\t\t\t\t\t'core/pattern-overrides'\n\t\t\t\t) {\n\t\t\t\t\tdelete updatedBindings[ attributeName ];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( ! Object.keys( updatedBindings ).length ) {\n\t\t\t\tupdatedBindings = undefined;\n\t\t\t}\n\t\t\tsetAttributes( {\n\t\t\t\tmetadata: {\n\t\t\t\t\t...attributes.metadata,\n\t\t\t\t\tbindings: updatedBindings,\n\t\t\t\t},\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( const attributeName of syncedAttributes ) {\n\t\t\tif ( ! updatedBindings[ attributeName ] ) {\n\t\t\t\tupdatedBindings[ attributeName ] = {\n\t\t\t\t\tsource: 'core/pattern-overrides',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( typeof attributes.metadata?.id === 'string' ) {\n\t\t\tsetAttributes( {\n\t\t\t\tmetadata: {\n\t\t\t\t\t...attributes.metadata,\n\t\t\t\t\tbindings: updatedBindings,\n\t\t\t\t},\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\tconst id = nanoid( 6 );\n\t\tsetAttributes( {\n\t\t\tmetadata: {\n\t\t\t\t...attributes.metadata,\n\t\t\t\tid,\n\t\t\t\tbindings: updatedBindings,\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn (\n\t\t<InspectorControls group=\"advanced\">\n\t\t\t<BaseControl __nextHasNoMarginBottom>\n\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t{ __( 'Pattern overrides' ) }\n\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t<CheckboxControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Allow instance overrides' ) }\n\t\t\t\t\tchecked={ attributeSources.some(\n\t\t\t\t\t\t( source ) => source === 'core/pattern-overrides'\n\t\t\t\t\t) }\n\t\t\t\t\tonChange={ ( isChecked ) => {\n\t\t\t\t\t\tupdateBindings( isChecked );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BaseControl>\n\t\t</InspectorControls>\n\t);\n}\n\nexport default PartialSyncingControls;\n"],"mappings":"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"}
@@ -48,7 +48,12 @@ function ResetOverridesControl(props) {
48
48
  const editedRecord = await registry.resolveSelect(_coreData.store).getEditedEntityRecord('postType', 'wp_block', patternWithOverrides.attributes.ref);
49
49
  const blocks = (_editedRecord$blocks = editedRecord.blocks) !== null && _editedRecord$blocks !== void 0 ? _editedRecord$blocks : (0, _blocks.parse)(editedRecord.content);
50
50
  const block = recursivelyFindBlockWithId(blocks, id);
51
- props.setAttributes(block.attributes);
51
+ const newAttributes = Object.assign(
52
+ // Reset every existing attribute to undefined.
53
+ Object.fromEntries(Object.keys(props.attributes).map(key => [key, undefined])),
54
+ // Then assign the original attributes.
55
+ block.attributes);
56
+ props.setAttributes(newAttributes);
52
57
  };
53
58
  return (0, _react.createElement)(_blockEditor.BlockControls, {
54
59
  group: "other"
@@ -1 +1 @@
1
- {"version":3,"names":["_blockEditor","require","_components","_data","_coreData","_blocks","_i18n","recursivelyFindBlockWithId","blocks","id","block","attributes","metadata","found","innerBlocks","ResetOverridesControl","props","registry","useRegistry","patternWithOverrides","useSelect","select","undefined","getBlockParentsByBlockName","getBlocksByClientId","blockEditorStore","patternBlock","clientId","content","resetOverrides","_editedRecord$blocks","editedRecord","resolveSelect","coreStore","getEditedEntityRecord","ref","parse","setAttributes","_react","createElement","BlockControls","group","ToolbarGroup","ToolbarButton","onClick","disabled","__experimentalIsFocusable","__"],"sources":["@wordpress/patterns/src/components/reset-overrides-control.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tstore as blockEditorStore,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { useSelect, useRegistry } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { parse } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\nfunction recursivelyFindBlockWithId( blocks, id ) {\n\tfor ( const block of blocks ) {\n\t\tif ( block.attributes.metadata?.id === id ) {\n\t\t\treturn block;\n\t\t}\n\n\t\tconst found = recursivelyFindBlockWithId( block.innerBlocks, id );\n\t\tif ( found ) {\n\t\t\treturn found;\n\t\t}\n\t}\n}\n\nexport default function ResetOverridesControl( props ) {\n\tconst registry = useRegistry();\n\tconst id = props.attributes.metadata?.id;\n\tconst patternWithOverrides = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! id ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst { getBlockParentsByBlockName, getBlocksByClientId } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst patternBlock = getBlocksByClientId(\n\t\t\t\tgetBlockParentsByBlockName( props.clientId, 'core/block' )\n\t\t\t)[ 0 ];\n\n\t\t\tif ( ! patternBlock?.attributes.content?.[ id ] ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\treturn patternBlock;\n\t\t},\n\t\t[ props.clientId, id ]\n\t);\n\n\tconst resetOverrides = async () => {\n\t\tconst editedRecord = await registry\n\t\t\t.resolveSelect( coreStore )\n\t\t\t.getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_block',\n\t\t\t\tpatternWithOverrides.attributes.ref\n\t\t\t);\n\t\tconst blocks = editedRecord.blocks ?? parse( editedRecord.content );\n\t\tconst block = recursivelyFindBlockWithId( blocks, id );\n\n\t\tprops.setAttributes( block.attributes );\n\t};\n\n\treturn (\n\t\t<BlockControls group=\"other\">\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tonClick={ resetOverrides }\n\t\t\t\t\tdisabled={ ! patternWithOverrides }\n\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t</ToolbarButton>\n\t\t\t</ToolbarGroup>\n\t\t</BlockControls>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,YAAA,GAAAC,OAAA;AAIA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AAXA;AACA;AACA;;AAWA,SAASM,0BAA0BA,CAAEC,MAAM,EAAEC,EAAE,EAAG;EACjD,KAAM,MAAMC,KAAK,IAAIF,MAAM,EAAG;IAC7B,IAAKE,KAAK,CAACC,UAAU,CAACC,QAAQ,EAAEH,EAAE,KAAKA,EAAE,EAAG;MAC3C,OAAOC,KAAK;IACb;IAEA,MAAMG,KAAK,GAAGN,0BAA0B,CAAEG,KAAK,CAACI,WAAW,EAAEL,EAAG,CAAC;IACjE,IAAKI,KAAK,EAAG;MACZ,OAAOA,KAAK;IACb;EACD;AACD;AAEe,SAASE,qBAAqBA,CAAEC,KAAK,EAAG;EACtD,MAAMC,QAAQ,GAAG,IAAAC,iBAAW,EAAC,CAAC;EAC9B,MAAMT,EAAE,GAAGO,KAAK,CAACL,UAAU,CAACC,QAAQ,EAAEH,EAAE;EACxC,MAAMU,oBAAoB,GAAG,IAAAC,eAAS,EACnCC,MAAM,IAAM;IACb,IAAK,CAAEZ,EAAE,EAAG;MACX,OAAOa,SAAS;IACjB;IAEA,MAAM;MAAEC,0BAA0B;MAAEC;IAAoB,CAAC,GACxDH,MAAM,CAAEI,kBAAiB,CAAC;IAC3B,MAAMC,YAAY,GAAGF,mBAAmB,CACvCD,0BAA0B,CAAEP,KAAK,CAACW,QAAQ,EAAE,YAAa,CAC1D,CAAC,CAAE,CAAC,CAAE;IAEN,IAAK,CAAED,YAAY,EAAEf,UAAU,CAACiB,OAAO,GAAInB,EAAE,CAAE,EAAG;MACjD,OAAOa,SAAS;IACjB;IAEA,OAAOI,YAAY;EACpB,CAAC,EACD,CAAEV,KAAK,CAACW,QAAQ,EAAElB,EAAE,CACrB,CAAC;EAED,MAAMoB,cAAc,GAAG,MAAAA,CAAA,KAAY;IAAA,IAAAC,oBAAA;IAClC,MAAMC,YAAY,GAAG,MAAMd,QAAQ,CACjCe,aAAa,CAAEC,eAAU,CAAC,CAC1BC,qBAAqB,CACrB,UAAU,EACV,UAAU,EACVf,oBAAoB,CAACR,UAAU,CAACwB,GACjC,CAAC;IACF,MAAM3B,MAAM,IAAAsB,oBAAA,GAAGC,YAAY,CAACvB,MAAM,cAAAsB,oBAAA,cAAAA,oBAAA,GAAI,IAAAM,aAAK,EAAEL,YAAY,CAACH,OAAQ,CAAC;IACnE,MAAMlB,KAAK,GAAGH,0BAA0B,CAAEC,MAAM,EAAEC,EAAG,CAAC;IAEtDO,KAAK,CAACqB,aAAa,CAAE3B,KAAK,CAACC,UAAW,CAAC;EACxC,CAAC;EAED,OACC,IAAA2B,MAAA,CAAAC,aAAA,EAACvC,YAAA,CAAAwC,aAAa;IAACC,KAAK,EAAC;EAAO,GAC3B,IAAAH,MAAA,CAAAC,aAAA,EAACrC,WAAA,CAAAwC,YAAY,QACZ,IAAAJ,MAAA,CAAAC,aAAA,EAACrC,WAAA,CAAAyC,aAAa;IACbC,OAAO,EAAGf,cAAgB;IAC1BgB,QAAQ,EAAG,CAAE1B,oBAAsB;IACnC2B,yBAAyB;EAAA,GAEvB,IAAAC,QAAE,EAAE,OAAQ,CACA,CACF,CACA,CAAC;AAElB"}
1
+ {"version":3,"names":["_blockEditor","require","_components","_data","_coreData","_blocks","_i18n","recursivelyFindBlockWithId","blocks","id","block","attributes","metadata","found","innerBlocks","ResetOverridesControl","props","registry","useRegistry","patternWithOverrides","useSelect","select","undefined","getBlockParentsByBlockName","getBlocksByClientId","blockEditorStore","patternBlock","clientId","content","resetOverrides","_editedRecord$blocks","editedRecord","resolveSelect","coreStore","getEditedEntityRecord","ref","parse","newAttributes","Object","assign","fromEntries","keys","map","key","setAttributes","_react","createElement","BlockControls","group","ToolbarGroup","ToolbarButton","onClick","disabled","__experimentalIsFocusable","__"],"sources":["@wordpress/patterns/src/components/reset-overrides-control.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tstore as blockEditorStore,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { useSelect, useRegistry } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { parse } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\nfunction recursivelyFindBlockWithId( blocks, id ) {\n\tfor ( const block of blocks ) {\n\t\tif ( block.attributes.metadata?.id === id ) {\n\t\t\treturn block;\n\t\t}\n\n\t\tconst found = recursivelyFindBlockWithId( block.innerBlocks, id );\n\t\tif ( found ) {\n\t\t\treturn found;\n\t\t}\n\t}\n}\n\nexport default function ResetOverridesControl( props ) {\n\tconst registry = useRegistry();\n\tconst id = props.attributes.metadata?.id;\n\tconst patternWithOverrides = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! id ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst { getBlockParentsByBlockName, getBlocksByClientId } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst patternBlock = getBlocksByClientId(\n\t\t\t\tgetBlockParentsByBlockName( props.clientId, 'core/block' )\n\t\t\t)[ 0 ];\n\n\t\t\tif ( ! patternBlock?.attributes.content?.[ id ] ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\treturn patternBlock;\n\t\t},\n\t\t[ props.clientId, id ]\n\t);\n\n\tconst resetOverrides = async () => {\n\t\tconst editedRecord = await registry\n\t\t\t.resolveSelect( coreStore )\n\t\t\t.getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_block',\n\t\t\t\tpatternWithOverrides.attributes.ref\n\t\t\t);\n\t\tconst blocks = editedRecord.blocks ?? parse( editedRecord.content );\n\t\tconst block = recursivelyFindBlockWithId( blocks, id );\n\n\t\tconst newAttributes = Object.assign(\n\t\t\t// Reset every existing attribute to undefined.\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.keys( props.attributes ).map( ( key ) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tundefined,\n\t\t\t\t] )\n\t\t\t),\n\t\t\t// Then assign the original attributes.\n\t\t\tblock.attributes\n\t\t);\n\n\t\tprops.setAttributes( newAttributes );\n\t};\n\n\treturn (\n\t\t<BlockControls group=\"other\">\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tonClick={ resetOverrides }\n\t\t\t\t\tdisabled={ ! patternWithOverrides }\n\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t</ToolbarButton>\n\t\t\t</ToolbarGroup>\n\t\t</BlockControls>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,YAAA,GAAAC,OAAA;AAIA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AAXA;AACA;AACA;;AAWA,SAASM,0BAA0BA,CAAEC,MAAM,EAAEC,EAAE,EAAG;EACjD,KAAM,MAAMC,KAAK,IAAIF,MAAM,EAAG;IAC7B,IAAKE,KAAK,CAACC,UAAU,CAACC,QAAQ,EAAEH,EAAE,KAAKA,EAAE,EAAG;MAC3C,OAAOC,KAAK;IACb;IAEA,MAAMG,KAAK,GAAGN,0BAA0B,CAAEG,KAAK,CAACI,WAAW,EAAEL,EAAG,CAAC;IACjE,IAAKI,KAAK,EAAG;MACZ,OAAOA,KAAK;IACb;EACD;AACD;AAEe,SAASE,qBAAqBA,CAAEC,KAAK,EAAG;EACtD,MAAMC,QAAQ,GAAG,IAAAC,iBAAW,EAAC,CAAC;EAC9B,MAAMT,EAAE,GAAGO,KAAK,CAACL,UAAU,CAACC,QAAQ,EAAEH,EAAE;EACxC,MAAMU,oBAAoB,GAAG,IAAAC,eAAS,EACnCC,MAAM,IAAM;IACb,IAAK,CAAEZ,EAAE,EAAG;MACX,OAAOa,SAAS;IACjB;IAEA,MAAM;MAAEC,0BAA0B;MAAEC;IAAoB,CAAC,GACxDH,MAAM,CAAEI,kBAAiB,CAAC;IAC3B,MAAMC,YAAY,GAAGF,mBAAmB,CACvCD,0BAA0B,CAAEP,KAAK,CAACW,QAAQ,EAAE,YAAa,CAC1D,CAAC,CAAE,CAAC,CAAE;IAEN,IAAK,CAAED,YAAY,EAAEf,UAAU,CAACiB,OAAO,GAAInB,EAAE,CAAE,EAAG;MACjD,OAAOa,SAAS;IACjB;IAEA,OAAOI,YAAY;EACpB,CAAC,EACD,CAAEV,KAAK,CAACW,QAAQ,EAAElB,EAAE,CACrB,CAAC;EAED,MAAMoB,cAAc,GAAG,MAAAA,CAAA,KAAY;IAAA,IAAAC,oBAAA;IAClC,MAAMC,YAAY,GAAG,MAAMd,QAAQ,CACjCe,aAAa,CAAEC,eAAU,CAAC,CAC1BC,qBAAqB,CACrB,UAAU,EACV,UAAU,EACVf,oBAAoB,CAACR,UAAU,CAACwB,GACjC,CAAC;IACF,MAAM3B,MAAM,IAAAsB,oBAAA,GAAGC,YAAY,CAACvB,MAAM,cAAAsB,oBAAA,cAAAA,oBAAA,GAAI,IAAAM,aAAK,EAAEL,YAAY,CAACH,OAAQ,CAAC;IACnE,MAAMlB,KAAK,GAAGH,0BAA0B,CAAEC,MAAM,EAAEC,EAAG,CAAC;IAEtD,MAAM4B,aAAa,GAAGC,MAAM,CAACC,MAAM;IAClC;IACAD,MAAM,CAACE,WAAW,CACjBF,MAAM,CAACG,IAAI,CAAEzB,KAAK,CAACL,UAAW,CAAC,CAAC+B,GAAG,CAAIC,GAAG,IAAM,CAC/CA,GAAG,EACHrB,SAAS,CACR,CACH,CAAC;IACD;IACAZ,KAAK,CAACC,UACP,CAAC;IAEDK,KAAK,CAAC4B,aAAa,CAAEP,aAAc,CAAC;EACrC,CAAC;EAED,OACC,IAAAQ,MAAA,CAAAC,aAAA,EAAC9C,YAAA,CAAA+C,aAAa;IAACC,KAAK,EAAC;EAAO,GAC3B,IAAAH,MAAA,CAAAC,aAAA,EAAC5C,WAAA,CAAA+C,YAAY,QACZ,IAAAJ,MAAA,CAAAC,aAAA,EAAC5C,WAAA,CAAAgD,aAAa;IACbC,OAAO,EAAGtB,cAAgB;IAC1BuB,QAAQ,EAAG,CAAEjC,oBAAsB;IACnCkC,yBAAyB;EAAA,GAEvB,IAAAC,QAAE,EAAE,OAAQ,CACA,CACF,CACA,CAAC;AAElB"}
@@ -4,11 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.PATTERN_USER_CATEGORY = exports.PATTERN_TYPES = exports.PATTERN_SYNC_TYPES = exports.PATTERN_DEFAULT_CATEGORY = exports.PARTIAL_SYNCING_SUPPORTED_BLOCKS = exports.EXCLUDED_PATTERN_SOURCES = void 0;
7
- var _i18n = require("@wordpress/i18n");
8
- /**
9
- * WordPress dependencies
10
- */
11
-
12
7
  const PATTERN_TYPES = exports.PATTERN_TYPES = {
13
8
  theme: 'pattern',
14
9
  user: 'wp_block'
@@ -23,23 +18,9 @@ const PATTERN_SYNC_TYPES = exports.PATTERN_SYNC_TYPES = {
23
18
 
24
19
  // TODO: This should not be hardcoded. Maybe there should be a config and/or an UI.
25
20
  const PARTIAL_SYNCING_SUPPORTED_BLOCKS = exports.PARTIAL_SYNCING_SUPPORTED_BLOCKS = {
26
- 'core/paragraph': {
27
- content: (0, _i18n.__)('Content')
28
- },
29
- 'core/heading': {
30
- content: (0, _i18n.__)('Content')
31
- },
32
- 'core/button': {
33
- text: (0, _i18n.__)('Text'),
34
- url: (0, _i18n.__)('URL'),
35
- linkTarget: (0, _i18n.__)('Link Target'),
36
- rel: (0, _i18n.__)('Link Relationship')
37
- },
38
- 'core/image': {
39
- id: (0, _i18n.__)('Image ID'),
40
- url: (0, _i18n.__)('URL'),
41
- title: (0, _i18n.__)('Title'),
42
- alt: (0, _i18n.__)('Alt Text')
43
- }
21
+ 'core/paragraph': ['content'],
22
+ 'core/heading': ['content'],
23
+ 'core/button': ['text', 'url', 'linkTarget', 'rel'],
24
+ 'core/image': ['id', 'url', 'title', 'alt']
44
25
  };
45
26
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_i18n","require","PATTERN_TYPES","exports","theme","user","PATTERN_DEFAULT_CATEGORY","PATTERN_USER_CATEGORY","EXCLUDED_PATTERN_SOURCES","PATTERN_SYNC_TYPES","full","unsynced","PARTIAL_SYNCING_SUPPORTED_BLOCKS","content","__","text","url","linkTarget","rel","id","title","alt"],"sources":["@wordpress/patterns/src/constants.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\nexport const PATTERN_TYPES = {\n\ttheme: 'pattern',\n\tuser: 'wp_block',\n};\n\nexport const PATTERN_DEFAULT_CATEGORY = 'all-patterns';\nexport const PATTERN_USER_CATEGORY = 'my-patterns';\nexport const EXCLUDED_PATTERN_SOURCES = [\n\t'core',\n\t'pattern-directory/core',\n\t'pattern-directory/featured',\n];\nexport const PATTERN_SYNC_TYPES = {\n\tfull: 'fully',\n\tunsynced: 'unsynced',\n};\n\n// TODO: This should not be hardcoded. Maybe there should be a config and/or an UI.\nexport const PARTIAL_SYNCING_SUPPORTED_BLOCKS = {\n\t'core/paragraph': { content: __( 'Content' ) },\n\t'core/heading': { content: __( 'Content' ) },\n\t'core/button': {\n\t\ttext: __( 'Text' ),\n\t\turl: __( 'URL' ),\n\t\tlinkTarget: __( 'Link Target' ),\n\t\trel: __( 'Link Relationship' ),\n\t},\n\t'core/image': {\n\t\tid: __( 'Image ID' ),\n\t\turl: __( 'URL' ),\n\t\ttitle: __( 'Title' ),\n\t\talt: __( 'Alt Text' ),\n\t},\n};\n"],"mappings":";;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAGO,MAAMC,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG;EAC5BE,KAAK,EAAE,SAAS;EAChBC,IAAI,EAAE;AACP,CAAC;AAEM,MAAMC,wBAAwB,GAAAH,OAAA,CAAAG,wBAAA,GAAG,cAAc;AAC/C,MAAMC,qBAAqB,GAAAJ,OAAA,CAAAI,qBAAA,GAAG,aAAa;AAC3C,MAAMC,wBAAwB,GAAAL,OAAA,CAAAK,wBAAA,GAAG,CACvC,MAAM,EACN,wBAAwB,EACxB,4BAA4B,CAC5B;AACM,MAAMC,kBAAkB,GAAAN,OAAA,CAAAM,kBAAA,GAAG;EACjCC,IAAI,EAAE,OAAO;EACbC,QAAQ,EAAE;AACX,CAAC;;AAED;AACO,MAAMC,gCAAgC,GAAAT,OAAA,CAAAS,gCAAA,GAAG;EAC/C,gBAAgB,EAAE;IAAEC,OAAO,EAAE,IAAAC,QAAE,EAAE,SAAU;EAAE,CAAC;EAC9C,cAAc,EAAE;IAAED,OAAO,EAAE,IAAAC,QAAE,EAAE,SAAU;EAAE,CAAC;EAC5C,aAAa,EAAE;IACdC,IAAI,EAAE,IAAAD,QAAE,EAAE,MAAO,CAAC;IAClBE,GAAG,EAAE,IAAAF,QAAE,EAAE,KAAM,CAAC;IAChBG,UAAU,EAAE,IAAAH,QAAE,EAAE,aAAc,CAAC;IAC/BI,GAAG,EAAE,IAAAJ,QAAE,EAAE,mBAAoB;EAC9B,CAAC;EACD,YAAY,EAAE;IACbK,EAAE,EAAE,IAAAL,QAAE,EAAE,UAAW,CAAC;IACpBE,GAAG,EAAE,IAAAF,QAAE,EAAE,KAAM,CAAC;IAChBM,KAAK,EAAE,IAAAN,QAAE,EAAE,OAAQ,CAAC;IACpBO,GAAG,EAAE,IAAAP,QAAE,EAAE,UAAW;EACrB;AACD,CAAC"}
1
+ {"version":3,"names":["PATTERN_TYPES","exports","theme","user","PATTERN_DEFAULT_CATEGORY","PATTERN_USER_CATEGORY","EXCLUDED_PATTERN_SOURCES","PATTERN_SYNC_TYPES","full","unsynced","PARTIAL_SYNCING_SUPPORTED_BLOCKS"],"sources":["@wordpress/patterns/src/constants.js"],"sourcesContent":["export const PATTERN_TYPES = {\n\ttheme: 'pattern',\n\tuser: 'wp_block',\n};\n\nexport const PATTERN_DEFAULT_CATEGORY = 'all-patterns';\nexport const PATTERN_USER_CATEGORY = 'my-patterns';\nexport const EXCLUDED_PATTERN_SOURCES = [\n\t'core',\n\t'pattern-directory/core',\n\t'pattern-directory/featured',\n];\nexport const PATTERN_SYNC_TYPES = {\n\tfull: 'fully',\n\tunsynced: 'unsynced',\n};\n\n// TODO: This should not be hardcoded. Maybe there should be a config and/or an UI.\nexport const PARTIAL_SYNCING_SUPPORTED_BLOCKS = {\n\t'core/paragraph': [ 'content' ],\n\t'core/heading': [ 'content' ],\n\t'core/button': [ 'text', 'url', 'linkTarget', 'rel' ],\n\t'core/image': [ 'id', 'url', 'title', 'alt' ],\n};\n"],"mappings":";;;;;;AAAO,MAAMA,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG;EAC5BE,KAAK,EAAE,SAAS;EAChBC,IAAI,EAAE;AACP,CAAC;AAEM,MAAMC,wBAAwB,GAAAH,OAAA,CAAAG,wBAAA,GAAG,cAAc;AAC/C,MAAMC,qBAAqB,GAAAJ,OAAA,CAAAI,qBAAA,GAAG,aAAa;AAC3C,MAAMC,wBAAwB,GAAAL,OAAA,CAAAK,wBAAA,GAAG,CACvC,MAAM,EACN,wBAAwB,EACxB,4BAA4B,CAC5B;AACM,MAAMC,kBAAkB,GAAAN,OAAA,CAAAM,kBAAA,GAAG;EACjCC,IAAI,EAAE,OAAO;EACbC,QAAQ,EAAE;AACX,CAAC;;AAED;AACO,MAAMC,gCAAgC,GAAAT,OAAA,CAAAS,gCAAA,GAAG;EAC/C,gBAAgB,EAAE,CAAE,SAAS,CAAE;EAC/B,cAAc,EAAE,CAAE,SAAS,CAAE;EAC7B,aAAa,EAAE,CAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,CAAE;EACrD,YAAY,EAAE,CAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK;AAC5C,CAAC"}
@@ -21,7 +21,7 @@ function PartialSyncingControls({
21
21
  setAttributes
22
22
  }) {
23
23
  const syncedAttributes = PARTIAL_SYNCING_SUPPORTED_BLOCKS[name];
24
- const attributeSources = Object.keys(syncedAttributes).map(attributeName => attributes.metadata?.bindings?.[attributeName]?.source);
24
+ const attributeSources = syncedAttributes.map(attributeName => attributes.metadata?.bindings?.[attributeName]?.source);
25
25
  const isConnectedToOtherSources = attributeSources.every(source => source && source !== 'core/pattern-overrides');
26
26
 
27
27
  // Render nothing if all supported attributes are connected to other sources.
@@ -33,7 +33,7 @@ function PartialSyncingControls({
33
33
  ...attributes?.metadata?.bindings
34
34
  };
35
35
  if (!isChecked) {
36
- for (const attributeName of Object.keys(syncedAttributes)) {
36
+ for (const attributeName of syncedAttributes) {
37
37
  if (updatedBindings[attributeName]?.source === 'core/pattern-overrides') {
38
38
  delete updatedBindings[attributeName];
39
39
  }
@@ -49,7 +49,7 @@ function PartialSyncingControls({
49
49
  });
50
50
  return;
51
51
  }
52
- for (const attributeName of Object.keys(syncedAttributes)) {
52
+ for (const attributeName of syncedAttributes) {
53
53
  if (!updatedBindings[attributeName]) {
54
54
  updatedBindings[attributeName] = {
55
55
  source: 'core/pattern-overrides'
@@ -1 +1 @@
1
- {"version":3,"names":["nanoid","InspectorControls","BaseControl","CheckboxControl","__","PARTIAL_SYNCING_SUPPORTED_BLOCKS","PartialSyncingControls","name","attributes","setAttributes","syncedAttributes","attributeSources","Object","keys","map","attributeName","metadata","bindings","source","isConnectedToOtherSources","every","updateBindings","isChecked","updatedBindings","length","undefined","id","createElement","group","__nextHasNoMarginBottom","VisualLabel","label","checked","some","onChange"],"sources":["@wordpress/patterns/src/components/partial-syncing-controls.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { nanoid } from 'nanoid';\n\n/**\n * WordPress dependencies\n */\nimport { InspectorControls } from '@wordpress/block-editor';\nimport { BaseControl, CheckboxControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { PARTIAL_SYNCING_SUPPORTED_BLOCKS } from '../constants';\n\nfunction PartialSyncingControls( { name, attributes, setAttributes } ) {\n\tconst syncedAttributes = PARTIAL_SYNCING_SUPPORTED_BLOCKS[ name ];\n\tconst attributeSources = Object.keys( syncedAttributes ).map(\n\t\t( attributeName ) =>\n\t\t\tattributes.metadata?.bindings?.[ attributeName ]?.source\n\t);\n\tconst isConnectedToOtherSources = attributeSources.every(\n\t\t( source ) => source && source !== 'core/pattern-overrides'\n\t);\n\n\t// Render nothing if all supported attributes are connected to other sources.\n\tif ( isConnectedToOtherSources ) {\n\t\treturn null;\n\t}\n\n\tfunction updateBindings( isChecked ) {\n\t\tlet updatedBindings = {\n\t\t\t...attributes?.metadata?.bindings,\n\t\t};\n\n\t\tif ( ! isChecked ) {\n\t\t\tfor ( const attributeName of Object.keys( syncedAttributes ) ) {\n\t\t\t\tif (\n\t\t\t\t\tupdatedBindings[ attributeName ]?.source ===\n\t\t\t\t\t'core/pattern-overrides'\n\t\t\t\t) {\n\t\t\t\t\tdelete updatedBindings[ attributeName ];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( ! Object.keys( updatedBindings ).length ) {\n\t\t\t\tupdatedBindings = undefined;\n\t\t\t}\n\t\t\tsetAttributes( {\n\t\t\t\tmetadata: {\n\t\t\t\t\t...attributes.metadata,\n\t\t\t\t\tbindings: updatedBindings,\n\t\t\t\t},\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( const attributeName of Object.keys( syncedAttributes ) ) {\n\t\t\tif ( ! updatedBindings[ attributeName ] ) {\n\t\t\t\tupdatedBindings[ attributeName ] = {\n\t\t\t\t\tsource: 'core/pattern-overrides',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( typeof attributes.metadata?.id === 'string' ) {\n\t\t\tsetAttributes( {\n\t\t\t\tmetadata: {\n\t\t\t\t\t...attributes.metadata,\n\t\t\t\t\tbindings: updatedBindings,\n\t\t\t\t},\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\tconst id = nanoid( 6 );\n\t\tsetAttributes( {\n\t\t\tmetadata: {\n\t\t\t\t...attributes.metadata,\n\t\t\t\tid,\n\t\t\t\tbindings: updatedBindings,\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn (\n\t\t<InspectorControls group=\"advanced\">\n\t\t\t<BaseControl __nextHasNoMarginBottom>\n\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t{ __( 'Pattern overrides' ) }\n\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t<CheckboxControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Allow instance overrides' ) }\n\t\t\t\t\tchecked={ attributeSources.some(\n\t\t\t\t\t\t( source ) => source === 'core/pattern-overrides'\n\t\t\t\t\t) }\n\t\t\t\t\tonChange={ ( isChecked ) => {\n\t\t\t\t\t\tupdateBindings( isChecked );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BaseControl>\n\t\t</InspectorControls>\n\t);\n}\n\nexport default PartialSyncingControls;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,MAAM,QAAQ,QAAQ;;AAE/B;AACA;AACA;AACA,SAASC,iBAAiB,QAAQ,yBAAyB;AAC3D,SAASC,WAAW,EAAEC,eAAe,QAAQ,uBAAuB;AACpE,SAASC,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,SAASC,gCAAgC,QAAQ,cAAc;AAE/D,SAASC,sBAAsBA,CAAE;EAAEC,IAAI;EAAEC,UAAU;EAAEC;AAAc,CAAC,EAAG;EACtE,MAAMC,gBAAgB,GAAGL,gCAAgC,CAAEE,IAAI,CAAE;EACjE,MAAMI,gBAAgB,GAAGC,MAAM,CAACC,IAAI,CAAEH,gBAAiB,CAAC,CAACI,GAAG,CACzDC,aAAa,IACdP,UAAU,CAACQ,QAAQ,EAAEC,QAAQ,GAAIF,aAAa,CAAE,EAAEG,MACpD,CAAC;EACD,MAAMC,yBAAyB,GAAGR,gBAAgB,CAACS,KAAK,CACrDF,MAAM,IAAMA,MAAM,IAAIA,MAAM,KAAK,wBACpC,CAAC;;EAED;EACA,IAAKC,yBAAyB,EAAG;IAChC,OAAO,IAAI;EACZ;EAEA,SAASE,cAAcA,CAAEC,SAAS,EAAG;IACpC,IAAIC,eAAe,GAAG;MACrB,GAAGf,UAAU,EAAEQ,QAAQ,EAAEC;IAC1B,CAAC;IAED,IAAK,CAAEK,SAAS,EAAG;MAClB,KAAM,MAAMP,aAAa,IAAIH,MAAM,CAACC,IAAI,CAAEH,gBAAiB,CAAC,EAAG;QAC9D,IACCa,eAAe,CAAER,aAAa,CAAE,EAAEG,MAAM,KACxC,wBAAwB,EACvB;UACD,OAAOK,eAAe,CAAER,aAAa,CAAE;QACxC;MACD;MACA,IAAK,CAAEH,MAAM,CAACC,IAAI,CAAEU,eAAgB,CAAC,CAACC,MAAM,EAAG;QAC9CD,eAAe,GAAGE,SAAS;MAC5B;MACAhB,aAAa,CAAE;QACdO,QAAQ,EAAE;UACT,GAAGR,UAAU,CAACQ,QAAQ;UACtBC,QAAQ,EAAEM;QACX;MACD,CAAE,CAAC;MACH;IACD;IAEA,KAAM,MAAMR,aAAa,IAAIH,MAAM,CAACC,IAAI,CAAEH,gBAAiB,CAAC,EAAG;MAC9D,IAAK,CAAEa,eAAe,CAAER,aAAa,CAAE,EAAG;QACzCQ,eAAe,CAAER,aAAa,CAAE,GAAG;UAClCG,MAAM,EAAE;QACT,CAAC;MACF;IACD;IAEA,IAAK,OAAOV,UAAU,CAACQ,QAAQ,EAAEU,EAAE,KAAK,QAAQ,EAAG;MAClDjB,aAAa,CAAE;QACdO,QAAQ,EAAE;UACT,GAAGR,UAAU,CAACQ,QAAQ;UACtBC,QAAQ,EAAEM;QACX;MACD,CAAE,CAAC;MACH;IACD;IAEA,MAAMG,EAAE,GAAG1B,MAAM,CAAE,CAAE,CAAC;IACtBS,aAAa,CAAE;MACdO,QAAQ,EAAE;QACT,GAAGR,UAAU,CAACQ,QAAQ;QACtBU,EAAE;QACFT,QAAQ,EAAEM;MACX;IACD,CAAE,CAAC;EACJ;EAEA,OACCI,aAAA,CAAC1B,iBAAiB;IAAC2B,KAAK,EAAC;EAAU,GAClCD,aAAA,CAACzB,WAAW;IAAC2B,uBAAuB;EAAA,GACnCF,aAAA,CAACzB,WAAW,CAAC4B,WAAW,QACrB1B,EAAE,CAAE,mBAAoB,CACF,CAAC,EAC1BuB,aAAA,CAACxB,eAAe;IACf0B,uBAAuB;IACvBE,KAAK,EAAG3B,EAAE,CAAE,0BAA2B,CAAG;IAC1C4B,OAAO,EAAGrB,gBAAgB,CAACsB,IAAI,CAC5Bf,MAAM,IAAMA,MAAM,KAAK,wBAC1B,CAAG;IACHgB,QAAQ,EAAKZ,SAAS,IAAM;MAC3BD,cAAc,CAAEC,SAAU,CAAC;IAC5B;EAAG,CACH,CACW,CACK,CAAC;AAEtB;AAEA,eAAehB,sBAAsB"}
1
+ {"version":3,"names":["nanoid","InspectorControls","BaseControl","CheckboxControl","__","PARTIAL_SYNCING_SUPPORTED_BLOCKS","PartialSyncingControls","name","attributes","setAttributes","syncedAttributes","attributeSources","map","attributeName","metadata","bindings","source","isConnectedToOtherSources","every","updateBindings","isChecked","updatedBindings","Object","keys","length","undefined","id","createElement","group","__nextHasNoMarginBottom","VisualLabel","label","checked","some","onChange"],"sources":["@wordpress/patterns/src/components/partial-syncing-controls.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { nanoid } from 'nanoid';\n\n/**\n * WordPress dependencies\n */\nimport { InspectorControls } from '@wordpress/block-editor';\nimport { BaseControl, CheckboxControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { PARTIAL_SYNCING_SUPPORTED_BLOCKS } from '../constants';\n\nfunction PartialSyncingControls( { name, attributes, setAttributes } ) {\n\tconst syncedAttributes = PARTIAL_SYNCING_SUPPORTED_BLOCKS[ name ];\n\tconst attributeSources = syncedAttributes.map(\n\t\t( attributeName ) =>\n\t\t\tattributes.metadata?.bindings?.[ attributeName ]?.source\n\t);\n\tconst isConnectedToOtherSources = attributeSources.every(\n\t\t( source ) => source && source !== 'core/pattern-overrides'\n\t);\n\n\t// Render nothing if all supported attributes are connected to other sources.\n\tif ( isConnectedToOtherSources ) {\n\t\treturn null;\n\t}\n\n\tfunction updateBindings( isChecked ) {\n\t\tlet updatedBindings = {\n\t\t\t...attributes?.metadata?.bindings,\n\t\t};\n\n\t\tif ( ! isChecked ) {\n\t\t\tfor ( const attributeName of syncedAttributes ) {\n\t\t\t\tif (\n\t\t\t\t\tupdatedBindings[ attributeName ]?.source ===\n\t\t\t\t\t'core/pattern-overrides'\n\t\t\t\t) {\n\t\t\t\t\tdelete updatedBindings[ attributeName ];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( ! Object.keys( updatedBindings ).length ) {\n\t\t\t\tupdatedBindings = undefined;\n\t\t\t}\n\t\t\tsetAttributes( {\n\t\t\t\tmetadata: {\n\t\t\t\t\t...attributes.metadata,\n\t\t\t\t\tbindings: updatedBindings,\n\t\t\t\t},\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( const attributeName of syncedAttributes ) {\n\t\t\tif ( ! updatedBindings[ attributeName ] ) {\n\t\t\t\tupdatedBindings[ attributeName ] = {\n\t\t\t\t\tsource: 'core/pattern-overrides',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( typeof attributes.metadata?.id === 'string' ) {\n\t\t\tsetAttributes( {\n\t\t\t\tmetadata: {\n\t\t\t\t\t...attributes.metadata,\n\t\t\t\t\tbindings: updatedBindings,\n\t\t\t\t},\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\tconst id = nanoid( 6 );\n\t\tsetAttributes( {\n\t\t\tmetadata: {\n\t\t\t\t...attributes.metadata,\n\t\t\t\tid,\n\t\t\t\tbindings: updatedBindings,\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn (\n\t\t<InspectorControls group=\"advanced\">\n\t\t\t<BaseControl __nextHasNoMarginBottom>\n\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t{ __( 'Pattern overrides' ) }\n\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t<CheckboxControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Allow instance overrides' ) }\n\t\t\t\t\tchecked={ attributeSources.some(\n\t\t\t\t\t\t( source ) => source === 'core/pattern-overrides'\n\t\t\t\t\t) }\n\t\t\t\t\tonChange={ ( isChecked ) => {\n\t\t\t\t\t\tupdateBindings( isChecked );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BaseControl>\n\t\t</InspectorControls>\n\t);\n}\n\nexport default PartialSyncingControls;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,MAAM,QAAQ,QAAQ;;AAE/B;AACA;AACA;AACA,SAASC,iBAAiB,QAAQ,yBAAyB;AAC3D,SAASC,WAAW,EAAEC,eAAe,QAAQ,uBAAuB;AACpE,SAASC,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,SAASC,gCAAgC,QAAQ,cAAc;AAE/D,SAASC,sBAAsBA,CAAE;EAAEC,IAAI;EAAEC,UAAU;EAAEC;AAAc,CAAC,EAAG;EACtE,MAAMC,gBAAgB,GAAGL,gCAAgC,CAAEE,IAAI,CAAE;EACjE,MAAMI,gBAAgB,GAAGD,gBAAgB,CAACE,GAAG,CAC1CC,aAAa,IACdL,UAAU,CAACM,QAAQ,EAAEC,QAAQ,GAAIF,aAAa,CAAE,EAAEG,MACpD,CAAC;EACD,MAAMC,yBAAyB,GAAGN,gBAAgB,CAACO,KAAK,CACrDF,MAAM,IAAMA,MAAM,IAAIA,MAAM,KAAK,wBACpC,CAAC;;EAED;EACA,IAAKC,yBAAyB,EAAG;IAChC,OAAO,IAAI;EACZ;EAEA,SAASE,cAAcA,CAAEC,SAAS,EAAG;IACpC,IAAIC,eAAe,GAAG;MACrB,GAAGb,UAAU,EAAEM,QAAQ,EAAEC;IAC1B,CAAC;IAED,IAAK,CAAEK,SAAS,EAAG;MAClB,KAAM,MAAMP,aAAa,IAAIH,gBAAgB,EAAG;QAC/C,IACCW,eAAe,CAAER,aAAa,CAAE,EAAEG,MAAM,KACxC,wBAAwB,EACvB;UACD,OAAOK,eAAe,CAAER,aAAa,CAAE;QACxC;MACD;MACA,IAAK,CAAES,MAAM,CAACC,IAAI,CAAEF,eAAgB,CAAC,CAACG,MAAM,EAAG;QAC9CH,eAAe,GAAGI,SAAS;MAC5B;MACAhB,aAAa,CAAE;QACdK,QAAQ,EAAE;UACT,GAAGN,UAAU,CAACM,QAAQ;UACtBC,QAAQ,EAAEM;QACX;MACD,CAAE,CAAC;MACH;IACD;IAEA,KAAM,MAAMR,aAAa,IAAIH,gBAAgB,EAAG;MAC/C,IAAK,CAAEW,eAAe,CAAER,aAAa,CAAE,EAAG;QACzCQ,eAAe,CAAER,aAAa,CAAE,GAAG;UAClCG,MAAM,EAAE;QACT,CAAC;MACF;IACD;IAEA,IAAK,OAAOR,UAAU,CAACM,QAAQ,EAAEY,EAAE,KAAK,QAAQ,EAAG;MAClDjB,aAAa,CAAE;QACdK,QAAQ,EAAE;UACT,GAAGN,UAAU,CAACM,QAAQ;UACtBC,QAAQ,EAAEM;QACX;MACD,CAAE,CAAC;MACH;IACD;IAEA,MAAMK,EAAE,GAAG1B,MAAM,CAAE,CAAE,CAAC;IACtBS,aAAa,CAAE;MACdK,QAAQ,EAAE;QACT,GAAGN,UAAU,CAACM,QAAQ;QACtBY,EAAE;QACFX,QAAQ,EAAEM;MACX;IACD,CAAE,CAAC;EACJ;EAEA,OACCM,aAAA,CAAC1B,iBAAiB;IAAC2B,KAAK,EAAC;EAAU,GAClCD,aAAA,CAACzB,WAAW;IAAC2B,uBAAuB;EAAA,GACnCF,aAAA,CAACzB,WAAW,CAAC4B,WAAW,QACrB1B,EAAE,CAAE,mBAAoB,CACF,CAAC,EAC1BuB,aAAA,CAACxB,eAAe;IACf0B,uBAAuB;IACvBE,KAAK,EAAG3B,EAAE,CAAE,0BAA2B,CAAG;IAC1C4B,OAAO,EAAGrB,gBAAgB,CAACsB,IAAI,CAC5BjB,MAAM,IAAMA,MAAM,KAAK,wBAC1B,CAAG;IACHkB,QAAQ,EAAKd,SAAS,IAAM;MAC3BD,cAAc,CAAEC,SAAU,CAAC;IAC5B;EAAG,CACH,CACW,CACK,CAAC;AAEtB;AAEA,eAAed,sBAAsB"}
@@ -41,7 +41,12 @@ export default function ResetOverridesControl(props) {
41
41
  const editedRecord = await registry.resolveSelect(coreStore).getEditedEntityRecord('postType', 'wp_block', patternWithOverrides.attributes.ref);
42
42
  const blocks = (_editedRecord$blocks = editedRecord.blocks) !== null && _editedRecord$blocks !== void 0 ? _editedRecord$blocks : parse(editedRecord.content);
43
43
  const block = recursivelyFindBlockWithId(blocks, id);
44
- props.setAttributes(block.attributes);
44
+ const newAttributes = Object.assign(
45
+ // Reset every existing attribute to undefined.
46
+ Object.fromEntries(Object.keys(props.attributes).map(key => [key, undefined])),
47
+ // Then assign the original attributes.
48
+ block.attributes);
49
+ props.setAttributes(newAttributes);
45
50
  };
46
51
  return createElement(BlockControls, {
47
52
  group: "other"
@@ -1 +1 @@
1
- {"version":3,"names":["store","blockEditorStore","BlockControls","ToolbarButton","ToolbarGroup","useSelect","useRegistry","coreStore","parse","__","recursivelyFindBlockWithId","blocks","id","block","attributes","metadata","found","innerBlocks","ResetOverridesControl","props","registry","patternWithOverrides","select","undefined","getBlockParentsByBlockName","getBlocksByClientId","patternBlock","clientId","content","resetOverrides","_editedRecord$blocks","editedRecord","resolveSelect","getEditedEntityRecord","ref","setAttributes","createElement","group","onClick","disabled","__experimentalIsFocusable"],"sources":["@wordpress/patterns/src/components/reset-overrides-control.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tstore as blockEditorStore,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { useSelect, useRegistry } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { parse } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\nfunction recursivelyFindBlockWithId( blocks, id ) {\n\tfor ( const block of blocks ) {\n\t\tif ( block.attributes.metadata?.id === id ) {\n\t\t\treturn block;\n\t\t}\n\n\t\tconst found = recursivelyFindBlockWithId( block.innerBlocks, id );\n\t\tif ( found ) {\n\t\t\treturn found;\n\t\t}\n\t}\n}\n\nexport default function ResetOverridesControl( props ) {\n\tconst registry = useRegistry();\n\tconst id = props.attributes.metadata?.id;\n\tconst patternWithOverrides = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! id ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst { getBlockParentsByBlockName, getBlocksByClientId } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst patternBlock = getBlocksByClientId(\n\t\t\t\tgetBlockParentsByBlockName( props.clientId, 'core/block' )\n\t\t\t)[ 0 ];\n\n\t\t\tif ( ! patternBlock?.attributes.content?.[ id ] ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\treturn patternBlock;\n\t\t},\n\t\t[ props.clientId, id ]\n\t);\n\n\tconst resetOverrides = async () => {\n\t\tconst editedRecord = await registry\n\t\t\t.resolveSelect( coreStore )\n\t\t\t.getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_block',\n\t\t\t\tpatternWithOverrides.attributes.ref\n\t\t\t);\n\t\tconst blocks = editedRecord.blocks ?? parse( editedRecord.content );\n\t\tconst block = recursivelyFindBlockWithId( blocks, id );\n\n\t\tprops.setAttributes( block.attributes );\n\t};\n\n\treturn (\n\t\t<BlockControls group=\"other\">\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tonClick={ resetOverrides }\n\t\t\t\t\tdisabled={ ! patternWithOverrides }\n\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t</ToolbarButton>\n\t\t\t</ToolbarGroup>\n\t\t</BlockControls>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,KAAK,IAAIC,gBAAgB,EACzBC,aAAa,QACP,yBAAyB;AAChC,SAASC,aAAa,EAAEC,YAAY,QAAQ,uBAAuB;AACnE,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASN,KAAK,IAAIO,SAAS,QAAQ,sBAAsB;AACzD,SAASC,KAAK,QAAQ,mBAAmB;AACzC,SAASC,EAAE,QAAQ,iBAAiB;AAEpC,SAASC,0BAA0BA,CAAEC,MAAM,EAAEC,EAAE,EAAG;EACjD,KAAM,MAAMC,KAAK,IAAIF,MAAM,EAAG;IAC7B,IAAKE,KAAK,CAACC,UAAU,CAACC,QAAQ,EAAEH,EAAE,KAAKA,EAAE,EAAG;MAC3C,OAAOC,KAAK;IACb;IAEA,MAAMG,KAAK,GAAGN,0BAA0B,CAAEG,KAAK,CAACI,WAAW,EAAEL,EAAG,CAAC;IACjE,IAAKI,KAAK,EAAG;MACZ,OAAOA,KAAK;IACb;EACD;AACD;AAEA,eAAe,SAASE,qBAAqBA,CAAEC,KAAK,EAAG;EACtD,MAAMC,QAAQ,GAAGd,WAAW,CAAC,CAAC;EAC9B,MAAMM,EAAE,GAAGO,KAAK,CAACL,UAAU,CAACC,QAAQ,EAAEH,EAAE;EACxC,MAAMS,oBAAoB,GAAGhB,SAAS,CACnCiB,MAAM,IAAM;IACb,IAAK,CAAEV,EAAE,EAAG;MACX,OAAOW,SAAS;IACjB;IAEA,MAAM;MAAEC,0BAA0B;MAAEC;IAAoB,CAAC,GACxDH,MAAM,CAAErB,gBAAiB,CAAC;IAC3B,MAAMyB,YAAY,GAAGD,mBAAmB,CACvCD,0BAA0B,CAAEL,KAAK,CAACQ,QAAQ,EAAE,YAAa,CAC1D,CAAC,CAAE,CAAC,CAAE;IAEN,IAAK,CAAED,YAAY,EAAEZ,UAAU,CAACc,OAAO,GAAIhB,EAAE,CAAE,EAAG;MACjD,OAAOW,SAAS;IACjB;IAEA,OAAOG,YAAY;EACpB,CAAC,EACD,CAAEP,KAAK,CAACQ,QAAQ,EAAEf,EAAE,CACrB,CAAC;EAED,MAAMiB,cAAc,GAAG,MAAAA,CAAA,KAAY;IAAA,IAAAC,oBAAA;IAClC,MAAMC,YAAY,GAAG,MAAMX,QAAQ,CACjCY,aAAa,CAAEzB,SAAU,CAAC,CAC1B0B,qBAAqB,CACrB,UAAU,EACV,UAAU,EACVZ,oBAAoB,CAACP,UAAU,CAACoB,GACjC,CAAC;IACF,MAAMvB,MAAM,IAAAmB,oBAAA,GAAGC,YAAY,CAACpB,MAAM,cAAAmB,oBAAA,cAAAA,oBAAA,GAAItB,KAAK,CAAEuB,YAAY,CAACH,OAAQ,CAAC;IACnE,MAAMf,KAAK,GAAGH,0BAA0B,CAAEC,MAAM,EAAEC,EAAG,CAAC;IAEtDO,KAAK,CAACgB,aAAa,CAAEtB,KAAK,CAACC,UAAW,CAAC;EACxC,CAAC;EAED,OACCsB,aAAA,CAAClC,aAAa;IAACmC,KAAK,EAAC;EAAO,GAC3BD,aAAA,CAAChC,YAAY,QACZgC,aAAA,CAACjC,aAAa;IACbmC,OAAO,EAAGT,cAAgB;IAC1BU,QAAQ,EAAG,CAAElB,oBAAsB;IACnCmB,yBAAyB;EAAA,GAEvB/B,EAAE,CAAE,OAAQ,CACA,CACF,CACA,CAAC;AAElB"}
1
+ {"version":3,"names":["store","blockEditorStore","BlockControls","ToolbarButton","ToolbarGroup","useSelect","useRegistry","coreStore","parse","__","recursivelyFindBlockWithId","blocks","id","block","attributes","metadata","found","innerBlocks","ResetOverridesControl","props","registry","patternWithOverrides","select","undefined","getBlockParentsByBlockName","getBlocksByClientId","patternBlock","clientId","content","resetOverrides","_editedRecord$blocks","editedRecord","resolveSelect","getEditedEntityRecord","ref","newAttributes","Object","assign","fromEntries","keys","map","key","setAttributes","createElement","group","onClick","disabled","__experimentalIsFocusable"],"sources":["@wordpress/patterns/src/components/reset-overrides-control.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tstore as blockEditorStore,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { useSelect, useRegistry } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { parse } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\nfunction recursivelyFindBlockWithId( blocks, id ) {\n\tfor ( const block of blocks ) {\n\t\tif ( block.attributes.metadata?.id === id ) {\n\t\t\treturn block;\n\t\t}\n\n\t\tconst found = recursivelyFindBlockWithId( block.innerBlocks, id );\n\t\tif ( found ) {\n\t\t\treturn found;\n\t\t}\n\t}\n}\n\nexport default function ResetOverridesControl( props ) {\n\tconst registry = useRegistry();\n\tconst id = props.attributes.metadata?.id;\n\tconst patternWithOverrides = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! id ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst { getBlockParentsByBlockName, getBlocksByClientId } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst patternBlock = getBlocksByClientId(\n\t\t\t\tgetBlockParentsByBlockName( props.clientId, 'core/block' )\n\t\t\t)[ 0 ];\n\n\t\t\tif ( ! patternBlock?.attributes.content?.[ id ] ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\treturn patternBlock;\n\t\t},\n\t\t[ props.clientId, id ]\n\t);\n\n\tconst resetOverrides = async () => {\n\t\tconst editedRecord = await registry\n\t\t\t.resolveSelect( coreStore )\n\t\t\t.getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_block',\n\t\t\t\tpatternWithOverrides.attributes.ref\n\t\t\t);\n\t\tconst blocks = editedRecord.blocks ?? parse( editedRecord.content );\n\t\tconst block = recursivelyFindBlockWithId( blocks, id );\n\n\t\tconst newAttributes = Object.assign(\n\t\t\t// Reset every existing attribute to undefined.\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.keys( props.attributes ).map( ( key ) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tundefined,\n\t\t\t\t] )\n\t\t\t),\n\t\t\t// Then assign the original attributes.\n\t\t\tblock.attributes\n\t\t);\n\n\t\tprops.setAttributes( newAttributes );\n\t};\n\n\treturn (\n\t\t<BlockControls group=\"other\">\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tonClick={ resetOverrides }\n\t\t\t\t\tdisabled={ ! patternWithOverrides }\n\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t</ToolbarButton>\n\t\t\t</ToolbarGroup>\n\t\t</BlockControls>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,KAAK,IAAIC,gBAAgB,EACzBC,aAAa,QACP,yBAAyB;AAChC,SAASC,aAAa,EAAEC,YAAY,QAAQ,uBAAuB;AACnE,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASN,KAAK,IAAIO,SAAS,QAAQ,sBAAsB;AACzD,SAASC,KAAK,QAAQ,mBAAmB;AACzC,SAASC,EAAE,QAAQ,iBAAiB;AAEpC,SAASC,0BAA0BA,CAAEC,MAAM,EAAEC,EAAE,EAAG;EACjD,KAAM,MAAMC,KAAK,IAAIF,MAAM,EAAG;IAC7B,IAAKE,KAAK,CAACC,UAAU,CAACC,QAAQ,EAAEH,EAAE,KAAKA,EAAE,EAAG;MAC3C,OAAOC,KAAK;IACb;IAEA,MAAMG,KAAK,GAAGN,0BAA0B,CAAEG,KAAK,CAACI,WAAW,EAAEL,EAAG,CAAC;IACjE,IAAKI,KAAK,EAAG;MACZ,OAAOA,KAAK;IACb;EACD;AACD;AAEA,eAAe,SAASE,qBAAqBA,CAAEC,KAAK,EAAG;EACtD,MAAMC,QAAQ,GAAGd,WAAW,CAAC,CAAC;EAC9B,MAAMM,EAAE,GAAGO,KAAK,CAACL,UAAU,CAACC,QAAQ,EAAEH,EAAE;EACxC,MAAMS,oBAAoB,GAAGhB,SAAS,CACnCiB,MAAM,IAAM;IACb,IAAK,CAAEV,EAAE,EAAG;MACX,OAAOW,SAAS;IACjB;IAEA,MAAM;MAAEC,0BAA0B;MAAEC;IAAoB,CAAC,GACxDH,MAAM,CAAErB,gBAAiB,CAAC;IAC3B,MAAMyB,YAAY,GAAGD,mBAAmB,CACvCD,0BAA0B,CAAEL,KAAK,CAACQ,QAAQ,EAAE,YAAa,CAC1D,CAAC,CAAE,CAAC,CAAE;IAEN,IAAK,CAAED,YAAY,EAAEZ,UAAU,CAACc,OAAO,GAAIhB,EAAE,CAAE,EAAG;MACjD,OAAOW,SAAS;IACjB;IAEA,OAAOG,YAAY;EACpB,CAAC,EACD,CAAEP,KAAK,CAACQ,QAAQ,EAAEf,EAAE,CACrB,CAAC;EAED,MAAMiB,cAAc,GAAG,MAAAA,CAAA,KAAY;IAAA,IAAAC,oBAAA;IAClC,MAAMC,YAAY,GAAG,MAAMX,QAAQ,CACjCY,aAAa,CAAEzB,SAAU,CAAC,CAC1B0B,qBAAqB,CACrB,UAAU,EACV,UAAU,EACVZ,oBAAoB,CAACP,UAAU,CAACoB,GACjC,CAAC;IACF,MAAMvB,MAAM,IAAAmB,oBAAA,GAAGC,YAAY,CAACpB,MAAM,cAAAmB,oBAAA,cAAAA,oBAAA,GAAItB,KAAK,CAAEuB,YAAY,CAACH,OAAQ,CAAC;IACnE,MAAMf,KAAK,GAAGH,0BAA0B,CAAEC,MAAM,EAAEC,EAAG,CAAC;IAEtD,MAAMuB,aAAa,GAAGC,MAAM,CAACC,MAAM;IAClC;IACAD,MAAM,CAACE,WAAW,CACjBF,MAAM,CAACG,IAAI,CAAEpB,KAAK,CAACL,UAAW,CAAC,CAAC0B,GAAG,CAAIC,GAAG,IAAM,CAC/CA,GAAG,EACHlB,SAAS,CACR,CACH,CAAC;IACD;IACAV,KAAK,CAACC,UACP,CAAC;IAEDK,KAAK,CAACuB,aAAa,CAAEP,aAAc,CAAC;EACrC,CAAC;EAED,OACCQ,aAAA,CAACzC,aAAa;IAAC0C,KAAK,EAAC;EAAO,GAC3BD,aAAA,CAACvC,YAAY,QACZuC,aAAA,CAACxC,aAAa;IACb0C,OAAO,EAAGhB,cAAgB;IAC1BiB,QAAQ,EAAG,CAAEzB,oBAAsB;IACnC0B,yBAAyB;EAAA,GAEvBtC,EAAE,CAAE,OAAQ,CACA,CACF,CACA,CAAC;AAElB"}
@@ -1,7 +1,3 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { __ } from '@wordpress/i18n';
5
1
  export const PATTERN_TYPES = {
6
2
  theme: 'pattern',
7
3
  user: 'wp_block'
@@ -16,23 +12,9 @@ export const PATTERN_SYNC_TYPES = {
16
12
 
17
13
  // TODO: This should not be hardcoded. Maybe there should be a config and/or an UI.
18
14
  export const PARTIAL_SYNCING_SUPPORTED_BLOCKS = {
19
- 'core/paragraph': {
20
- content: __('Content')
21
- },
22
- 'core/heading': {
23
- content: __('Content')
24
- },
25
- 'core/button': {
26
- text: __('Text'),
27
- url: __('URL'),
28
- linkTarget: __('Link Target'),
29
- rel: __('Link Relationship')
30
- },
31
- 'core/image': {
32
- id: __('Image ID'),
33
- url: __('URL'),
34
- title: __('Title'),
35
- alt: __('Alt Text')
36
- }
15
+ 'core/paragraph': ['content'],
16
+ 'core/heading': ['content'],
17
+ 'core/button': ['text', 'url', 'linkTarget', 'rel'],
18
+ 'core/image': ['id', 'url', 'title', 'alt']
37
19
  };
38
20
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__","PATTERN_TYPES","theme","user","PATTERN_DEFAULT_CATEGORY","PATTERN_USER_CATEGORY","EXCLUDED_PATTERN_SOURCES","PATTERN_SYNC_TYPES","full","unsynced","PARTIAL_SYNCING_SUPPORTED_BLOCKS","content","text","url","linkTarget","rel","id","title","alt"],"sources":["@wordpress/patterns/src/constants.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\nexport const PATTERN_TYPES = {\n\ttheme: 'pattern',\n\tuser: 'wp_block',\n};\n\nexport const PATTERN_DEFAULT_CATEGORY = 'all-patterns';\nexport const PATTERN_USER_CATEGORY = 'my-patterns';\nexport const EXCLUDED_PATTERN_SOURCES = [\n\t'core',\n\t'pattern-directory/core',\n\t'pattern-directory/featured',\n];\nexport const PATTERN_SYNC_TYPES = {\n\tfull: 'fully',\n\tunsynced: 'unsynced',\n};\n\n// TODO: This should not be hardcoded. Maybe there should be a config and/or an UI.\nexport const PARTIAL_SYNCING_SUPPORTED_BLOCKS = {\n\t'core/paragraph': { content: __( 'Content' ) },\n\t'core/heading': { content: __( 'Content' ) },\n\t'core/button': {\n\t\ttext: __( 'Text' ),\n\t\turl: __( 'URL' ),\n\t\tlinkTarget: __( 'Link Target' ),\n\t\trel: __( 'Link Relationship' ),\n\t},\n\t'core/image': {\n\t\tid: __( 'Image ID' ),\n\t\turl: __( 'URL' ),\n\t\ttitle: __( 'Title' ),\n\t\talt: __( 'Alt Text' ),\n\t},\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AAEpC,OAAO,MAAMC,aAAa,GAAG;EAC5BC,KAAK,EAAE,SAAS;EAChBC,IAAI,EAAE;AACP,CAAC;AAED,OAAO,MAAMC,wBAAwB,GAAG,cAAc;AACtD,OAAO,MAAMC,qBAAqB,GAAG,aAAa;AAClD,OAAO,MAAMC,wBAAwB,GAAG,CACvC,MAAM,EACN,wBAAwB,EACxB,4BAA4B,CAC5B;AACD,OAAO,MAAMC,kBAAkB,GAAG;EACjCC,IAAI,EAAE,OAAO;EACbC,QAAQ,EAAE;AACX,CAAC;;AAED;AACA,OAAO,MAAMC,gCAAgC,GAAG;EAC/C,gBAAgB,EAAE;IAAEC,OAAO,EAAEX,EAAE,CAAE,SAAU;EAAE,CAAC;EAC9C,cAAc,EAAE;IAAEW,OAAO,EAAEX,EAAE,CAAE,SAAU;EAAE,CAAC;EAC5C,aAAa,EAAE;IACdY,IAAI,EAAEZ,EAAE,CAAE,MAAO,CAAC;IAClBa,GAAG,EAAEb,EAAE,CAAE,KAAM,CAAC;IAChBc,UAAU,EAAEd,EAAE,CAAE,aAAc,CAAC;IAC/Be,GAAG,EAAEf,EAAE,CAAE,mBAAoB;EAC9B,CAAC;EACD,YAAY,EAAE;IACbgB,EAAE,EAAEhB,EAAE,CAAE,UAAW,CAAC;IACpBa,GAAG,EAAEb,EAAE,CAAE,KAAM,CAAC;IAChBiB,KAAK,EAAEjB,EAAE,CAAE,OAAQ,CAAC;IACpBkB,GAAG,EAAElB,EAAE,CAAE,UAAW;EACrB;AACD,CAAC"}
1
+ {"version":3,"names":["PATTERN_TYPES","theme","user","PATTERN_DEFAULT_CATEGORY","PATTERN_USER_CATEGORY","EXCLUDED_PATTERN_SOURCES","PATTERN_SYNC_TYPES","full","unsynced","PARTIAL_SYNCING_SUPPORTED_BLOCKS"],"sources":["@wordpress/patterns/src/constants.js"],"sourcesContent":["export const PATTERN_TYPES = {\n\ttheme: 'pattern',\n\tuser: 'wp_block',\n};\n\nexport const PATTERN_DEFAULT_CATEGORY = 'all-patterns';\nexport const PATTERN_USER_CATEGORY = 'my-patterns';\nexport const EXCLUDED_PATTERN_SOURCES = [\n\t'core',\n\t'pattern-directory/core',\n\t'pattern-directory/featured',\n];\nexport const PATTERN_SYNC_TYPES = {\n\tfull: 'fully',\n\tunsynced: 'unsynced',\n};\n\n// TODO: This should not be hardcoded. Maybe there should be a config and/or an UI.\nexport const PARTIAL_SYNCING_SUPPORTED_BLOCKS = {\n\t'core/paragraph': [ 'content' ],\n\t'core/heading': [ 'content' ],\n\t'core/button': [ 'text', 'url', 'linkTarget', 'rel' ],\n\t'core/image': [ 'id', 'url', 'title', 'alt' ],\n};\n"],"mappings":"AAAA,OAAO,MAAMA,aAAa,GAAG;EAC5BC,KAAK,EAAE,SAAS;EAChBC,IAAI,EAAE;AACP,CAAC;AAED,OAAO,MAAMC,wBAAwB,GAAG,cAAc;AACtD,OAAO,MAAMC,qBAAqB,GAAG,aAAa;AAClD,OAAO,MAAMC,wBAAwB,GAAG,CACvC,MAAM,EACN,wBAAwB,EACxB,4BAA4B,CAC5B;AACD,OAAO,MAAMC,kBAAkB,GAAG;EACjCC,IAAI,EAAE,OAAO;EACbC,QAAQ,EAAE;AACX,CAAC;;AAED;AACA,OAAO,MAAMC,gCAAgC,GAAG;EAC/C,gBAAgB,EAAE,CAAE,SAAS,CAAE;EAC/B,cAAc,EAAE,CAAE,SAAS,CAAE;EAC7B,aAAa,EAAE,CAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,CAAE;EACrD,YAAY,EAAE,CAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK;AAC5C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/patterns",
3
- "version": "1.12.3",
3
+ "version": "1.12.4",
4
4
  "description": "Management of user pattern editing.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -32,16 +32,16 @@
32
32
  "dependencies": {
33
33
  "@babel/runtime": "^7.16.0",
34
34
  "@wordpress/a11y": "^3.51.1",
35
- "@wordpress/block-editor": "^12.19.3",
36
- "@wordpress/blocks": "^12.28.3",
37
- "@wordpress/components": "^26.0.2",
35
+ "@wordpress/block-editor": "^12.19.4",
36
+ "@wordpress/blocks": "^12.28.4",
37
+ "@wordpress/components": "^26.0.3",
38
38
  "@wordpress/compose": "^6.28.1",
39
- "@wordpress/core-data": "^6.28.3",
39
+ "@wordpress/core-data": "^6.28.4",
40
40
  "@wordpress/data": "^9.21.1",
41
41
  "@wordpress/element": "^5.28.1",
42
42
  "@wordpress/html-entities": "^3.51.1",
43
43
  "@wordpress/i18n": "^4.51.1",
44
- "@wordpress/icons": "^9.42.1",
44
+ "@wordpress/icons": "^9.42.2",
45
45
  "@wordpress/notices": "^4.19.1",
46
46
  "@wordpress/private-apis": "^0.33.1",
47
47
  "@wordpress/url": "^3.52.1",
@@ -54,5 +54,5 @@
54
54
  "publishConfig": {
55
55
  "access": "public"
56
56
  },
57
- "gitHead": "b12d75c5c5256fda2a0509bb432e20ddd3354d5e"
57
+ "gitHead": "864c1c553cb284def3bd5c907998da45f5c143ea"
58
58
  }
@@ -17,7 +17,7 @@ import { PARTIAL_SYNCING_SUPPORTED_BLOCKS } from '../constants';
17
17
 
18
18
  function PartialSyncingControls( { name, attributes, setAttributes } ) {
19
19
  const syncedAttributes = PARTIAL_SYNCING_SUPPORTED_BLOCKS[ name ];
20
- const attributeSources = Object.keys( syncedAttributes ).map(
20
+ const attributeSources = syncedAttributes.map(
21
21
  ( attributeName ) =>
22
22
  attributes.metadata?.bindings?.[ attributeName ]?.source
23
23
  );
@@ -36,7 +36,7 @@ function PartialSyncingControls( { name, attributes, setAttributes } ) {
36
36
  };
37
37
 
38
38
  if ( ! isChecked ) {
39
- for ( const attributeName of Object.keys( syncedAttributes ) ) {
39
+ for ( const attributeName of syncedAttributes ) {
40
40
  if (
41
41
  updatedBindings[ attributeName ]?.source ===
42
42
  'core/pattern-overrides'
@@ -56,7 +56,7 @@ function PartialSyncingControls( { name, attributes, setAttributes } ) {
56
56
  return;
57
57
  }
58
58
 
59
- for ( const attributeName of Object.keys( syncedAttributes ) ) {
59
+ for ( const attributeName of syncedAttributes ) {
60
60
  if ( ! updatedBindings[ attributeName ] ) {
61
61
  updatedBindings[ attributeName ] = {
62
62
  source: 'core/pattern-overrides',
@@ -59,7 +59,19 @@ export default function ResetOverridesControl( props ) {
59
59
  const blocks = editedRecord.blocks ?? parse( editedRecord.content );
60
60
  const block = recursivelyFindBlockWithId( blocks, id );
61
61
 
62
- props.setAttributes( block.attributes );
62
+ const newAttributes = Object.assign(
63
+ // Reset every existing attribute to undefined.
64
+ Object.fromEntries(
65
+ Object.keys( props.attributes ).map( ( key ) => [
66
+ key,
67
+ undefined,
68
+ ] )
69
+ ),
70
+ // Then assign the original attributes.
71
+ block.attributes
72
+ );
73
+
74
+ props.setAttributes( newAttributes );
63
75
  };
64
76
 
65
77
  return (
package/src/constants.js CHANGED
@@ -1,8 +1,3 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { __ } from '@wordpress/i18n';
5
-
6
1
  export const PATTERN_TYPES = {
7
2
  theme: 'pattern',
8
3
  user: 'wp_block',
@@ -22,18 +17,8 @@ export const PATTERN_SYNC_TYPES = {
22
17
 
23
18
  // TODO: This should not be hardcoded. Maybe there should be a config and/or an UI.
24
19
  export const PARTIAL_SYNCING_SUPPORTED_BLOCKS = {
25
- 'core/paragraph': { content: __( 'Content' ) },
26
- 'core/heading': { content: __( 'Content' ) },
27
- 'core/button': {
28
- text: __( 'Text' ),
29
- url: __( 'URL' ),
30
- linkTarget: __( 'Link Target' ),
31
- rel: __( 'Link Relationship' ),
32
- },
33
- 'core/image': {
34
- id: __( 'Image ID' ),
35
- url: __( 'URL' ),
36
- title: __( 'Title' ),
37
- alt: __( 'Alt Text' ),
38
- },
20
+ 'core/paragraph': [ 'content' ],
21
+ 'core/heading': [ 'content' ],
22
+ 'core/button': [ 'text', 'url', 'linkTarget', 'rel' ],
23
+ 'core/image': [ 'id', 'url', 'title', 'alt' ],
39
24
  };