@wordpress/patterns 2.3.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/create-pattern-modal.js +1 -0
  3. package/build/components/create-pattern-modal.js.map +1 -1
  4. package/build/components/pattern-convert-button.js +4 -1
  5. package/build/components/pattern-convert-button.js.map +1 -1
  6. package/build/components/pattern-overrides-block-controls.js +1 -1
  7. package/build/components/pattern-overrides-block-controls.js.map +1 -1
  8. package/build/components/patterns-manage-button.js +9 -2
  9. package/build/components/patterns-manage-button.js.map +1 -1
  10. package/build/components/reset-overrides-control.js +1 -2
  11. package/build/components/reset-overrides-control.js.map +1 -1
  12. package/build-module/components/create-pattern-modal.js +1 -0
  13. package/build-module/components/create-pattern-modal.js.map +1 -1
  14. package/build-module/components/pattern-convert-button.js +4 -1
  15. package/build-module/components/pattern-convert-button.js.map +1 -1
  16. package/build-module/components/pattern-overrides-block-controls.js +1 -1
  17. package/build-module/components/pattern-overrides-block-controls.js.map +1 -1
  18. package/build-module/components/patterns-manage-button.js +9 -2
  19. package/build-module/components/patterns-manage-button.js.map +1 -1
  20. package/build-module/components/reset-overrides-control.js +2 -3
  21. package/build-module/components/reset-overrides-control.js.map +1 -1
  22. package/build-style/style-rtl.css +3 -0
  23. package/build-style/style.css +3 -0
  24. package/package.json +16 -16
  25. package/src/components/create-pattern-modal.js +1 -0
  26. package/src/components/pattern-convert-button.js +4 -1
  27. package/src/components/pattern-overrides-block-controls.js +1 -1
  28. package/src/components/patterns-manage-button.js +9 -6
  29. package/src/components/reset-overrides-control.js +3 -3
package/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 2.5.0 (2024-08-07)
6
+
7
+ ## 2.4.0 (2024-07-24)
8
+
5
9
  ## 2.3.0 (2024-07-10)
6
10
 
7
11
  ## 2.2.0 (2024-06-26)
@@ -111,6 +111,7 @@ function CreatePatternModalContents({
111
111
  onChange: setCategoryTerms,
112
112
  categoryMap: categoryMap
113
113
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToggleControl, {
114
+ __nextHasNoMarginBottom: true,
114
115
  label: (0, _i18n._x)('Synced', 'pattern (singular)'),
115
116
  help: (0, _i18n.__)('Sync this pattern across multiple locations.'),
116
117
  checked: syncType === _constants.PATTERN_SYNC_TYPES.full,
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_i18n","_element","_data","_notices","_coreData","_constants","_store","_categorySelector","_interopRequireDefault","_privateHooks","_lockUnlock","_jsxRuntime","CreatePatternModal","className","modalTitle","restProps","defaultModalTitle","useSelect","select","coreStore","getPostType","PATTERN_TYPES","user","labels","add_new_item","jsx","Modal","title","onRequestClose","onClose","overlayClassName","focusOnMount","size","children","CreatePatternModalContents","confirmLabel","__","defaultCategories","content","onError","onSuccess","defaultSyncType","PATTERN_SYNC_TYPES","full","defaultTitle","syncType","setSyncType","useState","categoryTerms","setCategoryTerms","setTitle","isSaving","setIsSaving","createPattern","unlock","useDispatch","patternsStore","createErrorNotice","noticesStore","categoryMap","findOrCreateTerm","useAddPatternCategory","onCreate","patternTitle","sync","categories","Promise","all","map","termName","newPattern","pattern","categoryId","PATTERN_DEFAULT_CATEGORY","error","message","type","id","onSubmit","event","preventDefault","jsxs","__experimentalVStack","spacing","TextControl","label","value","onChange","placeholder","__nextHasNoMarginBottom","__next40pxDefaultSize","default","ToggleControl","_x","help","checked","unsynced","__experimentalHStack","justify","Button","variant","onClick","isBusy"],"sources":["@wordpress/patterns/src/components/create-pattern-modal.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tModal,\n\tButton,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tToggleControl,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_SYNC_TYPES,\n\tPATTERN_TYPES,\n} from '../constants';\nimport { store as patternsStore } from '../store';\nimport CategorySelector from './category-selector';\nimport { useAddPatternCategory } from '../private-hooks';\nimport { unlock } from '../lock-unlock';\n\nexport default function CreatePatternModal( {\n\tclassName = 'patterns-menu-items__convert-modal',\n\tmodalTitle,\n\t...restProps\n} ) {\n\tconst defaultModalTitle = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getPostType( PATTERN_TYPES.user )?.labels\n\t\t\t\t?.add_new_item,\n\t\t[]\n\t);\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ modalTitle || defaultModalTitle }\n\t\t\tonRequestClose={ restProps.onClose }\n\t\t\toverlayClassName={ className }\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\tsize=\"small\"\n\t\t>\n\t\t\t<CreatePatternModalContents { ...restProps } />\n\t\t</Modal>\n\t);\n}\n\nexport function CreatePatternModalContents( {\n\tconfirmLabel = __( 'Add' ),\n\tdefaultCategories = [],\n\tcontent,\n\tonClose,\n\tonError,\n\tonSuccess,\n\tdefaultSyncType = PATTERN_SYNC_TYPES.full,\n\tdefaultTitle = '',\n} ) {\n\tconst [ syncType, setSyncType ] = useState( defaultSyncType );\n\tconst [ categoryTerms, setCategoryTerms ] = useState( defaultCategories );\n\tconst [ title, setTitle ] = useState( defaultTitle );\n\n\tconst [ isSaving, setIsSaving ] = useState( false );\n\tconst { createPattern } = unlock( useDispatch( patternsStore ) );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tconst { categoryMap, findOrCreateTerm } = useAddPatternCategory();\n\n\tasync function onCreate( patternTitle, sync ) {\n\t\tif ( ! title || isSaving ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tsetIsSaving( true );\n\t\t\tconst categories = await Promise.all(\n\t\t\t\tcategoryTerms.map( ( termName ) =>\n\t\t\t\t\tfindOrCreateTerm( termName )\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tconst newPattern = await createPattern(\n\t\t\t\tpatternTitle,\n\t\t\t\tsync,\n\t\t\t\ttypeof content === 'function' ? content() : content,\n\t\t\t\tcategories\n\t\t\t);\n\t\t\tonSuccess( {\n\t\t\t\tpattern: newPattern,\n\t\t\t\tcategoryId: PATTERN_DEFAULT_CATEGORY,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'pattern-create',\n\t\t\t} );\n\t\t\tonError?.();\n\t\t} finally {\n\t\t\tsetIsSaving( false );\n\t\t\tsetCategoryTerms( [] );\n\t\t\tsetTitle( '' );\n\t\t}\n\t}\n\n\treturn (\n\t\t<form\n\t\t\tonSubmit={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonCreate( title, syncType );\n\t\t\t} }\n\t\t>\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<TextControl\n\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\tvalue={ title }\n\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\tplaceholder={ __( 'My pattern' ) }\n\t\t\t\t\tclassName=\"patterns-create-modal__name-input\"\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t/>\n\t\t\t\t<CategorySelector\n\t\t\t\t\tcategoryTerms={ categoryTerms }\n\t\t\t\t\tonChange={ setCategoryTerms }\n\t\t\t\t\tcategoryMap={ categoryMap }\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ _x( 'Synced', 'pattern (singular)' ) }\n\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t'Sync this pattern across multiple locations.'\n\t\t\t\t\t) }\n\t\t\t\t\tchecked={ syncType === PATTERN_SYNC_TYPES.full }\n\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\tsetSyncType(\n\t\t\t\t\t\t\tsyncType === PATTERN_SYNC_TYPES.full\n\t\t\t\t\t\t\t\t? PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t\t\t\t\t: PATTERN_SYNC_TYPES.full\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\taria-disabled={ ! title || isSaving }\n\t\t\t\t\t\tisBusy={ isSaving }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ confirmLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t</form>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_components","require","_i18n","_element","_data","_notices","_coreData","_constants","_store","_categorySelector","_interopRequireDefault","_privateHooks","_lockUnlock","_jsxRuntime","CreatePatternModal","className","modalTitle","restProps","defaultModalTitle","useSelect","select","coreStore","getPostType","PATTERN_TYPES","user","labels","add_new_item","jsx","Modal","title","onRequestClose","onClose","overlayClassName","focusOnMount","size","children","CreatePatternModalContents","confirmLabel","__","defaultCategories","content","onError","onSuccess","defaultSyncType","PATTERN_SYNC_TYPES","full","defaultTitle","syncType","setSyncType","useState","categoryTerms","setCategoryTerms","setTitle","isSaving","setIsSaving","createPattern","unlock","useDispatch","patternsStore","createErrorNotice","noticesStore","categoryMap","findOrCreateTerm","useAddPatternCategory","onCreate","patternTitle","sync","categories","Promise","all","map","termName","newPattern","pattern","categoryId","PATTERN_DEFAULT_CATEGORY","error","message","type","id","onSubmit","event","preventDefault","jsxs","__experimentalVStack","spacing","TextControl","label","value","onChange","placeholder","__nextHasNoMarginBottom","__next40pxDefaultSize","default","ToggleControl","_x","help","checked","unsynced","__experimentalHStack","justify","Button","variant","onClick","isBusy"],"sources":["@wordpress/patterns/src/components/create-pattern-modal.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tModal,\n\tButton,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tToggleControl,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_SYNC_TYPES,\n\tPATTERN_TYPES,\n} from '../constants';\nimport { store as patternsStore } from '../store';\nimport CategorySelector from './category-selector';\nimport { useAddPatternCategory } from '../private-hooks';\nimport { unlock } from '../lock-unlock';\n\nexport default function CreatePatternModal( {\n\tclassName = 'patterns-menu-items__convert-modal',\n\tmodalTitle,\n\t...restProps\n} ) {\n\tconst defaultModalTitle = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getPostType( PATTERN_TYPES.user )?.labels\n\t\t\t\t?.add_new_item,\n\t\t[]\n\t);\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ modalTitle || defaultModalTitle }\n\t\t\tonRequestClose={ restProps.onClose }\n\t\t\toverlayClassName={ className }\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\tsize=\"small\"\n\t\t>\n\t\t\t<CreatePatternModalContents { ...restProps } />\n\t\t</Modal>\n\t);\n}\n\nexport function CreatePatternModalContents( {\n\tconfirmLabel = __( 'Add' ),\n\tdefaultCategories = [],\n\tcontent,\n\tonClose,\n\tonError,\n\tonSuccess,\n\tdefaultSyncType = PATTERN_SYNC_TYPES.full,\n\tdefaultTitle = '',\n} ) {\n\tconst [ syncType, setSyncType ] = useState( defaultSyncType );\n\tconst [ categoryTerms, setCategoryTerms ] = useState( defaultCategories );\n\tconst [ title, setTitle ] = useState( defaultTitle );\n\n\tconst [ isSaving, setIsSaving ] = useState( false );\n\tconst { createPattern } = unlock( useDispatch( patternsStore ) );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tconst { categoryMap, findOrCreateTerm } = useAddPatternCategory();\n\n\tasync function onCreate( patternTitle, sync ) {\n\t\tif ( ! title || isSaving ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tsetIsSaving( true );\n\t\t\tconst categories = await Promise.all(\n\t\t\t\tcategoryTerms.map( ( termName ) =>\n\t\t\t\t\tfindOrCreateTerm( termName )\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tconst newPattern = await createPattern(\n\t\t\t\tpatternTitle,\n\t\t\t\tsync,\n\t\t\t\ttypeof content === 'function' ? content() : content,\n\t\t\t\tcategories\n\t\t\t);\n\t\t\tonSuccess( {\n\t\t\t\tpattern: newPattern,\n\t\t\t\tcategoryId: PATTERN_DEFAULT_CATEGORY,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'pattern-create',\n\t\t\t} );\n\t\t\tonError?.();\n\t\t} finally {\n\t\t\tsetIsSaving( false );\n\t\t\tsetCategoryTerms( [] );\n\t\t\tsetTitle( '' );\n\t\t}\n\t}\n\n\treturn (\n\t\t<form\n\t\t\tonSubmit={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonCreate( title, syncType );\n\t\t\t} }\n\t\t>\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<TextControl\n\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\tvalue={ title }\n\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\tplaceholder={ __( 'My pattern' ) }\n\t\t\t\t\tclassName=\"patterns-create-modal__name-input\"\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t/>\n\t\t\t\t<CategorySelector\n\t\t\t\t\tcategoryTerms={ categoryTerms }\n\t\t\t\t\tonChange={ setCategoryTerms }\n\t\t\t\t\tcategoryMap={ categoryMap }\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ _x( 'Synced', 'pattern (singular)' ) }\n\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t'Sync this pattern across multiple locations.'\n\t\t\t\t\t) }\n\t\t\t\t\tchecked={ syncType === PATTERN_SYNC_TYPES.full }\n\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\tsetSyncType(\n\t\t\t\t\t\t\tsyncType === PATTERN_SYNC_TYPES.full\n\t\t\t\t\t\t\t\t? PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t\t\t\t\t: PATTERN_SYNC_TYPES.full\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\taria-disabled={ ! title || isSaving }\n\t\t\t\t\t\tisBusy={ isSaving }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ confirmLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t</form>\n\t);\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AAQA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AACA,IAAAK,SAAA,GAAAL,OAAA;AAKA,IAAAM,UAAA,GAAAN,OAAA;AAKA,IAAAO,MAAA,GAAAP,OAAA;AACA,IAAAQ,iBAAA,GAAAC,sBAAA,CAAAT,OAAA;AACA,IAAAU,aAAA,GAAAV,OAAA;AACA,IAAAW,WAAA,GAAAX,OAAA;AAAwC,IAAAY,WAAA,GAAAZ,OAAA;AA5BxC;AACA;AACA;;AAeA;AACA;AACA;;AAWe,SAASa,kBAAkBA,CAAE;EAC3CC,SAAS,GAAG,oCAAoC;EAChDC,UAAU;EACV,GAAGC;AACJ,CAAC,EAAG;EACH,MAAMC,iBAAiB,GAAG,IAAAC,eAAS,EAChCC,MAAM,IACPA,MAAM,CAAEC,eAAU,CAAC,CAACC,WAAW,CAAEC,wBAAa,CAACC,IAAK,CAAC,EAAEC,MAAM,EAC1DC,YAAY,EAChB,EACD,CAAC;EACD,oBACC,IAAAb,WAAA,CAAAc,GAAA,EAAC3B,WAAA,CAAA4B,KAAK;IACLC,KAAK,EAAGb,UAAU,IAAIE,iBAAmB;IACzCY,cAAc,EAAGb,SAAS,CAACc,OAAS;IACpCC,gBAAgB,EAAGjB,SAAW;IAC9BkB,YAAY,EAAC,qBAAqB;IAClCC,IAAI,EAAC,OAAO;IAAAC,QAAA,eAEZ,IAAAtB,WAAA,CAAAc,GAAA,EAACS,0BAA0B;MAAA,GAAMnB;IAAS,CAAI;EAAC,CACzC,CAAC;AAEV;AAEO,SAASmB,0BAA0BA,CAAE;EAC3CC,YAAY,GAAG,IAAAC,QAAE,EAAE,KAAM,CAAC;EAC1BC,iBAAiB,GAAG,EAAE;EACtBC,OAAO;EACPT,OAAO;EACPU,OAAO;EACPC,SAAS;EACTC,eAAe,GAAGC,6BAAkB,CAACC,IAAI;EACzCC,YAAY,GAAG;AAChB,CAAC,EAAG;EACH,MAAM,CAAEC,QAAQ,EAAEC,WAAW,CAAE,GAAG,IAAAC,iBAAQ,EAAEN,eAAgB,CAAC;EAC7D,MAAM,CAAEO,aAAa,EAAEC,gBAAgB,CAAE,GAAG,IAAAF,iBAAQ,EAAEV,iBAAkB,CAAC;EACzE,MAAM,CAAEV,KAAK,EAAEuB,QAAQ,CAAE,GAAG,IAAAH,iBAAQ,EAAEH,YAAa,CAAC;EAEpD,MAAM,CAAEO,QAAQ,EAAEC,WAAW,CAAE,GAAG,IAAAL,iBAAQ,EAAE,KAAM,CAAC;EACnD,MAAM;IAAEM;EAAc,CAAC,GAAG,IAAAC,kBAAM,EAAE,IAAAC,iBAAW,EAAEC,YAAc,CAAE,CAAC;EAChE,MAAM;IAAEC;EAAkB,CAAC,GAAG,IAAAF,iBAAW,EAAEG,cAAa,CAAC;EAEzD,MAAM;IAAEC,WAAW;IAAEC;EAAiB,CAAC,GAAG,IAAAC,mCAAqB,EAAC,CAAC;EAEjE,eAAeC,QAAQA,CAAEC,YAAY,EAAEC,IAAI,EAAG;IAC7C,IAAK,CAAErC,KAAK,IAAIwB,QAAQ,EAAG;MAC1B;IACD;IAEA,IAAI;MACHC,WAAW,CAAE,IAAK,CAAC;MACnB,MAAMa,UAAU,GAAG,MAAMC,OAAO,CAACC,GAAG,CACnCnB,aAAa,CAACoB,GAAG,CAAIC,QAAQ,IAC5BT,gBAAgB,CAAES,QAAS,CAC5B,CACD,CAAC;MAED,MAAMC,UAAU,GAAG,MAAMjB,aAAa,CACrCU,YAAY,EACZC,IAAI,EACJ,OAAO1B,OAAO,KAAK,UAAU,GAAGA,OAAO,CAAC,CAAC,GAAGA,OAAO,EACnD2B,UACD,CAAC;MACDzB,SAAS,CAAE;QACV+B,OAAO,EAAED,UAAU;QACnBE,UAAU,EAAEC;MACb,CAAE,CAAC;IACJ,CAAC,CAAC,OAAQC,KAAK,EAAG;MACjBjB,iBAAiB,CAAEiB,KAAK,CAACC,OAAO,EAAE;QACjCC,IAAI,EAAE,UAAU;QAChBC,EAAE,EAAE;MACL,CAAE,CAAC;MACHtC,OAAO,GAAG,CAAC;IACZ,CAAC,SAAS;MACTa,WAAW,CAAE,KAAM,CAAC;MACpBH,gBAAgB,CAAE,EAAG,CAAC;MACtBC,QAAQ,CAAE,EAAG,CAAC;IACf;EACD;EAEA,oBACC,IAAAvC,WAAA,CAAAc,GAAA;IACCqD,QAAQ,EAAKC,KAAK,IAAM;MACvBA,KAAK,CAACC,cAAc,CAAC,CAAC;MACtBlB,QAAQ,CAAEnC,KAAK,EAAEkB,QAAS,CAAC;IAC5B,CAAG;IAAAZ,QAAA,eAEH,IAAAtB,WAAA,CAAAsE,IAAA,EAACnF,WAAA,CAAAoF,oBAAM;MAACC,OAAO,EAAC,GAAG;MAAAlD,QAAA,gBAClB,IAAAtB,WAAA,CAAAc,GAAA,EAAC3B,WAAA,CAAAsF,WAAW;QACXC,KAAK,EAAG,IAAAjD,QAAE,EAAE,MAAO,CAAG;QACtBkD,KAAK,EAAG3D,KAAO;QACf4D,QAAQ,EAAGrC,QAAU;QACrBsC,WAAW,EAAG,IAAApD,QAAE,EAAE,YAAa,CAAG;QAClCvB,SAAS,EAAC,mCAAmC;QAC7C4E,uBAAuB;QACvBC,qBAAqB;MAAA,CACrB,CAAC,eACF,IAAA/E,WAAA,CAAAc,GAAA,EAAClB,iBAAA,CAAAoF,OAAgB;QAChB3C,aAAa,EAAGA,aAAe;QAC/BuC,QAAQ,EAAGtC,gBAAkB;QAC7BU,WAAW,EAAGA;MAAa,CAC3B,CAAC,eACF,IAAAhD,WAAA,CAAAc,GAAA,EAAC3B,WAAA,CAAA8F,aAAa;QACbH,uBAAuB;QACvBJ,KAAK,EAAG,IAAAQ,QAAE,EAAE,QAAQ,EAAE,oBAAqB,CAAG;QAC9CC,IAAI,EAAG,IAAA1D,QAAE,EACR,8CACD,CAAG;QACH2D,OAAO,EAAGlD,QAAQ,KAAKH,6BAAkB,CAACC,IAAM;QAChD4C,QAAQ,EAAGA,CAAA,KAAM;UAChBzC,WAAW,CACVD,QAAQ,KAAKH,6BAAkB,CAACC,IAAI,GACjCD,6BAAkB,CAACsD,QAAQ,GAC3BtD,6BAAkB,CAACC,IACvB,CAAC;QACF;MAAG,CACH,CAAC,eACF,IAAAhC,WAAA,CAAAsE,IAAA,EAACnF,WAAA,CAAAmG,oBAAM;QAACC,OAAO,EAAC,OAAO;QAAAjE,QAAA,gBACtB,IAAAtB,WAAA,CAAAc,GAAA,EAAC3B,WAAA,CAAAqG,MAAM;UACNT,qBAAqB;UACrBU,OAAO,EAAC,UAAU;UAClBC,OAAO,EAAGA,CAAA,KAAM;YACfxE,OAAO,CAAC,CAAC;YACTqB,QAAQ,CAAE,EAAG,CAAC;UACf,CAAG;UAAAjB,QAAA,EAED,IAAAG,QAAE,EAAE,QAAS;QAAC,CACT,CAAC,eAET,IAAAzB,WAAA,CAAAc,GAAA,EAAC3B,WAAA,CAAAqG,MAAM;UACNT,qBAAqB;UACrBU,OAAO,EAAC,SAAS;UACjBxB,IAAI,EAAC,QAAQ;UACb,iBAAgB,CAAEjD,KAAK,IAAIwB,QAAU;UACrCmD,MAAM,EAAGnD,QAAU;UAAAlB,QAAA,EAEjBE;QAAY,CACP,CAAC;MAAA,CACF,CAAC;IAAA,CACF;EAAC,CACJ,CAAC;AAET","ignoreList":[]}
@@ -78,7 +78,10 @@ var _jsxRuntime = require("react/jsx-runtime");
78
78
  (0, _blocks.hasBlockSupport)(block.name, 'reusable', true)) &&
79
79
  // Hide when current doesn't have permission to do that.
80
80
  // Blocks refers to the wp_block post type, this checks the ability to create a post of that type.
81
- !!canUser('create', 'blocks');
81
+ !!canUser('create', {
82
+ kind: 'postType',
83
+ name: 'wp_block'
84
+ });
82
85
  return _canConvert;
83
86
  }, [clientIds, rootClientId]);
84
87
  const {
@@ -1 +1 @@
1
- {"version":3,"names":["_blocks","require","_blockEditor","_element","_components","_icons","_data","_coreData","_i18n","_notices","_store","_createPatternModal","_interopRequireDefault","_lockUnlock","_constants","_jsxRuntime","PatternConvertButton","clientIds","rootClientId","closeBlockSettingsMenu","createSuccessNotice","useDispatch","noticesStore","replaceBlocks","blockEditorStore","setEditingPattern","unlock","patternsStore","isModalOpen","setIsModalOpen","useState","canConvert","useSelect","select","_getBlocksByClientId","canUser","coreStore","getBlocksByClientId","canInsertBlockType","getBlockRootClientId","rootId","length","undefined","blocks","isReusable","isReusableBlock","getEntityRecord","attributes","ref","_canConvert","every","block","isValid","hasBlockSupport","name","getContent","useCallback","serialize","handleSuccess","pattern","wp_pattern_sync_status","PATTERN_SYNC_TYPES","unsynced","newBlock","createBlock","id","clientId","sprintf","__","title","raw","type","jsxs","Fragment","children","jsx","MenuItem","icon","symbol","onClick","default","content","onSuccess","onError","onClose"],"sources":["@wordpress/patterns/src/components/pattern-convert-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\thasBlockSupport,\n\tisReusableBlock,\n\tcreateBlock,\n\tserialize,\n} from '@wordpress/blocks';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useState, useCallback } from '@wordpress/element';\nimport { MenuItem } from '@wordpress/components';\nimport { symbol } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\n/**\n * Internal dependencies\n */\nimport { store as patternsStore } from '../store';\nimport CreatePatternModal from './create-pattern-modal';\nimport { unlock } from '../lock-unlock';\nimport { PATTERN_SYNC_TYPES } from '../constants';\n\n/**\n * Menu control to convert block(s) to a pattern block.\n *\n * @param {Object} props Component props.\n * @param {string[]} props.clientIds Client ids of selected blocks.\n * @param {string} props.rootClientId ID of the currently selected top-level block.\n * @param {()=>void} props.closeBlockSettingsMenu Callback to close the block settings menu dropdown.\n * @return {import('react').ComponentType} The menu control or null.\n */\nexport default function PatternConvertButton( {\n\tclientIds,\n\trootClientId,\n\tcloseBlockSettingsMenu,\n} ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\t// Ignore reason: false positive of the lint rule.\n\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\tconst { setEditingPattern } = unlock( useDispatch( patternsStore ) );\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst canConvert = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst {\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst rootId =\n\t\t\t\trootClientId ||\n\t\t\t\t( clientIds.length > 0\n\t\t\t\t\t? getBlockRootClientId( clientIds[ 0 ] )\n\t\t\t\t\t: undefined );\n\n\t\t\tconst blocks = getBlocksByClientId( clientIds ) ?? [];\n\n\t\t\tconst isReusable =\n\t\t\t\tblocks.length === 1 &&\n\t\t\t\tblocks[ 0 ] &&\n\t\t\t\tisReusableBlock( blocks[ 0 ] ) &&\n\t\t\t\t!! select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblocks[ 0 ].attributes.ref\n\t\t\t\t);\n\n\t\t\tconst _canConvert =\n\t\t\t\t// Hide when this is already a synced pattern.\n\t\t\t\t! isReusable &&\n\t\t\t\t// Hide when patterns are disabled.\n\t\t\t\tcanInsertBlockType( 'core/block', rootId ) &&\n\t\t\t\tblocks.every(\n\t\t\t\t\t( block ) =>\n\t\t\t\t\t\t// Guard against the case where a regular block has *just* been converted.\n\t\t\t\t\t\t!! block &&\n\t\t\t\t\t\t// Hide on invalid blocks.\n\t\t\t\t\t\tblock.isValid &&\n\t\t\t\t\t\t// Hide when block doesn't support being made into a pattern.\n\t\t\t\t\t\thasBlockSupport( block.name, 'reusable', true )\n\t\t\t\t) &&\n\t\t\t\t// Hide when current doesn't have permission to do that.\n\t\t\t\t// Blocks refers to the wp_block post type, this checks the ability to create a post of that type.\n\t\t\t\t!! canUser( 'create', 'blocks' );\n\n\t\t\treturn _canConvert;\n\t\t},\n\t\t[ clientIds, rootClientId ]\n\t);\n\tconst { getBlocksByClientId } = useSelect( blockEditorStore );\n\tconst getContent = useCallback(\n\t\t() => serialize( getBlocksByClientId( clientIds ) ),\n\t\t[ getBlocksByClientId, clientIds ]\n\t);\n\n\tif ( ! canConvert ) {\n\t\treturn null;\n\t}\n\n\tconst handleSuccess = ( { pattern } ) => {\n\t\tif ( pattern.wp_pattern_sync_status !== PATTERN_SYNC_TYPES.unsynced ) {\n\t\t\tconst newBlock = createBlock( 'core/block', {\n\t\t\t\tref: pattern.id,\n\t\t\t} );\n\n\t\t\treplaceBlocks( clientIds, newBlock );\n\t\t\tsetEditingPattern( newBlock.clientId, true );\n\t\t\tcloseBlockSettingsMenu();\n\t\t}\n\n\t\tcreateSuccessNotice(\n\t\t\tpattern.wp_pattern_sync_status === PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t? sprintf(\n\t\t\t\t\t\t// translators: %s: the name the user has given to the pattern.\n\t\t\t\t\t\t__( 'Unsynced pattern created: %s' ),\n\t\t\t\t\t\tpattern.title.raw\n\t\t\t\t )\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t// translators: %s: the name the user has given to the pattern.\n\t\t\t\t\t\t__( 'Synced pattern created: %s' ),\n\t\t\t\t\t\tpattern.title.raw\n\t\t\t\t ),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'convert-to-pattern-success',\n\t\t\t}\n\t\t);\n\t\tsetIsModalOpen( false );\n\t};\n\treturn (\n\t\t<>\n\t\t\t<MenuItem\n\t\t\t\ticon={ symbol }\n\t\t\t\tonClick={ () => setIsModalOpen( true ) }\n\t\t\t\taria-expanded={ isModalOpen }\n\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t>\n\t\t\t\t{ __( 'Create pattern' ) }\n\t\t\t</MenuItem>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<CreatePatternModal\n\t\t\t\t\tcontent={ getContent }\n\t\t\t\t\tonSuccess={ ( pattern ) => {\n\t\t\t\t\t\thandleSuccess( pattern );\n\t\t\t\t\t} }\n\t\t\t\t\tonError={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t} }\n\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_blocks","require","_blockEditor","_element","_components","_icons","_data","_coreData","_i18n","_notices","_store","_createPatternModal","_interopRequireDefault","_lockUnlock","_constants","_jsxRuntime","PatternConvertButton","clientIds","rootClientId","closeBlockSettingsMenu","createSuccessNotice","useDispatch","noticesStore","replaceBlocks","blockEditorStore","setEditingPattern","unlock","patternsStore","isModalOpen","setIsModalOpen","useState","canConvert","useSelect","select","_getBlocksByClientId","canUser","coreStore","getBlocksByClientId","canInsertBlockType","getBlockRootClientId","rootId","length","undefined","blocks","isReusable","isReusableBlock","getEntityRecord","attributes","ref","_canConvert","every","block","isValid","hasBlockSupport","name","kind","getContent","useCallback","serialize","handleSuccess","pattern","wp_pattern_sync_status","PATTERN_SYNC_TYPES","unsynced","newBlock","createBlock","id","clientId","sprintf","__","title","raw","type","jsxs","Fragment","children","jsx","MenuItem","icon","symbol","onClick","default","content","onSuccess","onError","onClose"],"sources":["@wordpress/patterns/src/components/pattern-convert-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\thasBlockSupport,\n\tisReusableBlock,\n\tcreateBlock,\n\tserialize,\n} from '@wordpress/blocks';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useState, useCallback } from '@wordpress/element';\nimport { MenuItem } from '@wordpress/components';\nimport { symbol } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\n/**\n * Internal dependencies\n */\nimport { store as patternsStore } from '../store';\nimport CreatePatternModal from './create-pattern-modal';\nimport { unlock } from '../lock-unlock';\nimport { PATTERN_SYNC_TYPES } from '../constants';\n\n/**\n * Menu control to convert block(s) to a pattern block.\n *\n * @param {Object} props Component props.\n * @param {string[]} props.clientIds Client ids of selected blocks.\n * @param {string} props.rootClientId ID of the currently selected top-level block.\n * @param {()=>void} props.closeBlockSettingsMenu Callback to close the block settings menu dropdown.\n * @return {import('react').ComponentType} The menu control or null.\n */\nexport default function PatternConvertButton( {\n\tclientIds,\n\trootClientId,\n\tcloseBlockSettingsMenu,\n} ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\t// Ignore reason: false positive of the lint rule.\n\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\tconst { setEditingPattern } = unlock( useDispatch( patternsStore ) );\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst canConvert = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst {\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst rootId =\n\t\t\t\trootClientId ||\n\t\t\t\t( clientIds.length > 0\n\t\t\t\t\t? getBlockRootClientId( clientIds[ 0 ] )\n\t\t\t\t\t: undefined );\n\n\t\t\tconst blocks = getBlocksByClientId( clientIds ) ?? [];\n\n\t\t\tconst isReusable =\n\t\t\t\tblocks.length === 1 &&\n\t\t\t\tblocks[ 0 ] &&\n\t\t\t\tisReusableBlock( blocks[ 0 ] ) &&\n\t\t\t\t!! select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblocks[ 0 ].attributes.ref\n\t\t\t\t);\n\n\t\t\tconst _canConvert =\n\t\t\t\t// Hide when this is already a synced pattern.\n\t\t\t\t! isReusable &&\n\t\t\t\t// Hide when patterns are disabled.\n\t\t\t\tcanInsertBlockType( 'core/block', rootId ) &&\n\t\t\t\tblocks.every(\n\t\t\t\t\t( block ) =>\n\t\t\t\t\t\t// Guard against the case where a regular block has *just* been converted.\n\t\t\t\t\t\t!! block &&\n\t\t\t\t\t\t// Hide on invalid blocks.\n\t\t\t\t\t\tblock.isValid &&\n\t\t\t\t\t\t// Hide when block doesn't support being made into a pattern.\n\t\t\t\t\t\thasBlockSupport( block.name, 'reusable', true )\n\t\t\t\t) &&\n\t\t\t\t// Hide when current doesn't have permission to do that.\n\t\t\t\t// Blocks refers to the wp_block post type, this checks the ability to create a post of that type.\n\t\t\t\t!! canUser( 'create', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_block',\n\t\t\t\t} );\n\n\t\t\treturn _canConvert;\n\t\t},\n\t\t[ clientIds, rootClientId ]\n\t);\n\tconst { getBlocksByClientId } = useSelect( blockEditorStore );\n\tconst getContent = useCallback(\n\t\t() => serialize( getBlocksByClientId( clientIds ) ),\n\t\t[ getBlocksByClientId, clientIds ]\n\t);\n\n\tif ( ! canConvert ) {\n\t\treturn null;\n\t}\n\n\tconst handleSuccess = ( { pattern } ) => {\n\t\tif ( pattern.wp_pattern_sync_status !== PATTERN_SYNC_TYPES.unsynced ) {\n\t\t\tconst newBlock = createBlock( 'core/block', {\n\t\t\t\tref: pattern.id,\n\t\t\t} );\n\n\t\t\treplaceBlocks( clientIds, newBlock );\n\t\t\tsetEditingPattern( newBlock.clientId, true );\n\t\t\tcloseBlockSettingsMenu();\n\t\t}\n\n\t\tcreateSuccessNotice(\n\t\t\tpattern.wp_pattern_sync_status === PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t? sprintf(\n\t\t\t\t\t\t// translators: %s: the name the user has given to the pattern.\n\t\t\t\t\t\t__( 'Unsynced pattern created: %s' ),\n\t\t\t\t\t\tpattern.title.raw\n\t\t\t\t )\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t// translators: %s: the name the user has given to the pattern.\n\t\t\t\t\t\t__( 'Synced pattern created: %s' ),\n\t\t\t\t\t\tpattern.title.raw\n\t\t\t\t ),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'convert-to-pattern-success',\n\t\t\t}\n\t\t);\n\t\tsetIsModalOpen( false );\n\t};\n\treturn (\n\t\t<>\n\t\t\t<MenuItem\n\t\t\t\ticon={ symbol }\n\t\t\t\tonClick={ () => setIsModalOpen( true ) }\n\t\t\t\taria-expanded={ isModalOpen }\n\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t>\n\t\t\t\t{ __( 'Create pattern' ) }\n\t\t\t</MenuItem>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<CreatePatternModal\n\t\t\t\t\tcontent={ getContent }\n\t\t\t\t\tonSuccess={ ( pattern ) => {\n\t\t\t\t\t\thandleSuccess( pattern );\n\t\t\t\t\t} }\n\t\t\t\t\tonError={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t} }\n\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -83,7 +83,7 @@ function PatternOverridesToolbarIndicator({
83
83
  })
84
84
  }),
85
85
  toggleProps: {
86
- describedBy: blockDescription,
86
+ description: blockDescription,
87
87
  ...toggleProps
88
88
  },
89
89
  menuProps: {
@@ -1 +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":[]}
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","description","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\tdescription: blockDescription,\n\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t} }\n\t\t\t\t\tmenuProps={ {\n\t\t\t\t\t\torientation: 'both',\n\t\t\t\t\t\t'aria-describedby': descriptionId,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ () => (\n\t\t\t\t\t\t<Text id={ descriptionId }>{ blockDescription }</Text>\n\t\t\t\t\t) }\n\t\t\t\t</DropdownMenu>\n\t\t\t) }\n\t\t</ToolbarItem>\n\t);\n}\n\nexport default function PatternOverridesBlockControls() {\n\tconst { clientIds, hasPatternOverrides, hasParentPattern } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst selectedClientIds = getSelectedBlockClientIds();\n\t\t\tconst _hasPatternOverrides = selectedClientIds.every(\n\t\t\t\t( clientId ) =>\n\t\t\t\t\tObject.values(\n\t\t\t\t\t\tgetBlockAttributes( clientId )?.metadata?.bindings ?? {}\n\t\t\t\t\t).some(\n\t\t\t\t\t\t( binding ) =>\n\t\t\t\t\t\t\tbinding?.source === PATTERN_OVERRIDES_BINDING_SOURCE\n\t\t\t\t\t)\n\t\t\t);\n\t\t\tconst _hasParentPattern = selectedClientIds.every(\n\t\t\t\t( clientId ) =>\n\t\t\t\t\tgetBlockParentsByBlockName( clientId, 'core/block', true )\n\t\t\t\t\t\t.length > 0\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tclientIds: selectedClientIds,\n\t\t\t\thasPatternOverrides: _hasPatternOverrides,\n\t\t\t\thasParentPattern: _hasParentPattern,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\treturn hasPatternOverrides && hasParentPattern ? (\n\t\t<BlockControls group=\"parent\">\n\t\t\t<PatternOverridesToolbarIndicator clientIds={ clientIds } />\n\t\t</BlockControls>\n\t) : null;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -41,12 +41,19 @@ function PatternsManageButton({
41
41
  const reusableBlock = getBlock(clientId);
42
42
  return {
43
43
  canRemove: canRemoveBlock(clientId),
44
- isVisible: !!reusableBlock && (0, _blocks.isReusableBlock)(reusableBlock) && !!canUser('update', 'blocks', reusableBlock.attributes.ref),
44
+ isVisible: !!reusableBlock && (0, _blocks.isReusableBlock)(reusableBlock) && !!canUser('update', {
45
+ kind: 'postType',
46
+ name: 'wp_block',
47
+ id: reusableBlock.attributes.ref
48
+ }),
45
49
  innerBlockCount: getBlockCount(clientId),
46
50
  // The site editor and templates both check whether the user
47
51
  // has edit_theme_options capabilities. We can leverage that here
48
52
  // and omit the manage patterns link if the user can't access it.
49
- managePatternsUrl: canUser('create', 'templates') ? (0, _url.addQueryArgs)('site-editor.php', {
53
+ managePatternsUrl: canUser('create', {
54
+ kind: 'postType',
55
+ name: 'wp_template'
56
+ }) ? (0, _url.addQueryArgs)('site-editor.php', {
50
57
  path: '/patterns'
51
58
  }) : (0, _url.addQueryArgs)('edit.php', {
52
59
  post_type: 'wp_block'
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_i18n","_blocks","_data","_blockEditor","_url","_coreData","_store","_lockUnlock","_jsxRuntime","PatternsManageButton","clientId","canRemove","isVisible","managePatternsUrl","useSelect","select","getBlock","canRemoveBlock","getBlockCount","blockEditorStore","canUser","coreStore","reusableBlock","isReusableBlock","attributes","ref","innerBlockCount","addQueryArgs","path","post_type","convertSyncedPatternToStatic","unlock","useDispatch","patternsStore","jsxs","Fragment","children","jsx","MenuItem","onClick","__","href","_default","exports","default"],"sources":["@wordpress/patterns/src/components/patterns-manage-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { isReusableBlock } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { addQueryArgs } from '@wordpress/url';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as patternsStore } from '../store';\nimport { unlock } from '../lock-unlock';\n\nfunction PatternsManageButton( { clientId } ) {\n\tconst { canRemove, isVisible, managePatternsUrl } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, canRemoveBlock, getBlockCount } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst reusableBlock = getBlock( clientId );\n\n\t\t\treturn {\n\t\t\t\tcanRemove: canRemoveBlock( clientId ),\n\t\t\t\tisVisible:\n\t\t\t\t\t!! reusableBlock &&\n\t\t\t\t\tisReusableBlock( reusableBlock ) &&\n\t\t\t\t\t!! canUser(\n\t\t\t\t\t\t'update',\n\t\t\t\t\t\t'blocks',\n\t\t\t\t\t\treusableBlock.attributes.ref\n\t\t\t\t\t),\n\t\t\t\tinnerBlockCount: getBlockCount( clientId ),\n\t\t\t\t// The site editor and templates both check whether the user\n\t\t\t\t// has edit_theme_options capabilities. We can leverage that here\n\t\t\t\t// and omit the manage patterns link if the user can't access it.\n\t\t\t\tmanagePatternsUrl: canUser( 'create', 'templates' )\n\t\t\t\t\t? addQueryArgs( 'site-editor.php', {\n\t\t\t\t\t\t\tpath: '/patterns',\n\t\t\t\t\t } )\n\t\t\t\t\t: addQueryArgs( 'edit.php', {\n\t\t\t\t\t\t\tpost_type: 'wp_block',\n\t\t\t\t\t } ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t// Ignore reason: false positive of the lint rule.\n\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\tconst { convertSyncedPatternToStatic } = unlock(\n\t\tuseDispatch( patternsStore )\n\t);\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ canRemove && (\n\t\t\t\t<MenuItem\n\t\t\t\t\tonClick={ () => convertSyncedPatternToStatic( clientId ) }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Detach' ) }\n\t\t\t\t</MenuItem>\n\t\t\t) }\n\t\t\t<MenuItem href={ managePatternsUrl }>\n\t\t\t\t{ __( 'Manage patterns' ) }\n\t\t\t</MenuItem>\n\t\t</>\n\t);\n}\n\nexport default PatternsManageButton;\n"],"mappings":";;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,IAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AAKA,IAAAO,MAAA,GAAAP,OAAA;AACA,IAAAQ,WAAA,GAAAR,OAAA;AAAwC,IAAAS,WAAA,GAAAT,OAAA;AAfxC;AACA;AACA;;AASA;AACA;AACA;;AAIA,SAASU,oBAAoBA,CAAE;EAAEC;AAAS,CAAC,EAAG;EAC7C,MAAM;IAAEC,SAAS;IAAEC,SAAS;IAAEC;EAAkB,CAAC,GAAG,IAAAC,eAAS,EAC1DC,MAAM,IAAM;IACb,MAAM;MAAEC,QAAQ;MAAEC,cAAc;MAAEC;IAAc,CAAC,GAChDH,MAAM,CAAEI,kBAAiB,CAAC;IAC3B,MAAM;MAAEC;IAAQ,CAAC,GAAGL,MAAM,CAAEM,eAAU,CAAC;IACvC,MAAMC,aAAa,GAAGN,QAAQ,CAAEN,QAAS,CAAC;IAE1C,OAAO;MACNC,SAAS,EAAEM,cAAc,CAAEP,QAAS,CAAC;MACrCE,SAAS,EACR,CAAC,CAAEU,aAAa,IAChB,IAAAC,uBAAe,EAAED,aAAc,CAAC,IAChC,CAAC,CAAEF,OAAO,CACT,QAAQ,EACR,QAAQ,EACRE,aAAa,CAACE,UAAU,CAACC,GAC1B,CAAC;MACFC,eAAe,EAAER,aAAa,CAAER,QAAS,CAAC;MAC1C;MACA;MACA;MACAG,iBAAiB,EAAEO,OAAO,CAAE,QAAQ,EAAE,WAAY,CAAC,GAChD,IAAAO,iBAAY,EAAE,iBAAiB,EAAE;QACjCC,IAAI,EAAE;MACN,CAAE,CAAC,GACH,IAAAD,iBAAY,EAAE,UAAU,EAAE;QAC1BE,SAAS,EAAE;MACX,CAAE;IACN,CAAC;EACF,CAAC,EACD,CAAEnB,QAAQ,CACX,CAAC;;EAED;EACA;EACA,MAAM;IAAEoB;EAA6B,CAAC,GAAG,IAAAC,kBAAM,EAC9C,IAAAC,iBAAW,EAAEC,YAAc,CAC5B,CAAC;EAED,IAAK,CAAErB,SAAS,EAAG;IAClB,OAAO,IAAI;EACZ;EAEA,oBACC,IAAAJ,WAAA,CAAA0B,IAAA,EAAA1B,WAAA,CAAA2B,QAAA;IAAAC,QAAA,GACGzB,SAAS,iBACV,IAAAH,WAAA,CAAA6B,GAAA,EAACvC,WAAA,CAAAwC,QAAQ;MACRC,OAAO,EAAGA,CAAA,KAAMT,4BAA4B,CAAEpB,QAAS,CAAG;MAAA0B,QAAA,EAExD,IAAAI,QAAE,EAAE,QAAS;IAAC,CACP,CACV,eACD,IAAAhC,WAAA,CAAA6B,GAAA,EAACvC,WAAA,CAAAwC,QAAQ;MAACG,IAAI,EAAG5B,iBAAmB;MAAAuB,QAAA,EACjC,IAAAI,QAAE,EAAE,iBAAkB;IAAC,CAChB,CAAC;EAAA,CACV,CAAC;AAEL;AAAC,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcnC,oBAAoB","ignoreList":[]}
1
+ {"version":3,"names":["_components","require","_i18n","_blocks","_data","_blockEditor","_url","_coreData","_store","_lockUnlock","_jsxRuntime","PatternsManageButton","clientId","canRemove","isVisible","managePatternsUrl","useSelect","select","getBlock","canRemoveBlock","getBlockCount","blockEditorStore","canUser","coreStore","reusableBlock","isReusableBlock","kind","name","id","attributes","ref","innerBlockCount","addQueryArgs","path","post_type","convertSyncedPatternToStatic","unlock","useDispatch","patternsStore","jsxs","Fragment","children","jsx","MenuItem","onClick","__","href","_default","exports","default"],"sources":["@wordpress/patterns/src/components/patterns-manage-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { isReusableBlock } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { addQueryArgs } from '@wordpress/url';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as patternsStore } from '../store';\nimport { unlock } from '../lock-unlock';\n\nfunction PatternsManageButton( { clientId } ) {\n\tconst { canRemove, isVisible, managePatternsUrl } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, canRemoveBlock, getBlockCount } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst reusableBlock = getBlock( clientId );\n\n\t\t\treturn {\n\t\t\t\tcanRemove: canRemoveBlock( clientId ),\n\t\t\t\tisVisible:\n\t\t\t\t\t!! reusableBlock &&\n\t\t\t\t\tisReusableBlock( reusableBlock ) &&\n\t\t\t\t\t!! canUser( 'update', {\n\t\t\t\t\t\tkind: 'postType',\n\t\t\t\t\t\tname: 'wp_block',\n\t\t\t\t\t\tid: reusableBlock.attributes.ref,\n\t\t\t\t\t} ),\n\t\t\t\tinnerBlockCount: getBlockCount( clientId ),\n\t\t\t\t// The site editor and templates both check whether the user\n\t\t\t\t// has edit_theme_options capabilities. We can leverage that here\n\t\t\t\t// and omit the manage patterns link if the user can't access it.\n\t\t\t\tmanagePatternsUrl: canUser( 'create', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_template',\n\t\t\t\t} )\n\t\t\t\t\t? addQueryArgs( 'site-editor.php', {\n\t\t\t\t\t\t\tpath: '/patterns',\n\t\t\t\t\t } )\n\t\t\t\t\t: addQueryArgs( 'edit.php', {\n\t\t\t\t\t\t\tpost_type: 'wp_block',\n\t\t\t\t\t } ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t// Ignore reason: false positive of the lint rule.\n\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\tconst { convertSyncedPatternToStatic } = unlock(\n\t\tuseDispatch( patternsStore )\n\t);\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ canRemove && (\n\t\t\t\t<MenuItem\n\t\t\t\t\tonClick={ () => convertSyncedPatternToStatic( clientId ) }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Detach' ) }\n\t\t\t\t</MenuItem>\n\t\t\t) }\n\t\t\t<MenuItem href={ managePatternsUrl }>\n\t\t\t\t{ __( 'Manage patterns' ) }\n\t\t\t</MenuItem>\n\t\t</>\n\t);\n}\n\nexport default PatternsManageButton;\n"],"mappings":";;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,IAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AAKA,IAAAO,MAAA,GAAAP,OAAA;AACA,IAAAQ,WAAA,GAAAR,OAAA;AAAwC,IAAAS,WAAA,GAAAT,OAAA;AAfxC;AACA;AACA;;AASA;AACA;AACA;;AAIA,SAASU,oBAAoBA,CAAE;EAAEC;AAAS,CAAC,EAAG;EAC7C,MAAM;IAAEC,SAAS;IAAEC,SAAS;IAAEC;EAAkB,CAAC,GAAG,IAAAC,eAAS,EAC1DC,MAAM,IAAM;IACb,MAAM;MAAEC,QAAQ;MAAEC,cAAc;MAAEC;IAAc,CAAC,GAChDH,MAAM,CAAEI,kBAAiB,CAAC;IAC3B,MAAM;MAAEC;IAAQ,CAAC,GAAGL,MAAM,CAAEM,eAAU,CAAC;IACvC,MAAMC,aAAa,GAAGN,QAAQ,CAAEN,QAAS,CAAC;IAE1C,OAAO;MACNC,SAAS,EAAEM,cAAc,CAAEP,QAAS,CAAC;MACrCE,SAAS,EACR,CAAC,CAAEU,aAAa,IAChB,IAAAC,uBAAe,EAAED,aAAc,CAAC,IAChC,CAAC,CAAEF,OAAO,CAAE,QAAQ,EAAE;QACrBI,IAAI,EAAE,UAAU;QAChBC,IAAI,EAAE,UAAU;QAChBC,EAAE,EAAEJ,aAAa,CAACK,UAAU,CAACC;MAC9B,CAAE,CAAC;MACJC,eAAe,EAAEX,aAAa,CAAER,QAAS,CAAC;MAC1C;MACA;MACA;MACAG,iBAAiB,EAAEO,OAAO,CAAE,QAAQ,EAAE;QACrCI,IAAI,EAAE,UAAU;QAChBC,IAAI,EAAE;MACP,CAAE,CAAC,GACA,IAAAK,iBAAY,EAAE,iBAAiB,EAAE;QACjCC,IAAI,EAAE;MACN,CAAE,CAAC,GACH,IAAAD,iBAAY,EAAE,UAAU,EAAE;QAC1BE,SAAS,EAAE;MACX,CAAE;IACN,CAAC;EACF,CAAC,EACD,CAAEtB,QAAQ,CACX,CAAC;;EAED;EACA;EACA,MAAM;IAAEuB;EAA6B,CAAC,GAAG,IAAAC,kBAAM,EAC9C,IAAAC,iBAAW,EAAEC,YAAc,CAC5B,CAAC;EAED,IAAK,CAAExB,SAAS,EAAG;IAClB,OAAO,IAAI;EACZ;EAEA,oBACC,IAAAJ,WAAA,CAAA6B,IAAA,EAAA7B,WAAA,CAAA8B,QAAA;IAAAC,QAAA,GACG5B,SAAS,iBACV,IAAAH,WAAA,CAAAgC,GAAA,EAAC1C,WAAA,CAAA2C,QAAQ;MACRC,OAAO,EAAGA,CAAA,KAAMT,4BAA4B,CAAEvB,QAAS,CAAG;MAAA6B,QAAA,EAExD,IAAAI,QAAE,EAAE,QAAS;IAAC,CACP,CACV,eACD,IAAAnC,WAAA,CAAAgC,GAAA,EAAC1C,WAAA,CAAA2C,QAAQ;MAACG,IAAI,EAAG/B,iBAAmB;MAAA0B,QAAA,EACjC,IAAAI,QAAE,EAAE,iBAAkB;IAAC,CAChB,CAAC;EAAA,CACV,CAAC;AAEL;AAAC,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEctC,oBAAoB","ignoreList":[]}
@@ -64,8 +64,7 @@ function ResetOverridesControl(props) {
64
64
  [CONTENT]: newOverrides
65
65
  });
66
66
  }
67
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockEditor.BlockControls, {
68
- group: "other",
67
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockEditor.__unstableBlockToolbarLastItem, {
69
68
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToolbarGroup, {
70
69
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToolbarButton, {
71
70
  onClick: onClick,
@@ -1 +1 @@
1
- {"version":3,"names":["_blockEditor","require","_components","_data","_i18n","_jsxRuntime","CONTENT","ResetOverridesControl","props","name","attributes","metadata","registry","useRegistry","isOverriden","useSelect","select","getBlockAttributes","getBlockParentsByBlockName","blockEditorStore","patternClientId","clientId","overrides","hasOwnProperty","onClick","updateBlockAttributes","__unstableMarkLastChangeAsPersistent","dispatch","newOverrides","Object","keys","length","undefined","jsx","BlockControls","group","children","ToolbarGroup","ToolbarButton","disabled","__"],"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 { useRegistry, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\n\nconst CONTENT = 'content';\n\nexport default function ResetOverridesControl( props ) {\n\tconst name = props.attributes.metadata?.name;\n\tconst registry = useRegistry();\n\tconst isOverriden = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! name ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { getBlockAttributes, getBlockParentsByBlockName } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst [ patternClientId ] = getBlockParentsByBlockName(\n\t\t\t\tprops.clientId,\n\t\t\t\t'core/block',\n\t\t\t\ttrue\n\t\t\t);\n\n\t\t\tif ( ! patternClientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst overrides = getBlockAttributes( patternClientId )[ CONTENT ];\n\n\t\t\tif ( ! overrides ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn overrides.hasOwnProperty( name );\n\t\t},\n\t\t[ props.clientId, name ]\n\t);\n\n\tfunction onClick() {\n\t\tconst { getBlockAttributes, getBlockParentsByBlockName } =\n\t\t\tregistry.select( blockEditorStore );\n\t\tconst [ patternClientId ] = getBlockParentsByBlockName(\n\t\t\tprops.clientId,\n\t\t\t'core/block',\n\t\t\ttrue\n\t\t);\n\n\t\tif ( ! patternClientId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst overrides = getBlockAttributes( patternClientId )[ CONTENT ];\n\n\t\tif ( ! overrides.hasOwnProperty( name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { updateBlockAttributes, __unstableMarkLastChangeAsPersistent } =\n\t\t\tregistry.dispatch( blockEditorStore );\n\t\t__unstableMarkLastChangeAsPersistent();\n\n\t\tlet newOverrides = { ...overrides };\n\t\tdelete newOverrides[ name ];\n\n\t\tif ( ! Object.keys( newOverrides ).length ) {\n\t\t\tnewOverrides = undefined;\n\t\t}\n\n\t\tupdateBlockAttributes( patternClientId, {\n\t\t\t[ CONTENT ]: newOverrides,\n\t\t} );\n\t}\n\n\treturn (\n\t\t<BlockControls group=\"other\">\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton onClick={ onClick } disabled={ ! isOverriden }>\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,KAAA,GAAAH,OAAA;AAAqC,IAAAI,WAAA,GAAAJ,OAAA;AATrC;AACA;AACA;;AASA,MAAMK,OAAO,GAAG,SAAS;AAEV,SAASC,qBAAqBA,CAAEC,KAAK,EAAG;EACtD,MAAMC,IAAI,GAAGD,KAAK,CAACE,UAAU,CAACC,QAAQ,EAAEF,IAAI;EAC5C,MAAMG,QAAQ,GAAG,IAAAC,iBAAW,EAAC,CAAC;EAC9B,MAAMC,WAAW,GAAG,IAAAC,eAAS,EAC1BC,MAAM,IAAM;IACb,IAAK,CAAEP,IAAI,EAAG;MACb;IACD;IAEA,MAAM;MAAEQ,kBAAkB;MAAEC;IAA2B,CAAC,GACvDF,MAAM,CAAEG,kBAAiB,CAAC;IAC3B,MAAM,CAAEC,eAAe,CAAE,GAAGF,0BAA0B,CACrDV,KAAK,CAACa,QAAQ,EACd,YAAY,EACZ,IACD,CAAC;IAED,IAAK,CAAED,eAAe,EAAG;MACxB;IACD;IAEA,MAAME,SAAS,GAAGL,kBAAkB,CAAEG,eAAgB,CAAC,CAAEd,OAAO,CAAE;IAElE,IAAK,CAAEgB,SAAS,EAAG;MAClB;IACD;IAEA,OAAOA,SAAS,CAACC,cAAc,CAAEd,IAAK,CAAC;EACxC,CAAC,EACD,CAAED,KAAK,CAACa,QAAQ,EAAEZ,IAAI,CACvB,CAAC;EAED,SAASe,OAAOA,CAAA,EAAG;IAClB,MAAM;MAAEP,kBAAkB;MAAEC;IAA2B,CAAC,GACvDN,QAAQ,CAACI,MAAM,CAAEG,kBAAiB,CAAC;IACpC,MAAM,CAAEC,eAAe,CAAE,GAAGF,0BAA0B,CACrDV,KAAK,CAACa,QAAQ,EACd,YAAY,EACZ,IACD,CAAC;IAED,IAAK,CAAED,eAAe,EAAG;MACxB;IACD;IAEA,MAAME,SAAS,GAAGL,kBAAkB,CAAEG,eAAgB,CAAC,CAAEd,OAAO,CAAE;IAElE,IAAK,CAAEgB,SAAS,CAACC,cAAc,CAAEd,IAAK,CAAC,EAAG;MACzC;IACD;IAEA,MAAM;MAAEgB,qBAAqB;MAAEC;IAAqC,CAAC,GACpEd,QAAQ,CAACe,QAAQ,CAAER,kBAAiB,CAAC;IACtCO,oCAAoC,CAAC,CAAC;IAEtC,IAAIE,YAAY,GAAG;MAAE,GAAGN;IAAU,CAAC;IACnC,OAAOM,YAAY,CAAEnB,IAAI,CAAE;IAE3B,IAAK,CAAEoB,MAAM,CAACC,IAAI,CAAEF,YAAa,CAAC,CAACG,MAAM,EAAG;MAC3CH,YAAY,GAAGI,SAAS;IACzB;IAEAP,qBAAqB,CAAEL,eAAe,EAAE;MACvC,CAAEd,OAAO,GAAIsB;IACd,CAAE,CAAC;EACJ;EAEA,oBACC,IAAAvB,WAAA,CAAA4B,GAAA,EAACjC,YAAA,CAAAkC,aAAa;IAACC,KAAK,EAAC,OAAO;IAAAC,QAAA,eAC3B,IAAA/B,WAAA,CAAA4B,GAAA,EAAC/B,WAAA,CAAAmC,YAAY;MAAAD,QAAA,eACZ,IAAA/B,WAAA,CAAA4B,GAAA,EAAC/B,WAAA,CAAAoC,aAAa;QAACd,OAAO,EAAGA,OAAS;QAACe,QAAQ,EAAG,CAAEzB,WAAa;QAAAsB,QAAA,EAC1D,IAAAI,QAAE,EAAE,OAAQ;MAAC,CACD;IAAC,CACH;EAAC,CACD,CAAC;AAElB","ignoreList":[]}
1
+ {"version":3,"names":["_blockEditor","require","_components","_data","_i18n","_jsxRuntime","CONTENT","ResetOverridesControl","props","name","attributes","metadata","registry","useRegistry","isOverriden","useSelect","select","getBlockAttributes","getBlockParentsByBlockName","blockEditorStore","patternClientId","clientId","overrides","hasOwnProperty","onClick","updateBlockAttributes","__unstableMarkLastChangeAsPersistent","dispatch","newOverrides","Object","keys","length","undefined","jsx","__unstableBlockToolbarLastItem","children","ToolbarGroup","ToolbarButton","disabled","__"],"sources":["@wordpress/patterns/src/components/reset-overrides-control.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tstore as blockEditorStore,\n\t__unstableBlockToolbarLastItem as BlockToolbarLastItem,\n} from '@wordpress/block-editor';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { useRegistry, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\n\nconst CONTENT = 'content';\n\nexport default function ResetOverridesControl( props ) {\n\tconst name = props.attributes.metadata?.name;\n\tconst registry = useRegistry();\n\tconst isOverriden = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! name ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { getBlockAttributes, getBlockParentsByBlockName } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst [ patternClientId ] = getBlockParentsByBlockName(\n\t\t\t\tprops.clientId,\n\t\t\t\t'core/block',\n\t\t\t\ttrue\n\t\t\t);\n\n\t\t\tif ( ! patternClientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst overrides = getBlockAttributes( patternClientId )[ CONTENT ];\n\n\t\t\tif ( ! overrides ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn overrides.hasOwnProperty( name );\n\t\t},\n\t\t[ props.clientId, name ]\n\t);\n\n\tfunction onClick() {\n\t\tconst { getBlockAttributes, getBlockParentsByBlockName } =\n\t\t\tregistry.select( blockEditorStore );\n\t\tconst [ patternClientId ] = getBlockParentsByBlockName(\n\t\t\tprops.clientId,\n\t\t\t'core/block',\n\t\t\ttrue\n\t\t);\n\n\t\tif ( ! patternClientId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst overrides = getBlockAttributes( patternClientId )[ CONTENT ];\n\n\t\tif ( ! overrides.hasOwnProperty( name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { updateBlockAttributes, __unstableMarkLastChangeAsPersistent } =\n\t\t\tregistry.dispatch( blockEditorStore );\n\t\t__unstableMarkLastChangeAsPersistent();\n\n\t\tlet newOverrides = { ...overrides };\n\t\tdelete newOverrides[ name ];\n\n\t\tif ( ! Object.keys( newOverrides ).length ) {\n\t\t\tnewOverrides = undefined;\n\t\t}\n\n\t\tupdateBlockAttributes( patternClientId, {\n\t\t\t[ CONTENT ]: newOverrides,\n\t\t} );\n\t}\n\n\treturn (\n\t\t<BlockToolbarLastItem>\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton onClick={ onClick } disabled={ ! isOverriden }>\n\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t</ToolbarButton>\n\t\t\t</ToolbarGroup>\n\t\t</BlockToolbarLastItem>\n\t);\n}\n"],"mappings":";;;;;;AAGA,IAAAA,YAAA,GAAAC,OAAA;AAIA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAAqC,IAAAI,WAAA,GAAAJ,OAAA;AATrC;AACA;AACA;;AASA,MAAMK,OAAO,GAAG,SAAS;AAEV,SAASC,qBAAqBA,CAAEC,KAAK,EAAG;EACtD,MAAMC,IAAI,GAAGD,KAAK,CAACE,UAAU,CAACC,QAAQ,EAAEF,IAAI;EAC5C,MAAMG,QAAQ,GAAG,IAAAC,iBAAW,EAAC,CAAC;EAC9B,MAAMC,WAAW,GAAG,IAAAC,eAAS,EAC1BC,MAAM,IAAM;IACb,IAAK,CAAEP,IAAI,EAAG;MACb;IACD;IAEA,MAAM;MAAEQ,kBAAkB;MAAEC;IAA2B,CAAC,GACvDF,MAAM,CAAEG,kBAAiB,CAAC;IAC3B,MAAM,CAAEC,eAAe,CAAE,GAAGF,0BAA0B,CACrDV,KAAK,CAACa,QAAQ,EACd,YAAY,EACZ,IACD,CAAC;IAED,IAAK,CAAED,eAAe,EAAG;MACxB;IACD;IAEA,MAAME,SAAS,GAAGL,kBAAkB,CAAEG,eAAgB,CAAC,CAAEd,OAAO,CAAE;IAElE,IAAK,CAAEgB,SAAS,EAAG;MAClB;IACD;IAEA,OAAOA,SAAS,CAACC,cAAc,CAAEd,IAAK,CAAC;EACxC,CAAC,EACD,CAAED,KAAK,CAACa,QAAQ,EAAEZ,IAAI,CACvB,CAAC;EAED,SAASe,OAAOA,CAAA,EAAG;IAClB,MAAM;MAAEP,kBAAkB;MAAEC;IAA2B,CAAC,GACvDN,QAAQ,CAACI,MAAM,CAAEG,kBAAiB,CAAC;IACpC,MAAM,CAAEC,eAAe,CAAE,GAAGF,0BAA0B,CACrDV,KAAK,CAACa,QAAQ,EACd,YAAY,EACZ,IACD,CAAC;IAED,IAAK,CAAED,eAAe,EAAG;MACxB;IACD;IAEA,MAAME,SAAS,GAAGL,kBAAkB,CAAEG,eAAgB,CAAC,CAAEd,OAAO,CAAE;IAElE,IAAK,CAAEgB,SAAS,CAACC,cAAc,CAAEd,IAAK,CAAC,EAAG;MACzC;IACD;IAEA,MAAM;MAAEgB,qBAAqB;MAAEC;IAAqC,CAAC,GACpEd,QAAQ,CAACe,QAAQ,CAAER,kBAAiB,CAAC;IACtCO,oCAAoC,CAAC,CAAC;IAEtC,IAAIE,YAAY,GAAG;MAAE,GAAGN;IAAU,CAAC;IACnC,OAAOM,YAAY,CAAEnB,IAAI,CAAE;IAE3B,IAAK,CAAEoB,MAAM,CAACC,IAAI,CAAEF,YAAa,CAAC,CAACG,MAAM,EAAG;MAC3CH,YAAY,GAAGI,SAAS;IACzB;IAEAP,qBAAqB,CAAEL,eAAe,EAAE;MACvC,CAAEd,OAAO,GAAIsB;IACd,CAAE,CAAC;EACJ;EAEA,oBACC,IAAAvB,WAAA,CAAA4B,GAAA,EAACjC,YAAA,CAAAkC,8BAAoB;IAAAC,QAAA,eACpB,IAAA9B,WAAA,CAAA4B,GAAA,EAAC/B,WAAA,CAAAkC,YAAY;MAAAD,QAAA,eACZ,IAAA9B,WAAA,CAAA4B,GAAA,EAAC/B,WAAA,CAAAmC,aAAa;QAACb,OAAO,EAAGA,OAAS;QAACc,QAAQ,EAAG,CAAExB,WAAa;QAAAqB,QAAA,EAC1D,IAAAI,QAAE,EAAE,OAAQ;MAAC,CACD;IAAC,CACH;EAAC,CACM,CAAC;AAEzB","ignoreList":[]}
@@ -103,6 +103,7 @@ export function CreatePatternModalContents({
103
103
  onChange: setCategoryTerms,
104
104
  categoryMap: categoryMap
105
105
  }), /*#__PURE__*/_jsx(ToggleControl, {
106
+ __nextHasNoMarginBottom: true,
106
107
  label: _x('Synced', 'pattern (singular)'),
107
108
  help: __('Sync this pattern across multiple locations.'),
108
109
  checked: syncType === PATTERN_SYNC_TYPES.full,
@@ -1 +1 @@
1
- {"version":3,"names":["Modal","Button","TextControl","__experimentalHStack","HStack","__experimentalVStack","VStack","ToggleControl","__","_x","useState","useDispatch","useSelect","store","noticesStore","coreStore","PATTERN_DEFAULT_CATEGORY","PATTERN_SYNC_TYPES","PATTERN_TYPES","patternsStore","CategorySelector","useAddPatternCategory","unlock","jsx","_jsx","jsxs","_jsxs","CreatePatternModal","className","modalTitle","restProps","defaultModalTitle","select","getPostType","user","labels","add_new_item","title","onRequestClose","onClose","overlayClassName","focusOnMount","size","children","CreatePatternModalContents","confirmLabel","defaultCategories","content","onError","onSuccess","defaultSyncType","full","defaultTitle","syncType","setSyncType","categoryTerms","setCategoryTerms","setTitle","isSaving","setIsSaving","createPattern","createErrorNotice","categoryMap","findOrCreateTerm","onCreate","patternTitle","sync","categories","Promise","all","map","termName","newPattern","pattern","categoryId","error","message","type","id","onSubmit","event","preventDefault","spacing","label","value","onChange","placeholder","__nextHasNoMarginBottom","__next40pxDefaultSize","help","checked","unsynced","justify","variant","onClick","isBusy"],"sources":["@wordpress/patterns/src/components/create-pattern-modal.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tModal,\n\tButton,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tToggleControl,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_SYNC_TYPES,\n\tPATTERN_TYPES,\n} from '../constants';\nimport { store as patternsStore } from '../store';\nimport CategorySelector from './category-selector';\nimport { useAddPatternCategory } from '../private-hooks';\nimport { unlock } from '../lock-unlock';\n\nexport default function CreatePatternModal( {\n\tclassName = 'patterns-menu-items__convert-modal',\n\tmodalTitle,\n\t...restProps\n} ) {\n\tconst defaultModalTitle = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getPostType( PATTERN_TYPES.user )?.labels\n\t\t\t\t?.add_new_item,\n\t\t[]\n\t);\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ modalTitle || defaultModalTitle }\n\t\t\tonRequestClose={ restProps.onClose }\n\t\t\toverlayClassName={ className }\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\tsize=\"small\"\n\t\t>\n\t\t\t<CreatePatternModalContents { ...restProps } />\n\t\t</Modal>\n\t);\n}\n\nexport function CreatePatternModalContents( {\n\tconfirmLabel = __( 'Add' ),\n\tdefaultCategories = [],\n\tcontent,\n\tonClose,\n\tonError,\n\tonSuccess,\n\tdefaultSyncType = PATTERN_SYNC_TYPES.full,\n\tdefaultTitle = '',\n} ) {\n\tconst [ syncType, setSyncType ] = useState( defaultSyncType );\n\tconst [ categoryTerms, setCategoryTerms ] = useState( defaultCategories );\n\tconst [ title, setTitle ] = useState( defaultTitle );\n\n\tconst [ isSaving, setIsSaving ] = useState( false );\n\tconst { createPattern } = unlock( useDispatch( patternsStore ) );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tconst { categoryMap, findOrCreateTerm } = useAddPatternCategory();\n\n\tasync function onCreate( patternTitle, sync ) {\n\t\tif ( ! title || isSaving ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tsetIsSaving( true );\n\t\t\tconst categories = await Promise.all(\n\t\t\t\tcategoryTerms.map( ( termName ) =>\n\t\t\t\t\tfindOrCreateTerm( termName )\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tconst newPattern = await createPattern(\n\t\t\t\tpatternTitle,\n\t\t\t\tsync,\n\t\t\t\ttypeof content === 'function' ? content() : content,\n\t\t\t\tcategories\n\t\t\t);\n\t\t\tonSuccess( {\n\t\t\t\tpattern: newPattern,\n\t\t\t\tcategoryId: PATTERN_DEFAULT_CATEGORY,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'pattern-create',\n\t\t\t} );\n\t\t\tonError?.();\n\t\t} finally {\n\t\t\tsetIsSaving( false );\n\t\t\tsetCategoryTerms( [] );\n\t\t\tsetTitle( '' );\n\t\t}\n\t}\n\n\treturn (\n\t\t<form\n\t\t\tonSubmit={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonCreate( title, syncType );\n\t\t\t} }\n\t\t>\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<TextControl\n\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\tvalue={ title }\n\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\tplaceholder={ __( 'My pattern' ) }\n\t\t\t\t\tclassName=\"patterns-create-modal__name-input\"\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t/>\n\t\t\t\t<CategorySelector\n\t\t\t\t\tcategoryTerms={ categoryTerms }\n\t\t\t\t\tonChange={ setCategoryTerms }\n\t\t\t\t\tcategoryMap={ categoryMap }\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ _x( 'Synced', 'pattern (singular)' ) }\n\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t'Sync this pattern across multiple locations.'\n\t\t\t\t\t) }\n\t\t\t\t\tchecked={ syncType === PATTERN_SYNC_TYPES.full }\n\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\tsetSyncType(\n\t\t\t\t\t\t\tsyncType === PATTERN_SYNC_TYPES.full\n\t\t\t\t\t\t\t\t? PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t\t\t\t\t: PATTERN_SYNC_TYPES.full\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\taria-disabled={ ! title || isSaving }\n\t\t\t\t\t\tisBusy={ isSaving }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ confirmLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t</form>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Modal","Button","TextControl","__experimentalHStack","HStack","__experimentalVStack","VStack","ToggleControl","__","_x","useState","useDispatch","useSelect","store","noticesStore","coreStore","PATTERN_DEFAULT_CATEGORY","PATTERN_SYNC_TYPES","PATTERN_TYPES","patternsStore","CategorySelector","useAddPatternCategory","unlock","jsx","_jsx","jsxs","_jsxs","CreatePatternModal","className","modalTitle","restProps","defaultModalTitle","select","getPostType","user","labels","add_new_item","title","onRequestClose","onClose","overlayClassName","focusOnMount","size","children","CreatePatternModalContents","confirmLabel","defaultCategories","content","onError","onSuccess","defaultSyncType","full","defaultTitle","syncType","setSyncType","categoryTerms","setCategoryTerms","setTitle","isSaving","setIsSaving","createPattern","createErrorNotice","categoryMap","findOrCreateTerm","onCreate","patternTitle","sync","categories","Promise","all","map","termName","newPattern","pattern","categoryId","error","message","type","id","onSubmit","event","preventDefault","spacing","label","value","onChange","placeholder","__nextHasNoMarginBottom","__next40pxDefaultSize","help","checked","unsynced","justify","variant","onClick","isBusy"],"sources":["@wordpress/patterns/src/components/create-pattern-modal.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tModal,\n\tButton,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tToggleControl,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_SYNC_TYPES,\n\tPATTERN_TYPES,\n} from '../constants';\nimport { store as patternsStore } from '../store';\nimport CategorySelector from './category-selector';\nimport { useAddPatternCategory } from '../private-hooks';\nimport { unlock } from '../lock-unlock';\n\nexport default function CreatePatternModal( {\n\tclassName = 'patterns-menu-items__convert-modal',\n\tmodalTitle,\n\t...restProps\n} ) {\n\tconst defaultModalTitle = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getPostType( PATTERN_TYPES.user )?.labels\n\t\t\t\t?.add_new_item,\n\t\t[]\n\t);\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ modalTitle || defaultModalTitle }\n\t\t\tonRequestClose={ restProps.onClose }\n\t\t\toverlayClassName={ className }\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\tsize=\"small\"\n\t\t>\n\t\t\t<CreatePatternModalContents { ...restProps } />\n\t\t</Modal>\n\t);\n}\n\nexport function CreatePatternModalContents( {\n\tconfirmLabel = __( 'Add' ),\n\tdefaultCategories = [],\n\tcontent,\n\tonClose,\n\tonError,\n\tonSuccess,\n\tdefaultSyncType = PATTERN_SYNC_TYPES.full,\n\tdefaultTitle = '',\n} ) {\n\tconst [ syncType, setSyncType ] = useState( defaultSyncType );\n\tconst [ categoryTerms, setCategoryTerms ] = useState( defaultCategories );\n\tconst [ title, setTitle ] = useState( defaultTitle );\n\n\tconst [ isSaving, setIsSaving ] = useState( false );\n\tconst { createPattern } = unlock( useDispatch( patternsStore ) );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tconst { categoryMap, findOrCreateTerm } = useAddPatternCategory();\n\n\tasync function onCreate( patternTitle, sync ) {\n\t\tif ( ! title || isSaving ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tsetIsSaving( true );\n\t\t\tconst categories = await Promise.all(\n\t\t\t\tcategoryTerms.map( ( termName ) =>\n\t\t\t\t\tfindOrCreateTerm( termName )\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tconst newPattern = await createPattern(\n\t\t\t\tpatternTitle,\n\t\t\t\tsync,\n\t\t\t\ttypeof content === 'function' ? content() : content,\n\t\t\t\tcategories\n\t\t\t);\n\t\t\tonSuccess( {\n\t\t\t\tpattern: newPattern,\n\t\t\t\tcategoryId: PATTERN_DEFAULT_CATEGORY,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'pattern-create',\n\t\t\t} );\n\t\t\tonError?.();\n\t\t} finally {\n\t\t\tsetIsSaving( false );\n\t\t\tsetCategoryTerms( [] );\n\t\t\tsetTitle( '' );\n\t\t}\n\t}\n\n\treturn (\n\t\t<form\n\t\t\tonSubmit={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonCreate( title, syncType );\n\t\t\t} }\n\t\t>\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<TextControl\n\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\tvalue={ title }\n\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\tplaceholder={ __( 'My pattern' ) }\n\t\t\t\t\tclassName=\"patterns-create-modal__name-input\"\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t/>\n\t\t\t\t<CategorySelector\n\t\t\t\t\tcategoryTerms={ categoryTerms }\n\t\t\t\t\tonChange={ setCategoryTerms }\n\t\t\t\t\tcategoryMap={ categoryMap }\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ _x( 'Synced', 'pattern (singular)' ) }\n\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t'Sync this pattern across multiple locations.'\n\t\t\t\t\t) }\n\t\t\t\t\tchecked={ syncType === PATTERN_SYNC_TYPES.full }\n\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\tsetSyncType(\n\t\t\t\t\t\t\tsyncType === PATTERN_SYNC_TYPES.full\n\t\t\t\t\t\t\t\t? PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t\t\t\t\t: PATTERN_SYNC_TYPES.full\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\taria-disabled={ ! title || isSaving }\n\t\t\t\t\t\tisBusy={ isSaving }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ confirmLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t</form>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -73,7 +73,10 @@ export default function PatternConvertButton({
73
73
  hasBlockSupport(block.name, 'reusable', true)) &&
74
74
  // Hide when current doesn't have permission to do that.
75
75
  // Blocks refers to the wp_block post type, this checks the ability to create a post of that type.
76
- !!canUser('create', 'blocks');
76
+ !!canUser('create', {
77
+ kind: 'postType',
78
+ name: 'wp_block'
79
+ });
77
80
  return _canConvert;
78
81
  }, [clientIds, rootClientId]);
79
82
  const {
@@ -1 +1 @@
1
- {"version":3,"names":["hasBlockSupport","isReusableBlock","createBlock","serialize","store","blockEditorStore","useState","useCallback","MenuItem","symbol","useSelect","useDispatch","coreStore","__","sprintf","noticesStore","patternsStore","CreatePatternModal","unlock","PATTERN_SYNC_TYPES","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","PatternConvertButton","clientIds","rootClientId","closeBlockSettingsMenu","createSuccessNotice","replaceBlocks","setEditingPattern","isModalOpen","setIsModalOpen","canConvert","select","_getBlocksByClientId","canUser","getBlocksByClientId","canInsertBlockType","getBlockRootClientId","rootId","length","undefined","blocks","isReusable","getEntityRecord","attributes","ref","_canConvert","every","block","isValid","name","getContent","handleSuccess","pattern","wp_pattern_sync_status","unsynced","newBlock","id","clientId","title","raw","type","children","icon","onClick","content","onSuccess","onError","onClose"],"sources":["@wordpress/patterns/src/components/pattern-convert-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\thasBlockSupport,\n\tisReusableBlock,\n\tcreateBlock,\n\tserialize,\n} from '@wordpress/blocks';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useState, useCallback } from '@wordpress/element';\nimport { MenuItem } from '@wordpress/components';\nimport { symbol } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\n/**\n * Internal dependencies\n */\nimport { store as patternsStore } from '../store';\nimport CreatePatternModal from './create-pattern-modal';\nimport { unlock } from '../lock-unlock';\nimport { PATTERN_SYNC_TYPES } from '../constants';\n\n/**\n * Menu control to convert block(s) to a pattern block.\n *\n * @param {Object} props Component props.\n * @param {string[]} props.clientIds Client ids of selected blocks.\n * @param {string} props.rootClientId ID of the currently selected top-level block.\n * @param {()=>void} props.closeBlockSettingsMenu Callback to close the block settings menu dropdown.\n * @return {import('react').ComponentType} The menu control or null.\n */\nexport default function PatternConvertButton( {\n\tclientIds,\n\trootClientId,\n\tcloseBlockSettingsMenu,\n} ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\t// Ignore reason: false positive of the lint rule.\n\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\tconst { setEditingPattern } = unlock( useDispatch( patternsStore ) );\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst canConvert = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst {\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst rootId =\n\t\t\t\trootClientId ||\n\t\t\t\t( clientIds.length > 0\n\t\t\t\t\t? getBlockRootClientId( clientIds[ 0 ] )\n\t\t\t\t\t: undefined );\n\n\t\t\tconst blocks = getBlocksByClientId( clientIds ) ?? [];\n\n\t\t\tconst isReusable =\n\t\t\t\tblocks.length === 1 &&\n\t\t\t\tblocks[ 0 ] &&\n\t\t\t\tisReusableBlock( blocks[ 0 ] ) &&\n\t\t\t\t!! select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblocks[ 0 ].attributes.ref\n\t\t\t\t);\n\n\t\t\tconst _canConvert =\n\t\t\t\t// Hide when this is already a synced pattern.\n\t\t\t\t! isReusable &&\n\t\t\t\t// Hide when patterns are disabled.\n\t\t\t\tcanInsertBlockType( 'core/block', rootId ) &&\n\t\t\t\tblocks.every(\n\t\t\t\t\t( block ) =>\n\t\t\t\t\t\t// Guard against the case where a regular block has *just* been converted.\n\t\t\t\t\t\t!! block &&\n\t\t\t\t\t\t// Hide on invalid blocks.\n\t\t\t\t\t\tblock.isValid &&\n\t\t\t\t\t\t// Hide when block doesn't support being made into a pattern.\n\t\t\t\t\t\thasBlockSupport( block.name, 'reusable', true )\n\t\t\t\t) &&\n\t\t\t\t// Hide when current doesn't have permission to do that.\n\t\t\t\t// Blocks refers to the wp_block post type, this checks the ability to create a post of that type.\n\t\t\t\t!! canUser( 'create', 'blocks' );\n\n\t\t\treturn _canConvert;\n\t\t},\n\t\t[ clientIds, rootClientId ]\n\t);\n\tconst { getBlocksByClientId } = useSelect( blockEditorStore );\n\tconst getContent = useCallback(\n\t\t() => serialize( getBlocksByClientId( clientIds ) ),\n\t\t[ getBlocksByClientId, clientIds ]\n\t);\n\n\tif ( ! canConvert ) {\n\t\treturn null;\n\t}\n\n\tconst handleSuccess = ( { pattern } ) => {\n\t\tif ( pattern.wp_pattern_sync_status !== PATTERN_SYNC_TYPES.unsynced ) {\n\t\t\tconst newBlock = createBlock( 'core/block', {\n\t\t\t\tref: pattern.id,\n\t\t\t} );\n\n\t\t\treplaceBlocks( clientIds, newBlock );\n\t\t\tsetEditingPattern( newBlock.clientId, true );\n\t\t\tcloseBlockSettingsMenu();\n\t\t}\n\n\t\tcreateSuccessNotice(\n\t\t\tpattern.wp_pattern_sync_status === PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t? sprintf(\n\t\t\t\t\t\t// translators: %s: the name the user has given to the pattern.\n\t\t\t\t\t\t__( 'Unsynced pattern created: %s' ),\n\t\t\t\t\t\tpattern.title.raw\n\t\t\t\t )\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t// translators: %s: the name the user has given to the pattern.\n\t\t\t\t\t\t__( 'Synced pattern created: %s' ),\n\t\t\t\t\t\tpattern.title.raw\n\t\t\t\t ),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'convert-to-pattern-success',\n\t\t\t}\n\t\t);\n\t\tsetIsModalOpen( false );\n\t};\n\treturn (\n\t\t<>\n\t\t\t<MenuItem\n\t\t\t\ticon={ symbol }\n\t\t\t\tonClick={ () => setIsModalOpen( true ) }\n\t\t\t\taria-expanded={ isModalOpen }\n\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t>\n\t\t\t\t{ __( 'Create pattern' ) }\n\t\t\t</MenuItem>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<CreatePatternModal\n\t\t\t\t\tcontent={ getContent }\n\t\t\t\t\tonSuccess={ ( pattern ) => {\n\t\t\t\t\t\thandleSuccess( pattern );\n\t\t\t\t\t} }\n\t\t\t\t\tonError={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t} }\n\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["hasBlockSupport","isReusableBlock","createBlock","serialize","store","blockEditorStore","useState","useCallback","MenuItem","symbol","useSelect","useDispatch","coreStore","__","sprintf","noticesStore","patternsStore","CreatePatternModal","unlock","PATTERN_SYNC_TYPES","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","PatternConvertButton","clientIds","rootClientId","closeBlockSettingsMenu","createSuccessNotice","replaceBlocks","setEditingPattern","isModalOpen","setIsModalOpen","canConvert","select","_getBlocksByClientId","canUser","getBlocksByClientId","canInsertBlockType","getBlockRootClientId","rootId","length","undefined","blocks","isReusable","getEntityRecord","attributes","ref","_canConvert","every","block","isValid","name","kind","getContent","handleSuccess","pattern","wp_pattern_sync_status","unsynced","newBlock","id","clientId","title","raw","type","children","icon","onClick","content","onSuccess","onError","onClose"],"sources":["@wordpress/patterns/src/components/pattern-convert-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\thasBlockSupport,\n\tisReusableBlock,\n\tcreateBlock,\n\tserialize,\n} from '@wordpress/blocks';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useState, useCallback } from '@wordpress/element';\nimport { MenuItem } from '@wordpress/components';\nimport { symbol } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\n/**\n * Internal dependencies\n */\nimport { store as patternsStore } from '../store';\nimport CreatePatternModal from './create-pattern-modal';\nimport { unlock } from '../lock-unlock';\nimport { PATTERN_SYNC_TYPES } from '../constants';\n\n/**\n * Menu control to convert block(s) to a pattern block.\n *\n * @param {Object} props Component props.\n * @param {string[]} props.clientIds Client ids of selected blocks.\n * @param {string} props.rootClientId ID of the currently selected top-level block.\n * @param {()=>void} props.closeBlockSettingsMenu Callback to close the block settings menu dropdown.\n * @return {import('react').ComponentType} The menu control or null.\n */\nexport default function PatternConvertButton( {\n\tclientIds,\n\trootClientId,\n\tcloseBlockSettingsMenu,\n} ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\t// Ignore reason: false positive of the lint rule.\n\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\tconst { setEditingPattern } = unlock( useDispatch( patternsStore ) );\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst canConvert = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst {\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst rootId =\n\t\t\t\trootClientId ||\n\t\t\t\t( clientIds.length > 0\n\t\t\t\t\t? getBlockRootClientId( clientIds[ 0 ] )\n\t\t\t\t\t: undefined );\n\n\t\t\tconst blocks = getBlocksByClientId( clientIds ) ?? [];\n\n\t\t\tconst isReusable =\n\t\t\t\tblocks.length === 1 &&\n\t\t\t\tblocks[ 0 ] &&\n\t\t\t\tisReusableBlock( blocks[ 0 ] ) &&\n\t\t\t\t!! select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblocks[ 0 ].attributes.ref\n\t\t\t\t);\n\n\t\t\tconst _canConvert =\n\t\t\t\t// Hide when this is already a synced pattern.\n\t\t\t\t! isReusable &&\n\t\t\t\t// Hide when patterns are disabled.\n\t\t\t\tcanInsertBlockType( 'core/block', rootId ) &&\n\t\t\t\tblocks.every(\n\t\t\t\t\t( block ) =>\n\t\t\t\t\t\t// Guard against the case where a regular block has *just* been converted.\n\t\t\t\t\t\t!! block &&\n\t\t\t\t\t\t// Hide on invalid blocks.\n\t\t\t\t\t\tblock.isValid &&\n\t\t\t\t\t\t// Hide when block doesn't support being made into a pattern.\n\t\t\t\t\t\thasBlockSupport( block.name, 'reusable', true )\n\t\t\t\t) &&\n\t\t\t\t// Hide when current doesn't have permission to do that.\n\t\t\t\t// Blocks refers to the wp_block post type, this checks the ability to create a post of that type.\n\t\t\t\t!! canUser( 'create', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_block',\n\t\t\t\t} );\n\n\t\t\treturn _canConvert;\n\t\t},\n\t\t[ clientIds, rootClientId ]\n\t);\n\tconst { getBlocksByClientId } = useSelect( blockEditorStore );\n\tconst getContent = useCallback(\n\t\t() => serialize( getBlocksByClientId( clientIds ) ),\n\t\t[ getBlocksByClientId, clientIds ]\n\t);\n\n\tif ( ! canConvert ) {\n\t\treturn null;\n\t}\n\n\tconst handleSuccess = ( { pattern } ) => {\n\t\tif ( pattern.wp_pattern_sync_status !== PATTERN_SYNC_TYPES.unsynced ) {\n\t\t\tconst newBlock = createBlock( 'core/block', {\n\t\t\t\tref: pattern.id,\n\t\t\t} );\n\n\t\t\treplaceBlocks( clientIds, newBlock );\n\t\t\tsetEditingPattern( newBlock.clientId, true );\n\t\t\tcloseBlockSettingsMenu();\n\t\t}\n\n\t\tcreateSuccessNotice(\n\t\t\tpattern.wp_pattern_sync_status === PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t? sprintf(\n\t\t\t\t\t\t// translators: %s: the name the user has given to the pattern.\n\t\t\t\t\t\t__( 'Unsynced pattern created: %s' ),\n\t\t\t\t\t\tpattern.title.raw\n\t\t\t\t )\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t// translators: %s: the name the user has given to the pattern.\n\t\t\t\t\t\t__( 'Synced pattern created: %s' ),\n\t\t\t\t\t\tpattern.title.raw\n\t\t\t\t ),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'convert-to-pattern-success',\n\t\t\t}\n\t\t);\n\t\tsetIsModalOpen( false );\n\t};\n\treturn (\n\t\t<>\n\t\t\t<MenuItem\n\t\t\t\ticon={ symbol }\n\t\t\t\tonClick={ () => setIsModalOpen( true ) }\n\t\t\t\taria-expanded={ isModalOpen }\n\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t>\n\t\t\t\t{ __( 'Create pattern' ) }\n\t\t\t</MenuItem>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<CreatePatternModal\n\t\t\t\t\tcontent={ getContent }\n\t\t\t\t\tonSuccess={ ( pattern ) => {\n\t\t\t\t\t\thandleSuccess( pattern );\n\t\t\t\t\t} }\n\t\t\t\t\tonError={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t} }\n\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SACCA,eAAe,EACfC,eAAe,EACfC,WAAW,EACXC,SAAS,QACH,mBAAmB;AAC1B,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;AACnE,SAASC,QAAQ,EAAEC,WAAW,QAAQ,oBAAoB;AAC1D,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,MAAM,QAAQ,kBAAkB;AACzC,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASP,KAAK,IAAIQ,SAAS,QAAQ,sBAAsB;AACzD,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASV,KAAK,IAAIW,YAAY,QAAQ,oBAAoB;AAC1D;AACA;AACA;AACA,SAASX,KAAK,IAAIY,aAAa,QAAQ,UAAU;AACjD,OAAOC,kBAAkB,MAAM,wBAAwB;AACvD,SAASC,MAAM,QAAQ,gBAAgB;AACvC,SAASC,kBAAkB,QAAQ,cAAc;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AASA,eAAe,SAASC,oBAAoBA,CAAE;EAC7CC,SAAS;EACTC,YAAY;EACZC;AACD,CAAC,EAAG;EACH,MAAM;IAAEC;EAAoB,CAAC,GAAGnB,WAAW,CAAEI,YAAa,CAAC;EAC3D,MAAM;IAAEgB;EAAc,CAAC,GAAGpB,WAAW,CAAEN,gBAAiB,CAAC;EACzD;EACA;EACA,MAAM;IAAE2B;EAAkB,CAAC,GAAGd,MAAM,CAAEP,WAAW,CAAEK,aAAc,CAAE,CAAC;EACpE,MAAM,CAAEiB,WAAW,EAAEC,cAAc,CAAE,GAAG5B,QAAQ,CAAE,KAAM,CAAC;EACzD,MAAM6B,UAAU,GAAGzB,SAAS,CACzB0B,MAAM,IAAM;IAAA,IAAAC,oBAAA;IACb,MAAM;MAAEC;IAAQ,CAAC,GAAGF,MAAM,CAAExB,SAAU,CAAC;IACvC,MAAM;MACL2B,mBAAmB;MACnBC,kBAAkB;MAClBC;IACD,CAAC,GAAGL,MAAM,CAAE/B,gBAAiB,CAAC;IAE9B,MAAMqC,MAAM,GACXd,YAAY,KACVD,SAAS,CAACgB,MAAM,GAAG,CAAC,GACnBF,oBAAoB,CAAEd,SAAS,CAAE,CAAC,CAAG,CAAC,GACtCiB,SAAS,CAAE;IAEf,MAAMC,MAAM,IAAAR,oBAAA,GAAGE,mBAAmB,CAAEZ,SAAU,CAAC,cAAAU,oBAAA,cAAAA,oBAAA,GAAI,EAAE;IAErD,MAAMS,UAAU,GACfD,MAAM,CAACF,MAAM,KAAK,CAAC,IACnBE,MAAM,CAAE,CAAC,CAAE,IACX5C,eAAe,CAAE4C,MAAM,CAAE,CAAC,CAAG,CAAC,IAC9B,CAAC,CAAET,MAAM,CAAExB,SAAU,CAAC,CAACmC,eAAe,CACrC,UAAU,EACV,UAAU,EACVF,MAAM,CAAE,CAAC,CAAE,CAACG,UAAU,CAACC,GACxB,CAAC;IAEF,MAAMC,WAAW;IAChB;IACA,CAAEJ,UAAU;IACZ;IACAN,kBAAkB,CAAE,YAAY,EAAEE,MAAO,CAAC,IAC1CG,MAAM,CAACM,KAAK,CACTC,KAAK;IACN;IACA,CAAC,CAAEA,KAAK;IACR;IACAA,KAAK,CAACC,OAAO;IACb;IACArD,eAAe,CAAEoD,KAAK,CAACE,IAAI,EAAE,UAAU,EAAE,IAAK,CAChD,CAAC;IACD;IACA;IACA,CAAC,CAAEhB,OAAO,CAAE,QAAQ,EAAE;MACrBiB,IAAI,EAAE,UAAU;MAChBD,IAAI,EAAE;IACP,CAAE,CAAC;IAEJ,OAAOJ,WAAW;EACnB,CAAC,EACD,CAAEvB,SAAS,EAAEC,YAAY,CAC1B,CAAC;EACD,MAAM;IAAEW;EAAoB,CAAC,GAAG7B,SAAS,CAAEL,gBAAiB,CAAC;EAC7D,MAAMmD,UAAU,GAAGjD,WAAW,CAC7B,MAAMJ,SAAS,CAAEoC,mBAAmB,CAAEZ,SAAU,CAAE,CAAC,EACnD,CAAEY,mBAAmB,EAAEZ,SAAS,CACjC,CAAC;EAED,IAAK,CAAEQ,UAAU,EAAG;IACnB,OAAO,IAAI;EACZ;EAEA,MAAMsB,aAAa,GAAGA,CAAE;IAAEC;EAAQ,CAAC,KAAM;IACxC,IAAKA,OAAO,CAACC,sBAAsB,KAAKxC,kBAAkB,CAACyC,QAAQ,EAAG;MACrE,MAAMC,QAAQ,GAAG3D,WAAW,CAAE,YAAY,EAAE;QAC3C+C,GAAG,EAAES,OAAO,CAACI;MACd,CAAE,CAAC;MAEH/B,aAAa,CAAEJ,SAAS,EAAEkC,QAAS,CAAC;MACpC7B,iBAAiB,CAAE6B,QAAQ,CAACE,QAAQ,EAAE,IAAK,CAAC;MAC5ClC,sBAAsB,CAAC,CAAC;IACzB;IAEAC,mBAAmB,CAClB4B,OAAO,CAACC,sBAAsB,KAAKxC,kBAAkB,CAACyC,QAAQ,GAC3D9C,OAAO;IACP;IACAD,EAAE,CAAE,8BAA+B,CAAC,EACpC6C,OAAO,CAACM,KAAK,CAACC,GACd,CAAC,GACDnD,OAAO;IACP;IACAD,EAAE,CAAE,4BAA6B,CAAC,EAClC6C,OAAO,CAACM,KAAK,CAACC,GACd,CAAC,EACJ;MACCC,IAAI,EAAE,UAAU;MAChBJ,EAAE,EAAE;IACL,CACD,CAAC;IACD5B,cAAc,CAAE,KAAM,CAAC;EACxB,CAAC;EACD,oBACCT,KAAA,CAAAF,SAAA;IAAA4C,QAAA,gBACC9C,IAAA,CAACb,QAAQ;MACR4D,IAAI,EAAG3D,MAAQ;MACf4D,OAAO,EAAGA,CAAA,KAAMnC,cAAc,CAAE,IAAK,CAAG;MACxC,iBAAgBD,WAAa;MAC7B,iBAAc,QAAQ;MAAAkC,QAAA,EAEpBtD,EAAE,CAAE,gBAAiB;IAAC,CACf,CAAC,EACToB,WAAW,iBACZZ,IAAA,CAACJ,kBAAkB;MAClBqD,OAAO,EAAGd,UAAY;MACtBe,SAAS,EAAKb,OAAO,IAAM;QAC1BD,aAAa,CAAEC,OAAQ,CAAC;MACzB,CAAG;MACHc,OAAO,EAAGA,CAAA,KAAM;QACftC,cAAc,CAAE,KAAM,CAAC;MACxB,CAAG;MACHuC,OAAO,EAAGA,CAAA,KAAM;QACfvC,cAAc,CAAE,KAAM,CAAC;MACxB;IAAG,CACH,CACD;EAAA,CACA,CAAC;AAEL","ignoreList":[]}
@@ -77,7 +77,7 @@ function PatternOverridesToolbarIndicator({
77
77
  })
78
78
  }),
79
79
  toggleProps: {
80
- describedBy: blockDescription,
80
+ description: blockDescription,
81
81
  ...toggleProps
82
82
  },
83
83
  menuProps: {
@@ -1 +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":[]}
1
+ {"version":3,"names":["useId","__","sprintf","DropdownMenu","ToolbarItem","__experimentalText","Text","store","blocksStore","useSelect","copy","blockEditorStore","BlockIcon","privateApis","blockEditorPrivateApis","BlockControls","unlock","PATTERN_OVERRIDES_BINDING_SOURCE","jsx","_jsx","Fragment","_Fragment","useBlockDisplayTitle","PatternOverridesToolbarIndicator","clientIds","isSingleBlockSelected","length","icon","firstBlockName","select","getBlockAttributes","getBlockNamesByClientId","getBlockType","getActiveBlockVariation","blockTypeNames","_firstBlockTypeName","firstBlockType","_icon","match","isSelectionOfSameType","Set","size","metadata","name","firstBlockTitle","clientId","maximumLength","blockDescription","toLowerCase","descriptionId","children","toggleProps","className","label","popoverProps","placement","showColors","description","menuProps","orientation","id","PatternOverridesBlockControls","hasPatternOverrides","hasParentPattern","getSelectedBlockClientIds","getBlockParentsByBlockName","selectedClientIds","_hasPatternOverrides","every","_getBlockAttributes$m","Object","values","bindings","some","binding","source","_hasParentPattern","group"],"sources":["@wordpress/patterns/src/components/pattern-overrides-block-controls.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useId } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarItem,\n\t__experimentalText as Text,\n} from '@wordpress/components';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\nimport {\n\tstore as blockEditorStore,\n\tBlockIcon,\n\tprivateApis as blockEditorPrivateApis,\n\tBlockControls,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\nimport { PATTERN_OVERRIDES_BINDING_SOURCE } from '../constants';\n\nconst { useBlockDisplayTitle } = unlock( blockEditorPrivateApis );\n\nfunction PatternOverridesToolbarIndicator( { clientIds } ) {\n\tconst isSingleBlockSelected = clientIds.length === 1;\n\tconst { icon, firstBlockName } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockAttributes, getBlockNamesByClientId } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { getBlockType, getActiveBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst blockTypeNames = getBlockNamesByClientId( clientIds );\n\t\t\tconst _firstBlockTypeName = blockTypeNames[ 0 ];\n\t\t\tconst firstBlockType = getBlockType( _firstBlockTypeName );\n\t\t\tlet _icon;\n\t\t\tif ( isSingleBlockSelected ) {\n\t\t\t\tconst match = getActiveBlockVariation(\n\t\t\t\t\t_firstBlockTypeName,\n\t\t\t\t\tgetBlockAttributes( clientIds[ 0 ] )\n\t\t\t\t);\n\t\t\t\t// Take into account active block variations.\n\t\t\t\t_icon = match?.icon || firstBlockType.icon;\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tnew Set( blockTypeNames ).size === 1;\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType ? firstBlockType.icon : copy;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ticon: _icon,\n\t\t\t\tfirstBlockName: getBlockAttributes( clientIds[ 0 ] ).metadata\n\t\t\t\t\t.name,\n\t\t\t};\n\t\t},\n\t\t[ clientIds, isSingleBlockSelected ]\n\t);\n\tconst firstBlockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\n\tconst blockDescription = isSingleBlockSelected\n\t\t? sprintf(\n\t\t\t\t/* translators: %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\tdescription: blockDescription,\n\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t} }\n\t\t\t\t\tmenuProps={ {\n\t\t\t\t\t\torientation: 'both',\n\t\t\t\t\t\t'aria-describedby': descriptionId,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ () => (\n\t\t\t\t\t\t<Text id={ descriptionId }>{ blockDescription }</Text>\n\t\t\t\t\t) }\n\t\t\t\t</DropdownMenu>\n\t\t\t) }\n\t\t</ToolbarItem>\n\t);\n}\n\nexport default function PatternOverridesBlockControls() {\n\tconst { clientIds, hasPatternOverrides, hasParentPattern } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst selectedClientIds = getSelectedBlockClientIds();\n\t\t\tconst _hasPatternOverrides = selectedClientIds.every(\n\t\t\t\t( clientId ) =>\n\t\t\t\t\tObject.values(\n\t\t\t\t\t\tgetBlockAttributes( clientId )?.metadata?.bindings ?? {}\n\t\t\t\t\t).some(\n\t\t\t\t\t\t( binding ) =>\n\t\t\t\t\t\t\tbinding?.source === PATTERN_OVERRIDES_BINDING_SOURCE\n\t\t\t\t\t)\n\t\t\t);\n\t\t\tconst _hasParentPattern = selectedClientIds.every(\n\t\t\t\t( clientId ) =>\n\t\t\t\t\tgetBlockParentsByBlockName( clientId, 'core/block', true )\n\t\t\t\t\t\t.length > 0\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tclientIds: selectedClientIds,\n\t\t\t\thasPatternOverrides: _hasPatternOverrides,\n\t\t\t\thasParentPattern: _hasParentPattern,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\treturn hasPatternOverrides && hasParentPattern ? (\n\t\t<BlockControls group=\"parent\">\n\t\t\t<PatternOverridesToolbarIndicator clientIds={ clientIds } />\n\t\t</BlockControls>\n\t) : null;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -36,12 +36,19 @@ function PatternsManageButton({
36
36
  const reusableBlock = getBlock(clientId);
37
37
  return {
38
38
  canRemove: canRemoveBlock(clientId),
39
- isVisible: !!reusableBlock && isReusableBlock(reusableBlock) && !!canUser('update', 'blocks', reusableBlock.attributes.ref),
39
+ isVisible: !!reusableBlock && isReusableBlock(reusableBlock) && !!canUser('update', {
40
+ kind: 'postType',
41
+ name: 'wp_block',
42
+ id: reusableBlock.attributes.ref
43
+ }),
40
44
  innerBlockCount: getBlockCount(clientId),
41
45
  // The site editor and templates both check whether the user
42
46
  // has edit_theme_options capabilities. We can leverage that here
43
47
  // and omit the manage patterns link if the user can't access it.
44
- managePatternsUrl: canUser('create', 'templates') ? addQueryArgs('site-editor.php', {
48
+ managePatternsUrl: canUser('create', {
49
+ kind: 'postType',
50
+ name: 'wp_template'
51
+ }) ? addQueryArgs('site-editor.php', {
45
52
  path: '/patterns'
46
53
  }) : addQueryArgs('edit.php', {
47
54
  post_type: 'wp_block'
@@ -1 +1 @@
1
- {"version":3,"names":["MenuItem","__","isReusableBlock","useSelect","useDispatch","store","blockEditorStore","addQueryArgs","coreStore","patternsStore","unlock","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","PatternsManageButton","clientId","canRemove","isVisible","managePatternsUrl","select","getBlock","canRemoveBlock","getBlockCount","canUser","reusableBlock","attributes","ref","innerBlockCount","path","post_type","convertSyncedPatternToStatic","children","onClick","href"],"sources":["@wordpress/patterns/src/components/patterns-manage-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { isReusableBlock } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { addQueryArgs } from '@wordpress/url';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as patternsStore } from '../store';\nimport { unlock } from '../lock-unlock';\n\nfunction PatternsManageButton( { clientId } ) {\n\tconst { canRemove, isVisible, managePatternsUrl } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, canRemoveBlock, getBlockCount } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst reusableBlock = getBlock( clientId );\n\n\t\t\treturn {\n\t\t\t\tcanRemove: canRemoveBlock( clientId ),\n\t\t\t\tisVisible:\n\t\t\t\t\t!! reusableBlock &&\n\t\t\t\t\tisReusableBlock( reusableBlock ) &&\n\t\t\t\t\t!! canUser(\n\t\t\t\t\t\t'update',\n\t\t\t\t\t\t'blocks',\n\t\t\t\t\t\treusableBlock.attributes.ref\n\t\t\t\t\t),\n\t\t\t\tinnerBlockCount: getBlockCount( clientId ),\n\t\t\t\t// The site editor and templates both check whether the user\n\t\t\t\t// has edit_theme_options capabilities. We can leverage that here\n\t\t\t\t// and omit the manage patterns link if the user can't access it.\n\t\t\t\tmanagePatternsUrl: canUser( 'create', 'templates' )\n\t\t\t\t\t? addQueryArgs( 'site-editor.php', {\n\t\t\t\t\t\t\tpath: '/patterns',\n\t\t\t\t\t } )\n\t\t\t\t\t: addQueryArgs( 'edit.php', {\n\t\t\t\t\t\t\tpost_type: 'wp_block',\n\t\t\t\t\t } ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t// Ignore reason: false positive of the lint rule.\n\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\tconst { convertSyncedPatternToStatic } = unlock(\n\t\tuseDispatch( patternsStore )\n\t);\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ canRemove && (\n\t\t\t\t<MenuItem\n\t\t\t\t\tonClick={ () => convertSyncedPatternToStatic( clientId ) }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Detach' ) }\n\t\t\t\t</MenuItem>\n\t\t\t) }\n\t\t\t<MenuItem href={ managePatternsUrl }>\n\t\t\t\t{ __( 'Manage patterns' ) }\n\t\t\t</MenuItem>\n\t\t</>\n\t);\n}\n\nexport default PatternsManageButton;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,eAAe,QAAQ,mBAAmB;AACnD,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;AACnE,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASF,KAAK,IAAIG,SAAS,QAAQ,sBAAsB;;AAEzD;AACA;AACA;AACA,SAASH,KAAK,IAAII,aAAa,QAAQ,UAAU;AACjD,SAASC,MAAM,QAAQ,gBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAExC,SAASC,oBAAoBA,CAAE;EAAEC;AAAS,CAAC,EAAG;EAC7C,MAAM;IAAEC,SAAS;IAAEC,SAAS;IAAEC;EAAkB,CAAC,GAAGlB,SAAS,CAC1DmB,MAAM,IAAM;IACb,MAAM;MAAEC,QAAQ;MAAEC,cAAc;MAAEC;IAAc,CAAC,GAChDH,MAAM,CAAEhB,gBAAiB,CAAC;IAC3B,MAAM;MAAEoB;IAAQ,CAAC,GAAGJ,MAAM,CAAEd,SAAU,CAAC;IACvC,MAAMmB,aAAa,GAAGJ,QAAQ,CAAEL,QAAS,CAAC;IAE1C,OAAO;MACNC,SAAS,EAAEK,cAAc,CAAEN,QAAS,CAAC;MACrCE,SAAS,EACR,CAAC,CAAEO,aAAa,IAChBzB,eAAe,CAAEyB,aAAc,CAAC,IAChC,CAAC,CAAED,OAAO,CACT,QAAQ,EACR,QAAQ,EACRC,aAAa,CAACC,UAAU,CAACC,GAC1B,CAAC;MACFC,eAAe,EAAEL,aAAa,CAAEP,QAAS,CAAC;MAC1C;MACA;MACA;MACAG,iBAAiB,EAAEK,OAAO,CAAE,QAAQ,EAAE,WAAY,CAAC,GAChDnB,YAAY,CAAE,iBAAiB,EAAE;QACjCwB,IAAI,EAAE;MACN,CAAE,CAAC,GACHxB,YAAY,CAAE,UAAU,EAAE;QAC1ByB,SAAS,EAAE;MACX,CAAE;IACN,CAAC;EACF,CAAC,EACD,CAAEd,QAAQ,CACX,CAAC;;EAED;EACA;EACA,MAAM;IAAEe;EAA6B,CAAC,GAAGvB,MAAM,CAC9CN,WAAW,CAAEK,aAAc,CAC5B,CAAC;EAED,IAAK,CAAEW,SAAS,EAAG;IAClB,OAAO,IAAI;EACZ;EAEA,oBACCJ,KAAA,CAAAF,SAAA;IAAAoB,QAAA,GACGf,SAAS,iBACVP,IAAA,CAACZ,QAAQ;MACRmC,OAAO,EAAGA,CAAA,KAAMF,4BAA4B,CAAEf,QAAS,CAAG;MAAAgB,QAAA,EAExDjC,EAAE,CAAE,QAAS;IAAC,CACP,CACV,eACDW,IAAA,CAACZ,QAAQ;MAACoC,IAAI,EAAGf,iBAAmB;MAAAa,QAAA,EACjCjC,EAAE,CAAE,iBAAkB;IAAC,CAChB,CAAC;EAAA,CACV,CAAC;AAEL;AAEA,eAAegB,oBAAoB","ignoreList":[]}
1
+ {"version":3,"names":["MenuItem","__","isReusableBlock","useSelect","useDispatch","store","blockEditorStore","addQueryArgs","coreStore","patternsStore","unlock","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","PatternsManageButton","clientId","canRemove","isVisible","managePatternsUrl","select","getBlock","canRemoveBlock","getBlockCount","canUser","reusableBlock","kind","name","id","attributes","ref","innerBlockCount","path","post_type","convertSyncedPatternToStatic","children","onClick","href"],"sources":["@wordpress/patterns/src/components/patterns-manage-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { isReusableBlock } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { addQueryArgs } from '@wordpress/url';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as patternsStore } from '../store';\nimport { unlock } from '../lock-unlock';\n\nfunction PatternsManageButton( { clientId } ) {\n\tconst { canRemove, isVisible, managePatternsUrl } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, canRemoveBlock, getBlockCount } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst reusableBlock = getBlock( clientId );\n\n\t\t\treturn {\n\t\t\t\tcanRemove: canRemoveBlock( clientId ),\n\t\t\t\tisVisible:\n\t\t\t\t\t!! reusableBlock &&\n\t\t\t\t\tisReusableBlock( reusableBlock ) &&\n\t\t\t\t\t!! canUser( 'update', {\n\t\t\t\t\t\tkind: 'postType',\n\t\t\t\t\t\tname: 'wp_block',\n\t\t\t\t\t\tid: reusableBlock.attributes.ref,\n\t\t\t\t\t} ),\n\t\t\t\tinnerBlockCount: getBlockCount( clientId ),\n\t\t\t\t// The site editor and templates both check whether the user\n\t\t\t\t// has edit_theme_options capabilities. We can leverage that here\n\t\t\t\t// and omit the manage patterns link if the user can't access it.\n\t\t\t\tmanagePatternsUrl: canUser( 'create', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_template',\n\t\t\t\t} )\n\t\t\t\t\t? addQueryArgs( 'site-editor.php', {\n\t\t\t\t\t\t\tpath: '/patterns',\n\t\t\t\t\t } )\n\t\t\t\t\t: addQueryArgs( 'edit.php', {\n\t\t\t\t\t\t\tpost_type: 'wp_block',\n\t\t\t\t\t } ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t// Ignore reason: false positive of the lint rule.\n\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\tconst { convertSyncedPatternToStatic } = unlock(\n\t\tuseDispatch( patternsStore )\n\t);\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ canRemove && (\n\t\t\t\t<MenuItem\n\t\t\t\t\tonClick={ () => convertSyncedPatternToStatic( clientId ) }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Detach' ) }\n\t\t\t\t</MenuItem>\n\t\t\t) }\n\t\t\t<MenuItem href={ managePatternsUrl }>\n\t\t\t\t{ __( 'Manage patterns' ) }\n\t\t\t</MenuItem>\n\t\t</>\n\t);\n}\n\nexport default PatternsManageButton;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,eAAe,QAAQ,mBAAmB;AACnD,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;AACnE,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASF,KAAK,IAAIG,SAAS,QAAQ,sBAAsB;;AAEzD;AACA;AACA;AACA,SAASH,KAAK,IAAII,aAAa,QAAQ,UAAU;AACjD,SAASC,MAAM,QAAQ,gBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAExC,SAASC,oBAAoBA,CAAE;EAAEC;AAAS,CAAC,EAAG;EAC7C,MAAM;IAAEC,SAAS;IAAEC,SAAS;IAAEC;EAAkB,CAAC,GAAGlB,SAAS,CAC1DmB,MAAM,IAAM;IACb,MAAM;MAAEC,QAAQ;MAAEC,cAAc;MAAEC;IAAc,CAAC,GAChDH,MAAM,CAAEhB,gBAAiB,CAAC;IAC3B,MAAM;MAAEoB;IAAQ,CAAC,GAAGJ,MAAM,CAAEd,SAAU,CAAC;IACvC,MAAMmB,aAAa,GAAGJ,QAAQ,CAAEL,QAAS,CAAC;IAE1C,OAAO;MACNC,SAAS,EAAEK,cAAc,CAAEN,QAAS,CAAC;MACrCE,SAAS,EACR,CAAC,CAAEO,aAAa,IAChBzB,eAAe,CAAEyB,aAAc,CAAC,IAChC,CAAC,CAAED,OAAO,CAAE,QAAQ,EAAE;QACrBE,IAAI,EAAE,UAAU;QAChBC,IAAI,EAAE,UAAU;QAChBC,EAAE,EAAEH,aAAa,CAACI,UAAU,CAACC;MAC9B,CAAE,CAAC;MACJC,eAAe,EAAER,aAAa,CAAEP,QAAS,CAAC;MAC1C;MACA;MACA;MACAG,iBAAiB,EAAEK,OAAO,CAAE,QAAQ,EAAE;QACrCE,IAAI,EAAE,UAAU;QAChBC,IAAI,EAAE;MACP,CAAE,CAAC,GACAtB,YAAY,CAAE,iBAAiB,EAAE;QACjC2B,IAAI,EAAE;MACN,CAAE,CAAC,GACH3B,YAAY,CAAE,UAAU,EAAE;QAC1B4B,SAAS,EAAE;MACX,CAAE;IACN,CAAC;EACF,CAAC,EACD,CAAEjB,QAAQ,CACX,CAAC;;EAED;EACA;EACA,MAAM;IAAEkB;EAA6B,CAAC,GAAG1B,MAAM,CAC9CN,WAAW,CAAEK,aAAc,CAC5B,CAAC;EAED,IAAK,CAAEW,SAAS,EAAG;IAClB,OAAO,IAAI;EACZ;EAEA,oBACCJ,KAAA,CAAAF,SAAA;IAAAuB,QAAA,GACGlB,SAAS,iBACVP,IAAA,CAACZ,QAAQ;MACRsC,OAAO,EAAGA,CAAA,KAAMF,4BAA4B,CAAElB,QAAS,CAAG;MAAAmB,QAAA,EAExDpC,EAAE,CAAE,QAAS;IAAC,CACP,CACV,eACDW,IAAA,CAACZ,QAAQ;MAACuC,IAAI,EAAGlB,iBAAmB;MAAAgB,QAAA,EACjCpC,EAAE,CAAE,iBAAkB;IAAC,CAChB,CAAC;EAAA,CACV,CAAC;AAEL;AAEA,eAAegB,oBAAoB","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { store as blockEditorStore, BlockControls } from '@wordpress/block-editor';
4
+ import { store as blockEditorStore, __unstableBlockToolbarLastItem as BlockToolbarLastItem } from '@wordpress/block-editor';
5
5
  import { ToolbarButton, ToolbarGroup } from '@wordpress/components';
6
6
  import { useRegistry, useSelect } from '@wordpress/data';
7
7
  import { __ } from '@wordpress/i18n';
@@ -57,8 +57,7 @@ export default function ResetOverridesControl(props) {
57
57
  [CONTENT]: newOverrides
58
58
  });
59
59
  }
60
- return /*#__PURE__*/_jsx(BlockControls, {
61
- group: "other",
60
+ return /*#__PURE__*/_jsx(BlockToolbarLastItem, {
62
61
  children: /*#__PURE__*/_jsx(ToolbarGroup, {
63
62
  children: /*#__PURE__*/_jsx(ToolbarButton, {
64
63
  onClick: onClick,
@@ -1 +1 @@
1
- {"version":3,"names":["store","blockEditorStore","BlockControls","ToolbarButton","ToolbarGroup","useRegistry","useSelect","__","jsx","_jsx","CONTENT","ResetOverridesControl","props","name","attributes","metadata","registry","isOverriden","select","getBlockAttributes","getBlockParentsByBlockName","patternClientId","clientId","overrides","hasOwnProperty","onClick","updateBlockAttributes","__unstableMarkLastChangeAsPersistent","dispatch","newOverrides","Object","keys","length","undefined","group","children","disabled"],"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 { useRegistry, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\n\nconst CONTENT = 'content';\n\nexport default function ResetOverridesControl( props ) {\n\tconst name = props.attributes.metadata?.name;\n\tconst registry = useRegistry();\n\tconst isOverriden = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! name ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { getBlockAttributes, getBlockParentsByBlockName } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst [ patternClientId ] = getBlockParentsByBlockName(\n\t\t\t\tprops.clientId,\n\t\t\t\t'core/block',\n\t\t\t\ttrue\n\t\t\t);\n\n\t\t\tif ( ! patternClientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst overrides = getBlockAttributes( patternClientId )[ CONTENT ];\n\n\t\t\tif ( ! overrides ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn overrides.hasOwnProperty( name );\n\t\t},\n\t\t[ props.clientId, name ]\n\t);\n\n\tfunction onClick() {\n\t\tconst { getBlockAttributes, getBlockParentsByBlockName } =\n\t\t\tregistry.select( blockEditorStore );\n\t\tconst [ patternClientId ] = getBlockParentsByBlockName(\n\t\t\tprops.clientId,\n\t\t\t'core/block',\n\t\t\ttrue\n\t\t);\n\n\t\tif ( ! patternClientId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst overrides = getBlockAttributes( patternClientId )[ CONTENT ];\n\n\t\tif ( ! overrides.hasOwnProperty( name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { updateBlockAttributes, __unstableMarkLastChangeAsPersistent } =\n\t\t\tregistry.dispatch( blockEditorStore );\n\t\t__unstableMarkLastChangeAsPersistent();\n\n\t\tlet newOverrides = { ...overrides };\n\t\tdelete newOverrides[ name ];\n\n\t\tif ( ! Object.keys( newOverrides ).length ) {\n\t\t\tnewOverrides = undefined;\n\t\t}\n\n\t\tupdateBlockAttributes( patternClientId, {\n\t\t\t[ CONTENT ]: newOverrides,\n\t\t} );\n\t}\n\n\treturn (\n\t\t<BlockControls group=\"other\">\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton onClick={ onClick } disabled={ ! isOverriden }>\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,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SAASC,EAAE,QAAQ,iBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAErC,MAAMC,OAAO,GAAG,SAAS;AAEzB,eAAe,SAASC,qBAAqBA,CAAEC,KAAK,EAAG;EACtD,MAAMC,IAAI,GAAGD,KAAK,CAACE,UAAU,CAACC,QAAQ,EAAEF,IAAI;EAC5C,MAAMG,QAAQ,GAAGX,WAAW,CAAC,CAAC;EAC9B,MAAMY,WAAW,GAAGX,SAAS,CAC1BY,MAAM,IAAM;IACb,IAAK,CAAEL,IAAI,EAAG;MACb;IACD;IAEA,MAAM;MAAEM,kBAAkB;MAAEC;IAA2B,CAAC,GACvDF,MAAM,CAAEjB,gBAAiB,CAAC;IAC3B,MAAM,CAAEoB,eAAe,CAAE,GAAGD,0BAA0B,CACrDR,KAAK,CAACU,QAAQ,EACd,YAAY,EACZ,IACD,CAAC;IAED,IAAK,CAAED,eAAe,EAAG;MACxB;IACD;IAEA,MAAME,SAAS,GAAGJ,kBAAkB,CAAEE,eAAgB,CAAC,CAAEX,OAAO,CAAE;IAElE,IAAK,CAAEa,SAAS,EAAG;MAClB;IACD;IAEA,OAAOA,SAAS,CAACC,cAAc,CAAEX,IAAK,CAAC;EACxC,CAAC,EACD,CAAED,KAAK,CAACU,QAAQ,EAAET,IAAI,CACvB,CAAC;EAED,SAASY,OAAOA,CAAA,EAAG;IAClB,MAAM;MAAEN,kBAAkB;MAAEC;IAA2B,CAAC,GACvDJ,QAAQ,CAACE,MAAM,CAAEjB,gBAAiB,CAAC;IACpC,MAAM,CAAEoB,eAAe,CAAE,GAAGD,0BAA0B,CACrDR,KAAK,CAACU,QAAQ,EACd,YAAY,EACZ,IACD,CAAC;IAED,IAAK,CAAED,eAAe,EAAG;MACxB;IACD;IAEA,MAAME,SAAS,GAAGJ,kBAAkB,CAAEE,eAAgB,CAAC,CAAEX,OAAO,CAAE;IAElE,IAAK,CAAEa,SAAS,CAACC,cAAc,CAAEX,IAAK,CAAC,EAAG;MACzC;IACD;IAEA,MAAM;MAAEa,qBAAqB;MAAEC;IAAqC,CAAC,GACpEX,QAAQ,CAACY,QAAQ,CAAE3B,gBAAiB,CAAC;IACtC0B,oCAAoC,CAAC,CAAC;IAEtC,IAAIE,YAAY,GAAG;MAAE,GAAGN;IAAU,CAAC;IACnC,OAAOM,YAAY,CAAEhB,IAAI,CAAE;IAE3B,IAAK,CAAEiB,MAAM,CAACC,IAAI,CAAEF,YAAa,CAAC,CAACG,MAAM,EAAG;MAC3CH,YAAY,GAAGI,SAAS;IACzB;IAEAP,qBAAqB,CAAEL,eAAe,EAAE;MACvC,CAAEX,OAAO,GAAImB;IACd,CAAE,CAAC;EACJ;EAEA,oBACCpB,IAAA,CAACP,aAAa;IAACgC,KAAK,EAAC,OAAO;IAAAC,QAAA,eAC3B1B,IAAA,CAACL,YAAY;MAAA+B,QAAA,eACZ1B,IAAA,CAACN,aAAa;QAACsB,OAAO,EAAGA,OAAS;QAACW,QAAQ,EAAG,CAAEnB,WAAa;QAAAkB,QAAA,EAC1D5B,EAAE,CAAE,OAAQ;MAAC,CACD;IAAC,CACH;EAAC,CACD,CAAC;AAElB","ignoreList":[]}
1
+ {"version":3,"names":["store","blockEditorStore","__unstableBlockToolbarLastItem","BlockToolbarLastItem","ToolbarButton","ToolbarGroup","useRegistry","useSelect","__","jsx","_jsx","CONTENT","ResetOverridesControl","props","name","attributes","metadata","registry","isOverriden","select","getBlockAttributes","getBlockParentsByBlockName","patternClientId","clientId","overrides","hasOwnProperty","onClick","updateBlockAttributes","__unstableMarkLastChangeAsPersistent","dispatch","newOverrides","Object","keys","length","undefined","children","disabled"],"sources":["@wordpress/patterns/src/components/reset-overrides-control.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tstore as blockEditorStore,\n\t__unstableBlockToolbarLastItem as BlockToolbarLastItem,\n} from '@wordpress/block-editor';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { useRegistry, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\n\nconst CONTENT = 'content';\n\nexport default function ResetOverridesControl( props ) {\n\tconst name = props.attributes.metadata?.name;\n\tconst registry = useRegistry();\n\tconst isOverriden = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! name ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { getBlockAttributes, getBlockParentsByBlockName } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst [ patternClientId ] = getBlockParentsByBlockName(\n\t\t\t\tprops.clientId,\n\t\t\t\t'core/block',\n\t\t\t\ttrue\n\t\t\t);\n\n\t\t\tif ( ! patternClientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst overrides = getBlockAttributes( patternClientId )[ CONTENT ];\n\n\t\t\tif ( ! overrides ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn overrides.hasOwnProperty( name );\n\t\t},\n\t\t[ props.clientId, name ]\n\t);\n\n\tfunction onClick() {\n\t\tconst { getBlockAttributes, getBlockParentsByBlockName } =\n\t\t\tregistry.select( blockEditorStore );\n\t\tconst [ patternClientId ] = getBlockParentsByBlockName(\n\t\t\tprops.clientId,\n\t\t\t'core/block',\n\t\t\ttrue\n\t\t);\n\n\t\tif ( ! patternClientId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst overrides = getBlockAttributes( patternClientId )[ CONTENT ];\n\n\t\tif ( ! overrides.hasOwnProperty( name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { updateBlockAttributes, __unstableMarkLastChangeAsPersistent } =\n\t\t\tregistry.dispatch( blockEditorStore );\n\t\t__unstableMarkLastChangeAsPersistent();\n\n\t\tlet newOverrides = { ...overrides };\n\t\tdelete newOverrides[ name ];\n\n\t\tif ( ! Object.keys( newOverrides ).length ) {\n\t\t\tnewOverrides = undefined;\n\t\t}\n\n\t\tupdateBlockAttributes( patternClientId, {\n\t\t\t[ CONTENT ]: newOverrides,\n\t\t} );\n\t}\n\n\treturn (\n\t\t<BlockToolbarLastItem>\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton onClick={ onClick } disabled={ ! isOverriden }>\n\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t</ToolbarButton>\n\t\t\t</ToolbarGroup>\n\t\t</BlockToolbarLastItem>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SACCA,KAAK,IAAIC,gBAAgB,EACzBC,8BAA8B,IAAIC,oBAAoB,QAChD,yBAAyB;AAChC,SAASC,aAAa,EAAEC,YAAY,QAAQ,uBAAuB;AACnE,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SAASC,EAAE,QAAQ,iBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAErC,MAAMC,OAAO,GAAG,SAAS;AAEzB,eAAe,SAASC,qBAAqBA,CAAEC,KAAK,EAAG;EACtD,MAAMC,IAAI,GAAGD,KAAK,CAACE,UAAU,CAACC,QAAQ,EAAEF,IAAI;EAC5C,MAAMG,QAAQ,GAAGX,WAAW,CAAC,CAAC;EAC9B,MAAMY,WAAW,GAAGX,SAAS,CAC1BY,MAAM,IAAM;IACb,IAAK,CAAEL,IAAI,EAAG;MACb;IACD;IAEA,MAAM;MAAEM,kBAAkB;MAAEC;IAA2B,CAAC,GACvDF,MAAM,CAAElB,gBAAiB,CAAC;IAC3B,MAAM,CAAEqB,eAAe,CAAE,GAAGD,0BAA0B,CACrDR,KAAK,CAACU,QAAQ,EACd,YAAY,EACZ,IACD,CAAC;IAED,IAAK,CAAED,eAAe,EAAG;MACxB;IACD;IAEA,MAAME,SAAS,GAAGJ,kBAAkB,CAAEE,eAAgB,CAAC,CAAEX,OAAO,CAAE;IAElE,IAAK,CAAEa,SAAS,EAAG;MAClB;IACD;IAEA,OAAOA,SAAS,CAACC,cAAc,CAAEX,IAAK,CAAC;EACxC,CAAC,EACD,CAAED,KAAK,CAACU,QAAQ,EAAET,IAAI,CACvB,CAAC;EAED,SAASY,OAAOA,CAAA,EAAG;IAClB,MAAM;MAAEN,kBAAkB;MAAEC;IAA2B,CAAC,GACvDJ,QAAQ,CAACE,MAAM,CAAElB,gBAAiB,CAAC;IACpC,MAAM,CAAEqB,eAAe,CAAE,GAAGD,0BAA0B,CACrDR,KAAK,CAACU,QAAQ,EACd,YAAY,EACZ,IACD,CAAC;IAED,IAAK,CAAED,eAAe,EAAG;MACxB;IACD;IAEA,MAAME,SAAS,GAAGJ,kBAAkB,CAAEE,eAAgB,CAAC,CAAEX,OAAO,CAAE;IAElE,IAAK,CAAEa,SAAS,CAACC,cAAc,CAAEX,IAAK,CAAC,EAAG;MACzC;IACD;IAEA,MAAM;MAAEa,qBAAqB;MAAEC;IAAqC,CAAC,GACpEX,QAAQ,CAACY,QAAQ,CAAE5B,gBAAiB,CAAC;IACtC2B,oCAAoC,CAAC,CAAC;IAEtC,IAAIE,YAAY,GAAG;MAAE,GAAGN;IAAU,CAAC;IACnC,OAAOM,YAAY,CAAEhB,IAAI,CAAE;IAE3B,IAAK,CAAEiB,MAAM,CAACC,IAAI,CAAEF,YAAa,CAAC,CAACG,MAAM,EAAG;MAC3CH,YAAY,GAAGI,SAAS;IACzB;IAEAP,qBAAqB,CAAEL,eAAe,EAAE;MACvC,CAAEX,OAAO,GAAImB;IACd,CAAE,CAAC;EACJ;EAEA,oBACCpB,IAAA,CAACP,oBAAoB;IAAAgC,QAAA,eACpBzB,IAAA,CAACL,YAAY;MAAA8B,QAAA,eACZzB,IAAA,CAACN,aAAa;QAACsB,OAAO,EAAGA,OAAS;QAACU,QAAQ,EAAG,CAAElB,WAAa;QAAAiB,QAAA,EAC1D3B,EAAE,CAAE,OAAQ;MAAC,CACD;IAAC,CACH;EAAC,CACM,CAAC;AAEzB","ignoreList":[]}
@@ -33,6 +33,9 @@
33
33
  * Grid System.
34
34
  * https://make.wordpress.org/design/2019/10/31/proposal-a-consistent-spacing-system-for-wordpress/
35
35
  */
36
+ /**
37
+ * Radius scale.
38
+ */
36
39
  /**
37
40
  * Dimensions.
38
41
  */
@@ -33,6 +33,9 @@
33
33
  * Grid System.
34
34
  * https://make.wordpress.org/design/2019/10/31/proposal-a-consistent-spacing-system-for-wordpress/
35
35
  */
36
+ /**
37
+ * Radius scale.
38
+ */
36
39
  /**
37
40
  * Dimensions.
38
41
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/patterns",
3
- "version": "2.3.0",
3
+ "version": "2.5.0",
4
4
  "description": "Management of user pattern editing.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -32,20 +32,20 @@
32
32
  ],
33
33
  "dependencies": {
34
34
  "@babel/runtime": "^7.16.0",
35
- "@wordpress/a11y": "^4.3.0",
36
- "@wordpress/block-editor": "^13.3.0",
37
- "@wordpress/blocks": "^13.3.0",
38
- "@wordpress/components": "^28.3.0",
39
- "@wordpress/compose": "^7.3.0",
40
- "@wordpress/core-data": "^7.3.0",
41
- "@wordpress/data": "^10.3.0",
42
- "@wordpress/element": "^6.3.0",
43
- "@wordpress/html-entities": "^4.3.0",
44
- "@wordpress/i18n": "^5.3.0",
45
- "@wordpress/icons": "^10.3.0",
46
- "@wordpress/notices": "^5.3.0",
47
- "@wordpress/private-apis": "^1.3.0",
48
- "@wordpress/url": "^4.3.0"
35
+ "@wordpress/a11y": "^4.5.0",
36
+ "@wordpress/block-editor": "^14.0.0",
37
+ "@wordpress/blocks": "^13.5.0",
38
+ "@wordpress/components": "^28.5.0",
39
+ "@wordpress/compose": "^7.5.0",
40
+ "@wordpress/core-data": "^7.5.0",
41
+ "@wordpress/data": "^10.5.0",
42
+ "@wordpress/element": "^6.5.0",
43
+ "@wordpress/html-entities": "^4.5.0",
44
+ "@wordpress/i18n": "^5.5.0",
45
+ "@wordpress/icons": "^10.5.0",
46
+ "@wordpress/notices": "^5.5.0",
47
+ "@wordpress/private-apis": "^1.5.0",
48
+ "@wordpress/url": "^4.5.0"
49
49
  },
50
50
  "peerDependencies": {
51
51
  "react": "^18.0.0",
@@ -54,5 +54,5 @@
54
54
  "publishConfig": {
55
55
  "access": "public"
56
56
  },
57
- "gitHead": "122867d355ca4edc63d3a3bbd9411d3a2e1458df"
57
+ "gitHead": "c3101ab024e2bfc85d525c6d247e0d57cafc9fd9"
58
58
  }
@@ -131,6 +131,7 @@ export function CreatePatternModalContents( {
131
131
  categoryMap={ categoryMap }
132
132
  />
133
133
  <ToggleControl
134
+ __nextHasNoMarginBottom
134
135
  label={ _x( 'Synced', 'pattern (singular)' ) }
135
136
  help={ __(
136
137
  'Sync this pattern across multiple locations.'
@@ -86,7 +86,10 @@ export default function PatternConvertButton( {
86
86
  ) &&
87
87
  // Hide when current doesn't have permission to do that.
88
88
  // Blocks refers to the wp_block post type, this checks the ability to create a post of that type.
89
- !! canUser( 'create', 'blocks' );
89
+ !! canUser( 'create', {
90
+ kind: 'postType',
91
+ name: 'wp_block',
92
+ } );
90
93
 
91
94
  return _canConvert;
92
95
  },
@@ -98,7 +98,7 @@ function PatternOverridesToolbarIndicator( { clientIds } ) {
98
98
  </>
99
99
  }
100
100
  toggleProps={ {
101
- describedBy: blockDescription,
101
+ description: blockDescription,
102
102
  ...toggleProps,
103
103
  } }
104
104
  menuProps={ {
@@ -28,16 +28,19 @@ function PatternsManageButton( { clientId } ) {
28
28
  isVisible:
29
29
  !! reusableBlock &&
30
30
  isReusableBlock( reusableBlock ) &&
31
- !! canUser(
32
- 'update',
33
- 'blocks',
34
- reusableBlock.attributes.ref
35
- ),
31
+ !! canUser( 'update', {
32
+ kind: 'postType',
33
+ name: 'wp_block',
34
+ id: reusableBlock.attributes.ref,
35
+ } ),
36
36
  innerBlockCount: getBlockCount( clientId ),
37
37
  // The site editor and templates both check whether the user
38
38
  // has edit_theme_options capabilities. We can leverage that here
39
39
  // and omit the manage patterns link if the user can't access it.
40
- managePatternsUrl: canUser( 'create', 'templates' )
40
+ managePatternsUrl: canUser( 'create', {
41
+ kind: 'postType',
42
+ name: 'wp_template',
43
+ } )
41
44
  ? addQueryArgs( 'site-editor.php', {
42
45
  path: '/patterns',
43
46
  } )
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import {
5
5
  store as blockEditorStore,
6
- BlockControls,
6
+ __unstableBlockToolbarLastItem as BlockToolbarLastItem,
7
7
  } from '@wordpress/block-editor';
8
8
  import { ToolbarButton, ToolbarGroup } from '@wordpress/components';
9
9
  import { useRegistry, useSelect } from '@wordpress/data';
@@ -79,12 +79,12 @@ export default function ResetOverridesControl( props ) {
79
79
  }
80
80
 
81
81
  return (
82
- <BlockControls group="other">
82
+ <BlockToolbarLastItem>
83
83
  <ToolbarGroup>
84
84
  <ToolbarButton onClick={ onClick } disabled={ ! isOverriden }>
85
85
  { __( 'Reset' ) }
86
86
  </ToolbarButton>
87
87
  </ToolbarGroup>
88
- </BlockControls>
88
+ </BlockToolbarLastItem>
89
89
  );
90
90
  }