@wordpress/patterns 2.40.2-next.v.202602241322.0 → 2.41.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.
- package/CHANGELOG.md +2 -0
- package/build/components/patterns-manage-button.cjs +6 -4
- package/build/components/patterns-manage-button.cjs.map +2 -2
- package/build-module/components/patterns-manage-button.mjs +6 -4
- package/build-module/components/patterns-manage-button.mjs.map +2 -2
- package/package.json +17 -17
- package/src/components/patterns-manage-button.js +8 -3
package/CHANGELOG.md
CHANGED
|
@@ -39,10 +39,11 @@ function PatternsManageButton({ clientId }) {
|
|
|
39
39
|
isVisible,
|
|
40
40
|
managePatternsUrl,
|
|
41
41
|
isSyncedPattern,
|
|
42
|
-
isUnsyncedPattern
|
|
42
|
+
isUnsyncedPattern,
|
|
43
|
+
canEdit
|
|
43
44
|
} = (0, import_data.useSelect)(
|
|
44
45
|
(select) => {
|
|
45
|
-
const { canRemoveBlock, getBlock } = select(import_block_editor.store);
|
|
46
|
+
const { canRemoveBlock, getBlock, canEditBlock } = select(import_block_editor.store);
|
|
46
47
|
const { canUser } = select(import_core_data.store);
|
|
47
48
|
const block = getBlock(clientId);
|
|
48
49
|
const _isUnsyncedPattern = !!block?.attributes?.metadata?.patternName;
|
|
@@ -53,6 +54,7 @@ function PatternsManageButton({ clientId }) {
|
|
|
53
54
|
});
|
|
54
55
|
return {
|
|
55
56
|
attributes: block.attributes,
|
|
57
|
+
canEdit: canEditBlock(clientId),
|
|
56
58
|
// For unsynced patterns, detaching is simply removing the `patternName` attribute.
|
|
57
59
|
// For synced patterns, the `core:block` block is replaced with its inner blocks,
|
|
58
60
|
// so checking whether `canRemoveBlock` is possible is required.
|
|
@@ -79,7 +81,7 @@ function PatternsManageButton({ clientId }) {
|
|
|
79
81
|
const { convertSyncedPatternToStatic } = (0, import_lock_unlock.unlock)(
|
|
80
82
|
(0, import_data.useDispatch)(import_store.store)
|
|
81
83
|
);
|
|
82
|
-
if (!isVisible) {
|
|
84
|
+
if (!isVisible || !canEdit) {
|
|
83
85
|
return null;
|
|
84
86
|
}
|
|
85
87
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
@@ -100,7 +102,7 @@ function PatternsManageButton({ clientId }) {
|
|
|
100
102
|
});
|
|
101
103
|
}
|
|
102
104
|
},
|
|
103
|
-
children: (0, import_i18n.__)("Disconnect pattern")
|
|
105
|
+
children: isSyncedPattern ? (0, import_i18n.__)("Disconnect pattern") : (0, import_i18n.__)("Detach pattern")
|
|
104
106
|
}
|
|
105
107
|
),
|
|
106
108
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.MenuItem, { href: managePatternsUrl, children: (0, import_i18n.__)("Manage patterns") })
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/components/patterns-manage-button.js"],
|
|
4
|
-
"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 {\n\t\tattributes,\n\t\tcanDetach,\n\t\tisVisible,\n\t\tmanagePatternsUrl,\n\t\tisSyncedPattern,\n\t\tisUnsyncedPattern,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canRemoveBlock, getBlock }
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAAyB;AACzB,kBAAmB;AACnB,oBAAgC;AAChC,kBAAuC;AACvC,0BAA0C;AAC1C,iBAA6B;AAC7B,uBAAmC;AAKnC,mBAAuC;AACvC,yBAAuB;
|
|
4
|
+
"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 {\n\t\tattributes,\n\t\tcanDetach,\n\t\tisVisible,\n\t\tmanagePatternsUrl,\n\t\tisSyncedPattern,\n\t\tisUnsyncedPattern,\n\t\tcanEdit,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canRemoveBlock, getBlock, canEditBlock } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst block = getBlock( clientId );\n\n\t\t\tconst _isUnsyncedPattern =\n\t\t\t\t!! block?.attributes?.metadata?.patternName;\n\n\t\t\tconst _isSyncedPattern =\n\t\t\t\t!! block &&\n\t\t\t\tisReusableBlock( block ) &&\n\t\t\t\t!! canUser( 'update', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_block',\n\t\t\t\t\tid: block.attributes.ref,\n\t\t\t\t} );\n\n\t\t\treturn {\n\t\t\t\tattributes: block.attributes,\n\t\t\t\tcanEdit: canEditBlock( clientId ),\n\t\t\t\t// For unsynced patterns, detaching is simply removing the `patternName` attribute.\n\t\t\t\t// For synced patterns, the `core:block` block is replaced with its inner blocks,\n\t\t\t\t// so checking whether `canRemoveBlock` is possible is required.\n\t\t\t\tcanDetach:\n\t\t\t\t\t_isUnsyncedPattern ||\n\t\t\t\t\t( _isSyncedPattern && canRemoveBlock( clientId ) ),\n\t\t\t\tisUnsyncedPattern: _isUnsyncedPattern,\n\t\t\t\tisSyncedPattern: _isSyncedPattern,\n\t\t\t\tisVisible: _isUnsyncedPattern || _isSyncedPattern,\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\tp: '/pattern',\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\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\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 || ! canEdit ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ canDetach && (\n\t\t\t\t<MenuItem\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tif ( isSyncedPattern ) {\n\t\t\t\t\t\t\tconvertSyncedPatternToStatic( clientId );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( isUnsyncedPattern ) {\n\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\tpatternName,\n\t\t\t\t\t\t\t\t...attributesWithoutPatternName\n\t\t\t\t\t\t\t} = attributes?.metadata ?? {};\n\t\t\t\t\t\t\tupdateBlockAttributes( clientId, {\n\t\t\t\t\t\t\t\tmetadata: attributesWithoutPatternName,\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>\n\t\t\t\t\t{ isSyncedPattern\n\t\t\t\t\t\t? __( 'Disconnect pattern' )\n\t\t\t\t\t\t: __( 'Detach pattern' ) }\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"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAAyB;AACzB,kBAAmB;AACnB,oBAAgC;AAChC,kBAAuC;AACvC,0BAA0C;AAC1C,iBAA6B;AAC7B,uBAAmC;AAKnC,mBAAuC;AACvC,yBAAuB;AAyErB;AAvEF,SAAS,qBAAsB,EAAE,SAAS,GAAI;AAC7C,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,QAAI;AAAA,IACH,CAAE,WAAY;AACb,YAAM,EAAE,gBAAgB,UAAU,aAAa,IAC9C,OAAQ,oBAAAA,KAAiB;AAC1B,YAAM,EAAE,QAAQ,IAAI,OAAQ,iBAAAC,KAAU;AACtC,YAAM,QAAQ,SAAU,QAAS;AAEjC,YAAM,qBACL,CAAC,CAAE,OAAO,YAAY,UAAU;AAEjC,YAAM,mBACL,CAAC,CAAE,aACH,+BAAiB,KAAM,KACvB,CAAC,CAAE,QAAS,UAAU;AAAA,QACrB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,IAAI,MAAM,WAAW;AAAA,MACtB,CAAE;AAEH,aAAO;AAAA,QACN,YAAY,MAAM;AAAA,QAClB,SAAS,aAAc,QAAS;AAAA;AAAA;AAAA;AAAA,QAIhC,WACC,sBACE,oBAAoB,eAAgB,QAAS;AAAA,QAChD,mBAAmB;AAAA,QACnB,iBAAiB;AAAA,QACjB,WAAW,sBAAsB;AAAA;AAAA;AAAA;AAAA,QAIjC,mBAAmB,QAAS,UAAU;AAAA,UACrC,MAAM;AAAA,UACN,MAAM;AAAA,QACP,CAAE,QACC,yBAAc,mBAAmB;AAAA,UACjC,GAAG;AAAA,QACH,CAAE,QACF,yBAAc,YAAY;AAAA,UAC1B,WAAW;AAAA,QACX,CAAE;AAAA,MACN;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAEA,QAAM,EAAE,sBAAsB,QAAI,yBAAa,oBAAAD,KAAiB;AAIhE,QAAM,EAAE,6BAA6B,QAAI;AAAA,QACxC,yBAAa,aAAAE,KAAc;AAAA,EAC5B;AAEA,MAAK,CAAE,aAAa,CAAE,SAAU;AAC/B,WAAO;AAAA,EACR;AAEA,SACC,4EACG;AAAA,iBACD;AAAA,MAAC;AAAA;AAAA,QACA,SAAU,MAAM;AACf,cAAK,iBAAkB;AACtB,yCAA8B,QAAS;AAAA,UACxC;AAEA,cAAK,mBAAoB;AACxB,kBAAM;AAAA,cACL;AAAA,cACA,GAAG;AAAA,YACJ,IAAI,YAAY,YAAY,CAAC;AAC7B,kCAAuB,UAAU;AAAA,cAChC,UAAU;AAAA,YACX,CAAE;AAAA,UACH;AAAA,QACD;AAAA,QAEE,gCACC,gBAAI,oBAAqB,QACzB,gBAAI,gBAAiB;AAAA;AAAA,IACzB;AAAA,IAED,4CAAC,8BAAS,MAAO,mBACd,8BAAI,iBAAkB,GACzB;AAAA,KACD;AAEF;AAEA,IAAO,iCAAQ;",
|
|
6
6
|
"names": ["blockEditorStore", "coreStore", "patternsStore"]
|
|
7
7
|
}
|
|
@@ -16,10 +16,11 @@ function PatternsManageButton({ clientId }) {
|
|
|
16
16
|
isVisible,
|
|
17
17
|
managePatternsUrl,
|
|
18
18
|
isSyncedPattern,
|
|
19
|
-
isUnsyncedPattern
|
|
19
|
+
isUnsyncedPattern,
|
|
20
|
+
canEdit
|
|
20
21
|
} = useSelect(
|
|
21
22
|
(select) => {
|
|
22
|
-
const { canRemoveBlock, getBlock } = select(blockEditorStore);
|
|
23
|
+
const { canRemoveBlock, getBlock, canEditBlock } = select(blockEditorStore);
|
|
23
24
|
const { canUser } = select(coreStore);
|
|
24
25
|
const block = getBlock(clientId);
|
|
25
26
|
const _isUnsyncedPattern = !!block?.attributes?.metadata?.patternName;
|
|
@@ -30,6 +31,7 @@ function PatternsManageButton({ clientId }) {
|
|
|
30
31
|
});
|
|
31
32
|
return {
|
|
32
33
|
attributes: block.attributes,
|
|
34
|
+
canEdit: canEditBlock(clientId),
|
|
33
35
|
// For unsynced patterns, detaching is simply removing the `patternName` attribute.
|
|
34
36
|
// For synced patterns, the `core:block` block is replaced with its inner blocks,
|
|
35
37
|
// so checking whether `canRemoveBlock` is possible is required.
|
|
@@ -56,7 +58,7 @@ function PatternsManageButton({ clientId }) {
|
|
|
56
58
|
const { convertSyncedPatternToStatic } = unlock(
|
|
57
59
|
useDispatch(patternsStore)
|
|
58
60
|
);
|
|
59
|
-
if (!isVisible) {
|
|
61
|
+
if (!isVisible || !canEdit) {
|
|
60
62
|
return null;
|
|
61
63
|
}
|
|
62
64
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
@@ -77,7 +79,7 @@ function PatternsManageButton({ clientId }) {
|
|
|
77
79
|
});
|
|
78
80
|
}
|
|
79
81
|
},
|
|
80
|
-
children: __("Disconnect pattern")
|
|
82
|
+
children: isSyncedPattern ? __("Disconnect pattern") : __("Detach pattern")
|
|
81
83
|
}
|
|
82
84
|
),
|
|
83
85
|
/* @__PURE__ */ jsx(MenuItem, { href: managePatternsUrl, children: __("Manage patterns") })
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/components/patterns-manage-button.js"],
|
|
4
|
-
"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 {\n\t\tattributes,\n\t\tcanDetach,\n\t\tisVisible,\n\t\tmanagePatternsUrl,\n\t\tisSyncedPattern,\n\t\tisUnsyncedPattern,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canRemoveBlock, getBlock }
|
|
5
|
-
"mappings": ";AAGA,SAAS,gBAAgB;AACzB,SAAS,UAAU;AACnB,SAAS,uBAAuB;AAChC,SAAS,WAAW,mBAAmB;AACvC,SAAS,SAAS,wBAAwB;AAC1C,SAAS,oBAAoB;AAC7B,SAAS,SAAS,iBAAiB;AAKnC,SAAS,SAAS,qBAAqB;AACvC,SAAS,cAAc;
|
|
4
|
+
"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 {\n\t\tattributes,\n\t\tcanDetach,\n\t\tisVisible,\n\t\tmanagePatternsUrl,\n\t\tisSyncedPattern,\n\t\tisUnsyncedPattern,\n\t\tcanEdit,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canRemoveBlock, getBlock, canEditBlock } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst block = getBlock( clientId );\n\n\t\t\tconst _isUnsyncedPattern =\n\t\t\t\t!! block?.attributes?.metadata?.patternName;\n\n\t\t\tconst _isSyncedPattern =\n\t\t\t\t!! block &&\n\t\t\t\tisReusableBlock( block ) &&\n\t\t\t\t!! canUser( 'update', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_block',\n\t\t\t\t\tid: block.attributes.ref,\n\t\t\t\t} );\n\n\t\t\treturn {\n\t\t\t\tattributes: block.attributes,\n\t\t\t\tcanEdit: canEditBlock( clientId ),\n\t\t\t\t// For unsynced patterns, detaching is simply removing the `patternName` attribute.\n\t\t\t\t// For synced patterns, the `core:block` block is replaced with its inner blocks,\n\t\t\t\t// so checking whether `canRemoveBlock` is possible is required.\n\t\t\t\tcanDetach:\n\t\t\t\t\t_isUnsyncedPattern ||\n\t\t\t\t\t( _isSyncedPattern && canRemoveBlock( clientId ) ),\n\t\t\t\tisUnsyncedPattern: _isUnsyncedPattern,\n\t\t\t\tisSyncedPattern: _isSyncedPattern,\n\t\t\t\tisVisible: _isUnsyncedPattern || _isSyncedPattern,\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\tp: '/pattern',\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\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\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 || ! canEdit ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ canDetach && (\n\t\t\t\t<MenuItem\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tif ( isSyncedPattern ) {\n\t\t\t\t\t\t\tconvertSyncedPatternToStatic( clientId );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( isUnsyncedPattern ) {\n\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\tpatternName,\n\t\t\t\t\t\t\t\t...attributesWithoutPatternName\n\t\t\t\t\t\t\t} = attributes?.metadata ?? {};\n\t\t\t\t\t\t\tupdateBlockAttributes( clientId, {\n\t\t\t\t\t\t\t\tmetadata: attributesWithoutPatternName,\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>\n\t\t\t\t\t{ isSyncedPattern\n\t\t\t\t\t\t? __( 'Disconnect pattern' )\n\t\t\t\t\t\t: __( 'Detach pattern' ) }\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"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,gBAAgB;AACzB,SAAS,UAAU;AACnB,SAAS,uBAAuB;AAChC,SAAS,WAAW,mBAAmB;AACvC,SAAS,SAAS,wBAAwB;AAC1C,SAAS,oBAAoB;AAC7B,SAAS,SAAS,iBAAiB;AAKnC,SAAS,SAAS,qBAAqB;AACvC,SAAS,cAAc;AAyErB,mBAEE,KAFF;AAvEF,SAAS,qBAAsB,EAAE,SAAS,GAAI;AAC7C,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAI;AAAA,IACH,CAAE,WAAY;AACb,YAAM,EAAE,gBAAgB,UAAU,aAAa,IAC9C,OAAQ,gBAAiB;AAC1B,YAAM,EAAE,QAAQ,IAAI,OAAQ,SAAU;AACtC,YAAM,QAAQ,SAAU,QAAS;AAEjC,YAAM,qBACL,CAAC,CAAE,OAAO,YAAY,UAAU;AAEjC,YAAM,mBACL,CAAC,CAAE,SACH,gBAAiB,KAAM,KACvB,CAAC,CAAE,QAAS,UAAU;AAAA,QACrB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,IAAI,MAAM,WAAW;AAAA,MACtB,CAAE;AAEH,aAAO;AAAA,QACN,YAAY,MAAM;AAAA,QAClB,SAAS,aAAc,QAAS;AAAA;AAAA;AAAA;AAAA,QAIhC,WACC,sBACE,oBAAoB,eAAgB,QAAS;AAAA,QAChD,mBAAmB;AAAA,QACnB,iBAAiB;AAAA,QACjB,WAAW,sBAAsB;AAAA;AAAA;AAAA;AAAA,QAIjC,mBAAmB,QAAS,UAAU;AAAA,UACrC,MAAM;AAAA,UACN,MAAM;AAAA,QACP,CAAE,IACC,aAAc,mBAAmB;AAAA,UACjC,GAAG;AAAA,QACH,CAAE,IACF,aAAc,YAAY;AAAA,UAC1B,WAAW;AAAA,QACX,CAAE;AAAA,MACN;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAEA,QAAM,EAAE,sBAAsB,IAAI,YAAa,gBAAiB;AAIhE,QAAM,EAAE,6BAA6B,IAAI;AAAA,IACxC,YAAa,aAAc;AAAA,EAC5B;AAEA,MAAK,CAAE,aAAa,CAAE,SAAU;AAC/B,WAAO;AAAA,EACR;AAEA,SACC,iCACG;AAAA,iBACD;AAAA,MAAC;AAAA;AAAA,QACA,SAAU,MAAM;AACf,cAAK,iBAAkB;AACtB,yCAA8B,QAAS;AAAA,UACxC;AAEA,cAAK,mBAAoB;AACxB,kBAAM;AAAA,cACL;AAAA,cACA,GAAG;AAAA,YACJ,IAAI,YAAY,YAAY,CAAC;AAC7B,kCAAuB,UAAU;AAAA,cAChC,UAAU;AAAA,YACX,CAAE;AAAA,UACH;AAAA,QACD;AAAA,QAEE,4BACC,GAAI,oBAAqB,IACzB,GAAI,gBAAiB;AAAA;AAAA,IACzB;AAAA,IAED,oBAAC,YAAS,MAAO,mBACd,aAAI,iBAAkB,GACzB;AAAA,KACD;AAEF;AAEA,IAAO,iCAAQ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wordpress/patterns",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.41.0",
|
|
4
4
|
"description": "Management of user pattern editing.",
|
|
5
5
|
"author": "The WordPress Contributors",
|
|
6
6
|
"license": "GPL-2.0-or-later",
|
|
@@ -52,21 +52,21 @@
|
|
|
52
52
|
"build-module/store/index.mjs"
|
|
53
53
|
],
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@wordpress/a11y": "^4.
|
|
56
|
-
"@wordpress/base-styles": "^6.
|
|
57
|
-
"@wordpress/block-editor": "^15.
|
|
58
|
-
"@wordpress/blocks": "^15.
|
|
59
|
-
"@wordpress/components": "^32.3.
|
|
60
|
-
"@wordpress/compose": "^7.
|
|
61
|
-
"@wordpress/core-data": "^7.
|
|
62
|
-
"@wordpress/data": "^10.
|
|
63
|
-
"@wordpress/element": "^6.
|
|
64
|
-
"@wordpress/html-entities": "^4.
|
|
65
|
-
"@wordpress/i18n": "^6.
|
|
66
|
-
"@wordpress/icons": "^11.
|
|
67
|
-
"@wordpress/notices": "^5.
|
|
68
|
-
"@wordpress/private-apis": "^1.
|
|
69
|
-
"@wordpress/url": "^4.
|
|
55
|
+
"@wordpress/a11y": "^4.41.0",
|
|
56
|
+
"@wordpress/base-styles": "^6.17.0",
|
|
57
|
+
"@wordpress/block-editor": "^15.14.0",
|
|
58
|
+
"@wordpress/blocks": "^15.14.0",
|
|
59
|
+
"@wordpress/components": "^32.3.0",
|
|
60
|
+
"@wordpress/compose": "^7.41.0",
|
|
61
|
+
"@wordpress/core-data": "^7.41.0",
|
|
62
|
+
"@wordpress/data": "^10.41.0",
|
|
63
|
+
"@wordpress/element": "^6.41.0",
|
|
64
|
+
"@wordpress/html-entities": "^4.41.0",
|
|
65
|
+
"@wordpress/i18n": "^6.14.0",
|
|
66
|
+
"@wordpress/icons": "^11.8.0",
|
|
67
|
+
"@wordpress/notices": "^5.41.0",
|
|
68
|
+
"@wordpress/private-apis": "^1.41.0",
|
|
69
|
+
"@wordpress/url": "^4.41.0"
|
|
70
70
|
},
|
|
71
71
|
"peerDependencies": {
|
|
72
72
|
"react": "^18.0.0",
|
|
@@ -75,5 +75,5 @@
|
|
|
75
75
|
"publishConfig": {
|
|
76
76
|
"access": "public"
|
|
77
77
|
},
|
|
78
|
-
"gitHead": "
|
|
78
|
+
"gitHead": "8bfc179b9aed74c0a6dd6e8edf7a49e40e4f87cc"
|
|
79
79
|
}
|
|
@@ -23,9 +23,11 @@ function PatternsManageButton( { clientId } ) {
|
|
|
23
23
|
managePatternsUrl,
|
|
24
24
|
isSyncedPattern,
|
|
25
25
|
isUnsyncedPattern,
|
|
26
|
+
canEdit,
|
|
26
27
|
} = useSelect(
|
|
27
28
|
( select ) => {
|
|
28
|
-
const { canRemoveBlock, getBlock } =
|
|
29
|
+
const { canRemoveBlock, getBlock, canEditBlock } =
|
|
30
|
+
select( blockEditorStore );
|
|
29
31
|
const { canUser } = select( coreStore );
|
|
30
32
|
const block = getBlock( clientId );
|
|
31
33
|
|
|
@@ -43,6 +45,7 @@ function PatternsManageButton( { clientId } ) {
|
|
|
43
45
|
|
|
44
46
|
return {
|
|
45
47
|
attributes: block.attributes,
|
|
48
|
+
canEdit: canEditBlock( clientId ),
|
|
46
49
|
// For unsynced patterns, detaching is simply removing the `patternName` attribute.
|
|
47
50
|
// For synced patterns, the `core:block` block is replaced with its inner blocks,
|
|
48
51
|
// so checking whether `canRemoveBlock` is possible is required.
|
|
@@ -78,7 +81,7 @@ function PatternsManageButton( { clientId } ) {
|
|
|
78
81
|
useDispatch( patternsStore )
|
|
79
82
|
);
|
|
80
83
|
|
|
81
|
-
if ( ! isVisible ) {
|
|
84
|
+
if ( ! isVisible || ! canEdit ) {
|
|
82
85
|
return null;
|
|
83
86
|
}
|
|
84
87
|
|
|
@@ -102,7 +105,9 @@ function PatternsManageButton( { clientId } ) {
|
|
|
102
105
|
}
|
|
103
106
|
} }
|
|
104
107
|
>
|
|
105
|
-
{
|
|
108
|
+
{ isSyncedPattern
|
|
109
|
+
? __( 'Disconnect pattern' )
|
|
110
|
+
: __( 'Detach pattern' ) }
|
|
106
111
|
</MenuItem>
|
|
107
112
|
) }
|
|
108
113
|
<MenuItem href={ managePatternsUrl }>
|