@wordpress/dataviews 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -0
- package/LICENSE.md +788 -0
- package/README.md +224 -0
- package/build/add-filter.js +90 -0
- package/build/add-filter.js.map +1 -0
- package/build/constants.js +55 -0
- package/build/constants.js.map +1 -0
- package/build/dataviews.js +93 -0
- package/build/dataviews.js.map +1 -0
- package/build/filter-summary.js +137 -0
- package/build/filter-summary.js.map +1 -0
- package/build/filters.js +75 -0
- package/build/filters.js.map +1 -0
- package/build/index.js +21 -0
- package/build/index.js.map +1 -0
- package/build/item-actions.js +185 -0
- package/build/item-actions.js.map +1 -0
- package/build/lock-unlock.js +18 -0
- package/build/lock-unlock.js.map +1 -0
- package/build/pagination.js +123 -0
- package/build/pagination.js.map +1 -0
- package/build/reset-filters.js +33 -0
- package/build/reset-filters.js.map +1 -0
- package/build/search.js +46 -0
- package/build/search.js.map +1 -0
- package/build/view-actions.js +223 -0
- package/build/view-actions.js.map +1 -0
- package/build/view-grid.js +80 -0
- package/build/view-grid.js.map +1 -0
- package/build/view-list.js +83 -0
- package/build/view-list.js.map +1 -0
- package/build/view-table.js +286 -0
- package/build/view-table.js.map +1 -0
- package/build-module/add-filter.js +83 -0
- package/build-module/add-filter.js.map +1 -0
- package/build-module/constants.js +41 -0
- package/build-module/constants.js.map +1 -0
- package/build-module/dataviews.js +85 -0
- package/build-module/dataviews.js.map +1 -0
- package/build-module/filter-summary.js +130 -0
- package/build-module/filter-summary.js.map +1 -0
- package/build-module/filters.js +67 -0
- package/build-module/filters.js.map +1 -0
- package/build-module/index.js +3 -0
- package/build-module/index.js.map +1 -0
- package/build-module/item-actions.js +178 -0
- package/build-module/item-actions.js.map +1 -0
- package/build-module/lock-unlock.js +9 -0
- package/build-module/lock-unlock.js.map +1 -0
- package/build-module/pagination.js +115 -0
- package/build-module/pagination.js.map +1 -0
- package/build-module/reset-filters.js +26 -0
- package/build-module/reset-filters.js.map +1 -0
- package/build-module/search.js +39 -0
- package/build-module/search.js.map +1 -0
- package/build-module/view-actions.js +216 -0
- package/build-module/view-actions.js.map +1 -0
- package/build-module/view-grid.js +72 -0
- package/build-module/view-grid.js.map +1 -0
- package/build-module/view-list.js +75 -0
- package/build-module/view-list.js.map +1 -0
- package/build-module/view-table.js +277 -0
- package/build-module/view-table.js.map +1 -0
- package/build-style/style-rtl.css +325 -0
- package/build-style/style.css +325 -0
- package/package.json +49 -0
- package/src/add-filter.js +106 -0
- package/src/constants.js +50 -0
- package/src/dataviews.js +99 -0
- package/src/filter-summary.js +221 -0
- package/src/filters.js +84 -0
- package/src/index.js +2 -0
- package/src/item-actions.js +211 -0
- package/src/lock-unlock.js +10 -0
- package/src/pagination.js +144 -0
- package/src/reset-filters.js +26 -0
- package/src/search.js +38 -0
- package/src/stories/fixtures.js +126 -0
- package/src/stories/index.story.js +137 -0
- package/src/style.scss +245 -0
- package/src/view-actions.js +298 -0
- package/src/view-grid.js +100 -0
- package/src/view-list.js +99 -0
- package/src/view-table.js +425 -0
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
var _i18n = require("@wordpress/i18n");
|
|
10
|
+
var _compose = require("@wordpress/compose");
|
|
11
|
+
var _icons = require("@wordpress/icons");
|
|
12
|
+
var _components = require("@wordpress/components");
|
|
13
|
+
var _element = require("@wordpress/element");
|
|
14
|
+
var _lockUnlock = require("./lock-unlock");
|
|
15
|
+
var _itemActions = _interopRequireDefault(require("./item-actions"));
|
|
16
|
+
var _constants = require("./constants");
|
|
17
|
+
/**
|
|
18
|
+
* WordPress dependencies
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Internal dependencies
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
const {
|
|
26
|
+
DropdownMenuV2: DropdownMenu,
|
|
27
|
+
DropdownMenuGroupV2: DropdownMenuGroup,
|
|
28
|
+
DropdownMenuItemV2: DropdownMenuItem,
|
|
29
|
+
DropdownMenuSeparatorV2: DropdownMenuSeparator,
|
|
30
|
+
DropdownSubMenuV2: DropdownSubMenu,
|
|
31
|
+
DropdownSubMenuTriggerV2: DropdownSubMenuTrigger
|
|
32
|
+
} = (0, _lockUnlock.unlock)(_components.privateApis);
|
|
33
|
+
const sortingItemsInfo = {
|
|
34
|
+
asc: {
|
|
35
|
+
icon: _icons.arrowUp,
|
|
36
|
+
label: (0, _i18n.__)('Sort ascending')
|
|
37
|
+
},
|
|
38
|
+
desc: {
|
|
39
|
+
icon: _icons.arrowDown,
|
|
40
|
+
label: (0, _i18n.__)('Sort descending')
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
const sortIcons = {
|
|
44
|
+
asc: _icons.chevronUp,
|
|
45
|
+
desc: _icons.chevronDown
|
|
46
|
+
};
|
|
47
|
+
function HeaderMenu({
|
|
48
|
+
field,
|
|
49
|
+
view,
|
|
50
|
+
onChangeView
|
|
51
|
+
}) {
|
|
52
|
+
const isSortable = field.enableSorting !== false;
|
|
53
|
+
const isHidable = field.enableHiding !== false;
|
|
54
|
+
if (!isSortable && !isHidable) {
|
|
55
|
+
return field.header;
|
|
56
|
+
}
|
|
57
|
+
const isSorted = view.sort?.field === field.id;
|
|
58
|
+
let filter, filterInView;
|
|
59
|
+
const otherFilters = [];
|
|
60
|
+
if (field.type === _constants.ENUMERATION_TYPE) {
|
|
61
|
+
let columnOperators = field.filterBy?.operators;
|
|
62
|
+
if (!columnOperators || !Array.isArray(columnOperators)) {
|
|
63
|
+
columnOperators = [_constants.OPERATOR_IN, _constants.OPERATOR_NOT_IN];
|
|
64
|
+
}
|
|
65
|
+
const operators = columnOperators.filter(operator => [_constants.OPERATOR_IN, _constants.OPERATOR_NOT_IN].includes(operator));
|
|
66
|
+
if (operators.length >= 0) {
|
|
67
|
+
filter = {
|
|
68
|
+
field: field.id,
|
|
69
|
+
operators,
|
|
70
|
+
elements: field.elements || []
|
|
71
|
+
};
|
|
72
|
+
filterInView = {
|
|
73
|
+
field: filter.field,
|
|
74
|
+
operator: filter.operators[0],
|
|
75
|
+
value: undefined
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const isFilterable = !!filter;
|
|
80
|
+
if (isFilterable) {
|
|
81
|
+
const columnFilters = view.filters;
|
|
82
|
+
columnFilters.forEach(columnFilter => {
|
|
83
|
+
if (columnFilter.field === filter.field) {
|
|
84
|
+
filterInView = {
|
|
85
|
+
...columnFilter
|
|
86
|
+
};
|
|
87
|
+
} else {
|
|
88
|
+
otherFilters.push(columnFilter);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return (0, _react.createElement)(DropdownMenu, {
|
|
93
|
+
align: "start",
|
|
94
|
+
trigger: (0, _react.createElement)(_components.Button, {
|
|
95
|
+
icon: isSorted && sortIcons[view.sort.direction],
|
|
96
|
+
iconPosition: "right",
|
|
97
|
+
text: field.header,
|
|
98
|
+
style: {
|
|
99
|
+
padding: 0
|
|
100
|
+
},
|
|
101
|
+
size: "compact"
|
|
102
|
+
})
|
|
103
|
+
}, (0, _react.createElement)(WithSeparators, null, isSortable && (0, _react.createElement)(DropdownMenuGroup, null, Object.entries(sortingItemsInfo).map(([direction, info]) => {
|
|
104
|
+
const isActive = isSorted && view.sort.direction === direction;
|
|
105
|
+
return (0, _react.createElement)(DropdownMenuItem, {
|
|
106
|
+
key: direction,
|
|
107
|
+
role: "menuitemradio",
|
|
108
|
+
"aria-checked": isActive,
|
|
109
|
+
prefix: (0, _react.createElement)(_components.Icon, {
|
|
110
|
+
icon: info.icon
|
|
111
|
+
}),
|
|
112
|
+
suffix: isActive && (0, _react.createElement)(_components.Icon, {
|
|
113
|
+
icon: _icons.check
|
|
114
|
+
}),
|
|
115
|
+
onSelect: event => {
|
|
116
|
+
event.preventDefault();
|
|
117
|
+
onChangeView({
|
|
118
|
+
...view,
|
|
119
|
+
sort: {
|
|
120
|
+
field: field.id,
|
|
121
|
+
direction
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}, info.label);
|
|
126
|
+
})), isHidable && (0, _react.createElement)(DropdownMenuItem, {
|
|
127
|
+
role: "menuitemradio",
|
|
128
|
+
"aria-checked": false,
|
|
129
|
+
prefix: (0, _react.createElement)(_components.Icon, {
|
|
130
|
+
icon: _icons.unseen
|
|
131
|
+
}),
|
|
132
|
+
onSelect: event => {
|
|
133
|
+
event.preventDefault();
|
|
134
|
+
onChangeView({
|
|
135
|
+
...view,
|
|
136
|
+
hiddenFields: view.hiddenFields.concat(field.id)
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}, (0, _i18n.__)('Hide')), isFilterable && (0, _react.createElement)(DropdownMenuGroup, null, (0, _react.createElement)(DropdownSubMenu, {
|
|
140
|
+
key: filter.field,
|
|
141
|
+
trigger: (0, _react.createElement)(DropdownSubMenuTrigger, {
|
|
142
|
+
prefix: (0, _react.createElement)(_components.Icon, {
|
|
143
|
+
icon: _icons.funnel
|
|
144
|
+
}),
|
|
145
|
+
suffix: (0, _react.createElement)(_components.Icon, {
|
|
146
|
+
icon: _icons.chevronRightSmall
|
|
147
|
+
})
|
|
148
|
+
}, (0, _i18n.__)('Filter by'))
|
|
149
|
+
}, (0, _react.createElement)(WithSeparators, null, (0, _react.createElement)(DropdownMenuGroup, null, filter.elements.map(element => {
|
|
150
|
+
let isActive = false;
|
|
151
|
+
if (filterInView) {
|
|
152
|
+
// Intentionally use loose comparison, so it does type conversion.
|
|
153
|
+
// This covers the case where a top-level filter for the same field converts a number into a string.
|
|
154
|
+
/* eslint-disable eqeqeq */
|
|
155
|
+
isActive = element.value == filterInView.value;
|
|
156
|
+
/* eslint-enable eqeqeq */
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
return (0, _react.createElement)(DropdownMenuItem, {
|
|
160
|
+
key: element.value,
|
|
161
|
+
role: "menuitemradio",
|
|
162
|
+
"aria-checked": isActive,
|
|
163
|
+
prefix: isActive && (0, _react.createElement)(_components.Icon, {
|
|
164
|
+
icon: _icons.check
|
|
165
|
+
}),
|
|
166
|
+
onSelect: () => {
|
|
167
|
+
onChangeView({
|
|
168
|
+
...view,
|
|
169
|
+
filters: [...otherFilters, {
|
|
170
|
+
field: filter.field,
|
|
171
|
+
operator: filterInView?.operator,
|
|
172
|
+
value: isActive ? undefined : element.value
|
|
173
|
+
}]
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}, element.label);
|
|
177
|
+
})), filter.operators.length > 1 && (0, _react.createElement)(DropdownSubMenu, {
|
|
178
|
+
trigger: (0, _react.createElement)(DropdownSubMenuTrigger, {
|
|
179
|
+
suffix: (0, _react.createElement)(_element.Fragment, null, filterInView.operator === _constants.OPERATOR_IN ? (0, _i18n.__)('Is') : (0, _i18n.__)('Is not'), (0, _react.createElement)(_components.Icon, {
|
|
180
|
+
icon: _icons.chevronRightSmall
|
|
181
|
+
}), ' ')
|
|
182
|
+
}, (0, _i18n.__)('Conditions'))
|
|
183
|
+
}, (0, _react.createElement)(DropdownMenuItem, {
|
|
184
|
+
key: "in-filter",
|
|
185
|
+
role: "menuitemradio",
|
|
186
|
+
"aria-checked": filterInView?.operator === _constants.OPERATOR_IN,
|
|
187
|
+
prefix: filterInView?.operator === _constants.OPERATOR_IN && (0, _react.createElement)(_components.Icon, {
|
|
188
|
+
icon: _icons.check
|
|
189
|
+
}),
|
|
190
|
+
onSelect: () => onChangeView({
|
|
191
|
+
...view,
|
|
192
|
+
filters: [...otherFilters, {
|
|
193
|
+
field: filter.field,
|
|
194
|
+
operator: _constants.OPERATOR_IN,
|
|
195
|
+
value: filterInView?.value
|
|
196
|
+
}]
|
|
197
|
+
})
|
|
198
|
+
}, (0, _i18n.__)('Is')), (0, _react.createElement)(DropdownMenuItem, {
|
|
199
|
+
key: "not-in-filter",
|
|
200
|
+
role: "menuitemradio",
|
|
201
|
+
"aria-checked": filterInView?.operator === _constants.OPERATOR_NOT_IN,
|
|
202
|
+
prefix: filterInView?.operator === _constants.OPERATOR_NOT_IN && (0, _react.createElement)(_components.Icon, {
|
|
203
|
+
icon: _icons.check
|
|
204
|
+
}),
|
|
205
|
+
onSelect: () => onChangeView({
|
|
206
|
+
...view,
|
|
207
|
+
filters: [...otherFilters, {
|
|
208
|
+
field: filter.field,
|
|
209
|
+
operator: _constants.OPERATOR_NOT_IN,
|
|
210
|
+
value: filterInView?.value
|
|
211
|
+
}]
|
|
212
|
+
})
|
|
213
|
+
}, (0, _i18n.__)('Is not'))))))));
|
|
214
|
+
}
|
|
215
|
+
function WithSeparators({
|
|
216
|
+
children
|
|
217
|
+
}) {
|
|
218
|
+
return _element.Children.toArray(children).filter(Boolean).map((child, i) => (0, _react.createElement)(_element.Fragment, {
|
|
219
|
+
key: i
|
|
220
|
+
}, i > 0 && (0, _react.createElement)(DropdownMenuSeparator, null), child));
|
|
221
|
+
}
|
|
222
|
+
function ViewTable({
|
|
223
|
+
view,
|
|
224
|
+
onChangeView,
|
|
225
|
+
fields,
|
|
226
|
+
actions,
|
|
227
|
+
data,
|
|
228
|
+
getItemId,
|
|
229
|
+
isLoading = false,
|
|
230
|
+
deferredRendering
|
|
231
|
+
}) {
|
|
232
|
+
const visibleFields = fields.filter(field => !view.hiddenFields.includes(field.id) && ![view.layout.mediaField, view.layout.primaryField].includes(field.id));
|
|
233
|
+
const shownData = (0, _compose.useAsyncList)(data);
|
|
234
|
+
const usedData = deferredRendering ? shownData : data;
|
|
235
|
+
const hasData = !!usedData?.length;
|
|
236
|
+
if (isLoading) {
|
|
237
|
+
// TODO:Add spinner or progress bar..
|
|
238
|
+
return (0, _react.createElement)("div", {
|
|
239
|
+
className: "dataviews-loading"
|
|
240
|
+
}, (0, _react.createElement)("h3", null, (0, _i18n.__)('Loading')));
|
|
241
|
+
}
|
|
242
|
+
const sortValues = {
|
|
243
|
+
asc: 'ascending',
|
|
244
|
+
desc: 'descending'
|
|
245
|
+
};
|
|
246
|
+
return (0, _react.createElement)("div", {
|
|
247
|
+
className: "dataviews-table-view-wrapper"
|
|
248
|
+
}, hasData && (0, _react.createElement)("table", {
|
|
249
|
+
className: "dataviews-table-view"
|
|
250
|
+
}, (0, _react.createElement)("thead", null, (0, _react.createElement)("tr", null, visibleFields.map(field => (0, _react.createElement)("th", {
|
|
251
|
+
key: field.id,
|
|
252
|
+
style: {
|
|
253
|
+
width: field.width || undefined,
|
|
254
|
+
minWidth: field.minWidth || undefined,
|
|
255
|
+
maxWidth: field.maxWidth || undefined
|
|
256
|
+
},
|
|
257
|
+
"data-field-id": field.id,
|
|
258
|
+
"aria-sort": view.sort?.field === field.id && sortValues[view.sort.direction],
|
|
259
|
+
scope: "col"
|
|
260
|
+
}, (0, _react.createElement)(HeaderMenu, {
|
|
261
|
+
field: field,
|
|
262
|
+
view: view,
|
|
263
|
+
onChangeView: onChangeView
|
|
264
|
+
}))), !!actions?.length && (0, _react.createElement)("th", {
|
|
265
|
+
"data-field-id": "actions"
|
|
266
|
+
}, (0, _i18n.__)('Actions')))), (0, _react.createElement)("tbody", null, usedData.map((item, index) => (0, _react.createElement)("tr", {
|
|
267
|
+
key: getItemId?.(item) || index
|
|
268
|
+
}, visibleFields.map(field => (0, _react.createElement)("td", {
|
|
269
|
+
key: field.id,
|
|
270
|
+
style: {
|
|
271
|
+
width: field.width || undefined,
|
|
272
|
+
minWidth: field.minWidth || undefined,
|
|
273
|
+
maxWidth: field.maxWidth || undefined
|
|
274
|
+
}
|
|
275
|
+
}, field.render({
|
|
276
|
+
item
|
|
277
|
+
}))), !!actions?.length && (0, _react.createElement)("td", null, (0, _react.createElement)(_itemActions.default, {
|
|
278
|
+
item: item,
|
|
279
|
+
actions: actions
|
|
280
|
+
})))))), !hasData && (0, _react.createElement)("div", {
|
|
281
|
+
className: "dataviews-no-results"
|
|
282
|
+
}, (0, _react.createElement)("p", null, (0, _i18n.__)('No results'))));
|
|
283
|
+
}
|
|
284
|
+
var _default = ViewTable;
|
|
285
|
+
exports.default = _default;
|
|
286
|
+
//# sourceMappingURL=view-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_i18n","require","_compose","_icons","_components","_element","_lockUnlock","_itemActions","_interopRequireDefault","_constants","DropdownMenuV2","DropdownMenu","DropdownMenuGroupV2","DropdownMenuGroup","DropdownMenuItemV2","DropdownMenuItem","DropdownMenuSeparatorV2","DropdownMenuSeparator","DropdownSubMenuV2","DropdownSubMenu","DropdownSubMenuTriggerV2","DropdownSubMenuTrigger","unlock","componentsPrivateApis","sortingItemsInfo","asc","icon","arrowUp","label","__","desc","arrowDown","sortIcons","chevronUp","chevronDown","HeaderMenu","field","view","onChangeView","isSortable","enableSorting","isHidable","enableHiding","header","isSorted","sort","id","filter","filterInView","otherFilters","type","ENUMERATION_TYPE","columnOperators","filterBy","operators","Array","isArray","OPERATOR_IN","OPERATOR_NOT_IN","operator","includes","length","elements","value","undefined","isFilterable","columnFilters","filters","forEach","columnFilter","push","_react","createElement","align","trigger","Button","direction","iconPosition","text","style","padding","size","WithSeparators","Object","entries","map","info","isActive","key","role","prefix","Icon","suffix","check","onSelect","event","preventDefault","unseen","hiddenFields","concat","funnel","chevronRightSmall","element","Fragment","children","Children","toArray","Boolean","child","i","ViewTable","fields","actions","data","getItemId","isLoading","deferredRendering","visibleFields","layout","mediaField","primaryField","shownData","useAsyncList","usedData","hasData","className","sortValues","width","minWidth","maxWidth","scope","item","index","render","default","_default","exports"],"sources":["@wordpress/dataviews/src/view-table.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useAsyncList } from '@wordpress/compose';\nimport {\n\tchevronDown,\n\tchevronUp,\n\tunseen,\n\tcheck,\n\tarrowUp,\n\tarrowDown,\n\tchevronRightSmall,\n\tfunnel,\n} from '@wordpress/icons';\nimport {\n\tButton,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { Children, Fragment } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport ItemActions from './item-actions';\nimport { ENUMERATION_TYPE, OPERATOR_IN, OPERATOR_NOT_IN } from './constants';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownMenuGroupV2: DropdownMenuGroup,\n\tDropdownMenuItemV2: DropdownMenuItem,\n\tDropdownMenuSeparatorV2: DropdownMenuSeparator,\n\tDropdownSubMenuV2: DropdownSubMenu,\n\tDropdownSubMenuTriggerV2: DropdownSubMenuTrigger,\n} = unlock( componentsPrivateApis );\n\nconst sortingItemsInfo = {\n\tasc: { icon: arrowUp, label: __( 'Sort ascending' ) },\n\tdesc: { icon: arrowDown, label: __( 'Sort descending' ) },\n};\nconst sortIcons = { asc: chevronUp, desc: chevronDown };\n\nfunction HeaderMenu( { field, view, onChangeView } ) {\n\tconst isSortable = field.enableSorting !== false;\n\tconst isHidable = field.enableHiding !== false;\n\tif ( ! isSortable && ! isHidable ) {\n\t\treturn field.header;\n\t}\n\tconst isSorted = view.sort?.field === field.id;\n\tlet filter, filterInView;\n\tconst otherFilters = [];\n\tif ( field.type === ENUMERATION_TYPE ) {\n\t\tlet columnOperators = field.filterBy?.operators;\n\t\tif ( ! columnOperators || ! Array.isArray( columnOperators ) ) {\n\t\t\tcolumnOperators = [ OPERATOR_IN, OPERATOR_NOT_IN ];\n\t\t}\n\t\tconst operators = columnOperators.filter( ( operator ) =>\n\t\t\t[ OPERATOR_IN, OPERATOR_NOT_IN ].includes( operator )\n\t\t);\n\t\tif ( operators.length >= 0 ) {\n\t\t\tfilter = {\n\t\t\t\tfield: field.id,\n\t\t\t\toperators,\n\t\t\t\telements: field.elements || [],\n\t\t\t};\n\t\t\tfilterInView = {\n\t\t\t\tfield: filter.field,\n\t\t\t\toperator: filter.operators[ 0 ],\n\t\t\t\tvalue: undefined,\n\t\t\t};\n\t\t}\n\t}\n\tconst isFilterable = !! filter;\n\n\tif ( isFilterable ) {\n\t\tconst columnFilters = view.filters;\n\t\tcolumnFilters.forEach( ( columnFilter ) => {\n\t\t\tif ( columnFilter.field === filter.field ) {\n\t\t\t\tfilterInView = {\n\t\t\t\t\t...columnFilter,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\totherFilters.push( columnFilter );\n\t\t\t}\n\t\t} );\n\t}\n\treturn (\n\t\t<DropdownMenu\n\t\t\talign=\"start\"\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\ticon={ isSorted && sortIcons[ view.sort.direction ] }\n\t\t\t\t\ticonPosition=\"right\"\n\t\t\t\t\ttext={ field.header }\n\t\t\t\t\tstyle={ { padding: 0 } }\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<WithSeparators>\n\t\t\t\t{ isSortable && (\n\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t{ Object.entries( sortingItemsInfo ).map(\n\t\t\t\t\t\t\t( [ direction, info ] ) => {\n\t\t\t\t\t\t\t\tconst isActive =\n\t\t\t\t\t\t\t\t\tisSorted &&\n\t\t\t\t\t\t\t\t\tview.sort.direction === direction;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\tkey={ direction }\n\t\t\t\t\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\t\t\t\t\taria-checked={ isActive }\n\t\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ info.icon } /> }\n\t\t\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t\t\tisActive && <Icon icon={ check } />\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonSelect={ ( event ) => {\n\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfield: field.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdirection,\n\t\t\t\t\t\t\t\t\t\t\t\t},\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>\n\t\t\t\t\t\t\t\t\t\t{ info.label }\n\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DropdownMenuGroup>\n\t\t\t\t) }\n\t\t\t\t{ isHidable && (\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\taria-checked={ false }\n\t\t\t\t\t\tprefix={ <Icon icon={ unseen } /> }\n\t\t\t\t\t\tonSelect={ ( event ) => {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\thiddenFields: view.hiddenFields.concat(\n\t\t\t\t\t\t\t\t\tfield.id\n\t\t\t\t\t\t\t\t),\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\t\t{ __( 'Hide' ) }\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t) }\n\t\t\t\t{ isFilterable && (\n\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t<DropdownSubMenu\n\t\t\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t<DropdownSubMenuTrigger\n\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ funnel } /> }\n\t\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ chevronRightSmall } />\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{ __( 'Filter by' ) }\n\t\t\t\t\t\t\t\t</DropdownSubMenuTrigger>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<WithSeparators>\n\t\t\t\t\t\t\t\t<DropdownMenuGroup>\n\t\t\t\t\t\t\t\t\t{ filter.elements.map( ( element ) => {\n\t\t\t\t\t\t\t\t\t\tlet isActive = false;\n\t\t\t\t\t\t\t\t\t\tif ( filterInView ) {\n\t\t\t\t\t\t\t\t\t\t\t// Intentionally use loose comparison, so it does type conversion.\n\t\t\t\t\t\t\t\t\t\t\t// This covers the case where a top-level filter for the same field converts a number into a string.\n\t\t\t\t\t\t\t\t\t\t\t/* eslint-disable eqeqeq */\n\t\t\t\t\t\t\t\t\t\t\tisActive =\n\t\t\t\t\t\t\t\t\t\t\t\telement.value ==\n\t\t\t\t\t\t\t\t\t\t\t\tfilterInView.value;\n\t\t\t\t\t\t\t\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ element.value }\n\t\t\t\t\t\t\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\t\t\t\t\t\t\taria-checked={ isActive }\n\t\t\t\t\t\t\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t\t\t\t\t\t\tisActive && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon icon={ check } />\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tonSelect={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...otherFilters,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilterInView?.operator,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: isActive\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: element.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ element.label }\n\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\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</DropdownMenuGroup>\n\t\t\t\t\t\t\t\t{ filter.operators.length > 1 && (\n\t\t\t\t\t\t\t\t\t<DropdownSubMenu\n\t\t\t\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t\t\t\t<DropdownSubMenuTrigger\n\t\t\t\t\t\t\t\t\t\t\t\tsuffix={\n\t\t\t\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ filterInView.operator ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tOPERATOR_IN\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? __( 'Is' )\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: __( 'Is not' ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchevronRightSmall\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>{ ' ' }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ __( 'Conditions' ) }\n\t\t\t\t\t\t\t\t\t\t\t</DropdownSubMenuTrigger>\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\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\t\tkey=\"in-filter\"\n\t\t\t\t\t\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\t\t\t\t\t\taria-checked={\n\t\t\t\t\t\t\t\t\t\t\t\tfilterInView?.operator ===\n\t\t\t\t\t\t\t\t\t\t\t\tOPERATOR_IN\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t\t\t\t\t\tfilterInView?.operator ===\n\t\t\t\t\t\t\t\t\t\t\t\t\tOPERATOR_IN && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon icon={ check } />\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...otherFilters,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tOPERATOR_IN,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: filterInView?.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t} )\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\t\t{ __( 'Is' ) }\n\t\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\t\tkey=\"not-in-filter\"\n\t\t\t\t\t\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\t\t\t\t\t\taria-checked={\n\t\t\t\t\t\t\t\t\t\t\t\tfilterInView?.operator ===\n\t\t\t\t\t\t\t\t\t\t\t\tOPERATOR_NOT_IN\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tprefix={\n\t\t\t\t\t\t\t\t\t\t\t\tfilterInView?.operator ===\n\t\t\t\t\t\t\t\t\t\t\t\t\tOPERATOR_NOT_IN && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon icon={ check } />\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ () =>\n\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...otherFilters,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tOPERATOR_NOT_IN,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: filterInView?.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t} )\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\t\t{ __( 'Is not' ) }\n\t\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t\t</DropdownSubMenu>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</WithSeparators>\n\t\t\t\t\t\t</DropdownSubMenu>\n\t\t\t\t\t</DropdownMenuGroup>\n\t\t\t\t) }\n\t\t\t</WithSeparators>\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction WithSeparators( { children } ) {\n\treturn Children.toArray( children )\n\t\t.filter( Boolean )\n\t\t.map( ( child, i ) => (\n\t\t\t<Fragment key={ i }>\n\t\t\t\t{ i > 0 && <DropdownMenuSeparator /> }\n\t\t\t\t{ child }\n\t\t\t</Fragment>\n\t\t) );\n}\n\nfunction ViewTable( {\n\tview,\n\tonChangeView,\n\tfields,\n\tactions,\n\tdata,\n\tgetItemId,\n\tisLoading = false,\n\tdeferredRendering,\n} ) {\n\tconst visibleFields = fields.filter(\n\t\t( field ) =>\n\t\t\t! view.hiddenFields.includes( field.id ) &&\n\t\t\t! [ view.layout.mediaField, view.layout.primaryField ].includes(\n\t\t\t\tfield.id\n\t\t\t)\n\t);\n\tconst shownData = useAsyncList( data );\n\tconst usedData = deferredRendering ? shownData : data;\n\tconst hasData = !! usedData?.length;\n\tif ( isLoading ) {\n\t\t// TODO:Add spinner or progress bar..\n\t\treturn (\n\t\t\t<div className=\"dataviews-loading\">\n\t\t\t\t<h3>{ __( 'Loading' ) }</h3>\n\t\t\t</div>\n\t\t);\n\t}\n\tconst sortValues = { asc: 'ascending', desc: 'descending' };\n\treturn (\n\t\t<div className=\"dataviews-table-view-wrapper\">\n\t\t\t{ hasData && (\n\t\t\t\t<table className=\"dataviews-table-view\">\n\t\t\t\t\t<thead>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\twidth: field.width || undefined,\n\t\t\t\t\t\t\t\t\t\tminWidth: field.minWidth || undefined,\n\t\t\t\t\t\t\t\t\t\tmaxWidth: field.maxWidth || undefined,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tdata-field-id={ field.id }\n\t\t\t\t\t\t\t\t\taria-sort={\n\t\t\t\t\t\t\t\t\t\tview.sort?.field === field.id &&\n\t\t\t\t\t\t\t\t\t\tsortValues[ view.sort.direction ]\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<HeaderMenu\n\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t\t\t<th data-field-id=\"actions\">\n\t\t\t\t\t\t\t\t\t{ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</thead>\n\t\t\t\t\t<tbody>\n\t\t\t\t\t\t{ usedData.map( ( item, index ) => (\n\t\t\t\t\t\t\t<tr key={ getItemId?.( item ) || index }>\n\t\t\t\t\t\t\t\t{ visibleFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\twidth: field.width || undefined,\n\t\t\t\t\t\t\t\t\t\t\tminWidth:\n\t\t\t\t\t\t\t\t\t\t\t\tfield.minWidth || undefined,\n\t\t\t\t\t\t\t\t\t\t\tmaxWidth:\n\t\t\t\t\t\t\t\t\t\t\t\tfield.maxWidth || undefined,\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\t\t{ field.render( {\n\t\t\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<ItemActions\n\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</tbody>\n\t\t\t\t</table>\n\t\t\t) }\n\t\t\t{ ! hasData && (\n\t\t\t\t<div className=\"dataviews-no-results\">\n\t\t\t\t\t<p>{ __( 'No results' ) }</p>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default ViewTable;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { createElement } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* WordPress dependencies
|
|
4
|
+
*/
|
|
5
|
+
import { privateApis as componentsPrivateApis, Button, Icon } from '@wordpress/components';
|
|
6
|
+
import { chevronRightSmall, plus } from '@wordpress/icons';
|
|
7
|
+
import { __ } from '@wordpress/i18n';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Internal dependencies
|
|
11
|
+
*/
|
|
12
|
+
import { unlock } from './lock-unlock';
|
|
13
|
+
import { ENUMERATION_TYPE, OPERATOR_IN } from './constants';
|
|
14
|
+
const {
|
|
15
|
+
DropdownMenuV2: DropdownMenu,
|
|
16
|
+
DropdownSubMenuV2: DropdownSubMenu,
|
|
17
|
+
DropdownSubMenuTriggerV2: DropdownSubMenuTrigger,
|
|
18
|
+
DropdownMenuItemV2: DropdownMenuItem
|
|
19
|
+
} = unlock(componentsPrivateApis);
|
|
20
|
+
export default function AddFilter({
|
|
21
|
+
fields,
|
|
22
|
+
view,
|
|
23
|
+
onChangeView
|
|
24
|
+
}) {
|
|
25
|
+
const filters = [];
|
|
26
|
+
fields.forEach(field => {
|
|
27
|
+
if (!field.type) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
switch (field.type) {
|
|
31
|
+
case ENUMERATION_TYPE:
|
|
32
|
+
filters.push({
|
|
33
|
+
field: field.id,
|
|
34
|
+
name: field.header,
|
|
35
|
+
elements: field.elements || [],
|
|
36
|
+
isVisible: view.filters.some(f => f.field === field.id)
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
if (filters.length === 0) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
return createElement(DropdownMenu, {
|
|
44
|
+
label: __('Add filter'),
|
|
45
|
+
trigger: createElement(Button, {
|
|
46
|
+
disabled: filters.length === view.filters?.length,
|
|
47
|
+
__experimentalIsFocusable: true,
|
|
48
|
+
variant: "tertiary",
|
|
49
|
+
size: "compact"
|
|
50
|
+
}, createElement(Icon, {
|
|
51
|
+
icon: plus,
|
|
52
|
+
style: {
|
|
53
|
+
flexShrink: 0
|
|
54
|
+
}
|
|
55
|
+
}), __('Add filter'))
|
|
56
|
+
}, filters.map(filter => {
|
|
57
|
+
if (filter.isVisible) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
return createElement(DropdownSubMenu, {
|
|
61
|
+
key: filter.field,
|
|
62
|
+
trigger: createElement(DropdownSubMenuTrigger, {
|
|
63
|
+
suffix: createElement(Icon, {
|
|
64
|
+
icon: chevronRightSmall
|
|
65
|
+
})
|
|
66
|
+
}, filter.name)
|
|
67
|
+
}, filter.elements.map(element => createElement(DropdownMenuItem, {
|
|
68
|
+
key: element.value,
|
|
69
|
+
onSelect: () => {
|
|
70
|
+
onChangeView(currentView => ({
|
|
71
|
+
...currentView,
|
|
72
|
+
page: 1,
|
|
73
|
+
filters: [...currentView.filters, {
|
|
74
|
+
field: filter.field,
|
|
75
|
+
operator: OPERATOR_IN,
|
|
76
|
+
value: element.value
|
|
77
|
+
}]
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
}, element.label)));
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=add-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["privateApis","componentsPrivateApis","Button","Icon","chevronRightSmall","plus","__","unlock","ENUMERATION_TYPE","OPERATOR_IN","DropdownMenuV2","DropdownMenu","DropdownSubMenuV2","DropdownSubMenu","DropdownSubMenuTriggerV2","DropdownSubMenuTrigger","DropdownMenuItemV2","DropdownMenuItem","AddFilter","fields","view","onChangeView","filters","forEach","field","type","push","id","name","header","elements","isVisible","some","f","length","createElement","label","trigger","disabled","__experimentalIsFocusable","variant","size","icon","style","flexShrink","map","filter","key","suffix","element","value","onSelect","currentView","page","operator"],"sources":["@wordpress/dataviews/src/add-filter.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as componentsPrivateApis,\n\tButton,\n\tIcon,\n} from '@wordpress/components';\nimport { chevronRightSmall, plus } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from './lock-unlock';\nimport { ENUMERATION_TYPE, OPERATOR_IN } from './constants';\n\nconst {\n\tDropdownMenuV2: DropdownMenu,\n\tDropdownSubMenuV2: DropdownSubMenu,\n\tDropdownSubMenuTriggerV2: DropdownSubMenuTrigger,\n\tDropdownMenuItemV2: DropdownMenuItem,\n} = unlock( componentsPrivateApis );\n\nexport default function AddFilter( { fields, view, onChangeView } ) {\n\tconst filters = [];\n\tfields.forEach( ( field ) => {\n\t\tif ( ! field.type ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( field.type ) {\n\t\t\tcase ENUMERATION_TYPE:\n\t\t\t\tfilters.push( {\n\t\t\t\t\tfield: field.id,\n\t\t\t\t\tname: field.header,\n\t\t\t\t\telements: field.elements || [],\n\t\t\t\t\tisVisible: view.filters.some(\n\t\t\t\t\t\t( f ) => f.field === field.id\n\t\t\t\t\t),\n\t\t\t\t} );\n\t\t}\n\t} );\n\n\tif ( filters.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\tlabel={ __( 'Add filter' ) }\n\t\t\ttrigger={\n\t\t\t\t<Button\n\t\t\t\t\tdisabled={ filters.length === view.filters?.length }\n\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t>\n\t\t\t\t\t<Icon icon={ plus } style={ { flexShrink: 0 } } />\n\t\t\t\t\t{ __( 'Add filter' ) }\n\t\t\t\t</Button>\n\t\t\t}\n\t\t>\n\t\t\t{ filters.map( ( filter ) => {\n\t\t\t\tif ( filter.isVisible ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<DropdownSubMenu\n\t\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t<DropdownSubMenuTrigger\n\t\t\t\t\t\t\t\tsuffix={ <Icon icon={ chevronRightSmall } /> }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ filter.name }\n\t\t\t\t\t\t\t</DropdownSubMenuTrigger>\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{ filter.elements.map( ( element ) => (\n\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\tkey={ element.value }\n\t\t\t\t\t\t\t\tonSelect={ () => {\n\t\t\t\t\t\t\t\t\tonChangeView( ( currentView ) => ( {\n\t\t\t\t\t\t\t\t\t\t...currentView,\n\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t...currentView.filters,\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\t\t\toperator: OPERATOR_IN,\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: element.value,\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} ) );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ element.label }\n\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</DropdownSubMenu>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</DropdownMenu>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { __, isRTL } from '@wordpress/i18n';
|
|
5
|
+
import { blockTable, category, formatListBullets, formatListBulletsRTL } from '@wordpress/icons';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Internal dependencies
|
|
9
|
+
*/
|
|
10
|
+
import ViewTable from './view-table';
|
|
11
|
+
import ViewGrid from './view-grid';
|
|
12
|
+
import ViewList from './view-list';
|
|
13
|
+
|
|
14
|
+
// Field types.
|
|
15
|
+
export const ENUMERATION_TYPE = 'enumeration';
|
|
16
|
+
|
|
17
|
+
// Filter operators.
|
|
18
|
+
export const OPERATOR_IN = 'in';
|
|
19
|
+
export const OPERATOR_NOT_IN = 'notIn';
|
|
20
|
+
|
|
21
|
+
// View layouts.
|
|
22
|
+
export const LAYOUT_TABLE = 'table';
|
|
23
|
+
export const LAYOUT_GRID = 'grid';
|
|
24
|
+
export const LAYOUT_LIST = 'list';
|
|
25
|
+
export const VIEW_LAYOUTS = [{
|
|
26
|
+
type: LAYOUT_TABLE,
|
|
27
|
+
label: __('Table'),
|
|
28
|
+
component: ViewTable,
|
|
29
|
+
icon: blockTable
|
|
30
|
+
}, {
|
|
31
|
+
type: LAYOUT_GRID,
|
|
32
|
+
label: __('Grid'),
|
|
33
|
+
component: ViewGrid,
|
|
34
|
+
icon: category
|
|
35
|
+
}, {
|
|
36
|
+
type: LAYOUT_LIST,
|
|
37
|
+
label: __('List'),
|
|
38
|
+
component: ViewList,
|
|
39
|
+
icon: isRTL() ? formatListBulletsRTL : formatListBullets
|
|
40
|
+
}];
|
|
41
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__","isRTL","blockTable","category","formatListBullets","formatListBulletsRTL","ViewTable","ViewGrid","ViewList","ENUMERATION_TYPE","OPERATOR_IN","OPERATOR_NOT_IN","LAYOUT_TABLE","LAYOUT_GRID","LAYOUT_LIST","VIEW_LAYOUTS","type","label","component","icon"],"sources":["@wordpress/dataviews/src/constants.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\tblockTable,\n\tcategory,\n\tformatListBullets,\n\tformatListBulletsRTL,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ViewTable from './view-table';\nimport ViewGrid from './view-grid';\nimport ViewList from './view-list';\n\n// Field types.\nexport const ENUMERATION_TYPE = 'enumeration';\n\n// Filter operators.\nexport const OPERATOR_IN = 'in';\nexport const OPERATOR_NOT_IN = 'notIn';\n\n// View layouts.\nexport const LAYOUT_TABLE = 'table';\nexport const LAYOUT_GRID = 'grid';\nexport const LAYOUT_LIST = 'list';\n\nexport const VIEW_LAYOUTS = [\n\t{\n\t\ttype: LAYOUT_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewTable,\n\t\ticon: blockTable,\n\t},\n\t{\n\t\ttype: LAYOUT_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewGrid,\n\t\ticon: category,\n\t},\n\t{\n\t\ttype: LAYOUT_LIST,\n\t\tlabel: __( 'List' ),\n\t\tcomponent: ViewList,\n\t\ticon: isRTL() ? formatListBulletsRTL : formatListBullets,\n\t},\n];\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,EAAEC,KAAK,QAAQ,iBAAiB;AAC3C,SACCC,UAAU,EACVC,QAAQ,EACRC,iBAAiB,EACjBC,oBAAoB,QACd,kBAAkB;;AAEzB;AACA;AACA;AACA,OAAOC,SAAS,MAAM,cAAc;AACpC,OAAOC,QAAQ,MAAM,aAAa;AAClC,OAAOC,QAAQ,MAAM,aAAa;;AAElC;AACA,OAAO,MAAMC,gBAAgB,GAAG,aAAa;;AAE7C;AACA,OAAO,MAAMC,WAAW,GAAG,IAAI;AAC/B,OAAO,MAAMC,eAAe,GAAG,OAAO;;AAEtC;AACA,OAAO,MAAMC,YAAY,GAAG,OAAO;AACnC,OAAO,MAAMC,WAAW,GAAG,MAAM;AACjC,OAAO,MAAMC,WAAW,GAAG,MAAM;AAEjC,OAAO,MAAMC,YAAY,GAAG,CAC3B;EACCC,IAAI,EAAEJ,YAAY;EAClBK,KAAK,EAAEjB,EAAE,CAAE,OAAQ,CAAC;EACpBkB,SAAS,EAAEZ,SAAS;EACpBa,IAAI,EAAEjB;AACP,CAAC,EACD;EACCc,IAAI,EAAEH,WAAW;EACjBI,KAAK,EAAEjB,EAAE,CAAE,MAAO,CAAC;EACnBkB,SAAS,EAAEX,QAAQ;EACnBY,IAAI,EAAEhB;AACP,CAAC,EACD;EACCa,IAAI,EAAEF,WAAW;EACjBG,KAAK,EAAEjB,EAAE,CAAE,MAAO,CAAC;EACnBkB,SAAS,EAAEV,QAAQ;EACnBW,IAAI,EAAElB,KAAK,CAAC,CAAC,GAAGI,oBAAoB,GAAGD;AACxC,CAAC,CACD"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { createElement } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* WordPress dependencies
|
|
4
|
+
*/
|
|
5
|
+
import { __experimentalVStack as VStack, __experimentalHStack as HStack } from '@wordpress/components';
|
|
6
|
+
import { useMemo, useState } from '@wordpress/element';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Internal dependencies
|
|
10
|
+
*/
|
|
11
|
+
import Pagination from './pagination';
|
|
12
|
+
import ViewActions from './view-actions';
|
|
13
|
+
import Filters from './filters';
|
|
14
|
+
import Search from './search';
|
|
15
|
+
import { VIEW_LAYOUTS } from './constants';
|
|
16
|
+
export default function DataViews({
|
|
17
|
+
view,
|
|
18
|
+
onChangeView,
|
|
19
|
+
fields,
|
|
20
|
+
search = true,
|
|
21
|
+
searchLabel = undefined,
|
|
22
|
+
actions,
|
|
23
|
+
data,
|
|
24
|
+
getItemId,
|
|
25
|
+
isLoading = false,
|
|
26
|
+
paginationInfo,
|
|
27
|
+
supportedLayouts,
|
|
28
|
+
onSelectionChange,
|
|
29
|
+
deferredRendering
|
|
30
|
+
}) {
|
|
31
|
+
const [selection, setSelection] = useState([]);
|
|
32
|
+
const onSetSelection = items => {
|
|
33
|
+
setSelection(items.map(item => item.id));
|
|
34
|
+
onSelectionChange(items);
|
|
35
|
+
};
|
|
36
|
+
const ViewComponent = VIEW_LAYOUTS.find(v => v.type === view.type).component;
|
|
37
|
+
const _fields = useMemo(() => {
|
|
38
|
+
return fields.map(field => ({
|
|
39
|
+
...field,
|
|
40
|
+
render: field.render || field.getValue
|
|
41
|
+
}));
|
|
42
|
+
}, [fields]);
|
|
43
|
+
return createElement("div", {
|
|
44
|
+
className: "dataviews-wrapper"
|
|
45
|
+
}, createElement(VStack, {
|
|
46
|
+
spacing: 0,
|
|
47
|
+
justify: "flex-start"
|
|
48
|
+
}, createElement(HStack, {
|
|
49
|
+
alignment: "flex-start",
|
|
50
|
+
className: "dataviews__filters-view-actions"
|
|
51
|
+
}, createElement(HStack, {
|
|
52
|
+
justify: "start",
|
|
53
|
+
wrap: true
|
|
54
|
+
}, search && createElement(Search, {
|
|
55
|
+
label: searchLabel,
|
|
56
|
+
view: view,
|
|
57
|
+
onChangeView: onChangeView
|
|
58
|
+
}), createElement(Filters, {
|
|
59
|
+
fields: fields,
|
|
60
|
+
view: view,
|
|
61
|
+
onChangeView: onChangeView
|
|
62
|
+
})), createElement(ViewActions, {
|
|
63
|
+
fields: fields,
|
|
64
|
+
view: view,
|
|
65
|
+
onChangeView: onChangeView,
|
|
66
|
+
supportedLayouts: supportedLayouts
|
|
67
|
+
})), createElement(ViewComponent, {
|
|
68
|
+
fields: _fields,
|
|
69
|
+
view: view,
|
|
70
|
+
onChangeView: onChangeView,
|
|
71
|
+
paginationInfo: paginationInfo,
|
|
72
|
+
actions: actions,
|
|
73
|
+
data: data,
|
|
74
|
+
getItemId: getItemId,
|
|
75
|
+
isLoading: isLoading,
|
|
76
|
+
onSelectionChange: onSetSelection,
|
|
77
|
+
selection: selection,
|
|
78
|
+
deferredRendering: deferredRendering
|
|
79
|
+
}), createElement(Pagination, {
|
|
80
|
+
view: view,
|
|
81
|
+
onChangeView: onChangeView,
|
|
82
|
+
paginationInfo: paginationInfo
|
|
83
|
+
})));
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=dataviews.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__experimentalVStack","VStack","__experimentalHStack","HStack","useMemo","useState","Pagination","ViewActions","Filters","Search","VIEW_LAYOUTS","DataViews","view","onChangeView","fields","search","searchLabel","undefined","actions","data","getItemId","isLoading","paginationInfo","supportedLayouts","onSelectionChange","deferredRendering","selection","setSelection","onSetSelection","items","map","item","id","ViewComponent","find","v","type","component","_fields","field","render","getValue","createElement","className","spacing","justify","alignment","wrap","label"],"sources":["@wordpress/dataviews/src/dataviews.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport { useMemo, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Pagination from './pagination';\nimport ViewActions from './view-actions';\nimport Filters from './filters';\nimport Search from './search';\nimport { VIEW_LAYOUTS } from './constants';\n\nexport default function DataViews( {\n\tview,\n\tonChangeView,\n\tfields,\n\tsearch = true,\n\tsearchLabel = undefined,\n\tactions,\n\tdata,\n\tgetItemId,\n\tisLoading = false,\n\tpaginationInfo,\n\tsupportedLayouts,\n\tonSelectionChange,\n\tdeferredRendering,\n} ) {\n\tconst [ selection, setSelection ] = useState( [] );\n\n\tconst onSetSelection = ( items ) => {\n\t\tsetSelection( items.map( ( item ) => item.id ) );\n\t\tonSelectionChange( items );\n\t};\n\n\tconst ViewComponent = VIEW_LAYOUTS.find(\n\t\t( v ) => v.type === view.type\n\t).component;\n\tconst _fields = useMemo( () => {\n\t\treturn fields.map( ( field ) => ( {\n\t\t\t...field,\n\t\t\trender: field.render || field.getValue,\n\t\t} ) );\n\t}, [ fields ] );\n\treturn (\n\t\t<div className=\"dataviews-wrapper\">\n\t\t\t<VStack spacing={ 0 } justify=\"flex-start\">\n\t\t\t\t<HStack\n\t\t\t\t\talignment=\"flex-start\"\n\t\t\t\t\tclassName=\"dataviews__filters-view-actions\"\n\t\t\t\t>\n\t\t\t\t\t<HStack justify=\"start\" wrap>\n\t\t\t\t\t\t{ search && (\n\t\t\t\t\t\t\t<Search\n\t\t\t\t\t\t\t\tlabel={ searchLabel }\n\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<Filters\n\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</HStack>\n\t\t\t\t\t<ViewActions\n\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\tsupportedLayouts={ supportedLayouts }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t\t<ViewComponent\n\t\t\t\t\tfields={ _fields }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\t\tactions={ actions }\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\tisLoading={ isLoading }\n\t\t\t\t\tonSelectionChange={ onSetSelection }\n\t\t\t\t\tselection={ selection }\n\t\t\t\t\tdeferredRendering={ deferredRendering }\n\t\t\t\t/>\n\t\t\t\t<Pagination\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\t/>\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,oBAAoB,IAAIC,MAAM,EAC9BC,oBAAoB,IAAIC,MAAM,QACxB,uBAAuB;AAC9B,SAASC,OAAO,EAAEC,QAAQ,QAAQ,oBAAoB;;AAEtD;AACA;AACA;AACA,OAAOC,UAAU,MAAM,cAAc;AACrC,OAAOC,WAAW,MAAM,gBAAgB;AACxC,OAAOC,OAAO,MAAM,WAAW;AAC/B,OAAOC,MAAM,MAAM,UAAU;AAC7B,SAASC,YAAY,QAAQ,aAAa;AAE1C,eAAe,SAASC,SAASA,CAAE;EAClCC,IAAI;EACJC,YAAY;EACZC,MAAM;EACNC,MAAM,GAAG,IAAI;EACbC,WAAW,GAAGC,SAAS;EACvBC,OAAO;EACPC,IAAI;EACJC,SAAS;EACTC,SAAS,GAAG,KAAK;EACjBC,cAAc;EACdC,gBAAgB;EAChBC,iBAAiB;EACjBC;AACD,CAAC,EAAG;EACH,MAAM,CAAEC,SAAS,EAAEC,YAAY,CAAE,GAAGtB,QAAQ,CAAE,EAAG,CAAC;EAElD,MAAMuB,cAAc,GAAKC,KAAK,IAAM;IACnCF,YAAY,CAAEE,KAAK,CAACC,GAAG,CAAIC,IAAI,IAAMA,IAAI,CAACC,EAAG,CAAE,CAAC;IAChDR,iBAAiB,CAAEK,KAAM,CAAC;EAC3B,CAAC;EAED,MAAMI,aAAa,GAAGvB,YAAY,CAACwB,IAAI,CACpCC,CAAC,IAAMA,CAAC,CAACC,IAAI,KAAKxB,IAAI,CAACwB,IAC1B,CAAC,CAACC,SAAS;EACX,MAAMC,OAAO,GAAGlC,OAAO,CAAE,MAAM;IAC9B,OAAOU,MAAM,CAACgB,GAAG,CAAIS,KAAK,KAAQ;MACjC,GAAGA,KAAK;MACRC,MAAM,EAAED,KAAK,CAACC,MAAM,IAAID,KAAK,CAACE;IAC/B,CAAC,CAAG,CAAC;EACN,CAAC,EAAE,CAAE3B,MAAM,CAAG,CAAC;EACf,OACC4B,aAAA;IAAKC,SAAS,EAAC;EAAmB,GACjCD,aAAA,CAACzC,MAAM;IAAC2C,OAAO,EAAG,CAAG;IAACC,OAAO,EAAC;EAAY,GACzCH,aAAA,CAACvC,MAAM;IACN2C,SAAS,EAAC,YAAY;IACtBH,SAAS,EAAC;EAAiC,GAE3CD,aAAA,CAACvC,MAAM;IAAC0C,OAAO,EAAC,OAAO;IAACE,IAAI;EAAA,GACzBhC,MAAM,IACP2B,aAAA,CAACjC,MAAM;IACNuC,KAAK,EAAGhC,WAAa;IACrBJ,IAAI,EAAGA,IAAM;IACbC,YAAY,EAAGA;EAAc,CAC7B,CACD,EACD6B,aAAA,CAAClC,OAAO;IACPM,MAAM,EAAGA,MAAQ;IACjBF,IAAI,EAAGA,IAAM;IACbC,YAAY,EAAGA;EAAc,CAC7B,CACM,CAAC,EACT6B,aAAA,CAACnC,WAAW;IACXO,MAAM,EAAGA,MAAQ;IACjBF,IAAI,EAAGA,IAAM;IACbC,YAAY,EAAGA,YAAc;IAC7BU,gBAAgB,EAAGA;EAAkB,CACrC,CACM,CAAC,EACTmB,aAAA,CAACT,aAAa;IACbnB,MAAM,EAAGwB,OAAS;IAClB1B,IAAI,EAAGA,IAAM;IACbC,YAAY,EAAGA,YAAc;IAC7BS,cAAc,EAAGA,cAAgB;IACjCJ,OAAO,EAAGA,OAAS;IACnBC,IAAI,EAAGA,IAAM;IACbC,SAAS,EAAGA,SAAW;IACvBC,SAAS,EAAGA,SAAW;IACvBG,iBAAiB,EAAGI,cAAgB;IACpCF,SAAS,EAAGA,SAAW;IACvBD,iBAAiB,EAAGA;EAAmB,CACvC,CAAC,EACFiB,aAAA,CAACpC,UAAU;IACVM,IAAI,EAAGA,IAAM;IACbC,YAAY,EAAGA,YAAc;IAC7BS,cAAc,EAAGA;EAAgB,CACjC,CACM,CACJ,CAAC;AAER"}
|