@inertiajs/react 2.3.10 → 2.3.11

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
@@ -235,12 +235,21 @@ async function createInertiaApp({
235
235
  }
236
236
 
237
237
  // src/Deferred.ts
238
- var import_react6 = require("react");
238
+ var import_react8 = require("react");
239
239
 
240
240
  // src/usePage.ts
241
+ var import_react6 = __toESM(require("react"), 1);
242
+
243
+ // src/react.ts
241
244
  var import_react5 = __toESM(require("react"), 1);
245
+ function useIsomorphicLayoutEffect(effect, deps) {
246
+ typeof window === "undefined" ? (0, import_react5.useEffect)(effect, deps) : (0, import_react5.useLayoutEffect)(effect, deps);
247
+ }
248
+ var isReact19 = typeof import_react5.default.use === "function";
249
+
250
+ // src/usePage.ts
242
251
  function usePage() {
243
- const page = typeof import_react5.default.use === "function" ? import_react5.default.use(PageContext_default) : import_react5.default.useContext(PageContext_default);
252
+ const page = isReact19 ? import_react6.default.use(PageContext_default) : import_react6.default.useContext(PageContext_default);
244
253
  if (!page) {
245
254
  throw new Error("usePage must be used within the Inertia component");
246
255
  }
@@ -260,10 +269,10 @@ var Deferred = ({ children, data, fallback }) => {
260
269
  if (!data) {
261
270
  throw new Error("`<Deferred>` requires a `data` prop to be a string or array of strings");
262
271
  }
263
- const [loaded, setLoaded] = (0, import_react6.useState)(false);
272
+ const [loaded, setLoaded] = (0, import_react8.useState)(false);
264
273
  const pageProps = usePage().props;
265
- const keys = (0, import_react6.useMemo)(() => Array.isArray(data) ? data : [data], [data]);
266
- (0, import_react6.useEffect)(() => {
274
+ const keys = (0, import_react8.useMemo)(() => Array.isArray(data) ? data : [data], [data]);
275
+ (0, import_react8.useEffect)(() => {
267
276
  const removeListener = router3.on("start", (e) => {
268
277
  const isPartialVisit = e.detail.visit.only.length > 0 || e.detail.visit.except.length > 0;
269
278
  const isReloadingKey = e.detail.visit.only.find((key) => keys.includes(key));
@@ -275,7 +284,7 @@ var Deferred = ({ children, data, fallback }) => {
275
284
  removeListener();
276
285
  };
277
286
  }, []);
278
- (0, import_react6.useEffect)(() => {
287
+ (0, import_react8.useEffect)(() => {
279
288
  setLoaded(keys.every((key) => pageProps[key] !== void 0));
280
289
  }, [pageProps, keys]);
281
290
  if (loaded) {
@@ -289,29 +298,23 @@ var Deferred_default = Deferred;
289
298
  // src/Form.ts
290
299
  var import_core5 = require("@inertiajs/core");
291
300
  var import_lodash_es2 = require("lodash-es");
292
- var import_react11 = __toESM(require("react"), 1);
301
+ var import_react12 = __toESM(require("react"), 1);
293
302
 
294
303
  // src/useForm.ts
295
304
  var import_core4 = require("@inertiajs/core");
296
305
  var import_laravel_precognition = require("laravel-precognition");
297
306
  var import_lodash_es = require("lodash-es");
298
- var import_react9 = require("react");
299
-
300
- // src/react.ts
301
- var import_react7 = require("react");
302
- function useIsomorphicLayoutEffect(effect, deps) {
303
- typeof window === "undefined" ? (0, import_react7.useEffect)(effect, deps) : (0, import_react7.useLayoutEffect)(effect, deps);
304
- }
307
+ var import_react10 = require("react");
305
308
 
306
309
  // src/useRemember.ts
307
310
  var import_core3 = require("@inertiajs/core");
308
- var import_react8 = require("react");
311
+ var import_react9 = require("react");
309
312
  function useRemember(initialState, key, excludeKeysRef) {
310
- const [state, setState] = (0, import_react8.useState)(() => {
313
+ const [state, setState] = (0, import_react9.useState)(() => {
311
314
  const restored = import_core3.router.restore(key);
312
315
  return restored !== void 0 ? restored : initialState;
313
316
  });
314
- (0, import_react8.useEffect)(() => {
317
+ (0, import_react9.useEffect)(() => {
315
318
  const keys = excludeKeysRef?.current;
316
319
  if (keys && keys.length > 0 && typeof state === "object" && state !== null) {
317
320
  const filtered = { ...state };
@@ -326,38 +329,38 @@ function useRemember(initialState, key, excludeKeysRef) {
326
329
 
327
330
  // src/useForm.ts
328
331
  function useForm(...args) {
329
- const isMounted = (0, import_react9.useRef)(false);
332
+ const isMounted = (0, import_react10.useRef)(false);
330
333
  const parsedArgs = import_core4.UseFormUtils.parseUseFormArguments(...args);
331
334
  const { rememberKey, data: initialData } = parsedArgs;
332
- const precognitionEndpoint = (0, import_react9.useRef)(parsedArgs.precognitionEndpoint);
333
- const [defaults, setDefaults] = (0, import_react9.useState)(
335
+ const precognitionEndpoint = (0, import_react10.useRef)(parsedArgs.precognitionEndpoint);
336
+ const [defaults, setDefaults] = (0, import_react10.useState)(
334
337
  typeof initialData === "function" ? (0, import_lodash_es.cloneDeep)(initialData()) : (0, import_lodash_es.cloneDeep)(initialData)
335
338
  );
336
- const cancelToken = (0, import_react9.useRef)(null);
337
- const recentlySuccessfulTimeoutId = (0, import_react9.useRef)(void 0);
338
- const excludeKeysRef = (0, import_react9.useRef)([]);
339
- const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`, excludeKeysRef) : (0, import_react9.useState)(defaults);
340
- const [errors, setErrors] = rememberKey ? useRemember({}, `${rememberKey}:errors`) : (0, import_react9.useState)({});
341
- const [hasErrors, setHasErrors] = (0, import_react9.useState)(false);
342
- const [processing, setProcessing] = (0, import_react9.useState)(false);
343
- const [progress2, setProgress] = (0, import_react9.useState)(null);
344
- const [wasSuccessful, setWasSuccessful] = (0, import_react9.useState)(false);
345
- const [recentlySuccessful, setRecentlySuccessful] = (0, import_react9.useState)(false);
346
- const transform = (0, import_react9.useRef)((data2) => data2);
347
- const isDirty = (0, import_react9.useMemo)(() => !(0, import_lodash_es.isEqual)(data, defaults), [data, defaults]);
348
- const validatorRef = (0, import_react9.useRef)(null);
349
- const [validating, setValidating] = (0, import_react9.useState)(false);
350
- const [touchedFields, setTouchedFields] = (0, import_react9.useState)([]);
351
- const [validFields, setValidFields] = (0, import_react9.useState)([]);
352
- const withAllErrors = (0, import_react9.useRef)(false);
353
- (0, import_react9.useEffect)(() => {
339
+ const cancelToken = (0, import_react10.useRef)(null);
340
+ const recentlySuccessfulTimeoutId = (0, import_react10.useRef)(void 0);
341
+ const excludeKeysRef = (0, import_react10.useRef)([]);
342
+ const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`, excludeKeysRef) : (0, import_react10.useState)(defaults);
343
+ const [errors, setErrors] = rememberKey ? useRemember({}, `${rememberKey}:errors`) : (0, import_react10.useState)({});
344
+ const [hasErrors, setHasErrors] = (0, import_react10.useState)(false);
345
+ const [processing, setProcessing] = (0, import_react10.useState)(false);
346
+ const [progress2, setProgress] = (0, import_react10.useState)(null);
347
+ const [wasSuccessful, setWasSuccessful] = (0, import_react10.useState)(false);
348
+ const [recentlySuccessful, setRecentlySuccessful] = (0, import_react10.useState)(false);
349
+ const transform = (0, import_react10.useRef)((data2) => data2);
350
+ const isDirty = (0, import_react10.useMemo)(() => !(0, import_lodash_es.isEqual)(data, defaults), [data, defaults]);
351
+ const validatorRef = (0, import_react10.useRef)(null);
352
+ const [validating, setValidating] = (0, import_react10.useState)(false);
353
+ const [touchedFields, setTouchedFields] = (0, import_react10.useState)([]);
354
+ const [validFields, setValidFields] = (0, import_react10.useState)([]);
355
+ const withAllErrors = (0, import_react10.useRef)(false);
356
+ (0, import_react10.useEffect)(() => {
354
357
  isMounted.current = true;
355
358
  return () => {
356
359
  isMounted.current = false;
357
360
  };
358
361
  }, []);
359
- const setDefaultsCalledInOnSuccess = (0, import_react9.useRef)(false);
360
- const submit = (0, import_react9.useCallback)(
362
+ const setDefaultsCalledInOnSuccess = (0, import_react10.useRef)(false);
363
+ const submit = (0, import_react10.useCallback)(
361
364
  (...args2) => {
362
365
  const { method, url, options } = import_core4.UseFormUtils.parseSubmitArguments(args2, precognitionEndpoint.current);
363
366
  setDefaultsCalledInOnSuccess.current = false;
@@ -451,7 +454,7 @@ function useForm(...args) {
451
454
  },
452
455
  [data, setErrors, transform]
453
456
  );
454
- const setDataFunction = (0, import_react9.useCallback)(
457
+ const setDataFunction = (0, import_react10.useCallback)(
455
458
  (keyOrData, maybeValue) => {
456
459
  if (typeof keyOrData === "string") {
457
460
  setData((data2) => (0, import_lodash_es.set)((0, import_lodash_es.cloneDeep)(data2), keyOrData, maybeValue));
@@ -463,12 +466,12 @@ function useForm(...args) {
463
466
  },
464
467
  [setData]
465
468
  );
466
- const [dataAsDefaults, setDataAsDefaults] = (0, import_react9.useState)(false);
467
- const dataRef = (0, import_react9.useRef)(data);
468
- (0, import_react9.useEffect)(() => {
469
+ const [dataAsDefaults, setDataAsDefaults] = (0, import_react10.useState)(false);
470
+ const dataRef = (0, import_react10.useRef)(data);
471
+ (0, import_react10.useEffect)(() => {
469
472
  dataRef.current = data;
470
473
  });
471
- const setDefaultsFunction = (0, import_react9.useCallback)(
474
+ const setDefaultsFunction = (0, import_react10.useCallback)(
472
475
  (fieldOrFields, maybeValue) => {
473
476
  setDefaultsCalledInOnSuccess.current = true;
474
477
  let newDefaults = {};
@@ -495,7 +498,7 @@ function useForm(...args) {
495
498
  }
496
499
  setDataAsDefaults(false);
497
500
  }, [dataAsDefaults]);
498
- const reset = (0, import_react9.useCallback)(
501
+ const reset = (0, import_react10.useCallback)(
499
502
  (...fields) => {
500
503
  if (fields.length === 0) {
501
504
  setData(defaults);
@@ -513,7 +516,7 @@ function useForm(...args) {
513
516
  },
514
517
  [setData, defaults]
515
518
  );
516
- const setError = (0, import_react9.useCallback)(
519
+ const setError = (0, import_react10.useCallback)(
517
520
  (fieldOrFields, maybeValue) => {
518
521
  setErrors((errors2) => {
519
522
  const newErrors = {
@@ -527,7 +530,7 @@ function useForm(...args) {
527
530
  },
528
531
  [setErrors, setHasErrors]
529
532
  );
530
- const clearErrors = (0, import_react9.useCallback)(
533
+ const clearErrors = (0, import_react10.useCallback)(
531
534
  (...fields) => {
532
535
  setErrors((errors2) => {
533
536
  const newErrors = Object.keys(errors2).reduce(
@@ -550,7 +553,7 @@ function useForm(...args) {
550
553
  },
551
554
  [setErrors, setHasErrors]
552
555
  );
553
- const resetAndClearErrors = (0, import_react9.useCallback)(
556
+ const resetAndClearErrors = (0, import_react10.useCallback)(
554
557
  (...fields) => {
555
558
  reset(...fields);
556
559
  clearErrors(...fields);
@@ -560,17 +563,17 @@ function useForm(...args) {
560
563
  const createSubmitMethod = (method) => (url, options = {}) => {
561
564
  submit(method, url, options);
562
565
  };
563
- const getMethod = (0, import_react9.useCallback)(createSubmitMethod("get"), [submit]);
564
- const post = (0, import_react9.useCallback)(createSubmitMethod("post"), [submit]);
565
- const put = (0, import_react9.useCallback)(createSubmitMethod("put"), [submit]);
566
- const patch = (0, import_react9.useCallback)(createSubmitMethod("patch"), [submit]);
567
- const deleteMethod = (0, import_react9.useCallback)(createSubmitMethod("delete"), [submit]);
568
- const cancel = (0, import_react9.useCallback)(() => {
566
+ const getMethod = (0, import_react10.useCallback)(createSubmitMethod("get"), [submit]);
567
+ const post = (0, import_react10.useCallback)(createSubmitMethod("post"), [submit]);
568
+ const put = (0, import_react10.useCallback)(createSubmitMethod("put"), [submit]);
569
+ const patch = (0, import_react10.useCallback)(createSubmitMethod("patch"), [submit]);
570
+ const deleteMethod = (0, import_react10.useCallback)(createSubmitMethod("delete"), [submit]);
571
+ const cancel = (0, import_react10.useCallback)(() => {
569
572
  if (cancelToken.current) {
570
573
  cancelToken.current.cancel();
571
574
  }
572
575
  }, []);
573
- const transformFunction = (0, import_react9.useCallback)((callback) => {
576
+ const transformFunction = (0, import_react10.useCallback)((callback) => {
574
577
  transform.current = callback;
575
578
  }, []);
576
579
  const form = {
@@ -605,12 +608,12 @@ function useForm(...args) {
605
608
  callback(value);
606
609
  return value;
607
610
  };
608
- const valid = (0, import_react9.useCallback)(
611
+ const valid = (0, import_react10.useCallback)(
609
612
  (field) => validFields.includes(field),
610
613
  [validFields]
611
614
  );
612
- const invalid = (0, import_react9.useCallback)((field) => field in errors, [errors]);
613
- const touched = (0, import_react9.useCallback)(
615
+ const invalid = (0, import_react10.useCallback)((field) => field in errors, [errors]);
616
+ const touched = (0, import_react10.useCallback)(
614
617
  (field) => typeof field === "string" ? touchedFields.includes(field) : touchedFields.length > 0,
615
618
  [touchedFields]
616
619
  );
@@ -687,11 +690,11 @@ function useForm(...args) {
687
690
 
688
691
  // src/Form.ts
689
692
  var deferStateUpdate = (callback) => {
690
- typeof import_react11.default.startTransition === "function" ? import_react11.default.startTransition(callback) : setTimeout(callback, 0);
693
+ typeof import_react12.default.startTransition === "function" ? import_react12.default.startTransition(callback) : setTimeout(callback, 0);
691
694
  };
692
695
  var noop = () => void 0;
693
- var FormContext = (0, import_react11.createContext)(void 0);
694
- var Form = (0, import_react11.forwardRef)(
696
+ var FormContext = (0, import_react12.createContext)(void 0);
697
+ var Form = (0, import_react12.forwardRef)(
695
698
  ({
696
699
  action = "",
697
700
  method = "get",
@@ -736,12 +739,12 @@ var Form = (0, import_react11.forwardRef)(
736
739
  form.withAllErrors();
737
740
  }
738
741
  form.transform(getTransformedData);
739
- const formElement = (0, import_react11.useRef)(void 0);
740
- const resolvedMethod = (0, import_react11.useMemo)(() => {
742
+ const formElement = (0, import_react12.useRef)(void 0);
743
+ const resolvedMethod = (0, import_react12.useMemo)(() => {
741
744
  return (0, import_core5.isUrlMethodPair)(action) ? action.method : method.toLowerCase();
742
745
  }, [action, method]);
743
- const [isDirty, setIsDirty] = (0, import_react11.useState)(false);
744
- const defaultData = (0, import_react11.useRef)(new FormData());
746
+ const [isDirty, setIsDirty] = (0, import_react12.useState)(false);
747
+ const defaultData = (0, import_react12.useRef)(new FormData());
745
748
  const getFormData = (submitter) => new FormData(formElement.current, submitter);
746
749
  const getData = (submitter) => (0, import_core5.formDataToObject)(getFormData(submitter));
747
750
  const getUrlAndData = (submitter) => {
@@ -764,7 +767,7 @@ var Form = (0, import_react11.forwardRef)(
764
767
  form.clearErrors(...names);
765
768
  return form;
766
769
  };
767
- (0, import_react11.useEffect)(() => {
770
+ (0, import_react12.useEffect)(() => {
768
771
  defaultData.current = getFormData();
769
772
  form.setDefaults(getData());
770
773
  const formEvents = ["input", "change", "reset"];
@@ -773,10 +776,10 @@ var Form = (0, import_react11.forwardRef)(
773
776
  formEvents.forEach((e) => formElement.current?.removeEventListener(e, updateDirtyState));
774
777
  };
775
778
  }, []);
776
- (0, import_react11.useEffect)(() => {
779
+ (0, import_react12.useEffect)(() => {
777
780
  form.setValidationTimeout(validationTimeout);
778
781
  }, [validationTimeout]);
779
- (0, import_react11.useEffect)(() => {
782
+ (0, import_react12.useEffect)(() => {
780
783
  if (validateFiles) {
781
784
  form.validateFiles();
782
785
  } else {
@@ -867,8 +870,8 @@ var Form = (0, import_react11.forwardRef)(
867
870
  touch: form.touch,
868
871
  touched: form.touched
869
872
  };
870
- (0, import_react11.useImperativeHandle)(ref, () => exposed, [form, isDirty, submit]);
871
- const formNode = (0, import_react11.createElement)(
873
+ (0, import_react12.useImperativeHandle)(ref, () => exposed, [form, isDirty, submit]);
874
+ const formNode = (0, import_react12.createElement)(
872
875
  "form",
873
876
  {
874
877
  ...props,
@@ -879,31 +882,30 @@ var Form = (0, import_react11.forwardRef)(
879
882
  event.preventDefault();
880
883
  submit(event.nativeEvent.submitter);
881
884
  },
882
- // Only React 19 supports passing a boolean to the `inert` attribute.
883
- // To support earlier versions as well, we use the string 'true'.
884
- // Unfortunately, React 19 treats an empty string as `false`.
885
+ // React 19 supports passing a boolean to the `inert` attribute, but shows
886
+ // a warning when receiving a string. Earlier versions require the string 'true'.
885
887
  // See: https://github.com/inertiajs/inertia/pull/2536
886
- inert: disableWhileProcessing && form.processing && "true"
888
+ inert: disableWhileProcessing && form.processing && (isReact19 ? true : "true")
887
889
  },
888
890
  typeof children === "function" ? children(exposed) : children
889
891
  );
890
- return (0, import_react11.createElement)(FormContext.Provider, { value: exposed }, formNode);
892
+ return (0, import_react12.createElement)(FormContext.Provider, { value: exposed }, formNode);
891
893
  }
892
894
  );
893
895
  Form.displayName = "InertiaForm";
894
896
  function useFormContext() {
895
- return (0, import_react11.useContext)(FormContext);
897
+ return (0, import_react12.useContext)(FormContext);
896
898
  }
897
899
  var Form_default = Form;
898
900
 
899
901
  // src/Head.ts
900
902
  var import_lodash_es3 = require("lodash-es");
901
- var import_react12 = __toESM(require("react"), 1);
903
+ var import_react14 = __toESM(require("react"), 1);
902
904
  var Head = function({ children, title }) {
903
- const headManager = (0, import_react12.useContext)(HeadContext_default);
904
- const provider = (0, import_react12.useMemo)(() => headManager.createProvider(), [headManager]);
905
+ const headManager = (0, import_react14.useContext)(HeadContext_default);
906
+ const provider = (0, import_react14.useMemo)(() => headManager.createProvider(), [headManager]);
905
907
  const isServer = typeof window === "undefined";
906
- (0, import_react12.useEffect)(() => {
908
+ (0, import_react14.useEffect)(() => {
907
909
  provider.reconnect();
908
910
  provider.update(renderNodes(children));
909
911
  return () => {
@@ -966,7 +968,7 @@ var Head = function({ children, title }) {
966
968
  return html;
967
969
  }
968
970
  function ensureNodeHasInertiaProp(node) {
969
- return import_react12.default.cloneElement(node, {
971
+ return import_react14.default.cloneElement(node, {
970
972
  [provider.preferredAttribute()]: node.props["head-key"] !== void 0 ? node.props["head-key"] : ""
971
973
  });
972
974
  }
@@ -974,7 +976,7 @@ var Head = function({ children, title }) {
974
976
  return renderTag(ensureNodeHasInertiaProp(node));
975
977
  }
976
978
  function renderNodes(nodes) {
977
- const elements = import_react12.default.Children.toArray(nodes).filter((node) => node).map((node) => renderNode(node));
979
+ const elements = import_react14.default.Children.toArray(nodes).filter((node) => node).map((node) => renderNode(node));
978
980
  if (title && !elements.find((tag) => tag.startsWith("<title"))) {
979
981
  elements.push(`<title ${provider.preferredAttribute()}>${title}</title>`);
980
982
  }
@@ -989,7 +991,7 @@ var Head_default = Head;
989
991
 
990
992
  // src/InfiniteScroll.ts
991
993
  var import_core6 = require("@inertiajs/core");
992
- var import_react13 = __toESM(require("react"), 1);
994
+ var import_react15 = __toESM(require("react"), 1);
993
995
  var resolveHTMLElement = (value, fallback) => {
994
996
  if (!value) {
995
997
  return fallback;
@@ -1008,7 +1010,7 @@ var renderSlot = (slotContent, slotProps, fallback = null) => {
1008
1010
  }
1009
1011
  return typeof slotContent === "function" ? slotContent(slotProps) : slotContent;
1010
1012
  };
1011
- var InfiniteScroll = (0, import_react13.forwardRef)(
1013
+ var InfiniteScroll = (0, import_react15.forwardRef)(
1012
1014
  ({
1013
1015
  data,
1014
1016
  buffer = 0,
@@ -1029,34 +1031,34 @@ var InfiniteScroll = (0, import_react13.forwardRef)(
1029
1031
  onlyPrevious = false,
1030
1032
  ...props
1031
1033
  }, ref) => {
1032
- const [startElementFromRef, setStartElementFromRef] = (0, import_react13.useState)(null);
1033
- const startElementRef = (0, import_react13.useCallback)((node) => setStartElementFromRef(node), []);
1034
- const [endElementFromRef, setEndElementFromRef] = (0, import_react13.useState)(null);
1035
- const endElementRef = (0, import_react13.useCallback)((node) => setEndElementFromRef(node), []);
1036
- const [itemsElementFromRef, setItemsElementFromRef] = (0, import_react13.useState)(null);
1037
- const itemsElementRef = (0, import_react13.useCallback)((node) => setItemsElementFromRef(node), []);
1038
- const [loadingPrevious, setLoadingPrevious] = (0, import_react13.useState)(false);
1039
- const [loadingNext, setLoadingNext] = (0, import_react13.useState)(false);
1040
- const [requestCount, setRequestCount] = (0, import_react13.useState)(0);
1041
- const [hasPreviousPage, setHasPreviousPage] = (0, import_react13.useState)(false);
1042
- const [hasNextPage, setHasNextPage] = (0, import_react13.useState)(false);
1043
- const [resolvedStartElement, setResolvedStartElement] = (0, import_react13.useState)(null);
1044
- const [resolvedEndElement, setResolvedEndElement] = (0, import_react13.useState)(null);
1045
- const [resolvedItemsElement, setResolvedItemsElement] = (0, import_react13.useState)(null);
1046
- (0, import_react13.useEffect)(() => {
1034
+ const [startElementFromRef, setStartElementFromRef] = (0, import_react15.useState)(null);
1035
+ const startElementRef = (0, import_react15.useCallback)((node) => setStartElementFromRef(node), []);
1036
+ const [endElementFromRef, setEndElementFromRef] = (0, import_react15.useState)(null);
1037
+ const endElementRef = (0, import_react15.useCallback)((node) => setEndElementFromRef(node), []);
1038
+ const [itemsElementFromRef, setItemsElementFromRef] = (0, import_react15.useState)(null);
1039
+ const itemsElementRef = (0, import_react15.useCallback)((node) => setItemsElementFromRef(node), []);
1040
+ const [loadingPrevious, setLoadingPrevious] = (0, import_react15.useState)(false);
1041
+ const [loadingNext, setLoadingNext] = (0, import_react15.useState)(false);
1042
+ const [requestCount, setRequestCount] = (0, import_react15.useState)(0);
1043
+ const [hasPreviousPage, setHasPreviousPage] = (0, import_react15.useState)(false);
1044
+ const [hasNextPage, setHasNextPage] = (0, import_react15.useState)(false);
1045
+ const [resolvedStartElement, setResolvedStartElement] = (0, import_react15.useState)(null);
1046
+ const [resolvedEndElement, setResolvedEndElement] = (0, import_react15.useState)(null);
1047
+ const [resolvedItemsElement, setResolvedItemsElement] = (0, import_react15.useState)(null);
1048
+ (0, import_react15.useEffect)(() => {
1047
1049
  const element = startElement ? resolveHTMLElement(startElement, startElementFromRef) : startElementFromRef;
1048
1050
  setResolvedStartElement(element);
1049
1051
  }, [startElement, startElementFromRef]);
1050
- (0, import_react13.useEffect)(() => {
1052
+ (0, import_react15.useEffect)(() => {
1051
1053
  const element = endElement ? resolveHTMLElement(endElement, endElementFromRef) : endElementFromRef;
1052
1054
  setResolvedEndElement(element);
1053
1055
  }, [endElement, endElementFromRef]);
1054
- (0, import_react13.useEffect)(() => {
1056
+ (0, import_react15.useEffect)(() => {
1055
1057
  const element = itemsElement ? resolveHTMLElement(itemsElement, itemsElementFromRef) : itemsElementFromRef;
1056
1058
  setResolvedItemsElement(element);
1057
1059
  }, [itemsElement, itemsElementFromRef]);
1058
- const scrollableParent = (0, import_react13.useMemo)(() => (0, import_core6.getScrollableParent)(resolvedItemsElement), [resolvedItemsElement]);
1059
- const callbackPropsRef = (0, import_react13.useRef)({
1060
+ const scrollableParent = (0, import_react15.useMemo)(() => (0, import_core6.getScrollableParent)(resolvedItemsElement), [resolvedItemsElement]);
1061
+ const callbackPropsRef = (0, import_react15.useRef)({
1060
1062
  buffer,
1061
1063
  onlyNext,
1062
1064
  onlyPrevious,
@@ -1070,10 +1072,10 @@ var InfiniteScroll = (0, import_react13.forwardRef)(
1070
1072
  reverse,
1071
1073
  preserveUrl
1072
1074
  };
1073
- const [infiniteScroll, setInfiniteScroll] = (0, import_react13.useState)(null);
1074
- const dataManager = (0, import_react13.useMemo)(() => infiniteScroll?.dataManager, [infiniteScroll]);
1075
- const elementManager = (0, import_react13.useMemo)(() => infiniteScroll?.elementManager, [infiniteScroll]);
1076
- const scrollToBottom = (0, import_react13.useCallback)(() => {
1075
+ const [infiniteScroll, setInfiniteScroll] = (0, import_react15.useState)(null);
1076
+ const dataManager = (0, import_react15.useMemo)(() => infiniteScroll?.dataManager, [infiniteScroll]);
1077
+ const elementManager = (0, import_react15.useMemo)(() => infiniteScroll?.elementManager, [infiniteScroll]);
1078
+ const scrollToBottom = (0, import_react15.useCallback)(() => {
1077
1079
  if (scrollableParent) {
1078
1080
  scrollableParent.scrollTo({
1079
1081
  top: scrollableParent.scrollHeight,
@@ -1086,7 +1088,7 @@ var InfiniteScroll = (0, import_react13.forwardRef)(
1086
1088
  });
1087
1089
  }
1088
1090
  }, [scrollableParent]);
1089
- (0, import_react13.useEffect)(() => {
1091
+ (0, import_react15.useEffect)(() => {
1090
1092
  if (!resolvedItemsElement) {
1091
1093
  return;
1092
1094
  }
@@ -1134,21 +1136,21 @@ var InfiniteScroll = (0, import_react13.forwardRef)(
1134
1136
  setInfiniteScroll(null);
1135
1137
  };
1136
1138
  }, [data, resolvedItemsElement, resolvedStartElement, resolvedEndElement, scrollableParent]);
1137
- const manualMode = (0, import_react13.useMemo)(
1139
+ const manualMode = (0, import_react15.useMemo)(
1138
1140
  () => manual || manualAfter > 0 && requestCount >= manualAfter,
1139
1141
  [manual, manualAfter, requestCount]
1140
1142
  );
1141
- const autoLoad = (0, import_react13.useMemo)(() => !manualMode, [manualMode]);
1142
- (0, import_react13.useEffect)(() => {
1143
+ const autoLoad = (0, import_react15.useMemo)(() => !manualMode, [manualMode]);
1144
+ (0, import_react15.useEffect)(() => {
1143
1145
  autoLoad ? elementManager?.enableTriggers() : elementManager?.disableTriggers();
1144
1146
  }, [autoLoad, onlyNext, onlyPrevious, resolvedStartElement, resolvedEndElement]);
1145
- (0, import_react13.useEffect)(() => {
1147
+ (0, import_react15.useEffect)(() => {
1146
1148
  const shouldAutoScroll = autoScroll !== void 0 ? autoScroll : reverse;
1147
1149
  if (shouldAutoScroll) {
1148
1150
  scrollToBottom();
1149
1151
  }
1150
1152
  }, [scrollableParent]);
1151
- (0, import_react13.useImperativeHandle)(
1153
+ (0, import_react15.useImperativeHandle)(
1152
1154
  ref,
1153
1155
  () => ({
1154
1156
  fetchNext: dataManager?.fetchNext || (() => {
@@ -1194,7 +1196,7 @@ var InfiniteScroll = (0, import_react13.forwardRef)(
1194
1196
  const renderElements = [];
1195
1197
  if (!startElement) {
1196
1198
  renderElements.push(
1197
- (0, import_react13.createElement)(
1199
+ (0, import_react15.createElement)(
1198
1200
  "div",
1199
1201
  { ref: startElementRef },
1200
1202
  // Render previous slot or fallback to loading indicator
@@ -1203,7 +1205,7 @@ var InfiniteScroll = (0, import_react13.forwardRef)(
1203
1205
  );
1204
1206
  }
1205
1207
  renderElements.push(
1206
- (0, import_react13.createElement)(
1208
+ (0, import_react15.createElement)(
1207
1209
  as,
1208
1210
  { ...props, ref: itemsElementRef },
1209
1211
  typeof children === "function" ? children(exposedSlot) : children
@@ -1211,7 +1213,7 @@ var InfiniteScroll = (0, import_react13.forwardRef)(
1211
1213
  );
1212
1214
  if (!endElement) {
1213
1215
  renderElements.push(
1214
- (0, import_react13.createElement)(
1216
+ (0, import_react15.createElement)(
1215
1217
  "div",
1216
1218
  { ref: endElementRef },
1217
1219
  // Render next slot or fallback to loading indicator
@@ -1219,7 +1221,7 @@ var InfiniteScroll = (0, import_react13.forwardRef)(
1219
1221
  )
1220
1222
  );
1221
1223
  }
1222
- return (0, import_react13.createElement)(import_react13.default.Fragment, {}, ...reverse ? [...renderElements].reverse() : renderElements);
1224
+ return (0, import_react15.createElement)(import_react15.default.Fragment, {}, ...reverse ? [...renderElements].reverse() : renderElements);
1223
1225
  }
1224
1226
  );
1225
1227
  InfiniteScroll.displayName = "InertiaInfiniteScroll";
@@ -1227,9 +1229,9 @@ var InfiniteScroll_default = InfiniteScroll;
1227
1229
 
1228
1230
  // src/Link.ts
1229
1231
  var import_core7 = require("@inertiajs/core");
1230
- var import_react14 = require("react");
1232
+ var import_react16 = require("react");
1231
1233
  var noop2 = () => void 0;
1232
- var Link = (0, import_react14.forwardRef)(
1234
+ var Link = (0, import_react16.forwardRef)(
1233
1235
  ({
1234
1236
  children,
1235
1237
  as = "a",
@@ -1262,24 +1264,24 @@ var Link = (0, import_react14.forwardRef)(
1262
1264
  viewTransition = false,
1263
1265
  ...props
1264
1266
  }, ref) => {
1265
- const [inFlightCount, setInFlightCount] = (0, import_react14.useState)(0);
1266
- const hoverTimeout = (0, import_react14.useRef)(void 0);
1267
- const _method = (0, import_react14.useMemo)(() => {
1267
+ const [inFlightCount, setInFlightCount] = (0, import_react16.useState)(0);
1268
+ const hoverTimeout = (0, import_react16.useRef)(void 0);
1269
+ const _method = (0, import_react16.useMemo)(() => {
1268
1270
  return (0, import_core7.isUrlMethodPair)(href) ? href.method : method.toLowerCase();
1269
1271
  }, [href, method]);
1270
- const _as = (0, import_react14.useMemo)(() => {
1272
+ const _as = (0, import_react16.useMemo)(() => {
1271
1273
  if (typeof as !== "string" || as.toLowerCase() !== "a") {
1272
1274
  return as;
1273
1275
  }
1274
1276
  return _method !== "get" ? "button" : as.toLowerCase();
1275
1277
  }, [as, _method]);
1276
- const mergeDataArray = (0, import_react14.useMemo)(
1278
+ const mergeDataArray = (0, import_react16.useMemo)(
1277
1279
  () => (0, import_core7.mergeDataIntoQueryString)(_method, (0, import_core7.isUrlMethodPair)(href) ? href.url : href, data, queryStringArrayFormat),
1278
1280
  [href, _method, data, queryStringArrayFormat]
1279
1281
  );
1280
- const url = (0, import_react14.useMemo)(() => mergeDataArray[0], [mergeDataArray]);
1281
- const _data = (0, import_react14.useMemo)(() => mergeDataArray[1], [mergeDataArray]);
1282
- const baseParams = (0, import_react14.useMemo)(
1282
+ const url = (0, import_react16.useMemo)(() => mergeDataArray[0], [mergeDataArray]);
1283
+ const _data = (0, import_react16.useMemo)(() => mergeDataArray[1], [mergeDataArray]);
1284
+ const baseParams = (0, import_react16.useMemo)(
1283
1285
  () => ({
1284
1286
  data: _data,
1285
1287
  method: _method,
@@ -1294,7 +1296,7 @@ var Link = (0, import_react14.forwardRef)(
1294
1296
  }),
1295
1297
  [_data, _method, preserveScroll, preserveState, preserveUrl, replace, only, except, headers, async]
1296
1298
  );
1297
- const visitParams = (0, import_react14.useMemo)(
1299
+ const visitParams = (0, import_react16.useMemo)(
1298
1300
  () => ({
1299
1301
  ...baseParams,
1300
1302
  viewTransition,
@@ -1326,7 +1328,7 @@ var Link = (0, import_react14.forwardRef)(
1326
1328
  onError
1327
1329
  ]
1328
1330
  );
1329
- const prefetchModes = (0, import_react14.useMemo)(
1331
+ const prefetchModes = (0, import_react16.useMemo)(
1330
1332
  () => {
1331
1333
  if (prefetch === true) {
1332
1334
  return ["hover"];
@@ -1341,7 +1343,7 @@ var Link = (0, import_react14.forwardRef)(
1341
1343
  },
1342
1344
  Array.isArray(prefetch) ? prefetch : [prefetch]
1343
1345
  );
1344
- const cacheForValue = (0, import_react14.useMemo)(() => {
1346
+ const cacheForValue = (0, import_react16.useMemo)(() => {
1345
1347
  if (cacheFor !== 0) {
1346
1348
  return cacheFor;
1347
1349
  }
@@ -1350,7 +1352,7 @@ var Link = (0, import_react14.forwardRef)(
1350
1352
  }
1351
1353
  return config.get("prefetch.cacheFor");
1352
1354
  }, [cacheFor, prefetchModes]);
1353
- const doPrefetch = (0, import_react14.useMemo)(() => {
1355
+ const doPrefetch = (0, import_react16.useMemo)(() => {
1354
1356
  return () => {
1355
1357
  import_core7.router.prefetch(
1356
1358
  url,
@@ -1363,12 +1365,12 @@ var Link = (0, import_react14.forwardRef)(
1363
1365
  );
1364
1366
  };
1365
1367
  }, [url, baseParams, onPrefetching, onPrefetched, cacheForValue, cacheTags]);
1366
- (0, import_react14.useEffect)(() => {
1368
+ (0, import_react16.useEffect)(() => {
1367
1369
  return () => {
1368
1370
  clearTimeout(hoverTimeout.current);
1369
1371
  };
1370
1372
  }, []);
1371
- (0, import_react14.useEffect)(() => {
1373
+ (0, import_react16.useEffect)(() => {
1372
1374
  if (prefetchModes.includes("mount")) {
1373
1375
  setTimeout(() => doPrefetch());
1374
1376
  }
@@ -1425,7 +1427,7 @@ var Link = (0, import_react14.forwardRef)(
1425
1427
  }
1426
1428
  }
1427
1429
  };
1428
- const elProps = (0, import_react14.useMemo)(() => {
1430
+ const elProps = (0, import_react16.useMemo)(() => {
1429
1431
  if (_as === "button") {
1430
1432
  return { type: "button" };
1431
1433
  }
@@ -1434,7 +1436,7 @@ var Link = (0, import_react14.forwardRef)(
1434
1436
  }
1435
1437
  return {};
1436
1438
  }, [_as, url]);
1437
- return (0, import_react14.createElement)(
1439
+ return (0, import_react16.createElement)(
1438
1440
  _as,
1439
1441
  {
1440
1442
  ...props,
@@ -1460,18 +1462,18 @@ var Link_default = Link;
1460
1462
 
1461
1463
  // src/usePoll.ts
1462
1464
  var import_core8 = require("@inertiajs/core");
1463
- var import_react15 = require("react");
1465
+ var import_react17 = require("react");
1464
1466
  function usePoll(interval, requestOptions = {}, options = {
1465
1467
  keepAlive: false,
1466
1468
  autoStart: true
1467
1469
  }) {
1468
- const pollRef = (0, import_react15.useRef)(
1470
+ const pollRef = (0, import_react17.useRef)(
1469
1471
  import_core8.router.poll(interval, requestOptions, {
1470
1472
  ...options,
1471
1473
  autoStart: false
1472
1474
  })
1473
1475
  );
1474
- (0, import_react15.useEffect)(() => {
1476
+ (0, import_react17.useEffect)(() => {
1475
1477
  if (options.autoStart ?? true) {
1476
1478
  pollRef.current.start();
1477
1479
  }
@@ -1485,14 +1487,14 @@ function usePoll(interval, requestOptions = {}, options = {
1485
1487
 
1486
1488
  // src/usePrefetch.ts
1487
1489
  var import_core9 = require("@inertiajs/core");
1488
- var import_react16 = require("react");
1490
+ var import_react18 = require("react");
1489
1491
  function usePrefetch(options = {}) {
1490
1492
  const cached = typeof window === "undefined" ? null : import_core9.router.getCached(window.location.pathname, options);
1491
1493
  const inFlight = typeof window === "undefined" ? null : import_core9.router.getPrefetching(window.location.pathname, options);
1492
- const [lastUpdatedAt, setLastUpdatedAt] = (0, import_react16.useState)(cached?.staleTimestamp || null);
1493
- const [isPrefetching, setIsPrefetching] = (0, import_react16.useState)(inFlight !== null);
1494
- const [isPrefetched, setIsPrefetched] = (0, import_react16.useState)(cached !== null);
1495
- (0, import_react16.useEffect)(() => {
1494
+ const [lastUpdatedAt, setLastUpdatedAt] = (0, import_react18.useState)(cached?.staleTimestamp || null);
1495
+ const [isPrefetching, setIsPrefetching] = (0, import_react18.useState)(inFlight !== null);
1496
+ const [isPrefetched, setIsPrefetched] = (0, import_react18.useState)(cached !== null);
1497
+ (0, import_react18.useEffect)(() => {
1496
1498
  const onPrefetchingListener = import_core9.router.on("prefetching", (e) => {
1497
1499
  if (e.detail.visit.url.pathname === window.location.pathname) {
1498
1500
  setIsPrefetching(true);
@@ -1520,25 +1522,25 @@ function usePrefetch(options = {}) {
1520
1522
 
1521
1523
  // src/WhenVisible.ts
1522
1524
  var import_core10 = require("@inertiajs/core");
1523
- var import_react17 = require("react");
1525
+ var import_react19 = require("react");
1524
1526
  var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) => {
1525
1527
  always = always ?? false;
1526
1528
  as = as ?? "div";
1527
1529
  fallback = fallback ?? null;
1528
1530
  const pageProps = usePage().props;
1529
- const keys = (0, import_react17.useMemo)(() => data ? Array.isArray(data) ? data : [data] : [], [data]);
1530
- const [loaded, setLoaded] = (0, import_react17.useState)(() => keys.length > 0 && keys.every((key) => pageProps[key] !== void 0));
1531
- const [isFetching, setIsFetching] = (0, import_react17.useState)(false);
1532
- const fetching = (0, import_react17.useRef)(false);
1533
- const ref = (0, import_react17.useRef)(null);
1534
- const observer = (0, import_react17.useRef)(null);
1535
- const getReloadParamsRef = (0, import_react17.useRef)(() => ({}));
1536
- (0, import_react17.useEffect)(() => {
1531
+ const keys = (0, import_react19.useMemo)(() => data ? Array.isArray(data) ? data : [data] : [], [data]);
1532
+ const [loaded, setLoaded] = (0, import_react19.useState)(() => keys.length > 0 && keys.every((key) => pageProps[key] !== void 0));
1533
+ const [isFetching, setIsFetching] = (0, import_react19.useState)(false);
1534
+ const fetching = (0, import_react19.useRef)(false);
1535
+ const ref = (0, import_react19.useRef)(null);
1536
+ const observer = (0, import_react19.useRef)(null);
1537
+ const getReloadParamsRef = (0, import_react19.useRef)(() => ({}));
1538
+ (0, import_react19.useEffect)(() => {
1537
1539
  if (keys.length > 0) {
1538
1540
  setLoaded(keys.every((key) => pageProps[key] !== void 0));
1539
1541
  }
1540
1542
  }, [pageProps, keys]);
1541
- const getReloadParams = (0, import_react17.useCallback)(() => {
1543
+ const getReloadParams = (0, import_react19.useCallback)(() => {
1542
1544
  const reloadParams = { ...params };
1543
1545
  if (data) {
1544
1546
  reloadParams.only = Array.isArray(data) ? data : [data];
@@ -1586,7 +1588,7 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1586
1588
  );
1587
1589
  observer.current.observe(ref.current);
1588
1590
  };
1589
- (0, import_react17.useEffect)(() => {
1591
+ (0, import_react19.useEffect)(() => {
1590
1592
  if (!ref.current) {
1591
1593
  return;
1592
1594
  }
@@ -1601,7 +1603,7 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1601
1603
  const resolveChildren = () => typeof children === "function" ? children({ fetching: isFetching }) : children;
1602
1604
  const resolveFallback = () => typeof fallback === "function" ? fallback() : fallback;
1603
1605
  if (always || !loaded) {
1604
- return (0, import_react17.createElement)(
1606
+ return (0, import_react19.createElement)(
1605
1607
  as,
1606
1608
  {
1607
1609
  props: null,