@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.js CHANGED
@@ -305,13 +305,20 @@ function useIsomorphicLayoutEffect(effect, deps) {
305
305
  // src/useRemember.ts
306
306
  var import_core3 = require("@inertiajs/core");
307
307
  var import_react8 = require("react");
308
- function useRemember(initialState, key) {
308
+ function useRemember(initialState, key, excludeKeysRef) {
309
309
  const [state, setState] = (0, import_react8.useState)(() => {
310
310
  const restored = import_core3.router.restore(key);
311
311
  return restored !== void 0 ? restored : initialState;
312
312
  });
313
313
  (0, import_react8.useEffect)(() => {
314
- import_core3.router.remember(state, key);
314
+ const keys = excludeKeysRef?.current;
315
+ if (keys && keys.length > 0 && typeof state === "object" && state !== null) {
316
+ const filtered = { ...state };
317
+ keys.forEach((k) => delete filtered[k]);
318
+ import_core3.router.remember(filtered, key);
319
+ } else {
320
+ import_core3.router.remember(state, key);
321
+ }
315
322
  }, [state, key]);
316
323
  return [state, setState];
317
324
  }
@@ -327,7 +334,8 @@ function useForm(...args) {
327
334
  );
328
335
  const cancelToken = (0, import_react9.useRef)(null);
329
336
  const recentlySuccessfulTimeoutId = (0, import_react9.useRef)(void 0);
330
- const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`) : (0, import_react9.useState)(defaults);
337
+ const excludeKeysRef = (0, import_react9.useRef)([]);
338
+ const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`, excludeKeysRef) : (0, import_react9.useState)(defaults);
331
339
  const [errors, setErrors] = rememberKey ? useRemember({}, `${rememberKey}:errors`) : (0, import_react9.useState)({});
332
340
  const [hasErrors, setHasErrors] = (0, import_react9.useState)(false);
333
341
  const [processing, setProcessing] = (0, import_react9.useState)(false);
@@ -587,7 +595,11 @@ function useForm(...args) {
587
595
  put,
588
596
  patch,
589
597
  delete: deleteMethod,
590
- cancel
598
+ cancel,
599
+ dontRemember: (...keys) => {
600
+ excludeKeysRef.current = keys;
601
+ return form;
602
+ }
591
603
  };
592
604
  const tap = (value, callback) => {
593
605
  callback(value);
@@ -1016,6 +1028,8 @@ var InfiniteScroll = (0, import_react13.forwardRef)(
1016
1028
  const [loadingPrevious, setLoadingPrevious] = (0, import_react13.useState)(false);
1017
1029
  const [loadingNext, setLoadingNext] = (0, import_react13.useState)(false);
1018
1030
  const [requestCount, setRequestCount] = (0, import_react13.useState)(0);
1031
+ const [hasPreviousPage, setHasPreviousPage] = (0, import_react13.useState)(false);
1032
+ const [hasNextPage, setHasNextPage] = (0, import_react13.useState)(false);
1019
1033
  const [resolvedStartElement, setResolvedStartElement] = (0, import_react13.useState)(null);
1020
1034
  const [resolvedEndElement, setResolvedEndElement] = (0, import_react13.useState)(null);
1021
1035
  const [resolvedItemsElement, setResolvedItemsElement] = (0, import_react13.useState)(null);
@@ -1066,6 +1080,11 @@ var InfiniteScroll = (0, import_react13.forwardRef)(
1066
1080
  if (!resolvedItemsElement) {
1067
1081
  return;
1068
1082
  }
1083
+ function syncStateFromDataManager() {
1084
+ setRequestCount(infiniteScrollInstance.dataManager.getRequestCount());
1085
+ setHasPreviousPage(infiniteScrollInstance.dataManager.hasPrevious());
1086
+ setHasNextPage(infiniteScrollInstance.dataManager.hasNext());
1087
+ }
1069
1088
  const infiniteScrollInstance = (0, import_core6.useInfiniteScroll)({
1070
1089
  // Data
1071
1090
  getPropName: () => data,
@@ -1084,16 +1103,17 @@ var InfiniteScroll = (0, import_react13.forwardRef)(
1084
1103
  onBeforeNextRequest: () => setLoadingNext(true),
1085
1104
  onCompletePreviousRequest: () => {
1086
1105
  setLoadingPrevious(false);
1087
- setRequestCount(infiniteScrollInstance.dataManager.getRequestCount());
1106
+ syncStateFromDataManager();
1088
1107
  },
1089
1108
  onCompleteNextRequest: () => {
1090
1109
  setLoadingNext(false);
1091
- setRequestCount(infiniteScrollInstance.dataManager.getRequestCount());
1092
- }
1110
+ syncStateFromDataManager();
1111
+ },
1112
+ onDataReset: syncStateFromDataManager
1093
1113
  });
1094
1114
  setInfiniteScroll(infiniteScrollInstance);
1095
1115
  const { dataManager: dataManager2, elementManager: elementManager2 } = infiniteScrollInstance;
1096
- setRequestCount(dataManager2.getRequestCount());
1116
+ syncStateFromDataManager();
1097
1117
  elementManager2.setupObservers();
1098
1118
  elementManager2.processServerLoadedElements(dataManager2.getLastLoadedPage());
1099
1119
  if (autoLoad) {
@@ -1135,8 +1155,8 @@ var InfiniteScroll = (0, import_react13.forwardRef)(
1135
1155
  const sharedExposed = {
1136
1156
  loadingPrevious,
1137
1157
  loadingNext,
1138
- hasPrevious: dataManager?.hasPrevious() ?? false,
1139
- hasNext: dataManager?.hasNext() ?? false
1158
+ hasPrevious: hasPreviousPage,
1159
+ hasNext: hasNextPage
1140
1160
  };
1141
1161
  const exposedPrevious = {
1142
1162
  loading: loadingPrevious,
@@ -1144,7 +1164,7 @@ var InfiniteScroll = (0, import_react13.forwardRef)(
1144
1164
  }),
1145
1165
  autoMode: headerAutoMode,
1146
1166
  manualMode: !headerAutoMode,
1147
- hasMore: dataManager?.hasPrevious() ?? false,
1167
+ hasMore: hasPreviousPage,
1148
1168
  ...sharedExposed
1149
1169
  };
1150
1170
  const exposedNext = {
@@ -1153,7 +1173,7 @@ var InfiniteScroll = (0, import_react13.forwardRef)(
1153
1173
  }),
1154
1174
  autoMode: footerAutoMode,
1155
1175
  manualMode: !footerAutoMode,
1156
- hasMore: dataManager?.hasNext() ?? false,
1176
+ hasMore: hasNextPage,
1157
1177
  ...sharedExposed
1158
1178
  };
1159
1179
  const exposedSlot = {
@@ -1502,6 +1522,7 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1502
1522
  const fetching = (0, import_react17.useRef)(false);
1503
1523
  const ref = (0, import_react17.useRef)(null);
1504
1524
  const observer = (0, import_react17.useRef)(null);
1525
+ const getReloadParamsRef = (0, import_react17.useRef)(() => ({}));
1505
1526
  (0, import_react17.useEffect)(() => {
1506
1527
  if (keys.length > 0) {
1507
1528
  setLoaded(keys.every((key) => pageProps[key] !== void 0));
@@ -1514,6 +1535,7 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1514
1535
  }
1515
1536
  return reloadParams;
1516
1537
  }, [params, data]);
1538
+ getReloadParamsRef.current = getReloadParams;
1517
1539
  const registerObserver = () => {
1518
1540
  observer.current?.disconnect();
1519
1541
  observer.current = new IntersectionObserver(
@@ -1529,7 +1551,7 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1529
1551
  }
1530
1552
  fetching.current = true;
1531
1553
  setIsFetching(true);
1532
- const reloadParams = getReloadParams();
1554
+ const reloadParams = getReloadParamsRef.current();
1533
1555
  import_core10.router.reload({
1534
1556
  ...reloadParams,
1535
1557
  onStart: (e) => {
@@ -1565,7 +1587,7 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1565
1587
  return () => {
1566
1588
  observer.current?.disconnect();
1567
1589
  };
1568
- }, [always, loaded, ref, getReloadParams, buffer]);
1590
+ }, [always, loaded, buffer]);
1569
1591
  const resolveChildren = () => typeof children === "function" ? children({ fetching: isFetching }) : children;
1570
1592
  const resolveFallback = () => typeof fallback === "function" ? fallback() : fallback;
1571
1593
  if (always || !loaded) {