@wordpress/edit-widgets 5.27.1 → 5.28.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/blocks/widget-area/edit/use-is-dragging-within.js +1 -2
- package/build/blocks/widget-area/edit/use-is-dragging-within.js.map +1 -1
- package/build/blocks/widget-area/index.js +2 -4
- package/build/blocks/widget-area/index.js.map +1 -1
- package/build/components/header/document-tools/index.js +1 -2
- package/build/components/header/document-tools/index.js.map +1 -1
- package/build/components/header/index.js +1 -2
- package/build/components/header/index.js.map +1 -1
- package/build/components/header/undo-redo/redo.js +1 -2
- package/build/components/header/undo-redo/redo.js.map +1 -1
- package/build/components/header/undo-redo/undo.js +1 -2
- package/build/components/header/undo-redo/undo.js.map +1 -1
- package/build/components/keyboard-shortcut-help-modal/config.js +1 -2
- package/build/components/keyboard-shortcut-help-modal/config.js.map +1 -1
- package/build/components/keyboard-shortcut-help-modal/dynamic-shortcut.js +1 -2
- package/build/components/keyboard-shortcut-help-modal/dynamic-shortcut.js.map +1 -1
- package/build/components/keyboard-shortcut-help-modal/index.js +0 -1
- package/build/components/keyboard-shortcut-help-modal/index.js.map +1 -1
- package/build/components/keyboard-shortcut-help-modal/shortcut.js +1 -2
- package/build/components/keyboard-shortcut-help-modal/shortcut.js.map +1 -1
- package/build/components/keyboard-shortcuts/index.js +1 -2
- package/build/components/keyboard-shortcuts/index.js.map +1 -1
- package/build/components/layout/index.js +1 -2
- package/build/components/layout/index.js.map +1 -1
- package/build/components/layout/interface.js +1 -2
- package/build/components/layout/interface.js.map +1 -1
- package/build/components/more-menu/tools-more-menu-group.js +1 -2
- package/build/components/more-menu/tools-more-menu-group.js.map +1 -1
- package/build/components/notices/index.js +4 -3
- package/build/components/notices/index.js.map +1 -1
- package/build/components/save-button/index.js +4 -5
- package/build/components/save-button/index.js.map +1 -1
- package/build/components/sidebar/index.js +89 -58
- package/build/components/sidebar/index.js.map +1 -1
- package/build/constants.js +2 -4
- package/build/constants.js.map +1 -1
- package/build/hooks/use-last-selected-widget-area.js +1 -2
- package/build/hooks/use-last-selected-widget-area.js.map +1 -1
- package/build/hooks/use-widget-library-insertion-point.js +1 -2
- package/build/hooks/use-widget-library-insertion-point.js.map +1 -1
- package/build/index.js +3 -4
- package/build/index.js.map +1 -1
- package/build/store/constants.js +1 -2
- package/build/store/constants.js.map +1 -1
- package/build/store/index.js +3 -4
- package/build/store/index.js.map +1 -1
- package/build/store/reducer.js +1 -2
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +9 -19
- package/build/store/selectors.js.map +1 -1
- package/build/store/utils.js +3 -6
- package/build/store/utils.js.map +1 -1
- package/build-module/components/keyboard-shortcut-help-modal/index.js +0 -1
- package/build-module/components/keyboard-shortcut-help-modal/index.js.map +1 -1
- package/build-module/components/notices/index.js +4 -1
- package/build-module/components/notices/index.js.map +1 -1
- package/build-module/components/save-button/index.js +3 -3
- package/build-module/components/save-button/index.js.map +1 -1
- package/build-module/components/sidebar/index.js +92 -61
- package/build-module/components/sidebar/index.js.map +1 -1
- package/build-module/store/selectors.js +0 -1
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/style-rtl.css +27 -86
- package/build-style/style.css +27 -86
- package/package.json +28 -28
- package/src/components/header/style.scss +39 -3
- package/src/components/notices/index.js +6 -3
- package/src/components/save-button/index.js +4 -3
- package/src/components/sidebar/index.js +138 -101
- package/src/components/sidebar/style.scss +0 -94
package/build/store/selectors.js
CHANGED
|
@@ -32,7 +32,7 @@ const EMPTY_INSERTION_POINT = {
|
|
|
32
32
|
*
|
|
33
33
|
* @return {Object[]} API List of widgets.
|
|
34
34
|
*/
|
|
35
|
-
const getWidgets = (0, _data.createRegistrySelector)(select => () => {
|
|
35
|
+
const getWidgets = exports.getWidgets = (0, _data.createRegistrySelector)(select => () => {
|
|
36
36
|
const widgets = select(_coreData.store).getEntityRecords('root', 'widget', (0, _utils.buildWidgetsQuery)());
|
|
37
37
|
return (
|
|
38
38
|
// Key widgets by their ID.
|
|
@@ -50,8 +50,7 @@ const getWidgets = (0, _data.createRegistrySelector)(select => () => {
|
|
|
50
50
|
*
|
|
51
51
|
* @return {Object} API widget data for a particular widget ID.
|
|
52
52
|
*/
|
|
53
|
-
exports.
|
|
54
|
-
const getWidget = (0, _data.createRegistrySelector)(select => (state, id) => {
|
|
53
|
+
const getWidget = exports.getWidget = (0, _data.createRegistrySelector)(select => (state, id) => {
|
|
55
54
|
const widgets = select(_constants.STORE_NAME).getWidgets();
|
|
56
55
|
return widgets[id];
|
|
57
56
|
});
|
|
@@ -61,8 +60,7 @@ const getWidget = (0, _data.createRegistrySelector)(select => (state, id) => {
|
|
|
61
60
|
*
|
|
62
61
|
* @return {Object[]} API List of widget areas.
|
|
63
62
|
*/
|
|
64
|
-
exports.
|
|
65
|
-
const getWidgetAreas = (0, _data.createRegistrySelector)(select => () => {
|
|
63
|
+
const getWidgetAreas = exports.getWidgetAreas = (0, _data.createRegistrySelector)(select => () => {
|
|
66
64
|
const query = (0, _utils.buildWidgetAreasQuery)();
|
|
67
65
|
return select(_coreData.store).getEntityRecords(_utils.KIND, _utils.WIDGET_AREA_ENTITY_TYPE, query);
|
|
68
66
|
});
|
|
@@ -73,8 +71,7 @@ const getWidgetAreas = (0, _data.createRegistrySelector)(select => () => {
|
|
|
73
71
|
* @param {string} widgetId The ID of the widget.
|
|
74
72
|
* @return {Object} Containing widget area.
|
|
75
73
|
*/
|
|
76
|
-
exports.
|
|
77
|
-
const getWidgetAreaForWidgetId = (0, _data.createRegistrySelector)(select => (state, widgetId) => {
|
|
74
|
+
const getWidgetAreaForWidgetId = exports.getWidgetAreaForWidgetId = (0, _data.createRegistrySelector)(select => (state, widgetId) => {
|
|
78
75
|
const widgetAreas = select(_constants.STORE_NAME).getWidgetAreas();
|
|
79
76
|
return widgetAreas.find(widgetArea => {
|
|
80
77
|
const post = select(_coreData.store).getEditedEntityRecord(_utils.KIND, _utils.POST_TYPE, (0, _utils.buildWidgetAreaPostId)(widgetArea.id));
|
|
@@ -90,8 +87,7 @@ const getWidgetAreaForWidgetId = (0, _data.createRegistrySelector)(select => (st
|
|
|
90
87
|
*
|
|
91
88
|
* @return {WPBlock} The widget area block.
|
|
92
89
|
*/
|
|
93
|
-
exports.
|
|
94
|
-
const getParentWidgetAreaBlock = (0, _data.createRegistrySelector)(select => (state, clientId) => {
|
|
90
|
+
const getParentWidgetAreaBlock = exports.getParentWidgetAreaBlock = (0, _data.createRegistrySelector)(select => (state, clientId) => {
|
|
95
91
|
const {
|
|
96
92
|
getBlock,
|
|
97
93
|
getBlockName,
|
|
@@ -107,8 +103,7 @@ const getParentWidgetAreaBlock = (0, _data.createRegistrySelector)(select => (st
|
|
|
107
103
|
*
|
|
108
104
|
* @return {Object[]} List of edited widget area entity records.
|
|
109
105
|
*/
|
|
110
|
-
exports.
|
|
111
|
-
const getEditedWidgetAreas = (0, _data.createRegistrySelector)(select => (state, ids) => {
|
|
106
|
+
const getEditedWidgetAreas = exports.getEditedWidgetAreas = (0, _data.createRegistrySelector)(select => (state, ids) => {
|
|
112
107
|
let widgetAreas = select(_constants.STORE_NAME).getWidgetAreas();
|
|
113
108
|
if (!widgetAreas) {
|
|
114
109
|
return [];
|
|
@@ -131,8 +126,7 @@ const getEditedWidgetAreas = (0, _data.createRegistrySelector)(select => (state,
|
|
|
131
126
|
* @param {string} referenceWidgetName Optional. If given, only reference widgets with this name will be returned.
|
|
132
127
|
* @return {Array} List of all blocks representing reference widgets
|
|
133
128
|
*/
|
|
134
|
-
exports.
|
|
135
|
-
const getReferenceWidgetBlocks = (0, _data.createRegistrySelector)(select => (state, referenceWidgetName = null) => {
|
|
129
|
+
const getReferenceWidgetBlocks = exports.getReferenceWidgetBlocks = (0, _data.createRegistrySelector)(select => (state, referenceWidgetName = null) => {
|
|
136
130
|
const results = [];
|
|
137
131
|
const widgetAreas = select(_constants.STORE_NAME).getWidgetAreas();
|
|
138
132
|
for (const _widgetArea of widgetAreas) {
|
|
@@ -151,8 +145,7 @@ const getReferenceWidgetBlocks = (0, _data.createRegistrySelector)(select => (st
|
|
|
151
145
|
*
|
|
152
146
|
* @return {boolean} True if any widget area is currently being saved. False otherwise.
|
|
153
147
|
*/
|
|
154
|
-
exports.
|
|
155
|
-
const isSavingWidgetAreas = (0, _data.createRegistrySelector)(select => () => {
|
|
148
|
+
const isSavingWidgetAreas = exports.isSavingWidgetAreas = (0, _data.createRegistrySelector)(select => () => {
|
|
156
149
|
const widgetAreasIds = select(_constants.STORE_NAME).getWidgetAreas()?.map(({
|
|
157
150
|
id
|
|
158
151
|
}) => id);
|
|
@@ -167,7 +160,6 @@ const isSavingWidgetAreas = (0, _data.createRegistrySelector)(select => () => {
|
|
|
167
160
|
}
|
|
168
161
|
const widgetIds = [...Object.keys(select(_constants.STORE_NAME).getWidgets()), undefined // account for new widgets without an ID
|
|
169
162
|
];
|
|
170
|
-
|
|
171
163
|
for (const id of widgetIds) {
|
|
172
164
|
const isSaving = select(_coreData.store).isSavingEntityRecord('root', 'widget', id);
|
|
173
165
|
if (isSaving) {
|
|
@@ -185,7 +177,6 @@ const isSavingWidgetAreas = (0, _data.createRegistrySelector)(select => () => {
|
|
|
185
177
|
*
|
|
186
178
|
* @return {boolean} True if the widget area is open.
|
|
187
179
|
*/
|
|
188
|
-
exports.isSavingWidgetAreas = isSavingWidgetAreas;
|
|
189
180
|
const getIsWidgetAreaOpen = (state, clientId) => {
|
|
190
181
|
const {
|
|
191
182
|
widgetAreasOpenState
|
|
@@ -227,7 +218,7 @@ function __experimentalGetInsertionPoint(state) {
|
|
|
227
218
|
*
|
|
228
219
|
* @return {boolean} True if the block can be inserted in a widget area.
|
|
229
220
|
*/
|
|
230
|
-
const canInsertBlockInWidgetArea = (0, _data.createRegistrySelector)(select => (state, blockName) => {
|
|
221
|
+
const canInsertBlockInWidgetArea = exports.canInsertBlockInWidgetArea = (0, _data.createRegistrySelector)(select => (state, blockName) => {
|
|
231
222
|
// Widget areas are always top-level blocks, which getBlocks will return.
|
|
232
223
|
const widgetAreas = select(_blockEditor.store).getBlocks();
|
|
233
224
|
|
|
@@ -245,7 +236,6 @@ const canInsertBlockInWidgetArea = (0, _data.createRegistrySelector)(select => (
|
|
|
245
236
|
*
|
|
246
237
|
* @return {boolean} Whether the list view is opened.
|
|
247
238
|
*/
|
|
248
|
-
exports.canInsertBlockInWidgetArea = canInsertBlockInWidgetArea;
|
|
249
239
|
function isListViewOpened(state) {
|
|
250
240
|
return state.listViewPanel;
|
|
251
241
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_data","require","_widgets","_coreData","_blockEditor","_utils","_constants","EMPTY_INSERTION_POINT","rootClientId","undefined","insertionIndex","getWidgets","createRegistrySelector","select","widgets","coreStore","getEntityRecords","buildWidgetsQuery","reduce","allWidgets","widget","id","exports","getWidget","state","editWidgetsStoreName","getWidgetAreas","query","buildWidgetAreasQuery","KIND","WIDGET_AREA_ENTITY_TYPE","getWidgetAreaForWidgetId","widgetId","widgetAreas","find","widgetArea","post","getEditedEntityRecord","POST_TYPE","buildWidgetAreaPostId","blockWidgetIds","blocks","map","block","getWidgetIdFromBlock","includes","getParentWidgetAreaBlock","clientId","getBlock","getBlockName","getBlockParents","blockEditorStore","blockParents","widgetAreaClientId","parentClientId","getEditedWidgetAreas","ids","filter","hasEditsForEntityRecord","getReferenceWidgetBlocks","referenceWidgetName","results","_widgetArea","name","attributes","push","isSavingWidgetAreas","widgetAreasIds","isSaving","isSavingEntityRecord","widgetIds","Object","keys","getIsWidgetAreaOpen","widgetAreasOpenState","isInserterOpened","blockInserterPanel","__experimentalGetInsertionPoint","canInsertBlockInWidgetArea","blockName","getBlocks","firstWidgetArea","canInsertBlockType","isListViewOpened","listViewPanel"],"sources":["@wordpress/edit-widgets/src/store/selectors.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createRegistrySelector } from '@wordpress/data';\nimport { getWidgetIdFromBlock } from '@wordpress/widgets';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport {\n\tbuildWidgetsQuery,\n\tbuildWidgetAreasQuery,\n\tbuildWidgetAreaPostId,\n\tKIND,\n\tPOST_TYPE,\n\tWIDGET_AREA_ENTITY_TYPE,\n} from './utils';\nimport { STORE_NAME as editWidgetsStoreName } from './constants';\n\nconst EMPTY_INSERTION_POINT = {\n\trootClientId: undefined,\n\tinsertionIndex: undefined,\n};\n\n/**\n * Returns all API widgets.\n *\n * @return {Object[]} API List of widgets.\n */\nexport const getWidgets = createRegistrySelector( ( select ) => () => {\n\tconst widgets = select( coreStore ).getEntityRecords(\n\t\t'root',\n\t\t'widget',\n\t\tbuildWidgetsQuery()\n\t);\n\n\treturn (\n\t\t// Key widgets by their ID.\n\t\twidgets?.reduce(\n\t\t\t( allWidgets, widget ) => ( {\n\t\t\t\t...allWidgets,\n\t\t\t\t[ widget.id ]: widget,\n\t\t\t} ),\n\t\t\t{}\n\t\t) || {}\n\t);\n} );\n\n/**\n * Returns API widget data for a particular widget ID.\n *\n * @param {number} id Widget ID.\n *\n * @return {Object} API widget data for a particular widget ID.\n */\nexport const getWidget = createRegistrySelector(\n\t( select ) => ( state, id ) => {\n\t\tconst widgets = select( editWidgetsStoreName ).getWidgets();\n\t\treturn widgets[ id ];\n\t}\n);\n\n/**\n * Returns all API widget areas.\n *\n * @return {Object[]} API List of widget areas.\n */\nexport const getWidgetAreas = createRegistrySelector( ( select ) => () => {\n\tconst query = buildWidgetAreasQuery();\n\treturn select( coreStore ).getEntityRecords(\n\t\tKIND,\n\t\tWIDGET_AREA_ENTITY_TYPE,\n\t\tquery\n\t);\n} );\n\n/**\n * Returns widgetArea containing a block identify by given widgetId\n *\n * @param {string} widgetId The ID of the widget.\n * @return {Object} Containing widget area.\n */\nexport const getWidgetAreaForWidgetId = createRegistrySelector(\n\t( select ) => ( state, widgetId ) => {\n\t\tconst widgetAreas = select( editWidgetsStoreName ).getWidgetAreas();\n\t\treturn widgetAreas.find( ( widgetArea ) => {\n\t\t\tconst post = select( coreStore ).getEditedEntityRecord(\n\t\t\t\tKIND,\n\t\t\t\tPOST_TYPE,\n\t\t\t\tbuildWidgetAreaPostId( widgetArea.id )\n\t\t\t);\n\t\t\tconst blockWidgetIds = post.blocks.map( ( block ) =>\n\t\t\t\tgetWidgetIdFromBlock( block )\n\t\t\t);\n\t\t\treturn blockWidgetIds.includes( widgetId );\n\t\t} );\n\t}\n);\n\n/**\n * Given a child client id, returns the parent widget area block.\n *\n * @param {string} clientId The client id of a block in a widget area.\n *\n * @return {WPBlock} The widget area block.\n */\nexport const getParentWidgetAreaBlock = createRegistrySelector(\n\t( select ) => ( state, clientId ) => {\n\t\tconst { getBlock, getBlockName, getBlockParents } =\n\t\t\tselect( blockEditorStore );\n\t\tconst blockParents = getBlockParents( clientId );\n\t\tconst widgetAreaClientId = blockParents.find(\n\t\t\t( parentClientId ) =>\n\t\t\t\tgetBlockName( parentClientId ) === 'core/widget-area'\n\t\t);\n\t\treturn getBlock( widgetAreaClientId );\n\t}\n);\n\n/**\n * Returns all edited widget area entity records.\n *\n * @return {Object[]} List of edited widget area entity records.\n */\nexport const getEditedWidgetAreas = createRegistrySelector(\n\t( select ) => ( state, ids ) => {\n\t\tlet widgetAreas = select( editWidgetsStoreName ).getWidgetAreas();\n\t\tif ( ! widgetAreas ) {\n\t\t\treturn [];\n\t\t}\n\t\tif ( ids ) {\n\t\t\twidgetAreas = widgetAreas.filter( ( { id } ) =>\n\t\t\t\tids.includes( id )\n\t\t\t);\n\t\t}\n\t\treturn widgetAreas\n\t\t\t.filter( ( { id } ) =>\n\t\t\t\tselect( coreStore ).hasEditsForEntityRecord(\n\t\t\t\t\tKIND,\n\t\t\t\t\tPOST_TYPE,\n\t\t\t\t\tbuildWidgetAreaPostId( id )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.map( ( { id } ) =>\n\t\t\t\tselect( coreStore ).getEditedEntityRecord(\n\t\t\t\t\tKIND,\n\t\t\t\t\tWIDGET_AREA_ENTITY_TYPE,\n\t\t\t\t\tid\n\t\t\t\t)\n\t\t\t);\n\t}\n);\n\n/**\n * Returns all blocks representing reference widgets.\n *\n * @param {string} referenceWidgetName Optional. If given, only reference widgets with this name will be returned.\n * @return {Array} List of all blocks representing reference widgets\n */\nexport const getReferenceWidgetBlocks = createRegistrySelector(\n\t( select ) =>\n\t\t( state, referenceWidgetName = null ) => {\n\t\t\tconst results = [];\n\t\t\tconst widgetAreas = select( editWidgetsStoreName ).getWidgetAreas();\n\t\t\tfor ( const _widgetArea of widgetAreas ) {\n\t\t\t\tconst post = select( coreStore ).getEditedEntityRecord(\n\t\t\t\t\tKIND,\n\t\t\t\t\tPOST_TYPE,\n\t\t\t\t\tbuildWidgetAreaPostId( _widgetArea.id )\n\t\t\t\t);\n\t\t\t\tfor ( const block of post.blocks ) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tblock.name === 'core/legacy-widget' &&\n\t\t\t\t\t\t( ! referenceWidgetName ||\n\t\t\t\t\t\t\tblock.attributes?.referenceWidgetName ===\n\t\t\t\t\t\t\t\treferenceWidgetName )\n\t\t\t\t\t) {\n\t\t\t\t\t\tresults.push( block );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn results;\n\t\t}\n);\n\n/**\n * Returns true if any widget area is currently being saved.\n *\n * @return {boolean} True if any widget area is currently being saved. False otherwise.\n */\nexport const isSavingWidgetAreas = createRegistrySelector( ( select ) => () => {\n\tconst widgetAreasIds = select( editWidgetsStoreName )\n\t\t.getWidgetAreas()\n\t\t?.map( ( { id } ) => id );\n\tif ( ! widgetAreasIds ) {\n\t\treturn false;\n\t}\n\n\tfor ( const id of widgetAreasIds ) {\n\t\tconst isSaving = select( coreStore ).isSavingEntityRecord(\n\t\t\tKIND,\n\t\t\tWIDGET_AREA_ENTITY_TYPE,\n\t\t\tid\n\t\t);\n\t\tif ( isSaving ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tconst widgetIds = [\n\t\t...Object.keys( select( editWidgetsStoreName ).getWidgets() ),\n\t\tundefined, // account for new widgets without an ID\n\t];\n\tfor ( const id of widgetIds ) {\n\t\tconst isSaving = select( coreStore ).isSavingEntityRecord(\n\t\t\t'root',\n\t\t\t'widget',\n\t\t\tid\n\t\t);\n\t\tif ( isSaving ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n} );\n\n/**\n * Gets whether the widget area is opened.\n *\n * @param {Array} state The open state of the widget areas.\n * @param {string} clientId The clientId of the widget area.\n *\n * @return {boolean} True if the widget area is open.\n */\nexport const getIsWidgetAreaOpen = ( state, clientId ) => {\n\tconst { widgetAreasOpenState } = state;\n\treturn !! widgetAreasOpenState[ clientId ];\n};\n\n/**\n * Returns true if the inserter is opened.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the inserter is opened.\n */\nexport function isInserterOpened( state ) {\n\treturn !! state.blockInserterPanel;\n}\n\n/**\n * Get the insertion point for the inserter.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object} The root client ID and index to insert at.\n */\nexport function __experimentalGetInsertionPoint( state ) {\n\tif ( typeof state.blockInserterPanel === 'boolean' ) {\n\t\treturn EMPTY_INSERTION_POINT;\n\t}\n\n\treturn state.blockInserterPanel;\n}\n\n/**\n * Returns true if a block can be inserted into a widget area.\n *\n * @param {Array} state The open state of the widget areas.\n * @param {string} blockName The name of the block being inserted.\n *\n * @return {boolean} True if the block can be inserted in a widget area.\n */\nexport const canInsertBlockInWidgetArea = createRegistrySelector(\n\t( select ) => ( state, blockName ) => {\n\t\t// Widget areas are always top-level blocks, which getBlocks will return.\n\t\tconst widgetAreas = select( blockEditorStore ).getBlocks();\n\n\t\t// Makes an assumption that a block that can be inserted into one\n\t\t// widget area can be inserted into any widget area. Uses the first\n\t\t// widget area for testing whether the block can be inserted.\n\t\tconst [ firstWidgetArea ] = widgetAreas;\n\t\treturn select( blockEditorStore ).canInsertBlockType(\n\t\t\tblockName,\n\t\t\tfirstWidgetArea.clientId\n\t\t);\n\t}\n);\n\n/**\n * Returns true if the list view is opened.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the list view is opened.\n */\nexport function isListViewOpened( state ) {\n\treturn state.listViewPanel;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_data","require","_widgets","_coreData","_blockEditor","_utils","_constants","EMPTY_INSERTION_POINT","rootClientId","undefined","insertionIndex","getWidgets","exports","createRegistrySelector","select","widgets","coreStore","getEntityRecords","buildWidgetsQuery","reduce","allWidgets","widget","id","getWidget","state","editWidgetsStoreName","getWidgetAreas","query","buildWidgetAreasQuery","KIND","WIDGET_AREA_ENTITY_TYPE","getWidgetAreaForWidgetId","widgetId","widgetAreas","find","widgetArea","post","getEditedEntityRecord","POST_TYPE","buildWidgetAreaPostId","blockWidgetIds","blocks","map","block","getWidgetIdFromBlock","includes","getParentWidgetAreaBlock","clientId","getBlock","getBlockName","getBlockParents","blockEditorStore","blockParents","widgetAreaClientId","parentClientId","getEditedWidgetAreas","ids","filter","hasEditsForEntityRecord","getReferenceWidgetBlocks","referenceWidgetName","results","_widgetArea","name","attributes","push","isSavingWidgetAreas","widgetAreasIds","isSaving","isSavingEntityRecord","widgetIds","Object","keys","getIsWidgetAreaOpen","widgetAreasOpenState","isInserterOpened","blockInserterPanel","__experimentalGetInsertionPoint","canInsertBlockInWidgetArea","blockName","getBlocks","firstWidgetArea","canInsertBlockType","isListViewOpened","listViewPanel"],"sources":["@wordpress/edit-widgets/src/store/selectors.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createRegistrySelector } from '@wordpress/data';\nimport { getWidgetIdFromBlock } from '@wordpress/widgets';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport {\n\tbuildWidgetsQuery,\n\tbuildWidgetAreasQuery,\n\tbuildWidgetAreaPostId,\n\tKIND,\n\tPOST_TYPE,\n\tWIDGET_AREA_ENTITY_TYPE,\n} from './utils';\nimport { STORE_NAME as editWidgetsStoreName } from './constants';\n\nconst EMPTY_INSERTION_POINT = {\n\trootClientId: undefined,\n\tinsertionIndex: undefined,\n};\n\n/**\n * Returns all API widgets.\n *\n * @return {Object[]} API List of widgets.\n */\nexport const getWidgets = createRegistrySelector( ( select ) => () => {\n\tconst widgets = select( coreStore ).getEntityRecords(\n\t\t'root',\n\t\t'widget',\n\t\tbuildWidgetsQuery()\n\t);\n\n\treturn (\n\t\t// Key widgets by their ID.\n\t\twidgets?.reduce(\n\t\t\t( allWidgets, widget ) => ( {\n\t\t\t\t...allWidgets,\n\t\t\t\t[ widget.id ]: widget,\n\t\t\t} ),\n\t\t\t{}\n\t\t) || {}\n\t);\n} );\n\n/**\n * Returns API widget data for a particular widget ID.\n *\n * @param {number} id Widget ID.\n *\n * @return {Object} API widget data for a particular widget ID.\n */\nexport const getWidget = createRegistrySelector(\n\t( select ) => ( state, id ) => {\n\t\tconst widgets = select( editWidgetsStoreName ).getWidgets();\n\t\treturn widgets[ id ];\n\t}\n);\n\n/**\n * Returns all API widget areas.\n *\n * @return {Object[]} API List of widget areas.\n */\nexport const getWidgetAreas = createRegistrySelector( ( select ) => () => {\n\tconst query = buildWidgetAreasQuery();\n\treturn select( coreStore ).getEntityRecords(\n\t\tKIND,\n\t\tWIDGET_AREA_ENTITY_TYPE,\n\t\tquery\n\t);\n} );\n\n/**\n * Returns widgetArea containing a block identify by given widgetId\n *\n * @param {string} widgetId The ID of the widget.\n * @return {Object} Containing widget area.\n */\nexport const getWidgetAreaForWidgetId = createRegistrySelector(\n\t( select ) => ( state, widgetId ) => {\n\t\tconst widgetAreas = select( editWidgetsStoreName ).getWidgetAreas();\n\t\treturn widgetAreas.find( ( widgetArea ) => {\n\t\t\tconst post = select( coreStore ).getEditedEntityRecord(\n\t\t\t\tKIND,\n\t\t\t\tPOST_TYPE,\n\t\t\t\tbuildWidgetAreaPostId( widgetArea.id )\n\t\t\t);\n\t\t\tconst blockWidgetIds = post.blocks.map( ( block ) =>\n\t\t\t\tgetWidgetIdFromBlock( block )\n\t\t\t);\n\t\t\treturn blockWidgetIds.includes( widgetId );\n\t\t} );\n\t}\n);\n\n/**\n * Given a child client id, returns the parent widget area block.\n *\n * @param {string} clientId The client id of a block in a widget area.\n *\n * @return {WPBlock} The widget area block.\n */\nexport const getParentWidgetAreaBlock = createRegistrySelector(\n\t( select ) => ( state, clientId ) => {\n\t\tconst { getBlock, getBlockName, getBlockParents } =\n\t\t\tselect( blockEditorStore );\n\t\tconst blockParents = getBlockParents( clientId );\n\t\tconst widgetAreaClientId = blockParents.find(\n\t\t\t( parentClientId ) =>\n\t\t\t\tgetBlockName( parentClientId ) === 'core/widget-area'\n\t\t);\n\t\treturn getBlock( widgetAreaClientId );\n\t}\n);\n\n/**\n * Returns all edited widget area entity records.\n *\n * @return {Object[]} List of edited widget area entity records.\n */\nexport const getEditedWidgetAreas = createRegistrySelector(\n\t( select ) => ( state, ids ) => {\n\t\tlet widgetAreas = select( editWidgetsStoreName ).getWidgetAreas();\n\t\tif ( ! widgetAreas ) {\n\t\t\treturn [];\n\t\t}\n\t\tif ( ids ) {\n\t\t\twidgetAreas = widgetAreas.filter( ( { id } ) =>\n\t\t\t\tids.includes( id )\n\t\t\t);\n\t\t}\n\t\treturn widgetAreas\n\t\t\t.filter( ( { id } ) =>\n\t\t\t\tselect( coreStore ).hasEditsForEntityRecord(\n\t\t\t\t\tKIND,\n\t\t\t\t\tPOST_TYPE,\n\t\t\t\t\tbuildWidgetAreaPostId( id )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.map( ( { id } ) =>\n\t\t\t\tselect( coreStore ).getEditedEntityRecord(\n\t\t\t\t\tKIND,\n\t\t\t\t\tWIDGET_AREA_ENTITY_TYPE,\n\t\t\t\t\tid\n\t\t\t\t)\n\t\t\t);\n\t}\n);\n\n/**\n * Returns all blocks representing reference widgets.\n *\n * @param {string} referenceWidgetName Optional. If given, only reference widgets with this name will be returned.\n * @return {Array} List of all blocks representing reference widgets\n */\nexport const getReferenceWidgetBlocks = createRegistrySelector(\n\t( select ) =>\n\t\t( state, referenceWidgetName = null ) => {\n\t\t\tconst results = [];\n\t\t\tconst widgetAreas = select( editWidgetsStoreName ).getWidgetAreas();\n\t\t\tfor ( const _widgetArea of widgetAreas ) {\n\t\t\t\tconst post = select( coreStore ).getEditedEntityRecord(\n\t\t\t\t\tKIND,\n\t\t\t\t\tPOST_TYPE,\n\t\t\t\t\tbuildWidgetAreaPostId( _widgetArea.id )\n\t\t\t\t);\n\t\t\t\tfor ( const block of post.blocks ) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tblock.name === 'core/legacy-widget' &&\n\t\t\t\t\t\t( ! referenceWidgetName ||\n\t\t\t\t\t\t\tblock.attributes?.referenceWidgetName ===\n\t\t\t\t\t\t\t\treferenceWidgetName )\n\t\t\t\t\t) {\n\t\t\t\t\t\tresults.push( block );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn results;\n\t\t}\n);\n\n/**\n * Returns true if any widget area is currently being saved.\n *\n * @return {boolean} True if any widget area is currently being saved. False otherwise.\n */\nexport const isSavingWidgetAreas = createRegistrySelector( ( select ) => () => {\n\tconst widgetAreasIds = select( editWidgetsStoreName )\n\t\t.getWidgetAreas()\n\t\t?.map( ( { id } ) => id );\n\tif ( ! widgetAreasIds ) {\n\t\treturn false;\n\t}\n\n\tfor ( const id of widgetAreasIds ) {\n\t\tconst isSaving = select( coreStore ).isSavingEntityRecord(\n\t\t\tKIND,\n\t\t\tWIDGET_AREA_ENTITY_TYPE,\n\t\t\tid\n\t\t);\n\t\tif ( isSaving ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tconst widgetIds = [\n\t\t...Object.keys( select( editWidgetsStoreName ).getWidgets() ),\n\t\tundefined, // account for new widgets without an ID\n\t];\n\tfor ( const id of widgetIds ) {\n\t\tconst isSaving = select( coreStore ).isSavingEntityRecord(\n\t\t\t'root',\n\t\t\t'widget',\n\t\t\tid\n\t\t);\n\t\tif ( isSaving ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n} );\n\n/**\n * Gets whether the widget area is opened.\n *\n * @param {Array} state The open state of the widget areas.\n * @param {string} clientId The clientId of the widget area.\n *\n * @return {boolean} True if the widget area is open.\n */\nexport const getIsWidgetAreaOpen = ( state, clientId ) => {\n\tconst { widgetAreasOpenState } = state;\n\treturn !! widgetAreasOpenState[ clientId ];\n};\n\n/**\n * Returns true if the inserter is opened.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the inserter is opened.\n */\nexport function isInserterOpened( state ) {\n\treturn !! state.blockInserterPanel;\n}\n\n/**\n * Get the insertion point for the inserter.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object} The root client ID and index to insert at.\n */\nexport function __experimentalGetInsertionPoint( state ) {\n\tif ( typeof state.blockInserterPanel === 'boolean' ) {\n\t\treturn EMPTY_INSERTION_POINT;\n\t}\n\n\treturn state.blockInserterPanel;\n}\n\n/**\n * Returns true if a block can be inserted into a widget area.\n *\n * @param {Array} state The open state of the widget areas.\n * @param {string} blockName The name of the block being inserted.\n *\n * @return {boolean} True if the block can be inserted in a widget area.\n */\nexport const canInsertBlockInWidgetArea = createRegistrySelector(\n\t( select ) => ( state, blockName ) => {\n\t\t// Widget areas are always top-level blocks, which getBlocks will return.\n\t\tconst widgetAreas = select( blockEditorStore ).getBlocks();\n\n\t\t// Makes an assumption that a block that can be inserted into one\n\t\t// widget area can be inserted into any widget area. Uses the first\n\t\t// widget area for testing whether the block can be inserted.\n\t\tconst [ firstWidgetArea ] = widgetAreas;\n\t\treturn select( blockEditorStore ).canInsertBlockType(\n\t\t\tblockName,\n\t\t\tfirstWidgetArea.clientId\n\t\t);\n\t}\n);\n\n/**\n * Returns true if the list view is opened.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the list view is opened.\n */\nexport function isListViewOpened( state ) {\n\treturn state.listViewPanel;\n}\n"],"mappings":"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"}
|
package/build/store/utils.js
CHANGED
|
@@ -12,23 +12,21 @@ exports.createStubPost = void 0;
|
|
|
12
12
|
*
|
|
13
13
|
* @type {string}
|
|
14
14
|
*/
|
|
15
|
-
const KIND = 'root';
|
|
15
|
+
const KIND = exports.KIND = 'root';
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* "post type" of the navigation post.
|
|
19
19
|
*
|
|
20
20
|
* @type {string}
|
|
21
21
|
*/
|
|
22
|
-
exports.
|
|
23
|
-
const WIDGET_AREA_ENTITY_TYPE = 'sidebar';
|
|
22
|
+
const WIDGET_AREA_ENTITY_TYPE = exports.WIDGET_AREA_ENTITY_TYPE = 'sidebar';
|
|
24
23
|
|
|
25
24
|
/**
|
|
26
25
|
* "post type" of the widget area post.
|
|
27
26
|
*
|
|
28
27
|
* @type {string}
|
|
29
28
|
*/
|
|
30
|
-
exports.
|
|
31
|
-
const POST_TYPE = 'postType';
|
|
29
|
+
const POST_TYPE = exports.POST_TYPE = 'postType';
|
|
32
30
|
|
|
33
31
|
/**
|
|
34
32
|
* Builds an ID for a new widget area post.
|
|
@@ -36,7 +34,6 @@ const POST_TYPE = 'postType';
|
|
|
36
34
|
* @param {number} widgetAreaId Widget area id.
|
|
37
35
|
* @return {string} An ID.
|
|
38
36
|
*/
|
|
39
|
-
exports.POST_TYPE = POST_TYPE;
|
|
40
37
|
const buildWidgetAreaPostId = widgetAreaId => `widget-area-${widgetAreaId}`;
|
|
41
38
|
|
|
42
39
|
/**
|
package/build/store/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["KIND","exports","WIDGET_AREA_ENTITY_TYPE","POST_TYPE","buildWidgetAreaPostId","widgetAreaId","buildWidgetAreasPostId","buildWidgetAreasQuery","per_page","buildWidgetsQuery","_embed","createStubPost","id","blocks","slug","status","type","meta"],"sources":["@wordpress/edit-widgets/src/store/utils.js"],"sourcesContent":["/**\n * \"Kind\" of the navigation post.\n *\n * @type {string}\n */\nexport const KIND = 'root';\n\n/**\n * \"post type\" of the navigation post.\n *\n * @type {string}\n */\nexport const WIDGET_AREA_ENTITY_TYPE = 'sidebar';\n\n/**\n * \"post type\" of the widget area post.\n *\n * @type {string}\n */\nexport const POST_TYPE = 'postType';\n\n/**\n * Builds an ID for a new widget area post.\n *\n * @param {number} widgetAreaId Widget area id.\n * @return {string} An ID.\n */\nexport const buildWidgetAreaPostId = ( widgetAreaId ) =>\n\t`widget-area-${ widgetAreaId }`;\n\n/**\n * Builds an ID for a global widget areas post.\n *\n * @return {string} An ID.\n */\nexport const buildWidgetAreasPostId = () => `widget-areas`;\n\n/**\n * Builds a query to resolve sidebars.\n *\n * @return {Object} Query.\n */\nexport function buildWidgetAreasQuery() {\n\treturn {\n\t\tper_page: -1,\n\t};\n}\n\n/**\n * Builds a query to resolve widgets.\n *\n * @return {Object} Query.\n */\nexport function buildWidgetsQuery() {\n\treturn {\n\t\tper_page: -1,\n\t\t_embed: 'about',\n\t};\n}\n\n/**\n * Creates a stub post with given id and set of blocks. Used as a governing entity records\n * for all widget areas.\n *\n * @param {string} id Post ID.\n * @param {Array} blocks The list of blocks.\n * @return {Object} A stub post object formatted in compliance with the data layer.\n */\nexport const createStubPost = ( id, blocks ) => ( {\n\tid,\n\tslug: id,\n\tstatus: 'draft',\n\ttype: 'page',\n\tblocks,\n\tmeta: {\n\t\twidgetAreaId: id,\n\t},\n} );\n"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACO,MAAMA,IAAI,GAAG,MAAM;;AAE1B;AACA;AACA;AACA;AACA;
|
|
1
|
+
{"version":3,"names":["KIND","exports","WIDGET_AREA_ENTITY_TYPE","POST_TYPE","buildWidgetAreaPostId","widgetAreaId","buildWidgetAreasPostId","buildWidgetAreasQuery","per_page","buildWidgetsQuery","_embed","createStubPost","id","blocks","slug","status","type","meta"],"sources":["@wordpress/edit-widgets/src/store/utils.js"],"sourcesContent":["/**\n * \"Kind\" of the navigation post.\n *\n * @type {string}\n */\nexport const KIND = 'root';\n\n/**\n * \"post type\" of the navigation post.\n *\n * @type {string}\n */\nexport const WIDGET_AREA_ENTITY_TYPE = 'sidebar';\n\n/**\n * \"post type\" of the widget area post.\n *\n * @type {string}\n */\nexport const POST_TYPE = 'postType';\n\n/**\n * Builds an ID for a new widget area post.\n *\n * @param {number} widgetAreaId Widget area id.\n * @return {string} An ID.\n */\nexport const buildWidgetAreaPostId = ( widgetAreaId ) =>\n\t`widget-area-${ widgetAreaId }`;\n\n/**\n * Builds an ID for a global widget areas post.\n *\n * @return {string} An ID.\n */\nexport const buildWidgetAreasPostId = () => `widget-areas`;\n\n/**\n * Builds a query to resolve sidebars.\n *\n * @return {Object} Query.\n */\nexport function buildWidgetAreasQuery() {\n\treturn {\n\t\tper_page: -1,\n\t};\n}\n\n/**\n * Builds a query to resolve widgets.\n *\n * @return {Object} Query.\n */\nexport function buildWidgetsQuery() {\n\treturn {\n\t\tper_page: -1,\n\t\t_embed: 'about',\n\t};\n}\n\n/**\n * Creates a stub post with given id and set of blocks. Used as a governing entity records\n * for all widget areas.\n *\n * @param {string} id Post ID.\n * @param {Array} blocks The list of blocks.\n * @return {Object} A stub post object formatted in compliance with the data layer.\n */\nexport const createStubPost = ( id, blocks ) => ( {\n\tid,\n\tslug: id,\n\tstatus: 'draft',\n\ttype: 'page',\n\tblocks,\n\tmeta: {\n\t\twidgetAreaId: id,\n\t},\n} );\n"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACO,MAAMA,IAAI,GAAAC,OAAA,CAAAD,IAAA,GAAG,MAAM;;AAE1B;AACA;AACA;AACA;AACA;AACO,MAAME,uBAAuB,GAAAD,OAAA,CAAAC,uBAAA,GAAG,SAAS;;AAEhD;AACA;AACA;AACA;AACA;AACO,MAAMC,SAAS,GAAAF,OAAA,CAAAE,SAAA,GAAG,UAAU;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,qBAAqB,GAAKC,YAAY,IACjD,eAAeA,YAAc,EAAC;;AAEhC;AACA;AACA;AACA;AACA;AAJAJ,OAAA,CAAAG,qBAAA,GAAAA,qBAAA;AAKO,MAAME,sBAAsB,GAAGA,CAAA,KAAO,cAAa;;AAE1D;AACA;AACA;AACA;AACA;AAJAL,OAAA,CAAAK,sBAAA,GAAAA,sBAAA;AAKO,SAASC,qBAAqBA,CAAA,EAAG;EACvC,OAAO;IACNC,QAAQ,EAAE,CAAC;EACZ,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,iBAAiBA,CAAA,EAAG;EACnC,OAAO;IACND,QAAQ,EAAE,CAAC,CAAC;IACZE,MAAM,EAAE;EACT,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,cAAc,GAAGA,CAAEC,EAAE,EAAEC,MAAM,MAAQ;EACjDD,EAAE;EACFE,IAAI,EAAEF,EAAE;EACRG,MAAM,EAAE,OAAO;EACfC,IAAI,EAAE,MAAM;EACZH,MAAM;EACNI,IAAI,EAAE;IACLZ,YAAY,EAAEO;EACf;AACD,CAAC,CAAE;AAACX,OAAA,CAAAU,cAAA,GAAAA,cAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["classnames","Modal","__","useShortcut","store","keyboardShortcutsStore","useSelect","textFormattingShortcuts","Shortcut","DynamicShortcut","ShortcutList","shortcuts","createElement","className","role","map","shortcut","index","key","name","ShortcutSection","title","ShortcutCategorySection","categoryName","additionalShortcuts","categoryShortcuts","select","getCategoryShortcuts","concat","KeyboardShortcutHelpModal","isModalActive","toggleModal","bindGlobal","onRequestClose","keyCombination","character","description","ariaLabel"],"sources":["@wordpress/edit-widgets/src/components/keyboard-shortcut-help-modal/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Modal } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseShortcut,\n\tstore as keyboardShortcutsStore,\n} from '@wordpress/keyboard-shortcuts';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { textFormattingShortcuts } from './config';\nimport Shortcut from './shortcut';\nimport DynamicShortcut from './dynamic-shortcut';\n\nconst ShortcutList = ( { shortcuts } ) => (\n\t/*\n\t * Disable reason: The `list` ARIA role is redundant but\n\t * Safari+VoiceOver won't announce the list otherwise.\n\t */\n\t/* eslint-disable jsx-a11y/no-redundant-roles */\n\t<ul\n\t\tclassName=\"edit-widgets-keyboard-shortcut-help-modal__shortcut-list\"\n\t\trole=\"list\"\n\t>\n\t\t{ shortcuts.map( ( shortcut, index ) => (\n\t\t\t<li\n\t\t\t\tclassName=\"edit-widgets-keyboard-shortcut-help-modal__shortcut\"\n\t\t\t\tkey={ index }\n\t\t\t>\n\t\t\t\t{ typeof shortcut === 'string' ? (\n\t\t\t\t\t<DynamicShortcut name={ shortcut } />\n\t\t\t\t) : (\n\t\t\t\t\t<Shortcut { ...shortcut } />\n\t\t\t\t) }\n\t\t\t</li>\n\t\t) ) }\n\t</ul>\n\t/* eslint-enable jsx-a11y/no-redundant-roles */\n);\n\nconst ShortcutSection = ( { title, shortcuts, className } ) => (\n\t<section\n\t\tclassName={ classnames(\n\t\t\t'edit-widgets-keyboard-shortcut-help-modal__section',\n\t\t\tclassName\n\t\t) }\n\t>\n\t\t{ !! title && (\n\t\t\t<h2 className=\"edit-widgets-keyboard-shortcut-help-modal__section-title\">\n\t\t\t\t{ title }\n\t\t\t</h2>\n\t\t) }\n\t\t<ShortcutList shortcuts={ shortcuts } />\n\t</section>\n);\n\nconst ShortcutCategorySection = ( {\n\ttitle,\n\tcategoryName,\n\tadditionalShortcuts = [],\n} ) => {\n\tconst categoryShortcuts = useSelect(\n\t\t( select ) => {\n\t\t\treturn select( keyboardShortcutsStore ).getCategoryShortcuts(\n\t\t\t\tcategoryName\n\t\t\t);\n\t\t},\n\t\t[ categoryName ]\n\t);\n\n\treturn (\n\t\t<ShortcutSection\n\t\t\ttitle={ title }\n\t\t\tshortcuts={ categoryShortcuts.concat( additionalShortcuts ) }\n\t\t/>\n\t);\n};\n\nexport default function KeyboardShortcutHelpModal( {\n\tisModalActive,\n\ttoggleModal,\n} ) {\n\tuseShortcut( 'core/edit-widgets/keyboard-shortcuts', toggleModal, {\n\t\tbindGlobal: true,\n\t} );\n\n\tif ( ! isModalActive ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"edit-widgets-keyboard-shortcut-help-modal\"\n\t\t\ttitle={ __( 'Keyboard shortcuts' ) }\n\t\t\tonRequestClose={ toggleModal }\n\t\t>\n\t\t\t<ShortcutSection\n\t\t\t\tclassName=\"edit-widgets-keyboard-shortcut-help-modal__main-shortcuts\"\n\t\t\t\tshortcuts={ [ 'core/edit-widgets/keyboard-shortcuts' ] }\n\t\t\t/>\n\t\t\t<ShortcutCategorySection\n\t\t\t\ttitle={ __( 'Global shortcuts' ) }\n\t\t\t\tcategoryName=\"global\"\n\t\t\t/>\n\n\t\t\t<ShortcutCategorySection\n\t\t\t\ttitle={ __( 'Selection shortcuts' ) }\n\t\t\t\tcategoryName=\"selection\"\n\t\t\t/>\n\n\t\t\t<ShortcutCategorySection\n\t\t\t\ttitle={ __( 'Block shortcuts' ) }\n\t\t\t\tcategoryName=\"block\"\n\t\t\t\tadditionalShortcuts={ [\n\t\t\t\t\t{\n\t\t\t\t\t\tkeyCombination: { character: '/' },\n\t\t\t\t\t\tdescription: __(\n\t\t\t\t\t\t\t'Change the block type after adding a new paragraph.'\n\t\t\t\t\t\t),\n\t\t\t\t\t\t/* translators: The forward-slash character. e.g. '/'. */\n\t\t\t\t\t\tariaLabel: __( 'Forward-slash' ),\n\t\t\t\t\t},\n\t\t\t\t] }\n\t\t\t/>\n\t\t\t<ShortcutSection\n\t\t\t\ttitle={ __( 'Text formatting' ) }\n\t\t\t\tshortcuts={ textFormattingShortcuts }\n\t\t\t/>\n\t\t</Modal>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SACCC,WAAW,EACXC,KAAK,IAAIC,sBAAsB,QACzB,+BAA+B;AACtC,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,SAASC,uBAAuB,QAAQ,UAAU;AAClD,OAAOC,QAAQ,MAAM,YAAY;AACjC,OAAOC,eAAe,MAAM,oBAAoB;AAEhD,MAAMC,YAAY,GAAGA,CAAE;EAAEC;AAAU,CAAC;AACnC;AACD;AACA;AACA;AACC;AACAC,aAAA;EACCC,SAAS,EAAC,0DAA0D;EACpEC,IAAI,EAAC;AAAM,GAETH,SAAS,CAACI,GAAG,CAAE,CAAEC,QAAQ,EAAEC,KAAK,KACjCL,aAAA;EACCC,SAAS,EAAC,qDAAqD;EAC/DK,GAAG,EAAGD;AAAO,GAEX,OAAOD,QAAQ,KAAK,QAAQ,GAC7BJ,aAAA,CAACH,eAAe;EAACU,IAAI,EAAGH;AAAU,CAAE,CAAC,GAErCJ,aAAA,CAACJ,QAAQ;EAAA,GAAMQ;AAAQ,CAAI,CAEzB,CACH,CACC;AACJ,+CACA
|
|
1
|
+
{"version":3,"names":["classnames","Modal","__","useShortcut","store","keyboardShortcutsStore","useSelect","textFormattingShortcuts","Shortcut","DynamicShortcut","ShortcutList","shortcuts","createElement","className","role","map","shortcut","index","key","name","ShortcutSection","title","ShortcutCategorySection","categoryName","additionalShortcuts","categoryShortcuts","select","getCategoryShortcuts","concat","KeyboardShortcutHelpModal","isModalActive","toggleModal","bindGlobal","onRequestClose","keyCombination","character","description","ariaLabel"],"sources":["@wordpress/edit-widgets/src/components/keyboard-shortcut-help-modal/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Modal } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseShortcut,\n\tstore as keyboardShortcutsStore,\n} from '@wordpress/keyboard-shortcuts';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { textFormattingShortcuts } from './config';\nimport Shortcut from './shortcut';\nimport DynamicShortcut from './dynamic-shortcut';\n\nconst ShortcutList = ( { shortcuts } ) => (\n\t/*\n\t * Disable reason: The `list` ARIA role is redundant but\n\t * Safari+VoiceOver won't announce the list otherwise.\n\t */\n\t/* eslint-disable jsx-a11y/no-redundant-roles */\n\t<ul\n\t\tclassName=\"edit-widgets-keyboard-shortcut-help-modal__shortcut-list\"\n\t\trole=\"list\"\n\t>\n\t\t{ shortcuts.map( ( shortcut, index ) => (\n\t\t\t<li\n\t\t\t\tclassName=\"edit-widgets-keyboard-shortcut-help-modal__shortcut\"\n\t\t\t\tkey={ index }\n\t\t\t>\n\t\t\t\t{ typeof shortcut === 'string' ? (\n\t\t\t\t\t<DynamicShortcut name={ shortcut } />\n\t\t\t\t) : (\n\t\t\t\t\t<Shortcut { ...shortcut } />\n\t\t\t\t) }\n\t\t\t</li>\n\t\t) ) }\n\t</ul>\n\t/* eslint-enable jsx-a11y/no-redundant-roles */\n);\n\nconst ShortcutSection = ( { title, shortcuts, className } ) => (\n\t<section\n\t\tclassName={ classnames(\n\t\t\t'edit-widgets-keyboard-shortcut-help-modal__section',\n\t\t\tclassName\n\t\t) }\n\t>\n\t\t{ !! title && (\n\t\t\t<h2 className=\"edit-widgets-keyboard-shortcut-help-modal__section-title\">\n\t\t\t\t{ title }\n\t\t\t</h2>\n\t\t) }\n\t\t<ShortcutList shortcuts={ shortcuts } />\n\t</section>\n);\n\nconst ShortcutCategorySection = ( {\n\ttitle,\n\tcategoryName,\n\tadditionalShortcuts = [],\n} ) => {\n\tconst categoryShortcuts = useSelect(\n\t\t( select ) => {\n\t\t\treturn select( keyboardShortcutsStore ).getCategoryShortcuts(\n\t\t\t\tcategoryName\n\t\t\t);\n\t\t},\n\t\t[ categoryName ]\n\t);\n\n\treturn (\n\t\t<ShortcutSection\n\t\t\ttitle={ title }\n\t\t\tshortcuts={ categoryShortcuts.concat( additionalShortcuts ) }\n\t\t/>\n\t);\n};\n\nexport default function KeyboardShortcutHelpModal( {\n\tisModalActive,\n\ttoggleModal,\n} ) {\n\tuseShortcut( 'core/edit-widgets/keyboard-shortcuts', toggleModal, {\n\t\tbindGlobal: true,\n\t} );\n\n\tif ( ! isModalActive ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"edit-widgets-keyboard-shortcut-help-modal\"\n\t\t\ttitle={ __( 'Keyboard shortcuts' ) }\n\t\t\tonRequestClose={ toggleModal }\n\t\t>\n\t\t\t<ShortcutSection\n\t\t\t\tclassName=\"edit-widgets-keyboard-shortcut-help-modal__main-shortcuts\"\n\t\t\t\tshortcuts={ [ 'core/edit-widgets/keyboard-shortcuts' ] }\n\t\t\t/>\n\t\t\t<ShortcutCategorySection\n\t\t\t\ttitle={ __( 'Global shortcuts' ) }\n\t\t\t\tcategoryName=\"global\"\n\t\t\t/>\n\n\t\t\t<ShortcutCategorySection\n\t\t\t\ttitle={ __( 'Selection shortcuts' ) }\n\t\t\t\tcategoryName=\"selection\"\n\t\t\t/>\n\n\t\t\t<ShortcutCategorySection\n\t\t\t\ttitle={ __( 'Block shortcuts' ) }\n\t\t\t\tcategoryName=\"block\"\n\t\t\t\tadditionalShortcuts={ [\n\t\t\t\t\t{\n\t\t\t\t\t\tkeyCombination: { character: '/' },\n\t\t\t\t\t\tdescription: __(\n\t\t\t\t\t\t\t'Change the block type after adding a new paragraph.'\n\t\t\t\t\t\t),\n\t\t\t\t\t\t/* translators: The forward-slash character. e.g. '/'. */\n\t\t\t\t\t\tariaLabel: __( 'Forward-slash' ),\n\t\t\t\t\t},\n\t\t\t\t] }\n\t\t\t/>\n\t\t\t<ShortcutSection\n\t\t\t\ttitle={ __( 'Text formatting' ) }\n\t\t\t\tshortcuts={ textFormattingShortcuts }\n\t\t\t/>\n\t\t</Modal>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -5,6 +5,9 @@ import { createElement, Fragment } from "react";
|
|
|
5
5
|
import { NoticeList, SnackbarList } from '@wordpress/components';
|
|
6
6
|
import { useSelect, useDispatch } from '@wordpress/data';
|
|
7
7
|
import { store as noticesStore } from '@wordpress/notices';
|
|
8
|
+
|
|
9
|
+
// Last three notices. Slices from the tail end of the list.
|
|
10
|
+
const MAX_VISIBLE_NOTICES = -3;
|
|
8
11
|
function Notices() {
|
|
9
12
|
const {
|
|
10
13
|
removeNotice
|
|
@@ -26,7 +29,7 @@ function Notices() {
|
|
|
26
29
|
}) => !isDismissible && type === 'default');
|
|
27
30
|
const snackbarNotices = notices.filter(({
|
|
28
31
|
type
|
|
29
|
-
}) => type === 'snackbar');
|
|
32
|
+
}) => type === 'snackbar').slice(MAX_VISIBLE_NOTICES);
|
|
30
33
|
return createElement(Fragment, null, createElement(NoticeList, {
|
|
31
34
|
notices: nonDismissibleNotices,
|
|
32
35
|
className: "edit-widgets-notices__pinned"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NoticeList","SnackbarList","useSelect","useDispatch","store","noticesStore","Notices","removeNotice","notices","select","getNotices","dismissibleNotices","filter","isDismissible","type","nonDismissibleNotices","snackbarNotices","createElement","Fragment","className","onRemove"],"sources":["@wordpress/edit-widgets/src/components/notices/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { NoticeList, SnackbarList } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\n\nfunction Notices() {\n\tconst { removeNotice } = useDispatch( noticesStore );\n\tconst { notices } = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tnotices: select( noticesStore ).getNotices(),\n\t\t};\n\t}, [] );\n\n\tconst dismissibleNotices = notices.filter(\n\t\t( { isDismissible, type } ) => isDismissible && type === 'default'\n\t);\n\tconst nonDismissibleNotices = notices.filter(\n\t\t( { isDismissible, type } ) => ! isDismissible && type === 'default'\n\t);\n\tconst snackbarNotices = notices
|
|
1
|
+
{"version":3,"names":["NoticeList","SnackbarList","useSelect","useDispatch","store","noticesStore","MAX_VISIBLE_NOTICES","Notices","removeNotice","notices","select","getNotices","dismissibleNotices","filter","isDismissible","type","nonDismissibleNotices","snackbarNotices","slice","createElement","Fragment","className","onRemove"],"sources":["@wordpress/edit-widgets/src/components/notices/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { NoticeList, SnackbarList } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\n\n// Last three notices. Slices from the tail end of the list.\nconst MAX_VISIBLE_NOTICES = -3;\n\nfunction Notices() {\n\tconst { removeNotice } = useDispatch( noticesStore );\n\tconst { notices } = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tnotices: select( noticesStore ).getNotices(),\n\t\t};\n\t}, [] );\n\n\tconst dismissibleNotices = notices.filter(\n\t\t( { isDismissible, type } ) => isDismissible && type === 'default'\n\t);\n\tconst nonDismissibleNotices = notices.filter(\n\t\t( { isDismissible, type } ) => ! isDismissible && type === 'default'\n\t);\n\tconst snackbarNotices = notices\n\t\t.filter( ( { type } ) => type === 'snackbar' )\n\t\t.slice( MAX_VISIBLE_NOTICES );\n\n\treturn (\n\t\t<>\n\t\t\t<NoticeList\n\t\t\t\tnotices={ nonDismissibleNotices }\n\t\t\t\tclassName=\"edit-widgets-notices__pinned\"\n\t\t\t/>\n\t\t\t<NoticeList\n\t\t\t\tnotices={ dismissibleNotices }\n\t\t\t\tclassName=\"edit-widgets-notices__dismissible\"\n\t\t\t\tonRemove={ removeNotice }\n\t\t\t/>\n\t\t\t<SnackbarList\n\t\t\t\tnotices={ snackbarNotices }\n\t\t\t\tclassName=\"edit-widgets-notices__snackbar\"\n\t\t\t\tonRemove={ removeNotice }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default Notices;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,UAAU,EAAEC,YAAY,QAAQ,uBAAuB;AAChE,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,YAAY,QAAQ,oBAAoB;;AAE1D;AACA,MAAMC,mBAAmB,GAAG,CAAC,CAAC;AAE9B,SAASC,OAAOA,CAAA,EAAG;EAClB,MAAM;IAAEC;EAAa,CAAC,GAAGL,WAAW,CAAEE,YAAa,CAAC;EACpD,MAAM;IAAEI;EAAQ,CAAC,GAAGP,SAAS,CAAIQ,MAAM,IAAM;IAC5C,OAAO;MACND,OAAO,EAAEC,MAAM,CAAEL,YAAa,CAAC,CAACM,UAAU,CAAC;IAC5C,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,MAAMC,kBAAkB,GAAGH,OAAO,CAACI,MAAM,CACxC,CAAE;IAAEC,aAAa;IAAEC;EAAK,CAAC,KAAMD,aAAa,IAAIC,IAAI,KAAK,SAC1D,CAAC;EACD,MAAMC,qBAAqB,GAAGP,OAAO,CAACI,MAAM,CAC3C,CAAE;IAAEC,aAAa;IAAEC;EAAK,CAAC,KAAM,CAAED,aAAa,IAAIC,IAAI,KAAK,SAC5D,CAAC;EACD,MAAME,eAAe,GAAGR,OAAO,CAC7BI,MAAM,CAAE,CAAE;IAAEE;EAAK,CAAC,KAAMA,IAAI,KAAK,UAAW,CAAC,CAC7CG,KAAK,CAAEZ,mBAAoB,CAAC;EAE9B,OACCa,aAAA,CAAAC,QAAA,QACCD,aAAA,CAACnB,UAAU;IACVS,OAAO,EAAGO,qBAAuB;IACjCK,SAAS,EAAC;EAA8B,CACxC,CAAC,EACFF,aAAA,CAACnB,UAAU;IACVS,OAAO,EAAGG,kBAAoB;IAC9BS,SAAS,EAAC,mCAAmC;IAC7CC,QAAQ,EAAGd;EAAc,CACzB,CAAC,EACFW,aAAA,CAAClB,YAAY;IACZQ,OAAO,EAAGQ,eAAiB;IAC3BI,SAAS,EAAC,gCAAgC;IAC1CC,QAAQ,EAAGd;EAAc,CACzB,CACA,CAAC;AAEL;AAEA,eAAeD,OAAO"}
|
|
@@ -27,12 +27,12 @@ function SaveButton() {
|
|
|
27
27
|
const {
|
|
28
28
|
saveEditedWidgetAreas
|
|
29
29
|
} = useDispatch(editWidgetsStore);
|
|
30
|
+
const isDisabled = isSaving || !hasEditedWidgetAreaIds;
|
|
30
31
|
return createElement(Button, {
|
|
31
32
|
variant: "primary",
|
|
32
33
|
isBusy: isSaving,
|
|
33
|
-
"aria-disabled":
|
|
34
|
-
onClick:
|
|
35
|
-
disabled: !hasEditedWidgetAreaIds
|
|
34
|
+
"aria-disabled": isDisabled,
|
|
35
|
+
onClick: isDisabled ? undefined : saveEditedWidgetAreas
|
|
36
36
|
}, isSaving ? __('Saving…') : __('Update'));
|
|
37
37
|
}
|
|
38
38
|
export default SaveButton;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Button","__","useDispatch","useSelect","store","editWidgetsStore","SaveButton","hasEditedWidgetAreaIds","isSaving","select","getEditedWidgetAreas","isSavingWidgetAreas","length","saveEditedWidgetAreas","createElement","variant","isBusy","onClick","undefined"
|
|
1
|
+
{"version":3,"names":["Button","__","useDispatch","useSelect","store","editWidgetsStore","SaveButton","hasEditedWidgetAreaIds","isSaving","select","getEditedWidgetAreas","isSavingWidgetAreas","length","saveEditedWidgetAreas","isDisabled","createElement","variant","isBusy","onClick","undefined"],"sources":["@wordpress/edit-widgets/src/components/save-button/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useDispatch, useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editWidgetsStore } from '../../store';\n\nfunction SaveButton() {\n\tconst { hasEditedWidgetAreaIds, isSaving } = useSelect( ( select ) => {\n\t\tconst { getEditedWidgetAreas, isSavingWidgetAreas } =\n\t\t\tselect( editWidgetsStore );\n\n\t\treturn {\n\t\t\thasEditedWidgetAreaIds: getEditedWidgetAreas()?.length > 0,\n\t\t\tisSaving: isSavingWidgetAreas(),\n\t\t};\n\t}, [] );\n\tconst { saveEditedWidgetAreas } = useDispatch( editWidgetsStore );\n\n\tconst isDisabled = isSaving || ! hasEditedWidgetAreaIds;\n\n\treturn (\n\t\t<Button\n\t\t\tvariant=\"primary\"\n\t\t\tisBusy={ isSaving }\n\t\t\taria-disabled={ isDisabled }\n\t\t\tonClick={ isDisabled ? undefined : saveEditedWidgetAreas }\n\t\t>\n\t\t\t{ isSaving ? __( 'Saving…' ) : __( 'Update' ) }\n\t\t</Button>\n\t);\n}\n\nexport default SaveButton;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;;AAExD;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AAEvD,SAASC,UAAUA,CAAA,EAAG;EACrB,MAAM;IAAEC,sBAAsB;IAAEC;EAAS,CAAC,GAAGL,SAAS,CAAIM,MAAM,IAAM;IACrE,MAAM;MAAEC,oBAAoB;MAAEC;IAAoB,CAAC,GAClDF,MAAM,CAAEJ,gBAAiB,CAAC;IAE3B,OAAO;MACNE,sBAAsB,EAAEG,oBAAoB,CAAC,CAAC,EAAEE,MAAM,GAAG,CAAC;MAC1DJ,QAAQ,EAAEG,mBAAmB,CAAC;IAC/B,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EACP,MAAM;IAAEE;EAAsB,CAAC,GAAGX,WAAW,CAAEG,gBAAiB,CAAC;EAEjE,MAAMS,UAAU,GAAGN,QAAQ,IAAI,CAAED,sBAAsB;EAEvD,OACCQ,aAAA,CAACf,MAAM;IACNgB,OAAO,EAAC,SAAS;IACjBC,MAAM,EAAGT,QAAU;IACnB,iBAAgBM,UAAY;IAC5BI,OAAO,EAAGJ,UAAU,GAAGK,SAAS,GAAGN;EAAuB,GAExDL,QAAQ,GAAGP,EAAE,CAAE,SAAU,CAAC,GAAGA,EAAE,CAAE,QAAS,CACrC,CAAC;AAEX;AAEA,eAAeK,UAAU"}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
import { createElement } from "react";
|
|
2
|
-
/**
|
|
3
|
-
* External dependencies
|
|
4
|
-
*/
|
|
5
|
-
import classnames from 'classnames';
|
|
6
|
-
|
|
7
2
|
/**
|
|
8
3
|
* WordPress dependencies
|
|
9
4
|
*/
|
|
10
|
-
import { useEffect, Platform } from '@wordpress/element';
|
|
11
|
-
import { isRTL, __
|
|
5
|
+
import { useEffect, Platform, useContext, useCallback } from '@wordpress/element';
|
|
6
|
+
import { isRTL, __ } from '@wordpress/i18n';
|
|
12
7
|
import { ComplementaryArea, store as interfaceStore } from '@wordpress/interface';
|
|
13
8
|
import { BlockInspector, store as blockEditorStore } from '@wordpress/block-editor';
|
|
14
9
|
import { drawerLeft, drawerRight } from '@wordpress/icons';
|
|
15
|
-
import {
|
|
10
|
+
import { privateApis as componentsPrivateApis } from '@wordpress/components';
|
|
16
11
|
import { useSelect, useDispatch } from '@wordpress/data';
|
|
17
12
|
const SIDEBAR_ACTIVE_BY_DEFAULT = Platform.select({
|
|
18
13
|
web: true,
|
|
@@ -29,29 +24,74 @@ const WIDGET_AREAS_IDENTIFIER = 'edit-widgets/block-areas';
|
|
|
29
24
|
*/
|
|
30
25
|
import WidgetAreas from './widget-areas';
|
|
31
26
|
import { store as editWidgetsStore } from '../../store';
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
27
|
+
import { unlock } from '../../lock-unlock';
|
|
28
|
+
const {
|
|
29
|
+
Tabs
|
|
30
|
+
} = unlock(componentsPrivateApis);
|
|
31
|
+
function SidebarHeader({
|
|
32
|
+
selectedWidgetAreaBlock
|
|
33
|
+
}) {
|
|
34
|
+
return createElement(Tabs.TabList, null, createElement(Tabs.Tab, {
|
|
35
|
+
tabId: WIDGET_AREAS_IDENTIFIER
|
|
36
|
+
}, selectedWidgetAreaBlock ? selectedWidgetAreaBlock.attributes.name : __('Widget Areas')), createElement(Tabs.Tab, {
|
|
37
|
+
tabId: BLOCK_INSPECTOR_IDENTIFIER
|
|
38
|
+
}, __('Block')));
|
|
39
|
+
}
|
|
40
|
+
function SidebarContent({
|
|
41
|
+
hasSelectedNonAreaBlock,
|
|
42
|
+
currentArea,
|
|
43
|
+
isGeneralSidebarOpen,
|
|
44
|
+
selectedWidgetAreaBlock
|
|
36
45
|
}) {
|
|
37
46
|
const {
|
|
38
47
|
enableComplementaryArea
|
|
39
48
|
} = useDispatch(interfaceStore);
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
49
|
+
useEffect(() => {
|
|
50
|
+
if (hasSelectedNonAreaBlock && currentArea === WIDGET_AREAS_IDENTIFIER && isGeneralSidebarOpen) {
|
|
51
|
+
enableComplementaryArea('core/edit-widgets', BLOCK_INSPECTOR_IDENTIFIER);
|
|
52
|
+
}
|
|
53
|
+
if (!hasSelectedNonAreaBlock && currentArea === BLOCK_INSPECTOR_IDENTIFIER && isGeneralSidebarOpen) {
|
|
54
|
+
enableComplementaryArea('core/edit-widgets', WIDGET_AREAS_IDENTIFIER);
|
|
55
|
+
}
|
|
56
|
+
// We're intentionally leaving `currentArea` and `isGeneralSidebarOpen`
|
|
57
|
+
// out of the dep array because we want this effect to run based on
|
|
58
|
+
// block selection changes, not sidebar state changes.
|
|
59
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
60
|
+
}, [hasSelectedNonAreaBlock, enableComplementaryArea]);
|
|
61
|
+
const tabsContextValue = useContext(Tabs.Context);
|
|
62
|
+
return createElement(ComplementaryArea, {
|
|
63
|
+
className: "edit-widgets-sidebar",
|
|
64
|
+
header: createElement(Tabs.Context.Provider, {
|
|
65
|
+
value: tabsContextValue
|
|
66
|
+
}, createElement(SidebarHeader, {
|
|
67
|
+
selectedWidgetAreaBlock: selectedWidgetAreaBlock
|
|
68
|
+
})),
|
|
69
|
+
headerClassName: "edit-widgets-sidebar__panel-tabs"
|
|
70
|
+
/* translators: button label text should, if possible, be under 16 characters. */,
|
|
71
|
+
title: __('Settings'),
|
|
72
|
+
closeLabel: __('Close Settings'),
|
|
73
|
+
scope: "core/edit-widgets",
|
|
74
|
+
identifier: currentArea,
|
|
75
|
+
icon: isRTL() ? drawerLeft : drawerRight,
|
|
76
|
+
isActiveByDefault: SIDEBAR_ACTIVE_BY_DEFAULT
|
|
77
|
+
}, createElement(Tabs.Context.Provider, {
|
|
78
|
+
value: tabsContextValue
|
|
79
|
+
}, createElement(Tabs.TabPanel, {
|
|
80
|
+
tabId: WIDGET_AREAS_IDENTIFIER,
|
|
81
|
+
focusable: false
|
|
82
|
+
}, createElement(WidgetAreas, {
|
|
83
|
+
selectedWidgetAreaId: selectedWidgetAreaBlock?.attributes.id
|
|
84
|
+
})), createElement(Tabs.TabPanel, {
|
|
85
|
+
tabId: BLOCK_INSPECTOR_IDENTIFIER,
|
|
86
|
+
focusable: false
|
|
87
|
+
}, hasSelectedNonAreaBlock ? createElement(BlockInspector, null) :
|
|
88
|
+
// Pretend that Widget Areas are part of the UI by not
|
|
89
|
+
// showing the Block Inspector when one is selected.
|
|
90
|
+
createElement("span", {
|
|
91
|
+
className: "block-editor-block-inspector__no-blocks"
|
|
92
|
+
}, __('No block selected.')))));
|
|
50
93
|
}
|
|
51
94
|
export default function Sidebar() {
|
|
52
|
-
const {
|
|
53
|
-
enableComplementaryArea
|
|
54
|
-
} = useDispatch(interfaceStore);
|
|
55
95
|
const {
|
|
56
96
|
currentArea,
|
|
57
97
|
hasSelectedNonAreaBlock,
|
|
@@ -91,43 +131,34 @@ export default function Sidebar() {
|
|
|
91
131
|
selectedWidgetAreaBlock: widgetAreaBlock
|
|
92
132
|
};
|
|
93
133
|
}, []);
|
|
134
|
+
const {
|
|
135
|
+
enableComplementaryArea
|
|
136
|
+
} = useDispatch(interfaceStore);
|
|
94
137
|
|
|
95
|
-
//
|
|
96
|
-
//
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
138
|
+
// `newSelectedTabId` could technically be falsey if no tab is selected (i.e.
|
|
139
|
+
// the initial render) or when we don't want a tab displayed (i.e. the
|
|
140
|
+
// sidebar is closed). These cases should both be covered by the `!!` check
|
|
141
|
+
// below, so we shouldn't need any additional falsey handling.
|
|
142
|
+
const onTabSelect = useCallback(newSelectedTabId => {
|
|
143
|
+
if (!!newSelectedTabId) {
|
|
144
|
+
enableComplementaryArea(editWidgetsStore.name, newSelectedTabId);
|
|
100
145
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
title: __('Settings'),
|
|
119
|
-
closeLabel: __('Close Settings'),
|
|
120
|
-
scope: "core/edit-widgets",
|
|
121
|
-
identifier: currentArea,
|
|
122
|
-
icon: isRTL() ? drawerLeft : drawerRight,
|
|
123
|
-
isActiveByDefault: SIDEBAR_ACTIVE_BY_DEFAULT
|
|
124
|
-
}, currentArea === WIDGET_AREAS_IDENTIFIER && createElement(WidgetAreas, {
|
|
125
|
-
selectedWidgetAreaId: selectedWidgetAreaBlock?.attributes.id
|
|
126
|
-
}), currentArea === BLOCK_INSPECTOR_IDENTIFIER && (hasSelectedNonAreaBlock ? createElement(BlockInspector, null) :
|
|
127
|
-
// Pretend that Widget Areas are part of the UI by not
|
|
128
|
-
// showing the Block Inspector when one is selected.
|
|
129
|
-
createElement("span", {
|
|
130
|
-
className: "block-editor-block-inspector__no-blocks"
|
|
131
|
-
}, __('No block selected.'))));
|
|
146
|
+
}, [enableComplementaryArea]);
|
|
147
|
+
return createElement(Tabs
|
|
148
|
+
// Due to how this component is controlled (via a value from the
|
|
149
|
+
// `interfaceStore`), when the sidebar closes the currently selected
|
|
150
|
+
// tab can't be found. This causes the component to continuously reset
|
|
151
|
+
// the selection to `null` in an infinite loop. Proactively setting
|
|
152
|
+
// the selected tab to `null` avoids that.
|
|
153
|
+
, {
|
|
154
|
+
selectedTabId: isGeneralSidebarOpen ? currentArea : null,
|
|
155
|
+
onSelect: onTabSelect,
|
|
156
|
+
selectOnMove: false
|
|
157
|
+
}, createElement(SidebarContent, {
|
|
158
|
+
hasSelectedNonAreaBlock: hasSelectedNonAreaBlock,
|
|
159
|
+
currentArea: currentArea,
|
|
160
|
+
isGeneralSidebarOpen: isGeneralSidebarOpen,
|
|
161
|
+
selectedWidgetAreaBlock: selectedWidgetAreaBlock
|
|
162
|
+
}));
|
|
132
163
|
}
|
|
133
164
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["classnames","useEffect","Platform","isRTL","__","sprintf","ComplementaryArea","store","interfaceStore","BlockInspector","blockEditorStore","drawerLeft","drawerRight","Button","useSelect","useDispatch","SIDEBAR_ACTIVE_BY_DEFAULT","select","web","native","BLOCK_INSPECTOR_IDENTIFIER","WIDGET_AREAS_IDENTIFIER","WidgetAreas","editWidgetsStore","ComplementaryAreaTab","identifier","label","isActive","enableComplementaryArea","createElement","onClick","name","className","Sidebar","currentArea","hasSelectedNonAreaBlock","isGeneralSidebarOpen","selectedWidgetAreaBlock","getSelectedBlock","getBlock","getBlockParentsByBlockName","getActiveComplementaryArea","selectedBlock","activeArea","currentSelection","widgetAreaBlock","clientId","header","attributes","headerClassName","title","closeLabel","scope","icon","isActiveByDefault","selectedWidgetAreaId","id"],"sources":["@wordpress/edit-widgets/src/components/sidebar/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useEffect, Platform } from '@wordpress/element';\nimport { isRTL, __, sprintf } from '@wordpress/i18n';\nimport {\n\tComplementaryArea,\n\tstore as interfaceStore,\n} from '@wordpress/interface';\nimport {\n\tBlockInspector,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\n\nimport { drawerLeft, drawerRight } from '@wordpress/icons';\nimport { Button } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\nconst SIDEBAR_ACTIVE_BY_DEFAULT = Platform.select( {\n\tweb: true,\n\tnative: false,\n} );\n\nconst BLOCK_INSPECTOR_IDENTIFIER = 'edit-widgets/block-inspector';\n\n// Widget areas were one called block areas, so use 'edit-widgets/block-areas'\n// for backwards compatibility.\nconst WIDGET_AREAS_IDENTIFIER = 'edit-widgets/block-areas';\n\n/**\n * Internal dependencies\n */\nimport WidgetAreas from './widget-areas';\nimport { store as editWidgetsStore } from '../../store';\n\nfunction ComplementaryAreaTab( { identifier, label, isActive } ) {\n\tconst { enableComplementaryArea } = useDispatch( interfaceStore );\n\treturn (\n\t\t<Button\n\t\t\tonClick={ () =>\n\t\t\t\tenableComplementaryArea( editWidgetsStore.name, identifier )\n\t\t\t}\n\t\t\tclassName={ classnames( 'edit-widgets-sidebar__panel-tab', {\n\t\t\t\t'is-active': isActive,\n\t\t\t} ) }\n\t\t\taria-label={\n\t\t\t\tisActive\n\t\t\t\t\t? // translators: %s: sidebar label e.g: \"Widget Areas\".\n\t\t\t\t\t sprintf( __( '%s (selected)' ), label )\n\t\t\t\t\t: label\n\t\t\t}\n\t\t\tdata-label={ label }\n\t\t>\n\t\t\t{ label }\n\t\t</Button>\n\t);\n}\n\nexport default function Sidebar() {\n\tconst { enableComplementaryArea } = useDispatch( interfaceStore );\n\tconst {\n\t\tcurrentArea,\n\t\thasSelectedNonAreaBlock,\n\t\tisGeneralSidebarOpen,\n\t\tselectedWidgetAreaBlock,\n\t} = useSelect( ( select ) => {\n\t\tconst { getSelectedBlock, getBlock, getBlockParentsByBlockName } =\n\t\t\tselect( blockEditorStore );\n\t\tconst { getActiveComplementaryArea } = select( interfaceStore );\n\n\t\tconst selectedBlock = getSelectedBlock();\n\n\t\tconst activeArea = getActiveComplementaryArea( editWidgetsStore.name );\n\n\t\tlet currentSelection = activeArea;\n\t\tif ( ! currentSelection ) {\n\t\t\tif ( selectedBlock ) {\n\t\t\t\tcurrentSelection = BLOCK_INSPECTOR_IDENTIFIER;\n\t\t\t} else {\n\t\t\t\tcurrentSelection = WIDGET_AREAS_IDENTIFIER;\n\t\t\t}\n\t\t}\n\n\t\tlet widgetAreaBlock;\n\t\tif ( selectedBlock ) {\n\t\t\tif ( selectedBlock.name === 'core/widget-area' ) {\n\t\t\t\twidgetAreaBlock = selectedBlock;\n\t\t\t} else {\n\t\t\t\twidgetAreaBlock = getBlock(\n\t\t\t\t\tgetBlockParentsByBlockName(\n\t\t\t\t\t\tselectedBlock.clientId,\n\t\t\t\t\t\t'core/widget-area'\n\t\t\t\t\t)[ 0 ]\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tcurrentArea: currentSelection,\n\t\t\thasSelectedNonAreaBlock: !! (\n\t\t\t\tselectedBlock && selectedBlock.name !== 'core/widget-area'\n\t\t\t),\n\t\t\tisGeneralSidebarOpen: !! activeArea,\n\t\t\tselectedWidgetAreaBlock: widgetAreaBlock,\n\t\t};\n\t}, [] );\n\n\t// currentArea, and isGeneralSidebarOpen are intentionally left out from the dependencies,\n\t// because we want to run the effect when a block is selected/unselected and not when the sidebar state changes.\n\tuseEffect( () => {\n\t\tif (\n\t\t\thasSelectedNonAreaBlock &&\n\t\t\tcurrentArea === WIDGET_AREAS_IDENTIFIER &&\n\t\t\tisGeneralSidebarOpen\n\t\t) {\n\t\t\tenableComplementaryArea(\n\t\t\t\t'core/edit-widgets',\n\t\t\t\tBLOCK_INSPECTOR_IDENTIFIER\n\t\t\t);\n\t\t}\n\t\tif (\n\t\t\t! hasSelectedNonAreaBlock &&\n\t\t\tcurrentArea === BLOCK_INSPECTOR_IDENTIFIER &&\n\t\t\tisGeneralSidebarOpen\n\t\t) {\n\t\t\tenableComplementaryArea(\n\t\t\t\t'core/edit-widgets',\n\t\t\t\tWIDGET_AREAS_IDENTIFIER\n\t\t\t);\n\t\t}\n\t}, [ hasSelectedNonAreaBlock, enableComplementaryArea ] );\n\n\treturn (\n\t\t<ComplementaryArea\n\t\t\tclassName=\"edit-widgets-sidebar\"\n\t\t\theader={\n\t\t\t\t<ul>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<ComplementaryAreaTab\n\t\t\t\t\t\t\tidentifier={ WIDGET_AREAS_IDENTIFIER }\n\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\tselectedWidgetAreaBlock\n\t\t\t\t\t\t\t\t\t? selectedWidgetAreaBlock.attributes.name\n\t\t\t\t\t\t\t\t\t: __( 'Widget Areas' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tisActive={ currentArea === WIDGET_AREAS_IDENTIFIER }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<ComplementaryAreaTab\n\t\t\t\t\t\t\tidentifier={ BLOCK_INSPECTOR_IDENTIFIER }\n\t\t\t\t\t\t\tlabel={ __( 'Block' ) }\n\t\t\t\t\t\t\tisActive={\n\t\t\t\t\t\t\t\tcurrentArea === BLOCK_INSPECTOR_IDENTIFIER\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t}\n\t\t\theaderClassName=\"edit-widgets-sidebar__panel-tabs\"\n\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\ttitle={ __( 'Settings' ) }\n\t\t\tcloseLabel={ __( 'Close Settings' ) }\n\t\t\tscope=\"core/edit-widgets\"\n\t\t\tidentifier={ currentArea }\n\t\t\ticon={ isRTL() ? drawerLeft : drawerRight }\n\t\t\tisActiveByDefault={ SIDEBAR_ACTIVE_BY_DEFAULT }\n\t\t>\n\t\t\t{ currentArea === WIDGET_AREAS_IDENTIFIER && (\n\t\t\t\t<WidgetAreas\n\t\t\t\t\tselectedWidgetAreaId={\n\t\t\t\t\t\tselectedWidgetAreaBlock?.attributes.id\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ currentArea === BLOCK_INSPECTOR_IDENTIFIER &&\n\t\t\t\t( hasSelectedNonAreaBlock ? (\n\t\t\t\t\t<BlockInspector />\n\t\t\t\t) : (\n\t\t\t\t\t// Pretend that Widget Areas are part of the UI by not\n\t\t\t\t\t// showing the Block Inspector when one is selected.\n\t\t\t\t\t<span className=\"block-editor-block-inspector__no-blocks\">\n\t\t\t\t\t\t{ __( 'No block selected.' ) }\n\t\t\t\t\t</span>\n\t\t\t\t) ) }\n\t\t</ComplementaryArea>\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["useEffect","Platform","useContext","useCallback","isRTL","__","ComplementaryArea","store","interfaceStore","BlockInspector","blockEditorStore","drawerLeft","drawerRight","privateApis","componentsPrivateApis","useSelect","useDispatch","SIDEBAR_ACTIVE_BY_DEFAULT","select","web","native","BLOCK_INSPECTOR_IDENTIFIER","WIDGET_AREAS_IDENTIFIER","WidgetAreas","editWidgetsStore","unlock","Tabs","SidebarHeader","selectedWidgetAreaBlock","createElement","TabList","Tab","tabId","attributes","name","SidebarContent","hasSelectedNonAreaBlock","currentArea","isGeneralSidebarOpen","enableComplementaryArea","tabsContextValue","Context","className","header","Provider","value","headerClassName","title","closeLabel","scope","identifier","icon","isActiveByDefault","TabPanel","focusable","selectedWidgetAreaId","id","Sidebar","getSelectedBlock","getBlock","getBlockParentsByBlockName","getActiveComplementaryArea","selectedBlock","activeArea","currentSelection","widgetAreaBlock","clientId","onTabSelect","newSelectedTabId","selectedTabId","onSelect","selectOnMove"],"sources":["@wordpress/edit-widgets/src/components/sidebar/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseEffect,\n\tPlatform,\n\tuseContext,\n\tuseCallback,\n} from '@wordpress/element';\nimport { isRTL, __ } from '@wordpress/i18n';\nimport {\n\tComplementaryArea,\n\tstore as interfaceStore,\n} from '@wordpress/interface';\nimport {\n\tBlockInspector,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\n\nimport { drawerLeft, drawerRight } from '@wordpress/icons';\nimport { privateApis as componentsPrivateApis } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\nconst SIDEBAR_ACTIVE_BY_DEFAULT = Platform.select( {\n\tweb: true,\n\tnative: false,\n} );\n\nconst BLOCK_INSPECTOR_IDENTIFIER = 'edit-widgets/block-inspector';\n\n// Widget areas were one called block areas, so use 'edit-widgets/block-areas'\n// for backwards compatibility.\nconst WIDGET_AREAS_IDENTIFIER = 'edit-widgets/block-areas';\n\n/**\n * Internal dependencies\n */\nimport WidgetAreas from './widget-areas';\nimport { store as editWidgetsStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nfunction SidebarHeader( { selectedWidgetAreaBlock } ) {\n\treturn (\n\t\t<Tabs.TabList>\n\t\t\t<Tabs.Tab tabId={ WIDGET_AREAS_IDENTIFIER }>\n\t\t\t\t{ selectedWidgetAreaBlock\n\t\t\t\t\t? selectedWidgetAreaBlock.attributes.name\n\t\t\t\t\t: __( 'Widget Areas' ) }\n\t\t\t</Tabs.Tab>\n\t\t\t<Tabs.Tab tabId={ BLOCK_INSPECTOR_IDENTIFIER }>\n\t\t\t\t{ __( 'Block' ) }\n\t\t\t</Tabs.Tab>\n\t\t</Tabs.TabList>\n\t);\n}\n\nfunction SidebarContent( {\n\thasSelectedNonAreaBlock,\n\tcurrentArea,\n\tisGeneralSidebarOpen,\n\tselectedWidgetAreaBlock,\n} ) {\n\tconst { enableComplementaryArea } = useDispatch( interfaceStore );\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\thasSelectedNonAreaBlock &&\n\t\t\tcurrentArea === WIDGET_AREAS_IDENTIFIER &&\n\t\t\tisGeneralSidebarOpen\n\t\t) {\n\t\t\tenableComplementaryArea(\n\t\t\t\t'core/edit-widgets',\n\t\t\t\tBLOCK_INSPECTOR_IDENTIFIER\n\t\t\t);\n\t\t}\n\t\tif (\n\t\t\t! hasSelectedNonAreaBlock &&\n\t\t\tcurrentArea === BLOCK_INSPECTOR_IDENTIFIER &&\n\t\t\tisGeneralSidebarOpen\n\t\t) {\n\t\t\tenableComplementaryArea(\n\t\t\t\t'core/edit-widgets',\n\t\t\t\tWIDGET_AREAS_IDENTIFIER\n\t\t\t);\n\t\t}\n\t\t// We're intentionally leaving `currentArea` and `isGeneralSidebarOpen`\n\t\t// out of the dep array because we want this effect to run based on\n\t\t// block selection changes, not sidebar state changes.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ hasSelectedNonAreaBlock, enableComplementaryArea ] );\n\n\tconst tabsContextValue = useContext( Tabs.Context );\n\n\treturn (\n\t\t<ComplementaryArea\n\t\t\tclassName=\"edit-widgets-sidebar\"\n\t\t\theader={\n\t\t\t\t<Tabs.Context.Provider value={ tabsContextValue }>\n\t\t\t\t\t<SidebarHeader\n\t\t\t\t\t\tselectedWidgetAreaBlock={ selectedWidgetAreaBlock }\n\t\t\t\t\t/>\n\t\t\t\t</Tabs.Context.Provider>\n\t\t\t}\n\t\t\theaderClassName=\"edit-widgets-sidebar__panel-tabs\"\n\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\ttitle={ __( 'Settings' ) }\n\t\t\tcloseLabel={ __( 'Close Settings' ) }\n\t\t\tscope=\"core/edit-widgets\"\n\t\t\tidentifier={ currentArea }\n\t\t\ticon={ isRTL() ? drawerLeft : drawerRight }\n\t\t\tisActiveByDefault={ SIDEBAR_ACTIVE_BY_DEFAULT }\n\t\t>\n\t\t\t<Tabs.Context.Provider value={ tabsContextValue }>\n\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\ttabId={ WIDGET_AREAS_IDENTIFIER }\n\t\t\t\t\tfocusable={ false }\n\t\t\t\t>\n\t\t\t\t\t<WidgetAreas\n\t\t\t\t\t\tselectedWidgetAreaId={\n\t\t\t\t\t\t\tselectedWidgetAreaBlock?.attributes.id\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\ttabId={ BLOCK_INSPECTOR_IDENTIFIER }\n\t\t\t\t\tfocusable={ false }\n\t\t\t\t>\n\t\t\t\t\t{ hasSelectedNonAreaBlock ? (\n\t\t\t\t\t\t<BlockInspector />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t// Pretend that Widget Areas are part of the UI by not\n\t\t\t\t\t\t// showing the Block Inspector when one is selected.\n\t\t\t\t\t\t<span className=\"block-editor-block-inspector__no-blocks\">\n\t\t\t\t\t\t\t{ __( 'No block selected.' ) }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t</Tabs.TabPanel>\n\t\t\t</Tabs.Context.Provider>\n\t\t</ComplementaryArea>\n\t);\n}\n\nexport default function Sidebar() {\n\tconst {\n\t\tcurrentArea,\n\t\thasSelectedNonAreaBlock,\n\t\tisGeneralSidebarOpen,\n\t\tselectedWidgetAreaBlock,\n\t} = useSelect( ( select ) => {\n\t\tconst { getSelectedBlock, getBlock, getBlockParentsByBlockName } =\n\t\t\tselect( blockEditorStore );\n\t\tconst { getActiveComplementaryArea } = select( interfaceStore );\n\n\t\tconst selectedBlock = getSelectedBlock();\n\n\t\tconst activeArea = getActiveComplementaryArea( editWidgetsStore.name );\n\n\t\tlet currentSelection = activeArea;\n\t\tif ( ! currentSelection ) {\n\t\t\tif ( selectedBlock ) {\n\t\t\t\tcurrentSelection = BLOCK_INSPECTOR_IDENTIFIER;\n\t\t\t} else {\n\t\t\t\tcurrentSelection = WIDGET_AREAS_IDENTIFIER;\n\t\t\t}\n\t\t}\n\n\t\tlet widgetAreaBlock;\n\t\tif ( selectedBlock ) {\n\t\t\tif ( selectedBlock.name === 'core/widget-area' ) {\n\t\t\t\twidgetAreaBlock = selectedBlock;\n\t\t\t} else {\n\t\t\t\twidgetAreaBlock = getBlock(\n\t\t\t\t\tgetBlockParentsByBlockName(\n\t\t\t\t\t\tselectedBlock.clientId,\n\t\t\t\t\t\t'core/widget-area'\n\t\t\t\t\t)[ 0 ]\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tcurrentArea: currentSelection,\n\t\t\thasSelectedNonAreaBlock: !! (\n\t\t\t\tselectedBlock && selectedBlock.name !== 'core/widget-area'\n\t\t\t),\n\t\t\tisGeneralSidebarOpen: !! activeArea,\n\t\t\tselectedWidgetAreaBlock: widgetAreaBlock,\n\t\t};\n\t}, [] );\n\n\tconst { enableComplementaryArea } = useDispatch( interfaceStore );\n\n\t// `newSelectedTabId` could technically be falsey if no tab is selected (i.e.\n\t// the initial render) or when we don't want a tab displayed (i.e. the\n\t// sidebar is closed). These cases should both be covered by the `!!` check\n\t// below, so we shouldn't need any additional falsey handling.\n\tconst onTabSelect = useCallback(\n\t\t( newSelectedTabId ) => {\n\t\t\tif ( !! newSelectedTabId ) {\n\t\t\t\tenableComplementaryArea(\n\t\t\t\t\teditWidgetsStore.name,\n\t\t\t\t\tnewSelectedTabId\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ enableComplementaryArea ]\n\t);\n\n\treturn (\n\t\t<Tabs\n\t\t\t// Due to how this component is controlled (via a value from the\n\t\t\t// `interfaceStore`), when the sidebar closes the currently selected\n\t\t\t// tab can't be found. This causes the component to continuously reset\n\t\t\t// the selection to `null` in an infinite loop. Proactively setting\n\t\t\t// the selected tab to `null` avoids that.\n\t\t\tselectedTabId={ isGeneralSidebarOpen ? currentArea : null }\n\t\t\tonSelect={ onTabSelect }\n\t\t\tselectOnMove={ false }\n\t\t>\n\t\t\t<SidebarContent\n\t\t\t\thasSelectedNonAreaBlock={ hasSelectedNonAreaBlock }\n\t\t\t\tcurrentArea={ currentArea }\n\t\t\t\tisGeneralSidebarOpen={ isGeneralSidebarOpen }\n\t\t\t\tselectedWidgetAreaBlock={ selectedWidgetAreaBlock }\n\t\t\t/>\n\t\t</Tabs>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -149,7 +149,6 @@ export const isSavingWidgetAreas = createRegistrySelector(select => () => {
|
|
|
149
149
|
}
|
|
150
150
|
const widgetIds = [...Object.keys(select(editWidgetsStoreName).getWidgets()), undefined // account for new widgets without an ID
|
|
151
151
|
];
|
|
152
|
-
|
|
153
152
|
for (const id of widgetIds) {
|
|
154
153
|
const isSaving = select(coreStore).isSavingEntityRecord('root', 'widget', id);
|
|
155
154
|
if (isSaving) {
|