@inertiajs/react 2.1.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +67 -55
- package/dist/index.esm.js.map +2 -2
- package/dist/index.js +65 -54
- package/dist/index.js.map +2 -2
- package/package.json +2 -2
- package/types/Form.d.ts +5 -2
- package/types/Link.d.ts +2 -26
- package/types/useForm.d.ts +13 -14
package/dist/index.esm.js
CHANGED
|
@@ -210,7 +210,8 @@ var Deferred_default = Deferred;
|
|
|
210
210
|
// src/Form.ts
|
|
211
211
|
import {
|
|
212
212
|
formDataToObject,
|
|
213
|
-
mergeDataIntoQueryString
|
|
213
|
+
mergeDataIntoQueryString,
|
|
214
|
+
resetFormFields
|
|
214
215
|
} from "@inertiajs/core";
|
|
215
216
|
import { isEqual as isEqual2 } from "es-toolkit";
|
|
216
217
|
import {
|
|
@@ -511,6 +512,8 @@ var Form = forwardRef(
|
|
|
511
512
|
onSuccess = noop,
|
|
512
513
|
onError = noop,
|
|
513
514
|
onCancelToken = noop,
|
|
515
|
+
onSubmitComplete = noop,
|
|
516
|
+
disableWhileProcessing = false,
|
|
514
517
|
children,
|
|
515
518
|
...props
|
|
516
519
|
}, ref) => {
|
|
@@ -520,17 +523,23 @@ var Form = forwardRef(
|
|
|
520
523
|
return typeof action === "object" ? action.method : method.toLowerCase();
|
|
521
524
|
}, [action, method]);
|
|
522
525
|
const [isDirty, setIsDirty] = useState5(false);
|
|
523
|
-
const
|
|
524
|
-
const
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
const updateDirtyState = (event) => setIsDirty(event.type === "reset" ? false : !isEqual2(getData(), defaultValues.current));
|
|
526
|
+
const defaultData = useRef2(new FormData());
|
|
527
|
+
const getFormData = () => new FormData(formElement.current);
|
|
528
|
+
const getData = () => formDataToObject(getFormData());
|
|
529
|
+
const updateDirtyState = (event) => setIsDirty(event.type === "reset" ? false : !isEqual2(getData(), formDataToObject(defaultData.current)));
|
|
528
530
|
useEffect5(() => {
|
|
529
|
-
|
|
531
|
+
defaultData.current = getFormData();
|
|
530
532
|
const formEvents = ["input", "change", "reset"];
|
|
531
533
|
formEvents.forEach((e) => formElement.current.addEventListener(e, updateDirtyState));
|
|
532
534
|
return () => formEvents.forEach((e) => formElement.current?.removeEventListener(e, updateDirtyState));
|
|
533
535
|
}, []);
|
|
536
|
+
const reset = (...fields) => {
|
|
537
|
+
resetFormFields(formElement.current, defaultData.current, fields);
|
|
538
|
+
};
|
|
539
|
+
const resetAndClearErrors = (...fields) => {
|
|
540
|
+
form.clearErrors(...fields);
|
|
541
|
+
reset(...fields);
|
|
542
|
+
};
|
|
534
543
|
const submit = () => {
|
|
535
544
|
const [url, _data] = mergeDataIntoQueryString(
|
|
536
545
|
resolvedMethod,
|
|
@@ -548,31 +557,39 @@ var Form = forwardRef(
|
|
|
548
557
|
onProgress,
|
|
549
558
|
onFinish,
|
|
550
559
|
onCancel,
|
|
551
|
-
onSuccess
|
|
560
|
+
onSuccess: (...args) => {
|
|
561
|
+
onSuccess(...args);
|
|
562
|
+
onSubmitComplete({
|
|
563
|
+
reset,
|
|
564
|
+
defaults
|
|
565
|
+
});
|
|
566
|
+
},
|
|
552
567
|
onError,
|
|
553
568
|
...options
|
|
554
569
|
};
|
|
555
570
|
form.transform(() => transform(_data));
|
|
556
571
|
form.submit(resolvedMethod, url, submitOptions);
|
|
557
572
|
};
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
()
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
573
|
+
const defaults = () => {
|
|
574
|
+
defaultData.current = getFormData();
|
|
575
|
+
setIsDirty(false);
|
|
576
|
+
};
|
|
577
|
+
const exposed = () => ({
|
|
578
|
+
errors: form.errors,
|
|
579
|
+
hasErrors: form.hasErrors,
|
|
580
|
+
processing: form.processing,
|
|
581
|
+
progress: form.progress,
|
|
582
|
+
wasSuccessful: form.wasSuccessful,
|
|
583
|
+
recentlySuccessful: form.recentlySuccessful,
|
|
584
|
+
isDirty,
|
|
585
|
+
clearErrors: form.clearErrors,
|
|
586
|
+
resetAndClearErrors,
|
|
587
|
+
setError: form.setError,
|
|
588
|
+
reset,
|
|
589
|
+
submit,
|
|
590
|
+
defaults
|
|
591
|
+
});
|
|
592
|
+
useImperativeHandle(ref, exposed, [form, isDirty, submit]);
|
|
576
593
|
return createElement3(
|
|
577
594
|
"form",
|
|
578
595
|
{
|
|
@@ -583,22 +600,10 @@ var Form = forwardRef(
|
|
|
583
600
|
onSubmit: (event) => {
|
|
584
601
|
event.preventDefault();
|
|
585
602
|
submit();
|
|
586
|
-
}
|
|
603
|
+
},
|
|
604
|
+
inert: disableWhileProcessing && form.processing
|
|
587
605
|
},
|
|
588
|
-
typeof children === "function" ? children(
|
|
589
|
-
errors: form.errors,
|
|
590
|
-
hasErrors: form.hasErrors,
|
|
591
|
-
processing: form.processing,
|
|
592
|
-
progress: form.progress,
|
|
593
|
-
wasSuccessful: form.wasSuccessful,
|
|
594
|
-
recentlySuccessful: form.recentlySuccessful,
|
|
595
|
-
setError: form.setError,
|
|
596
|
-
clearErrors: form.clearErrors,
|
|
597
|
-
resetAndClearErrors: form.resetAndClearErrors,
|
|
598
|
-
isDirty,
|
|
599
|
-
reset: () => formElement.current?.reset(),
|
|
600
|
-
submit
|
|
601
|
-
}) : children
|
|
606
|
+
typeof children === "function" ? children(exposed()) : children
|
|
602
607
|
);
|
|
603
608
|
}
|
|
604
609
|
);
|
|
@@ -703,7 +708,7 @@ var Link = forwardRef2(
|
|
|
703
708
|
children,
|
|
704
709
|
as = "a",
|
|
705
710
|
data = {},
|
|
706
|
-
href,
|
|
711
|
+
href = "",
|
|
707
712
|
method = "get",
|
|
708
713
|
preserveScroll = false,
|
|
709
714
|
preserveState = null,
|
|
@@ -722,6 +727,8 @@ var Link = forwardRef2(
|
|
|
722
727
|
onCancel = noop2,
|
|
723
728
|
onSuccess = noop2,
|
|
724
729
|
onError = noop2,
|
|
730
|
+
onPrefetching = noop2,
|
|
731
|
+
onPrefetched = noop2,
|
|
725
732
|
prefetch = false,
|
|
726
733
|
cacheFor = 0,
|
|
727
734
|
...props
|
|
@@ -738,12 +745,7 @@ var Link = forwardRef2(
|
|
|
738
745
|
return _method !== "get" ? "button" : as.toLowerCase();
|
|
739
746
|
}, [as, _method]);
|
|
740
747
|
const mergeDataArray = useMemo6(
|
|
741
|
-
() => mergeDataIntoQueryString2(
|
|
742
|
-
_method,
|
|
743
|
-
typeof href === "object" ? href.url : href || "",
|
|
744
|
-
data,
|
|
745
|
-
queryStringArrayFormat
|
|
746
|
-
),
|
|
748
|
+
() => mergeDataIntoQueryString2(_method, typeof href === "object" ? href.url : href, data, queryStringArrayFormat),
|
|
747
749
|
[href, _method, data, queryStringArrayFormat]
|
|
748
750
|
);
|
|
749
751
|
const url = useMemo6(() => mergeDataArray[0], [mergeDataArray]);
|
|
@@ -767,14 +769,14 @@ var Link = forwardRef2(
|
|
|
767
769
|
...baseParams,
|
|
768
770
|
onCancelToken,
|
|
769
771
|
onBefore,
|
|
770
|
-
onStart(
|
|
772
|
+
onStart(visit) {
|
|
771
773
|
setInFlightCount((count) => count + 1);
|
|
772
|
-
onStart(
|
|
774
|
+
onStart(visit);
|
|
773
775
|
},
|
|
774
776
|
onProgress,
|
|
775
|
-
onFinish(
|
|
777
|
+
onFinish(visit) {
|
|
776
778
|
setInFlightCount((count) => count - 1);
|
|
777
|
-
onFinish(
|
|
779
|
+
onFinish(visit);
|
|
778
780
|
},
|
|
779
781
|
onCancel,
|
|
780
782
|
onSuccess,
|
|
@@ -782,9 +784,6 @@ var Link = forwardRef2(
|
|
|
782
784
|
}),
|
|
783
785
|
[baseParams, onCancelToken, onBefore, onStart, onProgress, onFinish, onCancel, onSuccess, onError]
|
|
784
786
|
);
|
|
785
|
-
const doPrefetch = () => {
|
|
786
|
-
router6.prefetch(url, baseParams, { cacheFor: cacheForValue });
|
|
787
|
-
};
|
|
788
787
|
const prefetchModes = useMemo6(
|
|
789
788
|
() => {
|
|
790
789
|
if (prefetch === true) {
|
|
@@ -809,6 +808,19 @@ var Link = forwardRef2(
|
|
|
809
808
|
}
|
|
810
809
|
return 3e4;
|
|
811
810
|
}, [cacheFor, prefetchModes]);
|
|
811
|
+
const doPrefetch = useMemo6(() => {
|
|
812
|
+
return () => {
|
|
813
|
+
router6.prefetch(
|
|
814
|
+
url,
|
|
815
|
+
{
|
|
816
|
+
...baseParams,
|
|
817
|
+
onPrefetching,
|
|
818
|
+
onPrefetched
|
|
819
|
+
},
|
|
820
|
+
{ cacheFor: cacheForValue }
|
|
821
|
+
);
|
|
822
|
+
};
|
|
823
|
+
}, [url, baseParams, onPrefetching, onPrefetched, cacheForValue]);
|
|
812
824
|
useEffect7(() => {
|
|
813
825
|
return () => {
|
|
814
826
|
clearTimeout(hoverTimeout.current);
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts", "../src/createInertiaApp.ts", "../src/App.ts", "../src/HeadContext.ts", "../src/PageContext.ts", "../src/Deferred.ts", "../src/usePage.ts", "../src/Form.ts", "../src/useForm.ts", "../src/useRemember.ts", "../src/Head.ts", "../src/Link.ts", "../src/usePoll.ts", "../src/usePrefetch.ts", "../src/WhenVisible.ts"],
|
|
4
|
-
"sourcesContent": ["import { router as Router } from '@inertiajs/core'\n\nexport const router = Router\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './Deferred'\nexport { default as Form } from './Form'\nexport { default as Head } from './Head'\nexport { InertiaLinkProps, default as Link } from './Link'\nexport { InertiaFormProps, SetDataByObject, SetDataByMethod, SetDataByKeyValuePair, SetDataAction, default as useForm } from './useForm'\nexport { default as usePage } from './usePage'\nexport { default as usePoll } from './usePoll'\nexport { default as usePrefetch } from './usePrefetch'\nexport { default as useRemember } from './useRemember'\nexport { default as WhenVisible } from './WhenVisible'\n", "import { Page, PageProps, PageResolver, router, setupProgress } from '@inertiajs/core'\nimport { ComponentType, FunctionComponent, Key, ReactElement, ReactNode, createElement } from 'react'\nimport { renderToString } from 'react-dom/server'\nimport App from './App'\n\ntype ReactInstance = ReactElement\ntype ReactComponent = ReactNode\n\ntype HeadManagerOnUpdate = (elements: string[]) => void // TODO: When shipped, replace with: Inertia.HeadManagerOnUpdate\ntype HeadManagerTitleCallback = (title: string) => string // TODO: When shipped, replace with: Inertia.HeadManagerTitleCallback\n\ntype AppType<SharedProps extends PageProps = PageProps> = FunctionComponent<\n {\n children?: (props: { Component: ComponentType; key: Key; props: Page<SharedProps>['props'] }) => ReactNode\n } & SetupOptions<unknown, SharedProps>['props']\n>\n\nexport type SetupOptions<ElementType, SharedProps extends PageProps> = {\n el: ElementType\n App: AppType\n props: {\n initialPage: Page<SharedProps>\n initialComponent: ReactComponent\n resolveComponent: PageResolver\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdate\n }\n}\n\ntype BaseInertiaAppOptions = {\n title?: HeadManagerTitleCallback\n resolve: PageResolver\n}\n\ntype CreateInertiaAppSetupReturnType = ReactInstance | void\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = BaseInertiaAppOptions & {\n id?: string\n page?: Page | string\n render?: undefined\n progress?:\n | false\n | {\n delay?: number\n color?: string\n includeCSS?: boolean\n showSpinner?: boolean\n }\n setup(options: SetupOptions<HTMLElement, SharedProps>): CreateInertiaAppSetupReturnType\n}\n\ntype CreateInertiaAppSSRContent = { head: string[]; body: string }\ntype InertiaAppOptionsForSSR<SharedProps extends PageProps> = BaseInertiaAppOptions & {\n id?: undefined\n page: Page | string\n render: typeof renderToString\n progress?: undefined\n setup(options: SetupOptions<null, SharedProps>): ReactInstance\n}\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<CreateInertiaAppSetupReturnType>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<CreateInertiaAppSSRContent>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>({\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n}: InertiaAppOptionsForCSR<SharedProps> | InertiaAppOptionsForSSR<SharedProps>): Promise<\n CreateInertiaAppSetupReturnType | CreateInertiaAppSSRContent\n> {\n const isServer = typeof window === 'undefined'\n const el = isServer ? null : document.getElementById(id)\n const initialPage = page || JSON.parse(el.dataset.page)\n // @ts-expect-error\n const resolveComponent = (name) => Promise.resolve(resolve(name)).then((module) => module.default || module)\n\n let head = []\n\n const reactApp = await Promise.all([\n resolveComponent(initialPage.component),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n return setup({\n // @ts-expect-error\n el,\n App,\n props: {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: isServer ? (elements) => (head = elements) : null,\n },\n })\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer) {\n const body = await render(\n createElement(\n 'div',\n {\n id,\n 'data-page': JSON.stringify(initialPage),\n },\n // @ts-expect-error\n reactApp,\n ),\n )\n\n return { head, body }\n }\n}\n", "import { createHeadManager, PageHandler, router } from '@inertiajs/core'\nimport { createElement, useEffect, useMemo, useState } from 'react'\nimport HeadContext from './HeadContext'\nimport PageContext from './PageContext'\n\nlet currentIsInitialPage = true\nlet routerIsInitialized = false\nlet swapComponent: PageHandler = 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\nexport default function App({\n children,\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n}) {\n const [current, setCurrent] = useState({\n component: initialComponent || null,\n page: initialPage,\n key: null,\n })\n\n const headManager = useMemo(() => {\n return createHeadManager(\n typeof window === 'undefined',\n titleCallback || ((title) => title),\n onHeadUpdate || (() => {}),\n )\n }, [])\n\n if (!routerIsInitialized) {\n router.init({\n initialPage,\n resolveComponent,\n swapComponent: async (args) => swapComponent(args),\n })\n\n routerIsInitialized = true\n }\n\n useEffect(() => {\n swapComponent = async ({ component, page, preserveState }) => {\n if (currentIsInitialPage) {\n // We block setting the current page on the initial page to\n // prevent the initial page from being re-rendered again.\n currentIsInitialPage = false\n return\n }\n\n setCurrent((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\n }))\n }\n\n router.on('navigate', () => headManager.forceUpdate())\n }, [])\n\n if (!current.component) {\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(PageContext.Provider, { value: current.page }, null),\n )\n }\n\n const renderChildren =\n children ||\n (({ Component, props, key }) => {\n const child = createElement(Component, { key, ...props })\n\n if (typeof Component.layout === 'function') {\n return Component.layout(child)\n }\n\n if (Array.isArray(Component.layout)) {\n return Component.layout\n .concat(child)\n .reverse()\n .reduce((children, Layout) => createElement(Layout, { children, ...props }))\n }\n\n return child\n })\n\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(\n PageContext.Provider,\n { value: current.page },\n renderChildren({\n Component: current.component,\n key: current.key,\n props: current.page.props,\n }),\n ),\n )\n}\n\nApp.displayName = 'Inertia'\n", "import { createContext } from 'react'\n\nconst headContext = createContext(undefined)\nheadContext.displayName = 'InertiaHeadContext'\n\nexport default headContext\n", "import { createContext } from 'react'\n\nconst pageContext = createContext(undefined)\npageContext.displayName = 'InertiaPageContext'\n\nexport default pageContext\n", "import { ReactNode, useEffect, useMemo, useState } from 'react'\nimport { router } from '.'\nimport usePage from './usePage'\n\nconst urlWithoutHash = (url: URL | Location): URL => {\n url = new URL(url.href)\n url.hash = ''\n\n return url\n}\n\nconst isSameUrlWithoutHash = (url1: URL | Location, url2: URL | Location): boolean => {\n return urlWithoutHash(url1).href === urlWithoutHash(url2).href\n}\n\ninterface DeferredProps {\n children: ReactNode | (() => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data: string | string[]\n}\n\nconst Deferred = ({ children, data, fallback }: DeferredProps) => {\n if (!data) {\n throw new Error('`<Deferred>` requires a `data` prop to be a string or array of strings')\n }\n\n const [loaded, setLoaded] = useState(false)\n const pageProps = usePage().props\n const keys = useMemo(() => (Array.isArray(data) ? data : [data]), [data])\n\n useEffect(() => {\n const removeListener = router.on('start', (e) => {\n const isPartialVisit = e.detail.visit.only.length > 0 || e.detail.visit.except.length > 0\n const isReloadingKey = e.detail.visit.only.find((key) => keys.includes(key))\n\n if (isSameUrlWithoutHash(e.detail.visit.url, window.location) && (!isPartialVisit || isReloadingKey)) {\n setLoaded(false)\n }\n })\n\n return () => {\n removeListener()\n }\n }, [])\n\n useEffect(() => {\n setLoaded(keys.every((key) => pageProps[key] !== undefined))\n }, [pageProps, keys])\n\n if (loaded) {\n return typeof children === 'function' ? children() : children\n }\n\n return typeof fallback === 'function' ? fallback() : fallback\n}\n\nDeferred.displayName = 'InertiaDeferred'\n\nexport default Deferred\n", "import { Page, PageProps } from '@inertiajs/core'\nimport { useContext } from 'react'\nimport PageContext from './PageContext'\n\nexport default function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps> {\n const page = useContext(PageContext)\n\n if (!page) {\n throw new Error('usePage must be used within the Inertia component')\n }\n\n return page\n}\n", "import {\n FormComponentProps,\n FormComponentRef,\n FormComponentSlotProps,\n FormDataConvertible,\n formDataToObject,\n mergeDataIntoQueryString,\n Method,\n VisitOptions,\n} from '@inertiajs/core'\nimport { isEqual } from 'es-toolkit'\nimport {\n createElement,\n FormEvent,\n forwardRef,\n ReactNode,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport useForm from './useForm'\n\ntype ComponentProps = (FormComponentProps &\n Omit<React.FormHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> &\n Omit<React.AllHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'>) & {\n children: ReactNode | ((props: FormComponentSlotProps) => ReactNode)\n}\n\ntype FormSubmitOptions = Omit<VisitOptions, 'data' | 'onPrefetched' | 'onPrefetching'>\n\nconst noop = () => undefined\n\nconst Form = forwardRef<FormComponentRef, ComponentProps>(\n (\n {\n action = '',\n method = 'get',\n headers = {},\n queryStringArrayFormat = 'brackets',\n errorBag = null,\n showProgress = true,\n transform = (data) => data,\n options = {},\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onBefore = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n onCancelToken = noop,\n children,\n ...props\n },\n ref,\n ) => {\n const form = useForm({})\n const formElement = useRef<HTMLFormElement>(null)\n\n const resolvedMethod = useMemo(() => {\n return typeof action === 'object' ? action.method : (method.toLowerCase() as Method)\n }, [action, method])\n\n const [isDirty, setIsDirty] = useState(false)\n const defaultValues = useRef<Record<string, FormDataConvertible>>({})\n\n const getData = (): Record<string, FormDataConvertible> => {\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 return formDataToObject(new FormData(formElement.current))\n }\n\n const updateDirtyState = (event: Event) =>\n setIsDirty(event.type === 'reset' ? false : !isEqual(getData(), defaultValues.current))\n\n useEffect(() => {\n defaultValues.current = getData()\n\n const formEvents: Array<keyof HTMLElementEventMap> = ['input', 'change', 'reset']\n\n formEvents.forEach((e) => formElement.current.addEventListener(e, updateDirtyState))\n\n return () => formEvents.forEach((e) => formElement.current?.removeEventListener(e, updateDirtyState))\n }, [])\n\n const submit = () => {\n const [url, _data] = mergeDataIntoQueryString(\n resolvedMethod,\n typeof action === 'object' ? action.url : action,\n getData(),\n queryStringArrayFormat,\n )\n\n const submitOptions: FormSubmitOptions = {\n headers,\n errorBag,\n showProgress,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess,\n onError,\n ...options,\n }\n\n form.transform(() => transform(_data))\n form.submit(resolvedMethod, url, submitOptions)\n }\n\n useImperativeHandle(\n ref,\n () => ({\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 clearErrors: form.clearErrors,\n resetAndClearErrors: form.resetAndClearErrors,\n setError: form.setError,\n isDirty,\n reset: () => formElement.current?.reset(),\n submit,\n }),\n [form, isDirty, submit],\n )\n\n return createElement(\n 'form',\n {\n ...props,\n ref: formElement,\n action: typeof action === 'object' ? action.url : action,\n method: resolvedMethod,\n onSubmit: (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n submit()\n },\n },\n typeof children === 'function'\n ? children({\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 setError: form.setError,\n clearErrors: form.clearErrors,\n resetAndClearErrors: form.resetAndClearErrors,\n isDirty,\n reset: () => formElement.current?.reset(),\n submit,\n })\n : children,\n )\n },\n)\n\nForm.displayName = 'InertiaForm'\n\nexport default Form\n", "import {\n FormDataConvertible,\n FormDataKeys,\n FormDataValues,\n Method,\n Progress,\n router,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep, isEqual } from 'es-toolkit'\nimport { get, has, set } from 'es-toolkit/compat'\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\nimport useRemember from './useRemember'\n\nexport type SetDataByObject<TForm> = (data: TForm) => void\nexport type SetDataByMethod<TForm> = (data: (previousData: TForm) => TForm) => void\nexport type SetDataByKeyValuePair<TForm extends Record<any, any>> = <K extends FormDataKeys<TForm>>(key: K, value: FormDataValues<TForm, K>) => void\nexport type SetDataAction<TForm extends Record<any, any>> = SetDataByObject<TForm> & SetDataByMethod<TForm> & SetDataByKeyValuePair<TForm>\n\ntype FormDataType = Record<string, FormDataConvertible>\ntype FormOptions = Omit<VisitOptions, 'data'>\n\nexport interface InertiaFormProps<TForm extends FormDataType> {\n data: TForm\n isDirty: boolean\n errors: Partial<Record<FormDataKeys<TForm>, string>>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n setData: SetDataAction<TForm>\n transform: (callback: (data: TForm) => object) => void\n setDefaults(): void\n setDefaults(field: FormDataKeys<TForm>, value: FormDataConvertible): void\n setDefaults(fields: Partial<TForm>): void\n reset: (...fields: FormDataKeys<TForm>[]) => void\n clearErrors: (...fields: FormDataKeys<TForm>[]) => void\n resetAndClearErrors: (...fields: FormDataKeys<TForm>[]) => void\n setError(field: FormDataKeys<TForm>, value: string): void\n setError(errors: Record<FormDataKeys<TForm>, string>): void\n submit: (...args: [Method, string, FormOptions?] | [{ url: string; method: Method }, FormOptions?]) => void\n get: (url: string, options?: FormOptions) => void\n patch: (url: string, options?: FormOptions) => void\n post: (url: string, options?: FormOptions) => void\n put: (url: string, options?: FormOptions) => void\n delete: (url: string, options?: FormOptions) => void\n cancel: () => void\n}\nexport default function useForm<TForm extends FormDataType>(initialValues?: TForm): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType>(\n rememberKey: string,\n initialValues?: TForm,\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType>(\n rememberKeyOrInitialValues?: string | TForm,\n maybeInitialValues?: TForm,\n): InertiaFormProps<TForm> {\n const isMounted = useRef(null)\n const rememberKey = typeof rememberKeyOrInitialValues === 'string' ? rememberKeyOrInitialValues : null\n const [defaults, setDefaults] = useState(\n (typeof rememberKeyOrInitialValues === 'string' ? maybeInitialValues : rememberKeyOrInitialValues) || ({} as TForm),\n )\n const cancelToken = useRef(null)\n const recentlySuccessfulTimeoutId = useRef(null)\n const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`) : useState(defaults)\n const [errors, setErrors] = rememberKey\n ? useRemember({} as Partial<Record<FormDataKeys<TForm>, string>>, `${rememberKey}:errors`)\n : useState({} as Partial<Record<FormDataKeys<TForm>, string>>)\n const [hasErrors, setHasErrors] = useState(false)\n const [processing, setProcessing] = useState(false)\n const [progress, setProgress] = useState(null)\n const [wasSuccessful, setWasSuccessful] = useState(false)\n const [recentlySuccessful, setRecentlySuccessful] = useState(false)\n const transform = useRef((data) => data)\n const isDirty = useMemo(() => !isEqual(data, defaults), [data, defaults])\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n const submit = useCallback(\n (...args) => {\n const objectPassed = typeof args[0] === 'object'\n\n const method = objectPassed ? args[0].method : args[0]\n const url = objectPassed ? args[0].url : args[1]\n const options = (objectPassed ? args[1] : args[2]) ?? {}\n\n const _options = {\n ...options,\n onCancelToken: (token) => {\n cancelToken.current = token\n\n if (options.onCancelToken) {\n return options.onCancelToken(token)\n }\n },\n onBefore: (visit) => {\n setWasSuccessful(false)\n setRecentlySuccessful(false)\n clearTimeout(recentlySuccessfulTimeoutId.current)\n\n if (options.onBefore) {\n return options.onBefore(visit)\n }\n },\n onStart: (visit) => {\n setProcessing(true)\n\n if (options.onStart) {\n return options.onStart(visit)\n }\n },\n onProgress: (event) => {\n setProgress(event)\n\n if (options.onProgress) {\n return options.onProgress(event)\n }\n },\n onSuccess: (page) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors({})\n setHasErrors(false)\n setWasSuccessful(true)\n setRecentlySuccessful(true)\n setDefaults(cloneDeep(data))\n recentlySuccessfulTimeoutId.current = setTimeout(() => {\n if (isMounted.current) {\n setRecentlySuccessful(false)\n }\n }, 2000)\n }\n\n if (options.onSuccess) {\n return options.onSuccess(page)\n }\n },\n onError: (errors) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors(errors)\n setHasErrors(true)\n }\n\n if (options.onError) {\n return options.onError(errors)\n }\n },\n onCancel: () => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n if (options.onCancel) {\n return options.onCancel()\n }\n },\n onFinish: (visit) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n cancelToken.current = null\n\n if (options.onFinish) {\n return options.onFinish(visit)\n }\n },\n }\n\n if (method === 'delete') {\n router.delete(url, { ..._options, data: transform.current(data) })\n } else {\n router[method](url, transform.current(data), _options)\n }\n },\n [data, setErrors, transform],\n )\n\n const setDataFunction = useCallback(\n (keyOrData: FormDataKeys<TForm> | Function | TForm, maybeValue?: any) => {\n if (typeof keyOrData === 'string') {\n setData((data) => set(cloneDeep(data), keyOrData, maybeValue))\n } else if (typeof keyOrData === 'function') {\n setData((data) => keyOrData(data))\n } else {\n setData(keyOrData as TForm)\n }\n },\n [setData],\n )\n\n const [dataAsDefaults, setDataAsDefaults] = useState(false)\n\n const setDefaultsFunction = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: FormDataConvertible) => {\n if (typeof fieldOrFields === 'undefined') {\n setDefaults(data)\n // If setData was called right before setDefaults, data was not\n // updated in that render yet, so we set a flag to update\n // defaults right after the next render.\n setDataAsDefaults(true)\n } else {\n setDefaults((defaults) => {\n return typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign(cloneDeep(defaults), fieldOrFields)\n })\n }\n },\n [data, setDefaults],\n )\n\n useLayoutEffect(() => {\n if (!dataAsDefaults) {\n return\n }\n\n if (isDirty) {\n // Data has been updated in this next render and is different from\n // the defaults, so now we can set defaults to the current data.\n setDefaults(data)\n }\n\n setDataAsDefaults(false)\n }, [dataAsDefaults])\n\n const reset = useCallback(\n (...fields) => {\n if (fields.length === 0) {\n setData(defaults)\n } else {\n setData((data) =>\n (fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(defaults, key))\n .reduce(\n (carry, key) => {\n return set(carry, key, get(defaults, key))\n },\n { ...data } as TForm,\n ),\n )\n }\n },\n [setData, defaults],\n )\n\n const setError = useCallback(\n (fieldOrFields: FormDataKeys<TForm> | Record<FormDataKeys<TForm>, string>, maybeValue?: string) => {\n setErrors((errors) => {\n const newErrors = {\n ...errors,\n ...(typeof fieldOrFields === 'string'\n ? { [fieldOrFields]: maybeValue }\n : (fieldOrFields as Record<FormDataKeys<TForm>, string>)),\n }\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\n )\n\n const clearErrors = useCallback(\n (...fields) => {\n setErrors((errors) => {\n const newErrors = (Object.keys(errors) as Array<FormDataKeys<TForm>>).reduce(\n (carry, field) => ({\n ...carry,\n ...(fields.length > 0 && !fields.includes(field) ? { [field]: errors[field] } : {}),\n }),\n {},\n )\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\n )\n\n const resetAndClearErrors = useCallback(\n (...fields) => {\n reset(...fields)\n clearErrors(...fields)\n },\n [reset, clearErrors],\n )\n\n const createSubmitMethod = (method) => (url, options) => {\n submit(method, url, options)\n }\n const getMethod = useCallback(createSubmitMethod('get'), [submit])\n const post = useCallback(createSubmitMethod('post'), [submit])\n const put = useCallback(createSubmitMethod('put'), [submit])\n const patch = useCallback(createSubmitMethod('patch'), [submit])\n const deleteMethod = useCallback(createSubmitMethod('delete'), [submit])\n\n const cancel = useCallback(() => {\n if (cancelToken.current) {\n cancelToken.current.cancel()\n }\n }, [])\n\n const transformFunction = useCallback((callback) => {\n transform.current = callback\n }, [])\n\n return {\n data,\n setData: setDataFunction,\n isDirty,\n errors,\n hasErrors,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n transform: transformFunction,\n setDefaults: setDefaultsFunction,\n reset,\n setError,\n clearErrors,\n resetAndClearErrors,\n submit,\n get: getMethod,\n post,\n put,\n patch,\n delete: deleteMethod,\n cancel,\n }\n}\n", "import { router } from '@inertiajs/core'\nimport { Dispatch, SetStateAction, useEffect, useState } from 'react'\n\nexport default function useRemember<State>(\n initialState: State,\n key?: string,\n): [State, Dispatch<SetStateAction<State>>] {\n const [state, setState] = useState(() => {\n const restored = router.restore(key) as State\n\n return restored !== undefined ? restored : initialState\n })\n\n useEffect(() => {\n router.remember(state, key)\n }, [state, key])\n\n return [state, setState]\n}\n", "import { escape } from 'es-toolkit'\nimport React, { FunctionComponent, useContext, useEffect, useMemo } from 'react'\nimport HeadContext from './HeadContext'\n\ntype InertiaHeadProps = {\n title?: string\n children?: React.ReactNode\n}\n\ntype InertiaHead = FunctionComponent<InertiaHeadProps>\n\nconst Head: InertiaHead = function ({ children, title }) {\n const headManager = useContext(HeadContext)\n const provider = useMemo(() => headManager.createProvider(), [headManager])\n const isServer = typeof window === 'undefined'\n\n useEffect(() => {\n provider.reconnect()\n provider.update(renderNodes(children))\n return () => {\n provider.disconnect()\n }\n }, [provider, children, title])\n\n function isUnaryTag(node) {\n return (\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) {\n const attrs = Object.keys(node.props).reduce((carry, name) => {\n if (['head-key', 'children', 'dangerouslySetInnerHTML'].includes(name)) {\n return carry\n }\n const value = String(node.props[name])\n if (value === '') {\n return carry + ` ${name}`\n } else {\n return carry + ` ${name}=\"${escape(value)}\"`\n }\n }, '')\n return `<${node.type}${attrs}>`\n }\n\n function renderTagChildren(node) {\n return typeof node.props.children === 'string'\n ? node.props.children\n : node.props.children.reduce((html, child) => html + renderTag(child), '')\n }\n\n function renderTag(node) {\n let html = renderTagStart(node)\n if (node.props.children) {\n html += renderTagChildren(node)\n }\n if (node.props.dangerouslySetInnerHTML) {\n html += node.props.dangerouslySetInnerHTML.__html\n }\n if (!isUnaryTag(node)) {\n html += `</${node.type}>`\n }\n return html\n }\n\n function ensureNodeHasInertiaProp(node) {\n return React.cloneElement(node, {\n inertia: node.props['head-key'] !== undefined ? node.props['head-key'] : '',\n })\n }\n\n function renderNode(node) {\n return renderTag(ensureNodeHasInertiaProp(node))\n }\n\n function renderNodes(nodes) {\n const computed = React.Children.toArray(nodes)\n .filter((node) => node)\n .map((node) => renderNode(node))\n if (title && !computed.find((tag) => tag.startsWith('<title'))) {\n computed.push(`<title inertia>${title}</title>`)\n }\n return computed\n }\n\n if (isServer) {\n provider.update(renderNodes(children))\n }\n\n return null\n}\nexport default Head\n", "import {\n CacheForOption,\n FormDataConvertible,\n LinkPrefetchOption,\n mergeDataIntoQueryString,\n Method,\n PendingVisit,\n PreserveStateOption,\n Progress,\n router,\n shouldIntercept,\n} from '@inertiajs/core'\nimport { createElement, ElementType, forwardRef, useEffect, useMemo, useRef, useState } from 'react'\n\nconst noop = () => undefined\n\ninterface BaseInertiaLinkProps {\n as?: ElementType\n data?: Record<string, FormDataConvertible>\n href: string | { url: string; method: Method }\n method?: Method\n headers?: Record<string, string>\n onClick?: (event: React.MouseEvent<Element>) => void\n preserveScroll?: PreserveStateOption\n preserveState?: PreserveStateOption\n replace?: boolean\n only?: string[]\n except?: string[]\n onCancelToken?: (cancelToken: import('axios').CancelTokenSource) => void\n onBefore?: () => void\n onStart?: (event: PendingVisit) => void\n onProgress?: (progress: Progress) => void\n onFinish?: (event: PendingVisit) => void\n onCancel?: () => void\n onSuccess?: () => void\n onError?: () => void\n queryStringArrayFormat?: 'indices' | 'brackets'\n async?: boolean\n cacheFor?: CacheForOption | CacheForOption[]\n prefetch?: boolean | LinkPrefetchOption | LinkPrefetchOption[]\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 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 prefetch = false,\n cacheFor = 0,\n ...props\n },\n ref,\n ) => {\n const [inFlightCount, setInFlightCount] = useState(0)\n const hoverTimeout = useRef<number>(null)\n\n const _method = useMemo(() => {\n return typeof href === 'object' ? href.method : (method.toLowerCase() as Method)\n }, [href, method])\n\n const _as = useMemo(() => {\n if (typeof as !== 'string') {\n // Custom component\n return as\n }\n\n return _method !== 'get' ? 'button' : as.toLowerCase()\n }, [as, _method])\n\n const mergeDataArray = useMemo(\n () =>\n mergeDataIntoQueryString(\n _method,\n typeof href === 'object' ? href.url : href || '',\n data,\n queryStringArrayFormat,\n ),\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(\n () => ({\n data: _data,\n method: _method,\n preserveScroll,\n preserveState: preserveState ?? _method !== 'get',\n replace,\n only,\n except,\n headers,\n async,\n }),\n [_data, _method, preserveScroll, preserveState, replace, only, except, headers, async],\n )\n\n const visitParams = useMemo(\n () => ({\n ...baseParams,\n onCancelToken,\n onBefore,\n onStart(event) {\n setInFlightCount((count) => count + 1)\n onStart(event)\n },\n onProgress,\n onFinish(event) {\n setInFlightCount((count) => count - 1)\n onFinish(event)\n },\n onCancel,\n onSuccess,\n onError,\n }),\n [baseParams, onCancelToken, onBefore, onStart, onProgress, onFinish, onCancel, onSuccess, onError],\n )\n\n const doPrefetch = () => {\n router.prefetch(url, baseParams, { cacheFor: cacheForValue })\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 30_000\n }, [cacheFor, prefetchModes])\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) => {\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 }, 75)\n },\n onMouseLeave: () => {\n clearTimeout(hoverTimeout.current)\n },\n onClick: regularEvents.onClick,\n }\n\n const prefetchClickEvents = {\n onMouseDown: (event) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onMouseUp: (event) => {\n event.preventDefault()\n router.visit(url, visitParams)\n },\n onClick: (event) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n // Let the mouseup event handle the visit\n event.preventDefault()\n }\n },\n }\n\n const elProps = useMemo(() => {\n if (_as === 'button') {\n return { type: 'button' }\n }\n\n if (_as === 'a' || typeof _as !== 'string') {\n return { href: url }\n }\n\n return {}\n }, [_as, url])\n\n return createElement(\n _as,\n {\n ...props,\n ...elProps,\n ref,\n ...(() => {\n if (prefetchModes.includes('hover')) {\n return prefetchHoverEvents\n }\n\n if (prefetchModes.includes('click')) {\n return prefetchClickEvents\n }\n\n return regularEvents\n })(),\n 'data-loading': inFlightCount > 0 ? '' : undefined,\n },\n children,\n )\n },\n)\nLink.displayName = 'InertiaLink'\n\nexport default Link\n", "import { PollOptions, ReloadOptions, router } from '@inertiajs/core'\nimport { useEffect, useRef } from 'react'\n\nexport default function usePoll(\n interval: number,\n requestOptions: ReloadOptions = {},\n options: PollOptions = {\n keepAlive: false,\n autoStart: true,\n },\n) {\n const pollRef = useRef(\n router.poll(interval, requestOptions, {\n ...options,\n autoStart: false,\n }),\n )\n\n useEffect(() => {\n if (options.autoStart ?? true) {\n pollRef.current.start()\n }\n\n return () => pollRef.current.stop()\n }, [])\n\n return {\n stop: pollRef.current.stop,\n start: pollRef.current.start,\n }\n}\n", "import { router, VisitOptions } from '@inertiajs/core'\nimport { useEffect, useState } from 'react'\n\nexport default function usePrefetch(options: VisitOptions = {}): {\n lastUpdatedAt: number | null\n isPrefetching: boolean\n isPrefetched: boolean\n flush: () => void\n} {\n const cached = typeof window === 'undefined' ? null : router.getCached(window.location.pathname, options)\n const inFlight = typeof window === 'undefined' ? null : router.getPrefetching(window.location.pathname, options)\n\n const [lastUpdatedAt, setLastUpdatedAt] = useState<number | null>(cached?.staleTimestamp || null)\n const [isPrefetching, setIsPrefetching] = useState(inFlight !== null)\n const [isPrefetched, setIsPrefetched] = useState(cached !== null)\n\n useEffect(() => {\n const onPrefetchingListener = router.on('prefetching', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(true)\n }\n })\n\n const onPrefetchedListener = router.on('prefetched', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(false)\n setIsPrefetched(true)\n setLastUpdatedAt(e.detail.fetchedAt)\n }\n })\n\n return () => {\n onPrefetchedListener()\n onPrefetchingListener()\n }\n }, [])\n\n return {\n lastUpdatedAt,\n isPrefetching,\n isPrefetched,\n flush: () => router.flush(window.location.pathname, options),\n }\n}\n", "import { ReloadOptions, router } from '@inertiajs/core'\nimport { createElement, ReactNode, useCallback, useEffect, useRef, useState } from 'react'\n\ninterface WhenVisibleProps {\n children: ReactNode | (() => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data?: string | string[]\n params?: ReloadOptions\n buffer?: number\n as?: string\n always?: boolean\n}\n\nconst WhenVisible = ({ children, data, params, buffer, as, always, fallback }: WhenVisibleProps) => {\n always = always ?? false\n as = as ?? 'div'\n fallback = fallback ?? null\n\n const [loaded, setLoaded] = useState(false)\n const hasFetched = useRef<boolean>(false)\n const fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n\n const getReloadParams = useCallback<() => Partial<ReloadOptions>>(() => {\n if (data) {\n return {\n only: (Array.isArray(data) ? data : [data]) as string[],\n }\n }\n\n if (!params) {\n throw new Error('You must provide either a `data` or `params` prop.')\n }\n\n return params\n }, [params, data])\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (!always && hasFetched.current) {\n observer.disconnect()\n }\n\n if (fetching.current) {\n return\n }\n\n hasFetched.current = true\n fetching.current = true\n\n const reloadParams = getReloadParams()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.current = true\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n setLoaded(true)\n fetching.current = false\n reloadParams.onFinish?.(e)\n\n if (!always) {\n observer.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.observe(ref.current)\n\n return () => {\n observer.disconnect()\n }\n }, [ref, getReloadParams, buffer])\n\n const resolveChildren = () => (typeof children === 'function' ? children() : children)\n const resolveFallback = () => (typeof fallback === 'function' ? fallback() : fallback)\n\n if (always || !loaded) {\n return createElement(\n as,\n {\n props: null,\n ref,\n },\n loaded ? resolveChildren() : resolveFallback(),\n )\n }\n\n return loaded ? resolveChildren() : null\n}\n\nWhenVisible.displayName = 'InertiaWhenVisible'\n\nexport default WhenVisible\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { router as Router } from '@inertiajs/core'\n\nexport const router = Router\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './Deferred'\nexport { default as Form } from './Form'\nexport { default as Head } from './Head'\nexport { InertiaLinkProps, default as Link } from './Link'\nexport { InertiaFormProps, SetDataByObject, SetDataByMethod, SetDataByKeyValuePair, SetDataAction, default as useForm } from './useForm'\nexport { default as usePage } from './usePage'\nexport { default as usePoll } from './usePoll'\nexport { default as usePrefetch } from './usePrefetch'\nexport { default as useRemember } from './useRemember'\nexport { default as WhenVisible } from './WhenVisible'\n", "import { Page, PageProps, PageResolver, router, setupProgress } from '@inertiajs/core'\nimport { ComponentType, FunctionComponent, Key, ReactElement, ReactNode, createElement } from 'react'\nimport { renderToString } from 'react-dom/server'\nimport App from './App'\n\ntype ReactInstance = ReactElement\ntype ReactComponent = ReactNode\n\ntype HeadManagerOnUpdate = (elements: string[]) => void // TODO: When shipped, replace with: Inertia.HeadManagerOnUpdate\ntype HeadManagerTitleCallback = (title: string) => string // TODO: When shipped, replace with: Inertia.HeadManagerTitleCallback\n\ntype AppType<SharedProps extends PageProps = PageProps> = FunctionComponent<\n {\n children?: (props: { Component: ComponentType; key: Key; props: Page<SharedProps>['props'] }) => ReactNode\n } & SetupOptions<unknown, SharedProps>['props']\n>\n\nexport type SetupOptions<ElementType, SharedProps extends PageProps> = {\n el: ElementType\n App: AppType\n props: {\n initialPage: Page<SharedProps>\n initialComponent: ReactComponent\n resolveComponent: PageResolver\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdate\n }\n}\n\ntype BaseInertiaAppOptions = {\n title?: HeadManagerTitleCallback\n resolve: PageResolver\n}\n\ntype CreateInertiaAppSetupReturnType = ReactInstance | void\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = BaseInertiaAppOptions & {\n id?: string\n page?: Page | string\n render?: undefined\n progress?:\n | false\n | {\n delay?: number\n color?: string\n includeCSS?: boolean\n showSpinner?: boolean\n }\n setup(options: SetupOptions<HTMLElement, SharedProps>): CreateInertiaAppSetupReturnType\n}\n\ntype CreateInertiaAppSSRContent = { head: string[]; body: string }\ntype InertiaAppOptionsForSSR<SharedProps extends PageProps> = BaseInertiaAppOptions & {\n id?: undefined\n page: Page | string\n render: typeof renderToString\n progress?: undefined\n setup(options: SetupOptions<null, SharedProps>): ReactInstance\n}\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<CreateInertiaAppSetupReturnType>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<CreateInertiaAppSSRContent>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>({\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n}: InertiaAppOptionsForCSR<SharedProps> | InertiaAppOptionsForSSR<SharedProps>): Promise<\n CreateInertiaAppSetupReturnType | CreateInertiaAppSSRContent\n> {\n const isServer = typeof window === 'undefined'\n const el = isServer ? null : document.getElementById(id)\n const initialPage = page || JSON.parse(el.dataset.page)\n // @ts-expect-error\n const resolveComponent = (name) => Promise.resolve(resolve(name)).then((module) => module.default || module)\n\n let head = []\n\n const reactApp = await Promise.all([\n resolveComponent(initialPage.component),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n return setup({\n // @ts-expect-error\n el,\n App,\n props: {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: isServer ? (elements) => (head = elements) : null,\n },\n })\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer) {\n const body = await render(\n createElement(\n 'div',\n {\n id,\n 'data-page': JSON.stringify(initialPage),\n },\n // @ts-expect-error\n reactApp,\n ),\n )\n\n return { head, body }\n }\n}\n", "import { createHeadManager, PageHandler, router } from '@inertiajs/core'\nimport { createElement, useEffect, useMemo, useState } from 'react'\nimport HeadContext from './HeadContext'\nimport PageContext from './PageContext'\n\nlet currentIsInitialPage = true\nlet routerIsInitialized = false\nlet swapComponent: PageHandler = 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\nexport default function App({\n children,\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n}) {\n const [current, setCurrent] = useState({\n component: initialComponent || null,\n page: initialPage,\n key: null,\n })\n\n const headManager = useMemo(() => {\n return createHeadManager(\n typeof window === 'undefined',\n titleCallback || ((title) => title),\n onHeadUpdate || (() => {}),\n )\n }, [])\n\n if (!routerIsInitialized) {\n router.init({\n initialPage,\n resolveComponent,\n swapComponent: async (args) => swapComponent(args),\n })\n\n routerIsInitialized = true\n }\n\n useEffect(() => {\n swapComponent = async ({ component, page, preserveState }) => {\n if (currentIsInitialPage) {\n // We block setting the current page on the initial page to\n // prevent the initial page from being re-rendered again.\n currentIsInitialPage = false\n return\n }\n\n setCurrent((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\n }))\n }\n\n router.on('navigate', () => headManager.forceUpdate())\n }, [])\n\n if (!current.component) {\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(PageContext.Provider, { value: current.page }, null),\n )\n }\n\n const renderChildren =\n children ||\n (({ Component, props, key }) => {\n const child = createElement(Component, { key, ...props })\n\n if (typeof Component.layout === 'function') {\n return Component.layout(child)\n }\n\n if (Array.isArray(Component.layout)) {\n return Component.layout\n .concat(child)\n .reverse()\n .reduce((children, Layout) => createElement(Layout, { children, ...props }))\n }\n\n return child\n })\n\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(\n PageContext.Provider,\n { value: current.page },\n renderChildren({\n Component: current.component,\n key: current.key,\n props: current.page.props,\n }),\n ),\n )\n}\n\nApp.displayName = 'Inertia'\n", "import { createContext } from 'react'\n\nconst headContext = createContext(undefined)\nheadContext.displayName = 'InertiaHeadContext'\n\nexport default headContext\n", "import { createContext } from 'react'\n\nconst pageContext = createContext(undefined)\npageContext.displayName = 'InertiaPageContext'\n\nexport default pageContext\n", "import { ReactNode, useEffect, useMemo, useState } from 'react'\nimport { router } from '.'\nimport usePage from './usePage'\n\nconst urlWithoutHash = (url: URL | Location): URL => {\n url = new URL(url.href)\n url.hash = ''\n\n return url\n}\n\nconst isSameUrlWithoutHash = (url1: URL | Location, url2: URL | Location): boolean => {\n return urlWithoutHash(url1).href === urlWithoutHash(url2).href\n}\n\ninterface DeferredProps {\n children: ReactNode | (() => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data: string | string[]\n}\n\nconst Deferred = ({ children, data, fallback }: DeferredProps) => {\n if (!data) {\n throw new Error('`<Deferred>` requires a `data` prop to be a string or array of strings')\n }\n\n const [loaded, setLoaded] = useState(false)\n const pageProps = usePage().props\n const keys = useMemo(() => (Array.isArray(data) ? data : [data]), [data])\n\n useEffect(() => {\n const removeListener = router.on('start', (e) => {\n const isPartialVisit = e.detail.visit.only.length > 0 || e.detail.visit.except.length > 0\n const isReloadingKey = e.detail.visit.only.find((key) => keys.includes(key))\n\n if (isSameUrlWithoutHash(e.detail.visit.url, window.location) && (!isPartialVisit || isReloadingKey)) {\n setLoaded(false)\n }\n })\n\n return () => {\n removeListener()\n }\n }, [])\n\n useEffect(() => {\n setLoaded(keys.every((key) => pageProps[key] !== undefined))\n }, [pageProps, keys])\n\n if (loaded) {\n return typeof children === 'function' ? children() : children\n }\n\n return typeof fallback === 'function' ? fallback() : fallback\n}\n\nDeferred.displayName = 'InertiaDeferred'\n\nexport default Deferred\n", "import { Page, PageProps } from '@inertiajs/core'\nimport { useContext } from 'react'\nimport PageContext from './PageContext'\n\nexport default function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps> {\n const page = useContext(PageContext)\n\n if (!page) {\n throw new Error('usePage must be used within the Inertia component')\n }\n\n return page\n}\n", "import {\n FormComponentProps,\n FormComponentRef,\n FormComponentSlotProps,\n FormDataConvertible,\n formDataToObject,\n mergeDataIntoQueryString,\n Method,\n resetFormFields,\n VisitOptions,\n} from '@inertiajs/core'\nimport { isEqual } from 'es-toolkit'\nimport {\n createElement,\n FormEvent,\n forwardRef,\n ReactNode,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport useForm from './useForm'\n\ntype ComponentProps = (FormComponentProps &\n Omit<React.FormHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> &\n Omit<React.AllHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'>) & {\n children: ReactNode | ((props: FormComponentSlotProps) => ReactNode)\n}\n\ntype FormSubmitOptions = Omit<VisitOptions, 'data' | 'onPrefetched' | 'onPrefetching'>\n\nconst noop = () => undefined\n\nconst Form = forwardRef<FormComponentRef, ComponentProps>(\n (\n {\n action = '',\n method = 'get',\n headers = {},\n queryStringArrayFormat = 'brackets',\n errorBag = null,\n showProgress = true,\n transform = (data) => data,\n options = {},\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onBefore = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n onCancelToken = noop,\n onSubmitComplete = noop,\n disableWhileProcessing = false,\n children,\n ...props\n },\n ref,\n ) => {\n const form = useForm<Record<string, any>>({})\n const formElement = useRef<HTMLFormElement>(null)\n\n const resolvedMethod = useMemo(() => {\n return typeof action === 'object' ? action.method : (method.toLowerCase() as Method)\n }, [action, method])\n\n const [isDirty, setIsDirty] = useState(false)\n const defaultData = useRef<FormData>(new FormData())\n\n const getFormData = (): FormData => new FormData(formElement.current)\n\n // Convert the FormData to an object because we can't compare two FormData\n // instances directly (which is needed for isDirty), mergeDataIntoQueryString()\n // expects an object, and submitting a FormData instance directly causes problems with nested objects.\n const getData = (): Record<string, FormDataConvertible> => formDataToObject(getFormData())\n\n const updateDirtyState = (event: Event) =>\n setIsDirty(event.type === 'reset' ? false : !isEqual(getData(), formDataToObject(defaultData.current)))\n\n useEffect(() => {\n defaultData.current = getFormData()\n\n const formEvents: Array<keyof HTMLElementEventMap> = ['input', 'change', 'reset']\n\n formEvents.forEach((e) => formElement.current.addEventListener(e, updateDirtyState))\n\n return () => formEvents.forEach((e) => formElement.current?.removeEventListener(e, updateDirtyState))\n }, [])\n\n const reset = (...fields: string[]) => {\n resetFormFields(formElement.current, defaultData.current, fields)\n }\n\n const resetAndClearErrors = (...fields: string[]) => {\n form.clearErrors(...fields)\n reset(...fields)\n }\n\n const submit = () => {\n const [url, _data] = mergeDataIntoQueryString(\n resolvedMethod,\n typeof action === 'object' ? action.url : action,\n getData(),\n queryStringArrayFormat,\n )\n\n const submitOptions: FormSubmitOptions = {\n headers,\n errorBag,\n showProgress,\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 },\n onError,\n ...options,\n }\n\n form.transform(() => transform(_data))\n form.submit(resolvedMethod, url, submitOptions)\n }\n\n const defaults = () => {\n defaultData.current = getFormData()\n setIsDirty(false)\n }\n\n const exposed = () => ({\n errors: form.errors,\n hasErrors: form.hasErrors,\n processing: form.processing,\n progress: form.progress,\n wasSuccessful: form.wasSuccessful,\n recentlySuccessful: form.recentlySuccessful,\n isDirty,\n clearErrors: form.clearErrors,\n resetAndClearErrors,\n setError: form.setError,\n reset,\n submit,\n defaults,\n })\n\n useImperativeHandle(ref, exposed, [form, isDirty, submit])\n\n return createElement(\n 'form',\n {\n ...props,\n ref: formElement,\n action: typeof action === 'object' ? action.url : action,\n method: resolvedMethod,\n onSubmit: (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n submit()\n },\n inert: disableWhileProcessing && form.processing,\n },\n typeof children === 'function' ? children(exposed()) : children,\n )\n },\n)\n\nForm.displayName = 'InertiaForm'\n\nexport default Form\n", "import {\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n Method,\n Progress,\n router,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep, isEqual } from 'es-toolkit'\nimport { get, has, set } from 'es-toolkit/compat'\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\nimport useRemember from './useRemember'\n\nexport type SetDataByObject<TForm> = (data: Partial<TForm>) => void\nexport type SetDataByMethod<TForm> = (data: (previousData: TForm) => TForm) => void\nexport type SetDataByKeyValuePair<TForm> = <K extends FormDataKeys<TForm>>(\n key: K,\n value: FormDataValues<TForm, K>,\n) => void\nexport type SetDataAction<TForm extends Record<any, any>> = SetDataByObject<TForm> &\n SetDataByMethod<TForm> &\n SetDataByKeyValuePair<TForm>\n\ntype FormOptions = Omit<VisitOptions, 'data'>\n\nexport interface InertiaFormProps<TForm extends object> {\n data: TForm\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n setData: SetDataAction<TForm>\n transform: (callback: (data: TForm) => object) => void\n setDefaults(): void\n setDefaults<T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n setDefaults(fields: Partial<TForm>): void\n reset<K extends FormDataKeys<TForm>>(...fields: K[]): void\n clearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): void\n resetAndClearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): void\n setError<K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n setError(errors: FormDataErrors<TForm>): void\n submit: (...args: [Method, string, FormOptions?] | [{ url: string; method: Method }, FormOptions?]) => void\n get: (url: string, options?: FormOptions) => void\n patch: (url: string, options?: FormOptions) => void\n post: (url: string, options?: FormOptions) => void\n put: (url: string, options?: FormOptions) => void\n delete: (url: string, options?: FormOptions) => void\n cancel: () => void\n}\nexport default function useForm<TForm extends FormDataType<TForm>>(\n initialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKey: string,\n initialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKeyOrInitialValues?: string | TForm | (() => TForm),\n maybeInitialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm> {\n const isMounted = useRef(null)\n const rememberKey = typeof rememberKeyOrInitialValues === 'string' ? rememberKeyOrInitialValues : null\n const [defaults, setDefaults] = useState(\n (typeof rememberKeyOrInitialValues === 'string' ? maybeInitialValues : rememberKeyOrInitialValues) || ({} as TForm),\n )\n const cancelToken = useRef(null)\n const recentlySuccessfulTimeoutId = useRef(null)\n const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`) : useState(defaults)\n const [errors, setErrors] = rememberKey\n ? useRemember({} as FormDataErrors<TForm>, `${rememberKey}:errors`)\n : useState({} as FormDataErrors<TForm>)\n const [hasErrors, setHasErrors] = useState(false)\n const [processing, setProcessing] = useState(false)\n const [progress, setProgress] = useState(null)\n const [wasSuccessful, setWasSuccessful] = useState(false)\n const [recentlySuccessful, setRecentlySuccessful] = useState(false)\n const transform = useRef((data) => data)\n const isDirty = useMemo(() => !isEqual(data, defaults), [data, defaults])\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n const submit = useCallback(\n (...args) => {\n const objectPassed = typeof args[0] === 'object'\n\n const method = objectPassed ? args[0].method : args[0]\n const url = objectPassed ? args[0].url : args[1]\n const options = (objectPassed ? args[1] : args[2]) ?? {}\n\n const _options = {\n ...options,\n onCancelToken: (token) => {\n cancelToken.current = token\n\n if (options.onCancelToken) {\n return options.onCancelToken(token)\n }\n },\n onBefore: (visit) => {\n setWasSuccessful(false)\n setRecentlySuccessful(false)\n clearTimeout(recentlySuccessfulTimeoutId.current)\n\n if (options.onBefore) {\n return options.onBefore(visit)\n }\n },\n onStart: (visit) => {\n setProcessing(true)\n\n if (options.onStart) {\n return options.onStart(visit)\n }\n },\n onProgress: (event) => {\n setProgress(event)\n\n if (options.onProgress) {\n return options.onProgress(event)\n }\n },\n onSuccess: (page) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors({} as FormDataErrors<TForm>)\n setHasErrors(false)\n setWasSuccessful(true)\n setRecentlySuccessful(true)\n setDefaults(cloneDeep(data))\n recentlySuccessfulTimeoutId.current = setTimeout(() => {\n if (isMounted.current) {\n setRecentlySuccessful(false)\n }\n }, 2000)\n }\n\n if (options.onSuccess) {\n return options.onSuccess(page)\n }\n },\n onError: (errors) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors(errors)\n setHasErrors(true)\n }\n\n if (options.onError) {\n return options.onError(errors)\n }\n },\n onCancel: () => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n if (options.onCancel) {\n return options.onCancel()\n }\n },\n onFinish: (visit) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n cancelToken.current = null\n\n if (options.onFinish) {\n return options.onFinish(visit)\n }\n },\n }\n\n if (method === 'delete') {\n router.delete(url, { ..._options, data: transform.current(data) })\n } else {\n router[method](url, transform.current(data), _options)\n }\n },\n [data, setErrors, transform],\n )\n\n const setDataFunction = useCallback(\n (keyOrData: FormDataKeys<TForm> | Function | Partial<TForm>, maybeValue?: any) => {\n if (typeof keyOrData === 'string') {\n setData((data) => set(cloneDeep(data), keyOrData, maybeValue))\n } else if (typeof keyOrData === 'function') {\n setData((data) => keyOrData(data))\n } else {\n setData(keyOrData as TForm)\n }\n },\n [setData],\n )\n\n const [dataAsDefaults, setDataAsDefaults] = useState(false)\n\n const setDefaultsFunction = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) => {\n if (typeof fieldOrFields === 'undefined') {\n setDefaults(data)\n // If setData was called right before setDefaults, data was not\n // updated in that render yet, so we set a flag to update\n // defaults right after the next render.\n setDataAsDefaults(true)\n } else {\n setDefaults((defaults) => {\n return typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign(cloneDeep(defaults), fieldOrFields)\n })\n }\n },\n [data, setDefaults],\n )\n\n useLayoutEffect(() => {\n if (!dataAsDefaults) {\n return\n }\n\n if (isDirty) {\n // Data has been updated in this next render and is different from\n // the defaults, so now we can set defaults to the current data.\n setDefaults(data)\n }\n\n setDataAsDefaults(false)\n }, [dataAsDefaults])\n\n const reset = useCallback(\n (...fields) => {\n if (fields.length === 0) {\n setData(defaults)\n } else {\n setData((data) =>\n (fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(defaults, key))\n .reduce(\n (carry, key) => {\n return set(carry, key, get(defaults, key))\n },\n { ...data } as TForm,\n ),\n )\n }\n },\n [setData, defaults],\n )\n\n const setError = useCallback(\n (fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: string) => {\n setErrors((errors) => {\n const newErrors = {\n ...errors,\n ...(typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields),\n }\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\n )\n\n const clearErrors = useCallback(\n (...fields) => {\n setErrors((errors) => {\n const newErrors = Object.keys(errors).reduce(\n (carry, field) => ({\n ...carry,\n ...(fields.length > 0 && !fields.includes(field) ? { [field]: errors[field] } : {}),\n }),\n {},\n )\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors as FormDataErrors<TForm>\n })\n },\n [setErrors, setHasErrors],\n )\n\n const resetAndClearErrors = useCallback(\n (...fields) => {\n reset(...fields)\n clearErrors(...fields)\n },\n [reset, clearErrors],\n )\n\n const createSubmitMethod = (method) => (url, options) => {\n submit(method, url, options)\n }\n const getMethod = useCallback(createSubmitMethod('get'), [submit])\n const post = useCallback(createSubmitMethod('post'), [submit])\n const put = useCallback(createSubmitMethod('put'), [submit])\n const patch = useCallback(createSubmitMethod('patch'), [submit])\n const deleteMethod = useCallback(createSubmitMethod('delete'), [submit])\n\n const cancel = useCallback(() => {\n if (cancelToken.current) {\n cancelToken.current.cancel()\n }\n }, [])\n\n const transformFunction = useCallback((callback) => {\n transform.current = callback\n }, [])\n\n return {\n data,\n setData: setDataFunction,\n isDirty,\n errors,\n hasErrors,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n transform: transformFunction,\n setDefaults: setDefaultsFunction,\n reset,\n setError,\n clearErrors,\n resetAndClearErrors,\n submit,\n get: getMethod,\n post,\n put,\n patch,\n delete: deleteMethod,\n cancel,\n }\n}\n", "import { router } from '@inertiajs/core'\nimport { Dispatch, SetStateAction, useEffect, useState } from 'react'\n\nexport default function useRemember<State>(\n initialState: State,\n key?: string,\n): [State, Dispatch<SetStateAction<State>>] {\n const [state, setState] = useState(() => {\n const restored = router.restore(key) as State\n\n return restored !== undefined ? restored : initialState\n })\n\n useEffect(() => {\n router.remember(state, key)\n }, [state, key])\n\n return [state, setState]\n}\n", "import { escape } from 'es-toolkit'\nimport React, { FunctionComponent, useContext, useEffect, useMemo } from 'react'\nimport HeadContext from './HeadContext'\n\ntype InertiaHeadProps = {\n title?: string\n children?: React.ReactNode\n}\n\ntype InertiaHead = FunctionComponent<InertiaHeadProps>\n\nconst Head: InertiaHead = function ({ children, title }) {\n const headManager = useContext(HeadContext)\n const provider = useMemo(() => headManager.createProvider(), [headManager])\n const isServer = typeof window === 'undefined'\n\n useEffect(() => {\n provider.reconnect()\n provider.update(renderNodes(children))\n return () => {\n provider.disconnect()\n }\n }, [provider, children, title])\n\n function isUnaryTag(node) {\n return (\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) {\n const attrs = Object.keys(node.props).reduce((carry, name) => {\n if (['head-key', 'children', 'dangerouslySetInnerHTML'].includes(name)) {\n return carry\n }\n const value = String(node.props[name])\n if (value === '') {\n return carry + ` ${name}`\n } else {\n return carry + ` ${name}=\"${escape(value)}\"`\n }\n }, '')\n return `<${node.type}${attrs}>`\n }\n\n function renderTagChildren(node) {\n return typeof node.props.children === 'string'\n ? node.props.children\n : node.props.children.reduce((html, child) => html + renderTag(child), '')\n }\n\n function renderTag(node) {\n let html = renderTagStart(node)\n if (node.props.children) {\n html += renderTagChildren(node)\n }\n if (node.props.dangerouslySetInnerHTML) {\n html += node.props.dangerouslySetInnerHTML.__html\n }\n if (!isUnaryTag(node)) {\n html += `</${node.type}>`\n }\n return html\n }\n\n function ensureNodeHasInertiaProp(node) {\n return React.cloneElement(node, {\n inertia: node.props['head-key'] !== undefined ? node.props['head-key'] : '',\n })\n }\n\n function renderNode(node) {\n return renderTag(ensureNodeHasInertiaProp(node))\n }\n\n function renderNodes(nodes) {\n const computed = React.Children.toArray(nodes)\n .filter((node) => node)\n .map((node) => renderNode(node))\n if (title && !computed.find((tag) => tag.startsWith('<title'))) {\n computed.push(`<title inertia>${title}</title>`)\n }\n return computed\n }\n\n if (isServer) {\n provider.update(renderNodes(children))\n }\n\n return null\n}\nexport default Head\n", "import {\n ActiveVisit,\n LinkComponentBaseProps,\n LinkPrefetchOption,\n mergeDataIntoQueryString,\n Method,\n PendingVisit,\n router,\n shouldIntercept,\n} from '@inertiajs/core'\nimport { createElement, ElementType, forwardRef, useEffect, useMemo, useRef, useState } from 'react'\n\nconst noop = () => undefined\n\ninterface BaseInertiaLinkProps extends LinkComponentBaseProps {\n as?: ElementType\n onClick?: (event: React.MouseEvent<Element>) => 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 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 ...props\n },\n ref,\n ) => {\n const [inFlightCount, setInFlightCount] = useState(0)\n const hoverTimeout = useRef<number>(null)\n\n const _method = useMemo(() => {\n return typeof href === 'object' ? href.method : (method.toLowerCase() as Method)\n }, [href, method])\n\n const _as = useMemo(() => {\n if (typeof as !== 'string') {\n // Custom component\n return as\n }\n\n return _method !== 'get' ? 'button' : as.toLowerCase()\n }, [as, _method])\n\n const mergeDataArray = useMemo(\n () => mergeDataIntoQueryString(_method, typeof href === 'object' ? 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(\n () => ({\n data: _data,\n method: _method,\n preserveScroll,\n preserveState: preserveState ?? _method !== 'get',\n replace,\n only,\n except,\n headers,\n async,\n }),\n [_data, _method, preserveScroll, preserveState, replace, only, except, headers, async],\n )\n\n const visitParams = useMemo(\n () => ({\n ...baseParams,\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 [baseParams, onCancelToken, onBefore, onStart, onProgress, onFinish, onCancel, onSuccess, onError],\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 30_000\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 },\n )\n }\n }, [url, baseParams, onPrefetching, onPrefetched, cacheForValue])\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) => {\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 }, 75)\n },\n onMouseLeave: () => {\n clearTimeout(hoverTimeout.current)\n },\n onClick: regularEvents.onClick,\n }\n\n const prefetchClickEvents = {\n onMouseDown: (event) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onMouseUp: (event) => {\n event.preventDefault()\n router.visit(url, visitParams)\n },\n onClick: (event) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n // Let the mouseup event handle the visit\n event.preventDefault()\n }\n },\n }\n\n const elProps = useMemo(() => {\n if (_as === 'button') {\n return { type: 'button' }\n }\n\n if (_as === 'a' || typeof _as !== 'string') {\n return { href: url }\n }\n\n return {}\n }, [_as, url])\n\n return createElement(\n _as,\n {\n ...props,\n ...elProps,\n ref,\n ...(() => {\n if (prefetchModes.includes('hover')) {\n return prefetchHoverEvents\n }\n\n if (prefetchModes.includes('click')) {\n return prefetchClickEvents\n }\n\n return regularEvents\n })(),\n 'data-loading': inFlightCount > 0 ? '' : undefined,\n },\n children,\n )\n },\n)\nLink.displayName = 'InertiaLink'\n\nexport default Link\n", "import { PollOptions, ReloadOptions, router } from '@inertiajs/core'\nimport { useEffect, useRef } from 'react'\n\nexport default function usePoll(\n interval: number,\n requestOptions: ReloadOptions = {},\n options: PollOptions = {\n keepAlive: false,\n autoStart: true,\n },\n) {\n const pollRef = useRef(\n router.poll(interval, requestOptions, {\n ...options,\n autoStart: false,\n }),\n )\n\n useEffect(() => {\n if (options.autoStart ?? true) {\n pollRef.current.start()\n }\n\n return () => pollRef.current.stop()\n }, [])\n\n return {\n stop: pollRef.current.stop,\n start: pollRef.current.start,\n }\n}\n", "import { router, VisitOptions } from '@inertiajs/core'\nimport { useEffect, useState } from 'react'\n\nexport default function usePrefetch(options: VisitOptions = {}): {\n lastUpdatedAt: number | null\n isPrefetching: boolean\n isPrefetched: boolean\n flush: () => void\n} {\n const cached = typeof window === 'undefined' ? null : router.getCached(window.location.pathname, options)\n const inFlight = typeof window === 'undefined' ? null : router.getPrefetching(window.location.pathname, options)\n\n const [lastUpdatedAt, setLastUpdatedAt] = useState<number | null>(cached?.staleTimestamp || null)\n const [isPrefetching, setIsPrefetching] = useState(inFlight !== null)\n const [isPrefetched, setIsPrefetched] = useState(cached !== null)\n\n useEffect(() => {\n const onPrefetchingListener = router.on('prefetching', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(true)\n }\n })\n\n const onPrefetchedListener = router.on('prefetched', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(false)\n setIsPrefetched(true)\n setLastUpdatedAt(e.detail.fetchedAt)\n }\n })\n\n return () => {\n onPrefetchedListener()\n onPrefetchingListener()\n }\n }, [])\n\n return {\n lastUpdatedAt,\n isPrefetching,\n isPrefetched,\n flush: () => router.flush(window.location.pathname, options),\n }\n}\n", "import { ReloadOptions, router } from '@inertiajs/core'\nimport { createElement, ReactNode, useCallback, useEffect, useRef, useState } from 'react'\n\ninterface WhenVisibleProps {\n children: ReactNode | (() => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data?: string | string[]\n params?: ReloadOptions\n buffer?: number\n as?: string\n always?: boolean\n}\n\nconst WhenVisible = ({ children, data, params, buffer, as, always, fallback }: WhenVisibleProps) => {\n always = always ?? false\n as = as ?? 'div'\n fallback = fallback ?? null\n\n const [loaded, setLoaded] = useState(false)\n const hasFetched = useRef<boolean>(false)\n const fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n\n const getReloadParams = useCallback<() => Partial<ReloadOptions>>(() => {\n if (data) {\n return {\n only: (Array.isArray(data) ? data : [data]) as string[],\n }\n }\n\n if (!params) {\n throw new Error('You must provide either a `data` or `params` prop.')\n }\n\n return params\n }, [params, data])\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (!always && hasFetched.current) {\n observer.disconnect()\n }\n\n if (fetching.current) {\n return\n }\n\n hasFetched.current = true\n fetching.current = true\n\n const reloadParams = getReloadParams()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.current = true\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n setLoaded(true)\n fetching.current = false\n reloadParams.onFinish?.(e)\n\n if (!always) {\n observer.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.observe(ref.current)\n\n return () => {\n observer.disconnect()\n }\n }, [ref, getReloadParams, buffer])\n\n const resolveChildren = () => (typeof children === 'function' ? children() : children)\n const resolveFallback = () => (typeof fallback === 'function' ? fallback() : fallback)\n\n if (always || !loaded) {\n return createElement(\n as,\n {\n props: null,\n ref,\n },\n loaded ? resolveChildren() : resolveFallback(),\n )\n }\n\n return loaded ? resolveChildren() : null\n}\n\nWhenVisible.displayName = 'InertiaWhenVisible'\n\nexport default WhenVisible\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["router", "createElement", "createContext", "current", "children", "router", "createElement", "useEffect", "useMemo", "useState", "useState", "useMemo", "useEffect", "router", "isEqual", "createElement", "useEffect", "useMemo", "useRef", "useState", "router", "useEffect", "useMemo", "useState", "router", "useEffect", "useState", "useState", "data", "useMemo", "useEffect", "errors", "router", "defaults", "useRef", "useMemo", "useState", "isEqual", "useEffect", "createElement", "useContext", "useEffect", "useMemo", "useContext", "useMemo", "useEffect", "mergeDataIntoQueryString", "router", "createElement", "forwardRef", "useEffect", "useMemo", "useRef", "useState", "noop", "router", "useEffect", "useRef", "router", "useEffect", "useState", "router", "createElement", "useCallback", "useEffect", "useRef", "useState", "router"]
|
|
7
7
|
}
|
package/dist/index.js
CHANGED
|
@@ -542,6 +542,8 @@ var Form = (0, import_react9.forwardRef)(
|
|
|
542
542
|
onSuccess = noop,
|
|
543
543
|
onError = noop,
|
|
544
544
|
onCancelToken = noop,
|
|
545
|
+
onSubmitComplete = noop,
|
|
546
|
+
disableWhileProcessing = false,
|
|
545
547
|
children,
|
|
546
548
|
...props
|
|
547
549
|
}, ref) => {
|
|
@@ -551,17 +553,23 @@ var Form = (0, import_react9.forwardRef)(
|
|
|
551
553
|
return typeof action === "object" ? action.method : method.toLowerCase();
|
|
552
554
|
}, [action, method]);
|
|
553
555
|
const [isDirty, setIsDirty] = (0, import_react9.useState)(false);
|
|
554
|
-
const
|
|
555
|
-
const
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
const updateDirtyState = (event) => setIsDirty(event.type === "reset" ? false : !(0, import_es_toolkit2.isEqual)(getData(), defaultValues.current));
|
|
556
|
+
const defaultData = (0, import_react9.useRef)(new FormData());
|
|
557
|
+
const getFormData = () => new FormData(formElement.current);
|
|
558
|
+
const getData = () => (0, import_core5.formDataToObject)(getFormData());
|
|
559
|
+
const updateDirtyState = (event) => setIsDirty(event.type === "reset" ? false : !(0, import_es_toolkit2.isEqual)(getData(), (0, import_core5.formDataToObject)(defaultData.current)));
|
|
559
560
|
(0, import_react9.useEffect)(() => {
|
|
560
|
-
|
|
561
|
+
defaultData.current = getFormData();
|
|
561
562
|
const formEvents = ["input", "change", "reset"];
|
|
562
563
|
formEvents.forEach((e) => formElement.current.addEventListener(e, updateDirtyState));
|
|
563
564
|
return () => formEvents.forEach((e) => formElement.current?.removeEventListener(e, updateDirtyState));
|
|
564
565
|
}, []);
|
|
566
|
+
const reset = (...fields) => {
|
|
567
|
+
(0, import_core5.resetFormFields)(formElement.current, defaultData.current, fields);
|
|
568
|
+
};
|
|
569
|
+
const resetAndClearErrors = (...fields) => {
|
|
570
|
+
form.clearErrors(...fields);
|
|
571
|
+
reset(...fields);
|
|
572
|
+
};
|
|
565
573
|
const submit = () => {
|
|
566
574
|
const [url, _data] = (0, import_core5.mergeDataIntoQueryString)(
|
|
567
575
|
resolvedMethod,
|
|
@@ -579,31 +587,39 @@ var Form = (0, import_react9.forwardRef)(
|
|
|
579
587
|
onProgress,
|
|
580
588
|
onFinish,
|
|
581
589
|
onCancel,
|
|
582
|
-
onSuccess
|
|
590
|
+
onSuccess: (...args) => {
|
|
591
|
+
onSuccess(...args);
|
|
592
|
+
onSubmitComplete({
|
|
593
|
+
reset,
|
|
594
|
+
defaults
|
|
595
|
+
});
|
|
596
|
+
},
|
|
583
597
|
onError,
|
|
584
598
|
...options
|
|
585
599
|
};
|
|
586
600
|
form.transform(() => transform(_data));
|
|
587
601
|
form.submit(resolvedMethod, url, submitOptions);
|
|
588
602
|
};
|
|
589
|
-
(
|
|
590
|
-
|
|
591
|
-
()
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
603
|
+
const defaults = () => {
|
|
604
|
+
defaultData.current = getFormData();
|
|
605
|
+
setIsDirty(false);
|
|
606
|
+
};
|
|
607
|
+
const exposed = () => ({
|
|
608
|
+
errors: form.errors,
|
|
609
|
+
hasErrors: form.hasErrors,
|
|
610
|
+
processing: form.processing,
|
|
611
|
+
progress: form.progress,
|
|
612
|
+
wasSuccessful: form.wasSuccessful,
|
|
613
|
+
recentlySuccessful: form.recentlySuccessful,
|
|
614
|
+
isDirty,
|
|
615
|
+
clearErrors: form.clearErrors,
|
|
616
|
+
resetAndClearErrors,
|
|
617
|
+
setError: form.setError,
|
|
618
|
+
reset,
|
|
619
|
+
submit,
|
|
620
|
+
defaults
|
|
621
|
+
});
|
|
622
|
+
(0, import_react9.useImperativeHandle)(ref, exposed, [form, isDirty, submit]);
|
|
607
623
|
return (0, import_react9.createElement)(
|
|
608
624
|
"form",
|
|
609
625
|
{
|
|
@@ -614,22 +630,10 @@ var Form = (0, import_react9.forwardRef)(
|
|
|
614
630
|
onSubmit: (event) => {
|
|
615
631
|
event.preventDefault();
|
|
616
632
|
submit();
|
|
617
|
-
}
|
|
633
|
+
},
|
|
634
|
+
inert: disableWhileProcessing && form.processing
|
|
618
635
|
},
|
|
619
|
-
typeof children === "function" ? children(
|
|
620
|
-
errors: form.errors,
|
|
621
|
-
hasErrors: form.hasErrors,
|
|
622
|
-
processing: form.processing,
|
|
623
|
-
progress: form.progress,
|
|
624
|
-
wasSuccessful: form.wasSuccessful,
|
|
625
|
-
recentlySuccessful: form.recentlySuccessful,
|
|
626
|
-
setError: form.setError,
|
|
627
|
-
clearErrors: form.clearErrors,
|
|
628
|
-
resetAndClearErrors: form.resetAndClearErrors,
|
|
629
|
-
isDirty,
|
|
630
|
-
reset: () => formElement.current?.reset(),
|
|
631
|
-
submit
|
|
632
|
-
}) : children
|
|
636
|
+
typeof children === "function" ? children(exposed()) : children
|
|
633
637
|
);
|
|
634
638
|
}
|
|
635
639
|
);
|
|
@@ -730,7 +734,7 @@ var Link = (0, import_react11.forwardRef)(
|
|
|
730
734
|
children,
|
|
731
735
|
as = "a",
|
|
732
736
|
data = {},
|
|
733
|
-
href,
|
|
737
|
+
href = "",
|
|
734
738
|
method = "get",
|
|
735
739
|
preserveScroll = false,
|
|
736
740
|
preserveState = null,
|
|
@@ -749,6 +753,8 @@ var Link = (0, import_react11.forwardRef)(
|
|
|
749
753
|
onCancel = noop2,
|
|
750
754
|
onSuccess = noop2,
|
|
751
755
|
onError = noop2,
|
|
756
|
+
onPrefetching = noop2,
|
|
757
|
+
onPrefetched = noop2,
|
|
752
758
|
prefetch = false,
|
|
753
759
|
cacheFor = 0,
|
|
754
760
|
...props
|
|
@@ -765,12 +771,7 @@ var Link = (0, import_react11.forwardRef)(
|
|
|
765
771
|
return _method !== "get" ? "button" : as.toLowerCase();
|
|
766
772
|
}, [as, _method]);
|
|
767
773
|
const mergeDataArray = (0, import_react11.useMemo)(
|
|
768
|
-
() => (0, import_core6.mergeDataIntoQueryString)(
|
|
769
|
-
_method,
|
|
770
|
-
typeof href === "object" ? href.url : href || "",
|
|
771
|
-
data,
|
|
772
|
-
queryStringArrayFormat
|
|
773
|
-
),
|
|
774
|
+
() => (0, import_core6.mergeDataIntoQueryString)(_method, typeof href === "object" ? href.url : href, data, queryStringArrayFormat),
|
|
774
775
|
[href, _method, data, queryStringArrayFormat]
|
|
775
776
|
);
|
|
776
777
|
const url = (0, import_react11.useMemo)(() => mergeDataArray[0], [mergeDataArray]);
|
|
@@ -794,14 +795,14 @@ var Link = (0, import_react11.forwardRef)(
|
|
|
794
795
|
...baseParams,
|
|
795
796
|
onCancelToken,
|
|
796
797
|
onBefore,
|
|
797
|
-
onStart(
|
|
798
|
+
onStart(visit) {
|
|
798
799
|
setInFlightCount((count) => count + 1);
|
|
799
|
-
onStart(
|
|
800
|
+
onStart(visit);
|
|
800
801
|
},
|
|
801
802
|
onProgress,
|
|
802
|
-
onFinish(
|
|
803
|
+
onFinish(visit) {
|
|
803
804
|
setInFlightCount((count) => count - 1);
|
|
804
|
-
onFinish(
|
|
805
|
+
onFinish(visit);
|
|
805
806
|
},
|
|
806
807
|
onCancel,
|
|
807
808
|
onSuccess,
|
|
@@ -809,9 +810,6 @@ var Link = (0, import_react11.forwardRef)(
|
|
|
809
810
|
}),
|
|
810
811
|
[baseParams, onCancelToken, onBefore, onStart, onProgress, onFinish, onCancel, onSuccess, onError]
|
|
811
812
|
);
|
|
812
|
-
const doPrefetch = () => {
|
|
813
|
-
import_core6.router.prefetch(url, baseParams, { cacheFor: cacheForValue });
|
|
814
|
-
};
|
|
815
813
|
const prefetchModes = (0, import_react11.useMemo)(
|
|
816
814
|
() => {
|
|
817
815
|
if (prefetch === true) {
|
|
@@ -836,6 +834,19 @@ var Link = (0, import_react11.forwardRef)(
|
|
|
836
834
|
}
|
|
837
835
|
return 3e4;
|
|
838
836
|
}, [cacheFor, prefetchModes]);
|
|
837
|
+
const doPrefetch = (0, import_react11.useMemo)(() => {
|
|
838
|
+
return () => {
|
|
839
|
+
import_core6.router.prefetch(
|
|
840
|
+
url,
|
|
841
|
+
{
|
|
842
|
+
...baseParams,
|
|
843
|
+
onPrefetching,
|
|
844
|
+
onPrefetched
|
|
845
|
+
},
|
|
846
|
+
{ cacheFor: cacheForValue }
|
|
847
|
+
);
|
|
848
|
+
};
|
|
849
|
+
}, [url, baseParams, onPrefetching, onPrefetched, cacheForValue]);
|
|
839
850
|
(0, import_react11.useEffect)(() => {
|
|
840
851
|
return () => {
|
|
841
852
|
clearTimeout(hoverTimeout.current);
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts", "../src/createInertiaApp.ts", "../src/App.ts", "../src/HeadContext.ts", "../src/PageContext.ts", "../src/Deferred.ts", "../src/usePage.ts", "../src/Form.ts", "../src/useForm.ts", "../src/useRemember.ts", "../src/Head.ts", "../src/Link.ts", "../src/usePoll.ts", "../src/usePrefetch.ts", "../src/WhenVisible.ts"],
|
|
4
|
-
"sourcesContent": ["import { router as Router } from '@inertiajs/core'\n\nexport const router = Router\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './Deferred'\nexport { default as Form } from './Form'\nexport { default as Head } from './Head'\nexport { InertiaLinkProps, default as Link } from './Link'\nexport { InertiaFormProps, SetDataByObject, SetDataByMethod, SetDataByKeyValuePair, SetDataAction, default as useForm } from './useForm'\nexport { default as usePage } from './usePage'\nexport { default as usePoll } from './usePoll'\nexport { default as usePrefetch } from './usePrefetch'\nexport { default as useRemember } from './useRemember'\nexport { default as WhenVisible } from './WhenVisible'\n", "import { Page, PageProps, PageResolver, router, setupProgress } from '@inertiajs/core'\nimport { ComponentType, FunctionComponent, Key, ReactElement, ReactNode, createElement } from 'react'\nimport { renderToString } from 'react-dom/server'\nimport App from './App'\n\ntype ReactInstance = ReactElement\ntype ReactComponent = ReactNode\n\ntype HeadManagerOnUpdate = (elements: string[]) => void // TODO: When shipped, replace with: Inertia.HeadManagerOnUpdate\ntype HeadManagerTitleCallback = (title: string) => string // TODO: When shipped, replace with: Inertia.HeadManagerTitleCallback\n\ntype AppType<SharedProps extends PageProps = PageProps> = FunctionComponent<\n {\n children?: (props: { Component: ComponentType; key: Key; props: Page<SharedProps>['props'] }) => ReactNode\n } & SetupOptions<unknown, SharedProps>['props']\n>\n\nexport type SetupOptions<ElementType, SharedProps extends PageProps> = {\n el: ElementType\n App: AppType\n props: {\n initialPage: Page<SharedProps>\n initialComponent: ReactComponent\n resolveComponent: PageResolver\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdate\n }\n}\n\ntype BaseInertiaAppOptions = {\n title?: HeadManagerTitleCallback\n resolve: PageResolver\n}\n\ntype CreateInertiaAppSetupReturnType = ReactInstance | void\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = BaseInertiaAppOptions & {\n id?: string\n page?: Page | string\n render?: undefined\n progress?:\n | false\n | {\n delay?: number\n color?: string\n includeCSS?: boolean\n showSpinner?: boolean\n }\n setup(options: SetupOptions<HTMLElement, SharedProps>): CreateInertiaAppSetupReturnType\n}\n\ntype CreateInertiaAppSSRContent = { head: string[]; body: string }\ntype InertiaAppOptionsForSSR<SharedProps extends PageProps> = BaseInertiaAppOptions & {\n id?: undefined\n page: Page | string\n render: typeof renderToString\n progress?: undefined\n setup(options: SetupOptions<null, SharedProps>): ReactInstance\n}\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<CreateInertiaAppSetupReturnType>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<CreateInertiaAppSSRContent>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>({\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n}: InertiaAppOptionsForCSR<SharedProps> | InertiaAppOptionsForSSR<SharedProps>): Promise<\n CreateInertiaAppSetupReturnType | CreateInertiaAppSSRContent\n> {\n const isServer = typeof window === 'undefined'\n const el = isServer ? null : document.getElementById(id)\n const initialPage = page || JSON.parse(el.dataset.page)\n // @ts-expect-error\n const resolveComponent = (name) => Promise.resolve(resolve(name)).then((module) => module.default || module)\n\n let head = []\n\n const reactApp = await Promise.all([\n resolveComponent(initialPage.component),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n return setup({\n // @ts-expect-error\n el,\n App,\n props: {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: isServer ? (elements) => (head = elements) : null,\n },\n })\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer) {\n const body = await render(\n createElement(\n 'div',\n {\n id,\n 'data-page': JSON.stringify(initialPage),\n },\n // @ts-expect-error\n reactApp,\n ),\n )\n\n return { head, body }\n }\n}\n", "import { createHeadManager, PageHandler, router } from '@inertiajs/core'\nimport { createElement, useEffect, useMemo, useState } from 'react'\nimport HeadContext from './HeadContext'\nimport PageContext from './PageContext'\n\nlet currentIsInitialPage = true\nlet routerIsInitialized = false\nlet swapComponent: PageHandler = 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\nexport default function App({\n children,\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n}) {\n const [current, setCurrent] = useState({\n component: initialComponent || null,\n page: initialPage,\n key: null,\n })\n\n const headManager = useMemo(() => {\n return createHeadManager(\n typeof window === 'undefined',\n titleCallback || ((title) => title),\n onHeadUpdate || (() => {}),\n )\n }, [])\n\n if (!routerIsInitialized) {\n router.init({\n initialPage,\n resolveComponent,\n swapComponent: async (args) => swapComponent(args),\n })\n\n routerIsInitialized = true\n }\n\n useEffect(() => {\n swapComponent = async ({ component, page, preserveState }) => {\n if (currentIsInitialPage) {\n // We block setting the current page on the initial page to\n // prevent the initial page from being re-rendered again.\n currentIsInitialPage = false\n return\n }\n\n setCurrent((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\n }))\n }\n\n router.on('navigate', () => headManager.forceUpdate())\n }, [])\n\n if (!current.component) {\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(PageContext.Provider, { value: current.page }, null),\n )\n }\n\n const renderChildren =\n children ||\n (({ Component, props, key }) => {\n const child = createElement(Component, { key, ...props })\n\n if (typeof Component.layout === 'function') {\n return Component.layout(child)\n }\n\n if (Array.isArray(Component.layout)) {\n return Component.layout\n .concat(child)\n .reverse()\n .reduce((children, Layout) => createElement(Layout, { children, ...props }))\n }\n\n return child\n })\n\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(\n PageContext.Provider,\n { value: current.page },\n renderChildren({\n Component: current.component,\n key: current.key,\n props: current.page.props,\n }),\n ),\n )\n}\n\nApp.displayName = 'Inertia'\n", "import { createContext } from 'react'\n\nconst headContext = createContext(undefined)\nheadContext.displayName = 'InertiaHeadContext'\n\nexport default headContext\n", "import { createContext } from 'react'\n\nconst pageContext = createContext(undefined)\npageContext.displayName = 'InertiaPageContext'\n\nexport default pageContext\n", "import { ReactNode, useEffect, useMemo, useState } from 'react'\nimport { router } from '.'\nimport usePage from './usePage'\n\nconst urlWithoutHash = (url: URL | Location): URL => {\n url = new URL(url.href)\n url.hash = ''\n\n return url\n}\n\nconst isSameUrlWithoutHash = (url1: URL | Location, url2: URL | Location): boolean => {\n return urlWithoutHash(url1).href === urlWithoutHash(url2).href\n}\n\ninterface DeferredProps {\n children: ReactNode | (() => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data: string | string[]\n}\n\nconst Deferred = ({ children, data, fallback }: DeferredProps) => {\n if (!data) {\n throw new Error('`<Deferred>` requires a `data` prop to be a string or array of strings')\n }\n\n const [loaded, setLoaded] = useState(false)\n const pageProps = usePage().props\n const keys = useMemo(() => (Array.isArray(data) ? data : [data]), [data])\n\n useEffect(() => {\n const removeListener = router.on('start', (e) => {\n const isPartialVisit = e.detail.visit.only.length > 0 || e.detail.visit.except.length > 0\n const isReloadingKey = e.detail.visit.only.find((key) => keys.includes(key))\n\n if (isSameUrlWithoutHash(e.detail.visit.url, window.location) && (!isPartialVisit || isReloadingKey)) {\n setLoaded(false)\n }\n })\n\n return () => {\n removeListener()\n }\n }, [])\n\n useEffect(() => {\n setLoaded(keys.every((key) => pageProps[key] !== undefined))\n }, [pageProps, keys])\n\n if (loaded) {\n return typeof children === 'function' ? children() : children\n }\n\n return typeof fallback === 'function' ? fallback() : fallback\n}\n\nDeferred.displayName = 'InertiaDeferred'\n\nexport default Deferred\n", "import { Page, PageProps } from '@inertiajs/core'\nimport { useContext } from 'react'\nimport PageContext from './PageContext'\n\nexport default function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps> {\n const page = useContext(PageContext)\n\n if (!page) {\n throw new Error('usePage must be used within the Inertia component')\n }\n\n return page\n}\n", "import {\n FormComponentProps,\n FormComponentRef,\n FormComponentSlotProps,\n FormDataConvertible,\n formDataToObject,\n mergeDataIntoQueryString,\n Method,\n VisitOptions,\n} from '@inertiajs/core'\nimport { isEqual } from 'es-toolkit'\nimport {\n createElement,\n FormEvent,\n forwardRef,\n ReactNode,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport useForm from './useForm'\n\ntype ComponentProps = (FormComponentProps &\n Omit<React.FormHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> &\n Omit<React.AllHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'>) & {\n children: ReactNode | ((props: FormComponentSlotProps) => ReactNode)\n}\n\ntype FormSubmitOptions = Omit<VisitOptions, 'data' | 'onPrefetched' | 'onPrefetching'>\n\nconst noop = () => undefined\n\nconst Form = forwardRef<FormComponentRef, ComponentProps>(\n (\n {\n action = '',\n method = 'get',\n headers = {},\n queryStringArrayFormat = 'brackets',\n errorBag = null,\n showProgress = true,\n transform = (data) => data,\n options = {},\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onBefore = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n onCancelToken = noop,\n children,\n ...props\n },\n ref,\n ) => {\n const form = useForm({})\n const formElement = useRef<HTMLFormElement>(null)\n\n const resolvedMethod = useMemo(() => {\n return typeof action === 'object' ? action.method : (method.toLowerCase() as Method)\n }, [action, method])\n\n const [isDirty, setIsDirty] = useState(false)\n const defaultValues = useRef<Record<string, FormDataConvertible>>({})\n\n const getData = (): Record<string, FormDataConvertible> => {\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 return formDataToObject(new FormData(formElement.current))\n }\n\n const updateDirtyState = (event: Event) =>\n setIsDirty(event.type === 'reset' ? false : !isEqual(getData(), defaultValues.current))\n\n useEffect(() => {\n defaultValues.current = getData()\n\n const formEvents: Array<keyof HTMLElementEventMap> = ['input', 'change', 'reset']\n\n formEvents.forEach((e) => formElement.current.addEventListener(e, updateDirtyState))\n\n return () => formEvents.forEach((e) => formElement.current?.removeEventListener(e, updateDirtyState))\n }, [])\n\n const submit = () => {\n const [url, _data] = mergeDataIntoQueryString(\n resolvedMethod,\n typeof action === 'object' ? action.url : action,\n getData(),\n queryStringArrayFormat,\n )\n\n const submitOptions: FormSubmitOptions = {\n headers,\n errorBag,\n showProgress,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess,\n onError,\n ...options,\n }\n\n form.transform(() => transform(_data))\n form.submit(resolvedMethod, url, submitOptions)\n }\n\n useImperativeHandle(\n ref,\n () => ({\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 clearErrors: form.clearErrors,\n resetAndClearErrors: form.resetAndClearErrors,\n setError: form.setError,\n isDirty,\n reset: () => formElement.current?.reset(),\n submit,\n }),\n [form, isDirty, submit],\n )\n\n return createElement(\n 'form',\n {\n ...props,\n ref: formElement,\n action: typeof action === 'object' ? action.url : action,\n method: resolvedMethod,\n onSubmit: (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n submit()\n },\n },\n typeof children === 'function'\n ? children({\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 setError: form.setError,\n clearErrors: form.clearErrors,\n resetAndClearErrors: form.resetAndClearErrors,\n isDirty,\n reset: () => formElement.current?.reset(),\n submit,\n })\n : children,\n )\n },\n)\n\nForm.displayName = 'InertiaForm'\n\nexport default Form\n", "import {\n FormDataConvertible,\n FormDataKeys,\n FormDataValues,\n Method,\n Progress,\n router,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep, isEqual } from 'es-toolkit'\nimport { get, has, set } from 'es-toolkit/compat'\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\nimport useRemember from './useRemember'\n\nexport type SetDataByObject<TForm> = (data: TForm) => void\nexport type SetDataByMethod<TForm> = (data: (previousData: TForm) => TForm) => void\nexport type SetDataByKeyValuePair<TForm extends Record<any, any>> = <K extends FormDataKeys<TForm>>(key: K, value: FormDataValues<TForm, K>) => void\nexport type SetDataAction<TForm extends Record<any, any>> = SetDataByObject<TForm> & SetDataByMethod<TForm> & SetDataByKeyValuePair<TForm>\n\ntype FormDataType = Record<string, FormDataConvertible>\ntype FormOptions = Omit<VisitOptions, 'data'>\n\nexport interface InertiaFormProps<TForm extends FormDataType> {\n data: TForm\n isDirty: boolean\n errors: Partial<Record<FormDataKeys<TForm>, string>>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n setData: SetDataAction<TForm>\n transform: (callback: (data: TForm) => object) => void\n setDefaults(): void\n setDefaults(field: FormDataKeys<TForm>, value: FormDataConvertible): void\n setDefaults(fields: Partial<TForm>): void\n reset: (...fields: FormDataKeys<TForm>[]) => void\n clearErrors: (...fields: FormDataKeys<TForm>[]) => void\n resetAndClearErrors: (...fields: FormDataKeys<TForm>[]) => void\n setError(field: FormDataKeys<TForm>, value: string): void\n setError(errors: Record<FormDataKeys<TForm>, string>): void\n submit: (...args: [Method, string, FormOptions?] | [{ url: string; method: Method }, FormOptions?]) => void\n get: (url: string, options?: FormOptions) => void\n patch: (url: string, options?: FormOptions) => void\n post: (url: string, options?: FormOptions) => void\n put: (url: string, options?: FormOptions) => void\n delete: (url: string, options?: FormOptions) => void\n cancel: () => void\n}\nexport default function useForm<TForm extends FormDataType>(initialValues?: TForm): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType>(\n rememberKey: string,\n initialValues?: TForm,\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType>(\n rememberKeyOrInitialValues?: string | TForm,\n maybeInitialValues?: TForm,\n): InertiaFormProps<TForm> {\n const isMounted = useRef(null)\n const rememberKey = typeof rememberKeyOrInitialValues === 'string' ? rememberKeyOrInitialValues : null\n const [defaults, setDefaults] = useState(\n (typeof rememberKeyOrInitialValues === 'string' ? maybeInitialValues : rememberKeyOrInitialValues) || ({} as TForm),\n )\n const cancelToken = useRef(null)\n const recentlySuccessfulTimeoutId = useRef(null)\n const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`) : useState(defaults)\n const [errors, setErrors] = rememberKey\n ? useRemember({} as Partial<Record<FormDataKeys<TForm>, string>>, `${rememberKey}:errors`)\n : useState({} as Partial<Record<FormDataKeys<TForm>, string>>)\n const [hasErrors, setHasErrors] = useState(false)\n const [processing, setProcessing] = useState(false)\n const [progress, setProgress] = useState(null)\n const [wasSuccessful, setWasSuccessful] = useState(false)\n const [recentlySuccessful, setRecentlySuccessful] = useState(false)\n const transform = useRef((data) => data)\n const isDirty = useMemo(() => !isEqual(data, defaults), [data, defaults])\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n const submit = useCallback(\n (...args) => {\n const objectPassed = typeof args[0] === 'object'\n\n const method = objectPassed ? args[0].method : args[0]\n const url = objectPassed ? args[0].url : args[1]\n const options = (objectPassed ? args[1] : args[2]) ?? {}\n\n const _options = {\n ...options,\n onCancelToken: (token) => {\n cancelToken.current = token\n\n if (options.onCancelToken) {\n return options.onCancelToken(token)\n }\n },\n onBefore: (visit) => {\n setWasSuccessful(false)\n setRecentlySuccessful(false)\n clearTimeout(recentlySuccessfulTimeoutId.current)\n\n if (options.onBefore) {\n return options.onBefore(visit)\n }\n },\n onStart: (visit) => {\n setProcessing(true)\n\n if (options.onStart) {\n return options.onStart(visit)\n }\n },\n onProgress: (event) => {\n setProgress(event)\n\n if (options.onProgress) {\n return options.onProgress(event)\n }\n },\n onSuccess: (page) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors({})\n setHasErrors(false)\n setWasSuccessful(true)\n setRecentlySuccessful(true)\n setDefaults(cloneDeep(data))\n recentlySuccessfulTimeoutId.current = setTimeout(() => {\n if (isMounted.current) {\n setRecentlySuccessful(false)\n }\n }, 2000)\n }\n\n if (options.onSuccess) {\n return options.onSuccess(page)\n }\n },\n onError: (errors) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors(errors)\n setHasErrors(true)\n }\n\n if (options.onError) {\n return options.onError(errors)\n }\n },\n onCancel: () => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n if (options.onCancel) {\n return options.onCancel()\n }\n },\n onFinish: (visit) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n cancelToken.current = null\n\n if (options.onFinish) {\n return options.onFinish(visit)\n }\n },\n }\n\n if (method === 'delete') {\n router.delete(url, { ..._options, data: transform.current(data) })\n } else {\n router[method](url, transform.current(data), _options)\n }\n },\n [data, setErrors, transform],\n )\n\n const setDataFunction = useCallback(\n (keyOrData: FormDataKeys<TForm> | Function | TForm, maybeValue?: any) => {\n if (typeof keyOrData === 'string') {\n setData((data) => set(cloneDeep(data), keyOrData, maybeValue))\n } else if (typeof keyOrData === 'function') {\n setData((data) => keyOrData(data))\n } else {\n setData(keyOrData as TForm)\n }\n },\n [setData],\n )\n\n const [dataAsDefaults, setDataAsDefaults] = useState(false)\n\n const setDefaultsFunction = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: FormDataConvertible) => {\n if (typeof fieldOrFields === 'undefined') {\n setDefaults(data)\n // If setData was called right before setDefaults, data was not\n // updated in that render yet, so we set a flag to update\n // defaults right after the next render.\n setDataAsDefaults(true)\n } else {\n setDefaults((defaults) => {\n return typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign(cloneDeep(defaults), fieldOrFields)\n })\n }\n },\n [data, setDefaults],\n )\n\n useLayoutEffect(() => {\n if (!dataAsDefaults) {\n return\n }\n\n if (isDirty) {\n // Data has been updated in this next render and is different from\n // the defaults, so now we can set defaults to the current data.\n setDefaults(data)\n }\n\n setDataAsDefaults(false)\n }, [dataAsDefaults])\n\n const reset = useCallback(\n (...fields) => {\n if (fields.length === 0) {\n setData(defaults)\n } else {\n setData((data) =>\n (fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(defaults, key))\n .reduce(\n (carry, key) => {\n return set(carry, key, get(defaults, key))\n },\n { ...data } as TForm,\n ),\n )\n }\n },\n [setData, defaults],\n )\n\n const setError = useCallback(\n (fieldOrFields: FormDataKeys<TForm> | Record<FormDataKeys<TForm>, string>, maybeValue?: string) => {\n setErrors((errors) => {\n const newErrors = {\n ...errors,\n ...(typeof fieldOrFields === 'string'\n ? { [fieldOrFields]: maybeValue }\n : (fieldOrFields as Record<FormDataKeys<TForm>, string>)),\n }\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\n )\n\n const clearErrors = useCallback(\n (...fields) => {\n setErrors((errors) => {\n const newErrors = (Object.keys(errors) as Array<FormDataKeys<TForm>>).reduce(\n (carry, field) => ({\n ...carry,\n ...(fields.length > 0 && !fields.includes(field) ? { [field]: errors[field] } : {}),\n }),\n {},\n )\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\n )\n\n const resetAndClearErrors = useCallback(\n (...fields) => {\n reset(...fields)\n clearErrors(...fields)\n },\n [reset, clearErrors],\n )\n\n const createSubmitMethod = (method) => (url, options) => {\n submit(method, url, options)\n }\n const getMethod = useCallback(createSubmitMethod('get'), [submit])\n const post = useCallback(createSubmitMethod('post'), [submit])\n const put = useCallback(createSubmitMethod('put'), [submit])\n const patch = useCallback(createSubmitMethod('patch'), [submit])\n const deleteMethod = useCallback(createSubmitMethod('delete'), [submit])\n\n const cancel = useCallback(() => {\n if (cancelToken.current) {\n cancelToken.current.cancel()\n }\n }, [])\n\n const transformFunction = useCallback((callback) => {\n transform.current = callback\n }, [])\n\n return {\n data,\n setData: setDataFunction,\n isDirty,\n errors,\n hasErrors,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n transform: transformFunction,\n setDefaults: setDefaultsFunction,\n reset,\n setError,\n clearErrors,\n resetAndClearErrors,\n submit,\n get: getMethod,\n post,\n put,\n patch,\n delete: deleteMethod,\n cancel,\n }\n}\n", "import { router } from '@inertiajs/core'\nimport { Dispatch, SetStateAction, useEffect, useState } from 'react'\n\nexport default function useRemember<State>(\n initialState: State,\n key?: string,\n): [State, Dispatch<SetStateAction<State>>] {\n const [state, setState] = useState(() => {\n const restored = router.restore(key) as State\n\n return restored !== undefined ? restored : initialState\n })\n\n useEffect(() => {\n router.remember(state, key)\n }, [state, key])\n\n return [state, setState]\n}\n", "import { escape } from 'es-toolkit'\nimport React, { FunctionComponent, useContext, useEffect, useMemo } from 'react'\nimport HeadContext from './HeadContext'\n\ntype InertiaHeadProps = {\n title?: string\n children?: React.ReactNode\n}\n\ntype InertiaHead = FunctionComponent<InertiaHeadProps>\n\nconst Head: InertiaHead = function ({ children, title }) {\n const headManager = useContext(HeadContext)\n const provider = useMemo(() => headManager.createProvider(), [headManager])\n const isServer = typeof window === 'undefined'\n\n useEffect(() => {\n provider.reconnect()\n provider.update(renderNodes(children))\n return () => {\n provider.disconnect()\n }\n }, [provider, children, title])\n\n function isUnaryTag(node) {\n return (\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) {\n const attrs = Object.keys(node.props).reduce((carry, name) => {\n if (['head-key', 'children', 'dangerouslySetInnerHTML'].includes(name)) {\n return carry\n }\n const value = String(node.props[name])\n if (value === '') {\n return carry + ` ${name}`\n } else {\n return carry + ` ${name}=\"${escape(value)}\"`\n }\n }, '')\n return `<${node.type}${attrs}>`\n }\n\n function renderTagChildren(node) {\n return typeof node.props.children === 'string'\n ? node.props.children\n : node.props.children.reduce((html, child) => html + renderTag(child), '')\n }\n\n function renderTag(node) {\n let html = renderTagStart(node)\n if (node.props.children) {\n html += renderTagChildren(node)\n }\n if (node.props.dangerouslySetInnerHTML) {\n html += node.props.dangerouslySetInnerHTML.__html\n }\n if (!isUnaryTag(node)) {\n html += `</${node.type}>`\n }\n return html\n }\n\n function ensureNodeHasInertiaProp(node) {\n return React.cloneElement(node, {\n inertia: node.props['head-key'] !== undefined ? node.props['head-key'] : '',\n })\n }\n\n function renderNode(node) {\n return renderTag(ensureNodeHasInertiaProp(node))\n }\n\n function renderNodes(nodes) {\n const computed = React.Children.toArray(nodes)\n .filter((node) => node)\n .map((node) => renderNode(node))\n if (title && !computed.find((tag) => tag.startsWith('<title'))) {\n computed.push(`<title inertia>${title}</title>`)\n }\n return computed\n }\n\n if (isServer) {\n provider.update(renderNodes(children))\n }\n\n return null\n}\nexport default Head\n", "import {\n CacheForOption,\n FormDataConvertible,\n LinkPrefetchOption,\n mergeDataIntoQueryString,\n Method,\n PendingVisit,\n PreserveStateOption,\n Progress,\n router,\n shouldIntercept,\n} from '@inertiajs/core'\nimport { createElement, ElementType, forwardRef, useEffect, useMemo, useRef, useState } from 'react'\n\nconst noop = () => undefined\n\ninterface BaseInertiaLinkProps {\n as?: ElementType\n data?: Record<string, FormDataConvertible>\n href: string | { url: string; method: Method }\n method?: Method\n headers?: Record<string, string>\n onClick?: (event: React.MouseEvent<Element>) => void\n preserveScroll?: PreserveStateOption\n preserveState?: PreserveStateOption\n replace?: boolean\n only?: string[]\n except?: string[]\n onCancelToken?: (cancelToken: import('axios').CancelTokenSource) => void\n onBefore?: () => void\n onStart?: (event: PendingVisit) => void\n onProgress?: (progress: Progress) => void\n onFinish?: (event: PendingVisit) => void\n onCancel?: () => void\n onSuccess?: () => void\n onError?: () => void\n queryStringArrayFormat?: 'indices' | 'brackets'\n async?: boolean\n cacheFor?: CacheForOption | CacheForOption[]\n prefetch?: boolean | LinkPrefetchOption | LinkPrefetchOption[]\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 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 prefetch = false,\n cacheFor = 0,\n ...props\n },\n ref,\n ) => {\n const [inFlightCount, setInFlightCount] = useState(0)\n const hoverTimeout = useRef<number>(null)\n\n const _method = useMemo(() => {\n return typeof href === 'object' ? href.method : (method.toLowerCase() as Method)\n }, [href, method])\n\n const _as = useMemo(() => {\n if (typeof as !== 'string') {\n // Custom component\n return as\n }\n\n return _method !== 'get' ? 'button' : as.toLowerCase()\n }, [as, _method])\n\n const mergeDataArray = useMemo(\n () =>\n mergeDataIntoQueryString(\n _method,\n typeof href === 'object' ? href.url : href || '',\n data,\n queryStringArrayFormat,\n ),\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(\n () => ({\n data: _data,\n method: _method,\n preserveScroll,\n preserveState: preserveState ?? _method !== 'get',\n replace,\n only,\n except,\n headers,\n async,\n }),\n [_data, _method, preserveScroll, preserveState, replace, only, except, headers, async],\n )\n\n const visitParams = useMemo(\n () => ({\n ...baseParams,\n onCancelToken,\n onBefore,\n onStart(event) {\n setInFlightCount((count) => count + 1)\n onStart(event)\n },\n onProgress,\n onFinish(event) {\n setInFlightCount((count) => count - 1)\n onFinish(event)\n },\n onCancel,\n onSuccess,\n onError,\n }),\n [baseParams, onCancelToken, onBefore, onStart, onProgress, onFinish, onCancel, onSuccess, onError],\n )\n\n const doPrefetch = () => {\n router.prefetch(url, baseParams, { cacheFor: cacheForValue })\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 30_000\n }, [cacheFor, prefetchModes])\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) => {\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 }, 75)\n },\n onMouseLeave: () => {\n clearTimeout(hoverTimeout.current)\n },\n onClick: regularEvents.onClick,\n }\n\n const prefetchClickEvents = {\n onMouseDown: (event) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onMouseUp: (event) => {\n event.preventDefault()\n router.visit(url, visitParams)\n },\n onClick: (event) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n // Let the mouseup event handle the visit\n event.preventDefault()\n }\n },\n }\n\n const elProps = useMemo(() => {\n if (_as === 'button') {\n return { type: 'button' }\n }\n\n if (_as === 'a' || typeof _as !== 'string') {\n return { href: url }\n }\n\n return {}\n }, [_as, url])\n\n return createElement(\n _as,\n {\n ...props,\n ...elProps,\n ref,\n ...(() => {\n if (prefetchModes.includes('hover')) {\n return prefetchHoverEvents\n }\n\n if (prefetchModes.includes('click')) {\n return prefetchClickEvents\n }\n\n return regularEvents\n })(),\n 'data-loading': inFlightCount > 0 ? '' : undefined,\n },\n children,\n )\n },\n)\nLink.displayName = 'InertiaLink'\n\nexport default Link\n", "import { PollOptions, ReloadOptions, router } from '@inertiajs/core'\nimport { useEffect, useRef } from 'react'\n\nexport default function usePoll(\n interval: number,\n requestOptions: ReloadOptions = {},\n options: PollOptions = {\n keepAlive: false,\n autoStart: true,\n },\n) {\n const pollRef = useRef(\n router.poll(interval, requestOptions, {\n ...options,\n autoStart: false,\n }),\n )\n\n useEffect(() => {\n if (options.autoStart ?? true) {\n pollRef.current.start()\n }\n\n return () => pollRef.current.stop()\n }, [])\n\n return {\n stop: pollRef.current.stop,\n start: pollRef.current.start,\n }\n}\n", "import { router, VisitOptions } from '@inertiajs/core'\nimport { useEffect, useState } from 'react'\n\nexport default function usePrefetch(options: VisitOptions = {}): {\n lastUpdatedAt: number | null\n isPrefetching: boolean\n isPrefetched: boolean\n flush: () => void\n} {\n const cached = typeof window === 'undefined' ? null : router.getCached(window.location.pathname, options)\n const inFlight = typeof window === 'undefined' ? null : router.getPrefetching(window.location.pathname, options)\n\n const [lastUpdatedAt, setLastUpdatedAt] = useState<number | null>(cached?.staleTimestamp || null)\n const [isPrefetching, setIsPrefetching] = useState(inFlight !== null)\n const [isPrefetched, setIsPrefetched] = useState(cached !== null)\n\n useEffect(() => {\n const onPrefetchingListener = router.on('prefetching', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(true)\n }\n })\n\n const onPrefetchedListener = router.on('prefetched', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(false)\n setIsPrefetched(true)\n setLastUpdatedAt(e.detail.fetchedAt)\n }\n })\n\n return () => {\n onPrefetchedListener()\n onPrefetchingListener()\n }\n }, [])\n\n return {\n lastUpdatedAt,\n isPrefetching,\n isPrefetched,\n flush: () => router.flush(window.location.pathname, options),\n }\n}\n", "import { ReloadOptions, router } from '@inertiajs/core'\nimport { createElement, ReactNode, useCallback, useEffect, useRef, useState } from 'react'\n\ninterface WhenVisibleProps {\n children: ReactNode | (() => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data?: string | string[]\n params?: ReloadOptions\n buffer?: number\n as?: string\n always?: boolean\n}\n\nconst WhenVisible = ({ children, data, params, buffer, as, always, fallback }: WhenVisibleProps) => {\n always = always ?? false\n as = as ?? 'div'\n fallback = fallback ?? null\n\n const [loaded, setLoaded] = useState(false)\n const hasFetched = useRef<boolean>(false)\n const fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n\n const getReloadParams = useCallback<() => Partial<ReloadOptions>>(() => {\n if (data) {\n return {\n only: (Array.isArray(data) ? data : [data]) as string[],\n }\n }\n\n if (!params) {\n throw new Error('You must provide either a `data` or `params` prop.')\n }\n\n return params\n }, [params, data])\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (!always && hasFetched.current) {\n observer.disconnect()\n }\n\n if (fetching.current) {\n return\n }\n\n hasFetched.current = true\n fetching.current = true\n\n const reloadParams = getReloadParams()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.current = true\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n setLoaded(true)\n fetching.current = false\n reloadParams.onFinish?.(e)\n\n if (!always) {\n observer.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.observe(ref.current)\n\n return () => {\n observer.disconnect()\n }\n }, [ref, getReloadParams, buffer])\n\n const resolveChildren = () => (typeof children === 'function' ? children() : children)\n const resolveFallback = () => (typeof fallback === 'function' ? fallback() : fallback)\n\n if (always || !loaded) {\n return createElement(\n as,\n {\n props: null,\n ref,\n },\n loaded ? resolveChildren() : resolveFallback(),\n )\n }\n\n return loaded ? resolveChildren() : null\n}\n\nWhenVisible.displayName = 'InertiaWhenVisible'\n\nexport default WhenVisible\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { router as Router } from '@inertiajs/core'\n\nexport const router = Router\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './Deferred'\nexport { default as Form } from './Form'\nexport { default as Head } from './Head'\nexport { InertiaLinkProps, default as Link } from './Link'\nexport { InertiaFormProps, SetDataByObject, SetDataByMethod, SetDataByKeyValuePair, SetDataAction, default as useForm } from './useForm'\nexport { default as usePage } from './usePage'\nexport { default as usePoll } from './usePoll'\nexport { default as usePrefetch } from './usePrefetch'\nexport { default as useRemember } from './useRemember'\nexport { default as WhenVisible } from './WhenVisible'\n", "import { Page, PageProps, PageResolver, router, setupProgress } from '@inertiajs/core'\nimport { ComponentType, FunctionComponent, Key, ReactElement, ReactNode, createElement } from 'react'\nimport { renderToString } from 'react-dom/server'\nimport App from './App'\n\ntype ReactInstance = ReactElement\ntype ReactComponent = ReactNode\n\ntype HeadManagerOnUpdate = (elements: string[]) => void // TODO: When shipped, replace with: Inertia.HeadManagerOnUpdate\ntype HeadManagerTitleCallback = (title: string) => string // TODO: When shipped, replace with: Inertia.HeadManagerTitleCallback\n\ntype AppType<SharedProps extends PageProps = PageProps> = FunctionComponent<\n {\n children?: (props: { Component: ComponentType; key: Key; props: Page<SharedProps>['props'] }) => ReactNode\n } & SetupOptions<unknown, SharedProps>['props']\n>\n\nexport type SetupOptions<ElementType, SharedProps extends PageProps> = {\n el: ElementType\n App: AppType\n props: {\n initialPage: Page<SharedProps>\n initialComponent: ReactComponent\n resolveComponent: PageResolver\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdate\n }\n}\n\ntype BaseInertiaAppOptions = {\n title?: HeadManagerTitleCallback\n resolve: PageResolver\n}\n\ntype CreateInertiaAppSetupReturnType = ReactInstance | void\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = BaseInertiaAppOptions & {\n id?: string\n page?: Page | string\n render?: undefined\n progress?:\n | false\n | {\n delay?: number\n color?: string\n includeCSS?: boolean\n showSpinner?: boolean\n }\n setup(options: SetupOptions<HTMLElement, SharedProps>): CreateInertiaAppSetupReturnType\n}\n\ntype CreateInertiaAppSSRContent = { head: string[]; body: string }\ntype InertiaAppOptionsForSSR<SharedProps extends PageProps> = BaseInertiaAppOptions & {\n id?: undefined\n page: Page | string\n render: typeof renderToString\n progress?: undefined\n setup(options: SetupOptions<null, SharedProps>): ReactInstance\n}\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<CreateInertiaAppSetupReturnType>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<CreateInertiaAppSSRContent>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>({\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n}: InertiaAppOptionsForCSR<SharedProps> | InertiaAppOptionsForSSR<SharedProps>): Promise<\n CreateInertiaAppSetupReturnType | CreateInertiaAppSSRContent\n> {\n const isServer = typeof window === 'undefined'\n const el = isServer ? null : document.getElementById(id)\n const initialPage = page || JSON.parse(el.dataset.page)\n // @ts-expect-error\n const resolveComponent = (name) => Promise.resolve(resolve(name)).then((module) => module.default || module)\n\n let head = []\n\n const reactApp = await Promise.all([\n resolveComponent(initialPage.component),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n return setup({\n // @ts-expect-error\n el,\n App,\n props: {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: isServer ? (elements) => (head = elements) : null,\n },\n })\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer) {\n const body = await render(\n createElement(\n 'div',\n {\n id,\n 'data-page': JSON.stringify(initialPage),\n },\n // @ts-expect-error\n reactApp,\n ),\n )\n\n return { head, body }\n }\n}\n", "import { createHeadManager, PageHandler, router } from '@inertiajs/core'\nimport { createElement, useEffect, useMemo, useState } from 'react'\nimport HeadContext from './HeadContext'\nimport PageContext from './PageContext'\n\nlet currentIsInitialPage = true\nlet routerIsInitialized = false\nlet swapComponent: PageHandler = 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\nexport default function App({\n children,\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n}) {\n const [current, setCurrent] = useState({\n component: initialComponent || null,\n page: initialPage,\n key: null,\n })\n\n const headManager = useMemo(() => {\n return createHeadManager(\n typeof window === 'undefined',\n titleCallback || ((title) => title),\n onHeadUpdate || (() => {}),\n )\n }, [])\n\n if (!routerIsInitialized) {\n router.init({\n initialPage,\n resolveComponent,\n swapComponent: async (args) => swapComponent(args),\n })\n\n routerIsInitialized = true\n }\n\n useEffect(() => {\n swapComponent = async ({ component, page, preserveState }) => {\n if (currentIsInitialPage) {\n // We block setting the current page on the initial page to\n // prevent the initial page from being re-rendered again.\n currentIsInitialPage = false\n return\n }\n\n setCurrent((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\n }))\n }\n\n router.on('navigate', () => headManager.forceUpdate())\n }, [])\n\n if (!current.component) {\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(PageContext.Provider, { value: current.page }, null),\n )\n }\n\n const renderChildren =\n children ||\n (({ Component, props, key }) => {\n const child = createElement(Component, { key, ...props })\n\n if (typeof Component.layout === 'function') {\n return Component.layout(child)\n }\n\n if (Array.isArray(Component.layout)) {\n return Component.layout\n .concat(child)\n .reverse()\n .reduce((children, Layout) => createElement(Layout, { children, ...props }))\n }\n\n return child\n })\n\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(\n PageContext.Provider,\n { value: current.page },\n renderChildren({\n Component: current.component,\n key: current.key,\n props: current.page.props,\n }),\n ),\n )\n}\n\nApp.displayName = 'Inertia'\n", "import { createContext } from 'react'\n\nconst headContext = createContext(undefined)\nheadContext.displayName = 'InertiaHeadContext'\n\nexport default headContext\n", "import { createContext } from 'react'\n\nconst pageContext = createContext(undefined)\npageContext.displayName = 'InertiaPageContext'\n\nexport default pageContext\n", "import { ReactNode, useEffect, useMemo, useState } from 'react'\nimport { router } from '.'\nimport usePage from './usePage'\n\nconst urlWithoutHash = (url: URL | Location): URL => {\n url = new URL(url.href)\n url.hash = ''\n\n return url\n}\n\nconst isSameUrlWithoutHash = (url1: URL | Location, url2: URL | Location): boolean => {\n return urlWithoutHash(url1).href === urlWithoutHash(url2).href\n}\n\ninterface DeferredProps {\n children: ReactNode | (() => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data: string | string[]\n}\n\nconst Deferred = ({ children, data, fallback }: DeferredProps) => {\n if (!data) {\n throw new Error('`<Deferred>` requires a `data` prop to be a string or array of strings')\n }\n\n const [loaded, setLoaded] = useState(false)\n const pageProps = usePage().props\n const keys = useMemo(() => (Array.isArray(data) ? data : [data]), [data])\n\n useEffect(() => {\n const removeListener = router.on('start', (e) => {\n const isPartialVisit = e.detail.visit.only.length > 0 || e.detail.visit.except.length > 0\n const isReloadingKey = e.detail.visit.only.find((key) => keys.includes(key))\n\n if (isSameUrlWithoutHash(e.detail.visit.url, window.location) && (!isPartialVisit || isReloadingKey)) {\n setLoaded(false)\n }\n })\n\n return () => {\n removeListener()\n }\n }, [])\n\n useEffect(() => {\n setLoaded(keys.every((key) => pageProps[key] !== undefined))\n }, [pageProps, keys])\n\n if (loaded) {\n return typeof children === 'function' ? children() : children\n }\n\n return typeof fallback === 'function' ? fallback() : fallback\n}\n\nDeferred.displayName = 'InertiaDeferred'\n\nexport default Deferred\n", "import { Page, PageProps } from '@inertiajs/core'\nimport { useContext } from 'react'\nimport PageContext from './PageContext'\n\nexport default function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps> {\n const page = useContext(PageContext)\n\n if (!page) {\n throw new Error('usePage must be used within the Inertia component')\n }\n\n return page\n}\n", "import {\n FormComponentProps,\n FormComponentRef,\n FormComponentSlotProps,\n FormDataConvertible,\n formDataToObject,\n mergeDataIntoQueryString,\n Method,\n resetFormFields,\n VisitOptions,\n} from '@inertiajs/core'\nimport { isEqual } from 'es-toolkit'\nimport {\n createElement,\n FormEvent,\n forwardRef,\n ReactNode,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport useForm from './useForm'\n\ntype ComponentProps = (FormComponentProps &\n Omit<React.FormHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> &\n Omit<React.AllHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'>) & {\n children: ReactNode | ((props: FormComponentSlotProps) => ReactNode)\n}\n\ntype FormSubmitOptions = Omit<VisitOptions, 'data' | 'onPrefetched' | 'onPrefetching'>\n\nconst noop = () => undefined\n\nconst Form = forwardRef<FormComponentRef, ComponentProps>(\n (\n {\n action = '',\n method = 'get',\n headers = {},\n queryStringArrayFormat = 'brackets',\n errorBag = null,\n showProgress = true,\n transform = (data) => data,\n options = {},\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onBefore = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n onCancelToken = noop,\n onSubmitComplete = noop,\n disableWhileProcessing = false,\n children,\n ...props\n },\n ref,\n ) => {\n const form = useForm<Record<string, any>>({})\n const formElement = useRef<HTMLFormElement>(null)\n\n const resolvedMethod = useMemo(() => {\n return typeof action === 'object' ? action.method : (method.toLowerCase() as Method)\n }, [action, method])\n\n const [isDirty, setIsDirty] = useState(false)\n const defaultData = useRef<FormData>(new FormData())\n\n const getFormData = (): FormData => new FormData(formElement.current)\n\n // Convert the FormData to an object because we can't compare two FormData\n // instances directly (which is needed for isDirty), mergeDataIntoQueryString()\n // expects an object, and submitting a FormData instance directly causes problems with nested objects.\n const getData = (): Record<string, FormDataConvertible> => formDataToObject(getFormData())\n\n const updateDirtyState = (event: Event) =>\n setIsDirty(event.type === 'reset' ? false : !isEqual(getData(), formDataToObject(defaultData.current)))\n\n useEffect(() => {\n defaultData.current = getFormData()\n\n const formEvents: Array<keyof HTMLElementEventMap> = ['input', 'change', 'reset']\n\n formEvents.forEach((e) => formElement.current.addEventListener(e, updateDirtyState))\n\n return () => formEvents.forEach((e) => formElement.current?.removeEventListener(e, updateDirtyState))\n }, [])\n\n const reset = (...fields: string[]) => {\n resetFormFields(formElement.current, defaultData.current, fields)\n }\n\n const resetAndClearErrors = (...fields: string[]) => {\n form.clearErrors(...fields)\n reset(...fields)\n }\n\n const submit = () => {\n const [url, _data] = mergeDataIntoQueryString(\n resolvedMethod,\n typeof action === 'object' ? action.url : action,\n getData(),\n queryStringArrayFormat,\n )\n\n const submitOptions: FormSubmitOptions = {\n headers,\n errorBag,\n showProgress,\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 },\n onError,\n ...options,\n }\n\n form.transform(() => transform(_data))\n form.submit(resolvedMethod, url, submitOptions)\n }\n\n const defaults = () => {\n defaultData.current = getFormData()\n setIsDirty(false)\n }\n\n const exposed = () => ({\n errors: form.errors,\n hasErrors: form.hasErrors,\n processing: form.processing,\n progress: form.progress,\n wasSuccessful: form.wasSuccessful,\n recentlySuccessful: form.recentlySuccessful,\n isDirty,\n clearErrors: form.clearErrors,\n resetAndClearErrors,\n setError: form.setError,\n reset,\n submit,\n defaults,\n })\n\n useImperativeHandle(ref, exposed, [form, isDirty, submit])\n\n return createElement(\n 'form',\n {\n ...props,\n ref: formElement,\n action: typeof action === 'object' ? action.url : action,\n method: resolvedMethod,\n onSubmit: (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n submit()\n },\n inert: disableWhileProcessing && form.processing,\n },\n typeof children === 'function' ? children(exposed()) : children,\n )\n },\n)\n\nForm.displayName = 'InertiaForm'\n\nexport default Form\n", "import {\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n Method,\n Progress,\n router,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep, isEqual } from 'es-toolkit'\nimport { get, has, set } from 'es-toolkit/compat'\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\nimport useRemember from './useRemember'\n\nexport type SetDataByObject<TForm> = (data: Partial<TForm>) => void\nexport type SetDataByMethod<TForm> = (data: (previousData: TForm) => TForm) => void\nexport type SetDataByKeyValuePair<TForm> = <K extends FormDataKeys<TForm>>(\n key: K,\n value: FormDataValues<TForm, K>,\n) => void\nexport type SetDataAction<TForm extends Record<any, any>> = SetDataByObject<TForm> &\n SetDataByMethod<TForm> &\n SetDataByKeyValuePair<TForm>\n\ntype FormOptions = Omit<VisitOptions, 'data'>\n\nexport interface InertiaFormProps<TForm extends object> {\n data: TForm\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n setData: SetDataAction<TForm>\n transform: (callback: (data: TForm) => object) => void\n setDefaults(): void\n setDefaults<T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n setDefaults(fields: Partial<TForm>): void\n reset<K extends FormDataKeys<TForm>>(...fields: K[]): void\n clearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): void\n resetAndClearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): void\n setError<K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n setError(errors: FormDataErrors<TForm>): void\n submit: (...args: [Method, string, FormOptions?] | [{ url: string; method: Method }, FormOptions?]) => void\n get: (url: string, options?: FormOptions) => void\n patch: (url: string, options?: FormOptions) => void\n post: (url: string, options?: FormOptions) => void\n put: (url: string, options?: FormOptions) => void\n delete: (url: string, options?: FormOptions) => void\n cancel: () => void\n}\nexport default function useForm<TForm extends FormDataType<TForm>>(\n initialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKey: string,\n initialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKeyOrInitialValues?: string | TForm | (() => TForm),\n maybeInitialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm> {\n const isMounted = useRef(null)\n const rememberKey = typeof rememberKeyOrInitialValues === 'string' ? rememberKeyOrInitialValues : null\n const [defaults, setDefaults] = useState(\n (typeof rememberKeyOrInitialValues === 'string' ? maybeInitialValues : rememberKeyOrInitialValues) || ({} as TForm),\n )\n const cancelToken = useRef(null)\n const recentlySuccessfulTimeoutId = useRef(null)\n const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`) : useState(defaults)\n const [errors, setErrors] = rememberKey\n ? useRemember({} as FormDataErrors<TForm>, `${rememberKey}:errors`)\n : useState({} as FormDataErrors<TForm>)\n const [hasErrors, setHasErrors] = useState(false)\n const [processing, setProcessing] = useState(false)\n const [progress, setProgress] = useState(null)\n const [wasSuccessful, setWasSuccessful] = useState(false)\n const [recentlySuccessful, setRecentlySuccessful] = useState(false)\n const transform = useRef((data) => data)\n const isDirty = useMemo(() => !isEqual(data, defaults), [data, defaults])\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n const submit = useCallback(\n (...args) => {\n const objectPassed = typeof args[0] === 'object'\n\n const method = objectPassed ? args[0].method : args[0]\n const url = objectPassed ? args[0].url : args[1]\n const options = (objectPassed ? args[1] : args[2]) ?? {}\n\n const _options = {\n ...options,\n onCancelToken: (token) => {\n cancelToken.current = token\n\n if (options.onCancelToken) {\n return options.onCancelToken(token)\n }\n },\n onBefore: (visit) => {\n setWasSuccessful(false)\n setRecentlySuccessful(false)\n clearTimeout(recentlySuccessfulTimeoutId.current)\n\n if (options.onBefore) {\n return options.onBefore(visit)\n }\n },\n onStart: (visit) => {\n setProcessing(true)\n\n if (options.onStart) {\n return options.onStart(visit)\n }\n },\n onProgress: (event) => {\n setProgress(event)\n\n if (options.onProgress) {\n return options.onProgress(event)\n }\n },\n onSuccess: (page) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors({} as FormDataErrors<TForm>)\n setHasErrors(false)\n setWasSuccessful(true)\n setRecentlySuccessful(true)\n setDefaults(cloneDeep(data))\n recentlySuccessfulTimeoutId.current = setTimeout(() => {\n if (isMounted.current) {\n setRecentlySuccessful(false)\n }\n }, 2000)\n }\n\n if (options.onSuccess) {\n return options.onSuccess(page)\n }\n },\n onError: (errors) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors(errors)\n setHasErrors(true)\n }\n\n if (options.onError) {\n return options.onError(errors)\n }\n },\n onCancel: () => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n if (options.onCancel) {\n return options.onCancel()\n }\n },\n onFinish: (visit) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n cancelToken.current = null\n\n if (options.onFinish) {\n return options.onFinish(visit)\n }\n },\n }\n\n if (method === 'delete') {\n router.delete(url, { ..._options, data: transform.current(data) })\n } else {\n router[method](url, transform.current(data), _options)\n }\n },\n [data, setErrors, transform],\n )\n\n const setDataFunction = useCallback(\n (keyOrData: FormDataKeys<TForm> | Function | Partial<TForm>, maybeValue?: any) => {\n if (typeof keyOrData === 'string') {\n setData((data) => set(cloneDeep(data), keyOrData, maybeValue))\n } else if (typeof keyOrData === 'function') {\n setData((data) => keyOrData(data))\n } else {\n setData(keyOrData as TForm)\n }\n },\n [setData],\n )\n\n const [dataAsDefaults, setDataAsDefaults] = useState(false)\n\n const setDefaultsFunction = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) => {\n if (typeof fieldOrFields === 'undefined') {\n setDefaults(data)\n // If setData was called right before setDefaults, data was not\n // updated in that render yet, so we set a flag to update\n // defaults right after the next render.\n setDataAsDefaults(true)\n } else {\n setDefaults((defaults) => {\n return typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign(cloneDeep(defaults), fieldOrFields)\n })\n }\n },\n [data, setDefaults],\n )\n\n useLayoutEffect(() => {\n if (!dataAsDefaults) {\n return\n }\n\n if (isDirty) {\n // Data has been updated in this next render and is different from\n // the defaults, so now we can set defaults to the current data.\n setDefaults(data)\n }\n\n setDataAsDefaults(false)\n }, [dataAsDefaults])\n\n const reset = useCallback(\n (...fields) => {\n if (fields.length === 0) {\n setData(defaults)\n } else {\n setData((data) =>\n (fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(defaults, key))\n .reduce(\n (carry, key) => {\n return set(carry, key, get(defaults, key))\n },\n { ...data } as TForm,\n ),\n )\n }\n },\n [setData, defaults],\n )\n\n const setError = useCallback(\n (fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: string) => {\n setErrors((errors) => {\n const newErrors = {\n ...errors,\n ...(typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields),\n }\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\n )\n\n const clearErrors = useCallback(\n (...fields) => {\n setErrors((errors) => {\n const newErrors = Object.keys(errors).reduce(\n (carry, field) => ({\n ...carry,\n ...(fields.length > 0 && !fields.includes(field) ? { [field]: errors[field] } : {}),\n }),\n {},\n )\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors as FormDataErrors<TForm>\n })\n },\n [setErrors, setHasErrors],\n )\n\n const resetAndClearErrors = useCallback(\n (...fields) => {\n reset(...fields)\n clearErrors(...fields)\n },\n [reset, clearErrors],\n )\n\n const createSubmitMethod = (method) => (url, options) => {\n submit(method, url, options)\n }\n const getMethod = useCallback(createSubmitMethod('get'), [submit])\n const post = useCallback(createSubmitMethod('post'), [submit])\n const put = useCallback(createSubmitMethod('put'), [submit])\n const patch = useCallback(createSubmitMethod('patch'), [submit])\n const deleteMethod = useCallback(createSubmitMethod('delete'), [submit])\n\n const cancel = useCallback(() => {\n if (cancelToken.current) {\n cancelToken.current.cancel()\n }\n }, [])\n\n const transformFunction = useCallback((callback) => {\n transform.current = callback\n }, [])\n\n return {\n data,\n setData: setDataFunction,\n isDirty,\n errors,\n hasErrors,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n transform: transformFunction,\n setDefaults: setDefaultsFunction,\n reset,\n setError,\n clearErrors,\n resetAndClearErrors,\n submit,\n get: getMethod,\n post,\n put,\n patch,\n delete: deleteMethod,\n cancel,\n }\n}\n", "import { router } from '@inertiajs/core'\nimport { Dispatch, SetStateAction, useEffect, useState } from 'react'\n\nexport default function useRemember<State>(\n initialState: State,\n key?: string,\n): [State, Dispatch<SetStateAction<State>>] {\n const [state, setState] = useState(() => {\n const restored = router.restore(key) as State\n\n return restored !== undefined ? restored : initialState\n })\n\n useEffect(() => {\n router.remember(state, key)\n }, [state, key])\n\n return [state, setState]\n}\n", "import { escape } from 'es-toolkit'\nimport React, { FunctionComponent, useContext, useEffect, useMemo } from 'react'\nimport HeadContext from './HeadContext'\n\ntype InertiaHeadProps = {\n title?: string\n children?: React.ReactNode\n}\n\ntype InertiaHead = FunctionComponent<InertiaHeadProps>\n\nconst Head: InertiaHead = function ({ children, title }) {\n const headManager = useContext(HeadContext)\n const provider = useMemo(() => headManager.createProvider(), [headManager])\n const isServer = typeof window === 'undefined'\n\n useEffect(() => {\n provider.reconnect()\n provider.update(renderNodes(children))\n return () => {\n provider.disconnect()\n }\n }, [provider, children, title])\n\n function isUnaryTag(node) {\n return (\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) {\n const attrs = Object.keys(node.props).reduce((carry, name) => {\n if (['head-key', 'children', 'dangerouslySetInnerHTML'].includes(name)) {\n return carry\n }\n const value = String(node.props[name])\n if (value === '') {\n return carry + ` ${name}`\n } else {\n return carry + ` ${name}=\"${escape(value)}\"`\n }\n }, '')\n return `<${node.type}${attrs}>`\n }\n\n function renderTagChildren(node) {\n return typeof node.props.children === 'string'\n ? node.props.children\n : node.props.children.reduce((html, child) => html + renderTag(child), '')\n }\n\n function renderTag(node) {\n let html = renderTagStart(node)\n if (node.props.children) {\n html += renderTagChildren(node)\n }\n if (node.props.dangerouslySetInnerHTML) {\n html += node.props.dangerouslySetInnerHTML.__html\n }\n if (!isUnaryTag(node)) {\n html += `</${node.type}>`\n }\n return html\n }\n\n function ensureNodeHasInertiaProp(node) {\n return React.cloneElement(node, {\n inertia: node.props['head-key'] !== undefined ? node.props['head-key'] : '',\n })\n }\n\n function renderNode(node) {\n return renderTag(ensureNodeHasInertiaProp(node))\n }\n\n function renderNodes(nodes) {\n const computed = React.Children.toArray(nodes)\n .filter((node) => node)\n .map((node) => renderNode(node))\n if (title && !computed.find((tag) => tag.startsWith('<title'))) {\n computed.push(`<title inertia>${title}</title>`)\n }\n return computed\n }\n\n if (isServer) {\n provider.update(renderNodes(children))\n }\n\n return null\n}\nexport default Head\n", "import {\n ActiveVisit,\n LinkComponentBaseProps,\n LinkPrefetchOption,\n mergeDataIntoQueryString,\n Method,\n PendingVisit,\n router,\n shouldIntercept,\n} from '@inertiajs/core'\nimport { createElement, ElementType, forwardRef, useEffect, useMemo, useRef, useState } from 'react'\n\nconst noop = () => undefined\n\ninterface BaseInertiaLinkProps extends LinkComponentBaseProps {\n as?: ElementType\n onClick?: (event: React.MouseEvent<Element>) => 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 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 ...props\n },\n ref,\n ) => {\n const [inFlightCount, setInFlightCount] = useState(0)\n const hoverTimeout = useRef<number>(null)\n\n const _method = useMemo(() => {\n return typeof href === 'object' ? href.method : (method.toLowerCase() as Method)\n }, [href, method])\n\n const _as = useMemo(() => {\n if (typeof as !== 'string') {\n // Custom component\n return as\n }\n\n return _method !== 'get' ? 'button' : as.toLowerCase()\n }, [as, _method])\n\n const mergeDataArray = useMemo(\n () => mergeDataIntoQueryString(_method, typeof href === 'object' ? 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(\n () => ({\n data: _data,\n method: _method,\n preserveScroll,\n preserveState: preserveState ?? _method !== 'get',\n replace,\n only,\n except,\n headers,\n async,\n }),\n [_data, _method, preserveScroll, preserveState, replace, only, except, headers, async],\n )\n\n const visitParams = useMemo(\n () => ({\n ...baseParams,\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 [baseParams, onCancelToken, onBefore, onStart, onProgress, onFinish, onCancel, onSuccess, onError],\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 30_000\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 },\n )\n }\n }, [url, baseParams, onPrefetching, onPrefetched, cacheForValue])\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) => {\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 }, 75)\n },\n onMouseLeave: () => {\n clearTimeout(hoverTimeout.current)\n },\n onClick: regularEvents.onClick,\n }\n\n const prefetchClickEvents = {\n onMouseDown: (event) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onMouseUp: (event) => {\n event.preventDefault()\n router.visit(url, visitParams)\n },\n onClick: (event) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n // Let the mouseup event handle the visit\n event.preventDefault()\n }\n },\n }\n\n const elProps = useMemo(() => {\n if (_as === 'button') {\n return { type: 'button' }\n }\n\n if (_as === 'a' || typeof _as !== 'string') {\n return { href: url }\n }\n\n return {}\n }, [_as, url])\n\n return createElement(\n _as,\n {\n ...props,\n ...elProps,\n ref,\n ...(() => {\n if (prefetchModes.includes('hover')) {\n return prefetchHoverEvents\n }\n\n if (prefetchModes.includes('click')) {\n return prefetchClickEvents\n }\n\n return regularEvents\n })(),\n 'data-loading': inFlightCount > 0 ? '' : undefined,\n },\n children,\n )\n },\n)\nLink.displayName = 'InertiaLink'\n\nexport default Link\n", "import { PollOptions, ReloadOptions, router } from '@inertiajs/core'\nimport { useEffect, useRef } from 'react'\n\nexport default function usePoll(\n interval: number,\n requestOptions: ReloadOptions = {},\n options: PollOptions = {\n keepAlive: false,\n autoStart: true,\n },\n) {\n const pollRef = useRef(\n router.poll(interval, requestOptions, {\n ...options,\n autoStart: false,\n }),\n )\n\n useEffect(() => {\n if (options.autoStart ?? true) {\n pollRef.current.start()\n }\n\n return () => pollRef.current.stop()\n }, [])\n\n return {\n stop: pollRef.current.stop,\n start: pollRef.current.start,\n }\n}\n", "import { router, VisitOptions } from '@inertiajs/core'\nimport { useEffect, useState } from 'react'\n\nexport default function usePrefetch(options: VisitOptions = {}): {\n lastUpdatedAt: number | null\n isPrefetching: boolean\n isPrefetched: boolean\n flush: () => void\n} {\n const cached = typeof window === 'undefined' ? null : router.getCached(window.location.pathname, options)\n const inFlight = typeof window === 'undefined' ? null : router.getPrefetching(window.location.pathname, options)\n\n const [lastUpdatedAt, setLastUpdatedAt] = useState<number | null>(cached?.staleTimestamp || null)\n const [isPrefetching, setIsPrefetching] = useState(inFlight !== null)\n const [isPrefetched, setIsPrefetched] = useState(cached !== null)\n\n useEffect(() => {\n const onPrefetchingListener = router.on('prefetching', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(true)\n }\n })\n\n const onPrefetchedListener = router.on('prefetched', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(false)\n setIsPrefetched(true)\n setLastUpdatedAt(e.detail.fetchedAt)\n }\n })\n\n return () => {\n onPrefetchedListener()\n onPrefetchingListener()\n }\n }, [])\n\n return {\n lastUpdatedAt,\n isPrefetching,\n isPrefetched,\n flush: () => router.flush(window.location.pathname, options),\n }\n}\n", "import { ReloadOptions, router } from '@inertiajs/core'\nimport { createElement, ReactNode, useCallback, useEffect, useRef, useState } from 'react'\n\ninterface WhenVisibleProps {\n children: ReactNode | (() => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data?: string | string[]\n params?: ReloadOptions\n buffer?: number\n as?: string\n always?: boolean\n}\n\nconst WhenVisible = ({ children, data, params, buffer, as, always, fallback }: WhenVisibleProps) => {\n always = always ?? false\n as = as ?? 'div'\n fallback = fallback ?? null\n\n const [loaded, setLoaded] = useState(false)\n const hasFetched = useRef<boolean>(false)\n const fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n\n const getReloadParams = useCallback<() => Partial<ReloadOptions>>(() => {\n if (data) {\n return {\n only: (Array.isArray(data) ? data : [data]) as string[],\n }\n }\n\n if (!params) {\n throw new Error('You must provide either a `data` or `params` prop.')\n }\n\n return params\n }, [params, data])\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (!always && hasFetched.current) {\n observer.disconnect()\n }\n\n if (fetching.current) {\n return\n }\n\n hasFetched.current = true\n fetching.current = true\n\n const reloadParams = getReloadParams()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.current = true\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n setLoaded(true)\n fetching.current = false\n reloadParams.onFinish?.(e)\n\n if (!always) {\n observer.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.observe(ref.current)\n\n return () => {\n observer.disconnect()\n }\n }, [ref, getReloadParams, buffer])\n\n const resolveChildren = () => (typeof children === 'function' ? children() : children)\n const resolveFallback = () => (typeof fallback === 'function' ? fallback() : fallback)\n\n if (always || !loaded) {\n return createElement(\n as,\n {\n props: null,\n ref,\n },\n loaded ? resolveChildren() : resolveFallback(),\n )\n }\n\n return loaded ? resolveChildren() : null\n}\n\nWhenVisible.displayName = 'InertiaWhenVisible'\n\nexport default WhenVisible\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["router", "import_core", "import_core", "import_react", "import_react", "import_react", "current", "children", "module", "import_react", "import_react", "router", "import_core", "import_es_toolkit", "import_react", "import_core", "import_react", "import_core", "import_react", "data", "errors", "defaults", "import_es_toolkit", "import_react", "React", "import_core", "import_react", "noop", "import_core", "import_react", "import_core", "import_react", "import_core", "import_react", "router", "Router"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inertiajs/react",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "The React adapter for Inertia.js",
|
|
6
6
|
"contributors": [
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"es-toolkit": "^1.33.0",
|
|
59
|
-
"@inertiajs/core": "2.1.
|
|
59
|
+
"@inertiajs/core": "2.1.1"
|
|
60
60
|
},
|
|
61
61
|
"scripts": {
|
|
62
62
|
"dev": "./build.js --watch",
|
package/types/Form.d.ts
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { FormComponentSlotProps, FormDataConvertible, Method } from '@inertiajs/core';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
|
-
declare const Form: import("react").ForwardRefExoticComponent<Partial<Pick<import("@inertiajs/core").Visit<import("@inertiajs/core").RequestPayload>, "
|
|
3
|
+
declare const Form: import("react").ForwardRefExoticComponent<Partial<Pick<import("@inertiajs/core").Visit<import("@inertiajs/core").RequestPayload>, "headers" | "errorBag" | "queryStringArrayFormat" | "showProgress"> & Omit<import("@inertiajs/core").VisitCallbacks<import("@inertiajs/core").RequestPayload>, "onPrefetched" | "onPrefetching">> & {
|
|
4
|
+
method?: Method | "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
4
5
|
action?: string | {
|
|
5
6
|
url: string;
|
|
6
7
|
method: Method;
|
|
7
8
|
};
|
|
8
9
|
transform?: (data: Record<string, FormDataConvertible>) => Record<string, FormDataConvertible>;
|
|
9
10
|
options?: import("@inertiajs/core").FormComponentOptions;
|
|
10
|
-
|
|
11
|
+
onSubmitComplete?: (props: import("@inertiajs/core").FormComponentonSubmitCompleteArguments) => void;
|
|
12
|
+
disableWhileProcessing?: boolean;
|
|
13
|
+
} & Omit<import("react").FormHTMLAttributes<HTMLFormElement>, "children" | "method" | "headers" | "errorBag" | "queryStringArrayFormat" | "showProgress" | "onCancelToken" | "onBefore" | "onStart" | "onProgress" | "onFinish" | "onCancel" | "onSuccess" | "onError" | "action" | "transform" | "options" | "onSubmitComplete" | "disableWhileProcessing"> & Omit<import("react").AllHTMLAttributes<HTMLFormElement>, "children" | "method" | "headers" | "errorBag" | "queryStringArrayFormat" | "showProgress" | "onCancelToken" | "onBefore" | "onStart" | "onProgress" | "onFinish" | "onCancel" | "onSuccess" | "onError" | "action" | "transform" | "options" | "onSubmitComplete" | "disableWhileProcessing"> & {
|
|
11
14
|
children: ReactNode | ((props: FormComponentSlotProps) => ReactNode);
|
|
12
15
|
} & import("react").RefAttributes<FormComponentSlotProps>>;
|
|
13
16
|
export default Form;
|
package/types/Link.d.ts
CHANGED
|
@@ -1,32 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LinkComponentBaseProps } from '@inertiajs/core';
|
|
2
2
|
import { ElementType } from 'react';
|
|
3
|
-
interface BaseInertiaLinkProps {
|
|
3
|
+
interface BaseInertiaLinkProps extends LinkComponentBaseProps {
|
|
4
4
|
as?: ElementType;
|
|
5
|
-
data?: Record<string, FormDataConvertible>;
|
|
6
|
-
href: string | {
|
|
7
|
-
url: string;
|
|
8
|
-
method: Method;
|
|
9
|
-
};
|
|
10
|
-
method?: Method;
|
|
11
|
-
headers?: Record<string, string>;
|
|
12
5
|
onClick?: (event: React.MouseEvent<Element>) => void;
|
|
13
|
-
preserveScroll?: PreserveStateOption;
|
|
14
|
-
preserveState?: PreserveStateOption;
|
|
15
|
-
replace?: boolean;
|
|
16
|
-
only?: string[];
|
|
17
|
-
except?: string[];
|
|
18
|
-
onCancelToken?: (cancelToken: import('axios').CancelTokenSource) => void;
|
|
19
|
-
onBefore?: () => void;
|
|
20
|
-
onStart?: (event: PendingVisit) => void;
|
|
21
|
-
onProgress?: (progress: Progress) => void;
|
|
22
|
-
onFinish?: (event: PendingVisit) => void;
|
|
23
|
-
onCancel?: () => void;
|
|
24
|
-
onSuccess?: () => void;
|
|
25
|
-
onError?: () => void;
|
|
26
|
-
queryStringArrayFormat?: 'indices' | 'brackets';
|
|
27
|
-
async?: boolean;
|
|
28
|
-
cacheFor?: CacheForOption | CacheForOption[];
|
|
29
|
-
prefetch?: boolean | LinkPrefetchOption | LinkPrefetchOption[];
|
|
30
6
|
}
|
|
31
7
|
export type InertiaLinkProps = BaseInertiaLinkProps & Omit<React.HTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps> & Omit<React.AllHTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps>;
|
|
32
8
|
declare const Link: import("react").ForwardRefExoticComponent<BaseInertiaLinkProps & Omit<import("react").HTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps> & Omit<import("react").AllHTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps> & import("react").RefAttributes<unknown>>;
|
package/types/useForm.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export type SetDataByObject<TForm> = (data: TForm) => void;
|
|
1
|
+
import { ErrorValue, FormDataErrors, FormDataKeys, FormDataType, FormDataValues, Method, Progress, VisitOptions } from '@inertiajs/core';
|
|
2
|
+
export type SetDataByObject<TForm> = (data: Partial<TForm>) => void;
|
|
3
3
|
export type SetDataByMethod<TForm> = (data: (previousData: TForm) => TForm) => void;
|
|
4
|
-
export type SetDataByKeyValuePair<TForm
|
|
4
|
+
export type SetDataByKeyValuePair<TForm> = <K extends FormDataKeys<TForm>>(key: K, value: FormDataValues<TForm, K>) => void;
|
|
5
5
|
export type SetDataAction<TForm extends Record<any, any>> = SetDataByObject<TForm> & SetDataByMethod<TForm> & SetDataByKeyValuePair<TForm>;
|
|
6
|
-
type FormDataType = Record<string, FormDataConvertible>;
|
|
7
6
|
type FormOptions = Omit<VisitOptions, 'data'>;
|
|
8
|
-
export interface InertiaFormProps<TForm extends
|
|
7
|
+
export interface InertiaFormProps<TForm extends object> {
|
|
9
8
|
data: TForm;
|
|
10
9
|
isDirty: boolean;
|
|
11
|
-
errors:
|
|
10
|
+
errors: FormDataErrors<TForm>;
|
|
12
11
|
hasErrors: boolean;
|
|
13
12
|
processing: boolean;
|
|
14
13
|
progress: Progress | null;
|
|
@@ -17,13 +16,13 @@ export interface InertiaFormProps<TForm extends FormDataType> {
|
|
|
17
16
|
setData: SetDataAction<TForm>;
|
|
18
17
|
transform: (callback: (data: TForm) => object) => void;
|
|
19
18
|
setDefaults(): void;
|
|
20
|
-
setDefaults
|
|
19
|
+
setDefaults<T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void;
|
|
21
20
|
setDefaults(fields: Partial<TForm>): void;
|
|
22
|
-
reset
|
|
23
|
-
clearErrors
|
|
24
|
-
resetAndClearErrors
|
|
25
|
-
setError
|
|
26
|
-
setError(errors:
|
|
21
|
+
reset<K extends FormDataKeys<TForm>>(...fields: K[]): void;
|
|
22
|
+
clearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): void;
|
|
23
|
+
resetAndClearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): void;
|
|
24
|
+
setError<K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void;
|
|
25
|
+
setError(errors: FormDataErrors<TForm>): void;
|
|
27
26
|
submit: (...args: [Method, string, FormOptions?] | [{
|
|
28
27
|
url: string;
|
|
29
28
|
method: Method;
|
|
@@ -35,6 +34,6 @@ export interface InertiaFormProps<TForm extends FormDataType> {
|
|
|
35
34
|
delete: (url: string, options?: FormOptions) => void;
|
|
36
35
|
cancel: () => void;
|
|
37
36
|
}
|
|
38
|
-
export default function useForm<TForm extends FormDataType
|
|
39
|
-
export default function useForm<TForm extends FormDataType
|
|
37
|
+
export default function useForm<TForm extends FormDataType<TForm>>(initialValues?: TForm | (() => TForm)): InertiaFormProps<TForm>;
|
|
38
|
+
export default function useForm<TForm extends FormDataType<TForm>>(rememberKey: string, initialValues?: TForm | (() => TForm)): InertiaFormProps<TForm>;
|
|
40
39
|
export {};
|