@inertiajs/react 3.0.0-beta.3 → 3.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +176 -91
- package/dist/index.js.map +3 -3
- package/package.json +5 -6
- package/types/index.d.ts +2 -2
- package/types/layoutProps.d.ts +4 -7
- package/types/types.d.ts +3 -2
- package/types/useFormState.d.ts +2 -2
- package/types/useHttp.d.ts +6 -6
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts", "../src/App.ts", "../src/HeadContext.ts", "../src/layoutProps.ts", "../src/PageContext.ts", "../src/createInertiaApp.ts", "../src/Deferred.ts", "../src/usePage.ts", "../src/Form.ts", "../src/useForm.ts", "../src/react.ts", "../src/useFormState.ts", "../src/useRemember.ts", "../src/Head.ts", "../src/InfiniteScroll.ts", "../src/Link.ts", "../src/useHttp.ts", "../src/usePoll.ts", "../src/usePrefetch.ts", "../src/WhenVisible.ts"],
|
|
4
|
-
"sourcesContent": ["import { config as coreConfig } from '@inertiajs/core'\nimport type { ReactInertiaAppConfig } from './types'\n\nexport { http, progress, router } from '@inertiajs/core'\nexport { default as App } from './App'\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './Deferred'\nexport { default as Form, useFormContext } from './Form'\nexport { default as Head } from './Head'\nexport { default as InfiniteScroll } from './InfiniteScroll'\nexport { resetLayoutProps, setLayoutProps, setLayoutPropsFor, useLayoutProps } from './layoutProps'\nexport { InertiaLinkProps, default as Link } from './Link'\nexport { ReactComponent as ResolvedComponent } from './types'\nexport {\n InertiaForm,\n InertiaFormProps,\n InertiaPrecognitiveFormProps,\n SetDataAction,\n SetDataByKeyValuePair,\n SetDataByMethod,\n SetDataByObject,\n default as useForm,\n} from './useForm'\nexport { default as useHttp } from './useHttp'\nexport { default as usePage } from './usePage'\nexport { default as usePoll } from './usePoll'\nexport { default as usePrefetch } from './usePrefetch'\nexport { default as useRemember } from './useRemember'\nexport { default as WhenVisible } from './WhenVisible'\n\nexport const config = coreConfig.extend<ReactInertiaAppConfig>()\n", "import {\n createHeadManager,\n HeadManagerOnUpdateCallback,\n HeadManagerTitleCallback,\n normalizeLayouts,\n Page,\n PageHandler,\n PageProps,\n router,\n} from '@inertiajs/core'\nimport { createElement, FunctionComponent, ReactNode, useEffect, useMemo, useState } from 'react'\nimport { flushSync } from 'react-dom'\nimport HeadContext from './HeadContext'\nimport { LayoutPropsContext, resetLayoutProps } from './layoutProps'\nimport PageContext from './PageContext'\nimport { LayoutFunction, ReactComponent, ReactPageHandlerArgs } from './types'\n\nfunction isComponent(value: unknown): value is ReactComponent {\n if (!value) {\n return false\n }\n\n if (typeof value === 'object' && '$$typeof' in value) {\n return true\n }\n\n if (typeof value === 'function') {\n const fn = value as Function & { displayName?: string; prototype?: { isReactComponent?: boolean } }\n return fn.prototype?.isReactComponent === true || fn.name !== '' || fn.displayName !== undefined\n }\n\n return false\n}\n\nfunction isRenderFunction(value: unknown): boolean {\n if (typeof value !== 'function') {\n return false\n }\n\n const fn = value as Function\n return fn.length === 1 && typeof fn.prototype === 'undefined'\n}\n\nlet currentIsInitialPage = true\nlet routerIsInitialized = false\nlet swapComponent: PageHandler<ReactComponent> = async () => {\n // Dummy function so we can init the router outside of the useEffect hook. This is\n // needed so `router.reload()` works right away (on mount) in any of the user's\n // components. We swap in the real function in the useEffect hook below.\n currentIsInitialPage = false\n}\n\ntype CurrentPage = {\n component: ReactComponent | null\n page: Page\n key: number | null\n}\n\nexport interface InertiaAppProps<SharedProps extends PageProps = PageProps> {\n children?: (options: { Component: ReactComponent; props: PageProps; key: number | null }) => ReactNode\n initialPage: Page<SharedProps>\n initialComponent?: ReactComponent\n resolveComponent?: (name: string, page?: Page) => ReactComponent | Promise<ReactComponent>\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdateCallback\n defaultLayout?: (name: string, page: Page) => unknown\n}\n\nexport type InertiaApp = FunctionComponent<InertiaAppProps>\n\nexport default function App<SharedProps extends PageProps = PageProps>({\n children,\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n defaultLayout,\n}: InertiaAppProps<SharedProps>) {\n const [current, setCurrent] = useState<CurrentPage>({\n component: initialComponent || null,\n page: { ...initialPage, flash: initialPage.flash ?? {} },\n key: null,\n })\n\n const headManager = useMemo(() => {\n return createHeadManager(\n typeof window === 'undefined',\n titleCallback || ((title) => title),\n onHeadUpdate || (() => {}),\n )\n }, [])\n\n if (!routerIsInitialized) {\n router.init<ReactComponent>({\n initialPage,\n resolveComponent: resolveComponent!,\n swapComponent: async (args) => swapComponent(args),\n onFlash: (flash) => {\n setCurrent((current) => ({\n ...current,\n page: { ...current.page, flash },\n }))\n },\n })\n\n routerIsInitialized = true\n }\n\n useEffect(() => {\n swapComponent = async ({ component, page, preserveState }: ReactPageHandlerArgs) => {\n if (currentIsInitialPage) {\n // We block setting the current page on the initial page to\n // prevent the initial page from being re-rendered again.\n currentIsInitialPage = false\n return\n }\n\n if (!preserveState) {\n resetLayoutProps()\n }\n\n flushSync(() =>\n setCurrent((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\n })),\n )\n }\n\n router.on('navigate', () => headManager.forceUpdate())\n }, [])\n\n if (!current.component) {\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(PageContext.Provider, { value: current.page }, null),\n )\n }\n\n const renderChildren =\n children ||\n (({ Component, props, key }) => {\n const child = createElement(Component, { key, ...props })\n\n if (Component.layout && isRenderFunction(Component.layout)) {\n return (Component.layout as LayoutFunction)(child)\n }\n\n const effectiveLayout = Component.layout ?? defaultLayout?.(current.page.component, current.page)\n const layouts = normalizeLayouts(effectiveLayout, isComponent, Component.layout ? isRenderFunction : undefined)\n\n if (layouts.length > 0) {\n return layouts.reduceRight((childNode, layout) => {\n return createElement(\n LayoutPropsContext.Provider,\n { value: { staticProps: { ...props, ...layout.props }, name: layout.name } },\n createElement(layout.component, { ...props, ...layout.props }, childNode),\n )\n }, child)\n }\n\n return child\n })\n\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(\n PageContext.Provider,\n { value: current.page },\n renderChildren({\n Component: current.component,\n key: current.key,\n props: current.page.props,\n }),\n ),\n )\n}\n\nApp.displayName = 'Inertia'\n", "import { HeadManager } from '@inertiajs/core'\nimport { createContext } from 'react'\n\nconst headContext = createContext<HeadManager | null>(null)\nheadContext.displayName = 'InertiaHeadContext'\n\nexport default headContext\n", "import { createLayoutPropsStore, mergeLayoutProps } from '@inertiajs/core'\nimport { createContext, useContext, useMemo, useSyncExternalStore } from 'react'\n\nconst store = createLayoutPropsStore()\n\nexport function setLayoutProps(props: Record<string, unknown>): void {\n store.set(props)\n}\n\nexport function setLayoutPropsFor(name: string, props: Record<string, unknown>): void {\n store.setFor(name, props)\n}\n\nexport function resetLayoutProps(): void {\n store.reset()\n}\n\nexport const LayoutPropsContext = createContext<{ staticProps: Record<string, unknown>; name?: string }>({\n staticProps: {},\n})\n\nexport function useLayoutProps<T extends Record<string, unknown>>(defaults: T): T {\n const { staticProps, name } = useContext(LayoutPropsContext)\n const { shared, named } = useSyncExternalStore(store.subscribe, store.get, store.get)\n\n return useMemo(() => {\n const dynamicProps = name ? { ...shared, ...named[name] } : shared\n return mergeLayoutProps(defaults, staticProps, dynamicProps)\n }, [defaults, staticProps, name, shared, named])\n}\n", "import { Page } from '@inertiajs/core'\nimport { createContext } from 'react'\n\nconst pageContext = createContext<Page | null>(null)\npageContext.displayName = 'InertiaPageContext'\n\nexport default pageContext\n", "import {\n buildSSRBody,\n CreateInertiaAppOptions,\n CreateInertiaAppOptionsForCSR,\n CreateInertiaAppOptionsForSSR,\n getInitialPageFromDOM,\n http as httpModule,\n InertiaAppSSRResponse,\n Page,\n PageProps,\n router,\n setupProgress,\n SharedPageProps,\n} from '@inertiajs/core'\nimport { createElement, ReactElement, StrictMode } from 'react'\nimport { createRoot, hydrateRoot } from 'react-dom/client'\nimport { renderToString } from 'react-dom/server'\nimport App, { InertiaAppProps, type InertiaApp } from './App'\nimport { config } from './index'\nimport { ReactComponent, ReactInertiaAppConfig } from './types'\n\nexport type SetupOptions<ElementType, SharedProps extends PageProps> = {\n el: ElementType\n App: InertiaApp\n props: InertiaAppProps<SharedProps>\n}\n\ntype ComponentResolver = (\n name: string,\n page?: Page<SharedPageProps>,\n) => ReactComponent | Promise<ReactComponent> | { default: ReactComponent }\n\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForCSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<HTMLElement, SharedProps>,\n void,\n ReactInertiaAppConfig\n> & {\n strictMode?: undefined\n withApp?: (app: ReactElement, options: { ssr: boolean }) => ReactElement\n}\n\ntype InertiaAppOptionsForSSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForSSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<null, SharedProps>,\n ReactElement,\n ReactInertiaAppConfig\n> & {\n render: typeof renderToString\n strictMode?: undefined\n withApp?: (app: ReactElement, options: { ssr: boolean }) => ReactElement\n}\n\ntype InertiaAppOptionsAuto<SharedProps extends PageProps> = CreateInertiaAppOptions<\n ComponentResolver,\n SetupOptions<HTMLElement | null, SharedProps>,\n ReactElement | void,\n ReactInertiaAppConfig\n> & {\n page?: Page<SharedProps>\n render?: undefined\n strictMode?: boolean\n withApp?: (app: ReactElement, options: { ssr: boolean }) => ReactElement\n}\n\ntype RenderToString = (element: ReactElement) => string\n\ntype RenderFunction<SharedProps extends PageProps> = (\n page: Page<SharedProps>,\n renderToString: RenderToString,\n) => Promise<InertiaAppSSRResponse>\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<void>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<InertiaAppSSRResponse>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options?: InertiaAppOptionsAuto<SharedProps>,\n): Promise<void | RenderFunction<SharedProps>>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n {\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n defaults = {},\n http,\n layout,\n strictMode = false,\n withApp,\n }:\n | InertiaAppOptionsForCSR<SharedProps>\n | InertiaAppOptionsForSSR<SharedProps>\n | InertiaAppOptionsAuto<SharedProps> = {} as InertiaAppOptionsAuto<SharedProps>,\n): Promise<InertiaAppSSRResponse | RenderFunction<SharedProps> | void> {\n config.replace(defaults)\n\n if (http) {\n httpModule.setClient(http)\n }\n\n const isServer = typeof window === 'undefined'\n\n const wrapWithStrictMode = (element: ReactElement): ReactElement => {\n return strictMode ? createElement(StrictMode, null, element) : element\n }\n\n const resolveComponent = (name: string, page?: Page) =>\n Promise.resolve(resolve!(name, page)).then((module) => {\n return ((module as { default?: ReactComponent }).default || module) as ReactComponent\n })\n\n // SSR render function factory - when on server without page/render, return a render function\n // This is used by the Vite plugin's SSR transform\n if (isServer && !page && !render) {\n return async (page: Page<SharedProps>, renderToString: RenderToString) => {\n let head: string[] = []\n\n const initialComponent = await resolveComponent(page.component, page)\n\n const props: InertiaAppProps<SharedProps> = {\n initialPage: page,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: (elements: string[]) => (head = elements),\n defaultLayout: layout,\n }\n\n let reactApp: ReactElement\n\n if (setup) {\n reactApp = (setup as (options: SetupOptions<null, SharedProps>) => ReactElement)({\n el: null,\n App,\n props,\n })\n } else {\n reactApp = wrapWithStrictMode(createElement(App, props))\n\n if (withApp) {\n reactApp = withApp(reactApp, { ssr: true })\n }\n }\n\n const html = renderToString(reactApp)\n const body = buildSSRBody(id, page, html)\n\n return { head, body }\n }\n }\n\n const initialPage = page || getInitialPageFromDOM<Page<SharedProps>>(id)!\n\n let head: string[] = []\n\n const reactApp = await Promise.all([\n resolveComponent(initialPage.component, initialPage),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n const props: InertiaAppProps<SharedProps> = {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: isServer ? (elements: string[]) => (head = elements) : undefined,\n defaultLayout: layout,\n }\n\n if (isServer) {\n return (setup as (options: SetupOptions<null, SharedProps>) => ReactElement)({\n el: null,\n App,\n props,\n })\n }\n\n const el = document.getElementById(id)!\n\n if (setup) {\n return (setup as (options: SetupOptions<HTMLElement, SharedProps>) => void)({\n el,\n App,\n props,\n })\n }\n\n let appElement = wrapWithStrictMode(createElement(App, props))\n\n if (withApp) {\n appElement = withApp(appElement, { ssr: false })\n }\n\n if (el.hasAttribute('data-server-rendered')) {\n hydrateRoot(el, appElement)\n } else {\n createRoot(el).render(appElement)\n }\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer && render && reactApp) {\n const html = render(reactApp)\n const body = buildSSRBody(id, initialPage, html)\n\n return { head, body }\n }\n}\n", "import { isSameUrlWithoutQueryOrHash } from '@inertiajs/core'\nimport { get } from 'lodash-es'\nimport { ReactNode, useEffect, useMemo, useRef, useState } from 'react'\nimport { router } from '.'\nimport usePage from './usePage'\n\nconst keysAreBeingReloaded = (only: string[], except: string[], keys: string[]): boolean => {\n if (only.length === 0 && except.length === 0) {\n return true\n }\n\n if (only.length > 0) {\n return keys.some((key) => only.includes(key))\n }\n\n return keys.some((key) => !except.includes(key))\n}\n\ninterface DeferredSlotProps {\n reloading: boolean\n}\n\ninterface DeferredProps {\n children: ReactNode | ((props: DeferredSlotProps) => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data: string | string[]\n}\n\nconst Deferred = ({ children, data, fallback }: DeferredProps) => {\n if (!data) {\n throw new Error('`<Deferred>` requires a `data` prop to be a string or array of strings')\n }\n\n const [loaded, setLoaded] = useState(false)\n const [reloading, setReloading] = useState(false)\n const activeReloads = useRef(new Set<object>())\n const pageProps = usePage().props\n const keys = useMemo(() => (Array.isArray(data) ? data : [data]), [data])\n\n useEffect(() => {\n const removeStartListener = router.on('start', (e) => {\n const visit = e.detail.visit\n\n if (\n visit.preserveState === true &&\n isSameUrlWithoutQueryOrHash(visit.url, window.location) &&\n keysAreBeingReloaded(visit.only, visit.except, keys)\n ) {\n activeReloads.current.add(visit)\n setReloading(true)\n }\n })\n\n const removeFinishListener = router.on('finish', (e) => {\n const visit = e.detail.visit\n\n if (activeReloads.current.has(visit)) {\n activeReloads.current.delete(visit)\n setReloading(activeReloads.current.size > 0)\n }\n })\n\n return () => {\n removeStartListener()\n removeFinishListener()\n activeReloads.current.clear()\n }\n }, [keys])\n\n useEffect(() => {\n setLoaded(keys.every((key) => get(pageProps, key) !== undefined))\n }, [pageProps, keys])\n\n const propsAreDefined = useMemo(() => keys.every((key) => get(pageProps, key) !== undefined), [keys, pageProps])\n\n if (loaded && propsAreDefined) {\n if (typeof children === 'function') {\n return children({ reloading })\n }\n\n return children\n }\n\n return typeof fallback === 'function' ? fallback() : fallback\n}\n\nDeferred.displayName = 'InertiaDeferred'\n\nexport default Deferred\n", "import { Page, PageProps, SharedPageProps } from '@inertiajs/core'\nimport { use } from 'react'\nimport PageContext from './PageContext'\n\nexport default function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps & SharedPageProps> {\n const page = use(PageContext)\n\n if (!page) {\n throw new Error('usePage must be used within the Inertia component')\n }\n\n return page as Page<TPageProps & SharedPageProps>\n}\n", "import {\n config,\n FormComponentProps,\n FormComponentRef,\n FormComponentResetSymbol,\n FormComponentSlotProps,\n FormDataConvertible,\n formDataToObject,\n isUrlMethodPair,\n mergeDataIntoQueryString,\n Method,\n resetFormFields,\n resolveUrlMethodPairComponent,\n UseFormUtils,\n VisitOptions,\n} from '@inertiajs/core'\nimport { NamedInputEvent, ValidationConfig } from 'laravel-precognition'\nimport { isEqual } from 'lodash-es'\nimport React, {\n createContext,\n createElement,\n FormEvent,\n forwardRef,\n ReactNode,\n use,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport useForm from './useForm'\n\n// Polyfill for startTransition to support React 16.9+\nconst deferStateUpdate = (callback: () => void) => {\n typeof React.startTransition === 'function' ? React.startTransition(callback) : setTimeout(callback, 0)\n}\n\ntype FormProps<TForm extends object = Record<string, any>> = FormComponentProps &\n Omit<React.FormHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> &\n Omit<React.AllHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> & {\n children: ReactNode | ((props: FormComponentSlotProps<TForm>) => ReactNode)\n }\n\ntype FormSubmitOptions = Omit<VisitOptions, 'data' | 'onPrefetched' | 'onPrefetching'>\ntype FormSubmitter = HTMLElement | null\n\nconst noop = () => undefined\n\nconst FormContext = createContext<FormComponentRef | undefined>(undefined)\n\nconst Form = forwardRef<FormComponentRef, FormProps>(\n (\n {\n action = '',\n method = 'get',\n headers = {},\n queryStringArrayFormat = 'brackets',\n errorBag = null,\n showProgress = true,\n transform = (data) => data,\n optimistic,\n options = {},\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onBefore = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n onCancelToken = noop,\n onSubmitComplete = noop,\n disableWhileProcessing = false,\n resetOnError = false,\n resetOnSuccess = false,\n setDefaultsOnSuccess = false,\n invalidateCacheTags = [],\n validateFiles = false,\n validationTimeout = 1500,\n withAllErrors = null,\n component = null,\n instant = false,\n children,\n ...props\n },\n ref,\n ) => {\n const getTransformedData = (): Record<string, FormDataConvertible> => {\n const [_url, data] = getUrlAndData()\n return transform(data)\n }\n\n const form = useForm<Record<string, any>>({})\n .withPrecognition(\n () => resolvedMethod,\n () => getUrlAndData()[0],\n )\n .setValidationTimeout(validationTimeout)\n\n if (validateFiles) {\n form.validateFiles()\n }\n\n if (withAllErrors ?? config.get('form.withAllErrors')) {\n form.withAllErrors()\n }\n\n form.transform(getTransformedData)\n\n const formElement = useRef<HTMLFormElement>(undefined)\n\n const resolvedMethod = useMemo(() => {\n return isUrlMethodPair(action) ? action.method : (method.toLowerCase() as Method)\n }, [action, method])\n\n const resolvedComponent = useMemo(() => {\n if (component) {\n return component\n }\n\n if (instant && isUrlMethodPair(action)) {\n return resolveUrlMethodPairComponent(action)\n }\n\n return null\n }, [component, instant, action])\n\n const [isDirty, setIsDirty] = useState(false)\n const defaultData = useRef<FormData>(new FormData())\n\n const getFormData = (submitter?: FormSubmitter): FormData => new FormData(formElement.current, submitter)\n\n // Convert the FormData to an object because we can't compare two FormData\n // instances directly (which is needed for isDirty), mergeDataIntoQueryString()\n // expects an object, and submitting a FormData instance directly causes problems with nested objects.\n const getData = (submitter?: FormSubmitter): Record<string, FormDataConvertible> =>\n formDataToObject(getFormData(submitter))\n\n const getUrlAndData = (submitter?: FormSubmitter): [string, Record<string, FormDataConvertible>] => {\n return mergeDataIntoQueryString(\n resolvedMethod,\n isUrlMethodPair(action) ? action.url : action,\n getData(submitter),\n queryStringArrayFormat,\n )\n }\n\n const updateDirtyState = (event: Event) => {\n if (event.type === 'reset' && (event as CustomEvent).detail?.[FormComponentResetSymbol]) {\n // When the form is reset programmatically, prevent native reset behavior\n event.preventDefault()\n }\n\n deferStateUpdate(() =>\n setIsDirty(event.type === 'reset' ? false : !isEqual(getData(), formDataToObject(defaultData.current))),\n )\n }\n\n const clearErrors = (...names: string[]) => {\n form.clearErrors(...names)\n\n return form\n }\n\n useEffect(() => {\n defaultData.current = getFormData()\n\n form.setDefaults(getData())\n\n const formEvents: Array<keyof HTMLElementEventMap> = ['input', 'change', 'reset']\n\n formEvents.forEach((e) => formElement.current!.addEventListener(e, updateDirtyState))\n\n return () => {\n formEvents.forEach((e) => formElement.current?.removeEventListener(e, updateDirtyState))\n }\n }, [])\n\n useEffect(() => {\n form.setValidationTimeout(validationTimeout)\n }, [validationTimeout])\n\n useEffect(() => {\n if (validateFiles) {\n form.validateFiles()\n } else {\n form.withoutFileValidation()\n }\n }, [validateFiles])\n\n const reset = (...fields: string[]) => {\n if (formElement.current) {\n resetFormFields(formElement.current, defaultData.current, fields)\n }\n\n form.reset(...fields)\n }\n\n const resetAndClearErrors = (...fields: string[]) => {\n clearErrors(...fields)\n reset(...fields)\n }\n\n const maybeReset = (resetOption: boolean | string[]) => {\n if (!resetOption) {\n return\n }\n\n if (resetOption === true) {\n reset()\n } else if (resetOption.length > 0) {\n reset(...resetOption)\n }\n }\n\n const submit = (submitter?: FormSubmitter) => {\n const [url, data] = getUrlAndData(submitter)\n const formTarget = (submitter as HTMLButtonElement | HTMLInputElement | null)?.getAttribute('formtarget')\n\n if (formTarget === '_blank' && resolvedMethod === 'get') {\n window.open(url, '_blank')\n return\n }\n\n const submitOptions: FormSubmitOptions = {\n headers,\n queryStringArrayFormat,\n errorBag,\n showProgress,\n invalidateCacheTags,\n component: resolvedComponent,\n optimistic: optimistic ? (pageProps) => optimistic(pageProps, data) : undefined,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess: (...args) => {\n onSuccess(...args)\n onSubmitComplete({\n reset,\n defaults,\n })\n maybeReset(resetOnSuccess)\n\n if (setDefaultsOnSuccess === true) {\n defaults()\n }\n },\n onError(...args) {\n onError(...args)\n maybeReset(resetOnError)\n },\n ...options,\n }\n\n // We need transform because we can't override the default data with different keys (by design)\n form.transform(() => transform(data))\n form.submit(resolvedMethod, url, submitOptions)\n\n // Reset the transformer back so the submitter is not used for future submissions\n form.transform(getTransformedData)\n }\n\n const defaults = () => {\n defaultData.current = getFormData()\n setIsDirty(false)\n }\n\n const exposed: FormComponentSlotProps = {\n errors: form.errors,\n hasErrors: form.hasErrors,\n processing: form.processing,\n progress: form.progress,\n wasSuccessful: form.wasSuccessful,\n recentlySuccessful: form.recentlySuccessful,\n isDirty,\n clearErrors,\n resetAndClearErrors,\n setError: form.setError,\n reset,\n submit,\n defaults,\n getData,\n getFormData,\n\n // Precognition\n validator: () => form.validator(),\n validating: form.validating,\n valid: form.valid,\n invalid: form.invalid,\n validate: (field?: string | NamedInputEvent | ValidationConfig, config?: ValidationConfig) =>\n form.validate(...UseFormUtils.mergeHeadersForValidation(field, config, headers)),\n touch: form.touch,\n touched: form.touched,\n }\n\n useImperativeHandle(ref, () => exposed, [form, isDirty, submit])\n\n const formNode = createElement(\n 'form',\n {\n ...props,\n ref: formElement,\n action: isUrlMethodPair(action) ? action.url : action,\n method: resolvedMethod,\n onSubmit: (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n submit((event.nativeEvent as SubmitEvent).submitter)\n },\n inert: disableWhileProcessing && form.processing,\n },\n typeof children === 'function' ? children(exposed) : children,\n )\n\n return createElement(FormContext.Provider, { value: exposed }, formNode)\n },\n)\n\nForm.displayName = 'InertiaForm'\n\nexport function useFormContext<TForm extends object = Record<string, any>>(): FormComponentRef<TForm> | undefined {\n return use(FormContext) as FormComponentRef<TForm> | undefined\n}\n\nexport default Form as {\n <TForm extends object = Record<string, any>>(\n props: FormProps<TForm> & React.RefAttributes<FormComponentRef<TForm>>,\n ): React.ReactElement\n displayName: string\n}\n", "import {\n CancelToken,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n Method,\n OptimisticCallback,\n Progress,\n RequestPayload,\n router,\n UrlMethodPair,\n UseFormArguments,\n UseFormSubmitArguments,\n UseFormSubmitOptions,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n VisitOptions,\n} from '@inertiajs/core'\nimport type { NamedInputEvent, PrecognitionPath, ValidationConfig, Validator } from 'laravel-precognition'\nimport { cloneDeep } from 'lodash-es'\nimport { useCallback, useRef, useState } from 'react'\nimport { useIsomorphicLayoutEffect } from './react'\nimport useFormState, { SetDataAction, SetDataByKeyValuePair, SetDataByMethod, SetDataByObject } from './useFormState'\nimport useRemember from './useRemember'\n\n// Re-export types that were moved to useFormState\nexport { SetDataAction, SetDataByKeyValuePair, SetDataByMethod, SetDataByObject }\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface InertiaFormProps<TForm extends Record<string, any>> {\n data: TForm\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n setData: SetDataAction<TForm>\n transform: (callback: UseFormTransformCallback<TForm>) => void\n setDefaults: {\n (): void\n <T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n (fields: Partial<TForm>): void\n }\n reset: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n clearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n resetAndClearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n setError: {\n <K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n (errors: FormDataErrors<TForm>): void\n }\n submit: (...args: UseFormSubmitArguments) => void\n get: (url: string, options?: UseFormSubmitOptions) => void\n post: (url: string, options?: UseFormSubmitOptions) => void\n put: (url: string, options?: UseFormSubmitOptions) => void\n patch: (url: string, options?: UseFormSubmitOptions) => void\n delete: (url: string, options?: UseFormSubmitOptions) => void\n cancel: () => void\n dontRemember: <K extends FormDataKeys<TForm>>(...fields: K[]) => InertiaFormProps<TForm>\n optimistic: <TProps>(callback: OptimisticCallback<TProps>) => InertiaFormProps<TForm>\n withPrecognition: (...args: UseFormWithPrecognitionArguments) => InertiaPrecognitiveFormProps<TForm>\n}\n\nexport interface InertiaFormValidationProps<TForm extends Record<string, any>> {\n invalid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n setValidationTimeout: (duration: number) => InertiaPrecognitiveFormProps<TForm>\n touch: <K extends FormDataKeys<TForm>>(\n field: K | NamedInputEvent | Array<K>,\n ...fields: K[]\n ) => InertiaPrecognitiveFormProps<TForm>\n touched: <K extends FormDataKeys<TForm>>(field?: K) => boolean\n valid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n validate: <K extends FormDataKeys<TForm> | PrecognitionPath<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ) => InertiaPrecognitiveFormProps<TForm>\n validateFiles: () => InertiaPrecognitiveFormProps<TForm>\n validating: boolean\n validator: () => Validator\n withAllErrors: () => InertiaPrecognitiveFormProps<TForm>\n withoutFileValidation: () => InertiaPrecognitiveFormProps<TForm>\n // Backward compatibility for easy migration from the original Precognition libraries\n setErrors: (errors: FormDataErrors<TForm>) => InertiaPrecognitiveFormProps<TForm>\n forgetError: <K extends FormDataKeys<TForm> | NamedInputEvent>(field: K) => InertiaPrecognitiveFormProps<TForm>\n}\n\nexport type InertiaForm<TForm extends Record<string, any>> = InertiaFormProps<TForm>\nexport type InertiaPrecognitiveFormProps<TForm extends Record<string, any>> = InertiaFormProps<TForm> &\n InertiaFormValidationProps<TForm>\n\nexport default function useForm<TForm extends FormDataType<TForm>>(\n method: Method | (() => Method),\n url: string | (() => string),\n data: TForm | (() => TForm),\n): InertiaPrecognitiveFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n urlMethodPair: UrlMethodPair | (() => UrlMethodPair),\n data: TForm | (() => TForm),\n): InertiaPrecognitiveFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKey: string,\n data: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(data: TForm | (() => TForm)): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n ...args: UseFormArguments<TForm>\n): InertiaFormProps<TForm> | InertiaPrecognitiveFormProps<TForm> {\n const { rememberKey, data, precognitionEndpoint } = UseFormUtils.parseUseFormArguments<TForm>(...args)\n\n // Resolve initial data for remember functionality hooks\n const initialDefaults = typeof data === 'function' ? cloneDeep(data()) : cloneDeep(data)\n\n const cancelToken = useRef<CancelToken | null>(null)\n const excludeKeysRef = useRef<FormDataKeys<TForm>[]>([])\n const pendingOptimisticRef = useRef<OptimisticCallback | null>(null)\n\n // For remember functionality, we need custom state hooks\n const useDataState = rememberKey\n ? () => useRemember<TForm>(initialDefaults, `${rememberKey}:data`, excludeKeysRef)\n : undefined\n\n const useErrorsState = rememberKey\n ? () => useRemember<FormDataErrors<TForm>>({} as FormDataErrors<TForm>, `${rememberKey}:errors`)\n : undefined\n\n const {\n form: baseForm,\n setDefaultsState,\n transformRef,\n precognitionEndpointRef,\n isMounted,\n setProcessing,\n setProgress,\n markAsSuccessful,\n clearErrors,\n setError,\n defaultsCalledInOnSuccessRef,\n resetBeforeSubmit,\n finishProcessing,\n } = useFormState<TForm>({\n data,\n precognitionEndpoint,\n useDataState,\n useErrorsState,\n })\n\n // Handle dataAsDefaults pattern for setDefaults synchronization\n // When setDefaults() is called without args immediately after setData(),\n // dataRef.current may be stale. This layout effect ensures the current\n // data state is used as defaults.\n const [dataAsDefaults, setDataAsDefaults] = useState(false)\n\n const originalSetDefaults = baseForm.setDefaults\n baseForm.setDefaults = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) => {\n if (typeof fieldOrFields === 'undefined') {\n setDataAsDefaults(true)\n }\n\n return originalSetDefaults(fieldOrFields as any, maybeValue as any)\n },\n [originalSetDefaults],\n ) as typeof baseForm.setDefaults\n\n useIsomorphicLayoutEffect(() => {\n if (!dataAsDefaults) {\n return\n }\n\n if (baseForm.isDirty) {\n setDefaultsState(baseForm.data)\n }\n\n setDataAsDefaults(false)\n }, [dataAsDefaults])\n\n const submit = useCallback(\n (...args: UseFormSubmitArguments) => {\n const { method, url, options } = UseFormUtils.parseSubmitArguments(args, precognitionEndpointRef.current)\n\n defaultsCalledInOnSuccessRef.current = false\n\n const _options: VisitOptions = {\n ...options,\n onCancelToken: (token) => {\n cancelToken.current = token\n\n return options.onCancelToken?.(token)\n },\n onBefore: (visit) => {\n resetBeforeSubmit()\n\n return options.onBefore?.(visit)\n },\n onStart: (visit) => {\n setProcessing(true)\n\n return options.onStart?.(visit)\n },\n onProgress: (event) => {\n setProgress(event || null)\n\n return options.onProgress?.(event)\n },\n onSuccess: async (page) => {\n if (isMounted.current) {\n markAsSuccessful()\n }\n\n const onSuccess = options.onSuccess ? await options.onSuccess(page) : null\n\n if (isMounted.current && !defaultsCalledInOnSuccessRef.current) {\n baseForm.setData((data: TForm) => {\n setDefaultsState(cloneDeep(data))\n return data\n })\n }\n\n return onSuccess\n },\n onError: (errors) => {\n if (isMounted.current) {\n clearErrors()\n setError(errors as FormDataErrors<TForm>)\n }\n\n return options.onError?.(errors)\n },\n onCancel: () => {\n return options.onCancel?.()\n },\n onFinish: (visit) => {\n if (isMounted.current) {\n finishProcessing()\n }\n\n cancelToken.current = null\n\n return options.onFinish?.(visit)\n },\n }\n\n _options.optimistic = _options.optimistic ?? pendingOptimisticRef.current ?? undefined\n pendingOptimisticRef.current = null\n\n const transformedData = transformRef.current(baseForm.data) as RequestPayload\n\n if (method === 'delete') {\n router.delete(url, { ..._options, data: transformedData })\n } else {\n router[method](url, transformedData, _options)\n }\n },\n [baseForm.data, clearErrors, setError, transformRef],\n )\n\n const cancel = useCallback(() => {\n if (cancelToken.current) {\n cancelToken.current.cancel()\n }\n }, [])\n\n const createSubmitMethod =\n (method: Method) =>\n (url: string, options: VisitOptions = {}) => {\n submit(method, url, options)\n }\n\n // Add useForm-specific methods to the form object (mutate in place like Svelte)\n Object.assign(baseForm, {\n submit,\n get: createSubmitMethod('get'),\n post: createSubmitMethod('post'),\n put: createSubmitMethod('put'),\n patch: createSubmitMethod('patch'),\n delete: createSubmitMethod('delete'),\n cancel,\n dontRemember: <K extends FormDataKeys<TForm>>(...keys: K[]) => {\n excludeKeysRef.current = keys\n return form\n },\n\n optimistic: <TProps>(callback: OptimisticCallback<TProps>) => {\n pendingOptimisticRef.current = callback as OptimisticCallback\n return form\n },\n })\n\n // Cast to the full form type (baseForm now has submit methods)\n const form = baseForm as unknown as InertiaFormProps<TForm>\n\n // Wrap withPrecognition to return the correct type with submit methods\n const originalWithPrecognition = baseForm.withPrecognition\n form.withPrecognition = (...args: UseFormWithPrecognitionArguments): InertiaPrecognitiveFormProps<TForm> => {\n originalWithPrecognition(...args)\n return form as InertiaPrecognitiveFormProps<TForm>\n }\n\n return precognitionEndpointRef.current ? (form as InertiaPrecognitiveFormProps<TForm>) : form\n}\n", "import { DependencyList, EffectCallback, useEffect, useLayoutEffect } from 'react'\n\n// Inspired by react-redux, this hook uses useLayoutEffect in the browser, and useEffect\n// when using SSR. Currently, useLayoutEffect doesn't work when rendered on the server.\nexport function useIsomorphicLayoutEffect(effect: EffectCallback, deps?: DependencyList): void {\n typeof window === 'undefined' ? useEffect(effect, deps) : useLayoutEffect(effect, deps)\n}\n", "import {\n Errors,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataValues,\n Progress,\n UrlMethodPair,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n} from '@inertiajs/core'\nimport {\n createValidator,\n NamedInputEvent,\n resolveName,\n toSimpleValidationErrors,\n ValidationConfig,\n Validator,\n} from 'laravel-precognition'\nimport { cloneDeep, get, has, isEqual, set } from 'lodash-es'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { config } from '.'\n\nexport type SetDataByObject<TForm> = (data: Partial<TForm>) => void\nexport type SetDataByMethod<TForm> = (data: (previousData: TForm) => TForm) => void\nexport type SetDataByKeyValuePair<TForm> = <K extends FormDataKeys<TForm>>(\n key: K,\n value: FormDataValues<TForm, K>,\n) => void\nexport type SetDataAction<TForm extends Record<any, any>> = SetDataByObject<TForm> &\n SetDataByMethod<TForm> &\n SetDataByKeyValuePair<TForm>\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface FormStateProps<TForm extends object> {\n data: TForm\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n setData: SetDataAction<TForm>\n transform: (callback: UseFormTransformCallback<TForm>) => void\n setDefaults: {\n (): void\n <T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n (fields: Partial<TForm>): void\n }\n reset: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n clearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n resetAndClearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n setError: {\n <K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n (errors: FormDataErrors<TForm>): void\n }\n withPrecognition: (...args: UseFormWithPrecognitionArguments) => FormStateWithPrecognition<TForm>\n}\n\nexport interface FormStateValidationProps<TForm extends object> {\n invalid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n setValidationTimeout: (duration: number) => FormStateWithPrecognition<TForm>\n touch: <K extends FormDataKeys<TForm>>(\n field: K | NamedInputEvent | Array<K>,\n ...fields: K[]\n ) => FormStateWithPrecognition<TForm>\n touched: <K extends FormDataKeys<TForm>>(field?: K) => boolean\n valid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n validate: <K extends FormDataKeys<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ) => FormStateWithPrecognition<TForm>\n validateFiles: () => FormStateWithPrecognition<TForm>\n validating: boolean\n validator: () => Validator\n withAllErrors: () => FormStateWithPrecognition<TForm>\n withoutFileValidation: () => FormStateWithPrecognition<TForm>\n setErrors: (errors: FormDataErrors<TForm>) => FormStateWithPrecognition<TForm>\n forgetError: <K extends FormDataKeys<TForm> | NamedInputEvent>(field: K) => FormStateWithPrecognition<TForm>\n}\n\nexport type FormState<TForm extends object> = FormStateProps<TForm>\nexport type FormStateWithPrecognition<TForm extends object> = FormStateProps<TForm> & FormStateValidationProps<TForm>\n\nexport interface UseFormStateOptions<TForm extends object> {\n data: TForm | (() => TForm)\n precognitionEndpoint?: (() => UrlMethodPair) | null\n useDataState?: () => [TForm, React.Dispatch<React.SetStateAction<TForm>>]\n useErrorsState?: () => [FormDataErrors<TForm>, React.Dispatch<React.SetStateAction<FormDataErrors<TForm>>>]\n}\n\nexport interface UseFormStateReturn<TForm extends object> {\n form: FormState<TForm>\n setDefaultsState: React.Dispatch<React.SetStateAction<TForm>>\n transformRef: React.MutableRefObject<UseFormTransformCallback<TForm>>\n precognitionEndpointRef: React.MutableRefObject<(() => UrlMethodPair) | null>\n dataRef: React.MutableRefObject<TForm>\n isMounted: React.MutableRefObject<boolean>\n setProcessing: React.Dispatch<React.SetStateAction<boolean>>\n setProgress: React.Dispatch<React.SetStateAction<Progress | null>>\n markAsSuccessful: () => void\n clearErrors: (...fields: string[]) => void\n setError: (fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: ErrorValue) => void\n defaultsCalledInOnSuccessRef: React.MutableRefObject<boolean>\n resetBeforeSubmit: () => void\n finishProcessing: () => void\n withAllErrors: { enabled: () => boolean; enable: () => void }\n}\n\nexport default function useFormState<TForm extends object>(\n options: UseFormStateOptions<TForm>,\n): UseFormStateReturn<TForm> {\n const { data: dataOption, useDataState, useErrorsState } = options\n\n const isDataFunction = typeof dataOption === 'function'\n const resolveData = () => (isDataFunction ? (dataOption as () => TForm)() : dataOption)\n\n const initialData = cloneDeep(resolveData())\n\n const isMounted = useRef(false)\n const precognitionEndpointRef = useRef(options.precognitionEndpoint ?? null)\n\n const [defaults, setDefaultsState] = useState(cloneDeep(initialData))\n\n const [data, setData] = useDataState ? useDataState() : useState(cloneDeep(initialData))\n const [errors, setErrors] = useErrorsState ? useErrorsState() : useState({} as FormDataErrors<TForm>)\n\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\n const recentlySuccessfulTimeoutId = useRef<number>(undefined)\n const transformRef = useRef<UseFormTransformCallback<TForm>>((data) => data)\n const isDirty = useMemo(() => !isEqual(data, defaults), [data, defaults])\n const defaultsCalledInOnSuccessRef = useRef(false)\n\n const validatorRef = useRef<Validator | null>(null)\n const [validating, setValidating] = useState(false)\n const [touchedFields, setTouchedFields] = useState<string[]>([])\n const [validFields, setValidFields] = useState<string[]>([])\n const withAllErrorsRef = useRef<boolean | null>(null)\n const withAllErrorsEnabled = () => withAllErrorsRef.current ?? config.get('form.withAllErrors')\n\n const dataRef = useRef(data)\n\n useEffect(() => {\n dataRef.current = data\n })\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n const setDataFunction = useCallback(\n (keyOrData: FormDataKeys<TForm> | Function | Partial<TForm>, maybeValue?: any) => {\n if (typeof keyOrData === 'string') {\n setData((data) => set(cloneDeep(data), keyOrData, maybeValue))\n } else if (typeof keyOrData === 'function') {\n setData((data) => keyOrData(data))\n } else {\n setData(keyOrData as TForm)\n }\n },\n [setData],\n )\n\n const setDefaultsFunction = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) => {\n if (isDataFunction) {\n throw new Error('You cannot call `defaults()` when using a function to define your form data.')\n }\n\n defaultsCalledInOnSuccessRef.current = true\n\n let newDefaults = {} as TForm\n\n if (typeof fieldOrFields === 'undefined') {\n newDefaults = { ...dataRef.current }\n setDefaultsState(dataRef.current)\n } else {\n setDefaultsState((defaults) => {\n newDefaults =\n typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign(cloneDeep(defaults), fieldOrFields)\n\n return newDefaults as TForm\n })\n }\n\n validatorRef.current?.defaults(newDefaults as Record<string, unknown>)\n },\n [setDefaultsState],\n )\n\n const reset = useCallback(\n (...fields: string[]) => {\n const resolvedData = isDataFunction ? cloneDeep(resolveData()) : defaults\n const clonedData = cloneDeep(resolvedData)\n\n if (fields.length === 0) {\n if (isDataFunction) {\n setDefaultsState(clonedData)\n }\n setData(clonedData)\n } else {\n if (isDataFunction) {\n setDefaultsState((currentDefaults) => {\n const newDefaults = cloneDeep(currentDefaults)\n ;(fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(clonedData, key))\n .forEach((key) => {\n set(newDefaults, key, get(clonedData, key))\n })\n return newDefaults\n })\n }\n\n setData((data) =>\n (fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(clonedData, key))\n .reduce(\n (carry, key) => {\n return set(carry, key, get(clonedData, key))\n },\n { ...data } as TForm,\n ),\n )\n }\n\n validatorRef.current?.reset(...fields)\n },\n [setData, defaults],\n )\n\n const setError = useCallback(\n (fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: ErrorValue) => {\n setErrors((errors) => {\n const newErrors = {\n ...errors,\n ...(typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields),\n }\n setHasErrors(Object.keys(newErrors).length > 0)\n\n validatorRef.current?.setErrors(newErrors)\n\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\n if (validatorRef.current) {\n if (fields.length === 0) {\n validatorRef.current.setErrors({})\n } else {\n fields.forEach(validatorRef.current.forgetError)\n }\n }\n\n return newErrors as FormDataErrors<TForm>\n })\n },\n [setErrors, setHasErrors],\n )\n\n const resetAndClearErrors = useCallback(\n (...fields: string[]) => {\n reset(...fields)\n clearErrors(...fields)\n },\n [reset, clearErrors],\n )\n\n const markAsSuccessful = useCallback(() => {\n clearErrors()\n setWasSuccessful(true)\n setRecentlySuccessful(true)\n\n recentlySuccessfulTimeoutId.current = window.setTimeout(() => {\n if (isMounted.current) {\n setRecentlySuccessful(false)\n }\n }, config.get('form.recentlySuccessfulDuration'))\n }, [clearErrors, setWasSuccessful, setRecentlySuccessful])\n\n const resetBeforeSubmit = useCallback(() => {\n setWasSuccessful(false)\n setRecentlySuccessful(false)\n clearTimeout(recentlySuccessfulTimeoutId.current)\n }, [setWasSuccessful, setRecentlySuccessful])\n\n const finishProcessing = useCallback(() => {\n setProcessing(false)\n setProgress(null)\n }, [setProcessing, setProgress])\n\n const transformFunction = useCallback((callback: UseFormTransformCallback<TForm>) => {\n transformRef.current = callback\n }, [])\n\n const tap = <T>(value: T, callback: (value: T) => unknown): T => {\n callback(value)\n return value\n }\n\n const valid = useCallback(\n <K extends FormDataKeys<TForm>>(field: K) => validFields.includes(field as string),\n [validFields],\n )\n\n const invalid = useCallback(<K extends FormDataKeys<TForm>>(field: K) => field in errors, [errors])\n\n const touched = useCallback(\n <K extends FormDataKeys<TForm>>(field?: K) =>\n typeof field === 'string' ? touchedFields.includes(field as string) : touchedFields.length > 0,\n [touchedFields],\n )\n\n const form = {\n data,\n 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 } as FormState<TForm>\n\n const validate = (field?: string | NamedInputEvent | ValidationConfig, config?: ValidationConfig) => {\n if (typeof field === 'object' && !('target' in field)) {\n config = field\n field = undefined\n }\n\n if (field === undefined) {\n validatorRef.current!.validate(config)\n } else {\n const fieldName = resolveName(field)\n const transformedData = transformRef.current(dataRef.current) as Record<string, unknown>\n validatorRef.current!.validate(fieldName, get(transformedData, fieldName), config)\n }\n\n return form\n }\n\n const withPrecognition = (...args: UseFormWithPrecognitionArguments): FormStateWithPrecognition<TForm> => {\n precognitionEndpointRef.current = UseFormUtils.createWayfinderCallback(...args)\n\n if (!validatorRef.current) {\n const validator = createValidator(\n (client) => {\n const { method, url } = precognitionEndpointRef.current!()\n const currentData = dataRef.current\n const transformedData = transformRef.current(currentData) as Record<string, unknown>\n return client[method](url, transformedData)\n },\n cloneDeep(defaults as Record<string, unknown>),\n )\n\n validatorRef.current = validator\n\n validator\n .on('validatingChanged', () => {\n setValidating(validator.validating())\n })\n .on('validatedChanged', () => {\n setValidFields(validator.valid())\n })\n .on('touchedChanged', () => {\n setTouchedFields(validator.touched())\n })\n .on('errorsChanged', () => {\n const validationErrors = withAllErrorsEnabled()\n ? validator.errors()\n : toSimpleValidationErrors(validator.errors())\n\n setErrors(validationErrors as FormDataErrors<TForm>)\n setHasErrors(Object.keys(validationErrors).length > 0)\n setValidFields(validator.valid())\n })\n }\n\n const precognitiveForm = Object.assign(form, {\n validating,\n validator: () => validatorRef.current!,\n valid,\n invalid,\n touched,\n withoutFileValidation: () => tap(precognitiveForm, () => validatorRef.current?.withoutFileValidation()),\n touch: (\n field: FormDataKeys<TForm> | NamedInputEvent | Array<FormDataKeys<TForm>>,\n ...fields: FormDataKeys<TForm>[]\n ) => {\n if (Array.isArray(field)) {\n validatorRef.current?.touch(field)\n } else if (typeof field === 'string') {\n validatorRef.current?.touch([field, ...fields])\n } else {\n validatorRef.current?.touch(field)\n }\n\n return precognitiveForm\n },\n withAllErrors: () => tap(precognitiveForm, () => (withAllErrorsRef.current = true)),\n setValidationTimeout: (duration: number) =>\n tap(precognitiveForm, () => validatorRef.current?.setTimeout(duration)),\n validateFiles: () => tap(precognitiveForm, () => validatorRef.current?.validateFiles()),\n validate,\n setErrors: (errors: FormDataErrors<TForm>) => tap(precognitiveForm, () => form.setError(errors)),\n forgetError: (field: FormDataKeys<TForm> | NamedInputEvent) =>\n tap(precognitiveForm, () =>\n form.clearErrors(resolveName(field as string | NamedInputEvent) as FormDataKeys<TForm>),\n ),\n }) as FormStateWithPrecognition<TForm>\n\n return precognitiveForm\n }\n\n form.withPrecognition = withPrecognition\n\n if (precognitionEndpointRef.current) {\n form.withPrecognition(precognitionEndpointRef.current)\n }\n\n return {\n form,\n setDefaultsState,\n transformRef,\n precognitionEndpointRef,\n dataRef,\n isMounted,\n setProcessing,\n setProgress,\n markAsSuccessful,\n clearErrors,\n setError,\n defaultsCalledInOnSuccessRef,\n resetBeforeSubmit,\n finishProcessing,\n withAllErrors: {\n enabled: withAllErrorsEnabled,\n enable: () => {\n withAllErrorsRef.current = true\n },\n },\n }\n}\n", "import { router } from '@inertiajs/core'\nimport { Dispatch, MutableRefObject, SetStateAction, useEffect, useState } from 'react'\n\nexport default function useRemember<State>(\n initialState: State,\n key?: string,\n excludeKeysRef?: MutableRefObject<string[]>,\n): [State, Dispatch<SetStateAction<State>>] {\n const [state, setState] = useState(() => {\n const restored = router.restore(key) as State\n\n return restored !== undefined ? restored : initialState\n })\n\n useEffect(() => {\n const keys = excludeKeysRef?.current\n if (keys && keys.length > 0 && typeof state === 'object' && state !== null) {\n const filtered = { ...state } as Record<string, unknown>\n keys.forEach((k) => delete filtered[k])\n router.remember(filtered, key)\n } else {\n router.remember(state, key)\n }\n }, [state, key])\n\n return [state, setState]\n}\n", "import { escape } from 'lodash-es'\nimport React, { FunctionComponent, ReactElement, ReactNode, use, useEffect, useMemo } from 'react'\nimport HeadContext from './HeadContext'\n\ntype InertiaHeadProps = {\n title?: string\n children?: ReactNode\n}\n\ntype InertiaHead = FunctionComponent<InertiaHeadProps>\n\nconst Head: InertiaHead = function ({ children, title }) {\n const headManager = use(HeadContext)\n const provider = useMemo(() => headManager!.createProvider(), [headManager])\n const isServer = typeof window === 'undefined'\n\n useEffect(() => {\n provider.reconnect()\n provider.update(renderNodes(children))\n return () => {\n provider.disconnect()\n }\n }, [provider, children, title])\n\n function isUnaryTag(node: ReactElement<any>) {\n return (\n typeof node.type === 'string' &&\n [\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n ].indexOf(node.type) > -1\n )\n }\n\n function renderTagStart(node: ReactElement<any>): string {\n const attrs = Object.keys(node.props).reduce((carry, name) => {\n if (['head-key', 'children', 'dangerouslySetInnerHTML'].includes(name)) {\n return carry\n }\n\n const value = String(node.props[name])\n\n if (value === '') {\n return carry + ` ${name}`\n }\n\n return carry + ` ${name}=\"${escape(value)}\"`\n }, '')\n\n return `<${String(node.type)}${attrs}>`\n }\n\n function renderTagChildren(node: ReactElement<any>): string {\n const { children } = node.props\n\n if (typeof children === 'string') {\n return children\n }\n\n if (Array.isArray(children)) {\n return children.reduce((html, child) => html + renderTag(child), '')\n }\n\n return ''\n }\n\n function renderTag(node: ReactElement<any>): string {\n let html = renderTagStart(node)\n\n if (node.props.children) {\n html += renderTagChildren(node)\n }\n\n if (node.props.dangerouslySetInnerHTML) {\n html += node.props.dangerouslySetInnerHTML.__html\n }\n\n if (!isUnaryTag(node)) {\n html += `</${String(node.type)}>`\n }\n\n return html\n }\n\n function ensureNodeHasInertiaProp(node: ReactElement<any>) {\n return React.cloneElement(node, {\n 'data-inertia': node.props['head-key'] !== undefined ? node.props['head-key'] : '',\n })\n }\n\n function renderNode(node: ReactElement<any>) {\n return renderTag(ensureNodeHasInertiaProp(node))\n }\n\n function renderNodes(nodes: ReactNode) {\n const elements = React.Children.toArray(nodes)\n .filter((node) => node)\n .map((node) => renderNode(node as ReactElement<any>))\n\n if (title && !elements.find((tag) => tag.startsWith('<title'))) {\n elements.push(`<title data-inertia=\"\">${title}</title>`)\n }\n\n return elements\n }\n\n if (isServer) {\n provider.update(renderNodes(children))\n }\n\n return null\n}\nexport default Head\n", "import {\n getScrollableParent,\n InfiniteScrollActionSlotProps,\n InfiniteScrollComponentBaseProps,\n InfiniteScrollRef,\n InfiniteScrollSlotProps,\n ReloadOptions,\n useInfiniteScroll,\n UseInfiniteScrollProps,\n} from '@inertiajs/core'\nimport React, {\n createElement,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nconst resolveHTMLElement = (\n value: string | React.RefObject<HTMLElement | null> | null,\n fallback: HTMLElement | null,\n): HTMLElement | null => {\n if (!value) {\n return fallback\n }\n\n // React ref object { current: HTMLElement | null }\n if (value && typeof value === 'object' && 'current' in value) {\n return value.current\n }\n\n // CSS Selector string\n if (typeof value === 'string') {\n return document.querySelector(value) as HTMLElement | null\n }\n\n return fallback\n}\n\n// Helper function to render slot content\nconst renderSlot = (\n slotContent: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode) | undefined,\n slotProps: InfiniteScrollActionSlotProps,\n fallback: React.ReactNode = null,\n): React.ReactNode => {\n if (!slotContent) {\n return fallback\n }\n\n return typeof slotContent === 'function' ? slotContent(slotProps) : slotContent\n}\n\ninterface ComponentProps\n extends\n InfiniteScrollComponentBaseProps,\n Omit<React.HTMLAttributes<HTMLElement>, keyof InfiniteScrollComponentBaseProps | 'children'> {\n children?: React.ReactNode | ((props: InfiniteScrollSlotProps) => React.ReactNode)\n\n // Element references for custom trigger detection (when you want different trigger elements)\n startElement?: string | React.RefObject<HTMLElement | null>\n endElement?: string | React.RefObject<HTMLElement | null>\n itemsElement?: string | React.RefObject<HTMLElement | null>\n\n // Render slots for UI components (when you want custom loading/action components)\n previous?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n next?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n loading?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n\n // Request options\n params?: ReloadOptions\n\n onlyNext?: boolean\n onlyPrevious?: boolean\n}\n\nconst InfiniteScroll = forwardRef<InfiniteScrollRef, ComponentProps>(\n (\n {\n data,\n buffer = 0,\n as = 'div',\n manual = false,\n manualAfter = 0,\n preserveUrl = false,\n reverse = false,\n autoScroll,\n children,\n startElement,\n endElement,\n itemsElement,\n previous,\n next,\n loading,\n params = {},\n onlyNext = false,\n onlyPrevious = false,\n ...props\n },\n ref,\n ) => {\n const [startElementFromRef, setStartElementFromRef] = useState<HTMLElement | null>(null)\n const startElementRef = useCallback((node: HTMLElement | null) => setStartElementFromRef(node), [])\n\n const [endElementFromRef, setEndElementFromRef] = useState<HTMLElement | null>(null)\n const endElementRef = useCallback((node: HTMLElement | null) => setEndElementFromRef(node), [])\n\n const [itemsElementFromRef, setItemsElementFromRef] = useState<HTMLElement | null>(null)\n const itemsElementRef = useCallback((node: HTMLElement | null) => setItemsElementFromRef(node), [])\n\n const [loadingPrevious, setLoadingPrevious] = useState(false)\n const [loadingNext, setLoadingNext] = useState(false)\n const [requestCount, setRequestCount] = useState(0)\n const [hasPreviousPage, setHasPreviousPage] = useState(false)\n const [hasNextPage, setHasNextPage] = useState(false)\n\n const [resolvedStartElement, setResolvedStartElement] = useState<HTMLElement | null>(null)\n const [resolvedEndElement, setResolvedEndElement] = useState<HTMLElement | null>(null)\n const [resolvedItemsElement, setResolvedItemsElement] = useState<HTMLElement | null>(null)\n\n // Update elements when refs or props change\n useEffect(() => {\n const element = startElement ? resolveHTMLElement(startElement, startElementFromRef) : startElementFromRef\n setResolvedStartElement(element)\n }, [startElement, startElementFromRef])\n\n useEffect(() => {\n const element = endElement ? resolveHTMLElement(endElement, endElementFromRef) : endElementFromRef\n setResolvedEndElement(element)\n }, [endElement, endElementFromRef])\n\n useEffect(() => {\n const element = itemsElement ? resolveHTMLElement(itemsElement, itemsElementFromRef) : itemsElementFromRef\n setResolvedItemsElement(element)\n }, [itemsElement, itemsElementFromRef])\n\n const scrollableParent = useMemo(() => getScrollableParent(resolvedItemsElement), [resolvedItemsElement])\n\n const callbackPropsRef = useRef({\n buffer,\n onlyNext,\n onlyPrevious,\n reverse,\n preserveUrl,\n params,\n })\n\n callbackPropsRef.current = {\n buffer,\n onlyNext,\n onlyPrevious,\n reverse,\n preserveUrl,\n params,\n }\n\n const [infiniteScroll, setInfiniteScroll] = useState<UseInfiniteScrollProps | null>(null)\n\n const dataManager = useMemo(() => infiniteScroll?.dataManager, [infiniteScroll])\n const elementManager = useMemo(() => infiniteScroll?.elementManager, [infiniteScroll])\n\n const scrollToBottom = useCallback(() => {\n if (scrollableParent) {\n scrollableParent.scrollTo({\n top: scrollableParent.scrollHeight,\n behavior: 'instant',\n })\n } else {\n window.scrollTo({\n top: document.body.scrollHeight,\n behavior: 'instant',\n })\n }\n }, [scrollableParent])\n\n // Main setup effect - only recreate when structural dependencies change\n useEffect(() => {\n if (!resolvedItemsElement) {\n return\n }\n\n function syncStateFromDataManager() {\n setRequestCount(infiniteScrollInstance.dataManager.getRequestCount())\n setHasPreviousPage(infiniteScrollInstance.dataManager.hasPrevious())\n setHasNextPage(infiniteScrollInstance.dataManager.hasNext())\n }\n\n const infiniteScrollInstance = useInfiniteScroll({\n // Data\n getPropName: () => data,\n inReverseMode: () => callbackPropsRef.current.reverse,\n shouldFetchNext: () => !callbackPropsRef.current.onlyPrevious,\n shouldFetchPrevious: () => !callbackPropsRef.current.onlyNext,\n shouldPreserveUrl: () => callbackPropsRef.current.preserveUrl,\n getReloadOptions: () => callbackPropsRef.current.params,\n\n // Elements\n getTriggerMargin: () => callbackPropsRef.current.buffer,\n getStartElement: () => resolvedStartElement!,\n getEndElement: () => resolvedEndElement!,\n getItemsElement: () => resolvedItemsElement,\n getScrollableParent: () => scrollableParent,\n\n // Callbacks\n onBeforePreviousRequest: () => setLoadingPrevious(true),\n onBeforeNextRequest: () => setLoadingNext(true),\n onCompletePreviousRequest: () => {\n setLoadingPrevious(false)\n syncStateFromDataManager()\n },\n onCompleteNextRequest: () => {\n setLoadingNext(false)\n syncStateFromDataManager()\n },\n onDataReset: syncStateFromDataManager,\n })\n\n setInfiniteScroll(infiniteScrollInstance)\n const { dataManager, elementManager } = infiniteScrollInstance\n syncStateFromDataManager()\n\n elementManager.setupObservers()\n elementManager.processServerLoadedElements(dataManager.getLastLoadedPage())\n\n if (autoLoad) {\n elementManager.enableTriggers()\n }\n\n return () => {\n infiniteScrollInstance.flush()\n setInfiniteScroll(null)\n }\n }, [data, resolvedItemsElement, resolvedStartElement, resolvedEndElement, scrollableParent])\n\n const manualMode = useMemo(\n () => manual || (manualAfter > 0 && requestCount >= manualAfter),\n [manual, manualAfter, requestCount],\n )\n const autoLoad = useMemo(() => !manualMode, [manualMode])\n\n useEffect(() => {\n autoLoad ? elementManager?.enableTriggers() : elementManager?.disableTriggers()\n }, [autoLoad, onlyNext, onlyPrevious, resolvedStartElement, resolvedEndElement])\n\n useEffect(() => {\n // autoScroll defaults to reverse value if not explicitly set\n const shouldAutoScroll = autoScroll !== undefined ? autoScroll : reverse\n\n if (shouldAutoScroll) {\n scrollToBottom()\n }\n }, [scrollableParent])\n\n useImperativeHandle(\n ref,\n () => ({\n fetchNext: dataManager?.fetchNext || (() => {}),\n fetchPrevious: dataManager?.fetchPrevious || (() => {}),\n hasPrevious: dataManager?.hasPrevious || (() => false),\n hasNext: dataManager?.hasNext || (() => false),\n }),\n [dataManager],\n )\n\n const headerAutoMode = autoLoad && !onlyNext\n const footerAutoMode = autoLoad && !onlyPrevious\n\n const sharedExposed: Pick<\n InfiniteScrollActionSlotProps,\n 'loadingPrevious' | 'loadingNext' | 'hasPrevious' | 'hasNext'\n > = {\n loadingPrevious,\n loadingNext,\n hasPrevious: hasPreviousPage,\n hasNext: hasNextPage,\n }\n\n const exposedPrevious: InfiniteScrollActionSlotProps = {\n loading: loadingPrevious,\n fetch: dataManager?.fetchPrevious ?? (() => {}),\n autoMode: headerAutoMode,\n manualMode: !headerAutoMode,\n hasMore: hasPreviousPage,\n ...sharedExposed,\n }\n\n const exposedNext: InfiniteScrollActionSlotProps = {\n loading: loadingNext,\n fetch: dataManager?.fetchNext ?? (() => {}),\n autoMode: footerAutoMode,\n manualMode: !footerAutoMode,\n hasMore: hasNextPage,\n ...sharedExposed,\n }\n\n const exposedSlot: InfiniteScrollSlotProps = {\n loading: loadingPrevious || loadingNext,\n loadingPrevious,\n loadingNext,\n }\n\n const renderElements = []\n\n // Only render previous trigger if not using custom element selector/ref\n if (!startElement) {\n renderElements.push(\n createElement(\n 'div',\n { ref: startElementRef },\n // Render previous slot or fallback to loading indicator\n renderSlot(previous, exposedPrevious, loadingPrevious ? renderSlot(loading, exposedPrevious) : null),\n ),\n )\n }\n\n renderElements.push(\n createElement(\n as,\n { ...props, ref: itemsElementRef },\n typeof children === 'function' ? children(exposedSlot) : children,\n ),\n )\n\n // Only render next trigger if not using custom element selector/ref\n if (!endElement) {\n renderElements.push(\n createElement(\n 'div',\n { ref: endElementRef },\n // Render next slot or fallback to loading indicator\n renderSlot(next, exposedNext, loadingNext ? renderSlot(loading, exposedNext) : null),\n ),\n )\n }\n\n return createElement(React.Fragment, {}, ...(reverse ? [...renderElements].reverse() : renderElements))\n },\n)\n\nInfiniteScroll.displayName = 'InertiaInfiniteScroll'\n\nexport default InfiniteScroll\n", "import {\n ActiveVisit,\n isUrlMethodPair,\n LinkComponentBaseProps,\n LinkPrefetchOption,\n mergeDataIntoQueryString,\n Method,\n PendingVisit,\n resolveUrlMethodPairComponent,\n router,\n shouldIntercept,\n shouldNavigate,\n VisitOptions,\n} from '@inertiajs/core'\nimport { createElement, ElementType, forwardRef, useEffect, useMemo, useRef, useState } from 'react'\nimport { config } from '.'\n\nconst noop = () => undefined\n\ninterface BaseInertiaLinkProps extends LinkComponentBaseProps {\n as?: ElementType\n onClick?: (event: React.MouseEvent) => void\n}\n\nexport type InertiaLinkProps = BaseInertiaLinkProps &\n Omit<React.HTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps> &\n Omit<React.AllHTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps>\n\nconst Link = forwardRef<unknown, InertiaLinkProps>(\n (\n {\n children,\n as = 'a',\n data = {},\n href = '',\n method = 'get',\n preserveScroll = false,\n preserveState = null,\n preserveUrl = false,\n replace = false,\n only = [],\n except = [],\n headers = {},\n queryStringArrayFormat = 'brackets',\n async = false,\n onClick = noop,\n onCancelToken = noop,\n onBefore = noop,\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n onPrefetching = noop,\n onPrefetched = noop,\n prefetch = false,\n cacheFor = 0,\n cacheTags = [],\n viewTransition = false,\n component = null,\n instant = false,\n pageProps = null,\n ...props\n },\n ref,\n ) => {\n const [inFlightCount, setInFlightCount] = useState(0)\n const hoverTimeout = useRef<number>(undefined)\n\n const _method = useMemo(() => {\n return isUrlMethodPair(href) ? href.method : (method.toLowerCase() as Method)\n }, [href, method])\n\n const resolvedComponent = useMemo(() => {\n if (component) {\n return component\n }\n\n if (instant && isUrlMethodPair(href)) {\n return resolveUrlMethodPairComponent(href)\n }\n\n return null\n }, [component, instant, href])\n\n const _as = useMemo(() => {\n if (typeof as !== 'string' || as.toLowerCase() !== 'a') {\n // Custom component or element\n return as\n }\n\n return _method !== 'get' ? 'button' : as.toLowerCase()\n }, [as, _method])\n\n const mergeDataArray = useMemo(\n () => mergeDataIntoQueryString(_method, isUrlMethodPair(href) ? href.url : href, data, queryStringArrayFormat),\n [href, _method, data, queryStringArrayFormat],\n )\n\n const url = useMemo(() => mergeDataArray[0], [mergeDataArray])\n const _data = useMemo(() => mergeDataArray[1], [mergeDataArray])\n\n const baseParams = useMemo<VisitOptions>(\n () => ({\n data: _data,\n method: _method,\n preserveScroll,\n preserveState: preserveState ?? _method !== 'get',\n preserveUrl,\n replace,\n only,\n except,\n headers,\n async,\n component: resolvedComponent,\n pageProps,\n }),\n [\n _data,\n _method,\n preserveScroll,\n preserveState,\n preserveUrl,\n replace,\n only,\n except,\n headers,\n async,\n resolvedComponent,\n pageProps,\n ],\n )\n\n const visitParams = useMemo<VisitOptions>(\n () => ({\n ...baseParams,\n viewTransition,\n onCancelToken,\n onBefore,\n onStart(visit: PendingVisit) {\n setInFlightCount((count) => count + 1)\n onStart(visit)\n },\n onProgress,\n onFinish(visit: ActiveVisit) {\n setInFlightCount((count) => count - 1)\n onFinish(visit)\n },\n onCancel,\n onSuccess,\n onError,\n }),\n [\n baseParams,\n viewTransition,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess,\n onError,\n ],\n )\n\n const prefetchModes: LinkPrefetchOption[] = useMemo(\n () => {\n if (prefetch === true) {\n return ['hover']\n }\n\n if (prefetch === false) {\n return []\n }\n\n if (Array.isArray(prefetch)) {\n return prefetch\n }\n\n return [prefetch]\n },\n Array.isArray(prefetch) ? prefetch : [prefetch],\n )\n\n const cacheForValue = useMemo(() => {\n if (cacheFor !== 0) {\n // If they've provided a value, respect it\n return cacheFor\n }\n\n if (prefetchModes.length === 1 && prefetchModes[0] === 'click') {\n // If they've only provided a prefetch mode of 'click',\n // we should only prefetch for the next request but not keep it around\n return 0\n }\n\n // Otherwise, default to 30 seconds\n return config.get('prefetch.cacheFor')\n }, [cacheFor, prefetchModes])\n\n const doPrefetch = useMemo(() => {\n return () => {\n router.prefetch(\n url,\n {\n ...baseParams,\n onPrefetching,\n onPrefetched,\n },\n { cacheFor: cacheForValue, cacheTags },\n )\n }\n }, [url, baseParams, onPrefetching, onPrefetched, cacheForValue, cacheTags])\n\n useEffect(() => {\n return () => {\n clearTimeout(hoverTimeout.current)\n }\n }, [])\n\n useEffect(() => {\n if (prefetchModes.includes('mount')) {\n setTimeout(() => doPrefetch())\n }\n }, prefetchModes)\n\n const regularEvents = {\n onClick: (event: React.MouseEvent) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n event.preventDefault()\n\n router.visit(url, visitParams)\n }\n },\n }\n\n const prefetchHoverEvents = {\n onMouseEnter: () => {\n hoverTimeout.current = window.setTimeout(() => {\n doPrefetch()\n }, config.get('prefetch.hoverDelay'))\n },\n onMouseLeave: () => {\n clearTimeout(hoverTimeout.current)\n },\n onClick: regularEvents.onClick,\n }\n\n const prefetchClickEvents = {\n onMouseDown: (event: React.MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onKeyDown: (event: React.KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onMouseUp: (event: React.MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n router.visit(url, visitParams)\n }\n },\n onKeyUp: (event: React.KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n router.visit(url, visitParams)\n }\n },\n onClick: (event: React.MouseEvent) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n // Let the mouseup/keyup event handle the visit\n event.preventDefault()\n }\n },\n }\n\n const elProps = useMemo(() => {\n if (_as === 'button') {\n return { type: 'button' }\n }\n\n if (_as === 'a' || typeof _as !== 'string') {\n return { href: url }\n }\n\n return {}\n }, [_as, url])\n\n return createElement(\n _as,\n {\n ...props,\n ...elProps,\n ref,\n ...(() => {\n if (prefetchModes.includes('hover')) {\n return prefetchHoverEvents\n }\n\n if (prefetchModes.includes('click')) {\n return prefetchClickEvents\n }\n\n return regularEvents\n })(),\n 'data-loading': inFlightCount > 0 ? '' : undefined,\n },\n children,\n )\n },\n)\nLink.displayName = 'InertiaLink'\n\nexport default Link\n", "import {\n CancelToken,\n Errors,\n ErrorValue,\n FormDataConvertible,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n hasFiles,\n http,\n HttpCancelledError,\n HttpProgressEvent,\n HttpResponseError,\n mergeDataIntoQueryString,\n Method,\n objectToFormData,\n Progress,\n UrlMethodPair,\n UseFormArguments,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n UseHttpSubmitArguments,\n UseHttpSubmitOptions,\n} from '@inertiajs/core'\nimport { NamedInputEvent, toSimpleValidationErrors, ValidationConfig, Validator } from 'laravel-precognition'\nimport { cloneDeep } from 'lodash-es'\nimport { useCallback, useRef, useState } from 'react'\nimport useFormState, { SetDataAction } from './useFormState'\nimport useRemember from './useRemember'\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface UseHttpProps<TForm extends object, TResponse = unknown> {\n data: TForm\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n response: TResponse | null\n setData: SetDataAction<TForm>\n transform: (callback: UseFormTransformCallback<TForm>) => void\n setDefaults: {\n (): void\n <T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n (fields: Partial<TForm>): void\n }\n reset: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n clearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n resetAndClearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n setError: {\n <K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n (errors: FormDataErrors<TForm>): void\n }\n submit: (...args: UseHttpSubmitArguments<TResponse, TForm>) => Promise<TResponse>\n get: (url: string, options?: UseHttpSubmitOptions<TResponse, TForm>) => Promise<TResponse>\n post: (url: string, options?: UseHttpSubmitOptions<TResponse, TForm>) => Promise<TResponse>\n put: (url: string, options?: UseHttpSubmitOptions<TResponse, TForm>) => Promise<TResponse>\n patch: (url: string, options?: UseHttpSubmitOptions<TResponse, TForm>) => Promise<TResponse>\n delete: (url: string, options?: UseHttpSubmitOptions<TResponse, TForm>) => Promise<TResponse>\n cancel: () => void\n dontRemember: <K extends FormDataKeys<TForm>>(...fields: K[]) => UseHttpProps<TForm, TResponse>\n optimistic: (callback: (currentData: TForm) => Partial<TForm>) => UseHttpProps<TForm, TResponse>\n withAllErrors: () => UseHttpProps<TForm, TResponse>\n withPrecognition: (...args: UseFormWithPrecognitionArguments) => UseHttpPrecognitiveProps<TForm, TResponse>\n}\n\nexport interface UseHttpValidationProps<TForm extends object, TResponse = unknown> {\n invalid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n setValidationTimeout: (duration: number) => UseHttpPrecognitiveProps<TForm, TResponse>\n touch: <K extends FormDataKeys<TForm>>(\n field: K | NamedInputEvent | Array<K>,\n ...fields: K[]\n ) => UseHttpPrecognitiveProps<TForm, TResponse>\n touched: <K extends FormDataKeys<TForm>>(field?: K) => boolean\n valid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n validate: <K extends FormDataKeys<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ) => UseHttpPrecognitiveProps<TForm, TResponse>\n validateFiles: () => UseHttpPrecognitiveProps<TForm, TResponse>\n validating: boolean\n validator: () => Validator\n withAllErrors: () => UseHttpPrecognitiveProps<TForm, TResponse>\n withoutFileValidation: () => UseHttpPrecognitiveProps<TForm, TResponse>\n setErrors: (errors: FormDataErrors<TForm>) => UseHttpPrecognitiveProps<TForm, TResponse>\n forgetError: <K extends FormDataKeys<TForm> | NamedInputEvent>(field: K) => UseHttpPrecognitiveProps<TForm, TResponse>\n}\n\nexport type UseHttp<TForm extends object, TResponse = unknown> = UseHttpProps<TForm, TResponse>\nexport type UseHttpPrecognitiveProps<TForm extends object, TResponse = unknown> = UseHttpProps<TForm, TResponse> &\n UseHttpValidationProps<TForm, TResponse>\n\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n method: Method | (() => Method),\n url: string | (() => string),\n data: TForm | (() => TForm),\n): UseHttpPrecognitiveProps<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n urlMethodPair: UrlMethodPair | (() => UrlMethodPair),\n data: TForm | (() => TForm),\n): UseHttpPrecognitiveProps<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n rememberKey: string,\n data: TForm | (() => TForm),\n): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n data: TForm | (() => TForm),\n): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n ...args: UseFormArguments<TForm>\n): UseHttp<TForm, TResponse> | UseHttpPrecognitiveProps<TForm, TResponse> {\n const { rememberKey, data, precognitionEndpoint } = UseFormUtils.parseUseFormArguments<TForm>(...args)\n\n // Resolve initial data for remember functionality hooks\n const initialDefaults = typeof data === 'function' ? cloneDeep(data()) : cloneDeep(data)\n\n const abortController = useRef<AbortController | null>(null)\n const excludeKeysRef = useRef<FormDataKeys<TForm>[]>([])\n const pendingOptimisticRef = useRef<((currentData: TForm) => Partial<TForm>) | null>(null)\n const [response, setResponse] = useState<TResponse | null>(null)\n\n // For remember functionality, we need custom state hooks\n const useDataState = rememberKey\n ? () => useRemember<TForm>(initialDefaults, `${rememberKey}:data`, excludeKeysRef)\n : undefined\n\n const useErrorsState = rememberKey\n ? () => useRemember<FormDataErrors<TForm>>({} as FormDataErrors<TForm>, `${rememberKey}:errors`)\n : undefined\n\n const {\n form: baseForm,\n setDefaultsState,\n transformRef,\n dataRef,\n precognitionEndpointRef,\n isMounted,\n setProcessing,\n setProgress,\n markAsSuccessful,\n clearErrors,\n setError,\n defaultsCalledInOnSuccessRef,\n resetBeforeSubmit,\n finishProcessing,\n withAllErrors,\n } = useFormState<TForm>({\n data,\n precognitionEndpoint,\n useDataState,\n useErrorsState,\n })\n\n const submit = useCallback(\n async (method: Method, url: string, options: UseHttpSubmitOptions<TResponse, TForm>): Promise<TResponse> => {\n const onBefore = options.onBefore?.()\n\n if (onBefore === false) {\n return Promise.reject(new Error('Request cancelled by onBefore'))\n }\n\n defaultsCalledInOnSuccessRef.current = false\n\n if (isMounted.current) {\n resetBeforeSubmit()\n }\n\n abortController.current = new AbortController()\n\n const cancelToken: CancelToken = {\n cancel: () => abortController.current?.abort(),\n }\n\n options.onCancelToken?.(cancelToken)\n\n options.optimistic = options.optimistic ?? pendingOptimisticRef.current ?? undefined\n pendingOptimisticRef.current = null\n\n let snapshot: TForm | undefined\n\n if (options.optimistic) {\n snapshot = cloneDeep(dataRef.current)\n const optimisticData = options.optimistic(cloneDeep(snapshot))\n\n baseForm.setData((current: TForm) => ({ ...current, ...optimisticData }))\n }\n\n if (isMounted.current) {\n setProcessing(true)\n }\n\n options.onStart?.()\n\n const transformedData = transformRef.current(dataRef.current)\n const useFormData = hasFiles(transformedData as Record<string, FormDataConvertible>)\n\n let requestUrl = url\n let requestData: FormData | string | undefined\n let contentType: string | undefined\n\n if (method === 'get') {\n const [urlWithParams] = mergeDataIntoQueryString(\n method,\n url,\n transformedData as Record<string, FormDataConvertible>,\n )\n requestUrl = urlWithParams\n } else {\n if (useFormData) {\n requestData = objectToFormData(transformedData as Record<string, FormDataConvertible>)\n } else {\n requestData = JSON.stringify(transformedData)\n contentType = 'application/json'\n }\n }\n\n try {\n const httpResponse = await http.getClient().request({\n method,\n url: requestUrl,\n data: requestData,\n headers: {\n Accept: 'application/json',\n ...(contentType ? { 'Content-Type': contentType } : {}),\n ...options.headers,\n },\n signal: abortController.current.signal,\n onUploadProgress: (event: HttpProgressEvent) => {\n if (isMounted.current) {\n setProgress(event)\n }\n\n options.onProgress?.(event)\n },\n })\n\n const responseData = JSON.parse(httpResponse.data) as TResponse\n\n if (httpResponse.status >= 200 && httpResponse.status < 300) {\n if (isMounted.current) {\n markAsSuccessful()\n setResponse(responseData)\n }\n\n options.onSuccess?.(responseData)\n\n if (isMounted.current && !defaultsCalledInOnSuccessRef.current) {\n baseForm.setData((data: TForm) => {\n setDefaultsState(cloneDeep(data))\n return data\n })\n }\n\n return responseData\n }\n\n throw new HttpResponseError(`Request failed with status ${httpResponse.status}`, httpResponse)\n } catch (error: unknown) {\n if (snapshot && isMounted.current) {\n baseForm.setData(snapshot)\n }\n\n if (error instanceof HttpResponseError) {\n if (error.response.status === 422) {\n const responseData = JSON.parse(error.response.data)\n const validationErrors = responseData.errors || {}\n const processedErrors = (\n withAllErrors.enabled() ? validationErrors : toSimpleValidationErrors(validationErrors)\n ) as FormDataErrors<TForm>\n\n if (isMounted.current) {\n clearErrors()\n setError(processedErrors)\n }\n\n options.onError?.(processedErrors as Errors)\n }\n\n throw error\n }\n\n if (error instanceof HttpCancelledError || (error instanceof Error && error.name === 'AbortError')) {\n options.onCancel?.()\n throw new HttpCancelledError('Request was cancelled', url)\n }\n\n throw error\n } finally {\n if (isMounted.current) {\n finishProcessing()\n }\n\n abortController.current = null\n options.onFinish?.()\n }\n },\n [clearErrors, setError],\n )\n\n const cancel = useCallback(() => {\n if (abortController.current) {\n abortController.current.abort()\n }\n }, [])\n\n const createSubmitMethod =\n (method: Method) =>\n async (url: string, options: UseHttpSubmitOptions<TResponse, TForm> = {}): Promise<TResponse> => {\n return submit(method, url, options)\n }\n\n const submitWithArgs = useCallback(\n (...args: UseHttpSubmitArguments<TResponse, TForm>): Promise<TResponse> => {\n const parsed = UseFormUtils.parseSubmitArguments(args as any, precognitionEndpointRef.current)\n\n return submit(parsed.method, parsed.url, parsed.options as UseHttpSubmitOptions<TResponse, TForm>)\n },\n [submit],\n )\n\n // Add useHttp-specific methods to the form object (mutate in place like Svelte)\n Object.assign(baseForm, {\n response,\n submit: submitWithArgs,\n get: createSubmitMethod('get'),\n post: createSubmitMethod('post'),\n put: createSubmitMethod('put'),\n patch: createSubmitMethod('patch'),\n delete: createSubmitMethod('delete'),\n cancel,\n dontRemember: <K extends FormDataKeys<TForm>>(...keys: K[]) => {\n excludeKeysRef.current = keys\n return form\n },\n\n optimistic: (callback: (currentData: TForm) => Partial<TForm>) => {\n pendingOptimisticRef.current = callback\n return form\n },\n\n withAllErrors: () => {\n withAllErrors.enable()\n return form\n },\n })\n\n // Cast to the full form type (baseForm now has HTTP methods)\n const form = baseForm as unknown as UseHttpProps<TForm, TResponse>\n\n // Wrap withPrecognition to return the correct type with HTTP methods\n const originalWithPrecognition = baseForm.withPrecognition\n form.withPrecognition = (...args: UseFormWithPrecognitionArguments): UseHttpPrecognitiveProps<TForm, TResponse> => {\n originalWithPrecognition(...args)\n return form as UseHttpPrecognitiveProps<TForm, TResponse>\n }\n\n return precognitionEndpointRef.current ? (form as UseHttpPrecognitiveProps<TForm, TResponse>) : form\n}\n", "import { PollOptions, ReloadOptions, router } from '@inertiajs/core'\nimport { useEffect, useRef } from 'react'\n\nexport default function usePoll(\n interval: number,\n requestOptions: ReloadOptions = {},\n options: PollOptions = {\n keepAlive: false,\n autoStart: true,\n },\n) {\n const pollRef = useRef(\n router.poll(interval, requestOptions, {\n ...options,\n autoStart: false,\n }),\n )\n\n useEffect(() => {\n if (options.autoStart ?? true) {\n pollRef.current.start()\n }\n\n return () => pollRef.current.stop()\n }, [])\n\n return {\n stop: pollRef.current.stop,\n start: pollRef.current.start,\n }\n}\n", "import { router, VisitOptions } from '@inertiajs/core'\nimport { useEffect, useState } from 'react'\n\nexport default function usePrefetch(options: VisitOptions = {}): {\n lastUpdatedAt: number | null\n isPrefetching: boolean\n isPrefetched: boolean\n flush: () => void\n} {\n const cached = typeof window === 'undefined' ? null : router.getCached(window.location.pathname, options)\n const inFlight = typeof window === 'undefined' ? null : router.getPrefetching(window.location.pathname, options)\n\n const [lastUpdatedAt, setLastUpdatedAt] = useState<number | null>(cached?.staleTimestamp || null)\n const [isPrefetching, setIsPrefetching] = useState(inFlight !== null)\n const [isPrefetched, setIsPrefetched] = useState(cached !== null)\n\n useEffect(() => {\n const onPrefetchingListener = router.on('prefetching', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(true)\n }\n })\n\n const onPrefetchedListener = router.on('prefetched', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(false)\n setIsPrefetched(true)\n setLastUpdatedAt(e.detail.fetchedAt)\n }\n })\n\n return () => {\n onPrefetchedListener()\n onPrefetchingListener()\n }\n }, [])\n\n return {\n lastUpdatedAt,\n isPrefetching,\n isPrefetched,\n flush: () => router.flush(window.location.pathname, options),\n }\n}\n", "import { ReloadOptions, router } from '@inertiajs/core'\nimport { get } from 'lodash-es'\nimport { createElement, ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport usePage from './usePage'\n\ninterface WhenVisibleSlotProps {\n fetching: boolean\n}\n\ninterface WhenVisibleProps {\n children: ReactNode | ((props: WhenVisibleSlotProps) => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data?: string | string[]\n params?: ReloadOptions\n buffer?: number\n as?: string\n always?: boolean\n}\n\nconst WhenVisible = ({ children, data, params, buffer, as, always, fallback }: WhenVisibleProps) => {\n always = always ?? false\n as = as ?? 'div'\n fallback = fallback ?? null\n\n const pageProps = usePage().props\n const keys = useMemo(() => (data ? (Array.isArray(data) ? data : [data]) : []), [data])\n\n const [loaded, setLoaded] = useState(() => keys.length > 0 && keys.every((key) => get(pageProps, key) !== undefined))\n const [isFetching, setIsFetching] = useState(false)\n const fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n const observer = useRef<IntersectionObserver | null>(null)\n const getReloadParamsRef = useRef<() => Partial<ReloadOptions>>(() => ({}))\n\n useEffect(() => {\n if (keys.length > 0) {\n setLoaded(keys.every((key) => get(pageProps, key) !== undefined))\n }\n }, [pageProps, keys])\n\n const getReloadParams = useCallback<() => Partial<ReloadOptions>>(() => {\n const reloadParams: Partial<ReloadOptions> = { preserveErrors: true, ...params }\n\n if (data) {\n reloadParams.only = (Array.isArray(data) ? data : [data]) as string[]\n }\n\n return reloadParams\n }, [params, data])\n\n getReloadParamsRef.current = getReloadParams\n\n const registerObserver = () => {\n observer.current?.disconnect()\n\n observer.current = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (fetching.current) {\n return\n }\n\n if (!always && loaded) {\n return\n }\n\n fetching.current = true\n setIsFetching(true)\n\n const reloadParams = getReloadParamsRef.current()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.current = true\n setIsFetching(true)\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n setLoaded(true)\n fetching.current = false\n setIsFetching(false)\n reloadParams.onFinish?.(e)\n\n if (!always) {\n observer.current?.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.current.observe(ref.current!)\n }\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n if (loaded && !always) {\n return\n }\n\n registerObserver()\n\n return () => {\n observer.current?.disconnect()\n }\n }, [always, loaded, buffer])\n\n const resolveChildren = () => (typeof children === 'function' ? children({ fetching: isFetching }) : children)\n const resolveFallback = () => (typeof fallback === 'function' ? fallback() : fallback)\n\n if (always || !loaded) {\n return createElement(\n as,\n {\n props: null,\n ref,\n },\n loaded ? resolveChildren() : resolveFallback(),\n )\n }\n\n return loaded ? resolveChildren() : null\n}\n\nWhenVisible.displayName = 'InertiaWhenVisible'\n\nexport default WhenVisible\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["http", "router", "
|
|
4
|
+
"sourcesContent": ["import { config as coreConfig } from '@inertiajs/core'\nimport type { ReactInertiaAppConfig } from './types'\n\nexport { http, progress, router } from '@inertiajs/core'\nexport { default as App } from './App'\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './Deferred'\nexport { default as Form, useFormContext } from './Form'\nexport { default as Head } from './Head'\nexport { default as InfiniteScroll } from './InfiniteScroll'\nexport { resetLayoutProps, setLayoutProps, setLayoutPropsFor } from './layoutProps'\nexport { InertiaLinkProps, default as Link } from './Link'\nexport { LayoutCallback, ReactComponent as ResolvedComponent } from './types'\nexport {\n InertiaForm,\n InertiaFormProps,\n InertiaPrecognitiveFormProps,\n SetDataAction,\n SetDataByKeyValuePair,\n SetDataByMethod,\n SetDataByObject,\n default as useForm,\n} from './useForm'\nexport { default as useHttp } from './useHttp'\nexport { default as usePage } from './usePage'\nexport { default as usePoll } from './usePoll'\nexport { default as usePrefetch } from './usePrefetch'\nexport { default as useRemember } from './useRemember'\nexport { default as WhenVisible } from './WhenVisible'\n\nexport const config = coreConfig.extend<ReactInertiaAppConfig>()\n", "import {\n createHeadManager,\n HeadManagerOnUpdateCallback,\n HeadManagerTitleCallback,\n normalizeLayouts,\n Page,\n PageHandler,\n PageProps,\n router,\n} from '@inertiajs/core'\nimport {\n createElement,\n FunctionComponent,\n isValidElement,\n ReactNode,\n useEffect,\n useMemo,\n useState,\n useSyncExternalStore,\n} from 'react'\nimport { flushSync } from 'react-dom'\nimport HeadContext from './HeadContext'\nimport { resetLayoutProps, store } from './layoutProps'\nimport PageContext from './PageContext'\nimport { LayoutFunction, ReactComponent, ReactPageHandlerArgs } from './types'\n\nfunction isComponent(value: unknown): value is ReactComponent {\n if (!value) {\n return false\n }\n\n if (typeof value === 'object' && '$$typeof' in value) {\n return true\n }\n\n if (typeof value === 'function') {\n const fn = value as Function & { displayName?: string; prototype?: { isReactComponent?: boolean } }\n return fn.prototype?.isReactComponent === true || fn.name !== '' || fn.displayName !== undefined\n }\n\n return false\n}\n\nfunction isRenderFunction(value: unknown): boolean {\n if (typeof value !== 'function') {\n return false\n }\n\n const fn = value as Function\n return fn.length === 1 && typeof fn.prototype === 'undefined'\n}\n\nlet currentIsInitialPage = true\nlet routerIsInitialized = false\nlet swapComponent: PageHandler<ReactComponent> = async () => {\n // Dummy function so we can init the router outside of the useEffect hook. This is\n // needed so `router.reload()` works right away (on mount) in any of the user's\n // components. We swap in the real function in the useEffect hook below.\n currentIsInitialPage = false\n}\n\ntype CurrentPage = {\n component: ReactComponent | null\n page: Page\n key: number | null\n}\n\nexport interface InertiaAppProps<SharedProps extends PageProps = PageProps> {\n children?: (options: { Component: ReactComponent; props: PageProps; key: number | null }) => ReactNode\n initialPage: Page<SharedProps>\n initialComponent?: ReactComponent\n resolveComponent?: (name: string, page?: Page) => ReactComponent | Promise<ReactComponent>\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdateCallback\n defaultLayout?: (name: string, page: Page) => unknown\n}\n\nexport type InertiaApp = FunctionComponent<InertiaAppProps>\n\nconst emptySnapshot = {\n shared: {} as Record<string, unknown>,\n named: {} as Record<string, Record<string, unknown>>,\n}\n\nexport default function App<SharedProps extends PageProps = PageProps>({\n children,\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n defaultLayout,\n}: InertiaAppProps<SharedProps>) {\n const [current, setCurrent] = useState<CurrentPage>({\n component: initialComponent || null,\n page: { ...initialPage, flash: initialPage.flash ?? {} },\n key: null,\n })\n\n const headManager = useMemo(() => {\n return createHeadManager(\n typeof window === 'undefined',\n titleCallback || ((title) => title),\n onHeadUpdate || (() => {}),\n )\n }, [])\n\n const dynamicLayoutProps = useSyncExternalStore(store.subscribe, store.get, () => emptySnapshot)\n\n if (!routerIsInitialized) {\n router.init<ReactComponent>({\n initialPage,\n resolveComponent: resolveComponent!,\n swapComponent: async (args) => swapComponent(args),\n onFlash: (flash) => {\n setCurrent((current) => ({\n ...current,\n page: { ...current.page, flash },\n }))\n },\n })\n\n routerIsInitialized = true\n }\n\n useEffect(() => {\n swapComponent = async ({ component, page, preserveState }: ReactPageHandlerArgs) => {\n if (currentIsInitialPage) {\n // We block setting the current page on the initial page to\n // prevent the initial page from being re-rendered again.\n currentIsInitialPage = false\n return\n }\n\n if (!preserveState) {\n resetLayoutProps()\n }\n\n flushSync(() =>\n setCurrent((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\n })),\n )\n }\n\n router.on('navigate', () => headManager.forceUpdate())\n }, [])\n\n if (!current.component) {\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(PageContext.Provider, { value: current.page }, null),\n )\n }\n\n const renderChildren =\n children ||\n (({ Component, props, key }) => {\n const child = createElement(Component, { key, ...props })\n\n if (Component.layout && isRenderFunction(Component.layout)) {\n const result = (Component.layout as Function)(props)\n\n if (isValidElement(result)) {\n return (Component.layout as LayoutFunction)(child)\n }\n\n const layouts = normalizeLayouts(result, isComponent)\n\n if (layouts.length > 0) {\n return layouts.reduceRight((childNode, layout) => {\n return createElement(\n layout.component,\n {\n ...props,\n ...layout.props,\n ...dynamicLayoutProps.shared,\n ...(layout.name ? dynamicLayoutProps.named[layout.name] || {} : {}),\n },\n childNode,\n )\n }, child)\n }\n\n return child\n }\n\n const effectiveLayout = Component.layout ?? defaultLayout?.(current.page.component, current.page)\n const layouts = normalizeLayouts(effectiveLayout, isComponent, Component.layout ? isRenderFunction : undefined)\n\n if (layouts.length > 0) {\n return layouts.reduceRight((childNode, layout) => {\n return createElement(\n layout.component,\n {\n ...props,\n ...layout.props,\n ...dynamicLayoutProps.shared,\n ...(layout.name ? dynamicLayoutProps.named[layout.name] || {} : {}),\n },\n childNode,\n )\n }, child)\n }\n\n return child\n })\n\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(\n PageContext.Provider,\n { value: current.page },\n renderChildren({\n Component: current.component,\n key: current.key,\n props: current.page.props,\n }),\n ),\n )\n}\n\nApp.displayName = 'Inertia'\n", "import { HeadManager } from '@inertiajs/core'\nimport { createContext } from 'react'\n\nconst headContext = createContext<HeadManager | null>(null)\nheadContext.displayName = 'InertiaHeadContext'\n\nexport default headContext\n", "import { createLayoutPropsStore, type LayoutProps, type NamedLayoutProps } from '@inertiajs/core'\n\nexport const store = createLayoutPropsStore()\n\nexport function setLayoutProps(props: Partial<LayoutProps>): void {\n store.set(props)\n}\n\nexport function setLayoutPropsFor<K extends keyof NamedLayoutProps>(\n name: K,\n props: Partial<NamedLayoutProps[K]>,\n): void {\n store.setFor(name, props)\n}\n\nexport function resetLayoutProps(): void {\n store.reset()\n}\n", "import { Page } from '@inertiajs/core'\nimport { createContext } from 'react'\n\nconst pageContext = createContext<Page | null>(null)\npageContext.displayName = 'InertiaPageContext'\n\nexport default pageContext\n", "import {\n buildSSRBody,\n CreateInertiaAppOptions,\n CreateInertiaAppOptionsForCSR,\n CreateInertiaAppOptionsForSSR,\n getInitialPageFromDOM,\n http as httpModule,\n InertiaAppSSRResponse,\n Page,\n PageProps,\n router,\n setupProgress,\n SharedPageProps,\n} from '@inertiajs/core'\nimport { createElement, ReactElement, StrictMode } from 'react'\nimport { createRoot, hydrateRoot } from 'react-dom/client'\nimport { renderToString } from 'react-dom/server'\nimport App, { InertiaAppProps, type InertiaApp } from './App'\nimport { config } from './index'\nimport { ReactComponent, ReactInertiaAppConfig } from './types'\n\nexport type SetupOptions<ElementType, SharedProps extends PageProps> = {\n el: ElementType\n App: InertiaApp\n props: InertiaAppProps<SharedProps>\n}\n\ntype ComponentResolver = (\n name: string,\n page?: Page<SharedPageProps>,\n) => ReactComponent | Promise<ReactComponent> | { default: ReactComponent }\n\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForCSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<HTMLElement, SharedProps>,\n void,\n ReactInertiaAppConfig\n> & {\n strictMode?: undefined\n withApp?: (app: ReactElement, options: { ssr: boolean }) => ReactElement\n}\n\ntype InertiaAppOptionsForSSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForSSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<null, SharedProps>,\n ReactElement,\n ReactInertiaAppConfig\n> & {\n render: typeof renderToString\n strictMode?: undefined\n withApp?: (app: ReactElement, options: { ssr: boolean }) => ReactElement\n}\n\ntype InertiaAppOptionsAuto<SharedProps extends PageProps> = CreateInertiaAppOptions<\n ComponentResolver,\n SetupOptions<HTMLElement | null, SharedProps>,\n ReactElement | void,\n ReactInertiaAppConfig\n> & {\n page?: Page<SharedProps>\n render?: undefined\n strictMode?: boolean\n withApp?: (app: ReactElement, options: { ssr: boolean }) => ReactElement\n}\n\ntype RenderToString = (element: ReactElement) => string\n\ntype RenderFunction<SharedProps extends PageProps> = (\n page: Page<SharedProps>,\n renderToString: RenderToString,\n) => Promise<InertiaAppSSRResponse>\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<void>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<InertiaAppSSRResponse>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options?: InertiaAppOptionsAuto<SharedProps>,\n): Promise<void | RenderFunction<SharedProps>>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n {\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n defaults = {},\n http,\n layout,\n strictMode = false,\n withApp,\n }:\n | InertiaAppOptionsForCSR<SharedProps>\n | InertiaAppOptionsForSSR<SharedProps>\n | InertiaAppOptionsAuto<SharedProps> = {} as InertiaAppOptionsAuto<SharedProps>,\n): Promise<InertiaAppSSRResponse | RenderFunction<SharedProps> | void> {\n config.replace(defaults)\n\n if (http) {\n httpModule.setClient(http)\n }\n\n const isServer = typeof window === 'undefined'\n\n const wrapWithStrictMode = (element: ReactElement): ReactElement => {\n return strictMode ? createElement(StrictMode, null, element) : element\n }\n\n const resolveComponent = (name: string, page?: Page) =>\n Promise.resolve(resolve!(name, page)).then((module) => {\n return ((module as { default?: ReactComponent }).default || module) as ReactComponent\n })\n\n // SSR render function factory - when on server without page/render, return a render function\n // This is used by the Vite plugin's SSR transform\n if (isServer && !page && !render) {\n return async (page: Page<SharedProps>, renderToString: RenderToString) => {\n let head: string[] = []\n\n const initialComponent = await resolveComponent(page.component, page)\n\n const props: InertiaAppProps<SharedProps> = {\n initialPage: page,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: (elements: string[]) => (head = elements),\n defaultLayout: layout,\n }\n\n let reactApp: ReactElement\n\n if (setup) {\n reactApp = (setup as (options: SetupOptions<null, SharedProps>) => ReactElement)({\n el: null,\n App,\n props,\n })\n } else {\n reactApp = wrapWithStrictMode(createElement(App, props))\n\n if (withApp) {\n reactApp = withApp(reactApp, { ssr: true })\n }\n }\n\n const html = renderToString(reactApp)\n const body = buildSSRBody(id, page, html)\n\n return { head, body }\n }\n }\n\n const initialPage = page || getInitialPageFromDOM<Page<SharedProps>>(id)!\n\n let head: string[] = []\n\n const reactApp = await Promise.all([\n resolveComponent(initialPage.component, initialPage),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n const props: InertiaAppProps<SharedProps> = {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: isServer ? (elements: string[]) => (head = elements) : undefined,\n defaultLayout: layout,\n }\n\n if (isServer) {\n return (setup as (options: SetupOptions<null, SharedProps>) => ReactElement)({\n el: null,\n App,\n props,\n })\n }\n\n const el = document.getElementById(id)!\n\n if (setup) {\n return (setup as (options: SetupOptions<HTMLElement, SharedProps>) => void)({\n el,\n App,\n props,\n })\n }\n\n let appElement = wrapWithStrictMode(createElement(App, props))\n\n if (withApp) {\n appElement = withApp(appElement, { ssr: false })\n }\n\n if (el.hasAttribute('data-server-rendered')) {\n hydrateRoot(el, appElement)\n } else {\n createRoot(el).render(appElement)\n }\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer && render && reactApp) {\n const html = render(reactApp)\n const body = buildSSRBody(id, initialPage, html)\n\n return { head, body }\n }\n}\n", "import { isSameUrlWithoutQueryOrHash } from '@inertiajs/core'\nimport { get } from 'es-toolkit/compat'\nimport { ReactNode, useEffect, useMemo, useRef, useState } from 'react'\nimport { router } from '.'\nimport usePage from './usePage'\n\nconst keysAreBeingReloaded = (only: string[], except: string[], keys: string[]): boolean => {\n if (only.length === 0 && except.length === 0) {\n return true\n }\n\n if (only.length > 0) {\n return keys.some((key) => only.includes(key))\n }\n\n return keys.some((key) => !except.includes(key))\n}\n\ninterface DeferredSlotProps {\n reloading: boolean\n}\n\ninterface DeferredProps {\n children: ReactNode | ((props: DeferredSlotProps) => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data: string | string[]\n}\n\nconst Deferred = ({ children, data, fallback }: DeferredProps) => {\n if (!data) {\n throw new Error('`<Deferred>` requires a `data` prop to be a string or array of strings')\n }\n\n const [loaded, setLoaded] = useState(false)\n const [reloading, setReloading] = useState(false)\n const activeReloads = useRef(new Set<object>())\n const pageProps = usePage().props\n const keys = useMemo(() => (Array.isArray(data) ? data : [data]), [data])\n\n useEffect(() => {\n const removeStartListener = router.on('start', (e) => {\n const visit = e.detail.visit\n\n if (\n visit.preserveState === true &&\n isSameUrlWithoutQueryOrHash(visit.url, window.location) &&\n keysAreBeingReloaded(visit.only, visit.except, keys)\n ) {\n activeReloads.current.add(visit)\n setReloading(true)\n }\n })\n\n const removeFinishListener = router.on('finish', (e) => {\n const visit = e.detail.visit\n\n if (activeReloads.current.has(visit)) {\n activeReloads.current.delete(visit)\n setReloading(activeReloads.current.size > 0)\n }\n })\n\n return () => {\n removeStartListener()\n removeFinishListener()\n activeReloads.current.clear()\n }\n }, [keys])\n\n useEffect(() => {\n setLoaded(keys.every((key) => get(pageProps, key) !== undefined))\n }, [pageProps, keys])\n\n const propsAreDefined = useMemo(() => keys.every((key) => get(pageProps, key) !== undefined), [keys, pageProps])\n\n if (loaded && propsAreDefined) {\n if (typeof children === 'function') {\n return children({ reloading })\n }\n\n return children\n }\n\n return typeof fallback === 'function' ? fallback() : fallback\n}\n\nDeferred.displayName = 'InertiaDeferred'\n\nexport default Deferred\n", "import { Page, PageProps, SharedPageProps } from '@inertiajs/core'\nimport { use } from 'react'\nimport PageContext from './PageContext'\n\nexport default function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps & SharedPageProps> {\n const page = use(PageContext)\n\n if (!page) {\n throw new Error('usePage must be used within the Inertia component')\n }\n\n return page as Page<TPageProps & SharedPageProps>\n}\n", "import {\n config,\n FormComponentProps,\n FormComponentRef,\n FormComponentResetSymbol,\n FormComponentSlotProps,\n FormDataConvertible,\n formDataToObject,\n isUrlMethodPair,\n mergeDataIntoQueryString,\n Method,\n resetFormFields,\n resolveUrlMethodPairComponent,\n UseFormUtils,\n VisitOptions,\n} from '@inertiajs/core'\nimport { isEqual } from 'es-toolkit'\nimport { NamedInputEvent, ValidationConfig } from 'laravel-precognition'\nimport React, {\n createContext,\n createElement,\n FormEvent,\n forwardRef,\n ReactNode,\n use,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport useForm from './useForm'\n\n// Polyfill for startTransition to support React 16.9+\nconst deferStateUpdate = (callback: () => void) => {\n typeof React.startTransition === 'function' ? React.startTransition(callback) : setTimeout(callback, 0)\n}\n\ntype FormProps<TForm extends object = Record<string, any>> = FormComponentProps &\n Omit<React.FormHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> &\n Omit<React.AllHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> & {\n children: ReactNode | ((props: FormComponentSlotProps<TForm>) => ReactNode)\n }\n\ntype FormSubmitOptions = Omit<VisitOptions, 'data' | 'onPrefetched' | 'onPrefetching'>\ntype FormSubmitter = HTMLElement | null\n\nconst noop = () => undefined\n\nconst FormContext = createContext<FormComponentRef | undefined>(undefined)\n\nconst Form = forwardRef<FormComponentRef, FormProps>(\n (\n {\n action = '',\n method = 'get',\n headers = {},\n queryStringArrayFormat = 'brackets',\n errorBag = null,\n showProgress = true,\n transform = (data) => data,\n optimistic,\n options = {},\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onBefore = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n onCancelToken = noop,\n onSubmitComplete = noop,\n disableWhileProcessing = false,\n resetOnError = false,\n resetOnSuccess = false,\n setDefaultsOnSuccess = false,\n invalidateCacheTags = [],\n validateFiles = false,\n validationTimeout = 1500,\n withAllErrors = null,\n component = null,\n instant = false,\n children,\n ...props\n },\n ref,\n ) => {\n const getTransformedData = (): Record<string, FormDataConvertible> => {\n const [_url, data] = getUrlAndData()\n return transform(data)\n }\n\n const form = useForm<Record<string, any>>({})\n .withPrecognition(\n () => resolvedMethod,\n () => getUrlAndData()[0],\n )\n .setValidationTimeout(validationTimeout)\n\n if (validateFiles) {\n form.validateFiles()\n }\n\n if (withAllErrors ?? config.get('form.withAllErrors')) {\n form.withAllErrors()\n }\n\n form.transform(getTransformedData)\n\n const formElement = useRef<HTMLFormElement>(undefined)\n\n const resolvedMethod = useMemo(() => {\n return isUrlMethodPair(action) ? action.method : (method.toLowerCase() as Method)\n }, [action, method])\n\n const resolvedComponent = useMemo(() => {\n if (component) {\n return component\n }\n\n if (instant && isUrlMethodPair(action)) {\n return resolveUrlMethodPairComponent(action)\n }\n\n return null\n }, [component, instant, action])\n\n const [isDirty, setIsDirty] = useState(false)\n const defaultData = useRef<FormData>(new FormData())\n\n const getFormData = (submitter?: FormSubmitter): FormData => new FormData(formElement.current, submitter)\n\n // Convert the FormData to an object because we can't compare two FormData\n // instances directly (which is needed for isDirty), mergeDataIntoQueryString()\n // expects an object, and submitting a FormData instance directly causes problems with nested objects.\n const getData = (submitter?: FormSubmitter): Record<string, FormDataConvertible> =>\n formDataToObject(getFormData(submitter))\n\n const getUrlAndData = (submitter?: FormSubmitter): [string, Record<string, FormDataConvertible>] => {\n return mergeDataIntoQueryString(\n resolvedMethod,\n isUrlMethodPair(action) ? action.url : action,\n getData(submitter),\n queryStringArrayFormat,\n )\n }\n\n const updateDirtyState = (event: Event) => {\n if (event.type === 'reset' && (event as CustomEvent).detail?.[FormComponentResetSymbol]) {\n // When the form is reset programmatically, prevent native reset behavior\n event.preventDefault()\n }\n\n deferStateUpdate(() =>\n setIsDirty(event.type === 'reset' ? false : !isEqual(getData(), formDataToObject(defaultData.current))),\n )\n }\n\n const clearErrors = (...names: string[]) => {\n form.clearErrors(...names)\n\n return form\n }\n\n useEffect(() => {\n defaultData.current = getFormData()\n\n form.setDefaults(getData())\n\n const formEvents: Array<keyof HTMLElementEventMap> = ['input', 'change', 'reset']\n\n formEvents.forEach((e) => formElement.current!.addEventListener(e, updateDirtyState))\n\n return () => {\n formEvents.forEach((e) => formElement.current?.removeEventListener(e, updateDirtyState))\n }\n }, [])\n\n useEffect(() => {\n form.setValidationTimeout(validationTimeout)\n }, [validationTimeout])\n\n useEffect(() => {\n if (validateFiles) {\n form.validateFiles()\n } else {\n form.withoutFileValidation()\n }\n }, [validateFiles])\n\n const reset = (...fields: string[]) => {\n if (formElement.current) {\n resetFormFields(formElement.current, defaultData.current, fields)\n }\n\n form.reset(...fields)\n }\n\n const resetAndClearErrors = (...fields: string[]) => {\n clearErrors(...fields)\n reset(...fields)\n }\n\n const maybeReset = (resetOption: boolean | string[]) => {\n if (!resetOption) {\n return\n }\n\n if (resetOption === true) {\n reset()\n } else if (resetOption.length > 0) {\n reset(...resetOption)\n }\n }\n\n const submit = (submitter?: FormSubmitter) => {\n const [url, data] = getUrlAndData(submitter)\n const formTarget = (submitter as HTMLButtonElement | HTMLInputElement | null)?.getAttribute('formtarget')\n\n if (formTarget === '_blank' && resolvedMethod === 'get') {\n window.open(url, '_blank')\n return\n }\n\n const submitOptions: FormSubmitOptions = {\n headers,\n queryStringArrayFormat,\n errorBag,\n showProgress,\n invalidateCacheTags,\n component: resolvedComponent,\n optimistic: optimistic ? (pageProps) => optimistic(pageProps, data) : undefined,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess: (...args) => {\n onSuccess(...args)\n onSubmitComplete({\n reset,\n defaults,\n })\n maybeReset(resetOnSuccess)\n\n if (setDefaultsOnSuccess === true) {\n defaults()\n }\n },\n onError(...args) {\n onError(...args)\n maybeReset(resetOnError)\n },\n ...options,\n }\n\n // We need transform because we can't override the default data with different keys (by design)\n form.transform(() => transform(data))\n form.submit(resolvedMethod, url, submitOptions)\n\n // Reset the transformer back so the submitter is not used for future submissions\n form.transform(getTransformedData)\n }\n\n const defaults = () => {\n defaultData.current = getFormData()\n setIsDirty(false)\n }\n\n const exposed: FormComponentSlotProps = {\n errors: form.errors,\n hasErrors: form.hasErrors,\n processing: form.processing,\n progress: form.progress,\n wasSuccessful: form.wasSuccessful,\n recentlySuccessful: form.recentlySuccessful,\n isDirty,\n clearErrors,\n resetAndClearErrors,\n setError: form.setError,\n reset,\n submit,\n defaults,\n getData,\n getFormData,\n\n // Precognition\n validator: () => form.validator(),\n validating: form.validating,\n valid: form.valid,\n invalid: form.invalid,\n validate: (field?: string | NamedInputEvent | ValidationConfig, config?: ValidationConfig) =>\n form.validate(...UseFormUtils.mergeHeadersForValidation(field, config, headers)),\n touch: form.touch,\n touched: form.touched,\n }\n\n useImperativeHandle(ref, () => exposed, [form, isDirty, submit])\n\n const formNode = createElement(\n 'form',\n {\n ...props,\n ref: formElement,\n action: isUrlMethodPair(action) ? action.url : action,\n method: resolvedMethod,\n onSubmit: (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n submit((event.nativeEvent as SubmitEvent).submitter)\n },\n inert: disableWhileProcessing && form.processing,\n },\n typeof children === 'function' ? children(exposed) : children,\n )\n\n return createElement(FormContext.Provider, { value: exposed }, formNode)\n },\n)\n\nForm.displayName = 'InertiaForm'\n\nexport function useFormContext<TForm extends object = Record<string, any>>(): FormComponentRef<TForm> | undefined {\n return use(FormContext) as FormComponentRef<TForm> | undefined\n}\n\nexport default Form as {\n <TForm extends object = Record<string, any>>(\n props: FormProps<TForm> & React.RefAttributes<FormComponentRef<TForm>>,\n ): React.ReactElement\n displayName: string\n}\n", "import {\n CancelToken,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n Method,\n OptimisticCallback,\n Progress,\n RequestPayload,\n router,\n UrlMethodPair,\n UseFormArguments,\n UseFormSubmitArguments,\n UseFormSubmitOptions,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep } from 'es-toolkit'\nimport type { NamedInputEvent, PrecognitionPath, ValidationConfig, Validator } from 'laravel-precognition'\nimport { useCallback, useRef, useState } from 'react'\nimport { useIsomorphicLayoutEffect } from './react'\nimport useFormState, { SetDataAction, SetDataByKeyValuePair, SetDataByMethod, SetDataByObject } from './useFormState'\nimport useRemember from './useRemember'\n\n// Re-export types that were moved to useFormState\nexport { SetDataAction, SetDataByKeyValuePair, SetDataByMethod, SetDataByObject }\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface InertiaFormProps<TForm extends Record<string, any>> {\n data: TForm\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n setData: SetDataAction<TForm>\n transform: (callback: UseFormTransformCallback<TForm>) => void\n setDefaults: {\n (): void\n <T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n (fields: Partial<TForm>): void\n }\n reset: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n clearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n resetAndClearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n setError: {\n <K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n (errors: FormDataErrors<TForm>): void\n }\n submit: (...args: UseFormSubmitArguments) => void\n get: (url: string, options?: UseFormSubmitOptions) => void\n post: (url: string, options?: UseFormSubmitOptions) => void\n put: (url: string, options?: UseFormSubmitOptions) => void\n patch: (url: string, options?: UseFormSubmitOptions) => void\n delete: (url: string, options?: UseFormSubmitOptions) => void\n cancel: () => void\n dontRemember: <K extends FormDataKeys<TForm>>(...fields: K[]) => InertiaFormProps<TForm>\n optimistic: <TProps>(callback: OptimisticCallback<TProps>) => InertiaFormProps<TForm>\n withPrecognition: (...args: UseFormWithPrecognitionArguments) => InertiaPrecognitiveFormProps<TForm>\n}\n\nexport interface InertiaFormValidationProps<TForm extends Record<string, any>> {\n invalid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n setValidationTimeout: (duration: number) => InertiaPrecognitiveFormProps<TForm>\n touch: <K extends FormDataKeys<TForm>>(\n field: K | NamedInputEvent | Array<K>,\n ...fields: K[]\n ) => InertiaPrecognitiveFormProps<TForm>\n touched: <K extends FormDataKeys<TForm>>(field?: K) => boolean\n valid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n validate: <K extends FormDataKeys<TForm> | PrecognitionPath<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ) => InertiaPrecognitiveFormProps<TForm>\n validateFiles: () => InertiaPrecognitiveFormProps<TForm>\n validating: boolean\n validator: () => Validator\n withAllErrors: () => InertiaPrecognitiveFormProps<TForm>\n withoutFileValidation: () => InertiaPrecognitiveFormProps<TForm>\n // Backward compatibility for easy migration from the original Precognition libraries\n setErrors: (errors: FormDataErrors<TForm>) => InertiaPrecognitiveFormProps<TForm>\n forgetError: <K extends FormDataKeys<TForm> | NamedInputEvent>(field: K) => InertiaPrecognitiveFormProps<TForm>\n}\n\nexport type InertiaForm<TForm extends Record<string, any>> = InertiaFormProps<TForm>\nexport type InertiaPrecognitiveFormProps<TForm extends Record<string, any>> = InertiaFormProps<TForm> &\n InertiaFormValidationProps<TForm>\n\nexport default function useForm<TForm extends FormDataType<TForm>>(\n method: Method | (() => Method),\n url: string | (() => string),\n data: TForm | (() => TForm),\n): InertiaPrecognitiveFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n urlMethodPair: UrlMethodPair | (() => UrlMethodPair),\n data: TForm | (() => TForm),\n): InertiaPrecognitiveFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKey: string,\n data: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(data: TForm | (() => TForm)): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n ...args: UseFormArguments<TForm>\n): InertiaFormProps<TForm> | InertiaPrecognitiveFormProps<TForm> {\n const { rememberKey, data, precognitionEndpoint } = UseFormUtils.parseUseFormArguments<TForm>(...args)\n\n // Resolve initial data for remember functionality hooks\n const initialDefaults = typeof data === 'function' ? cloneDeep(data()) : cloneDeep(data)\n\n const cancelToken = useRef<CancelToken | null>(null)\n const excludeKeysRef = useRef<FormDataKeys<TForm>[]>([])\n const pendingOptimisticRef = useRef<OptimisticCallback | null>(null)\n\n // For remember functionality, we need custom state hooks\n const useDataState = rememberKey\n ? () => useRemember<TForm>(initialDefaults, `${rememberKey}:data`, excludeKeysRef)\n : undefined\n\n const useErrorsState = rememberKey\n ? () => useRemember<FormDataErrors<TForm>>({} as FormDataErrors<TForm>, `${rememberKey}:errors`)\n : undefined\n\n const {\n form: baseForm,\n setDefaultsState,\n transformRef,\n precognitionEndpointRef,\n isMounted,\n setProcessing,\n setProgress,\n markAsSuccessful,\n clearErrors,\n setError,\n defaultsCalledInOnSuccessRef,\n resetBeforeSubmit,\n finishProcessing,\n } = useFormState<TForm>({\n data,\n precognitionEndpoint,\n useDataState,\n useErrorsState,\n })\n\n // Handle dataAsDefaults pattern for setDefaults synchronization\n // When setDefaults() is called without args immediately after setData(),\n // dataRef.current may be stale. This layout effect ensures the current\n // data state is used as defaults.\n const [dataAsDefaults, setDataAsDefaults] = useState(false)\n\n const originalSetDefaults = baseForm.setDefaults\n baseForm.setDefaults = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) => {\n if (typeof fieldOrFields === 'undefined') {\n setDataAsDefaults(true)\n }\n\n return originalSetDefaults(fieldOrFields as any, maybeValue as any)\n },\n [originalSetDefaults],\n ) as typeof baseForm.setDefaults\n\n useIsomorphicLayoutEffect(() => {\n if (!dataAsDefaults) {\n return\n }\n\n if (baseForm.isDirty) {\n setDefaultsState(baseForm.data)\n }\n\n setDataAsDefaults(false)\n }, [dataAsDefaults])\n\n const submit = useCallback(\n (...args: UseFormSubmitArguments) => {\n const { method, url, options } = UseFormUtils.parseSubmitArguments(args, precognitionEndpointRef.current)\n\n defaultsCalledInOnSuccessRef.current = false\n\n const _options: VisitOptions = {\n ...options,\n onCancelToken: (token) => {\n cancelToken.current = token\n\n return options.onCancelToken?.(token)\n },\n onBefore: (visit) => {\n resetBeforeSubmit()\n\n return options.onBefore?.(visit)\n },\n onStart: (visit) => {\n setProcessing(true)\n\n return options.onStart?.(visit)\n },\n onProgress: (event) => {\n setProgress(event || null)\n\n return options.onProgress?.(event)\n },\n onSuccess: async (page) => {\n if (isMounted.current) {\n markAsSuccessful()\n }\n\n const onSuccess = options.onSuccess ? await options.onSuccess(page) : null\n\n if (isMounted.current && !defaultsCalledInOnSuccessRef.current) {\n baseForm.setData((data: TForm) => {\n setDefaultsState(cloneDeep(data))\n return data\n })\n }\n\n return onSuccess\n },\n onError: (errors) => {\n if (isMounted.current) {\n clearErrors()\n setError(errors as FormDataErrors<TForm>)\n }\n\n return options.onError?.(errors)\n },\n onCancel: () => {\n return options.onCancel?.()\n },\n onFinish: (visit) => {\n if (isMounted.current) {\n finishProcessing()\n }\n\n cancelToken.current = null\n\n return options.onFinish?.(visit)\n },\n }\n\n _options.optimistic = _options.optimistic ?? pendingOptimisticRef.current ?? undefined\n pendingOptimisticRef.current = null\n\n const transformedData = transformRef.current(baseForm.data) as RequestPayload\n\n if (method === 'delete') {\n router.delete(url, { ..._options, data: transformedData })\n } else {\n router[method](url, transformedData, _options)\n }\n },\n [baseForm.data, clearErrors, setError, transformRef],\n )\n\n const cancel = useCallback(() => {\n if (cancelToken.current) {\n cancelToken.current.cancel()\n }\n }, [])\n\n const createSubmitMethod =\n (method: Method) =>\n (url: string, options: VisitOptions = {}) => {\n submit(method, url, options)\n }\n\n // Add useForm-specific methods to the form object (mutate in place like Svelte)\n Object.assign(baseForm, {\n submit,\n get: createSubmitMethod('get'),\n post: createSubmitMethod('post'),\n put: createSubmitMethod('put'),\n patch: createSubmitMethod('patch'),\n delete: createSubmitMethod('delete'),\n cancel,\n dontRemember: <K extends FormDataKeys<TForm>>(...keys: K[]) => {\n excludeKeysRef.current = keys\n return form\n },\n\n optimistic: <TProps>(callback: OptimisticCallback<TProps>) => {\n pendingOptimisticRef.current = callback as OptimisticCallback\n return form\n },\n })\n\n // Cast to the full form type (baseForm now has submit methods)\n const form = baseForm as unknown as InertiaFormProps<TForm>\n\n // Wrap withPrecognition to return the correct type with submit methods\n const originalWithPrecognition = baseForm.withPrecognition\n form.withPrecognition = (...args: UseFormWithPrecognitionArguments): InertiaPrecognitiveFormProps<TForm> => {\n originalWithPrecognition(...args)\n return form as InertiaPrecognitiveFormProps<TForm>\n }\n\n return precognitionEndpointRef.current ? (form as InertiaPrecognitiveFormProps<TForm>) : form\n}\n", "import { DependencyList, EffectCallback, useEffect, useLayoutEffect } from 'react'\n\n// Inspired by react-redux, this hook uses useLayoutEffect in the browser, and useEffect\n// when using SSR. Currently, useLayoutEffect doesn't work when rendered on the server.\nexport function useIsomorphicLayoutEffect(effect: EffectCallback, deps?: DependencyList): void {\n typeof window === 'undefined' ? useEffect(effect, deps) : useLayoutEffect(effect, deps)\n}\n", "import {\n Errors,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataValues,\n Progress,\n UrlMethodPair,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n} from '@inertiajs/core'\nimport { cloneDeep, isEqual } from 'es-toolkit'\nimport { get, has, set } from 'es-toolkit/compat'\nimport {\n createValidator,\n NamedInputEvent,\n resolveName,\n toSimpleValidationErrors,\n ValidationConfig,\n Validator,\n} from 'laravel-precognition'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { config } from '.'\n\nexport type SetDataByObject<TForm> = (data: Partial<TForm>) => void\nexport type SetDataByMethod<TForm> = (data: (previousData: TForm) => TForm) => void\nexport type SetDataByKeyValuePair<TForm> = <K extends FormDataKeys<TForm>>(\n key: K,\n value: FormDataValues<TForm, K>,\n) => void\nexport type SetDataAction<TForm extends Record<any, any>> = SetDataByObject<TForm> &\n SetDataByMethod<TForm> &\n SetDataByKeyValuePair<TForm>\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface FormStateProps<TForm extends object> {\n data: TForm\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n setData: SetDataAction<TForm>\n transform: (callback: UseFormTransformCallback<TForm>) => void\n setDefaults: {\n (): void\n <T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n (fields: Partial<TForm>): void\n }\n reset: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n clearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n resetAndClearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n setError: {\n <K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n (errors: FormDataErrors<TForm>): void\n }\n withPrecognition: (...args: UseFormWithPrecognitionArguments) => FormStateWithPrecognition<TForm>\n}\n\nexport interface FormStateValidationProps<TForm extends object> {\n invalid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n setValidationTimeout: (duration: number) => FormStateWithPrecognition<TForm>\n touch: <K extends FormDataKeys<TForm>>(\n field: K | NamedInputEvent | Array<K>,\n ...fields: K[]\n ) => FormStateWithPrecognition<TForm>\n touched: <K extends FormDataKeys<TForm>>(field?: K) => boolean\n valid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n validate: <K extends FormDataKeys<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ) => FormStateWithPrecognition<TForm>\n validateFiles: () => FormStateWithPrecognition<TForm>\n validating: boolean\n validator: () => Validator\n withAllErrors: () => FormStateWithPrecognition<TForm>\n withoutFileValidation: () => FormStateWithPrecognition<TForm>\n setErrors: (errors: FormDataErrors<TForm>) => FormStateWithPrecognition<TForm>\n forgetError: <K extends FormDataKeys<TForm> | NamedInputEvent>(field: K) => FormStateWithPrecognition<TForm>\n}\n\nexport type FormState<TForm extends object> = FormStateProps<TForm>\nexport type FormStateWithPrecognition<TForm extends object> = FormStateProps<TForm> & FormStateValidationProps<TForm>\n\nexport interface UseFormStateOptions<TForm extends object> {\n data: TForm | (() => TForm)\n precognitionEndpoint?: (() => UrlMethodPair) | null\n useDataState?: () => [TForm, React.Dispatch<React.SetStateAction<TForm>>]\n useErrorsState?: () => [FormDataErrors<TForm>, React.Dispatch<React.SetStateAction<FormDataErrors<TForm>>>]\n}\n\nexport interface UseFormStateReturn<TForm extends object> {\n form: FormState<TForm>\n setDefaultsState: React.Dispatch<React.SetStateAction<TForm>>\n transformRef: React.MutableRefObject<UseFormTransformCallback<TForm>>\n precognitionEndpointRef: React.MutableRefObject<(() => UrlMethodPair) | null>\n dataRef: React.MutableRefObject<TForm>\n isMounted: React.MutableRefObject<boolean>\n setProcessing: (value: boolean) => void\n setProgress: (value: Progress | null) => void\n markAsSuccessful: () => void\n clearErrors: (...fields: string[]) => void\n setError: (fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: ErrorValue) => void\n defaultsCalledInOnSuccessRef: React.MutableRefObject<boolean>\n resetBeforeSubmit: () => void\n finishProcessing: () => void\n withAllErrors: { enabled: () => boolean; enable: () => void }\n}\n\nexport default function useFormState<TForm extends object>(\n options: UseFormStateOptions<TForm>,\n): UseFormStateReturn<TForm> {\n const { data: dataOption, useDataState, useErrorsState } = options\n\n const isDataFunction = typeof dataOption === 'function'\n const resolveData = () => (isDataFunction ? (dataOption as () => TForm)() : dataOption)\n\n const initialData = cloneDeep(resolveData())\n\n const isMounted = useRef(false)\n const precognitionEndpointRef = useRef(options.precognitionEndpoint ?? null)\n\n const [defaults, setDefaultsState] = useState(cloneDeep(initialData))\n\n const [data, setData] = useDataState ? useDataState() : useState(cloneDeep(initialData))\n const [errors, setErrors] = useErrorsState ? useErrorsState() : useState({} as FormDataErrors<TForm>)\n const [processing, _setProcessing] = useState(false)\n const [progress, _setProgress] = useState<Progress | null>(null)\n const [wasSuccessful, setWasSuccessful] = useState(false)\n const [recentlySuccessful, setRecentlySuccessful] = useState(false)\n\n const recentlySuccessfulTimeoutId = useRef<number>(undefined)\n const transformRef = useRef<UseFormTransformCallback<TForm>>((data) => data)\n const defaultsCalledInOnSuccessRef = useRef(false)\n\n const validatorRef = useRef<Validator | null>(null)\n const [validating, setValidating] = useState(false)\n const [touchedFields, setTouchedFields] = useState<string[]>([])\n const [validFields, setValidFields] = useState<string[]>([])\n const withAllErrorsRef = useRef<boolean | null>(null)\n const withAllErrorsEnabled = () => withAllErrorsRef.current ?? config.get('form.withAllErrors')\n\n const dataRef = useRef(data)\n\n useEffect(() => {\n dataRef.current = data\n })\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n // Snapshot ref keeps state values accessible to the stable form object's getters.\n // Reassigned each render so getters always return the latest React state.\n const snapshotRef = useRef({\n data,\n defaults,\n errors,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n validating,\n touchedFields,\n validFields,\n })\n\n snapshotRef.current = {\n data,\n defaults,\n errors,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n validating,\n touchedFields,\n validFields,\n }\n\n const setProcessing = useCallback((value: boolean) => {\n _setProcessing(value)\n snapshotRef.current.processing = value\n }, [])\n\n const setProgress = useCallback((value: Progress | null) => {\n _setProgress(value)\n snapshotRef.current.progress = value\n }, [])\n\n const setDataFunction = useCallback(\n (keyOrData: FormDataKeys<TForm> | Function | Partial<TForm>, maybeValue?: any) => {\n if (typeof keyOrData === 'string') {\n setData((data) => set(cloneDeep(data), keyOrData, maybeValue))\n } else if (typeof keyOrData === 'function') {\n setData((data) => keyOrData(data))\n } else {\n setData(keyOrData as TForm)\n }\n },\n [setData],\n )\n\n const setDefaultsFunction = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) => {\n if (isDataFunction) {\n throw new Error('You cannot call `defaults()` when using a function to define your form data.')\n }\n\n defaultsCalledInOnSuccessRef.current = true\n\n let newDefaults = {} as TForm\n\n if (typeof fieldOrFields === 'undefined') {\n newDefaults = { ...dataRef.current }\n setDefaultsState(dataRef.current)\n } else {\n setDefaultsState((defaults) => {\n newDefaults =\n typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign(cloneDeep(defaults), fieldOrFields)\n\n return newDefaults as TForm\n })\n }\n\n validatorRef.current?.defaults(newDefaults as Record<string, unknown>)\n },\n [setDefaultsState],\n )\n\n const reset = useCallback(\n (...fields: string[]) => {\n const resolvedData = isDataFunction ? cloneDeep(resolveData()) : defaults\n const clonedData = cloneDeep(resolvedData)\n\n if (fields.length === 0) {\n if (isDataFunction) {\n setDefaultsState(clonedData)\n }\n setData(clonedData)\n } else {\n if (isDataFunction) {\n setDefaultsState((currentDefaults) => {\n const newDefaults = cloneDeep(currentDefaults)\n ;(fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(clonedData, key))\n .forEach((key) => {\n set(newDefaults, key, get(clonedData, key))\n })\n return newDefaults\n })\n }\n\n setData((data) =>\n (fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(clonedData, key))\n .reduce(\n (carry, key) => {\n return set(carry, key, get(clonedData, key))\n },\n { ...data } as TForm,\n ),\n )\n }\n\n validatorRef.current?.reset(...fields)\n },\n [setData, defaults],\n )\n\n const setError = useCallback(\n (fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: ErrorValue) => {\n setErrors((errors) => {\n const newErrors = {\n ...errors,\n ...(typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields),\n }\n\n snapshotRef.current.errors = newErrors as FormDataErrors<TForm>\n validatorRef.current?.setErrors(newErrors)\n\n return newErrors\n })\n },\n [setErrors],\n )\n\n const clearErrors = useCallback(\n (...fields: string[]) => {\n setErrors((errors) => {\n const newErrors = Object.keys(errors).reduce(\n (carry, field) => ({\n ...carry,\n ...(fields.length > 0 && !fields.includes(field) ? { [field]: (errors as Errors)[field] } : {}),\n }),\n {},\n )\n\n snapshotRef.current.errors = newErrors as FormDataErrors<TForm>\n\n if (validatorRef.current) {\n if (fields.length === 0) {\n validatorRef.current.setErrors({})\n } else {\n fields.forEach(validatorRef.current.forgetError)\n }\n }\n\n return newErrors as FormDataErrors<TForm>\n })\n },\n [setErrors],\n )\n\n const resetAndClearErrors = useCallback(\n (...fields: string[]) => {\n reset(...fields)\n clearErrors(...fields)\n },\n [reset, clearErrors],\n )\n\n const setWasSuccessfulWithSnapshot = useCallback((value: boolean) => {\n setWasSuccessful(value)\n snapshotRef.current.wasSuccessful = value\n }, [])\n\n const setRecentlySuccessfulWithSnapshot = useCallback((value: boolean) => {\n setRecentlySuccessful(value)\n snapshotRef.current.recentlySuccessful = value\n }, [])\n\n const markAsSuccessful = useCallback(() => {\n clearErrors()\n setWasSuccessfulWithSnapshot(true)\n setRecentlySuccessfulWithSnapshot(true)\n\n recentlySuccessfulTimeoutId.current = window.setTimeout(() => {\n if (isMounted.current) {\n setRecentlySuccessfulWithSnapshot(false)\n }\n }, config.get('form.recentlySuccessfulDuration'))\n }, [clearErrors, setWasSuccessfulWithSnapshot, setRecentlySuccessfulWithSnapshot])\n\n const resetBeforeSubmit = useCallback(() => {\n setWasSuccessfulWithSnapshot(false)\n setRecentlySuccessfulWithSnapshot(false)\n clearTimeout(recentlySuccessfulTimeoutId.current)\n }, [setWasSuccessfulWithSnapshot, setRecentlySuccessfulWithSnapshot])\n\n const finishProcessing = useCallback(() => {\n setProcessing(false)\n setProgress(null)\n }, [setProcessing, setProgress])\n\n const transformFunction = useCallback((callback: UseFormTransformCallback<TForm>) => {\n transformRef.current = callback\n }, [])\n\n const tap = <T>(value: T, callback: (value: T) => unknown): T => {\n callback(value)\n return value\n }\n\n const valid = useCallback(\n <K extends FormDataKeys<TForm>>(field: K) => validFields.includes(field as string),\n [validFields],\n )\n\n const invalid = useCallback(<K extends FormDataKeys<TForm>>(field: K) => field in errors, [errors])\n\n const touched = useCallback(\n <K extends FormDataKeys<TForm>>(field?: K) =>\n typeof field === 'string' ? touchedFields.includes(field as string) : touchedFields.length > 0,\n [touchedFields],\n )\n\n // Stable form object created once. Getters read from snapshotRef so they\n // always return the latest React state without requiring a new object identity.\n const form = useMemo(() => {\n return {\n get data() {\n return snapshotRef.current.data\n },\n get isDirty() {\n return !isEqual(snapshotRef.current.data, snapshotRef.current.defaults)\n },\n get errors() {\n return snapshotRef.current.errors\n },\n get hasErrors() {\n return Object.keys(snapshotRef.current.errors).length > 0\n },\n get processing() {\n return snapshotRef.current.processing\n },\n get progress() {\n return snapshotRef.current.progress\n },\n get wasSuccessful() {\n return snapshotRef.current.wasSuccessful\n },\n get recentlySuccessful() {\n return snapshotRef.current.recentlySuccessful\n },\n } as FormState<TForm>\n }, [])\n\n // Assign methods onto the stable object each render. Methods may have changing\n // deps (e.g. reset depends on defaults) so we reassign them, but the object\n // identity stays the same.\n Object.assign(form, {\n setData: setDataFunction,\n transform: transformFunction,\n setDefaults: setDefaultsFunction,\n reset,\n setError,\n clearErrors,\n resetAndClearErrors,\n })\n\n const validate = (field?: string | NamedInputEvent | ValidationConfig, config?: ValidationConfig) => {\n if (typeof field === 'object' && !('target' in field)) {\n config = field\n field = undefined\n }\n\n if (field === undefined) {\n validatorRef.current!.validate(config)\n } else {\n const fieldName = resolveName(field)\n const transformedData = transformRef.current(dataRef.current) as Record<string, unknown>\n validatorRef.current!.validate(fieldName, get(transformedData, fieldName), config)\n }\n\n return form\n }\n\n const withPrecognition = (...args: UseFormWithPrecognitionArguments): FormStateWithPrecognition<TForm> => {\n precognitionEndpointRef.current = UseFormUtils.createWayfinderCallback(...args)\n\n if (!validatorRef.current) {\n const validator = createValidator(\n (client) => {\n const { method, url } = precognitionEndpointRef.current!()\n const currentData = dataRef.current\n const transformedData = transformRef.current(currentData) as Record<string, unknown>\n return client[method](url, transformedData)\n },\n cloneDeep(defaults as Record<string, unknown>),\n )\n\n validatorRef.current = validator\n\n validator\n .on('validatingChanged', () => {\n setValidating(validator.validating())\n })\n .on('validatedChanged', () => {\n setValidFields(validator.valid())\n })\n .on('touchedChanged', () => {\n setTouchedFields(validator.touched())\n })\n .on('errorsChanged', () => {\n const validationErrors = withAllErrorsEnabled()\n ? validator.errors()\n : toSimpleValidationErrors(validator.errors())\n\n setErrors(validationErrors as FormDataErrors<TForm>)\n snapshotRef.current.errors = validationErrors as FormDataErrors<TForm>\n setValidFields(validator.valid())\n })\n }\n\n const precognitiveForm = Object.assign(form, {\n get validating() {\n return snapshotRef.current.validating\n },\n validator: () => validatorRef.current!,\n valid,\n invalid,\n touched,\n withoutFileValidation: () => tap(precognitiveForm, () => validatorRef.current?.withoutFileValidation()),\n touch: (\n field: FormDataKeys<TForm> | NamedInputEvent | Array<FormDataKeys<TForm>>,\n ...fields: FormDataKeys<TForm>[]\n ) => {\n if (Array.isArray(field)) {\n validatorRef.current?.touch(field)\n } else if (typeof field === 'string') {\n validatorRef.current?.touch([field, ...fields])\n } else {\n validatorRef.current?.touch(field)\n }\n\n return precognitiveForm\n },\n withAllErrors: () => tap(precognitiveForm, () => (withAllErrorsRef.current = true)),\n setValidationTimeout: (duration: number) =>\n tap(precognitiveForm, () => validatorRef.current?.setTimeout(duration)),\n validateFiles: () => tap(precognitiveForm, () => validatorRef.current?.validateFiles()),\n validate,\n setErrors: (errors: FormDataErrors<TForm>) => tap(precognitiveForm, () => form.setError(errors)),\n forgetError: (field: FormDataKeys<TForm> | NamedInputEvent) =>\n tap(precognitiveForm, () =>\n form.clearErrors(resolveName(field as string | NamedInputEvent) as FormDataKeys<TForm>),\n ),\n }) as FormStateWithPrecognition<TForm>\n\n return precognitiveForm\n }\n\n form.withPrecognition = withPrecognition\n\n if (precognitionEndpointRef.current) {\n form.withPrecognition(precognitionEndpointRef.current)\n }\n\n return {\n form,\n setDefaultsState,\n transformRef,\n precognitionEndpointRef,\n dataRef,\n isMounted,\n setProcessing,\n setProgress,\n markAsSuccessful,\n clearErrors,\n setError,\n defaultsCalledInOnSuccessRef,\n resetBeforeSubmit,\n finishProcessing,\n withAllErrors: {\n enabled: withAllErrorsEnabled,\n enable: () => {\n withAllErrorsRef.current = true\n },\n },\n }\n}\n", "import { router } from '@inertiajs/core'\nimport { Dispatch, MutableRefObject, SetStateAction, useEffect, useState } from 'react'\n\nexport default function useRemember<State>(\n initialState: State,\n key?: string,\n excludeKeysRef?: MutableRefObject<string[]>,\n): [State, Dispatch<SetStateAction<State>>] {\n const [state, setState] = useState(() => {\n const restored = router.restore(key) as State\n\n return restored !== undefined ? restored : initialState\n })\n\n useEffect(() => {\n const keys = excludeKeysRef?.current\n if (keys && keys.length > 0 && typeof state === 'object' && state !== null) {\n const filtered = { ...state } as Record<string, unknown>\n keys.forEach((k) => delete filtered[k])\n router.remember(filtered, key)\n } else {\n router.remember(state, key)\n }\n }, [state, key])\n\n return [state, setState]\n}\n", "import { escape } from 'es-toolkit/compat'\nimport React, { FunctionComponent, ReactElement, ReactNode, use, useEffect, useMemo } from 'react'\nimport HeadContext from './HeadContext'\n\ntype InertiaHeadProps = {\n title?: string\n children?: ReactNode\n}\n\ntype InertiaHead = FunctionComponent<InertiaHeadProps>\n\nconst Head: InertiaHead = function ({ children, title }) {\n const headManager = use(HeadContext)\n const provider = useMemo(() => headManager!.createProvider(), [headManager])\n const isServer = typeof window === 'undefined'\n\n useEffect(() => {\n provider.reconnect()\n provider.update(renderNodes(children))\n return () => {\n provider.disconnect()\n }\n }, [provider, children, title])\n\n function isUnaryTag(node: ReactElement<any>) {\n return (\n typeof node.type === 'string' &&\n [\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n ].indexOf(node.type) > -1\n )\n }\n\n function renderTagStart(node: ReactElement<any>): string {\n const attrs = Object.keys(node.props).reduce((carry, name) => {\n if (['head-key', 'children', 'dangerouslySetInnerHTML'].includes(name)) {\n return carry\n }\n\n const value = String(node.props[name])\n\n if (value === '') {\n return carry + ` ${name}`\n }\n\n return carry + ` ${name}=\"${escape(value)}\"`\n }, '')\n\n return `<${String(node.type)}${attrs}>`\n }\n\n function renderTagChildren(node: ReactElement<any>): string {\n const { children } = node.props\n\n if (typeof children === 'string') {\n return children\n }\n\n if (Array.isArray(children)) {\n return children.reduce((html, child) => html + renderTag(child), '')\n }\n\n return ''\n }\n\n function renderTag(node: ReactElement<any>): string {\n let html = renderTagStart(node)\n\n if (node.props.children) {\n html += renderTagChildren(node)\n }\n\n if (node.props.dangerouslySetInnerHTML) {\n html += node.props.dangerouslySetInnerHTML.__html\n }\n\n if (!isUnaryTag(node)) {\n html += `</${String(node.type)}>`\n }\n\n return html\n }\n\n function ensureNodeHasInertiaProp(node: ReactElement<any>) {\n return React.cloneElement(node, {\n 'data-inertia': node.props['head-key'] !== undefined ? node.props['head-key'] : '',\n })\n }\n\n function renderNode(node: ReactElement<any>) {\n return renderTag(ensureNodeHasInertiaProp(node))\n }\n\n function renderNodes(nodes: ReactNode) {\n const elements = React.Children.toArray(nodes)\n .filter((node) => node)\n .map((node) => renderNode(node as ReactElement<any>))\n\n if (title && !elements.find((tag) => tag.startsWith('<title'))) {\n elements.push(`<title data-inertia=\"\">${title}</title>`)\n }\n\n return elements\n }\n\n if (isServer) {\n provider.update(renderNodes(children))\n }\n\n return null\n}\nexport default Head\n", "import {\n getScrollableParent,\n InfiniteScrollActionSlotProps,\n InfiniteScrollComponentBaseProps,\n InfiniteScrollRef,\n InfiniteScrollSlotProps,\n ReloadOptions,\n useInfiniteScroll,\n UseInfiniteScrollProps,\n} from '@inertiajs/core'\nimport React, {\n createElement,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport usePage from './usePage'\n\nconst resolveHTMLElement = (\n value: string | React.RefObject<HTMLElement | null> | null,\n fallback: HTMLElement | null,\n): HTMLElement | null => {\n if (!value) {\n return fallback\n }\n\n // React ref object { current: HTMLElement | null }\n if (value && typeof value === 'object' && 'current' in value) {\n return value.current\n }\n\n // CSS Selector string\n if (typeof value === 'string') {\n return document.querySelector(value) as HTMLElement | null\n }\n\n return fallback\n}\n\n// Helper function to render slot content\nconst renderSlot = (\n slotContent: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode) | undefined,\n slotProps: InfiniteScrollActionSlotProps,\n fallback: React.ReactNode = null,\n): React.ReactNode => {\n if (!slotContent) {\n return fallback\n }\n\n return typeof slotContent === 'function' ? slotContent(slotProps) : slotContent\n}\n\ninterface ComponentProps\n extends\n InfiniteScrollComponentBaseProps,\n Omit<React.HTMLAttributes<HTMLElement>, keyof InfiniteScrollComponentBaseProps | 'children'> {\n children?: React.ReactNode | ((props: InfiniteScrollSlotProps) => React.ReactNode)\n\n // Element references for custom trigger detection (when you want different trigger elements)\n startElement?: string | React.RefObject<HTMLElement | null>\n endElement?: string | React.RefObject<HTMLElement | null>\n itemsElement?: string | React.RefObject<HTMLElement | null>\n\n // Render slots for UI components (when you want custom loading/action components)\n previous?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n next?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n loading?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n\n // Request options\n params?: ReloadOptions\n\n onlyNext?: boolean\n onlyPrevious?: boolean\n}\n\nconst InfiniteScroll = forwardRef<InfiniteScrollRef, ComponentProps>(\n (\n {\n data,\n buffer = 0,\n as = 'div',\n manual = false,\n manualAfter = 0,\n preserveUrl = false,\n reverse = false,\n autoScroll,\n children,\n startElement,\n endElement,\n itemsElement,\n previous,\n next,\n loading,\n params = {},\n onlyNext = false,\n onlyPrevious = false,\n ...props\n },\n ref,\n ) => {\n const [startElementFromRef, setStartElementFromRef] = useState<HTMLElement | null>(null)\n const startElementRef = useCallback((node: HTMLElement | null) => setStartElementFromRef(node), [])\n\n const [endElementFromRef, setEndElementFromRef] = useState<HTMLElement | null>(null)\n const endElementRef = useCallback((node: HTMLElement | null) => setEndElementFromRef(node), [])\n\n const [itemsElementFromRef, setItemsElementFromRef] = useState<HTMLElement | null>(null)\n const itemsElementRef = useCallback((node: HTMLElement | null) => setItemsElementFromRef(node), [])\n\n const scrollProp = usePage().scrollProps?.[data]\n\n const [loadingPrevious, setLoadingPrevious] = useState(false)\n const [loadingNext, setLoadingNext] = useState(false)\n const [requestCount, setRequestCount] = useState(0)\n const [hasPreviousPage, setHasPreviousPage] = useState(!!scrollProp?.previousPage)\n const [hasNextPage, setHasNextPage] = useState(!!scrollProp?.nextPage)\n\n const [resolvedStartElement, setResolvedStartElement] = useState<HTMLElement | null>(null)\n const [resolvedEndElement, setResolvedEndElement] = useState<HTMLElement | null>(null)\n const [resolvedItemsElement, setResolvedItemsElement] = useState<HTMLElement | null>(null)\n\n // Update elements when refs or props change\n useEffect(() => {\n const element = startElement ? resolveHTMLElement(startElement, startElementFromRef) : startElementFromRef\n setResolvedStartElement(element)\n }, [startElement, startElementFromRef])\n\n useEffect(() => {\n const element = endElement ? resolveHTMLElement(endElement, endElementFromRef) : endElementFromRef\n setResolvedEndElement(element)\n }, [endElement, endElementFromRef])\n\n useEffect(() => {\n const element = itemsElement ? resolveHTMLElement(itemsElement, itemsElementFromRef) : itemsElementFromRef\n setResolvedItemsElement(element)\n }, [itemsElement, itemsElementFromRef])\n\n const scrollableParent = useMemo(() => getScrollableParent(resolvedItemsElement), [resolvedItemsElement])\n\n const callbackPropsRef = useRef({\n buffer,\n onlyNext,\n onlyPrevious,\n reverse,\n preserveUrl,\n params,\n })\n\n callbackPropsRef.current = {\n buffer,\n onlyNext,\n onlyPrevious,\n reverse,\n preserveUrl,\n params,\n }\n\n const [infiniteScroll, setInfiniteScroll] = useState<UseInfiniteScrollProps | null>(null)\n\n const dataManager = useMemo(() => infiniteScroll?.dataManager, [infiniteScroll])\n const elementManager = useMemo(() => infiniteScroll?.elementManager, [infiniteScroll])\n\n const scrollToBottom = useCallback(() => {\n if (scrollableParent) {\n scrollableParent.scrollTo({\n top: scrollableParent.scrollHeight,\n behavior: 'instant',\n })\n } else {\n window.scrollTo({\n top: document.body.scrollHeight,\n behavior: 'instant',\n })\n }\n }, [scrollableParent])\n\n // Main setup effect - only recreate when structural dependencies change\n useEffect(() => {\n if (!resolvedItemsElement) {\n return\n }\n\n function syncStateFromDataManager() {\n setRequestCount(infiniteScrollInstance.dataManager.getRequestCount())\n setHasPreviousPage(infiniteScrollInstance.dataManager.hasPrevious())\n setHasNextPage(infiniteScrollInstance.dataManager.hasNext())\n }\n\n const infiniteScrollInstance = useInfiniteScroll({\n // Data\n getPropName: () => data,\n inReverseMode: () => callbackPropsRef.current.reverse,\n shouldFetchNext: () => !callbackPropsRef.current.onlyPrevious,\n shouldFetchPrevious: () => !callbackPropsRef.current.onlyNext,\n shouldPreserveUrl: () => callbackPropsRef.current.preserveUrl,\n getReloadOptions: () => callbackPropsRef.current.params,\n\n // Elements\n getTriggerMargin: () => callbackPropsRef.current.buffer,\n getStartElement: () => resolvedStartElement!,\n getEndElement: () => resolvedEndElement!,\n getItemsElement: () => resolvedItemsElement,\n getScrollableParent: () => scrollableParent,\n\n // Callbacks\n onBeforePreviousRequest: () => setLoadingPrevious(true),\n onBeforeNextRequest: () => setLoadingNext(true),\n onCompletePreviousRequest: () => {\n setLoadingPrevious(false)\n syncStateFromDataManager()\n },\n onCompleteNextRequest: () => {\n setLoadingNext(false)\n syncStateFromDataManager()\n },\n onDataReset: syncStateFromDataManager,\n })\n\n setInfiniteScroll(infiniteScrollInstance)\n const { dataManager, elementManager } = infiniteScrollInstance\n syncStateFromDataManager()\n\n elementManager.setupObservers()\n elementManager.processServerLoadedElements(dataManager.getLastLoadedPage())\n\n if (autoLoad) {\n elementManager.enableTriggers()\n }\n\n return () => {\n infiniteScrollInstance.flush()\n setInfiniteScroll(null)\n }\n }, [data, resolvedItemsElement, resolvedStartElement, resolvedEndElement, scrollableParent])\n\n const manualMode = useMemo(\n () => manual || (manualAfter > 0 && requestCount >= manualAfter),\n [manual, manualAfter, requestCount],\n )\n const autoLoad = useMemo(() => !manualMode, [manualMode])\n\n useEffect(() => {\n autoLoad ? elementManager?.enableTriggers() : elementManager?.disableTriggers()\n }, [autoLoad, onlyNext, onlyPrevious, resolvedStartElement, resolvedEndElement])\n\n useEffect(() => {\n // autoScroll defaults to reverse value if not explicitly set\n const shouldAutoScroll = autoScroll !== undefined ? autoScroll : reverse\n\n if (shouldAutoScroll) {\n scrollToBottom()\n }\n }, [scrollableParent])\n\n useImperativeHandle(\n ref,\n () => ({\n fetchNext: dataManager?.fetchNext || (() => {}),\n fetchPrevious: dataManager?.fetchPrevious || (() => {}),\n hasPrevious: dataManager?.hasPrevious || (() => false),\n hasNext: dataManager?.hasNext || (() => false),\n }),\n [dataManager],\n )\n\n const headerAutoMode = autoLoad && !onlyNext\n const footerAutoMode = autoLoad && !onlyPrevious\n\n const sharedExposed: Pick<\n InfiniteScrollActionSlotProps,\n 'loadingPrevious' | 'loadingNext' | 'hasPrevious' | 'hasNext'\n > = {\n loadingPrevious,\n loadingNext,\n hasPrevious: hasPreviousPage,\n hasNext: hasNextPage,\n }\n\n const exposedPrevious: InfiniteScrollActionSlotProps = {\n loading: loadingPrevious,\n fetch: dataManager?.fetchPrevious ?? (() => {}),\n autoMode: headerAutoMode,\n manualMode: !headerAutoMode,\n hasMore: hasPreviousPage,\n ...sharedExposed,\n }\n\n const exposedNext: InfiniteScrollActionSlotProps = {\n loading: loadingNext,\n fetch: dataManager?.fetchNext ?? (() => {}),\n autoMode: footerAutoMode,\n manualMode: !footerAutoMode,\n hasMore: hasNextPage,\n ...sharedExposed,\n }\n\n const exposedSlot: InfiniteScrollSlotProps = {\n loading: loadingPrevious || loadingNext,\n loadingPrevious,\n loadingNext,\n }\n\n const renderElements = []\n\n // Only render previous trigger if not using custom element selector/ref\n if (!startElement) {\n renderElements.push(\n createElement(\n 'div',\n { ref: startElementRef },\n // Render previous slot or fallback to loading indicator\n renderSlot(previous, exposedPrevious, loadingPrevious ? renderSlot(loading, exposedPrevious) : null),\n ),\n )\n }\n\n renderElements.push(\n createElement(\n as,\n { ...props, ref: itemsElementRef },\n typeof children === 'function' ? children(exposedSlot) : children,\n ),\n )\n\n // Only render next trigger if not using custom element selector/ref\n if (!endElement) {\n renderElements.push(\n createElement(\n 'div',\n { ref: endElementRef },\n // Render next slot or fallback to loading indicator\n renderSlot(next, exposedNext, loadingNext ? renderSlot(loading, exposedNext) : null),\n ),\n )\n }\n\n return createElement(React.Fragment, {}, ...(reverse ? [...renderElements].reverse() : renderElements))\n },\n)\n\nInfiniteScroll.displayName = 'InertiaInfiniteScroll'\n\nexport default InfiniteScroll\n", "import {\n ActiveVisit,\n isUrlMethodPair,\n LinkComponentBaseProps,\n LinkPrefetchOption,\n mergeDataIntoQueryString,\n Method,\n PendingVisit,\n resolveUrlMethodPairComponent,\n router,\n shouldIntercept,\n shouldNavigate,\n VisitOptions,\n} from '@inertiajs/core'\nimport { createElement, ElementType, forwardRef, useEffect, useMemo, useRef, useState } from 'react'\nimport { config } from '.'\n\nconst noop = () => undefined\n\ninterface BaseInertiaLinkProps extends LinkComponentBaseProps {\n as?: ElementType\n onClick?: (event: React.MouseEvent) => void\n}\n\nexport type InertiaLinkProps = BaseInertiaLinkProps &\n Omit<React.HTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps> &\n Omit<React.AllHTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps>\n\nconst Link = forwardRef<unknown, InertiaLinkProps>(\n (\n {\n children,\n as = 'a',\n data = {},\n href = '',\n method = 'get',\n preserveScroll = false,\n preserveState = null,\n preserveUrl = false,\n replace = false,\n only = [],\n except = [],\n headers = {},\n queryStringArrayFormat = 'brackets',\n async = false,\n onClick = noop,\n onCancelToken = noop,\n onBefore = noop,\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n onPrefetching = noop,\n onPrefetched = noop,\n prefetch = false,\n cacheFor = 0,\n cacheTags = [],\n viewTransition = false,\n component = null,\n instant = false,\n pageProps = null,\n ...props\n },\n ref,\n ) => {\n const [inFlightCount, setInFlightCount] = useState(0)\n const hoverTimeout = useRef<number>(undefined)\n\n const _method = useMemo(() => {\n return isUrlMethodPair(href) ? href.method : (method.toLowerCase() as Method)\n }, [href, method])\n\n const resolvedComponent = useMemo(() => {\n if (component) {\n return component\n }\n\n if (instant && isUrlMethodPair(href)) {\n return resolveUrlMethodPairComponent(href)\n }\n\n return null\n }, [component, instant, href])\n\n const _as = useMemo(() => {\n if (typeof as !== 'string' || as.toLowerCase() !== 'a') {\n // Custom component or element\n return as\n }\n\n return _method !== 'get' ? 'button' : as.toLowerCase()\n }, [as, _method])\n\n const mergeDataArray = useMemo(\n () => mergeDataIntoQueryString(_method, isUrlMethodPair(href) ? href.url : href, data, queryStringArrayFormat),\n [href, _method, data, queryStringArrayFormat],\n )\n\n const url = useMemo(() => mergeDataArray[0], [mergeDataArray])\n const _data = useMemo(() => mergeDataArray[1], [mergeDataArray])\n\n const baseParams = useMemo<VisitOptions>(\n () => ({\n data: _data,\n method: _method,\n preserveScroll,\n preserveState: preserveState ?? _method !== 'get',\n preserveUrl,\n replace,\n only,\n except,\n headers,\n async,\n component: resolvedComponent,\n pageProps,\n }),\n [\n _data,\n _method,\n preserveScroll,\n preserveState,\n preserveUrl,\n replace,\n only,\n except,\n headers,\n async,\n resolvedComponent,\n pageProps,\n ],\n )\n\n const visitParams = useMemo<VisitOptions>(\n () => ({\n ...baseParams,\n viewTransition,\n onCancelToken,\n onBefore,\n onStart(visit: PendingVisit) {\n setInFlightCount((count) => count + 1)\n onStart(visit)\n },\n onProgress,\n onFinish(visit: ActiveVisit) {\n setInFlightCount((count) => count - 1)\n onFinish(visit)\n },\n onCancel,\n onSuccess,\n onError,\n }),\n [\n baseParams,\n viewTransition,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess,\n onError,\n ],\n )\n\n const prefetchModes: LinkPrefetchOption[] = useMemo(\n () => {\n if (prefetch === true) {\n return ['hover']\n }\n\n if (prefetch === false) {\n return []\n }\n\n if (Array.isArray(prefetch)) {\n return prefetch\n }\n\n return [prefetch]\n },\n Array.isArray(prefetch) ? prefetch : [prefetch],\n )\n\n const cacheForValue = useMemo(() => {\n if (cacheFor !== 0) {\n // If they've provided a value, respect it\n return cacheFor\n }\n\n if (prefetchModes.length === 1 && prefetchModes[0] === 'click') {\n // If they've only provided a prefetch mode of 'click',\n // we should only prefetch for the next request but not keep it around\n return 0\n }\n\n // Otherwise, default to 30 seconds\n return config.get('prefetch.cacheFor')\n }, [cacheFor, prefetchModes])\n\n const doPrefetch = useMemo(() => {\n return () => {\n router.prefetch(\n url,\n {\n ...baseParams,\n onPrefetching,\n onPrefetched,\n },\n { cacheFor: cacheForValue, cacheTags },\n )\n }\n }, [url, baseParams, onPrefetching, onPrefetched, cacheForValue, cacheTags])\n\n useEffect(() => {\n return () => {\n clearTimeout(hoverTimeout.current)\n }\n }, [])\n\n useEffect(() => {\n if (prefetchModes.includes('mount')) {\n setTimeout(() => doPrefetch())\n }\n }, prefetchModes)\n\n const regularEvents = {\n onClick: (event: React.MouseEvent) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n event.preventDefault()\n\n router.visit(url, visitParams)\n }\n },\n }\n\n const prefetchHoverEvents = {\n onMouseEnter: () => {\n hoverTimeout.current = window.setTimeout(() => {\n doPrefetch()\n }, config.get('prefetch.hoverDelay'))\n },\n onMouseLeave: () => {\n clearTimeout(hoverTimeout.current)\n },\n onClick: regularEvents.onClick,\n }\n\n const prefetchClickEvents = {\n onMouseDown: (event: React.MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onKeyDown: (event: React.KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onMouseUp: (event: React.MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n router.visit(url, visitParams)\n }\n },\n onKeyUp: (event: React.KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n router.visit(url, visitParams)\n }\n },\n onClick: (event: React.MouseEvent) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n // Let the mouseup/keyup event handle the visit\n event.preventDefault()\n }\n },\n }\n\n const elProps = useMemo(() => {\n if (_as === 'button') {\n return { type: 'button' }\n }\n\n if (_as === 'a' || typeof _as !== 'string') {\n return { href: url }\n }\n\n return {}\n }, [_as, url])\n\n return createElement(\n _as,\n {\n ...props,\n ...elProps,\n ref,\n ...(() => {\n if (prefetchModes.includes('hover')) {\n return prefetchHoverEvents\n }\n\n if (prefetchModes.includes('click')) {\n return prefetchClickEvents\n }\n\n return regularEvents\n })(),\n 'data-loading': inFlightCount > 0 ? '' : undefined,\n },\n children,\n )\n },\n)\nLink.displayName = 'InertiaLink'\n\nexport default Link\n", "import {\n CancelToken,\n Errors,\n ErrorValue,\n FormDataConvertible,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n hasFiles,\n http,\n HttpCancelledError,\n HttpProgressEvent,\n HttpResponseError,\n mergeDataIntoQueryString,\n Method,\n objectToFormData,\n Progress,\n UrlMethodPair,\n UseFormArguments,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n UseHttpSubmitArguments,\n UseHttpSubmitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep } from 'es-toolkit'\nimport { NamedInputEvent, toSimpleValidationErrors, ValidationConfig, Validator } from 'laravel-precognition'\nimport { useCallback, useRef, useState } from 'react'\nimport useFormState, { SetDataAction } from './useFormState'\nimport useRemember from './useRemember'\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface UseHttpProps<TForm extends object, TResponse = unknown> {\n data: TForm\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n response: TResponse | null\n setData: SetDataAction<TForm>\n transform: (callback: UseFormTransformCallback<TForm>) => void\n setDefaults: {\n (): void\n <T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n (fields: Partial<TForm>): void\n }\n reset: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n clearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n resetAndClearErrors: <K extends FormDataKeys<TForm>>(...fields: K[]) => void\n setError: {\n <K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n (errors: FormDataErrors<TForm>): void\n }\n submit: <R = TResponse>(...args: UseHttpSubmitArguments<R, TForm>) => Promise<R>\n get: <R = TResponse>(url: string, options?: UseHttpSubmitOptions<R, TForm>) => Promise<R>\n post: <R = TResponse>(url: string, options?: UseHttpSubmitOptions<R, TForm>) => Promise<R>\n put: <R = TResponse>(url: string, options?: UseHttpSubmitOptions<R, TForm>) => Promise<R>\n patch: <R = TResponse>(url: string, options?: UseHttpSubmitOptions<R, TForm>) => Promise<R>\n delete: <R = TResponse>(url: string, options?: UseHttpSubmitOptions<R, TForm>) => Promise<R>\n cancel: () => void\n dontRemember: <K extends FormDataKeys<TForm>>(...fields: K[]) => UseHttpProps<TForm, TResponse>\n optimistic: (callback: (currentData: TForm) => Partial<TForm>) => UseHttpProps<TForm, TResponse>\n withAllErrors: () => UseHttpProps<TForm, TResponse>\n withPrecognition: (...args: UseFormWithPrecognitionArguments) => UseHttpPrecognitiveProps<TForm, TResponse>\n}\n\nexport interface UseHttpValidationProps<TForm extends object, TResponse = unknown> {\n invalid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n setValidationTimeout: (duration: number) => UseHttpPrecognitiveProps<TForm, TResponse>\n touch: <K extends FormDataKeys<TForm>>(\n field: K | NamedInputEvent | Array<K>,\n ...fields: K[]\n ) => UseHttpPrecognitiveProps<TForm, TResponse>\n touched: <K extends FormDataKeys<TForm>>(field?: K) => boolean\n valid: <K extends FormDataKeys<TForm>>(field: K) => boolean\n validate: <K extends FormDataKeys<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ) => UseHttpPrecognitiveProps<TForm, TResponse>\n validateFiles: () => UseHttpPrecognitiveProps<TForm, TResponse>\n validating: boolean\n validator: () => Validator\n withAllErrors: () => UseHttpPrecognitiveProps<TForm, TResponse>\n withoutFileValidation: () => UseHttpPrecognitiveProps<TForm, TResponse>\n setErrors: (errors: FormDataErrors<TForm>) => UseHttpPrecognitiveProps<TForm, TResponse>\n forgetError: <K extends FormDataKeys<TForm> | NamedInputEvent>(field: K) => UseHttpPrecognitiveProps<TForm, TResponse>\n}\n\nexport type UseHttp<TForm extends object, TResponse = unknown> = UseHttpProps<TForm, TResponse>\nexport type UseHttpPrecognitiveProps<TForm extends object, TResponse = unknown> = UseHttpProps<TForm, TResponse> &\n UseHttpValidationProps<TForm, TResponse>\n\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n method: Method | (() => Method),\n url: string | (() => string),\n data: TForm | (() => TForm),\n): UseHttpPrecognitiveProps<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n urlMethodPair: UrlMethodPair | (() => UrlMethodPair),\n data: TForm | (() => TForm),\n): UseHttpPrecognitiveProps<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n rememberKey: string,\n data: TForm | (() => TForm),\n): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n data: TForm | (() => TForm),\n): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n ...args: UseFormArguments<TForm>\n): UseHttp<TForm, TResponse> | UseHttpPrecognitiveProps<TForm, TResponse> {\n const { rememberKey, data, precognitionEndpoint } = UseFormUtils.parseUseFormArguments<TForm>(...args)\n\n // Resolve initial data for remember functionality hooks\n const initialDefaults = typeof data === 'function' ? cloneDeep(data()) : cloneDeep(data)\n\n const abortController = useRef<AbortController | null>(null)\n const excludeKeysRef = useRef<FormDataKeys<TForm>[]>([])\n const pendingOptimisticRef = useRef<((currentData: TForm) => Partial<TForm>) | null>(null)\n const [response, setResponse] = useState<TResponse | null>(null)\n\n // For remember functionality, we need custom state hooks\n const useDataState = rememberKey\n ? () => useRemember<TForm>(initialDefaults, `${rememberKey}:data`, excludeKeysRef)\n : undefined\n\n const useErrorsState = rememberKey\n ? () => useRemember<FormDataErrors<TForm>>({} as FormDataErrors<TForm>, `${rememberKey}:errors`)\n : undefined\n\n const {\n form: baseForm,\n setDefaultsState,\n transformRef,\n dataRef,\n precognitionEndpointRef,\n isMounted,\n setProcessing,\n setProgress,\n markAsSuccessful,\n clearErrors,\n setError,\n defaultsCalledInOnSuccessRef,\n resetBeforeSubmit,\n finishProcessing,\n withAllErrors,\n } = useFormState<TForm>({\n data,\n precognitionEndpoint,\n useDataState,\n useErrorsState,\n })\n\n const submit = useCallback(\n async (method: Method, url: string, options: UseHttpSubmitOptions<TResponse, TForm>): Promise<TResponse> => {\n const onBefore = options.onBefore?.()\n\n if (onBefore === false) {\n return Promise.reject(new Error('Request cancelled by onBefore'))\n }\n\n defaultsCalledInOnSuccessRef.current = false\n\n if (isMounted.current) {\n resetBeforeSubmit()\n }\n\n abortController.current = new AbortController()\n\n const cancelToken: CancelToken = {\n cancel: () => abortController.current?.abort(),\n }\n\n options.onCancelToken?.(cancelToken)\n\n options.optimistic = options.optimistic ?? pendingOptimisticRef.current ?? undefined\n pendingOptimisticRef.current = null\n\n let snapshot: TForm | undefined\n\n if (options.optimistic) {\n snapshot = cloneDeep(dataRef.current)\n const optimisticData = options.optimistic(cloneDeep(snapshot))\n\n baseForm.setData((current: TForm) => ({ ...current, ...optimisticData }))\n }\n\n if (isMounted.current) {\n setProcessing(true)\n }\n\n options.onStart?.()\n\n const transformedData = transformRef.current(dataRef.current)\n const useFormData = hasFiles(transformedData as Record<string, FormDataConvertible>)\n\n let requestUrl = url\n let requestData: FormData | string | undefined\n let contentType: string | undefined\n\n if (method === 'get') {\n const [urlWithParams] = mergeDataIntoQueryString(\n method,\n url,\n transformedData as Record<string, FormDataConvertible>,\n )\n requestUrl = urlWithParams\n } else {\n if (useFormData) {\n requestData = objectToFormData(transformedData as Record<string, FormDataConvertible>)\n } else {\n requestData = JSON.stringify(transformedData)\n contentType = 'application/json'\n }\n }\n\n try {\n const httpResponse = await http.getClient().request({\n method,\n url: requestUrl,\n data: requestData,\n headers: {\n Accept: 'application/json',\n ...(contentType ? { 'Content-Type': contentType } : {}),\n ...options.headers,\n },\n signal: abortController.current.signal,\n onUploadProgress: (event: HttpProgressEvent) => {\n if (isMounted.current) {\n setProgress(event)\n }\n\n options.onProgress?.(event)\n },\n })\n\n const responseData = (httpResponse.data ? JSON.parse(httpResponse.data) : null) as TResponse\n\n if (httpResponse.status >= 200 && httpResponse.status < 300) {\n if (isMounted.current) {\n markAsSuccessful()\n setResponse(responseData)\n }\n\n options.onSuccess?.(responseData)\n\n if (isMounted.current && !defaultsCalledInOnSuccessRef.current) {\n baseForm.setData((data: TForm) => {\n setDefaultsState(cloneDeep(data))\n return data\n })\n }\n\n return responseData\n }\n\n throw new HttpResponseError(`Request failed with status ${httpResponse.status}`, httpResponse)\n } catch (error: unknown) {\n if (snapshot && isMounted.current) {\n baseForm.setData(snapshot)\n }\n\n if (error instanceof HttpResponseError) {\n if (error.response.status === 422) {\n const responseData = JSON.parse(error.response.data)\n const validationErrors = responseData.errors || {}\n const processedErrors = (\n withAllErrors.enabled() ? validationErrors : toSimpleValidationErrors(validationErrors)\n ) as FormDataErrors<TForm>\n\n if (isMounted.current) {\n clearErrors()\n setError(processedErrors)\n }\n\n options.onError?.(processedErrors as Errors)\n }\n\n throw error\n }\n\n if (error instanceof HttpCancelledError || (error instanceof Error && error.name === 'AbortError')) {\n options.onCancel?.()\n throw new HttpCancelledError('Request was cancelled', url)\n }\n\n throw error\n } finally {\n if (isMounted.current) {\n finishProcessing()\n }\n\n abortController.current = null\n options.onFinish?.()\n }\n },\n [clearErrors, setError],\n )\n\n const cancel = useCallback(() => {\n if (abortController.current) {\n abortController.current.abort()\n }\n }, [])\n\n const createSubmitMethod =\n (method: Method) =>\n async (url: string, options: UseHttpSubmitOptions<TResponse, TForm> = {}): Promise<TResponse> => {\n return submit(method, url, options)\n }\n\n const submitWithArgs = useCallback(\n (...args: UseHttpSubmitArguments<TResponse, TForm>): Promise<TResponse> => {\n const parsed = UseFormUtils.parseSubmitArguments(args as any, precognitionEndpointRef.current)\n\n return submit(parsed.method, parsed.url, parsed.options as UseHttpSubmitOptions<TResponse, TForm>)\n },\n [submit],\n )\n\n // Add useHttp-specific methods to the form object (mutate in place like Svelte)\n Object.assign(baseForm, {\n response,\n submit: submitWithArgs,\n get: createSubmitMethod('get'),\n post: createSubmitMethod('post'),\n put: createSubmitMethod('put'),\n patch: createSubmitMethod('patch'),\n delete: createSubmitMethod('delete'),\n cancel,\n dontRemember: <K extends FormDataKeys<TForm>>(...keys: K[]) => {\n excludeKeysRef.current = keys\n return form\n },\n\n optimistic: (callback: (currentData: TForm) => Partial<TForm>) => {\n pendingOptimisticRef.current = callback\n return form\n },\n\n withAllErrors: () => {\n withAllErrors.enable()\n return form\n },\n })\n\n // Cast to the full form type (baseForm now has HTTP methods)\n const form = baseForm as unknown as UseHttpProps<TForm, TResponse>\n\n // Wrap withPrecognition to return the correct type with HTTP methods\n const originalWithPrecognition = baseForm.withPrecognition\n form.withPrecognition = (...args: UseFormWithPrecognitionArguments): UseHttpPrecognitiveProps<TForm, TResponse> => {\n originalWithPrecognition(...args)\n return form as UseHttpPrecognitiveProps<TForm, TResponse>\n }\n\n return precognitionEndpointRef.current ? (form as UseHttpPrecognitiveProps<TForm, TResponse>) : form\n}\n", "import { PollOptions, ReloadOptions, router } from '@inertiajs/core'\nimport { useEffect, useRef } from 'react'\n\nexport default function usePoll(\n interval: number,\n requestOptions: ReloadOptions = {},\n options: PollOptions = {\n keepAlive: false,\n autoStart: true,\n },\n) {\n const pollRef = useRef(\n router.poll(interval, requestOptions, {\n ...options,\n autoStart: false,\n }),\n )\n\n useEffect(() => {\n if (options.autoStart ?? true) {\n pollRef.current.start()\n }\n\n return () => pollRef.current.stop()\n }, [])\n\n return {\n stop: pollRef.current.stop,\n start: pollRef.current.start,\n }\n}\n", "import { router, VisitOptions } from '@inertiajs/core'\nimport { useEffect, useState } from 'react'\n\nexport default function usePrefetch(options: VisitOptions = {}): {\n lastUpdatedAt: number | null\n isPrefetching: boolean\n isPrefetched: boolean\n flush: () => void\n} {\n const cached = typeof window === 'undefined' ? null : router.getCached(window.location.pathname, options)\n const inFlight = typeof window === 'undefined' ? null : router.getPrefetching(window.location.pathname, options)\n\n const [lastUpdatedAt, setLastUpdatedAt] = useState<number | null>(cached?.staleTimestamp || null)\n const [isPrefetching, setIsPrefetching] = useState(inFlight !== null)\n const [isPrefetched, setIsPrefetched] = useState(cached !== null)\n\n useEffect(() => {\n const onPrefetchingListener = router.on('prefetching', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(true)\n }\n })\n\n const onPrefetchedListener = router.on('prefetched', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(false)\n setIsPrefetched(true)\n setLastUpdatedAt(e.detail.fetchedAt)\n }\n })\n\n return () => {\n onPrefetchedListener()\n onPrefetchingListener()\n }\n }, [])\n\n return {\n lastUpdatedAt,\n isPrefetching,\n isPrefetched,\n flush: () => router.flush(window.location.pathname, options),\n }\n}\n", "import { ReloadOptions, router } from '@inertiajs/core'\nimport { get } from 'es-toolkit/compat'\nimport { createElement, ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport usePage from './usePage'\n\ninterface WhenVisibleSlotProps {\n fetching: boolean\n}\n\ninterface WhenVisibleProps {\n children: ReactNode | ((props: WhenVisibleSlotProps) => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data?: string | string[]\n params?: ReloadOptions\n buffer?: number\n as?: string\n always?: boolean\n}\n\nconst WhenVisible = ({ children, data, params, buffer, as, always, fallback }: WhenVisibleProps) => {\n always = always ?? false\n as = as ?? 'div'\n fallback = fallback ?? null\n\n const pageProps = usePage().props\n const keys = useMemo(() => (data ? (Array.isArray(data) ? data : [data]) : []), [data])\n\n const [loaded, setLoaded] = useState(() => keys.length > 0 && keys.every((key) => get(pageProps, key) !== undefined))\n const [isFetching, setIsFetching] = useState(false)\n const fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n const observer = useRef<IntersectionObserver | null>(null)\n const getReloadParamsRef = useRef<() => Partial<ReloadOptions>>(() => ({}))\n\n useEffect(() => {\n if (keys.length > 0) {\n setLoaded(keys.every((key) => get(pageProps, key) !== undefined))\n }\n }, [pageProps, keys])\n\n const getReloadParams = useCallback<() => Partial<ReloadOptions>>(() => {\n const reloadParams: Partial<ReloadOptions> = { preserveErrors: true, ...params }\n\n if (data) {\n reloadParams.only = (Array.isArray(data) ? data : [data]) as string[]\n }\n\n return reloadParams\n }, [params, data])\n\n getReloadParamsRef.current = getReloadParams\n\n const registerObserver = () => {\n observer.current?.disconnect()\n\n observer.current = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (fetching.current) {\n return\n }\n\n if (!always && loaded) {\n return\n }\n\n fetching.current = true\n setIsFetching(true)\n\n const reloadParams = getReloadParamsRef.current()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.current = true\n setIsFetching(true)\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n setLoaded(true)\n fetching.current = false\n setIsFetching(false)\n reloadParams.onFinish?.(e)\n\n if (!always) {\n observer.current?.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.current.observe(ref.current!)\n }\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n if (loaded && !always) {\n return\n }\n\n registerObserver()\n\n return () => {\n observer.current?.disconnect()\n }\n }, [always, loaded, buffer])\n\n const resolveChildren = () => (typeof children === 'function' ? children({ fetching: isFetching }) : children)\n const resolveFallback = () => (typeof fallback === 'function' ? fallback() : fallback)\n\n if (always || !loaded) {\n return createElement(\n as,\n {\n props: null,\n ref,\n },\n loaded ? resolveChildren() : resolveFallback(),\n )\n }\n\n return loaded ? resolveChildren() : null\n}\n\nWhenVisible.displayName = 'InertiaWhenVisible'\n\nexport default WhenVisible\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["http", "router", "createContext", "current", "layouts", "router", "createElement", "progress", "http", "createElement", "page", "head", "reactApp", "router", "useEffect", "useMemo", "useState", "useState", "useMemo", "useEffect", "router", "config", "UseFormUtils", "isEqual", "createContext", "createElement", "use", "useEffect", "useMemo", "useRef", "useState", "router", "UseFormUtils", "cloneDeep", "useCallback", "useRef", "useState", "useEffect", "get", "useEffect", "useMemo", "useRef", "useState", "useRef", "useState", "progress", "data", "useEffect", "defaults", "get", "errors", "useMemo", "config", "router", "useEffect", "useState", "UseFormUtils", "cloneDeep", "useRef", "useState", "useCallback", "args", "data", "router", "createContext", "config", "useRef", "useMemo", "useState", "isEqual", "useEffect", "UseFormUtils", "createElement", "use", "React", "use", "useEffect", "useMemo", "use", "useMemo", "useEffect", "children", "React", "React", "createElement", "forwardRef", "useCallback", "useEffect", "useImperativeHandle", "useMemo", "useRef", "useState", "forwardRef", "useState", "useCallback", "useEffect", "useMemo", "useRef", "dataManager", "elementManager", "useImperativeHandle", "createElement", "React", "isUrlMethodPair", "mergeDataIntoQueryString", "resolveUrlMethodPairComponent", "router", "createElement", "forwardRef", "useEffect", "useMemo", "useRef", "useState", "noop", "forwardRef", "useState", "useRef", "useMemo", "isUrlMethodPair", "resolveUrlMethodPairComponent", "mergeDataIntoQueryString", "router", "useEffect", "createElement", "mergeDataIntoQueryString", "UseFormUtils", "cloneDeep", "toSimpleValidationErrors", "useCallback", "useRef", "useState", "UseFormUtils", "cloneDeep", "useRef", "useState", "useCallback", "mergeDataIntoQueryString", "data", "toSimpleValidationErrors", "args", "router", "useEffect", "useRef", "router", "useEffect", "useState", "router", "get", "createElement", "useCallback", "useEffect", "useMemo", "useRef", "useState", "useMemo", "useState", "get", "useRef", "useEffect", "useCallback", "router", "createElement"]
|
|
7
7
|
}
|