@wordpress/block-editor 12.10.0 → 12.10.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.
- package/build/components/block-patterns-list/index.js +9 -4
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-patterns-paging/index.js +3 -1
- package/build/components/block-patterns-paging/index.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/patterns-list.js +19 -30
- package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/sidebar.js +0 -15
- package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
- package/build/components/inserter/block-patterns-filter.js +137 -0
- package/build/components/inserter/block-patterns-filter.js.map +1 -0
- package/build/components/inserter/block-patterns-tab.js +77 -37
- package/build/components/inserter/block-patterns-tab.js.map +1 -1
- package/build/components/inserter/hooks/use-patterns-paging.js +4 -0
- package/build/components/inserter/hooks/use-patterns-paging.js.map +1 -1
- package/build/components/inspector-controls-tabs/styles-tab.js +1 -1
- package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
- package/build/hooks/background.js +28 -23
- package/build/hooks/background.js.map +1 -1
- package/build/hooks/block-rename-ui.js +2 -1
- package/build/hooks/block-rename-ui.js.map +1 -1
- package/build/store/private-selectors.js +2 -3
- package/build/store/private-selectors.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +10 -5
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-patterns-paging/index.js +3 -1
- package/build-module/components/block-patterns-paging/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +20 -31
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/sidebar.js +0 -14
- package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
- package/build-module/components/inserter/block-patterns-filter.js +128 -0
- package/build-module/components/inserter/block-patterns-filter.js.map +1 -0
- package/build-module/components/inserter/block-patterns-tab.js +75 -35
- package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
- package/build-module/components/inserter/hooks/use-patterns-paging.js +5 -1
- package/build-module/components/inserter/hooks/use-patterns-paging.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/styles-tab.js +1 -1
- package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
- package/build-module/hooks/background.js +30 -25
- package/build-module/hooks/background.js.map +1 -1
- package/build-module/hooks/block-rename-ui.js +2 -1
- package/build-module/hooks/block-rename-ui.js.map +1 -1
- package/build-module/store/private-selectors.js +2 -3
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-style/style-rtl.css +53 -26
- package/build-style/style.css +53 -26
- package/package.json +32 -32
- package/src/components/block-patterns-list/index.js +21 -12
- package/src/components/block-patterns-paging/index.js +1 -1
- package/src/components/block-patterns-paging/style.scss +16 -13
- package/src/components/inserter/block-patterns-explorer/patterns-list.js +23 -67
- package/src/components/inserter/block-patterns-explorer/sidebar.js +0 -15
- package/src/components/inserter/block-patterns-filter.js +183 -0
- package/src/components/inserter/block-patterns-tab.js +106 -58
- package/src/components/inserter/hooks/use-patterns-paging.js +12 -1
- package/src/components/inserter/style.scss +13 -5
- package/src/components/inspector-controls-tabs/styles-tab.js +1 -1
- package/src/hooks/background.js +57 -46
- package/src/hooks/background.scss +36 -18
- package/src/hooks/block-rename-ui.js +1 -0
- package/src/store/private-selectors.js +7 -3
- package/build/components/inserter/block-patterns-source-filter.js +0 -54
- package/build/components/inserter/block-patterns-source-filter.js.map +0 -1
- package/build/components/inserter/block-patterns-sync-filter.js +0 -46
- package/build/components/inserter/block-patterns-sync-filter.js.map +0 -1
- package/build-module/components/inserter/block-patterns-source-filter.js +0 -44
- package/build-module/components/inserter/block-patterns-source-filter.js.map +0 -1
- package/build-module/components/inserter/block-patterns-sync-filter.js +0 -38
- package/build-module/components/inserter/block-patterns-sync-filter.js.map +0 -1
- package/src/components/inserter/block-patterns-source-filter.js +0 -40
- 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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
66
|
+
|
|
67
|
+
// Filter by sync status.
|
|
68
|
+
if (syncFilter === _blockPatternsFilter.SYNC_TYPES.full && pattern.syncStatus !== '') {
|
|
51
69
|
return true;
|
|
52
70
|
}
|
|
53
|
-
if (
|
|
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
|
|
128
|
-
const
|
|
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,
|
|
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,
|
|
146
|
-
const pagingProps = (0, _usePatternsPaging.default)(currentCategoryPatterns, category,
|
|
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
|
-
|
|
154
|
-
|
|
155
|
-
className: "block-editor-inserter__patterns-category-panel-
|
|
156
|
-
},
|
|
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
|
-
|
|
159
|
-
|
|
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:
|
|
170
|
-
|
|
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
|
|
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)(
|
|
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
|
|
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;
|
|
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"}
|
|
@@ -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
|
|
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
|
|
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)("
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
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
|
-
},
|
|
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:
|
|
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 '))),
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
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');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_element","require","_blob","_blocks","_components","_data","_i18n","_notices","_url","_inspectorControls","_interopRequireDefault","_mediaReplaceFlow","_mediaUpload","_check","_useSetting","_utils","_store","BACKGROUND_SUPPORT_KEY","exports","IMAGE_BACKGROUND_TYPE","hasBackgroundImageValue","props","hasValue","attributes","style","background","backgroundImage","id","url","hasBackgroundSupport","blockName","feature","Platform","OS","support","getBlockSupport","resetBackgroundImage","setAttributes","cleanEmptyObject","undefined","InspectorImagePreview","label","imgUrl","imgLabel","getFilename","createElement","__experimentalItemGroup","as","__experimentalHStack","justify","src","alt","FlexItem","__experimentalTruncate","numberOfLines","className","BackgroundImagePanelItem","clientId","title","mediaUpload","useSelect","select","blockEditorStore","getSettings","createErrorNotice","useDispatch","noticesStore","onUploadError","message","type","onSelectMedia","media","newStyle","newAttributes","isBlobURL","media_type","__","source","onFilesDrop","filesList","allowedTypes","onFileChange","image","onError","resetAllFilter","useCallback","previousValue","__experimentalToolsPanelItem","onDeselect","isShownByDefault","panelId","default","mediaId","mediaURL","accept","onSelect","name","variant","MenuItem","onClick","render","open","Button","DropZone","BackgroundImagePanel","isBackgroundImageSupported","useSetting","group"],"sources":["@wordpress/block-editor/src/hooks/background.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { isBlobURL } from '@wordpress/blob';\nimport { getBlockSupport } from '@wordpress/blocks';\nimport {\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tButton,\n\tDropZone,\n\tFlexItem,\n\tMenuItem,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { Platform, useCallback } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { getFilename } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport InspectorControls from '../components/inspector-controls';\nimport MediaReplaceFlow from '../components/media-replace-flow';\nimport MediaUpload from '../components/media-upload';\nimport MediaUploadCheck from '../components/media-upload/check';\nimport useSetting from '../components/use-setting';\nimport { cleanEmptyObject } from './utils';\nimport { store as blockEditorStore } from '../store';\n\nexport const BACKGROUND_SUPPORT_KEY = 'background';\nexport const IMAGE_BACKGROUND_TYPE = 'image';\n\n/**\n * Checks if there is a current value in the background image block support\n * attributes.\n *\n * @param {Object} props Block props.\n * @return {boolean} Whether or not the block has a background image value set.\n */\nexport function hasBackgroundImageValue( props ) {\n\tconst hasValue =\n\t\t!! props.attributes.style?.background?.backgroundImage?.id ||\n\t\t!! props.attributes.style?.background?.backgroundImage?.url;\n\n\treturn hasValue;\n}\n\n/**\n * Determine whether there is block support for background.\n *\n * @param {string} blockName Block name.\n * @param {string} feature Background image feature to check for.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasBackgroundSupport( blockName, feature = 'any' ) {\n\tif ( Platform.OS !== 'web' ) {\n\t\treturn false;\n\t}\n\n\tconst support = getBlockSupport( blockName, BACKGROUND_SUPPORT_KEY );\n\n\tif ( support === true ) {\n\t\treturn true;\n\t}\n\n\tif ( feature === 'any' ) {\n\t\treturn !! support?.backgroundImage;\n\t}\n\n\treturn !! support?.[ feature ];\n}\n\n/**\n * Resets the background image block support attributes. This can be used when disabling\n * the background image controls for a block via a `ToolsPanel`.\n *\n * @param {Object} props Block props.\n * @param {Object} props.attributes Block's attributes.\n * @param {Object} props.setAttributes Function to set block's attributes.\n */\nexport function resetBackgroundImage( { attributes = {}, setAttributes } ) {\n\tconst { style = {} } = attributes;\n\n\tsetAttributes( {\n\t\tstyle: cleanEmptyObject( {\n\t\t\t...style,\n\t\t\tbackground: {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundImage: undefined,\n\t\t\t},\n\t\t} ),\n\t} );\n}\n\nfunction InspectorImagePreview( { label, url: imgUrl } ) {\n\tconst imgLabel = label || getFilename( imgUrl );\n\treturn (\n\t\t<ItemGroup as=\"span\">\n\t\t\t<HStack justify=\"flex-start\" as=\"span\">\n\t\t\t\t<img src={ imgUrl } alt=\"\" />\n\t\t\t\t<FlexItem as=\"span\">\n\t\t\t\t\t<Truncate\n\t\t\t\t\t\tnumberOfLines={ 1 }\n\t\t\t\t\t\tclassName=\"block-editor-hooks__background__inspector-media-replace-title\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ imgLabel }\n\t\t\t\t\t</Truncate>\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t</ItemGroup>\n\t);\n}\n\nfunction BackgroundImagePanelItem( props ) {\n\tconst { attributes, clientId, setAttributes } = props;\n\n\tconst { id, title, url } =\n\t\tattributes.style?.background?.backgroundImage || {};\n\n\tconst { mediaUpload } = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tmediaUpload: select( blockEditorStore ).getSettings().mediaUpload,\n\t\t};\n\t} );\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t};\n\n\tconst onSelectMedia = ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tconst newStyle = {\n\t\t\t\t...attributes.style,\n\t\t\t\tbackground: {\n\t\t\t\t\t...attributes.style?.background,\n\t\t\t\t\tbackgroundImage: undefined,\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tconst newAttributes = {\n\t\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t\t};\n\n\t\t\tsetAttributes( newAttributes );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// For media selections originated from a file upload.\n\t\tif (\n\t\t\t( media.media_type &&\n\t\t\t\tmedia.media_type !== IMAGE_BACKGROUND_TYPE ) ||\n\t\t\t( ! media.media_type &&\n\t\t\t\tmedia.type &&\n\t\t\t\tmedia.type !== IMAGE_BACKGROUND_TYPE )\n\t\t) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only images can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst newStyle = {\n\t\t\t...attributes.style,\n\t\t\tbackground: {\n\t\t\t\t...attributes.style?.background,\n\t\t\t\tbackgroundImage: {\n\t\t\t\t\turl: media.url,\n\t\t\t\t\tid: media.id,\n\t\t\t\t\tsource: 'file',\n\t\t\t\t\ttitle: media.title || undefined,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\tconst newAttributes = {\n\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t};\n\n\t\tsetAttributes( newAttributes );\n\t};\n\n\tconst onFilesDrop = ( filesList ) => {\n\t\tmediaUpload( {\n\t\t\tallowedTypes: [ 'image' ],\n\t\t\tfilesList,\n\t\t\tonFileChange( [ image ] ) {\n\t\t\t\tif ( isBlobURL( image?.url ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tonSelectMedia( image );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tstyle: {\n\t\t\t\t...previousValue.style,\n\t\t\t\tbackground: undefined,\n\t\t\t},\n\t\t};\n\t}, [] );\n\n\treturn (\n\t\t<ToolsPanelItem\n\t\t\tclassName=\"single-column\"\n\t\t\thasValue={ () => hasBackgroundImageValue( props ) }\n\t\t\tlabel={ __( 'Background image' ) }\n\t\t\tonDeselect={ () => resetBackgroundImage( props ) }\n\t\t\tisShownByDefault={ true }\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tpanelId={ clientId }\n\t\t>\n\t\t\t<div className=\"block-editor-hooks__background__inspector-media-replace-container\">\n\t\t\t\t{ !! url && (\n\t\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\t\tmediaId={ id }\n\t\t\t\t\t\tmediaURL={ url }\n\t\t\t\t\t\tallowedTypes={ [ IMAGE_BACKGROUND_TYPE ] }\n\t\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\t\t\tname={\n\t\t\t\t\t\t\t<InspectorImagePreview\n\t\t\t\t\t\t\t\tlabel={ title }\n\t\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={ () => resetBackgroundImage( props ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Reset ' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t</MediaReplaceFlow>\n\t\t\t\t) }\n\t\t\t\t{ ! url && (\n\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\t\t\t\tallowedTypes={ [ IMAGE_BACKGROUND_TYPE ] }\n\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t<div className=\"block-editor-hooks__background__inspector-upload-container\">\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Add background image' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t<DropZone onFilesDrop={ onFilesDrop } />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</ToolsPanelItem>\n\t);\n}\n\nexport function BackgroundImagePanel( props ) {\n\tconst isBackgroundImageSupported =\n\t\tuseSetting( 'background.backgroundImage' ) &&\n\t\thasBackgroundSupport( props.name, 'backgroundImage' );\n\n\tif ( ! isBackgroundImageSupported ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<InspectorControls group=\"background\">\n\t\t\t{ isBackgroundImageSupported && (\n\t\t\t\t<BackgroundImagePanelItem { ...props } />\n\t\t\t) }\n\t\t</InspectorControls>\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_element","require","_classnames","_interopRequireDefault","_blob","_blocks","_components","_data","_i18n","_notices","_url","_inspectorControls","_mediaReplaceFlow","_useSetting","_utils","_store","BACKGROUND_SUPPORT_KEY","exports","IMAGE_BACKGROUND_TYPE","hasBackgroundImageValue","props","hasValue","attributes","style","background","backgroundImage","id","url","hasBackgroundSupport","blockName","feature","Platform","OS","support","getBlockSupport","resetBackgroundImage","setAttributes","cleanEmptyObject","undefined","InspectorImagePreview","label","filename","imgUrl","imgLabel","getFilename","createElement","__experimentalItemGroup","as","__experimentalHStack","justify","className","classnames","FlexItem","__experimentalTruncate","numberOfLines","VisuallyHidden","sprintf","__","BackgroundImagePanelItem","clientId","title","mediaUpload","useSelect","select","blockEditorStore","getSettings","createErrorNotice","useDispatch","noticesStore","onUploadError","message","type","onSelectMedia","media","newStyle","newAttributes","isBlobURL","media_type","source","onFilesDrop","filesList","allowedTypes","onFileChange","image","onError","resetAllFilter","useCallback","previousValue","__experimentalToolsPanelItem","onDeselect","isShownByDefault","panelId","default","mediaId","mediaURL","accept","onSelect","name","variant","MenuItem","onClick","DropZone","BackgroundImagePanel","isBackgroundImageSupported","useSetting","group"],"sources":["@wordpress/block-editor/src/hooks/background.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { isBlobURL } from '@wordpress/blob';\nimport { getBlockSupport } from '@wordpress/blocks';\nimport {\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tDropZone,\n\tFlexItem,\n\tMenuItem,\n\tVisuallyHidden,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { Platform, useCallback } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { getFilename } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport InspectorControls from '../components/inspector-controls';\nimport MediaReplaceFlow from '../components/media-replace-flow';\nimport useSetting from '../components/use-setting';\nimport { cleanEmptyObject } from './utils';\nimport { store as blockEditorStore } from '../store';\n\nexport const BACKGROUND_SUPPORT_KEY = 'background';\nexport const IMAGE_BACKGROUND_TYPE = 'image';\n\n/**\n * Checks if there is a current value in the background image block support\n * attributes.\n *\n * @param {Object} props Block props.\n * @return {boolean} Whether or not the block has a background image value set.\n */\nexport function hasBackgroundImageValue( props ) {\n\tconst hasValue =\n\t\t!! props.attributes.style?.background?.backgroundImage?.id ||\n\t\t!! props.attributes.style?.background?.backgroundImage?.url;\n\n\treturn hasValue;\n}\n\n/**\n * Determine whether there is block support for background.\n *\n * @param {string} blockName Block name.\n * @param {string} feature Background image feature to check for.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasBackgroundSupport( blockName, feature = 'any' ) {\n\tif ( Platform.OS !== 'web' ) {\n\t\treturn false;\n\t}\n\n\tconst support = getBlockSupport( blockName, BACKGROUND_SUPPORT_KEY );\n\n\tif ( support === true ) {\n\t\treturn true;\n\t}\n\n\tif ( feature === 'any' ) {\n\t\treturn !! support?.backgroundImage;\n\t}\n\n\treturn !! support?.[ feature ];\n}\n\n/**\n * Resets the background image block support attributes. This can be used when disabling\n * the background image controls for a block via a `ToolsPanel`.\n *\n * @param {Object} props Block props.\n * @param {Object} props.attributes Block's attributes.\n * @param {Object} props.setAttributes Function to set block's attributes.\n */\nexport function resetBackgroundImage( { attributes = {}, setAttributes } ) {\n\tconst { style = {} } = attributes;\n\n\tsetAttributes( {\n\t\tstyle: cleanEmptyObject( {\n\t\t\t...style,\n\t\t\tbackground: {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundImage: undefined,\n\t\t\t},\n\t\t} ),\n\t} );\n}\n\nfunction InspectorImagePreview( { label, filename, url: imgUrl } ) {\n\tconst imgLabel = label || getFilename( imgUrl );\n\treturn (\n\t\t<ItemGroup as=\"span\">\n\t\t\t<HStack justify=\"flex-start\" as=\"span\">\n\t\t\t\t<span\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'block-editor-hooks__background__inspector-image-indicator-wrapper',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'has-image': imgUrl,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t\taria-hidden\n\t\t\t\t>\n\t\t\t\t\t{ imgUrl && (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"block-editor-hooks__background__inspector-image-indicator\"\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\tbackgroundImage: `url(${ imgUrl })`,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</span>\n\t\t\t\t<FlexItem as=\"span\">\n\t\t\t\t\t<Truncate\n\t\t\t\t\t\tnumberOfLines={ 1 }\n\t\t\t\t\t\tclassName=\"block-editor-hooks__background__inspector-media-replace-title\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ imgLabel }\n\t\t\t\t\t</Truncate>\n\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t{ filename\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: file name */\n\t\t\t\t\t\t\t\t\t__( 'Selected image: %s' ),\n\t\t\t\t\t\t\t\t\tfilename\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __( 'No image selected' ) }\n\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t</ItemGroup>\n\t);\n}\n\nfunction BackgroundImagePanelItem( props ) {\n\tconst { attributes, clientId, setAttributes } = props;\n\n\tconst { id, title, url } =\n\t\tattributes.style?.background?.backgroundImage || {};\n\n\tconst { mediaUpload } = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tmediaUpload: select( blockEditorStore ).getSettings().mediaUpload,\n\t\t};\n\t} );\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t};\n\n\tconst onSelectMedia = ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tconst newStyle = {\n\t\t\t\t...attributes.style,\n\t\t\t\tbackground: {\n\t\t\t\t\t...attributes.style?.background,\n\t\t\t\t\tbackgroundImage: undefined,\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tconst newAttributes = {\n\t\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t\t};\n\n\t\t\tsetAttributes( newAttributes );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// For media selections originated from a file upload.\n\t\tif (\n\t\t\t( media.media_type &&\n\t\t\t\tmedia.media_type !== IMAGE_BACKGROUND_TYPE ) ||\n\t\t\t( ! media.media_type &&\n\t\t\t\tmedia.type &&\n\t\t\t\tmedia.type !== IMAGE_BACKGROUND_TYPE )\n\t\t) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only images can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst newStyle = {\n\t\t\t...attributes.style,\n\t\t\tbackground: {\n\t\t\t\t...attributes.style?.background,\n\t\t\t\tbackgroundImage: {\n\t\t\t\t\turl: media.url,\n\t\t\t\t\tid: media.id,\n\t\t\t\t\tsource: 'file',\n\t\t\t\t\ttitle: media.title || undefined,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\tconst newAttributes = {\n\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t};\n\n\t\tsetAttributes( newAttributes );\n\t};\n\n\tconst onFilesDrop = ( filesList ) => {\n\t\tmediaUpload( {\n\t\t\tallowedTypes: [ 'image' ],\n\t\t\tfilesList,\n\t\t\tonFileChange( [ image ] ) {\n\t\t\t\tif ( isBlobURL( image?.url ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tonSelectMedia( image );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tstyle: {\n\t\t\t\t...previousValue.style,\n\t\t\t\tbackground: undefined,\n\t\t\t},\n\t\t};\n\t}, [] );\n\n\treturn (\n\t\t<ToolsPanelItem\n\t\t\tclassName=\"single-column\"\n\t\t\thasValue={ () => hasBackgroundImageValue( props ) }\n\t\t\tlabel={ __( 'Background image' ) }\n\t\t\tonDeselect={ () => resetBackgroundImage( props ) }\n\t\t\tisShownByDefault={ true }\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tpanelId={ clientId }\n\t\t>\n\t\t\t<div className=\"block-editor-hooks__background__inspector-media-replace-container\">\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tmediaId={ id }\n\t\t\t\t\tmediaURL={ url }\n\t\t\t\t\tallowedTypes={ [ IMAGE_BACKGROUND_TYPE ] }\n\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\t\tname={\n\t\t\t\t\t\t<InspectorImagePreview\n\t\t\t\t\t\t\tlabel={ __( 'Background image' ) }\n\t\t\t\t\t\t\tfilename={ title }\n\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t>\n\t\t\t\t\t<MenuItem onClick={ () => resetBackgroundImage( props ) }>\n\t\t\t\t\t\t{ __( 'Reset ' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t</MediaReplaceFlow>\n\t\t\t\t<DropZone\n\t\t\t\t\tonFilesDrop={ onFilesDrop }\n\t\t\t\t\tlabel={ __( 'Drop to upload' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</ToolsPanelItem>\n\t);\n}\n\nexport function BackgroundImagePanel( props ) {\n\tconst isBackgroundImageSupported =\n\t\tuseSetting( 'background.backgroundImage' ) &&\n\t\thasBackgroundSupport( props.name, 'backgroundImage' );\n\n\tif ( ! isBackgroundImageSupported ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<InspectorControls group=\"background\">\n\t\t\t{ isBackgroundImageSupported && (\n\t\t\t\t<BackgroundImagePanelItem { ...props } />\n\t\t\t) }\n\t\t</InspectorControls>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -49,7 +49,8 @@ function RenameModal({
|
|
|
49
49
|
overlayClassName: "block-editor-block-rename-modal",
|
|
50
50
|
aria: {
|
|
51
51
|
describedby: dialogDescription
|
|
52
|
-
}
|
|
52
|
+
},
|
|
53
|
+
focusOnMount: "firstContentElement"
|
|
53
54
|
}, (0, _element.createElement)("p", {
|
|
54
55
|
id: dialogDescription
|
|
55
56
|
}, (0, _i18n.__)('Enter a custom name for this block.')), (0, _element.createElement)("form", {
|