@panneau/data 3.0.169 → 3.0.173
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/es/index.js +487 -20
- package/lib/index.js +1042 -571
- package/package.json +4 -2
package/es/index.js
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import PropTypes from 'prop-types';
|
|
2
|
-
import React, { useState, useCallback, useEffect,
|
|
2
|
+
import React, { useState, useCallback, useEffect, useMemo, useRef, useContext } from 'react';
|
|
3
3
|
import { useUrlGenerator } from '@panneau/core/contexts';
|
|
4
4
|
import _createClass from '@babel/runtime/helpers/createClass';
|
|
5
5
|
import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
|
|
6
6
|
import _callSuper from '@babel/runtime/helpers/callSuper';
|
|
7
7
|
import _inherits from '@babel/runtime/helpers/inherits';
|
|
8
8
|
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
9
|
-
import {
|
|
9
|
+
import { getJSON, getCSRFHeaders, postJSON } from '@folklore/fetch';
|
|
10
10
|
import { generatePath } from '@folklore/routes';
|
|
11
11
|
import queryString from 'query-string';
|
|
12
|
+
import { useQuery, keepPreviousData, QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
12
13
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
13
|
-
import
|
|
14
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
14
15
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
16
|
+
import isEmpty from 'lodash/isEmpty';
|
|
17
|
+
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
15
18
|
|
|
16
19
|
var useData = function useData(loadData) {
|
|
17
20
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
@@ -70,6 +73,231 @@ var useData = function useData(loadData) {
|
|
|
70
73
|
};
|
|
71
74
|
var useData$1 = useData;
|
|
72
75
|
|
|
76
|
+
var _excluded$3 = ["store", "url", "paginated", "query", "onQueryChange", "queryConfig", "keepData"],
|
|
77
|
+
_excluded2$1 = ["page", "count"],
|
|
78
|
+
_excluded3 = ["data", "refetch", "isLoading", "isFetched", "status", "error"];
|
|
79
|
+
var useItems$2 = function useItems(_ref) {
|
|
80
|
+
var store = _ref.store,
|
|
81
|
+
url = _ref.url,
|
|
82
|
+
_ref$paginated = _ref.paginated,
|
|
83
|
+
initialPaginated = _ref$paginated === void 0 ? false : _ref$paginated,
|
|
84
|
+
_ref$query = _ref.query,
|
|
85
|
+
initialQuery = _ref$query === void 0 ? null : _ref$query,
|
|
86
|
+
onQueryChange = _ref.onQueryChange,
|
|
87
|
+
_ref$queryConfig = _ref.queryConfig,
|
|
88
|
+
queryConfig = _ref$queryConfig === void 0 ? null : _ref$queryConfig,
|
|
89
|
+
_ref$keepData = _ref.keepData,
|
|
90
|
+
keepData = _ref$keepData === void 0 ? true : _ref$keepData,
|
|
91
|
+
oldProps = _objectWithoutProperties(_ref, _excluded$3);
|
|
92
|
+
// Legacy
|
|
93
|
+
var _ref2 = oldProps || {},
|
|
94
|
+
_ref2$getPage = _ref2.getPage,
|
|
95
|
+
getPage = _ref2$getPage === void 0 ? null : _ref2$getPage,
|
|
96
|
+
_ref2$getItems = _ref2.getItems,
|
|
97
|
+
getItems = _ref2$getItems === void 0 ? null : _ref2$getItems,
|
|
98
|
+
_ref2$page = _ref2.page,
|
|
99
|
+
oldPage = _ref2$page === void 0 ? null : _ref2$page,
|
|
100
|
+
_ref2$count = _ref2.count,
|
|
101
|
+
oldCount = _ref2$count === void 0 ? null : _ref2$count,
|
|
102
|
+
_ref2$items = _ref2.items,
|
|
103
|
+
providedItems = _ref2$items === void 0 ? null : _ref2$items,
|
|
104
|
+
_ref2$pages = _ref2.pages,
|
|
105
|
+
initialPages = _ref2$pages === void 0 ? null : _ref2$pages,
|
|
106
|
+
_ref2$getPageFromResp = _ref2.getPageFromResponse,
|
|
107
|
+
getPageFromResponse = _ref2$getPageFromResp === void 0 ? function () {
|
|
108
|
+
var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
109
|
+
_ref3$pagination = _ref3.pagination,
|
|
110
|
+
_ref3$pagination$page = _ref3$pagination.page,
|
|
111
|
+
currentPage = _ref3$pagination$page === void 0 ? null : _ref3$pagination$page,
|
|
112
|
+
_ref3$pagination$last = _ref3$pagination.last_page,
|
|
113
|
+
lastPage = _ref3$pagination$last === void 0 ? null : _ref3$pagination$last,
|
|
114
|
+
_ref3$pagination$tota = _ref3$pagination.total,
|
|
115
|
+
total = _ref3$pagination$tota === void 0 ? null : _ref3$pagination$tota,
|
|
116
|
+
_ref3$pagination$per_ = _ref3$pagination.per_page,
|
|
117
|
+
perPage = _ref3$pagination$per_ === void 0 ? null : _ref3$pagination$per_,
|
|
118
|
+
_ref3$data = _ref3.data,
|
|
119
|
+
items = _ref3$data === void 0 ? null : _ref3$data;
|
|
120
|
+
return {
|
|
121
|
+
page: parseInt(currentPage, 10),
|
|
122
|
+
lastPage: parseInt(lastPage, 10),
|
|
123
|
+
total: parseInt(total, 10),
|
|
124
|
+
count: parseInt(perPage, 10),
|
|
125
|
+
items: items
|
|
126
|
+
};
|
|
127
|
+
} : _ref2$getPageFromResp,
|
|
128
|
+
_ref2$getItemsFromRes = _ref2.getItemsFromResponse,
|
|
129
|
+
getItemsFromResponse = _ref2$getItemsFromRes === void 0 ? function (data) {
|
|
130
|
+
return data;
|
|
131
|
+
} : _ref2$getItemsFromRes,
|
|
132
|
+
_ref2$onItemsLoaded = _ref2.onItemsLoaded,
|
|
133
|
+
onItemsLoaded = _ref2$onItemsLoaded === void 0 ? null : _ref2$onItemsLoaded,
|
|
134
|
+
_ref2$onPageLoaded = _ref2.onPageLoaded,
|
|
135
|
+
onPageLoaded = _ref2$onPageLoaded === void 0 ? null : _ref2$onPageLoaded,
|
|
136
|
+
_ref2$onLoaded = _ref2.onLoaded,
|
|
137
|
+
onLoaded = _ref2$onLoaded === void 0 ? null : _ref2$onLoaded,
|
|
138
|
+
_ref2$onError = _ref2.onError,
|
|
139
|
+
onError = _ref2$onError === void 0 ? null : _ref2$onError;
|
|
140
|
+
var paginated = useMemo(function () {
|
|
141
|
+
return getPage !== null || initialPages !== null || initialPaginated;
|
|
142
|
+
}, [getPage, initialPages, initialPaginated]);
|
|
143
|
+
var query = useMemo(function () {
|
|
144
|
+
// Backwards compatible
|
|
145
|
+
if (oldPage !== null || oldCount !== null) {
|
|
146
|
+
return _objectSpread({
|
|
147
|
+
page: oldPage,
|
|
148
|
+
count: oldCount
|
|
149
|
+
}, initialQuery);
|
|
150
|
+
}
|
|
151
|
+
return initialQuery;
|
|
152
|
+
}, [initialQuery]);
|
|
153
|
+
var _ref4 = query || {},
|
|
154
|
+
_ref4$page = _ref4.page,
|
|
155
|
+
page = _ref4$page === void 0 ? null : _ref4$page,
|
|
156
|
+
_ref4$count = _ref4.count,
|
|
157
|
+
count = _ref4$count === void 0 ? null : _ref4$count,
|
|
158
|
+
queryWithoutPageAndCount = _objectWithoutProperties(_ref4, _excluded2$1);
|
|
159
|
+
var queryKey = useMemo(function () {
|
|
160
|
+
return paginated && getPage !== null ? [store, page, count || 10, queryWithoutPageAndCount] : [store, query];
|
|
161
|
+
}, [paginated, page, count, queryWithoutPageAndCount]);
|
|
162
|
+
var _useQuery = useQuery(_objectSpread(_objectSpread(_objectSpread({
|
|
163
|
+
queryKey: queryKey,
|
|
164
|
+
queryFn: function queryFn(_ref5) {
|
|
165
|
+
var key = _ref5.queryKey;
|
|
166
|
+
if (paginated && getPage !== null) {
|
|
167
|
+
var _key = _slicedToArray(key, 4),
|
|
168
|
+
_key$ = _key[1],
|
|
169
|
+
p = _key$ === void 0 ? null : _key$,
|
|
170
|
+
_key$2 = _key[2],
|
|
171
|
+
c = _key$2 === void 0 ? null : _key$2,
|
|
172
|
+
_key$3 = _key[3],
|
|
173
|
+
_q = _key$3 === void 0 ? null : _key$3;
|
|
174
|
+
return getPage(p, c, _q);
|
|
175
|
+
}
|
|
176
|
+
if (!paginated && getItems !== null) {
|
|
177
|
+
var _key2 = _slicedToArray(key, 2),
|
|
178
|
+
_key2$ = _key2[1],
|
|
179
|
+
_q2 = _key2$ === void 0 ? null : _key2$;
|
|
180
|
+
return getItems(_q2);
|
|
181
|
+
}
|
|
182
|
+
var _key3 = _slicedToArray(key, 2),
|
|
183
|
+
_key3$ = _key3[1],
|
|
184
|
+
q = _key3$ === void 0 ? null : _key3$;
|
|
185
|
+
return getJSON("".concat(url).concat(!isEmpty(q) ? "?".concat(queryString.stringify(q, {
|
|
186
|
+
arrayFormat: 'bracket'
|
|
187
|
+
})) : ''));
|
|
188
|
+
}
|
|
189
|
+
}, keepData ? {
|
|
190
|
+
placeholderData: keepPreviousData
|
|
191
|
+
} : null), providedItems !== null ? {
|
|
192
|
+
initialData: providedItems
|
|
193
|
+
} : null), queryConfig)),
|
|
194
|
+
_useQuery$data = _useQuery.data,
|
|
195
|
+
data = _useQuery$data === void 0 ? null : _useQuery$data,
|
|
196
|
+
reload = _useQuery.refetch,
|
|
197
|
+
loading = _useQuery.isLoading,
|
|
198
|
+
loaded = _useQuery.isFetched,
|
|
199
|
+
_useQuery$status = _useQuery.status,
|
|
200
|
+
status = _useQuery$status === void 0 ? null : _useQuery$status,
|
|
201
|
+
_useQuery$error = _useQuery.error,
|
|
202
|
+
error = _useQuery$error === void 0 ? null : _useQuery$error,
|
|
203
|
+
otherProps = _objectWithoutProperties(_useQuery, _excluded3);
|
|
204
|
+
var _ref6 = data || {},
|
|
205
|
+
_ref6$data = _ref6.data,
|
|
206
|
+
items = _ref6$data === void 0 ? [] : _ref6$data,
|
|
207
|
+
_ref6$pagination = _ref6.pagination,
|
|
208
|
+
pagination = _ref6$pagination === void 0 ? null : _ref6$pagination;
|
|
209
|
+
var _ref7 = pagination || {},
|
|
210
|
+
_ref7$page = _ref7.page,
|
|
211
|
+
currentPage = _ref7$page === void 0 ? null : _ref7$page,
|
|
212
|
+
_ref7$last_page = _ref7.last_page,
|
|
213
|
+
lastPage = _ref7$last_page === void 0 ? null : _ref7$last_page,
|
|
214
|
+
_ref7$total = _ref7.total,
|
|
215
|
+
total = _ref7$total === void 0 ? null : _ref7$total;
|
|
216
|
+
var loadNextPage = useCallback(function () {
|
|
217
|
+
if (onQueryChange !== null && paginated && page !== null && page < lastPage) {
|
|
218
|
+
onQueryChange(_objectSpread(_objectSpread({}, query), {}, {
|
|
219
|
+
page: page + 1
|
|
220
|
+
}));
|
|
221
|
+
}
|
|
222
|
+
}, [paginated, pagination, page]);
|
|
223
|
+
var loadPage = useCallback(function (newPage) {
|
|
224
|
+
if (onQueryChange !== null && newPage !== null) {
|
|
225
|
+
onQueryChange(_objectSpread(_objectSpread({}, query), {}, {
|
|
226
|
+
page: newPage
|
|
227
|
+
}));
|
|
228
|
+
}
|
|
229
|
+
}, [query, onQueryChange]);
|
|
230
|
+
var pages = useRef(null);
|
|
231
|
+
useEffect(function () {
|
|
232
|
+
if (loaded && page !== null && data !== null) {
|
|
233
|
+
pages.current = _objectSpread(_objectSpread({}, pages.current), {}, _defineProperty({}, page, data));
|
|
234
|
+
}
|
|
235
|
+
}, [loaded, page, data]);
|
|
236
|
+
var finalItems = useMemo(function () {
|
|
237
|
+
if (data === null) {
|
|
238
|
+
return data;
|
|
239
|
+
}
|
|
240
|
+
if (paginated) {
|
|
241
|
+
if (getPageFromResponse !== null) {
|
|
242
|
+
return items;
|
|
243
|
+
}
|
|
244
|
+
return items;
|
|
245
|
+
}
|
|
246
|
+
if (getItemsFromResponse !== null) {
|
|
247
|
+
return getItemsFromResponse(data);
|
|
248
|
+
}
|
|
249
|
+
return data;
|
|
250
|
+
}, [items, data, paginated, getPageFromResponse, getItemsFromResponse]);
|
|
251
|
+
|
|
252
|
+
// Pseudo-events for compatibility
|
|
253
|
+
useEffect(function () {
|
|
254
|
+
if (status === 'success') {
|
|
255
|
+
if (onPageLoaded !== null && paginated) {
|
|
256
|
+
onItemsLoaded(data);
|
|
257
|
+
}
|
|
258
|
+
if (onItemsLoaded !== null && !paginated) {
|
|
259
|
+
onItemsLoaded(data);
|
|
260
|
+
}
|
|
261
|
+
if (onLoaded !== null) {
|
|
262
|
+
onLoaded(data);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
if (status === 'error' && onError !== null) {
|
|
266
|
+
onError(error);
|
|
267
|
+
}
|
|
268
|
+
}, [status]);
|
|
269
|
+
var allItems = pages.current !== null ? Object.keys(pages.current).flatMap(function (k) {
|
|
270
|
+
var _pages$current$k;
|
|
271
|
+
return (_pages$current$k = pages.current[k]) === null || _pages$current$k === void 0 ? void 0 : _pages$current$k.data;
|
|
272
|
+
}) : null;
|
|
273
|
+
return _objectSpread(_objectSpread({}, otherProps), {}, {
|
|
274
|
+
items: finalItems,
|
|
275
|
+
allItems: allItems,
|
|
276
|
+
pages: pages.current,
|
|
277
|
+
pageItems: paginated ? finalItems : null,
|
|
278
|
+
pagination: paginated ? {
|
|
279
|
+
page: currentPage,
|
|
280
|
+
lastPage: lastPage,
|
|
281
|
+
total: total
|
|
282
|
+
} : null,
|
|
283
|
+
total: total,
|
|
284
|
+
lastPage: lastPage,
|
|
285
|
+
loaded: loaded,
|
|
286
|
+
allLoaded: paginated && pages.current !== null && Object.keys(pages.current).length === lastPage || !paginated && loaded,
|
|
287
|
+
// very basic stuff, TODO
|
|
288
|
+
loading: loading,
|
|
289
|
+
loadNextPage: loadNextPage,
|
|
290
|
+
loadPage: loadPage,
|
|
291
|
+
reloadPage: reload,
|
|
292
|
+
reload: reload,
|
|
293
|
+
reset: reload,
|
|
294
|
+
updateItem: null,
|
|
295
|
+
status: status,
|
|
296
|
+
error: error
|
|
297
|
+
});
|
|
298
|
+
};
|
|
299
|
+
var useItems$3 = useItems$2;
|
|
300
|
+
|
|
73
301
|
var useItems = function useItems(_ref) {
|
|
74
302
|
var _ref$getPage = _ref.getPage,
|
|
75
303
|
getPage = _ref$getPage === void 0 ? null : _ref$getPage,
|
|
@@ -342,6 +570,193 @@ var useItems = function useItems(_ref) {
|
|
|
342
570
|
};
|
|
343
571
|
var useItems$1 = useItems;
|
|
344
572
|
|
|
573
|
+
var _excluded$2 = ["page", "count"],
|
|
574
|
+
_excluded2 = ["data", "refetch", "isLoading", "isFetched"];
|
|
575
|
+
var useItemsStore = function useItemsStore(store, _ref) {
|
|
576
|
+
var _ref$url = _ref.url,
|
|
577
|
+
url = _ref$url === void 0 ? null : _ref$url,
|
|
578
|
+
_ref$getPage = _ref.getPage,
|
|
579
|
+
getPage = _ref$getPage === void 0 ? null : _ref$getPage,
|
|
580
|
+
_ref$getItems = _ref.getItems,
|
|
581
|
+
getItems = _ref$getItems === void 0 ? null : _ref$getItems,
|
|
582
|
+
_ref$getPageFromRespo = _ref.getPageFromResponse,
|
|
583
|
+
getPageFromResponse = _ref$getPageFromRespo === void 0 ? null : _ref$getPageFromRespo,
|
|
584
|
+
_ref$getItemsFromResp = _ref.getItemsFromResponse,
|
|
585
|
+
getItemsFromResponse = _ref$getItemsFromResp === void 0 ? null : _ref$getItemsFromResp,
|
|
586
|
+
_ref$page = _ref.page,
|
|
587
|
+
initialPage = _ref$page === void 0 ? null : _ref$page,
|
|
588
|
+
_ref$count = _ref.count,
|
|
589
|
+
initialCount = _ref$count === void 0 ? null : _ref$count,
|
|
590
|
+
_ref$query = _ref.query,
|
|
591
|
+
query = _ref$query === void 0 ? null : _ref$query,
|
|
592
|
+
_ref$onQueryChange = _ref.onQueryChange,
|
|
593
|
+
onQueryChange = _ref$onQueryChange === void 0 ? null : _ref$onQueryChange,
|
|
594
|
+
_ref$queryConfig = _ref.queryConfig,
|
|
595
|
+
queryConfig = _ref$queryConfig === void 0 ? null : _ref$queryConfig,
|
|
596
|
+
_ref$keepData = _ref.keepData,
|
|
597
|
+
keepData = _ref$keepData === void 0 ? true : _ref$keepData;
|
|
598
|
+
var _ref2 = query || {},
|
|
599
|
+
_ref2$page = _ref2.page,
|
|
600
|
+
page = _ref2$page === void 0 ? initialPage : _ref2$page,
|
|
601
|
+
_ref2$count = _ref2.count,
|
|
602
|
+
count = _ref2$count === void 0 ? initialCount : _ref2$count,
|
|
603
|
+
queryWithoutPage = _objectWithoutProperties(_ref2, _excluded$2);
|
|
604
|
+
var paginated = page !== null;
|
|
605
|
+
var queryKey = useMemo(function () {
|
|
606
|
+
return paginated ? [store, page || 1, count || 12, queryWithoutPage] : [store, query];
|
|
607
|
+
}, [paginated, store, page, count, query, queryWithoutPage, getPage, getItems]);
|
|
608
|
+
|
|
609
|
+
// console.log('queryKey', queryKey, 'paginated', paginated);
|
|
610
|
+
|
|
611
|
+
var _useQuery = useQuery(_objectSpread(_objectSpread({
|
|
612
|
+
queryKey: queryKey,
|
|
613
|
+
queryFn: function queryFn(_ref3) {
|
|
614
|
+
var _ref3$queryKey = _ref3.queryKey,
|
|
615
|
+
key = _ref3$queryKey === void 0 ? null : _ref3$queryKey;
|
|
616
|
+
if (paginated && getPage !== null) {
|
|
617
|
+
var _key = _slicedToArray(key, 4),
|
|
618
|
+
_key$ = _key[1],
|
|
619
|
+
p = _key$ === void 0 ? null : _key$,
|
|
620
|
+
_key$2 = _key[2],
|
|
621
|
+
c = _key$2 === void 0 ? null : _key$2,
|
|
622
|
+
_key$3 = _key[3],
|
|
623
|
+
_q = _key$3 === void 0 ? null : _key$3;
|
|
624
|
+
return getPage(p, c, _q);
|
|
625
|
+
}
|
|
626
|
+
if (!paginated && getItems !== null) {
|
|
627
|
+
var _key2 = _slicedToArray(key, 2),
|
|
628
|
+
_key2$ = _key2[1],
|
|
629
|
+
_q2 = _key2$ === void 0 ? null : _key2$;
|
|
630
|
+
return getItems(_q2);
|
|
631
|
+
}
|
|
632
|
+
var _key3 = _slicedToArray(key, 2),
|
|
633
|
+
_key3$ = _key3[1],
|
|
634
|
+
q = _key3$ === void 0 ? null : _key3$;
|
|
635
|
+
return getJSON("".concat(url).concat(!isEmpty(q) ? "?".concat(queryString.stringify(q, {
|
|
636
|
+
arrayFormat: 'bracket'
|
|
637
|
+
})) : ''));
|
|
638
|
+
}
|
|
639
|
+
}, keepData ? {
|
|
640
|
+
placeholderData: keepPreviousData
|
|
641
|
+
} : null), queryConfig)),
|
|
642
|
+
_useQuery$data = _useQuery.data,
|
|
643
|
+
data = _useQuery$data === void 0 ? null : _useQuery$data,
|
|
644
|
+
reload = _useQuery.refetch,
|
|
645
|
+
loading = _useQuery.isLoading,
|
|
646
|
+
loaded = _useQuery.isFetched,
|
|
647
|
+
otherProps = _objectWithoutProperties(_useQuery, _excluded2);
|
|
648
|
+
var _ref4 = data || {},
|
|
649
|
+
_ref4$data = _ref4.data,
|
|
650
|
+
items = _ref4$data === void 0 ? [] : _ref4$data,
|
|
651
|
+
_ref4$pagination = _ref4.pagination,
|
|
652
|
+
pagination = _ref4$pagination === void 0 ? null : _ref4$pagination,
|
|
653
|
+
_ref4$metadata = _ref4.metadata,
|
|
654
|
+
metadata = _ref4$metadata === void 0 ? null : _ref4$metadata;
|
|
655
|
+
var _ref5 = pagination || metadata || {},
|
|
656
|
+
_ref5$page = _ref5.page,
|
|
657
|
+
currentPage = _ref5$page === void 0 ? null : _ref5$page,
|
|
658
|
+
_ref5$last_page = _ref5.last_page,
|
|
659
|
+
lastPage = _ref5$last_page === void 0 ? 0 : _ref5$last_page,
|
|
660
|
+
_ref5$total = _ref5.total,
|
|
661
|
+
total = _ref5$total === void 0 ? null : _ref5$total;
|
|
662
|
+
var loadNextPage = useCallback(function () {
|
|
663
|
+
if (onQueryChange !== null && paginated && page !== null && page < lastPage) {
|
|
664
|
+
onQueryChange(_objectSpread(_objectSpread({}, query), {}, {
|
|
665
|
+
page: page + 1
|
|
666
|
+
}));
|
|
667
|
+
}
|
|
668
|
+
}, [paginated, pagination, page]);
|
|
669
|
+
var loadPage = useCallback(function (newPage) {
|
|
670
|
+
if (onQueryChange !== null && newPage !== null) {
|
|
671
|
+
onQueryChange(_objectSpread(_objectSpread({}, query), {}, {
|
|
672
|
+
page: newPage
|
|
673
|
+
}));
|
|
674
|
+
}
|
|
675
|
+
}, [query, onQueryChange]);
|
|
676
|
+
|
|
677
|
+
// Keep a list of updated items
|
|
678
|
+
var _useState = useState([]),
|
|
679
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
680
|
+
updatedItems = _useState2[0],
|
|
681
|
+
setUpdatedItems = _useState2[1];
|
|
682
|
+
var updateItem = useCallback(function (item) {
|
|
683
|
+
var _ref6 = item || {},
|
|
684
|
+
_ref6$id = _ref6.id,
|
|
685
|
+
itemId = _ref6$id === void 0 ? null : _ref6$id;
|
|
686
|
+
if (itemId !== null) {
|
|
687
|
+
setUpdatedItems([].concat(_toConsumableArray((items || []).filter(function () {
|
|
688
|
+
var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
689
|
+
_ref7$id = _ref7.id,
|
|
690
|
+
id = _ref7$id === void 0 ? null : _ref7$id;
|
|
691
|
+
return id !== itemId;
|
|
692
|
+
})), [item]));
|
|
693
|
+
}
|
|
694
|
+
}, [items, updatedItems, setUpdatedItems]);
|
|
695
|
+
var replaceUpdatedItems = useCallback(function (currentItems) {
|
|
696
|
+
if (currentItems === null || updatedItems === null || updatedItems.length === 0) {
|
|
697
|
+
return currentItems;
|
|
698
|
+
}
|
|
699
|
+
return (currentItems || []).map(function (item) {
|
|
700
|
+
var _ref8 = item || {},
|
|
701
|
+
_ref8$id = _ref8.id,
|
|
702
|
+
itemId = _ref8$id === void 0 ? null : _ref8$id;
|
|
703
|
+
var updated = (updatedItems || []).find(function () {
|
|
704
|
+
var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
705
|
+
_ref9$id = _ref9.id,
|
|
706
|
+
id = _ref9$id === void 0 ? null : _ref9$id;
|
|
707
|
+
return id === itemId;
|
|
708
|
+
}) || null;
|
|
709
|
+
if (updated !== null) {
|
|
710
|
+
return updated;
|
|
711
|
+
}
|
|
712
|
+
return item;
|
|
713
|
+
}, []);
|
|
714
|
+
}, [updatedItems]);
|
|
715
|
+
var partialItems = useMemo(function () {
|
|
716
|
+
if (data === null) {
|
|
717
|
+
return data;
|
|
718
|
+
}
|
|
719
|
+
if (paginated) {
|
|
720
|
+
if (getPageFromResponse !== null) {
|
|
721
|
+
return getPageFromResponse(items);
|
|
722
|
+
}
|
|
723
|
+
return items;
|
|
724
|
+
}
|
|
725
|
+
if (getItemsFromResponse !== null) {
|
|
726
|
+
return getItemsFromResponse(data);
|
|
727
|
+
}
|
|
728
|
+
return data;
|
|
729
|
+
}, [items, data, paginated, getPageFromResponse, getItemsFromResponse, updatedItems]);
|
|
730
|
+
var finalItems = replaceUpdatedItems(partialItems);
|
|
731
|
+
|
|
732
|
+
// Keep a list of pages, useEffect wont work here because delayed
|
|
733
|
+
var pages = useRef(null);
|
|
734
|
+
if (loaded && page !== null && data !== null) {
|
|
735
|
+
pages.current = _objectSpread(_objectSpread({}, pages.current), {}, _defineProperty({}, page, data));
|
|
736
|
+
}
|
|
737
|
+
var allItems = pages.current !== null ? replaceUpdatedItems(Object.keys(pages.current).flatMap(function (k) {
|
|
738
|
+
var _pages$current$k;
|
|
739
|
+
return (_pages$current$k = pages.current[k]) === null || _pages$current$k === void 0 ? void 0 : _pages$current$k.data;
|
|
740
|
+
})) : finalItems;
|
|
741
|
+
return _objectSpread(_objectSpread({}, otherProps), {}, {
|
|
742
|
+
items: finalItems,
|
|
743
|
+
pages: pages.current,
|
|
744
|
+
allItems: allItems,
|
|
745
|
+
loading: loading,
|
|
746
|
+
loaded: loaded,
|
|
747
|
+
reload: reload,
|
|
748
|
+
loadPage: loadPage,
|
|
749
|
+
loadNextPage: loadNextPage,
|
|
750
|
+
updateItem: updateItem,
|
|
751
|
+
pagination: paginated ? {
|
|
752
|
+
page: currentPage,
|
|
753
|
+
lastPage: lastPage,
|
|
754
|
+
total: total
|
|
755
|
+
} : null
|
|
756
|
+
});
|
|
757
|
+
};
|
|
758
|
+
var useItemsStore$1 = useItemsStore;
|
|
759
|
+
|
|
345
760
|
var AccountApi = /*#__PURE__*/function () {
|
|
346
761
|
function AccountApi(api, opts) {
|
|
347
762
|
_classCallCheck(this, AccountApi);
|
|
@@ -681,7 +1096,7 @@ var ResourcesApi = /*#__PURE__*/function () {
|
|
|
681
1096
|
value: function get(resource) {
|
|
682
1097
|
var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
683
1098
|
var page = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
684
|
-
var count = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] :
|
|
1099
|
+
var count = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 12;
|
|
685
1100
|
var finalQuery = _objectSpread({}, query);
|
|
686
1101
|
if (page !== null) {
|
|
687
1102
|
finalQuery.page = page;
|
|
@@ -747,13 +1162,13 @@ var ApiContext = /*#__PURE__*/React.createContext(null);
|
|
|
747
1162
|
var useApi = function useApi() {
|
|
748
1163
|
return useContext(ApiContext);
|
|
749
1164
|
};
|
|
750
|
-
var propTypes$
|
|
1165
|
+
var propTypes$2 = {
|
|
751
1166
|
api: PropTypes.instanceOf(Api$1),
|
|
752
1167
|
baseUrl: PropTypes.string,
|
|
753
1168
|
onUnauthorized: PropTypes.func,
|
|
754
1169
|
children: PropTypes.node.isRequired
|
|
755
1170
|
};
|
|
756
|
-
var defaultProps$
|
|
1171
|
+
var defaultProps$2 = {
|
|
757
1172
|
api: null,
|
|
758
1173
|
onUnauthorized: null,
|
|
759
1174
|
baseUrl: undefined
|
|
@@ -776,8 +1191,8 @@ var ApiProvider = function ApiProvider(_ref) {
|
|
|
776
1191
|
value: api
|
|
777
1192
|
}, children);
|
|
778
1193
|
};
|
|
779
|
-
ApiProvider.propTypes = propTypes$
|
|
780
|
-
ApiProvider.defaultProps = defaultProps$
|
|
1194
|
+
ApiProvider.propTypes = propTypes$2;
|
|
1195
|
+
ApiProvider.defaultProps = defaultProps$2;
|
|
781
1196
|
|
|
782
1197
|
var useResourceDestroy = function useResourceDestroy(resource) {
|
|
783
1198
|
var id = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
@@ -818,7 +1233,7 @@ var useResourceItem = function useResourceItem(resource, id, opts) {
|
|
|
818
1233
|
};
|
|
819
1234
|
var useResourceItem$1 = useResourceItem;
|
|
820
1235
|
|
|
821
|
-
var _excluded = ["items"
|
|
1236
|
+
var _excluded = ["items"];
|
|
822
1237
|
var useResourceItems = function useResourceItems(resource) {
|
|
823
1238
|
var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
824
1239
|
var page = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
@@ -830,7 +1245,7 @@ var useResourceItems = function useResourceItems(resource) {
|
|
|
830
1245
|
id = _ref$id === void 0 ? null : _ref$id;
|
|
831
1246
|
var lastResourceRef = useRef(id);
|
|
832
1247
|
var resourceChanging = lastResourceRef.current !== id;
|
|
833
|
-
var
|
|
1248
|
+
var getPage = useCallback(function () {
|
|
834
1249
|
var requestedPage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
835
1250
|
return api.resources.get(resource, query, requestedPage, count).then(function (response) {
|
|
836
1251
|
var _ref2 = resource || {},
|
|
@@ -844,18 +1259,30 @@ var useResourceItems = function useResourceItems(resource) {
|
|
|
844
1259
|
throw err;
|
|
845
1260
|
});
|
|
846
1261
|
}, [api, resource, query, count]);
|
|
847
|
-
var
|
|
848
|
-
|
|
1262
|
+
var getItems = useCallback(function () {
|
|
1263
|
+
return api.resources.get(resource, query, null, null).then(function (response) {
|
|
1264
|
+
var _ref4 = resource || {},
|
|
1265
|
+
resourceId = _ref4.id;
|
|
1266
|
+
lastResourceRef.current = resourceId;
|
|
1267
|
+
return response;
|
|
1268
|
+
})["catch"](function (err) {
|
|
1269
|
+
var _ref5 = resource || {},
|
|
1270
|
+
resourceId = _ref5.id;
|
|
1271
|
+
lastResourceRef.current = resourceId;
|
|
1272
|
+
throw err;
|
|
1273
|
+
});
|
|
1274
|
+
}, [api, resource, query, count]);
|
|
1275
|
+
var _useItemsStore = useItemsStore$1(id, _objectSpread({
|
|
1276
|
+
getPage: page !== null ? getPage : null,
|
|
849
1277
|
getItems: page === null ? getItems : null,
|
|
850
|
-
|
|
1278
|
+
query: query,
|
|
1279
|
+
page: page,
|
|
1280
|
+
count: count
|
|
851
1281
|
}, opts)),
|
|
852
|
-
items =
|
|
853
|
-
|
|
854
|
-
request = _objectWithoutProperties(_useItems, _excluded);
|
|
855
|
-
var finalItems = page !== null ? pageItems : items;
|
|
1282
|
+
items = _useItemsStore.items,
|
|
1283
|
+
request = _objectWithoutProperties(_useItemsStore, _excluded);
|
|
856
1284
|
return _objectSpread({
|
|
857
|
-
items: resourceChanging ? null :
|
|
858
|
-
allItems: items
|
|
1285
|
+
items: resourceChanging ? null : items
|
|
859
1286
|
}, request);
|
|
860
1287
|
};
|
|
861
1288
|
var useResourceItems$1 = useResourceItems;
|
|
@@ -906,6 +1333,46 @@ var useResourceUpdate = function useResourceUpdate(resource, id) {
|
|
|
906
1333
|
};
|
|
907
1334
|
var useResourceUpdate$1 = useResourceUpdate;
|
|
908
1335
|
|
|
1336
|
+
var QueryContext = /*#__PURE__*/React.createContext(null);
|
|
1337
|
+
var useQueryContext = function useQueryContext() {
|
|
1338
|
+
return useContext(QueryContext);
|
|
1339
|
+
};
|
|
1340
|
+
var propTypes$1 = {
|
|
1341
|
+
config: PropTypes.shape({}),
|
|
1342
|
+
children: PropTypes.node.isRequired
|
|
1343
|
+
};
|
|
1344
|
+
var defaultProps$1 = {
|
|
1345
|
+
config: null
|
|
1346
|
+
};
|
|
1347
|
+
var QueryProvider = function QueryProvider(_ref) {
|
|
1348
|
+
var initialConfig = _ref.config,
|
|
1349
|
+
children = _ref.children;
|
|
1350
|
+
var queryClient = useMemo(function () {
|
|
1351
|
+
var client = new QueryClient(_objectSpread({
|
|
1352
|
+
defaultOptions: {
|
|
1353
|
+
queries: {
|
|
1354
|
+
staleTime: Infinity
|
|
1355
|
+
}
|
|
1356
|
+
}
|
|
1357
|
+
}, initialConfig));
|
|
1358
|
+
// if (page !== null) {
|
|
1359
|
+
// const query =
|
|
1360
|
+
// window && !isEmpty(window.location.search)
|
|
1361
|
+
// ? queryString.parse(window.location.search, {
|
|
1362
|
+
// arrayFormat: 'bracket',
|
|
1363
|
+
// })
|
|
1364
|
+
// : null;
|
|
1365
|
+
// client.setQueryData(['pages', page.url, query], page);
|
|
1366
|
+
// }
|
|
1367
|
+
return client;
|
|
1368
|
+
}, [initialConfig]);
|
|
1369
|
+
return /*#__PURE__*/React.createElement(QueryClientProvider, {
|
|
1370
|
+
client: queryClient
|
|
1371
|
+
}, children);
|
|
1372
|
+
};
|
|
1373
|
+
QueryProvider.propTypes = propTypes$1;
|
|
1374
|
+
QueryProvider.defaultProps = defaultProps$1;
|
|
1375
|
+
|
|
909
1376
|
/* eslint-disable react/jsx-props-no-spreading */
|
|
910
1377
|
var propTypes = {
|
|
911
1378
|
api: PropTypes.instanceOf(Api$1),
|
|
@@ -930,4 +1397,4 @@ DataProvider.propTypes = propTypes;
|
|
|
930
1397
|
DataProvider.defaultProps = defaultProps;
|
|
931
1398
|
var DataProvider$1 = DataProvider;
|
|
932
1399
|
|
|
933
|
-
export { Api$1 as Api, ApiProvider, Base$1 as BaseApi, DataProvider$1 as DataProvider, useApi, useData$1 as useData, useItems$
|
|
1400
|
+
export { Api$1 as Api, ApiProvider, Base$1 as BaseApi, DataProvider$1 as DataProvider, QueryProvider, useApi, useData$1 as useData, useItems$3 as useItems, useItems$1 as useItemsLegacy, useItemsStore$1 as useItemsStore, useQueryContext, useResourceDestroy$1 as useResourceDestroy, useResourceItem$1 as useResourceItem, useResourceItems$1 as useResourceItems, useResourceCreate$1 as useResourceStore, useResourceUpdate$1 as useResourceUpdate };
|