@wordpress/block-editor 12.10.0 → 12.10.2

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 (76) hide show
  1. package/build/components/block-patterns-list/index.js +10 -5
  2. package/build/components/block-patterns-list/index.js.map +1 -1
  3. package/build/components/block-patterns-paging/index.js +4 -2
  4. package/build/components/block-patterns-paging/index.js.map +1 -1
  5. package/build/components/inserter/block-patterns-explorer/patterns-list.js +21 -32
  6. package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  7. package/build/components/inserter/block-patterns-explorer/sidebar.js +0 -15
  8. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  9. package/build/components/inserter/block-patterns-filter.js +137 -0
  10. package/build/components/inserter/block-patterns-filter.js.map +1 -0
  11. package/build/components/inserter/block-patterns-tab.js +77 -37
  12. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  13. package/build/components/inserter/hooks/use-patterns-paging.js +4 -0
  14. package/build/components/inserter/hooks/use-patterns-paging.js.map +1 -1
  15. package/build/components/inserter/search-results.js +1 -1
  16. package/build/components/inserter/search-results.js.map +1 -1
  17. package/build/components/inspector-controls-tabs/styles-tab.js +1 -1
  18. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  19. package/build/hooks/background.js +28 -23
  20. package/build/hooks/background.js.map +1 -1
  21. package/build/hooks/block-rename-ui.js +2 -1
  22. package/build/hooks/block-rename-ui.js.map +1 -1
  23. package/build/store/private-selectors.js +2 -3
  24. package/build/store/private-selectors.js.map +1 -1
  25. package/build-module/components/block-patterns-list/index.js +11 -6
  26. package/build-module/components/block-patterns-list/index.js.map +1 -1
  27. package/build-module/components/block-patterns-paging/index.js +4 -2
  28. package/build-module/components/block-patterns-paging/index.js.map +1 -1
  29. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +23 -34
  30. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  31. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +0 -14
  32. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  33. package/build-module/components/inserter/block-patterns-filter.js +128 -0
  34. package/build-module/components/inserter/block-patterns-filter.js.map +1 -0
  35. package/build-module/components/inserter/block-patterns-tab.js +75 -35
  36. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  37. package/build-module/components/inserter/hooks/use-patterns-paging.js +5 -1
  38. package/build-module/components/inserter/hooks/use-patterns-paging.js.map +1 -1
  39. package/build-module/components/inserter/search-results.js +1 -1
  40. package/build-module/components/inserter/search-results.js.map +1 -1
  41. package/build-module/components/inspector-controls-tabs/styles-tab.js +1 -1
  42. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  43. package/build-module/hooks/background.js +30 -25
  44. package/build-module/hooks/background.js.map +1 -1
  45. package/build-module/hooks/block-rename-ui.js +2 -1
  46. package/build-module/hooks/block-rename-ui.js.map +1 -1
  47. package/build-module/store/private-selectors.js +2 -3
  48. package/build-module/store/private-selectors.js.map +1 -1
  49. package/build-style/style-rtl.css +54 -26
  50. package/build-style/style.css +54 -26
  51. package/package.json +32 -32
  52. package/src/components/block-patterns-list/index.js +19 -12
  53. package/src/components/block-patterns-paging/index.js +58 -55
  54. package/src/components/block-patterns-paging/style.scss +16 -13
  55. package/src/components/inserter/block-patterns-explorer/patterns-list.js +34 -76
  56. package/src/components/inserter/block-patterns-explorer/sidebar.js +0 -15
  57. package/src/components/inserter/block-patterns-filter.js +183 -0
  58. package/src/components/inserter/block-patterns-tab.js +106 -58
  59. package/src/components/inserter/hooks/use-patterns-paging.js +12 -1
  60. package/src/components/inserter/search-results.js +1 -1
  61. package/src/components/inserter/style.scss +14 -5
  62. package/src/components/inspector-controls-tabs/styles-tab.js +1 -1
  63. package/src/hooks/background.js +57 -46
  64. package/src/hooks/background.scss +36 -18
  65. package/src/hooks/block-rename-ui.js +1 -0
  66. package/src/store/private-selectors.js +7 -3
  67. package/build/components/inserter/block-patterns-source-filter.js +0 -54
  68. package/build/components/inserter/block-patterns-source-filter.js.map +0 -1
  69. package/build/components/inserter/block-patterns-sync-filter.js +0 -46
  70. package/build/components/inserter/block-patterns-sync-filter.js.map +0 -1
  71. package/build-module/components/inserter/block-patterns-source-filter.js +0 -44
  72. package/build-module/components/inserter/block-patterns-source-filter.js.map +0 -1
  73. package/build-module/components/inserter/block-patterns-sync-filter.js +0 -38
  74. package/build-module/components/inserter/block-patterns-sync-filter.js.map +0 -1
  75. package/src/components/inserter/block-patterns-source-filter.js +0 -40
  76. package/src/components/inserter/block-patterns-sync-filter.js +0 -35
@@ -8,6 +8,7 @@ exports.BlockPatternsCategoryDialog = BlockPatternsCategoryDialog;
8
8
  exports.BlockPatternsCategoryPanel = BlockPatternsCategoryPanel;
9
9
  exports.default = exports.allPatternsCategory = void 0;
10
10
  exports.isPatternFiltered = isPatternFiltered;
11
+ exports.myPatternsCategory = void 0;
11
12
  exports.usePatternsCategories = usePatternsCategories;
12
13
  var _element = require("@wordpress/element");
13
14
  var _i18n = require("@wordpress/i18n");
@@ -20,12 +21,8 @@ var _usePatternsState = _interopRequireDefault(require("./hooks/use-patterns-sta
20
21
  var _blockPatternsList = _interopRequireDefault(require("../block-patterns-list"));
21
22
  var _explorer = _interopRequireDefault(require("./block-patterns-explorer/explorer"));
22
23
  var _mobileTabNavigation = _interopRequireDefault(require("./mobile-tab-navigation"));
23
- var _blockPatternsPaging = _interopRequireDefault(require("../block-patterns-paging"));
24
24
  var _usePatternsPaging = _interopRequireDefault(require("./hooks/use-patterns-paging"));
25
- var _blockPatternsSourceFilter = _interopRequireWildcard(require("./block-patterns-source-filter"));
26
- var _blockPatternsSyncFilter = require("./block-patterns-sync-filter");
27
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
28
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
+ var _blockPatternsFilter = require("./block-patterns-filter");
29
26
  /**
30
27
  * WordPress dependencies
31
28
  */
@@ -37,20 +34,41 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
37
34
  const noop = () => {};
38
35
  const allPatternsCategory = {
39
36
  name: 'allPatterns',
40
- label: (0, _i18n.__)('All categories')
37
+ label: (0, _i18n.__)('All patterns')
41
38
  };
42
39
  exports.allPatternsCategory = allPatternsCategory;
40
+ const myPatternsCategory = {
41
+ name: 'myPatterns',
42
+ label: (0, _i18n.__)('My patterns')
43
+ };
44
+ exports.myPatternsCategory = myPatternsCategory;
43
45
  function isPatternFiltered(pattern, sourceFilter, syncFilter) {
44
- if (sourceFilter === _blockPatternsSourceFilter.PATTERN_TYPES.theme && pattern.name.startsWith('core/block')) {
46
+ const isUserPattern = pattern.name.startsWith('core/block');
47
+ const isDirectoryPattern = pattern.source === 'core' || pattern.source?.startsWith('pattern-directory');
48
+
49
+ // If theme source selected, filter out user created patterns and those from
50
+ // the core patterns directory.
51
+ if (sourceFilter === _blockPatternsFilter.PATTERN_TYPES.theme && (isUserPattern || isDirectoryPattern)) {
52
+ return true;
53
+ }
54
+
55
+ // If the directory source is selected, filter out user created patterns
56
+ // and those bundled with the theme.
57
+ if (sourceFilter === _blockPatternsFilter.PATTERN_TYPES.directory && (isUserPattern || !isDirectoryPattern)) {
45
58
  return true;
46
59
  }
47
- if (sourceFilter === _blockPatternsSourceFilter.PATTERN_TYPES.user && !pattern.id) {
60
+
61
+ // If user source selected, filter out theme patterns. Any pattern without
62
+ // an id wasn't created by a user.
63
+ if (sourceFilter === _blockPatternsFilter.PATTERN_TYPES.user && !pattern.id) {
48
64
  return true;
49
65
  }
50
- if (sourceFilter === _blockPatternsSourceFilter.PATTERN_TYPES.user && syncFilter === _blockPatternsSyncFilter.SYNC_TYPES.full && pattern.syncStatus !== '') {
66
+
67
+ // Filter by sync status.
68
+ if (syncFilter === _blockPatternsFilter.SYNC_TYPES.full && pattern.syncStatus !== '') {
51
69
  return true;
52
70
  }
53
- if (sourceFilter === _blockPatternsSourceFilter.PATTERN_TYPES.user && syncFilter === _blockPatternsSyncFilter.SYNC_TYPES.unsynced && pattern.syncStatus !== 'unsynced') {
71
+ if (syncFilter === _blockPatternsFilter.SYNC_TYPES.unsynced && pattern.syncStatus !== 'unsynced' && isUserPattern) {
54
72
  return true;
55
73
  }
56
74
  return false;
@@ -74,6 +92,9 @@ function usePatternsCategories(rootClientId, sourceFilter = 'all') {
74
92
  label: (0, _i18n._x)('Uncategorized')
75
93
  });
76
94
  }
95
+ if (filteredPatterns.some(pattern => pattern.id)) {
96
+ categories.unshift(myPatternsCategory);
97
+ }
77
98
  if (filteredPatterns.length > 0) {
78
99
  categories.unshift({
79
100
  name: allPatternsCategory.name,
@@ -106,6 +127,7 @@ function BlockPatternsCategoryDialog({
106
127
  ref: container,
107
128
  className: "block-editor-inserter__patterns-category-dialog"
108
129
  }, (0, _element.createElement)(BlockPatternsCategoryPanel, {
130
+ key: category.name,
109
131
  rootClientId: rootClientId,
110
132
  onInsert: onInsert,
111
133
  onHover: onHover,
@@ -119,21 +141,24 @@ function BlockPatternsCategoryPanel({
119
141
  onInsert,
120
142
  onHover = noop,
121
143
  category,
122
- showTitlesAsTooltip,
123
- patternFilter
144
+ showTitlesAsTooltip
124
145
  }) {
125
146
  const [allPatterns,, onClickPattern] = (0, _usePatternsState.default)(onInsert, rootClientId);
126
147
  const [patternSyncFilter, setPatternSyncFilter] = (0, _element.useState)('all');
127
- const availableCategories = usePatternsCategories(rootClientId, patternFilter);
128
- const container = (0, _element.useRef)();
148
+ const [patternSourceFilter, setPatternSourceFilter] = (0, _element.useState)('all');
149
+ const availableCategories = usePatternsCategories(rootClientId, patternSourceFilter);
150
+ const scrollContainerRef = (0, _element.useRef)();
129
151
  const currentCategoryPatterns = (0, _element.useMemo)(() => allPatterns.filter(pattern => {
130
152
  var _pattern$categories$f;
131
- if (isPatternFiltered(pattern, patternFilter, patternSyncFilter)) {
153
+ if (isPatternFiltered(pattern, patternSourceFilter, patternSyncFilter)) {
132
154
  return false;
133
155
  }
134
156
  if (category.name === allPatternsCategory.name) {
135
157
  return true;
136
158
  }
159
+ if (category.name === myPatternsCategory.name && pattern.id) {
160
+ return true;
161
+ }
137
162
  if (category.name !== 'uncategorized') {
138
163
  return pattern.categories?.includes(category.name);
139
164
  }
@@ -142,21 +167,43 @@ function BlockPatternsCategoryPanel({
142
167
  // or with no available category.
143
168
  const availablePatternCategories = (_pattern$categories$f = pattern.categories?.filter(cat => availableCategories.find(availableCategory => availableCategory.name === cat))) !== null && _pattern$categories$f !== void 0 ? _pattern$categories$f : [];
144
169
  return availablePatternCategories.length === 0;
145
- }), [allPatterns, availableCategories, category.name, patternFilter, patternSyncFilter]);
146
- const pagingProps = (0, _usePatternsPaging.default)(currentCategoryPatterns, category, container);
170
+ }), [allPatterns, availableCategories, category.name, patternSourceFilter, patternSyncFilter]);
171
+ const pagingProps = (0, _usePatternsPaging.default)(currentCategoryPatterns, category, scrollContainerRef);
172
+ const {
173
+ changePage
174
+ } = pagingProps;
147
175
 
148
176
  // Hide block pattern preview on unmount.
149
177
  // eslint-disable-next-line react-hooks/exhaustive-deps
150
178
  (0, _element.useEffect)(() => () => onHover(null), []);
179
+ const onSetPatternSyncFilter = (0, _element.useCallback)(value => {
180
+ setPatternSyncFilter(value);
181
+ changePage(1);
182
+ }, [setPatternSyncFilter, changePage]);
183
+ const onSetPatternSourceFilter = (0, _element.useCallback)(value => {
184
+ setPatternSourceFilter(value);
185
+ changePage(1);
186
+ }, [setPatternSourceFilter, changePage]);
151
187
  return (0, _element.createElement)("div", {
152
- className: "block-editor-inserter__patterns-category-panel",
153
- ref: container
154
- }, (0, _element.createElement)("div", {
155
- className: "block-editor-inserter__patterns-category-panel-title"
156
- }, category.label), (0, _element.createElement)("p", null, category.description), patternFilter === _blockPatternsSourceFilter.PATTERN_TYPES.user && (0, _element.createElement)(_blockPatternsSyncFilter.BlockPatternsSyncFilter, {
188
+ className: "block-editor-inserter__patterns-category-panel"
189
+ }, (0, _element.createElement)(_components.__experimentalVStack, {
190
+ spacing: 2,
191
+ className: "block-editor-inserter__patterns-category-panel-header"
192
+ }, (0, _element.createElement)(_components.__experimentalHStack, null, (0, _element.createElement)(_components.FlexBlock, null, (0, _element.createElement)(_components.__experimentalHeading, {
193
+ level: 4,
194
+ as: "div"
195
+ }, category.label)), (0, _element.createElement)(_blockPatternsFilter.BlockPatternsSyncFilter, {
157
196
  patternSyncFilter: patternSyncFilter,
158
- setPatternSyncFilter: setPatternSyncFilter
159
- }), !currentCategoryPatterns.length && (0, _element.createElement)("div", null, (0, _i18n.__)('No results found')), currentCategoryPatterns.length > 0 && (0, _element.createElement)(_blockPatternsList.default, {
197
+ patternSourceFilter: patternSourceFilter,
198
+ setPatternSyncFilter: onSetPatternSyncFilter,
199
+ setPatternSourceFilter: onSetPatternSourceFilter,
200
+ scrollContainerRef: scrollContainerRef,
201
+ category: category
202
+ })), category.description && (0, _element.createElement)(_components.__experimentalText, null, category.description), !currentCategoryPatterns.length && (0, _element.createElement)(_components.__experimentalText, {
203
+ variant: "muted",
204
+ className: "block-editor-inserter__patterns-category-no-results"
205
+ }, (0, _i18n.__)('No results found'))), currentCategoryPatterns.length > 0 && (0, _element.createElement)(_blockPatternsList.default, {
206
+ ref: scrollContainerRef,
160
207
  shownPatterns: pagingProps.categoryPatternsAsyncList,
161
208
  blockPatterns: pagingProps.categoryPatterns,
162
209
  onClickPattern: onClickPattern,
@@ -166,9 +213,8 @@ function BlockPatternsCategoryPanel({
166
213
  category: category.name,
167
214
  isDraggable: true,
168
215
  showTitlesAsTooltip: showTitlesAsTooltip,
169
- patternFilter: patternFilter
170
- }), pagingProps.numPages > 1 && (0, _element.createElement)(_blockPatternsPaging.default, {
171
- ...pagingProps
216
+ patternFilter: patternSourceFilter,
217
+ pagingProps: pagingProps
172
218
  }));
173
219
  }
174
220
  function BlockPatternsTabs({
@@ -178,8 +224,7 @@ function BlockPatternsTabs({
178
224
  rootClientId
179
225
  }) {
180
226
  const [showPatternsExplorer, setShowPatternsExplorer] = (0, _element.useState)(false);
181
- const [patternSourceFilter, setPatternSourceFilter] = (0, _element.useState)('all');
182
- const categories = usePatternsCategories(rootClientId, patternSourceFilter);
227
+ const categories = usePatternsCategories(rootClientId);
183
228
  const initialCategory = selectedCategory || categories[0];
184
229
  const isMobile = (0, _compose.useViewportMatch)('medium', '<');
185
230
  return (0, _element.createElement)(_element.Fragment, null, !isMobile && (0, _element.createElement)("div", {
@@ -187,18 +232,12 @@ function BlockPatternsTabs({
187
232
  }, (0, _element.createElement)("nav", {
188
233
  "aria-label": (0, _i18n.__)('Block pattern categories'),
189
234
  className: "block-editor-inserter__block-patterns-tabs"
190
- }, (0, _element.createElement)(_blockPatternsSourceFilter.default, {
191
- value: patternSourceFilter,
192
- onChange: value => {
193
- setPatternSourceFilter(value);
194
- onSelectCategory(allPatternsCategory, value);
195
- }
196
- }), (0, _element.createElement)(_components.__experimentalItemGroup, {
235
+ }, (0, _element.createElement)(_components.__experimentalItemGroup, {
197
236
  role: "list"
198
237
  }, categories.map(category => (0, _element.createElement)(_components.__experimentalItem, {
199
238
  role: "listitem",
200
239
  key: category.name,
201
- onClick: () => onSelectCategory(category, patternSourceFilter),
240
+ onClick: () => onSelectCategory(category),
202
241
  className: category === selectedCategory ? 'block-editor-inserter__patterns-category block-editor-inserter__patterns-selected-category' : 'block-editor-inserter__patterns-category',
203
242
  "aria-label": category.label,
204
243
  "aria-current": category === selectedCategory ? 'true' : undefined
@@ -213,6 +252,7 @@ function BlockPatternsTabs({
213
252
  }, (0, _i18n.__)('Explore all patterns')))))), isMobile && (0, _element.createElement)(_mobileTabNavigation.default, {
214
253
  categories: categories
215
254
  }, category => (0, _element.createElement)(BlockPatternsCategoryPanel, {
255
+ key: category.name,
216
256
  onInsert: onInsert,
217
257
  rootClientId: rootClientId,
218
258
  category: category,
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_i18n","_compose","_components","_icons","_dom","_a11y","_usePatternsState","_interopRequireDefault","_blockPatternsList","_explorer","_mobileTabNavigation","_blockPatternsPaging","_usePatternsPaging","_blockPatternsSourceFilter","_interopRequireWildcard","_blockPatternsSyncFilter","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","noop","allPatternsCategory","name","label","__","exports","isPatternFiltered","pattern","sourceFilter","syncFilter","PATTERN_TYPES","theme","startsWith","user","id","SYNC_TYPES","full","syncStatus","unsynced","usePatternsCategories","rootClientId","patterns","allCategories","usePatternsState","undefined","filteredPatterns","useMemo","filter","hasRegisteredCategory","useCallback","categories","length","some","cat","category","populatedCategories","includes","sort","a","b","localeCompare","find","push","_x","unshift","speak","sprintf","_n","BlockPatternsCategoryDialog","onInsert","onHover","showTitlesAsTooltip","patternFilter","container","useRef","useEffect","timeout","setTimeout","firstTabbable","focus","tabbable","current","clearTimeout","createElement","ref","className","BlockPatternsCategoryPanel","allPatterns","onClickPattern","patternSyncFilter","setPatternSyncFilter","useState","availableCategories","currentCategoryPatterns","_pattern$categories$f","availablePatternCategories","availableCategory","pagingProps","usePatternsPaging","description","BlockPatternsSyncFilter","shownPatterns","categoryPatternsAsyncList","blockPatterns","categoryPatterns","orientation","isDraggable","numPages","BlockPatternsTabs","onSelectCategory","selectedCategory","showPatternsExplorer","setShowPatternsExplorer","patternSourceFilter","setPatternSourceFilter","initialCategory","isMobile","useViewportMatch","Fragment","value","onChange","__experimentalItemGroup","role","map","__experimentalItem","onClick","__experimentalHStack","FlexBlock","Icon","icon","isRTL","chevronLeft","chevronRight","Button","variant","patternCategories","onModalClose","_default"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element';\nimport { _x, __, _n, isRTL, sprintf } from '@wordpress/i18n';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\tFlexBlock,\n\tButton,\n} from '@wordpress/components';\nimport { Icon, chevronRight, chevronLeft } from '@wordpress/icons';\nimport { focus } from '@wordpress/dom';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from './hooks/use-patterns-state';\nimport BlockPatternList from '../block-patterns-list';\nimport PatternsExplorerModal from './block-patterns-explorer/explorer';\nimport MobileTabNavigation from './mobile-tab-navigation';\nimport BlockPatternsPaging from '../block-patterns-paging';\nimport usePatternsPaging from './hooks/use-patterns-paging';\nimport {\n\tPATTERN_TYPES,\n\tdefault as BlockPatternsSourceFilter,\n} from './block-patterns-source-filter';\nimport {\n\tBlockPatternsSyncFilter,\n\tSYNC_TYPES,\n} from './block-patterns-sync-filter';\n\nconst noop = () => {};\n\nexport const allPatternsCategory = {\n\tname: 'allPatterns',\n\tlabel: __( 'All categories' ),\n};\n\nexport function isPatternFiltered( pattern, sourceFilter, syncFilter ) {\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.theme &&\n\t\tpattern.name.startsWith( 'core/block' )\n\t) {\n\t\treturn true;\n\t}\n\tif ( sourceFilter === PATTERN_TYPES.user && ! pattern.id ) {\n\t\treturn true;\n\t}\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.user &&\n\t\tsyncFilter === SYNC_TYPES.full &&\n\t\tpattern.syncStatus !== ''\n\t) {\n\t\treturn true;\n\t}\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.user &&\n\t\tsyncFilter === SYNC_TYPES.unsynced &&\n\t\tpattern.syncStatus !== 'unsynced'\n\t) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport function usePatternsCategories( rootClientId, sourceFilter = 'all' ) {\n\tconst [ patterns, allCategories ] = usePatternsState(\n\t\tundefined,\n\t\trootClientId\n\t);\n\n\tconst filteredPatterns = useMemo(\n\t\t() =>\n\t\t\tsourceFilter === 'all'\n\t\t\t\t? patterns\n\t\t\t\t: patterns.filter(\n\t\t\t\t\t\t( pattern ) =>\n\t\t\t\t\t\t\t! isPatternFiltered( pattern, sourceFilter )\n\t\t\t\t ),\n\t\t[ sourceFilter, patterns ]\n\t);\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tfilteredPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( a, b ) => a.label.localeCompare( b.label ) );\n\n\t\tif (\n\t\t\tfilteredPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\t\tif ( filteredPatterns.length > 0 ) {\n\t\t\tcategories.unshift( {\n\t\t\t\tname: allPatternsCategory.name,\n\t\t\t\tlabel: allPatternsCategory.label,\n\t\t\t} );\n\t\t}\n\t\tspeak(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %d: number of categories . */\n\t\t\t\t_n(\n\t\t\t\t\t'%d category button displayed.',\n\t\t\t\t\t'%d category buttons displayed.',\n\t\t\t\t\tcategories.length\n\t\t\t\t),\n\t\t\t\tcategories.length\n\t\t\t)\n\t\t);\n\t\treturn categories;\n\t}, [ allCategories, filteredPatterns, hasRegisteredCategory ] );\n\n\treturn populatedCategories;\n}\n\nexport function BlockPatternsCategoryDialog( {\n\trootClientId,\n\tonInsert,\n\tonHover,\n\tcategory,\n\tshowTitlesAsTooltip,\n\tpatternFilter,\n} ) {\n\tconst container = useRef();\n\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tconst [ firstTabbable ] = focus.tabbable.find( container.current );\n\t\t\tfirstTabbable?.focus();\n\t\t} );\n\t\treturn () => clearTimeout( timeout );\n\t}, [ category ] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ container }\n\t\t\tclassName=\"block-editor-inserter__patterns-category-dialog\"\n\t\t>\n\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tcategory={ category }\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t\tpatternFilter={ patternFilter }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport function BlockPatternsCategoryPanel( {\n\trootClientId,\n\tonInsert,\n\tonHover = noop,\n\tcategory,\n\tshowTitlesAsTooltip,\n\tpatternFilter,\n} ) {\n\tconst [ allPatterns, , onClickPattern ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId\n\t);\n\tconst [ patternSyncFilter, setPatternSyncFilter ] = useState( 'all' );\n\n\tconst availableCategories = usePatternsCategories(\n\t\trootClientId,\n\t\tpatternFilter\n\t);\n\tconst container = useRef();\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) => {\n\t\t\t\tif (\n\t\t\t\t\tisPatternFiltered(\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tpatternFilter,\n\t\t\t\t\t\tpatternSyncFilter\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif ( category.name === allPatternsCategory.name ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif ( category.name !== 'uncategorized' ) {\n\t\t\t\t\treturn pattern.categories?.includes( category.name );\n\t\t\t\t}\n\n\t\t\t\t// The uncategorized category should show all the patterns without any category\n\t\t\t\t// or with no available category.\n\t\t\t\tconst availablePatternCategories =\n\t\t\t\t\tpattern.categories?.filter( ( cat ) =>\n\t\t\t\t\t\tavailableCategories.find(\n\t\t\t\t\t\t\t( availableCategory ) =>\n\t\t\t\t\t\t\t\tavailableCategory.name === cat\n\t\t\t\t\t\t)\n\t\t\t\t\t) ?? [];\n\n\t\t\t\treturn availablePatternCategories.length === 0;\n\t\t\t} ),\n\t\t[\n\t\t\tallPatterns,\n\t\t\tavailableCategories,\n\t\t\tcategory.name,\n\t\t\tpatternFilter,\n\t\t\tpatternSyncFilter,\n\t\t]\n\t);\n\n\tconst pagingProps = usePatternsPaging(\n\t\tcurrentCategoryPatterns,\n\t\tcategory,\n\t\tcontainer\n\t);\n\n\t// Hide block pattern preview on unmount.\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\tuseEffect( () => () => onHover( null ), [] );\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"block-editor-inserter__patterns-category-panel\"\n\t\t\tref={ container }\n\t\t>\n\t\t\t<div className=\"block-editor-inserter__patterns-category-panel-title\">\n\t\t\t\t{ category.label }\n\t\t\t</div>\n\t\t\t<p>{ category.description }</p>\n\t\t\t{ patternFilter === PATTERN_TYPES.user && (\n\t\t\t\t<BlockPatternsSyncFilter\n\t\t\t\t\tpatternSyncFilter={ patternSyncFilter }\n\t\t\t\t\tsetPatternSyncFilter={ setPatternSyncFilter }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! currentCategoryPatterns.length && (\n\t\t\t\t<div>{ __( 'No results found' ) }</div>\n\t\t\t) }\n\t\t\t{ currentCategoryPatterns.length > 0 && (\n\t\t\t\t<BlockPatternList\n\t\t\t\t\tshownPatterns={ pagingProps.categoryPatternsAsyncList }\n\t\t\t\t\tblockPatterns={ pagingProps.categoryPatterns }\n\t\t\t\t\tonClickPattern={ onClickPattern }\n\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\tlabel={ category.label }\n\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\tcategory={ category.name }\n\t\t\t\t\tisDraggable\n\t\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t\t\tpatternFilter={ patternFilter }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ pagingProps.numPages > 1 && (\n\t\t\t\t<BlockPatternsPaging { ...pagingProps } />\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsTabs( {\n\tonSelectCategory,\n\tselectedCategory,\n\tonInsert,\n\trootClientId,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\tconst [ patternSourceFilter, setPatternSourceFilter ] = useState( 'all' );\n\n\tconst categories = usePatternsCategories(\n\t\trootClientId,\n\t\tpatternSourceFilter\n\t);\n\n\tconst initialCategory = selectedCategory || categories[ 0 ];\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className=\"block-editor-inserter__block-patterns-tabs-container\">\n\t\t\t\t\t<nav\n\t\t\t\t\t\taria-label={ __( 'Block pattern categories' ) }\n\t\t\t\t\t\tclassName=\"block-editor-inserter__block-patterns-tabs\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<BlockPatternsSourceFilter\n\t\t\t\t\t\t\tvalue={ patternSourceFilter }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tsetPatternSourceFilter( value );\n\t\t\t\t\t\t\t\tonSelectCategory( allPatternsCategory, value );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ItemGroup role=\"list\">\n\t\t\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tonSelectCategory(\n\t\t\t\t\t\t\t\t\t\t\tcategory,\n\t\t\t\t\t\t\t\t\t\t\tpatternSourceFilter\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'block-editor-inserter__patterns-category block-editor-inserter__patterns-selected-category'\n\t\t\t\t\t\t\t\t\t\t\t: 'block-editor-inserter__patterns-category'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\taria-label={ category.label }\n\t\t\t\t\t\t\t\t\taria-current={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'true'\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tisRTL()\n\t\t\t\t\t\t\t\t\t\t\t\t\t? chevronLeft\n\t\t\t\t\t\t\t\t\t\t\t\t\t: chevronRight\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t<div role=\"listitem\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-explore-button\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetShowPatternsExplorer( true )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Explore all patterns' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</nav>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<MobileTabNavigation categories={ categories }>\n\t\t\t\t\t{ ( category ) => (\n\t\t\t\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t\tshowTitlesAsTooltip={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</MobileTabNavigation>\n\t\t\t) }\n\t\t\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ initialCategory }\n\t\t\t\t\tpatternCategories={ categories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default BlockPatternsTabs;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_element","require","_i18n","_compose","_components","_icons","_dom","_a11y","_usePatternsState","_interopRequireDefault","_blockPatternsList","_explorer","_mobileTabNavigation","_usePatternsPaging","_blockPatternsFilter","noop","allPatternsCategory","name","label","__","exports","myPatternsCategory","isPatternFiltered","pattern","sourceFilter","syncFilter","isUserPattern","startsWith","isDirectoryPattern","source","PATTERN_TYPES","theme","directory","user","id","SYNC_TYPES","full","syncStatus","unsynced","usePatternsCategories","rootClientId","patterns","allCategories","usePatternsState","undefined","filteredPatterns","useMemo","filter","hasRegisteredCategory","useCallback","categories","length","some","cat","category","populatedCategories","includes","sort","a","b","localeCompare","find","push","_x","unshift","speak","sprintf","_n","BlockPatternsCategoryDialog","onInsert","onHover","showTitlesAsTooltip","patternFilter","container","useRef","useEffect","timeout","setTimeout","firstTabbable","focus","tabbable","current","clearTimeout","createElement","ref","className","BlockPatternsCategoryPanel","key","allPatterns","onClickPattern","patternSyncFilter","setPatternSyncFilter","useState","patternSourceFilter","setPatternSourceFilter","availableCategories","scrollContainerRef","currentCategoryPatterns","_pattern$categories$f","availablePatternCategories","availableCategory","pagingProps","usePatternsPaging","changePage","onSetPatternSyncFilter","value","onSetPatternSourceFilter","__experimentalVStack","spacing","__experimentalHStack","FlexBlock","__experimentalHeading","level","as","BlockPatternsSyncFilter","description","__experimentalText","variant","default","shownPatterns","categoryPatternsAsyncList","blockPatterns","categoryPatterns","orientation","isDraggable","BlockPatternsTabs","onSelectCategory","selectedCategory","showPatternsExplorer","setShowPatternsExplorer","initialCategory","isMobile","useViewportMatch","Fragment","__experimentalItemGroup","role","map","__experimentalItem","onClick","Icon","icon","isRTL","chevronLeft","chevronRight","Button","patternCategories","onModalClose","_default"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element';\nimport { _x, __, _n, isRTL, sprintf } from '@wordpress/i18n';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalHeading as Heading,\n\t__experimentalText as Text,\n\tFlexBlock,\n\tButton,\n} from '@wordpress/components';\nimport { Icon, chevronRight, chevronLeft } from '@wordpress/icons';\nimport { focus } from '@wordpress/dom';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from './hooks/use-patterns-state';\nimport BlockPatternList from '../block-patterns-list';\nimport PatternsExplorerModal from './block-patterns-explorer/explorer';\nimport MobileTabNavigation from './mobile-tab-navigation';\nimport usePatternsPaging from './hooks/use-patterns-paging';\nimport {\n\tBlockPatternsSyncFilter,\n\tSYNC_TYPES,\n\tPATTERN_TYPES,\n} from './block-patterns-filter';\n\nconst noop = () => {};\n\nexport const allPatternsCategory = {\n\tname: 'allPatterns',\n\tlabel: __( 'All patterns' ),\n};\n\nexport const myPatternsCategory = {\n\tname: 'myPatterns',\n\tlabel: __( 'My patterns' ),\n};\n\nexport function isPatternFiltered( pattern, sourceFilter, syncFilter ) {\n\tconst isUserPattern = pattern.name.startsWith( 'core/block' );\n\tconst isDirectoryPattern =\n\t\tpattern.source === 'core' ||\n\t\tpattern.source?.startsWith( 'pattern-directory' );\n\n\t// If theme source selected, filter out user created patterns and those from\n\t// the core patterns directory.\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.theme &&\n\t\t( isUserPattern || isDirectoryPattern )\n\t) {\n\t\treturn true;\n\t}\n\n\t// If the directory source is selected, filter out user created patterns\n\t// and those bundled with the theme.\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.directory &&\n\t\t( isUserPattern || ! isDirectoryPattern )\n\t) {\n\t\treturn true;\n\t}\n\n\t// If user source selected, filter out theme patterns. Any pattern without\n\t// an id wasn't created by a user.\n\tif ( sourceFilter === PATTERN_TYPES.user && ! pattern.id ) {\n\t\treturn true;\n\t}\n\n\t// Filter by sync status.\n\tif ( syncFilter === SYNC_TYPES.full && pattern.syncStatus !== '' ) {\n\t\treturn true;\n\t}\n\n\tif (\n\t\tsyncFilter === SYNC_TYPES.unsynced &&\n\t\tpattern.syncStatus !== 'unsynced' &&\n\t\tisUserPattern\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nexport function usePatternsCategories( rootClientId, sourceFilter = 'all' ) {\n\tconst [ patterns, allCategories ] = usePatternsState(\n\t\tundefined,\n\t\trootClientId\n\t);\n\n\tconst filteredPatterns = useMemo(\n\t\t() =>\n\t\t\tsourceFilter === 'all'\n\t\t\t\t? patterns\n\t\t\t\t: patterns.filter(\n\t\t\t\t\t\t( pattern ) =>\n\t\t\t\t\t\t\t! isPatternFiltered( pattern, sourceFilter )\n\t\t\t\t ),\n\t\t[ sourceFilter, patterns ]\n\t);\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tfilteredPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( a, b ) => a.label.localeCompare( b.label ) );\n\n\t\tif (\n\t\t\tfilteredPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\t\tif ( filteredPatterns.some( ( pattern ) => pattern.id ) ) {\n\t\t\tcategories.unshift( myPatternsCategory );\n\t\t}\n\t\tif ( filteredPatterns.length > 0 ) {\n\t\t\tcategories.unshift( {\n\t\t\t\tname: allPatternsCategory.name,\n\t\t\t\tlabel: allPatternsCategory.label,\n\t\t\t} );\n\t\t}\n\t\tspeak(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %d: number of categories . */\n\t\t\t\t_n(\n\t\t\t\t\t'%d category button displayed.',\n\t\t\t\t\t'%d category buttons displayed.',\n\t\t\t\t\tcategories.length\n\t\t\t\t),\n\t\t\t\tcategories.length\n\t\t\t)\n\t\t);\n\t\treturn categories;\n\t}, [ allCategories, filteredPatterns, hasRegisteredCategory ] );\n\n\treturn populatedCategories;\n}\n\nexport function BlockPatternsCategoryDialog( {\n\trootClientId,\n\tonInsert,\n\tonHover,\n\tcategory,\n\tshowTitlesAsTooltip,\n\tpatternFilter,\n} ) {\n\tconst container = useRef();\n\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tconst [ firstTabbable ] = focus.tabbable.find( container.current );\n\t\t\tfirstTabbable?.focus();\n\t\t} );\n\t\treturn () => clearTimeout( timeout );\n\t}, [ category ] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ container }\n\t\t\tclassName=\"block-editor-inserter__patterns-category-dialog\"\n\t\t>\n\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\tkey={ category.name }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tcategory={ category }\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t\tpatternFilter={ patternFilter }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport function BlockPatternsCategoryPanel( {\n\trootClientId,\n\tonInsert,\n\tonHover = noop,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst [ allPatterns, , onClickPattern ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId\n\t);\n\tconst [ patternSyncFilter, setPatternSyncFilter ] = useState( 'all' );\n\tconst [ patternSourceFilter, setPatternSourceFilter ] = useState( 'all' );\n\n\tconst availableCategories = usePatternsCategories(\n\t\trootClientId,\n\t\tpatternSourceFilter\n\t);\n\tconst scrollContainerRef = useRef();\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) => {\n\t\t\t\tif (\n\t\t\t\t\tisPatternFiltered(\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tpatternSourceFilter,\n\t\t\t\t\t\tpatternSyncFilter\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif ( category.name === allPatternsCategory.name ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif ( category.name === myPatternsCategory.name && pattern.id ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif ( category.name !== 'uncategorized' ) {\n\t\t\t\t\treturn pattern.categories?.includes( category.name );\n\t\t\t\t}\n\n\t\t\t\t// The uncategorized category should show all the patterns without any category\n\t\t\t\t// or with no available category.\n\t\t\t\tconst availablePatternCategories =\n\t\t\t\t\tpattern.categories?.filter( ( cat ) =>\n\t\t\t\t\t\tavailableCategories.find(\n\t\t\t\t\t\t\t( availableCategory ) =>\n\t\t\t\t\t\t\t\tavailableCategory.name === cat\n\t\t\t\t\t\t)\n\t\t\t\t\t) ?? [];\n\n\t\t\t\treturn availablePatternCategories.length === 0;\n\t\t\t} ),\n\t\t[\n\t\t\tallPatterns,\n\t\t\tavailableCategories,\n\t\t\tcategory.name,\n\t\t\tpatternSourceFilter,\n\t\t\tpatternSyncFilter,\n\t\t]\n\t);\n\n\tconst pagingProps = usePatternsPaging(\n\t\tcurrentCategoryPatterns,\n\t\tcategory,\n\t\tscrollContainerRef\n\t);\n\tconst { changePage } = pagingProps;\n\n\t// Hide block pattern preview on unmount.\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\tuseEffect( () => () => onHover( null ), [] );\n\n\tconst onSetPatternSyncFilter = useCallback(\n\t\t( value ) => {\n\t\t\tsetPatternSyncFilter( value );\n\t\t\tchangePage( 1 );\n\t\t},\n\t\t[ setPatternSyncFilter, changePage ]\n\t);\n\tconst onSetPatternSourceFilter = useCallback(\n\t\t( value ) => {\n\t\t\tsetPatternSourceFilter( value );\n\t\t\tchangePage( 1 );\n\t\t},\n\t\t[ setPatternSourceFilter, changePage ]\n\t);\n\n\treturn (\n\t\t<div className=\"block-editor-inserter__patterns-category-panel\">\n\t\t\t<VStack\n\t\t\t\tspacing={ 2 }\n\t\t\t\tclassName=\"block-editor-inserter__patterns-category-panel-header\"\n\t\t\t>\n\t\t\t\t<HStack>\n\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t<Heading level={ 4 } as=\"div\">\n\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t</Heading>\n\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t<BlockPatternsSyncFilter\n\t\t\t\t\t\tpatternSyncFilter={ patternSyncFilter }\n\t\t\t\t\t\tpatternSourceFilter={ patternSourceFilter }\n\t\t\t\t\t\tsetPatternSyncFilter={ onSetPatternSyncFilter }\n\t\t\t\t\t\tsetPatternSourceFilter={ onSetPatternSourceFilter }\n\t\t\t\t\t\tscrollContainerRef={ scrollContainerRef }\n\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t\t{ category.description && (\n\t\t\t\t\t<Text>{ category.description }</Text>\n\t\t\t\t) }\n\t\t\t\t{ ! currentCategoryPatterns.length && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\tvariant=\"muted\"\n\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-category-no-results\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'No results found' ) }\n\t\t\t\t\t</Text>\n\t\t\t\t) }\n\t\t\t</VStack>\n\n\t\t\t{ currentCategoryPatterns.length > 0 && (\n\t\t\t\t<BlockPatternList\n\t\t\t\t\tref={ scrollContainerRef }\n\t\t\t\t\tshownPatterns={ pagingProps.categoryPatternsAsyncList }\n\t\t\t\t\tblockPatterns={ pagingProps.categoryPatterns }\n\t\t\t\t\tonClickPattern={ onClickPattern }\n\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\tlabel={ category.label }\n\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\tcategory={ category.name }\n\t\t\t\t\tisDraggable\n\t\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t\t\tpatternFilter={ patternSourceFilter }\n\t\t\t\t\tpagingProps={ pagingProps }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsTabs( {\n\tonSelectCategory,\n\tselectedCategory,\n\tonInsert,\n\trootClientId,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\n\tconst categories = usePatternsCategories( rootClientId );\n\n\tconst initialCategory = selectedCategory || categories[ 0 ];\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className=\"block-editor-inserter__block-patterns-tabs-container\">\n\t\t\t\t\t<nav\n\t\t\t\t\t\taria-label={ __( 'Block pattern categories' ) }\n\t\t\t\t\t\tclassName=\"block-editor-inserter__block-patterns-tabs\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ItemGroup role=\"list\">\n\t\t\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tonSelectCategory( category )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'block-editor-inserter__patterns-category block-editor-inserter__patterns-selected-category'\n\t\t\t\t\t\t\t\t\t\t\t: 'block-editor-inserter__patterns-category'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\taria-label={ category.label }\n\t\t\t\t\t\t\t\t\taria-current={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'true'\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tisRTL()\n\t\t\t\t\t\t\t\t\t\t\t\t\t? chevronLeft\n\t\t\t\t\t\t\t\t\t\t\t\t\t: chevronRight\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t<div role=\"listitem\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-explore-button\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetShowPatternsExplorer( true )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Explore all patterns' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</nav>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<MobileTabNavigation categories={ categories }>\n\t\t\t\t\t{ ( category ) => (\n\t\t\t\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t\tshowTitlesAsTooltip={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</MobileTabNavigation>\n\t\t\t) }\n\t\t\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ initialCategory }\n\t\t\t\t\tpatternCategories={ categories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default BlockPatternsTabs;\n"],"mappings":"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"}
@@ -45,6 +45,10 @@ function usePatternsPaging(currentCategoryPatterns, currentCategory, scrollConta
45
45
  scrollContainer?.scrollTo(0, 0);
46
46
  setCurrentPage(page);
47
47
  };
48
+ (0, _element.useEffect)(function scrollToTopOnCategoryChange() {
49
+ const scrollContainer = (0, _dom.getScrollContainer)(scrollContainerRef?.current);
50
+ scrollContainer?.scrollTo(0, 0);
51
+ }, [currentCategory, scrollContainerRef]);
48
52
  return {
49
53
  totalItems,
50
54
  categoryPatterns,
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_compose","_dom","PAGE_SIZE","INITIAL_INSERTER_RESULTS","usePatternsPaging","currentCategoryPatterns","currentCategory","scrollContainerRef","currentFilter","currentPage","setCurrentPage","useState","previousCategory","usePrevious","previousFilter","totalItems","length","pageIndex","categoryPatterns","useMemo","slice","categoryPatternsAsyncList","useAsyncList","step","numPages","Math","ceil","changePage","page","scrollContainer","getScrollContainer","current","scrollTo"],"sources":["@wordpress/block-editor/src/components/inserter/hooks/use-patterns-paging.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useState } from '@wordpress/element';\nimport { useAsyncList, usePrevious } from '@wordpress/compose';\nimport { getScrollContainer } from '@wordpress/dom';\n\nconst PAGE_SIZE = 20;\nconst INITIAL_INSERTER_RESULTS = 5;\n\n/**\n * Supplies values needed to page the patterns list client side.\n *\n * @param {Array} currentCategoryPatterns An array of the current patterns to display.\n * @param {string} currentCategory The currently selected category.\n * @param {Object} scrollContainerRef Ref of container to to find scroll container for when moving between pages.\n * @param {string} currentFilter The currently search filter.\n *\n * @return {Object} Returns the relevant paging values. (totalItems, categoryPatternsList, numPages, changePage, currentPage)\n */\nexport default function usePatternsPaging(\n\tcurrentCategoryPatterns,\n\tcurrentCategory,\n\tscrollContainerRef,\n\tcurrentFilter = ''\n) {\n\tconst [ currentPage, setCurrentPage ] = useState( 1 );\n\tconst previousCategory = usePrevious( currentCategory );\n\tconst previousFilter = usePrevious( currentFilter );\n\tif (\n\t\t( previousCategory !== currentCategory ||\n\t\t\tpreviousFilter !== currentFilter ) &&\n\t\tcurrentPage !== 1\n\t) {\n\t\tsetCurrentPage( 1 );\n\t}\n\tconst totalItems = currentCategoryPatterns.length;\n\tconst pageIndex = currentPage - 1;\n\tconst categoryPatterns = useMemo( () => {\n\t\treturn currentCategoryPatterns.slice(\n\t\t\tpageIndex * PAGE_SIZE,\n\t\t\tpageIndex * PAGE_SIZE + PAGE_SIZE\n\t\t);\n\t}, [ pageIndex, currentCategoryPatterns ] );\n\tconst categoryPatternsAsyncList = useAsyncList( categoryPatterns, {\n\t\tstep: INITIAL_INSERTER_RESULTS,\n\t} );\n\tconst numPages = Math.ceil( currentCategoryPatterns.length / PAGE_SIZE );\n\tconst changePage = ( page ) => {\n\t\tconst scrollContainer = getScrollContainer(\n\t\t\tscrollContainerRef?.current\n\t\t);\n\t\tscrollContainer?.scrollTo( 0, 0 );\n\n\t\tsetCurrentPage( page );\n\t};\n\treturn {\n\t\ttotalItems,\n\t\tcategoryPatterns,\n\t\tcategoryPatternsAsyncList,\n\t\tnumPages,\n\t\tchangePage,\n\t\tcurrentPage,\n\t};\n}\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,IAAA,GAAAF,OAAA;AALA;AACA;AACA;;AAKA,MAAMG,SAAS,GAAG,EAAE;AACpB,MAAMC,wBAAwB,GAAG,CAAC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASC,iBAAiBA,CACxCC,uBAAuB,EACvBC,eAAe,EACfC,kBAAkB,EAClBC,aAAa,GAAG,EAAE,EACjB;EACD,MAAM,CAAEC,WAAW,EAAEC,cAAc,CAAE,GAAG,IAAAC,iBAAQ,EAAE,CAAE,CAAC;EACrD,MAAMC,gBAAgB,GAAG,IAAAC,oBAAW,EAAEP,eAAgB,CAAC;EACvD,MAAMQ,cAAc,GAAG,IAAAD,oBAAW,EAAEL,aAAc,CAAC;EACnD,IACC,CAAEI,gBAAgB,KAAKN,eAAe,IACrCQ,cAAc,KAAKN,aAAa,KACjCC,WAAW,KAAK,CAAC,EAChB;IACDC,cAAc,CAAE,CAAE,CAAC;EACpB;EACA,MAAMK,UAAU,GAAGV,uBAAuB,CAACW,MAAM;EACjD,MAAMC,SAAS,GAAGR,WAAW,GAAG,CAAC;EACjC,MAAMS,gBAAgB,GAAG,IAAAC,gBAAO,EAAE,MAAM;IACvC,OAAOd,uBAAuB,CAACe,KAAK,CACnCH,SAAS,GAAGf,SAAS,EACrBe,SAAS,GAAGf,SAAS,GAAGA,SACzB,CAAC;EACF,CAAC,EAAE,CAAEe,SAAS,EAAEZ,uBAAuB,CAAG,CAAC;EAC3C,MAAMgB,yBAAyB,GAAG,IAAAC,qBAAY,EAAEJ,gBAAgB,EAAE;IACjEK,IAAI,EAAEpB;EACP,CAAE,CAAC;EACH,MAAMqB,QAAQ,GAAGC,IAAI,CAACC,IAAI,CAAErB,uBAAuB,CAACW,MAAM,GAAGd,SAAU,CAAC;EACxE,MAAMyB,UAAU,GAAKC,IAAI,IAAM;IAC9B,MAAMC,eAAe,GAAG,IAAAC,uBAAkB,EACzCvB,kBAAkB,EAAEwB,OACrB,CAAC;IACDF,eAAe,EAAEG,QAAQ,CAAE,CAAC,EAAE,CAAE,CAAC;IAEjCtB,cAAc,CAAEkB,IAAK,CAAC;EACvB,CAAC;EACD,OAAO;IACNb,UAAU;IACVG,gBAAgB;IAChBG,yBAAyB;IACzBG,QAAQ;IACRG,UAAU;IACVlB;EACD,CAAC;AACF"}
1
+ {"version":3,"names":["_element","require","_compose","_dom","PAGE_SIZE","INITIAL_INSERTER_RESULTS","usePatternsPaging","currentCategoryPatterns","currentCategory","scrollContainerRef","currentFilter","currentPage","setCurrentPage","useState","previousCategory","usePrevious","previousFilter","totalItems","length","pageIndex","categoryPatterns","useMemo","slice","categoryPatternsAsyncList","useAsyncList","step","numPages","Math","ceil","changePage","page","scrollContainer","getScrollContainer","current","scrollTo","useEffect","scrollToTopOnCategoryChange"],"sources":["@wordpress/block-editor/src/components/inserter/hooks/use-patterns-paging.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useState, useEffect } from '@wordpress/element';\nimport { useAsyncList, usePrevious } from '@wordpress/compose';\nimport { getScrollContainer } from '@wordpress/dom';\n\nconst PAGE_SIZE = 20;\nconst INITIAL_INSERTER_RESULTS = 5;\n\n/**\n * Supplies values needed to page the patterns list client side.\n *\n * @param {Array} currentCategoryPatterns An array of the current patterns to display.\n * @param {string} currentCategory The currently selected category.\n * @param {Object} scrollContainerRef Ref of container to to find scroll container for when moving between pages.\n * @param {string} currentFilter The currently search filter.\n *\n * @return {Object} Returns the relevant paging values. (totalItems, categoryPatternsList, numPages, changePage, currentPage)\n */\nexport default function usePatternsPaging(\n\tcurrentCategoryPatterns,\n\tcurrentCategory,\n\tscrollContainerRef,\n\tcurrentFilter = ''\n) {\n\tconst [ currentPage, setCurrentPage ] = useState( 1 );\n\tconst previousCategory = usePrevious( currentCategory );\n\tconst previousFilter = usePrevious( currentFilter );\n\tif (\n\t\t( previousCategory !== currentCategory ||\n\t\t\tpreviousFilter !== currentFilter ) &&\n\t\tcurrentPage !== 1\n\t) {\n\t\tsetCurrentPage( 1 );\n\t}\n\tconst totalItems = currentCategoryPatterns.length;\n\tconst pageIndex = currentPage - 1;\n\tconst categoryPatterns = useMemo( () => {\n\t\treturn currentCategoryPatterns.slice(\n\t\t\tpageIndex * PAGE_SIZE,\n\t\t\tpageIndex * PAGE_SIZE + PAGE_SIZE\n\t\t);\n\t}, [ pageIndex, currentCategoryPatterns ] );\n\tconst categoryPatternsAsyncList = useAsyncList( categoryPatterns, {\n\t\tstep: INITIAL_INSERTER_RESULTS,\n\t} );\n\tconst numPages = Math.ceil( currentCategoryPatterns.length / PAGE_SIZE );\n\tconst changePage = ( page ) => {\n\t\tconst scrollContainer = getScrollContainer(\n\t\t\tscrollContainerRef?.current\n\t\t);\n\t\tscrollContainer?.scrollTo( 0, 0 );\n\n\t\tsetCurrentPage( page );\n\t};\n\n\tuseEffect(\n\t\tfunction scrollToTopOnCategoryChange() {\n\t\t\tconst scrollContainer = getScrollContainer(\n\t\t\t\tscrollContainerRef?.current\n\t\t\t);\n\t\t\tscrollContainer?.scrollTo( 0, 0 );\n\t\t},\n\t\t[ currentCategory, scrollContainerRef ]\n\t);\n\n\treturn {\n\t\ttotalItems,\n\t\tcategoryPatterns,\n\t\tcategoryPatternsAsyncList,\n\t\tnumPages,\n\t\tchangePage,\n\t\tcurrentPage,\n\t};\n}\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,IAAA,GAAAF,OAAA;AALA;AACA;AACA;;AAKA,MAAMG,SAAS,GAAG,EAAE;AACpB,MAAMC,wBAAwB,GAAG,CAAC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASC,iBAAiBA,CACxCC,uBAAuB,EACvBC,eAAe,EACfC,kBAAkB,EAClBC,aAAa,GAAG,EAAE,EACjB;EACD,MAAM,CAAEC,WAAW,EAAEC,cAAc,CAAE,GAAG,IAAAC,iBAAQ,EAAE,CAAE,CAAC;EACrD,MAAMC,gBAAgB,GAAG,IAAAC,oBAAW,EAAEP,eAAgB,CAAC;EACvD,MAAMQ,cAAc,GAAG,IAAAD,oBAAW,EAAEL,aAAc,CAAC;EACnD,IACC,CAAEI,gBAAgB,KAAKN,eAAe,IACrCQ,cAAc,KAAKN,aAAa,KACjCC,WAAW,KAAK,CAAC,EAChB;IACDC,cAAc,CAAE,CAAE,CAAC;EACpB;EACA,MAAMK,UAAU,GAAGV,uBAAuB,CAACW,MAAM;EACjD,MAAMC,SAAS,GAAGR,WAAW,GAAG,CAAC;EACjC,MAAMS,gBAAgB,GAAG,IAAAC,gBAAO,EAAE,MAAM;IACvC,OAAOd,uBAAuB,CAACe,KAAK,CACnCH,SAAS,GAAGf,SAAS,EACrBe,SAAS,GAAGf,SAAS,GAAGA,SACzB,CAAC;EACF,CAAC,EAAE,CAAEe,SAAS,EAAEZ,uBAAuB,CAAG,CAAC;EAC3C,MAAMgB,yBAAyB,GAAG,IAAAC,qBAAY,EAAEJ,gBAAgB,EAAE;IACjEK,IAAI,EAAEpB;EACP,CAAE,CAAC;EACH,MAAMqB,QAAQ,GAAGC,IAAI,CAACC,IAAI,CAAErB,uBAAuB,CAACW,MAAM,GAAGd,SAAU,CAAC;EACxE,MAAMyB,UAAU,GAAKC,IAAI,IAAM;IAC9B,MAAMC,eAAe,GAAG,IAAAC,uBAAkB,EACzCvB,kBAAkB,EAAEwB,OACrB,CAAC;IACDF,eAAe,EAAEG,QAAQ,CAAE,CAAC,EAAE,CAAE,CAAC;IAEjCtB,cAAc,CAAEkB,IAAK,CAAC;EACvB,CAAC;EAED,IAAAK,kBAAS,EACR,SAASC,2BAA2BA,CAAA,EAAG;IACtC,MAAML,eAAe,GAAG,IAAAC,uBAAkB,EACzCvB,kBAAkB,EAAEwB,OACrB,CAAC;IACDF,eAAe,EAAEG,QAAQ,CAAE,CAAC,EAAE,CAAE,CAAC;EAClC,CAAC,EACD,CAAE1B,eAAe,EAAEC,kBAAkB,CACtC,CAAC;EAED,OAAO;IACNQ,UAAU;IACVG,gBAAgB;IAChBG,yBAAyB;IACzBG,QAAQ;IACRG,UAAU;IACVlB;EACD,CAAC;AACF"}
@@ -126,7 +126,7 @@ function InserterSearchResults({
126
126
  isDraggable: isDraggable
127
127
  }));
128
128
  const patternsUI = !!filteredBlockPatterns.length && (0, _element.createElement)(_panel.default, {
129
- title: (0, _element.createElement)(_components.VisuallyHidden, null, (0, _i18n.__)('Block Patterns'))
129
+ title: (0, _element.createElement)(_components.VisuallyHidden, null, (0, _i18n.__)('Block patterns'))
130
130
  }, (0, _element.createElement)("div", {
131
131
  className: "block-editor-inserter__quick-inserter-patterns"
132
132
  }, (0, _element.createElement)(_blockPatternsList.default, {
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_i18n","_components","_compose","_a11y","_data","_blockTypesList","_interopRequireDefault","_blockPatternsList","_inserterMenuExtension","_panel","_noResults","_useInsertionPoint","_usePatternsState","_useBlockTypesState","_searchItems","_inserterListbox","_sorting","_orderInserterBlockItems","_store","INITIAL_INSERTER_RESULTS","EMPTY_ARRAY","InserterSearchResults","filterValue","onSelect","onHover","onHoverPattern","rootClientId","clientId","isAppender","__experimentalInsertionIndex","maxBlockPatterns","maxBlockTypes","showBlockDirectory","isDraggable","shouldFocusBlock","prioritizePatterns","selectBlockOnInsert","debouncedSpeak","useDebounce","speak","prioritizedBlocks","useSelect","select","blockListSettings","blockEditorStore","getBlockListSettings","prioritizedInserterBlocks","destinationRootClientId","onInsertBlocks","useInsertionPoint","insertionIndex","blockTypes","blockTypeCategories","blockTypeCollections","onSelectBlockType","useBlockTypesState","patterns","onClickPattern","usePatternsState","filteredBlockPatterns","useMemo","results","searchItems","undefined","slice","maxBlockTypesToShow","length","filteredBlockTypes","nonPatternBlockTypes","filter","blockType","name","orderedItems","orderBy","orderInserterBlockItems","searchBlockItems","useEffect","count","resultsFoundMessage","sprintf","_n","currentShownBlockTypes","useAsyncList","step","currentShownPatterns","hasItems","blocksUI","createElement","default","title","VisuallyHidden","__","items","label","patternsUI","className","shownPatterns","blockPatterns","Slot","fillProps","fills","_default","exports"],"sources":["@wordpress/block-editor/src/components/inserter/search-results.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useEffect } from '@wordpress/element';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { VisuallyHidden } from '@wordpress/components';\nimport { useDebounce, useAsyncList } from '@wordpress/compose';\nimport { speak } from '@wordpress/a11y';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport BlockTypesList from '../block-types-list';\nimport BlockPatternsList from '../block-patterns-list';\nimport __unstableInserterMenuExtension from '../inserter-menu-extension';\nimport InserterPanel from './panel';\nimport InserterNoResults from './no-results';\nimport useInsertionPoint from './hooks/use-insertion-point';\nimport usePatternsState from './hooks/use-patterns-state';\nimport useBlockTypesState from './hooks/use-block-types-state';\nimport { searchBlockItems, searchItems } from './search-items';\nimport InserterListbox from '../inserter-listbox';\nimport { orderBy } from '../../utils/sorting';\nimport { orderInserterBlockItems } from '../../utils/order-inserter-block-items';\nimport { store as blockEditorStore } from '../../store';\n\nconst INITIAL_INSERTER_RESULTS = 9;\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation and rerendering the component.\n *\n * @type {Array}\n */\nconst EMPTY_ARRAY = [];\n\nfunction InserterSearchResults( {\n\tfilterValue,\n\tonSelect,\n\tonHover,\n\tonHoverPattern,\n\trootClientId,\n\tclientId,\n\tisAppender,\n\t__experimentalInsertionIndex,\n\tmaxBlockPatterns,\n\tmaxBlockTypes,\n\tshowBlockDirectory = false,\n\tisDraggable = true,\n\tshouldFocusBlock = true,\n\tprioritizePatterns,\n\tselectBlockOnInsert,\n} ) {\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\n\tconst { prioritizedBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst blockListSettings =\n\t\t\t\tselect( blockEditorStore ).getBlockListSettings( rootClientId );\n\n\t\t\treturn {\n\t\t\t\tprioritizedBlocks:\n\t\t\t\t\tblockListSettings?.prioritizedInserterBlocks || EMPTY_ARRAY,\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\n\tconst [ destinationRootClientId, onInsertBlocks ] = useInsertionPoint( {\n\t\tonSelect,\n\t\trootClientId,\n\t\tclientId,\n\t\tisAppender,\n\t\tinsertionIndex: __experimentalInsertionIndex,\n\t\tshouldFocusBlock,\n\t\tselectBlockOnInsert,\n\t} );\n\tconst [\n\t\tblockTypes,\n\t\tblockTypeCategories,\n\t\tblockTypeCollections,\n\t\tonSelectBlockType,\n\t] = useBlockTypesState( destinationRootClientId, onInsertBlocks );\n\tconst [ patterns, , onClickPattern ] = usePatternsState(\n\t\tonInsertBlocks,\n\t\tdestinationRootClientId\n\t);\n\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\tif ( maxBlockPatterns === 0 ) {\n\t\t\treturn [];\n\t\t}\n\t\tconst results = searchItems( patterns, filterValue );\n\t\treturn maxBlockPatterns !== undefined\n\t\t\t? results.slice( 0, maxBlockPatterns )\n\t\t\t: results;\n\t}, [ filterValue, patterns, maxBlockPatterns ] );\n\n\tlet maxBlockTypesToShow = maxBlockTypes;\n\tif ( prioritizePatterns && filteredBlockPatterns.length > 2 ) {\n\t\tmaxBlockTypesToShow = 0;\n\t}\n\n\tconst filteredBlockTypes = useMemo( () => {\n\t\tif ( maxBlockTypesToShow === 0 ) {\n\t\t\treturn [];\n\t\t}\n\t\tconst nonPatternBlockTypes = blockTypes.filter(\n\t\t\t( blockType ) => blockType.name !== 'core/block'\n\t\t);\n\t\tlet orderedItems = orderBy( nonPatternBlockTypes, 'frecency', 'desc' );\n\n\t\tif ( ! filterValue && prioritizedBlocks.length ) {\n\t\t\torderedItems = orderInserterBlockItems(\n\t\t\t\torderedItems,\n\t\t\t\tprioritizedBlocks\n\t\t\t);\n\t\t}\n\n\t\tconst results = searchBlockItems(\n\t\t\torderedItems,\n\t\t\tblockTypeCategories,\n\t\t\tblockTypeCollections,\n\t\t\tfilterValue\n\t\t);\n\n\t\treturn maxBlockTypesToShow !== undefined\n\t\t\t? results.slice( 0, maxBlockTypesToShow )\n\t\t\t: results;\n\t}, [\n\t\tfilterValue,\n\t\tblockTypes,\n\t\tblockTypeCategories,\n\t\tblockTypeCollections,\n\t\tmaxBlockTypesToShow,\n\t\tprioritizedBlocks,\n\t] );\n\n\t// Announce search results on change.\n\tuseEffect( () => {\n\t\tif ( ! filterValue ) {\n\t\t\treturn;\n\t\t}\n\t\tconst count = filteredBlockTypes.length + filteredBlockPatterns.length;\n\t\tconst resultsFoundMessage = sprintf(\n\t\t\t/* translators: %d: number of results. */\n\t\t\t_n( '%d result found.', '%d results found.', count ),\n\t\t\tcount\n\t\t);\n\t\tdebouncedSpeak( resultsFoundMessage );\n\t}, [\n\t\tfilterValue,\n\t\tdebouncedSpeak,\n\t\tfilteredBlockTypes,\n\t\tfilteredBlockPatterns,\n\t] );\n\n\tconst currentShownBlockTypes = useAsyncList( filteredBlockTypes, {\n\t\tstep: INITIAL_INSERTER_RESULTS,\n\t} );\n\tconst currentShownPatterns = useAsyncList(\n\t\tcurrentShownBlockTypes.length === filteredBlockTypes.length\n\t\t\t? filteredBlockPatterns\n\t\t\t: EMPTY_ARRAY\n\t);\n\n\tconst hasItems =\n\t\tfilteredBlockTypes.length > 0 || filteredBlockPatterns.length > 0;\n\n\tconst blocksUI = !! filteredBlockTypes.length && (\n\t\t<InserterPanel\n\t\t\ttitle={ <VisuallyHidden>{ __( 'Blocks' ) }</VisuallyHidden> }\n\t\t>\n\t\t\t<BlockTypesList\n\t\t\t\titems={ currentShownBlockTypes }\n\t\t\t\tonSelect={ onSelectBlockType }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tlabel={ __( 'Blocks' ) }\n\t\t\t\tisDraggable={ isDraggable }\n\t\t\t/>\n\t\t</InserterPanel>\n\t);\n\n\tconst patternsUI = !! filteredBlockPatterns.length && (\n\t\t<InserterPanel\n\t\t\ttitle={\n\t\t\t\t<VisuallyHidden>{ __( 'Block Patterns' ) }</VisuallyHidden>\n\t\t\t}\n\t\t>\n\t\t\t<div className=\"block-editor-inserter__quick-inserter-patterns\">\n\t\t\t\t<BlockPatternsList\n\t\t\t\t\tshownPatterns={ currentShownPatterns }\n\t\t\t\t\tblockPatterns={ filteredBlockPatterns }\n\t\t\t\t\tonClickPattern={ onClickPattern }\n\t\t\t\t\tonHover={ onHoverPattern }\n\t\t\t\t\tisDraggable={ isDraggable }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</InserterPanel>\n\t);\n\n\treturn (\n\t\t<InserterListbox>\n\t\t\t{ ! showBlockDirectory && ! hasItems && <InserterNoResults /> }\n\n\t\t\t{ prioritizePatterns ? patternsUI : blocksUI }\n\n\t\t\t{ !! filteredBlockTypes.length &&\n\t\t\t\t!! filteredBlockPatterns.length && (\n\t\t\t\t\t<div className=\"block-editor-inserter__quick-inserter-separator\" />\n\t\t\t\t) }\n\n\t\t\t{ prioritizePatterns ? blocksUI : patternsUI }\n\n\t\t\t{ showBlockDirectory && (\n\t\t\t\t<__unstableInserterMenuExtension.Slot\n\t\t\t\t\tfillProps={ {\n\t\t\t\t\t\tonSelect: onSelectBlockType,\n\t\t\t\t\t\tonHover,\n\t\t\t\t\t\tfilterValue,\n\t\t\t\t\t\thasItems,\n\t\t\t\t\t\trootClientId: destinationRootClientId,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ ( fills ) => {\n\t\t\t\t\t\tif ( fills.length ) {\n\t\t\t\t\t\t\treturn fills;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( ! hasItems ) {\n\t\t\t\t\t\t\treturn <InserterNoResults />;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t} }\n\t\t\t\t</__unstableInserterMenuExtension.Slot>\n\t\t\t) }\n\t\t</InserterListbox>\n\t);\n}\n\nexport default InserterSearchResults;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_element","require","_i18n","_components","_compose","_a11y","_data","_blockTypesList","_interopRequireDefault","_blockPatternsList","_inserterMenuExtension","_panel","_noResults","_useInsertionPoint","_usePatternsState","_useBlockTypesState","_searchItems","_inserterListbox","_sorting","_orderInserterBlockItems","_store","INITIAL_INSERTER_RESULTS","EMPTY_ARRAY","InserterSearchResults","filterValue","onSelect","onHover","onHoverPattern","rootClientId","clientId","isAppender","__experimentalInsertionIndex","maxBlockPatterns","maxBlockTypes","showBlockDirectory","isDraggable","shouldFocusBlock","prioritizePatterns","selectBlockOnInsert","debouncedSpeak","useDebounce","speak","prioritizedBlocks","useSelect","select","blockListSettings","blockEditorStore","getBlockListSettings","prioritizedInserterBlocks","destinationRootClientId","onInsertBlocks","useInsertionPoint","insertionIndex","blockTypes","blockTypeCategories","blockTypeCollections","onSelectBlockType","useBlockTypesState","patterns","onClickPattern","usePatternsState","filteredBlockPatterns","useMemo","results","searchItems","undefined","slice","maxBlockTypesToShow","length","filteredBlockTypes","nonPatternBlockTypes","filter","blockType","name","orderedItems","orderBy","orderInserterBlockItems","searchBlockItems","useEffect","count","resultsFoundMessage","sprintf","_n","currentShownBlockTypes","useAsyncList","step","currentShownPatterns","hasItems","blocksUI","createElement","default","title","VisuallyHidden","__","items","label","patternsUI","className","shownPatterns","blockPatterns","Slot","fillProps","fills","_default","exports"],"sources":["@wordpress/block-editor/src/components/inserter/search-results.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useEffect } from '@wordpress/element';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { VisuallyHidden } from '@wordpress/components';\nimport { useDebounce, useAsyncList } from '@wordpress/compose';\nimport { speak } from '@wordpress/a11y';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport BlockTypesList from '../block-types-list';\nimport BlockPatternsList from '../block-patterns-list';\nimport __unstableInserterMenuExtension from '../inserter-menu-extension';\nimport InserterPanel from './panel';\nimport InserterNoResults from './no-results';\nimport useInsertionPoint from './hooks/use-insertion-point';\nimport usePatternsState from './hooks/use-patterns-state';\nimport useBlockTypesState from './hooks/use-block-types-state';\nimport { searchBlockItems, searchItems } from './search-items';\nimport InserterListbox from '../inserter-listbox';\nimport { orderBy } from '../../utils/sorting';\nimport { orderInserterBlockItems } from '../../utils/order-inserter-block-items';\nimport { store as blockEditorStore } from '../../store';\n\nconst INITIAL_INSERTER_RESULTS = 9;\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation and rerendering the component.\n *\n * @type {Array}\n */\nconst EMPTY_ARRAY = [];\n\nfunction InserterSearchResults( {\n\tfilterValue,\n\tonSelect,\n\tonHover,\n\tonHoverPattern,\n\trootClientId,\n\tclientId,\n\tisAppender,\n\t__experimentalInsertionIndex,\n\tmaxBlockPatterns,\n\tmaxBlockTypes,\n\tshowBlockDirectory = false,\n\tisDraggable = true,\n\tshouldFocusBlock = true,\n\tprioritizePatterns,\n\tselectBlockOnInsert,\n} ) {\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\n\tconst { prioritizedBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst blockListSettings =\n\t\t\t\tselect( blockEditorStore ).getBlockListSettings( rootClientId );\n\n\t\t\treturn {\n\t\t\t\tprioritizedBlocks:\n\t\t\t\t\tblockListSettings?.prioritizedInserterBlocks || EMPTY_ARRAY,\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\n\tconst [ destinationRootClientId, onInsertBlocks ] = useInsertionPoint( {\n\t\tonSelect,\n\t\trootClientId,\n\t\tclientId,\n\t\tisAppender,\n\t\tinsertionIndex: __experimentalInsertionIndex,\n\t\tshouldFocusBlock,\n\t\tselectBlockOnInsert,\n\t} );\n\tconst [\n\t\tblockTypes,\n\t\tblockTypeCategories,\n\t\tblockTypeCollections,\n\t\tonSelectBlockType,\n\t] = useBlockTypesState( destinationRootClientId, onInsertBlocks );\n\tconst [ patterns, , onClickPattern ] = usePatternsState(\n\t\tonInsertBlocks,\n\t\tdestinationRootClientId\n\t);\n\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\tif ( maxBlockPatterns === 0 ) {\n\t\t\treturn [];\n\t\t}\n\t\tconst results = searchItems( patterns, filterValue );\n\t\treturn maxBlockPatterns !== undefined\n\t\t\t? results.slice( 0, maxBlockPatterns )\n\t\t\t: results;\n\t}, [ filterValue, patterns, maxBlockPatterns ] );\n\n\tlet maxBlockTypesToShow = maxBlockTypes;\n\tif ( prioritizePatterns && filteredBlockPatterns.length > 2 ) {\n\t\tmaxBlockTypesToShow = 0;\n\t}\n\n\tconst filteredBlockTypes = useMemo( () => {\n\t\tif ( maxBlockTypesToShow === 0 ) {\n\t\t\treturn [];\n\t\t}\n\t\tconst nonPatternBlockTypes = blockTypes.filter(\n\t\t\t( blockType ) => blockType.name !== 'core/block'\n\t\t);\n\t\tlet orderedItems = orderBy( nonPatternBlockTypes, 'frecency', 'desc' );\n\n\t\tif ( ! filterValue && prioritizedBlocks.length ) {\n\t\t\torderedItems = orderInserterBlockItems(\n\t\t\t\torderedItems,\n\t\t\t\tprioritizedBlocks\n\t\t\t);\n\t\t}\n\n\t\tconst results = searchBlockItems(\n\t\t\torderedItems,\n\t\t\tblockTypeCategories,\n\t\t\tblockTypeCollections,\n\t\t\tfilterValue\n\t\t);\n\n\t\treturn maxBlockTypesToShow !== undefined\n\t\t\t? results.slice( 0, maxBlockTypesToShow )\n\t\t\t: results;\n\t}, [\n\t\tfilterValue,\n\t\tblockTypes,\n\t\tblockTypeCategories,\n\t\tblockTypeCollections,\n\t\tmaxBlockTypesToShow,\n\t\tprioritizedBlocks,\n\t] );\n\n\t// Announce search results on change.\n\tuseEffect( () => {\n\t\tif ( ! filterValue ) {\n\t\t\treturn;\n\t\t}\n\t\tconst count = filteredBlockTypes.length + filteredBlockPatterns.length;\n\t\tconst resultsFoundMessage = sprintf(\n\t\t\t/* translators: %d: number of results. */\n\t\t\t_n( '%d result found.', '%d results found.', count ),\n\t\t\tcount\n\t\t);\n\t\tdebouncedSpeak( resultsFoundMessage );\n\t}, [\n\t\tfilterValue,\n\t\tdebouncedSpeak,\n\t\tfilteredBlockTypes,\n\t\tfilteredBlockPatterns,\n\t] );\n\n\tconst currentShownBlockTypes = useAsyncList( filteredBlockTypes, {\n\t\tstep: INITIAL_INSERTER_RESULTS,\n\t} );\n\tconst currentShownPatterns = useAsyncList(\n\t\tcurrentShownBlockTypes.length === filteredBlockTypes.length\n\t\t\t? filteredBlockPatterns\n\t\t\t: EMPTY_ARRAY\n\t);\n\n\tconst hasItems =\n\t\tfilteredBlockTypes.length > 0 || filteredBlockPatterns.length > 0;\n\n\tconst blocksUI = !! filteredBlockTypes.length && (\n\t\t<InserterPanel\n\t\t\ttitle={ <VisuallyHidden>{ __( 'Blocks' ) }</VisuallyHidden> }\n\t\t>\n\t\t\t<BlockTypesList\n\t\t\t\titems={ currentShownBlockTypes }\n\t\t\t\tonSelect={ onSelectBlockType }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tlabel={ __( 'Blocks' ) }\n\t\t\t\tisDraggable={ isDraggable }\n\t\t\t/>\n\t\t</InserterPanel>\n\t);\n\n\tconst patternsUI = !! filteredBlockPatterns.length && (\n\t\t<InserterPanel\n\t\t\ttitle={\n\t\t\t\t<VisuallyHidden>{ __( 'Block patterns' ) }</VisuallyHidden>\n\t\t\t}\n\t\t>\n\t\t\t<div className=\"block-editor-inserter__quick-inserter-patterns\">\n\t\t\t\t<BlockPatternsList\n\t\t\t\t\tshownPatterns={ currentShownPatterns }\n\t\t\t\t\tblockPatterns={ filteredBlockPatterns }\n\t\t\t\t\tonClickPattern={ onClickPattern }\n\t\t\t\t\tonHover={ onHoverPattern }\n\t\t\t\t\tisDraggable={ isDraggable }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</InserterPanel>\n\t);\n\n\treturn (\n\t\t<InserterListbox>\n\t\t\t{ ! showBlockDirectory && ! hasItems && <InserterNoResults /> }\n\n\t\t\t{ prioritizePatterns ? patternsUI : blocksUI }\n\n\t\t\t{ !! filteredBlockTypes.length &&\n\t\t\t\t!! filteredBlockPatterns.length && (\n\t\t\t\t\t<div className=\"block-editor-inserter__quick-inserter-separator\" />\n\t\t\t\t) }\n\n\t\t\t{ prioritizePatterns ? blocksUI : patternsUI }\n\n\t\t\t{ showBlockDirectory && (\n\t\t\t\t<__unstableInserterMenuExtension.Slot\n\t\t\t\t\tfillProps={ {\n\t\t\t\t\t\tonSelect: onSelectBlockType,\n\t\t\t\t\t\tonHover,\n\t\t\t\t\t\tfilterValue,\n\t\t\t\t\t\thasItems,\n\t\t\t\t\t\trootClientId: destinationRootClientId,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ ( fills ) => {\n\t\t\t\t\t\tif ( fills.length ) {\n\t\t\t\t\t\t\treturn fills;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( ! hasItems ) {\n\t\t\t\t\t\t\treturn <InserterNoResults />;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t} }\n\t\t\t\t</__unstableInserterMenuExtension.Slot>\n\t\t\t) }\n\t\t</InserterListbox>\n\t);\n}\n\nexport default InserterSearchResults;\n"],"mappings":"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"}
@@ -37,7 +37,7 @@ const StylesTab = ({
37
37
  className: "color-block-support-panel__inner-wrapper"
38
38
  }), (0, _element.createElement)(_inspectorControls.default.Slot, {
39
39
  group: "background",
40
- label: (0, _i18n.__)('Background image')
40
+ label: (0, _i18n.__)('Background')
41
41
  }), (0, _element.createElement)(_inspectorControls.default.Slot, {
42
42
  group: "filter"
43
43
  }), (0, _element.createElement)(_inspectorControls.default.Slot, {
@@ -1 +1 @@
1
- {"version":3,"names":["_blocks","require","_components","_i18n","_blockStyles","_interopRequireDefault","_defaultStylePicker","_inspectorControls","StylesTab","blockName","clientId","hasBlockStyles","_element","createElement","Fragment","PanelBody","title","__","default","hasBlockSupport","Slot","group","label","className","_default","exports"],"sources":["@wordpress/block-editor/src/components/inspector-controls-tabs/styles-tab.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport { PanelBody } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BlockStyles from '../block-styles';\nimport DefaultStylePicker from '../default-style-picker';\nimport InspectorControls from '../inspector-controls';\n\nconst StylesTab = ( { blockName, clientId, hasBlockStyles } ) => {\n\treturn (\n\t\t<>\n\t\t\t{ hasBlockStyles && (\n\t\t\t\t<div>\n\t\t\t\t\t<PanelBody title={ __( 'Styles' ) }>\n\t\t\t\t\t\t<BlockStyles clientId={ clientId } />\n\t\t\t\t\t\t{ hasBlockSupport(\n\t\t\t\t\t\t\tblockName,\n\t\t\t\t\t\t\t'defaultStylePicker',\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t) && <DefaultStylePicker blockName={ blockName } /> }\n\t\t\t\t\t</PanelBody>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<InspectorControls.Slot\n\t\t\t\tgroup=\"color\"\n\t\t\t\tlabel={ __( 'Color' ) }\n\t\t\t\tclassName=\"color-block-support-panel__inner-wrapper\"\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\tgroup=\"background\"\n\t\t\t\tlabel={ __( 'Background image' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot group=\"filter\" />\n\t\t\t<InspectorControls.Slot\n\t\t\t\tgroup=\"typography\"\n\t\t\t\tlabel={ __( 'Typography' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\tgroup=\"dimensions\"\n\t\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot group=\"border\" label={ __( 'Border' ) } />\n\t\t\t<InspectorControls.Slot group=\"styles\" />\n\t\t</>\n\t);\n};\n\nexport default StylesTab;\n"],"mappings":";;;;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAKA,IAAAG,YAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,mBAAA,GAAAD,sBAAA,CAAAJ,OAAA;AACA,IAAAM,kBAAA,GAAAF,sBAAA,CAAAJ,OAAA;AAZA;AACA;AACA;;AAKA;AACA;AACA;;AAKA,MAAMO,SAAS,GAAGA,CAAE;EAAEC,SAAS;EAAEC,QAAQ;EAAEC;AAAe,CAAC,KAAM;EAChE,OACC,IAAAC,QAAA,CAAAC,aAAA,EAAAD,QAAA,CAAAE,QAAA,QACGH,cAAc,IACf,IAAAC,QAAA,CAAAC,aAAA,eACC,IAAAD,QAAA,CAAAC,aAAA,EAACX,WAAA,CAAAa,SAAS;IAACC,KAAK,EAAG,IAAAC,QAAE,EAAE,QAAS;EAAG,GAClC,IAAAL,QAAA,CAAAC,aAAA,EAACT,YAAA,CAAAc,OAAW;IAACR,QAAQ,EAAGA;EAAU,CAAE,CAAC,EACnC,IAAAS,uBAAe,EAChBV,SAAS,EACT,oBAAoB,EACpB,IACD,CAAC,IAAI,IAAAG,QAAA,CAAAC,aAAA,EAACP,mBAAA,CAAAY,OAAkB;IAACT,SAAS,EAAGA;EAAW,CAAE,CACxC,CACP,CACL,EACD,IAAAG,QAAA,CAAAC,aAAA,EAACN,kBAAA,CAAAW,OAAiB,CAACE,IAAI;IACtBC,KAAK,EAAC,OAAO;IACbC,KAAK,EAAG,IAAAL,QAAE,EAAE,OAAQ,CAAG;IACvBM,SAAS,EAAC;EAA0C,CACpD,CAAC,EACF,IAAAX,QAAA,CAAAC,aAAA,EAACN,kBAAA,CAAAW,OAAiB,CAACE,IAAI;IACtBC,KAAK,EAAC,YAAY;IAClBC,KAAK,EAAG,IAAAL,QAAE,EAAE,kBAAmB;EAAG,CAClC,CAAC,EACF,IAAAL,QAAA,CAAAC,aAAA,EAACN,kBAAA,CAAAW,OAAiB,CAACE,IAAI;IAACC,KAAK,EAAC;EAAQ,CAAE,CAAC,EACzC,IAAAT,QAAA,CAAAC,aAAA,EAACN,kBAAA,CAAAW,OAAiB,CAACE,IAAI;IACtBC,KAAK,EAAC,YAAY;IAClBC,KAAK,EAAG,IAAAL,QAAE,EAAE,YAAa;EAAG,CAC5B,CAAC,EACF,IAAAL,QAAA,CAAAC,aAAA,EAACN,kBAAA,CAAAW,OAAiB,CAACE,IAAI;IACtBC,KAAK,EAAC,YAAY;IAClBC,KAAK,EAAG,IAAAL,QAAE,EAAE,YAAa;EAAG,CAC5B,CAAC,EACF,IAAAL,QAAA,CAAAC,aAAA,EAACN,kBAAA,CAAAW,OAAiB,CAACE,IAAI;IAACC,KAAK,EAAC,QAAQ;IAACC,KAAK,EAAG,IAAAL,QAAE,EAAE,QAAS;EAAG,CAAE,CAAC,EAClE,IAAAL,QAAA,CAAAC,aAAA,EAACN,kBAAA,CAAAW,OAAiB,CAACE,IAAI;IAACC,KAAK,EAAC;EAAQ,CAAE,CACvC,CAAC;AAEL,CAAC;AAAC,IAAAG,QAAA,GAEahB,SAAS;AAAAiB,OAAA,CAAAP,OAAA,GAAAM,QAAA"}
1
+ {"version":3,"names":["_blocks","require","_components","_i18n","_blockStyles","_interopRequireDefault","_defaultStylePicker","_inspectorControls","StylesTab","blockName","clientId","hasBlockStyles","_element","createElement","Fragment","PanelBody","title","__","default","hasBlockSupport","Slot","group","label","className","_default","exports"],"sources":["@wordpress/block-editor/src/components/inspector-controls-tabs/styles-tab.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport { PanelBody } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport BlockStyles from '../block-styles';\nimport DefaultStylePicker from '../default-style-picker';\nimport InspectorControls from '../inspector-controls';\n\nconst StylesTab = ( { blockName, clientId, hasBlockStyles } ) => {\n\treturn (\n\t\t<>\n\t\t\t{ hasBlockStyles && (\n\t\t\t\t<div>\n\t\t\t\t\t<PanelBody title={ __( 'Styles' ) }>\n\t\t\t\t\t\t<BlockStyles clientId={ clientId } />\n\t\t\t\t\t\t{ hasBlockSupport(\n\t\t\t\t\t\t\tblockName,\n\t\t\t\t\t\t\t'defaultStylePicker',\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t) && <DefaultStylePicker blockName={ blockName } /> }\n\t\t\t\t\t</PanelBody>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<InspectorControls.Slot\n\t\t\t\tgroup=\"color\"\n\t\t\t\tlabel={ __( 'Color' ) }\n\t\t\t\tclassName=\"color-block-support-panel__inner-wrapper\"\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\tgroup=\"background\"\n\t\t\t\tlabel={ __( 'Background' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot group=\"filter\" />\n\t\t\t<InspectorControls.Slot\n\t\t\t\tgroup=\"typography\"\n\t\t\t\tlabel={ __( 'Typography' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\tgroup=\"dimensions\"\n\t\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot group=\"border\" label={ __( 'Border' ) } />\n\t\t\t<InspectorControls.Slot group=\"styles\" />\n\t\t</>\n\t);\n};\n\nexport default StylesTab;\n"],"mappings":";;;;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAKA,IAAAG,YAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,mBAAA,GAAAD,sBAAA,CAAAJ,OAAA;AACA,IAAAM,kBAAA,GAAAF,sBAAA,CAAAJ,OAAA;AAZA;AACA;AACA;;AAKA;AACA;AACA;;AAKA,MAAMO,SAAS,GAAGA,CAAE;EAAEC,SAAS;EAAEC,QAAQ;EAAEC;AAAe,CAAC,KAAM;EAChE,OACC,IAAAC,QAAA,CAAAC,aAAA,EAAAD,QAAA,CAAAE,QAAA,QACGH,cAAc,IACf,IAAAC,QAAA,CAAAC,aAAA,eACC,IAAAD,QAAA,CAAAC,aAAA,EAACX,WAAA,CAAAa,SAAS;IAACC,KAAK,EAAG,IAAAC,QAAE,EAAE,QAAS;EAAG,GAClC,IAAAL,QAAA,CAAAC,aAAA,EAACT,YAAA,CAAAc,OAAW;IAACR,QAAQ,EAAGA;EAAU,CAAE,CAAC,EACnC,IAAAS,uBAAe,EAChBV,SAAS,EACT,oBAAoB,EACpB,IACD,CAAC,IAAI,IAAAG,QAAA,CAAAC,aAAA,EAACP,mBAAA,CAAAY,OAAkB;IAACT,SAAS,EAAGA;EAAW,CAAE,CACxC,CACP,CACL,EACD,IAAAG,QAAA,CAAAC,aAAA,EAACN,kBAAA,CAAAW,OAAiB,CAACE,IAAI;IACtBC,KAAK,EAAC,OAAO;IACbC,KAAK,EAAG,IAAAL,QAAE,EAAE,OAAQ,CAAG;IACvBM,SAAS,EAAC;EAA0C,CACpD,CAAC,EACF,IAAAX,QAAA,CAAAC,aAAA,EAACN,kBAAA,CAAAW,OAAiB,CAACE,IAAI;IACtBC,KAAK,EAAC,YAAY;IAClBC,KAAK,EAAG,IAAAL,QAAE,EAAE,YAAa;EAAG,CAC5B,CAAC,EACF,IAAAL,QAAA,CAAAC,aAAA,EAACN,kBAAA,CAAAW,OAAiB,CAACE,IAAI;IAACC,KAAK,EAAC;EAAQ,CAAE,CAAC,EACzC,IAAAT,QAAA,CAAAC,aAAA,EAACN,kBAAA,CAAAW,OAAiB,CAACE,IAAI;IACtBC,KAAK,EAAC,YAAY;IAClBC,KAAK,EAAG,IAAAL,QAAE,EAAE,YAAa;EAAG,CAC5B,CAAC,EACF,IAAAL,QAAA,CAAAC,aAAA,EAACN,kBAAA,CAAAW,OAAiB,CAACE,IAAI;IACtBC,KAAK,EAAC,YAAY;IAClBC,KAAK,EAAG,IAAAL,QAAE,EAAE,YAAa;EAAG,CAC5B,CAAC,EACF,IAAAL,QAAA,CAAAC,aAAA,EAACN,kBAAA,CAAAW,OAAiB,CAACE,IAAI;IAACC,KAAK,EAAC,QAAQ;IAACC,KAAK,EAAG,IAAAL,QAAE,EAAE,QAAS;EAAG,CAAE,CAAC,EAClE,IAAAL,QAAA,CAAAC,aAAA,EAACN,kBAAA,CAAAW,OAAiB,CAACE,IAAI;IAACC,KAAK,EAAC;EAAQ,CAAE,CACvC,CAAC;AAEL,CAAC;AAAC,IAAAG,QAAA,GAEahB,SAAS;AAAAiB,OAAA,CAAAP,OAAA,GAAAM,QAAA"}
@@ -11,6 +11,7 @@ exports.hasBackgroundImageValue = hasBackgroundImageValue;
11
11
  exports.hasBackgroundSupport = hasBackgroundSupport;
12
12
  exports.resetBackgroundImage = resetBackgroundImage;
13
13
  var _element = require("@wordpress/element");
14
+ var _classnames = _interopRequireDefault(require("classnames"));
14
15
  var _blob = require("@wordpress/blob");
15
16
  var _blocks = require("@wordpress/blocks");
16
17
  var _components = require("@wordpress/components");
@@ -20,11 +21,13 @@ var _notices = require("@wordpress/notices");
20
21
  var _url = require("@wordpress/url");
21
22
  var _inspectorControls = _interopRequireDefault(require("../components/inspector-controls"));
22
23
  var _mediaReplaceFlow = _interopRequireDefault(require("../components/media-replace-flow"));
23
- var _mediaUpload = _interopRequireDefault(require("../components/media-upload"));
24
- var _check = _interopRequireDefault(require("../components/media-upload/check"));
25
24
  var _useSetting = _interopRequireDefault(require("../components/use-setting"));
26
25
  var _utils = require("./utils");
27
26
  var _store = require("../store");
27
+ /**
28
+ * External dependencies
29
+ */
30
+
28
31
  /**
29
32
  * WordPress dependencies
30
33
  */
@@ -99,6 +102,7 @@ function resetBackgroundImage({
99
102
  }
100
103
  function InspectorImagePreview({
101
104
  label,
105
+ filename,
102
106
  url: imgUrl
103
107
  }) {
104
108
  const imgLabel = label || (0, _url.getFilename)(imgUrl);
@@ -107,15 +111,25 @@ function InspectorImagePreview({
107
111
  }, (0, _element.createElement)(_components.__experimentalHStack, {
108
112
  justify: "flex-start",
109
113
  as: "span"
110
- }, (0, _element.createElement)("img", {
111
- src: imgUrl,
112
- alt: ""
113
- }), (0, _element.createElement)(_components.FlexItem, {
114
+ }, (0, _element.createElement)("span", {
115
+ className: (0, _classnames.default)('block-editor-hooks__background__inspector-image-indicator-wrapper', {
116
+ 'has-image': imgUrl
117
+ }),
118
+ "aria-hidden": true
119
+ }, imgUrl && (0, _element.createElement)("span", {
120
+ className: "block-editor-hooks__background__inspector-image-indicator",
121
+ style: {
122
+ backgroundImage: `url(${imgUrl})`
123
+ }
124
+ })), (0, _element.createElement)(_components.FlexItem, {
114
125
  as: "span"
115
126
  }, (0, _element.createElement)(_components.__experimentalTruncate, {
116
127
  numberOfLines: 1,
117
128
  className: "block-editor-hooks__background__inspector-media-replace-title"
118
- }, imgLabel))));
129
+ }, imgLabel), (0, _element.createElement)(_components.VisuallyHidden, {
130
+ as: "span"
131
+ }, filename ? (0, _i18n.sprintf)( /* translators: %s: file name */
132
+ (0, _i18n.__)('Selected image: %s'), filename) : (0, _i18n.__)('No image selected')))));
119
133
  }
120
134
  function BackgroundImagePanelItem(props) {
121
135
  const {
@@ -216,33 +230,24 @@ function BackgroundImagePanelItem(props) {
216
230
  panelId: clientId
217
231
  }, (0, _element.createElement)("div", {
218
232
  className: "block-editor-hooks__background__inspector-media-replace-container"
219
- }, !!url && (0, _element.createElement)(_mediaReplaceFlow.default, {
233
+ }, (0, _element.createElement)(_mediaReplaceFlow.default, {
220
234
  mediaId: id,
221
235
  mediaURL: url,
222
236
  allowedTypes: [IMAGE_BACKGROUND_TYPE],
223
237
  accept: "image/*",
224
238
  onSelect: onSelectMedia,
225
239
  name: (0, _element.createElement)(InspectorImagePreview, {
226
- label: title,
240
+ label: (0, _i18n.__)('Background image'),
241
+ filename: title,
227
242
  url: url
228
243
  }),
229
244
  variant: "secondary"
230
245
  }, (0, _element.createElement)(_components.MenuItem, {
231
246
  onClick: () => resetBackgroundImage(props)
232
- }, (0, _i18n.__)('Reset '))), !url && (0, _element.createElement)(_check.default, null, (0, _element.createElement)(_mediaUpload.default, {
233
- onSelect: onSelectMedia,
234
- allowedTypes: [IMAGE_BACKGROUND_TYPE],
235
- render: ({
236
- open
237
- }) => (0, _element.createElement)("div", {
238
- className: "block-editor-hooks__background__inspector-upload-container"
239
- }, (0, _element.createElement)(_components.Button, {
240
- onClick: open,
241
- variant: "secondary"
242
- }, (0, _i18n.__)('Add background image')), (0, _element.createElement)(_components.DropZone, {
243
- onFilesDrop: onFilesDrop
244
- }))
245
- }))));
247
+ }, (0, _i18n.__)('Reset '))), (0, _element.createElement)(_components.DropZone, {
248
+ onFilesDrop: onFilesDrop,
249
+ label: (0, _i18n.__)('Drop to upload')
250
+ })));
246
251
  }
247
252
  function BackgroundImagePanel(props) {
248
253
  const isBackgroundImageSupported = (0, _useSetting.default)('background.backgroundImage') && hasBackgroundSupport(props.name, 'backgroundImage');