@ansible/ansible-ui-framework 0.0.190

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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;