@wordpress/edit-widgets 5.27.2 → 5.28.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/blocks/widget-area/edit/use-is-dragging-within.js +1 -2
  3. package/build/blocks/widget-area/edit/use-is-dragging-within.js.map +1 -1
  4. package/build/blocks/widget-area/index.js +2 -4
  5. package/build/blocks/widget-area/index.js.map +1 -1
  6. package/build/components/header/document-tools/index.js +1 -2
  7. package/build/components/header/document-tools/index.js.map +1 -1
  8. package/build/components/header/index.js +1 -2
  9. package/build/components/header/index.js.map +1 -1
  10. package/build/components/header/undo-redo/redo.js +1 -2
  11. package/build/components/header/undo-redo/redo.js.map +1 -1
  12. package/build/components/header/undo-redo/undo.js +1 -2
  13. package/build/components/header/undo-redo/undo.js.map +1 -1
  14. package/build/components/keyboard-shortcut-help-modal/config.js +1 -2
  15. package/build/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  16. package/build/components/keyboard-shortcut-help-modal/dynamic-shortcut.js +1 -2
  17. package/build/components/keyboard-shortcut-help-modal/dynamic-shortcut.js.map +1 -1
  18. package/build/components/keyboard-shortcut-help-modal/index.js +0 -1
  19. package/build/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  20. package/build/components/keyboard-shortcut-help-modal/shortcut.js +1 -2
  21. package/build/components/keyboard-shortcut-help-modal/shortcut.js.map +1 -1
  22. package/build/components/keyboard-shortcuts/index.js +1 -2
  23. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  24. package/build/components/layout/index.js +1 -2
  25. package/build/components/layout/index.js.map +1 -1
  26. package/build/components/layout/interface.js +1 -2
  27. package/build/components/layout/interface.js.map +1 -1
  28. package/build/components/more-menu/tools-more-menu-group.js +1 -2
  29. package/build/components/more-menu/tools-more-menu-group.js.map +1 -1
  30. package/build/components/notices/index.js +4 -3
  31. package/build/components/notices/index.js.map +1 -1
  32. package/build/components/save-button/index.js +4 -5
  33. package/build/components/save-button/index.js.map +1 -1
  34. package/build/components/sidebar/index.js +89 -58
  35. package/build/components/sidebar/index.js.map +1 -1
  36. package/build/constants.js +2 -4
  37. package/build/constants.js.map +1 -1
  38. package/build/hooks/use-last-selected-widget-area.js +1 -2
  39. package/build/hooks/use-last-selected-widget-area.js.map +1 -1
  40. package/build/hooks/use-widget-library-insertion-point.js +1 -2
  41. package/build/hooks/use-widget-library-insertion-point.js.map +1 -1
  42. package/build/index.js +3 -4
  43. package/build/index.js.map +1 -1
  44. package/build/store/constants.js +1 -2
  45. package/build/store/constants.js.map +1 -1
  46. package/build/store/index.js +3 -4
  47. package/build/store/index.js.map +1 -1
  48. package/build/store/reducer.js +1 -2
  49. package/build/store/reducer.js.map +1 -1
  50. package/build/store/selectors.js +9 -19
  51. package/build/store/selectors.js.map +1 -1
  52. package/build/store/utils.js +3 -6
  53. package/build/store/utils.js.map +1 -1
  54. package/build-module/components/keyboard-shortcut-help-modal/index.js +0 -1
  55. package/build-module/components/keyboard-shortcut-help-modal/index.js.map +1 -1
  56. package/build-module/components/notices/index.js +4 -1
  57. package/build-module/components/notices/index.js.map +1 -1
  58. package/build-module/components/save-button/index.js +3 -3
  59. package/build-module/components/save-button/index.js.map +1 -1
  60. package/build-module/components/sidebar/index.js +92 -61
  61. package/build-module/components/sidebar/index.js.map +1 -1
  62. package/build-module/store/selectors.js +0 -1
  63. package/build-module/store/selectors.js.map +1 -1
  64. package/build-style/style-rtl.css +27 -86
  65. package/build-style/style.css +27 -86
  66. package/package.json +28 -28
  67. package/src/components/header/style.scss +39 -3
  68. package/src/components/notices/index.js +6 -3
  69. package/src/components/save-button/index.js +4 -3
  70. package/src/components/sidebar/index.js +138 -101
  71. package/src/components/sidebar/style.scss +0 -94
@@ -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.getWidgets = getWidgets;
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.getWidget = getWidget;
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.getWidgetAreas = getWidgetAreas;
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.getWidgetAreaForWidgetId = getWidgetAreaForWidgetId;
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.getParentWidgetAreaBlock = getParentWidgetAreaBlock;
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.getEditedWidgetAreas = getEditedWidgetAreas;
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.getReferenceWidgetBlocks = getReferenceWidgetBlocks;
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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"}
@@ -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.KIND = KIND;
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.WIDGET_AREA_ENTITY_TYPE = WIDGET_AREA_ENTITY_TYPE;
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
  /**
@@ -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;AAJAC,OAAA,CAAAD,IAAA,GAAAA,IAAA;AAKO,MAAME,uBAAuB,GAAG,SAAS;;AAEhD;AACA;AACA;AACA;AACA;AAJAD,OAAA,CAAAC,uBAAA,GAAAA,uBAAA;AAKO,MAAMC,SAAS,GAAG,UAAU;;AAEnC;AACA;AACA;AACA;AACA;AACA;AALAF,OAAA,CAAAE,SAAA,GAAAA,SAAA;AAMO,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
+ {"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"}
@@ -38,7 +38,6 @@ createElement("ul", {
38
38
  ...shortcut
39
39
  }))))
40
40
  /* eslint-enable jsx-a11y/no-redundant-roles */;
41
-
42
41
  const ShortcutSection = ({
43
42
  title,
44
43
  shortcuts,
@@ -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":"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"}
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.filter(\n\t\t( { type } ) => type === 'snackbar'\n\t);\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,SAASC,OAAOA,CAAA,EAAG;EAClB,MAAM;IAAEC;EAAa,CAAC,GAAGJ,WAAW,CAAEE,YAAa,CAAC;EACpD,MAAM;IAAEG;EAAQ,CAAC,GAAGN,SAAS,CAAIO,MAAM,IAAM;IAC5C,OAAO;MACND,OAAO,EAAEC,MAAM,CAAEJ,YAAa,CAAC,CAACK,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,CAACI,MAAM,CACrC,CAAE;IAAEE;EAAK,CAAC,KAAMA,IAAI,KAAK,UAC1B,CAAC;EAED,OACCG,aAAA,CAAAC,QAAA,QACCD,aAAA,CAACjB,UAAU;IACVQ,OAAO,EAAGO,qBAAuB;IACjCI,SAAS,EAAC;EAA8B,CACxC,CAAC,EACFF,aAAA,CAACjB,UAAU;IACVQ,OAAO,EAAGG,kBAAoB;IAC9BQ,SAAS,EAAC,mCAAmC;IAC7CC,QAAQ,EAAGb;EAAc,CACzB,CAAC,EACFU,aAAA,CAAChB,YAAY;IACZO,OAAO,EAAGQ,eAAiB;IAC3BG,SAAS,EAAC,gCAAgC;IAC1CC,QAAQ,EAAGb;EAAc,CACzB,CACA,CAAC;AAEL;AAEA,eAAeD,OAAO"}
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": isSaving,
34
- onClick: isSaving ? undefined : saveEditedWidgetAreas,
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","disabled"],"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\treturn (\n\t\t<Button\n\t\t\tvariant=\"primary\"\n\t\t\tisBusy={ isSaving }\n\t\t\taria-disabled={ isSaving }\n\t\t\tonClick={ isSaving ? undefined : saveEditedWidgetAreas }\n\t\t\tdisabled={ ! hasEditedWidgetAreaIds }\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,OACCS,aAAA,CAACd,MAAM;IACNe,OAAO,EAAC,SAAS;IACjBC,MAAM,EAAGR,QAAU;IACnB,iBAAgBA,QAAU;IAC1BS,OAAO,EAAGT,QAAQ,GAAGU,SAAS,GAAGL,qBAAuB;IACxDM,QAAQ,EAAG,CAAEZ;EAAwB,GAEnCC,QAAQ,GAAGP,EAAE,CAAE,SAAU,CAAC,GAAGA,EAAE,CAAE,QAAS,CACrC,CAAC;AAEX;AAEA,eAAeK,UAAU"}
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, __, sprintf } from '@wordpress/i18n';
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 { Button } from '@wordpress/components';
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
- function ComplementaryAreaTab({
33
- identifier,
34
- label,
35
- isActive
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
- return createElement(Button, {
41
- onClick: () => enableComplementaryArea(editWidgetsStore.name, identifier),
42
- className: classnames('edit-widgets-sidebar__panel-tab', {
43
- 'is-active': isActive
44
- }),
45
- "aria-label": isActive ?
46
- // translators: %s: sidebar label e.g: "Widget Areas".
47
- sprintf(__('%s (selected)'), label) : label,
48
- "data-label": label
49
- }, label);
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
- // currentArea, and isGeneralSidebarOpen are intentionally left out from the dependencies,
96
- // because we want to run the effect when a block is selected/unselected and not when the sidebar state changes.
97
- useEffect(() => {
98
- if (hasSelectedNonAreaBlock && currentArea === WIDGET_AREAS_IDENTIFIER && isGeneralSidebarOpen) {
99
- enableComplementaryArea('core/edit-widgets', BLOCK_INSPECTOR_IDENTIFIER);
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
- if (!hasSelectedNonAreaBlock && currentArea === BLOCK_INSPECTOR_IDENTIFIER && isGeneralSidebarOpen) {
102
- enableComplementaryArea('core/edit-widgets', WIDGET_AREAS_IDENTIFIER);
103
- }
104
- }, [hasSelectedNonAreaBlock, enableComplementaryArea]);
105
- return createElement(ComplementaryArea, {
106
- className: "edit-widgets-sidebar",
107
- header: createElement("ul", null, createElement("li", null, createElement(ComplementaryAreaTab, {
108
- identifier: WIDGET_AREAS_IDENTIFIER,
109
- label: selectedWidgetAreaBlock ? selectedWidgetAreaBlock.attributes.name : __('Widget Areas'),
110
- isActive: currentArea === WIDGET_AREAS_IDENTIFIER
111
- })), createElement("li", null, createElement(ComplementaryAreaTab, {
112
- identifier: BLOCK_INSPECTOR_IDENTIFIER,
113
- label: __('Block'),
114
- isActive: currentArea === BLOCK_INSPECTOR_IDENTIFIER
115
- }))),
116
- headerClassName: "edit-widgets-sidebar__panel-tabs"
117
- /* translators: button label text should, if possible, be under 16 characters. */,
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) {