@inertiajs/react 3.0.0-beta.5 → 3.0.0-beta.6

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
@@ -409,7 +409,7 @@ import {
409
409
  UseFormUtils as UseFormUtils2
410
410
  } from "@inertiajs/core";
411
411
  import { cloneDeep as cloneDeep2 } from "es-toolkit";
412
- import { useCallback as useCallback2, useRef as useRef3, useState as useState5 } from "react";
412
+ import { useCallback as useCallback2, useMemo as useMemo3, useRef as useRef3, useState as useState5 } from "react";
413
413
 
414
414
  // src/react.ts
415
415
  import { useEffect as useEffect3, useLayoutEffect } from "react";
@@ -428,7 +428,7 @@ import {
428
428
  resolveName,
429
429
  toSimpleValidationErrors
430
430
  } from "laravel-precognition";
431
- import { useCallback, useEffect as useEffect4, useMemo as useMemo3, useRef as useRef2, useState as useState3 } from "react";
431
+ import { useCallback, useEffect as useEffect4, useRef as useRef2, useState as useState3 } from "react";
432
432
  function useFormState(options) {
433
433
  const { data: dataOption, useDataState, useErrorsState } = options;
434
434
  const isDataFunction = typeof dataOption === "function";
@@ -439,8 +439,8 @@ function useFormState(options) {
439
439
  const [defaults, setDefaultsState] = useState3(cloneDeep(initialData));
440
440
  const [data, setData] = useDataState ? useDataState() : useState3(cloneDeep(initialData));
441
441
  const [errors, setErrors] = useErrorsState ? useErrorsState() : useState3({});
442
- const [processing, _setProcessing] = useState3(false);
443
- const [progress2, _setProgress] = useState3(null);
442
+ const [processing, setProcessing] = useState3(false);
443
+ const [progress2, setProgress] = useState3(null);
444
444
  const [wasSuccessful, setWasSuccessful] = useState3(false);
445
445
  const [recentlySuccessful, setRecentlySuccessful] = useState3(false);
446
446
  const recentlySuccessfulTimeoutId = useRef2(void 0);
@@ -462,38 +462,6 @@ function useFormState(options) {
462
462
  isMounted.current = false;
463
463
  };
464
464
  }, []);
465
- const snapshotRef = useRef2({
466
- data,
467
- defaults,
468
- errors,
469
- processing,
470
- progress: progress2,
471
- wasSuccessful,
472
- recentlySuccessful,
473
- validating,
474
- touchedFields,
475
- validFields
476
- });
477
- snapshotRef.current = {
478
- data,
479
- defaults,
480
- errors,
481
- processing,
482
- progress: progress2,
483
- wasSuccessful,
484
- recentlySuccessful,
485
- validating,
486
- touchedFields,
487
- validFields
488
- };
489
- const setProcessing = useCallback((value) => {
490
- _setProcessing(value);
491
- snapshotRef.current.processing = value;
492
- }, []);
493
- const setProgress = useCallback((value) => {
494
- _setProgress(value);
495
- snapshotRef.current.progress = value;
496
- }, []);
497
465
  const setDataFunction = useCallback(
498
466
  (keyOrData, maybeValue) => {
499
467
  if (typeof keyOrData === "string") {
@@ -565,7 +533,6 @@ function useFormState(options) {
565
533
  ...errors2,
566
534
  ...typeof fieldOrFields === "string" ? { [fieldOrFields]: maybeValue } : fieldOrFields
567
535
  };
568
- snapshotRef.current.errors = newErrors;
569
536
  validatorRef.current?.setErrors(newErrors);
570
537
  return newErrors;
571
538
  });
@@ -582,7 +549,6 @@ function useFormState(options) {
582
549
  }),
583
550
  {}
584
551
  );
585
- snapshotRef.current.errors = newErrors;
586
552
  if (validatorRef.current) {
587
553
  if (fields.length === 0) {
588
554
  validatorRef.current.setErrors({});
@@ -602,29 +568,21 @@ function useFormState(options) {
602
568
  },
603
569
  [reset, clearErrors]
604
570
  );
605
- const setWasSuccessfulWithSnapshot = useCallback((value) => {
606
- setWasSuccessful(value);
607
- snapshotRef.current.wasSuccessful = value;
608
- }, []);
609
- const setRecentlySuccessfulWithSnapshot = useCallback((value) => {
610
- setRecentlySuccessful(value);
611
- snapshotRef.current.recentlySuccessful = value;
612
- }, []);
613
571
  const markAsSuccessful = useCallback(() => {
614
572
  clearErrors();
615
- setWasSuccessfulWithSnapshot(true);
616
- setRecentlySuccessfulWithSnapshot(true);
573
+ setWasSuccessful(true);
574
+ setRecentlySuccessful(true);
617
575
  recentlySuccessfulTimeoutId.current = window.setTimeout(() => {
618
576
  if (isMounted.current) {
619
- setRecentlySuccessfulWithSnapshot(false);
577
+ setRecentlySuccessful(false);
620
578
  }
621
579
  }, config.get("form.recentlySuccessfulDuration"));
622
- }, [clearErrors, setWasSuccessfulWithSnapshot, setRecentlySuccessfulWithSnapshot]);
580
+ }, [clearErrors, setWasSuccessful, setRecentlySuccessful]);
623
581
  const resetBeforeSubmit = useCallback(() => {
624
- setWasSuccessfulWithSnapshot(false);
625
- setRecentlySuccessfulWithSnapshot(false);
582
+ setWasSuccessful(false);
583
+ setRecentlySuccessful(false);
626
584
  clearTimeout(recentlySuccessfulTimeoutId.current);
627
- }, [setWasSuccessfulWithSnapshot, setRecentlySuccessfulWithSnapshot]);
585
+ }, [setWasSuccessful, setRecentlySuccessful]);
628
586
  const finishProcessing = useCallback(() => {
629
587
  setProcessing(false);
630
588
  setProgress(null);
@@ -645,35 +603,15 @@ function useFormState(options) {
645
603
  (field) => typeof field === "string" ? touchedFields.includes(field) : touchedFields.length > 0,
646
604
  [touchedFields]
647
605
  );
648
- const form = useMemo3(() => {
649
- return {
650
- get data() {
651
- return snapshotRef.current.data;
652
- },
653
- get isDirty() {
654
- return !isEqual(snapshotRef.current.data, snapshotRef.current.defaults);
655
- },
656
- get errors() {
657
- return snapshotRef.current.errors;
658
- },
659
- get hasErrors() {
660
- return Object.keys(snapshotRef.current.errors).length > 0;
661
- },
662
- get processing() {
663
- return snapshotRef.current.processing;
664
- },
665
- get progress() {
666
- return snapshotRef.current.progress;
667
- },
668
- get wasSuccessful() {
669
- return snapshotRef.current.wasSuccessful;
670
- },
671
- get recentlySuccessful() {
672
- return snapshotRef.current.recentlySuccessful;
673
- }
674
- };
675
- }, []);
676
- Object.assign(form, {
606
+ const form = {
607
+ data,
608
+ isDirty: !isEqual(data, defaults),
609
+ errors,
610
+ hasErrors: Object.keys(errors).length > 0,
611
+ processing,
612
+ progress: progress2,
613
+ wasSuccessful,
614
+ recentlySuccessful,
677
615
  setData: setDataFunction,
678
616
  transform: transformFunction,
679
617
  setDefaults: setDefaultsFunction,
@@ -681,7 +619,7 @@ function useFormState(options) {
681
619
  setError,
682
620
  clearErrors,
683
621
  resetAndClearErrors
684
- });
622
+ };
685
623
  const validate = (field, config3) => {
686
624
  if (typeof field === "object" && !("target" in field)) {
687
625
  config3 = field;
@@ -718,14 +656,11 @@ function useFormState(options) {
718
656
  }).on("errorsChanged", () => {
719
657
  const validationErrors = withAllErrorsEnabled() ? validator.errors() : toSimpleValidationErrors(validator.errors());
720
658
  setErrors(validationErrors);
721
- snapshotRef.current.errors = validationErrors;
722
659
  setValidFields(validator.valid());
723
660
  });
724
661
  }
725
662
  const precognitiveForm = Object.assign(form, {
726
- get validating() {
727
- return snapshotRef.current.validating;
728
- },
663
+ validating,
729
664
  validator: () => validatorRef.current,
730
665
  valid,
731
666
  invalid,
@@ -816,6 +751,7 @@ function useForm(...args) {
816
751
  setDefaultsState,
817
752
  transformRef,
818
753
  precognitionEndpointRef,
754
+ dataRef,
819
755
  isMounted,
820
756
  setProcessing,
821
757
  setProgress,
@@ -906,30 +842,33 @@ function useForm(...args) {
906
842
  };
907
843
  _options.optimistic = _options.optimistic ?? pendingOptimisticRef.current ?? void 0;
908
844
  pendingOptimisticRef.current = null;
909
- const transformedData = transformRef.current(baseForm.data);
845
+ const transformedData = transformRef.current(dataRef.current);
910
846
  if (method === "delete") {
911
847
  router5.delete(url, { ..._options, data: transformedData });
912
848
  } else {
913
849
  router5[method](url, transformedData, _options);
914
850
  }
915
851
  },
916
- [baseForm.data, clearErrors, setError, transformRef]
852
+ [clearErrors, setError, transformRef]
917
853
  );
918
854
  const cancel = useCallback2(() => {
919
855
  if (cancelToken.current) {
920
856
  cancelToken.current.cancel();
921
857
  }
922
858
  }, []);
923
- const createSubmitMethod = (method) => (url, options = {}) => {
924
- submit(method, url, options);
925
- };
859
+ const submitMethods = useMemo3(
860
+ () => ({
861
+ get: (url, options = {}) => submit("get", url, options),
862
+ post: (url, options = {}) => submit("post", url, options),
863
+ put: (url, options = {}) => submit("put", url, options),
864
+ patch: (url, options = {}) => submit("patch", url, options),
865
+ delete: (url, options = {}) => submit("delete", url, options)
866
+ }),
867
+ [submit]
868
+ );
926
869
  Object.assign(baseForm, {
927
870
  submit,
928
- get: createSubmitMethod("get"),
929
- post: createSubmitMethod("post"),
930
- put: createSubmitMethod("put"),
931
- patch: createSubmitMethod("patch"),
932
- delete: createSubmitMethod("delete"),
871
+ ...submitMethods,
933
872
  cancel,
934
873
  dontRemember: (...keys) => {
935
874
  excludeKeysRef.current = keys;
@@ -1800,7 +1739,7 @@ import {
1800
1739
  } from "@inertiajs/core";
1801
1740
  import { cloneDeep as cloneDeep3 } from "es-toolkit";
1802
1741
  import { toSimpleValidationErrors as toSimpleValidationErrors2 } from "laravel-precognition";
1803
- import { useCallback as useCallback4, useRef as useRef7, useState as useState9 } from "react";
1742
+ import { useCallback as useCallback4, useMemo as useMemo8, useRef as useRef7, useState as useState9 } from "react";
1804
1743
  function useHttp(...args) {
1805
1744
  const { rememberKey, data, precognitionEndpoint } = UseFormUtils4.parseUseFormArguments(...args);
1806
1745
  const initialDefaults = typeof data === "function" ? cloneDeep3(data()) : cloneDeep3(data);
@@ -1950,9 +1889,6 @@ function useHttp(...args) {
1950
1889
  abortController.current.abort();
1951
1890
  }
1952
1891
  }, []);
1953
- const createSubmitMethod = (method) => async (url, options = {}) => {
1954
- return submit(method, url, options);
1955
- };
1956
1892
  const submitWithArgs = useCallback4(
1957
1893
  (...args2) => {
1958
1894
  const parsed = UseFormUtils4.parseSubmitArguments(args2, precognitionEndpointRef.current);
@@ -1960,14 +1896,20 @@ function useHttp(...args) {
1960
1896
  },
1961
1897
  [submit]
1962
1898
  );
1899
+ const submitMethods = useMemo8(
1900
+ () => ({
1901
+ get: async (url, options = {}) => submit("get", url, options),
1902
+ post: async (url, options = {}) => submit("post", url, options),
1903
+ put: async (url, options = {}) => submit("put", url, options),
1904
+ patch: async (url, options = {}) => submit("patch", url, options),
1905
+ delete: async (url, options = {}) => submit("delete", url, options)
1906
+ }),
1907
+ [submit]
1908
+ );
1963
1909
  Object.assign(baseForm, {
1964
1910
  response,
1965
1911
  submit: submitWithArgs,
1966
- get: createSubmitMethod("get"),
1967
- post: createSubmitMethod("post"),
1968
- put: createSubmitMethod("put"),
1969
- patch: createSubmitMethod("patch"),
1970
- delete: createSubmitMethod("delete"),
1912
+ ...submitMethods,
1971
1913
  cancel,
1972
1914
  dontRemember: (...keys) => {
1973
1915
  excludeKeysRef.current = keys;
@@ -2054,13 +1996,13 @@ function usePrefetch(options = {}) {
2054
1996
  // src/WhenVisible.ts
2055
1997
  import { router as router9 } from "@inertiajs/core";
2056
1998
  import { get as get3 } from "es-toolkit/compat";
2057
- import { createElement as createElement6, useCallback as useCallback5, useEffect as useEffect12, useMemo as useMemo8, useRef as useRef9, useState as useState11 } from "react";
1999
+ import { createElement as createElement6, useCallback as useCallback5, useEffect as useEffect12, useMemo as useMemo9, useRef as useRef9, useState as useState11 } from "react";
2058
2000
  var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) => {
2059
2001
  always = always ?? false;
2060
2002
  as = as ?? "div";
2061
2003
  fallback = fallback ?? null;
2062
2004
  const pageProps = usePage().props;
2063
- const keys = useMemo8(() => data ? Array.isArray(data) ? data : [data] : [], [data]);
2005
+ const keys = useMemo9(() => data ? Array.isArray(data) ? data : [data] : [], [data]);
2064
2006
  const [loaded, setLoaded] = useState11(() => keys.length > 0 && keys.every((key) => get3(pageProps, key) !== void 0));
2065
2007
  const [isFetching, setIsFetching] = useState11(false);
2066
2008
  const fetching = useRef9(false);
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts", "../src/App.ts", "../src/HeadContext.ts", "../src/layoutProps.ts", "../src/PageContext.ts", "../src/createInertiaApp.ts", "../src/Deferred.ts", "../src/usePage.ts", "../src/Form.ts", "../src/useForm.ts", "../src/react.ts", "../src/useFormState.ts", "../src/useRemember.ts", "../src/Head.ts", "../src/InfiniteScroll.ts", "../src/Link.ts", "../src/useHttp.ts", "../src/usePoll.ts", "../src/usePrefetch.ts", "../src/WhenVisible.ts"],
4
- "sourcesContent": ["import { config as coreConfig } from '@inertiajs/core'\nimport type { ReactInertiaAppConfig } from './types'\n\nexport { http, progress, router } from '@inertiajs/core'\nexport { default as App } from './App'\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './Deferred'\nexport { default as Form, useFormContext } from './Form'\nexport { default as Head } from './Head'\nexport { default as InfiniteScroll } from './InfiniteScroll'\nexport { resetLayoutProps, setLayoutProps, setLayoutPropsFor } from './layoutProps'\nexport { InertiaLinkProps, default as Link } from './Link'\nexport { LayoutCallback, ReactComponent as ResolvedComponent } from './types'\nexport {\n InertiaForm,\n InertiaFormProps,\n InertiaPrecognitiveFormProps,\n SetDataAction,\n SetDataByKeyValuePair,\n SetDataByMethod,\n SetDataByObject,\n default as useForm,\n} from './useForm'\nexport { default as useHttp } from './useHttp'\nexport { default as usePage } from './usePage'\nexport { default as usePoll } from './usePoll'\nexport { default as usePrefetch } from './usePrefetch'\nexport { default as useRemember } from './useRemember'\nexport { default as WhenVisible } from './WhenVisible'\n\nexport const config = coreConfig.extend<ReactInertiaAppConfig>()\n", "import {\n createHeadManager,\n HeadManagerOnUpdateCallback,\n HeadManagerTitleCallback,\n normalizeLayouts,\n Page,\n PageHandler,\n PageProps,\n router,\n} from '@inertiajs/core'\nimport {\n createElement,\n FunctionComponent,\n isValidElement,\n ReactNode,\n useEffect,\n useMemo,\n useState,\n useSyncExternalStore,\n} from 'react'\nimport { flushSync } from 'react-dom'\nimport HeadContext from './HeadContext'\nimport { resetLayoutProps, store } from './layoutProps'\nimport PageContext from './PageContext'\nimport { LayoutFunction, ReactComponent, ReactPageHandlerArgs } from './types'\n\nfunction isComponent(value: unknown): value is ReactComponent {\n if (!value) {\n return false\n }\n\n if (typeof value === 'object' && '$$typeof' in value) {\n return true\n }\n\n if (typeof value === 'function') {\n const fn = value as Function & { displayName?: string; prototype?: { isReactComponent?: boolean } }\n return fn.prototype?.isReactComponent === true || fn.name !== '' || fn.displayName !== undefined\n }\n\n return false\n}\n\nfunction isRenderFunction(value: unknown): boolean {\n if (typeof value !== 'function') {\n return false\n }\n\n const fn = value as Function\n return fn.length === 1 && typeof fn.prototype === 'undefined'\n}\n\nlet currentIsInitialPage = true\nlet routerIsInitialized = false\nlet swapComponent: PageHandler<ReactComponent> = async () => {\n // Dummy function so we can init the router outside of the useEffect hook. This is\n // needed so `router.reload()` works right away (on mount) in any of the user's\n // components. We swap in the real function in the useEffect hook below.\n currentIsInitialPage = false\n}\n\ntype CurrentPage = {\n component: ReactComponent | null\n page: Page\n key: number | null\n}\n\nexport interface InertiaAppProps<SharedProps extends PageProps = PageProps> {\n children?: (options: { Component: ReactComponent; props: PageProps; key: number | null }) => ReactNode\n initialPage: Page<SharedProps>\n initialComponent?: ReactComponent\n resolveComponent?: (name: string, page?: Page) => ReactComponent | Promise<ReactComponent>\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdateCallback\n defaultLayout?: (name: string, page: Page) => unknown\n}\n\nexport type InertiaApp = FunctionComponent<InertiaAppProps>\n\nconst emptySnapshot = {\n shared: {} as Record<string, unknown>,\n named: {} as Record<string, Record<string, unknown>>,\n}\n\nexport default function App<SharedProps extends PageProps = PageProps>({\n children,\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n defaultLayout,\n}: InertiaAppProps<SharedProps>) {\n const [current, setCurrent] = useState<CurrentPage>({\n component: initialComponent || null,\n page: { ...initialPage, flash: initialPage.flash ?? {} },\n key: null,\n })\n\n const headManager = useMemo(() => {\n return createHeadManager(\n typeof window === 'undefined',\n titleCallback || ((title) => title),\n onHeadUpdate || (() => {}),\n )\n }, [])\n\n const dynamicLayoutProps = useSyncExternalStore(store.subscribe, store.get, () => emptySnapshot)\n\n if (!routerIsInitialized) {\n router.init<ReactComponent>({\n initialPage,\n resolveComponent: resolveComponent!,\n swapComponent: async (args) => swapComponent(args),\n onFlash: (flash) => {\n setCurrent((current) => ({\n ...current,\n page: { ...current.page, flash },\n }))\n },\n })\n\n routerIsInitialized = true\n }\n\n useEffect(() => {\n swapComponent = async ({ component, page, preserveState }: ReactPageHandlerArgs) => {\n if (currentIsInitialPage) {\n // We block setting the current page on the initial page to\n // prevent the initial page from being re-rendered again.\n currentIsInitialPage = false\n return\n }\n\n if (!preserveState) {\n resetLayoutProps()\n }\n\n flushSync(() =>\n setCurrent((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\n })),\n )\n }\n\n router.on('navigate', () => headManager.forceUpdate())\n }, [])\n\n if (!current.component) {\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(PageContext.Provider, { value: current.page }, null),\n )\n }\n\n const renderChildren =\n children ||\n (({ Component, props, key }) => {\n const child = createElement(Component, { key, ...props })\n\n if (Component.layout && isRenderFunction(Component.layout)) {\n const result = (Component.layout as Function)(props)\n\n if (isValidElement(result)) {\n return (Component.layout as LayoutFunction)(child)\n }\n\n const layouts = normalizeLayouts(result, isComponent)\n\n if (layouts.length > 0) {\n return layouts.reduceRight((childNode, layout) => {\n return createElement(\n layout.component,\n {\n ...props,\n ...layout.props,\n ...dynamicLayoutProps.shared,\n ...(layout.name ? dynamicLayoutProps.named[layout.name] || {} : {}),\n },\n childNode,\n )\n }, child)\n }\n\n return child\n }\n\n const effectiveLayout = Component.layout ?? defaultLayout?.(current.page.component, current.page)\n const layouts = normalizeLayouts(effectiveLayout, isComponent, Component.layout ? isRenderFunction : undefined)\n\n if (layouts.length > 0) {\n return layouts.reduceRight((childNode, layout) => {\n return createElement(\n layout.component,\n {\n ...props,\n ...layout.props,\n ...dynamicLayoutProps.shared,\n ...(layout.name ? dynamicLayoutProps.named[layout.name] || {} : {}),\n },\n childNode,\n )\n }, child)\n }\n\n return child\n })\n\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(\n PageContext.Provider,\n { value: current.page },\n renderChildren({\n Component: current.component,\n key: current.key,\n props: current.page.props,\n }),\n ),\n )\n}\n\nApp.displayName = 'Inertia'\n", "import { HeadManager } from '@inertiajs/core'\nimport { createContext } from 'react'\n\nconst headContext = createContext<HeadManager | null>(null)\nheadContext.displayName = 'InertiaHeadContext'\n\nexport default headContext\n", "import { createLayoutPropsStore, type LayoutProps, type NamedLayoutProps } from '@inertiajs/core'\n\nexport const store = createLayoutPropsStore()\n\nexport function setLayoutProps(props: Partial<LayoutProps>): void {\n store.set(props)\n}\n\nexport function setLayoutPropsFor<K extends keyof NamedLayoutProps>(\n name: K,\n props: Partial<NamedLayoutProps[K]>,\n): void {\n store.setFor(name, props)\n}\n\nexport function resetLayoutProps(): void {\n store.reset()\n}\n", "import { Page } from '@inertiajs/core'\nimport { createContext } from 'react'\n\nconst pageContext = createContext<Page | null>(null)\npageContext.displayName = 'InertiaPageContext'\n\nexport default pageContext\n", "import {\n buildSSRBody,\n CreateInertiaAppOptions,\n CreateInertiaAppOptionsForCSR,\n CreateInertiaAppOptionsForSSR,\n getInitialPageFromDOM,\n http as httpModule,\n InertiaAppSSRResponse,\n Page,\n PageProps,\n router,\n setupProgress,\n SharedPageProps,\n} from '@inertiajs/core'\nimport { createElement, ReactElement, StrictMode } from 'react'\nimport { createRoot, hydrateRoot } from 'react-dom/client'\nimport { renderToString } from 'react-dom/server'\nimport App, { InertiaAppProps, type InertiaApp } from './App'\nimport { config } from './index'\nimport { ReactComponent, ReactInertiaAppConfig } from './types'\n\nexport type SetupOptions<ElementType, SharedProps extends PageProps> = {\n el: ElementType\n App: InertiaApp\n props: InertiaAppProps<SharedProps>\n}\n\ntype ComponentResolver = (\n name: string,\n page?: Page<SharedPageProps>,\n) => ReactComponent | Promise<ReactComponent> | { default: ReactComponent }\n\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForCSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<HTMLElement, SharedProps>,\n void,\n ReactInertiaAppConfig\n> & {\n strictMode?: undefined\n withApp?: (app: ReactElement, options: { ssr: boolean }) => ReactElement\n}\n\ntype InertiaAppOptionsForSSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForSSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<null, SharedProps>,\n ReactElement,\n ReactInertiaAppConfig\n> & {\n render: typeof renderToString\n strictMode?: undefined\n withApp?: (app: ReactElement, options: { ssr: boolean }) => ReactElement\n}\n\ntype InertiaAppOptionsAuto<SharedProps extends PageProps> = CreateInertiaAppOptions<\n ComponentResolver,\n SetupOptions<HTMLElement | null, SharedProps>,\n ReactElement | void,\n ReactInertiaAppConfig\n> & {\n page?: Page<SharedProps>\n render?: undefined\n strictMode?: boolean\n withApp?: (app: ReactElement, options: { ssr: boolean }) => ReactElement\n}\n\ntype RenderToString = (element: ReactElement) => string\n\ntype RenderFunction<SharedProps extends PageProps> = (\n page: Page<SharedProps>,\n renderToString: RenderToString,\n) => Promise<InertiaAppSSRResponse>\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<void>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<InertiaAppSSRResponse>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options?: InertiaAppOptionsAuto<SharedProps>,\n): Promise<void | RenderFunction<SharedProps>>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n {\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n defaults = {},\n http,\n layout,\n strictMode = false,\n withApp,\n }:\n | InertiaAppOptionsForCSR<SharedProps>\n | InertiaAppOptionsForSSR<SharedProps>\n | InertiaAppOptionsAuto<SharedProps> = {} as InertiaAppOptionsAuto<SharedProps>,\n): Promise<InertiaAppSSRResponse | RenderFunction<SharedProps> | void> {\n config.replace(defaults)\n\n if (http) {\n httpModule.setClient(http)\n }\n\n const isServer = typeof window === 'undefined'\n\n const wrapWithStrictMode = (element: ReactElement): ReactElement => {\n return strictMode ? createElement(StrictMode, null, element) : element\n }\n\n const resolveComponent = (name: string, page?: Page) =>\n Promise.resolve(resolve!(name, page)).then((module) => {\n return ((module as { default?: ReactComponent }).default || module) as ReactComponent\n })\n\n // SSR render function factory - when on server without page/render, return a render function\n // This is used by the Vite plugin's SSR transform\n if (isServer && !page && !render) {\n return async (page: Page<SharedProps>, renderToString: RenderToString) => {\n let head: string[] = []\n\n const initialComponent = await resolveComponent(page.component, page)\n\n const props: InertiaAppProps<SharedProps> = {\n initialPage: page,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: (elements: string[]) => (head = elements),\n defaultLayout: layout,\n }\n\n let reactApp: ReactElement\n\n if (setup) {\n reactApp = (setup as (options: SetupOptions<null, SharedProps>) => ReactElement)({\n el: null,\n App,\n props,\n })\n } else {\n reactApp = wrapWithStrictMode(createElement(App, props))\n\n if (withApp) {\n reactApp = withApp(reactApp, { ssr: true })\n }\n }\n\n const html = renderToString(reactApp)\n const body = buildSSRBody(id, page, html)\n\n return { head, body }\n }\n }\n\n const initialPage = page || getInitialPageFromDOM<Page<SharedProps>>(id)!\n\n let head: string[] = []\n\n const reactApp = await Promise.all([\n resolveComponent(initialPage.component, initialPage),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n const props: InertiaAppProps<SharedProps> = {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: isServer ? (elements: string[]) => (head = elements) : undefined,\n defaultLayout: layout,\n }\n\n if (isServer) {\n return (setup as (options: SetupOptions<null, SharedProps>) => ReactElement)({\n el: null,\n App,\n props,\n })\n }\n\n const el = document.getElementById(id)!\n\n if (setup) {\n return (setup as (options: SetupOptions<HTMLElement, SharedProps>) => void)({\n el,\n App,\n props,\n })\n }\n\n let appElement = wrapWithStrictMode(createElement(App, props))\n\n if (withApp) {\n appElement = withApp(appElement, { ssr: false })\n }\n\n if (el.hasAttribute('data-server-rendered')) {\n hydrateRoot(el, appElement)\n } else {\n createRoot(el).render(appElement)\n }\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer && render && reactApp) {\n const html = render(reactApp)\n const body = buildSSRBody(id, initialPage, html)\n\n return { head, body }\n }\n}\n", "import { isSameUrlWithoutQueryOrHash } from '@inertiajs/core'\nimport { get } from 'es-toolkit/compat'\nimport { ReactNode, useEffect, useMemo, useRef, useState } from 'react'\nimport { router } from '.'\nimport usePage from './usePage'\n\nconst keysAreBeingReloaded = (only: string[], except: string[], keys: string[]): boolean => {\n if (only.length === 0 && except.length === 0) {\n return true\n }\n\n if (only.length > 0) {\n return keys.some((key) => only.includes(key))\n }\n\n return keys.some((key) => !except.includes(key))\n}\n\ninterface DeferredSlotProps {\n reloading: boolean\n}\n\ninterface DeferredProps {\n children: ReactNode | ((props: DeferredSlotProps) => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data: string | string[]\n}\n\nconst Deferred = ({ children, data, fallback }: DeferredProps) => {\n if (!data) {\n throw new Error('`<Deferred>` requires a `data` prop to be a string or array of strings')\n }\n\n const [loaded, setLoaded] = useState(false)\n const [reloading, setReloading] = useState(false)\n const activeReloads = useRef(new Set<object>())\n const pageProps = usePage().props\n const keys = useMemo(() => (Array.isArray(data) ? data : [data]), [data])\n\n useEffect(() => {\n const removeStartListener = router.on('start', (e) => {\n const visit = e.detail.visit\n\n if (\n visit.preserveState === true &&\n isSameUrlWithoutQueryOrHash(visit.url, window.location) &&\n keysAreBeingReloaded(visit.only, visit.except, keys)\n ) {\n activeReloads.current.add(visit)\n setReloading(true)\n }\n })\n\n const removeFinishListener = router.on('finish', (e) => {\n const visit = e.detail.visit\n\n if (activeReloads.current.has(visit)) {\n activeReloads.current.delete(visit)\n setReloading(activeReloads.current.size > 0)\n }\n })\n\n return () => {\n removeStartListener()\n removeFinishListener()\n activeReloads.current.clear()\n }\n }, [keys])\n\n useEffect(() => {\n setLoaded(keys.every((key) => get(pageProps, key) !== undefined))\n }, [pageProps, keys])\n\n const propsAreDefined = useMemo(() => keys.every((key) => get(pageProps, key) !== undefined), [keys, pageProps])\n\n if (loaded && propsAreDefined) {\n if (typeof children === 'function') {\n return children({ reloading })\n }\n\n return children\n }\n\n return typeof fallback === 'function' ? fallback() : fallback\n}\n\nDeferred.displayName = 'InertiaDeferred'\n\nexport default Deferred\n", "import { Page, PageProps, SharedPageProps } from '@inertiajs/core'\nimport { use } from 'react'\nimport PageContext from './PageContext'\n\nexport default function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps & SharedPageProps> {\n const page = use(PageContext)\n\n if (!page) {\n throw new Error('usePage must be used within the Inertia component')\n }\n\n return page as Page<TPageProps & SharedPageProps>\n}\n", "import {\n config,\n FormComponentProps,\n FormComponentRef,\n FormComponentResetSymbol,\n FormComponentSlotProps,\n FormDataConvertible,\n formDataToObject,\n isUrlMethodPair,\n mergeDataIntoQueryString,\n Method,\n resetFormFields,\n resolveUrlMethodPairComponent,\n UseFormUtils,\n VisitOptions,\n} from '@inertiajs/core'\nimport { isEqual } from 'es-toolkit'\nimport { NamedInputEvent, ValidationConfig } from 'laravel-precognition'\nimport React, {\n createContext,\n createElement,\n FormEvent,\n forwardRef,\n ReactNode,\n use,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport useForm from './useForm'\n\n// Polyfill for startTransition to support React 16.9+\nconst deferStateUpdate = (callback: () => void) => {\n typeof React.startTransition === 'function' ? React.startTransition(callback) : setTimeout(callback, 0)\n}\n\ntype FormProps<TForm extends object = Record<string, any>> = FormComponentProps &\n Omit<React.FormHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> &\n Omit<React.AllHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> & {\n children: ReactNode | ((props: FormComponentSlotProps<TForm>) => ReactNode)\n }\n\ntype FormSubmitOptions = Omit<VisitOptions, 'data' | 'onPrefetched' | 'onPrefetching'>\ntype FormSubmitter = HTMLElement | null\n\nconst noop = () => undefined\n\nconst FormContext = createContext<FormComponentRef | undefined>(undefined)\n\nconst Form = forwardRef<FormComponentRef, FormProps>(\n (\n {\n action = '',\n method = 'get',\n headers = {},\n queryStringArrayFormat = 'brackets',\n errorBag = null,\n showProgress = true,\n transform = (data) => data,\n optimistic,\n options = {},\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onBefore = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n onCancelToken = noop,\n onSubmitComplete = noop,\n disableWhileProcessing = false,\n resetOnError = false,\n resetOnSuccess = false,\n setDefaultsOnSuccess = false,\n invalidateCacheTags = [],\n validateFiles = false,\n validationTimeout = 1500,\n withAllErrors = null,\n component = null,\n instant = false,\n children,\n ...props\n },\n ref,\n ) => {\n const getTransformedData = (): Record<string, FormDataConvertible> => {\n const [_url, data] = getUrlAndData()\n return transform(data)\n }\n\n const form = useForm<Record<string, any>>({})\n .withPrecognition(\n () => resolvedMethod,\n () => getUrlAndData()[0],\n )\n .setValidationTimeout(validationTimeout)\n\n if (validateFiles) {\n form.validateFiles()\n }\n\n if (withAllErrors ?? config.get('form.withAllErrors')) {\n form.withAllErrors()\n }\n\n form.transform(getTransformedData)\n\n const formElement = useRef<HTMLFormElement>(undefined)\n\n const resolvedMethod = useMemo(() => {\n return isUrlMethodPair(action) ? action.method : (method.toLowerCase() as Method)\n }, [action, method])\n\n const resolvedComponent = useMemo(() => {\n if (component) {\n return component\n }\n\n if (instant && isUrlMethodPair(action)) {\n return resolveUrlMethodPairComponent(action)\n }\n\n return null\n }, [component, instant, action])\n\n const [isDirty, setIsDirty] = useState(false)\n const defaultData = useRef<FormData>(new FormData())\n\n const getFormData = (submitter?: FormSubmitter): FormData => new FormData(formElement.current, submitter)\n\n // Convert the FormData to an object because we can't compare two FormData\n // instances directly (which is needed for isDirty), mergeDataIntoQueryString()\n // expects an object, and submitting a FormData instance directly causes problems with nested objects.\n const getData = (submitter?: FormSubmitter): Record<string, FormDataConvertible> =>\n formDataToObject(getFormData(submitter))\n\n const getUrlAndData = (submitter?: FormSubmitter): [string, Record<string, FormDataConvertible>] => {\n return mergeDataIntoQueryString(\n resolvedMethod,\n isUrlMethodPair(action) ? action.url : action,\n getData(submitter),\n queryStringArrayFormat,\n )\n }\n\n const updateDirtyState = (event: Event) => {\n if (event.type === 'reset' && (event as CustomEvent).detail?.[FormComponentResetSymbol]) {\n // When the form is reset programmatically, prevent native reset behavior\n event.preventDefault()\n }\n\n deferStateUpdate(() =>\n setIsDirty(event.type === 'reset' ? false : !isEqual(getData(), formDataToObject(defaultData.current))),\n )\n }\n\n const clearErrors = (...names: string[]) => {\n form.clearErrors(...names)\n\n return form\n }\n\n useEffect(() => {\n defaultData.current = getFormData()\n\n form.setDefaults(getData())\n\n const formEvents: Array<keyof HTMLElementEventMap> = ['input', 'change', 'reset']\n\n formEvents.forEach((e) => formElement.current!.addEventListener(e, updateDirtyState))\n\n return () => {\n formEvents.forEach((e) => formElement.current?.removeEventListener(e, updateDirtyState))\n }\n }, [])\n\n useEffect(() => {\n form.setValidationTimeout(validationTimeout)\n }, [validationTimeout])\n\n useEffect(() => {\n if (validateFiles) {\n form.validateFiles()\n } else {\n form.withoutFileValidation()\n }\n }, [validateFiles])\n\n const reset = (...fields: string[]) => {\n if (formElement.current) {\n resetFormFields(formElement.current, defaultData.current, fields)\n }\n\n form.reset(...fields)\n }\n\n const resetAndClearErrors = (...fields: string[]) => {\n clearErrors(...fields)\n reset(...fields)\n }\n\n const maybeReset = (resetOption: boolean | string[]) => {\n if (!resetOption) {\n return\n }\n\n if (resetOption === true) {\n reset()\n } else if (resetOption.length > 0) {\n reset(...resetOption)\n }\n }\n\n const submit = (submitter?: FormSubmitter) => {\n const [url, data] = getUrlAndData(submitter)\n const formTarget = (submitter as HTMLButtonElement | HTMLInputElement | null)?.getAttribute('formtarget')\n\n if (formTarget === '_blank' && resolvedMethod === 'get') {\n window.open(url, '_blank')\n return\n }\n\n const submitOptions: FormSubmitOptions = {\n headers,\n queryStringArrayFormat,\n errorBag,\n showProgress,\n invalidateCacheTags,\n component: resolvedComponent,\n optimistic: optimistic ? (pageProps) => optimistic(pageProps, data) : undefined,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess: (...args) => {\n onSuccess(...args)\n onSubmitComplete({\n reset,\n defaults,\n })\n maybeReset(resetOnSuccess)\n\n if (setDefaultsOnSuccess === true) {\n defaults()\n }\n },\n onError(...args) {\n onError(...args)\n maybeReset(resetOnError)\n },\n ...options,\n }\n\n // We need transform because we can't override the default data with different keys (by design)\n form.transform(() => transform(data))\n form.submit(resolvedMethod, url, submitOptions)\n\n // Reset the transformer back so the submitter is not used for future submissions\n form.transform(getTransformedData)\n }\n\n const defaults = () => {\n defaultData.current = getFormData()\n setIsDirty(false)\n }\n\n const exposed: FormComponentSlotProps = {\n errors: form.errors,\n hasErrors: form.hasErrors,\n processing: form.processing,\n progress: form.progress,\n wasSuccessful: form.wasSuccessful,\n recentlySuccessful: form.recentlySuccessful,\n isDirty,\n clearErrors,\n resetAndClearErrors,\n setError: form.setError,\n reset,\n submit,\n defaults,\n getData,\n getFormData,\n\n // Precognition\n validator: () => form.validator(),\n validating: form.validating,\n valid: form.valid,\n invalid: form.invalid,\n validate: (field?: string | NamedInputEvent | ValidationConfig, config?: ValidationConfig) =>\n form.validate(...UseFormUtils.mergeHeadersForValidation(field, config, headers)),\n touch: form.touch,\n touched: form.touched,\n }\n\n useImperativeHandle(ref, () => exposed, [form, isDirty, submit])\n\n const formNode = createElement(\n 'form',\n {\n ...props,\n ref: formElement,\n action: isUrlMethodPair(action) ? action.url : action,\n method: resolvedMethod,\n onSubmit: (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n submit((event.nativeEvent as SubmitEvent).submitter)\n },\n inert: disableWhileProcessing && form.processing,\n },\n typeof children === 'function' ? children(exposed) : children,\n )\n\n return createElement(FormContext.Provider, { value: exposed }, formNode)\n },\n)\n\nForm.displayName = 'InertiaForm'\n\nexport function useFormContext<TForm extends object = Record<string, any>>(): FormComponentRef<TForm> | undefined {\n return use(FormContext) as FormComponentRef<TForm> | undefined\n}\n\nexport default Form as {\n <TForm extends object = Record<string, any>>(\n props: FormProps<TForm> & React.RefAttributes<FormComponentRef<TForm>>,\n ): React.ReactElement\n displayName: string\n}\n", "import {\n CancelToken,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n Method,\n OptimisticCallback,\n Progress,\n RequestPayload,\n router,\n UrlMethodPair,\n UseFormArguments,\n UseFormSubmitArguments,\n UseFormSubmitOptions,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep } from 'es-toolkit'\nimport type { NamedInputEvent, PrecognitionPath, ValidationConfig, Validator } from 'laravel-precognition'\nimport { useCallback, useRef, useState } from 'react'\nimport { useIsomorphicLayoutEffect } from './react'\nimport useFormState, { SetDataAction, SetDataByKeyValuePair, SetDataByMethod, SetDataByObject } from './useFormState'\nimport useRemember from './useRemember'\n\n// Re-export types that were moved to useFormState\nexport { SetDataAction, SetDataByKeyValuePair, SetDataByMethod, SetDataByObject }\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface InertiaFormProps<TForm extends Record<string, any>> {\n data: TForm\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n setData: SetDataAction<TForm>\n transform: (callback: UseFormTransformCallback<TForm>) => void\n setDefaults: {\n (): void\n <T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n (fields: Partial<TForm>): void\n }\n reset: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n clearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n resetAndClearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n setError: {\n <K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n (errors: FormDataErrors<TForm>): void\n }\n submit: (...args: UseFormSubmitArguments) => void\n get: (url: string, options?: UseFormSubmitOptions) => void\n post: (url: string, options?: UseFormSubmitOptions) => void\n put: (url: string, options?: UseFormSubmitOptions) => void\n patch: (url: string, options?: UseFormSubmitOptions) => void\n delete: (url: string, options?: UseFormSubmitOptions) => void\n cancel: () => void\n dontRemember: <K extends FormDataKeys<TForm>>(...fields: K[]) => InertiaFormProps<TForm>\n optimistic: <TProps>(callback: OptimisticCallback<TProps>) => InertiaFormProps<TForm>\n withPrecognition: (...args: UseFormWithPrecognitionArguments) => InertiaPrecognitiveFormProps<TForm>\n}\n\nexport interface InertiaFormValidationProps<TForm extends Record<string, any>> {\n invalid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n setValidationTimeout: (duration: number) => InertiaPrecognitiveFormProps<TForm>\n touch: <K extends FormDataKeys<TForm>>(\n field: K | NamedInputEvent | Array<K>,\n ...fields: K[]\n ) => InertiaPrecognitiveFormProps<TForm>\n touched: <K extends FormDataKeys<TForm>>(field?: K) => boolean\n valid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n validate: <K extends FormDataKeys<TForm> | PrecognitionPath<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ) => InertiaPrecognitiveFormProps<TForm>\n validateFiles: () => InertiaPrecognitiveFormProps<TForm>\n validating: boolean\n validator: () => Validator\n withAllErrors: () => InertiaPrecognitiveFormProps<TForm>\n withoutFileValidation: () => InertiaPrecognitiveFormProps<TForm>\n // Backward compatibility for easy migration from the original Precognition libraries\n setErrors: (errors: FormDataErrors<TForm>) => InertiaPrecognitiveFormProps<TForm>\n forgetError: <K extends FormDataKeys<TForm> | NamedInputEvent>(field: K) => InertiaPrecognitiveFormProps<TForm>\n}\n\nexport type InertiaForm<TForm extends Record<string, any>> = InertiaFormProps<TForm>\nexport type InertiaPrecognitiveFormProps<TForm extends Record<string, any>> = InertiaFormProps<TForm> &\n InertiaFormValidationProps<TForm>\n\nexport default function useForm<TForm extends FormDataType<TForm>>(\n method: Method | (() => Method),\n url: string | (() => string),\n data: TForm | (() => TForm),\n): InertiaPrecognitiveFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n urlMethodPair: UrlMethodPair | (() => UrlMethodPair),\n data: TForm | (() => TForm),\n): InertiaPrecognitiveFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKey: string,\n data: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(data: TForm | (() => TForm)): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n ...args: UseFormArguments<TForm>\n): InertiaFormProps<TForm> | InertiaPrecognitiveFormProps<TForm> {\n const { rememberKey, data, precognitionEndpoint } = UseFormUtils.parseUseFormArguments<TForm>(...args)\n\n // Resolve initial data for remember functionality hooks\n const initialDefaults = typeof data === 'function' ? cloneDeep(data()) : cloneDeep(data)\n\n const cancelToken = useRef<CancelToken | null>(null)\n const excludeKeysRef = useRef<FormDataKeys<TForm>[]>([])\n const pendingOptimisticRef = useRef<OptimisticCallback | null>(null)\n\n // For remember functionality, we need custom state hooks\n const useDataState = rememberKey\n ? () => useRemember<TForm>(initialDefaults, `${rememberKey}:data`, excludeKeysRef)\n : undefined\n\n const useErrorsState = rememberKey\n ? () => useRemember<FormDataErrors<TForm>>({} as FormDataErrors<TForm>, `${rememberKey}:errors`)\n : undefined\n\n const {\n form: baseForm,\n setDefaultsState,\n transformRef,\n precognitionEndpointRef,\n isMounted,\n setProcessing,\n setProgress,\n markAsSuccessful,\n clearErrors,\n setError,\n defaultsCalledInOnSuccessRef,\n resetBeforeSubmit,\n finishProcessing,\n } = useFormState<TForm>({\n data,\n precognitionEndpoint,\n useDataState,\n useErrorsState,\n })\n\n // Handle dataAsDefaults pattern for setDefaults synchronization\n // When setDefaults() is called without args immediately after setData(),\n // dataRef.current may be stale. This layout effect ensures the current\n // data state is used as defaults.\n const [dataAsDefaults, setDataAsDefaults] = useState(false)\n\n const originalSetDefaults = baseForm.setDefaults\n baseForm.setDefaults = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) => {\n if (typeof fieldOrFields === 'undefined') {\n setDataAsDefaults(true)\n }\n\n return originalSetDefaults(fieldOrFields as any, maybeValue as any)\n },\n [originalSetDefaults],\n ) as typeof baseForm.setDefaults\n\n useIsomorphicLayoutEffect(() => {\n if (!dataAsDefaults) {\n return\n }\n\n if (baseForm.isDirty) {\n setDefaultsState(baseForm.data)\n }\n\n setDataAsDefaults(false)\n }, [dataAsDefaults])\n\n const submit = useCallback(\n (...args: UseFormSubmitArguments) => {\n const { method, url, options } = UseFormUtils.parseSubmitArguments(args, precognitionEndpointRef.current)\n\n defaultsCalledInOnSuccessRef.current = false\n\n const _options: VisitOptions = {\n ...options,\n onCancelToken: (token) => {\n cancelToken.current = token\n\n return options.onCancelToken?.(token)\n },\n onBefore: (visit) => {\n resetBeforeSubmit()\n\n return options.onBefore?.(visit)\n },\n onStart: (visit) => {\n setProcessing(true)\n\n return options.onStart?.(visit)\n },\n onProgress: (event) => {\n setProgress(event || null)\n\n return options.onProgress?.(event)\n },\n onSuccess: async (page) => {\n if (isMounted.current) {\n markAsSuccessful()\n }\n\n const onSuccess = options.onSuccess ? await options.onSuccess(page) : null\n\n if (isMounted.current && !defaultsCalledInOnSuccessRef.current) {\n baseForm.setData((data: TForm) => {\n setDefaultsState(cloneDeep(data))\n return data\n })\n }\n\n return onSuccess\n },\n onError: (errors) => {\n if (isMounted.current) {\n clearErrors()\n setError(errors as FormDataErrors<TForm>)\n }\n\n return options.onError?.(errors)\n },\n onCancel: () => {\n return options.onCancel?.()\n },\n onFinish: (visit) => {\n if (isMounted.current) {\n finishProcessing()\n }\n\n cancelToken.current = null\n\n return options.onFinish?.(visit)\n },\n }\n\n _options.optimistic = _options.optimistic ?? pendingOptimisticRef.current ?? undefined\n pendingOptimisticRef.current = null\n\n const transformedData = transformRef.current(baseForm.data) as RequestPayload\n\n if (method === 'delete') {\n router.delete(url, { ..._options, data: transformedData })\n } else {\n router[method](url, transformedData, _options)\n }\n },\n [baseForm.data, clearErrors, setError, transformRef],\n )\n\n const cancel = useCallback(() => {\n if (cancelToken.current) {\n cancelToken.current.cancel()\n }\n }, [])\n\n const createSubmitMethod =\n (method: Method) =>\n (url: string, options: VisitOptions = {}) => {\n submit(method, url, options)\n }\n\n // Add useForm-specific methods to the form object (mutate in place like Svelte)\n Object.assign(baseForm, {\n submit,\n get: createSubmitMethod('get'),\n post: createSubmitMethod('post'),\n put: createSubmitMethod('put'),\n patch: createSubmitMethod('patch'),\n delete: createSubmitMethod('delete'),\n cancel,\n dontRemember: <K extends FormDataKeys<TForm>>(...keys: K[]) => {\n excludeKeysRef.current = keys\n return form\n },\n\n optimistic: <TProps>(callback: OptimisticCallback<TProps>) => {\n pendingOptimisticRef.current = callback as OptimisticCallback\n return form\n },\n })\n\n // Cast to the full form type (baseForm now has submit methods)\n const form = baseForm as unknown as InertiaFormProps<TForm>\n\n // Wrap withPrecognition to return the correct type with submit methods\n const originalWithPrecognition = baseForm.withPrecognition\n form.withPrecognition = (...args: UseFormWithPrecognitionArguments): InertiaPrecognitiveFormProps<TForm> => {\n originalWithPrecognition(...args)\n return form as InertiaPrecognitiveFormProps<TForm>\n }\n\n return precognitionEndpointRef.current ? (form as InertiaPrecognitiveFormProps<TForm>) : form\n}\n", "import { DependencyList, EffectCallback, useEffect, useLayoutEffect } from 'react'\n\n// Inspired by react-redux, this hook uses useLayoutEffect in the browser, and useEffect\n// when using SSR. Currently, useLayoutEffect doesn't work when rendered on the server.\nexport function useIsomorphicLayoutEffect(effect: EffectCallback, deps?: DependencyList): void {\n typeof window === 'undefined' ? useEffect(effect, deps) : useLayoutEffect(effect, deps)\n}\n", "import {\n Errors,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataValues,\n Progress,\n UrlMethodPair,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n} from '@inertiajs/core'\nimport { cloneDeep, isEqual } from 'es-toolkit'\nimport { get, has, set } from 'es-toolkit/compat'\nimport {\n createValidator,\n NamedInputEvent,\n resolveName,\n toSimpleValidationErrors,\n ValidationConfig,\n Validator,\n} from 'laravel-precognition'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { config } from '.'\n\nexport type SetDataByObject<TForm> = (data: Partial<TForm>) => void\nexport type SetDataByMethod<TForm> = (data: (previousData: TForm) => TForm) => void\nexport type SetDataByKeyValuePair<TForm> = <K extends FormDataKeys<TForm>>(\n key: K,\n value: FormDataValues<TForm, K>,\n) => void\nexport type SetDataAction<TForm extends Record<any, any>> = SetDataByObject<TForm> &\n SetDataByMethod<TForm> &\n SetDataByKeyValuePair<TForm>\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface FormStateProps<TForm extends object> {\n data: TForm\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n setData: SetDataAction<TForm>\n transform: (callback: UseFormTransformCallback<TForm>) => void\n setDefaults: {\n (): void\n <T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n (fields: Partial<TForm>): void\n }\n reset: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n clearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n resetAndClearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n setError: {\n <K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n (errors: FormDataErrors<TForm>): void\n }\n withPrecognition: (...args: UseFormWithPrecognitionArguments) => FormStateWithPrecognition<TForm>\n}\n\nexport interface FormStateValidationProps<TForm extends object> {\n invalid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n setValidationTimeout: (duration: number) => FormStateWithPrecognition<TForm>\n touch: <K extends FormDataKeys<TForm>>(\n field: K | NamedInputEvent | Array<K>,\n ...fields: K[]\n ) => FormStateWithPrecognition<TForm>\n touched: <K extends FormDataKeys<TForm>>(field?: K) => boolean\n valid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n validate: <K extends FormDataKeys<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ) => FormStateWithPrecognition<TForm>\n validateFiles: () => FormStateWithPrecognition<TForm>\n validating: boolean\n validator: () => Validator\n withAllErrors: () => FormStateWithPrecognition<TForm>\n withoutFileValidation: () => FormStateWithPrecognition<TForm>\n setErrors: (errors: FormDataErrors<TForm>) => FormStateWithPrecognition<TForm>\n forgetError: <K extends FormDataKeys<TForm> | NamedInputEvent>(field: K) => FormStateWithPrecognition<TForm>\n}\n\nexport type FormState<TForm extends object> = FormStateProps<TForm>\nexport type FormStateWithPrecognition<TForm extends object> = FormStateProps<TForm> & FormStateValidationProps<TForm>\n\nexport interface UseFormStateOptions<TForm extends object> {\n data: TForm | (() => TForm)\n precognitionEndpoint?: (() => UrlMethodPair) | null\n useDataState?: () => [TForm, React.Dispatch<React.SetStateAction<TForm>>]\n useErrorsState?: () => [FormDataErrors<TForm>, React.Dispatch<React.SetStateAction<FormDataErrors<TForm>>>]\n}\n\nexport interface UseFormStateReturn<TForm extends object> {\n form: FormState<TForm>\n setDefaultsState: React.Dispatch<React.SetStateAction<TForm>>\n transformRef: React.MutableRefObject<UseFormTransformCallback<TForm>>\n precognitionEndpointRef: React.MutableRefObject<(() => UrlMethodPair) | null>\n dataRef: React.MutableRefObject<TForm>\n isMounted: React.MutableRefObject<boolean>\n setProcessing: (value: boolean) => void\n setProgress: (value: Progress | null) => void\n markAsSuccessful: () => void\n clearErrors: (...fields: string[]) => void\n setError: (fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: ErrorValue) => void\n defaultsCalledInOnSuccessRef: React.MutableRefObject<boolean>\n resetBeforeSubmit: () => void\n finishProcessing: () => void\n withAllErrors: { enabled: () => boolean; enable: () => void }\n}\n\nexport default function useFormState<TForm extends object>(\n options: UseFormStateOptions<TForm>,\n): UseFormStateReturn<TForm> {\n const { data: dataOption, useDataState, useErrorsState } = options\n\n const isDataFunction = typeof dataOption === 'function'\n const resolveData = () => (isDataFunction ? (dataOption as () => TForm)() : dataOption)\n\n const initialData = cloneDeep(resolveData())\n\n const isMounted = useRef(false)\n const precognitionEndpointRef = useRef(options.precognitionEndpoint ?? null)\n\n const [defaults, setDefaultsState] = useState(cloneDeep(initialData))\n\n const [data, setData] = useDataState ? useDataState() : useState(cloneDeep(initialData))\n const [errors, setErrors] = useErrorsState ? useErrorsState() : useState({} as FormDataErrors<TForm>)\n const [processing, _setProcessing] = useState(false)\n const [progress, _setProgress] = useState<Progress | null>(null)\n const [wasSuccessful, setWasSuccessful] = useState(false)\n const [recentlySuccessful, setRecentlySuccessful] = useState(false)\n\n const recentlySuccessfulTimeoutId = useRef<number>(undefined)\n const transformRef = useRef<UseFormTransformCallback<TForm>>((data) => data)\n const defaultsCalledInOnSuccessRef = useRef(false)\n\n const validatorRef = useRef<Validator | null>(null)\n const [validating, setValidating] = useState(false)\n const [touchedFields, setTouchedFields] = useState<string[]>([])\n const [validFields, setValidFields] = useState<string[]>([])\n const withAllErrorsRef = useRef<boolean | null>(null)\n const withAllErrorsEnabled = () => withAllErrorsRef.current ?? config.get('form.withAllErrors')\n\n const dataRef = useRef(data)\n\n useEffect(() => {\n dataRef.current = data\n })\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n // Snapshot ref keeps state values accessible to the stable form object's getters.\n // Reassigned each render so getters always return the latest React state.\n const snapshotRef = useRef({\n data,\n defaults,\n errors,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n validating,\n touchedFields,\n validFields,\n })\n\n snapshotRef.current = {\n data,\n defaults,\n errors,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n validating,\n touchedFields,\n validFields,\n }\n\n const setProcessing = useCallback((value: boolean) => {\n _setProcessing(value)\n snapshotRef.current.processing = value\n }, [])\n\n const setProgress = useCallback((value: Progress | null) => {\n _setProgress(value)\n snapshotRef.current.progress = value\n }, [])\n\n const setDataFunction = useCallback(\n (keyOrData: FormDataKeys<TForm> | Function | Partial<TForm>, maybeValue?: any) => {\n if (typeof keyOrData === 'string') {\n setData((data) => set(cloneDeep(data), keyOrData, maybeValue))\n } else if (typeof keyOrData === 'function') {\n setData((data) => keyOrData(data))\n } else {\n setData(keyOrData as TForm)\n }\n },\n [setData],\n )\n\n const setDefaultsFunction = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) => {\n if (isDataFunction) {\n throw new Error('You cannot call `defaults()` when using a function to define your form data.')\n }\n\n defaultsCalledInOnSuccessRef.current = true\n\n let newDefaults = {} as TForm\n\n if (typeof fieldOrFields === 'undefined') {\n newDefaults = { ...dataRef.current }\n setDefaultsState(dataRef.current)\n } else {\n setDefaultsState((defaults) => {\n newDefaults =\n typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign(cloneDeep(defaults), fieldOrFields)\n\n return newDefaults as TForm\n })\n }\n\n validatorRef.current?.defaults(newDefaults as Record<string, unknown>)\n },\n [setDefaultsState],\n )\n\n const reset = useCallback(\n (...fields: string[]) => {\n const resolvedData = isDataFunction ? cloneDeep(resolveData()) : defaults\n const clonedData = cloneDeep(resolvedData)\n\n if (fields.length === 0) {\n if (isDataFunction) {\n setDefaultsState(clonedData)\n }\n setData(clonedData)\n } else {\n if (isDataFunction) {\n setDefaultsState((currentDefaults) => {\n const newDefaults = cloneDeep(currentDefaults)\n ;(fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(clonedData, key))\n .forEach((key) => {\n set(newDefaults, key, get(clonedData, key))\n })\n return newDefaults\n })\n }\n\n setData((data) =>\n (fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(clonedData, key))\n .reduce(\n (carry, key) => {\n return set(carry, key, get(clonedData, key))\n },\n { ...data } as TForm,\n ),\n )\n }\n\n validatorRef.current?.reset(...fields)\n },\n [setData, defaults],\n )\n\n const setError = useCallback(\n (fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: ErrorValue) => {\n setErrors((errors) => {\n const newErrors = {\n ...errors,\n ...(typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields),\n }\n\n snapshotRef.current.errors = newErrors as FormDataErrors<TForm>\n validatorRef.current?.setErrors(newErrors)\n\n return newErrors\n })\n },\n [setErrors],\n )\n\n const clearErrors = useCallback(\n (...fields: string[]) => {\n setErrors((errors) => {\n const newErrors = Object.keys(errors).reduce(\n (carry, field) => ({\n ...carry,\n ...(fields.length > 0 && !fields.includes(field) ? { [field]: (errors as Errors)[field] } : {}),\n }),\n {},\n )\n\n snapshotRef.current.errors = newErrors as FormDataErrors<TForm>\n\n if (validatorRef.current) {\n if (fields.length === 0) {\n validatorRef.current.setErrors({})\n } else {\n fields.forEach(validatorRef.current.forgetError)\n }\n }\n\n return newErrors as FormDataErrors<TForm>\n })\n },\n [setErrors],\n )\n\n const resetAndClearErrors = useCallback(\n (...fields: string[]) => {\n reset(...fields)\n clearErrors(...fields)\n },\n [reset, clearErrors],\n )\n\n const setWasSuccessfulWithSnapshot = useCallback((value: boolean) => {\n setWasSuccessful(value)\n snapshotRef.current.wasSuccessful = value\n }, [])\n\n const setRecentlySuccessfulWithSnapshot = useCallback((value: boolean) => {\n setRecentlySuccessful(value)\n snapshotRef.current.recentlySuccessful = value\n }, [])\n\n const markAsSuccessful = useCallback(() => {\n clearErrors()\n setWasSuccessfulWithSnapshot(true)\n setRecentlySuccessfulWithSnapshot(true)\n\n recentlySuccessfulTimeoutId.current = window.setTimeout(() => {\n if (isMounted.current) {\n setRecentlySuccessfulWithSnapshot(false)\n }\n }, config.get('form.recentlySuccessfulDuration'))\n }, [clearErrors, setWasSuccessfulWithSnapshot, setRecentlySuccessfulWithSnapshot])\n\n const resetBeforeSubmit = useCallback(() => {\n setWasSuccessfulWithSnapshot(false)\n setRecentlySuccessfulWithSnapshot(false)\n clearTimeout(recentlySuccessfulTimeoutId.current)\n }, [setWasSuccessfulWithSnapshot, setRecentlySuccessfulWithSnapshot])\n\n const finishProcessing = useCallback(() => {\n setProcessing(false)\n setProgress(null)\n }, [setProcessing, setProgress])\n\n const transformFunction = useCallback((callback: UseFormTransformCallback<TForm>) => {\n transformRef.current = callback\n }, [])\n\n const tap = <T>(value: T, callback: (value: T) => unknown): T => {\n callback(value)\n return value\n }\n\n const valid = useCallback(\n <K extends FormDataKeys<TForm>>(field: K) => validFields.includes(field as string),\n [validFields],\n )\n\n const invalid = useCallback(<K extends FormDataKeys<TForm>>(field: K) => field in errors, [errors])\n\n const touched = useCallback(\n <K extends FormDataKeys<TForm>>(field?: K) =>\n typeof field === 'string' ? touchedFields.includes(field as string) : touchedFields.length > 0,\n [touchedFields],\n )\n\n // Stable form object created once. Getters read from snapshotRef so they\n // always return the latest React state without requiring a new object identity.\n const form = useMemo(() => {\n return {\n get data() {\n return snapshotRef.current.data\n },\n get isDirty() {\n return !isEqual(snapshotRef.current.data, snapshotRef.current.defaults)\n },\n get errors() {\n return snapshotRef.current.errors\n },\n get hasErrors() {\n return Object.keys(snapshotRef.current.errors).length > 0\n },\n get processing() {\n return snapshotRef.current.processing\n },\n get progress() {\n return snapshotRef.current.progress\n },\n get wasSuccessful() {\n return snapshotRef.current.wasSuccessful\n },\n get recentlySuccessful() {\n return snapshotRef.current.recentlySuccessful\n },\n } as FormState<TForm>\n }, [])\n\n // Assign methods onto the stable object each render. Methods may have changing\n // deps (e.g. reset depends on defaults) so we reassign them, but the object\n // identity stays the same.\n Object.assign(form, {\n setData: setDataFunction,\n transform: transformFunction,\n setDefaults: setDefaultsFunction,\n reset,\n setError,\n clearErrors,\n resetAndClearErrors,\n })\n\n const validate = (field?: string | NamedInputEvent | ValidationConfig, config?: ValidationConfig) => {\n if (typeof field === 'object' && !('target' in field)) {\n config = field\n field = undefined\n }\n\n if (field === undefined) {\n validatorRef.current!.validate(config)\n } else {\n const fieldName = resolveName(field)\n const transformedData = transformRef.current(dataRef.current) as Record<string, unknown>\n validatorRef.current!.validate(fieldName, get(transformedData, fieldName), config)\n }\n\n return form\n }\n\n const withPrecognition = (...args: UseFormWithPrecognitionArguments): FormStateWithPrecognition<TForm> => {\n precognitionEndpointRef.current = UseFormUtils.createWayfinderCallback(...args)\n\n if (!validatorRef.current) {\n const validator = createValidator(\n (client) => {\n const { method, url } = precognitionEndpointRef.current!()\n const currentData = dataRef.current\n const transformedData = transformRef.current(currentData) as Record<string, unknown>\n return client[method](url, transformedData)\n },\n cloneDeep(defaults as Record<string, unknown>),\n )\n\n validatorRef.current = validator\n\n validator\n .on('validatingChanged', () => {\n setValidating(validator.validating())\n })\n .on('validatedChanged', () => {\n setValidFields(validator.valid())\n })\n .on('touchedChanged', () => {\n setTouchedFields(validator.touched())\n })\n .on('errorsChanged', () => {\n const validationErrors = withAllErrorsEnabled()\n ? validator.errors()\n : toSimpleValidationErrors(validator.errors())\n\n setErrors(validationErrors as FormDataErrors<TForm>)\n snapshotRef.current.errors = validationErrors as FormDataErrors<TForm>\n setValidFields(validator.valid())\n })\n }\n\n const precognitiveForm = Object.assign(form, {\n get validating() {\n return snapshotRef.current.validating\n },\n validator: () => validatorRef.current!,\n valid,\n invalid,\n touched,\n withoutFileValidation: () => tap(precognitiveForm, () => validatorRef.current?.withoutFileValidation()),\n touch: (\n field: FormDataKeys<TForm> | NamedInputEvent | Array<FormDataKeys<TForm>>,\n ...fields: FormDataKeys<TForm>[]\n ) => {\n if (Array.isArray(field)) {\n validatorRef.current?.touch(field)\n } else if (typeof field === 'string') {\n validatorRef.current?.touch([field, ...fields])\n } else {\n validatorRef.current?.touch(field)\n }\n\n return precognitiveForm\n },\n withAllErrors: () => tap(precognitiveForm, () => (withAllErrorsRef.current = true)),\n setValidationTimeout: (duration: number) =>\n tap(precognitiveForm, () => validatorRef.current?.setTimeout(duration)),\n validateFiles: () => tap(precognitiveForm, () => validatorRef.current?.validateFiles()),\n validate,\n setErrors: (errors: FormDataErrors<TForm>) => tap(precognitiveForm, () => form.setError(errors)),\n forgetError: (field: FormDataKeys<TForm> | NamedInputEvent) =>\n tap(precognitiveForm, () =>\n form.clearErrors(resolveName(field as string | NamedInputEvent) as FormDataKeys<TForm>),\n ),\n }) as FormStateWithPrecognition<TForm>\n\n return precognitiveForm\n }\n\n form.withPrecognition = withPrecognition\n\n if (precognitionEndpointRef.current) {\n form.withPrecognition(precognitionEndpointRef.current)\n }\n\n return {\n form,\n setDefaultsState,\n transformRef,\n precognitionEndpointRef,\n dataRef,\n isMounted,\n setProcessing,\n setProgress,\n markAsSuccessful,\n clearErrors,\n setError,\n defaultsCalledInOnSuccessRef,\n resetBeforeSubmit,\n finishProcessing,\n withAllErrors: {\n enabled: withAllErrorsEnabled,\n enable: () => {\n withAllErrorsRef.current = true\n },\n },\n }\n}\n", "import { router } from '@inertiajs/core'\nimport { Dispatch, MutableRefObject, SetStateAction, useEffect, useState } from 'react'\n\nexport default function useRemember<State>(\n initialState: State,\n key?: string,\n excludeKeysRef?: MutableRefObject<string[]>,\n): [State, Dispatch<SetStateAction<State>>] {\n const [state, setState] = useState(() => {\n const restored = router.restore(key) as State\n\n return restored !== undefined ? restored : initialState\n })\n\n useEffect(() => {\n const keys = excludeKeysRef?.current\n if (keys && keys.length > 0 && typeof state === 'object' && state !== null) {\n const filtered = { ...state } as Record<string, unknown>\n keys.forEach((k) => delete filtered[k])\n router.remember(filtered, key)\n } else {\n router.remember(state, key)\n }\n }, [state, key])\n\n return [state, setState]\n}\n", "import { escape } from 'es-toolkit/compat'\nimport React, { FunctionComponent, ReactElement, ReactNode, use, useEffect, useMemo } from 'react'\nimport HeadContext from './HeadContext'\n\ntype InertiaHeadProps = {\n title?: string\n children?: ReactNode\n}\n\ntype InertiaHead = FunctionComponent<InertiaHeadProps>\n\nconst Head: InertiaHead = function ({ children, title }) {\n const headManager = use(HeadContext)\n const provider = useMemo(() => headManager!.createProvider(), [headManager])\n const isServer = typeof window === 'undefined'\n\n useEffect(() => {\n provider.reconnect()\n provider.update(renderNodes(children))\n return () => {\n provider.disconnect()\n }\n }, [provider, children, title])\n\n function isUnaryTag(node: ReactElement<any>) {\n return (\n typeof node.type === 'string' &&\n [\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n ].indexOf(node.type) > -1\n )\n }\n\n function renderTagStart(node: ReactElement<any>): string {\n const attrs = Object.keys(node.props).reduce((carry, name) => {\n if (['head-key', 'children', 'dangerouslySetInnerHTML'].includes(name)) {\n return carry\n }\n\n const value = String(node.props[name])\n\n if (value === '') {\n return carry + ` ${name}`\n }\n\n return carry + ` ${name}=\"${escape(value)}\"`\n }, '')\n\n return `<${String(node.type)}${attrs}>`\n }\n\n function renderTagChildren(node: ReactElement<any>): string {\n const { children } = node.props\n\n if (typeof children === 'string') {\n return children\n }\n\n if (Array.isArray(children)) {\n return children.reduce((html, child) => html + renderTag(child), '')\n }\n\n return ''\n }\n\n function renderTag(node: ReactElement<any>): string {\n let html = renderTagStart(node)\n\n if (node.props.children) {\n html += renderTagChildren(node)\n }\n\n if (node.props.dangerouslySetInnerHTML) {\n html += node.props.dangerouslySetInnerHTML.__html\n }\n\n if (!isUnaryTag(node)) {\n html += `</${String(node.type)}>`\n }\n\n return html\n }\n\n function ensureNodeHasInertiaProp(node: ReactElement<any>) {\n return React.cloneElement(node, {\n 'data-inertia': node.props['head-key'] !== undefined ? node.props['head-key'] : '',\n })\n }\n\n function renderNode(node: ReactElement<any>) {\n return renderTag(ensureNodeHasInertiaProp(node))\n }\n\n function renderNodes(nodes: ReactNode) {\n const elements = React.Children.toArray(nodes)\n .filter((node) => node)\n .map((node) => renderNode(node as ReactElement<any>))\n\n if (title && !elements.find((tag) => tag.startsWith('<title'))) {\n elements.push(`<title data-inertia=\"\">${title}</title>`)\n }\n\n return elements\n }\n\n if (isServer) {\n provider.update(renderNodes(children))\n }\n\n return null\n}\nexport default Head\n", "import {\n getScrollableParent,\n InfiniteScrollActionSlotProps,\n InfiniteScrollComponentBaseProps,\n InfiniteScrollRef,\n InfiniteScrollSlotProps,\n ReloadOptions,\n useInfiniteScroll,\n UseInfiniteScrollProps,\n} from '@inertiajs/core'\nimport React, {\n createElement,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport usePage from './usePage'\n\nconst resolveHTMLElement = (\n value: string | React.RefObject<HTMLElement | null> | null,\n fallback: HTMLElement | null,\n): HTMLElement | null => {\n if (!value) {\n return fallback\n }\n\n // React ref object { current: HTMLElement | null }\n if (value && typeof value === 'object' && 'current' in value) {\n return value.current\n }\n\n // CSS Selector string\n if (typeof value === 'string') {\n return document.querySelector(value) as HTMLElement | null\n }\n\n return fallback\n}\n\n// Helper function to render slot content\nconst renderSlot = (\n slotContent: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode) | undefined,\n slotProps: InfiniteScrollActionSlotProps,\n fallback: React.ReactNode = null,\n): React.ReactNode => {\n if (!slotContent) {\n return fallback\n }\n\n return typeof slotContent === 'function' ? slotContent(slotProps) : slotContent\n}\n\ninterface ComponentProps\n extends\n InfiniteScrollComponentBaseProps,\n Omit<React.HTMLAttributes<HTMLElement>, keyof InfiniteScrollComponentBaseProps | 'children'> {\n children?: React.ReactNode | ((props: InfiniteScrollSlotProps) => React.ReactNode)\n\n // Element references for custom trigger detection (when you want different trigger elements)\n startElement?: string | React.RefObject<HTMLElement | null>\n endElement?: string | React.RefObject<HTMLElement | null>\n itemsElement?: string | React.RefObject<HTMLElement | null>\n\n // Render slots for UI components (when you want custom loading/action components)\n previous?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n next?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n loading?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n\n // Request options\n params?: ReloadOptions\n\n onlyNext?: boolean\n onlyPrevious?: boolean\n}\n\nconst InfiniteScroll = forwardRef<InfiniteScrollRef, ComponentProps>(\n (\n {\n data,\n buffer = 0,\n as = 'div',\n manual = false,\n manualAfter = 0,\n preserveUrl = false,\n reverse = false,\n autoScroll,\n children,\n startElement,\n endElement,\n itemsElement,\n previous,\n next,\n loading,\n params = {},\n onlyNext = false,\n onlyPrevious = false,\n ...props\n },\n ref,\n ) => {\n const [startElementFromRef, setStartElementFromRef] = useState<HTMLElement | null>(null)\n const startElementRef = useCallback((node: HTMLElement | null) => setStartElementFromRef(node), [])\n\n const [endElementFromRef, setEndElementFromRef] = useState<HTMLElement | null>(null)\n const endElementRef = useCallback((node: HTMLElement | null) => setEndElementFromRef(node), [])\n\n const [itemsElementFromRef, setItemsElementFromRef] = useState<HTMLElement | null>(null)\n const itemsElementRef = useCallback((node: HTMLElement | null) => setItemsElementFromRef(node), [])\n\n const scrollProp = usePage().scrollProps?.[data]\n\n const [loadingPrevious, setLoadingPrevious] = useState(false)\n const [loadingNext, setLoadingNext] = useState(false)\n const [requestCount, setRequestCount] = useState(0)\n const [hasPreviousPage, setHasPreviousPage] = useState(!!scrollProp?.previousPage)\n const [hasNextPage, setHasNextPage] = useState(!!scrollProp?.nextPage)\n\n const [resolvedStartElement, setResolvedStartElement] = useState<HTMLElement | null>(null)\n const [resolvedEndElement, setResolvedEndElement] = useState<HTMLElement | null>(null)\n const [resolvedItemsElement, setResolvedItemsElement] = useState<HTMLElement | null>(null)\n\n // Update elements when refs or props change\n useEffect(() => {\n const element = startElement ? resolveHTMLElement(startElement, startElementFromRef) : startElementFromRef\n setResolvedStartElement(element)\n }, [startElement, startElementFromRef])\n\n useEffect(() => {\n const element = endElement ? resolveHTMLElement(endElement, endElementFromRef) : endElementFromRef\n setResolvedEndElement(element)\n }, [endElement, endElementFromRef])\n\n useEffect(() => {\n const element = itemsElement ? resolveHTMLElement(itemsElement, itemsElementFromRef) : itemsElementFromRef\n setResolvedItemsElement(element)\n }, [itemsElement, itemsElementFromRef])\n\n const scrollableParent = useMemo(() => getScrollableParent(resolvedItemsElement), [resolvedItemsElement])\n\n const callbackPropsRef = useRef({\n buffer,\n onlyNext,\n onlyPrevious,\n reverse,\n preserveUrl,\n params,\n })\n\n callbackPropsRef.current = {\n buffer,\n onlyNext,\n onlyPrevious,\n reverse,\n preserveUrl,\n params,\n }\n\n const [infiniteScroll, setInfiniteScroll] = useState<UseInfiniteScrollProps | null>(null)\n\n const dataManager = useMemo(() => infiniteScroll?.dataManager, [infiniteScroll])\n const elementManager = useMemo(() => infiniteScroll?.elementManager, [infiniteScroll])\n\n const scrollToBottom = useCallback(() => {\n if (scrollableParent) {\n scrollableParent.scrollTo({\n top: scrollableParent.scrollHeight,\n behavior: 'instant',\n })\n } else {\n window.scrollTo({\n top: document.body.scrollHeight,\n behavior: 'instant',\n })\n }\n }, [scrollableParent])\n\n // Main setup effect - only recreate when structural dependencies change\n useEffect(() => {\n if (!resolvedItemsElement) {\n return\n }\n\n function syncStateFromDataManager() {\n setRequestCount(infiniteScrollInstance.dataManager.getRequestCount())\n setHasPreviousPage(infiniteScrollInstance.dataManager.hasPrevious())\n setHasNextPage(infiniteScrollInstance.dataManager.hasNext())\n }\n\n const infiniteScrollInstance = useInfiniteScroll({\n // Data\n getPropName: () => data,\n inReverseMode: () => callbackPropsRef.current.reverse,\n shouldFetchNext: () => !callbackPropsRef.current.onlyPrevious,\n shouldFetchPrevious: () => !callbackPropsRef.current.onlyNext,\n shouldPreserveUrl: () => callbackPropsRef.current.preserveUrl,\n getReloadOptions: () => callbackPropsRef.current.params,\n\n // Elements\n getTriggerMargin: () => callbackPropsRef.current.buffer,\n getStartElement: () => resolvedStartElement!,\n getEndElement: () => resolvedEndElement!,\n getItemsElement: () => resolvedItemsElement,\n getScrollableParent: () => scrollableParent,\n\n // Callbacks\n onBeforePreviousRequest: () => setLoadingPrevious(true),\n onBeforeNextRequest: () => setLoadingNext(true),\n onCompletePreviousRequest: () => {\n setLoadingPrevious(false)\n syncStateFromDataManager()\n },\n onCompleteNextRequest: () => {\n setLoadingNext(false)\n syncStateFromDataManager()\n },\n onDataReset: syncStateFromDataManager,\n })\n\n setInfiniteScroll(infiniteScrollInstance)\n const { dataManager, elementManager } = infiniteScrollInstance\n syncStateFromDataManager()\n\n elementManager.setupObservers()\n elementManager.processServerLoadedElements(dataManager.getLastLoadedPage())\n\n if (autoLoad) {\n elementManager.enableTriggers()\n }\n\n return () => {\n infiniteScrollInstance.flush()\n setInfiniteScroll(null)\n }\n }, [data, resolvedItemsElement, resolvedStartElement, resolvedEndElement, scrollableParent])\n\n const manualMode = useMemo(\n () => manual || (manualAfter > 0 && requestCount >= manualAfter),\n [manual, manualAfter, requestCount],\n )\n const autoLoad = useMemo(() => !manualMode, [manualMode])\n\n useEffect(() => {\n autoLoad ? elementManager?.enableTriggers() : elementManager?.disableTriggers()\n }, [autoLoad, onlyNext, onlyPrevious, resolvedStartElement, resolvedEndElement])\n\n useEffect(() => {\n // autoScroll defaults to reverse value if not explicitly set\n const shouldAutoScroll = autoScroll !== undefined ? autoScroll : reverse\n\n if (shouldAutoScroll) {\n scrollToBottom()\n }\n }, [scrollableParent])\n\n useImperativeHandle(\n ref,\n () => ({\n fetchNext: dataManager?.fetchNext || (() => {}),\n fetchPrevious: dataManager?.fetchPrevious || (() => {}),\n hasPrevious: dataManager?.hasPrevious || (() => false),\n hasNext: dataManager?.hasNext || (() => false),\n }),\n [dataManager],\n )\n\n const headerAutoMode = autoLoad && !onlyNext\n const footerAutoMode = autoLoad && !onlyPrevious\n\n const sharedExposed: Pick<\n InfiniteScrollActionSlotProps,\n 'loadingPrevious' | 'loadingNext' | 'hasPrevious' | 'hasNext'\n > = {\n loadingPrevious,\n loadingNext,\n hasPrevious: hasPreviousPage,\n hasNext: hasNextPage,\n }\n\n const exposedPrevious: InfiniteScrollActionSlotProps = {\n loading: loadingPrevious,\n fetch: dataManager?.fetchPrevious ?? (() => {}),\n autoMode: headerAutoMode,\n manualMode: !headerAutoMode,\n hasMore: hasPreviousPage,\n ...sharedExposed,\n }\n\n const exposedNext: InfiniteScrollActionSlotProps = {\n loading: loadingNext,\n fetch: dataManager?.fetchNext ?? (() => {}),\n autoMode: footerAutoMode,\n manualMode: !footerAutoMode,\n hasMore: hasNextPage,\n ...sharedExposed,\n }\n\n const exposedSlot: InfiniteScrollSlotProps = {\n loading: loadingPrevious || loadingNext,\n loadingPrevious,\n loadingNext,\n }\n\n const renderElements = []\n\n // Only render previous trigger if not using custom element selector/ref\n if (!startElement) {\n renderElements.push(\n createElement(\n 'div',\n { ref: startElementRef },\n // Render previous slot or fallback to loading indicator\n renderSlot(previous, exposedPrevious, loadingPrevious ? renderSlot(loading, exposedPrevious) : null),\n ),\n )\n }\n\n renderElements.push(\n createElement(\n as,\n { ...props, ref: itemsElementRef },\n typeof children === 'function' ? children(exposedSlot) : children,\n ),\n )\n\n // Only render next trigger if not using custom element selector/ref\n if (!endElement) {\n renderElements.push(\n createElement(\n 'div',\n { ref: endElementRef },\n // Render next slot or fallback to loading indicator\n renderSlot(next, exposedNext, loadingNext ? renderSlot(loading, exposedNext) : null),\n ),\n )\n }\n\n return createElement(React.Fragment, {}, ...(reverse ? [...renderElements].reverse() : renderElements))\n },\n)\n\nInfiniteScroll.displayName = 'InertiaInfiniteScroll'\n\nexport default InfiniteScroll\n", "import {\n ActiveVisit,\n isUrlMethodPair,\n LinkComponentBaseProps,\n LinkPrefetchOption,\n mergeDataIntoQueryString,\n Method,\n PendingVisit,\n resolveUrlMethodPairComponent,\n router,\n shouldIntercept,\n shouldNavigate,\n VisitOptions,\n} from '@inertiajs/core'\nimport { createElement, ElementType, forwardRef, useEffect, useMemo, useRef, useState } from 'react'\nimport { config } from '.'\n\nconst noop = () => undefined\n\ninterface BaseInertiaLinkProps extends LinkComponentBaseProps {\n as?: ElementType\n onClick?: (event: React.MouseEvent) => void\n}\n\nexport type InertiaLinkProps = BaseInertiaLinkProps &\n Omit<React.HTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps> &\n Omit<React.AllHTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps>\n\nconst Link = forwardRef<unknown, InertiaLinkProps>(\n (\n {\n children,\n as = 'a',\n data = {},\n href = '',\n method = 'get',\n preserveScroll = false,\n preserveState = null,\n preserveUrl = false,\n replace = false,\n only = [],\n except = [],\n headers = {},\n queryStringArrayFormat = 'brackets',\n async = false,\n onClick = noop,\n onCancelToken = noop,\n onBefore = noop,\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n onPrefetching = noop,\n onPrefetched = noop,\n prefetch = false,\n cacheFor = 0,\n cacheTags = [],\n viewTransition = false,\n component = null,\n instant = false,\n pageProps = null,\n ...props\n },\n ref,\n ) => {\n const [inFlightCount, setInFlightCount] = useState(0)\n const hoverTimeout = useRef<number>(undefined)\n\n const _method = useMemo(() => {\n return isUrlMethodPair(href) ? href.method : (method.toLowerCase() as Method)\n }, [href, method])\n\n const resolvedComponent = useMemo(() => {\n if (component) {\n return component\n }\n\n if (instant && isUrlMethodPair(href)) {\n return resolveUrlMethodPairComponent(href)\n }\n\n return null\n }, [component, instant, href])\n\n const _as = useMemo(() => {\n if (typeof as !== 'string' || as.toLowerCase() !== 'a') {\n // Custom component or element\n return as\n }\n\n return _method !== 'get' ? 'button' : as.toLowerCase()\n }, [as, _method])\n\n const mergeDataArray = useMemo(\n () => mergeDataIntoQueryString(_method, isUrlMethodPair(href) ? href.url : href, data, queryStringArrayFormat),\n [href, _method, data, queryStringArrayFormat],\n )\n\n const url = useMemo(() => mergeDataArray[0], [mergeDataArray])\n const _data = useMemo(() => mergeDataArray[1], [mergeDataArray])\n\n const baseParams = useMemo<VisitOptions>(\n () => ({\n data: _data,\n method: _method,\n preserveScroll,\n preserveState: preserveState ?? _method !== 'get',\n preserveUrl,\n replace,\n only,\n except,\n headers,\n async,\n component: resolvedComponent,\n pageProps,\n }),\n [\n _data,\n _method,\n preserveScroll,\n preserveState,\n preserveUrl,\n replace,\n only,\n except,\n headers,\n async,\n resolvedComponent,\n pageProps,\n ],\n )\n\n const visitParams = useMemo<VisitOptions>(\n () => ({\n ...baseParams,\n viewTransition,\n onCancelToken,\n onBefore,\n onStart(visit: PendingVisit) {\n setInFlightCount((count) => count + 1)\n onStart(visit)\n },\n onProgress,\n onFinish(visit: ActiveVisit) {\n setInFlightCount((count) => count - 1)\n onFinish(visit)\n },\n onCancel,\n onSuccess,\n onError,\n }),\n [\n baseParams,\n viewTransition,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess,\n onError,\n ],\n )\n\n const prefetchModes: LinkPrefetchOption[] = useMemo(\n () => {\n if (prefetch === true) {\n return ['hover']\n }\n\n if (prefetch === false) {\n return []\n }\n\n if (Array.isArray(prefetch)) {\n return prefetch\n }\n\n return [prefetch]\n },\n Array.isArray(prefetch) ? prefetch : [prefetch],\n )\n\n const cacheForValue = useMemo(() => {\n if (cacheFor !== 0) {\n // If they've provided a value, respect it\n return cacheFor\n }\n\n if (prefetchModes.length === 1 && prefetchModes[0] === 'click') {\n // If they've only provided a prefetch mode of 'click',\n // we should only prefetch for the next request but not keep it around\n return 0\n }\n\n // Otherwise, default to 30 seconds\n return config.get('prefetch.cacheFor')\n }, [cacheFor, prefetchModes])\n\n const doPrefetch = useMemo(() => {\n return () => {\n router.prefetch(\n url,\n {\n ...baseParams,\n onPrefetching,\n onPrefetched,\n },\n { cacheFor: cacheForValue, cacheTags },\n )\n }\n }, [url, baseParams, onPrefetching, onPrefetched, cacheForValue, cacheTags])\n\n useEffect(() => {\n return () => {\n clearTimeout(hoverTimeout.current)\n }\n }, [])\n\n useEffect(() => {\n if (prefetchModes.includes('mount')) {\n setTimeout(() => doPrefetch())\n }\n }, prefetchModes)\n\n const regularEvents = {\n onClick: (event: React.MouseEvent) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n event.preventDefault()\n\n router.visit(url, visitParams)\n }\n },\n }\n\n const prefetchHoverEvents = {\n onMouseEnter: () => {\n hoverTimeout.current = window.setTimeout(() => {\n doPrefetch()\n }, config.get('prefetch.hoverDelay'))\n },\n onMouseLeave: () => {\n clearTimeout(hoverTimeout.current)\n },\n onClick: regularEvents.onClick,\n }\n\n const prefetchClickEvents = {\n onMouseDown: (event: React.MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onKeyDown: (event: React.KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onMouseUp: (event: React.MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n router.visit(url, visitParams)\n }\n },\n onKeyUp: (event: React.KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n router.visit(url, visitParams)\n }\n },\n onClick: (event: React.MouseEvent) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n // Let the mouseup/keyup event handle the visit\n event.preventDefault()\n }\n },\n }\n\n const elProps = useMemo(() => {\n if (_as === 'button') {\n return { type: 'button' }\n }\n\n if (_as === 'a' || typeof _as !== 'string') {\n return { href: url }\n }\n\n return {}\n }, [_as, url])\n\n return createElement(\n _as,\n {\n ...props,\n ...elProps,\n ref,\n ...(() => {\n if (prefetchModes.includes('hover')) {\n return prefetchHoverEvents\n }\n\n if (prefetchModes.includes('click')) {\n return prefetchClickEvents\n }\n\n return regularEvents\n })(),\n 'data-loading': inFlightCount > 0 ? '' : undefined,\n },\n children,\n )\n },\n)\nLink.displayName = 'InertiaLink'\n\nexport default Link\n", "import {\n CancelToken,\n Errors,\n ErrorValue,\n FormDataConvertible,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n hasFiles,\n http,\n HttpCancelledError,\n HttpProgressEvent,\n HttpResponseError,\n mergeDataIntoQueryString,\n Method,\n objectToFormData,\n Progress,\n UrlMethodPair,\n UseFormArguments,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n UseHttpSubmitArguments,\n UseHttpSubmitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep } from 'es-toolkit'\nimport { NamedInputEvent, toSimpleValidationErrors, ValidationConfig, Validator } from 'laravel-precognition'\nimport { useCallback, useRef, useState } from 'react'\nimport useFormState, { SetDataAction } from './useFormState'\nimport useRemember from './useRemember'\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface UseHttpProps<TForm extends object, TResponse = unknown> {\n data: TForm\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n response: TResponse | null\n setData: SetDataAction<TForm>\n transform: (callback: UseFormTransformCallback<TForm>) => void\n setDefaults: {\n (): void\n <T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n (fields: Partial<TForm>): void\n }\n reset: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n clearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n resetAndClearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n setError: {\n <K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n (errors: FormDataErrors<TForm>): void\n }\n submit: (...args: UseHttpSubmitArguments<TResponse, TForm>) => Promise<TResponse>\n get: (url: string, options?: UseHttpSubmitOptions<TResponse, TForm>) => Promise<TResponse>\n post: (url: string, options?: UseHttpSubmitOptions<TResponse, TForm>) => Promise<TResponse>\n put: (url: string, options?: UseHttpSubmitOptions<TResponse, TForm>) => Promise<TResponse>\n patch: (url: string, options?: UseHttpSubmitOptions<TResponse, TForm>) => Promise<TResponse>\n delete: (url: string, options?: UseHttpSubmitOptions<TResponse, TForm>) => Promise<TResponse>\n cancel: () => void\n dontRemember: <K extends FormDataKeys<TForm>>(...fields: K[]) => UseHttpProps<TForm, TResponse>\n optimistic: (callback: (currentData: TForm) => Partial<TForm>) => UseHttpProps<TForm, TResponse>\n withAllErrors: () => UseHttpProps<TForm, TResponse>\n withPrecognition: (...args: UseFormWithPrecognitionArguments) => UseHttpPrecognitiveProps<TForm, TResponse>\n}\n\nexport interface UseHttpValidationProps<TForm extends object, TResponse = unknown> {\n invalid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n setValidationTimeout: (duration: number) => UseHttpPrecognitiveProps<TForm, TResponse>\n touch: <K extends FormDataKeys<TForm>>(\n field: K | NamedInputEvent | Array<K>,\n ...fields: K[]\n ) => UseHttpPrecognitiveProps<TForm, TResponse>\n touched: <K extends FormDataKeys<TForm>>(field?: K) => boolean\n valid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n validate: <K extends FormDataKeys<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ) => UseHttpPrecognitiveProps<TForm, TResponse>\n validateFiles: () => UseHttpPrecognitiveProps<TForm, TResponse>\n validating: boolean\n validator: () => Validator\n withAllErrors: () => UseHttpPrecognitiveProps<TForm, TResponse>\n withoutFileValidation: () => UseHttpPrecognitiveProps<TForm, TResponse>\n setErrors: (errors: FormDataErrors<TForm>) => UseHttpPrecognitiveProps<TForm, TResponse>\n forgetError: <K extends FormDataKeys<TForm> | NamedInputEvent>(field: K) => UseHttpPrecognitiveProps<TForm, TResponse>\n}\n\nexport type UseHttp<TForm extends object, TResponse = unknown> = UseHttpProps<TForm, TResponse>\nexport type UseHttpPrecognitiveProps<TForm extends object, TResponse = unknown> = UseHttpProps<TForm, TResponse> &\n UseHttpValidationProps<TForm, TResponse>\n\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n method: Method | (() => Method),\n url: string | (() => string),\n data: TForm | (() => TForm),\n): UseHttpPrecognitiveProps<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n urlMethodPair: UrlMethodPair | (() => UrlMethodPair),\n data: TForm | (() => TForm),\n): UseHttpPrecognitiveProps<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n rememberKey: string,\n data: TForm | (() => TForm),\n): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n data: TForm | (() => TForm),\n): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n ...args: UseFormArguments<TForm>\n): UseHttp<TForm, TResponse> | UseHttpPrecognitiveProps<TForm, TResponse> {\n const { rememberKey, data, precognitionEndpoint } = UseFormUtils.parseUseFormArguments<TForm>(...args)\n\n // Resolve initial data for remember functionality hooks\n const initialDefaults = typeof data === 'function' ? cloneDeep(data()) : cloneDeep(data)\n\n const abortController = useRef<AbortController | null>(null)\n const excludeKeysRef = useRef<FormDataKeys<TForm>[]>([])\n const pendingOptimisticRef = useRef<((currentData: TForm) => Partial<TForm>) | null>(null)\n const [response, setResponse] = useState<TResponse | null>(null)\n\n // For remember functionality, we need custom state hooks\n const useDataState = rememberKey\n ? () => useRemember<TForm>(initialDefaults, `${rememberKey}:data`, excludeKeysRef)\n : undefined\n\n const useErrorsState = rememberKey\n ? () => useRemember<FormDataErrors<TForm>>({} as FormDataErrors<TForm>, `${rememberKey}:errors`)\n : undefined\n\n const {\n form: baseForm,\n setDefaultsState,\n transformRef,\n dataRef,\n precognitionEndpointRef,\n isMounted,\n setProcessing,\n setProgress,\n markAsSuccessful,\n clearErrors,\n setError,\n defaultsCalledInOnSuccessRef,\n resetBeforeSubmit,\n finishProcessing,\n withAllErrors,\n } = useFormState<TForm>({\n data,\n precognitionEndpoint,\n useDataState,\n useErrorsState,\n })\n\n const submit = useCallback(\n async (method: Method, url: string, options: UseHttpSubmitOptions<TResponse, TForm>): Promise<TResponse> => {\n const onBefore = options.onBefore?.()\n\n if (onBefore === false) {\n return Promise.reject(new Error('Request cancelled by onBefore'))\n }\n\n defaultsCalledInOnSuccessRef.current = false\n\n if (isMounted.current) {\n resetBeforeSubmit()\n }\n\n abortController.current = new AbortController()\n\n const cancelToken: CancelToken = {\n cancel: () => abortController.current?.abort(),\n }\n\n options.onCancelToken?.(cancelToken)\n\n options.optimistic = options.optimistic ?? pendingOptimisticRef.current ?? undefined\n pendingOptimisticRef.current = null\n\n let snapshot: TForm | undefined\n\n if (options.optimistic) {\n snapshot = cloneDeep(dataRef.current)\n const optimisticData = options.optimistic(cloneDeep(snapshot))\n\n baseForm.setData((current: TForm) => ({ ...current, ...optimisticData }))\n }\n\n if (isMounted.current) {\n setProcessing(true)\n }\n\n options.onStart?.()\n\n const transformedData = transformRef.current(dataRef.current)\n const useFormData = hasFiles(transformedData as Record<string, FormDataConvertible>)\n\n let requestUrl = url\n let requestData: FormData | string | undefined\n let contentType: string | undefined\n\n if (method === 'get') {\n const [urlWithParams] = mergeDataIntoQueryString(\n method,\n url,\n transformedData as Record<string, FormDataConvertible>,\n )\n requestUrl = urlWithParams\n } else {\n if (useFormData) {\n requestData = objectToFormData(transformedData as Record<string, FormDataConvertible>)\n } else {\n requestData = JSON.stringify(transformedData)\n contentType = 'application/json'\n }\n }\n\n try {\n const httpResponse = await http.getClient().request({\n method,\n url: requestUrl,\n data: requestData,\n headers: {\n Accept: 'application/json',\n ...(contentType ? { 'Content-Type': contentType } : {}),\n ...options.headers,\n },\n signal: abortController.current.signal,\n onUploadProgress: (event: HttpProgressEvent) => {\n if (isMounted.current) {\n setProgress(event)\n }\n\n options.onProgress?.(event)\n },\n })\n\n const responseData = (httpResponse.data ? JSON.parse(httpResponse.data) : null) as TResponse\n\n if (httpResponse.status >= 200 && httpResponse.status < 300) {\n if (isMounted.current) {\n markAsSuccessful()\n setResponse(responseData)\n }\n\n options.onSuccess?.(responseData)\n\n if (isMounted.current && !defaultsCalledInOnSuccessRef.current) {\n baseForm.setData((data: TForm) => {\n setDefaultsState(cloneDeep(data))\n return data\n })\n }\n\n return responseData\n }\n\n throw new HttpResponseError(`Request failed with status ${httpResponse.status}`, httpResponse)\n } catch (error: unknown) {\n if (snapshot && isMounted.current) {\n baseForm.setData(snapshot)\n }\n\n if (error instanceof HttpResponseError) {\n if (error.response.status === 422) {\n const responseData = JSON.parse(error.response.data)\n const validationErrors = responseData.errors || {}\n const processedErrors = (\n withAllErrors.enabled() ? validationErrors : toSimpleValidationErrors(validationErrors)\n ) as FormDataErrors<TForm>\n\n if (isMounted.current) {\n clearErrors()\n setError(processedErrors)\n }\n\n options.onError?.(processedErrors as Errors)\n }\n\n throw error\n }\n\n if (error instanceof HttpCancelledError || (error instanceof Error && error.name === 'AbortError')) {\n options.onCancel?.()\n throw new HttpCancelledError('Request was cancelled', url)\n }\n\n throw error\n } finally {\n if (isMounted.current) {\n finishProcessing()\n }\n\n abortController.current = null\n options.onFinish?.()\n }\n },\n [clearErrors, setError],\n )\n\n const cancel = useCallback(() => {\n if (abortController.current) {\n abortController.current.abort()\n }\n }, [])\n\n const createSubmitMethod =\n (method: Method) =>\n async (url: string, options: UseHttpSubmitOptions<TResponse, TForm> = {}): Promise<TResponse> => {\n return submit(method, url, options)\n }\n\n const submitWithArgs = useCallback(\n (...args: UseHttpSubmitArguments<TResponse, TForm>): Promise<TResponse> => {\n const parsed = UseFormUtils.parseSubmitArguments(args as any, precognitionEndpointRef.current)\n\n return submit(parsed.method, parsed.url, parsed.options as UseHttpSubmitOptions<TResponse, TForm>)\n },\n [submit],\n )\n\n // Add useHttp-specific methods to the form object (mutate in place like Svelte)\n Object.assign(baseForm, {\n response,\n submit: submitWithArgs,\n get: createSubmitMethod('get'),\n post: createSubmitMethod('post'),\n put: createSubmitMethod('put'),\n patch: createSubmitMethod('patch'),\n delete: createSubmitMethod('delete'),\n cancel,\n dontRemember: <K extends FormDataKeys<TForm>>(...keys: K[]) => {\n excludeKeysRef.current = keys\n return form\n },\n\n optimistic: (callback: (currentData: TForm) => Partial<TForm>) => {\n pendingOptimisticRef.current = callback\n return form\n },\n\n withAllErrors: () => {\n withAllErrors.enable()\n return form\n },\n })\n\n // Cast to the full form type (baseForm now has HTTP methods)\n const form = baseForm as unknown as UseHttpProps<TForm, TResponse>\n\n // Wrap withPrecognition to return the correct type with HTTP methods\n const originalWithPrecognition = baseForm.withPrecognition\n form.withPrecognition = (...args: UseFormWithPrecognitionArguments): UseHttpPrecognitiveProps<TForm, TResponse> => {\n originalWithPrecognition(...args)\n return form as UseHttpPrecognitiveProps<TForm, TResponse>\n }\n\n return precognitionEndpointRef.current ? (form as UseHttpPrecognitiveProps<TForm, TResponse>) : form\n}\n", "import { PollOptions, ReloadOptions, router } from '@inertiajs/core'\nimport { useEffect, useRef } from 'react'\n\nexport default function usePoll(\n interval: number,\n requestOptions: ReloadOptions = {},\n options: PollOptions = {\n keepAlive: false,\n autoStart: true,\n },\n) {\n const pollRef = useRef(\n router.poll(interval, requestOptions, {\n ...options,\n autoStart: false,\n }),\n )\n\n useEffect(() => {\n if (options.autoStart ?? true) {\n pollRef.current.start()\n }\n\n return () => pollRef.current.stop()\n }, [])\n\n return {\n stop: pollRef.current.stop,\n start: pollRef.current.start,\n }\n}\n", "import { router, VisitOptions } from '@inertiajs/core'\nimport { useEffect, useState } from 'react'\n\nexport default function usePrefetch(options: VisitOptions = {}): {\n lastUpdatedAt: number | null\n isPrefetching: boolean\n isPrefetched: boolean\n flush: () => void\n} {\n const cached = typeof window === 'undefined' ? null : router.getCached(window.location.pathname, options)\n const inFlight = typeof window === 'undefined' ? null : router.getPrefetching(window.location.pathname, options)\n\n const [lastUpdatedAt, setLastUpdatedAt] = useState<number | null>(cached?.staleTimestamp || null)\n const [isPrefetching, setIsPrefetching] = useState(inFlight !== null)\n const [isPrefetched, setIsPrefetched] = useState(cached !== null)\n\n useEffect(() => {\n const onPrefetchingListener = router.on('prefetching', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(true)\n }\n })\n\n const onPrefetchedListener = router.on('prefetched', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(false)\n setIsPrefetched(true)\n setLastUpdatedAt(e.detail.fetchedAt)\n }\n })\n\n return () => {\n onPrefetchedListener()\n onPrefetchingListener()\n }\n }, [])\n\n return {\n lastUpdatedAt,\n isPrefetching,\n isPrefetched,\n flush: () => router.flush(window.location.pathname, options),\n }\n}\n", "import { ReloadOptions, router } from '@inertiajs/core'\nimport { get } from 'es-toolkit/compat'\nimport { createElement, ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport usePage from './usePage'\n\ninterface WhenVisibleSlotProps {\n fetching: boolean\n}\n\ninterface WhenVisibleProps {\n children: ReactNode | ((props: WhenVisibleSlotProps) => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data?: string | string[]\n params?: ReloadOptions\n buffer?: number\n as?: string\n always?: boolean\n}\n\nconst WhenVisible = ({ children, data, params, buffer, as, always, fallback }: WhenVisibleProps) => {\n always = always ?? false\n as = as ?? 'div'\n fallback = fallback ?? null\n\n const pageProps = usePage().props\n const keys = useMemo(() => (data ? (Array.isArray(data) ? data : [data]) : []), [data])\n\n const [loaded, setLoaded] = useState(() => keys.length > 0 && keys.every((key) => get(pageProps, key) !== undefined))\n const [isFetching, setIsFetching] = useState(false)\n const fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n const observer = useRef<IntersectionObserver | null>(null)\n const getReloadParamsRef = useRef<() => Partial<ReloadOptions>>(() => ({}))\n\n useEffect(() => {\n if (keys.length > 0) {\n setLoaded(keys.every((key) => get(pageProps, key) !== undefined))\n }\n }, [pageProps, keys])\n\n const getReloadParams = useCallback<() => Partial<ReloadOptions>>(() => {\n const reloadParams: Partial<ReloadOptions> = { preserveErrors: true, ...params }\n\n if (data) {\n reloadParams.only = (Array.isArray(data) ? data : [data]) as string[]\n }\n\n return reloadParams\n }, [params, data])\n\n getReloadParamsRef.current = getReloadParams\n\n const registerObserver = () => {\n observer.current?.disconnect()\n\n observer.current = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (fetching.current) {\n return\n }\n\n if (!always && loaded) {\n return\n }\n\n fetching.current = true\n setIsFetching(true)\n\n const reloadParams = getReloadParamsRef.current()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.current = true\n setIsFetching(true)\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n setLoaded(true)\n fetching.current = false\n setIsFetching(false)\n reloadParams.onFinish?.(e)\n\n if (!always) {\n observer.current?.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.current.observe(ref.current!)\n }\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n if (loaded && !always) {\n return\n }\n\n registerObserver()\n\n return () => {\n observer.current?.disconnect()\n }\n }, [always, loaded, buffer])\n\n const resolveChildren = () => (typeof children === 'function' ? children({ fetching: isFetching }) : children)\n const resolveFallback = () => (typeof fallback === 'function' ? fallback() : fallback)\n\n if (always || !loaded) {\n return createElement(\n as,\n {\n props: null,\n ref,\n },\n loaded ? resolveChildren() : resolveFallback(),\n )\n }\n\n return loaded ? resolveChildren() : null\n}\n\nWhenVisible.displayName = 'InertiaWhenVisible'\n\nexport default WhenVisible\n"],
5
- "mappings": "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",
6
- "names": ["http", "router", "createContext", "current", "layouts", "router", "createElement", "progress", "http", "createElement", "page", "head", "reactApp", "router", "useEffect", "useMemo", "useState", "useState", "useMemo", "useEffect", "router", "config", "UseFormUtils", "isEqual", "createContext", "createElement", "use", "useEffect", "useMemo", "useRef", "useState", "router", "UseFormUtils", "cloneDeep", "useCallback", "useRef", "useState", "useEffect", "get", "useEffect", "useMemo", "useRef", "useState", "useRef", "useState", "progress", "data", "useEffect", "defaults", "get", "errors", "useMemo", "config", "router", "useEffect", "useState", "UseFormUtils", "cloneDeep", "useRef", "useState", "useCallback", "args", "data", "router", "createContext", "config", "useRef", "useMemo", "useState", "isEqual", "useEffect", "UseFormUtils", "createElement", "use", "React", "use", "useEffect", "useMemo", "use", "useMemo", "useEffect", "children", "React", "React", "createElement", "forwardRef", "useCallback", "useEffect", "useImperativeHandle", "useMemo", "useRef", "useState", "forwardRef", "useState", "useCallback", "useEffect", "useMemo", "useRef", "dataManager", "elementManager", "useImperativeHandle", "createElement", "React", "isUrlMethodPair", "mergeDataIntoQueryString", "resolveUrlMethodPairComponent", "router", "createElement", "forwardRef", "useEffect", "useMemo", "useRef", "useState", "noop", "forwardRef", "useState", "useRef", "useMemo", "isUrlMethodPair", "resolveUrlMethodPairComponent", "mergeDataIntoQueryString", "router", "useEffect", "createElement", "mergeDataIntoQueryString", "UseFormUtils", "cloneDeep", "toSimpleValidationErrors", "useCallback", "useRef", "useState", "UseFormUtils", "cloneDeep", "useRef", "useState", "useCallback", "mergeDataIntoQueryString", "data", "toSimpleValidationErrors", "args", "router", "useEffect", "useRef", "router", "useEffect", "useState", "router", "get", "createElement", "useCallback", "useEffect", "useMemo", "useRef", "useState", "useMemo", "useState", "get", "useRef", "useEffect", "useCallback", "router", "createElement"]
4
+ "sourcesContent": ["import { config as coreConfig } from '@inertiajs/core'\nimport type { ReactInertiaAppConfig } from './types'\n\nexport { http, progress, router } from '@inertiajs/core'\nexport { default as App } from './App'\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './Deferred'\nexport { default as Form, useFormContext } from './Form'\nexport { default as Head } from './Head'\nexport { default as InfiniteScroll } from './InfiniteScroll'\nexport { resetLayoutProps, setLayoutProps, setLayoutPropsFor } from './layoutProps'\nexport { InertiaLinkProps, default as Link } from './Link'\nexport { LayoutCallback, ReactComponent as ResolvedComponent } from './types'\nexport {\n InertiaForm,\n InertiaFormProps,\n InertiaPrecognitiveFormProps,\n SetDataAction,\n SetDataByKeyValuePair,\n SetDataByMethod,\n SetDataByObject,\n default as useForm,\n} from './useForm'\nexport { default as useHttp } from './useHttp'\nexport { default as usePage } from './usePage'\nexport { default as usePoll } from './usePoll'\nexport { default as usePrefetch } from './usePrefetch'\nexport { default as useRemember } from './useRemember'\nexport { default as WhenVisible } from './WhenVisible'\n\nexport const config = coreConfig.extend<ReactInertiaAppConfig>()\n", "import {\n createHeadManager,\n HeadManagerOnUpdateCallback,\n HeadManagerTitleCallback,\n normalizeLayouts,\n Page,\n PageHandler,\n PageProps,\n router,\n} from '@inertiajs/core'\nimport {\n createElement,\n FunctionComponent,\n isValidElement,\n ReactNode,\n useEffect,\n useMemo,\n useState,\n useSyncExternalStore,\n} from 'react'\nimport { flushSync } from 'react-dom'\nimport HeadContext from './HeadContext'\nimport { resetLayoutProps, store } from './layoutProps'\nimport PageContext from './PageContext'\nimport { LayoutFunction, ReactComponent, ReactPageHandlerArgs } from './types'\n\nfunction isComponent(value: unknown): value is ReactComponent {\n if (!value) {\n return false\n }\n\n if (typeof value === 'object' && '$$typeof' in value) {\n return true\n }\n\n if (typeof value === 'function') {\n const fn = value as Function & { displayName?: string; prototype?: { isReactComponent?: boolean } }\n return fn.prototype?.isReactComponent === true || fn.name !== '' || fn.displayName !== undefined\n }\n\n return false\n}\n\nfunction isRenderFunction(value: unknown): boolean {\n if (typeof value !== 'function') {\n return false\n }\n\n const fn = value as Function\n return fn.length === 1 && typeof fn.prototype === 'undefined'\n}\n\nlet currentIsInitialPage = true\nlet routerIsInitialized = false\nlet swapComponent: PageHandler<ReactComponent> = async () => {\n // Dummy function so we can init the router outside of the useEffect hook. This is\n // needed so `router.reload()` works right away (on mount) in any of the user's\n // components. We swap in the real function in the useEffect hook below.\n currentIsInitialPage = false\n}\n\ntype CurrentPage = {\n component: ReactComponent | null\n page: Page\n key: number | null\n}\n\nexport interface InertiaAppProps<SharedProps extends PageProps = PageProps> {\n children?: (options: { Component: ReactComponent; props: PageProps; key: number | null }) => ReactNode\n initialPage: Page<SharedProps>\n initialComponent?: ReactComponent\n resolveComponent?: (name: string, page?: Page) => ReactComponent | Promise<ReactComponent>\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdateCallback\n defaultLayout?: (name: string, page: Page) => unknown\n}\n\nexport type InertiaApp = FunctionComponent<InertiaAppProps>\n\nconst emptySnapshot = {\n shared: {} as Record<string, unknown>,\n named: {} as Record<string, Record<string, unknown>>,\n}\n\nexport default function App<SharedProps extends PageProps = PageProps>({\n children,\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n defaultLayout,\n}: InertiaAppProps<SharedProps>) {\n const [current, setCurrent] = useState<CurrentPage>({\n component: initialComponent || null,\n page: { ...initialPage, flash: initialPage.flash ?? {} },\n key: null,\n })\n\n const headManager = useMemo(() => {\n return createHeadManager(\n typeof window === 'undefined',\n titleCallback || ((title) => title),\n onHeadUpdate || (() => {}),\n )\n }, [])\n\n const dynamicLayoutProps = useSyncExternalStore(store.subscribe, store.get, () => emptySnapshot)\n\n if (!routerIsInitialized) {\n router.init<ReactComponent>({\n initialPage,\n resolveComponent: resolveComponent!,\n swapComponent: async (args) => swapComponent(args),\n onFlash: (flash) => {\n setCurrent((current) => ({\n ...current,\n page: { ...current.page, flash },\n }))\n },\n })\n\n routerIsInitialized = true\n }\n\n useEffect(() => {\n swapComponent = async ({ component, page, preserveState }: ReactPageHandlerArgs) => {\n if (currentIsInitialPage) {\n // We block setting the current page on the initial page to\n // prevent the initial page from being re-rendered again.\n currentIsInitialPage = false\n return\n }\n\n if (!preserveState) {\n resetLayoutProps()\n }\n\n flushSync(() =>\n setCurrent((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\n })),\n )\n }\n\n router.on('navigate', () => headManager.forceUpdate())\n }, [])\n\n if (!current.component) {\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(PageContext.Provider, { value: current.page }, null),\n )\n }\n\n const renderChildren =\n children ||\n (({ Component, props, key }) => {\n const child = createElement(Component, { key, ...props })\n\n if (Component.layout && isRenderFunction(Component.layout)) {\n const result = (Component.layout as Function)(props)\n\n if (isValidElement(result)) {\n return (Component.layout as LayoutFunction)(child)\n }\n\n const layouts = normalizeLayouts(result, isComponent)\n\n if (layouts.length > 0) {\n return layouts.reduceRight((childNode, layout) => {\n return createElement(\n layout.component,\n {\n ...props,\n ...layout.props,\n ...dynamicLayoutProps.shared,\n ...(layout.name ? dynamicLayoutProps.named[layout.name] || {} : {}),\n },\n childNode,\n )\n }, child)\n }\n\n return child\n }\n\n const effectiveLayout = Component.layout ?? defaultLayout?.(current.page.component, current.page)\n const layouts = normalizeLayouts(effectiveLayout, isComponent, Component.layout ? isRenderFunction : undefined)\n\n if (layouts.length > 0) {\n return layouts.reduceRight((childNode, layout) => {\n return createElement(\n layout.component,\n {\n ...props,\n ...layout.props,\n ...dynamicLayoutProps.shared,\n ...(layout.name ? dynamicLayoutProps.named[layout.name] || {} : {}),\n },\n childNode,\n )\n }, child)\n }\n\n return child\n })\n\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(\n PageContext.Provider,\n { value: current.page },\n renderChildren({\n Component: current.component,\n key: current.key,\n props: current.page.props,\n }),\n ),\n )\n}\n\nApp.displayName = 'Inertia'\n", "import { HeadManager } from '@inertiajs/core'\nimport { createContext } from 'react'\n\nconst headContext = createContext<HeadManager | null>(null)\nheadContext.displayName = 'InertiaHeadContext'\n\nexport default headContext\n", "import { createLayoutPropsStore, type LayoutProps, type NamedLayoutProps } from '@inertiajs/core'\n\nexport const store = createLayoutPropsStore()\n\nexport function setLayoutProps(props: Partial<LayoutProps>): void {\n store.set(props)\n}\n\nexport function setLayoutPropsFor<K extends keyof NamedLayoutProps>(\n name: K,\n props: Partial<NamedLayoutProps[K]>,\n): void {\n store.setFor(name, props)\n}\n\nexport function resetLayoutProps(): void {\n store.reset()\n}\n", "import { Page } from '@inertiajs/core'\nimport { createContext } from 'react'\n\nconst pageContext = createContext<Page | null>(null)\npageContext.displayName = 'InertiaPageContext'\n\nexport default pageContext\n", "import {\n buildSSRBody,\n CreateInertiaAppOptions,\n CreateInertiaAppOptionsForCSR,\n CreateInertiaAppOptionsForSSR,\n getInitialPageFromDOM,\n http as httpModule,\n InertiaAppSSRResponse,\n Page,\n PageProps,\n router,\n setupProgress,\n SharedPageProps,\n} from '@inertiajs/core'\nimport { createElement, ReactElement, StrictMode } from 'react'\nimport { createRoot, hydrateRoot } from 'react-dom/client'\nimport { renderToString } from 'react-dom/server'\nimport App, { InertiaAppProps, type InertiaApp } from './App'\nimport { config } from './index'\nimport { ReactComponent, ReactInertiaAppConfig } from './types'\n\nexport type SetupOptions<ElementType, SharedProps extends PageProps> = {\n el: ElementType\n App: InertiaApp\n props: InertiaAppProps<SharedProps>\n}\n\ntype ComponentResolver = (\n name: string,\n page?: Page<SharedPageProps>,\n) => ReactComponent | Promise<ReactComponent> | { default: ReactComponent }\n\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForCSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<HTMLElement, SharedProps>,\n void,\n ReactInertiaAppConfig\n> & {\n strictMode?: undefined\n withApp?: (app: ReactElement, options: { ssr: boolean }) => ReactElement\n}\n\ntype InertiaAppOptionsForSSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForSSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<null, SharedProps>,\n ReactElement,\n ReactInertiaAppConfig\n> & {\n render: typeof renderToString\n strictMode?: undefined\n withApp?: (app: ReactElement, options: { ssr: boolean }) => ReactElement\n}\n\ntype InertiaAppOptionsAuto<SharedProps extends PageProps> = CreateInertiaAppOptions<\n ComponentResolver,\n SetupOptions<HTMLElement | null, SharedProps>,\n ReactElement | void,\n ReactInertiaAppConfig\n> & {\n page?: Page<SharedProps>\n render?: undefined\n strictMode?: boolean\n withApp?: (app: ReactElement, options: { ssr: boolean }) => ReactElement\n}\n\ntype RenderToString = (element: ReactElement) => string\n\ntype RenderFunction<SharedProps extends PageProps> = (\n page: Page<SharedProps>,\n renderToString: RenderToString,\n) => Promise<InertiaAppSSRResponse>\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<void>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<InertiaAppSSRResponse>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options?: InertiaAppOptionsAuto<SharedProps>,\n): Promise<void | RenderFunction<SharedProps>>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n {\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n defaults = {},\n http,\n layout,\n strictMode = false,\n withApp,\n }:\n | InertiaAppOptionsForCSR<SharedProps>\n | InertiaAppOptionsForSSR<SharedProps>\n | InertiaAppOptionsAuto<SharedProps> = {} as InertiaAppOptionsAuto<SharedProps>,\n): Promise<InertiaAppSSRResponse | RenderFunction<SharedProps> | void> {\n config.replace(defaults)\n\n if (http) {\n httpModule.setClient(http)\n }\n\n const isServer = typeof window === 'undefined'\n\n const wrapWithStrictMode = (element: ReactElement): ReactElement => {\n return strictMode ? createElement(StrictMode, null, element) : element\n }\n\n const resolveComponent = (name: string, page?: Page) =>\n Promise.resolve(resolve!(name, page)).then((module) => {\n return ((module as { default?: ReactComponent }).default || module) as ReactComponent\n })\n\n // SSR render function factory - when on server without page/render, return a render function\n // This is used by the Vite plugin's SSR transform\n if (isServer && !page && !render) {\n return async (page: Page<SharedProps>, renderToString: RenderToString) => {\n let head: string[] = []\n\n const initialComponent = await resolveComponent(page.component, page)\n\n const props: InertiaAppProps<SharedProps> = {\n initialPage: page,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: (elements: string[]) => (head = elements),\n defaultLayout: layout,\n }\n\n let reactApp: ReactElement\n\n if (setup) {\n reactApp = (setup as (options: SetupOptions<null, SharedProps>) => ReactElement)({\n el: null,\n App,\n props,\n })\n } else {\n reactApp = wrapWithStrictMode(createElement(App, props))\n\n if (withApp) {\n reactApp = withApp(reactApp, { ssr: true })\n }\n }\n\n const html = renderToString(reactApp)\n const body = buildSSRBody(id, page, html)\n\n return { head, body }\n }\n }\n\n const initialPage = page || getInitialPageFromDOM<Page<SharedProps>>(id)!\n\n let head: string[] = []\n\n const reactApp = await Promise.all([\n resolveComponent(initialPage.component, initialPage),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n const props: InertiaAppProps<SharedProps> = {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: isServer ? (elements: string[]) => (head = elements) : undefined,\n defaultLayout: layout,\n }\n\n if (isServer) {\n return (setup as (options: SetupOptions<null, SharedProps>) => ReactElement)({\n el: null,\n App,\n props,\n })\n }\n\n const el = document.getElementById(id)!\n\n if (setup) {\n return (setup as (options: SetupOptions<HTMLElement, SharedProps>) => void)({\n el,\n App,\n props,\n })\n }\n\n let appElement = wrapWithStrictMode(createElement(App, props))\n\n if (withApp) {\n appElement = withApp(appElement, { ssr: false })\n }\n\n if (el.hasAttribute('data-server-rendered')) {\n hydrateRoot(el, appElement)\n } else {\n createRoot(el).render(appElement)\n }\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer && render && reactApp) {\n const html = render(reactApp)\n const body = buildSSRBody(id, initialPage, html)\n\n return { head, body }\n }\n}\n", "import { isSameUrlWithoutQueryOrHash } from '@inertiajs/core'\nimport { get } from 'es-toolkit/compat'\nimport { ReactNode, useEffect, useMemo, useRef, useState } from 'react'\nimport { router } from '.'\nimport usePage from './usePage'\n\nconst keysAreBeingReloaded = (only: string[], except: string[], keys: string[]): boolean => {\n if (only.length === 0 && except.length === 0) {\n return true\n }\n\n if (only.length > 0) {\n return keys.some((key) => only.includes(key))\n }\n\n return keys.some((key) => !except.includes(key))\n}\n\ninterface DeferredSlotProps {\n reloading: boolean\n}\n\ninterface DeferredProps {\n children: ReactNode | ((props: DeferredSlotProps) => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data: string | string[]\n}\n\nconst Deferred = ({ children, data, fallback }: DeferredProps) => {\n if (!data) {\n throw new Error('`<Deferred>` requires a `data` prop to be a string or array of strings')\n }\n\n const [loaded, setLoaded] = useState(false)\n const [reloading, setReloading] = useState(false)\n const activeReloads = useRef(new Set<object>())\n const pageProps = usePage().props\n const keys = useMemo(() => (Array.isArray(data) ? data : [data]), [data])\n\n useEffect(() => {\n const removeStartListener = router.on('start', (e) => {\n const visit = e.detail.visit\n\n if (\n visit.preserveState === true &&\n isSameUrlWithoutQueryOrHash(visit.url, window.location) &&\n keysAreBeingReloaded(visit.only, visit.except, keys)\n ) {\n activeReloads.current.add(visit)\n setReloading(true)\n }\n })\n\n const removeFinishListener = router.on('finish', (e) => {\n const visit = e.detail.visit\n\n if (activeReloads.current.has(visit)) {\n activeReloads.current.delete(visit)\n setReloading(activeReloads.current.size > 0)\n }\n })\n\n return () => {\n removeStartListener()\n removeFinishListener()\n activeReloads.current.clear()\n }\n }, [keys])\n\n useEffect(() => {\n setLoaded(keys.every((key) => get(pageProps, key) !== undefined))\n }, [pageProps, keys])\n\n const propsAreDefined = useMemo(() => keys.every((key) => get(pageProps, key) !== undefined), [keys, pageProps])\n\n if (loaded && propsAreDefined) {\n if (typeof children === 'function') {\n return children({ reloading })\n }\n\n return children\n }\n\n return typeof fallback === 'function' ? fallback() : fallback\n}\n\nDeferred.displayName = 'InertiaDeferred'\n\nexport default Deferred\n", "import { Page, PageProps, SharedPageProps } from '@inertiajs/core'\nimport { use } from 'react'\nimport PageContext from './PageContext'\n\nexport default function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps & SharedPageProps> {\n const page = use(PageContext)\n\n if (!page) {\n throw new Error('usePage must be used within the Inertia component')\n }\n\n return page as Page<TPageProps & SharedPageProps>\n}\n", "import {\n config,\n FormComponentProps,\n FormComponentRef,\n FormComponentResetSymbol,\n FormComponentSlotProps,\n FormDataConvertible,\n formDataToObject,\n isUrlMethodPair,\n mergeDataIntoQueryString,\n Method,\n resetFormFields,\n resolveUrlMethodPairComponent,\n UseFormUtils,\n VisitOptions,\n} from '@inertiajs/core'\nimport { isEqual } from 'es-toolkit'\nimport { NamedInputEvent, ValidationConfig } from 'laravel-precognition'\nimport React, {\n createContext,\n createElement,\n FormEvent,\n forwardRef,\n ReactNode,\n use,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport useForm from './useForm'\n\n// Polyfill for startTransition to support React 16.9+\nconst deferStateUpdate = (callback: () => void) => {\n typeof React.startTransition === 'function' ? React.startTransition(callback) : setTimeout(callback, 0)\n}\n\ntype FormProps<TForm extends object = Record<string, any>> = FormComponentProps<TForm> &\n Omit<React.FormHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> &\n Omit<React.AllHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> & {\n children: ReactNode | ((props: FormComponentSlotProps<TForm>) => ReactNode)\n }\n\ntype FormSubmitOptions = Omit<VisitOptions, 'data' | 'onPrefetched' | 'onPrefetching'>\ntype FormSubmitter = HTMLElement | null\n\nconst noop = () => undefined\n\nconst FormContext = createContext<FormComponentRef | undefined>(undefined)\n\nconst Form = forwardRef<FormComponentRef, FormProps>(\n (\n {\n action = '',\n method = 'get',\n headers = {},\n queryStringArrayFormat = 'brackets',\n errorBag = null,\n showProgress = true,\n transform = (data) => data,\n optimistic,\n options = {},\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onBefore = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n onCancelToken = noop,\n onSubmitComplete = noop,\n disableWhileProcessing = false,\n resetOnError = false,\n resetOnSuccess = false,\n setDefaultsOnSuccess = false,\n invalidateCacheTags = [],\n validateFiles = false,\n validationTimeout = 1500,\n withAllErrors = null,\n component = null,\n instant = false,\n children,\n ...props\n },\n ref,\n ) => {\n const getTransformedData = (): Record<string, FormDataConvertible> => {\n const [_url, data] = getUrlAndData()\n return transform(data)\n }\n\n const form = useForm<Record<string, any>>({})\n .withPrecognition(\n () => resolvedMethod,\n () => getUrlAndData()[0],\n )\n .setValidationTimeout(validationTimeout)\n\n if (validateFiles) {\n form.validateFiles()\n }\n\n if (withAllErrors ?? config.get('form.withAllErrors')) {\n form.withAllErrors()\n }\n\n form.transform(getTransformedData)\n\n const formElement = useRef<HTMLFormElement>(undefined)\n\n const resolvedMethod = useMemo(() => {\n return isUrlMethodPair(action) ? action.method : (method.toLowerCase() as Method)\n }, [action, method])\n\n const resolvedComponent = useMemo(() => {\n if (component) {\n return component\n }\n\n if (instant && isUrlMethodPair(action)) {\n return resolveUrlMethodPairComponent(action)\n }\n\n return null\n }, [component, instant, action])\n\n const [isDirty, setIsDirty] = useState(false)\n const defaultData = useRef<FormData>(new FormData())\n\n const getFormData = (submitter?: FormSubmitter): FormData => new FormData(formElement.current, submitter)\n\n // Convert the FormData to an object because we can't compare two FormData\n // instances directly (which is needed for isDirty), mergeDataIntoQueryString()\n // expects an object, and submitting a FormData instance directly causes problems with nested objects.\n const getData = (submitter?: FormSubmitter): Record<string, FormDataConvertible> =>\n formDataToObject(getFormData(submitter))\n\n const getUrlAndData = (submitter?: FormSubmitter): [string, Record<string, FormDataConvertible>] => {\n return mergeDataIntoQueryString(\n resolvedMethod,\n isUrlMethodPair(action) ? action.url : action,\n getData(submitter),\n queryStringArrayFormat,\n )\n }\n\n const updateDirtyState = (event: Event) => {\n if (event.type === 'reset' && (event as CustomEvent).detail?.[FormComponentResetSymbol]) {\n // When the form is reset programmatically, prevent native reset behavior\n event.preventDefault()\n }\n\n deferStateUpdate(() =>\n setIsDirty(event.type === 'reset' ? false : !isEqual(getData(), formDataToObject(defaultData.current))),\n )\n }\n\n const clearErrors = (...names: string[]) => {\n form.clearErrors(...names)\n\n return form\n }\n\n useEffect(() => {\n defaultData.current = getFormData()\n\n form.setDefaults(getData())\n\n const formEvents: Array<keyof HTMLElementEventMap> = ['input', 'change', 'reset']\n\n formEvents.forEach((e) => formElement.current!.addEventListener(e, updateDirtyState))\n\n return () => {\n formEvents.forEach((e) => formElement.current?.removeEventListener(e, updateDirtyState))\n }\n }, [])\n\n useEffect(() => {\n form.setValidationTimeout(validationTimeout)\n }, [validationTimeout])\n\n useEffect(() => {\n if (validateFiles) {\n form.validateFiles()\n } else {\n form.withoutFileValidation()\n }\n }, [validateFiles])\n\n const reset = (...fields: string[]) => {\n if (formElement.current) {\n resetFormFields(formElement.current, defaultData.current, fields)\n }\n\n form.reset(...fields)\n }\n\n const resetAndClearErrors = (...fields: string[]) => {\n clearErrors(...fields)\n reset(...fields)\n }\n\n const maybeReset = (resetOption: boolean | string[]) => {\n if (!resetOption) {\n return\n }\n\n if (resetOption === true) {\n reset()\n } else if (resetOption.length > 0) {\n reset(...resetOption)\n }\n }\n\n const submit = (submitter?: FormSubmitter) => {\n const [url, data] = getUrlAndData(submitter)\n const formTarget = (submitter as HTMLButtonElement | HTMLInputElement | null)?.getAttribute('formtarget')\n\n if (formTarget === '_blank' && resolvedMethod === 'get') {\n window.open(url, '_blank')\n return\n }\n\n const submitOptions: FormSubmitOptions = {\n headers,\n queryStringArrayFormat,\n errorBag,\n showProgress,\n invalidateCacheTags,\n component: resolvedComponent,\n optimistic: optimistic ? (pageProps) => optimistic(pageProps, data) : undefined,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess: (...args) => {\n onSuccess(...args)\n onSubmitComplete({\n reset,\n defaults,\n })\n maybeReset(resetOnSuccess)\n\n if (setDefaultsOnSuccess === true) {\n defaults()\n }\n },\n onError(...args) {\n onError(...args)\n maybeReset(resetOnError)\n },\n ...options,\n }\n\n // We need transform because we can't override the default data with different keys (by design)\n form.transform(() => transform(data))\n form.submit(resolvedMethod, url, submitOptions)\n\n // Reset the transformer back so the submitter is not used for future submissions\n form.transform(getTransformedData)\n }\n\n const defaults = () => {\n defaultData.current = getFormData()\n setIsDirty(false)\n }\n\n const exposed: FormComponentSlotProps = {\n errors: form.errors,\n hasErrors: form.hasErrors,\n processing: form.processing,\n progress: form.progress,\n wasSuccessful: form.wasSuccessful,\n recentlySuccessful: form.recentlySuccessful,\n isDirty,\n clearErrors,\n resetAndClearErrors,\n setError: form.setError,\n reset,\n submit,\n defaults,\n getData,\n getFormData,\n\n // Precognition\n validator: () => form.validator(),\n validating: form.validating,\n valid: form.valid,\n invalid: form.invalid,\n validate: (field?: string | NamedInputEvent | ValidationConfig, config?: ValidationConfig) =>\n form.validate(...UseFormUtils.mergeHeadersForValidation(field, config, headers)),\n touch: form.touch,\n touched: form.touched,\n }\n\n useImperativeHandle(ref, () => exposed, [form, isDirty, submit])\n\n const formNode = createElement(\n 'form',\n {\n ...props,\n ref: formElement,\n action: isUrlMethodPair(action) ? action.url : action,\n method: resolvedMethod,\n onSubmit: (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n submit((event.nativeEvent as SubmitEvent).submitter)\n },\n inert: disableWhileProcessing && form.processing,\n },\n typeof children === 'function' ? children(exposed) : children,\n )\n\n return createElement(FormContext.Provider, { value: exposed }, formNode)\n },\n)\n\nForm.displayName = 'InertiaForm'\n\nexport function useFormContext<TForm extends object = Record<string, any>>(): FormComponentRef<TForm> | undefined {\n return use(FormContext) as FormComponentRef<TForm> | undefined\n}\n\nexport default Form as {\n <TForm extends object = Record<string, any>>(\n props: FormProps<TForm> & React.RefAttributes<FormComponentRef<TForm>>,\n ): React.ReactElement\n displayName: string\n}\n", "import {\n CancelToken,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n Method,\n OptimisticCallback,\n Progress,\n RequestPayload,\n router,\n UrlMethodPair,\n UseFormArguments,\n UseFormSubmitArguments,\n UseFormSubmitOptions,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep } from 'es-toolkit'\nimport type { NamedInputEvent, PrecognitionPath, ValidationConfig, Validator } from 'laravel-precognition'\nimport { useCallback, useMemo, useRef, useState } from 'react'\nimport { useIsomorphicLayoutEffect } from './react'\nimport useFormState, { SetDataAction, SetDataByKeyValuePair, SetDataByMethod, SetDataByObject } from './useFormState'\nimport useRemember from './useRemember'\n\n// Re-export types that were moved to useFormState\nexport { SetDataAction, SetDataByKeyValuePair, SetDataByMethod, SetDataByObject }\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface InertiaFormProps<TForm extends Record<string, any>> {\n data: TForm\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n setData: SetDataAction<TForm>\n transform: (callback: UseFormTransformCallback<TForm>) => void\n setDefaults: {\n (): void\n <T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n (fields: Partial<TForm>): void\n }\n reset: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n clearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n resetAndClearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n setError: {\n <K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n (errors: FormDataErrors<TForm>): void\n }\n submit: (...args: UseFormSubmitArguments) => void\n get: (url: string, options?: UseFormSubmitOptions) => void\n post: (url: string, options?: UseFormSubmitOptions) => void\n put: (url: string, options?: UseFormSubmitOptions) => void\n patch: (url: string, options?: UseFormSubmitOptions) => void\n delete: (url: string, options?: UseFormSubmitOptions) => void\n cancel: () => void\n dontRemember: <K extends FormDataKeys<TForm>>(...fields: K[]) => InertiaFormProps<TForm>\n optimistic: <TProps>(callback: OptimisticCallback<TProps>) => InertiaFormProps<TForm>\n withPrecognition: (...args: UseFormWithPrecognitionArguments) => InertiaPrecognitiveFormProps<TForm>\n}\n\nexport interface InertiaFormValidationProps<TForm extends Record<string, any>> {\n invalid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n setValidationTimeout: (duration: number) => InertiaPrecognitiveFormProps<TForm>\n touch: <K extends FormDataKeys<TForm>>(\n field: K | NamedInputEvent | Array<K>,\n ...fields: K[]\n ) => InertiaPrecognitiveFormProps<TForm>\n touched: <K extends FormDataKeys<TForm>>(field?: K) => boolean\n valid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n validate: <K extends FormDataKeys<TForm> | PrecognitionPath<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ) => InertiaPrecognitiveFormProps<TForm>\n validateFiles: () => InertiaPrecognitiveFormProps<TForm>\n validating: boolean\n validator: () => Validator\n withAllErrors: () => InertiaPrecognitiveFormProps<TForm>\n withoutFileValidation: () => InertiaPrecognitiveFormProps<TForm>\n // Backward compatibility for easy migration from the original Precognition libraries\n setErrors: (errors: FormDataErrors<TForm>) => InertiaPrecognitiveFormProps<TForm>\n forgetError: <K extends FormDataKeys<TForm> | NamedInputEvent>(field: K) => InertiaPrecognitiveFormProps<TForm>\n}\n\nexport type InertiaForm<TForm extends Record<string, any>> = InertiaFormProps<TForm>\nexport type InertiaPrecognitiveFormProps<TForm extends Record<string, any>> = InertiaFormProps<TForm> &\n InertiaFormValidationProps<TForm>\n\nexport default function useForm<TForm extends FormDataType<TForm>>(\n method: Method | (() => Method),\n url: string | (() => string),\n data: TForm | (() => TForm),\n): InertiaPrecognitiveFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n urlMethodPair: UrlMethodPair | (() => UrlMethodPair),\n data: TForm | (() => TForm),\n): InertiaPrecognitiveFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKey: string,\n data: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(data: TForm | (() => TForm)): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n ...args: UseFormArguments<TForm>\n): InertiaFormProps<TForm> | InertiaPrecognitiveFormProps<TForm> {\n const { rememberKey, data, precognitionEndpoint } = UseFormUtils.parseUseFormArguments<TForm>(...args)\n\n // Resolve initial data for remember functionality hooks\n const initialDefaults = typeof data === 'function' ? cloneDeep(data()) : cloneDeep(data)\n\n const cancelToken = useRef<CancelToken | null>(null)\n const excludeKeysRef = useRef<FormDataKeys<TForm>[]>([])\n const pendingOptimisticRef = useRef<OptimisticCallback | null>(null)\n\n // For remember functionality, we need custom state hooks\n const useDataState = rememberKey\n ? () => useRemember<TForm>(initialDefaults, `${rememberKey}:data`, excludeKeysRef)\n : undefined\n\n const useErrorsState = rememberKey\n ? () => useRemember<FormDataErrors<TForm>>({} as FormDataErrors<TForm>, `${rememberKey}:errors`)\n : undefined\n\n const {\n form: baseForm,\n setDefaultsState,\n transformRef,\n precognitionEndpointRef,\n dataRef,\n isMounted,\n setProcessing,\n setProgress,\n markAsSuccessful,\n clearErrors,\n setError,\n defaultsCalledInOnSuccessRef,\n resetBeforeSubmit,\n finishProcessing,\n } = useFormState<TForm>({\n data,\n precognitionEndpoint,\n useDataState,\n useErrorsState,\n })\n\n // Handle dataAsDefaults pattern for setDefaults synchronization\n // When setDefaults() is called without args immediately after setData(),\n // dataRef.current may be stale. This layout effect ensures the current\n // data state is used as defaults.\n const [dataAsDefaults, setDataAsDefaults] = useState(false)\n\n const originalSetDefaults = baseForm.setDefaults\n baseForm.setDefaults = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) => {\n if (typeof fieldOrFields === 'undefined') {\n setDataAsDefaults(true)\n }\n\n return originalSetDefaults(fieldOrFields as any, maybeValue as any)\n },\n [originalSetDefaults],\n ) as typeof baseForm.setDefaults\n\n useIsomorphicLayoutEffect(() => {\n if (!dataAsDefaults) {\n return\n }\n\n if (baseForm.isDirty) {\n setDefaultsState(baseForm.data)\n }\n\n setDataAsDefaults(false)\n }, [dataAsDefaults])\n\n const submit = useCallback(\n (...args: UseFormSubmitArguments) => {\n const { method, url, options } = UseFormUtils.parseSubmitArguments(args, precognitionEndpointRef.current)\n\n defaultsCalledInOnSuccessRef.current = false\n\n const _options: VisitOptions = {\n ...options,\n onCancelToken: (token) => {\n cancelToken.current = token\n\n return options.onCancelToken?.(token)\n },\n onBefore: (visit) => {\n resetBeforeSubmit()\n\n return options.onBefore?.(visit)\n },\n onStart: (visit) => {\n setProcessing(true)\n\n return options.onStart?.(visit)\n },\n onProgress: (event) => {\n setProgress(event || null)\n\n return options.onProgress?.(event)\n },\n onSuccess: async (page) => {\n if (isMounted.current) {\n markAsSuccessful()\n }\n\n const onSuccess = options.onSuccess ? await options.onSuccess(page) : null\n\n if (isMounted.current && !defaultsCalledInOnSuccessRef.current) {\n baseForm.setData((data: TForm) => {\n setDefaultsState(cloneDeep(data))\n return data\n })\n }\n\n return onSuccess\n },\n onError: (errors) => {\n if (isMounted.current) {\n clearErrors()\n setError(errors as FormDataErrors<TForm>)\n }\n\n return options.onError?.(errors)\n },\n onCancel: () => {\n return options.onCancel?.()\n },\n onFinish: (visit) => {\n if (isMounted.current) {\n finishProcessing()\n }\n\n cancelToken.current = null\n\n return options.onFinish?.(visit)\n },\n }\n\n _options.optimistic = _options.optimistic ?? pendingOptimisticRef.current ?? undefined\n pendingOptimisticRef.current = null\n\n const transformedData = transformRef.current(dataRef.current) as RequestPayload\n\n if (method === 'delete') {\n router.delete(url, { ..._options, data: transformedData })\n } else {\n router[method](url, transformedData, _options)\n }\n },\n [clearErrors, setError, transformRef],\n )\n\n const cancel = useCallback(() => {\n if (cancelToken.current) {\n cancelToken.current.cancel()\n }\n }, [])\n\n const submitMethods = useMemo(\n () => ({\n get: (url: string, options: VisitOptions = {}) => submit('get', url, options),\n post: (url: string, options: VisitOptions = {}) => submit('post', url, options),\n put: (url: string, options: VisitOptions = {}) => submit('put', url, options),\n patch: (url: string, options: VisitOptions = {}) => submit('patch', url, options),\n delete: (url: string, options: VisitOptions = {}) => submit('delete', url, options),\n }),\n [submit],\n )\n\n // Add useForm-specific methods to the form object\n Object.assign(baseForm, {\n submit,\n ...submitMethods,\n cancel,\n dontRemember: <K extends FormDataKeys<TForm>>(...keys: K[]) => {\n excludeKeysRef.current = keys\n return form\n },\n\n optimistic: <TProps>(callback: OptimisticCallback<TProps>) => {\n pendingOptimisticRef.current = callback as OptimisticCallback\n return form\n },\n })\n\n // Cast to the full form type (baseForm now has submit methods)\n const form = baseForm as unknown as InertiaFormProps<TForm>\n\n // Wrap withPrecognition to return the correct type with submit methods\n const originalWithPrecognition = baseForm.withPrecognition\n form.withPrecognition = (...args: UseFormWithPrecognitionArguments): InertiaPrecognitiveFormProps<TForm> => {\n originalWithPrecognition(...args)\n return form as InertiaPrecognitiveFormProps<TForm>\n }\n\n return precognitionEndpointRef.current ? (form as InertiaPrecognitiveFormProps<TForm>) : form\n}\n", "import { DependencyList, EffectCallback, useEffect, useLayoutEffect } from 'react'\n\n// Inspired by react-redux, this hook uses useLayoutEffect in the browser, and useEffect\n// when using SSR. Currently, useLayoutEffect doesn't work when rendered on the server.\nexport function useIsomorphicLayoutEffect(effect: EffectCallback, deps?: DependencyList): void {\n typeof window === 'undefined' ? useEffect(effect, deps) : useLayoutEffect(effect, deps)\n}\n", "import {\n Errors,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataValues,\n Progress,\n UrlMethodPair,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n} from '@inertiajs/core'\nimport { cloneDeep, isEqual } from 'es-toolkit'\nimport { get, has, set } from 'es-toolkit/compat'\nimport {\n createValidator,\n NamedInputEvent,\n resolveName,\n toSimpleValidationErrors,\n ValidationConfig,\n Validator,\n} from 'laravel-precognition'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { config } from '.'\n\nexport type SetDataByObject<TForm> = (data: Partial<TForm>) => void\nexport type SetDataByMethod<TForm> = (data: (previousData: TForm) => TForm) => void\nexport type SetDataByKeyValuePair<TForm> = <K extends FormDataKeys<TForm>>(\n key: K,\n value: FormDataValues<TForm, K>,\n) => void\nexport type SetDataAction<TForm extends Record<any, any>> = SetDataByObject<TForm> &\n SetDataByMethod<TForm> &\n SetDataByKeyValuePair<TForm>\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface FormStateProps<TForm extends object> {\n data: TForm\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n setData: SetDataAction<TForm>\n transform: (callback: UseFormTransformCallback<TForm>) => void\n setDefaults: {\n (): void\n <T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n (fields: Partial<TForm>): void\n }\n reset: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n clearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n resetAndClearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n setError: {\n <K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n (errors: FormDataErrors<TForm>): void\n }\n withPrecognition: (...args: UseFormWithPrecognitionArguments) => FormStateWithPrecognition<TForm>\n}\n\nexport interface FormStateValidationProps<TForm extends object> {\n invalid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n setValidationTimeout: (duration: number) => FormStateWithPrecognition<TForm>\n touch: <K extends FormDataKeys<TForm>>(\n field: K | NamedInputEvent | Array<K>,\n ...fields: K[]\n ) => FormStateWithPrecognition<TForm>\n touched: <K extends FormDataKeys<TForm>>(field?: K) => boolean\n valid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n validate: <K extends FormDataKeys<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ) => FormStateWithPrecognition<TForm>\n validateFiles: () => FormStateWithPrecognition<TForm>\n validating: boolean\n validator: () => Validator\n withAllErrors: () => FormStateWithPrecognition<TForm>\n withoutFileValidation: () => FormStateWithPrecognition<TForm>\n setErrors: (errors: FormDataErrors<TForm>) => FormStateWithPrecognition<TForm>\n forgetError: <K extends FormDataKeys<TForm> | NamedInputEvent>(field: K) => FormStateWithPrecognition<TForm>\n}\n\nexport type FormState<TForm extends object> = FormStateProps<TForm>\nexport type FormStateWithPrecognition<TForm extends object> = FormStateProps<TForm> & FormStateValidationProps<TForm>\n\nexport interface UseFormStateOptions<TForm extends object> {\n data: TForm | (() => TForm)\n precognitionEndpoint?: (() => UrlMethodPair) | null\n useDataState?: () => [TForm, React.Dispatch<React.SetStateAction<TForm>>]\n useErrorsState?: () => [FormDataErrors<TForm>, React.Dispatch<React.SetStateAction<FormDataErrors<TForm>>>]\n}\n\nexport interface UseFormStateReturn<TForm extends object> {\n form: FormState<TForm>\n setDefaultsState: React.Dispatch<React.SetStateAction<TForm>>\n transformRef: React.MutableRefObject<UseFormTransformCallback<TForm>>\n precognitionEndpointRef: React.MutableRefObject<(() => UrlMethodPair) | null>\n dataRef: React.MutableRefObject<TForm>\n isMounted: React.MutableRefObject<boolean>\n setProcessing: React.Dispatch<React.SetStateAction<boolean>>\n setProgress: React.Dispatch<React.SetStateAction<Progress | null>>\n markAsSuccessful: () => void\n clearErrors: (...fields: string[]) => void\n setError: (fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: ErrorValue) => void\n defaultsCalledInOnSuccessRef: React.MutableRefObject<boolean>\n resetBeforeSubmit: () => void\n finishProcessing: () => void\n withAllErrors: { enabled: () => boolean; enable: () => void }\n}\n\nexport default function useFormState<TForm extends object>(\n options: UseFormStateOptions<TForm>,\n): UseFormStateReturn<TForm> {\n const { data: dataOption, useDataState, useErrorsState } = options\n\n const isDataFunction = typeof dataOption === 'function'\n const resolveData = () => (isDataFunction ? (dataOption as () => TForm)() : dataOption)\n\n const initialData = cloneDeep(resolveData())\n\n const isMounted = useRef(false)\n const precognitionEndpointRef = useRef(options.precognitionEndpoint ?? null)\n\n const [defaults, setDefaultsState] = useState(cloneDeep(initialData))\n\n const [data, setData] = useDataState ? useDataState() : useState(cloneDeep(initialData))\n const [errors, setErrors] = useErrorsState ? useErrorsState() : useState({} as FormDataErrors<TForm>)\n const [processing, setProcessing] = useState(false)\n const [progress, setProgress] = useState<Progress | null>(null)\n const [wasSuccessful, setWasSuccessful] = useState(false)\n const [recentlySuccessful, setRecentlySuccessful] = useState(false)\n\n const recentlySuccessfulTimeoutId = useRef<number>(undefined)\n const transformRef = useRef<UseFormTransformCallback<TForm>>((data) => data)\n const defaultsCalledInOnSuccessRef = useRef(false)\n\n const validatorRef = useRef<Validator | null>(null)\n const [validating, setValidating] = useState(false)\n const [touchedFields, setTouchedFields] = useState<string[]>([])\n const [validFields, setValidFields] = useState<string[]>([])\n const withAllErrorsRef = useRef<boolean | null>(null)\n const withAllErrorsEnabled = () => withAllErrorsRef.current ?? config.get('form.withAllErrors')\n\n const dataRef = useRef(data)\n\n useEffect(() => {\n dataRef.current = data\n })\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n const setDataFunction = useCallback(\n (keyOrData: FormDataKeys<TForm> | Function | Partial<TForm>, maybeValue?: any) => {\n if (typeof keyOrData === 'string') {\n setData((data) => set(cloneDeep(data), keyOrData, maybeValue))\n } else if (typeof keyOrData === 'function') {\n setData((data) => keyOrData(data))\n } else {\n setData(keyOrData as TForm)\n }\n },\n [setData],\n )\n\n const setDefaultsFunction = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) => {\n if (isDataFunction) {\n throw new Error('You cannot call `defaults()` when using a function to define your form data.')\n }\n\n defaultsCalledInOnSuccessRef.current = true\n\n let newDefaults = {} as TForm\n\n if (typeof fieldOrFields === 'undefined') {\n newDefaults = { ...dataRef.current }\n setDefaultsState(dataRef.current)\n } else {\n setDefaultsState((defaults) => {\n newDefaults =\n typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign(cloneDeep(defaults), fieldOrFields)\n\n return newDefaults as TForm\n })\n }\n\n validatorRef.current?.defaults(newDefaults as Record<string, unknown>)\n },\n [setDefaultsState],\n )\n\n const reset = useCallback(\n (...fields: string[]) => {\n const resolvedData = isDataFunction ? cloneDeep(resolveData()) : defaults\n const clonedData = cloneDeep(resolvedData)\n\n if (fields.length === 0) {\n if (isDataFunction) {\n setDefaultsState(clonedData)\n }\n setData(clonedData)\n } else {\n if (isDataFunction) {\n setDefaultsState((currentDefaults) => {\n const newDefaults = cloneDeep(currentDefaults)\n ;(fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(clonedData, key))\n .forEach((key) => {\n set(newDefaults, key, get(clonedData, key))\n })\n return newDefaults\n })\n }\n\n setData((data) =>\n (fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(clonedData, key))\n .reduce(\n (carry, key) => {\n return set(carry, key, get(clonedData, key))\n },\n { ...data } as TForm,\n ),\n )\n }\n\n validatorRef.current?.reset(...fields)\n },\n [setData, defaults],\n )\n\n const setError = useCallback(\n (fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: ErrorValue) => {\n setErrors((errors) => {\n const newErrors = {\n ...errors,\n ...(typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields),\n }\n\n validatorRef.current?.setErrors(newErrors)\n\n return newErrors\n })\n },\n [setErrors],\n )\n\n const clearErrors = useCallback(\n (...fields: string[]) => {\n setErrors((errors) => {\n const newErrors = Object.keys(errors).reduce(\n (carry, field) => ({\n ...carry,\n ...(fields.length > 0 && !fields.includes(field) ? { [field]: (errors as Errors)[field] } : {}),\n }),\n {},\n )\n\n if (validatorRef.current) {\n if (fields.length === 0) {\n validatorRef.current.setErrors({})\n } else {\n fields.forEach(validatorRef.current.forgetError)\n }\n }\n\n return newErrors as FormDataErrors<TForm>\n })\n },\n [setErrors],\n )\n\n const resetAndClearErrors = useCallback(\n (...fields: string[]) => {\n reset(...fields)\n clearErrors(...fields)\n },\n [reset, clearErrors],\n )\n\n const markAsSuccessful = useCallback(() => {\n clearErrors()\n setWasSuccessful(true)\n setRecentlySuccessful(true)\n\n recentlySuccessfulTimeoutId.current = window.setTimeout(() => {\n if (isMounted.current) {\n setRecentlySuccessful(false)\n }\n }, config.get('form.recentlySuccessfulDuration'))\n }, [clearErrors, setWasSuccessful, setRecentlySuccessful])\n\n const resetBeforeSubmit = useCallback(() => {\n setWasSuccessful(false)\n setRecentlySuccessful(false)\n clearTimeout(recentlySuccessfulTimeoutId.current)\n }, [setWasSuccessful, setRecentlySuccessful])\n\n const finishProcessing = useCallback(() => {\n setProcessing(false)\n setProgress(null)\n }, [setProcessing, setProgress])\n\n const transformFunction = useCallback((callback: UseFormTransformCallback<TForm>) => {\n transformRef.current = callback\n }, [])\n\n const tap = <T>(value: T, callback: (value: T) => unknown): T => {\n callback(value)\n return value\n }\n\n const valid = useCallback(\n <K extends FormDataKeys<TForm>>(field: K) => validFields.includes(field as string),\n [validFields],\n )\n\n const invalid = useCallback(<K extends FormDataKeys<TForm>>(field: K) => field in errors, [errors])\n\n const touched = useCallback(\n <K extends FormDataKeys<TForm>>(field?: K) =>\n typeof field === 'string' ? touchedFields.includes(field as string) : touchedFields.length > 0,\n [touchedFields],\n )\n\n const form = {\n data,\n isDirty: !isEqual(data, defaults),\n errors,\n hasErrors: Object.keys(errors).length > 0,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n setData: setDataFunction,\n transform: transformFunction,\n setDefaults: setDefaultsFunction,\n reset,\n setError,\n clearErrors,\n resetAndClearErrors,\n } as FormState<TForm>\n\n const validate = (field?: string | NamedInputEvent | ValidationConfig, config?: ValidationConfig) => {\n if (typeof field === 'object' && !('target' in field)) {\n config = field\n field = undefined\n }\n\n if (field === undefined) {\n validatorRef.current!.validate(config)\n } else {\n const fieldName = resolveName(field)\n const transformedData = transformRef.current(dataRef.current) as Record<string, unknown>\n validatorRef.current!.validate(fieldName, get(transformedData, fieldName), config)\n }\n\n return form\n }\n\n const withPrecognition = (...args: UseFormWithPrecognitionArguments): FormStateWithPrecognition<TForm> => {\n precognitionEndpointRef.current = UseFormUtils.createWayfinderCallback(...args)\n\n if (!validatorRef.current) {\n const validator = createValidator(\n (client) => {\n const { method, url } = precognitionEndpointRef.current!()\n const currentData = dataRef.current\n const transformedData = transformRef.current(currentData) as Record<string, unknown>\n return client[method](url, transformedData)\n },\n cloneDeep(defaults as Record<string, unknown>),\n )\n\n validatorRef.current = validator\n\n validator\n .on('validatingChanged', () => {\n setValidating(validator.validating())\n })\n .on('validatedChanged', () => {\n setValidFields(validator.valid())\n })\n .on('touchedChanged', () => {\n setTouchedFields(validator.touched())\n })\n .on('errorsChanged', () => {\n const validationErrors = withAllErrorsEnabled()\n ? validator.errors()\n : toSimpleValidationErrors(validator.errors())\n\n setErrors(validationErrors as FormDataErrors<TForm>)\n setValidFields(validator.valid())\n })\n }\n\n const precognitiveForm = Object.assign(form, {\n validating,\n validator: () => validatorRef.current!,\n valid,\n invalid,\n touched,\n withoutFileValidation: () => tap(precognitiveForm, () => validatorRef.current?.withoutFileValidation()),\n touch: (\n field: FormDataKeys<TForm> | NamedInputEvent | Array<FormDataKeys<TForm>>,\n ...fields: FormDataKeys<TForm>[]\n ) => {\n if (Array.isArray(field)) {\n validatorRef.current?.touch(field)\n } else if (typeof field === 'string') {\n validatorRef.current?.touch([field, ...fields])\n } else {\n validatorRef.current?.touch(field)\n }\n\n return precognitiveForm\n },\n withAllErrors: () => tap(precognitiveForm, () => (withAllErrorsRef.current = true)),\n setValidationTimeout: (duration: number) =>\n tap(precognitiveForm, () => validatorRef.current?.setTimeout(duration)),\n validateFiles: () => tap(precognitiveForm, () => validatorRef.current?.validateFiles()),\n validate,\n setErrors: (errors: FormDataErrors<TForm>) => tap(precognitiveForm, () => form.setError(errors)),\n forgetError: (field: FormDataKeys<TForm> | NamedInputEvent) =>\n tap(precognitiveForm, () =>\n form.clearErrors(resolveName(field as string | NamedInputEvent) as FormDataKeys<TForm>),\n ),\n }) as FormStateWithPrecognition<TForm>\n\n return precognitiveForm\n }\n\n form.withPrecognition = withPrecognition\n\n if (precognitionEndpointRef.current) {\n form.withPrecognition(precognitionEndpointRef.current)\n }\n\n return {\n form,\n setDefaultsState,\n transformRef,\n precognitionEndpointRef,\n dataRef,\n isMounted,\n setProcessing,\n setProgress,\n markAsSuccessful,\n clearErrors,\n setError,\n defaultsCalledInOnSuccessRef,\n resetBeforeSubmit,\n finishProcessing,\n withAllErrors: {\n enabled: withAllErrorsEnabled,\n enable: () => {\n withAllErrorsRef.current = true\n },\n },\n }\n}\n", "import { router } from '@inertiajs/core'\nimport { Dispatch, MutableRefObject, SetStateAction, useEffect, useState } from 'react'\n\nexport default function useRemember<State>(\n initialState: State,\n key?: string,\n excludeKeysRef?: MutableRefObject<string[]>,\n): [State, Dispatch<SetStateAction<State>>] {\n const [state, setState] = useState(() => {\n const restored = router.restore(key) as State\n\n return restored !== undefined ? restored : initialState\n })\n\n useEffect(() => {\n const keys = excludeKeysRef?.current\n if (keys && keys.length > 0 && typeof state === 'object' && state !== null) {\n const filtered = { ...state } as Record<string, unknown>\n keys.forEach((k) => delete filtered[k])\n router.remember(filtered, key)\n } else {\n router.remember(state, key)\n }\n }, [state, key])\n\n return [state, setState]\n}\n", "import { escape } from 'es-toolkit/compat'\nimport React, { FunctionComponent, ReactElement, ReactNode, use, useEffect, useMemo } from 'react'\nimport HeadContext from './HeadContext'\n\ntype InertiaHeadProps = {\n title?: string\n children?: ReactNode\n}\n\ntype InertiaHead = FunctionComponent<InertiaHeadProps>\n\nconst Head: InertiaHead = function ({ children, title }) {\n const headManager = use(HeadContext)\n const provider = useMemo(() => headManager!.createProvider(), [headManager])\n const isServer = typeof window === 'undefined'\n\n useEffect(() => {\n provider.reconnect()\n provider.update(renderNodes(children))\n return () => {\n provider.disconnect()\n }\n }, [provider, children, title])\n\n function isUnaryTag(node: ReactElement<any>) {\n return (\n typeof node.type === 'string' &&\n [\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n ].indexOf(node.type) > -1\n )\n }\n\n function renderTagStart(node: ReactElement<any>): string {\n const attrs = Object.keys(node.props).reduce((carry, name) => {\n if (['head-key', 'children', 'dangerouslySetInnerHTML'].includes(name)) {\n return carry\n }\n\n const value = String(node.props[name])\n\n if (value === '') {\n return carry + ` ${name}`\n }\n\n return carry + ` ${name}=\"${escape(value)}\"`\n }, '')\n\n return `<${String(node.type)}${attrs}>`\n }\n\n function renderTagChildren(node: ReactElement<any>): string {\n const { children } = node.props\n\n if (typeof children === 'string') {\n return children\n }\n\n if (Array.isArray(children)) {\n return children.reduce((html, child) => html + renderTag(child), '')\n }\n\n return ''\n }\n\n function renderTag(node: ReactElement<any>): string {\n let html = renderTagStart(node)\n\n if (node.props.children) {\n html += renderTagChildren(node)\n }\n\n if (node.props.dangerouslySetInnerHTML) {\n html += node.props.dangerouslySetInnerHTML.__html\n }\n\n if (!isUnaryTag(node)) {\n html += `</${String(node.type)}>`\n }\n\n return html\n }\n\n function ensureNodeHasInertiaProp(node: ReactElement<any>) {\n return React.cloneElement(node, {\n 'data-inertia': node.props['head-key'] !== undefined ? node.props['head-key'] : '',\n })\n }\n\n function renderNode(node: ReactElement<any>) {\n return renderTag(ensureNodeHasInertiaProp(node))\n }\n\n function renderNodes(nodes: ReactNode) {\n const elements = React.Children.toArray(nodes)\n .filter((node) => node)\n .map((node) => renderNode(node as ReactElement<any>))\n\n if (title && !elements.find((tag) => tag.startsWith('<title'))) {\n elements.push(`<title data-inertia=\"\">${title}</title>`)\n }\n\n return elements\n }\n\n if (isServer) {\n provider.update(renderNodes(children))\n }\n\n return null\n}\nexport default Head\n", "import {\n getScrollableParent,\n InfiniteScrollActionSlotProps,\n InfiniteScrollComponentBaseProps,\n InfiniteScrollRef,\n InfiniteScrollSlotProps,\n ReloadOptions,\n useInfiniteScroll,\n UseInfiniteScrollProps,\n} from '@inertiajs/core'\nimport React, {\n createElement,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport usePage from './usePage'\n\nconst resolveHTMLElement = (\n value: string | React.RefObject<HTMLElement | null> | null,\n fallback: HTMLElement | null,\n): HTMLElement | null => {\n if (!value) {\n return fallback\n }\n\n // React ref object { current: HTMLElement | null }\n if (value && typeof value === 'object' && 'current' in value) {\n return value.current\n }\n\n // CSS Selector string\n if (typeof value === 'string') {\n return document.querySelector(value) as HTMLElement | null\n }\n\n return fallback\n}\n\n// Helper function to render slot content\nconst renderSlot = (\n slotContent: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode) | undefined,\n slotProps: InfiniteScrollActionSlotProps,\n fallback: React.ReactNode = null,\n): React.ReactNode => {\n if (!slotContent) {\n return fallback\n }\n\n return typeof slotContent === 'function' ? slotContent(slotProps) : slotContent\n}\n\ninterface ComponentProps\n extends\n InfiniteScrollComponentBaseProps,\n Omit<React.HTMLAttributes<HTMLElement>, keyof InfiniteScrollComponentBaseProps | 'children'> {\n children?: React.ReactNode | ((props: InfiniteScrollSlotProps) => React.ReactNode)\n\n // Element references for custom trigger detection (when you want different trigger elements)\n startElement?: string | React.RefObject<HTMLElement | null>\n endElement?: string | React.RefObject<HTMLElement | null>\n itemsElement?: string | React.RefObject<HTMLElement | null>\n\n // Render slots for UI components (when you want custom loading/action components)\n previous?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n next?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n loading?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n\n // Request options\n params?: ReloadOptions\n\n onlyNext?: boolean\n onlyPrevious?: boolean\n}\n\nconst InfiniteScroll = forwardRef<InfiniteScrollRef, ComponentProps>(\n (\n {\n data,\n buffer = 0,\n as = 'div',\n manual = false,\n manualAfter = 0,\n preserveUrl = false,\n reverse = false,\n autoScroll,\n children,\n startElement,\n endElement,\n itemsElement,\n previous,\n next,\n loading,\n params = {},\n onlyNext = false,\n onlyPrevious = false,\n ...props\n },\n ref,\n ) => {\n const [startElementFromRef, setStartElementFromRef] = useState<HTMLElement | null>(null)\n const startElementRef = useCallback((node: HTMLElement | null) => setStartElementFromRef(node), [])\n\n const [endElementFromRef, setEndElementFromRef] = useState<HTMLElement | null>(null)\n const endElementRef = useCallback((node: HTMLElement | null) => setEndElementFromRef(node), [])\n\n const [itemsElementFromRef, setItemsElementFromRef] = useState<HTMLElement | null>(null)\n const itemsElementRef = useCallback((node: HTMLElement | null) => setItemsElementFromRef(node), [])\n\n const scrollProp = usePage().scrollProps?.[data]\n\n const [loadingPrevious, setLoadingPrevious] = useState(false)\n const [loadingNext, setLoadingNext] = useState(false)\n const [requestCount, setRequestCount] = useState(0)\n const [hasPreviousPage, setHasPreviousPage] = useState(!!scrollProp?.previousPage)\n const [hasNextPage, setHasNextPage] = useState(!!scrollProp?.nextPage)\n\n const [resolvedStartElement, setResolvedStartElement] = useState<HTMLElement | null>(null)\n const [resolvedEndElement, setResolvedEndElement] = useState<HTMLElement | null>(null)\n const [resolvedItemsElement, setResolvedItemsElement] = useState<HTMLElement | null>(null)\n\n // Update elements when refs or props change\n useEffect(() => {\n const element = startElement ? resolveHTMLElement(startElement, startElementFromRef) : startElementFromRef\n setResolvedStartElement(element)\n }, [startElement, startElementFromRef])\n\n useEffect(() => {\n const element = endElement ? resolveHTMLElement(endElement, endElementFromRef) : endElementFromRef\n setResolvedEndElement(element)\n }, [endElement, endElementFromRef])\n\n useEffect(() => {\n const element = itemsElement ? resolveHTMLElement(itemsElement, itemsElementFromRef) : itemsElementFromRef\n setResolvedItemsElement(element)\n }, [itemsElement, itemsElementFromRef])\n\n const scrollableParent = useMemo(() => getScrollableParent(resolvedItemsElement), [resolvedItemsElement])\n\n const callbackPropsRef = useRef({\n buffer,\n onlyNext,\n onlyPrevious,\n reverse,\n preserveUrl,\n params,\n })\n\n callbackPropsRef.current = {\n buffer,\n onlyNext,\n onlyPrevious,\n reverse,\n preserveUrl,\n params,\n }\n\n const [infiniteScroll, setInfiniteScroll] = useState<UseInfiniteScrollProps | null>(null)\n\n const dataManager = useMemo(() => infiniteScroll?.dataManager, [infiniteScroll])\n const elementManager = useMemo(() => infiniteScroll?.elementManager, [infiniteScroll])\n\n const scrollToBottom = useCallback(() => {\n if (scrollableParent) {\n scrollableParent.scrollTo({\n top: scrollableParent.scrollHeight,\n behavior: 'instant',\n })\n } else {\n window.scrollTo({\n top: document.body.scrollHeight,\n behavior: 'instant',\n })\n }\n }, [scrollableParent])\n\n // Main setup effect - only recreate when structural dependencies change\n useEffect(() => {\n if (!resolvedItemsElement) {\n return\n }\n\n function syncStateFromDataManager() {\n setRequestCount(infiniteScrollInstance.dataManager.getRequestCount())\n setHasPreviousPage(infiniteScrollInstance.dataManager.hasPrevious())\n setHasNextPage(infiniteScrollInstance.dataManager.hasNext())\n }\n\n const infiniteScrollInstance = useInfiniteScroll({\n // Data\n getPropName: () => data,\n inReverseMode: () => callbackPropsRef.current.reverse,\n shouldFetchNext: () => !callbackPropsRef.current.onlyPrevious,\n shouldFetchPrevious: () => !callbackPropsRef.current.onlyNext,\n shouldPreserveUrl: () => callbackPropsRef.current.preserveUrl,\n getReloadOptions: () => callbackPropsRef.current.params,\n\n // Elements\n getTriggerMargin: () => callbackPropsRef.current.buffer,\n getStartElement: () => resolvedStartElement!,\n getEndElement: () => resolvedEndElement!,\n getItemsElement: () => resolvedItemsElement,\n getScrollableParent: () => scrollableParent,\n\n // Callbacks\n onBeforePreviousRequest: () => setLoadingPrevious(true),\n onBeforeNextRequest: () => setLoadingNext(true),\n onCompletePreviousRequest: () => {\n setLoadingPrevious(false)\n syncStateFromDataManager()\n },\n onCompleteNextRequest: () => {\n setLoadingNext(false)\n syncStateFromDataManager()\n },\n onDataReset: syncStateFromDataManager,\n })\n\n setInfiniteScroll(infiniteScrollInstance)\n const { dataManager, elementManager } = infiniteScrollInstance\n syncStateFromDataManager()\n\n elementManager.setupObservers()\n elementManager.processServerLoadedElements(dataManager.getLastLoadedPage())\n\n if (autoLoad) {\n elementManager.enableTriggers()\n }\n\n return () => {\n infiniteScrollInstance.flush()\n setInfiniteScroll(null)\n }\n }, [data, resolvedItemsElement, resolvedStartElement, resolvedEndElement, scrollableParent])\n\n const manualMode = useMemo(\n () => manual || (manualAfter > 0 && requestCount >= manualAfter),\n [manual, manualAfter, requestCount],\n )\n const autoLoad = useMemo(() => !manualMode, [manualMode])\n\n useEffect(() => {\n autoLoad ? elementManager?.enableTriggers() : elementManager?.disableTriggers()\n }, [autoLoad, onlyNext, onlyPrevious, resolvedStartElement, resolvedEndElement])\n\n useEffect(() => {\n // autoScroll defaults to reverse value if not explicitly set\n const shouldAutoScroll = autoScroll !== undefined ? autoScroll : reverse\n\n if (shouldAutoScroll) {\n scrollToBottom()\n }\n }, [scrollableParent])\n\n useImperativeHandle(\n ref,\n () => ({\n fetchNext: dataManager?.fetchNext || (() => {}),\n fetchPrevious: dataManager?.fetchPrevious || (() => {}),\n hasPrevious: dataManager?.hasPrevious || (() => false),\n hasNext: dataManager?.hasNext || (() => false),\n }),\n [dataManager],\n )\n\n const headerAutoMode = autoLoad && !onlyNext\n const footerAutoMode = autoLoad && !onlyPrevious\n\n const sharedExposed: Pick<\n InfiniteScrollActionSlotProps,\n 'loadingPrevious' | 'loadingNext' | 'hasPrevious' | 'hasNext'\n > = {\n loadingPrevious,\n loadingNext,\n hasPrevious: hasPreviousPage,\n hasNext: hasNextPage,\n }\n\n const exposedPrevious: InfiniteScrollActionSlotProps = {\n loading: loadingPrevious,\n fetch: dataManager?.fetchPrevious ?? (() => {}),\n autoMode: headerAutoMode,\n manualMode: !headerAutoMode,\n hasMore: hasPreviousPage,\n ...sharedExposed,\n }\n\n const exposedNext: InfiniteScrollActionSlotProps = {\n loading: loadingNext,\n fetch: dataManager?.fetchNext ?? (() => {}),\n autoMode: footerAutoMode,\n manualMode: !footerAutoMode,\n hasMore: hasNextPage,\n ...sharedExposed,\n }\n\n const exposedSlot: InfiniteScrollSlotProps = {\n loading: loadingPrevious || loadingNext,\n loadingPrevious,\n loadingNext,\n }\n\n const renderElements = []\n\n // Only render previous trigger if not using custom element selector/ref\n if (!startElement) {\n renderElements.push(\n createElement(\n 'div',\n { ref: startElementRef },\n // Render previous slot or fallback to loading indicator\n renderSlot(previous, exposedPrevious, loadingPrevious ? renderSlot(loading, exposedPrevious) : null),\n ),\n )\n }\n\n renderElements.push(\n createElement(\n as,\n { ...props, ref: itemsElementRef },\n typeof children === 'function' ? children(exposedSlot) : children,\n ),\n )\n\n // Only render next trigger if not using custom element selector/ref\n if (!endElement) {\n renderElements.push(\n createElement(\n 'div',\n { ref: endElementRef },\n // Render next slot or fallback to loading indicator\n renderSlot(next, exposedNext, loadingNext ? renderSlot(loading, exposedNext) : null),\n ),\n )\n }\n\n return createElement(React.Fragment, {}, ...(reverse ? [...renderElements].reverse() : renderElements))\n },\n)\n\nInfiniteScroll.displayName = 'InertiaInfiniteScroll'\n\nexport default InfiniteScroll\n", "import {\n ActiveVisit,\n isUrlMethodPair,\n LinkComponentBaseProps,\n LinkPrefetchOption,\n mergeDataIntoQueryString,\n Method,\n PendingVisit,\n resolveUrlMethodPairComponent,\n router,\n shouldIntercept,\n shouldNavigate,\n VisitOptions,\n} from '@inertiajs/core'\nimport { createElement, ElementType, forwardRef, useEffect, useMemo, useRef, useState } from 'react'\nimport { config } from '.'\n\nconst noop = () => undefined\n\ninterface BaseInertiaLinkProps extends LinkComponentBaseProps {\n as?: ElementType\n onClick?: (event: React.MouseEvent) => void\n}\n\nexport type InertiaLinkProps = BaseInertiaLinkProps &\n Omit<React.HTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps> &\n Omit<React.AllHTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps>\n\nconst Link = forwardRef<unknown, InertiaLinkProps>(\n (\n {\n children,\n as = 'a',\n data = {},\n href = '',\n method = 'get',\n preserveScroll = false,\n preserveState = null,\n preserveUrl = false,\n replace = false,\n only = [],\n except = [],\n headers = {},\n queryStringArrayFormat = 'brackets',\n async = false,\n onClick = noop,\n onCancelToken = noop,\n onBefore = noop,\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n onPrefetching = noop,\n onPrefetched = noop,\n prefetch = false,\n cacheFor = 0,\n cacheTags = [],\n viewTransition = false,\n component = null,\n instant = false,\n pageProps = null,\n ...props\n },\n ref,\n ) => {\n const [inFlightCount, setInFlightCount] = useState(0)\n const hoverTimeout = useRef<number>(undefined)\n\n const _method = useMemo(() => {\n return isUrlMethodPair(href) ? href.method : (method.toLowerCase() as Method)\n }, [href, method])\n\n const resolvedComponent = useMemo(() => {\n if (component) {\n return component\n }\n\n if (instant && isUrlMethodPair(href)) {\n return resolveUrlMethodPairComponent(href)\n }\n\n return null\n }, [component, instant, href])\n\n const _as = useMemo(() => {\n if (typeof as !== 'string' || as.toLowerCase() !== 'a') {\n // Custom component or element\n return as\n }\n\n return _method !== 'get' ? 'button' : as.toLowerCase()\n }, [as, _method])\n\n const mergeDataArray = useMemo(\n () => mergeDataIntoQueryString(_method, isUrlMethodPair(href) ? href.url : href, data, queryStringArrayFormat),\n [href, _method, data, queryStringArrayFormat],\n )\n\n const url = useMemo(() => mergeDataArray[0], [mergeDataArray])\n const _data = useMemo(() => mergeDataArray[1], [mergeDataArray])\n\n const baseParams = useMemo<VisitOptions>(\n () => ({\n data: _data,\n method: _method,\n preserveScroll,\n preserveState: preserveState ?? _method !== 'get',\n preserveUrl,\n replace,\n only,\n except,\n headers,\n async,\n component: resolvedComponent,\n pageProps,\n }),\n [\n _data,\n _method,\n preserveScroll,\n preserveState,\n preserveUrl,\n replace,\n only,\n except,\n headers,\n async,\n resolvedComponent,\n pageProps,\n ],\n )\n\n const visitParams = useMemo<VisitOptions>(\n () => ({\n ...baseParams,\n viewTransition,\n onCancelToken,\n onBefore,\n onStart(visit: PendingVisit) {\n setInFlightCount((count) => count + 1)\n onStart(visit)\n },\n onProgress,\n onFinish(visit: ActiveVisit) {\n setInFlightCount((count) => count - 1)\n onFinish(visit)\n },\n onCancel,\n onSuccess,\n onError,\n }),\n [\n baseParams,\n viewTransition,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess,\n onError,\n ],\n )\n\n const prefetchModes: LinkPrefetchOption[] = useMemo(\n () => {\n if (prefetch === true) {\n return ['hover']\n }\n\n if (prefetch === false) {\n return []\n }\n\n if (Array.isArray(prefetch)) {\n return prefetch\n }\n\n return [prefetch]\n },\n Array.isArray(prefetch) ? prefetch : [prefetch],\n )\n\n const cacheForValue = useMemo(() => {\n if (cacheFor !== 0) {\n // If they've provided a value, respect it\n return cacheFor\n }\n\n if (prefetchModes.length === 1 && prefetchModes[0] === 'click') {\n // If they've only provided a prefetch mode of 'click',\n // we should only prefetch for the next request but not keep it around\n return 0\n }\n\n // Otherwise, default to 30 seconds\n return config.get('prefetch.cacheFor')\n }, [cacheFor, prefetchModes])\n\n const doPrefetch = useMemo(() => {\n return () => {\n router.prefetch(\n url,\n {\n ...baseParams,\n onPrefetching,\n onPrefetched,\n },\n { cacheFor: cacheForValue, cacheTags },\n )\n }\n }, [url, baseParams, onPrefetching, onPrefetched, cacheForValue, cacheTags])\n\n useEffect(() => {\n return () => {\n clearTimeout(hoverTimeout.current)\n }\n }, [])\n\n useEffect(() => {\n if (prefetchModes.includes('mount')) {\n setTimeout(() => doPrefetch())\n }\n }, prefetchModes)\n\n const regularEvents = {\n onClick: (event: React.MouseEvent) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n event.preventDefault()\n\n router.visit(url, visitParams)\n }\n },\n }\n\n const prefetchHoverEvents = {\n onMouseEnter: () => {\n hoverTimeout.current = window.setTimeout(() => {\n doPrefetch()\n }, config.get('prefetch.hoverDelay'))\n },\n onMouseLeave: () => {\n clearTimeout(hoverTimeout.current)\n },\n onClick: regularEvents.onClick,\n }\n\n const prefetchClickEvents = {\n onMouseDown: (event: React.MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onKeyDown: (event: React.KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onMouseUp: (event: React.MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n router.visit(url, visitParams)\n }\n },\n onKeyUp: (event: React.KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n router.visit(url, visitParams)\n }\n },\n onClick: (event: React.MouseEvent) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n // Let the mouseup/keyup event handle the visit\n event.preventDefault()\n }\n },\n }\n\n const elProps = useMemo(() => {\n if (_as === 'button') {\n return { type: 'button' }\n }\n\n if (_as === 'a' || typeof _as !== 'string') {\n return { href: url }\n }\n\n return {}\n }, [_as, url])\n\n return createElement(\n _as,\n {\n ...props,\n ...elProps,\n ref,\n ...(() => {\n if (prefetchModes.includes('hover')) {\n return prefetchHoverEvents\n }\n\n if (prefetchModes.includes('click')) {\n return prefetchClickEvents\n }\n\n return regularEvents\n })(),\n 'data-loading': inFlightCount > 0 ? '' : undefined,\n },\n children,\n )\n },\n)\nLink.displayName = 'InertiaLink'\n\nexport default Link\n", "import {\n CancelToken,\n Errors,\n ErrorValue,\n FormDataConvertible,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n hasFiles,\n http,\n HttpCancelledError,\n HttpProgressEvent,\n HttpResponseError,\n mergeDataIntoQueryString,\n Method,\n objectToFormData,\n Progress,\n UrlMethodPair,\n UseFormArguments,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n UseHttpSubmitArguments,\n UseHttpSubmitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep } from 'es-toolkit'\nimport { NamedInputEvent, toSimpleValidationErrors, ValidationConfig, Validator } from 'laravel-precognition'\nimport { useCallback, useMemo, useRef, useState } from 'react'\nimport useFormState, { SetDataAction } from './useFormState'\nimport useRemember from './useRemember'\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface UseHttpProps<TForm extends object, TResponse = unknown> {\n data: TForm\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n response: TResponse | null\n setData: SetDataAction<TForm>\n transform: (callback: UseFormTransformCallback<TForm>) => void\n setDefaults: {\n (): void\n <T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n (fields: Partial<TForm>): void\n }\n reset: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n clearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n resetAndClearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n setError: {\n <K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n (errors: FormDataErrors<TForm>): void\n }\n submit: (...args: UseHttpSubmitArguments<TResponse, TForm>) => Promise<TResponse>\n get: (url: string, options?: UseHttpSubmitOptions<TResponse, TForm>) => Promise<TResponse>\n post: (url: string, options?: UseHttpSubmitOptions<TResponse, TForm>) => Promise<TResponse>\n put: (url: string, options?: UseHttpSubmitOptions<TResponse, TForm>) => Promise<TResponse>\n patch: (url: string, options?: UseHttpSubmitOptions<TResponse, TForm>) => Promise<TResponse>\n delete: (url: string, options?: UseHttpSubmitOptions<TResponse, TForm>) => Promise<TResponse>\n cancel: () => void\n dontRemember: <K extends FormDataKeys<TForm>>(...fields: K[]) => UseHttpProps<TForm, TResponse>\n optimistic: (callback: (currentData: TForm) => Partial<TForm>) => UseHttpProps<TForm, TResponse>\n withAllErrors: () => UseHttpProps<TForm, TResponse>\n withPrecognition: (...args: UseFormWithPrecognitionArguments) => UseHttpPrecognitiveProps<TForm, TResponse>\n}\n\nexport interface UseHttpValidationProps<TForm extends object, TResponse = unknown> {\n invalid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n setValidationTimeout: (duration: number) => UseHttpPrecognitiveProps<TForm, TResponse>\n touch: <K extends FormDataKeys<TForm>>(\n field: K | NamedInputEvent | Array<K>,\n ...fields: K[]\n ) => UseHttpPrecognitiveProps<TForm, TResponse>\n touched: <K extends FormDataKeys<TForm>>(field?: K) => boolean\n valid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n validate: <K extends FormDataKeys<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ) => UseHttpPrecognitiveProps<TForm, TResponse>\n validateFiles: () => UseHttpPrecognitiveProps<TForm, TResponse>\n validating: boolean\n validator: () => Validator\n withAllErrors: () => UseHttpPrecognitiveProps<TForm, TResponse>\n withoutFileValidation: () => UseHttpPrecognitiveProps<TForm, TResponse>\n setErrors: (errors: FormDataErrors<TForm>) => UseHttpPrecognitiveProps<TForm, TResponse>\n forgetError: <K extends FormDataKeys<TForm> | NamedInputEvent>(field: K) => UseHttpPrecognitiveProps<TForm, TResponse>\n}\n\nexport type UseHttp<TForm extends object, TResponse = unknown> = UseHttpProps<TForm, TResponse>\nexport type UseHttpPrecognitiveProps<TForm extends object, TResponse = unknown> = UseHttpProps<TForm, TResponse> &\n UseHttpValidationProps<TForm, TResponse>\n\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n method: Method | (() => Method),\n url: string | (() => string),\n data: TForm | (() => TForm),\n): UseHttpPrecognitiveProps<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n urlMethodPair: UrlMethodPair | (() => UrlMethodPair),\n data: TForm | (() => TForm),\n): UseHttpPrecognitiveProps<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n rememberKey: string,\n data: TForm | (() => TForm),\n): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n data: TForm | (() => TForm),\n): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n ...args: UseFormArguments<TForm>\n): UseHttp<TForm, TResponse> | UseHttpPrecognitiveProps<TForm, TResponse> {\n const { rememberKey, data, precognitionEndpoint } = UseFormUtils.parseUseFormArguments<TForm>(...args)\n\n // Resolve initial data for remember functionality hooks\n const initialDefaults = typeof data === 'function' ? cloneDeep(data()) : cloneDeep(data)\n\n const abortController = useRef<AbortController | null>(null)\n const excludeKeysRef = useRef<FormDataKeys<TForm>[]>([])\n const pendingOptimisticRef = useRef<((currentData: TForm) => Partial<TForm>) | null>(null)\n const [response, setResponse] = useState<TResponse | null>(null)\n\n // For remember functionality, we need custom state hooks\n const useDataState = rememberKey\n ? () => useRemember<TForm>(initialDefaults, `${rememberKey}:data`, excludeKeysRef)\n : undefined\n\n const useErrorsState = rememberKey\n ? () => useRemember<FormDataErrors<TForm>>({} as FormDataErrors<TForm>, `${rememberKey}:errors`)\n : undefined\n\n const {\n form: baseForm,\n setDefaultsState,\n transformRef,\n dataRef,\n precognitionEndpointRef,\n isMounted,\n setProcessing,\n setProgress,\n markAsSuccessful,\n clearErrors,\n setError,\n defaultsCalledInOnSuccessRef,\n resetBeforeSubmit,\n finishProcessing,\n withAllErrors,\n } = useFormState<TForm>({\n data,\n precognitionEndpoint,\n useDataState,\n useErrorsState,\n })\n\n const submit = useCallback(\n async (method: Method, url: string, options: UseHttpSubmitOptions<TResponse, TForm>): Promise<TResponse> => {\n const onBefore = options.onBefore?.()\n\n if (onBefore === false) {\n return Promise.reject(new Error('Request cancelled by onBefore'))\n }\n\n defaultsCalledInOnSuccessRef.current = false\n\n if (isMounted.current) {\n resetBeforeSubmit()\n }\n\n abortController.current = new AbortController()\n\n const cancelToken: CancelToken = {\n cancel: () => abortController.current?.abort(),\n }\n\n options.onCancelToken?.(cancelToken)\n\n options.optimistic = options.optimistic ?? pendingOptimisticRef.current ?? undefined\n pendingOptimisticRef.current = null\n\n let snapshot: TForm | undefined\n\n if (options.optimistic) {\n snapshot = cloneDeep(dataRef.current)\n const optimisticData = options.optimistic(cloneDeep(snapshot))\n\n baseForm.setData((current: TForm) => ({ ...current, ...optimisticData }))\n }\n\n if (isMounted.current) {\n setProcessing(true)\n }\n\n options.onStart?.()\n\n const transformedData = transformRef.current(dataRef.current)\n const useFormData = hasFiles(transformedData as Record<string, FormDataConvertible>)\n\n let requestUrl = url\n let requestData: FormData | string | undefined\n let contentType: string | undefined\n\n if (method === 'get') {\n const [urlWithParams] = mergeDataIntoQueryString(\n method,\n url,\n transformedData as Record<string, FormDataConvertible>,\n )\n requestUrl = urlWithParams\n } else {\n if (useFormData) {\n requestData = objectToFormData(transformedData as Record<string, FormDataConvertible>)\n } else {\n requestData = JSON.stringify(transformedData)\n contentType = 'application/json'\n }\n }\n\n try {\n const httpResponse = await http.getClient().request({\n method,\n url: requestUrl,\n data: requestData,\n headers: {\n Accept: 'application/json',\n ...(contentType ? { 'Content-Type': contentType } : {}),\n ...options.headers,\n },\n signal: abortController.current.signal,\n onUploadProgress: (event: HttpProgressEvent) => {\n if (isMounted.current) {\n setProgress(event)\n }\n\n options.onProgress?.(event)\n },\n })\n\n const responseData = (httpResponse.data ? JSON.parse(httpResponse.data) : null) as TResponse\n\n if (httpResponse.status >= 200 && httpResponse.status < 300) {\n if (isMounted.current) {\n markAsSuccessful()\n setResponse(responseData)\n }\n\n options.onSuccess?.(responseData)\n\n if (isMounted.current && !defaultsCalledInOnSuccessRef.current) {\n baseForm.setData((data: TForm) => {\n setDefaultsState(cloneDeep(data))\n return data\n })\n }\n\n return responseData\n }\n\n throw new HttpResponseError(`Request failed with status ${httpResponse.status}`, httpResponse)\n } catch (error: unknown) {\n if (snapshot && isMounted.current) {\n baseForm.setData(snapshot)\n }\n\n if (error instanceof HttpResponseError) {\n if (error.response.status === 422) {\n const responseData = JSON.parse(error.response.data)\n const validationErrors = responseData.errors || {}\n const processedErrors = (\n withAllErrors.enabled() ? validationErrors : toSimpleValidationErrors(validationErrors)\n ) as FormDataErrors<TForm>\n\n if (isMounted.current) {\n clearErrors()\n setError(processedErrors)\n }\n\n options.onError?.(processedErrors as Errors)\n }\n\n throw error\n }\n\n if (error instanceof HttpCancelledError || (error instanceof Error && error.name === 'AbortError')) {\n options.onCancel?.()\n throw new HttpCancelledError('Request was cancelled', url)\n }\n\n throw error\n } finally {\n if (isMounted.current) {\n finishProcessing()\n }\n\n abortController.current = null\n options.onFinish?.()\n }\n },\n [clearErrors, setError],\n )\n\n const cancel = useCallback(() => {\n if (abortController.current) {\n abortController.current.abort()\n }\n }, [])\n\n const submitWithArgs = useCallback(\n (...args: UseHttpSubmitArguments<TResponse, TForm>): Promise<TResponse> => {\n const parsed = UseFormUtils.parseSubmitArguments(args as any, precognitionEndpointRef.current)\n\n return submit(parsed.method, parsed.url, parsed.options as UseHttpSubmitOptions<TResponse, TForm>)\n },\n [submit],\n )\n\n const submitMethods = useMemo(\n () => ({\n get: async (url: string, options: UseHttpSubmitOptions<TResponse, TForm> = {}): Promise<TResponse> =>\n submit('get', url, options),\n post: async (url: string, options: UseHttpSubmitOptions<TResponse, TForm> = {}): Promise<TResponse> =>\n submit('post', url, options),\n put: async (url: string, options: UseHttpSubmitOptions<TResponse, TForm> = {}): Promise<TResponse> =>\n submit('put', url, options),\n patch: async (url: string, options: UseHttpSubmitOptions<TResponse, TForm> = {}): Promise<TResponse> =>\n submit('patch', url, options),\n delete: async (url: string, options: UseHttpSubmitOptions<TResponse, TForm> = {}): Promise<TResponse> =>\n submit('delete', url, options),\n }),\n [submit],\n )\n\n // Add useHttp-specific methods to the form object\n Object.assign(baseForm, {\n response,\n submit: submitWithArgs,\n ...submitMethods,\n cancel,\n dontRemember: <K extends FormDataKeys<TForm>>(...keys: K[]) => {\n excludeKeysRef.current = keys\n return form\n },\n\n optimistic: (callback: (currentData: TForm) => Partial<TForm>) => {\n pendingOptimisticRef.current = callback\n return form\n },\n\n withAllErrors: () => {\n withAllErrors.enable()\n return form\n },\n })\n\n // Cast to the full form type (baseForm now has HTTP methods)\n const form = baseForm as unknown as UseHttpProps<TForm, TResponse>\n\n // Wrap withPrecognition to return the correct type with HTTP methods\n const originalWithPrecognition = baseForm.withPrecognition\n form.withPrecognition = (...args: UseFormWithPrecognitionArguments): UseHttpPrecognitiveProps<TForm, TResponse> => {\n originalWithPrecognition(...args)\n return form as UseHttpPrecognitiveProps<TForm, TResponse>\n }\n\n return precognitionEndpointRef.current ? (form as UseHttpPrecognitiveProps<TForm, TResponse>) : form\n}\n", "import { PollOptions, ReloadOptions, router } from '@inertiajs/core'\nimport { useEffect, useRef } from 'react'\n\nexport default function usePoll(\n interval: number,\n requestOptions: ReloadOptions = {},\n options: PollOptions = {\n keepAlive: false,\n autoStart: true,\n },\n) {\n const pollRef = useRef(\n router.poll(interval, requestOptions, {\n ...options,\n autoStart: false,\n }),\n )\n\n useEffect(() => {\n if (options.autoStart ?? true) {\n pollRef.current.start()\n }\n\n return () => pollRef.current.stop()\n }, [])\n\n return {\n stop: pollRef.current.stop,\n start: pollRef.current.start,\n }\n}\n", "import { router, VisitOptions } from '@inertiajs/core'\nimport { useEffect, useState } from 'react'\n\nexport default function usePrefetch(options: VisitOptions = {}): {\n lastUpdatedAt: number | null\n isPrefetching: boolean\n isPrefetched: boolean\n flush: () => void\n} {\n const cached = typeof window === 'undefined' ? null : router.getCached(window.location.pathname, options)\n const inFlight = typeof window === 'undefined' ? null : router.getPrefetching(window.location.pathname, options)\n\n const [lastUpdatedAt, setLastUpdatedAt] = useState<number | null>(cached?.staleTimestamp || null)\n const [isPrefetching, setIsPrefetching] = useState(inFlight !== null)\n const [isPrefetched, setIsPrefetched] = useState(cached !== null)\n\n useEffect(() => {\n const onPrefetchingListener = router.on('prefetching', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(true)\n }\n })\n\n const onPrefetchedListener = router.on('prefetched', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(false)\n setIsPrefetched(true)\n setLastUpdatedAt(e.detail.fetchedAt)\n }\n })\n\n return () => {\n onPrefetchedListener()\n onPrefetchingListener()\n }\n }, [])\n\n return {\n lastUpdatedAt,\n isPrefetching,\n isPrefetched,\n flush: () => router.flush(window.location.pathname, options),\n }\n}\n", "import { ReloadOptions, router } from '@inertiajs/core'\nimport { get } from 'es-toolkit/compat'\nimport { createElement, ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport usePage from './usePage'\n\ninterface WhenVisibleSlotProps {\n fetching: boolean\n}\n\ninterface WhenVisibleProps {\n children: ReactNode | ((props: WhenVisibleSlotProps) => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data?: string | string[]\n params?: ReloadOptions\n buffer?: number\n as?: string\n always?: boolean\n}\n\nconst WhenVisible = ({ children, data, params, buffer, as, always, fallback }: WhenVisibleProps) => {\n always = always ?? false\n as = as ?? 'div'\n fallback = fallback ?? null\n\n const pageProps = usePage().props\n const keys = useMemo(() => (data ? (Array.isArray(data) ? data : [data]) : []), [data])\n\n const [loaded, setLoaded] = useState(() => keys.length > 0 && keys.every((key) => get(pageProps, key) !== undefined))\n const [isFetching, setIsFetching] = useState(false)\n const fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n const observer = useRef<IntersectionObserver | null>(null)\n const getReloadParamsRef = useRef<() => Partial<ReloadOptions>>(() => ({}))\n\n useEffect(() => {\n if (keys.length > 0) {\n setLoaded(keys.every((key) => get(pageProps, key) !== undefined))\n }\n }, [pageProps, keys])\n\n const getReloadParams = useCallback<() => Partial<ReloadOptions>>(() => {\n const reloadParams: Partial<ReloadOptions> = { preserveErrors: true, ...params }\n\n if (data) {\n reloadParams.only = (Array.isArray(data) ? data : [data]) as string[]\n }\n\n return reloadParams\n }, [params, data])\n\n getReloadParamsRef.current = getReloadParams\n\n const registerObserver = () => {\n observer.current?.disconnect()\n\n observer.current = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (fetching.current) {\n return\n }\n\n if (!always && loaded) {\n return\n }\n\n fetching.current = true\n setIsFetching(true)\n\n const reloadParams = getReloadParamsRef.current()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.current = true\n setIsFetching(true)\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n setLoaded(true)\n fetching.current = false\n setIsFetching(false)\n reloadParams.onFinish?.(e)\n\n if (!always) {\n observer.current?.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.current.observe(ref.current!)\n }\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n if (loaded && !always) {\n return\n }\n\n registerObserver()\n\n return () => {\n observer.current?.disconnect()\n }\n }, [always, loaded, buffer])\n\n const resolveChildren = () => (typeof children === 'function' ? children({ fetching: isFetching }) : children)\n const resolveFallback = () => (typeof fallback === 'function' ? fallback() : fallback)\n\n if (always || !loaded) {\n return createElement(\n as,\n {\n props: null,\n ref,\n },\n loaded ? resolveChildren() : resolveFallback(),\n )\n }\n\n return loaded ? resolveChildren() : null\n}\n\nWhenVisible.displayName = 'InertiaWhenVisible'\n\nexport default WhenVisible\n"],
5
+ "mappings": "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",
6
+ "names": ["http", "router", "createContext", "current", "layouts", "router", "createElement", "progress", "http", "createElement", "page", "head", "reactApp", "router", "useEffect", "useMemo", "useState", "useState", "useMemo", "useEffect", "router", "config", "UseFormUtils", "isEqual", "createContext", "createElement", "use", "useEffect", "useMemo", "useRef", "useState", "router", "UseFormUtils", "cloneDeep", "useCallback", "useMemo", "useRef", "useState", "useEffect", "get", "useEffect", "useRef", "useState", "useRef", "useState", "progress", "data", "useEffect", "defaults", "get", "errors", "config", "router", "useEffect", "useState", "UseFormUtils", "cloneDeep", "useRef", "useState", "useCallback", "args", "data", "router", "useMemo", "createContext", "config", "useRef", "useMemo", "useState", "isEqual", "useEffect", "UseFormUtils", "createElement", "use", "React", "use", "useEffect", "useMemo", "use", "useMemo", "useEffect", "children", "React", "React", "createElement", "forwardRef", "useCallback", "useEffect", "useImperativeHandle", "useMemo", "useRef", "useState", "forwardRef", "useState", "useCallback", "useEffect", "useMemo", "useRef", "dataManager", "elementManager", "useImperativeHandle", "createElement", "React", "isUrlMethodPair", "mergeDataIntoQueryString", "resolveUrlMethodPairComponent", "router", "createElement", "forwardRef", "useEffect", "useMemo", "useRef", "useState", "noop", "forwardRef", "useState", "useRef", "useMemo", "isUrlMethodPair", "resolveUrlMethodPairComponent", "mergeDataIntoQueryString", "router", "useEffect", "createElement", "mergeDataIntoQueryString", "UseFormUtils", "cloneDeep", "toSimpleValidationErrors", "useCallback", "useMemo", "useRef", "useState", "UseFormUtils", "cloneDeep", "useRef", "useState", "useCallback", "mergeDataIntoQueryString", "data", "toSimpleValidationErrors", "args", "useMemo", "router", "useEffect", "useRef", "router", "useEffect", "useState", "router", "get", "createElement", "useCallback", "useEffect", "useMemo", "useRef", "useState", "useMemo", "useState", "get", "useRef", "useEffect", "useCallback", "router", "createElement"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inertiajs/react",
3
- "version": "3.0.0-beta.5",
3
+ "version": "3.0.0-beta.6",
4
4
  "license": "MIT",
5
5
  "description": "The React adapter for Inertia.js",
6
6
  "contributors": [
@@ -59,7 +59,7 @@
59
59
  "dependencies": {
60
60
  "es-toolkit": "^1.33.0",
61
61
  "laravel-precognition": "2.0.0-beta.5",
62
- "@inertiajs/core": "3.0.0-beta.5"
62
+ "@inertiajs/core": "3.0.0-beta.6"
63
63
  },
64
64
  "scripts": {
65
65
  "build": "pnpm clean && ./build.js && tsc",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: inertia-react-development
3
- description: "Develops Inertia.js v3 React client-side applications. Activates when creating React pages, forms, or navigation; using <Link>, <Form>, useForm, useHttp, useLayoutProps, or router; working with deferred props, prefetching, optimistic updates, instant visits, or polling; or when user mentions React with Inertia, React pages, React forms, or React navigation."
3
+ description: "Develops Inertia.js v3 React client-side applications. Activates when creating React pages, forms, or navigation; using <Link>, <Form>, useForm, useHttp, setLayoutProps, or router; working with deferred props, prefetching, optimistic updates, instant visits, or polling; or when user mentions React with Inertia, React pages, React forms, or React navigation."
4
4
  license: MIT
5
5
  metadata:
6
6
  author: laravel
@@ -358,14 +358,7 @@ import { Link } from '@inertiajs/react'
358
358
  Share dynamic data between pages and persistent layouts:
359
359
 
360
360
  @boostsnippet("Layout Props in Layout", "react")
361
- import { useLayoutProps } from '@inertiajs/react'
362
-
363
- export default function Layout({ children }) {
364
- const { title, showSidebar } = useLayoutProps({
365
- title: 'My App',
366
- showSidebar: true,
367
- })
368
-
361
+ export default function Layout({ title = 'My App', showSidebar = true, children }) {
369
362
  return (
370
363
  <>
371
364
  <header>{title}</header>
@@ -417,30 +410,54 @@ export default function UsersIndex({ users }) {
417
410
 
418
411
  ### Polling
419
412
 
420
- Automatically refresh data at intervals:
413
+ Use the `usePoll` hook to automatically refresh data at intervals. It handles cleanup on unmount and throttles polling when the tab is inactive.
421
414
 
422
- @boostsnippet("Polling Example", "react")
423
- import { router } from '@inertiajs/react'
424
- import { useEffect } from 'react'
415
+ @boostsnippet("Basic Polling", "react")
416
+ import { usePoll } from '@inertiajs/react'
425
417
 
426
418
  export default function Dashboard({ stats }) {
427
- useEffect(() => {
428
- const interval = setInterval(() => {
429
- router.reload({ only: ['stats'] })
430
- }, 5000)
419
+ usePoll(5000)
420
+
421
+ return (
422
+ <div>
423
+ <h1>Dashboard</h1>
424
+ <div>Active Users: {stats.activeUsers}</div>
425
+ </div>
426
+ )
427
+ }
428
+ @endboostsnippet
429
+
430
+ @boostsnippet("Polling With Request Options and Manual Control", "react")
431
+ import { usePoll } from '@inertiajs/react'
431
432
 
432
- return () => clearInterval(interval)
433
- }, [])
433
+ export default function Dashboard({ stats }) {
434
+ const { start, stop } = usePoll(5000, {
435
+ only: ['stats'],
436
+ onStart() {
437
+ console.log('Polling request started')
438
+ },
439
+ onFinish() {
440
+ console.log('Polling request finished')
441
+ },
442
+ }, {
443
+ autoStart: false,
444
+ keepAlive: true,
445
+ })
434
446
 
435
447
  return (
436
448
  <div>
437
449
  <h1>Dashboard</h1>
438
450
  <div>Active Users: {stats.activeUsers}</div>
451
+ <button onClick={start}>Start Polling</button>
452
+ <button onClick={stop}>Stop Polling</button>
439
453
  </div>
440
454
  )
441
455
  }
442
456
  @endboostsnippet
443
457
 
458
+ - `autoStart` (default `true`) - set to `false` to start polling manually via the returned `start()` function
459
+ - `keepAlive` (default `false`) - set to `true` to prevent throttling when the browser tab is inactive
460
+
444
461
  ### WhenVisible
445
462
 
446
463
  Lazy-load a prop when an element scrolls into view. Useful for deferring expensive data that sits below the fold:
@@ -467,6 +484,26 @@ export default function Dashboard({ stats }) {
467
484
  }
468
485
  @endboostsnippet
469
486
 
487
+ ### InfiniteScroll
488
+
489
+ Automatically load additional pages of paginated data as users scroll:
490
+
491
+ @boostsnippet("InfiniteScroll Example", "react")
492
+ import { InfiniteScroll } from '@inertiajs/react'
493
+
494
+ export default function Users({ users }) {
495
+ return (
496
+ <InfiniteScroll data="users">
497
+ {users.data.map(user => (
498
+ <div key={user.id}>{user.name}</div>
499
+ ))}
500
+ </InfiniteScroll>
501
+ )
502
+ }
503
+ @endboostsnippet
504
+
505
+ The server must use `Inertia::scroll()` to configure the paginated data. Use the `search-docs` tool with a query of `infinite scroll` for detailed guidance on buffers, manual loading, reverse mode, and custom trigger elements.
506
+
470
507
  ## Server-Side Patterns
471
508
 
472
509
  Server-side patterns (Inertia::render, props, middleware) are covered in inertia-laravel guidelines.
package/types/Form.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { FormComponentProps, FormComponentRef, FormComponentSlotProps } from '@inertiajs/core';
2
2
  import React, { ReactNode } from 'react';
3
- type FormProps<TForm extends object = Record<string, any>> = FormComponentProps & Omit<React.FormHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> & Omit<React.AllHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> & {
3
+ type FormProps<TForm extends object = Record<string, any>> = FormComponentProps<TForm> & Omit<React.FormHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> & Omit<React.AllHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> & {
4
4
  children: ReactNode | ((props: FormComponentSlotProps<TForm>) => ReactNode);
5
5
  };
6
6
  export declare function useFormContext<TForm extends object = Record<string, any>>(): FormComponentRef<TForm> | undefined;
@@ -62,8 +62,8 @@ export interface UseFormStateReturn<TForm extends object> {
62
62
  precognitionEndpointRef: React.MutableRefObject<(() => UrlMethodPair) | null>;
63
63
  dataRef: React.MutableRefObject<TForm>;
64
64
  isMounted: React.MutableRefObject<boolean>;
65
- setProcessing: (value: boolean) => void;
66
- setProgress: (value: Progress | null) => void;
65
+ setProcessing: React.Dispatch<React.SetStateAction<boolean>>;
66
+ setProgress: React.Dispatch<React.SetStateAction<Progress | null>>;
67
67
  markAsSuccessful: () => void;
68
68
  clearErrors: (...fields: string[]) => void;
69
69
  setError: (fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: ErrorValue) => void;