@inertiajs/react 2.3.6 → 2.3.8

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/dist/index.esm.js CHANGED
@@ -284,13 +284,20 @@ function useIsomorphicLayoutEffect(effect, deps) {
284
284
  // src/useRemember.ts
285
285
  import { router as router4 } from "@inertiajs/core";
286
286
  import { useEffect as useEffect4, useState as useState3 } from "react";
287
- function useRemember(initialState, key) {
287
+ function useRemember(initialState, key, excludeKeysRef) {
288
288
  const [state, setState] = useState3(() => {
289
289
  const restored = router4.restore(key);
290
290
  return restored !== void 0 ? restored : initialState;
291
291
  });
292
292
  useEffect4(() => {
293
- router4.remember(state, key);
293
+ const keys = excludeKeysRef?.current;
294
+ if (keys && keys.length > 0 && typeof state === "object" && state !== null) {
295
+ const filtered = { ...state };
296
+ keys.forEach((k) => delete filtered[k]);
297
+ router4.remember(filtered, key);
298
+ } else {
299
+ router4.remember(state, key);
300
+ }
294
301
  }, [state, key]);
295
302
  return [state, setState];
296
303
  }
@@ -306,7 +313,8 @@ function useForm(...args) {
306
313
  );
307
314
  const cancelToken = useRef(null);
308
315
  const recentlySuccessfulTimeoutId = useRef(void 0);
309
- const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`) : useState4(defaults);
316
+ const excludeKeysRef = useRef([]);
317
+ const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`, excludeKeysRef) : useState4(defaults);
310
318
  const [errors, setErrors] = rememberKey ? useRemember({}, `${rememberKey}:errors`) : useState4({});
311
319
  const [hasErrors, setHasErrors] = useState4(false);
312
320
  const [processing, setProcessing] = useState4(false);
@@ -566,7 +574,11 @@ function useForm(...args) {
566
574
  put,
567
575
  patch,
568
576
  delete: deleteMethod,
569
- cancel
577
+ cancel,
578
+ dontRemember: (...keys) => {
579
+ excludeKeysRef.current = keys;
580
+ return form;
581
+ }
570
582
  };
571
583
  const tap = (value, callback) => {
572
584
  callback(value);
@@ -1007,6 +1019,8 @@ var InfiniteScroll = forwardRef2(
1007
1019
  const [loadingPrevious, setLoadingPrevious] = useState6(false);
1008
1020
  const [loadingNext, setLoadingNext] = useState6(false);
1009
1021
  const [requestCount, setRequestCount] = useState6(0);
1022
+ const [hasPreviousPage, setHasPreviousPage] = useState6(false);
1023
+ const [hasNextPage, setHasNextPage] = useState6(false);
1010
1024
  const [resolvedStartElement, setResolvedStartElement] = useState6(null);
1011
1025
  const [resolvedEndElement, setResolvedEndElement] = useState6(null);
1012
1026
  const [resolvedItemsElement, setResolvedItemsElement] = useState6(null);
@@ -1057,6 +1071,11 @@ var InfiniteScroll = forwardRef2(
1057
1071
  if (!resolvedItemsElement) {
1058
1072
  return;
1059
1073
  }
1074
+ function syncStateFromDataManager() {
1075
+ setRequestCount(infiniteScrollInstance.dataManager.getRequestCount());
1076
+ setHasPreviousPage(infiniteScrollInstance.dataManager.hasPrevious());
1077
+ setHasNextPage(infiniteScrollInstance.dataManager.hasNext());
1078
+ }
1060
1079
  const infiniteScrollInstance = useInfiniteScroll({
1061
1080
  // Data
1062
1081
  getPropName: () => data,
@@ -1075,16 +1094,17 @@ var InfiniteScroll = forwardRef2(
1075
1094
  onBeforeNextRequest: () => setLoadingNext(true),
1076
1095
  onCompletePreviousRequest: () => {
1077
1096
  setLoadingPrevious(false);
1078
- setRequestCount(infiniteScrollInstance.dataManager.getRequestCount());
1097
+ syncStateFromDataManager();
1079
1098
  },
1080
1099
  onCompleteNextRequest: () => {
1081
1100
  setLoadingNext(false);
1082
- setRequestCount(infiniteScrollInstance.dataManager.getRequestCount());
1083
- }
1101
+ syncStateFromDataManager();
1102
+ },
1103
+ onDataReset: syncStateFromDataManager
1084
1104
  });
1085
1105
  setInfiniteScroll(infiniteScrollInstance);
1086
1106
  const { dataManager: dataManager2, elementManager: elementManager2 } = infiniteScrollInstance;
1087
- setRequestCount(dataManager2.getRequestCount());
1107
+ syncStateFromDataManager();
1088
1108
  elementManager2.setupObservers();
1089
1109
  elementManager2.processServerLoadedElements(dataManager2.getLastLoadedPage());
1090
1110
  if (autoLoad) {
@@ -1126,8 +1146,8 @@ var InfiniteScroll = forwardRef2(
1126
1146
  const sharedExposed = {
1127
1147
  loadingPrevious,
1128
1148
  loadingNext,
1129
- hasPrevious: dataManager?.hasPrevious() ?? false,
1130
- hasNext: dataManager?.hasNext() ?? false
1149
+ hasPrevious: hasPreviousPage,
1150
+ hasNext: hasNextPage
1131
1151
  };
1132
1152
  const exposedPrevious = {
1133
1153
  loading: loadingPrevious,
@@ -1135,7 +1155,7 @@ var InfiniteScroll = forwardRef2(
1135
1155
  }),
1136
1156
  autoMode: headerAutoMode,
1137
1157
  manualMode: !headerAutoMode,
1138
- hasMore: dataManager?.hasPrevious() ?? false,
1158
+ hasMore: hasPreviousPage,
1139
1159
  ...sharedExposed
1140
1160
  };
1141
1161
  const exposedNext = {
@@ -1144,7 +1164,7 @@ var InfiniteScroll = forwardRef2(
1144
1164
  }),
1145
1165
  autoMode: footerAutoMode,
1146
1166
  manualMode: !footerAutoMode,
1147
- hasMore: dataManager?.hasNext() ?? false,
1167
+ hasMore: hasNextPage,
1148
1168
  ...sharedExposed
1149
1169
  };
1150
1170
  const exposedSlot = {
@@ -1499,6 +1519,7 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1499
1519
  const fetching = useRef6(false);
1500
1520
  const ref = useRef6(null);
1501
1521
  const observer = useRef6(null);
1522
+ const getReloadParamsRef = useRef6(() => ({}));
1502
1523
  useEffect12(() => {
1503
1524
  if (keys.length > 0) {
1504
1525
  setLoaded(keys.every((key) => pageProps[key] !== void 0));
@@ -1511,6 +1532,7 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1511
1532
  }
1512
1533
  return reloadParams;
1513
1534
  }, [params, data]);
1535
+ getReloadParamsRef.current = getReloadParams;
1514
1536
  const registerObserver = () => {
1515
1537
  observer.current?.disconnect();
1516
1538
  observer.current = new IntersectionObserver(
@@ -1526,7 +1548,7 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1526
1548
  }
1527
1549
  fetching.current = true;
1528
1550
  setIsFetching(true);
1529
- const reloadParams = getReloadParams();
1551
+ const reloadParams = getReloadParamsRef.current();
1530
1552
  router9.reload({
1531
1553
  ...reloadParams,
1532
1554
  onStart: (e) => {
@@ -1562,7 +1584,7 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1562
1584
  return () => {
1563
1585
  observer.current?.disconnect();
1564
1586
  };
1565
- }, [always, loaded, ref, getReloadParams, buffer]);
1587
+ }, [always, loaded, buffer]);
1566
1588
  const resolveChildren = () => typeof children === "function" ? children({ fetching: isFetching }) : children;
1567
1589
  const resolveFallback = () => typeof fallback === "function" ? fallback() : fallback;
1568
1590
  if (always || !loaded) {