@panneau/data 3.0.194 → 3.0.208

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 (3) hide show
  1. package/es/index.js +65 -22
  2. package/lib/index.js +65 -22
  3. package/package.json +2 -2
package/es/index.js CHANGED
@@ -12,9 +12,9 @@ import queryString from 'query-string';
12
12
  import { useQuery, keepPreviousData, QueryClient, QueryClientProvider } from '@tanstack/react-query';
13
13
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
14
14
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
15
+ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
15
16
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
16
17
  import isEmpty from 'lodash/isEmpty';
17
- import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
18
18
 
19
19
  var useData = function useData(loadData) {
20
20
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
@@ -76,6 +76,9 @@ var useData$1 = useData;
76
76
  var _excluded$3 = ["store", "url", "paginated", "query", "onQueryChange", "queryConfig", "keepData"],
77
77
  _excluded2$1 = ["page", "count"],
78
78
  _excluded3 = ["data", "refetch", "isLoading", "isFetching", "isRefetching", "isFetched", "status", "error"];
79
+
80
+ // For backwards compatibility
81
+
79
82
  var useItems$2 = function useItems(_ref) {
80
83
  var store = _ref.store,
81
84
  url = _ref.url,
@@ -89,7 +92,7 @@ var useItems$2 = function useItems(_ref) {
89
92
  _ref$keepData = _ref.keepData,
90
93
  keepData = _ref$keepData === void 0 ? true : _ref$keepData,
91
94
  oldProps = _objectWithoutProperties(_ref, _excluded$3);
92
- // Legacy
95
+ // Legacy compatibility
93
96
  var _ref2 = oldProps || {},
94
97
  _ref2$getPage = _ref2.getPage,
95
98
  getPage = _ref2$getPage === void 0 ? null : _ref2$getPage,
@@ -98,10 +101,9 @@ var useItems$2 = function useItems(_ref) {
98
101
  _ref2$page = _ref2.page,
99
102
  oldPage = _ref2$page === void 0 ? null : _ref2$page,
100
103
  _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,
104
+ oldCount = _ref2$count === void 0 ? null : _ref2$count;
105
+ _ref2.items;
106
+ var _ref2$pages = _ref2.pages,
105
107
  initialPages = _ref2$pages === void 0 ? null : _ref2$pages,
106
108
  _ref2$getPageFromResp = _ref2.getPageFromResponse,
107
109
  getPageFromResponse = _ref2$getPageFromResp === void 0 ? function () {
@@ -159,7 +161,7 @@ var useItems$2 = function useItems(_ref) {
159
161
  var queryKey = useMemo(function () {
160
162
  return paginated && getPage !== null ? [store, page, count || 10, queryWithoutPageAndCount] : [store, query];
161
163
  }, [paginated, page, count, queryWithoutPageAndCount]);
162
- var _useQuery = useQuery(_objectSpread(_objectSpread(_objectSpread({
164
+ var _useQuery = useQuery(_objectSpread(_objectSpread({
163
165
  queryKey: queryKey,
164
166
  queryFn: function queryFn(_ref5) {
165
167
  var key = _ref5.queryKey;
@@ -188,8 +190,6 @@ var useItems$2 = function useItems(_ref) {
188
190
  }
189
191
  }, keepData ? {
190
192
  placeholderData: keepPreviousData
191
- } : null), providedItems !== null ? {
192
- initialData: providedItems
193
193
  } : null), queryConfig)),
194
194
  _useQuery$data = _useQuery.data,
195
195
  data = _useQuery$data === void 0 ? null : _useQuery$data,
@@ -231,19 +231,52 @@ var useItems$2 = function useItems(_ref) {
231
231
  }));
232
232
  }
233
233
  }, [query, onQueryChange]);
234
- var pages = useRef(null);
235
- useEffect(function () {
236
- if (isFetched && page !== null && data !== null) {
237
- pages.current = _objectSpread(_objectSpread({}, pages.current), {}, _defineProperty({}, page, data));
234
+
235
+ // Keep a list of updated items
236
+ var _useState = useState([]),
237
+ _useState2 = _slicedToArray(_useState, 2),
238
+ updatedItems = _useState2[0],
239
+ setUpdatedItems = _useState2[1];
240
+ var updateItem = useCallback(function (item) {
241
+ var _ref8 = item || {},
242
+ _ref8$id = _ref8.id,
243
+ itemId = _ref8$id === void 0 ? null : _ref8$id;
244
+ if (itemId !== null) {
245
+ setUpdatedItems([].concat(_toConsumableArray((updatedItems || []).filter(function () {
246
+ var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
247
+ _ref9$id = _ref9.id,
248
+ id = _ref9$id === void 0 ? null : _ref9$id;
249
+ return id !== itemId;
250
+ })), [item]));
251
+ }
252
+ }, [updatedItems, setUpdatedItems]);
253
+ var replaceUpdatedItems = useCallback(function (currentItems) {
254
+ if (currentItems === null || updatedItems === null || updatedItems.length === 0) {
255
+ return currentItems;
238
256
  }
239
- }, [isFetched, page, data]);
240
- var finalItems = useMemo(function () {
257
+ return (currentItems || []).map(function (item) {
258
+ var _ref10 = item || {},
259
+ _ref10$id = _ref10.id,
260
+ itemId = _ref10$id === void 0 ? null : _ref10$id;
261
+ var updated = (updatedItems || []).find(function () {
262
+ var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
263
+ _ref11$id = _ref11.id,
264
+ id = _ref11$id === void 0 ? null : _ref11$id;
265
+ return id === itemId;
266
+ }) || null;
267
+ if (updated !== null) {
268
+ return updated;
269
+ }
270
+ return item;
271
+ }, []);
272
+ }, [updatedItems]);
273
+ var partialItems = useMemo(function () {
241
274
  if (data === null) {
242
275
  return data;
243
276
  }
244
277
  if (paginated) {
245
278
  if (getPageFromResponse !== null) {
246
- return items;
279
+ return getPageFromResponse(items);
247
280
  }
248
281
  return items;
249
282
  }
@@ -251,7 +284,8 @@ var useItems$2 = function useItems(_ref) {
251
284
  return getItemsFromResponse(data);
252
285
  }
253
286
  return data;
254
- }, [items, data, paginated, getPageFromResponse, getItemsFromResponse]);
287
+ }, [items, data, paginated, getPageFromResponse, getItemsFromResponse, updatedItems]);
288
+ var finalItems = replaceUpdatedItems(partialItems);
255
289
 
256
290
  // Pseudo-events for compatibility
257
291
  useEffect(function () {
@@ -270,10 +304,16 @@ var useItems$2 = function useItems(_ref) {
270
304
  onError(error);
271
305
  }
272
306
  }, [status]);
273
- var allItems = pages.current !== null ? Object.keys(pages.current).flatMap(function (k) {
307
+
308
+ // Keep a list of pages, useEffect wont work here because delayed
309
+ var pages = useRef(null);
310
+ if (isFetched && page !== null && data !== null) {
311
+ pages.current = _objectSpread(_objectSpread({}, pages.current), {}, _defineProperty({}, page, data));
312
+ }
313
+ var allItems = pages.current !== null ? replaceUpdatedItems(Object.keys(pages.current).flatMap(function (k) {
274
314
  var _pages$current$k;
275
315
  return (_pages$current$k = pages.current[k]) === null || _pages$current$k === void 0 ? void 0 : _pages$current$k.data;
276
- }) : null;
316
+ })) : null;
277
317
  var finalLoading = isLoading || isFetching || isRefetching;
278
318
  return _objectSpread(_objectSpread({}, otherProps), {}, {
279
319
  items: finalItems,
@@ -296,7 +336,7 @@ var useItems$2 = function useItems(_ref) {
296
336
  reloadPage: reload,
297
337
  reload: reload,
298
338
  reset: reload,
299
- updateItem: null,
339
+ updateItem: updateItem,
300
340
  status: status,
301
341
  error: error
302
342
  });
@@ -577,6 +617,9 @@ var useItems$1 = useItems;
577
617
 
578
618
  var _excluded$2 = ["page", "count"],
579
619
  _excluded2 = ["data", "refetch", "isLoading", "isFetching", "isRefetching", "isFetched"];
620
+
621
+ // The new, better version
622
+
580
623
  var useItemsStore = function useItemsStore(store, _ref) {
581
624
  var _ref$url = _ref.url,
582
625
  url = _ref$url === void 0 ? null : _ref$url,
@@ -688,14 +731,14 @@ var useItemsStore = function useItemsStore(store, _ref) {
688
731
  _ref6$id = _ref6.id,
689
732
  itemId = _ref6$id === void 0 ? null : _ref6$id;
690
733
  if (itemId !== null) {
691
- setUpdatedItems([].concat(_toConsumableArray((items || []).filter(function () {
734
+ setUpdatedItems([].concat(_toConsumableArray((updatedItems || []).filter(function () {
692
735
  var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
693
736
  _ref7$id = _ref7.id,
694
737
  id = _ref7$id === void 0 ? null : _ref7$id;
695
738
  return id !== itemId;
696
739
  })), [item]));
697
740
  }
698
- }, [items, updatedItems, setUpdatedItems]);
741
+ }, [updatedItems, setUpdatedItems]);
699
742
  var replaceUpdatedItems = useCallback(function (currentItems) {
700
743
  if (currentItems === null || updatedItems === null || updatedItems.length === 0) {
701
744
  return currentItems;
package/lib/index.js CHANGED
@@ -15,9 +15,9 @@ var _createForOfIteratorHelper = require('@babel/runtime/helpers/createForOfIter
15
15
  var reactQuery = require('@tanstack/react-query');
16
16
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
17
17
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
18
+ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
18
19
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
19
20
  var isEmpty = require('lodash/isEmpty');
20
- var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
21
21
 
22
22
  var useData = function useData(loadData) {
23
23
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
@@ -740,6 +740,9 @@ var queryString = /*#__PURE__*/Object.freeze({
740
740
  var _excluded$3 = ["store", "url", "paginated", "query", "onQueryChange", "queryConfig", "keepData"],
741
741
  _excluded2$1 = ["page", "count"],
742
742
  _excluded3 = ["data", "refetch", "isLoading", "isFetching", "isRefetching", "isFetched", "status", "error"];
743
+
744
+ // For backwards compatibility
745
+
743
746
  var useItems$2 = function useItems(_ref) {
744
747
  var store = _ref.store,
745
748
  url = _ref.url,
@@ -753,7 +756,7 @@ var useItems$2 = function useItems(_ref) {
753
756
  _ref$keepData = _ref.keepData,
754
757
  keepData = _ref$keepData === void 0 ? true : _ref$keepData,
755
758
  oldProps = _objectWithoutProperties(_ref, _excluded$3);
756
- // Legacy
759
+ // Legacy compatibility
757
760
  var _ref2 = oldProps || {},
758
761
  _ref2$getPage = _ref2.getPage,
759
762
  getPage = _ref2$getPage === void 0 ? null : _ref2$getPage,
@@ -762,10 +765,9 @@ var useItems$2 = function useItems(_ref) {
762
765
  _ref2$page = _ref2.page,
763
766
  oldPage = _ref2$page === void 0 ? null : _ref2$page,
764
767
  _ref2$count = _ref2.count,
765
- oldCount = _ref2$count === void 0 ? null : _ref2$count,
766
- _ref2$items = _ref2.items,
767
- providedItems = _ref2$items === void 0 ? null : _ref2$items,
768
- _ref2$pages = _ref2.pages,
768
+ oldCount = _ref2$count === void 0 ? null : _ref2$count;
769
+ _ref2.items;
770
+ var _ref2$pages = _ref2.pages,
769
771
  initialPages = _ref2$pages === void 0 ? null : _ref2$pages,
770
772
  _ref2$getPageFromResp = _ref2.getPageFromResponse,
771
773
  getPageFromResponse = _ref2$getPageFromResp === void 0 ? function () {
@@ -823,7 +825,7 @@ var useItems$2 = function useItems(_ref) {
823
825
  var queryKey = React.useMemo(function () {
824
826
  return paginated && getPage !== null ? [store, page, count || 10, queryWithoutPageAndCount] : [store, query];
825
827
  }, [paginated, page, count, queryWithoutPageAndCount]);
826
- var _useQuery = reactQuery.useQuery(_objectSpread(_objectSpread(_objectSpread({
828
+ var _useQuery = reactQuery.useQuery(_objectSpread(_objectSpread({
827
829
  queryKey: queryKey,
828
830
  queryFn: function queryFn(_ref5) {
829
831
  var key = _ref5.queryKey;
@@ -852,8 +854,6 @@ var useItems$2 = function useItems(_ref) {
852
854
  }
853
855
  }, keepData ? {
854
856
  placeholderData: reactQuery.keepPreviousData
855
- } : null), providedItems !== null ? {
856
- initialData: providedItems
857
857
  } : null), queryConfig)),
858
858
  _useQuery$data = _useQuery.data,
859
859
  data = _useQuery$data === void 0 ? null : _useQuery$data,
@@ -895,19 +895,52 @@ var useItems$2 = function useItems(_ref) {
895
895
  }));
896
896
  }
897
897
  }, [query, onQueryChange]);
898
- var pages = React.useRef(null);
899
- React.useEffect(function () {
900
- if (isFetched && page !== null && data !== null) {
901
- pages.current = _objectSpread(_objectSpread({}, pages.current), {}, _defineProperty({}, page, data));
898
+
899
+ // Keep a list of updated items
900
+ var _useState = React.useState([]),
901
+ _useState2 = _slicedToArray(_useState, 2),
902
+ updatedItems = _useState2[0],
903
+ setUpdatedItems = _useState2[1];
904
+ var updateItem = React.useCallback(function (item) {
905
+ var _ref8 = item || {},
906
+ _ref8$id = _ref8.id,
907
+ itemId = _ref8$id === void 0 ? null : _ref8$id;
908
+ if (itemId !== null) {
909
+ setUpdatedItems([].concat(_toConsumableArray((updatedItems || []).filter(function () {
910
+ var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
911
+ _ref9$id = _ref9.id,
912
+ id = _ref9$id === void 0 ? null : _ref9$id;
913
+ return id !== itemId;
914
+ })), [item]));
915
+ }
916
+ }, [updatedItems, setUpdatedItems]);
917
+ var replaceUpdatedItems = React.useCallback(function (currentItems) {
918
+ if (currentItems === null || updatedItems === null || updatedItems.length === 0) {
919
+ return currentItems;
902
920
  }
903
- }, [isFetched, page, data]);
904
- var finalItems = React.useMemo(function () {
921
+ return (currentItems || []).map(function (item) {
922
+ var _ref10 = item || {},
923
+ _ref10$id = _ref10.id,
924
+ itemId = _ref10$id === void 0 ? null : _ref10$id;
925
+ var updated = (updatedItems || []).find(function () {
926
+ var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
927
+ _ref11$id = _ref11.id,
928
+ id = _ref11$id === void 0 ? null : _ref11$id;
929
+ return id === itemId;
930
+ }) || null;
931
+ if (updated !== null) {
932
+ return updated;
933
+ }
934
+ return item;
935
+ }, []);
936
+ }, [updatedItems]);
937
+ var partialItems = React.useMemo(function () {
905
938
  if (data === null) {
906
939
  return data;
907
940
  }
908
941
  if (paginated) {
909
942
  if (getPageFromResponse !== null) {
910
- return items;
943
+ return getPageFromResponse(items);
911
944
  }
912
945
  return items;
913
946
  }
@@ -915,7 +948,8 @@ var useItems$2 = function useItems(_ref) {
915
948
  return getItemsFromResponse(data);
916
949
  }
917
950
  return data;
918
- }, [items, data, paginated, getPageFromResponse, getItemsFromResponse]);
951
+ }, [items, data, paginated, getPageFromResponse, getItemsFromResponse, updatedItems]);
952
+ var finalItems = replaceUpdatedItems(partialItems);
919
953
 
920
954
  // Pseudo-events for compatibility
921
955
  React.useEffect(function () {
@@ -934,10 +968,16 @@ var useItems$2 = function useItems(_ref) {
934
968
  onError(error);
935
969
  }
936
970
  }, [status]);
937
- var allItems = pages.current !== null ? Object.keys(pages.current).flatMap(function (k) {
971
+
972
+ // Keep a list of pages, useEffect wont work here because delayed
973
+ var pages = React.useRef(null);
974
+ if (isFetched && page !== null && data !== null) {
975
+ pages.current = _objectSpread(_objectSpread({}, pages.current), {}, _defineProperty({}, page, data));
976
+ }
977
+ var allItems = pages.current !== null ? replaceUpdatedItems(Object.keys(pages.current).flatMap(function (k) {
938
978
  var _pages$current$k;
939
979
  return (_pages$current$k = pages.current[k]) === null || _pages$current$k === void 0 ? void 0 : _pages$current$k.data;
940
- }) : null;
980
+ })) : null;
941
981
  var finalLoading = isLoading || isFetching || isRefetching;
942
982
  return _objectSpread(_objectSpread({}, otherProps), {}, {
943
983
  items: finalItems,
@@ -960,7 +1000,7 @@ var useItems$2 = function useItems(_ref) {
960
1000
  reloadPage: reload,
961
1001
  reload: reload,
962
1002
  reset: reload,
963
- updateItem: null,
1003
+ updateItem: updateItem,
964
1004
  status: status,
965
1005
  error: error
966
1006
  });
@@ -1241,6 +1281,9 @@ var useItems$1 = useItems;
1241
1281
 
1242
1282
  var _excluded$2 = ["page", "count"],
1243
1283
  _excluded2 = ["data", "refetch", "isLoading", "isFetching", "isRefetching", "isFetched"];
1284
+
1285
+ // The new, better version
1286
+
1244
1287
  var useItemsStore = function useItemsStore(store, _ref) {
1245
1288
  var _ref$url = _ref.url,
1246
1289
  url = _ref$url === void 0 ? null : _ref$url,
@@ -1352,14 +1395,14 @@ var useItemsStore = function useItemsStore(store, _ref) {
1352
1395
  _ref6$id = _ref6.id,
1353
1396
  itemId = _ref6$id === void 0 ? null : _ref6$id;
1354
1397
  if (itemId !== null) {
1355
- setUpdatedItems([].concat(_toConsumableArray((items || []).filter(function () {
1398
+ setUpdatedItems([].concat(_toConsumableArray((updatedItems || []).filter(function () {
1356
1399
  var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1357
1400
  _ref7$id = _ref7.id,
1358
1401
  id = _ref7$id === void 0 ? null : _ref7$id;
1359
1402
  return id !== itemId;
1360
1403
  })), [item]));
1361
1404
  }
1362
- }, [items, updatedItems, setUpdatedItems]);
1405
+ }, [updatedItems, setUpdatedItems]);
1363
1406
  var replaceUpdatedItems = React.useCallback(function (currentItems) {
1364
1407
  if (currentItems === null || updatedItems === null || updatedItems.length === 0) {
1365
1408
  return currentItems;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/data",
3
- "version": "3.0.194",
3
+ "version": "3.0.208",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "javascript"
@@ -65,5 +65,5 @@
65
65
  "publishConfig": {
66
66
  "access": "public"
67
67
  },
68
- "gitHead": "6d49da8ecbe43b3a5c11dc9ddb9553ef64e58c83"
68
+ "gitHead": "784e87ce65299b81ce5f139a676ded4d70f5cfb1"
69
69
  }