@inertiajs/react 2.2.15 → 2.2.17

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.
@@ -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'\nimport usePage from './usePage'\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 fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n const observer = useRef<IntersectionObserver | null>(null)\n\n const page = usePage()\n\n useEffect(() => {\n if (Array.isArray(data)) {\n // For arrays, reset loaded if any prop becomes undefined\n if (data.some((key) => page.props[key] === undefined)) {\n setLoaded(false)\n }\n } else if (data) {\n // For single prop, reset loaded if prop becomes undefined\n if (page.props[data] === undefined) {\n setLoaded(false)\n }\n }\n }, [data, ...(Array.isArray(data) ? data.map((key) => page.props[key]) : [page.props[data!]])])\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 const registerObserver = () => {\n observer.current?.disconnect()\n\n observer.current = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (fetching.current) {\n return\n }\n\n if (!always && loaded) {\n return\n }\n\n fetching.current = true\n\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.current?.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.current.observe(ref.current!)\n }\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n registerObserver()\n\n return () => {\n observer.current?.disconnect()\n }\n }, [loaded, 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", "useState", "useRef", "useEffect", "useCallback", "router", "createElement", "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)) {
@@ -1325,9 +1327,21 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1325
1327
  as = as ?? "div";
1326
1328
  fallback = fallback ?? null;
1327
1329
  const [loaded, setLoaded] = (0, import_react17.useState)(false);
1328
- const hasFetched = (0, import_react17.useRef)(false);
1329
1330
  const fetching = (0, import_react17.useRef)(false);
1330
1331
  const ref = (0, import_react17.useRef)(null);
1332
+ const observer = (0, import_react17.useRef)(null);
1333
+ const page = usePage();
1334
+ (0, import_react17.useEffect)(() => {
1335
+ if (Array.isArray(data)) {
1336
+ if (data.some((key) => page.props[key] === void 0)) {
1337
+ setLoaded(false);
1338
+ }
1339
+ } else if (data) {
1340
+ if (page.props[data] === void 0) {
1341
+ setLoaded(false);
1342
+ }
1343
+ }
1344
+ }, [data, ...Array.isArray(data) ? data.map((key) => page.props[key]) : [page.props[data]]]);
1331
1345
  const getReloadParams = (0, import_react17.useCallback)(() => {
1332
1346
  if (data) {
1333
1347
  return {
@@ -1339,22 +1353,19 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1339
1353
  }
1340
1354
  return params;
1341
1355
  }, [params, data]);
1342
- (0, import_react17.useEffect)(() => {
1343
- if (!ref.current) {
1344
- return;
1345
- }
1346
- const observer = new IntersectionObserver(
1356
+ const registerObserver = () => {
1357
+ observer.current?.disconnect();
1358
+ observer.current = new IntersectionObserver(
1347
1359
  (entries) => {
1348
1360
  if (!entries[0].isIntersecting) {
1349
1361
  return;
1350
1362
  }
1351
- if (!always && hasFetched.current) {
1352
- observer.disconnect();
1353
- }
1354
1363
  if (fetching.current) {
1355
1364
  return;
1356
1365
  }
1357
- hasFetched.current = true;
1366
+ if (!always && loaded) {
1367
+ return;
1368
+ }
1358
1369
  fetching.current = true;
1359
1370
  const reloadParams = getReloadParams();
1360
1371
  import_core10.router.reload({
@@ -1368,7 +1379,7 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1368
1379
  fetching.current = false;
1369
1380
  reloadParams.onFinish?.(e);
1370
1381
  if (!always) {
1371
- observer.disconnect();
1382
+ observer.current?.disconnect();
1372
1383
  }
1373
1384
  }
1374
1385
  });
@@ -1377,11 +1388,17 @@ var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) =>
1377
1388
  rootMargin: `${buffer || 0}px`
1378
1389
  }
1379
1390
  );
1380
- observer.observe(ref.current);
1391
+ observer.current.observe(ref.current);
1392
+ };
1393
+ (0, import_react17.useEffect)(() => {
1394
+ if (!ref.current) {
1395
+ return;
1396
+ }
1397
+ registerObserver();
1381
1398
  return () => {
1382
- observer.disconnect();
1399
+ observer.current?.disconnect();
1383
1400
  };
1384
- }, [ref, getReloadParams, buffer]);
1401
+ }, [loaded, ref, getReloadParams, buffer]);
1385
1402
  const resolveChildren = () => typeof children === "function" ? children() : children;
1386
1403
  const resolveFallback = () => typeof fallback === "function" ? fallback() : fallback;
1387
1404
  if (always || !loaded) {