@ansible/ansible-ui-framework 0.0.190

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. package/LICENSE +21 -0
  2. package/cjs/framework/BulkActionDialog.js +217 -0
  3. package/cjs/framework/BulkProgressDialog.js +240 -0
  4. package/cjs/framework/FilterDrawer.js +64 -0
  5. package/cjs/framework/PageBody.js +47 -0
  6. package/cjs/framework/PageCatalog.js +178 -0
  7. package/cjs/framework/PageCells.js +141 -0
  8. package/cjs/framework/PageColumnModal.js +130 -0
  9. package/cjs/framework/PageDataList.js +61 -0
  10. package/cjs/framework/PageDialog.js +28 -0
  11. package/cjs/framework/PageForm.js +376 -0
  12. package/cjs/framework/PageFramework.js +11 -0
  13. package/cjs/framework/PageHeader.js +96 -0
  14. package/cjs/framework/PageLayout.js +41 -0
  15. package/cjs/framework/PagePagination.js +28 -0
  16. package/cjs/framework/PageTable.js +205 -0
  17. package/cjs/framework/PageTabs.js +82 -0
  18. package/cjs/framework/PageToolbar.js +209 -0
  19. package/cjs/framework/Settings.js +122 -0
  20. package/cjs/framework/TypedActions.js +303 -0
  21. package/cjs/framework/components/BulkSelector.js +89 -0
  22. package/cjs/framework/components/Collapse.js +22 -0
  23. package/cjs/framework/components/DetailInfo.js +23 -0
  24. package/cjs/framework/components/Details.js +88 -0
  25. package/cjs/framework/components/Dotted.js +19 -0
  26. package/cjs/framework/components/DropdownControlled.js +28 -0
  27. package/cjs/framework/components/ErrorBoundary.js +45 -0
  28. package/cjs/framework/components/Grid.js +64 -0
  29. package/cjs/framework/components/Help.js +24 -0
  30. package/cjs/framework/components/IconWrapper.js +55 -0
  31. package/cjs/framework/components/LoadingPage.js +14 -0
  32. package/cjs/framework/components/Masonry.js +113 -0
  33. package/cjs/framework/components/Scrollable.js +87 -0
  34. package/cjs/framework/components/SingleSelect.js +70 -0
  35. package/cjs/framework/components/patternfly-colors.js +32 -0
  36. package/cjs/framework/components/useBreakPoint.js +145 -0
  37. package/cjs/framework/components/useOpen.js +36 -0
  38. package/cjs/framework/components/useWindowLocation.js +70 -0
  39. package/cjs/framework/index.js +39 -0
  40. package/cjs/framework/useFrameworkTranslations.js +38 -0
  41. package/cjs/framework/useSelectDialog.js +81 -0
  42. package/cjs/framework/useSelectMultipleDialog.js +62 -0
  43. package/cjs/framework/useTableItems.js +485 -0
  44. package/cjs/framework/useView.js +155 -0
  45. package/cjs/framework/utils/compare.js +59 -0
  46. package/cjs/framework/utils/download-file.js +23 -0
  47. package/cjs/framework/utils/random-string.js +17 -0
  48. package/cjs/frontend/controller/access/organizations/Organization.js +2 -0
  49. package/mjs/framework/BulkActionDialog.d.ts +25 -0
  50. package/mjs/framework/BulkActionDialog.js +104 -0
  51. package/mjs/framework/BulkProgressDialog.d.ts +20 -0
  52. package/mjs/framework/BulkProgressDialog.js +131 -0
  53. package/mjs/framework/FilterDrawer.d.ts +8 -0
  54. package/mjs/framework/FilterDrawer.js +24 -0
  55. package/mjs/framework/PageBody.d.ts +4 -0
  56. package/mjs/framework/PageBody.js +29 -0
  57. package/mjs/framework/PageCatalog.d.ts +113 -0
  58. package/mjs/framework/PageCatalog.js +140 -0
  59. package/mjs/framework/PageCells.d.ts +35 -0
  60. package/mjs/framework/PageCells.js +102 -0
  61. package/mjs/framework/PageColumnModal.d.ts +7 -0
  62. package/mjs/framework/PageColumnModal.js +64 -0
  63. package/mjs/framework/PageDataList.d.ts +46 -0
  64. package/mjs/framework/PageDataList.js +45 -0
  65. package/mjs/framework/PageDialog.d.ts +10 -0
  66. package/mjs/framework/PageDialog.js +12 -0
  67. package/mjs/framework/PageForm.d.ts +147 -0
  68. package/mjs/framework/PageForm.js +316 -0
  69. package/mjs/framework/PageFramework.d.ts +4 -0
  70. package/mjs/framework/PageFramework.js +7 -0
  71. package/mjs/framework/PageHeader.d.ts +45 -0
  72. package/mjs/framework/PageHeader.js +80 -0
  73. package/mjs/framework/PageLayout.d.ts +15 -0
  74. package/mjs/framework/PageLayout.js +23 -0
  75. package/mjs/framework/PagePagination.d.ts +10 -0
  76. package/mjs/framework/PagePagination.js +22 -0
  77. package/mjs/framework/PageTable.d.ts +68 -0
  78. package/mjs/framework/PageTable.js +170 -0
  79. package/mjs/framework/PageTabs.d.ts +15 -0
  80. package/mjs/framework/PageTabs.js +45 -0
  81. package/mjs/framework/PageToolbar.d.ts +57 -0
  82. package/mjs/framework/PageToolbar.js +148 -0
  83. package/mjs/framework/Settings.d.ts +19 -0
  84. package/mjs/framework/Settings.js +87 -0
  85. package/mjs/framework/TypedActions.d.ts +80 -0
  86. package/mjs/framework/TypedActions.js +251 -0
  87. package/mjs/framework/components/BulkSelector.d.ts +11 -0
  88. package/mjs/framework/components/BulkSelector.js +56 -0
  89. package/mjs/framework/components/Collapse.d.ts +5 -0
  90. package/mjs/framework/components/Collapse.js +7 -0
  91. package/mjs/framework/components/DetailInfo.d.ts +5 -0
  92. package/mjs/framework/components/DetailInfo.js +8 -0
  93. package/mjs/framework/components/Details.d.ts +38 -0
  94. package/mjs/framework/components/Details.js +68 -0
  95. package/mjs/framework/components/Dotted.d.ts +4 -0
  96. package/mjs/framework/components/Dotted.js +4 -0
  97. package/mjs/framework/components/DropdownControlled.d.ts +4 -0
  98. package/mjs/framework/components/DropdownControlled.js +8 -0
  99. package/mjs/framework/components/ErrorBoundary.d.ts +15 -0
  100. package/mjs/framework/components/ErrorBoundary.js +25 -0
  101. package/mjs/framework/components/Grid.d.ts +6 -0
  102. package/mjs/framework/components/Grid.js +27 -0
  103. package/mjs/framework/components/Help.d.ts +5 -0
  104. package/mjs/framework/components/Help.js +9 -0
  105. package/mjs/framework/components/IconWrapper.d.ts +8 -0
  106. package/mjs/framework/components/IconWrapper.js +40 -0
  107. package/mjs/framework/components/LoadingPage.d.ts +6 -0
  108. package/mjs/framework/components/LoadingPage.js +9 -0
  109. package/mjs/framework/components/Masonry.d.ts +6 -0
  110. package/mjs/framework/components/Masonry.js +69 -0
  111. package/mjs/framework/components/Scrollable.d.ts +7 -0
  112. package/mjs/framework/components/Scrollable.js +60 -0
  113. package/mjs/framework/components/SingleSelect.d.ts +18 -0
  114. package/mjs/framework/components/SingleSelect.js +37 -0
  115. package/mjs/framework/components/patternfly-colors.d.ts +13 -0
  116. package/mjs/framework/components/patternfly-colors.js +28 -0
  117. package/mjs/framework/components/useBreakPoint.d.ts +5 -0
  118. package/mjs/framework/components/useBreakPoint.js +118 -0
  119. package/mjs/framework/components/useOpen.d.ts +4 -0
  120. package/mjs/framework/components/useOpen.js +16 -0
  121. package/mjs/framework/components/useWindowLocation.d.ts +6 -0
  122. package/mjs/framework/components/useWindowLocation.js +48 -0
  123. package/mjs/framework/index.d.ts +23 -0
  124. package/mjs/framework/index.js +23 -0
  125. package/mjs/framework/useFrameworkTranslations.d.ts +17 -0
  126. package/mjs/framework/useFrameworkTranslations.js +22 -0
  127. package/mjs/framework/useSelectDialog.d.ts +30 -0
  128. package/mjs/framework/useSelectDialog.js +49 -0
  129. package/mjs/framework/useSelectMultipleDialog.d.ts +21 -0
  130. package/mjs/framework/useSelectMultipleDialog.js +29 -0
  131. package/mjs/framework/useTableItems.d.ts +76 -0
  132. package/mjs/framework/useTableItems.js +371 -0
  133. package/mjs/framework/useView.d.ts +15 -0
  134. package/mjs/framework/useView.js +108 -0
  135. package/mjs/framework/utils/compare.d.ts +3 -0
  136. package/mjs/framework/utils/compare.js +53 -0
  137. package/mjs/framework/utils/download-file.d.ts +2 -0
  138. package/mjs/framework/utils/download-file.js +18 -0
  139. package/mjs/framework/utils/random-string.d.ts +1 -0
  140. package/mjs/framework/utils/random-string.js +12 -0
  141. package/mjs/frontend/controller/access/organizations/Organization.d.ts +44 -0
  142. package/mjs/frontend/controller/access/organizations/Organization.js +1 -0
  143. package/package.json +39 -0
@@ -0,0 +1,485 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __read = (this && this.__read) || function (o, n) {
14
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
15
+ if (!m) return o;
16
+ var i = m.call(o), r, ar = [], e;
17
+ try {
18
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
19
+ }
20
+ catch (error) { e = { error: error }; }
21
+ finally {
22
+ try {
23
+ if (r && !r.done && (m = i["return"])) m.call(i);
24
+ }
25
+ finally { if (e) throw e.error; }
26
+ }
27
+ return ar;
28
+ };
29
+ var __values = (this && this.__values) || function(o) {
30
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
31
+ if (m) return m.call(o);
32
+ if (o && typeof o.length === "number") return {
33
+ next: function () {
34
+ if (o && i >= o.length) o = void 0;
35
+ return { value: o && o[i++], done: !o };
36
+ }
37
+ };
38
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
39
+ };
40
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
41
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
42
+ if (ar || !(i in from)) {
43
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
44
+ ar[i] = from[i];
45
+ }
46
+ }
47
+ return to.concat(ar || Array.prototype.slice.call(from));
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ exports.usePaged = exports.useFiltered = exports.useSorted = exports.useSelectedInMemory = exports.useSelected = exports.useTableItems = void 0;
54
+ var debounce_1 = __importDefault(require("debounce"));
55
+ var react_1 = require("react");
56
+ function useTableItems(items, keyFn, defaults) {
57
+ var _a = useSelected(items, keyFn), selectedItems = _a.selectedItems, selectItem = _a.selectItem, unselectItem = _a.unselectItem, isSelected = _a.isSelected, selectItems = _a.selectItems, unselectAll = _a.unselectAll, allSelected = _a.allSelected;
58
+ var _b = useSorted(items), sorted = _b.sorted, sort = _b.sort, setSort = _b.setSort;
59
+ var _c = useFiltered(sorted, keyFn), filtered = _c.filtered, setFilterFn = _c.setFilterFn;
60
+ var _d = useSearched(filtered, keyFn, defaults === null || defaults === void 0 ? void 0 : defaults.search), searched = _d.searched, search = _d.search, setSearch = _d.setSearch, setSearchFn = _d.setSearchFn;
61
+ var _e = usePaged(searched), paged = _e.paged, page = _e.page, setPage = _e.setPage, perPage = _e.perPage, setPerPage = _e.setPerPage;
62
+ var selectPage = (0, react_1.useCallback)(function () { return selectItems(paged); }, [paged, selectItems]);
63
+ var selectAll = (0, react_1.useCallback)(function () { return selectItems(searched); }, [searched, selectItems]);
64
+ return (0, react_1.useMemo)(function () { return ({
65
+ allSelected: allSelected,
66
+ filtered: filtered,
67
+ isSelected: isSelected,
68
+ page: page,
69
+ paged: paged,
70
+ perPage: perPage,
71
+ search: search,
72
+ searched: searched,
73
+ selectAll: selectAll,
74
+ selectItem: selectItem,
75
+ selectPage: selectPage,
76
+ selectedItems: selectedItems,
77
+ setFilterFn: setFilterFn,
78
+ setPage: setPage,
79
+ setPerPage: setPerPage,
80
+ setSearch: setSearch,
81
+ setSearchFn: setSearchFn,
82
+ setSort: setSort,
83
+ sort: sort,
84
+ sorted: sorted,
85
+ unselectAll: unselectAll,
86
+ unselectItem: unselectItem,
87
+ }); }, [
88
+ allSelected,
89
+ filtered,
90
+ isSelected,
91
+ page,
92
+ paged,
93
+ perPage,
94
+ search,
95
+ searched,
96
+ selectAll,
97
+ selectItem,
98
+ selectPage,
99
+ selectedItems,
100
+ setFilterFn,
101
+ setPage,
102
+ setPerPage,
103
+ setSearch,
104
+ setSearchFn,
105
+ setSort,
106
+ sort,
107
+ sorted,
108
+ unselectAll,
109
+ unselectItem,
110
+ ]);
111
+ }
112
+ exports.useTableItems = useTableItems;
113
+ function useSelected(items, keyFn) {
114
+ var _a = __read((0, react_1.useState)({}), 2), selectedMap = _a[0], setSelectedMap = _a[1];
115
+ (0, react_1.useEffect)(function () {
116
+ setSelectedMap(function (selectedMap) {
117
+ var changed = false;
118
+ items.forEach(function (item) {
119
+ var key = keyFn(item);
120
+ if (selectedMap[key] && selectedMap[key] !== item) {
121
+ changed = true;
122
+ selectedMap[key] = item;
123
+ }
124
+ });
125
+ return changed ? __assign({}, selectedMap) : selectedMap;
126
+ });
127
+ }, [items, keyFn]);
128
+ var selectItem = (0, react_1.useCallback)(function (item) {
129
+ setSelectedMap(function (selectedMap) {
130
+ var itemKey = keyFn(item);
131
+ var existing = selectedMap[itemKey];
132
+ if (existing !== item) {
133
+ selectedMap = __assign({}, selectedMap);
134
+ selectedMap[itemKey] = item;
135
+ }
136
+ return selectedMap;
137
+ });
138
+ }, [keyFn]);
139
+ var unselectItem = (0, react_1.useCallback)(function (item) {
140
+ setSelectedMap(function (selectedMap) {
141
+ var itemKey = keyFn(item);
142
+ var existing = selectedMap[itemKey];
143
+ if (existing) {
144
+ selectedMap = __assign({}, selectedMap);
145
+ delete selectedMap[itemKey];
146
+ }
147
+ return selectedMap;
148
+ });
149
+ }, [keyFn]);
150
+ var isSelected = (0, react_1.useCallback)(function (item) {
151
+ var itemKey = keyFn(item);
152
+ return selectedMap[itemKey] !== undefined;
153
+ }, [keyFn, selectedMap]);
154
+ var selectItems = (0, react_1.useCallback)(function (items) {
155
+ setSelectedMap(function (selectedMap) {
156
+ var e_1, _a;
157
+ selectedMap = __assign({}, selectedMap);
158
+ try {
159
+ for (var items_1 = __values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {
160
+ var item = items_1_1.value;
161
+ var itemKey = keyFn(item);
162
+ selectedMap[itemKey] = item;
163
+ }
164
+ }
165
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
166
+ finally {
167
+ try {
168
+ if (items_1_1 && !items_1_1.done && (_a = items_1.return)) _a.call(items_1);
169
+ }
170
+ finally { if (e_1) throw e_1.error; }
171
+ }
172
+ return selectedMap;
173
+ });
174
+ }, [keyFn]);
175
+ var selectAll = (0, react_1.useCallback)(function () { return selectItems(items); }, [items, selectItems]);
176
+ var unselectItems = (0, react_1.useCallback)(function (items) {
177
+ var e_2, _a;
178
+ try {
179
+ for (var items_2 = __values(items), items_2_1 = items_2.next(); !items_2_1.done; items_2_1 = items_2.next()) {
180
+ var item = items_2_1.value;
181
+ unselectItem(item);
182
+ }
183
+ }
184
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
185
+ finally {
186
+ try {
187
+ if (items_2_1 && !items_2_1.done && (_a = items_2.return)) _a.call(items_2);
188
+ }
189
+ finally { if (e_2) throw e_2.error; }
190
+ }
191
+ }, [unselectItem]);
192
+ var unselectAll = (0, react_1.useCallback)(function () {
193
+ setSelectedMap(function (selectedMap) {
194
+ if (Object.keys(selectedMap).length > 0) {
195
+ return {};
196
+ }
197
+ return selectedMap;
198
+ });
199
+ }, []);
200
+ var selectedItems = (0, react_1.useMemo)(function () { return Object.values(selectedMap); }, [selectedMap]);
201
+ var allSelected = (0, react_1.useMemo)(function () { return selectedItems.length === items.length; }, [items.length, selectedItems.length]);
202
+ return (0, react_1.useMemo)(function () { return ({
203
+ selectedItems: selectedItems,
204
+ selectItem: selectItem,
205
+ unselectItem: unselectItem,
206
+ isSelected: isSelected,
207
+ selectItems: selectItems,
208
+ selectAll: selectAll,
209
+ unselectAll: unselectAll,
210
+ allSelected: allSelected,
211
+ keyFn: keyFn,
212
+ unselectItems: unselectItems,
213
+ }); }, [
214
+ allSelected,
215
+ isSelected,
216
+ keyFn,
217
+ selectAll,
218
+ selectItem,
219
+ selectItems,
220
+ selectedItems,
221
+ unselectAll,
222
+ unselectItem,
223
+ unselectItems,
224
+ ]);
225
+ }
226
+ exports.useSelected = useSelected;
227
+ function useSelectedInMemory(items, keyFn) {
228
+ var _a = __read((0, react_1.useState)({}), 2), selectedMap = _a[0], setSelectedMap = _a[1];
229
+ (0, react_1.useEffect)(function () {
230
+ setSelectedMap(function (selectedMap) {
231
+ var e_3, _a;
232
+ var changed = false;
233
+ var itemsKeys = items.reduce(function (itemsKeys, item) {
234
+ var key = keyFn(item);
235
+ itemsKeys[key] = item;
236
+ if (selectedMap[key] && selectedMap[key] !== item) {
237
+ changed = true;
238
+ selectedMap[key] = item;
239
+ }
240
+ return itemsKeys;
241
+ }, {});
242
+ var removeKeyMap = {};
243
+ for (var key in selectedMap) {
244
+ if (!itemsKeys[key]) {
245
+ removeKeyMap[key] = true;
246
+ }
247
+ }
248
+ var removeKeys = Object.keys(removeKeyMap);
249
+ if (removeKeys.length) {
250
+ changed = true;
251
+ try {
252
+ for (var removeKeys_1 = __values(removeKeys), removeKeys_1_1 = removeKeys_1.next(); !removeKeys_1_1.done; removeKeys_1_1 = removeKeys_1.next()) {
253
+ var key = removeKeys_1_1.value;
254
+ delete selectedMap[key];
255
+ }
256
+ }
257
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
258
+ finally {
259
+ try {
260
+ if (removeKeys_1_1 && !removeKeys_1_1.done && (_a = removeKeys_1.return)) _a.call(removeKeys_1);
261
+ }
262
+ finally { if (e_3) throw e_3.error; }
263
+ }
264
+ }
265
+ return changed ? __assign({}, selectedMap) : selectedMap;
266
+ });
267
+ }, [items, keyFn]);
268
+ var selectItem = (0, react_1.useCallback)(function (item) {
269
+ setSelectedMap(function (selectedMap) {
270
+ var itemKey = keyFn(item);
271
+ var existing = selectedMap[itemKey];
272
+ if (existing !== item) {
273
+ selectedMap = __assign({}, selectedMap);
274
+ selectedMap[itemKey] = item;
275
+ }
276
+ return selectedMap;
277
+ });
278
+ }, [keyFn]);
279
+ var unselectItem = (0, react_1.useCallback)(function (item) {
280
+ setSelectedMap(function (selectedMap) {
281
+ var itemKey = keyFn(item);
282
+ var existing = selectedMap[itemKey];
283
+ if (existing) {
284
+ selectedMap = __assign({}, selectedMap);
285
+ delete selectedMap[itemKey];
286
+ }
287
+ return selectedMap;
288
+ });
289
+ }, [keyFn]);
290
+ var isSelected = (0, react_1.useCallback)(function (item) {
291
+ var itemKey = keyFn(item);
292
+ return selectedMap[itemKey] !== undefined;
293
+ }, [keyFn, selectedMap]);
294
+ var selectItems = (0, react_1.useCallback)(function (items) {
295
+ setSelectedMap(function (selectedMap) {
296
+ var e_4, _a;
297
+ selectedMap = __assign({}, selectedMap);
298
+ try {
299
+ for (var items_3 = __values(items), items_3_1 = items_3.next(); !items_3_1.done; items_3_1 = items_3.next()) {
300
+ var item = items_3_1.value;
301
+ var itemKey = keyFn(item);
302
+ selectedMap[itemKey] = item;
303
+ }
304
+ }
305
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
306
+ finally {
307
+ try {
308
+ if (items_3_1 && !items_3_1.done && (_a = items_3.return)) _a.call(items_3);
309
+ }
310
+ finally { if (e_4) throw e_4.error; }
311
+ }
312
+ return selectedMap;
313
+ });
314
+ }, [keyFn]);
315
+ var selectAll = (0, react_1.useCallback)(function () {
316
+ selectItems(items);
317
+ }, [items, selectItems]);
318
+ var unselectAll = (0, react_1.useCallback)(function () {
319
+ setSelectedMap(function (selectedMap) {
320
+ if (Object.keys(selectedMap).length > 0) {
321
+ return {};
322
+ }
323
+ return selectedMap;
324
+ });
325
+ }, []);
326
+ var selectedItems = (0, react_1.useMemo)(function () { return Object.values(selectedMap); }, [selectedMap]);
327
+ var allSelected = (0, react_1.useMemo)(function () { return selectedItems.length === items.length; }, [items.length, selectedItems.length]);
328
+ return (0, react_1.useMemo)(function () { return ({
329
+ selectedItems: selectedItems,
330
+ selectItem: selectItem,
331
+ unselectItem: unselectItem,
332
+ isSelected: isSelected,
333
+ selectItems: selectItems,
334
+ selectAll: selectAll,
335
+ unselectAll: unselectAll,
336
+ allSelected: allSelected,
337
+ keyFn: keyFn,
338
+ }); }, [
339
+ allSelected,
340
+ isSelected,
341
+ keyFn,
342
+ selectAll,
343
+ selectItem,
344
+ selectItems,
345
+ selectedItems,
346
+ unselectAll,
347
+ unselectItem,
348
+ ]);
349
+ }
350
+ exports.useSelectedInMemory = useSelectedInMemory;
351
+ function useSorted(items) {
352
+ var _a = __read((0, react_1.useState)(), 2), sort = _a[0], setSort = _a[1];
353
+ var _b = sort !== null && sort !== void 0 ? sort : {}, direction = _b.direction, sortFn = _b.sortFn;
354
+ var sorted = (0, react_1.useMemo)(function () {
355
+ if (sortFn) {
356
+ if (direction === 'asc') {
357
+ return __spreadArray([], __read(items.sort(sortFn)), false);
358
+ }
359
+ else {
360
+ return __spreadArray([], __read(items.sort(sortFn).reverse()), false);
361
+ }
362
+ }
363
+ else {
364
+ return items;
365
+ }
366
+ }, [direction, items, sortFn]);
367
+ return (0, react_1.useMemo)(function () { return ({ sorted: sorted, sort: sort, setSort: setSort }); }, [sort, sorted]);
368
+ }
369
+ exports.useSorted = useSorted;
370
+ function useFiltered(items, keyFn) {
371
+ var filterMapRef = (0, react_1.useRef)({
372
+ map: {},
373
+ });
374
+ var _a = __read((0, react_1.useState)(), 2), filterFn = _a[0], setFilterFnState = _a[1];
375
+ var setFilterFn = (0, react_1.useCallback)(function (filterFn) { return setFilterFnState(function () { return filterFn; }); }, []);
376
+ var _b = __read((0, react_1.useState)([]), 2), filtered = _b[0], setFiltered = _b[1];
377
+ (0, react_1.useEffect)(function () {
378
+ filterMapRef.current.map = {};
379
+ }, [filterFn]);
380
+ var cachedFilterFn = (0, react_1.useCallback)(function (item) {
381
+ var key = keyFn(item);
382
+ var cached = filterMapRef.current.map[key];
383
+ if (!cached) {
384
+ cached = { item: item, passes: filterFn ? filterFn(item) : true };
385
+ filterMapRef.current.map[key] = cached;
386
+ }
387
+ else if (cached.item !== item) {
388
+ cached.item = item;
389
+ cached.passes = filterFn ? filterFn(item) : true;
390
+ }
391
+ return cached.passes;
392
+ }, [filterFn, keyFn]);
393
+ (0, react_1.useEffect)(function () {
394
+ if (filterFn) {
395
+ setFiltered(items.filter(cachedFilterFn));
396
+ }
397
+ else {
398
+ setFiltered(items);
399
+ }
400
+ }, [items, filterFn, cachedFilterFn]);
401
+ return (0, react_1.useMemo)(function memoFiltered() {
402
+ return { filtered: filtered, setFilterFn: setFilterFn };
403
+ }, [filtered, setFilterFn]);
404
+ }
405
+ exports.useFiltered = useFiltered;
406
+ function useSearched(items, keyFn, defaultSearch) {
407
+ var searchMapRef = (0, react_1.useRef)({
408
+ map: {},
409
+ });
410
+ var _a = __read((0, react_1.useState)(), 2), searchFn = _a[0], setSearchFnState = _a[1];
411
+ var setSearchFn = (0, react_1.useCallback)(function (searchFn) { return setSearchFnState(function () { return searchFn; }); }, []);
412
+ var _b = __read((0, react_1.useState)([]), 2), searched = _b[0], setSearched = _b[1];
413
+ var _c = __read((0, react_1.useState)(defaultSearch !== null && defaultSearch !== void 0 ? defaultSearch : ''), 2), search = _c[0], setSearchState = _c[1];
414
+ // eslint-disable-next-line react-hooks/exhaustive-deps
415
+ var setSearch = (0, react_1.useCallback)((0, debounce_1.default)(function (search) { return setSearchState(search); }, 200), []);
416
+ (0, react_1.useEffect)(function () {
417
+ searchMapRef.current.map = {};
418
+ }, [search, searchFn]);
419
+ var cachedSearchFn = (0, react_1.useCallback)(function (item) {
420
+ var key = keyFn(item);
421
+ var cached = searchMapRef.current.map[key];
422
+ if (!cached) {
423
+ cached = { item: item, score: searchFn ? searchFn(item, search) : 0 };
424
+ searchMapRef.current.map[key] = cached;
425
+ }
426
+ else if (cached.item !== item) {
427
+ cached.item = item;
428
+ cached.score = searchFn ? searchFn(item, search) : 0;
429
+ }
430
+ return cached;
431
+ }, [keyFn, searchFn, search]);
432
+ (0, react_1.useEffect)(function () {
433
+ if (searchFn && search) {
434
+ setSearched(items
435
+ .map(cachedSearchFn)
436
+ .filter(function (cached) { return cached.score < 0.5; })
437
+ .sort(function (l, r) { return l.score - r.score; })
438
+ .map(function (cached) { return cached.item; }));
439
+ }
440
+ else {
441
+ setSearched(items);
442
+ }
443
+ }, [search, items, searchFn, cachedSearchFn]);
444
+ return (0, react_1.useMemo)(function memoFiltered() {
445
+ return { searched: searched, search: search, setSearch: setSearch, setSearchFn: setSearchFn };
446
+ }, [searched, search, setSearch, setSearchFn]);
447
+ }
448
+ function usePaged(source) {
449
+ var _a = __read((0, react_1.useState)([]), 2), paged = _a[0], setPaged = _a[1];
450
+ var _b = __read((0, react_1.useState)(1), 2), page = _b[0], setPage = _b[1];
451
+ var _c = __read((0, react_1.useState)(10), 2), perPage = _c[0], setPerPage = _c[1];
452
+ (0, react_1.useEffect)(function () {
453
+ setPaged(function (paged) {
454
+ var e_5, _a;
455
+ var newPaged = source.slice((page - 1) * perPage, page * perPage);
456
+ if (paged.length !== newPaged.length) {
457
+ return newPaged;
458
+ }
459
+ var index = 0;
460
+ try {
461
+ for (var newPaged_1 = __values(newPaged), newPaged_1_1 = newPaged_1.next(); !newPaged_1_1.done; newPaged_1_1 = newPaged_1.next()) {
462
+ var item = newPaged_1_1.value;
463
+ if (paged[index++] !== item) {
464
+ return newPaged;
465
+ }
466
+ }
467
+ }
468
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
469
+ finally {
470
+ try {
471
+ if (newPaged_1_1 && !newPaged_1_1.done && (_a = newPaged_1.return)) _a.call(newPaged_1);
472
+ }
473
+ finally { if (e_5) throw e_5.error; }
474
+ }
475
+ return paged;
476
+ });
477
+ }, [page, perPage, source]);
478
+ (0, react_1.useEffect)(function () {
479
+ if (page > Math.ceil(source.length / perPage)) {
480
+ setPage(1);
481
+ }
482
+ }, [page, perPage, source.length]);
483
+ return (0, react_1.useMemo)(function () { return ({ paged: paged, page: page, setPage: setPage, perPage: perPage, setPerPage: setPerPage }); }, [page, paged, perPage]);
484
+ }
485
+ exports.usePaged = usePaged;
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ var __values = (this && this.__values) || function(o) {
19
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
20
+ if (m) return m.call(o);
21
+ if (o && typeof o.length === "number") return {
22
+ next: function () {
23
+ if (o && i >= o.length) o = void 0;
24
+ return { value: o && o[i++], done: !o };
25
+ }
26
+ };
27
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.useView = void 0;
31
+ var react_1 = require("react");
32
+ var react_router_dom_1 = require("react-router-dom");
33
+ function useView(view, disableQueryString) {
34
+ var _a = __read((0, react_router_dom_1.useSearchParams)(), 2), searchParams = _a[0], setSearchParams = _a[1];
35
+ var _b = __read((0, react_1.useState)(function () {
36
+ var _a;
37
+ if (!disableQueryString) {
38
+ var queryPage = searchParams.get('page');
39
+ if (queryPage) {
40
+ var page_1 = Number(queryPage);
41
+ if (Number.isInteger(page_1)) {
42
+ return page_1;
43
+ }
44
+ }
45
+ }
46
+ return (_a = view === null || view === void 0 ? void 0 : view.page) !== null && _a !== void 0 ? _a : 1;
47
+ }), 2), page = _b[0], setPage = _b[1];
48
+ var _c = __read((0, react_1.useState)(function () {
49
+ var _a;
50
+ if (!disableQueryString) {
51
+ var queryPerPage = searchParams.get('perPage');
52
+ if (queryPerPage) {
53
+ var perPage_1 = Number(queryPerPage);
54
+ if (Number.isInteger(perPage_1)) {
55
+ return perPage_1;
56
+ }
57
+ }
58
+ }
59
+ var localPerPage = localStorage.getItem('perPage');
60
+ if (localPerPage) {
61
+ var perPage_2 = Number(localPerPage);
62
+ if (Number.isInteger(perPage_2)) {
63
+ return perPage_2;
64
+ }
65
+ }
66
+ return (_a = view === null || view === void 0 ? void 0 : view.perPage) !== null && _a !== void 0 ? _a : 10;
67
+ }), 2), perPage = _c[0], setPerPage = _c[1];
68
+ var _d = __read((0, react_1.useState)(function () {
69
+ var _a;
70
+ if (!disableQueryString) {
71
+ var querySort = searchParams.get('sort');
72
+ if (querySort) {
73
+ if (querySort.startsWith('-'))
74
+ return querySort.slice(1);
75
+ return querySort;
76
+ }
77
+ }
78
+ return (_a = view === null || view === void 0 ? void 0 : view.sort) !== null && _a !== void 0 ? _a : '';
79
+ }), 2), sort = _d[0], setSort = _d[1];
80
+ var _e = __read((0, react_1.useState)(function () {
81
+ var _a;
82
+ if (!disableQueryString) {
83
+ var querySort = searchParams.get('sort');
84
+ if (querySort) {
85
+ if (querySort.startsWith('-'))
86
+ return 'desc';
87
+ return 'asc';
88
+ }
89
+ }
90
+ return (_a = view === null || view === void 0 ? void 0 : view.sortDirection) !== null && _a !== void 0 ? _a : 'asc';
91
+ }), 2), sortDirection = _e[0], setSortDirection = _e[1];
92
+ var _f = __read((0, react_1.useState)(function () {
93
+ var e_1, _a;
94
+ var _b;
95
+ var filters = {};
96
+ try {
97
+ for (var _c = __values(searchParams.keys()), _d = _c.next(); !_d.done; _d = _c.next()) {
98
+ var key = _d.value;
99
+ switch (key) {
100
+ case 'sort':
101
+ case 'page':
102
+ case 'perPage':
103
+ break;
104
+ default: {
105
+ var value = searchParams.get(key);
106
+ if (value) {
107
+ var values = value.split(',');
108
+ filters[key] = values;
109
+ }
110
+ }
111
+ }
112
+ }
113
+ }
114
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
115
+ finally {
116
+ try {
117
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
118
+ }
119
+ finally { if (e_1) throw e_1.error; }
120
+ }
121
+ if (Object.keys(filters))
122
+ return filters;
123
+ return (_b = view === null || view === void 0 ? void 0 : view.filters) !== null && _b !== void 0 ? _b : {};
124
+ }), 2), filters = _f[0], setFilters = _f[1];
125
+ var clearAllFilters = (0, react_1.useCallback)(function () { return setFilters({}); }, [setFilters]);
126
+ (0, react_1.useEffect)(function () {
127
+ if (disableQueryString)
128
+ return;
129
+ var newSearchParams = new URLSearchParams();
130
+ sortDirection === 'asc'
131
+ ? newSearchParams.set('sort', sort)
132
+ : newSearchParams.set('sort', "-".concat(sort));
133
+ newSearchParams.set('page', page.toString());
134
+ newSearchParams.set('perPage', perPage.toString());
135
+ for (var filter in filters) {
136
+ newSearchParams.set(filter, filters[filter].join(','));
137
+ }
138
+ localStorage.setItem('perPage', perPage.toString());
139
+ setSearchParams(newSearchParams, { replace: true });
140
+ }, [sort, sortDirection, setSearchParams, disableQueryString, page, perPage, filters]);
141
+ return (0, react_1.useMemo)(function () { return ({
142
+ page: page,
143
+ setPage: setPage,
144
+ perPage: perPage,
145
+ setPerPage: setPerPage,
146
+ sort: sort,
147
+ setSort: setSort,
148
+ sortDirection: sortDirection,
149
+ setSortDirection: setSortDirection,
150
+ filters: filters,
151
+ setFilters: setFilters,
152
+ clearAllFilters: clearAllFilters,
153
+ }); }, [clearAllFilters, filters, page, perPage, sort, sortDirection]);
154
+ }
155
+ exports.useView = useView;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ /* istanbul ignore file */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.compareNumbers = exports.compareStrings = exports.compareUnknowns = void 0;
5
+ function compareUnknowns(a, b) {
6
+ /* istanbul ignore next */
7
+ if (a == undefined && b == undefined)
8
+ return 0;
9
+ /* istanbul ignore next */
10
+ if (a == undefined)
11
+ return 1;
12
+ /* istanbul ignore next */
13
+ if (b == undefined)
14
+ return -1;
15
+ /* istanbul ignore else */
16
+ if (typeof a === 'string') {
17
+ /* istanbul ignore else */
18
+ if (typeof b === 'string') {
19
+ return compareStrings(a, b);
20
+ }
21
+ else if (typeof b === 'number') {
22
+ return compareStrings(a, b.toString());
23
+ }
24
+ }
25
+ else if (typeof a === 'number') {
26
+ /* istanbul ignore else */
27
+ if (typeof b === 'number') {
28
+ return compareNumbers(a, b);
29
+ }
30
+ else if (typeof b === 'string') {
31
+ return compareStrings(a.toString(), b);
32
+ }
33
+ }
34
+ /* istanbul ignore next */
35
+ return 0;
36
+ }
37
+ exports.compareUnknowns = compareUnknowns;
38
+ /* istanbul ignore next */
39
+ function compareStrings(a, b) {
40
+ if (a == undefined && b == undefined)
41
+ return 0;
42
+ if (a == undefined)
43
+ return 1;
44
+ if (b == undefined)
45
+ return -1;
46
+ return a < b ? -1 : a > b ? 1 : 0;
47
+ }
48
+ exports.compareStrings = compareStrings;
49
+ /* istanbul ignore next */
50
+ function compareNumbers(a, b) {
51
+ if (a == undefined && b == undefined)
52
+ return 0;
53
+ if (a == undefined)
54
+ return 1;
55
+ if (b == undefined)
56
+ return -1;
57
+ return a < b ? -1 : a > b ? 1 : 0;
58
+ }
59
+ exports.compareNumbers = compareNumbers;