@panneau/data 3.0.194 → 3.0.203

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 +58 -21
  2. package/lib/index.js +58 -21
  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] : {},
@@ -98,10 +98,9 @@ var useItems$2 = function useItems(_ref) {
98
98
  _ref2$page = _ref2.page,
99
99
  oldPage = _ref2$page === void 0 ? null : _ref2$page,
100
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,
101
+ oldCount = _ref2$count === void 0 ? null : _ref2$count;
102
+ _ref2.items;
103
+ var _ref2$pages = _ref2.pages,
105
104
  initialPages = _ref2$pages === void 0 ? null : _ref2$pages,
106
105
  _ref2$getPageFromResp = _ref2.getPageFromResponse,
107
106
  getPageFromResponse = _ref2$getPageFromResp === void 0 ? function () {
@@ -159,7 +158,7 @@ var useItems$2 = function useItems(_ref) {
159
158
  var queryKey = useMemo(function () {
160
159
  return paginated && getPage !== null ? [store, page, count || 10, queryWithoutPageAndCount] : [store, query];
161
160
  }, [paginated, page, count, queryWithoutPageAndCount]);
162
- var _useQuery = useQuery(_objectSpread(_objectSpread(_objectSpread({
161
+ var _useQuery = useQuery(_objectSpread(_objectSpread({
163
162
  queryKey: queryKey,
164
163
  queryFn: function queryFn(_ref5) {
165
164
  var key = _ref5.queryKey;
@@ -188,8 +187,6 @@ var useItems$2 = function useItems(_ref) {
188
187
  }
189
188
  }, keepData ? {
190
189
  placeholderData: keepPreviousData
191
- } : null), providedItems !== null ? {
192
- initialData: providedItems
193
190
  } : null), queryConfig)),
194
191
  _useQuery$data = _useQuery.data,
195
192
  data = _useQuery$data === void 0 ? null : _useQuery$data,
@@ -231,19 +228,52 @@ var useItems$2 = function useItems(_ref) {
231
228
  }));
232
229
  }
233
230
  }, [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));
231
+
232
+ // Keep a list of updated items
233
+ var _useState = useState([]),
234
+ _useState2 = _slicedToArray(_useState, 2),
235
+ updatedItems = _useState2[0],
236
+ setUpdatedItems = _useState2[1];
237
+ var updateItem = useCallback(function (item) {
238
+ var _ref8 = item || {},
239
+ _ref8$id = _ref8.id,
240
+ itemId = _ref8$id === void 0 ? null : _ref8$id;
241
+ if (itemId !== null) {
242
+ setUpdatedItems([].concat(_toConsumableArray((updatedItems || []).filter(function () {
243
+ var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
244
+ _ref9$id = _ref9.id,
245
+ id = _ref9$id === void 0 ? null : _ref9$id;
246
+ return id !== itemId;
247
+ })), [item]));
248
+ }
249
+ }, [updatedItems, setUpdatedItems]);
250
+ var replaceUpdatedItems = useCallback(function (currentItems) {
251
+ if (currentItems === null || updatedItems === null || updatedItems.length === 0) {
252
+ return currentItems;
238
253
  }
239
- }, [isFetched, page, data]);
240
- var finalItems = useMemo(function () {
254
+ return (currentItems || []).map(function (item) {
255
+ var _ref10 = item || {},
256
+ _ref10$id = _ref10.id,
257
+ itemId = _ref10$id === void 0 ? null : _ref10$id;
258
+ var updated = (updatedItems || []).find(function () {
259
+ var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
260
+ _ref11$id = _ref11.id,
261
+ id = _ref11$id === void 0 ? null : _ref11$id;
262
+ return id === itemId;
263
+ }) || null;
264
+ if (updated !== null) {
265
+ return updated;
266
+ }
267
+ return item;
268
+ }, []);
269
+ }, [updatedItems]);
270
+ var partialItems = useMemo(function () {
241
271
  if (data === null) {
242
272
  return data;
243
273
  }
244
274
  if (paginated) {
245
275
  if (getPageFromResponse !== null) {
246
- return items;
276
+ return getPageFromResponse(items);
247
277
  }
248
278
  return items;
249
279
  }
@@ -251,7 +281,8 @@ var useItems$2 = function useItems(_ref) {
251
281
  return getItemsFromResponse(data);
252
282
  }
253
283
  return data;
254
- }, [items, data, paginated, getPageFromResponse, getItemsFromResponse]);
284
+ }, [items, data, paginated, getPageFromResponse, getItemsFromResponse, updatedItems]);
285
+ var finalItems = replaceUpdatedItems(partialItems);
255
286
 
256
287
  // Pseudo-events for compatibility
257
288
  useEffect(function () {
@@ -270,10 +301,16 @@ var useItems$2 = function useItems(_ref) {
270
301
  onError(error);
271
302
  }
272
303
  }, [status]);
273
- var allItems = pages.current !== null ? Object.keys(pages.current).flatMap(function (k) {
304
+
305
+ // Keep a list of pages, useEffect wont work here because delayed
306
+ var pages = useRef(null);
307
+ if (isFetched && page !== null && data !== null) {
308
+ pages.current = _objectSpread(_objectSpread({}, pages.current), {}, _defineProperty({}, page, data));
309
+ }
310
+ var allItems = pages.current !== null ? replaceUpdatedItems(Object.keys(pages.current).flatMap(function (k) {
274
311
  var _pages$current$k;
275
312
  return (_pages$current$k = pages.current[k]) === null || _pages$current$k === void 0 ? void 0 : _pages$current$k.data;
276
- }) : null;
313
+ })) : null;
277
314
  var finalLoading = isLoading || isFetching || isRefetching;
278
315
  return _objectSpread(_objectSpread({}, otherProps), {}, {
279
316
  items: finalItems,
@@ -296,7 +333,7 @@ var useItems$2 = function useItems(_ref) {
296
333
  reloadPage: reload,
297
334
  reload: reload,
298
335
  reset: reload,
299
- updateItem: null,
336
+ updateItem: updateItem,
300
337
  status: status,
301
338
  error: error
302
339
  });
@@ -688,14 +725,14 @@ var useItemsStore = function useItemsStore(store, _ref) {
688
725
  _ref6$id = _ref6.id,
689
726
  itemId = _ref6$id === void 0 ? null : _ref6$id;
690
727
  if (itemId !== null) {
691
- setUpdatedItems([].concat(_toConsumableArray((items || []).filter(function () {
728
+ setUpdatedItems([].concat(_toConsumableArray((updatedItems || []).filter(function () {
692
729
  var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
693
730
  _ref7$id = _ref7.id,
694
731
  id = _ref7$id === void 0 ? null : _ref7$id;
695
732
  return id !== itemId;
696
733
  })), [item]));
697
734
  }
698
- }, [items, updatedItems, setUpdatedItems]);
735
+ }, [updatedItems, setUpdatedItems]);
699
736
  var replaceUpdatedItems = useCallback(function (currentItems) {
700
737
  if (currentItems === null || updatedItems === null || updatedItems.length === 0) {
701
738
  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] : {},
@@ -762,10 +762,9 @@ var useItems$2 = function useItems(_ref) {
762
762
  _ref2$page = _ref2.page,
763
763
  oldPage = _ref2$page === void 0 ? null : _ref2$page,
764
764
  _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,
765
+ oldCount = _ref2$count === void 0 ? null : _ref2$count;
766
+ _ref2.items;
767
+ var _ref2$pages = _ref2.pages,
769
768
  initialPages = _ref2$pages === void 0 ? null : _ref2$pages,
770
769
  _ref2$getPageFromResp = _ref2.getPageFromResponse,
771
770
  getPageFromResponse = _ref2$getPageFromResp === void 0 ? function () {
@@ -823,7 +822,7 @@ var useItems$2 = function useItems(_ref) {
823
822
  var queryKey = React.useMemo(function () {
824
823
  return paginated && getPage !== null ? [store, page, count || 10, queryWithoutPageAndCount] : [store, query];
825
824
  }, [paginated, page, count, queryWithoutPageAndCount]);
826
- var _useQuery = reactQuery.useQuery(_objectSpread(_objectSpread(_objectSpread({
825
+ var _useQuery = reactQuery.useQuery(_objectSpread(_objectSpread({
827
826
  queryKey: queryKey,
828
827
  queryFn: function queryFn(_ref5) {
829
828
  var key = _ref5.queryKey;
@@ -852,8 +851,6 @@ var useItems$2 = function useItems(_ref) {
852
851
  }
853
852
  }, keepData ? {
854
853
  placeholderData: reactQuery.keepPreviousData
855
- } : null), providedItems !== null ? {
856
- initialData: providedItems
857
854
  } : null), queryConfig)),
858
855
  _useQuery$data = _useQuery.data,
859
856
  data = _useQuery$data === void 0 ? null : _useQuery$data,
@@ -895,19 +892,52 @@ var useItems$2 = function useItems(_ref) {
895
892
  }));
896
893
  }
897
894
  }, [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));
895
+
896
+ // Keep a list of updated items
897
+ var _useState = React.useState([]),
898
+ _useState2 = _slicedToArray(_useState, 2),
899
+ updatedItems = _useState2[0],
900
+ setUpdatedItems = _useState2[1];
901
+ var updateItem = React.useCallback(function (item) {
902
+ var _ref8 = item || {},
903
+ _ref8$id = _ref8.id,
904
+ itemId = _ref8$id === void 0 ? null : _ref8$id;
905
+ if (itemId !== null) {
906
+ setUpdatedItems([].concat(_toConsumableArray((updatedItems || []).filter(function () {
907
+ var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
908
+ _ref9$id = _ref9.id,
909
+ id = _ref9$id === void 0 ? null : _ref9$id;
910
+ return id !== itemId;
911
+ })), [item]));
912
+ }
913
+ }, [updatedItems, setUpdatedItems]);
914
+ var replaceUpdatedItems = React.useCallback(function (currentItems) {
915
+ if (currentItems === null || updatedItems === null || updatedItems.length === 0) {
916
+ return currentItems;
902
917
  }
903
- }, [isFetched, page, data]);
904
- var finalItems = React.useMemo(function () {
918
+ return (currentItems || []).map(function (item) {
919
+ var _ref10 = item || {},
920
+ _ref10$id = _ref10.id,
921
+ itemId = _ref10$id === void 0 ? null : _ref10$id;
922
+ var updated = (updatedItems || []).find(function () {
923
+ var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
924
+ _ref11$id = _ref11.id,
925
+ id = _ref11$id === void 0 ? null : _ref11$id;
926
+ return id === itemId;
927
+ }) || null;
928
+ if (updated !== null) {
929
+ return updated;
930
+ }
931
+ return item;
932
+ }, []);
933
+ }, [updatedItems]);
934
+ var partialItems = React.useMemo(function () {
905
935
  if (data === null) {
906
936
  return data;
907
937
  }
908
938
  if (paginated) {
909
939
  if (getPageFromResponse !== null) {
910
- return items;
940
+ return getPageFromResponse(items);
911
941
  }
912
942
  return items;
913
943
  }
@@ -915,7 +945,8 @@ var useItems$2 = function useItems(_ref) {
915
945
  return getItemsFromResponse(data);
916
946
  }
917
947
  return data;
918
- }, [items, data, paginated, getPageFromResponse, getItemsFromResponse]);
948
+ }, [items, data, paginated, getPageFromResponse, getItemsFromResponse, updatedItems]);
949
+ var finalItems = replaceUpdatedItems(partialItems);
919
950
 
920
951
  // Pseudo-events for compatibility
921
952
  React.useEffect(function () {
@@ -934,10 +965,16 @@ var useItems$2 = function useItems(_ref) {
934
965
  onError(error);
935
966
  }
936
967
  }, [status]);
937
- var allItems = pages.current !== null ? Object.keys(pages.current).flatMap(function (k) {
968
+
969
+ // Keep a list of pages, useEffect wont work here because delayed
970
+ var pages = React.useRef(null);
971
+ if (isFetched && page !== null && data !== null) {
972
+ pages.current = _objectSpread(_objectSpread({}, pages.current), {}, _defineProperty({}, page, data));
973
+ }
974
+ var allItems = pages.current !== null ? replaceUpdatedItems(Object.keys(pages.current).flatMap(function (k) {
938
975
  var _pages$current$k;
939
976
  return (_pages$current$k = pages.current[k]) === null || _pages$current$k === void 0 ? void 0 : _pages$current$k.data;
940
- }) : null;
977
+ })) : null;
941
978
  var finalLoading = isLoading || isFetching || isRefetching;
942
979
  return _objectSpread(_objectSpread({}, otherProps), {}, {
943
980
  items: finalItems,
@@ -960,7 +997,7 @@ var useItems$2 = function useItems(_ref) {
960
997
  reloadPage: reload,
961
998
  reload: reload,
962
999
  reset: reload,
963
- updateItem: null,
1000
+ updateItem: updateItem,
964
1001
  status: status,
965
1002
  error: error
966
1003
  });
@@ -1352,14 +1389,14 @@ var useItemsStore = function useItemsStore(store, _ref) {
1352
1389
  _ref6$id = _ref6.id,
1353
1390
  itemId = _ref6$id === void 0 ? null : _ref6$id;
1354
1391
  if (itemId !== null) {
1355
- setUpdatedItems([].concat(_toConsumableArray((items || []).filter(function () {
1392
+ setUpdatedItems([].concat(_toConsumableArray((updatedItems || []).filter(function () {
1356
1393
  var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1357
1394
  _ref7$id = _ref7.id,
1358
1395
  id = _ref7$id === void 0 ? null : _ref7$id;
1359
1396
  return id !== itemId;
1360
1397
  })), [item]));
1361
1398
  }
1362
- }, [items, updatedItems, setUpdatedItems]);
1399
+ }, [updatedItems, setUpdatedItems]);
1363
1400
  var replaceUpdatedItems = React.useCallback(function (currentItems) {
1364
1401
  if (currentItems === null || updatedItems === null || updatedItems.length === 0) {
1365
1402
  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.203",
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": "46c633064a9c12716725e27bba014704d1afc17c"
69
69
  }