@inertiajs/react 2.2.15 → 2.2.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -1,13 +1,6 @@
1
1
  // src/index.ts
2
2
  import { config as coreConfig, progress as Progress2, router as Router } from "@inertiajs/core";
3
3
 
4
- // src/createInertiaApp.ts
5
- import {
6
- router as router2,
7
- setupProgress
8
- } from "@inertiajs/core";
9
- import { createElement as createElement2 } from "react";
10
-
11
4
  // src/App.ts
12
5
  import {
13
6
  createHeadManager,
@@ -110,6 +103,11 @@ function App({
110
103
  App.displayName = "Inertia";
111
104
 
112
105
  // src/createInertiaApp.ts
106
+ import {
107
+ router as router2,
108
+ setupProgress
109
+ } from "@inertiajs/core";
110
+ import { createElement as createElement2 } from "react";
113
111
  async function createInertiaApp({
114
112
  id = "app",
115
113
  resolve,
@@ -174,9 +172,9 @@ async function createInertiaApp({
174
172
  import { useEffect as useEffect2, useMemo as useMemo2, useState as useState2 } from "react";
175
173
 
176
174
  // src/usePage.ts
177
- import { useContext } from "react";
175
+ import React from "react";
178
176
  function usePage() {
179
- const page = useContext(PageContext_default);
177
+ const page = typeof React.use === "function" ? React.use(PageContext_default) : React.useContext(PageContext_default);
180
178
  if (!page) {
181
179
  throw new Error("usePage must be used within the Inertia component");
182
180
  }
@@ -230,7 +228,7 @@ import {
230
228
  resetFormFields
231
229
  } from "@inertiajs/core";
232
230
  import { isEqual as isEqual2 } from "lodash-es";
233
- import React, {
231
+ import React2, {
234
232
  createElement as createElement3,
235
233
  forwardRef,
236
234
  useEffect as useEffect6,
@@ -527,7 +525,7 @@ function useForm(rememberKeyOrInitialValues, maybeInitialValues) {
527
525
 
528
526
  // src/Form.ts
529
527
  var deferStateUpdate = (callback) => {
530
- typeof React.startTransition === "function" ? React.startTransition(callback) : setTimeout(callback, 0);
528
+ typeof React2.startTransition === "function" ? React2.startTransition(callback) : setTimeout(callback, 0);
531
529
  };
532
530
  var noop = () => void 0;
533
531
  var Form = forwardRef(
@@ -603,6 +601,7 @@ var Form = forwardRef(
603
601
  );
604
602
  const submitOptions = {
605
603
  headers,
604
+ queryStringArrayFormat,
606
605
  errorBag,
607
606
  showProgress,
608
607
  invalidateCacheTags,
@@ -680,9 +679,9 @@ var Form_default = Form;
680
679
 
681
680
  // src/Head.ts
682
681
  import { escape } from "lodash-es";
683
- import React2, { useContext as useContext2, useEffect as useEffect7, useMemo as useMemo5 } from "react";
682
+ import React3, { useContext, useEffect as useEffect7, useMemo as useMemo5 } from "react";
684
683
  var Head = function({ children, title }) {
685
- const headManager = useContext2(HeadContext_default);
684
+ const headManager = useContext(HeadContext_default);
686
685
  const provider = useMemo5(() => headManager.createProvider(), [headManager]);
687
686
  const isServer = typeof window === "undefined";
688
687
  useEffect7(() => {
@@ -748,7 +747,7 @@ var Head = function({ children, title }) {
748
747
  return html;
749
748
  }
750
749
  function ensureNodeHasInertiaProp(node) {
751
- return React2.cloneElement(node, {
750
+ return React3.cloneElement(node, {
752
751
  [provider.preferredAttribute()]: node.props["head-key"] !== void 0 ? node.props["head-key"] : ""
753
752
  });
754
753
  }
@@ -756,7 +755,7 @@ var Head = function({ children, title }) {
756
755
  return renderTag(ensureNodeHasInertiaProp(node));
757
756
  }
758
757
  function renderNodes(nodes) {
759
- const elements = React2.Children.toArray(nodes).filter((node) => node).map((node) => renderNode(node));
758
+ const elements = React3.Children.toArray(nodes).filter((node) => node).map((node) => renderNode(node));
760
759
  if (title && !elements.find((tag) => tag.startsWith("<title"))) {
761
760
  elements.push(`<title ${provider.preferredAttribute()}>${title}</title>`);
762
761
  }
@@ -774,7 +773,7 @@ import {
774
773
  getScrollableParent,
775
774
  useInfiniteScroll
776
775
  } from "@inertiajs/core";
777
- import React3, {
776
+ import React4, {
778
777
  createElement as createElement4,
779
778
  forwardRef as forwardRef2,
780
779
  useCallback as useCallback2,
@@ -1005,7 +1004,7 @@ var InfiniteScroll = forwardRef2(
1005
1004
  )
1006
1005
  );
1007
1006
  }
1008
- return createElement4(React3.Fragment, {}, ...reverse ? [...renderElements].reverse() : renderElements);
1007
+ return createElement4(React4.Fragment, {}, ...reverse ? [...renderElements].reverse() : renderElements);
1009
1008
  }
1010
1009
  );
1011
1010
  InfiniteScroll.displayName = "InertiaInfiniteScroll";
@@ -1199,8 +1198,10 @@ var Link = forwardRef3(
1199
1198
  }
1200
1199
  },
1201
1200
  onMouseUp: (event) => {
1202
- event.preventDefault();
1203
- router6.visit(url, visitParams);
1201
+ if (shouldIntercept(event)) {
1202
+ event.preventDefault();
1203
+ router6.visit(url, visitParams);
1204
+ }
1204
1205
  },
1205
1206
  onKeyUp: (event) => {
1206
1207
  if (shouldNavigate(event)) {
@@ -1395,6 +1396,7 @@ var progress = Progress2;
1395
1396
  var router3 = Router;
1396
1397
  var config = coreConfig.extend();
1397
1398
  export {
1399
+ App,
1398
1400
  Deferred_default as Deferred,
1399
1401
  Form_default as Form,
1400
1402
  Head_default as Head,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/index.ts", "../src/createInertiaApp.ts", "../src/App.ts", "../src/HeadContext.ts", "../src/PageContext.ts", "../src/Deferred.ts", "../src/usePage.ts", "../src/Form.ts", "../src/useForm.ts", "../src/react.ts", "../src/useRemember.ts", "../src/Head.ts", "../src/InfiniteScroll.ts", "../src/Link.ts", "../src/usePoll.ts", "../src/usePrefetch.ts", "../src/WhenVisible.ts"],
4
- "sourcesContent": ["import { config as coreConfig, progress as Progress, router as Router } from '@inertiajs/core'\nimport { ReactInertiaAppConfig } from './types'\n\nexport const progress = Progress\nexport const router = Router\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './Deferred'\nexport { default as Form } from './Form'\nexport { default as Head } from './Head'\nexport { default as InfiniteScroll } from './InfiniteScroll'\nexport { InertiaLinkProps, default as Link } from './Link'\nexport {\n InertiaFormProps,\n SetDataAction,\n SetDataByKeyValuePair,\n SetDataByMethod,\n SetDataByObject,\n default as useForm,\n} from './useForm'\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 CreateInertiaAppOptionsForCSR,\n CreateInertiaAppOptionsForSSR,\n InertiaAppResponse,\n InertiaAppSSRResponse,\n PageProps,\n router,\n setupProgress,\n} from '@inertiajs/core'\nimport { ReactElement, createElement } from 'react'\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\n// The 'unknown' type is necessary for backwards compatibility...\ntype ComponentResolver = (\n name: string,\n) => ReactComponent | Promise<ReactComponent> | { default: ReactComponent } | unknown\n\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForCSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<HTMLElement, SharedProps>,\n void,\n ReactInertiaAppConfig\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}\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<void>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<InertiaAppSSRResponse>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>({\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n defaults = {},\n}: InertiaAppOptionsForCSR<SharedProps> | InertiaAppOptionsForSSR<SharedProps>): InertiaAppResponse {\n config.replace(defaults)\n\n const isServer = typeof window === 'undefined'\n const el = isServer ? null : document.getElementById(id)\n const initialPage = page || JSON.parse(el?.dataset.page || '{}')\n\n // @ts-expect-error - This can be improved once we remove the 'unknown' type from the resolver...\n const resolveComponent = (name) => Promise.resolve(resolve(name)).then((module) => module.default || module)\n\n let head: string[] = []\n\n const reactApp = await Promise.all([\n resolveComponent(initialPage.component),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n const props = {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n }\n\n if (isServer) {\n const ssrSetup = setup as (options: SetupOptions<null, SharedProps>) => ReactElement\n\n return ssrSetup({\n el: null,\n App,\n props: { ...props, onHeadUpdate: (elements: string[]) => (head = elements) },\n })\n }\n\n const csrSetup = setup as (options: SetupOptions<HTMLElement, SharedProps>) => void\n\n return csrSetup({\n el: el as HTMLElement,\n App,\n props,\n })\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer && render) {\n const body = await render(\n createElement(\n 'div',\n {\n id,\n 'data-page': JSON.stringify(initialPage),\n },\n reactApp as ReactElement,\n ),\n )\n\n return { head, body }\n }\n}\n", "import {\n createHeadManager,\n HeadManagerOnUpdateCallback,\n HeadManagerTitleCallback,\n Page,\n PageHandler,\n PageProps,\n router,\n} from '@inertiajs/core'\nimport { createElement, FunctionComponent, ReactNode, useEffect, useMemo, useState } from 'react'\nimport HeadContext from './HeadContext'\nimport PageContext from './PageContext'\nimport { LayoutFunction, ReactComponent, ReactPageHandlerArgs } from './types'\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) => ReactComponent | Promise<ReactComponent>\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdateCallback\n}\n\nexport type InertiaApp = FunctionComponent<InertiaAppProps>\n\nexport default function App<SharedProps extends PageProps = PageProps>({\n children,\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n}: InertiaAppProps<SharedProps>) {\n const [current, setCurrent] = useState<CurrentPage>({\n component: initialComponent || null,\n page: initialPage,\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 if (!routerIsInitialized) {\n router.init<ReactComponent>({\n initialPage,\n resolveComponent: resolveComponent!,\n swapComponent: async (args) => swapComponent(args),\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 setCurrent((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\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 (typeof Component.layout === 'function') {\n return (Component.layout as LayoutFunction)(child)\n }\n\n if (Array.isArray(Component.layout)) {\n return (Component.layout as any)\n .concat(child)\n .reverse()\n .reduce((children: any, Layout: any) => createElement(Layout, { children, ...props }))\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 { Page } from '@inertiajs/core'\nimport { createContext } from 'react'\n\nconst pageContext = createContext<Page | null>(null)\npageContext.displayName = 'InertiaPageContext'\n\nexport default pageContext\n", "import { ReactNode, useEffect, useMemo, useState } from 'react'\nimport { router } from '.'\nimport usePage from './usePage'\n\nconst urlWithoutHash = (url: URL | Location): URL => {\n url = new URL(url.href)\n url.hash = ''\n\n return url\n}\n\nconst isSameUrlWithoutHash = (url1: URL | Location, url2: URL | Location): boolean => {\n return urlWithoutHash(url1).href === urlWithoutHash(url2).href\n}\n\ninterface DeferredProps {\n children: ReactNode | (() => 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 pageProps = usePage().props\n const keys = useMemo(() => (Array.isArray(data) ? data : [data]), [data])\n\n useEffect(() => {\n const removeListener = router.on('start', (e) => {\n const isPartialVisit = e.detail.visit.only.length > 0 || e.detail.visit.except.length > 0\n const isReloadingKey = e.detail.visit.only.find((key) => keys.includes(key))\n\n if (isSameUrlWithoutHash(e.detail.visit.url, window.location) && (!isPartialVisit || isReloadingKey)) {\n setLoaded(false)\n }\n })\n\n return () => {\n removeListener()\n }\n }, [])\n\n useEffect(() => {\n setLoaded(keys.every((key) => pageProps[key] !== undefined))\n }, [pageProps, keys])\n\n if (loaded) {\n return typeof children === 'function' ? children() : 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 { useContext } from 'react'\nimport PageContext from './PageContext'\n\nexport default function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps & SharedPageProps> {\n const page = useContext(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 FormComponentProps,\n FormComponentRef,\n FormComponentSlotProps,\n FormDataConvertible,\n formDataToObject,\n isUrlMethodPair,\n mergeDataIntoQueryString,\n Method,\n resetFormFields,\n VisitOptions,\n} from '@inertiajs/core'\nimport { isEqual } from 'lodash-es'\nimport React, {\n createElement,\n FormEvent,\n forwardRef,\n ReactNode,\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 ComponentProps = (FormComponentProps &\n Omit<React.FormHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> &\n Omit<React.AllHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'>) & {\n children: ReactNode | ((props: FormComponentSlotProps) => ReactNode)\n}\n\ntype FormSubmitOptions = Omit<VisitOptions, 'data' | 'onPrefetched' | 'onPrefetching'>\n\nconst noop = () => undefined\n\nconst Form = forwardRef<FormComponentRef, ComponentProps>(\n (\n {\n action = '',\n method = 'get',\n headers = {},\n queryStringArrayFormat = 'brackets',\n errorBag = null,\n showProgress = true,\n transform = (data) => data,\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 children,\n ...props\n },\n ref,\n ) => {\n const form = useForm<Record<string, any>>({})\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 [isDirty, setIsDirty] = useState(false)\n const defaultData = useRef<FormData>(new FormData())\n\n const getFormData = (): FormData => new FormData(formElement.current)\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 = (): Record<string, FormDataConvertible> => formDataToObject(getFormData())\n\n const updateDirtyState = (event: Event) =>\n deferStateUpdate(() =>\n setIsDirty(event.type === 'reset' ? false : !isEqual(getData(), formDataToObject(defaultData.current))),\n )\n\n useEffect(() => {\n defaultData.current = getFormData()\n\n const formEvents: Array<keyof HTMLElementEventMap> = ['input', 'change', 'reset']\n\n formEvents.forEach((e) => formElement.current!.addEventListener(e, updateDirtyState))\n\n return () => formEvents.forEach((e) => formElement.current?.removeEventListener(e, updateDirtyState))\n }, [])\n\n const reset = (...fields: string[]) => {\n if (formElement.current) {\n resetFormFields(formElement.current, defaultData.current, fields)\n }\n }\n\n const resetAndClearErrors = (...fields: string[]) => {\n form.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 = () => {\n const [url, _data] = mergeDataIntoQueryString(\n resolvedMethod,\n isUrlMethodPair(action) ? action.url : action,\n getData(),\n queryStringArrayFormat,\n )\n\n const submitOptions: FormSubmitOptions = {\n headers,\n errorBag,\n showProgress,\n invalidateCacheTags,\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 form.transform(() => transform(_data))\n form.submit(resolvedMethod, url, submitOptions)\n }\n\n const defaults = () => {\n defaultData.current = getFormData()\n setIsDirty(false)\n }\n\n const exposed = () => ({\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: form.clearErrors,\n resetAndClearErrors,\n setError: form.setError,\n reset,\n submit,\n defaults,\n getData,\n getFormData,\n })\n\n useImperativeHandle(ref, exposed, [form, isDirty, submit])\n\n return 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()\n },\n // Only React 19 supports passing a boolean to the `inert` attribute.\n // To support earlier versions as well, we use the string 'true'.\n // Unfortunately, React 19 treats an empty string as `false`.\n // See: https://github.com/inertiajs/inertia/pull/2536\n inert: disableWhileProcessing && form.processing && 'true',\n },\n typeof children === 'function' ? children(exposed()) : children,\n )\n },\n)\n\nForm.displayName = 'InertiaForm'\n\nexport default Form\n", "import {\n CancelToken,\n Errors,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n Method,\n Progress,\n RequestPayload,\n router,\n UrlMethodPair,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep, get, has, isEqual, set } from 'lodash-es'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { config } from '.'\nimport { useIsomorphicLayoutEffect } from './react'\nimport useRemember from './useRemember'\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 FormOptions = Omit<VisitOptions, 'data'>\ntype SubmitArgs = [Method, string, FormOptions?] | [UrlMethodPair, FormOptions?]\ntype TransformCallback<TForm> = (data: TForm) => object\n\nexport interface InertiaFormProps<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: TransformCallback<TForm>) => void\n setDefaults(): void\n setDefaults<T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n setDefaults(fields: Partial<TForm>): void\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<K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n setError(errors: FormDataErrors<TForm>): void\n submit: (...args: SubmitArgs) => void\n get: (url: string, options?: FormOptions) => void\n patch: (url: string, options?: FormOptions) => void\n post: (url: string, options?: FormOptions) => void\n put: (url: string, options?: FormOptions) => void\n delete: (url: string, options?: FormOptions) => void\n cancel: () => void\n}\nexport default function useForm<TForm extends FormDataType<TForm>>(\n initialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKey: string,\n initialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKeyOrInitialValues?: string | TForm | (() => TForm),\n maybeInitialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm> {\n const isMounted = useRef(false)\n const rememberKey = typeof rememberKeyOrInitialValues === 'string' ? rememberKeyOrInitialValues : null\n const [defaults, setDefaults] = useState(\n (typeof rememberKeyOrInitialValues === 'string' ? maybeInitialValues : rememberKeyOrInitialValues) || ({} as TForm),\n )\n const cancelToken = useRef<CancelToken | null>(null)\n const recentlySuccessfulTimeoutId = useRef<number>(undefined)\n const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`) : useState(defaults)\n const [errors, setErrors] = rememberKey\n ? useRemember({} as FormDataErrors<TForm>, `${rememberKey}:errors`)\n : useState({} as FormDataErrors<TForm>)\n const [hasErrors, setHasErrors] = useState(false)\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 const transform = useRef<TransformCallback<TForm>>((data) => data)\n const isDirty = useMemo(() => !isEqual(data, defaults), [data, defaults])\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n // Track if setDefaults was called manually during onSuccess to avoid\n // overriding user's custom defaults with automatic behavior.\n const setDefaultsCalledInOnSuccess = useRef(false)\n\n const submit = useCallback(\n (...args: SubmitArgs) => {\n const objectPassed = args[0] !== null && typeof args[0] === 'object'\n\n const method = objectPassed ? args[0].method : (args[0] as Method)\n const url = objectPassed ? args[0].url : (args[1] as string)\n const options = (objectPassed ? args[1] : args[2]) ?? {}\n\n setDefaultsCalledInOnSuccess.current = false\n\n const _options: VisitOptions = {\n ...options,\n onCancelToken: (token) => {\n cancelToken.current = token\n\n if (options.onCancelToken) {\n return options.onCancelToken(token)\n }\n },\n onBefore: (visit) => {\n setWasSuccessful(false)\n setRecentlySuccessful(false)\n clearTimeout(recentlySuccessfulTimeoutId.current)\n\n if (options.onBefore) {\n return options.onBefore(visit)\n }\n },\n onStart: (visit) => {\n setProcessing(true)\n\n if (options.onStart) {\n return options.onStart(visit)\n }\n },\n onProgress: (event) => {\n setProgress(event || null)\n\n if (options.onProgress) {\n return options.onProgress(event)\n }\n },\n onSuccess: async (page) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors({} as FormDataErrors<TForm>)\n setHasErrors(false)\n setWasSuccessful(true)\n setRecentlySuccessful(true)\n recentlySuccessfulTimeoutId.current = setTimeout(() => {\n if (isMounted.current) {\n setRecentlySuccessful(false)\n }\n }, config.get('form.recentlySuccessfulDuration'))\n }\n\n const onSuccess = options.onSuccess ? await options.onSuccess(page) : null\n\n if (isMounted.current && !setDefaultsCalledInOnSuccess.current) {\n setData((data) => {\n setDefaults(cloneDeep(data))\n return data\n })\n }\n\n return onSuccess\n },\n onError: (errors) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors(errors as FormDataErrors<TForm>)\n setHasErrors(true)\n }\n\n if (options.onError) {\n return options.onError(errors)\n }\n },\n onCancel: () => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n if (options.onCancel) {\n return options.onCancel()\n }\n },\n onFinish: (visit) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n cancelToken.current = null\n\n if (options.onFinish) {\n return options.onFinish(visit)\n }\n },\n }\n\n const transformedData = transform.current(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 [data, setErrors, transform],\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 [dataAsDefaults, setDataAsDefaults] = useState(false)\n\n const dataRef = useRef(data)\n\n useEffect(() => {\n dataRef.current = data\n })\n\n const setDefaultsFunction = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) => {\n setDefaultsCalledInOnSuccess.current = true\n\n if (typeof fieldOrFields === 'undefined') {\n setDefaults(dataRef.current)\n // If setData was called right before setDefaults, data was not\n // updated in that render yet, so we set a flag to update\n // defaults right after the next render.\n setDataAsDefaults(true)\n } else {\n setDefaults((defaults) => {\n return typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign(cloneDeep(defaults), fieldOrFields)\n })\n }\n },\n [setDefaults],\n )\n\n useIsomorphicLayoutEffect(() => {\n if (!dataAsDefaults) {\n return\n }\n\n if (isDirty) {\n // Data has been updated in this next render and is different from\n // the defaults, so now we can set defaults to the current data.\n setDefaults(data)\n }\n\n setDataAsDefaults(false)\n }, [dataAsDefaults])\n\n const reset = useCallback(\n (...fields: string[]) => {\n if (fields.length === 0) {\n setData(defaults)\n } else {\n setData((data) =>\n (fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(defaults, key))\n .reduce(\n (carry, key) => {\n return set(carry, key, get(defaults, key))\n },\n { ...data } as TForm,\n ),\n )\n }\n },\n [setData, defaults],\n )\n\n const setError = useCallback(\n (fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: string) => {\n setErrors((errors) => {\n const newErrors = {\n ...errors,\n ...(typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields),\n }\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\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 setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors as FormDataErrors<TForm>\n })\n },\n [setErrors, setHasErrors],\n )\n\n const resetAndClearErrors = useCallback(\n (...fields: string[]) => {\n reset(...fields)\n clearErrors(...fields)\n },\n [reset, clearErrors],\n )\n\n const createSubmitMethod =\n (method: Method) =>\n (url: string, options: VisitOptions = {}) => {\n submit(method, url, options)\n }\n const getMethod = useCallback(createSubmitMethod('get'), [submit])\n const post = useCallback(createSubmitMethod('post'), [submit])\n const put = useCallback(createSubmitMethod('put'), [submit])\n const patch = useCallback(createSubmitMethod('patch'), [submit])\n const deleteMethod = useCallback(createSubmitMethod('delete'), [submit])\n\n const cancel = useCallback(() => {\n if (cancelToken.current) {\n cancelToken.current.cancel()\n }\n }, [])\n\n const transformFunction = useCallback((callback: TransformCallback<TForm>) => {\n transform.current = callback\n }, [])\n\n return {\n data,\n setData: setDataFunction,\n isDirty,\n errors,\n hasErrors,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n transform: transformFunction,\n setDefaults: setDefaultsFunction,\n reset,\n setError,\n clearErrors,\n resetAndClearErrors,\n submit,\n get: getMethod,\n post,\n put,\n patch,\n delete: deleteMethod,\n cancel,\n }\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 { router } from '@inertiajs/core'\nimport { Dispatch, SetStateAction, useEffect, useState } from 'react'\n\nexport default function useRemember<State>(\n initialState: State,\n key?: 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 router.remember(state, key)\n }, [state, key])\n\n return [state, setState]\n}\n", "import { escape } from 'lodash-es'\nimport React, { FunctionComponent, ReactElement, ReactNode, useContext, 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 = useContext(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 [provider.preferredAttribute()]: 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 ${provider.preferredAttribute()}>${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 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'\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 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 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 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 [loadingPrevious, setLoadingPrevious] = useState(false)\n const [loadingNext, setLoadingNext] = useState(false)\n const [requestCount, setRequestCount] = useState(0)\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 })\n\n callbackPropsRef.current = {\n buffer,\n onlyNext,\n onlyPrevious,\n reverse,\n preserveUrl,\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 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\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 setRequestCount(infiniteScrollInstance.dataManager.getRequestCount())\n },\n onCompleteNextRequest: () => {\n setLoadingNext(false)\n setRequestCount(infiniteScrollInstance.dataManager.getRequestCount())\n },\n })\n\n setInfiniteScroll(infiniteScrollInstance)\n const { dataManager, elementManager } = infiniteScrollInstance\n\n setRequestCount(dataManager.getRequestCount())\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: dataManager?.hasPrevious() ?? false,\n hasNext: dataManager?.hasNext() ?? false,\n }\n\n const exposedPrevious: InfiniteScrollActionSlotProps = {\n loading: loadingPrevious,\n fetch: dataManager?.fetchPrevious ?? (() => {}),\n autoMode: headerAutoMode,\n manualMode: !headerAutoMode,\n hasMore: dataManager?.hasPrevious() ?? false,\n ...sharedExposed,\n }\n\n const exposedNext: InfiniteScrollActionSlotProps = {\n loading: loadingNext,\n fetch: dataManager?.fetchNext ?? (() => {}),\n autoMode: footerAutoMode,\n manualMode: !footerAutoMode,\n hasMore: dataManager?.hasNext() ?? false,\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 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 ...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 _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 }),\n [_data, _method, preserveScroll, preserveState, preserveUrl, replace, only, except, headers, async],\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 event.preventDefault()\n router.visit(url, visitParams)\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 { 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 { createElement, ReactNode, useCallback, useEffect, useRef, useState } from 'react'\n\ninterface WhenVisibleProps {\n children: ReactNode | (() => 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 [loaded, setLoaded] = useState(false)\n const hasFetched = useRef<boolean>(false)\n const fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n\n const getReloadParams = useCallback<() => Partial<ReloadOptions>>(() => {\n if (data) {\n return {\n only: (Array.isArray(data) ? data : [data]) as string[],\n }\n }\n\n if (!params) {\n throw new Error('You must provide either a `data` or `params` prop.')\n }\n\n return params\n }, [params, data])\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (!always && hasFetched.current) {\n observer.disconnect()\n }\n\n if (fetching.current) {\n return\n }\n\n hasFetched.current = true\n fetching.current = true\n\n const reloadParams = getReloadParams()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.current = true\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n setLoaded(true)\n fetching.current = false\n reloadParams.onFinish?.(e)\n\n if (!always) {\n observer.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.observe(ref.current)\n\n return () => {\n observer.disconnect()\n }\n }, [ref, getReloadParams, buffer])\n\n const resolveChildren = () => (typeof children === 'function' ? children() : 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": ["Progress", "router", "createElement", "createContext", "current", "children", "progress", "router", "createElement", "useEffect", "useMemo", "useState", "useState", "useMemo", "useEffect", "router", "isEqual", "createElement", "useEffect", "useMemo", "useRef", "useState", "router", "useEffect", "useMemo", "useState", "useEffect", "router", "useEffect", "useState", "useState", "progress", "data", "useMemo", "useEffect", "errors", "router", "defaults", "useRef", "useMemo", "useState", "isEqual", "useEffect", "createElement", "React", "useContext", "useEffect", "useMemo", "useContext", "useMemo", "useEffect", "children", "React", "React", "createElement", "forwardRef", "useCallback", "useEffect", "useImperativeHandle", "useMemo", "useRef", "useState", "dataManager", "elementManager", "isUrlMethodPair", "mergeDataIntoQueryString", "router", "createElement", "forwardRef", "useEffect", "useMemo", "useRef", "useState", "noop", "forwardRef", "useState", "useRef", "useMemo", "isUrlMethodPair", "mergeDataIntoQueryString", "router", "useEffect", "createElement", "router", "useEffect", "useRef", "router", "useEffect", "useState", "router", "createElement", "useCallback", "useEffect", "useRef", "useState", "Progress", "router"]
3
+ "sources": ["../src/index.ts", "../src/App.ts", "../src/HeadContext.ts", "../src/PageContext.ts", "../src/createInertiaApp.ts", "../src/Deferred.ts", "../src/usePage.ts", "../src/Form.ts", "../src/useForm.ts", "../src/react.ts", "../src/useRemember.ts", "../src/Head.ts", "../src/InfiniteScroll.ts", "../src/Link.ts", "../src/usePoll.ts", "../src/usePrefetch.ts", "../src/WhenVisible.ts"],
4
+ "sourcesContent": ["import { config as coreConfig, progress as Progress, router as Router } from '@inertiajs/core'\nimport { ReactInertiaAppConfig } from './types'\n\nexport const progress = Progress\nexport const router = Router\nexport { default as App } from './App'\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './Deferred'\nexport { default as Form } from './Form'\nexport { default as Head } from './Head'\nexport { default as InfiniteScroll } from './InfiniteScroll'\nexport { InertiaLinkProps, default as Link } from './Link'\nexport { ReactComponent as ResolvedComponent } from './types'\nexport {\n InertiaFormProps,\n SetDataAction,\n SetDataByKeyValuePair,\n SetDataByMethod,\n SetDataByObject,\n default as useForm,\n} from './useForm'\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 Page,\n PageHandler,\n PageProps,\n router,\n} from '@inertiajs/core'\nimport { createElement, FunctionComponent, ReactNode, useEffect, useMemo, useState } from 'react'\nimport HeadContext from './HeadContext'\nimport PageContext from './PageContext'\nimport { LayoutFunction, ReactComponent, ReactPageHandlerArgs } from './types'\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) => ReactComponent | Promise<ReactComponent>\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdateCallback\n}\n\nexport type InertiaApp = FunctionComponent<InertiaAppProps>\n\nexport default function App<SharedProps extends PageProps = PageProps>({\n children,\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n}: InertiaAppProps<SharedProps>) {\n const [current, setCurrent] = useState<CurrentPage>({\n component: initialComponent || null,\n page: initialPage,\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 if (!routerIsInitialized) {\n router.init<ReactComponent>({\n initialPage,\n resolveComponent: resolveComponent!,\n swapComponent: async (args) => swapComponent(args),\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 setCurrent((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\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 (typeof Component.layout === 'function') {\n return (Component.layout as LayoutFunction)(child)\n }\n\n if (Array.isArray(Component.layout)) {\n return (Component.layout as any)\n .concat(child)\n .reverse()\n .reduce((children: any, Layout: any) => createElement(Layout, { children, ...props }))\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 { 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 CreateInertiaAppOptionsForCSR,\n CreateInertiaAppOptionsForSSR,\n InertiaAppResponse,\n InertiaAppSSRResponse,\n PageProps,\n router,\n setupProgress,\n} from '@inertiajs/core'\nimport { ReactElement, createElement } from 'react'\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\n// The 'unknown' type is necessary for backwards compatibility...\ntype ComponentResolver = (\n name: string,\n) => ReactComponent | Promise<ReactComponent> | { default: ReactComponent } | unknown\n\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForCSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<HTMLElement, SharedProps>,\n void,\n ReactInertiaAppConfig\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}\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<void>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<InertiaAppSSRResponse>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>({\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n defaults = {},\n}: InertiaAppOptionsForCSR<SharedProps> | InertiaAppOptionsForSSR<SharedProps>): InertiaAppResponse {\n config.replace(defaults)\n\n const isServer = typeof window === 'undefined'\n const el = isServer ? null : document.getElementById(id)\n const initialPage = page || JSON.parse(el?.dataset.page || '{}')\n\n // @ts-expect-error - This can be improved once we remove the 'unknown' type from the resolver...\n const resolveComponent = (name) => Promise.resolve(resolve(name)).then((module) => module.default || module)\n\n let head: string[] = []\n\n const reactApp = await Promise.all([\n resolveComponent(initialPage.component),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n const props = {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n }\n\n if (isServer) {\n const ssrSetup = setup as (options: SetupOptions<null, SharedProps>) => ReactElement\n\n return ssrSetup({\n el: null,\n App,\n props: { ...props, onHeadUpdate: (elements: string[]) => (head = elements) },\n })\n }\n\n const csrSetup = setup as (options: SetupOptions<HTMLElement, SharedProps>) => void\n\n return csrSetup({\n el: el as HTMLElement,\n App,\n props,\n })\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer && render) {\n const body = await render(\n createElement(\n 'div',\n {\n id,\n 'data-page': JSON.stringify(initialPage),\n },\n reactApp as ReactElement,\n ),\n )\n\n return { head, body }\n }\n}\n", "import { ReactNode, useEffect, useMemo, useState } from 'react'\nimport { router } from '.'\nimport usePage from './usePage'\n\nconst urlWithoutHash = (url: URL | Location): URL => {\n url = new URL(url.href)\n url.hash = ''\n\n return url\n}\n\nconst isSameUrlWithoutHash = (url1: URL | Location, url2: URL | Location): boolean => {\n return urlWithoutHash(url1).href === urlWithoutHash(url2).href\n}\n\ninterface DeferredProps {\n children: ReactNode | (() => 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 pageProps = usePage().props\n const keys = useMemo(() => (Array.isArray(data) ? data : [data]), [data])\n\n useEffect(() => {\n const removeListener = router.on('start', (e) => {\n const isPartialVisit = e.detail.visit.only.length > 0 || e.detail.visit.except.length > 0\n const isReloadingKey = e.detail.visit.only.find((key) => keys.includes(key))\n\n if (isSameUrlWithoutHash(e.detail.visit.url, window.location) && (!isPartialVisit || isReloadingKey)) {\n setLoaded(false)\n }\n })\n\n return () => {\n removeListener()\n }\n }, [])\n\n useEffect(() => {\n setLoaded(keys.every((key) => pageProps[key] !== undefined))\n }, [pageProps, keys])\n\n if (loaded) {\n return typeof children === 'function' ? children() : 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 React from 'react'\nimport PageContext from './PageContext'\n\nexport default function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps & SharedPageProps> {\n // React.use() was introduced in React 19, fallback to React.useContext() for earlier versions\n const page = typeof React.use === 'function' ? React.use(PageContext) : React.useContext(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 FormComponentProps,\n FormComponentRef,\n FormComponentSlotProps,\n FormDataConvertible,\n formDataToObject,\n isUrlMethodPair,\n mergeDataIntoQueryString,\n Method,\n resetFormFields,\n VisitOptions,\n} from '@inertiajs/core'\nimport { isEqual } from 'lodash-es'\nimport React, {\n createElement,\n FormEvent,\n forwardRef,\n ReactNode,\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 ComponentProps = (FormComponentProps &\n Omit<React.FormHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> &\n Omit<React.AllHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'>) & {\n children: ReactNode | ((props: FormComponentSlotProps) => ReactNode)\n}\n\ntype FormSubmitOptions = Omit<VisitOptions, 'data' | 'onPrefetched' | 'onPrefetching'>\n\nconst noop = () => undefined\n\nconst Form = forwardRef<FormComponentRef, ComponentProps>(\n (\n {\n action = '',\n method = 'get',\n headers = {},\n queryStringArrayFormat = 'brackets',\n errorBag = null,\n showProgress = true,\n transform = (data) => data,\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 children,\n ...props\n },\n ref,\n ) => {\n const form = useForm<Record<string, any>>({})\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 [isDirty, setIsDirty] = useState(false)\n const defaultData = useRef<FormData>(new FormData())\n\n const getFormData = (): FormData => new FormData(formElement.current)\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 = (): Record<string, FormDataConvertible> => formDataToObject(getFormData())\n\n const updateDirtyState = (event: Event) =>\n deferStateUpdate(() =>\n setIsDirty(event.type === 'reset' ? false : !isEqual(getData(), formDataToObject(defaultData.current))),\n )\n\n useEffect(() => {\n defaultData.current = getFormData()\n\n const formEvents: Array<keyof HTMLElementEventMap> = ['input', 'change', 'reset']\n\n formEvents.forEach((e) => formElement.current!.addEventListener(e, updateDirtyState))\n\n return () => formEvents.forEach((e) => formElement.current?.removeEventListener(e, updateDirtyState))\n }, [])\n\n const reset = (...fields: string[]) => {\n if (formElement.current) {\n resetFormFields(formElement.current, defaultData.current, fields)\n }\n }\n\n const resetAndClearErrors = (...fields: string[]) => {\n form.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 = () => {\n const [url, _data] = mergeDataIntoQueryString(\n resolvedMethod,\n isUrlMethodPair(action) ? action.url : action,\n getData(),\n queryStringArrayFormat,\n )\n\n const submitOptions: FormSubmitOptions = {\n headers,\n queryStringArrayFormat,\n errorBag,\n showProgress,\n invalidateCacheTags,\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 form.transform(() => transform(_data))\n form.submit(resolvedMethod, url, submitOptions)\n }\n\n const defaults = () => {\n defaultData.current = getFormData()\n setIsDirty(false)\n }\n\n const exposed = () => ({\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: form.clearErrors,\n resetAndClearErrors,\n setError: form.setError,\n reset,\n submit,\n defaults,\n getData,\n getFormData,\n })\n\n useImperativeHandle(ref, exposed, [form, isDirty, submit])\n\n return 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()\n },\n // Only React 19 supports passing a boolean to the `inert` attribute.\n // To support earlier versions as well, we use the string 'true'.\n // Unfortunately, React 19 treats an empty string as `false`.\n // See: https://github.com/inertiajs/inertia/pull/2536\n inert: disableWhileProcessing && form.processing && 'true',\n },\n typeof children === 'function' ? children(exposed()) : children,\n )\n },\n)\n\nForm.displayName = 'InertiaForm'\n\nexport default Form\n", "import {\n CancelToken,\n Errors,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n Method,\n Progress,\n RequestPayload,\n router,\n UrlMethodPair,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep, get, has, isEqual, set } from 'lodash-es'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { config } from '.'\nimport { useIsomorphicLayoutEffect } from './react'\nimport useRemember from './useRemember'\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 FormOptions = Omit<VisitOptions, 'data'>\ntype SubmitArgs = [Method, string, FormOptions?] | [UrlMethodPair, FormOptions?]\ntype TransformCallback<TForm> = (data: TForm) => object\n\nexport interface InertiaFormProps<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: TransformCallback<TForm>) => void\n setDefaults(): void\n setDefaults<T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n setDefaults(fields: Partial<TForm>): void\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<K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n setError(errors: FormDataErrors<TForm>): void\n submit: (...args: SubmitArgs) => void\n get: (url: string, options?: FormOptions) => void\n patch: (url: string, options?: FormOptions) => void\n post: (url: string, options?: FormOptions) => void\n put: (url: string, options?: FormOptions) => void\n delete: (url: string, options?: FormOptions) => void\n cancel: () => void\n}\nexport default function useForm<TForm extends FormDataType<TForm>>(\n initialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKey: string,\n initialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKeyOrInitialValues?: string | TForm | (() => TForm),\n maybeInitialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm> {\n const isMounted = useRef(false)\n const rememberKey = typeof rememberKeyOrInitialValues === 'string' ? rememberKeyOrInitialValues : null\n const [defaults, setDefaults] = useState(\n (typeof rememberKeyOrInitialValues === 'string' ? maybeInitialValues : rememberKeyOrInitialValues) || ({} as TForm),\n )\n const cancelToken = useRef<CancelToken | null>(null)\n const recentlySuccessfulTimeoutId = useRef<number>(undefined)\n const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`) : useState(defaults)\n const [errors, setErrors] = rememberKey\n ? useRemember({} as FormDataErrors<TForm>, `${rememberKey}:errors`)\n : useState({} as FormDataErrors<TForm>)\n const [hasErrors, setHasErrors] = useState(false)\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 const transform = useRef<TransformCallback<TForm>>((data) => data)\n const isDirty = useMemo(() => !isEqual(data, defaults), [data, defaults])\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n // Track if setDefaults was called manually during onSuccess to avoid\n // overriding user's custom defaults with automatic behavior.\n const setDefaultsCalledInOnSuccess = useRef(false)\n\n const submit = useCallback(\n (...args: SubmitArgs) => {\n const objectPassed = args[0] !== null && typeof args[0] === 'object'\n\n const method = objectPassed ? args[0].method : (args[0] as Method)\n const url = objectPassed ? args[0].url : (args[1] as string)\n const options = (objectPassed ? args[1] : args[2]) ?? {}\n\n setDefaultsCalledInOnSuccess.current = false\n\n const _options: VisitOptions = {\n ...options,\n onCancelToken: (token) => {\n cancelToken.current = token\n\n if (options.onCancelToken) {\n return options.onCancelToken(token)\n }\n },\n onBefore: (visit) => {\n setWasSuccessful(false)\n setRecentlySuccessful(false)\n clearTimeout(recentlySuccessfulTimeoutId.current)\n\n if (options.onBefore) {\n return options.onBefore(visit)\n }\n },\n onStart: (visit) => {\n setProcessing(true)\n\n if (options.onStart) {\n return options.onStart(visit)\n }\n },\n onProgress: (event) => {\n setProgress(event || null)\n\n if (options.onProgress) {\n return options.onProgress(event)\n }\n },\n onSuccess: async (page) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors({} as FormDataErrors<TForm>)\n setHasErrors(false)\n setWasSuccessful(true)\n setRecentlySuccessful(true)\n recentlySuccessfulTimeoutId.current = setTimeout(() => {\n if (isMounted.current) {\n setRecentlySuccessful(false)\n }\n }, config.get('form.recentlySuccessfulDuration'))\n }\n\n const onSuccess = options.onSuccess ? await options.onSuccess(page) : null\n\n if (isMounted.current && !setDefaultsCalledInOnSuccess.current) {\n setData((data) => {\n setDefaults(cloneDeep(data))\n return data\n })\n }\n\n return onSuccess\n },\n onError: (errors) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors(errors as FormDataErrors<TForm>)\n setHasErrors(true)\n }\n\n if (options.onError) {\n return options.onError(errors)\n }\n },\n onCancel: () => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n if (options.onCancel) {\n return options.onCancel()\n }\n },\n onFinish: (visit) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n cancelToken.current = null\n\n if (options.onFinish) {\n return options.onFinish(visit)\n }\n },\n }\n\n const transformedData = transform.current(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 [data, setErrors, transform],\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 [dataAsDefaults, setDataAsDefaults] = useState(false)\n\n const dataRef = useRef(data)\n\n useEffect(() => {\n dataRef.current = data\n })\n\n const setDefaultsFunction = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) => {\n setDefaultsCalledInOnSuccess.current = true\n\n if (typeof fieldOrFields === 'undefined') {\n setDefaults(dataRef.current)\n // If setData was called right before setDefaults, data was not\n // updated in that render yet, so we set a flag to update\n // defaults right after the next render.\n setDataAsDefaults(true)\n } else {\n setDefaults((defaults) => {\n return typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign(cloneDeep(defaults), fieldOrFields)\n })\n }\n },\n [setDefaults],\n )\n\n useIsomorphicLayoutEffect(() => {\n if (!dataAsDefaults) {\n return\n }\n\n if (isDirty) {\n // Data has been updated in this next render and is different from\n // the defaults, so now we can set defaults to the current data.\n setDefaults(data)\n }\n\n setDataAsDefaults(false)\n }, [dataAsDefaults])\n\n const reset = useCallback(\n (...fields: string[]) => {\n if (fields.length === 0) {\n setData(defaults)\n } else {\n setData((data) =>\n (fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(defaults, key))\n .reduce(\n (carry, key) => {\n return set(carry, key, get(defaults, key))\n },\n { ...data } as TForm,\n ),\n )\n }\n },\n [setData, defaults],\n )\n\n const setError = useCallback(\n (fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: string) => {\n setErrors((errors) => {\n const newErrors = {\n ...errors,\n ...(typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields),\n }\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\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 setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors as FormDataErrors<TForm>\n })\n },\n [setErrors, setHasErrors],\n )\n\n const resetAndClearErrors = useCallback(\n (...fields: string[]) => {\n reset(...fields)\n clearErrors(...fields)\n },\n [reset, clearErrors],\n )\n\n const createSubmitMethod =\n (method: Method) =>\n (url: string, options: VisitOptions = {}) => {\n submit(method, url, options)\n }\n const getMethod = useCallback(createSubmitMethod('get'), [submit])\n const post = useCallback(createSubmitMethod('post'), [submit])\n const put = useCallback(createSubmitMethod('put'), [submit])\n const patch = useCallback(createSubmitMethod('patch'), [submit])\n const deleteMethod = useCallback(createSubmitMethod('delete'), [submit])\n\n const cancel = useCallback(() => {\n if (cancelToken.current) {\n cancelToken.current.cancel()\n }\n }, [])\n\n const transformFunction = useCallback((callback: TransformCallback<TForm>) => {\n transform.current = callback\n }, [])\n\n return {\n data,\n setData: setDataFunction,\n isDirty,\n errors,\n hasErrors,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n transform: transformFunction,\n setDefaults: setDefaultsFunction,\n reset,\n setError,\n clearErrors,\n resetAndClearErrors,\n submit,\n get: getMethod,\n post,\n put,\n patch,\n delete: deleteMethod,\n cancel,\n }\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 { router } from '@inertiajs/core'\nimport { Dispatch, SetStateAction, useEffect, useState } from 'react'\n\nexport default function useRemember<State>(\n initialState: State,\n key?: 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 router.remember(state, key)\n }, [state, key])\n\n return [state, setState]\n}\n", "import { escape } from 'lodash-es'\nimport React, { FunctionComponent, ReactElement, ReactNode, useContext, 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 = useContext(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 [provider.preferredAttribute()]: 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 ${provider.preferredAttribute()}>${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 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'\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 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 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 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 [loadingPrevious, setLoadingPrevious] = useState(false)\n const [loadingNext, setLoadingNext] = useState(false)\n const [requestCount, setRequestCount] = useState(0)\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 })\n\n callbackPropsRef.current = {\n buffer,\n onlyNext,\n onlyPrevious,\n reverse,\n preserveUrl,\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 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\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 setRequestCount(infiniteScrollInstance.dataManager.getRequestCount())\n },\n onCompleteNextRequest: () => {\n setLoadingNext(false)\n setRequestCount(infiniteScrollInstance.dataManager.getRequestCount())\n },\n })\n\n setInfiniteScroll(infiniteScrollInstance)\n const { dataManager, elementManager } = infiniteScrollInstance\n\n setRequestCount(dataManager.getRequestCount())\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: dataManager?.hasPrevious() ?? false,\n hasNext: dataManager?.hasNext() ?? false,\n }\n\n const exposedPrevious: InfiniteScrollActionSlotProps = {\n loading: loadingPrevious,\n fetch: dataManager?.fetchPrevious ?? (() => {}),\n autoMode: headerAutoMode,\n manualMode: !headerAutoMode,\n hasMore: dataManager?.hasPrevious() ?? false,\n ...sharedExposed,\n }\n\n const exposedNext: InfiniteScrollActionSlotProps = {\n loading: loadingNext,\n fetch: dataManager?.fetchNext ?? (() => {}),\n autoMode: footerAutoMode,\n manualMode: !footerAutoMode,\n hasMore: dataManager?.hasNext() ?? false,\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 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 ...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 _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 }),\n [_data, _method, preserveScroll, preserveState, preserveUrl, replace, only, except, headers, async],\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 { 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 { createElement, ReactNode, useCallback, useEffect, useRef, useState } from 'react'\n\ninterface WhenVisibleProps {\n children: ReactNode | (() => 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 [loaded, setLoaded] = useState(false)\n const hasFetched = useRef<boolean>(false)\n const fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n\n const getReloadParams = useCallback<() => Partial<ReloadOptions>>(() => {\n if (data) {\n return {\n only: (Array.isArray(data) ? data : [data]) as string[],\n }\n }\n\n if (!params) {\n throw new Error('You must provide either a `data` or `params` prop.')\n }\n\n return params\n }, [params, data])\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (!always && hasFetched.current) {\n observer.disconnect()\n }\n\n if (fetching.current) {\n return\n }\n\n hasFetched.current = true\n fetching.current = true\n\n const reloadParams = getReloadParams()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.current = true\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n setLoaded(true)\n fetching.current = false\n reloadParams.onFinish?.(e)\n\n if (!always) {\n observer.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.observe(ref.current)\n\n return () => {\n observer.disconnect()\n }\n }, [ref, getReloadParams, buffer])\n\n const resolveChildren = () => (typeof children === 'function' ? children() : 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": ["Progress", "createContext", "current", "children", "router", "createElement", "progress", "router", "createElement", "useEffect", "useMemo", "useState", "useState", "useMemo", "useEffect", "router", "isEqual", "React", "createElement", "useEffect", "useMemo", "useRef", "useState", "router", "useEffect", "useMemo", "useState", "useEffect", "router", "useEffect", "useState", "useState", "progress", "data", "useMemo", "useEffect", "errors", "router", "defaults", "React", "useRef", "useMemo", "useState", "isEqual", "useEffect", "createElement", "React", "useEffect", "useMemo", "useMemo", "useEffect", "children", "React", "React", "createElement", "forwardRef", "useCallback", "useEffect", "useImperativeHandle", "useMemo", "useRef", "useState", "dataManager", "elementManager", "isUrlMethodPair", "mergeDataIntoQueryString", "router", "createElement", "forwardRef", "useEffect", "useMemo", "useRef", "useState", "noop", "forwardRef", "useState", "useRef", "useMemo", "isUrlMethodPair", "mergeDataIntoQueryString", "router", "useEffect", "createElement", "router", "useEffect", "useRef", "router", "useEffect", "useState", "router", "createElement", "useCallback", "useEffect", "useRef", "useState", "Progress", "router"]
7
7
  }
package/dist/index.js CHANGED
@@ -30,6 +30,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // src/index.ts
31
31
  var index_exports = {};
32
32
  __export(index_exports, {
33
+ App: () => App,
33
34
  Deferred: () => Deferred_default,
34
35
  Form: () => Form_default,
35
36
  Head: () => Head_default,
@@ -49,10 +50,6 @@ __export(index_exports, {
49
50
  module.exports = __toCommonJS(index_exports);
50
51
  var import_core11 = require("@inertiajs/core");
51
52
 
52
- // src/createInertiaApp.ts
53
- var import_core2 = require("@inertiajs/core");
54
- var import_react4 = require("react");
55
-
56
53
  // src/App.ts
57
54
  var import_core = require("@inertiajs/core");
58
55
  var import_react3 = require("react");
@@ -152,6 +149,8 @@ function App({
152
149
  App.displayName = "Inertia";
153
150
 
154
151
  // src/createInertiaApp.ts
152
+ var import_core2 = require("@inertiajs/core");
153
+ var import_react4 = require("react");
155
154
  async function createInertiaApp({
156
155
  id = "app",
157
156
  resolve,
@@ -216,9 +215,9 @@ async function createInertiaApp({
216
215
  var import_react6 = require("react");
217
216
 
218
217
  // src/usePage.ts
219
- var import_react5 = require("react");
218
+ var import_react5 = __toESM(require("react"), 1);
220
219
  function usePage() {
221
- const page = (0, import_react5.useContext)(PageContext_default);
220
+ const page = typeof import_react5.default.use === "function" ? import_react5.default.use(PageContext_default) : import_react5.default.useContext(PageContext_default);
222
221
  if (!page) {
223
222
  throw new Error("usePage must be used within the Inertia component");
224
223
  }
@@ -630,6 +629,7 @@ var Form = (0, import_react11.forwardRef)(
630
629
  );
631
630
  const submitOptions = {
632
631
  headers,
632
+ queryStringArrayFormat,
633
633
  errorBag,
634
634
  showProgress,
635
635
  invalidateCacheTags,
@@ -1208,8 +1208,10 @@ var Link = (0, import_react14.forwardRef)(
1208
1208
  }
1209
1209
  },
1210
1210
  onMouseUp: (event) => {
1211
- event.preventDefault();
1212
- import_core7.router.visit(url, visitParams);
1211
+ if ((0, import_core7.shouldIntercept)(event)) {
1212
+ event.preventDefault();
1213
+ import_core7.router.visit(url, visitParams);
1214
+ }
1213
1215
  },
1214
1216
  onKeyUp: (event) => {
1215
1217
  if ((0, import_core7.shouldNavigate)(event)) {
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/index.ts", "../src/createInertiaApp.ts", "../src/App.ts", "../src/HeadContext.ts", "../src/PageContext.ts", "../src/Deferred.ts", "../src/usePage.ts", "../src/Form.ts", "../src/useForm.ts", "../src/react.ts", "../src/useRemember.ts", "../src/Head.ts", "../src/InfiniteScroll.ts", "../src/Link.ts", "../src/usePoll.ts", "../src/usePrefetch.ts", "../src/WhenVisible.ts"],
4
- "sourcesContent": ["import { config as coreConfig, progress as Progress, router as Router } from '@inertiajs/core'\nimport { ReactInertiaAppConfig } from './types'\n\nexport const progress = Progress\nexport const router = Router\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './Deferred'\nexport { default as Form } from './Form'\nexport { default as Head } from './Head'\nexport { default as InfiniteScroll } from './InfiniteScroll'\nexport { InertiaLinkProps, default as Link } from './Link'\nexport {\n InertiaFormProps,\n SetDataAction,\n SetDataByKeyValuePair,\n SetDataByMethod,\n SetDataByObject,\n default as useForm,\n} from './useForm'\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 CreateInertiaAppOptionsForCSR,\n CreateInertiaAppOptionsForSSR,\n InertiaAppResponse,\n InertiaAppSSRResponse,\n PageProps,\n router,\n setupProgress,\n} from '@inertiajs/core'\nimport { ReactElement, createElement } from 'react'\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\n// The 'unknown' type is necessary for backwards compatibility...\ntype ComponentResolver = (\n name: string,\n) => ReactComponent | Promise<ReactComponent> | { default: ReactComponent } | unknown\n\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForCSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<HTMLElement, SharedProps>,\n void,\n ReactInertiaAppConfig\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}\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<void>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<InertiaAppSSRResponse>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>({\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n defaults = {},\n}: InertiaAppOptionsForCSR<SharedProps> | InertiaAppOptionsForSSR<SharedProps>): InertiaAppResponse {\n config.replace(defaults)\n\n const isServer = typeof window === 'undefined'\n const el = isServer ? null : document.getElementById(id)\n const initialPage = page || JSON.parse(el?.dataset.page || '{}')\n\n // @ts-expect-error - This can be improved once we remove the 'unknown' type from the resolver...\n const resolveComponent = (name) => Promise.resolve(resolve(name)).then((module) => module.default || module)\n\n let head: string[] = []\n\n const reactApp = await Promise.all([\n resolveComponent(initialPage.component),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n const props = {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n }\n\n if (isServer) {\n const ssrSetup = setup as (options: SetupOptions<null, SharedProps>) => ReactElement\n\n return ssrSetup({\n el: null,\n App,\n props: { ...props, onHeadUpdate: (elements: string[]) => (head = elements) },\n })\n }\n\n const csrSetup = setup as (options: SetupOptions<HTMLElement, SharedProps>) => void\n\n return csrSetup({\n el: el as HTMLElement,\n App,\n props,\n })\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer && render) {\n const body = await render(\n createElement(\n 'div',\n {\n id,\n 'data-page': JSON.stringify(initialPage),\n },\n reactApp as ReactElement,\n ),\n )\n\n return { head, body }\n }\n}\n", "import {\n createHeadManager,\n HeadManagerOnUpdateCallback,\n HeadManagerTitleCallback,\n Page,\n PageHandler,\n PageProps,\n router,\n} from '@inertiajs/core'\nimport { createElement, FunctionComponent, ReactNode, useEffect, useMemo, useState } from 'react'\nimport HeadContext from './HeadContext'\nimport PageContext from './PageContext'\nimport { LayoutFunction, ReactComponent, ReactPageHandlerArgs } from './types'\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) => ReactComponent | Promise<ReactComponent>\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdateCallback\n}\n\nexport type InertiaApp = FunctionComponent<InertiaAppProps>\n\nexport default function App<SharedProps extends PageProps = PageProps>({\n children,\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n}: InertiaAppProps<SharedProps>) {\n const [current, setCurrent] = useState<CurrentPage>({\n component: initialComponent || null,\n page: initialPage,\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 if (!routerIsInitialized) {\n router.init<ReactComponent>({\n initialPage,\n resolveComponent: resolveComponent!,\n swapComponent: async (args) => swapComponent(args),\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 setCurrent((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\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 (typeof Component.layout === 'function') {\n return (Component.layout as LayoutFunction)(child)\n }\n\n if (Array.isArray(Component.layout)) {\n return (Component.layout as any)\n .concat(child)\n .reverse()\n .reduce((children: any, Layout: any) => createElement(Layout, { children, ...props }))\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 { Page } from '@inertiajs/core'\nimport { createContext } from 'react'\n\nconst pageContext = createContext<Page | null>(null)\npageContext.displayName = 'InertiaPageContext'\n\nexport default pageContext\n", "import { ReactNode, useEffect, useMemo, useState } from 'react'\nimport { router } from '.'\nimport usePage from './usePage'\n\nconst urlWithoutHash = (url: URL | Location): URL => {\n url = new URL(url.href)\n url.hash = ''\n\n return url\n}\n\nconst isSameUrlWithoutHash = (url1: URL | Location, url2: URL | Location): boolean => {\n return urlWithoutHash(url1).href === urlWithoutHash(url2).href\n}\n\ninterface DeferredProps {\n children: ReactNode | (() => 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 pageProps = usePage().props\n const keys = useMemo(() => (Array.isArray(data) ? data : [data]), [data])\n\n useEffect(() => {\n const removeListener = router.on('start', (e) => {\n const isPartialVisit = e.detail.visit.only.length > 0 || e.detail.visit.except.length > 0\n const isReloadingKey = e.detail.visit.only.find((key) => keys.includes(key))\n\n if (isSameUrlWithoutHash(e.detail.visit.url, window.location) && (!isPartialVisit || isReloadingKey)) {\n setLoaded(false)\n }\n })\n\n return () => {\n removeListener()\n }\n }, [])\n\n useEffect(() => {\n setLoaded(keys.every((key) => pageProps[key] !== undefined))\n }, [pageProps, keys])\n\n if (loaded) {\n return typeof children === 'function' ? children() : 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 { useContext } from 'react'\nimport PageContext from './PageContext'\n\nexport default function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps & SharedPageProps> {\n const page = useContext(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 FormComponentProps,\n FormComponentRef,\n FormComponentSlotProps,\n FormDataConvertible,\n formDataToObject,\n isUrlMethodPair,\n mergeDataIntoQueryString,\n Method,\n resetFormFields,\n VisitOptions,\n} from '@inertiajs/core'\nimport { isEqual } from 'lodash-es'\nimport React, {\n createElement,\n FormEvent,\n forwardRef,\n ReactNode,\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 ComponentProps = (FormComponentProps &\n Omit<React.FormHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> &\n Omit<React.AllHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'>) & {\n children: ReactNode | ((props: FormComponentSlotProps) => ReactNode)\n}\n\ntype FormSubmitOptions = Omit<VisitOptions, 'data' | 'onPrefetched' | 'onPrefetching'>\n\nconst noop = () => undefined\n\nconst Form = forwardRef<FormComponentRef, ComponentProps>(\n (\n {\n action = '',\n method = 'get',\n headers = {},\n queryStringArrayFormat = 'brackets',\n errorBag = null,\n showProgress = true,\n transform = (data) => data,\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 children,\n ...props\n },\n ref,\n ) => {\n const form = useForm<Record<string, any>>({})\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 [isDirty, setIsDirty] = useState(false)\n const defaultData = useRef<FormData>(new FormData())\n\n const getFormData = (): FormData => new FormData(formElement.current)\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 = (): Record<string, FormDataConvertible> => formDataToObject(getFormData())\n\n const updateDirtyState = (event: Event) =>\n deferStateUpdate(() =>\n setIsDirty(event.type === 'reset' ? false : !isEqual(getData(), formDataToObject(defaultData.current))),\n )\n\n useEffect(() => {\n defaultData.current = getFormData()\n\n const formEvents: Array<keyof HTMLElementEventMap> = ['input', 'change', 'reset']\n\n formEvents.forEach((e) => formElement.current!.addEventListener(e, updateDirtyState))\n\n return () => formEvents.forEach((e) => formElement.current?.removeEventListener(e, updateDirtyState))\n }, [])\n\n const reset = (...fields: string[]) => {\n if (formElement.current) {\n resetFormFields(formElement.current, defaultData.current, fields)\n }\n }\n\n const resetAndClearErrors = (...fields: string[]) => {\n form.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 = () => {\n const [url, _data] = mergeDataIntoQueryString(\n resolvedMethod,\n isUrlMethodPair(action) ? action.url : action,\n getData(),\n queryStringArrayFormat,\n )\n\n const submitOptions: FormSubmitOptions = {\n headers,\n errorBag,\n showProgress,\n invalidateCacheTags,\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 form.transform(() => transform(_data))\n form.submit(resolvedMethod, url, submitOptions)\n }\n\n const defaults = () => {\n defaultData.current = getFormData()\n setIsDirty(false)\n }\n\n const exposed = () => ({\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: form.clearErrors,\n resetAndClearErrors,\n setError: form.setError,\n reset,\n submit,\n defaults,\n getData,\n getFormData,\n })\n\n useImperativeHandle(ref, exposed, [form, isDirty, submit])\n\n return 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()\n },\n // Only React 19 supports passing a boolean to the `inert` attribute.\n // To support earlier versions as well, we use the string 'true'.\n // Unfortunately, React 19 treats an empty string as `false`.\n // See: https://github.com/inertiajs/inertia/pull/2536\n inert: disableWhileProcessing && form.processing && 'true',\n },\n typeof children === 'function' ? children(exposed()) : children,\n )\n },\n)\n\nForm.displayName = 'InertiaForm'\n\nexport default Form\n", "import {\n CancelToken,\n Errors,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n Method,\n Progress,\n RequestPayload,\n router,\n UrlMethodPair,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep, get, has, isEqual, set } from 'lodash-es'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { config } from '.'\nimport { useIsomorphicLayoutEffect } from './react'\nimport useRemember from './useRemember'\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 FormOptions = Omit<VisitOptions, 'data'>\ntype SubmitArgs = [Method, string, FormOptions?] | [UrlMethodPair, FormOptions?]\ntype TransformCallback<TForm> = (data: TForm) => object\n\nexport interface InertiaFormProps<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: TransformCallback<TForm>) => void\n setDefaults(): void\n setDefaults<T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n setDefaults(fields: Partial<TForm>): void\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<K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n setError(errors: FormDataErrors<TForm>): void\n submit: (...args: SubmitArgs) => void\n get: (url: string, options?: FormOptions) => void\n patch: (url: string, options?: FormOptions) => void\n post: (url: string, options?: FormOptions) => void\n put: (url: string, options?: FormOptions) => void\n delete: (url: string, options?: FormOptions) => void\n cancel: () => void\n}\nexport default function useForm<TForm extends FormDataType<TForm>>(\n initialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKey: string,\n initialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKeyOrInitialValues?: string | TForm | (() => TForm),\n maybeInitialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm> {\n const isMounted = useRef(false)\n const rememberKey = typeof rememberKeyOrInitialValues === 'string' ? rememberKeyOrInitialValues : null\n const [defaults, setDefaults] = useState(\n (typeof rememberKeyOrInitialValues === 'string' ? maybeInitialValues : rememberKeyOrInitialValues) || ({} as TForm),\n )\n const cancelToken = useRef<CancelToken | null>(null)\n const recentlySuccessfulTimeoutId = useRef<number>(undefined)\n const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`) : useState(defaults)\n const [errors, setErrors] = rememberKey\n ? useRemember({} as FormDataErrors<TForm>, `${rememberKey}:errors`)\n : useState({} as FormDataErrors<TForm>)\n const [hasErrors, setHasErrors] = useState(false)\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 const transform = useRef<TransformCallback<TForm>>((data) => data)\n const isDirty = useMemo(() => !isEqual(data, defaults), [data, defaults])\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n // Track if setDefaults was called manually during onSuccess to avoid\n // overriding user's custom defaults with automatic behavior.\n const setDefaultsCalledInOnSuccess = useRef(false)\n\n const submit = useCallback(\n (...args: SubmitArgs) => {\n const objectPassed = args[0] !== null && typeof args[0] === 'object'\n\n const method = objectPassed ? args[0].method : (args[0] as Method)\n const url = objectPassed ? args[0].url : (args[1] as string)\n const options = (objectPassed ? args[1] : args[2]) ?? {}\n\n setDefaultsCalledInOnSuccess.current = false\n\n const _options: VisitOptions = {\n ...options,\n onCancelToken: (token) => {\n cancelToken.current = token\n\n if (options.onCancelToken) {\n return options.onCancelToken(token)\n }\n },\n onBefore: (visit) => {\n setWasSuccessful(false)\n setRecentlySuccessful(false)\n clearTimeout(recentlySuccessfulTimeoutId.current)\n\n if (options.onBefore) {\n return options.onBefore(visit)\n }\n },\n onStart: (visit) => {\n setProcessing(true)\n\n if (options.onStart) {\n return options.onStart(visit)\n }\n },\n onProgress: (event) => {\n setProgress(event || null)\n\n if (options.onProgress) {\n return options.onProgress(event)\n }\n },\n onSuccess: async (page) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors({} as FormDataErrors<TForm>)\n setHasErrors(false)\n setWasSuccessful(true)\n setRecentlySuccessful(true)\n recentlySuccessfulTimeoutId.current = setTimeout(() => {\n if (isMounted.current) {\n setRecentlySuccessful(false)\n }\n }, config.get('form.recentlySuccessfulDuration'))\n }\n\n const onSuccess = options.onSuccess ? await options.onSuccess(page) : null\n\n if (isMounted.current && !setDefaultsCalledInOnSuccess.current) {\n setData((data) => {\n setDefaults(cloneDeep(data))\n return data\n })\n }\n\n return onSuccess\n },\n onError: (errors) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors(errors as FormDataErrors<TForm>)\n setHasErrors(true)\n }\n\n if (options.onError) {\n return options.onError(errors)\n }\n },\n onCancel: () => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n if (options.onCancel) {\n return options.onCancel()\n }\n },\n onFinish: (visit) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n cancelToken.current = null\n\n if (options.onFinish) {\n return options.onFinish(visit)\n }\n },\n }\n\n const transformedData = transform.current(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 [data, setErrors, transform],\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 [dataAsDefaults, setDataAsDefaults] = useState(false)\n\n const dataRef = useRef(data)\n\n useEffect(() => {\n dataRef.current = data\n })\n\n const setDefaultsFunction = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) => {\n setDefaultsCalledInOnSuccess.current = true\n\n if (typeof fieldOrFields === 'undefined') {\n setDefaults(dataRef.current)\n // If setData was called right before setDefaults, data was not\n // updated in that render yet, so we set a flag to update\n // defaults right after the next render.\n setDataAsDefaults(true)\n } else {\n setDefaults((defaults) => {\n return typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign(cloneDeep(defaults), fieldOrFields)\n })\n }\n },\n [setDefaults],\n )\n\n useIsomorphicLayoutEffect(() => {\n if (!dataAsDefaults) {\n return\n }\n\n if (isDirty) {\n // Data has been updated in this next render and is different from\n // the defaults, so now we can set defaults to the current data.\n setDefaults(data)\n }\n\n setDataAsDefaults(false)\n }, [dataAsDefaults])\n\n const reset = useCallback(\n (...fields: string[]) => {\n if (fields.length === 0) {\n setData(defaults)\n } else {\n setData((data) =>\n (fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(defaults, key))\n .reduce(\n (carry, key) => {\n return set(carry, key, get(defaults, key))\n },\n { ...data } as TForm,\n ),\n )\n }\n },\n [setData, defaults],\n )\n\n const setError = useCallback(\n (fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: string) => {\n setErrors((errors) => {\n const newErrors = {\n ...errors,\n ...(typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields),\n }\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\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 setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors as FormDataErrors<TForm>\n })\n },\n [setErrors, setHasErrors],\n )\n\n const resetAndClearErrors = useCallback(\n (...fields: string[]) => {\n reset(...fields)\n clearErrors(...fields)\n },\n [reset, clearErrors],\n )\n\n const createSubmitMethod =\n (method: Method) =>\n (url: string, options: VisitOptions = {}) => {\n submit(method, url, options)\n }\n const getMethod = useCallback(createSubmitMethod('get'), [submit])\n const post = useCallback(createSubmitMethod('post'), [submit])\n const put = useCallback(createSubmitMethod('put'), [submit])\n const patch = useCallback(createSubmitMethod('patch'), [submit])\n const deleteMethod = useCallback(createSubmitMethod('delete'), [submit])\n\n const cancel = useCallback(() => {\n if (cancelToken.current) {\n cancelToken.current.cancel()\n }\n }, [])\n\n const transformFunction = useCallback((callback: TransformCallback<TForm>) => {\n transform.current = callback\n }, [])\n\n return {\n data,\n setData: setDataFunction,\n isDirty,\n errors,\n hasErrors,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n transform: transformFunction,\n setDefaults: setDefaultsFunction,\n reset,\n setError,\n clearErrors,\n resetAndClearErrors,\n submit,\n get: getMethod,\n post,\n put,\n patch,\n delete: deleteMethod,\n cancel,\n }\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 { router } from '@inertiajs/core'\nimport { Dispatch, SetStateAction, useEffect, useState } from 'react'\n\nexport default function useRemember<State>(\n initialState: State,\n key?: 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 router.remember(state, key)\n }, [state, key])\n\n return [state, setState]\n}\n", "import { escape } from 'lodash-es'\nimport React, { FunctionComponent, ReactElement, ReactNode, useContext, 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 = useContext(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 [provider.preferredAttribute()]: 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 ${provider.preferredAttribute()}>${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 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'\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 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 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 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 [loadingPrevious, setLoadingPrevious] = useState(false)\n const [loadingNext, setLoadingNext] = useState(false)\n const [requestCount, setRequestCount] = useState(0)\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 })\n\n callbackPropsRef.current = {\n buffer,\n onlyNext,\n onlyPrevious,\n reverse,\n preserveUrl,\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 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\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 setRequestCount(infiniteScrollInstance.dataManager.getRequestCount())\n },\n onCompleteNextRequest: () => {\n setLoadingNext(false)\n setRequestCount(infiniteScrollInstance.dataManager.getRequestCount())\n },\n })\n\n setInfiniteScroll(infiniteScrollInstance)\n const { dataManager, elementManager } = infiniteScrollInstance\n\n setRequestCount(dataManager.getRequestCount())\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: dataManager?.hasPrevious() ?? false,\n hasNext: dataManager?.hasNext() ?? false,\n }\n\n const exposedPrevious: InfiniteScrollActionSlotProps = {\n loading: loadingPrevious,\n fetch: dataManager?.fetchPrevious ?? (() => {}),\n autoMode: headerAutoMode,\n manualMode: !headerAutoMode,\n hasMore: dataManager?.hasPrevious() ?? false,\n ...sharedExposed,\n }\n\n const exposedNext: InfiniteScrollActionSlotProps = {\n loading: loadingNext,\n fetch: dataManager?.fetchNext ?? (() => {}),\n autoMode: footerAutoMode,\n manualMode: !footerAutoMode,\n hasMore: dataManager?.hasNext() ?? false,\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 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 ...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 _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 }),\n [_data, _method, preserveScroll, preserveState, preserveUrl, replace, only, except, headers, async],\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 event.preventDefault()\n router.visit(url, visitParams)\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 { 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 { createElement, ReactNode, useCallback, useEffect, useRef, useState } from 'react'\n\ninterface WhenVisibleProps {\n children: ReactNode | (() => 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 [loaded, setLoaded] = useState(false)\n const hasFetched = useRef<boolean>(false)\n const fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n\n const getReloadParams = useCallback<() => Partial<ReloadOptions>>(() => {\n if (data) {\n return {\n only: (Array.isArray(data) ? data : [data]) as string[],\n }\n }\n\n if (!params) {\n throw new Error('You must provide either a `data` or `params` prop.')\n }\n\n return params\n }, [params, data])\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (!always && hasFetched.current) {\n observer.disconnect()\n }\n\n if (fetching.current) {\n return\n }\n\n hasFetched.current = true\n fetching.current = true\n\n const reloadParams = getReloadParams()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.current = true\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n setLoaded(true)\n fetching.current = false\n reloadParams.onFinish?.(e)\n\n if (!always) {\n observer.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.observe(ref.current)\n\n return () => {\n observer.disconnect()\n }\n }, [ref, getReloadParams, buffer])\n\n const resolveChildren = () => (typeof children === 'function' ? children() : 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": ["router", "import_core", "import_core", "import_react", "import_react", "import_react", "current", "children", "progress", "module", "import_react", "import_react", "router", "import_core", "import_lodash_es", "import_react", "import_core", "import_react", "import_react", "import_core", "import_react", "progress", "data", "errors", "defaults", "React", "import_lodash_es", "import_react", "children", "React", "import_core", "import_react", "dataManager", "elementManager", "React", "import_core", "import_react", "noop", "import_core", "import_react", "import_core", "import_react", "import_core", "import_react", "Progress", "router", "Router", "coreConfig"]
3
+ "sources": ["../src/index.ts", "../src/App.ts", "../src/HeadContext.ts", "../src/PageContext.ts", "../src/createInertiaApp.ts", "../src/Deferred.ts", "../src/usePage.ts", "../src/Form.ts", "../src/useForm.ts", "../src/react.ts", "../src/useRemember.ts", "../src/Head.ts", "../src/InfiniteScroll.ts", "../src/Link.ts", "../src/usePoll.ts", "../src/usePrefetch.ts", "../src/WhenVisible.ts"],
4
+ "sourcesContent": ["import { config as coreConfig, progress as Progress, router as Router } from '@inertiajs/core'\nimport { ReactInertiaAppConfig } from './types'\n\nexport const progress = Progress\nexport const router = Router\nexport { default as App } from './App'\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './Deferred'\nexport { default as Form } from './Form'\nexport { default as Head } from './Head'\nexport { default as InfiniteScroll } from './InfiniteScroll'\nexport { InertiaLinkProps, default as Link } from './Link'\nexport { ReactComponent as ResolvedComponent } from './types'\nexport {\n InertiaFormProps,\n SetDataAction,\n SetDataByKeyValuePair,\n SetDataByMethod,\n SetDataByObject,\n default as useForm,\n} from './useForm'\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 Page,\n PageHandler,\n PageProps,\n router,\n} from '@inertiajs/core'\nimport { createElement, FunctionComponent, ReactNode, useEffect, useMemo, useState } from 'react'\nimport HeadContext from './HeadContext'\nimport PageContext from './PageContext'\nimport { LayoutFunction, ReactComponent, ReactPageHandlerArgs } from './types'\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) => ReactComponent | Promise<ReactComponent>\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdateCallback\n}\n\nexport type InertiaApp = FunctionComponent<InertiaAppProps>\n\nexport default function App<SharedProps extends PageProps = PageProps>({\n children,\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n}: InertiaAppProps<SharedProps>) {\n const [current, setCurrent] = useState<CurrentPage>({\n component: initialComponent || null,\n page: initialPage,\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 if (!routerIsInitialized) {\n router.init<ReactComponent>({\n initialPage,\n resolveComponent: resolveComponent!,\n swapComponent: async (args) => swapComponent(args),\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 setCurrent((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\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 (typeof Component.layout === 'function') {\n return (Component.layout as LayoutFunction)(child)\n }\n\n if (Array.isArray(Component.layout)) {\n return (Component.layout as any)\n .concat(child)\n .reverse()\n .reduce((children: any, Layout: any) => createElement(Layout, { children, ...props }))\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 { 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 CreateInertiaAppOptionsForCSR,\n CreateInertiaAppOptionsForSSR,\n InertiaAppResponse,\n InertiaAppSSRResponse,\n PageProps,\n router,\n setupProgress,\n} from '@inertiajs/core'\nimport { ReactElement, createElement } from 'react'\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\n// The 'unknown' type is necessary for backwards compatibility...\ntype ComponentResolver = (\n name: string,\n) => ReactComponent | Promise<ReactComponent> | { default: ReactComponent } | unknown\n\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForCSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<HTMLElement, SharedProps>,\n void,\n ReactInertiaAppConfig\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}\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<void>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<InertiaAppSSRResponse>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>({\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n defaults = {},\n}: InertiaAppOptionsForCSR<SharedProps> | InertiaAppOptionsForSSR<SharedProps>): InertiaAppResponse {\n config.replace(defaults)\n\n const isServer = typeof window === 'undefined'\n const el = isServer ? null : document.getElementById(id)\n const initialPage = page || JSON.parse(el?.dataset.page || '{}')\n\n // @ts-expect-error - This can be improved once we remove the 'unknown' type from the resolver...\n const resolveComponent = (name) => Promise.resolve(resolve(name)).then((module) => module.default || module)\n\n let head: string[] = []\n\n const reactApp = await Promise.all([\n resolveComponent(initialPage.component),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n const props = {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n }\n\n if (isServer) {\n const ssrSetup = setup as (options: SetupOptions<null, SharedProps>) => ReactElement\n\n return ssrSetup({\n el: null,\n App,\n props: { ...props, onHeadUpdate: (elements: string[]) => (head = elements) },\n })\n }\n\n const csrSetup = setup as (options: SetupOptions<HTMLElement, SharedProps>) => void\n\n return csrSetup({\n el: el as HTMLElement,\n App,\n props,\n })\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer && render) {\n const body = await render(\n createElement(\n 'div',\n {\n id,\n 'data-page': JSON.stringify(initialPage),\n },\n reactApp as ReactElement,\n ),\n )\n\n return { head, body }\n }\n}\n", "import { ReactNode, useEffect, useMemo, useState } from 'react'\nimport { router } from '.'\nimport usePage from './usePage'\n\nconst urlWithoutHash = (url: URL | Location): URL => {\n url = new URL(url.href)\n url.hash = ''\n\n return url\n}\n\nconst isSameUrlWithoutHash = (url1: URL | Location, url2: URL | Location): boolean => {\n return urlWithoutHash(url1).href === urlWithoutHash(url2).href\n}\n\ninterface DeferredProps {\n children: ReactNode | (() => 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 pageProps = usePage().props\n const keys = useMemo(() => (Array.isArray(data) ? data : [data]), [data])\n\n useEffect(() => {\n const removeListener = router.on('start', (e) => {\n const isPartialVisit = e.detail.visit.only.length > 0 || e.detail.visit.except.length > 0\n const isReloadingKey = e.detail.visit.only.find((key) => keys.includes(key))\n\n if (isSameUrlWithoutHash(e.detail.visit.url, window.location) && (!isPartialVisit || isReloadingKey)) {\n setLoaded(false)\n }\n })\n\n return () => {\n removeListener()\n }\n }, [])\n\n useEffect(() => {\n setLoaded(keys.every((key) => pageProps[key] !== undefined))\n }, [pageProps, keys])\n\n if (loaded) {\n return typeof children === 'function' ? children() : 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 React from 'react'\nimport PageContext from './PageContext'\n\nexport default function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps & SharedPageProps> {\n // React.use() was introduced in React 19, fallback to React.useContext() for earlier versions\n const page = typeof React.use === 'function' ? React.use(PageContext) : React.useContext(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 FormComponentProps,\n FormComponentRef,\n FormComponentSlotProps,\n FormDataConvertible,\n formDataToObject,\n isUrlMethodPair,\n mergeDataIntoQueryString,\n Method,\n resetFormFields,\n VisitOptions,\n} from '@inertiajs/core'\nimport { isEqual } from 'lodash-es'\nimport React, {\n createElement,\n FormEvent,\n forwardRef,\n ReactNode,\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 ComponentProps = (FormComponentProps &\n Omit<React.FormHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> &\n Omit<React.AllHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'>) & {\n children: ReactNode | ((props: FormComponentSlotProps) => ReactNode)\n}\n\ntype FormSubmitOptions = Omit<VisitOptions, 'data' | 'onPrefetched' | 'onPrefetching'>\n\nconst noop = () => undefined\n\nconst Form = forwardRef<FormComponentRef, ComponentProps>(\n (\n {\n action = '',\n method = 'get',\n headers = {},\n queryStringArrayFormat = 'brackets',\n errorBag = null,\n showProgress = true,\n transform = (data) => data,\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 children,\n ...props\n },\n ref,\n ) => {\n const form = useForm<Record<string, any>>({})\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 [isDirty, setIsDirty] = useState(false)\n const defaultData = useRef<FormData>(new FormData())\n\n const getFormData = (): FormData => new FormData(formElement.current)\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 = (): Record<string, FormDataConvertible> => formDataToObject(getFormData())\n\n const updateDirtyState = (event: Event) =>\n deferStateUpdate(() =>\n setIsDirty(event.type === 'reset' ? false : !isEqual(getData(), formDataToObject(defaultData.current))),\n )\n\n useEffect(() => {\n defaultData.current = getFormData()\n\n const formEvents: Array<keyof HTMLElementEventMap> = ['input', 'change', 'reset']\n\n formEvents.forEach((e) => formElement.current!.addEventListener(e, updateDirtyState))\n\n return () => formEvents.forEach((e) => formElement.current?.removeEventListener(e, updateDirtyState))\n }, [])\n\n const reset = (...fields: string[]) => {\n if (formElement.current) {\n resetFormFields(formElement.current, defaultData.current, fields)\n }\n }\n\n const resetAndClearErrors = (...fields: string[]) => {\n form.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 = () => {\n const [url, _data] = mergeDataIntoQueryString(\n resolvedMethod,\n isUrlMethodPair(action) ? action.url : action,\n getData(),\n queryStringArrayFormat,\n )\n\n const submitOptions: FormSubmitOptions = {\n headers,\n queryStringArrayFormat,\n errorBag,\n showProgress,\n invalidateCacheTags,\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 form.transform(() => transform(_data))\n form.submit(resolvedMethod, url, submitOptions)\n }\n\n const defaults = () => {\n defaultData.current = getFormData()\n setIsDirty(false)\n }\n\n const exposed = () => ({\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: form.clearErrors,\n resetAndClearErrors,\n setError: form.setError,\n reset,\n submit,\n defaults,\n getData,\n getFormData,\n })\n\n useImperativeHandle(ref, exposed, [form, isDirty, submit])\n\n return 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()\n },\n // Only React 19 supports passing a boolean to the `inert` attribute.\n // To support earlier versions as well, we use the string 'true'.\n // Unfortunately, React 19 treats an empty string as `false`.\n // See: https://github.com/inertiajs/inertia/pull/2536\n inert: disableWhileProcessing && form.processing && 'true',\n },\n typeof children === 'function' ? children(exposed()) : children,\n )\n },\n)\n\nForm.displayName = 'InertiaForm'\n\nexport default Form\n", "import {\n CancelToken,\n Errors,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n Method,\n Progress,\n RequestPayload,\n router,\n UrlMethodPair,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep, get, has, isEqual, set } from 'lodash-es'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { config } from '.'\nimport { useIsomorphicLayoutEffect } from './react'\nimport useRemember from './useRemember'\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 FormOptions = Omit<VisitOptions, 'data'>\ntype SubmitArgs = [Method, string, FormOptions?] | [UrlMethodPair, FormOptions?]\ntype TransformCallback<TForm> = (data: TForm) => object\n\nexport interface InertiaFormProps<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: TransformCallback<TForm>) => void\n setDefaults(): void\n setDefaults<T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n setDefaults(fields: Partial<TForm>): void\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<K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n setError(errors: FormDataErrors<TForm>): void\n submit: (...args: SubmitArgs) => void\n get: (url: string, options?: FormOptions) => void\n patch: (url: string, options?: FormOptions) => void\n post: (url: string, options?: FormOptions) => void\n put: (url: string, options?: FormOptions) => void\n delete: (url: string, options?: FormOptions) => void\n cancel: () => void\n}\nexport default function useForm<TForm extends FormDataType<TForm>>(\n initialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKey: string,\n initialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKeyOrInitialValues?: string | TForm | (() => TForm),\n maybeInitialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm> {\n const isMounted = useRef(false)\n const rememberKey = typeof rememberKeyOrInitialValues === 'string' ? rememberKeyOrInitialValues : null\n const [defaults, setDefaults] = useState(\n (typeof rememberKeyOrInitialValues === 'string' ? maybeInitialValues : rememberKeyOrInitialValues) || ({} as TForm),\n )\n const cancelToken = useRef<CancelToken | null>(null)\n const recentlySuccessfulTimeoutId = useRef<number>(undefined)\n const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`) : useState(defaults)\n const [errors, setErrors] = rememberKey\n ? useRemember({} as FormDataErrors<TForm>, `${rememberKey}:errors`)\n : useState({} as FormDataErrors<TForm>)\n const [hasErrors, setHasErrors] = useState(false)\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 const transform = useRef<TransformCallback<TForm>>((data) => data)\n const isDirty = useMemo(() => !isEqual(data, defaults), [data, defaults])\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n // Track if setDefaults was called manually during onSuccess to avoid\n // overriding user's custom defaults with automatic behavior.\n const setDefaultsCalledInOnSuccess = useRef(false)\n\n const submit = useCallback(\n (...args: SubmitArgs) => {\n const objectPassed = args[0] !== null && typeof args[0] === 'object'\n\n const method = objectPassed ? args[0].method : (args[0] as Method)\n const url = objectPassed ? args[0].url : (args[1] as string)\n const options = (objectPassed ? args[1] : args[2]) ?? {}\n\n setDefaultsCalledInOnSuccess.current = false\n\n const _options: VisitOptions = {\n ...options,\n onCancelToken: (token) => {\n cancelToken.current = token\n\n if (options.onCancelToken) {\n return options.onCancelToken(token)\n }\n },\n onBefore: (visit) => {\n setWasSuccessful(false)\n setRecentlySuccessful(false)\n clearTimeout(recentlySuccessfulTimeoutId.current)\n\n if (options.onBefore) {\n return options.onBefore(visit)\n }\n },\n onStart: (visit) => {\n setProcessing(true)\n\n if (options.onStart) {\n return options.onStart(visit)\n }\n },\n onProgress: (event) => {\n setProgress(event || null)\n\n if (options.onProgress) {\n return options.onProgress(event)\n }\n },\n onSuccess: async (page) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors({} as FormDataErrors<TForm>)\n setHasErrors(false)\n setWasSuccessful(true)\n setRecentlySuccessful(true)\n recentlySuccessfulTimeoutId.current = setTimeout(() => {\n if (isMounted.current) {\n setRecentlySuccessful(false)\n }\n }, config.get('form.recentlySuccessfulDuration'))\n }\n\n const onSuccess = options.onSuccess ? await options.onSuccess(page) : null\n\n if (isMounted.current && !setDefaultsCalledInOnSuccess.current) {\n setData((data) => {\n setDefaults(cloneDeep(data))\n return data\n })\n }\n\n return onSuccess\n },\n onError: (errors) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors(errors as FormDataErrors<TForm>)\n setHasErrors(true)\n }\n\n if (options.onError) {\n return options.onError(errors)\n }\n },\n onCancel: () => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n if (options.onCancel) {\n return options.onCancel()\n }\n },\n onFinish: (visit) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n cancelToken.current = null\n\n if (options.onFinish) {\n return options.onFinish(visit)\n }\n },\n }\n\n const transformedData = transform.current(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 [data, setErrors, transform],\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 [dataAsDefaults, setDataAsDefaults] = useState(false)\n\n const dataRef = useRef(data)\n\n useEffect(() => {\n dataRef.current = data\n })\n\n const setDefaultsFunction = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) => {\n setDefaultsCalledInOnSuccess.current = true\n\n if (typeof fieldOrFields === 'undefined') {\n setDefaults(dataRef.current)\n // If setData was called right before setDefaults, data was not\n // updated in that render yet, so we set a flag to update\n // defaults right after the next render.\n setDataAsDefaults(true)\n } else {\n setDefaults((defaults) => {\n return typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign(cloneDeep(defaults), fieldOrFields)\n })\n }\n },\n [setDefaults],\n )\n\n useIsomorphicLayoutEffect(() => {\n if (!dataAsDefaults) {\n return\n }\n\n if (isDirty) {\n // Data has been updated in this next render and is different from\n // the defaults, so now we can set defaults to the current data.\n setDefaults(data)\n }\n\n setDataAsDefaults(false)\n }, [dataAsDefaults])\n\n const reset = useCallback(\n (...fields: string[]) => {\n if (fields.length === 0) {\n setData(defaults)\n } else {\n setData((data) =>\n (fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(defaults, key))\n .reduce(\n (carry, key) => {\n return set(carry, key, get(defaults, key))\n },\n { ...data } as TForm,\n ),\n )\n }\n },\n [setData, defaults],\n )\n\n const setError = useCallback(\n (fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: string) => {\n setErrors((errors) => {\n const newErrors = {\n ...errors,\n ...(typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields),\n }\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\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 setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors as FormDataErrors<TForm>\n })\n },\n [setErrors, setHasErrors],\n )\n\n const resetAndClearErrors = useCallback(\n (...fields: string[]) => {\n reset(...fields)\n clearErrors(...fields)\n },\n [reset, clearErrors],\n )\n\n const createSubmitMethod =\n (method: Method) =>\n (url: string, options: VisitOptions = {}) => {\n submit(method, url, options)\n }\n const getMethod = useCallback(createSubmitMethod('get'), [submit])\n const post = useCallback(createSubmitMethod('post'), [submit])\n const put = useCallback(createSubmitMethod('put'), [submit])\n const patch = useCallback(createSubmitMethod('patch'), [submit])\n const deleteMethod = useCallback(createSubmitMethod('delete'), [submit])\n\n const cancel = useCallback(() => {\n if (cancelToken.current) {\n cancelToken.current.cancel()\n }\n }, [])\n\n const transformFunction = useCallback((callback: TransformCallback<TForm>) => {\n transform.current = callback\n }, [])\n\n return {\n data,\n setData: setDataFunction,\n isDirty,\n errors,\n hasErrors,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n transform: transformFunction,\n setDefaults: setDefaultsFunction,\n reset,\n setError,\n clearErrors,\n resetAndClearErrors,\n submit,\n get: getMethod,\n post,\n put,\n patch,\n delete: deleteMethod,\n cancel,\n }\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 { router } from '@inertiajs/core'\nimport { Dispatch, SetStateAction, useEffect, useState } from 'react'\n\nexport default function useRemember<State>(\n initialState: State,\n key?: 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 router.remember(state, key)\n }, [state, key])\n\n return [state, setState]\n}\n", "import { escape } from 'lodash-es'\nimport React, { FunctionComponent, ReactElement, ReactNode, useContext, 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 = useContext(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 [provider.preferredAttribute()]: 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 ${provider.preferredAttribute()}>${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 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'\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 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 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 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 [loadingPrevious, setLoadingPrevious] = useState(false)\n const [loadingNext, setLoadingNext] = useState(false)\n const [requestCount, setRequestCount] = useState(0)\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 })\n\n callbackPropsRef.current = {\n buffer,\n onlyNext,\n onlyPrevious,\n reverse,\n preserveUrl,\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 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\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 setRequestCount(infiniteScrollInstance.dataManager.getRequestCount())\n },\n onCompleteNextRequest: () => {\n setLoadingNext(false)\n setRequestCount(infiniteScrollInstance.dataManager.getRequestCount())\n },\n })\n\n setInfiniteScroll(infiniteScrollInstance)\n const { dataManager, elementManager } = infiniteScrollInstance\n\n setRequestCount(dataManager.getRequestCount())\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: dataManager?.hasPrevious() ?? false,\n hasNext: dataManager?.hasNext() ?? false,\n }\n\n const exposedPrevious: InfiniteScrollActionSlotProps = {\n loading: loadingPrevious,\n fetch: dataManager?.fetchPrevious ?? (() => {}),\n autoMode: headerAutoMode,\n manualMode: !headerAutoMode,\n hasMore: dataManager?.hasPrevious() ?? false,\n ...sharedExposed,\n }\n\n const exposedNext: InfiniteScrollActionSlotProps = {\n loading: loadingNext,\n fetch: dataManager?.fetchNext ?? (() => {}),\n autoMode: footerAutoMode,\n manualMode: !footerAutoMode,\n hasMore: dataManager?.hasNext() ?? false,\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 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 ...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 _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 }),\n [_data, _method, preserveScroll, preserveState, preserveUrl, replace, only, except, headers, async],\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 { 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 { createElement, ReactNode, useCallback, useEffect, useRef, useState } from 'react'\n\ninterface WhenVisibleProps {\n children: ReactNode | (() => 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 [loaded, setLoaded] = useState(false)\n const hasFetched = useRef<boolean>(false)\n const fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n\n const getReloadParams = useCallback<() => Partial<ReloadOptions>>(() => {\n if (data) {\n return {\n only: (Array.isArray(data) ? data : [data]) as string[],\n }\n }\n\n if (!params) {\n throw new Error('You must provide either a `data` or `params` prop.')\n }\n\n return params\n }, [params, data])\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (!always && hasFetched.current) {\n observer.disconnect()\n }\n\n if (fetching.current) {\n return\n }\n\n hasFetched.current = true\n fetching.current = true\n\n const reloadParams = getReloadParams()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.current = true\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n setLoaded(true)\n fetching.current = false\n reloadParams.onFinish?.(e)\n\n if (!always) {\n observer.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.observe(ref.current)\n\n return () => {\n observer.disconnect()\n }\n }, [ref, getReloadParams, buffer])\n\n const resolveChildren = () => (typeof children === 'function' ? children() : 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": ["router", "import_core", "import_react", "import_react", "current", "children", "import_core", "import_react", "progress", "module", "import_react", "import_react", "React", "router", "import_core", "import_lodash_es", "import_react", "import_core", "import_react", "import_react", "import_core", "import_react", "progress", "data", "errors", "defaults", "React", "import_lodash_es", "import_react", "children", "React", "import_core", "import_react", "dataManager", "elementManager", "React", "import_core", "import_react", "noop", "import_core", "import_react", "import_core", "import_react", "import_core", "import_react", "Progress", "router", "Router", "coreConfig"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inertiajs/react",
3
- "version": "2.2.15",
3
+ "version": "2.2.16",
4
4
  "license": "MIT",
5
5
  "description": "The React adapter for Inertia.js",
6
6
  "contributors": [
@@ -43,12 +43,12 @@
43
43
  }
44
44
  },
45
45
  "devDependencies": {
46
- "@types/react": "^19.2.2",
46
+ "@types/react": "^19.2.3",
47
47
  "@types/react-dom": "^19.2.2",
48
- "axios": "^1.12.2",
48
+ "axios": "^1.13.2",
49
49
  "es-check": "^9.4.4",
50
- "esbuild": "^0.25.11",
51
- "esbuild-node-externals": "^1.18.0",
50
+ "esbuild": "^0.25.12",
51
+ "esbuild-node-externals": "^1.19.1",
52
52
  "react": "^19.2.0",
53
53
  "typescript": "^5.9.3"
54
54
  },
@@ -58,7 +58,7 @@
58
58
  "dependencies": {
59
59
  "@types/lodash-es": "^4.17.12",
60
60
  "lodash-es": "^4.17.21",
61
- "@inertiajs/core": "2.2.15"
61
+ "@inertiajs/core": "2.2.16"
62
62
  },
63
63
  "scripts": {
64
64
  "build": "pnpm clean && ./build.js && tsc",
package/types/index.d.ts CHANGED
@@ -11,12 +11,14 @@ export declare const progress: {
11
11
  getStatus(): number | null;
12
12
  };
13
13
  export declare const router: import("@inertiajs/core").Router;
14
+ export { default as App } from './App';
14
15
  export { default as createInertiaApp } from './createInertiaApp';
15
16
  export { default as Deferred } from './Deferred';
16
17
  export { default as Form } from './Form';
17
18
  export { default as Head } from './Head';
18
19
  export { default as InfiniteScroll } from './InfiniteScroll';
19
20
  export { InertiaLinkProps, default as Link } from './Link';
21
+ export { ReactComponent as ResolvedComponent } from './types';
20
22
  export { InertiaFormProps, SetDataAction, SetDataByKeyValuePair, SetDataByMethod, SetDataByObject, default as useForm, } from './useForm';
21
23
  export { default as usePage } from './usePage';
22
24
  export { default as usePoll } from './usePoll';