@wordpress/patterns 2.34.1-next.2f1c7c01b.0 → 2.35.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.js +1 -1
- package/build/components/patterns-manage-button.js.map +2 -2
- package/build/private-apis.js +0 -2
- package/build/private-apis.js.map +3 -3
- package/build-module/components/patterns-manage-button.js +1 -1
- package/build-module/components/patterns-manage-button.js.map +2 -2
- package/build-module/private-apis.js +0 -2
- package/build-module/private-apis.js.map +2 -2
- package/build-style/style-rtl.css +0 -13
- package/build-style/style.css +0 -13
- package/package.json +17 -17
- package/src/components/patterns-manage-button.js +1 -1
- package/src/components/style.scss +0 -14
- package/src/private-apis.js +0 -2
- package/build/components/pattern-overrides-block-controls.js +0 -132
- package/build/components/pattern-overrides-block-controls.js.map +0 -7
- package/build-module/components/pattern-overrides-block-controls.js +0 -121
- package/build-module/components/pattern-overrides-block-controls.js.map +0 -7
- package/src/components/pattern-overrides-block-controls.js +0 -155
package/CHANGELOG.md
CHANGED
|
@@ -100,7 +100,7 @@ function PatternsManageButton({ clientId }) {
|
|
|
100
100
|
});
|
|
101
101
|
}
|
|
102
102
|
},
|
|
103
|
-
children: (0, import_i18n.__)("
|
|
103
|
+
children: (0, import_i18n.__)("Disconnect pattern")
|
|
104
104
|
}
|
|
105
105
|
),
|
|
106
106
|
/* @__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 } = select( 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\twindow?.__experimentalContentOnlyPatternInsertion &&\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\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 ) {\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{ __( '
|
|
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;AAuErB;AArEF,SAAS,qBAAsB,EAAE,SAAS,GAAI;AAC7C,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,QAAI;AAAA,IACH,CAAE,WAAY;AACb,YAAM,EAAE,gBAAgB,SAAS,IAAI,OAAQ,oBAAAA,KAAiB;AAC9D,YAAM,EAAE,QAAQ,IAAI,OAAQ,iBAAAC,KAAU;AACtC,YAAM,QAAQ,SAAU,QAAS;AAEjC,YAAM,qBACL,QAAQ,6CACR,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;AAAA;AAAA;AAAA,QAIlB,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,WAAY;AAClB,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,8BAAI,
|
|
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 } = select( 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\twindow?.__experimentalContentOnlyPatternInsertion &&\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\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 ) {\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{ __( 'Disconnect 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;AAuErB;AArEF,SAAS,qBAAsB,EAAE,SAAS,GAAI;AAC7C,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,QAAI;AAAA,IACH,CAAE,WAAY;AACb,YAAM,EAAE,gBAAgB,SAAS,IAAI,OAAQ,oBAAAA,KAAiB;AAC9D,YAAM,EAAE,QAAQ,IAAI,OAAQ,iBAAAC,KAAU;AACtC,YAAM,QAAQ,SAAU,QAAS;AAEjC,YAAM,qBACL,QAAQ,6CACR,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;AAAA;AAAA;AAAA,QAIlB,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,WAAY;AAClB,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,8BAAI,oBAAqB;AAAA;AAAA,IAC5B;AAAA,IAED,4CAAC,8BAAS,MAAO,mBACd,8BAAI,iBAAkB,GACzB;AAAA,KACD;AAEF;AAEA,IAAO,iCAAQ;",
|
|
6
6
|
"names": ["blockEditorStore", "coreStore", "patternsStore"]
|
|
7
7
|
}
|
package/build/private-apis.js
CHANGED
|
@@ -42,7 +42,6 @@ var import_components = __toESM(require("./components"));
|
|
|
42
42
|
var import_rename_pattern_category_modal = __toESM(require("./components/rename-pattern-category-modal"));
|
|
43
43
|
var import_pattern_overrides_controls = __toESM(require("./components/pattern-overrides-controls"));
|
|
44
44
|
var import_reset_overrides_control = __toESM(require("./components/reset-overrides-control"));
|
|
45
|
-
var import_pattern_overrides_block_controls = __toESM(require("./components/pattern-overrides-block-controls"));
|
|
46
45
|
var import_private_hooks = require("./private-hooks");
|
|
47
46
|
var import_constants = require("./constants");
|
|
48
47
|
var privateApis = {};
|
|
@@ -59,7 +58,6 @@ var privateApis = {};
|
|
|
59
58
|
RenamePatternCategoryModal: import_rename_pattern_category_modal.default,
|
|
60
59
|
PatternOverridesControls: import_pattern_overrides_controls.default,
|
|
61
60
|
ResetOverridesControl: import_reset_overrides_control.default,
|
|
62
|
-
PatternOverridesBlockControls: import_pattern_overrides_block_controls.default,
|
|
63
61
|
useAddPatternCategory: import_private_hooks.useAddPatternCategory,
|
|
64
62
|
PATTERN_TYPES: import_constants.PATTERN_TYPES,
|
|
65
63
|
PATTERN_DEFAULT_CATEGORY: import_constants.PATTERN_DEFAULT_CATEGORY,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/private-apis.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport { lock } from './lock-unlock';\nimport OverridesPanel from './components/overrides-panel';\nimport {\n\tdefault as CreatePatternModal,\n\tCreatePatternModalContents,\n} from './components/create-pattern-modal';\nimport {\n\tdefault as DuplicatePatternModal,\n\tuseDuplicatePatternProps,\n} from './components/duplicate-pattern-modal';\nimport { isOverridableBlock, hasOverridableBlocks } from './api';\nimport RenamePatternModal from './components/rename-pattern-modal';\nimport PatternsMenuItems from './components';\nimport RenamePatternCategoryModal from './components/rename-pattern-category-modal';\nimport PatternOverridesControls from './components/pattern-overrides-controls';\nimport ResetOverridesControl from './components/reset-overrides-control';\nimport
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,yBAAqB;AACrB,6BAA2B;AAC3B,kCAGO;AACP,qCAGO;AACP,iBAAyD;AACzD,kCAA+B;AAC/B,wBAA8B;AAC9B,2CAAuC;AACvC,wCAAqC;AACrC,qCAAkC;AAClC,
|
|
6
|
-
"names": ["OverridesPanel", "CreatePatternModal", "DuplicatePatternModal", "RenamePatternModal", "PatternsMenuItems", "RenamePatternCategoryModal", "PatternOverridesControls", "ResetOverridesControl"
|
|
4
|
+
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport { lock } from './lock-unlock';\nimport OverridesPanel from './components/overrides-panel';\nimport {\n\tdefault as CreatePatternModal,\n\tCreatePatternModalContents,\n} from './components/create-pattern-modal';\nimport {\n\tdefault as DuplicatePatternModal,\n\tuseDuplicatePatternProps,\n} from './components/duplicate-pattern-modal';\nimport { isOverridableBlock, hasOverridableBlocks } from './api';\nimport RenamePatternModal from './components/rename-pattern-modal';\nimport PatternsMenuItems from './components';\nimport RenamePatternCategoryModal from './components/rename-pattern-category-modal';\nimport PatternOverridesControls from './components/pattern-overrides-controls';\nimport ResetOverridesControl from './components/reset-overrides-control';\nimport { useAddPatternCategory } from './private-hooks';\nimport {\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tEXCLUDED_PATTERN_SOURCES,\n\tPATTERN_SYNC_TYPES,\n\tPARTIAL_SYNCING_SUPPORTED_BLOCKS,\n} from './constants';\n\nexport const privateApis = {};\nlock( privateApis, {\n\tOverridesPanel,\n\tCreatePatternModal,\n\tCreatePatternModalContents,\n\tDuplicatePatternModal,\n\tisOverridableBlock,\n\thasOverridableBlocks,\n\tuseDuplicatePatternProps,\n\tRenamePatternModal,\n\tPatternsMenuItems,\n\tRenamePatternCategoryModal,\n\tPatternOverridesControls,\n\tResetOverridesControl,\n\tuseAddPatternCategory,\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tEXCLUDED_PATTERN_SOURCES,\n\tPATTERN_SYNC_TYPES,\n\tPARTIAL_SYNCING_SUPPORTED_BLOCKS,\n} );\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,yBAAqB;AACrB,6BAA2B;AAC3B,kCAGO;AACP,qCAGO;AACP,iBAAyD;AACzD,kCAA+B;AAC/B,wBAA8B;AAC9B,2CAAuC;AACvC,wCAAqC;AACrC,qCAAkC;AAClC,2BAAsC;AACtC,uBAOO;AAEA,IAAM,cAAc,CAAC;AAAA,IAC5B,yBAAM,aAAa;AAAA,EAClB,uCAAAA;AAAA,EACA,gDAAAC;AAAA,EACA;AAAA,EACA,sDAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gDAAAC;AAAA,EACA,qCAAAC;AAAA,EACA,iEAAAC;AAAA,EACA,4DAAAC;AAAA,EACA,sDAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAE;",
|
|
6
|
+
"names": ["OverridesPanel", "CreatePatternModal", "DuplicatePatternModal", "RenamePatternModal", "PatternsMenuItems", "RenamePatternCategoryModal", "PatternOverridesControls", "ResetOverridesControl"]
|
|
7
7
|
}
|
|
@@ -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 } = select( 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\twindow?.__experimentalContentOnlyPatternInsertion &&\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\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 ) {\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{ __( '
|
|
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;AAuErB,mBAEE,KAFF;AArEF,SAAS,qBAAsB,EAAE,SAAS,GAAI;AAC7C,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAI;AAAA,IACH,CAAE,WAAY;AACb,YAAM,EAAE,gBAAgB,SAAS,IAAI,OAAQ,gBAAiB;AAC9D,YAAM,EAAE,QAAQ,IAAI,OAAQ,SAAU;AACtC,YAAM,QAAQ,SAAU,QAAS;AAEjC,YAAM,qBACL,QAAQ,6CACR,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;AAAA;AAAA;AAAA,QAIlB,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,WAAY;AAClB,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,aAAI,
|
|
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 } = select( 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\twindow?.__experimentalContentOnlyPatternInsertion &&\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\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 ) {\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{ __( 'Disconnect 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;AAuErB,mBAEE,KAFF;AArEF,SAAS,qBAAsB,EAAE,SAAS,GAAI;AAC7C,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAI;AAAA,IACH,CAAE,WAAY;AACb,YAAM,EAAE,gBAAgB,SAAS,IAAI,OAAQ,gBAAiB;AAC9D,YAAM,EAAE,QAAQ,IAAI,OAAQ,SAAU;AACtC,YAAM,QAAQ,SAAU,QAAS;AAEjC,YAAM,qBACL,QAAQ,6CACR,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;AAAA;AAAA;AAAA,QAIlB,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,WAAY;AAClB,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,aAAI,oBAAqB;AAAA;AAAA,IAC5B;AAAA,IAED,oBAAC,YAAS,MAAO,mBACd,aAAI,iBAAkB,GACzB;AAAA,KACD;AAEF;AAEA,IAAO,iCAAQ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -15,7 +15,6 @@ import PatternsMenuItems from "./components";
|
|
|
15
15
|
import RenamePatternCategoryModal from "./components/rename-pattern-category-modal";
|
|
16
16
|
import PatternOverridesControls from "./components/pattern-overrides-controls";
|
|
17
17
|
import ResetOverridesControl from "./components/reset-overrides-control";
|
|
18
|
-
import PatternOverridesBlockControls from "./components/pattern-overrides-block-controls";
|
|
19
18
|
import { useAddPatternCategory } from "./private-hooks";
|
|
20
19
|
import {
|
|
21
20
|
PATTERN_TYPES,
|
|
@@ -39,7 +38,6 @@ lock(privateApis, {
|
|
|
39
38
|
RenamePatternCategoryModal,
|
|
40
39
|
PatternOverridesControls,
|
|
41
40
|
ResetOverridesControl,
|
|
42
|
-
PatternOverridesBlockControls,
|
|
43
41
|
useAddPatternCategory,
|
|
44
42
|
PATTERN_TYPES,
|
|
45
43
|
PATTERN_DEFAULT_CATEGORY,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/private-apis.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport { lock } from './lock-unlock';\nimport OverridesPanel from './components/overrides-panel';\nimport {\n\tdefault as CreatePatternModal,\n\tCreatePatternModalContents,\n} from './components/create-pattern-modal';\nimport {\n\tdefault as DuplicatePatternModal,\n\tuseDuplicatePatternProps,\n} from './components/duplicate-pattern-modal';\nimport { isOverridableBlock, hasOverridableBlocks } from './api';\nimport RenamePatternModal from './components/rename-pattern-modal';\nimport PatternsMenuItems from './components';\nimport RenamePatternCategoryModal from './components/rename-pattern-category-modal';\nimport PatternOverridesControls from './components/pattern-overrides-controls';\nimport ResetOverridesControl from './components/reset-overrides-control';\nimport
|
|
5
|
-
"mappings": ";AAGA,SAAS,YAAY;AACrB,OAAO,oBAAoB;AAC3B;AAAA,EACC,WAAW;AAAA,EACX;AAAA,OACM;AACP;AAAA,EACC,WAAW;AAAA,EACX;AAAA,OACM;AACP,SAAS,oBAAoB,4BAA4B;AACzD,OAAO,wBAAwB;AAC/B,OAAO,uBAAuB;AAC9B,OAAO,gCAAgC;AACvC,OAAO,8BAA8B;AACrC,OAAO,2BAA2B;AAClC,
|
|
4
|
+
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport { lock } from './lock-unlock';\nimport OverridesPanel from './components/overrides-panel';\nimport {\n\tdefault as CreatePatternModal,\n\tCreatePatternModalContents,\n} from './components/create-pattern-modal';\nimport {\n\tdefault as DuplicatePatternModal,\n\tuseDuplicatePatternProps,\n} from './components/duplicate-pattern-modal';\nimport { isOverridableBlock, hasOverridableBlocks } from './api';\nimport RenamePatternModal from './components/rename-pattern-modal';\nimport PatternsMenuItems from './components';\nimport RenamePatternCategoryModal from './components/rename-pattern-category-modal';\nimport PatternOverridesControls from './components/pattern-overrides-controls';\nimport ResetOverridesControl from './components/reset-overrides-control';\nimport { useAddPatternCategory } from './private-hooks';\nimport {\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tEXCLUDED_PATTERN_SOURCES,\n\tPATTERN_SYNC_TYPES,\n\tPARTIAL_SYNCING_SUPPORTED_BLOCKS,\n} from './constants';\n\nexport const privateApis = {};\nlock( privateApis, {\n\tOverridesPanel,\n\tCreatePatternModal,\n\tCreatePatternModalContents,\n\tDuplicatePatternModal,\n\tisOverridableBlock,\n\thasOverridableBlocks,\n\tuseDuplicatePatternProps,\n\tRenamePatternModal,\n\tPatternsMenuItems,\n\tRenamePatternCategoryModal,\n\tPatternOverridesControls,\n\tResetOverridesControl,\n\tuseAddPatternCategory,\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tEXCLUDED_PATTERN_SOURCES,\n\tPATTERN_SYNC_TYPES,\n\tPARTIAL_SYNCING_SUPPORTED_BLOCKS,\n} );\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,YAAY;AACrB,OAAO,oBAAoB;AAC3B;AAAA,EACC,WAAW;AAAA,EACX;AAAA,OACM;AACP;AAAA,EACC,WAAW;AAAA,EACX;AAAA,OACM;AACP,SAAS,oBAAoB,4BAA4B;AACzD,OAAO,wBAAwB;AAC/B,OAAO,uBAAuB;AAC9B,OAAO,gCAAgC;AACvC,OAAO,8BAA8B;AACrC,OAAO,2BAA2B;AAClC,SAAS,6BAA6B;AACtC;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAEA,IAAM,cAAc,CAAC;AAC5B,KAAM,aAAa;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAE;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -142,17 +142,4 @@
|
|
|
142
142
|
.pattern-overrides-control__allow-overrides-button {
|
|
143
143
|
width: 100%;
|
|
144
144
|
justify-content: center;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
.patterns-pattern-overrides-toolbar-indicator__popover .components-popover__content {
|
|
148
|
-
min-width: 260px;
|
|
149
|
-
padding: 16px;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
.patterns-pattern-overrides-toolbar-indicator .patterns-pattern-overrides-toolbar-indicator-icon.has-colors svg {
|
|
153
|
-
fill: var(--wp-block-synced-color);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
.editor-collapsible-block-toolbar .patterns-pattern-overrides-toolbar-indicator {
|
|
157
|
-
height: 32px;
|
|
158
145
|
}
|
package/build-style/style.css
CHANGED
|
@@ -142,17 +142,4 @@
|
|
|
142
142
|
.pattern-overrides-control__allow-overrides-button {
|
|
143
143
|
width: 100%;
|
|
144
144
|
justify-content: center;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
.patterns-pattern-overrides-toolbar-indicator__popover .components-popover__content {
|
|
148
|
-
min-width: 260px;
|
|
149
|
-
padding: 16px;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
.patterns-pattern-overrides-toolbar-indicator .patterns-pattern-overrides-toolbar-indicator-icon.has-colors svg {
|
|
153
|
-
fill: var(--wp-block-synced-color);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
.editor-collapsible-block-toolbar .patterns-pattern-overrides-toolbar-indicator {
|
|
157
|
-
height: 32px;
|
|
158
145
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wordpress/patterns",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.35.0",
|
|
4
4
|
"description": "Management of user pattern editing.",
|
|
5
5
|
"author": "The WordPress Contributors",
|
|
6
6
|
"license": "GPL-2.0-or-later",
|
|
@@ -39,21 +39,21 @@
|
|
|
39
39
|
"{src,build,build-module}/{index.js,store/index.js,hooks/**}"
|
|
40
40
|
],
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@wordpress/a11y": "^4.
|
|
43
|
-
"@wordpress/base-styles": "^6.
|
|
44
|
-
"@wordpress/block-editor": "^15.
|
|
45
|
-
"@wordpress/blocks": "^15.
|
|
46
|
-
"@wordpress/components": "^30.
|
|
47
|
-
"@wordpress/compose": "^7.
|
|
48
|
-
"@wordpress/core-data": "^7.
|
|
49
|
-
"@wordpress/data": "^10.
|
|
50
|
-
"@wordpress/element": "^6.
|
|
51
|
-
"@wordpress/html-entities": "^4.
|
|
52
|
-
"@wordpress/i18n": "^6.
|
|
53
|
-
"@wordpress/icons": "^11.
|
|
54
|
-
"@wordpress/notices": "^5.
|
|
55
|
-
"@wordpress/private-apis": "^1.
|
|
56
|
-
"@wordpress/url": "^4.
|
|
42
|
+
"@wordpress/a11y": "^4.35.0",
|
|
43
|
+
"@wordpress/base-styles": "^6.11.0",
|
|
44
|
+
"@wordpress/block-editor": "^15.8.0",
|
|
45
|
+
"@wordpress/blocks": "^15.8.0",
|
|
46
|
+
"@wordpress/components": "^30.8.0",
|
|
47
|
+
"@wordpress/compose": "^7.35.0",
|
|
48
|
+
"@wordpress/core-data": "^7.35.0",
|
|
49
|
+
"@wordpress/data": "^10.35.0",
|
|
50
|
+
"@wordpress/element": "^6.35.0",
|
|
51
|
+
"@wordpress/html-entities": "^4.35.0",
|
|
52
|
+
"@wordpress/i18n": "^6.8.0",
|
|
53
|
+
"@wordpress/icons": "^11.2.0",
|
|
54
|
+
"@wordpress/notices": "^5.35.0",
|
|
55
|
+
"@wordpress/private-apis": "^1.35.0",
|
|
56
|
+
"@wordpress/url": "^4.35.0"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
59
|
"react": "^18.0.0",
|
|
@@ -62,5 +62,5 @@
|
|
|
62
62
|
"publishConfig": {
|
|
63
63
|
"access": "public"
|
|
64
64
|
},
|
|
65
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "77aa1f194edceafe8ac2a1b9438bf84b557e76e3"
|
|
66
66
|
}
|
|
@@ -48,17 +48,3 @@
|
|
|
48
48
|
width: 100%;
|
|
49
49
|
justify-content: center;
|
|
50
50
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
.patterns-pattern-overrides-toolbar-indicator__popover .components-popover__content {
|
|
54
|
-
min-width: 260px;
|
|
55
|
-
padding: $grid-unit-20;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
.patterns-pattern-overrides-toolbar-indicator .patterns-pattern-overrides-toolbar-indicator-icon.has-colors svg {
|
|
59
|
-
fill: var(--wp-block-synced-color);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
.editor-collapsible-block-toolbar .patterns-pattern-overrides-toolbar-indicator {
|
|
63
|
-
height: 32px;
|
|
64
|
-
}
|
package/src/private-apis.js
CHANGED
|
@@ -17,7 +17,6 @@ import PatternsMenuItems from './components';
|
|
|
17
17
|
import RenamePatternCategoryModal from './components/rename-pattern-category-modal';
|
|
18
18
|
import PatternOverridesControls from './components/pattern-overrides-controls';
|
|
19
19
|
import ResetOverridesControl from './components/reset-overrides-control';
|
|
20
|
-
import PatternOverridesBlockControls from './components/pattern-overrides-block-controls';
|
|
21
20
|
import { useAddPatternCategory } from './private-hooks';
|
|
22
21
|
import {
|
|
23
22
|
PATTERN_TYPES,
|
|
@@ -42,7 +41,6 @@ lock( privateApis, {
|
|
|
42
41
|
RenamePatternCategoryModal,
|
|
43
42
|
PatternOverridesControls,
|
|
44
43
|
ResetOverridesControl,
|
|
45
|
-
PatternOverridesBlockControls,
|
|
46
44
|
useAddPatternCategory,
|
|
47
45
|
PATTERN_TYPES,
|
|
48
46
|
PATTERN_DEFAULT_CATEGORY,
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
|
|
19
|
-
// packages/patterns/src/components/pattern-overrides-block-controls.js
|
|
20
|
-
var pattern_overrides_block_controls_exports = {};
|
|
21
|
-
__export(pattern_overrides_block_controls_exports, {
|
|
22
|
-
default: () => PatternOverridesBlockControls
|
|
23
|
-
});
|
|
24
|
-
module.exports = __toCommonJS(pattern_overrides_block_controls_exports);
|
|
25
|
-
var import_element = require("@wordpress/element");
|
|
26
|
-
var import_i18n = require("@wordpress/i18n");
|
|
27
|
-
var import_components = require("@wordpress/components");
|
|
28
|
-
var import_blocks = require("@wordpress/blocks");
|
|
29
|
-
var import_data = require("@wordpress/data");
|
|
30
|
-
var import_icons = require("@wordpress/icons");
|
|
31
|
-
var import_block_editor = require("@wordpress/block-editor");
|
|
32
|
-
var import_lock_unlock = require("../lock-unlock");
|
|
33
|
-
var import_constants = require("../constants");
|
|
34
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
|
35
|
-
var { useBlockDisplayTitle } = (0, import_lock_unlock.unlock)(import_block_editor.privateApis);
|
|
36
|
-
function PatternOverridesToolbarIndicator({ clientIds }) {
|
|
37
|
-
const isSingleBlockSelected = clientIds.length === 1;
|
|
38
|
-
const { icon, firstBlockName } = (0, import_data.useSelect)(
|
|
39
|
-
(select) => {
|
|
40
|
-
const { getBlockAttributes, getBlockNamesByClientId } = select(import_block_editor.store);
|
|
41
|
-
const { getBlockType, getActiveBlockVariation } = select(import_blocks.store);
|
|
42
|
-
const blockTypeNames = getBlockNamesByClientId(clientIds);
|
|
43
|
-
const _firstBlockTypeName = blockTypeNames[0];
|
|
44
|
-
const firstBlockType = getBlockType(_firstBlockTypeName);
|
|
45
|
-
let _icon;
|
|
46
|
-
if (isSingleBlockSelected) {
|
|
47
|
-
const match = getActiveBlockVariation(
|
|
48
|
-
_firstBlockTypeName,
|
|
49
|
-
getBlockAttributes(clientIds[0])
|
|
50
|
-
);
|
|
51
|
-
_icon = match?.icon || firstBlockType.icon;
|
|
52
|
-
} else {
|
|
53
|
-
const isSelectionOfSameType = new Set(blockTypeNames).size === 1;
|
|
54
|
-
_icon = isSelectionOfSameType ? firstBlockType.icon : import_icons.copy;
|
|
55
|
-
}
|
|
56
|
-
return {
|
|
57
|
-
icon: _icon,
|
|
58
|
-
firstBlockName: getBlockAttributes(clientIds[0]).metadata.name
|
|
59
|
-
};
|
|
60
|
-
},
|
|
61
|
-
[clientIds, isSingleBlockSelected]
|
|
62
|
-
);
|
|
63
|
-
const firstBlockTitle = useBlockDisplayTitle({
|
|
64
|
-
clientId: clientIds[0],
|
|
65
|
-
maximumLength: 35
|
|
66
|
-
});
|
|
67
|
-
const blockDescription = isSingleBlockSelected ? (0, import_i18n.sprintf)(
|
|
68
|
-
/* translators: 1: The block type's name. 2: The block's user-provided name (the same as the override name). */
|
|
69
|
-
(0, import_i18n.__)('This %1$s is editable using the "%2$s" override.'),
|
|
70
|
-
firstBlockTitle.toLowerCase(),
|
|
71
|
-
firstBlockName
|
|
72
|
-
) : (0, import_i18n.__)("These blocks are editable using overrides.");
|
|
73
|
-
const descriptionId = (0, import_element.useId)();
|
|
74
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.ToolbarItem, { children: (toggleProps) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
75
|
-
import_components.DropdownMenu,
|
|
76
|
-
{
|
|
77
|
-
className: "patterns-pattern-overrides-toolbar-indicator",
|
|
78
|
-
label: firstBlockTitle,
|
|
79
|
-
popoverProps: {
|
|
80
|
-
placement: "bottom-start",
|
|
81
|
-
className: "patterns-pattern-overrides-toolbar-indicator__popover"
|
|
82
|
-
},
|
|
83
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
84
|
-
import_block_editor.BlockIcon,
|
|
85
|
-
{
|
|
86
|
-
icon,
|
|
87
|
-
className: "patterns-pattern-overrides-toolbar-indicator-icon",
|
|
88
|
-
showColors: true
|
|
89
|
-
}
|
|
90
|
-
) }),
|
|
91
|
-
toggleProps: {
|
|
92
|
-
description: blockDescription,
|
|
93
|
-
...toggleProps
|
|
94
|
-
},
|
|
95
|
-
menuProps: {
|
|
96
|
-
orientation: "both",
|
|
97
|
-
"aria-describedby": descriptionId
|
|
98
|
-
},
|
|
99
|
-
children: () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.__experimentalText, { id: descriptionId, children: blockDescription })
|
|
100
|
-
}
|
|
101
|
-
) });
|
|
102
|
-
}
|
|
103
|
-
function PatternOverridesBlockControls() {
|
|
104
|
-
const { clientIds, hasPatternOverrides, hasParentPattern } = (0, import_data.useSelect)(
|
|
105
|
-
(select) => {
|
|
106
|
-
const {
|
|
107
|
-
getBlockAttributes,
|
|
108
|
-
getSelectedBlockClientIds,
|
|
109
|
-
getBlockParentsByBlockName
|
|
110
|
-
} = select(import_block_editor.store);
|
|
111
|
-
const selectedClientIds = getSelectedBlockClientIds();
|
|
112
|
-
const _hasPatternOverrides = selectedClientIds.every(
|
|
113
|
-
(clientId) => Object.values(
|
|
114
|
-
getBlockAttributes(clientId)?.metadata?.bindings ?? {}
|
|
115
|
-
).some(
|
|
116
|
-
(binding) => binding?.source === import_constants.PATTERN_OVERRIDES_BINDING_SOURCE
|
|
117
|
-
)
|
|
118
|
-
);
|
|
119
|
-
const _hasParentPattern = selectedClientIds.every(
|
|
120
|
-
(clientId) => getBlockParentsByBlockName(clientId, "core/block", true).length > 0
|
|
121
|
-
);
|
|
122
|
-
return {
|
|
123
|
-
clientIds: selectedClientIds,
|
|
124
|
-
hasPatternOverrides: _hasPatternOverrides,
|
|
125
|
-
hasParentPattern: _hasParentPattern
|
|
126
|
-
};
|
|
127
|
-
},
|
|
128
|
-
[]
|
|
129
|
-
);
|
|
130
|
-
return hasPatternOverrides && hasParentPattern ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_editor.BlockControls, { group: "parent", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PatternOverridesToolbarIndicator, { clientIds }) }) : null;
|
|
131
|
-
}
|
|
132
|
-
//# sourceMappingURL=pattern-overrides-block-controls.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/components/pattern-overrides-block-controls.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useId } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarItem,\n\t__experimentalText as Text,\n} from '@wordpress/components';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\nimport {\n\tstore as blockEditorStore,\n\tBlockIcon,\n\tprivateApis as blockEditorPrivateApis,\n\tBlockControls,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\nimport { PATTERN_OVERRIDES_BINDING_SOURCE } from '../constants';\n\nconst { useBlockDisplayTitle } = unlock( blockEditorPrivateApis );\n\nfunction PatternOverridesToolbarIndicator( { clientIds } ) {\n\tconst isSingleBlockSelected = clientIds.length === 1;\n\tconst { icon, firstBlockName } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockAttributes, getBlockNamesByClientId } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { getBlockType, getActiveBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst blockTypeNames = getBlockNamesByClientId( clientIds );\n\t\t\tconst _firstBlockTypeName = blockTypeNames[ 0 ];\n\t\t\tconst firstBlockType = getBlockType( _firstBlockTypeName );\n\t\t\tlet _icon;\n\t\t\tif ( isSingleBlockSelected ) {\n\t\t\t\tconst match = getActiveBlockVariation(\n\t\t\t\t\t_firstBlockTypeName,\n\t\t\t\t\tgetBlockAttributes( clientIds[ 0 ] )\n\t\t\t\t);\n\t\t\t\t// Take into account active block variations.\n\t\t\t\t_icon = match?.icon || firstBlockType.icon;\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tnew Set( blockTypeNames ).size === 1;\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType ? firstBlockType.icon : copy;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ticon: _icon,\n\t\t\t\tfirstBlockName: getBlockAttributes( clientIds[ 0 ] ).metadata\n\t\t\t\t\t.name,\n\t\t\t};\n\t\t},\n\t\t[ clientIds, isSingleBlockSelected ]\n\t);\n\tconst firstBlockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\n\tconst blockDescription = isSingleBlockSelected\n\t\t? sprintf(\n\t\t\t\t/* translators: 1: The block type's name. 2: The block's user-provided name (the same as the override name). */\n\t\t\t\t__( 'This %1$s is editable using the \"%2$s\" override.' ),\n\t\t\t\tfirstBlockTitle.toLowerCase(),\n\t\t\t\tfirstBlockName\n\t\t )\n\t\t: __( 'These blocks are editable using overrides.' );\n\n\tconst descriptionId = useId();\n\n\treturn (\n\t\t<ToolbarItem>\n\t\t\t{ ( toggleProps ) => (\n\t\t\t\t<DropdownMenu\n\t\t\t\t\tclassName=\"patterns-pattern-overrides-toolbar-indicator\"\n\t\t\t\t\tlabel={ firstBlockTitle }\n\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\tplacement: 'bottom-start',\n\t\t\t\t\t\tclassName:\n\t\t\t\t\t\t\t'patterns-pattern-overrides-toolbar-indicator__popover',\n\t\t\t\t\t} }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\tclassName=\"patterns-pattern-overrides-toolbar-indicator-icon\"\n\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\tdescription: blockDescription,\n\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t} }\n\t\t\t\t\tmenuProps={ {\n\t\t\t\t\t\torientation: 'both',\n\t\t\t\t\t\t'aria-describedby': descriptionId,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ () => (\n\t\t\t\t\t\t<Text id={ descriptionId }>{ blockDescription }</Text>\n\t\t\t\t\t) }\n\t\t\t\t</DropdownMenu>\n\t\t\t) }\n\t\t</ToolbarItem>\n\t);\n}\n\nexport default function PatternOverridesBlockControls() {\n\tconst { clientIds, hasPatternOverrides, hasParentPattern } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst selectedClientIds = getSelectedBlockClientIds();\n\t\t\tconst _hasPatternOverrides = selectedClientIds.every(\n\t\t\t\t( clientId ) =>\n\t\t\t\t\tObject.values(\n\t\t\t\t\t\tgetBlockAttributes( clientId )?.metadata?.bindings ?? {}\n\t\t\t\t\t).some(\n\t\t\t\t\t\t( binding ) =>\n\t\t\t\t\t\t\tbinding?.source === PATTERN_OVERRIDES_BINDING_SOURCE\n\t\t\t\t\t)\n\t\t\t);\n\t\t\tconst _hasParentPattern = selectedClientIds.every(\n\t\t\t\t( clientId ) =>\n\t\t\t\t\tgetBlockParentsByBlockName( clientId, 'core/block', true )\n\t\t\t\t\t\t.length > 0\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tclientIds: selectedClientIds,\n\t\t\t\thasPatternOverrides: _hasPatternOverrides,\n\t\t\t\thasParentPattern: _hasParentPattern,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\treturn hasPatternOverrides && hasParentPattern ? (\n\t\t<BlockControls group=\"parent\">\n\t\t\t<PatternOverridesToolbarIndicator clientIds={ clientIds } />\n\t\t</BlockControls>\n\t) : null;\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["blockEditorPrivateApis", "blockEditorStore", "blocksStore", "Text"]
|
|
7
|
-
}
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
// packages/patterns/src/components/pattern-overrides-block-controls.js
|
|
2
|
-
import { useId } from "@wordpress/element";
|
|
3
|
-
import { __, sprintf } from "@wordpress/i18n";
|
|
4
|
-
import {
|
|
5
|
-
DropdownMenu,
|
|
6
|
-
ToolbarItem,
|
|
7
|
-
__experimentalText as Text
|
|
8
|
-
} from "@wordpress/components";
|
|
9
|
-
import { store as blocksStore } from "@wordpress/blocks";
|
|
10
|
-
import { useSelect } from "@wordpress/data";
|
|
11
|
-
import { copy } from "@wordpress/icons";
|
|
12
|
-
import {
|
|
13
|
-
store as blockEditorStore,
|
|
14
|
-
BlockIcon,
|
|
15
|
-
privateApis as blockEditorPrivateApis,
|
|
16
|
-
BlockControls
|
|
17
|
-
} from "@wordpress/block-editor";
|
|
18
|
-
import { unlock } from "../lock-unlock";
|
|
19
|
-
import { PATTERN_OVERRIDES_BINDING_SOURCE } from "../constants";
|
|
20
|
-
import { Fragment, jsx } from "react/jsx-runtime";
|
|
21
|
-
var { useBlockDisplayTitle } = unlock(blockEditorPrivateApis);
|
|
22
|
-
function PatternOverridesToolbarIndicator({ clientIds }) {
|
|
23
|
-
const isSingleBlockSelected = clientIds.length === 1;
|
|
24
|
-
const { icon, firstBlockName } = useSelect(
|
|
25
|
-
(select) => {
|
|
26
|
-
const { getBlockAttributes, getBlockNamesByClientId } = select(blockEditorStore);
|
|
27
|
-
const { getBlockType, getActiveBlockVariation } = select(blocksStore);
|
|
28
|
-
const blockTypeNames = getBlockNamesByClientId(clientIds);
|
|
29
|
-
const _firstBlockTypeName = blockTypeNames[0];
|
|
30
|
-
const firstBlockType = getBlockType(_firstBlockTypeName);
|
|
31
|
-
let _icon;
|
|
32
|
-
if (isSingleBlockSelected) {
|
|
33
|
-
const match = getActiveBlockVariation(
|
|
34
|
-
_firstBlockTypeName,
|
|
35
|
-
getBlockAttributes(clientIds[0])
|
|
36
|
-
);
|
|
37
|
-
_icon = match?.icon || firstBlockType.icon;
|
|
38
|
-
} else {
|
|
39
|
-
const isSelectionOfSameType = new Set(blockTypeNames).size === 1;
|
|
40
|
-
_icon = isSelectionOfSameType ? firstBlockType.icon : copy;
|
|
41
|
-
}
|
|
42
|
-
return {
|
|
43
|
-
icon: _icon,
|
|
44
|
-
firstBlockName: getBlockAttributes(clientIds[0]).metadata.name
|
|
45
|
-
};
|
|
46
|
-
},
|
|
47
|
-
[clientIds, isSingleBlockSelected]
|
|
48
|
-
);
|
|
49
|
-
const firstBlockTitle = useBlockDisplayTitle({
|
|
50
|
-
clientId: clientIds[0],
|
|
51
|
-
maximumLength: 35
|
|
52
|
-
});
|
|
53
|
-
const blockDescription = isSingleBlockSelected ? sprintf(
|
|
54
|
-
/* translators: 1: The block type's name. 2: The block's user-provided name (the same as the override name). */
|
|
55
|
-
__('This %1$s is editable using the "%2$s" override.'),
|
|
56
|
-
firstBlockTitle.toLowerCase(),
|
|
57
|
-
firstBlockName
|
|
58
|
-
) : __("These blocks are editable using overrides.");
|
|
59
|
-
const descriptionId = useId();
|
|
60
|
-
return /* @__PURE__ */ jsx(ToolbarItem, { children: (toggleProps) => /* @__PURE__ */ jsx(
|
|
61
|
-
DropdownMenu,
|
|
62
|
-
{
|
|
63
|
-
className: "patterns-pattern-overrides-toolbar-indicator",
|
|
64
|
-
label: firstBlockTitle,
|
|
65
|
-
popoverProps: {
|
|
66
|
-
placement: "bottom-start",
|
|
67
|
-
className: "patterns-pattern-overrides-toolbar-indicator__popover"
|
|
68
|
-
},
|
|
69
|
-
icon: /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
|
|
70
|
-
BlockIcon,
|
|
71
|
-
{
|
|
72
|
-
icon,
|
|
73
|
-
className: "patterns-pattern-overrides-toolbar-indicator-icon",
|
|
74
|
-
showColors: true
|
|
75
|
-
}
|
|
76
|
-
) }),
|
|
77
|
-
toggleProps: {
|
|
78
|
-
description: blockDescription,
|
|
79
|
-
...toggleProps
|
|
80
|
-
},
|
|
81
|
-
menuProps: {
|
|
82
|
-
orientation: "both",
|
|
83
|
-
"aria-describedby": descriptionId
|
|
84
|
-
},
|
|
85
|
-
children: () => /* @__PURE__ */ jsx(Text, { id: descriptionId, children: blockDescription })
|
|
86
|
-
}
|
|
87
|
-
) });
|
|
88
|
-
}
|
|
89
|
-
function PatternOverridesBlockControls() {
|
|
90
|
-
const { clientIds, hasPatternOverrides, hasParentPattern } = useSelect(
|
|
91
|
-
(select) => {
|
|
92
|
-
const {
|
|
93
|
-
getBlockAttributes,
|
|
94
|
-
getSelectedBlockClientIds,
|
|
95
|
-
getBlockParentsByBlockName
|
|
96
|
-
} = select(blockEditorStore);
|
|
97
|
-
const selectedClientIds = getSelectedBlockClientIds();
|
|
98
|
-
const _hasPatternOverrides = selectedClientIds.every(
|
|
99
|
-
(clientId) => Object.values(
|
|
100
|
-
getBlockAttributes(clientId)?.metadata?.bindings ?? {}
|
|
101
|
-
).some(
|
|
102
|
-
(binding) => binding?.source === PATTERN_OVERRIDES_BINDING_SOURCE
|
|
103
|
-
)
|
|
104
|
-
);
|
|
105
|
-
const _hasParentPattern = selectedClientIds.every(
|
|
106
|
-
(clientId) => getBlockParentsByBlockName(clientId, "core/block", true).length > 0
|
|
107
|
-
);
|
|
108
|
-
return {
|
|
109
|
-
clientIds: selectedClientIds,
|
|
110
|
-
hasPatternOverrides: _hasPatternOverrides,
|
|
111
|
-
hasParentPattern: _hasParentPattern
|
|
112
|
-
};
|
|
113
|
-
},
|
|
114
|
-
[]
|
|
115
|
-
);
|
|
116
|
-
return hasPatternOverrides && hasParentPattern ? /* @__PURE__ */ jsx(BlockControls, { group: "parent", children: /* @__PURE__ */ jsx(PatternOverridesToolbarIndicator, { clientIds }) }) : null;
|
|
117
|
-
}
|
|
118
|
-
export {
|
|
119
|
-
PatternOverridesBlockControls as default
|
|
120
|
-
};
|
|
121
|
-
//# sourceMappingURL=pattern-overrides-block-controls.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/components/pattern-overrides-block-controls.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useId } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tToolbarItem,\n\t__experimentalText as Text,\n} from '@wordpress/components';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { copy } from '@wordpress/icons';\nimport {\n\tstore as blockEditorStore,\n\tBlockIcon,\n\tprivateApis as blockEditorPrivateApis,\n\tBlockControls,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\nimport { PATTERN_OVERRIDES_BINDING_SOURCE } from '../constants';\n\nconst { useBlockDisplayTitle } = unlock( blockEditorPrivateApis );\n\nfunction PatternOverridesToolbarIndicator( { clientIds } ) {\n\tconst isSingleBlockSelected = clientIds.length === 1;\n\tconst { icon, firstBlockName } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockAttributes, getBlockNamesByClientId } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { getBlockType, getActiveBlockVariation } =\n\t\t\t\tselect( blocksStore );\n\t\t\tconst blockTypeNames = getBlockNamesByClientId( clientIds );\n\t\t\tconst _firstBlockTypeName = blockTypeNames[ 0 ];\n\t\t\tconst firstBlockType = getBlockType( _firstBlockTypeName );\n\t\t\tlet _icon;\n\t\t\tif ( isSingleBlockSelected ) {\n\t\t\t\tconst match = getActiveBlockVariation(\n\t\t\t\t\t_firstBlockTypeName,\n\t\t\t\t\tgetBlockAttributes( clientIds[ 0 ] )\n\t\t\t\t);\n\t\t\t\t// Take into account active block variations.\n\t\t\t\t_icon = match?.icon || firstBlockType.icon;\n\t\t\t} else {\n\t\t\t\tconst isSelectionOfSameType =\n\t\t\t\t\tnew Set( blockTypeNames ).size === 1;\n\t\t\t\t// When selection consists of blocks of multiple types, display an\n\t\t\t\t// appropriate icon to communicate the non-uniformity.\n\t\t\t\t_icon = isSelectionOfSameType ? firstBlockType.icon : copy;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ticon: _icon,\n\t\t\t\tfirstBlockName: getBlockAttributes( clientIds[ 0 ] ).metadata\n\t\t\t\t\t.name,\n\t\t\t};\n\t\t},\n\t\t[ clientIds, isSingleBlockSelected ]\n\t);\n\tconst firstBlockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\n\tconst blockDescription = isSingleBlockSelected\n\t\t? sprintf(\n\t\t\t\t/* translators: 1: The block type's name. 2: The block's user-provided name (the same as the override name). */\n\t\t\t\t__( 'This %1$s is editable using the \"%2$s\" override.' ),\n\t\t\t\tfirstBlockTitle.toLowerCase(),\n\t\t\t\tfirstBlockName\n\t\t )\n\t\t: __( 'These blocks are editable using overrides.' );\n\n\tconst descriptionId = useId();\n\n\treturn (\n\t\t<ToolbarItem>\n\t\t\t{ ( toggleProps ) => (\n\t\t\t\t<DropdownMenu\n\t\t\t\t\tclassName=\"patterns-pattern-overrides-toolbar-indicator\"\n\t\t\t\t\tlabel={ firstBlockTitle }\n\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\tplacement: 'bottom-start',\n\t\t\t\t\t\tclassName:\n\t\t\t\t\t\t\t'patterns-pattern-overrides-toolbar-indicator__popover',\n\t\t\t\t\t} }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<BlockIcon\n\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\tclassName=\"patterns-pattern-overrides-toolbar-indicator-icon\"\n\t\t\t\t\t\t\t\tshowColors\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\tdescription: blockDescription,\n\t\t\t\t\t\t...toggleProps,\n\t\t\t\t\t} }\n\t\t\t\t\tmenuProps={ {\n\t\t\t\t\t\torientation: 'both',\n\t\t\t\t\t\t'aria-describedby': descriptionId,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ () => (\n\t\t\t\t\t\t<Text id={ descriptionId }>{ blockDescription }</Text>\n\t\t\t\t\t) }\n\t\t\t\t</DropdownMenu>\n\t\t\t) }\n\t\t</ToolbarItem>\n\t);\n}\n\nexport default function PatternOverridesBlockControls() {\n\tconst { clientIds, hasPatternOverrides, hasParentPattern } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst selectedClientIds = getSelectedBlockClientIds();\n\t\t\tconst _hasPatternOverrides = selectedClientIds.every(\n\t\t\t\t( clientId ) =>\n\t\t\t\t\tObject.values(\n\t\t\t\t\t\tgetBlockAttributes( clientId )?.metadata?.bindings ?? {}\n\t\t\t\t\t).some(\n\t\t\t\t\t\t( binding ) =>\n\t\t\t\t\t\t\tbinding?.source === PATTERN_OVERRIDES_BINDING_SOURCE\n\t\t\t\t\t)\n\t\t\t);\n\t\t\tconst _hasParentPattern = selectedClientIds.every(\n\t\t\t\t( clientId ) =>\n\t\t\t\t\tgetBlockParentsByBlockName( clientId, 'core/block', true )\n\t\t\t\t\t\t.length > 0\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tclientIds: selectedClientIds,\n\t\t\t\thasPatternOverrides: _hasPatternOverrides,\n\t\t\t\thasParentPattern: _hasParentPattern,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\treturn hasPatternOverrides && hasParentPattern ? (\n\t\t<BlockControls group=\"parent\">\n\t\t\t<PatternOverridesToolbarIndicator clientIds={ clientIds } />\n\t\t</BlockControls>\n\t) : null;\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WordPress dependencies
|
|
3
|
-
*/
|
|
4
|
-
import { useId } from '@wordpress/element';
|
|
5
|
-
import { __, sprintf } from '@wordpress/i18n';
|
|
6
|
-
import {
|
|
7
|
-
DropdownMenu,
|
|
8
|
-
ToolbarItem,
|
|
9
|
-
__experimentalText as Text,
|
|
10
|
-
} from '@wordpress/components';
|
|
11
|
-
import { store as blocksStore } from '@wordpress/blocks';
|
|
12
|
-
import { useSelect } from '@wordpress/data';
|
|
13
|
-
import { copy } from '@wordpress/icons';
|
|
14
|
-
import {
|
|
15
|
-
store as blockEditorStore,
|
|
16
|
-
BlockIcon,
|
|
17
|
-
privateApis as blockEditorPrivateApis,
|
|
18
|
-
BlockControls,
|
|
19
|
-
} from '@wordpress/block-editor';
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Internal dependencies
|
|
23
|
-
*/
|
|
24
|
-
import { unlock } from '../lock-unlock';
|
|
25
|
-
import { PATTERN_OVERRIDES_BINDING_SOURCE } from '../constants';
|
|
26
|
-
|
|
27
|
-
const { useBlockDisplayTitle } = unlock( blockEditorPrivateApis );
|
|
28
|
-
|
|
29
|
-
function PatternOverridesToolbarIndicator( { clientIds } ) {
|
|
30
|
-
const isSingleBlockSelected = clientIds.length === 1;
|
|
31
|
-
const { icon, firstBlockName } = useSelect(
|
|
32
|
-
( select ) => {
|
|
33
|
-
const { getBlockAttributes, getBlockNamesByClientId } =
|
|
34
|
-
select( blockEditorStore );
|
|
35
|
-
const { getBlockType, getActiveBlockVariation } =
|
|
36
|
-
select( blocksStore );
|
|
37
|
-
const blockTypeNames = getBlockNamesByClientId( clientIds );
|
|
38
|
-
const _firstBlockTypeName = blockTypeNames[ 0 ];
|
|
39
|
-
const firstBlockType = getBlockType( _firstBlockTypeName );
|
|
40
|
-
let _icon;
|
|
41
|
-
if ( isSingleBlockSelected ) {
|
|
42
|
-
const match = getActiveBlockVariation(
|
|
43
|
-
_firstBlockTypeName,
|
|
44
|
-
getBlockAttributes( clientIds[ 0 ] )
|
|
45
|
-
);
|
|
46
|
-
// Take into account active block variations.
|
|
47
|
-
_icon = match?.icon || firstBlockType.icon;
|
|
48
|
-
} else {
|
|
49
|
-
const isSelectionOfSameType =
|
|
50
|
-
new Set( blockTypeNames ).size === 1;
|
|
51
|
-
// When selection consists of blocks of multiple types, display an
|
|
52
|
-
// appropriate icon to communicate the non-uniformity.
|
|
53
|
-
_icon = isSelectionOfSameType ? firstBlockType.icon : copy;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return {
|
|
57
|
-
icon: _icon,
|
|
58
|
-
firstBlockName: getBlockAttributes( clientIds[ 0 ] ).metadata
|
|
59
|
-
.name,
|
|
60
|
-
};
|
|
61
|
-
},
|
|
62
|
-
[ clientIds, isSingleBlockSelected ]
|
|
63
|
-
);
|
|
64
|
-
const firstBlockTitle = useBlockDisplayTitle( {
|
|
65
|
-
clientId: clientIds[ 0 ],
|
|
66
|
-
maximumLength: 35,
|
|
67
|
-
} );
|
|
68
|
-
|
|
69
|
-
const blockDescription = isSingleBlockSelected
|
|
70
|
-
? sprintf(
|
|
71
|
-
/* translators: 1: The block type's name. 2: The block's user-provided name (the same as the override name). */
|
|
72
|
-
__( 'This %1$s is editable using the "%2$s" override.' ),
|
|
73
|
-
firstBlockTitle.toLowerCase(),
|
|
74
|
-
firstBlockName
|
|
75
|
-
)
|
|
76
|
-
: __( 'These blocks are editable using overrides.' );
|
|
77
|
-
|
|
78
|
-
const descriptionId = useId();
|
|
79
|
-
|
|
80
|
-
return (
|
|
81
|
-
<ToolbarItem>
|
|
82
|
-
{ ( toggleProps ) => (
|
|
83
|
-
<DropdownMenu
|
|
84
|
-
className="patterns-pattern-overrides-toolbar-indicator"
|
|
85
|
-
label={ firstBlockTitle }
|
|
86
|
-
popoverProps={ {
|
|
87
|
-
placement: 'bottom-start',
|
|
88
|
-
className:
|
|
89
|
-
'patterns-pattern-overrides-toolbar-indicator__popover',
|
|
90
|
-
} }
|
|
91
|
-
icon={
|
|
92
|
-
<>
|
|
93
|
-
<BlockIcon
|
|
94
|
-
icon={ icon }
|
|
95
|
-
className="patterns-pattern-overrides-toolbar-indicator-icon"
|
|
96
|
-
showColors
|
|
97
|
-
/>
|
|
98
|
-
</>
|
|
99
|
-
}
|
|
100
|
-
toggleProps={ {
|
|
101
|
-
description: blockDescription,
|
|
102
|
-
...toggleProps,
|
|
103
|
-
} }
|
|
104
|
-
menuProps={ {
|
|
105
|
-
orientation: 'both',
|
|
106
|
-
'aria-describedby': descriptionId,
|
|
107
|
-
} }
|
|
108
|
-
>
|
|
109
|
-
{ () => (
|
|
110
|
-
<Text id={ descriptionId }>{ blockDescription }</Text>
|
|
111
|
-
) }
|
|
112
|
-
</DropdownMenu>
|
|
113
|
-
) }
|
|
114
|
-
</ToolbarItem>
|
|
115
|
-
);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
export default function PatternOverridesBlockControls() {
|
|
119
|
-
const { clientIds, hasPatternOverrides, hasParentPattern } = useSelect(
|
|
120
|
-
( select ) => {
|
|
121
|
-
const {
|
|
122
|
-
getBlockAttributes,
|
|
123
|
-
getSelectedBlockClientIds,
|
|
124
|
-
getBlockParentsByBlockName,
|
|
125
|
-
} = select( blockEditorStore );
|
|
126
|
-
const selectedClientIds = getSelectedBlockClientIds();
|
|
127
|
-
const _hasPatternOverrides = selectedClientIds.every(
|
|
128
|
-
( clientId ) =>
|
|
129
|
-
Object.values(
|
|
130
|
-
getBlockAttributes( clientId )?.metadata?.bindings ?? {}
|
|
131
|
-
).some(
|
|
132
|
-
( binding ) =>
|
|
133
|
-
binding?.source === PATTERN_OVERRIDES_BINDING_SOURCE
|
|
134
|
-
)
|
|
135
|
-
);
|
|
136
|
-
const _hasParentPattern = selectedClientIds.every(
|
|
137
|
-
( clientId ) =>
|
|
138
|
-
getBlockParentsByBlockName( clientId, 'core/block', true )
|
|
139
|
-
.length > 0
|
|
140
|
-
);
|
|
141
|
-
return {
|
|
142
|
-
clientIds: selectedClientIds,
|
|
143
|
-
hasPatternOverrides: _hasPatternOverrides,
|
|
144
|
-
hasParentPattern: _hasParentPattern,
|
|
145
|
-
};
|
|
146
|
-
},
|
|
147
|
-
[]
|
|
148
|
-
);
|
|
149
|
-
|
|
150
|
-
return hasPatternOverrides && hasParentPattern ? (
|
|
151
|
-
<BlockControls group="parent">
|
|
152
|
-
<PatternOverridesToolbarIndicator clientIds={ clientIds } />
|
|
153
|
-
</BlockControls>
|
|
154
|
-
) : null;
|
|
155
|
-
}
|