@inertiajs/react 2.2.15 → 2.2.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +21 -19
- package/dist/index.esm.js.map +4 -4
- package/dist/index.js +10 -8
- package/dist/index.js.map +4 -4
- package/package.json +6 -6
- package/types/index.d.ts +2 -0
package/dist/index.esm.js
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
2
|
import { config as coreConfig, progress as Progress2, router as Router } from "@inertiajs/core";
|
|
3
3
|
|
|
4
|
-
// src/createInertiaApp.ts
|
|
5
|
-
import {
|
|
6
|
-
router as router2,
|
|
7
|
-
setupProgress
|
|
8
|
-
} from "@inertiajs/core";
|
|
9
|
-
import { createElement as createElement2 } from "react";
|
|
10
|
-
|
|
11
4
|
// src/App.ts
|
|
12
5
|
import {
|
|
13
6
|
createHeadManager,
|
|
@@ -110,6 +103,11 @@ function App({
|
|
|
110
103
|
App.displayName = "Inertia";
|
|
111
104
|
|
|
112
105
|
// src/createInertiaApp.ts
|
|
106
|
+
import {
|
|
107
|
+
router as router2,
|
|
108
|
+
setupProgress
|
|
109
|
+
} from "@inertiajs/core";
|
|
110
|
+
import { createElement as createElement2 } from "react";
|
|
113
111
|
async function createInertiaApp({
|
|
114
112
|
id = "app",
|
|
115
113
|
resolve,
|
|
@@ -174,9 +172,9 @@ async function createInertiaApp({
|
|
|
174
172
|
import { useEffect as useEffect2, useMemo as useMemo2, useState as useState2 } from "react";
|
|
175
173
|
|
|
176
174
|
// src/usePage.ts
|
|
177
|
-
import
|
|
175
|
+
import React from "react";
|
|
178
176
|
function usePage() {
|
|
179
|
-
const page = useContext(PageContext_default);
|
|
177
|
+
const page = typeof React.use === "function" ? React.use(PageContext_default) : React.useContext(PageContext_default);
|
|
180
178
|
if (!page) {
|
|
181
179
|
throw new Error("usePage must be used within the Inertia component");
|
|
182
180
|
}
|
|
@@ -230,7 +228,7 @@ import {
|
|
|
230
228
|
resetFormFields
|
|
231
229
|
} from "@inertiajs/core";
|
|
232
230
|
import { isEqual as isEqual2 } from "lodash-es";
|
|
233
|
-
import
|
|
231
|
+
import React2, {
|
|
234
232
|
createElement as createElement3,
|
|
235
233
|
forwardRef,
|
|
236
234
|
useEffect as useEffect6,
|
|
@@ -527,7 +525,7 @@ function useForm(rememberKeyOrInitialValues, maybeInitialValues) {
|
|
|
527
525
|
|
|
528
526
|
// src/Form.ts
|
|
529
527
|
var deferStateUpdate = (callback) => {
|
|
530
|
-
typeof
|
|
528
|
+
typeof React2.startTransition === "function" ? React2.startTransition(callback) : setTimeout(callback, 0);
|
|
531
529
|
};
|
|
532
530
|
var noop = () => void 0;
|
|
533
531
|
var Form = forwardRef(
|
|
@@ -603,6 +601,7 @@ var Form = forwardRef(
|
|
|
603
601
|
);
|
|
604
602
|
const submitOptions = {
|
|
605
603
|
headers,
|
|
604
|
+
queryStringArrayFormat,
|
|
606
605
|
errorBag,
|
|
607
606
|
showProgress,
|
|
608
607
|
invalidateCacheTags,
|
|
@@ -680,9 +679,9 @@ var Form_default = Form;
|
|
|
680
679
|
|
|
681
680
|
// src/Head.ts
|
|
682
681
|
import { escape } from "lodash-es";
|
|
683
|
-
import
|
|
682
|
+
import React3, { useContext, useEffect as useEffect7, useMemo as useMemo5 } from "react";
|
|
684
683
|
var Head = function({ children, title }) {
|
|
685
|
-
const headManager =
|
|
684
|
+
const headManager = useContext(HeadContext_default);
|
|
686
685
|
const provider = useMemo5(() => headManager.createProvider(), [headManager]);
|
|
687
686
|
const isServer = typeof window === "undefined";
|
|
688
687
|
useEffect7(() => {
|
|
@@ -748,7 +747,7 @@ var Head = function({ children, title }) {
|
|
|
748
747
|
return html;
|
|
749
748
|
}
|
|
750
749
|
function ensureNodeHasInertiaProp(node) {
|
|
751
|
-
return
|
|
750
|
+
return React3.cloneElement(node, {
|
|
752
751
|
[provider.preferredAttribute()]: node.props["head-key"] !== void 0 ? node.props["head-key"] : ""
|
|
753
752
|
});
|
|
754
753
|
}
|
|
@@ -756,7 +755,7 @@ var Head = function({ children, title }) {
|
|
|
756
755
|
return renderTag(ensureNodeHasInertiaProp(node));
|
|
757
756
|
}
|
|
758
757
|
function renderNodes(nodes) {
|
|
759
|
-
const elements =
|
|
758
|
+
const elements = React3.Children.toArray(nodes).filter((node) => node).map((node) => renderNode(node));
|
|
760
759
|
if (title && !elements.find((tag) => tag.startsWith("<title"))) {
|
|
761
760
|
elements.push(`<title ${provider.preferredAttribute()}>${title}</title>`);
|
|
762
761
|
}
|
|
@@ -774,7 +773,7 @@ import {
|
|
|
774
773
|
getScrollableParent,
|
|
775
774
|
useInfiniteScroll
|
|
776
775
|
} from "@inertiajs/core";
|
|
777
|
-
import
|
|
776
|
+
import React4, {
|
|
778
777
|
createElement as createElement4,
|
|
779
778
|
forwardRef as forwardRef2,
|
|
780
779
|
useCallback as useCallback2,
|
|
@@ -1005,7 +1004,7 @@ var InfiniteScroll = forwardRef2(
|
|
|
1005
1004
|
)
|
|
1006
1005
|
);
|
|
1007
1006
|
}
|
|
1008
|
-
return createElement4(
|
|
1007
|
+
return createElement4(React4.Fragment, {}, ...reverse ? [...renderElements].reverse() : renderElements);
|
|
1009
1008
|
}
|
|
1010
1009
|
);
|
|
1011
1010
|
InfiniteScroll.displayName = "InertiaInfiniteScroll";
|
|
@@ -1199,8 +1198,10 @@ var Link = forwardRef3(
|
|
|
1199
1198
|
}
|
|
1200
1199
|
},
|
|
1201
1200
|
onMouseUp: (event) => {
|
|
1202
|
-
event
|
|
1203
|
-
|
|
1201
|
+
if (shouldIntercept(event)) {
|
|
1202
|
+
event.preventDefault();
|
|
1203
|
+
router6.visit(url, visitParams);
|
|
1204
|
+
}
|
|
1204
1205
|
},
|
|
1205
1206
|
onKeyUp: (event) => {
|
|
1206
1207
|
if (shouldNavigate(event)) {
|
|
@@ -1395,6 +1396,7 @@ var progress = Progress2;
|
|
|
1395
1396
|
var router3 = Router;
|
|
1396
1397
|
var config = coreConfig.extend();
|
|
1397
1398
|
export {
|
|
1399
|
+
App,
|
|
1398
1400
|
Deferred_default as Deferred,
|
|
1399
1401
|
Form_default as Form,
|
|
1400
1402
|
Head_default as Head,
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts", "../src/
|
|
4
|
-
"sourcesContent": ["import { config as coreConfig, progress as Progress, router as Router } from '@inertiajs/core'\nimport { ReactInertiaAppConfig } from './types'\n\nexport const progress = Progress\nexport const router = Router\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './Deferred'\nexport { default as Form } from './Form'\nexport { default as Head } from './Head'\nexport { default as InfiniteScroll } from './InfiniteScroll'\nexport { InertiaLinkProps, default as Link } from './Link'\nexport {\n InertiaFormProps,\n SetDataAction,\n SetDataByKeyValuePair,\n SetDataByMethod,\n SetDataByObject,\n default as useForm,\n} from './useForm'\nexport { default as usePage } from './usePage'\nexport { default as usePoll } from './usePoll'\nexport { default as usePrefetch } from './usePrefetch'\nexport { default as useRemember } from './useRemember'\nexport { default as WhenVisible } from './WhenVisible'\n\nexport const config = coreConfig.extend<ReactInertiaAppConfig>()\n", "import {\n CreateInertiaAppOptionsForCSR,\n CreateInertiaAppOptionsForSSR,\n InertiaAppResponse,\n InertiaAppSSRResponse,\n PageProps,\n router,\n setupProgress,\n} from '@inertiajs/core'\nimport { ReactElement, createElement } from 'react'\nimport { renderToString } from 'react-dom/server'\nimport App, { InertiaAppProps, type InertiaApp } from './App'\nimport { config } from './index'\nimport { ReactComponent, ReactInertiaAppConfig } from './types'\n\nexport type SetupOptions<ElementType, SharedProps extends PageProps> = {\n el: ElementType\n App: InertiaApp\n props: InertiaAppProps<SharedProps>\n}\n\n// The 'unknown' type is necessary for backwards compatibility...\ntype ComponentResolver = (\n name: string,\n) => ReactComponent | Promise<ReactComponent> | { default: ReactComponent } | unknown\n\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForCSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<HTMLElement, SharedProps>,\n void,\n ReactInertiaAppConfig\n>\n\ntype InertiaAppOptionsForSSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForSSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<null, SharedProps>,\n ReactElement,\n ReactInertiaAppConfig\n> & {\n render: typeof renderToString\n}\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<void>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<InertiaAppSSRResponse>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>({\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n defaults = {},\n}: InertiaAppOptionsForCSR<SharedProps> | InertiaAppOptionsForSSR<SharedProps>): InertiaAppResponse {\n config.replace(defaults)\n\n const isServer = typeof window === 'undefined'\n const el = isServer ? null : document.getElementById(id)\n const initialPage = page || JSON.parse(el?.dataset.page || '{}')\n\n // @ts-expect-error - This can be improved once we remove the 'unknown' type from the resolver...\n const resolveComponent = (name) => Promise.resolve(resolve(name)).then((module) => module.default || module)\n\n let head: string[] = []\n\n const reactApp = await Promise.all([\n resolveComponent(initialPage.component),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n const props = {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n }\n\n if (isServer) {\n const ssrSetup = setup as (options: SetupOptions<null, SharedProps>) => ReactElement\n\n return ssrSetup({\n el: null,\n App,\n props: { ...props, onHeadUpdate: (elements: string[]) => (head = elements) },\n })\n }\n\n const csrSetup = setup as (options: SetupOptions<HTMLElement, SharedProps>) => void\n\n return csrSetup({\n el: el as HTMLElement,\n App,\n props,\n })\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer && render) {\n const body = await render(\n createElement(\n 'div',\n {\n id,\n 'data-page': JSON.stringify(initialPage),\n },\n reactApp as ReactElement,\n ),\n )\n\n return { head, body }\n }\n}\n", "import {\n createHeadManager,\n HeadManagerOnUpdateCallback,\n HeadManagerTitleCallback,\n Page,\n PageHandler,\n PageProps,\n router,\n} from '@inertiajs/core'\nimport { createElement, FunctionComponent, ReactNode, useEffect, useMemo, useState } from 'react'\nimport HeadContext from './HeadContext'\nimport PageContext from './PageContext'\nimport { LayoutFunction, ReactComponent, ReactPageHandlerArgs } from './types'\n\nlet currentIsInitialPage = true\nlet routerIsInitialized = false\nlet swapComponent: PageHandler<ReactComponent> = async () => {\n // Dummy function so we can init the router outside of the useEffect hook. This is\n // needed so `router.reload()` works right away (on mount) in any of the user's\n // components. We swap in the real function in the useEffect hook below.\n currentIsInitialPage = false\n}\n\ntype CurrentPage = {\n component: ReactComponent | null\n page: Page\n key: number | null\n}\n\nexport interface InertiaAppProps<SharedProps extends PageProps = PageProps> {\n children?: (options: { Component: ReactComponent; props: PageProps; key: number | null }) => ReactNode\n initialPage: Page<SharedProps>\n initialComponent?: ReactComponent\n resolveComponent?: (name: string) => ReactComponent | Promise<ReactComponent>\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdateCallback\n}\n\nexport type InertiaApp = FunctionComponent<InertiaAppProps>\n\nexport default function App<SharedProps extends PageProps = PageProps>({\n children,\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n}: InertiaAppProps<SharedProps>) {\n const [current, setCurrent] = useState<CurrentPage>({\n component: initialComponent || null,\n page: initialPage,\n key: null,\n })\n\n const headManager = useMemo(() => {\n return createHeadManager(\n typeof window === 'undefined',\n titleCallback || ((title) => title),\n onHeadUpdate || (() => {}),\n )\n }, [])\n\n if (!routerIsInitialized) {\n router.init<ReactComponent>({\n initialPage,\n resolveComponent: resolveComponent!,\n swapComponent: async (args) => swapComponent(args),\n })\n\n routerIsInitialized = true\n }\n\n useEffect(() => {\n swapComponent = async ({ component, page, preserveState }: ReactPageHandlerArgs) => {\n if (currentIsInitialPage) {\n // We block setting the current page on the initial page to\n // prevent the initial page from being re-rendered again.\n currentIsInitialPage = false\n return\n }\n\n setCurrent((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\n }))\n }\n\n router.on('navigate', () => headManager.forceUpdate())\n }, [])\n\n if (!current.component) {\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(PageContext.Provider, { value: current.page }, null),\n )\n }\n\n const renderChildren =\n children ||\n (({ Component, props, key }) => {\n const child = createElement(Component, { key, ...props })\n\n if (typeof Component.layout === 'function') {\n return (Component.layout as LayoutFunction)(child)\n }\n\n if (Array.isArray(Component.layout)) {\n return (Component.layout as any)\n .concat(child)\n .reverse()\n .reduce((children: any, Layout: any) => createElement(Layout, { children, ...props }))\n }\n\n return child\n })\n\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(\n PageContext.Provider,\n { value: current.page },\n renderChildren({\n Component: current.component,\n key: current.key,\n props: current.page.props,\n }),\n ),\n )\n}\n\nApp.displayName = 'Inertia'\n", "import { HeadManager } from '@inertiajs/core'\nimport { createContext } from 'react'\n\nconst headContext = createContext<HeadManager | null>(null)\nheadContext.displayName = 'InertiaHeadContext'\n\nexport default headContext\n", "import { Page } from '@inertiajs/core'\nimport { createContext } from 'react'\n\nconst pageContext = createContext<Page | null>(null)\npageContext.displayName = 'InertiaPageContext'\n\nexport default pageContext\n", "import { ReactNode, useEffect, useMemo, useState } from 'react'\nimport { router } from '.'\nimport usePage from './usePage'\n\nconst urlWithoutHash = (url: URL | Location): URL => {\n url = new URL(url.href)\n url.hash = ''\n\n return url\n}\n\nconst isSameUrlWithoutHash = (url1: URL | Location, url2: URL | Location): boolean => {\n return urlWithoutHash(url1).href === urlWithoutHash(url2).href\n}\n\ninterface DeferredProps {\n children: ReactNode | (() => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data: string | string[]\n}\n\nconst Deferred = ({ children, data, fallback }: DeferredProps) => {\n if (!data) {\n throw new Error('`<Deferred>` requires a `data` prop to be a string or array of strings')\n }\n\n const [loaded, setLoaded] = useState(false)\n const pageProps = usePage().props\n const keys = useMemo(() => (Array.isArray(data) ? data : [data]), [data])\n\n useEffect(() => {\n const removeListener = router.on('start', (e) => {\n const isPartialVisit = e.detail.visit.only.length > 0 || e.detail.visit.except.length > 0\n const isReloadingKey = e.detail.visit.only.find((key) => keys.includes(key))\n\n if (isSameUrlWithoutHash(e.detail.visit.url, window.location) && (!isPartialVisit || isReloadingKey)) {\n setLoaded(false)\n }\n })\n\n return () => {\n removeListener()\n }\n }, [])\n\n useEffect(() => {\n setLoaded(keys.every((key) => pageProps[key] !== undefined))\n }, [pageProps, keys])\n\n if (loaded) {\n return typeof children === 'function' ? children() : children\n }\n\n return typeof fallback === 'function' ? fallback() : fallback\n}\n\nDeferred.displayName = 'InertiaDeferred'\n\nexport default Deferred\n", "import { Page, PageProps, SharedPageProps } from '@inertiajs/core'\nimport { useContext } from 'react'\nimport PageContext from './PageContext'\n\nexport default function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps & SharedPageProps> {\n const page = useContext(PageContext)\n\n if (!page) {\n throw new Error('usePage must be used within the Inertia component')\n }\n\n return page as Page<TPageProps & SharedPageProps>\n}\n", "import {\n FormComponentProps,\n FormComponentRef,\n FormComponentSlotProps,\n FormDataConvertible,\n formDataToObject,\n isUrlMethodPair,\n mergeDataIntoQueryString,\n Method,\n resetFormFields,\n VisitOptions,\n} from '@inertiajs/core'\nimport { isEqual } from 'lodash-es'\nimport React, {\n createElement,\n FormEvent,\n forwardRef,\n ReactNode,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport useForm from './useForm'\n\n// Polyfill for startTransition to support React 16.9+\nconst deferStateUpdate = (callback: () => void) => {\n typeof React.startTransition === 'function' ? React.startTransition(callback) : setTimeout(callback, 0)\n}\n\ntype ComponentProps = (FormComponentProps &\n Omit<React.FormHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> &\n Omit<React.AllHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'>) & {\n children: ReactNode | ((props: FormComponentSlotProps) => ReactNode)\n}\n\ntype FormSubmitOptions = Omit<VisitOptions, 'data' | 'onPrefetched' | 'onPrefetching'>\n\nconst noop = () => undefined\n\nconst Form = forwardRef<FormComponentRef, ComponentProps>(\n (\n {\n action = '',\n method = 'get',\n headers = {},\n queryStringArrayFormat = 'brackets',\n errorBag = null,\n showProgress = true,\n transform = (data) => data,\n options = {},\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onBefore = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n onCancelToken = noop,\n onSubmitComplete = noop,\n disableWhileProcessing = false,\n resetOnError = false,\n resetOnSuccess = false,\n setDefaultsOnSuccess = false,\n invalidateCacheTags = [],\n children,\n ...props\n },\n ref,\n ) => {\n const form = useForm<Record<string, any>>({})\n const formElement = useRef<HTMLFormElement>(undefined)\n\n const resolvedMethod = useMemo(() => {\n return isUrlMethodPair(action) ? action.method : (method.toLowerCase() as Method)\n }, [action, method])\n\n const [isDirty, setIsDirty] = useState(false)\n const defaultData = useRef<FormData>(new FormData())\n\n const getFormData = (): FormData => new FormData(formElement.current)\n\n // Convert the FormData to an object because we can't compare two FormData\n // instances directly (which is needed for isDirty), mergeDataIntoQueryString()\n // expects an object, and submitting a FormData instance directly causes problems with nested objects.\n const getData = (): Record<string, FormDataConvertible> => formDataToObject(getFormData())\n\n const updateDirtyState = (event: Event) =>\n deferStateUpdate(() =>\n setIsDirty(event.type === 'reset' ? false : !isEqual(getData(), formDataToObject(defaultData.current))),\n )\n\n useEffect(() => {\n defaultData.current = getFormData()\n\n const formEvents: Array<keyof HTMLElementEventMap> = ['input', 'change', 'reset']\n\n formEvents.forEach((e) => formElement.current!.addEventListener(e, updateDirtyState))\n\n return () => formEvents.forEach((e) => formElement.current?.removeEventListener(e, updateDirtyState))\n }, [])\n\n const reset = (...fields: string[]) => {\n if (formElement.current) {\n resetFormFields(formElement.current, defaultData.current, fields)\n }\n }\n\n const resetAndClearErrors = (...fields: string[]) => {\n form.clearErrors(...fields)\n reset(...fields)\n }\n\n const maybeReset = (resetOption: boolean | string[]) => {\n if (!resetOption) {\n return\n }\n\n if (resetOption === true) {\n reset()\n } else if (resetOption.length > 0) {\n reset(...resetOption)\n }\n }\n\n const submit = () => {\n const [url, _data] = mergeDataIntoQueryString(\n resolvedMethod,\n isUrlMethodPair(action) ? action.url : action,\n getData(),\n queryStringArrayFormat,\n )\n\n const submitOptions: FormSubmitOptions = {\n headers,\n errorBag,\n showProgress,\n invalidateCacheTags,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess: (...args) => {\n onSuccess(...args)\n onSubmitComplete({\n reset,\n defaults,\n })\n maybeReset(resetOnSuccess)\n\n if (setDefaultsOnSuccess === true) {\n defaults()\n }\n },\n onError(...args) {\n onError(...args)\n maybeReset(resetOnError)\n },\n ...options,\n }\n\n form.transform(() => transform(_data))\n form.submit(resolvedMethod, url, submitOptions)\n }\n\n const defaults = () => {\n defaultData.current = getFormData()\n setIsDirty(false)\n }\n\n const exposed = () => ({\n errors: form.errors,\n hasErrors: form.hasErrors,\n processing: form.processing,\n progress: form.progress,\n wasSuccessful: form.wasSuccessful,\n recentlySuccessful: form.recentlySuccessful,\n isDirty,\n clearErrors: form.clearErrors,\n resetAndClearErrors,\n setError: form.setError,\n reset,\n submit,\n defaults,\n getData,\n getFormData,\n })\n\n useImperativeHandle(ref, exposed, [form, isDirty, submit])\n\n return createElement(\n 'form',\n {\n ...props,\n ref: formElement,\n action: isUrlMethodPair(action) ? action.url : action,\n method: resolvedMethod,\n onSubmit: (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n submit()\n },\n // Only React 19 supports passing a boolean to the `inert` attribute.\n // To support earlier versions as well, we use the string 'true'.\n // Unfortunately, React 19 treats an empty string as `false`.\n // See: https://github.com/inertiajs/inertia/pull/2536\n inert: disableWhileProcessing && form.processing && 'true',\n },\n typeof children === 'function' ? children(exposed()) : children,\n )\n },\n)\n\nForm.displayName = 'InertiaForm'\n\nexport default Form\n", "import {\n CancelToken,\n Errors,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n Method,\n Progress,\n RequestPayload,\n router,\n UrlMethodPair,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep, get, has, isEqual, set } from 'lodash-es'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { config } from '.'\nimport { useIsomorphicLayoutEffect } from './react'\nimport useRemember from './useRemember'\n\nexport type SetDataByObject<TForm> = (data: Partial<TForm>) => void\nexport type SetDataByMethod<TForm> = (data: (previousData: TForm) => TForm) => void\nexport type SetDataByKeyValuePair<TForm> = <K extends FormDataKeys<TForm>>(\n key: K,\n value: FormDataValues<TForm, K>,\n) => void\nexport type SetDataAction<TForm extends Record<any, any>> = SetDataByObject<TForm> &\n SetDataByMethod<TForm> &\n SetDataByKeyValuePair<TForm>\n\ntype FormOptions = Omit<VisitOptions, 'data'>\ntype SubmitArgs = [Method, string, FormOptions?] | [UrlMethodPair, FormOptions?]\ntype TransformCallback<TForm> = (data: TForm) => object\n\nexport interface InertiaFormProps<TForm extends object> {\n data: TForm\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n setData: SetDataAction<TForm>\n transform: (callback: TransformCallback<TForm>) => void\n setDefaults(): void\n setDefaults<T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n setDefaults(fields: Partial<TForm>): void\n reset<K extends FormDataKeys<TForm>>(...fields: K[]): void\n clearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): void\n resetAndClearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): void\n setError<K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n setError(errors: FormDataErrors<TForm>): void\n submit: (...args: SubmitArgs) => void\n get: (url: string, options?: FormOptions) => void\n patch: (url: string, options?: FormOptions) => void\n post: (url: string, options?: FormOptions) => void\n put: (url: string, options?: FormOptions) => void\n delete: (url: string, options?: FormOptions) => void\n cancel: () => void\n}\nexport default function useForm<TForm extends FormDataType<TForm>>(\n initialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKey: string,\n initialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKeyOrInitialValues?: string | TForm | (() => TForm),\n maybeInitialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm> {\n const isMounted = useRef(false)\n const rememberKey = typeof rememberKeyOrInitialValues === 'string' ? rememberKeyOrInitialValues : null\n const [defaults, setDefaults] = useState(\n (typeof rememberKeyOrInitialValues === 'string' ? maybeInitialValues : rememberKeyOrInitialValues) || ({} as TForm),\n )\n const cancelToken = useRef<CancelToken | null>(null)\n const recentlySuccessfulTimeoutId = useRef<number>(undefined)\n const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`) : useState(defaults)\n const [errors, setErrors] = rememberKey\n ? useRemember({} as FormDataErrors<TForm>, `${rememberKey}:errors`)\n : useState({} as FormDataErrors<TForm>)\n const [hasErrors, setHasErrors] = useState(false)\n const [processing, setProcessing] = useState(false)\n const [progress, setProgress] = useState<Progress | null>(null)\n const [wasSuccessful, setWasSuccessful] = useState(false)\n const [recentlySuccessful, setRecentlySuccessful] = useState(false)\n const transform = useRef<TransformCallback<TForm>>((data) => data)\n const isDirty = useMemo(() => !isEqual(data, defaults), [data, defaults])\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n // Track if setDefaults was called manually during onSuccess to avoid\n // overriding user's custom defaults with automatic behavior.\n const setDefaultsCalledInOnSuccess = useRef(false)\n\n const submit = useCallback(\n (...args: SubmitArgs) => {\n const objectPassed = args[0] !== null && typeof args[0] === 'object'\n\n const method = objectPassed ? args[0].method : (args[0] as Method)\n const url = objectPassed ? args[0].url : (args[1] as string)\n const options = (objectPassed ? args[1] : args[2]) ?? {}\n\n setDefaultsCalledInOnSuccess.current = false\n\n const _options: VisitOptions = {\n ...options,\n onCancelToken: (token) => {\n cancelToken.current = token\n\n if (options.onCancelToken) {\n return options.onCancelToken(token)\n }\n },\n onBefore: (visit) => {\n setWasSuccessful(false)\n setRecentlySuccessful(false)\n clearTimeout(recentlySuccessfulTimeoutId.current)\n\n if (options.onBefore) {\n return options.onBefore(visit)\n }\n },\n onStart: (visit) => {\n setProcessing(true)\n\n if (options.onStart) {\n return options.onStart(visit)\n }\n },\n onProgress: (event) => {\n setProgress(event || null)\n\n if (options.onProgress) {\n return options.onProgress(event)\n }\n },\n onSuccess: async (page) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors({} as FormDataErrors<TForm>)\n setHasErrors(false)\n setWasSuccessful(true)\n setRecentlySuccessful(true)\n recentlySuccessfulTimeoutId.current = setTimeout(() => {\n if (isMounted.current) {\n setRecentlySuccessful(false)\n }\n }, config.get('form.recentlySuccessfulDuration'))\n }\n\n const onSuccess = options.onSuccess ? await options.onSuccess(page) : null\n\n if (isMounted.current && !setDefaultsCalledInOnSuccess.current) {\n setData((data) => {\n setDefaults(cloneDeep(data))\n return data\n })\n }\n\n return onSuccess\n },\n onError: (errors) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors(errors as FormDataErrors<TForm>)\n setHasErrors(true)\n }\n\n if (options.onError) {\n return options.onError(errors)\n }\n },\n onCancel: () => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n if (options.onCancel) {\n return options.onCancel()\n }\n },\n onFinish: (visit) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n cancelToken.current = null\n\n if (options.onFinish) {\n return options.onFinish(visit)\n }\n },\n }\n\n const transformedData = transform.current(data) as RequestPayload\n\n if (method === 'delete') {\n router.delete(url, { ..._options, data: transformedData })\n } else {\n router[method](url, transformedData, _options)\n }\n },\n [data, setErrors, transform],\n )\n\n const setDataFunction = useCallback(\n (keyOrData: FormDataKeys<TForm> | Function | Partial<TForm>, maybeValue?: any) => {\n if (typeof keyOrData === 'string') {\n setData((data) => set(cloneDeep(data), keyOrData, maybeValue))\n } else if (typeof keyOrData === 'function') {\n setData((data) => keyOrData(data))\n } else {\n setData(keyOrData as TForm)\n }\n },\n [setData],\n )\n\n const [dataAsDefaults, setDataAsDefaults] = useState(false)\n\n const dataRef = useRef(data)\n\n useEffect(() => {\n dataRef.current = data\n })\n\n const setDefaultsFunction = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) => {\n setDefaultsCalledInOnSuccess.current = true\n\n if (typeof fieldOrFields === 'undefined') {\n setDefaults(dataRef.current)\n // If setData was called right before setDefaults, data was not\n // updated in that render yet, so we set a flag to update\n // defaults right after the next render.\n setDataAsDefaults(true)\n } else {\n setDefaults((defaults) => {\n return typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign(cloneDeep(defaults), fieldOrFields)\n })\n }\n },\n [setDefaults],\n )\n\n useIsomorphicLayoutEffect(() => {\n if (!dataAsDefaults) {\n return\n }\n\n if (isDirty) {\n // Data has been updated in this next render and is different from\n // the defaults, so now we can set defaults to the current data.\n setDefaults(data)\n }\n\n setDataAsDefaults(false)\n }, [dataAsDefaults])\n\n const reset = useCallback(\n (...fields: string[]) => {\n if (fields.length === 0) {\n setData(defaults)\n } else {\n setData((data) =>\n (fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(defaults, key))\n .reduce(\n (carry, key) => {\n return set(carry, key, get(defaults, key))\n },\n { ...data } as TForm,\n ),\n )\n }\n },\n [setData, defaults],\n )\n\n const setError = useCallback(\n (fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: string) => {\n setErrors((errors) => {\n const newErrors = {\n ...errors,\n ...(typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields),\n }\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\n )\n\n const clearErrors = useCallback(\n (...fields: string[]) => {\n setErrors((errors) => {\n const newErrors = Object.keys(errors).reduce(\n (carry, field) => ({\n ...carry,\n ...(fields.length > 0 && !fields.includes(field) ? { [field]: (errors as Errors)[field] } : {}),\n }),\n {},\n )\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors as FormDataErrors<TForm>\n })\n },\n [setErrors, setHasErrors],\n )\n\n const resetAndClearErrors = useCallback(\n (...fields: string[]) => {\n reset(...fields)\n clearErrors(...fields)\n },\n [reset, clearErrors],\n )\n\n const createSubmitMethod =\n (method: Method) =>\n (url: string, options: VisitOptions = {}) => {\n submit(method, url, options)\n }\n const getMethod = useCallback(createSubmitMethod('get'), [submit])\n const post = useCallback(createSubmitMethod('post'), [submit])\n const put = useCallback(createSubmitMethod('put'), [submit])\n const patch = useCallback(createSubmitMethod('patch'), [submit])\n const deleteMethod = useCallback(createSubmitMethod('delete'), [submit])\n\n const cancel = useCallback(() => {\n if (cancelToken.current) {\n cancelToken.current.cancel()\n }\n }, [])\n\n const transformFunction = useCallback((callback: TransformCallback<TForm>) => {\n transform.current = callback\n }, [])\n\n return {\n data,\n setData: setDataFunction,\n isDirty,\n errors,\n hasErrors,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n transform: transformFunction,\n setDefaults: setDefaultsFunction,\n reset,\n setError,\n clearErrors,\n resetAndClearErrors,\n submit,\n get: getMethod,\n post,\n put,\n patch,\n delete: deleteMethod,\n cancel,\n }\n}\n", "import { DependencyList, EffectCallback, useEffect, useLayoutEffect } from 'react'\n\n// Inspired by react-redux, this hook uses useLayoutEffect in the browser, and useEffect\n// when using SSR. Currently, useLayoutEffect doesn't work when rendered on the server.\nexport function useIsomorphicLayoutEffect(effect: EffectCallback, deps?: DependencyList): void {\n typeof window === 'undefined' ? useEffect(effect, deps) : useLayoutEffect(effect, deps)\n}\n", "import { router } from '@inertiajs/core'\nimport { Dispatch, SetStateAction, useEffect, useState } from 'react'\n\nexport default function useRemember<State>(\n initialState: State,\n key?: string,\n): [State, Dispatch<SetStateAction<State>>] {\n const [state, setState] = useState(() => {\n const restored = router.restore(key) as State\n\n return restored !== undefined ? restored : initialState\n })\n\n useEffect(() => {\n router.remember(state, key)\n }, [state, key])\n\n return [state, setState]\n}\n", "import { escape } from 'lodash-es'\nimport React, { FunctionComponent, ReactElement, ReactNode, useContext, useEffect, useMemo } from 'react'\nimport HeadContext from './HeadContext'\n\ntype InertiaHeadProps = {\n title?: string\n children?: ReactNode\n}\n\ntype InertiaHead = FunctionComponent<InertiaHeadProps>\n\nconst Head: InertiaHead = function ({ children, title }) {\n const headManager = useContext(HeadContext)\n const provider = useMemo(() => headManager!.createProvider(), [headManager])\n const isServer = typeof window === 'undefined'\n\n useEffect(() => {\n provider.reconnect()\n provider.update(renderNodes(children))\n return () => {\n provider.disconnect()\n }\n }, [provider, children, title])\n\n function isUnaryTag(node: ReactElement<any>) {\n return (\n typeof node.type === 'string' &&\n [\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n ].indexOf(node.type) > -1\n )\n }\n\n function renderTagStart(node: ReactElement<any>): string {\n const attrs = Object.keys(node.props).reduce((carry, name) => {\n if (['head-key', 'children', 'dangerouslySetInnerHTML'].includes(name)) {\n return carry\n }\n\n const value = String(node.props[name])\n\n if (value === '') {\n return carry + ` ${name}`\n }\n\n return carry + ` ${name}=\"${escape(value)}\"`\n }, '')\n\n return `<${String(node.type)}${attrs}>`\n }\n\n function renderTagChildren(node: ReactElement<any>): string {\n const { children } = node.props\n\n if (typeof children === 'string') {\n return children\n }\n\n if (Array.isArray(children)) {\n return children.reduce((html, child) => html + renderTag(child), '')\n }\n\n return ''\n }\n\n function renderTag(node: ReactElement<any>): string {\n let html = renderTagStart(node)\n\n if (node.props.children) {\n html += renderTagChildren(node)\n }\n\n if (node.props.dangerouslySetInnerHTML) {\n html += node.props.dangerouslySetInnerHTML.__html\n }\n\n if (!isUnaryTag(node)) {\n html += `</${String(node.type)}>`\n }\n\n return html\n }\n\n function ensureNodeHasInertiaProp(node: ReactElement<any>) {\n return React.cloneElement(node, {\n [provider.preferredAttribute()]: node.props['head-key'] !== undefined ? node.props['head-key'] : '',\n })\n }\n\n function renderNode(node: ReactElement<any>) {\n return renderTag(ensureNodeHasInertiaProp(node))\n }\n\n function renderNodes(nodes: ReactNode) {\n const elements = React.Children.toArray(nodes)\n .filter((node) => node)\n .map((node) => renderNode(node as ReactElement<any>))\n\n if (title && !elements.find((tag) => tag.startsWith('<title'))) {\n elements.push(`<title ${provider.preferredAttribute()}>${title}</title>`)\n }\n\n return elements\n }\n\n if (isServer) {\n provider.update(renderNodes(children))\n }\n\n return null\n}\nexport default Head\n", "import {\n getScrollableParent,\n InfiniteScrollActionSlotProps,\n InfiniteScrollComponentBaseProps,\n InfiniteScrollRef,\n InfiniteScrollSlotProps,\n useInfiniteScroll,\n UseInfiniteScrollProps,\n} from '@inertiajs/core'\nimport React, {\n createElement,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nconst resolveHTMLElement = (\n value: string | React.RefObject<HTMLElement | null> | null,\n fallback: HTMLElement | null,\n): HTMLElement | null => {\n if (!value) {\n return fallback\n }\n\n // React ref object { current: HTMLElement | null }\n if (value && typeof value === 'object' && 'current' in value) {\n return value.current\n }\n\n // CSS Selector string\n if (typeof value === 'string') {\n return document.querySelector(value) as HTMLElement | null\n }\n\n return fallback\n}\n\n// Helper function to render slot content\nconst renderSlot = (\n slotContent: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode) | undefined,\n slotProps: InfiniteScrollActionSlotProps,\n fallback: React.ReactNode = null,\n): React.ReactNode => {\n if (!slotContent) {\n return fallback\n }\n\n return typeof slotContent === 'function' ? slotContent(slotProps) : slotContent\n}\n\ninterface ComponentProps\n extends InfiniteScrollComponentBaseProps,\n Omit<React.HTMLAttributes<HTMLElement>, keyof InfiniteScrollComponentBaseProps | 'children'> {\n children?: React.ReactNode | ((props: InfiniteScrollSlotProps) => React.ReactNode)\n\n // Element references for custom trigger detection (when you want different trigger elements)\n startElement?: string | React.RefObject<HTMLElement | null>\n endElement?: string | React.RefObject<HTMLElement | null>\n itemsElement?: string | React.RefObject<HTMLElement | null>\n\n // Render slots for UI components (when you want custom loading/action components)\n previous?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n next?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n loading?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n\n onlyNext?: boolean\n onlyPrevious?: boolean\n}\n\nconst InfiniteScroll = forwardRef<InfiniteScrollRef, ComponentProps>(\n (\n {\n data,\n buffer = 0,\n as = 'div',\n manual = false,\n manualAfter = 0,\n preserveUrl = false,\n reverse = false,\n autoScroll,\n children,\n startElement,\n endElement,\n itemsElement,\n previous,\n next,\n loading,\n onlyNext = false,\n onlyPrevious = false,\n ...props\n },\n ref,\n ) => {\n const [startElementFromRef, setStartElementFromRef] = useState<HTMLElement | null>(null)\n const startElementRef = useCallback((node: HTMLElement | null) => setStartElementFromRef(node), [])\n\n const [endElementFromRef, setEndElementFromRef] = useState<HTMLElement | null>(null)\n const endElementRef = useCallback((node: HTMLElement | null) => setEndElementFromRef(node), [])\n\n const [itemsElementFromRef, setItemsElementFromRef] = useState<HTMLElement | null>(null)\n const itemsElementRef = useCallback((node: HTMLElement | null) => setItemsElementFromRef(node), [])\n\n const [loadingPrevious, setLoadingPrevious] = useState(false)\n const [loadingNext, setLoadingNext] = useState(false)\n const [requestCount, setRequestCount] = useState(0)\n\n const [resolvedStartElement, setResolvedStartElement] = useState<HTMLElement | null>(null)\n const [resolvedEndElement, setResolvedEndElement] = useState<HTMLElement | null>(null)\n const [resolvedItemsElement, setResolvedItemsElement] = useState<HTMLElement | null>(null)\n\n // Update elements when refs or props change\n useEffect(() => {\n const element = startElement ? resolveHTMLElement(startElement, startElementFromRef) : startElementFromRef\n setResolvedStartElement(element)\n }, [startElement, startElementFromRef])\n\n useEffect(() => {\n const element = endElement ? resolveHTMLElement(endElement, endElementFromRef) : endElementFromRef\n setResolvedEndElement(element)\n }, [endElement, endElementFromRef])\n\n useEffect(() => {\n const element = itemsElement ? resolveHTMLElement(itemsElement, itemsElementFromRef) : itemsElementFromRef\n setResolvedItemsElement(element)\n }, [itemsElement, itemsElementFromRef])\n\n const scrollableParent = useMemo(() => getScrollableParent(resolvedItemsElement), [resolvedItemsElement])\n\n const callbackPropsRef = useRef({\n buffer,\n onlyNext,\n onlyPrevious,\n reverse,\n preserveUrl,\n })\n\n callbackPropsRef.current = {\n buffer,\n onlyNext,\n onlyPrevious,\n reverse,\n preserveUrl,\n }\n\n const [infiniteScroll, setInfiniteScroll] = useState<UseInfiniteScrollProps | null>(null)\n\n const dataManager = useMemo(() => infiniteScroll?.dataManager, [infiniteScroll])\n const elementManager = useMemo(() => infiniteScroll?.elementManager, [infiniteScroll])\n\n const scrollToBottom = useCallback(() => {\n if (scrollableParent) {\n scrollableParent.scrollTo({\n top: scrollableParent.scrollHeight,\n behavior: 'instant',\n })\n } else {\n window.scrollTo({\n top: document.body.scrollHeight,\n behavior: 'instant',\n })\n }\n }, [scrollableParent])\n\n // Main setup effect - only recreate when structural dependencies change\n useEffect(() => {\n if (!resolvedItemsElement) {\n return\n }\n\n const infiniteScrollInstance = useInfiniteScroll({\n // Data\n getPropName: () => data,\n inReverseMode: () => callbackPropsRef.current.reverse,\n shouldFetchNext: () => !callbackPropsRef.current.onlyPrevious,\n shouldFetchPrevious: () => !callbackPropsRef.current.onlyNext,\n shouldPreserveUrl: () => callbackPropsRef.current.preserveUrl,\n\n // Elements\n getTriggerMargin: () => callbackPropsRef.current.buffer,\n getStartElement: () => resolvedStartElement!,\n getEndElement: () => resolvedEndElement!,\n getItemsElement: () => resolvedItemsElement,\n getScrollableParent: () => scrollableParent,\n\n // Callbacks\n onBeforePreviousRequest: () => setLoadingPrevious(true),\n onBeforeNextRequest: () => setLoadingNext(true),\n onCompletePreviousRequest: () => {\n setLoadingPrevious(false)\n setRequestCount(infiniteScrollInstance.dataManager.getRequestCount())\n },\n onCompleteNextRequest: () => {\n setLoadingNext(false)\n setRequestCount(infiniteScrollInstance.dataManager.getRequestCount())\n },\n })\n\n setInfiniteScroll(infiniteScrollInstance)\n const { dataManager, elementManager } = infiniteScrollInstance\n\n setRequestCount(dataManager.getRequestCount())\n\n elementManager.setupObservers()\n elementManager.processServerLoadedElements(dataManager.getLastLoadedPage())\n\n if (autoLoad) {\n elementManager.enableTriggers()\n }\n\n return () => {\n infiniteScrollInstance.flush()\n setInfiniteScroll(null)\n }\n }, [data, resolvedItemsElement, resolvedStartElement, resolvedEndElement, scrollableParent])\n\n const manualMode = useMemo(\n () => manual || (manualAfter > 0 && requestCount >= manualAfter),\n [manual, manualAfter, requestCount],\n )\n const autoLoad = useMemo(() => !manualMode, [manualMode])\n\n useEffect(() => {\n autoLoad ? elementManager?.enableTriggers() : elementManager?.disableTriggers()\n }, [autoLoad, onlyNext, onlyPrevious, resolvedStartElement, resolvedEndElement])\n\n useEffect(() => {\n // autoScroll defaults to reverse value if not explicitly set\n const shouldAutoScroll = autoScroll !== undefined ? autoScroll : reverse\n\n if (shouldAutoScroll) {\n scrollToBottom()\n }\n }, [scrollableParent])\n\n useImperativeHandle(\n ref,\n () => ({\n fetchNext: dataManager?.fetchNext || (() => {}),\n fetchPrevious: dataManager?.fetchPrevious || (() => {}),\n hasPrevious: dataManager?.hasPrevious || (() => false),\n hasNext: dataManager?.hasNext || (() => false),\n }),\n [dataManager],\n )\n\n const headerAutoMode = autoLoad && !onlyNext\n const footerAutoMode = autoLoad && !onlyPrevious\n\n const sharedExposed: Pick<\n InfiniteScrollActionSlotProps,\n 'loadingPrevious' | 'loadingNext' | 'hasPrevious' | 'hasNext'\n > = {\n loadingPrevious,\n loadingNext,\n hasPrevious: dataManager?.hasPrevious() ?? false,\n hasNext: dataManager?.hasNext() ?? false,\n }\n\n const exposedPrevious: InfiniteScrollActionSlotProps = {\n loading: loadingPrevious,\n fetch: dataManager?.fetchPrevious ?? (() => {}),\n autoMode: headerAutoMode,\n manualMode: !headerAutoMode,\n hasMore: dataManager?.hasPrevious() ?? false,\n ...sharedExposed,\n }\n\n const exposedNext: InfiniteScrollActionSlotProps = {\n loading: loadingNext,\n fetch: dataManager?.fetchNext ?? (() => {}),\n autoMode: footerAutoMode,\n manualMode: !footerAutoMode,\n hasMore: dataManager?.hasNext() ?? false,\n ...sharedExposed,\n }\n\n const exposedSlot: InfiniteScrollSlotProps = {\n loading: loadingPrevious || loadingNext,\n loadingPrevious,\n loadingNext,\n }\n\n const renderElements = []\n\n // Only render previous trigger if not using custom element selector/ref\n if (!startElement) {\n renderElements.push(\n createElement(\n 'div',\n { ref: startElementRef },\n // Render previous slot or fallback to loading indicator\n renderSlot(previous, exposedPrevious, loadingPrevious ? renderSlot(loading, exposedPrevious) : null),\n ),\n )\n }\n\n renderElements.push(\n createElement(\n as,\n { ...props, ref: itemsElementRef },\n typeof children === 'function' ? children(exposedSlot) : children,\n ),\n )\n\n // Only render next trigger if not using custom element selector/ref\n if (!endElement) {\n renderElements.push(\n createElement(\n 'div',\n { ref: endElementRef },\n // Render next slot or fallback to loading indicator\n renderSlot(next, exposedNext, loadingNext ? renderSlot(loading, exposedNext) : null),\n ),\n )\n }\n\n return createElement(React.Fragment, {}, ...(reverse ? [...renderElements].reverse() : renderElements))\n },\n)\n\nInfiniteScroll.displayName = 'InertiaInfiniteScroll'\n\nexport default InfiniteScroll\n", "import {\n ActiveVisit,\n isUrlMethodPair,\n LinkComponentBaseProps,\n LinkPrefetchOption,\n mergeDataIntoQueryString,\n Method,\n PendingVisit,\n router,\n shouldIntercept,\n shouldNavigate,\n VisitOptions,\n} from '@inertiajs/core'\nimport { createElement, ElementType, forwardRef, useEffect, useMemo, useRef, useState } from 'react'\nimport { config } from '.'\n\nconst noop = () => undefined\n\ninterface BaseInertiaLinkProps extends LinkComponentBaseProps {\n as?: ElementType\n onClick?: (event: React.MouseEvent) => void\n}\n\nexport type InertiaLinkProps = BaseInertiaLinkProps &\n Omit<React.HTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps> &\n Omit<React.AllHTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps>\n\nconst Link = forwardRef<unknown, InertiaLinkProps>(\n (\n {\n children,\n as = 'a',\n data = {},\n href = '',\n method = 'get',\n preserveScroll = false,\n preserveState = null,\n preserveUrl = false,\n replace = false,\n only = [],\n except = [],\n headers = {},\n queryStringArrayFormat = 'brackets',\n async = false,\n onClick = noop,\n onCancelToken = noop,\n onBefore = noop,\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n onPrefetching = noop,\n onPrefetched = noop,\n prefetch = false,\n cacheFor = 0,\n cacheTags = [],\n viewTransition = false,\n ...props\n },\n ref,\n ) => {\n const [inFlightCount, setInFlightCount] = useState(0)\n const hoverTimeout = useRef<number>(undefined)\n\n const _method = useMemo(() => {\n return isUrlMethodPair(href) ? href.method : (method.toLowerCase() as Method)\n }, [href, method])\n\n const _as = useMemo(() => {\n if (typeof as !== 'string' || as.toLowerCase() !== 'a') {\n // Custom component or element\n return as\n }\n\n return _method !== 'get' ? 'button' : as.toLowerCase()\n }, [as, _method])\n\n const mergeDataArray = useMemo(\n () => mergeDataIntoQueryString(_method, isUrlMethodPair(href) ? href.url : href, data, queryStringArrayFormat),\n [href, _method, data, queryStringArrayFormat],\n )\n\n const url = useMemo(() => mergeDataArray[0], [mergeDataArray])\n const _data = useMemo(() => mergeDataArray[1], [mergeDataArray])\n\n const baseParams = useMemo<VisitOptions>(\n () => ({\n data: _data,\n method: _method,\n preserveScroll,\n preserveState: preserveState ?? _method !== 'get',\n preserveUrl,\n replace,\n only,\n except,\n headers,\n async,\n }),\n [_data, _method, preserveScroll, preserveState, preserveUrl, replace, only, except, headers, async],\n )\n\n const visitParams = useMemo<VisitOptions>(\n () => ({\n ...baseParams,\n viewTransition,\n onCancelToken,\n onBefore,\n onStart(visit: PendingVisit) {\n setInFlightCount((count) => count + 1)\n onStart(visit)\n },\n onProgress,\n onFinish(visit: ActiveVisit) {\n setInFlightCount((count) => count - 1)\n onFinish(visit)\n },\n onCancel,\n onSuccess,\n onError,\n }),\n [\n baseParams,\n viewTransition,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess,\n onError,\n ],\n )\n\n const prefetchModes: LinkPrefetchOption[] = useMemo(\n () => {\n if (prefetch === true) {\n return ['hover']\n }\n\n if (prefetch === false) {\n return []\n }\n\n if (Array.isArray(prefetch)) {\n return prefetch\n }\n\n return [prefetch]\n },\n Array.isArray(prefetch) ? prefetch : [prefetch],\n )\n\n const cacheForValue = useMemo(() => {\n if (cacheFor !== 0) {\n // If they've provided a value, respect it\n return cacheFor\n }\n\n if (prefetchModes.length === 1 && prefetchModes[0] === 'click') {\n // If they've only provided a prefetch mode of 'click',\n // we should only prefetch for the next request but not keep it around\n return 0\n }\n\n // Otherwise, default to 30 seconds\n return config.get('prefetch.cacheFor')\n }, [cacheFor, prefetchModes])\n\n const doPrefetch = useMemo(() => {\n return () => {\n router.prefetch(\n url,\n {\n ...baseParams,\n onPrefetching,\n onPrefetched,\n },\n { cacheFor: cacheForValue, cacheTags },\n )\n }\n }, [url, baseParams, onPrefetching, onPrefetched, cacheForValue, cacheTags])\n\n useEffect(() => {\n return () => {\n clearTimeout(hoverTimeout.current)\n }\n }, [])\n\n useEffect(() => {\n if (prefetchModes.includes('mount')) {\n setTimeout(() => doPrefetch())\n }\n }, prefetchModes)\n\n const regularEvents = {\n onClick: (event: React.MouseEvent) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n event.preventDefault()\n\n router.visit(url, visitParams)\n }\n },\n }\n\n const prefetchHoverEvents = {\n onMouseEnter: () => {\n hoverTimeout.current = window.setTimeout(() => {\n doPrefetch()\n }, config.get('prefetch.hoverDelay'))\n },\n onMouseLeave: () => {\n clearTimeout(hoverTimeout.current)\n },\n onClick: regularEvents.onClick,\n }\n\n const prefetchClickEvents = {\n onMouseDown: (event: React.MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onKeyDown: (event: React.KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onMouseUp: (event: React.MouseEvent) => {\n event.preventDefault()\n router.visit(url, visitParams)\n },\n onKeyUp: (event: React.KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n router.visit(url, visitParams)\n }\n },\n onClick: (event: React.MouseEvent) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n // Let the mouseup/keyup event handle the visit\n event.preventDefault()\n }\n },\n }\n\n const elProps = useMemo(() => {\n if (_as === 'button') {\n return { type: 'button' }\n }\n\n if (_as === 'a' || typeof _as !== 'string') {\n return { href: url }\n }\n\n return {}\n }, [_as, url])\n\n return createElement(\n _as,\n {\n ...props,\n ...elProps,\n ref,\n ...(() => {\n if (prefetchModes.includes('hover')) {\n return prefetchHoverEvents\n }\n\n if (prefetchModes.includes('click')) {\n return prefetchClickEvents\n }\n\n return regularEvents\n })(),\n 'data-loading': inFlightCount > 0 ? '' : undefined,\n },\n children,\n )\n },\n)\nLink.displayName = 'InertiaLink'\n\nexport default Link\n", "import { PollOptions, ReloadOptions, router } from '@inertiajs/core'\nimport { useEffect, useRef } from 'react'\n\nexport default function usePoll(\n interval: number,\n requestOptions: ReloadOptions = {},\n options: PollOptions = {\n keepAlive: false,\n autoStart: true,\n },\n) {\n const pollRef = useRef(\n router.poll(interval, requestOptions, {\n ...options,\n autoStart: false,\n }),\n )\n\n useEffect(() => {\n if (options.autoStart ?? true) {\n pollRef.current.start()\n }\n\n return () => pollRef.current.stop()\n }, [])\n\n return {\n stop: pollRef.current.stop,\n start: pollRef.current.start,\n }\n}\n", "import { router, VisitOptions } from '@inertiajs/core'\nimport { useEffect, useState } from 'react'\n\nexport default function usePrefetch(options: VisitOptions = {}): {\n lastUpdatedAt: number | null\n isPrefetching: boolean\n isPrefetched: boolean\n flush: () => void\n} {\n const cached = typeof window === 'undefined' ? null : router.getCached(window.location.pathname, options)\n const inFlight = typeof window === 'undefined' ? null : router.getPrefetching(window.location.pathname, options)\n\n const [lastUpdatedAt, setLastUpdatedAt] = useState<number | null>(cached?.staleTimestamp || null)\n const [isPrefetching, setIsPrefetching] = useState(inFlight !== null)\n const [isPrefetched, setIsPrefetched] = useState(cached !== null)\n\n useEffect(() => {\n const onPrefetchingListener = router.on('prefetching', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(true)\n }\n })\n\n const onPrefetchedListener = router.on('prefetched', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(false)\n setIsPrefetched(true)\n setLastUpdatedAt(e.detail.fetchedAt)\n }\n })\n\n return () => {\n onPrefetchedListener()\n onPrefetchingListener()\n }\n }, [])\n\n return {\n lastUpdatedAt,\n isPrefetching,\n isPrefetched,\n flush: () => router.flush(window.location.pathname, options),\n }\n}\n", "import { ReloadOptions, router } from '@inertiajs/core'\nimport { createElement, ReactNode, useCallback, useEffect, useRef, useState } from 'react'\n\ninterface WhenVisibleProps {\n children: ReactNode | (() => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data?: string | string[]\n params?: ReloadOptions\n buffer?: number\n as?: string\n always?: boolean\n}\n\nconst WhenVisible = ({ children, data, params, buffer, as, always, fallback }: WhenVisibleProps) => {\n always = always ?? false\n as = as ?? 'div'\n fallback = fallback ?? null\n\n const [loaded, setLoaded] = useState(false)\n const hasFetched = useRef<boolean>(false)\n const fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n\n const getReloadParams = useCallback<() => Partial<ReloadOptions>>(() => {\n if (data) {\n return {\n only: (Array.isArray(data) ? data : [data]) as string[],\n }\n }\n\n if (!params) {\n throw new Error('You must provide either a `data` or `params` prop.')\n }\n\n return params\n }, [params, data])\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (!always && hasFetched.current) {\n observer.disconnect()\n }\n\n if (fetching.current) {\n return\n }\n\n hasFetched.current = true\n fetching.current = true\n\n const reloadParams = getReloadParams()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.current = true\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n setLoaded(true)\n fetching.current = false\n reloadParams.onFinish?.(e)\n\n if (!always) {\n observer.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.observe(ref.current)\n\n return () => {\n observer.disconnect()\n }\n }, [ref, getReloadParams, buffer])\n\n const resolveChildren = () => (typeof children === 'function' ? children() : children)\n const resolveFallback = () => (typeof fallback === 'function' ? fallback() : fallback)\n\n if (always || !loaded) {\n return createElement(\n as,\n {\n props: null,\n ref,\n },\n loaded ? resolveChildren() : resolveFallback(),\n )\n }\n\n return loaded ? resolveChildren() : null\n}\n\nWhenVisible.displayName = 'InertiaWhenVisible'\n\nexport default WhenVisible\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Progress", "
|
|
3
|
+
"sources": ["../src/index.ts", "../src/App.ts", "../src/HeadContext.ts", "../src/PageContext.ts", "../src/createInertiaApp.ts", "../src/Deferred.ts", "../src/usePage.ts", "../src/Form.ts", "../src/useForm.ts", "../src/react.ts", "../src/useRemember.ts", "../src/Head.ts", "../src/InfiniteScroll.ts", "../src/Link.ts", "../src/usePoll.ts", "../src/usePrefetch.ts", "../src/WhenVisible.ts"],
|
|
4
|
+
"sourcesContent": ["import { config as coreConfig, progress as Progress, router as Router } from '@inertiajs/core'\nimport { ReactInertiaAppConfig } from './types'\n\nexport const progress = Progress\nexport const router = Router\nexport { default as App } from './App'\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './Deferred'\nexport { default as Form } from './Form'\nexport { default as Head } from './Head'\nexport { default as InfiniteScroll } from './InfiniteScroll'\nexport { InertiaLinkProps, default as Link } from './Link'\nexport { ReactComponent as ResolvedComponent } from './types'\nexport {\n InertiaFormProps,\n SetDataAction,\n SetDataByKeyValuePair,\n SetDataByMethod,\n SetDataByObject,\n default as useForm,\n} from './useForm'\nexport { default as usePage } from './usePage'\nexport { default as usePoll } from './usePoll'\nexport { default as usePrefetch } from './usePrefetch'\nexport { default as useRemember } from './useRemember'\nexport { default as WhenVisible } from './WhenVisible'\n\nexport const config = coreConfig.extend<ReactInertiaAppConfig>()\n", "import {\n createHeadManager,\n HeadManagerOnUpdateCallback,\n HeadManagerTitleCallback,\n Page,\n PageHandler,\n PageProps,\n router,\n} from '@inertiajs/core'\nimport { createElement, FunctionComponent, ReactNode, useEffect, useMemo, useState } from 'react'\nimport HeadContext from './HeadContext'\nimport PageContext from './PageContext'\nimport { LayoutFunction, ReactComponent, ReactPageHandlerArgs } from './types'\n\nlet currentIsInitialPage = true\nlet routerIsInitialized = false\nlet swapComponent: PageHandler<ReactComponent> = async () => {\n // Dummy function so we can init the router outside of the useEffect hook. This is\n // needed so `router.reload()` works right away (on mount) in any of the user's\n // components. We swap in the real function in the useEffect hook below.\n currentIsInitialPage = false\n}\n\ntype CurrentPage = {\n component: ReactComponent | null\n page: Page\n key: number | null\n}\n\nexport interface InertiaAppProps<SharedProps extends PageProps = PageProps> {\n children?: (options: { Component: ReactComponent; props: PageProps; key: number | null }) => ReactNode\n initialPage: Page<SharedProps>\n initialComponent?: ReactComponent\n resolveComponent?: (name: string) => ReactComponent | Promise<ReactComponent>\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdateCallback\n}\n\nexport type InertiaApp = FunctionComponent<InertiaAppProps>\n\nexport default function App<SharedProps extends PageProps = PageProps>({\n children,\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n}: InertiaAppProps<SharedProps>) {\n const [current, setCurrent] = useState<CurrentPage>({\n component: initialComponent || null,\n page: initialPage,\n key: null,\n })\n\n const headManager = useMemo(() => {\n return createHeadManager(\n typeof window === 'undefined',\n titleCallback || ((title) => title),\n onHeadUpdate || (() => {}),\n )\n }, [])\n\n if (!routerIsInitialized) {\n router.init<ReactComponent>({\n initialPage,\n resolveComponent: resolveComponent!,\n swapComponent: async (args) => swapComponent(args),\n })\n\n routerIsInitialized = true\n }\n\n useEffect(() => {\n swapComponent = async ({ component, page, preserveState }: ReactPageHandlerArgs) => {\n if (currentIsInitialPage) {\n // We block setting the current page on the initial page to\n // prevent the initial page from being re-rendered again.\n currentIsInitialPage = false\n return\n }\n\n setCurrent((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\n }))\n }\n\n router.on('navigate', () => headManager.forceUpdate())\n }, [])\n\n if (!current.component) {\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(PageContext.Provider, { value: current.page }, null),\n )\n }\n\n const renderChildren =\n children ||\n (({ Component, props, key }) => {\n const child = createElement(Component, { key, ...props })\n\n if (typeof Component.layout === 'function') {\n return (Component.layout as LayoutFunction)(child)\n }\n\n if (Array.isArray(Component.layout)) {\n return (Component.layout as any)\n .concat(child)\n .reverse()\n .reduce((children: any, Layout: any) => createElement(Layout, { children, ...props }))\n }\n\n return child\n })\n\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(\n PageContext.Provider,\n { value: current.page },\n renderChildren({\n Component: current.component,\n key: current.key,\n props: current.page.props,\n }),\n ),\n )\n}\n\nApp.displayName = 'Inertia'\n", "import { HeadManager } from '@inertiajs/core'\nimport { createContext } from 'react'\n\nconst headContext = createContext<HeadManager | null>(null)\nheadContext.displayName = 'InertiaHeadContext'\n\nexport default headContext\n", "import { Page } from '@inertiajs/core'\nimport { createContext } from 'react'\n\nconst pageContext = createContext<Page | null>(null)\npageContext.displayName = 'InertiaPageContext'\n\nexport default pageContext\n", "import {\n CreateInertiaAppOptionsForCSR,\n CreateInertiaAppOptionsForSSR,\n InertiaAppResponse,\n InertiaAppSSRResponse,\n PageProps,\n router,\n setupProgress,\n} from '@inertiajs/core'\nimport { ReactElement, createElement } from 'react'\nimport { renderToString } from 'react-dom/server'\nimport App, { InertiaAppProps, type InertiaApp } from './App'\nimport { config } from './index'\nimport { ReactComponent, ReactInertiaAppConfig } from './types'\n\nexport type SetupOptions<ElementType, SharedProps extends PageProps> = {\n el: ElementType\n App: InertiaApp\n props: InertiaAppProps<SharedProps>\n}\n\n// The 'unknown' type is necessary for backwards compatibility...\ntype ComponentResolver = (\n name: string,\n) => ReactComponent | Promise<ReactComponent> | { default: ReactComponent } | unknown\n\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForCSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<HTMLElement, SharedProps>,\n void,\n ReactInertiaAppConfig\n>\n\ntype InertiaAppOptionsForSSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForSSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<null, SharedProps>,\n ReactElement,\n ReactInertiaAppConfig\n> & {\n render: typeof renderToString\n}\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<void>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<InertiaAppSSRResponse>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>({\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n defaults = {},\n}: InertiaAppOptionsForCSR<SharedProps> | InertiaAppOptionsForSSR<SharedProps>): InertiaAppResponse {\n config.replace(defaults)\n\n const isServer = typeof window === 'undefined'\n const el = isServer ? null : document.getElementById(id)\n const initialPage = page || JSON.parse(el?.dataset.page || '{}')\n\n // @ts-expect-error - This can be improved once we remove the 'unknown' type from the resolver...\n const resolveComponent = (name) => Promise.resolve(resolve(name)).then((module) => module.default || module)\n\n let head: string[] = []\n\n const reactApp = await Promise.all([\n resolveComponent(initialPage.component),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n const props = {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n }\n\n if (isServer) {\n const ssrSetup = setup as (options: SetupOptions<null, SharedProps>) => ReactElement\n\n return ssrSetup({\n el: null,\n App,\n props: { ...props, onHeadUpdate: (elements: string[]) => (head = elements) },\n })\n }\n\n const csrSetup = setup as (options: SetupOptions<HTMLElement, SharedProps>) => void\n\n return csrSetup({\n el: el as HTMLElement,\n App,\n props,\n })\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer && render) {\n const body = await render(\n createElement(\n 'div',\n {\n id,\n 'data-page': JSON.stringify(initialPage),\n },\n reactApp as ReactElement,\n ),\n )\n\n return { head, body }\n }\n}\n", "import { ReactNode, useEffect, useMemo, useState } from 'react'\nimport { router } from '.'\nimport usePage from './usePage'\n\nconst urlWithoutHash = (url: URL | Location): URL => {\n url = new URL(url.href)\n url.hash = ''\n\n return url\n}\n\nconst isSameUrlWithoutHash = (url1: URL | Location, url2: URL | Location): boolean => {\n return urlWithoutHash(url1).href === urlWithoutHash(url2).href\n}\n\ninterface DeferredProps {\n children: ReactNode | (() => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data: string | string[]\n}\n\nconst Deferred = ({ children, data, fallback }: DeferredProps) => {\n if (!data) {\n throw new Error('`<Deferred>` requires a `data` prop to be a string or array of strings')\n }\n\n const [loaded, setLoaded] = useState(false)\n const pageProps = usePage().props\n const keys = useMemo(() => (Array.isArray(data) ? data : [data]), [data])\n\n useEffect(() => {\n const removeListener = router.on('start', (e) => {\n const isPartialVisit = e.detail.visit.only.length > 0 || e.detail.visit.except.length > 0\n const isReloadingKey = e.detail.visit.only.find((key) => keys.includes(key))\n\n if (isSameUrlWithoutHash(e.detail.visit.url, window.location) && (!isPartialVisit || isReloadingKey)) {\n setLoaded(false)\n }\n })\n\n return () => {\n removeListener()\n }\n }, [])\n\n useEffect(() => {\n setLoaded(keys.every((key) => pageProps[key] !== undefined))\n }, [pageProps, keys])\n\n if (loaded) {\n return typeof children === 'function' ? children() : children\n }\n\n return typeof fallback === 'function' ? fallback() : fallback\n}\n\nDeferred.displayName = 'InertiaDeferred'\n\nexport default Deferred\n", "import { Page, PageProps, SharedPageProps } from '@inertiajs/core'\nimport React from 'react'\nimport PageContext from './PageContext'\n\nexport default function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps & SharedPageProps> {\n // React.use() was introduced in React 19, fallback to React.useContext() for earlier versions\n const page = typeof React.use === 'function' ? React.use(PageContext) : React.useContext(PageContext)\n\n if (!page) {\n throw new Error('usePage must be used within the Inertia component')\n }\n\n return page as Page<TPageProps & SharedPageProps>\n}\n", "import {\n FormComponentProps,\n FormComponentRef,\n FormComponentSlotProps,\n FormDataConvertible,\n formDataToObject,\n isUrlMethodPair,\n mergeDataIntoQueryString,\n Method,\n resetFormFields,\n VisitOptions,\n} from '@inertiajs/core'\nimport { isEqual } from 'lodash-es'\nimport React, {\n createElement,\n FormEvent,\n forwardRef,\n ReactNode,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport useForm from './useForm'\n\n// Polyfill for startTransition to support React 16.9+\nconst deferStateUpdate = (callback: () => void) => {\n typeof React.startTransition === 'function' ? React.startTransition(callback) : setTimeout(callback, 0)\n}\n\ntype ComponentProps = (FormComponentProps &\n Omit<React.FormHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> &\n Omit<React.AllHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'>) & {\n children: ReactNode | ((props: FormComponentSlotProps) => ReactNode)\n}\n\ntype FormSubmitOptions = Omit<VisitOptions, 'data' | 'onPrefetched' | 'onPrefetching'>\n\nconst noop = () => undefined\n\nconst Form = forwardRef<FormComponentRef, ComponentProps>(\n (\n {\n action = '',\n method = 'get',\n headers = {},\n queryStringArrayFormat = 'brackets',\n errorBag = null,\n showProgress = true,\n transform = (data) => data,\n options = {},\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onBefore = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n onCancelToken = noop,\n onSubmitComplete = noop,\n disableWhileProcessing = false,\n resetOnError = false,\n resetOnSuccess = false,\n setDefaultsOnSuccess = false,\n invalidateCacheTags = [],\n children,\n ...props\n },\n ref,\n ) => {\n const form = useForm<Record<string, any>>({})\n const formElement = useRef<HTMLFormElement>(undefined)\n\n const resolvedMethod = useMemo(() => {\n return isUrlMethodPair(action) ? action.method : (method.toLowerCase() as Method)\n }, [action, method])\n\n const [isDirty, setIsDirty] = useState(false)\n const defaultData = useRef<FormData>(new FormData())\n\n const getFormData = (): FormData => new FormData(formElement.current)\n\n // Convert the FormData to an object because we can't compare two FormData\n // instances directly (which is needed for isDirty), mergeDataIntoQueryString()\n // expects an object, and submitting a FormData instance directly causes problems with nested objects.\n const getData = (): Record<string, FormDataConvertible> => formDataToObject(getFormData())\n\n const updateDirtyState = (event: Event) =>\n deferStateUpdate(() =>\n setIsDirty(event.type === 'reset' ? false : !isEqual(getData(), formDataToObject(defaultData.current))),\n )\n\n useEffect(() => {\n defaultData.current = getFormData()\n\n const formEvents: Array<keyof HTMLElementEventMap> = ['input', 'change', 'reset']\n\n formEvents.forEach((e) => formElement.current!.addEventListener(e, updateDirtyState))\n\n return () => formEvents.forEach((e) => formElement.current?.removeEventListener(e, updateDirtyState))\n }, [])\n\n const reset = (...fields: string[]) => {\n if (formElement.current) {\n resetFormFields(formElement.current, defaultData.current, fields)\n }\n }\n\n const resetAndClearErrors = (...fields: string[]) => {\n form.clearErrors(...fields)\n reset(...fields)\n }\n\n const maybeReset = (resetOption: boolean | string[]) => {\n if (!resetOption) {\n return\n }\n\n if (resetOption === true) {\n reset()\n } else if (resetOption.length > 0) {\n reset(...resetOption)\n }\n }\n\n const submit = () => {\n const [url, _data] = mergeDataIntoQueryString(\n resolvedMethod,\n isUrlMethodPair(action) ? action.url : action,\n getData(),\n queryStringArrayFormat,\n )\n\n const submitOptions: FormSubmitOptions = {\n headers,\n queryStringArrayFormat,\n errorBag,\n showProgress,\n invalidateCacheTags,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess: (...args) => {\n onSuccess(...args)\n onSubmitComplete({\n reset,\n defaults,\n })\n maybeReset(resetOnSuccess)\n\n if (setDefaultsOnSuccess === true) {\n defaults()\n }\n },\n onError(...args) {\n onError(...args)\n maybeReset(resetOnError)\n },\n ...options,\n }\n\n form.transform(() => transform(_data))\n form.submit(resolvedMethod, url, submitOptions)\n }\n\n const defaults = () => {\n defaultData.current = getFormData()\n setIsDirty(false)\n }\n\n const exposed = () => ({\n errors: form.errors,\n hasErrors: form.hasErrors,\n processing: form.processing,\n progress: form.progress,\n wasSuccessful: form.wasSuccessful,\n recentlySuccessful: form.recentlySuccessful,\n isDirty,\n clearErrors: form.clearErrors,\n resetAndClearErrors,\n setError: form.setError,\n reset,\n submit,\n defaults,\n getData,\n getFormData,\n })\n\n useImperativeHandle(ref, exposed, [form, isDirty, submit])\n\n return createElement(\n 'form',\n {\n ...props,\n ref: formElement,\n action: isUrlMethodPair(action) ? action.url : action,\n method: resolvedMethod,\n onSubmit: (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n submit()\n },\n // Only React 19 supports passing a boolean to the `inert` attribute.\n // To support earlier versions as well, we use the string 'true'.\n // Unfortunately, React 19 treats an empty string as `false`.\n // See: https://github.com/inertiajs/inertia/pull/2536\n inert: disableWhileProcessing && form.processing && 'true',\n },\n typeof children === 'function' ? children(exposed()) : children,\n )\n },\n)\n\nForm.displayName = 'InertiaForm'\n\nexport default Form\n", "import {\n CancelToken,\n Errors,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n Method,\n Progress,\n RequestPayload,\n router,\n UrlMethodPair,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep, get, has, isEqual, set } from 'lodash-es'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { config } from '.'\nimport { useIsomorphicLayoutEffect } from './react'\nimport useRemember from './useRemember'\n\nexport type SetDataByObject<TForm> = (data: Partial<TForm>) => void\nexport type SetDataByMethod<TForm> = (data: (previousData: TForm) => TForm) => void\nexport type SetDataByKeyValuePair<TForm> = <K extends FormDataKeys<TForm>>(\n key: K,\n value: FormDataValues<TForm, K>,\n) => void\nexport type SetDataAction<TForm extends Record<any, any>> = SetDataByObject<TForm> &\n SetDataByMethod<TForm> &\n SetDataByKeyValuePair<TForm>\n\ntype FormOptions = Omit<VisitOptions, 'data'>\ntype SubmitArgs = [Method, string, FormOptions?] | [UrlMethodPair, FormOptions?]\ntype TransformCallback<TForm> = (data: TForm) => object\n\nexport interface InertiaFormProps<TForm extends object> {\n data: TForm\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n setData: SetDataAction<TForm>\n transform: (callback: TransformCallback<TForm>) => void\n setDefaults(): void\n setDefaults<T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n setDefaults(fields: Partial<TForm>): void\n reset<K extends FormDataKeys<TForm>>(...fields: K[]): void\n clearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): void\n resetAndClearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): void\n setError<K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n setError(errors: FormDataErrors<TForm>): void\n submit: (...args: SubmitArgs) => void\n get: (url: string, options?: FormOptions) => void\n patch: (url: string, options?: FormOptions) => void\n post: (url: string, options?: FormOptions) => void\n put: (url: string, options?: FormOptions) => void\n delete: (url: string, options?: FormOptions) => void\n cancel: () => void\n}\nexport default function useForm<TForm extends FormDataType<TForm>>(\n initialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKey: string,\n initialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKeyOrInitialValues?: string | TForm | (() => TForm),\n maybeInitialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm> {\n const isMounted = useRef(false)\n const rememberKey = typeof rememberKeyOrInitialValues === 'string' ? rememberKeyOrInitialValues : null\n const [defaults, setDefaults] = useState(\n (typeof rememberKeyOrInitialValues === 'string' ? maybeInitialValues : rememberKeyOrInitialValues) || ({} as TForm),\n )\n const cancelToken = useRef<CancelToken | null>(null)\n const recentlySuccessfulTimeoutId = useRef<number>(undefined)\n const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`) : useState(defaults)\n const [errors, setErrors] = rememberKey\n ? useRemember({} as FormDataErrors<TForm>, `${rememberKey}:errors`)\n : useState({} as FormDataErrors<TForm>)\n const [hasErrors, setHasErrors] = useState(false)\n const [processing, setProcessing] = useState(false)\n const [progress, setProgress] = useState<Progress | null>(null)\n const [wasSuccessful, setWasSuccessful] = useState(false)\n const [recentlySuccessful, setRecentlySuccessful] = useState(false)\n const transform = useRef<TransformCallback<TForm>>((data) => data)\n const isDirty = useMemo(() => !isEqual(data, defaults), [data, defaults])\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n // Track if setDefaults was called manually during onSuccess to avoid\n // overriding user's custom defaults with automatic behavior.\n const setDefaultsCalledInOnSuccess = useRef(false)\n\n const submit = useCallback(\n (...args: SubmitArgs) => {\n const objectPassed = args[0] !== null && typeof args[0] === 'object'\n\n const method = objectPassed ? args[0].method : (args[0] as Method)\n const url = objectPassed ? args[0].url : (args[1] as string)\n const options = (objectPassed ? args[1] : args[2]) ?? {}\n\n setDefaultsCalledInOnSuccess.current = false\n\n const _options: VisitOptions = {\n ...options,\n onCancelToken: (token) => {\n cancelToken.current = token\n\n if (options.onCancelToken) {\n return options.onCancelToken(token)\n }\n },\n onBefore: (visit) => {\n setWasSuccessful(false)\n setRecentlySuccessful(false)\n clearTimeout(recentlySuccessfulTimeoutId.current)\n\n if (options.onBefore) {\n return options.onBefore(visit)\n }\n },\n onStart: (visit) => {\n setProcessing(true)\n\n if (options.onStart) {\n return options.onStart(visit)\n }\n },\n onProgress: (event) => {\n setProgress(event || null)\n\n if (options.onProgress) {\n return options.onProgress(event)\n }\n },\n onSuccess: async (page) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors({} as FormDataErrors<TForm>)\n setHasErrors(false)\n setWasSuccessful(true)\n setRecentlySuccessful(true)\n recentlySuccessfulTimeoutId.current = setTimeout(() => {\n if (isMounted.current) {\n setRecentlySuccessful(false)\n }\n }, config.get('form.recentlySuccessfulDuration'))\n }\n\n const onSuccess = options.onSuccess ? await options.onSuccess(page) : null\n\n if (isMounted.current && !setDefaultsCalledInOnSuccess.current) {\n setData((data) => {\n setDefaults(cloneDeep(data))\n return data\n })\n }\n\n return onSuccess\n },\n onError: (errors) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors(errors as FormDataErrors<TForm>)\n setHasErrors(true)\n }\n\n if (options.onError) {\n return options.onError(errors)\n }\n },\n onCancel: () => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n if (options.onCancel) {\n return options.onCancel()\n }\n },\n onFinish: (visit) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n cancelToken.current = null\n\n if (options.onFinish) {\n return options.onFinish(visit)\n }\n },\n }\n\n const transformedData = transform.current(data) as RequestPayload\n\n if (method === 'delete') {\n router.delete(url, { ..._options, data: transformedData })\n } else {\n router[method](url, transformedData, _options)\n }\n },\n [data, setErrors, transform],\n )\n\n const setDataFunction = useCallback(\n (keyOrData: FormDataKeys<TForm> | Function | Partial<TForm>, maybeValue?: any) => {\n if (typeof keyOrData === 'string') {\n setData((data) => set(cloneDeep(data), keyOrData, maybeValue))\n } else if (typeof keyOrData === 'function') {\n setData((data) => keyOrData(data))\n } else {\n setData(keyOrData as TForm)\n }\n },\n [setData],\n )\n\n const [dataAsDefaults, setDataAsDefaults] = useState(false)\n\n const dataRef = useRef(data)\n\n useEffect(() => {\n dataRef.current = data\n })\n\n const setDefaultsFunction = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) => {\n setDefaultsCalledInOnSuccess.current = true\n\n if (typeof fieldOrFields === 'undefined') {\n setDefaults(dataRef.current)\n // If setData was called right before setDefaults, data was not\n // updated in that render yet, so we set a flag to update\n // defaults right after the next render.\n setDataAsDefaults(true)\n } else {\n setDefaults((defaults) => {\n return typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign(cloneDeep(defaults), fieldOrFields)\n })\n }\n },\n [setDefaults],\n )\n\n useIsomorphicLayoutEffect(() => {\n if (!dataAsDefaults) {\n return\n }\n\n if (isDirty) {\n // Data has been updated in this next render and is different from\n // the defaults, so now we can set defaults to the current data.\n setDefaults(data)\n }\n\n setDataAsDefaults(false)\n }, [dataAsDefaults])\n\n const reset = useCallback(\n (...fields: string[]) => {\n if (fields.length === 0) {\n setData(defaults)\n } else {\n setData((data) =>\n (fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(defaults, key))\n .reduce(\n (carry, key) => {\n return set(carry, key, get(defaults, key))\n },\n { ...data } as TForm,\n ),\n )\n }\n },\n [setData, defaults],\n )\n\n const setError = useCallback(\n (fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: string) => {\n setErrors((errors) => {\n const newErrors = {\n ...errors,\n ...(typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields),\n }\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\n )\n\n const clearErrors = useCallback(\n (...fields: string[]) => {\n setErrors((errors) => {\n const newErrors = Object.keys(errors).reduce(\n (carry, field) => ({\n ...carry,\n ...(fields.length > 0 && !fields.includes(field) ? { [field]: (errors as Errors)[field] } : {}),\n }),\n {},\n )\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors as FormDataErrors<TForm>\n })\n },\n [setErrors, setHasErrors],\n )\n\n const resetAndClearErrors = useCallback(\n (...fields: string[]) => {\n reset(...fields)\n clearErrors(...fields)\n },\n [reset, clearErrors],\n )\n\n const createSubmitMethod =\n (method: Method) =>\n (url: string, options: VisitOptions = {}) => {\n submit(method, url, options)\n }\n const getMethod = useCallback(createSubmitMethod('get'), [submit])\n const post = useCallback(createSubmitMethod('post'), [submit])\n const put = useCallback(createSubmitMethod('put'), [submit])\n const patch = useCallback(createSubmitMethod('patch'), [submit])\n const deleteMethod = useCallback(createSubmitMethod('delete'), [submit])\n\n const cancel = useCallback(() => {\n if (cancelToken.current) {\n cancelToken.current.cancel()\n }\n }, [])\n\n const transformFunction = useCallback((callback: TransformCallback<TForm>) => {\n transform.current = callback\n }, [])\n\n return {\n data,\n setData: setDataFunction,\n isDirty,\n errors,\n hasErrors,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n transform: transformFunction,\n setDefaults: setDefaultsFunction,\n reset,\n setError,\n clearErrors,\n resetAndClearErrors,\n submit,\n get: getMethod,\n post,\n put,\n patch,\n delete: deleteMethod,\n cancel,\n }\n}\n", "import { DependencyList, EffectCallback, useEffect, useLayoutEffect } from 'react'\n\n// Inspired by react-redux, this hook uses useLayoutEffect in the browser, and useEffect\n// when using SSR. Currently, useLayoutEffect doesn't work when rendered on the server.\nexport function useIsomorphicLayoutEffect(effect: EffectCallback, deps?: DependencyList): void {\n typeof window === 'undefined' ? useEffect(effect, deps) : useLayoutEffect(effect, deps)\n}\n", "import { router } from '@inertiajs/core'\nimport { Dispatch, SetStateAction, useEffect, useState } from 'react'\n\nexport default function useRemember<State>(\n initialState: State,\n key?: string,\n): [State, Dispatch<SetStateAction<State>>] {\n const [state, setState] = useState(() => {\n const restored = router.restore(key) as State\n\n return restored !== undefined ? restored : initialState\n })\n\n useEffect(() => {\n router.remember(state, key)\n }, [state, key])\n\n return [state, setState]\n}\n", "import { escape } from 'lodash-es'\nimport React, { FunctionComponent, ReactElement, ReactNode, useContext, useEffect, useMemo } from 'react'\nimport HeadContext from './HeadContext'\n\ntype InertiaHeadProps = {\n title?: string\n children?: ReactNode\n}\n\ntype InertiaHead = FunctionComponent<InertiaHeadProps>\n\nconst Head: InertiaHead = function ({ children, title }) {\n const headManager = useContext(HeadContext)\n const provider = useMemo(() => headManager!.createProvider(), [headManager])\n const isServer = typeof window === 'undefined'\n\n useEffect(() => {\n provider.reconnect()\n provider.update(renderNodes(children))\n return () => {\n provider.disconnect()\n }\n }, [provider, children, title])\n\n function isUnaryTag(node: ReactElement<any>) {\n return (\n typeof node.type === 'string' &&\n [\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n ].indexOf(node.type) > -1\n )\n }\n\n function renderTagStart(node: ReactElement<any>): string {\n const attrs = Object.keys(node.props).reduce((carry, name) => {\n if (['head-key', 'children', 'dangerouslySetInnerHTML'].includes(name)) {\n return carry\n }\n\n const value = String(node.props[name])\n\n if (value === '') {\n return carry + ` ${name}`\n }\n\n return carry + ` ${name}=\"${escape(value)}\"`\n }, '')\n\n return `<${String(node.type)}${attrs}>`\n }\n\n function renderTagChildren(node: ReactElement<any>): string {\n const { children } = node.props\n\n if (typeof children === 'string') {\n return children\n }\n\n if (Array.isArray(children)) {\n return children.reduce((html, child) => html + renderTag(child), '')\n }\n\n return ''\n }\n\n function renderTag(node: ReactElement<any>): string {\n let html = renderTagStart(node)\n\n if (node.props.children) {\n html += renderTagChildren(node)\n }\n\n if (node.props.dangerouslySetInnerHTML) {\n html += node.props.dangerouslySetInnerHTML.__html\n }\n\n if (!isUnaryTag(node)) {\n html += `</${String(node.type)}>`\n }\n\n return html\n }\n\n function ensureNodeHasInertiaProp(node: ReactElement<any>) {\n return React.cloneElement(node, {\n [provider.preferredAttribute()]: node.props['head-key'] !== undefined ? node.props['head-key'] : '',\n })\n }\n\n function renderNode(node: ReactElement<any>) {\n return renderTag(ensureNodeHasInertiaProp(node))\n }\n\n function renderNodes(nodes: ReactNode) {\n const elements = React.Children.toArray(nodes)\n .filter((node) => node)\n .map((node) => renderNode(node as ReactElement<any>))\n\n if (title && !elements.find((tag) => tag.startsWith('<title'))) {\n elements.push(`<title ${provider.preferredAttribute()}>${title}</title>`)\n }\n\n return elements\n }\n\n if (isServer) {\n provider.update(renderNodes(children))\n }\n\n return null\n}\nexport default Head\n", "import {\n getScrollableParent,\n InfiniteScrollActionSlotProps,\n InfiniteScrollComponentBaseProps,\n InfiniteScrollRef,\n InfiniteScrollSlotProps,\n useInfiniteScroll,\n UseInfiniteScrollProps,\n} from '@inertiajs/core'\nimport React, {\n createElement,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nconst resolveHTMLElement = (\n value: string | React.RefObject<HTMLElement | null> | null,\n fallback: HTMLElement | null,\n): HTMLElement | null => {\n if (!value) {\n return fallback\n }\n\n // React ref object { current: HTMLElement | null }\n if (value && typeof value === 'object' && 'current' in value) {\n return value.current\n }\n\n // CSS Selector string\n if (typeof value === 'string') {\n return document.querySelector(value) as HTMLElement | null\n }\n\n return fallback\n}\n\n// Helper function to render slot content\nconst renderSlot = (\n slotContent: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode) | undefined,\n slotProps: InfiniteScrollActionSlotProps,\n fallback: React.ReactNode = null,\n): React.ReactNode => {\n if (!slotContent) {\n return fallback\n }\n\n return typeof slotContent === 'function' ? slotContent(slotProps) : slotContent\n}\n\ninterface ComponentProps\n extends InfiniteScrollComponentBaseProps,\n Omit<React.HTMLAttributes<HTMLElement>, keyof InfiniteScrollComponentBaseProps | 'children'> {\n children?: React.ReactNode | ((props: InfiniteScrollSlotProps) => React.ReactNode)\n\n // Element references for custom trigger detection (when you want different trigger elements)\n startElement?: string | React.RefObject<HTMLElement | null>\n endElement?: string | React.RefObject<HTMLElement | null>\n itemsElement?: string | React.RefObject<HTMLElement | null>\n\n // Render slots for UI components (when you want custom loading/action components)\n previous?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n next?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n loading?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n\n onlyNext?: boolean\n onlyPrevious?: boolean\n}\n\nconst InfiniteScroll = forwardRef<InfiniteScrollRef, ComponentProps>(\n (\n {\n data,\n buffer = 0,\n as = 'div',\n manual = false,\n manualAfter = 0,\n preserveUrl = false,\n reverse = false,\n autoScroll,\n children,\n startElement,\n endElement,\n itemsElement,\n previous,\n next,\n loading,\n onlyNext = false,\n onlyPrevious = false,\n ...props\n },\n ref,\n ) => {\n const [startElementFromRef, setStartElementFromRef] = useState<HTMLElement | null>(null)\n const startElementRef = useCallback((node: HTMLElement | null) => setStartElementFromRef(node), [])\n\n const [endElementFromRef, setEndElementFromRef] = useState<HTMLElement | null>(null)\n const endElementRef = useCallback((node: HTMLElement | null) => setEndElementFromRef(node), [])\n\n const [itemsElementFromRef, setItemsElementFromRef] = useState<HTMLElement | null>(null)\n const itemsElementRef = useCallback((node: HTMLElement | null) => setItemsElementFromRef(node), [])\n\n const [loadingPrevious, setLoadingPrevious] = useState(false)\n const [loadingNext, setLoadingNext] = useState(false)\n const [requestCount, setRequestCount] = useState(0)\n\n const [resolvedStartElement, setResolvedStartElement] = useState<HTMLElement | null>(null)\n const [resolvedEndElement, setResolvedEndElement] = useState<HTMLElement | null>(null)\n const [resolvedItemsElement, setResolvedItemsElement] = useState<HTMLElement | null>(null)\n\n // Update elements when refs or props change\n useEffect(() => {\n const element = startElement ? resolveHTMLElement(startElement, startElementFromRef) : startElementFromRef\n setResolvedStartElement(element)\n }, [startElement, startElementFromRef])\n\n useEffect(() => {\n const element = endElement ? resolveHTMLElement(endElement, endElementFromRef) : endElementFromRef\n setResolvedEndElement(element)\n }, [endElement, endElementFromRef])\n\n useEffect(() => {\n const element = itemsElement ? resolveHTMLElement(itemsElement, itemsElementFromRef) : itemsElementFromRef\n setResolvedItemsElement(element)\n }, [itemsElement, itemsElementFromRef])\n\n const scrollableParent = useMemo(() => getScrollableParent(resolvedItemsElement), [resolvedItemsElement])\n\n const callbackPropsRef = useRef({\n buffer,\n onlyNext,\n onlyPrevious,\n reverse,\n preserveUrl,\n })\n\n callbackPropsRef.current = {\n buffer,\n onlyNext,\n onlyPrevious,\n reverse,\n preserveUrl,\n }\n\n const [infiniteScroll, setInfiniteScroll] = useState<UseInfiniteScrollProps | null>(null)\n\n const dataManager = useMemo(() => infiniteScroll?.dataManager, [infiniteScroll])\n const elementManager = useMemo(() => infiniteScroll?.elementManager, [infiniteScroll])\n\n const scrollToBottom = useCallback(() => {\n if (scrollableParent) {\n scrollableParent.scrollTo({\n top: scrollableParent.scrollHeight,\n behavior: 'instant',\n })\n } else {\n window.scrollTo({\n top: document.body.scrollHeight,\n behavior: 'instant',\n })\n }\n }, [scrollableParent])\n\n // Main setup effect - only recreate when structural dependencies change\n useEffect(() => {\n if (!resolvedItemsElement) {\n return\n }\n\n const infiniteScrollInstance = useInfiniteScroll({\n // Data\n getPropName: () => data,\n inReverseMode: () => callbackPropsRef.current.reverse,\n shouldFetchNext: () => !callbackPropsRef.current.onlyPrevious,\n shouldFetchPrevious: () => !callbackPropsRef.current.onlyNext,\n shouldPreserveUrl: () => callbackPropsRef.current.preserveUrl,\n\n // Elements\n getTriggerMargin: () => callbackPropsRef.current.buffer,\n getStartElement: () => resolvedStartElement!,\n getEndElement: () => resolvedEndElement!,\n getItemsElement: () => resolvedItemsElement,\n getScrollableParent: () => scrollableParent,\n\n // Callbacks\n onBeforePreviousRequest: () => setLoadingPrevious(true),\n onBeforeNextRequest: () => setLoadingNext(true),\n onCompletePreviousRequest: () => {\n setLoadingPrevious(false)\n setRequestCount(infiniteScrollInstance.dataManager.getRequestCount())\n },\n onCompleteNextRequest: () => {\n setLoadingNext(false)\n setRequestCount(infiniteScrollInstance.dataManager.getRequestCount())\n },\n })\n\n setInfiniteScroll(infiniteScrollInstance)\n const { dataManager, elementManager } = infiniteScrollInstance\n\n setRequestCount(dataManager.getRequestCount())\n\n elementManager.setupObservers()\n elementManager.processServerLoadedElements(dataManager.getLastLoadedPage())\n\n if (autoLoad) {\n elementManager.enableTriggers()\n }\n\n return () => {\n infiniteScrollInstance.flush()\n setInfiniteScroll(null)\n }\n }, [data, resolvedItemsElement, resolvedStartElement, resolvedEndElement, scrollableParent])\n\n const manualMode = useMemo(\n () => manual || (manualAfter > 0 && requestCount >= manualAfter),\n [manual, manualAfter, requestCount],\n )\n const autoLoad = useMemo(() => !manualMode, [manualMode])\n\n useEffect(() => {\n autoLoad ? elementManager?.enableTriggers() : elementManager?.disableTriggers()\n }, [autoLoad, onlyNext, onlyPrevious, resolvedStartElement, resolvedEndElement])\n\n useEffect(() => {\n // autoScroll defaults to reverse value if not explicitly set\n const shouldAutoScroll = autoScroll !== undefined ? autoScroll : reverse\n\n if (shouldAutoScroll) {\n scrollToBottom()\n }\n }, [scrollableParent])\n\n useImperativeHandle(\n ref,\n () => ({\n fetchNext: dataManager?.fetchNext || (() => {}),\n fetchPrevious: dataManager?.fetchPrevious || (() => {}),\n hasPrevious: dataManager?.hasPrevious || (() => false),\n hasNext: dataManager?.hasNext || (() => false),\n }),\n [dataManager],\n )\n\n const headerAutoMode = autoLoad && !onlyNext\n const footerAutoMode = autoLoad && !onlyPrevious\n\n const sharedExposed: Pick<\n InfiniteScrollActionSlotProps,\n 'loadingPrevious' | 'loadingNext' | 'hasPrevious' | 'hasNext'\n > = {\n loadingPrevious,\n loadingNext,\n hasPrevious: dataManager?.hasPrevious() ?? false,\n hasNext: dataManager?.hasNext() ?? false,\n }\n\n const exposedPrevious: InfiniteScrollActionSlotProps = {\n loading: loadingPrevious,\n fetch: dataManager?.fetchPrevious ?? (() => {}),\n autoMode: headerAutoMode,\n manualMode: !headerAutoMode,\n hasMore: dataManager?.hasPrevious() ?? false,\n ...sharedExposed,\n }\n\n const exposedNext: InfiniteScrollActionSlotProps = {\n loading: loadingNext,\n fetch: dataManager?.fetchNext ?? (() => {}),\n autoMode: footerAutoMode,\n manualMode: !footerAutoMode,\n hasMore: dataManager?.hasNext() ?? false,\n ...sharedExposed,\n }\n\n const exposedSlot: InfiniteScrollSlotProps = {\n loading: loadingPrevious || loadingNext,\n loadingPrevious,\n loadingNext,\n }\n\n const renderElements = []\n\n // Only render previous trigger if not using custom element selector/ref\n if (!startElement) {\n renderElements.push(\n createElement(\n 'div',\n { ref: startElementRef },\n // Render previous slot or fallback to loading indicator\n renderSlot(previous, exposedPrevious, loadingPrevious ? renderSlot(loading, exposedPrevious) : null),\n ),\n )\n }\n\n renderElements.push(\n createElement(\n as,\n { ...props, ref: itemsElementRef },\n typeof children === 'function' ? children(exposedSlot) : children,\n ),\n )\n\n // Only render next trigger if not using custom element selector/ref\n if (!endElement) {\n renderElements.push(\n createElement(\n 'div',\n { ref: endElementRef },\n // Render next slot or fallback to loading indicator\n renderSlot(next, exposedNext, loadingNext ? renderSlot(loading, exposedNext) : null),\n ),\n )\n }\n\n return createElement(React.Fragment, {}, ...(reverse ? [...renderElements].reverse() : renderElements))\n },\n)\n\nInfiniteScroll.displayName = 'InertiaInfiniteScroll'\n\nexport default InfiniteScroll\n", "import {\n ActiveVisit,\n isUrlMethodPair,\n LinkComponentBaseProps,\n LinkPrefetchOption,\n mergeDataIntoQueryString,\n Method,\n PendingVisit,\n router,\n shouldIntercept,\n shouldNavigate,\n VisitOptions,\n} from '@inertiajs/core'\nimport { createElement, ElementType, forwardRef, useEffect, useMemo, useRef, useState } from 'react'\nimport { config } from '.'\n\nconst noop = () => undefined\n\ninterface BaseInertiaLinkProps extends LinkComponentBaseProps {\n as?: ElementType\n onClick?: (event: React.MouseEvent) => void\n}\n\nexport type InertiaLinkProps = BaseInertiaLinkProps &\n Omit<React.HTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps> &\n Omit<React.AllHTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps>\n\nconst Link = forwardRef<unknown, InertiaLinkProps>(\n (\n {\n children,\n as = 'a',\n data = {},\n href = '',\n method = 'get',\n preserveScroll = false,\n preserveState = null,\n preserveUrl = false,\n replace = false,\n only = [],\n except = [],\n headers = {},\n queryStringArrayFormat = 'brackets',\n async = false,\n onClick = noop,\n onCancelToken = noop,\n onBefore = noop,\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n onPrefetching = noop,\n onPrefetched = noop,\n prefetch = false,\n cacheFor = 0,\n cacheTags = [],\n viewTransition = false,\n ...props\n },\n ref,\n ) => {\n const [inFlightCount, setInFlightCount] = useState(0)\n const hoverTimeout = useRef<number>(undefined)\n\n const _method = useMemo(() => {\n return isUrlMethodPair(href) ? href.method : (method.toLowerCase() as Method)\n }, [href, method])\n\n const _as = useMemo(() => {\n if (typeof as !== 'string' || as.toLowerCase() !== 'a') {\n // Custom component or element\n return as\n }\n\n return _method !== 'get' ? 'button' : as.toLowerCase()\n }, [as, _method])\n\n const mergeDataArray = useMemo(\n () => mergeDataIntoQueryString(_method, isUrlMethodPair(href) ? href.url : href, data, queryStringArrayFormat),\n [href, _method, data, queryStringArrayFormat],\n )\n\n const url = useMemo(() => mergeDataArray[0], [mergeDataArray])\n const _data = useMemo(() => mergeDataArray[1], [mergeDataArray])\n\n const baseParams = useMemo<VisitOptions>(\n () => ({\n data: _data,\n method: _method,\n preserveScroll,\n preserveState: preserveState ?? _method !== 'get',\n preserveUrl,\n replace,\n only,\n except,\n headers,\n async,\n }),\n [_data, _method, preserveScroll, preserveState, preserveUrl, replace, only, except, headers, async],\n )\n\n const visitParams = useMemo<VisitOptions>(\n () => ({\n ...baseParams,\n viewTransition,\n onCancelToken,\n onBefore,\n onStart(visit: PendingVisit) {\n setInFlightCount((count) => count + 1)\n onStart(visit)\n },\n onProgress,\n onFinish(visit: ActiveVisit) {\n setInFlightCount((count) => count - 1)\n onFinish(visit)\n },\n onCancel,\n onSuccess,\n onError,\n }),\n [\n baseParams,\n viewTransition,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess,\n onError,\n ],\n )\n\n const prefetchModes: LinkPrefetchOption[] = useMemo(\n () => {\n if (prefetch === true) {\n return ['hover']\n }\n\n if (prefetch === false) {\n return []\n }\n\n if (Array.isArray(prefetch)) {\n return prefetch\n }\n\n return [prefetch]\n },\n Array.isArray(prefetch) ? prefetch : [prefetch],\n )\n\n const cacheForValue = useMemo(() => {\n if (cacheFor !== 0) {\n // If they've provided a value, respect it\n return cacheFor\n }\n\n if (prefetchModes.length === 1 && prefetchModes[0] === 'click') {\n // If they've only provided a prefetch mode of 'click',\n // we should only prefetch for the next request but not keep it around\n return 0\n }\n\n // Otherwise, default to 30 seconds\n return config.get('prefetch.cacheFor')\n }, [cacheFor, prefetchModes])\n\n const doPrefetch = useMemo(() => {\n return () => {\n router.prefetch(\n url,\n {\n ...baseParams,\n onPrefetching,\n onPrefetched,\n },\n { cacheFor: cacheForValue, cacheTags },\n )\n }\n }, [url, baseParams, onPrefetching, onPrefetched, cacheForValue, cacheTags])\n\n useEffect(() => {\n return () => {\n clearTimeout(hoverTimeout.current)\n }\n }, [])\n\n useEffect(() => {\n if (prefetchModes.includes('mount')) {\n setTimeout(() => doPrefetch())\n }\n }, prefetchModes)\n\n const regularEvents = {\n onClick: (event: React.MouseEvent) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n event.preventDefault()\n\n router.visit(url, visitParams)\n }\n },\n }\n\n const prefetchHoverEvents = {\n onMouseEnter: () => {\n hoverTimeout.current = window.setTimeout(() => {\n doPrefetch()\n }, config.get('prefetch.hoverDelay'))\n },\n onMouseLeave: () => {\n clearTimeout(hoverTimeout.current)\n },\n onClick: regularEvents.onClick,\n }\n\n const prefetchClickEvents = {\n onMouseDown: (event: React.MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onKeyDown: (event: React.KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onMouseUp: (event: React.MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n router.visit(url, visitParams)\n }\n },\n onKeyUp: (event: React.KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n router.visit(url, visitParams)\n }\n },\n onClick: (event: React.MouseEvent) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n // Let the mouseup/keyup event handle the visit\n event.preventDefault()\n }\n },\n }\n\n const elProps = useMemo(() => {\n if (_as === 'button') {\n return { type: 'button' }\n }\n\n if (_as === 'a' || typeof _as !== 'string') {\n return { href: url }\n }\n\n return {}\n }, [_as, url])\n\n return createElement(\n _as,\n {\n ...props,\n ...elProps,\n ref,\n ...(() => {\n if (prefetchModes.includes('hover')) {\n return prefetchHoverEvents\n }\n\n if (prefetchModes.includes('click')) {\n return prefetchClickEvents\n }\n\n return regularEvents\n })(),\n 'data-loading': inFlightCount > 0 ? '' : undefined,\n },\n children,\n )\n },\n)\nLink.displayName = 'InertiaLink'\n\nexport default Link\n", "import { PollOptions, ReloadOptions, router } from '@inertiajs/core'\nimport { useEffect, useRef } from 'react'\n\nexport default function usePoll(\n interval: number,\n requestOptions: ReloadOptions = {},\n options: PollOptions = {\n keepAlive: false,\n autoStart: true,\n },\n) {\n const pollRef = useRef(\n router.poll(interval, requestOptions, {\n ...options,\n autoStart: false,\n }),\n )\n\n useEffect(() => {\n if (options.autoStart ?? true) {\n pollRef.current.start()\n }\n\n return () => pollRef.current.stop()\n }, [])\n\n return {\n stop: pollRef.current.stop,\n start: pollRef.current.start,\n }\n}\n", "import { router, VisitOptions } from '@inertiajs/core'\nimport { useEffect, useState } from 'react'\n\nexport default function usePrefetch(options: VisitOptions = {}): {\n lastUpdatedAt: number | null\n isPrefetching: boolean\n isPrefetched: boolean\n flush: () => void\n} {\n const cached = typeof window === 'undefined' ? null : router.getCached(window.location.pathname, options)\n const inFlight = typeof window === 'undefined' ? null : router.getPrefetching(window.location.pathname, options)\n\n const [lastUpdatedAt, setLastUpdatedAt] = useState<number | null>(cached?.staleTimestamp || null)\n const [isPrefetching, setIsPrefetching] = useState(inFlight !== null)\n const [isPrefetched, setIsPrefetched] = useState(cached !== null)\n\n useEffect(() => {\n const onPrefetchingListener = router.on('prefetching', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(true)\n }\n })\n\n const onPrefetchedListener = router.on('prefetched', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(false)\n setIsPrefetched(true)\n setLastUpdatedAt(e.detail.fetchedAt)\n }\n })\n\n return () => {\n onPrefetchedListener()\n onPrefetchingListener()\n }\n }, [])\n\n return {\n lastUpdatedAt,\n isPrefetching,\n isPrefetched,\n flush: () => router.flush(window.location.pathname, options),\n }\n}\n", "import { ReloadOptions, router } from '@inertiajs/core'\nimport { createElement, ReactNode, useCallback, useEffect, useRef, useState } from 'react'\n\ninterface WhenVisibleProps {\n children: ReactNode | (() => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data?: string | string[]\n params?: ReloadOptions\n buffer?: number\n as?: string\n always?: boolean\n}\n\nconst WhenVisible = ({ children, data, params, buffer, as, always, fallback }: WhenVisibleProps) => {\n always = always ?? false\n as = as ?? 'div'\n fallback = fallback ?? null\n\n const [loaded, setLoaded] = useState(false)\n const hasFetched = useRef<boolean>(false)\n const fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n\n const getReloadParams = useCallback<() => Partial<ReloadOptions>>(() => {\n if (data) {\n return {\n only: (Array.isArray(data) ? data : [data]) as string[],\n }\n }\n\n if (!params) {\n throw new Error('You must provide either a `data` or `params` prop.')\n }\n\n return params\n }, [params, data])\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (!always && hasFetched.current) {\n observer.disconnect()\n }\n\n if (fetching.current) {\n return\n }\n\n hasFetched.current = true\n fetching.current = true\n\n const reloadParams = getReloadParams()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.current = true\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n setLoaded(true)\n fetching.current = false\n reloadParams.onFinish?.(e)\n\n if (!always) {\n observer.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.observe(ref.current)\n\n return () => {\n observer.disconnect()\n }\n }, [ref, getReloadParams, buffer])\n\n const resolveChildren = () => (typeof children === 'function' ? children() : children)\n const resolveFallback = () => (typeof fallback === 'function' ? fallback() : fallback)\n\n if (always || !loaded) {\n return createElement(\n as,\n {\n props: null,\n ref,\n },\n loaded ? resolveChildren() : resolveFallback(),\n )\n }\n\n return loaded ? resolveChildren() : null\n}\n\nWhenVisible.displayName = 'InertiaWhenVisible'\n\nexport default WhenVisible\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Progress", "createContext", "current", "children", "router", "createElement", "progress", "router", "createElement", "useEffect", "useMemo", "useState", "useState", "useMemo", "useEffect", "router", "isEqual", "React", "createElement", "useEffect", "useMemo", "useRef", "useState", "router", "useEffect", "useMemo", "useState", "useEffect", "router", "useEffect", "useState", "useState", "progress", "data", "useMemo", "useEffect", "errors", "router", "defaults", "React", "useRef", "useMemo", "useState", "isEqual", "useEffect", "createElement", "React", "useEffect", "useMemo", "useMemo", "useEffect", "children", "React", "React", "createElement", "forwardRef", "useCallback", "useEffect", "useImperativeHandle", "useMemo", "useRef", "useState", "dataManager", "elementManager", "isUrlMethodPair", "mergeDataIntoQueryString", "router", "createElement", "forwardRef", "useEffect", "useMemo", "useRef", "useState", "noop", "forwardRef", "useState", "useRef", "useMemo", "isUrlMethodPair", "mergeDataIntoQueryString", "router", "useEffect", "createElement", "router", "useEffect", "useRef", "router", "useEffect", "useState", "router", "createElement", "useCallback", "useEffect", "useRef", "useState", "Progress", "router"]
|
|
7
7
|
}
|
package/dist/index.js
CHANGED
|
@@ -30,6 +30,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/index.ts
|
|
31
31
|
var index_exports = {};
|
|
32
32
|
__export(index_exports, {
|
|
33
|
+
App: () => App,
|
|
33
34
|
Deferred: () => Deferred_default,
|
|
34
35
|
Form: () => Form_default,
|
|
35
36
|
Head: () => Head_default,
|
|
@@ -49,10 +50,6 @@ __export(index_exports, {
|
|
|
49
50
|
module.exports = __toCommonJS(index_exports);
|
|
50
51
|
var import_core11 = require("@inertiajs/core");
|
|
51
52
|
|
|
52
|
-
// src/createInertiaApp.ts
|
|
53
|
-
var import_core2 = require("@inertiajs/core");
|
|
54
|
-
var import_react4 = require("react");
|
|
55
|
-
|
|
56
53
|
// src/App.ts
|
|
57
54
|
var import_core = require("@inertiajs/core");
|
|
58
55
|
var import_react3 = require("react");
|
|
@@ -152,6 +149,8 @@ function App({
|
|
|
152
149
|
App.displayName = "Inertia";
|
|
153
150
|
|
|
154
151
|
// src/createInertiaApp.ts
|
|
152
|
+
var import_core2 = require("@inertiajs/core");
|
|
153
|
+
var import_react4 = require("react");
|
|
155
154
|
async function createInertiaApp({
|
|
156
155
|
id = "app",
|
|
157
156
|
resolve,
|
|
@@ -216,9 +215,9 @@ async function createInertiaApp({
|
|
|
216
215
|
var import_react6 = require("react");
|
|
217
216
|
|
|
218
217
|
// src/usePage.ts
|
|
219
|
-
var import_react5 = require("react");
|
|
218
|
+
var import_react5 = __toESM(require("react"), 1);
|
|
220
219
|
function usePage() {
|
|
221
|
-
const page = (
|
|
220
|
+
const page = typeof import_react5.default.use === "function" ? import_react5.default.use(PageContext_default) : import_react5.default.useContext(PageContext_default);
|
|
222
221
|
if (!page) {
|
|
223
222
|
throw new Error("usePage must be used within the Inertia component");
|
|
224
223
|
}
|
|
@@ -630,6 +629,7 @@ var Form = (0, import_react11.forwardRef)(
|
|
|
630
629
|
);
|
|
631
630
|
const submitOptions = {
|
|
632
631
|
headers,
|
|
632
|
+
queryStringArrayFormat,
|
|
633
633
|
errorBag,
|
|
634
634
|
showProgress,
|
|
635
635
|
invalidateCacheTags,
|
|
@@ -1208,8 +1208,10 @@ var Link = (0, import_react14.forwardRef)(
|
|
|
1208
1208
|
}
|
|
1209
1209
|
},
|
|
1210
1210
|
onMouseUp: (event) => {
|
|
1211
|
-
|
|
1212
|
-
|
|
1211
|
+
if ((0, import_core7.shouldIntercept)(event)) {
|
|
1212
|
+
event.preventDefault();
|
|
1213
|
+
import_core7.router.visit(url, visitParams);
|
|
1214
|
+
}
|
|
1213
1215
|
},
|
|
1214
1216
|
onKeyUp: (event) => {
|
|
1215
1217
|
if ((0, import_core7.shouldNavigate)(event)) {
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts", "../src/
|
|
4
|
-
"sourcesContent": ["import { config as coreConfig, progress as Progress, router as Router } from '@inertiajs/core'\nimport { ReactInertiaAppConfig } from './types'\n\nexport const progress = Progress\nexport const router = Router\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './Deferred'\nexport { default as Form } from './Form'\nexport { default as Head } from './Head'\nexport { default as InfiniteScroll } from './InfiniteScroll'\nexport { InertiaLinkProps, default as Link } from './Link'\nexport {\n InertiaFormProps,\n SetDataAction,\n SetDataByKeyValuePair,\n SetDataByMethod,\n SetDataByObject,\n default as useForm,\n} from './useForm'\nexport { default as usePage } from './usePage'\nexport { default as usePoll } from './usePoll'\nexport { default as usePrefetch } from './usePrefetch'\nexport { default as useRemember } from './useRemember'\nexport { default as WhenVisible } from './WhenVisible'\n\nexport const config = coreConfig.extend<ReactInertiaAppConfig>()\n", "import {\n CreateInertiaAppOptionsForCSR,\n CreateInertiaAppOptionsForSSR,\n InertiaAppResponse,\n InertiaAppSSRResponse,\n PageProps,\n router,\n setupProgress,\n} from '@inertiajs/core'\nimport { ReactElement, createElement } from 'react'\nimport { renderToString } from 'react-dom/server'\nimport App, { InertiaAppProps, type InertiaApp } from './App'\nimport { config } from './index'\nimport { ReactComponent, ReactInertiaAppConfig } from './types'\n\nexport type SetupOptions<ElementType, SharedProps extends PageProps> = {\n el: ElementType\n App: InertiaApp\n props: InertiaAppProps<SharedProps>\n}\n\n// The 'unknown' type is necessary for backwards compatibility...\ntype ComponentResolver = (\n name: string,\n) => ReactComponent | Promise<ReactComponent> | { default: ReactComponent } | unknown\n\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForCSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<HTMLElement, SharedProps>,\n void,\n ReactInertiaAppConfig\n>\n\ntype InertiaAppOptionsForSSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForSSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<null, SharedProps>,\n ReactElement,\n ReactInertiaAppConfig\n> & {\n render: typeof renderToString\n}\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<void>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<InertiaAppSSRResponse>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>({\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n defaults = {},\n}: InertiaAppOptionsForCSR<SharedProps> | InertiaAppOptionsForSSR<SharedProps>): InertiaAppResponse {\n config.replace(defaults)\n\n const isServer = typeof window === 'undefined'\n const el = isServer ? null : document.getElementById(id)\n const initialPage = page || JSON.parse(el?.dataset.page || '{}')\n\n // @ts-expect-error - This can be improved once we remove the 'unknown' type from the resolver...\n const resolveComponent = (name) => Promise.resolve(resolve(name)).then((module) => module.default || module)\n\n let head: string[] = []\n\n const reactApp = await Promise.all([\n resolveComponent(initialPage.component),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n const props = {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n }\n\n if (isServer) {\n const ssrSetup = setup as (options: SetupOptions<null, SharedProps>) => ReactElement\n\n return ssrSetup({\n el: null,\n App,\n props: { ...props, onHeadUpdate: (elements: string[]) => (head = elements) },\n })\n }\n\n const csrSetup = setup as (options: SetupOptions<HTMLElement, SharedProps>) => void\n\n return csrSetup({\n el: el as HTMLElement,\n App,\n props,\n })\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer && render) {\n const body = await render(\n createElement(\n 'div',\n {\n id,\n 'data-page': JSON.stringify(initialPage),\n },\n reactApp as ReactElement,\n ),\n )\n\n return { head, body }\n }\n}\n", "import {\n createHeadManager,\n HeadManagerOnUpdateCallback,\n HeadManagerTitleCallback,\n Page,\n PageHandler,\n PageProps,\n router,\n} from '@inertiajs/core'\nimport { createElement, FunctionComponent, ReactNode, useEffect, useMemo, useState } from 'react'\nimport HeadContext from './HeadContext'\nimport PageContext from './PageContext'\nimport { LayoutFunction, ReactComponent, ReactPageHandlerArgs } from './types'\n\nlet currentIsInitialPage = true\nlet routerIsInitialized = false\nlet swapComponent: PageHandler<ReactComponent> = async () => {\n // Dummy function so we can init the router outside of the useEffect hook. This is\n // needed so `router.reload()` works right away (on mount) in any of the user's\n // components. We swap in the real function in the useEffect hook below.\n currentIsInitialPage = false\n}\n\ntype CurrentPage = {\n component: ReactComponent | null\n page: Page\n key: number | null\n}\n\nexport interface InertiaAppProps<SharedProps extends PageProps = PageProps> {\n children?: (options: { Component: ReactComponent; props: PageProps; key: number | null }) => ReactNode\n initialPage: Page<SharedProps>\n initialComponent?: ReactComponent\n resolveComponent?: (name: string) => ReactComponent | Promise<ReactComponent>\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdateCallback\n}\n\nexport type InertiaApp = FunctionComponent<InertiaAppProps>\n\nexport default function App<SharedProps extends PageProps = PageProps>({\n children,\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n}: InertiaAppProps<SharedProps>) {\n const [current, setCurrent] = useState<CurrentPage>({\n component: initialComponent || null,\n page: initialPage,\n key: null,\n })\n\n const headManager = useMemo(() => {\n return createHeadManager(\n typeof window === 'undefined',\n titleCallback || ((title) => title),\n onHeadUpdate || (() => {}),\n )\n }, [])\n\n if (!routerIsInitialized) {\n router.init<ReactComponent>({\n initialPage,\n resolveComponent: resolveComponent!,\n swapComponent: async (args) => swapComponent(args),\n })\n\n routerIsInitialized = true\n }\n\n useEffect(() => {\n swapComponent = async ({ component, page, preserveState }: ReactPageHandlerArgs) => {\n if (currentIsInitialPage) {\n // We block setting the current page on the initial page to\n // prevent the initial page from being re-rendered again.\n currentIsInitialPage = false\n return\n }\n\n setCurrent((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\n }))\n }\n\n router.on('navigate', () => headManager.forceUpdate())\n }, [])\n\n if (!current.component) {\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(PageContext.Provider, { value: current.page }, null),\n )\n }\n\n const renderChildren =\n children ||\n (({ Component, props, key }) => {\n const child = createElement(Component, { key, ...props })\n\n if (typeof Component.layout === 'function') {\n return (Component.layout as LayoutFunction)(child)\n }\n\n if (Array.isArray(Component.layout)) {\n return (Component.layout as any)\n .concat(child)\n .reverse()\n .reduce((children: any, Layout: any) => createElement(Layout, { children, ...props }))\n }\n\n return child\n })\n\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(\n PageContext.Provider,\n { value: current.page },\n renderChildren({\n Component: current.component,\n key: current.key,\n props: current.page.props,\n }),\n ),\n )\n}\n\nApp.displayName = 'Inertia'\n", "import { HeadManager } from '@inertiajs/core'\nimport { createContext } from 'react'\n\nconst headContext = createContext<HeadManager | null>(null)\nheadContext.displayName = 'InertiaHeadContext'\n\nexport default headContext\n", "import { Page } from '@inertiajs/core'\nimport { createContext } from 'react'\n\nconst pageContext = createContext<Page | null>(null)\npageContext.displayName = 'InertiaPageContext'\n\nexport default pageContext\n", "import { ReactNode, useEffect, useMemo, useState } from 'react'\nimport { router } from '.'\nimport usePage from './usePage'\n\nconst urlWithoutHash = (url: URL | Location): URL => {\n url = new URL(url.href)\n url.hash = ''\n\n return url\n}\n\nconst isSameUrlWithoutHash = (url1: URL | Location, url2: URL | Location): boolean => {\n return urlWithoutHash(url1).href === urlWithoutHash(url2).href\n}\n\ninterface DeferredProps {\n children: ReactNode | (() => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data: string | string[]\n}\n\nconst Deferred = ({ children, data, fallback }: DeferredProps) => {\n if (!data) {\n throw new Error('`<Deferred>` requires a `data` prop to be a string or array of strings')\n }\n\n const [loaded, setLoaded] = useState(false)\n const pageProps = usePage().props\n const keys = useMemo(() => (Array.isArray(data) ? data : [data]), [data])\n\n useEffect(() => {\n const removeListener = router.on('start', (e) => {\n const isPartialVisit = e.detail.visit.only.length > 0 || e.detail.visit.except.length > 0\n const isReloadingKey = e.detail.visit.only.find((key) => keys.includes(key))\n\n if (isSameUrlWithoutHash(e.detail.visit.url, window.location) && (!isPartialVisit || isReloadingKey)) {\n setLoaded(false)\n }\n })\n\n return () => {\n removeListener()\n }\n }, [])\n\n useEffect(() => {\n setLoaded(keys.every((key) => pageProps[key] !== undefined))\n }, [pageProps, keys])\n\n if (loaded) {\n return typeof children === 'function' ? children() : children\n }\n\n return typeof fallback === 'function' ? fallback() : fallback\n}\n\nDeferred.displayName = 'InertiaDeferred'\n\nexport default Deferred\n", "import { Page, PageProps, SharedPageProps } from '@inertiajs/core'\nimport { useContext } from 'react'\nimport PageContext from './PageContext'\n\nexport default function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps & SharedPageProps> {\n const page = useContext(PageContext)\n\n if (!page) {\n throw new Error('usePage must be used within the Inertia component')\n }\n\n return page as Page<TPageProps & SharedPageProps>\n}\n", "import {\n FormComponentProps,\n FormComponentRef,\n FormComponentSlotProps,\n FormDataConvertible,\n formDataToObject,\n isUrlMethodPair,\n mergeDataIntoQueryString,\n Method,\n resetFormFields,\n VisitOptions,\n} from '@inertiajs/core'\nimport { isEqual } from 'lodash-es'\nimport React, {\n createElement,\n FormEvent,\n forwardRef,\n ReactNode,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport useForm from './useForm'\n\n// Polyfill for startTransition to support React 16.9+\nconst deferStateUpdate = (callback: () => void) => {\n typeof React.startTransition === 'function' ? React.startTransition(callback) : setTimeout(callback, 0)\n}\n\ntype ComponentProps = (FormComponentProps &\n Omit<React.FormHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> &\n Omit<React.AllHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'>) & {\n children: ReactNode | ((props: FormComponentSlotProps) => ReactNode)\n}\n\ntype FormSubmitOptions = Omit<VisitOptions, 'data' | 'onPrefetched' | 'onPrefetching'>\n\nconst noop = () => undefined\n\nconst Form = forwardRef<FormComponentRef, ComponentProps>(\n (\n {\n action = '',\n method = 'get',\n headers = {},\n queryStringArrayFormat = 'brackets',\n errorBag = null,\n showProgress = true,\n transform = (data) => data,\n options = {},\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onBefore = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n onCancelToken = noop,\n onSubmitComplete = noop,\n disableWhileProcessing = false,\n resetOnError = false,\n resetOnSuccess = false,\n setDefaultsOnSuccess = false,\n invalidateCacheTags = [],\n children,\n ...props\n },\n ref,\n ) => {\n const form = useForm<Record<string, any>>({})\n const formElement = useRef<HTMLFormElement>(undefined)\n\n const resolvedMethod = useMemo(() => {\n return isUrlMethodPair(action) ? action.method : (method.toLowerCase() as Method)\n }, [action, method])\n\n const [isDirty, setIsDirty] = useState(false)\n const defaultData = useRef<FormData>(new FormData())\n\n const getFormData = (): FormData => new FormData(formElement.current)\n\n // Convert the FormData to an object because we can't compare two FormData\n // instances directly (which is needed for isDirty), mergeDataIntoQueryString()\n // expects an object, and submitting a FormData instance directly causes problems with nested objects.\n const getData = (): Record<string, FormDataConvertible> => formDataToObject(getFormData())\n\n const updateDirtyState = (event: Event) =>\n deferStateUpdate(() =>\n setIsDirty(event.type === 'reset' ? false : !isEqual(getData(), formDataToObject(defaultData.current))),\n )\n\n useEffect(() => {\n defaultData.current = getFormData()\n\n const formEvents: Array<keyof HTMLElementEventMap> = ['input', 'change', 'reset']\n\n formEvents.forEach((e) => formElement.current!.addEventListener(e, updateDirtyState))\n\n return () => formEvents.forEach((e) => formElement.current?.removeEventListener(e, updateDirtyState))\n }, [])\n\n const reset = (...fields: string[]) => {\n if (formElement.current) {\n resetFormFields(formElement.current, defaultData.current, fields)\n }\n }\n\n const resetAndClearErrors = (...fields: string[]) => {\n form.clearErrors(...fields)\n reset(...fields)\n }\n\n const maybeReset = (resetOption: boolean | string[]) => {\n if (!resetOption) {\n return\n }\n\n if (resetOption === true) {\n reset()\n } else if (resetOption.length > 0) {\n reset(...resetOption)\n }\n }\n\n const submit = () => {\n const [url, _data] = mergeDataIntoQueryString(\n resolvedMethod,\n isUrlMethodPair(action) ? action.url : action,\n getData(),\n queryStringArrayFormat,\n )\n\n const submitOptions: FormSubmitOptions = {\n headers,\n errorBag,\n showProgress,\n invalidateCacheTags,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess: (...args) => {\n onSuccess(...args)\n onSubmitComplete({\n reset,\n defaults,\n })\n maybeReset(resetOnSuccess)\n\n if (setDefaultsOnSuccess === true) {\n defaults()\n }\n },\n onError(...args) {\n onError(...args)\n maybeReset(resetOnError)\n },\n ...options,\n }\n\n form.transform(() => transform(_data))\n form.submit(resolvedMethod, url, submitOptions)\n }\n\n const defaults = () => {\n defaultData.current = getFormData()\n setIsDirty(false)\n }\n\n const exposed = () => ({\n errors: form.errors,\n hasErrors: form.hasErrors,\n processing: form.processing,\n progress: form.progress,\n wasSuccessful: form.wasSuccessful,\n recentlySuccessful: form.recentlySuccessful,\n isDirty,\n clearErrors: form.clearErrors,\n resetAndClearErrors,\n setError: form.setError,\n reset,\n submit,\n defaults,\n getData,\n getFormData,\n })\n\n useImperativeHandle(ref, exposed, [form, isDirty, submit])\n\n return createElement(\n 'form',\n {\n ...props,\n ref: formElement,\n action: isUrlMethodPair(action) ? action.url : action,\n method: resolvedMethod,\n onSubmit: (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n submit()\n },\n // Only React 19 supports passing a boolean to the `inert` attribute.\n // To support earlier versions as well, we use the string 'true'.\n // Unfortunately, React 19 treats an empty string as `false`.\n // See: https://github.com/inertiajs/inertia/pull/2536\n inert: disableWhileProcessing && form.processing && 'true',\n },\n typeof children === 'function' ? children(exposed()) : children,\n )\n },\n)\n\nForm.displayName = 'InertiaForm'\n\nexport default Form\n", "import {\n CancelToken,\n Errors,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n Method,\n Progress,\n RequestPayload,\n router,\n UrlMethodPair,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep, get, has, isEqual, set } from 'lodash-es'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { config } from '.'\nimport { useIsomorphicLayoutEffect } from './react'\nimport useRemember from './useRemember'\n\nexport type SetDataByObject<TForm> = (data: Partial<TForm>) => void\nexport type SetDataByMethod<TForm> = (data: (previousData: TForm) => TForm) => void\nexport type SetDataByKeyValuePair<TForm> = <K extends FormDataKeys<TForm>>(\n key: K,\n value: FormDataValues<TForm, K>,\n) => void\nexport type SetDataAction<TForm extends Record<any, any>> = SetDataByObject<TForm> &\n SetDataByMethod<TForm> &\n SetDataByKeyValuePair<TForm>\n\ntype FormOptions = Omit<VisitOptions, 'data'>\ntype SubmitArgs = [Method, string, FormOptions?] | [UrlMethodPair, FormOptions?]\ntype TransformCallback<TForm> = (data: TForm) => object\n\nexport interface InertiaFormProps<TForm extends object> {\n data: TForm\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n setData: SetDataAction<TForm>\n transform: (callback: TransformCallback<TForm>) => void\n setDefaults(): void\n setDefaults<T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n setDefaults(fields: Partial<TForm>): void\n reset<K extends FormDataKeys<TForm>>(...fields: K[]): void\n clearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): void\n resetAndClearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): void\n setError<K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n setError(errors: FormDataErrors<TForm>): void\n submit: (...args: SubmitArgs) => void\n get: (url: string, options?: FormOptions) => void\n patch: (url: string, options?: FormOptions) => void\n post: (url: string, options?: FormOptions) => void\n put: (url: string, options?: FormOptions) => void\n delete: (url: string, options?: FormOptions) => void\n cancel: () => void\n}\nexport default function useForm<TForm extends FormDataType<TForm>>(\n initialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKey: string,\n initialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKeyOrInitialValues?: string | TForm | (() => TForm),\n maybeInitialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm> {\n const isMounted = useRef(false)\n const rememberKey = typeof rememberKeyOrInitialValues === 'string' ? rememberKeyOrInitialValues : null\n const [defaults, setDefaults] = useState(\n (typeof rememberKeyOrInitialValues === 'string' ? maybeInitialValues : rememberKeyOrInitialValues) || ({} as TForm),\n )\n const cancelToken = useRef<CancelToken | null>(null)\n const recentlySuccessfulTimeoutId = useRef<number>(undefined)\n const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`) : useState(defaults)\n const [errors, setErrors] = rememberKey\n ? useRemember({} as FormDataErrors<TForm>, `${rememberKey}:errors`)\n : useState({} as FormDataErrors<TForm>)\n const [hasErrors, setHasErrors] = useState(false)\n const [processing, setProcessing] = useState(false)\n const [progress, setProgress] = useState<Progress | null>(null)\n const [wasSuccessful, setWasSuccessful] = useState(false)\n const [recentlySuccessful, setRecentlySuccessful] = useState(false)\n const transform = useRef<TransformCallback<TForm>>((data) => data)\n const isDirty = useMemo(() => !isEqual(data, defaults), [data, defaults])\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n // Track if setDefaults was called manually during onSuccess to avoid\n // overriding user's custom defaults with automatic behavior.\n const setDefaultsCalledInOnSuccess = useRef(false)\n\n const submit = useCallback(\n (...args: SubmitArgs) => {\n const objectPassed = args[0] !== null && typeof args[0] === 'object'\n\n const method = objectPassed ? args[0].method : (args[0] as Method)\n const url = objectPassed ? args[0].url : (args[1] as string)\n const options = (objectPassed ? args[1] : args[2]) ?? {}\n\n setDefaultsCalledInOnSuccess.current = false\n\n const _options: VisitOptions = {\n ...options,\n onCancelToken: (token) => {\n cancelToken.current = token\n\n if (options.onCancelToken) {\n return options.onCancelToken(token)\n }\n },\n onBefore: (visit) => {\n setWasSuccessful(false)\n setRecentlySuccessful(false)\n clearTimeout(recentlySuccessfulTimeoutId.current)\n\n if (options.onBefore) {\n return options.onBefore(visit)\n }\n },\n onStart: (visit) => {\n setProcessing(true)\n\n if (options.onStart) {\n return options.onStart(visit)\n }\n },\n onProgress: (event) => {\n setProgress(event || null)\n\n if (options.onProgress) {\n return options.onProgress(event)\n }\n },\n onSuccess: async (page) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors({} as FormDataErrors<TForm>)\n setHasErrors(false)\n setWasSuccessful(true)\n setRecentlySuccessful(true)\n recentlySuccessfulTimeoutId.current = setTimeout(() => {\n if (isMounted.current) {\n setRecentlySuccessful(false)\n }\n }, config.get('form.recentlySuccessfulDuration'))\n }\n\n const onSuccess = options.onSuccess ? await options.onSuccess(page) : null\n\n if (isMounted.current && !setDefaultsCalledInOnSuccess.current) {\n setData((data) => {\n setDefaults(cloneDeep(data))\n return data\n })\n }\n\n return onSuccess\n },\n onError: (errors) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors(errors as FormDataErrors<TForm>)\n setHasErrors(true)\n }\n\n if (options.onError) {\n return options.onError(errors)\n }\n },\n onCancel: () => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n if (options.onCancel) {\n return options.onCancel()\n }\n },\n onFinish: (visit) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n cancelToken.current = null\n\n if (options.onFinish) {\n return options.onFinish(visit)\n }\n },\n }\n\n const transformedData = transform.current(data) as RequestPayload\n\n if (method === 'delete') {\n router.delete(url, { ..._options, data: transformedData })\n } else {\n router[method](url, transformedData, _options)\n }\n },\n [data, setErrors, transform],\n )\n\n const setDataFunction = useCallback(\n (keyOrData: FormDataKeys<TForm> | Function | Partial<TForm>, maybeValue?: any) => {\n if (typeof keyOrData === 'string') {\n setData((data) => set(cloneDeep(data), keyOrData, maybeValue))\n } else if (typeof keyOrData === 'function') {\n setData((data) => keyOrData(data))\n } else {\n setData(keyOrData as TForm)\n }\n },\n [setData],\n )\n\n const [dataAsDefaults, setDataAsDefaults] = useState(false)\n\n const dataRef = useRef(data)\n\n useEffect(() => {\n dataRef.current = data\n })\n\n const setDefaultsFunction = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) => {\n setDefaultsCalledInOnSuccess.current = true\n\n if (typeof fieldOrFields === 'undefined') {\n setDefaults(dataRef.current)\n // If setData was called right before setDefaults, data was not\n // updated in that render yet, so we set a flag to update\n // defaults right after the next render.\n setDataAsDefaults(true)\n } else {\n setDefaults((defaults) => {\n return typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign(cloneDeep(defaults), fieldOrFields)\n })\n }\n },\n [setDefaults],\n )\n\n useIsomorphicLayoutEffect(() => {\n if (!dataAsDefaults) {\n return\n }\n\n if (isDirty) {\n // Data has been updated in this next render and is different from\n // the defaults, so now we can set defaults to the current data.\n setDefaults(data)\n }\n\n setDataAsDefaults(false)\n }, [dataAsDefaults])\n\n const reset = useCallback(\n (...fields: string[]) => {\n if (fields.length === 0) {\n setData(defaults)\n } else {\n setData((data) =>\n (fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(defaults, key))\n .reduce(\n (carry, key) => {\n return set(carry, key, get(defaults, key))\n },\n { ...data } as TForm,\n ),\n )\n }\n },\n [setData, defaults],\n )\n\n const setError = useCallback(\n (fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: string) => {\n setErrors((errors) => {\n const newErrors = {\n ...errors,\n ...(typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields),\n }\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\n )\n\n const clearErrors = useCallback(\n (...fields: string[]) => {\n setErrors((errors) => {\n const newErrors = Object.keys(errors).reduce(\n (carry, field) => ({\n ...carry,\n ...(fields.length > 0 && !fields.includes(field) ? { [field]: (errors as Errors)[field] } : {}),\n }),\n {},\n )\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors as FormDataErrors<TForm>\n })\n },\n [setErrors, setHasErrors],\n )\n\n const resetAndClearErrors = useCallback(\n (...fields: string[]) => {\n reset(...fields)\n clearErrors(...fields)\n },\n [reset, clearErrors],\n )\n\n const createSubmitMethod =\n (method: Method) =>\n (url: string, options: VisitOptions = {}) => {\n submit(method, url, options)\n }\n const getMethod = useCallback(createSubmitMethod('get'), [submit])\n const post = useCallback(createSubmitMethod('post'), [submit])\n const put = useCallback(createSubmitMethod('put'), [submit])\n const patch = useCallback(createSubmitMethod('patch'), [submit])\n const deleteMethod = useCallback(createSubmitMethod('delete'), [submit])\n\n const cancel = useCallback(() => {\n if (cancelToken.current) {\n cancelToken.current.cancel()\n }\n }, [])\n\n const transformFunction = useCallback((callback: TransformCallback<TForm>) => {\n transform.current = callback\n }, [])\n\n return {\n data,\n setData: setDataFunction,\n isDirty,\n errors,\n hasErrors,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n transform: transformFunction,\n setDefaults: setDefaultsFunction,\n reset,\n setError,\n clearErrors,\n resetAndClearErrors,\n submit,\n get: getMethod,\n post,\n put,\n patch,\n delete: deleteMethod,\n cancel,\n }\n}\n", "import { DependencyList, EffectCallback, useEffect, useLayoutEffect } from 'react'\n\n// Inspired by react-redux, this hook uses useLayoutEffect in the browser, and useEffect\n// when using SSR. Currently, useLayoutEffect doesn't work when rendered on the server.\nexport function useIsomorphicLayoutEffect(effect: EffectCallback, deps?: DependencyList): void {\n typeof window === 'undefined' ? useEffect(effect, deps) : useLayoutEffect(effect, deps)\n}\n", "import { router } from '@inertiajs/core'\nimport { Dispatch, SetStateAction, useEffect, useState } from 'react'\n\nexport default function useRemember<State>(\n initialState: State,\n key?: string,\n): [State, Dispatch<SetStateAction<State>>] {\n const [state, setState] = useState(() => {\n const restored = router.restore(key) as State\n\n return restored !== undefined ? restored : initialState\n })\n\n useEffect(() => {\n router.remember(state, key)\n }, [state, key])\n\n return [state, setState]\n}\n", "import { escape } from 'lodash-es'\nimport React, { FunctionComponent, ReactElement, ReactNode, useContext, useEffect, useMemo } from 'react'\nimport HeadContext from './HeadContext'\n\ntype InertiaHeadProps = {\n title?: string\n children?: ReactNode\n}\n\ntype InertiaHead = FunctionComponent<InertiaHeadProps>\n\nconst Head: InertiaHead = function ({ children, title }) {\n const headManager = useContext(HeadContext)\n const provider = useMemo(() => headManager!.createProvider(), [headManager])\n const isServer = typeof window === 'undefined'\n\n useEffect(() => {\n provider.reconnect()\n provider.update(renderNodes(children))\n return () => {\n provider.disconnect()\n }\n }, [provider, children, title])\n\n function isUnaryTag(node: ReactElement<any>) {\n return (\n typeof node.type === 'string' &&\n [\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n ].indexOf(node.type) > -1\n )\n }\n\n function renderTagStart(node: ReactElement<any>): string {\n const attrs = Object.keys(node.props).reduce((carry, name) => {\n if (['head-key', 'children', 'dangerouslySetInnerHTML'].includes(name)) {\n return carry\n }\n\n const value = String(node.props[name])\n\n if (value === '') {\n return carry + ` ${name}`\n }\n\n return carry + ` ${name}=\"${escape(value)}\"`\n }, '')\n\n return `<${String(node.type)}${attrs}>`\n }\n\n function renderTagChildren(node: ReactElement<any>): string {\n const { children } = node.props\n\n if (typeof children === 'string') {\n return children\n }\n\n if (Array.isArray(children)) {\n return children.reduce((html, child) => html + renderTag(child), '')\n }\n\n return ''\n }\n\n function renderTag(node: ReactElement<any>): string {\n let html = renderTagStart(node)\n\n if (node.props.children) {\n html += renderTagChildren(node)\n }\n\n if (node.props.dangerouslySetInnerHTML) {\n html += node.props.dangerouslySetInnerHTML.__html\n }\n\n if (!isUnaryTag(node)) {\n html += `</${String(node.type)}>`\n }\n\n return html\n }\n\n function ensureNodeHasInertiaProp(node: ReactElement<any>) {\n return React.cloneElement(node, {\n [provider.preferredAttribute()]: node.props['head-key'] !== undefined ? node.props['head-key'] : '',\n })\n }\n\n function renderNode(node: ReactElement<any>) {\n return renderTag(ensureNodeHasInertiaProp(node))\n }\n\n function renderNodes(nodes: ReactNode) {\n const elements = React.Children.toArray(nodes)\n .filter((node) => node)\n .map((node) => renderNode(node as ReactElement<any>))\n\n if (title && !elements.find((tag) => tag.startsWith('<title'))) {\n elements.push(`<title ${provider.preferredAttribute()}>${title}</title>`)\n }\n\n return elements\n }\n\n if (isServer) {\n provider.update(renderNodes(children))\n }\n\n return null\n}\nexport default Head\n", "import {\n getScrollableParent,\n InfiniteScrollActionSlotProps,\n InfiniteScrollComponentBaseProps,\n InfiniteScrollRef,\n InfiniteScrollSlotProps,\n useInfiniteScroll,\n UseInfiniteScrollProps,\n} from '@inertiajs/core'\nimport React, {\n createElement,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nconst resolveHTMLElement = (\n value: string | React.RefObject<HTMLElement | null> | null,\n fallback: HTMLElement | null,\n): HTMLElement | null => {\n if (!value) {\n return fallback\n }\n\n // React ref object { current: HTMLElement | null }\n if (value && typeof value === 'object' && 'current' in value) {\n return value.current\n }\n\n // CSS Selector string\n if (typeof value === 'string') {\n return document.querySelector(value) as HTMLElement | null\n }\n\n return fallback\n}\n\n// Helper function to render slot content\nconst renderSlot = (\n slotContent: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode) | undefined,\n slotProps: InfiniteScrollActionSlotProps,\n fallback: React.ReactNode = null,\n): React.ReactNode => {\n if (!slotContent) {\n return fallback\n }\n\n return typeof slotContent === 'function' ? slotContent(slotProps) : slotContent\n}\n\ninterface ComponentProps\n extends InfiniteScrollComponentBaseProps,\n Omit<React.HTMLAttributes<HTMLElement>, keyof InfiniteScrollComponentBaseProps | 'children'> {\n children?: React.ReactNode | ((props: InfiniteScrollSlotProps) => React.ReactNode)\n\n // Element references for custom trigger detection (when you want different trigger elements)\n startElement?: string | React.RefObject<HTMLElement | null>\n endElement?: string | React.RefObject<HTMLElement | null>\n itemsElement?: string | React.RefObject<HTMLElement | null>\n\n // Render slots for UI components (when you want custom loading/action components)\n previous?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n next?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n loading?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n\n onlyNext?: boolean\n onlyPrevious?: boolean\n}\n\nconst InfiniteScroll = forwardRef<InfiniteScrollRef, ComponentProps>(\n (\n {\n data,\n buffer = 0,\n as = 'div',\n manual = false,\n manualAfter = 0,\n preserveUrl = false,\n reverse = false,\n autoScroll,\n children,\n startElement,\n endElement,\n itemsElement,\n previous,\n next,\n loading,\n onlyNext = false,\n onlyPrevious = false,\n ...props\n },\n ref,\n ) => {\n const [startElementFromRef, setStartElementFromRef] = useState<HTMLElement | null>(null)\n const startElementRef = useCallback((node: HTMLElement | null) => setStartElementFromRef(node), [])\n\n const [endElementFromRef, setEndElementFromRef] = useState<HTMLElement | null>(null)\n const endElementRef = useCallback((node: HTMLElement | null) => setEndElementFromRef(node), [])\n\n const [itemsElementFromRef, setItemsElementFromRef] = useState<HTMLElement | null>(null)\n const itemsElementRef = useCallback((node: HTMLElement | null) => setItemsElementFromRef(node), [])\n\n const [loadingPrevious, setLoadingPrevious] = useState(false)\n const [loadingNext, setLoadingNext] = useState(false)\n const [requestCount, setRequestCount] = useState(0)\n\n const [resolvedStartElement, setResolvedStartElement] = useState<HTMLElement | null>(null)\n const [resolvedEndElement, setResolvedEndElement] = useState<HTMLElement | null>(null)\n const [resolvedItemsElement, setResolvedItemsElement] = useState<HTMLElement | null>(null)\n\n // Update elements when refs or props change\n useEffect(() => {\n const element = startElement ? resolveHTMLElement(startElement, startElementFromRef) : startElementFromRef\n setResolvedStartElement(element)\n }, [startElement, startElementFromRef])\n\n useEffect(() => {\n const element = endElement ? resolveHTMLElement(endElement, endElementFromRef) : endElementFromRef\n setResolvedEndElement(element)\n }, [endElement, endElementFromRef])\n\n useEffect(() => {\n const element = itemsElement ? resolveHTMLElement(itemsElement, itemsElementFromRef) : itemsElementFromRef\n setResolvedItemsElement(element)\n }, [itemsElement, itemsElementFromRef])\n\n const scrollableParent = useMemo(() => getScrollableParent(resolvedItemsElement), [resolvedItemsElement])\n\n const callbackPropsRef = useRef({\n buffer,\n onlyNext,\n onlyPrevious,\n reverse,\n preserveUrl,\n })\n\n callbackPropsRef.current = {\n buffer,\n onlyNext,\n onlyPrevious,\n reverse,\n preserveUrl,\n }\n\n const [infiniteScroll, setInfiniteScroll] = useState<UseInfiniteScrollProps | null>(null)\n\n const dataManager = useMemo(() => infiniteScroll?.dataManager, [infiniteScroll])\n const elementManager = useMemo(() => infiniteScroll?.elementManager, [infiniteScroll])\n\n const scrollToBottom = useCallback(() => {\n if (scrollableParent) {\n scrollableParent.scrollTo({\n top: scrollableParent.scrollHeight,\n behavior: 'instant',\n })\n } else {\n window.scrollTo({\n top: document.body.scrollHeight,\n behavior: 'instant',\n })\n }\n }, [scrollableParent])\n\n // Main setup effect - only recreate when structural dependencies change\n useEffect(() => {\n if (!resolvedItemsElement) {\n return\n }\n\n const infiniteScrollInstance = useInfiniteScroll({\n // Data\n getPropName: () => data,\n inReverseMode: () => callbackPropsRef.current.reverse,\n shouldFetchNext: () => !callbackPropsRef.current.onlyPrevious,\n shouldFetchPrevious: () => !callbackPropsRef.current.onlyNext,\n shouldPreserveUrl: () => callbackPropsRef.current.preserveUrl,\n\n // Elements\n getTriggerMargin: () => callbackPropsRef.current.buffer,\n getStartElement: () => resolvedStartElement!,\n getEndElement: () => resolvedEndElement!,\n getItemsElement: () => resolvedItemsElement,\n getScrollableParent: () => scrollableParent,\n\n // Callbacks\n onBeforePreviousRequest: () => setLoadingPrevious(true),\n onBeforeNextRequest: () => setLoadingNext(true),\n onCompletePreviousRequest: () => {\n setLoadingPrevious(false)\n setRequestCount(infiniteScrollInstance.dataManager.getRequestCount())\n },\n onCompleteNextRequest: () => {\n setLoadingNext(false)\n setRequestCount(infiniteScrollInstance.dataManager.getRequestCount())\n },\n })\n\n setInfiniteScroll(infiniteScrollInstance)\n const { dataManager, elementManager } = infiniteScrollInstance\n\n setRequestCount(dataManager.getRequestCount())\n\n elementManager.setupObservers()\n elementManager.processServerLoadedElements(dataManager.getLastLoadedPage())\n\n if (autoLoad) {\n elementManager.enableTriggers()\n }\n\n return () => {\n infiniteScrollInstance.flush()\n setInfiniteScroll(null)\n }\n }, [data, resolvedItemsElement, resolvedStartElement, resolvedEndElement, scrollableParent])\n\n const manualMode = useMemo(\n () => manual || (manualAfter > 0 && requestCount >= manualAfter),\n [manual, manualAfter, requestCount],\n )\n const autoLoad = useMemo(() => !manualMode, [manualMode])\n\n useEffect(() => {\n autoLoad ? elementManager?.enableTriggers() : elementManager?.disableTriggers()\n }, [autoLoad, onlyNext, onlyPrevious, resolvedStartElement, resolvedEndElement])\n\n useEffect(() => {\n // autoScroll defaults to reverse value if not explicitly set\n const shouldAutoScroll = autoScroll !== undefined ? autoScroll : reverse\n\n if (shouldAutoScroll) {\n scrollToBottom()\n }\n }, [scrollableParent])\n\n useImperativeHandle(\n ref,\n () => ({\n fetchNext: dataManager?.fetchNext || (() => {}),\n fetchPrevious: dataManager?.fetchPrevious || (() => {}),\n hasPrevious: dataManager?.hasPrevious || (() => false),\n hasNext: dataManager?.hasNext || (() => false),\n }),\n [dataManager],\n )\n\n const headerAutoMode = autoLoad && !onlyNext\n const footerAutoMode = autoLoad && !onlyPrevious\n\n const sharedExposed: Pick<\n InfiniteScrollActionSlotProps,\n 'loadingPrevious' | 'loadingNext' | 'hasPrevious' | 'hasNext'\n > = {\n loadingPrevious,\n loadingNext,\n hasPrevious: dataManager?.hasPrevious() ?? false,\n hasNext: dataManager?.hasNext() ?? false,\n }\n\n const exposedPrevious: InfiniteScrollActionSlotProps = {\n loading: loadingPrevious,\n fetch: dataManager?.fetchPrevious ?? (() => {}),\n autoMode: headerAutoMode,\n manualMode: !headerAutoMode,\n hasMore: dataManager?.hasPrevious() ?? false,\n ...sharedExposed,\n }\n\n const exposedNext: InfiniteScrollActionSlotProps = {\n loading: loadingNext,\n fetch: dataManager?.fetchNext ?? (() => {}),\n autoMode: footerAutoMode,\n manualMode: !footerAutoMode,\n hasMore: dataManager?.hasNext() ?? false,\n ...sharedExposed,\n }\n\n const exposedSlot: InfiniteScrollSlotProps = {\n loading: loadingPrevious || loadingNext,\n loadingPrevious,\n loadingNext,\n }\n\n const renderElements = []\n\n // Only render previous trigger if not using custom element selector/ref\n if (!startElement) {\n renderElements.push(\n createElement(\n 'div',\n { ref: startElementRef },\n // Render previous slot or fallback to loading indicator\n renderSlot(previous, exposedPrevious, loadingPrevious ? renderSlot(loading, exposedPrevious) : null),\n ),\n )\n }\n\n renderElements.push(\n createElement(\n as,\n { ...props, ref: itemsElementRef },\n typeof children === 'function' ? children(exposedSlot) : children,\n ),\n )\n\n // Only render next trigger if not using custom element selector/ref\n if (!endElement) {\n renderElements.push(\n createElement(\n 'div',\n { ref: endElementRef },\n // Render next slot or fallback to loading indicator\n renderSlot(next, exposedNext, loadingNext ? renderSlot(loading, exposedNext) : null),\n ),\n )\n }\n\n return createElement(React.Fragment, {}, ...(reverse ? [...renderElements].reverse() : renderElements))\n },\n)\n\nInfiniteScroll.displayName = 'InertiaInfiniteScroll'\n\nexport default InfiniteScroll\n", "import {\n ActiveVisit,\n isUrlMethodPair,\n LinkComponentBaseProps,\n LinkPrefetchOption,\n mergeDataIntoQueryString,\n Method,\n PendingVisit,\n router,\n shouldIntercept,\n shouldNavigate,\n VisitOptions,\n} from '@inertiajs/core'\nimport { createElement, ElementType, forwardRef, useEffect, useMemo, useRef, useState } from 'react'\nimport { config } from '.'\n\nconst noop = () => undefined\n\ninterface BaseInertiaLinkProps extends LinkComponentBaseProps {\n as?: ElementType\n onClick?: (event: React.MouseEvent) => void\n}\n\nexport type InertiaLinkProps = BaseInertiaLinkProps &\n Omit<React.HTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps> &\n Omit<React.AllHTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps>\n\nconst Link = forwardRef<unknown, InertiaLinkProps>(\n (\n {\n children,\n as = 'a',\n data = {},\n href = '',\n method = 'get',\n preserveScroll = false,\n preserveState = null,\n preserveUrl = false,\n replace = false,\n only = [],\n except = [],\n headers = {},\n queryStringArrayFormat = 'brackets',\n async = false,\n onClick = noop,\n onCancelToken = noop,\n onBefore = noop,\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n onPrefetching = noop,\n onPrefetched = noop,\n prefetch = false,\n cacheFor = 0,\n cacheTags = [],\n viewTransition = false,\n ...props\n },\n ref,\n ) => {\n const [inFlightCount, setInFlightCount] = useState(0)\n const hoverTimeout = useRef<number>(undefined)\n\n const _method = useMemo(() => {\n return isUrlMethodPair(href) ? href.method : (method.toLowerCase() as Method)\n }, [href, method])\n\n const _as = useMemo(() => {\n if (typeof as !== 'string' || as.toLowerCase() !== 'a') {\n // Custom component or element\n return as\n }\n\n return _method !== 'get' ? 'button' : as.toLowerCase()\n }, [as, _method])\n\n const mergeDataArray = useMemo(\n () => mergeDataIntoQueryString(_method, isUrlMethodPair(href) ? href.url : href, data, queryStringArrayFormat),\n [href, _method, data, queryStringArrayFormat],\n )\n\n const url = useMemo(() => mergeDataArray[0], [mergeDataArray])\n const _data = useMemo(() => mergeDataArray[1], [mergeDataArray])\n\n const baseParams = useMemo<VisitOptions>(\n () => ({\n data: _data,\n method: _method,\n preserveScroll,\n preserveState: preserveState ?? _method !== 'get',\n preserveUrl,\n replace,\n only,\n except,\n headers,\n async,\n }),\n [_data, _method, preserveScroll, preserveState, preserveUrl, replace, only, except, headers, async],\n )\n\n const visitParams = useMemo<VisitOptions>(\n () => ({\n ...baseParams,\n viewTransition,\n onCancelToken,\n onBefore,\n onStart(visit: PendingVisit) {\n setInFlightCount((count) => count + 1)\n onStart(visit)\n },\n onProgress,\n onFinish(visit: ActiveVisit) {\n setInFlightCount((count) => count - 1)\n onFinish(visit)\n },\n onCancel,\n onSuccess,\n onError,\n }),\n [\n baseParams,\n viewTransition,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess,\n onError,\n ],\n )\n\n const prefetchModes: LinkPrefetchOption[] = useMemo(\n () => {\n if (prefetch === true) {\n return ['hover']\n }\n\n if (prefetch === false) {\n return []\n }\n\n if (Array.isArray(prefetch)) {\n return prefetch\n }\n\n return [prefetch]\n },\n Array.isArray(prefetch) ? prefetch : [prefetch],\n )\n\n const cacheForValue = useMemo(() => {\n if (cacheFor !== 0) {\n // If they've provided a value, respect it\n return cacheFor\n }\n\n if (prefetchModes.length === 1 && prefetchModes[0] === 'click') {\n // If they've only provided a prefetch mode of 'click',\n // we should only prefetch for the next request but not keep it around\n return 0\n }\n\n // Otherwise, default to 30 seconds\n return config.get('prefetch.cacheFor')\n }, [cacheFor, prefetchModes])\n\n const doPrefetch = useMemo(() => {\n return () => {\n router.prefetch(\n url,\n {\n ...baseParams,\n onPrefetching,\n onPrefetched,\n },\n { cacheFor: cacheForValue, cacheTags },\n )\n }\n }, [url, baseParams, onPrefetching, onPrefetched, cacheForValue, cacheTags])\n\n useEffect(() => {\n return () => {\n clearTimeout(hoverTimeout.current)\n }\n }, [])\n\n useEffect(() => {\n if (prefetchModes.includes('mount')) {\n setTimeout(() => doPrefetch())\n }\n }, prefetchModes)\n\n const regularEvents = {\n onClick: (event: React.MouseEvent) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n event.preventDefault()\n\n router.visit(url, visitParams)\n }\n },\n }\n\n const prefetchHoverEvents = {\n onMouseEnter: () => {\n hoverTimeout.current = window.setTimeout(() => {\n doPrefetch()\n }, config.get('prefetch.hoverDelay'))\n },\n onMouseLeave: () => {\n clearTimeout(hoverTimeout.current)\n },\n onClick: regularEvents.onClick,\n }\n\n const prefetchClickEvents = {\n onMouseDown: (event: React.MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onKeyDown: (event: React.KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onMouseUp: (event: React.MouseEvent) => {\n event.preventDefault()\n router.visit(url, visitParams)\n },\n onKeyUp: (event: React.KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n router.visit(url, visitParams)\n }\n },\n onClick: (event: React.MouseEvent) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n // Let the mouseup/keyup event handle the visit\n event.preventDefault()\n }\n },\n }\n\n const elProps = useMemo(() => {\n if (_as === 'button') {\n return { type: 'button' }\n }\n\n if (_as === 'a' || typeof _as !== 'string') {\n return { href: url }\n }\n\n return {}\n }, [_as, url])\n\n return createElement(\n _as,\n {\n ...props,\n ...elProps,\n ref,\n ...(() => {\n if (prefetchModes.includes('hover')) {\n return prefetchHoverEvents\n }\n\n if (prefetchModes.includes('click')) {\n return prefetchClickEvents\n }\n\n return regularEvents\n })(),\n 'data-loading': inFlightCount > 0 ? '' : undefined,\n },\n children,\n )\n },\n)\nLink.displayName = 'InertiaLink'\n\nexport default Link\n", "import { PollOptions, ReloadOptions, router } from '@inertiajs/core'\nimport { useEffect, useRef } from 'react'\n\nexport default function usePoll(\n interval: number,\n requestOptions: ReloadOptions = {},\n options: PollOptions = {\n keepAlive: false,\n autoStart: true,\n },\n) {\n const pollRef = useRef(\n router.poll(interval, requestOptions, {\n ...options,\n autoStart: false,\n }),\n )\n\n useEffect(() => {\n if (options.autoStart ?? true) {\n pollRef.current.start()\n }\n\n return () => pollRef.current.stop()\n }, [])\n\n return {\n stop: pollRef.current.stop,\n start: pollRef.current.start,\n }\n}\n", "import { router, VisitOptions } from '@inertiajs/core'\nimport { useEffect, useState } from 'react'\n\nexport default function usePrefetch(options: VisitOptions = {}): {\n lastUpdatedAt: number | null\n isPrefetching: boolean\n isPrefetched: boolean\n flush: () => void\n} {\n const cached = typeof window === 'undefined' ? null : router.getCached(window.location.pathname, options)\n const inFlight = typeof window === 'undefined' ? null : router.getPrefetching(window.location.pathname, options)\n\n const [lastUpdatedAt, setLastUpdatedAt] = useState<number | null>(cached?.staleTimestamp || null)\n const [isPrefetching, setIsPrefetching] = useState(inFlight !== null)\n const [isPrefetched, setIsPrefetched] = useState(cached !== null)\n\n useEffect(() => {\n const onPrefetchingListener = router.on('prefetching', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(true)\n }\n })\n\n const onPrefetchedListener = router.on('prefetched', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(false)\n setIsPrefetched(true)\n setLastUpdatedAt(e.detail.fetchedAt)\n }\n })\n\n return () => {\n onPrefetchedListener()\n onPrefetchingListener()\n }\n }, [])\n\n return {\n lastUpdatedAt,\n isPrefetching,\n isPrefetched,\n flush: () => router.flush(window.location.pathname, options),\n }\n}\n", "import { ReloadOptions, router } from '@inertiajs/core'\nimport { createElement, ReactNode, useCallback, useEffect, useRef, useState } from 'react'\n\ninterface WhenVisibleProps {\n children: ReactNode | (() => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data?: string | string[]\n params?: ReloadOptions\n buffer?: number\n as?: string\n always?: boolean\n}\n\nconst WhenVisible = ({ children, data, params, buffer, as, always, fallback }: WhenVisibleProps) => {\n always = always ?? false\n as = as ?? 'div'\n fallback = fallback ?? null\n\n const [loaded, setLoaded] = useState(false)\n const hasFetched = useRef<boolean>(false)\n const fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n\n const getReloadParams = useCallback<() => Partial<ReloadOptions>>(() => {\n if (data) {\n return {\n only: (Array.isArray(data) ? data : [data]) as string[],\n }\n }\n\n if (!params) {\n throw new Error('You must provide either a `data` or `params` prop.')\n }\n\n return params\n }, [params, data])\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (!always && hasFetched.current) {\n observer.disconnect()\n }\n\n if (fetching.current) {\n return\n }\n\n hasFetched.current = true\n fetching.current = true\n\n const reloadParams = getReloadParams()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.current = true\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n setLoaded(true)\n fetching.current = false\n reloadParams.onFinish?.(e)\n\n if (!always) {\n observer.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.observe(ref.current)\n\n return () => {\n observer.disconnect()\n }\n }, [ref, getReloadParams, buffer])\n\n const resolveChildren = () => (typeof children === 'function' ? children() : children)\n const resolveFallback = () => (typeof fallback === 'function' ? fallback() : fallback)\n\n if (always || !loaded) {\n return createElement(\n as,\n {\n props: null,\n ref,\n },\n loaded ? resolveChildren() : resolveFallback(),\n )\n }\n\n return loaded ? resolveChildren() : null\n}\n\nWhenVisible.displayName = 'InertiaWhenVisible'\n\nexport default WhenVisible\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["router", "import_core", "
|
|
3
|
+
"sources": ["../src/index.ts", "../src/App.ts", "../src/HeadContext.ts", "../src/PageContext.ts", "../src/createInertiaApp.ts", "../src/Deferred.ts", "../src/usePage.ts", "../src/Form.ts", "../src/useForm.ts", "../src/react.ts", "../src/useRemember.ts", "../src/Head.ts", "../src/InfiniteScroll.ts", "../src/Link.ts", "../src/usePoll.ts", "../src/usePrefetch.ts", "../src/WhenVisible.ts"],
|
|
4
|
+
"sourcesContent": ["import { config as coreConfig, progress as Progress, router as Router } from '@inertiajs/core'\nimport { ReactInertiaAppConfig } from './types'\n\nexport const progress = Progress\nexport const router = Router\nexport { default as App } from './App'\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './Deferred'\nexport { default as Form } from './Form'\nexport { default as Head } from './Head'\nexport { default as InfiniteScroll } from './InfiniteScroll'\nexport { InertiaLinkProps, default as Link } from './Link'\nexport { ReactComponent as ResolvedComponent } from './types'\nexport {\n InertiaFormProps,\n SetDataAction,\n SetDataByKeyValuePair,\n SetDataByMethod,\n SetDataByObject,\n default as useForm,\n} from './useForm'\nexport { default as usePage } from './usePage'\nexport { default as usePoll } from './usePoll'\nexport { default as usePrefetch } from './usePrefetch'\nexport { default as useRemember } from './useRemember'\nexport { default as WhenVisible } from './WhenVisible'\n\nexport const config = coreConfig.extend<ReactInertiaAppConfig>()\n", "import {\n createHeadManager,\n HeadManagerOnUpdateCallback,\n HeadManagerTitleCallback,\n Page,\n PageHandler,\n PageProps,\n router,\n} from '@inertiajs/core'\nimport { createElement, FunctionComponent, ReactNode, useEffect, useMemo, useState } from 'react'\nimport HeadContext from './HeadContext'\nimport PageContext from './PageContext'\nimport { LayoutFunction, ReactComponent, ReactPageHandlerArgs } from './types'\n\nlet currentIsInitialPage = true\nlet routerIsInitialized = false\nlet swapComponent: PageHandler<ReactComponent> = async () => {\n // Dummy function so we can init the router outside of the useEffect hook. This is\n // needed so `router.reload()` works right away (on mount) in any of the user's\n // components. We swap in the real function in the useEffect hook below.\n currentIsInitialPage = false\n}\n\ntype CurrentPage = {\n component: ReactComponent | null\n page: Page\n key: number | null\n}\n\nexport interface InertiaAppProps<SharedProps extends PageProps = PageProps> {\n children?: (options: { Component: ReactComponent; props: PageProps; key: number | null }) => ReactNode\n initialPage: Page<SharedProps>\n initialComponent?: ReactComponent\n resolveComponent?: (name: string) => ReactComponent | Promise<ReactComponent>\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdateCallback\n}\n\nexport type InertiaApp = FunctionComponent<InertiaAppProps>\n\nexport default function App<SharedProps extends PageProps = PageProps>({\n children,\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n}: InertiaAppProps<SharedProps>) {\n const [current, setCurrent] = useState<CurrentPage>({\n component: initialComponent || null,\n page: initialPage,\n key: null,\n })\n\n const headManager = useMemo(() => {\n return createHeadManager(\n typeof window === 'undefined',\n titleCallback || ((title) => title),\n onHeadUpdate || (() => {}),\n )\n }, [])\n\n if (!routerIsInitialized) {\n router.init<ReactComponent>({\n initialPage,\n resolveComponent: resolveComponent!,\n swapComponent: async (args) => swapComponent(args),\n })\n\n routerIsInitialized = true\n }\n\n useEffect(() => {\n swapComponent = async ({ component, page, preserveState }: ReactPageHandlerArgs) => {\n if (currentIsInitialPage) {\n // We block setting the current page on the initial page to\n // prevent the initial page from being re-rendered again.\n currentIsInitialPage = false\n return\n }\n\n setCurrent((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\n }))\n }\n\n router.on('navigate', () => headManager.forceUpdate())\n }, [])\n\n if (!current.component) {\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(PageContext.Provider, { value: current.page }, null),\n )\n }\n\n const renderChildren =\n children ||\n (({ Component, props, key }) => {\n const child = createElement(Component, { key, ...props })\n\n if (typeof Component.layout === 'function') {\n return (Component.layout as LayoutFunction)(child)\n }\n\n if (Array.isArray(Component.layout)) {\n return (Component.layout as any)\n .concat(child)\n .reverse()\n .reduce((children: any, Layout: any) => createElement(Layout, { children, ...props }))\n }\n\n return child\n })\n\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(\n PageContext.Provider,\n { value: current.page },\n renderChildren({\n Component: current.component,\n key: current.key,\n props: current.page.props,\n }),\n ),\n )\n}\n\nApp.displayName = 'Inertia'\n", "import { HeadManager } from '@inertiajs/core'\nimport { createContext } from 'react'\n\nconst headContext = createContext<HeadManager | null>(null)\nheadContext.displayName = 'InertiaHeadContext'\n\nexport default headContext\n", "import { Page } from '@inertiajs/core'\nimport { createContext } from 'react'\n\nconst pageContext = createContext<Page | null>(null)\npageContext.displayName = 'InertiaPageContext'\n\nexport default pageContext\n", "import {\n CreateInertiaAppOptionsForCSR,\n CreateInertiaAppOptionsForSSR,\n InertiaAppResponse,\n InertiaAppSSRResponse,\n PageProps,\n router,\n setupProgress,\n} from '@inertiajs/core'\nimport { ReactElement, createElement } from 'react'\nimport { renderToString } from 'react-dom/server'\nimport App, { InertiaAppProps, type InertiaApp } from './App'\nimport { config } from './index'\nimport { ReactComponent, ReactInertiaAppConfig } from './types'\n\nexport type SetupOptions<ElementType, SharedProps extends PageProps> = {\n el: ElementType\n App: InertiaApp\n props: InertiaAppProps<SharedProps>\n}\n\n// The 'unknown' type is necessary for backwards compatibility...\ntype ComponentResolver = (\n name: string,\n) => ReactComponent | Promise<ReactComponent> | { default: ReactComponent } | unknown\n\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForCSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<HTMLElement, SharedProps>,\n void,\n ReactInertiaAppConfig\n>\n\ntype InertiaAppOptionsForSSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForSSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<null, SharedProps>,\n ReactElement,\n ReactInertiaAppConfig\n> & {\n render: typeof renderToString\n}\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<void>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<InertiaAppSSRResponse>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>({\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n defaults = {},\n}: InertiaAppOptionsForCSR<SharedProps> | InertiaAppOptionsForSSR<SharedProps>): InertiaAppResponse {\n config.replace(defaults)\n\n const isServer = typeof window === 'undefined'\n const el = isServer ? null : document.getElementById(id)\n const initialPage = page || JSON.parse(el?.dataset.page || '{}')\n\n // @ts-expect-error - This can be improved once we remove the 'unknown' type from the resolver...\n const resolveComponent = (name) => Promise.resolve(resolve(name)).then((module) => module.default || module)\n\n let head: string[] = []\n\n const reactApp = await Promise.all([\n resolveComponent(initialPage.component),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n const props = {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n }\n\n if (isServer) {\n const ssrSetup = setup as (options: SetupOptions<null, SharedProps>) => ReactElement\n\n return ssrSetup({\n el: null,\n App,\n props: { ...props, onHeadUpdate: (elements: string[]) => (head = elements) },\n })\n }\n\n const csrSetup = setup as (options: SetupOptions<HTMLElement, SharedProps>) => void\n\n return csrSetup({\n el: el as HTMLElement,\n App,\n props,\n })\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer && render) {\n const body = await render(\n createElement(\n 'div',\n {\n id,\n 'data-page': JSON.stringify(initialPage),\n },\n reactApp as ReactElement,\n ),\n )\n\n return { head, body }\n }\n}\n", "import { ReactNode, useEffect, useMemo, useState } from 'react'\nimport { router } from '.'\nimport usePage from './usePage'\n\nconst urlWithoutHash = (url: URL | Location): URL => {\n url = new URL(url.href)\n url.hash = ''\n\n return url\n}\n\nconst isSameUrlWithoutHash = (url1: URL | Location, url2: URL | Location): boolean => {\n return urlWithoutHash(url1).href === urlWithoutHash(url2).href\n}\n\ninterface DeferredProps {\n children: ReactNode | (() => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data: string | string[]\n}\n\nconst Deferred = ({ children, data, fallback }: DeferredProps) => {\n if (!data) {\n throw new Error('`<Deferred>` requires a `data` prop to be a string or array of strings')\n }\n\n const [loaded, setLoaded] = useState(false)\n const pageProps = usePage().props\n const keys = useMemo(() => (Array.isArray(data) ? data : [data]), [data])\n\n useEffect(() => {\n const removeListener = router.on('start', (e) => {\n const isPartialVisit = e.detail.visit.only.length > 0 || e.detail.visit.except.length > 0\n const isReloadingKey = e.detail.visit.only.find((key) => keys.includes(key))\n\n if (isSameUrlWithoutHash(e.detail.visit.url, window.location) && (!isPartialVisit || isReloadingKey)) {\n setLoaded(false)\n }\n })\n\n return () => {\n removeListener()\n }\n }, [])\n\n useEffect(() => {\n setLoaded(keys.every((key) => pageProps[key] !== undefined))\n }, [pageProps, keys])\n\n if (loaded) {\n return typeof children === 'function' ? children() : children\n }\n\n return typeof fallback === 'function' ? fallback() : fallback\n}\n\nDeferred.displayName = 'InertiaDeferred'\n\nexport default Deferred\n", "import { Page, PageProps, SharedPageProps } from '@inertiajs/core'\nimport React from 'react'\nimport PageContext from './PageContext'\n\nexport default function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps & SharedPageProps> {\n // React.use() was introduced in React 19, fallback to React.useContext() for earlier versions\n const page = typeof React.use === 'function' ? React.use(PageContext) : React.useContext(PageContext)\n\n if (!page) {\n throw new Error('usePage must be used within the Inertia component')\n }\n\n return page as Page<TPageProps & SharedPageProps>\n}\n", "import {\n FormComponentProps,\n FormComponentRef,\n FormComponentSlotProps,\n FormDataConvertible,\n formDataToObject,\n isUrlMethodPair,\n mergeDataIntoQueryString,\n Method,\n resetFormFields,\n VisitOptions,\n} from '@inertiajs/core'\nimport { isEqual } from 'lodash-es'\nimport React, {\n createElement,\n FormEvent,\n forwardRef,\n ReactNode,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport useForm from './useForm'\n\n// Polyfill for startTransition to support React 16.9+\nconst deferStateUpdate = (callback: () => void) => {\n typeof React.startTransition === 'function' ? React.startTransition(callback) : setTimeout(callback, 0)\n}\n\ntype ComponentProps = (FormComponentProps &\n Omit<React.FormHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'> &\n Omit<React.AllHTMLAttributes<HTMLFormElement>, keyof FormComponentProps | 'children'>) & {\n children: ReactNode | ((props: FormComponentSlotProps) => ReactNode)\n}\n\ntype FormSubmitOptions = Omit<VisitOptions, 'data' | 'onPrefetched' | 'onPrefetching'>\n\nconst noop = () => undefined\n\nconst Form = forwardRef<FormComponentRef, ComponentProps>(\n (\n {\n action = '',\n method = 'get',\n headers = {},\n queryStringArrayFormat = 'brackets',\n errorBag = null,\n showProgress = true,\n transform = (data) => data,\n options = {},\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onBefore = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n onCancelToken = noop,\n onSubmitComplete = noop,\n disableWhileProcessing = false,\n resetOnError = false,\n resetOnSuccess = false,\n setDefaultsOnSuccess = false,\n invalidateCacheTags = [],\n children,\n ...props\n },\n ref,\n ) => {\n const form = useForm<Record<string, any>>({})\n const formElement = useRef<HTMLFormElement>(undefined)\n\n const resolvedMethod = useMemo(() => {\n return isUrlMethodPair(action) ? action.method : (method.toLowerCase() as Method)\n }, [action, method])\n\n const [isDirty, setIsDirty] = useState(false)\n const defaultData = useRef<FormData>(new FormData())\n\n const getFormData = (): FormData => new FormData(formElement.current)\n\n // Convert the FormData to an object because we can't compare two FormData\n // instances directly (which is needed for isDirty), mergeDataIntoQueryString()\n // expects an object, and submitting a FormData instance directly causes problems with nested objects.\n const getData = (): Record<string, FormDataConvertible> => formDataToObject(getFormData())\n\n const updateDirtyState = (event: Event) =>\n deferStateUpdate(() =>\n setIsDirty(event.type === 'reset' ? false : !isEqual(getData(), formDataToObject(defaultData.current))),\n )\n\n useEffect(() => {\n defaultData.current = getFormData()\n\n const formEvents: Array<keyof HTMLElementEventMap> = ['input', 'change', 'reset']\n\n formEvents.forEach((e) => formElement.current!.addEventListener(e, updateDirtyState))\n\n return () => formEvents.forEach((e) => formElement.current?.removeEventListener(e, updateDirtyState))\n }, [])\n\n const reset = (...fields: string[]) => {\n if (formElement.current) {\n resetFormFields(formElement.current, defaultData.current, fields)\n }\n }\n\n const resetAndClearErrors = (...fields: string[]) => {\n form.clearErrors(...fields)\n reset(...fields)\n }\n\n const maybeReset = (resetOption: boolean | string[]) => {\n if (!resetOption) {\n return\n }\n\n if (resetOption === true) {\n reset()\n } else if (resetOption.length > 0) {\n reset(...resetOption)\n }\n }\n\n const submit = () => {\n const [url, _data] = mergeDataIntoQueryString(\n resolvedMethod,\n isUrlMethodPair(action) ? action.url : action,\n getData(),\n queryStringArrayFormat,\n )\n\n const submitOptions: FormSubmitOptions = {\n headers,\n queryStringArrayFormat,\n errorBag,\n showProgress,\n invalidateCacheTags,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess: (...args) => {\n onSuccess(...args)\n onSubmitComplete({\n reset,\n defaults,\n })\n maybeReset(resetOnSuccess)\n\n if (setDefaultsOnSuccess === true) {\n defaults()\n }\n },\n onError(...args) {\n onError(...args)\n maybeReset(resetOnError)\n },\n ...options,\n }\n\n form.transform(() => transform(_data))\n form.submit(resolvedMethod, url, submitOptions)\n }\n\n const defaults = () => {\n defaultData.current = getFormData()\n setIsDirty(false)\n }\n\n const exposed = () => ({\n errors: form.errors,\n hasErrors: form.hasErrors,\n processing: form.processing,\n progress: form.progress,\n wasSuccessful: form.wasSuccessful,\n recentlySuccessful: form.recentlySuccessful,\n isDirty,\n clearErrors: form.clearErrors,\n resetAndClearErrors,\n setError: form.setError,\n reset,\n submit,\n defaults,\n getData,\n getFormData,\n })\n\n useImperativeHandle(ref, exposed, [form, isDirty, submit])\n\n return createElement(\n 'form',\n {\n ...props,\n ref: formElement,\n action: isUrlMethodPair(action) ? action.url : action,\n method: resolvedMethod,\n onSubmit: (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n submit()\n },\n // Only React 19 supports passing a boolean to the `inert` attribute.\n // To support earlier versions as well, we use the string 'true'.\n // Unfortunately, React 19 treats an empty string as `false`.\n // See: https://github.com/inertiajs/inertia/pull/2536\n inert: disableWhileProcessing && form.processing && 'true',\n },\n typeof children === 'function' ? children(exposed()) : children,\n )\n },\n)\n\nForm.displayName = 'InertiaForm'\n\nexport default Form\n", "import {\n CancelToken,\n Errors,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n Method,\n Progress,\n RequestPayload,\n router,\n UrlMethodPair,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep, get, has, isEqual, set } from 'lodash-es'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { config } from '.'\nimport { useIsomorphicLayoutEffect } from './react'\nimport useRemember from './useRemember'\n\nexport type SetDataByObject<TForm> = (data: Partial<TForm>) => void\nexport type SetDataByMethod<TForm> = (data: (previousData: TForm) => TForm) => void\nexport type SetDataByKeyValuePair<TForm> = <K extends FormDataKeys<TForm>>(\n key: K,\n value: FormDataValues<TForm, K>,\n) => void\nexport type SetDataAction<TForm extends Record<any, any>> = SetDataByObject<TForm> &\n SetDataByMethod<TForm> &\n SetDataByKeyValuePair<TForm>\n\ntype FormOptions = Omit<VisitOptions, 'data'>\ntype SubmitArgs = [Method, string, FormOptions?] | [UrlMethodPair, FormOptions?]\ntype TransformCallback<TForm> = (data: TForm) => object\n\nexport interface InertiaFormProps<TForm extends object> {\n data: TForm\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n setData: SetDataAction<TForm>\n transform: (callback: TransformCallback<TForm>) => void\n setDefaults(): void\n setDefaults<T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): void\n setDefaults(fields: Partial<TForm>): void\n reset<K extends FormDataKeys<TForm>>(...fields: K[]): void\n clearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): void\n resetAndClearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): void\n setError<K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): void\n setError(errors: FormDataErrors<TForm>): void\n submit: (...args: SubmitArgs) => void\n get: (url: string, options?: FormOptions) => void\n patch: (url: string, options?: FormOptions) => void\n post: (url: string, options?: FormOptions) => void\n put: (url: string, options?: FormOptions) => void\n delete: (url: string, options?: FormOptions) => void\n cancel: () => void\n}\nexport default function useForm<TForm extends FormDataType<TForm>>(\n initialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKey: string,\n initialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n rememberKeyOrInitialValues?: string | TForm | (() => TForm),\n maybeInitialValues?: TForm | (() => TForm),\n): InertiaFormProps<TForm> {\n const isMounted = useRef(false)\n const rememberKey = typeof rememberKeyOrInitialValues === 'string' ? rememberKeyOrInitialValues : null\n const [defaults, setDefaults] = useState(\n (typeof rememberKeyOrInitialValues === 'string' ? maybeInitialValues : rememberKeyOrInitialValues) || ({} as TForm),\n )\n const cancelToken = useRef<CancelToken | null>(null)\n const recentlySuccessfulTimeoutId = useRef<number>(undefined)\n const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`) : useState(defaults)\n const [errors, setErrors] = rememberKey\n ? useRemember({} as FormDataErrors<TForm>, `${rememberKey}:errors`)\n : useState({} as FormDataErrors<TForm>)\n const [hasErrors, setHasErrors] = useState(false)\n const [processing, setProcessing] = useState(false)\n const [progress, setProgress] = useState<Progress | null>(null)\n const [wasSuccessful, setWasSuccessful] = useState(false)\n const [recentlySuccessful, setRecentlySuccessful] = useState(false)\n const transform = useRef<TransformCallback<TForm>>((data) => data)\n const isDirty = useMemo(() => !isEqual(data, defaults), [data, defaults])\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n // Track if setDefaults was called manually during onSuccess to avoid\n // overriding user's custom defaults with automatic behavior.\n const setDefaultsCalledInOnSuccess = useRef(false)\n\n const submit = useCallback(\n (...args: SubmitArgs) => {\n const objectPassed = args[0] !== null && typeof args[0] === 'object'\n\n const method = objectPassed ? args[0].method : (args[0] as Method)\n const url = objectPassed ? args[0].url : (args[1] as string)\n const options = (objectPassed ? args[1] : args[2]) ?? {}\n\n setDefaultsCalledInOnSuccess.current = false\n\n const _options: VisitOptions = {\n ...options,\n onCancelToken: (token) => {\n cancelToken.current = token\n\n if (options.onCancelToken) {\n return options.onCancelToken(token)\n }\n },\n onBefore: (visit) => {\n setWasSuccessful(false)\n setRecentlySuccessful(false)\n clearTimeout(recentlySuccessfulTimeoutId.current)\n\n if (options.onBefore) {\n return options.onBefore(visit)\n }\n },\n onStart: (visit) => {\n setProcessing(true)\n\n if (options.onStart) {\n return options.onStart(visit)\n }\n },\n onProgress: (event) => {\n setProgress(event || null)\n\n if (options.onProgress) {\n return options.onProgress(event)\n }\n },\n onSuccess: async (page) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors({} as FormDataErrors<TForm>)\n setHasErrors(false)\n setWasSuccessful(true)\n setRecentlySuccessful(true)\n recentlySuccessfulTimeoutId.current = setTimeout(() => {\n if (isMounted.current) {\n setRecentlySuccessful(false)\n }\n }, config.get('form.recentlySuccessfulDuration'))\n }\n\n const onSuccess = options.onSuccess ? await options.onSuccess(page) : null\n\n if (isMounted.current && !setDefaultsCalledInOnSuccess.current) {\n setData((data) => {\n setDefaults(cloneDeep(data))\n return data\n })\n }\n\n return onSuccess\n },\n onError: (errors) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors(errors as FormDataErrors<TForm>)\n setHasErrors(true)\n }\n\n if (options.onError) {\n return options.onError(errors)\n }\n },\n onCancel: () => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n if (options.onCancel) {\n return options.onCancel()\n }\n },\n onFinish: (visit) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n cancelToken.current = null\n\n if (options.onFinish) {\n return options.onFinish(visit)\n }\n },\n }\n\n const transformedData = transform.current(data) as RequestPayload\n\n if (method === 'delete') {\n router.delete(url, { ..._options, data: transformedData })\n } else {\n router[method](url, transformedData, _options)\n }\n },\n [data, setErrors, transform],\n )\n\n const setDataFunction = useCallback(\n (keyOrData: FormDataKeys<TForm> | Function | Partial<TForm>, maybeValue?: any) => {\n if (typeof keyOrData === 'string') {\n setData((data) => set(cloneDeep(data), keyOrData, maybeValue))\n } else if (typeof keyOrData === 'function') {\n setData((data) => keyOrData(data))\n } else {\n setData(keyOrData as TForm)\n }\n },\n [setData],\n )\n\n const [dataAsDefaults, setDataAsDefaults] = useState(false)\n\n const dataRef = useRef(data)\n\n useEffect(() => {\n dataRef.current = data\n })\n\n const setDefaultsFunction = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) => {\n setDefaultsCalledInOnSuccess.current = true\n\n if (typeof fieldOrFields === 'undefined') {\n setDefaults(dataRef.current)\n // If setData was called right before setDefaults, data was not\n // updated in that render yet, so we set a flag to update\n // defaults right after the next render.\n setDataAsDefaults(true)\n } else {\n setDefaults((defaults) => {\n return typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign(cloneDeep(defaults), fieldOrFields)\n })\n }\n },\n [setDefaults],\n )\n\n useIsomorphicLayoutEffect(() => {\n if (!dataAsDefaults) {\n return\n }\n\n if (isDirty) {\n // Data has been updated in this next render and is different from\n // the defaults, so now we can set defaults to the current data.\n setDefaults(data)\n }\n\n setDataAsDefaults(false)\n }, [dataAsDefaults])\n\n const reset = useCallback(\n (...fields: string[]) => {\n if (fields.length === 0) {\n setData(defaults)\n } else {\n setData((data) =>\n (fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(defaults, key))\n .reduce(\n (carry, key) => {\n return set(carry, key, get(defaults, key))\n },\n { ...data } as TForm,\n ),\n )\n }\n },\n [setData, defaults],\n )\n\n const setError = useCallback(\n (fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: string) => {\n setErrors((errors) => {\n const newErrors = {\n ...errors,\n ...(typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields),\n }\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\n )\n\n const clearErrors = useCallback(\n (...fields: string[]) => {\n setErrors((errors) => {\n const newErrors = Object.keys(errors).reduce(\n (carry, field) => ({\n ...carry,\n ...(fields.length > 0 && !fields.includes(field) ? { [field]: (errors as Errors)[field] } : {}),\n }),\n {},\n )\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors as FormDataErrors<TForm>\n })\n },\n [setErrors, setHasErrors],\n )\n\n const resetAndClearErrors = useCallback(\n (...fields: string[]) => {\n reset(...fields)\n clearErrors(...fields)\n },\n [reset, clearErrors],\n )\n\n const createSubmitMethod =\n (method: Method) =>\n (url: string, options: VisitOptions = {}) => {\n submit(method, url, options)\n }\n const getMethod = useCallback(createSubmitMethod('get'), [submit])\n const post = useCallback(createSubmitMethod('post'), [submit])\n const put = useCallback(createSubmitMethod('put'), [submit])\n const patch = useCallback(createSubmitMethod('patch'), [submit])\n const deleteMethod = useCallback(createSubmitMethod('delete'), [submit])\n\n const cancel = useCallback(() => {\n if (cancelToken.current) {\n cancelToken.current.cancel()\n }\n }, [])\n\n const transformFunction = useCallback((callback: TransformCallback<TForm>) => {\n transform.current = callback\n }, [])\n\n return {\n data,\n setData: setDataFunction,\n isDirty,\n errors,\n hasErrors,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n transform: transformFunction,\n setDefaults: setDefaultsFunction,\n reset,\n setError,\n clearErrors,\n resetAndClearErrors,\n submit,\n get: getMethod,\n post,\n put,\n patch,\n delete: deleteMethod,\n cancel,\n }\n}\n", "import { DependencyList, EffectCallback, useEffect, useLayoutEffect } from 'react'\n\n// Inspired by react-redux, this hook uses useLayoutEffect in the browser, and useEffect\n// when using SSR. Currently, useLayoutEffect doesn't work when rendered on the server.\nexport function useIsomorphicLayoutEffect(effect: EffectCallback, deps?: DependencyList): void {\n typeof window === 'undefined' ? useEffect(effect, deps) : useLayoutEffect(effect, deps)\n}\n", "import { router } from '@inertiajs/core'\nimport { Dispatch, SetStateAction, useEffect, useState } from 'react'\n\nexport default function useRemember<State>(\n initialState: State,\n key?: string,\n): [State, Dispatch<SetStateAction<State>>] {\n const [state, setState] = useState(() => {\n const restored = router.restore(key) as State\n\n return restored !== undefined ? restored : initialState\n })\n\n useEffect(() => {\n router.remember(state, key)\n }, [state, key])\n\n return [state, setState]\n}\n", "import { escape } from 'lodash-es'\nimport React, { FunctionComponent, ReactElement, ReactNode, useContext, useEffect, useMemo } from 'react'\nimport HeadContext from './HeadContext'\n\ntype InertiaHeadProps = {\n title?: string\n children?: ReactNode\n}\n\ntype InertiaHead = FunctionComponent<InertiaHeadProps>\n\nconst Head: InertiaHead = function ({ children, title }) {\n const headManager = useContext(HeadContext)\n const provider = useMemo(() => headManager!.createProvider(), [headManager])\n const isServer = typeof window === 'undefined'\n\n useEffect(() => {\n provider.reconnect()\n provider.update(renderNodes(children))\n return () => {\n provider.disconnect()\n }\n }, [provider, children, title])\n\n function isUnaryTag(node: ReactElement<any>) {\n return (\n typeof node.type === 'string' &&\n [\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n ].indexOf(node.type) > -1\n )\n }\n\n function renderTagStart(node: ReactElement<any>): string {\n const attrs = Object.keys(node.props).reduce((carry, name) => {\n if (['head-key', 'children', 'dangerouslySetInnerHTML'].includes(name)) {\n return carry\n }\n\n const value = String(node.props[name])\n\n if (value === '') {\n return carry + ` ${name}`\n }\n\n return carry + ` ${name}=\"${escape(value)}\"`\n }, '')\n\n return `<${String(node.type)}${attrs}>`\n }\n\n function renderTagChildren(node: ReactElement<any>): string {\n const { children } = node.props\n\n if (typeof children === 'string') {\n return children\n }\n\n if (Array.isArray(children)) {\n return children.reduce((html, child) => html + renderTag(child), '')\n }\n\n return ''\n }\n\n function renderTag(node: ReactElement<any>): string {\n let html = renderTagStart(node)\n\n if (node.props.children) {\n html += renderTagChildren(node)\n }\n\n if (node.props.dangerouslySetInnerHTML) {\n html += node.props.dangerouslySetInnerHTML.__html\n }\n\n if (!isUnaryTag(node)) {\n html += `</${String(node.type)}>`\n }\n\n return html\n }\n\n function ensureNodeHasInertiaProp(node: ReactElement<any>) {\n return React.cloneElement(node, {\n [provider.preferredAttribute()]: node.props['head-key'] !== undefined ? node.props['head-key'] : '',\n })\n }\n\n function renderNode(node: ReactElement<any>) {\n return renderTag(ensureNodeHasInertiaProp(node))\n }\n\n function renderNodes(nodes: ReactNode) {\n const elements = React.Children.toArray(nodes)\n .filter((node) => node)\n .map((node) => renderNode(node as ReactElement<any>))\n\n if (title && !elements.find((tag) => tag.startsWith('<title'))) {\n elements.push(`<title ${provider.preferredAttribute()}>${title}</title>`)\n }\n\n return elements\n }\n\n if (isServer) {\n provider.update(renderNodes(children))\n }\n\n return null\n}\nexport default Head\n", "import {\n getScrollableParent,\n InfiniteScrollActionSlotProps,\n InfiniteScrollComponentBaseProps,\n InfiniteScrollRef,\n InfiniteScrollSlotProps,\n useInfiniteScroll,\n UseInfiniteScrollProps,\n} from '@inertiajs/core'\nimport React, {\n createElement,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nconst resolveHTMLElement = (\n value: string | React.RefObject<HTMLElement | null> | null,\n fallback: HTMLElement | null,\n): HTMLElement | null => {\n if (!value) {\n return fallback\n }\n\n // React ref object { current: HTMLElement | null }\n if (value && typeof value === 'object' && 'current' in value) {\n return value.current\n }\n\n // CSS Selector string\n if (typeof value === 'string') {\n return document.querySelector(value) as HTMLElement | null\n }\n\n return fallback\n}\n\n// Helper function to render slot content\nconst renderSlot = (\n slotContent: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode) | undefined,\n slotProps: InfiniteScrollActionSlotProps,\n fallback: React.ReactNode = null,\n): React.ReactNode => {\n if (!slotContent) {\n return fallback\n }\n\n return typeof slotContent === 'function' ? slotContent(slotProps) : slotContent\n}\n\ninterface ComponentProps\n extends InfiniteScrollComponentBaseProps,\n Omit<React.HTMLAttributes<HTMLElement>, keyof InfiniteScrollComponentBaseProps | 'children'> {\n children?: React.ReactNode | ((props: InfiniteScrollSlotProps) => React.ReactNode)\n\n // Element references for custom trigger detection (when you want different trigger elements)\n startElement?: string | React.RefObject<HTMLElement | null>\n endElement?: string | React.RefObject<HTMLElement | null>\n itemsElement?: string | React.RefObject<HTMLElement | null>\n\n // Render slots for UI components (when you want custom loading/action components)\n previous?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n next?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n loading?: React.ReactNode | ((props: InfiniteScrollActionSlotProps) => React.ReactNode)\n\n onlyNext?: boolean\n onlyPrevious?: boolean\n}\n\nconst InfiniteScroll = forwardRef<InfiniteScrollRef, ComponentProps>(\n (\n {\n data,\n buffer = 0,\n as = 'div',\n manual = false,\n manualAfter = 0,\n preserveUrl = false,\n reverse = false,\n autoScroll,\n children,\n startElement,\n endElement,\n itemsElement,\n previous,\n next,\n loading,\n onlyNext = false,\n onlyPrevious = false,\n ...props\n },\n ref,\n ) => {\n const [startElementFromRef, setStartElementFromRef] = useState<HTMLElement | null>(null)\n const startElementRef = useCallback((node: HTMLElement | null) => setStartElementFromRef(node), [])\n\n const [endElementFromRef, setEndElementFromRef] = useState<HTMLElement | null>(null)\n const endElementRef = useCallback((node: HTMLElement | null) => setEndElementFromRef(node), [])\n\n const [itemsElementFromRef, setItemsElementFromRef] = useState<HTMLElement | null>(null)\n const itemsElementRef = useCallback((node: HTMLElement | null) => setItemsElementFromRef(node), [])\n\n const [loadingPrevious, setLoadingPrevious] = useState(false)\n const [loadingNext, setLoadingNext] = useState(false)\n const [requestCount, setRequestCount] = useState(0)\n\n const [resolvedStartElement, setResolvedStartElement] = useState<HTMLElement | null>(null)\n const [resolvedEndElement, setResolvedEndElement] = useState<HTMLElement | null>(null)\n const [resolvedItemsElement, setResolvedItemsElement] = useState<HTMLElement | null>(null)\n\n // Update elements when refs or props change\n useEffect(() => {\n const element = startElement ? resolveHTMLElement(startElement, startElementFromRef) : startElementFromRef\n setResolvedStartElement(element)\n }, [startElement, startElementFromRef])\n\n useEffect(() => {\n const element = endElement ? resolveHTMLElement(endElement, endElementFromRef) : endElementFromRef\n setResolvedEndElement(element)\n }, [endElement, endElementFromRef])\n\n useEffect(() => {\n const element = itemsElement ? resolveHTMLElement(itemsElement, itemsElementFromRef) : itemsElementFromRef\n setResolvedItemsElement(element)\n }, [itemsElement, itemsElementFromRef])\n\n const scrollableParent = useMemo(() => getScrollableParent(resolvedItemsElement), [resolvedItemsElement])\n\n const callbackPropsRef = useRef({\n buffer,\n onlyNext,\n onlyPrevious,\n reverse,\n preserveUrl,\n })\n\n callbackPropsRef.current = {\n buffer,\n onlyNext,\n onlyPrevious,\n reverse,\n preserveUrl,\n }\n\n const [infiniteScroll, setInfiniteScroll] = useState<UseInfiniteScrollProps | null>(null)\n\n const dataManager = useMemo(() => infiniteScroll?.dataManager, [infiniteScroll])\n const elementManager = useMemo(() => infiniteScroll?.elementManager, [infiniteScroll])\n\n const scrollToBottom = useCallback(() => {\n if (scrollableParent) {\n scrollableParent.scrollTo({\n top: scrollableParent.scrollHeight,\n behavior: 'instant',\n })\n } else {\n window.scrollTo({\n top: document.body.scrollHeight,\n behavior: 'instant',\n })\n }\n }, [scrollableParent])\n\n // Main setup effect - only recreate when structural dependencies change\n useEffect(() => {\n if (!resolvedItemsElement) {\n return\n }\n\n const infiniteScrollInstance = useInfiniteScroll({\n // Data\n getPropName: () => data,\n inReverseMode: () => callbackPropsRef.current.reverse,\n shouldFetchNext: () => !callbackPropsRef.current.onlyPrevious,\n shouldFetchPrevious: () => !callbackPropsRef.current.onlyNext,\n shouldPreserveUrl: () => callbackPropsRef.current.preserveUrl,\n\n // Elements\n getTriggerMargin: () => callbackPropsRef.current.buffer,\n getStartElement: () => resolvedStartElement!,\n getEndElement: () => resolvedEndElement!,\n getItemsElement: () => resolvedItemsElement,\n getScrollableParent: () => scrollableParent,\n\n // Callbacks\n onBeforePreviousRequest: () => setLoadingPrevious(true),\n onBeforeNextRequest: () => setLoadingNext(true),\n onCompletePreviousRequest: () => {\n setLoadingPrevious(false)\n setRequestCount(infiniteScrollInstance.dataManager.getRequestCount())\n },\n onCompleteNextRequest: () => {\n setLoadingNext(false)\n setRequestCount(infiniteScrollInstance.dataManager.getRequestCount())\n },\n })\n\n setInfiniteScroll(infiniteScrollInstance)\n const { dataManager, elementManager } = infiniteScrollInstance\n\n setRequestCount(dataManager.getRequestCount())\n\n elementManager.setupObservers()\n elementManager.processServerLoadedElements(dataManager.getLastLoadedPage())\n\n if (autoLoad) {\n elementManager.enableTriggers()\n }\n\n return () => {\n infiniteScrollInstance.flush()\n setInfiniteScroll(null)\n }\n }, [data, resolvedItemsElement, resolvedStartElement, resolvedEndElement, scrollableParent])\n\n const manualMode = useMemo(\n () => manual || (manualAfter > 0 && requestCount >= manualAfter),\n [manual, manualAfter, requestCount],\n )\n const autoLoad = useMemo(() => !manualMode, [manualMode])\n\n useEffect(() => {\n autoLoad ? elementManager?.enableTriggers() : elementManager?.disableTriggers()\n }, [autoLoad, onlyNext, onlyPrevious, resolvedStartElement, resolvedEndElement])\n\n useEffect(() => {\n // autoScroll defaults to reverse value if not explicitly set\n const shouldAutoScroll = autoScroll !== undefined ? autoScroll : reverse\n\n if (shouldAutoScroll) {\n scrollToBottom()\n }\n }, [scrollableParent])\n\n useImperativeHandle(\n ref,\n () => ({\n fetchNext: dataManager?.fetchNext || (() => {}),\n fetchPrevious: dataManager?.fetchPrevious || (() => {}),\n hasPrevious: dataManager?.hasPrevious || (() => false),\n hasNext: dataManager?.hasNext || (() => false),\n }),\n [dataManager],\n )\n\n const headerAutoMode = autoLoad && !onlyNext\n const footerAutoMode = autoLoad && !onlyPrevious\n\n const sharedExposed: Pick<\n InfiniteScrollActionSlotProps,\n 'loadingPrevious' | 'loadingNext' | 'hasPrevious' | 'hasNext'\n > = {\n loadingPrevious,\n loadingNext,\n hasPrevious: dataManager?.hasPrevious() ?? false,\n hasNext: dataManager?.hasNext() ?? false,\n }\n\n const exposedPrevious: InfiniteScrollActionSlotProps = {\n loading: loadingPrevious,\n fetch: dataManager?.fetchPrevious ?? (() => {}),\n autoMode: headerAutoMode,\n manualMode: !headerAutoMode,\n hasMore: dataManager?.hasPrevious() ?? false,\n ...sharedExposed,\n }\n\n const exposedNext: InfiniteScrollActionSlotProps = {\n loading: loadingNext,\n fetch: dataManager?.fetchNext ?? (() => {}),\n autoMode: footerAutoMode,\n manualMode: !footerAutoMode,\n hasMore: dataManager?.hasNext() ?? false,\n ...sharedExposed,\n }\n\n const exposedSlot: InfiniteScrollSlotProps = {\n loading: loadingPrevious || loadingNext,\n loadingPrevious,\n loadingNext,\n }\n\n const renderElements = []\n\n // Only render previous trigger if not using custom element selector/ref\n if (!startElement) {\n renderElements.push(\n createElement(\n 'div',\n { ref: startElementRef },\n // Render previous slot or fallback to loading indicator\n renderSlot(previous, exposedPrevious, loadingPrevious ? renderSlot(loading, exposedPrevious) : null),\n ),\n )\n }\n\n renderElements.push(\n createElement(\n as,\n { ...props, ref: itemsElementRef },\n typeof children === 'function' ? children(exposedSlot) : children,\n ),\n )\n\n // Only render next trigger if not using custom element selector/ref\n if (!endElement) {\n renderElements.push(\n createElement(\n 'div',\n { ref: endElementRef },\n // Render next slot or fallback to loading indicator\n renderSlot(next, exposedNext, loadingNext ? renderSlot(loading, exposedNext) : null),\n ),\n )\n }\n\n return createElement(React.Fragment, {}, ...(reverse ? [...renderElements].reverse() : renderElements))\n },\n)\n\nInfiniteScroll.displayName = 'InertiaInfiniteScroll'\n\nexport default InfiniteScroll\n", "import {\n ActiveVisit,\n isUrlMethodPair,\n LinkComponentBaseProps,\n LinkPrefetchOption,\n mergeDataIntoQueryString,\n Method,\n PendingVisit,\n router,\n shouldIntercept,\n shouldNavigate,\n VisitOptions,\n} from '@inertiajs/core'\nimport { createElement, ElementType, forwardRef, useEffect, useMemo, useRef, useState } from 'react'\nimport { config } from '.'\n\nconst noop = () => undefined\n\ninterface BaseInertiaLinkProps extends LinkComponentBaseProps {\n as?: ElementType\n onClick?: (event: React.MouseEvent) => void\n}\n\nexport type InertiaLinkProps = BaseInertiaLinkProps &\n Omit<React.HTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps> &\n Omit<React.AllHTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps>\n\nconst Link = forwardRef<unknown, InertiaLinkProps>(\n (\n {\n children,\n as = 'a',\n data = {},\n href = '',\n method = 'get',\n preserveScroll = false,\n preserveState = null,\n preserveUrl = false,\n replace = false,\n only = [],\n except = [],\n headers = {},\n queryStringArrayFormat = 'brackets',\n async = false,\n onClick = noop,\n onCancelToken = noop,\n onBefore = noop,\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n onPrefetching = noop,\n onPrefetched = noop,\n prefetch = false,\n cacheFor = 0,\n cacheTags = [],\n viewTransition = false,\n ...props\n },\n ref,\n ) => {\n const [inFlightCount, setInFlightCount] = useState(0)\n const hoverTimeout = useRef<number>(undefined)\n\n const _method = useMemo(() => {\n return isUrlMethodPair(href) ? href.method : (method.toLowerCase() as Method)\n }, [href, method])\n\n const _as = useMemo(() => {\n if (typeof as !== 'string' || as.toLowerCase() !== 'a') {\n // Custom component or element\n return as\n }\n\n return _method !== 'get' ? 'button' : as.toLowerCase()\n }, [as, _method])\n\n const mergeDataArray = useMemo(\n () => mergeDataIntoQueryString(_method, isUrlMethodPair(href) ? href.url : href, data, queryStringArrayFormat),\n [href, _method, data, queryStringArrayFormat],\n )\n\n const url = useMemo(() => mergeDataArray[0], [mergeDataArray])\n const _data = useMemo(() => mergeDataArray[1], [mergeDataArray])\n\n const baseParams = useMemo<VisitOptions>(\n () => ({\n data: _data,\n method: _method,\n preserveScroll,\n preserveState: preserveState ?? _method !== 'get',\n preserveUrl,\n replace,\n only,\n except,\n headers,\n async,\n }),\n [_data, _method, preserveScroll, preserveState, preserveUrl, replace, only, except, headers, async],\n )\n\n const visitParams = useMemo<VisitOptions>(\n () => ({\n ...baseParams,\n viewTransition,\n onCancelToken,\n onBefore,\n onStart(visit: PendingVisit) {\n setInFlightCount((count) => count + 1)\n onStart(visit)\n },\n onProgress,\n onFinish(visit: ActiveVisit) {\n setInFlightCount((count) => count - 1)\n onFinish(visit)\n },\n onCancel,\n onSuccess,\n onError,\n }),\n [\n baseParams,\n viewTransition,\n onCancelToken,\n onBefore,\n onStart,\n onProgress,\n onFinish,\n onCancel,\n onSuccess,\n onError,\n ],\n )\n\n const prefetchModes: LinkPrefetchOption[] = useMemo(\n () => {\n if (prefetch === true) {\n return ['hover']\n }\n\n if (prefetch === false) {\n return []\n }\n\n if (Array.isArray(prefetch)) {\n return prefetch\n }\n\n return [prefetch]\n },\n Array.isArray(prefetch) ? prefetch : [prefetch],\n )\n\n const cacheForValue = useMemo(() => {\n if (cacheFor !== 0) {\n // If they've provided a value, respect it\n return cacheFor\n }\n\n if (prefetchModes.length === 1 && prefetchModes[0] === 'click') {\n // If they've only provided a prefetch mode of 'click',\n // we should only prefetch for the next request but not keep it around\n return 0\n }\n\n // Otherwise, default to 30 seconds\n return config.get('prefetch.cacheFor')\n }, [cacheFor, prefetchModes])\n\n const doPrefetch = useMemo(() => {\n return () => {\n router.prefetch(\n url,\n {\n ...baseParams,\n onPrefetching,\n onPrefetched,\n },\n { cacheFor: cacheForValue, cacheTags },\n )\n }\n }, [url, baseParams, onPrefetching, onPrefetched, cacheForValue, cacheTags])\n\n useEffect(() => {\n return () => {\n clearTimeout(hoverTimeout.current)\n }\n }, [])\n\n useEffect(() => {\n if (prefetchModes.includes('mount')) {\n setTimeout(() => doPrefetch())\n }\n }, prefetchModes)\n\n const regularEvents = {\n onClick: (event: React.MouseEvent) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n event.preventDefault()\n\n router.visit(url, visitParams)\n }\n },\n }\n\n const prefetchHoverEvents = {\n onMouseEnter: () => {\n hoverTimeout.current = window.setTimeout(() => {\n doPrefetch()\n }, config.get('prefetch.hoverDelay'))\n },\n onMouseLeave: () => {\n clearTimeout(hoverTimeout.current)\n },\n onClick: regularEvents.onClick,\n }\n\n const prefetchClickEvents = {\n onMouseDown: (event: React.MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onKeyDown: (event: React.KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onMouseUp: (event: React.MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n router.visit(url, visitParams)\n }\n },\n onKeyUp: (event: React.KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n router.visit(url, visitParams)\n }\n },\n onClick: (event: React.MouseEvent) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n // Let the mouseup/keyup event handle the visit\n event.preventDefault()\n }\n },\n }\n\n const elProps = useMemo(() => {\n if (_as === 'button') {\n return { type: 'button' }\n }\n\n if (_as === 'a' || typeof _as !== 'string') {\n return { href: url }\n }\n\n return {}\n }, [_as, url])\n\n return createElement(\n _as,\n {\n ...props,\n ...elProps,\n ref,\n ...(() => {\n if (prefetchModes.includes('hover')) {\n return prefetchHoverEvents\n }\n\n if (prefetchModes.includes('click')) {\n return prefetchClickEvents\n }\n\n return regularEvents\n })(),\n 'data-loading': inFlightCount > 0 ? '' : undefined,\n },\n children,\n )\n },\n)\nLink.displayName = 'InertiaLink'\n\nexport default Link\n", "import { PollOptions, ReloadOptions, router } from '@inertiajs/core'\nimport { useEffect, useRef } from 'react'\n\nexport default function usePoll(\n interval: number,\n requestOptions: ReloadOptions = {},\n options: PollOptions = {\n keepAlive: false,\n autoStart: true,\n },\n) {\n const pollRef = useRef(\n router.poll(interval, requestOptions, {\n ...options,\n autoStart: false,\n }),\n )\n\n useEffect(() => {\n if (options.autoStart ?? true) {\n pollRef.current.start()\n }\n\n return () => pollRef.current.stop()\n }, [])\n\n return {\n stop: pollRef.current.stop,\n start: pollRef.current.start,\n }\n}\n", "import { router, VisitOptions } from '@inertiajs/core'\nimport { useEffect, useState } from 'react'\n\nexport default function usePrefetch(options: VisitOptions = {}): {\n lastUpdatedAt: number | null\n isPrefetching: boolean\n isPrefetched: boolean\n flush: () => void\n} {\n const cached = typeof window === 'undefined' ? null : router.getCached(window.location.pathname, options)\n const inFlight = typeof window === 'undefined' ? null : router.getPrefetching(window.location.pathname, options)\n\n const [lastUpdatedAt, setLastUpdatedAt] = useState<number | null>(cached?.staleTimestamp || null)\n const [isPrefetching, setIsPrefetching] = useState(inFlight !== null)\n const [isPrefetched, setIsPrefetched] = useState(cached !== null)\n\n useEffect(() => {\n const onPrefetchingListener = router.on('prefetching', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(true)\n }\n })\n\n const onPrefetchedListener = router.on('prefetched', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(false)\n setIsPrefetched(true)\n setLastUpdatedAt(e.detail.fetchedAt)\n }\n })\n\n return () => {\n onPrefetchedListener()\n onPrefetchingListener()\n }\n }, [])\n\n return {\n lastUpdatedAt,\n isPrefetching,\n isPrefetched,\n flush: () => router.flush(window.location.pathname, options),\n }\n}\n", "import { ReloadOptions, router } from '@inertiajs/core'\nimport { createElement, ReactNode, useCallback, useEffect, useRef, useState } from 'react'\n\ninterface WhenVisibleProps {\n children: ReactNode | (() => ReactNode)\n fallback: ReactNode | (() => ReactNode)\n data?: string | string[]\n params?: ReloadOptions\n buffer?: number\n as?: string\n always?: boolean\n}\n\nconst WhenVisible = ({ children, data, params, buffer, as, always, fallback }: WhenVisibleProps) => {\n always = always ?? false\n as = as ?? 'div'\n fallback = fallback ?? null\n\n const [loaded, setLoaded] = useState(false)\n const hasFetched = useRef<boolean>(false)\n const fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n\n const getReloadParams = useCallback<() => Partial<ReloadOptions>>(() => {\n if (data) {\n return {\n only: (Array.isArray(data) ? data : [data]) as string[],\n }\n }\n\n if (!params) {\n throw new Error('You must provide either a `data` or `params` prop.')\n }\n\n return params\n }, [params, data])\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (!always && hasFetched.current) {\n observer.disconnect()\n }\n\n if (fetching.current) {\n return\n }\n\n hasFetched.current = true\n fetching.current = true\n\n const reloadParams = getReloadParams()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.current = true\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n setLoaded(true)\n fetching.current = false\n reloadParams.onFinish?.(e)\n\n if (!always) {\n observer.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.observe(ref.current)\n\n return () => {\n observer.disconnect()\n }\n }, [ref, getReloadParams, buffer])\n\n const resolveChildren = () => (typeof children === 'function' ? children() : children)\n const resolveFallback = () => (typeof fallback === 'function' ? fallback() : fallback)\n\n if (always || !loaded) {\n return createElement(\n as,\n {\n props: null,\n ref,\n },\n loaded ? resolveChildren() : resolveFallback(),\n )\n }\n\n return loaded ? resolveChildren() : null\n}\n\nWhenVisible.displayName = 'InertiaWhenVisible'\n\nexport default WhenVisible\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAC,gBAA6E;;;ACA7E,kBAQO;AACP,IAAAC,gBAA0F;;;ACR1F,mBAA8B;AAE9B,IAAM,kBAAc,4BAAkC,IAAI;AAC1D,YAAY,cAAc;AAE1B,IAAO,sBAAQ;;;ACLf,IAAAC,gBAA8B;AAE9B,IAAM,kBAAc,6BAA2B,IAAI;AACnD,YAAY,cAAc;AAE1B,IAAO,sBAAQ;;;AFQf,IAAI,uBAAuB;AAC3B,IAAI,sBAAsB;AAC1B,IAAI,gBAA6C,YAAY;AAI3D,yBAAuB;AACzB;AAmBe,SAAR,IAAgE;AAAA,EACrE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAiC;AAC/B,QAAM,CAAC,SAAS,UAAU,QAAI,wBAAsB;AAAA,IAClD,WAAW,oBAAoB;AAAA,IAC/B,MAAM;AAAA,IACN,KAAK;AAAA,EACP,CAAC;AAED,QAAM,kBAAc,uBAAQ,MAAM;AAChC,eAAO;AAAA,MACL,OAAO,WAAW;AAAA,MAClB,kBAAkB,CAAC,UAAU;AAAA,MAC7B,iBAAiB,MAAM;AAAA,MAAC;AAAA,IAC1B;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,MAAI,CAAC,qBAAqB;AACxB,uBAAO,KAAqB;AAAA,MAC1B;AAAA,MACA;AAAA,MACA,eAAe,OAAO,SAAS,cAAc,IAAI;AAAA,IACnD,CAAC;AAED,0BAAsB;AAAA,EACxB;AAEA,+BAAU,MAAM;AACd,oBAAgB,OAAO,EAAE,WAAW,MAAM,cAAc,MAA4B;AAClF,UAAI,sBAAsB;AAGxB,+BAAuB;AACvB;AAAA,MACF;AAEA,iBAAW,CAACC,cAAa;AAAA,QACvB;AAAA,QACA;AAAA,QACA,KAAK,gBAAgBA,SAAQ,MAAM,KAAK,IAAI;AAAA,MAC9C,EAAE;AAAA,IACJ;AAEA,uBAAO,GAAG,YAAY,MAAM,YAAY,YAAY,CAAC;AAAA,EACvD,GAAG,CAAC,CAAC;AAEL,MAAI,CAAC,QAAQ,WAAW;AACtB,eAAO;AAAA,MACL,oBAAY;AAAA,MACZ,EAAE,OAAO,YAAY;AAAA,UACrB,6BAAc,oBAAY,UAAU,EAAE,OAAO,QAAQ,KAAK,GAAG,IAAI;AAAA,IACnE;AAAA,EACF;AAEA,QAAM,iBACJ,aACC,CAAC,EAAE,WAAW,OAAO,IAAI,MAAM;AAC9B,UAAM,YAAQ,6BAAc,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC;AAExD,QAAI,OAAO,UAAU,WAAW,YAAY;AAC1C,aAAQ,UAAU,OAA0B,KAAK;AAAA,IACnD;AAEA,QAAI,MAAM,QAAQ,UAAU,MAAM,GAAG;AACnC,aAAQ,UAAU,OACf,OAAO,KAAK,EACZ,QAAQ,EACR,OAAO,CAACC,WAAe,eAAgB,6BAAc,QAAQ,EAAE,UAAAA,WAAU,GAAG,MAAM,CAAC,CAAC;AAAA,IACzF;AAEA,WAAO;AAAA,EACT;AAEF,aAAO;AAAA,IACL,oBAAY;AAAA,IACZ,EAAE,OAAO,YAAY;AAAA,QACrB;AAAA,MACE,oBAAY;AAAA,MACZ,EAAE,OAAO,QAAQ,KAAK;AAAA,MACtB,eAAe;AAAA,QACb,WAAW,QAAQ;AAAA,QACnB,KAAK,QAAQ;AAAA,QACb,OAAO,QAAQ,KAAK;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEA,IAAI,cAAc;;;AGrIlB,IAAAC,eAQO;AACP,IAAAC,gBAA4C;AAyC5C,eAAO,iBAAmF;AAAA,EACxF,KAAK;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAAC,YAAW,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,EACA,WAAW,CAAC;AACd,GAAoG;AAClG,SAAO,QAAQ,QAAQ;AAEvB,QAAM,WAAW,OAAO,WAAW;AACnC,QAAM,KAAK,WAAW,OAAO,SAAS,eAAe,EAAE;AACvD,QAAM,cAAc,QAAQ,KAAK,MAAM,IAAI,QAAQ,QAAQ,IAAI;AAG/D,QAAM,mBAAmB,CAAC,SAAS,QAAQ,QAAQ,QAAQ,IAAI,CAAC,EAAE,KAAK,CAACC,YAAWA,QAAO,WAAWA,OAAM;AAE3G,MAAI,OAAiB,CAAC;AAEtB,QAAM,WAAW,MAAM,QAAQ,IAAI;AAAA,IACjC,iBAAiB,YAAY,SAAS;AAAA,IACtC,oBAAO,eAAe,EAAE,MAAM,MAAM;AAAA,IAAC,CAAC;AAAA,EACxC,CAAC,EAAE,KAAK,CAAC,CAAC,gBAAgB,MAAM;AAC9B,UAAM,QAAQ;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe;AAAA,IACjB;AAEA,QAAI,UAAU;AACZ,YAAM,WAAW;AAEjB,aAAO,SAAS;AAAA,QACd,IAAI;AAAA,QACJ;AAAA,QACA,OAAO,EAAE,GAAG,OAAO,cAAc,CAAC,aAAwB,OAAO,SAAU;AAAA,MAC7E,CAAC;AAAA,IACH;AAEA,UAAM,WAAW;AAEjB,WAAO,SAAS;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,MAAI,CAAC,YAAYD,WAAU;AACzB,oCAAcA,SAAQ;AAAA,EACxB;AAEA,MAAI,YAAY,QAAQ;AACtB,UAAM,OAAO,MAAM;AAAA,UACjB;AAAA,QACE;AAAA,QACA;AAAA,UACE;AAAA,UACA,aAAa,KAAK,UAAU,WAAW;AAAA,QACzC;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,WAAO,EAAE,MAAM,KAAK;AAAA,EACtB;AACF;;;ACvHA,IAAAE,gBAAwD;;;ACCxD,IAAAC,gBAAkB;AAGH,SAAR,UAAyG;AAE9G,QAAM,OAAO,OAAO,cAAAC,QAAM,QAAQ,aAAa,cAAAA,QAAM,IAAI,mBAAW,IAAI,cAAAA,QAAM,WAAW,mBAAW;AAEpG,MAAI,CAAC,MAAM;AACT,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AAEA,SAAO;AACT;;;ADTA,IAAM,iBAAiB,CAAC,QAA6B;AACnD,QAAM,IAAI,IAAI,IAAI,IAAI;AACtB,MAAI,OAAO;AAEX,SAAO;AACT;AAEA,IAAM,uBAAuB,CAAC,MAAsB,SAAkC;AACpF,SAAO,eAAe,IAAI,EAAE,SAAS,eAAe,IAAI,EAAE;AAC5D;AAQA,IAAM,WAAW,CAAC,EAAE,UAAU,MAAM,SAAS,MAAqB;AAChE,MAAI,CAAC,MAAM;AACT,UAAM,IAAI,MAAM,wEAAwE;AAAA,EAC1F;AAEA,QAAM,CAAC,QAAQ,SAAS,QAAI,wBAAS,KAAK;AAC1C,QAAM,YAAY,QAAQ,EAAE;AAC5B,QAAM,WAAO,uBAAQ,MAAO,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI,GAAI,CAAC,IAAI,CAAC;AAExE,+BAAU,MAAM;AACd,UAAM,iBAAiBC,QAAO,GAAG,SAAS,CAAC,MAAM;AAC/C,YAAM,iBAAiB,EAAE,OAAO,MAAM,KAAK,SAAS,KAAK,EAAE,OAAO,MAAM,OAAO,SAAS;AACxF,YAAM,iBAAiB,EAAE,OAAO,MAAM,KAAK,KAAK,CAAC,QAAQ,KAAK,SAAS,GAAG,CAAC;AAE3E,UAAI,qBAAqB,EAAE,OAAO,MAAM,KAAK,OAAO,QAAQ,MAAM,CAAC,kBAAkB,iBAAiB;AACpG,kBAAU,KAAK;AAAA,MACjB;AAAA,IACF,CAAC;AAED,WAAO,MAAM;AACX,qBAAe;AAAA,IACjB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,+BAAU,MAAM;AACd,cAAU,KAAK,MAAM,CAAC,QAAQ,UAAU,GAAG,MAAM,MAAS,CAAC;AAAA,EAC7D,GAAG,CAAC,WAAW,IAAI,CAAC;AAEpB,MAAI,QAAQ;AACV,WAAO,OAAO,aAAa,aAAa,SAAS,IAAI;AAAA,EACvD;AAEA,SAAO,OAAO,aAAa,aAAa,SAAS,IAAI;AACvD;AAEA,SAAS,cAAc;AAEvB,IAAO,mBAAQ;;;AE1Df,IAAAC,eAWO;AACP,IAAAC,oBAAwB;AACxB,IAAAC,iBAUO;;;ACvBP,IAAAC,eAcO;AACP,uBAAkD;AAClD,IAAAC,gBAAkE;;;AChBlE,IAAAC,gBAA2E;AAIpE,SAAS,0BAA0B,QAAwB,MAA6B;AAC7F,SAAO,WAAW,kBAAc,yBAAU,QAAQ,IAAI,QAAI,+BAAgB,QAAQ,IAAI;AACxF;;;ACNA,IAAAC,eAAuB;AACvB,IAAAC,gBAA8D;AAE/C,SAAR,YACL,cACA,KAC0C;AAC1C,QAAM,CAAC,OAAO,QAAQ,QAAI,wBAAS,MAAM;AACvC,UAAM,WAAW,oBAAO,QAAQ,GAAG;AAEnC,WAAO,aAAa,SAAY,WAAW;AAAA,EAC7C,CAAC;AAED,+BAAU,MAAM;AACd,wBAAO,SAAS,OAAO,GAAG;AAAA,EAC5B,GAAG,CAAC,OAAO,GAAG,CAAC;AAEf,SAAO,CAAC,OAAO,QAAQ;AACzB;;;AFmDe,SAAR,QACL,4BACA,oBACyB;AACzB,QAAM,gBAAY,sBAAO,KAAK;AAC9B,QAAM,cAAc,OAAO,+BAA+B,WAAW,6BAA6B;AAClG,QAAM,CAAC,UAAU,WAAW,QAAI;AAAA,KAC7B,OAAO,+BAA+B,WAAW,qBAAqB,+BAAgC,CAAC;AAAA,EAC1G;AACA,QAAM,kBAAc,sBAA2B,IAAI;AACnD,QAAM,kCAA8B,sBAAe,MAAS;AAC5D,QAAM,CAAC,MAAM,OAAO,IAAI,cAAc,YAAY,UAAU,GAAG,WAAW,OAAO,QAAI,wBAAS,QAAQ;AACtG,QAAM,CAAC,QAAQ,SAAS,IAAI,cACxB,YAAY,CAAC,GAA4B,GAAG,WAAW,SAAS,QAChE,wBAAS,CAAC,CAA0B;AACxC,QAAM,CAAC,WAAW,YAAY,QAAI,wBAAS,KAAK;AAChD,QAAM,CAAC,YAAY,aAAa,QAAI,wBAAS,KAAK;AAClD,QAAM,CAACC,WAAU,WAAW,QAAI,wBAA0B,IAAI;AAC9D,QAAM,CAAC,eAAe,gBAAgB,QAAI,wBAAS,KAAK;AACxD,QAAM,CAAC,oBAAoB,qBAAqB,QAAI,wBAAS,KAAK;AAClE,QAAM,gBAAY,sBAAiC,CAACC,UAASA,KAAI;AACjE,QAAM,cAAU,uBAAQ,MAAM,KAAC,0BAAQ,MAAM,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC;AAExE,+BAAU,MAAM;AACd,cAAU,UAAU;AACpB,WAAO,MAAM;AACX,gBAAU,UAAU;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,CAAC;AAIL,QAAM,mCAA+B,sBAAO,KAAK;AAEjD,QAAM,aAAS;AAAA,IACb,IAAI,SAAqB;AACvB,YAAM,eAAe,KAAK,CAAC,MAAM,QAAQ,OAAO,KAAK,CAAC,MAAM;AAE5D,YAAM,SAAS,eAAe,KAAK,CAAC,EAAE,SAAU,KAAK,CAAC;AACtD,YAAM,MAAM,eAAe,KAAK,CAAC,EAAE,MAAO,KAAK,CAAC;AAChD,YAAM,WAAW,eAAe,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC;AAEvD,mCAA6B,UAAU;AAEvC,YAAM,WAAyB;AAAA,QAC7B,GAAG;AAAA,QACH,eAAe,CAAC,UAAU;AACxB,sBAAY,UAAU;AAEtB,cAAI,QAAQ,eAAe;AACzB,mBAAO,QAAQ,cAAc,KAAK;AAAA,UACpC;AAAA,QACF;AAAA,QACA,UAAU,CAAC,UAAU;AACnB,2BAAiB,KAAK;AACtB,gCAAsB,KAAK;AAC3B,uBAAa,4BAA4B,OAAO;AAEhD,cAAI,QAAQ,UAAU;AACpB,mBAAO,QAAQ,SAAS,KAAK;AAAA,UAC/B;AAAA,QACF;AAAA,QACA,SAAS,CAAC,UAAU;AAClB,wBAAc,IAAI;AAElB,cAAI,QAAQ,SAAS;AACnB,mBAAO,QAAQ,QAAQ,KAAK;AAAA,UAC9B;AAAA,QACF;AAAA,QACA,YAAY,CAAC,UAAU;AACrB,sBAAY,SAAS,IAAI;AAEzB,cAAI,QAAQ,YAAY;AACtB,mBAAO,QAAQ,WAAW,KAAK;AAAA,UACjC;AAAA,QACF;AAAA,QACA,WAAW,OAAO,SAAS;AACzB,cAAI,UAAU,SAAS;AACrB,0BAAc,KAAK;AACnB,wBAAY,IAAI;AAChB,sBAAU,CAAC,CAA0B;AACrC,yBAAa,KAAK;AAClB,6BAAiB,IAAI;AACrB,kCAAsB,IAAI;AAC1B,wCAA4B,UAAU,WAAW,MAAM;AACrD,kBAAI,UAAU,SAAS;AACrB,sCAAsB,KAAK;AAAA,cAC7B;AAAA,YACF,GAAG,OAAO,IAAI,iCAAiC,CAAC;AAAA,UAClD;AAEA,gBAAM,YAAY,QAAQ,YAAY,MAAM,QAAQ,UAAU,IAAI,IAAI;AAEtE,cAAI,UAAU,WAAW,CAAC,6BAA6B,SAAS;AAC9D,oBAAQ,CAACA,UAAS;AAChB,8BAAY,4BAAUA,KAAI,CAAC;AAC3B,qBAAOA;AAAA,YACT,CAAC;AAAA,UACH;AAEA,iBAAO;AAAA,QACT;AAAA,QACA,SAAS,CAACC,YAAW;AACnB,cAAI,UAAU,SAAS;AACrB,0BAAc,KAAK;AACnB,wBAAY,IAAI;AAChB,sBAAUA,OAA+B;AACzC,yBAAa,IAAI;AAAA,UACnB;AAEA,cAAI,QAAQ,SAAS;AACnB,mBAAO,QAAQ,QAAQA,OAAM;AAAA,UAC/B;AAAA,QACF;AAAA,QACA,UAAU,MAAM;AACd,cAAI,UAAU,SAAS;AACrB,0BAAc,KAAK;AACnB,wBAAY,IAAI;AAAA,UAClB;AAEA,cAAI,QAAQ,UAAU;AACpB,mBAAO,QAAQ,SAAS;AAAA,UAC1B;AAAA,QACF;AAAA,QACA,UAAU,CAAC,UAAU;AACnB,cAAI,UAAU,SAAS;AACrB,0BAAc,KAAK;AACnB,wBAAY,IAAI;AAAA,UAClB;AAEA,sBAAY,UAAU;AAEtB,cAAI,QAAQ,UAAU;AACpB,mBAAO,QAAQ,SAAS,KAAK;AAAA,UAC/B;AAAA,QACF;AAAA,MACF;AAEA,YAAM,kBAAkB,UAAU,QAAQ,IAAI;AAE9C,UAAI,WAAW,UAAU;AACvB,4BAAO,OAAO,KAAK,EAAE,GAAG,UAAU,MAAM,gBAAgB,CAAC;AAAA,MAC3D,OAAO;AACL,4BAAO,MAAM,EAAE,KAAK,iBAAiB,QAAQ;AAAA,MAC/C;AAAA,IACF;AAAA,IACA,CAAC,MAAM,WAAW,SAAS;AAAA,EAC7B;AAEA,QAAM,sBAAkB;AAAA,IACtB,CAAC,WAA4D,eAAqB;AAChF,UAAI,OAAO,cAAc,UAAU;AACjC,gBAAQ,CAACD,cAAS,0BAAI,4BAAUA,KAAI,GAAG,WAAW,UAAU,CAAC;AAAA,MAC/D,WAAW,OAAO,cAAc,YAAY;AAC1C,gBAAQ,CAACA,UAAS,UAAUA,KAAI,CAAC;AAAA,MACnC,OAAO;AACL,gBAAQ,SAAkB;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,CAAC,OAAO;AAAA,EACV;AAEA,QAAM,CAAC,gBAAgB,iBAAiB,QAAI,wBAAS,KAAK;AAE1D,QAAM,cAAU,sBAAO,IAAI;AAE3B,+BAAU,MAAM;AACd,YAAQ,UAAU;AAAA,EACpB,CAAC;AAED,QAAM,0BAAsB;AAAA,IAC1B,CAAC,eAAsD,eAAyB;AAC9E,mCAA6B,UAAU;AAEvC,UAAI,OAAO,kBAAkB,aAAa;AACxC,oBAAY,QAAQ,OAAO;AAI3B,0BAAkB,IAAI;AAAA,MACxB,OAAO;AACL,oBAAY,CAACE,cAAa;AACxB,iBAAO,OAAO,kBAAkB,eAC5B,0BAAI,4BAAUA,SAAQ,GAAG,eAAe,UAAU,IAClD,OAAO,WAAO,4BAAUA,SAAQ,GAAG,aAAa;AAAA,QACtD,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,CAAC,WAAW;AAAA,EACd;AAEA,4BAA0B,MAAM;AAC9B,QAAI,CAAC,gBAAgB;AACnB;AAAA,IACF;AAEA,QAAI,SAAS;AAGX,kBAAY,IAAI;AAAA,IAClB;AAEA,sBAAkB,KAAK;AAAA,EACzB,GAAG,CAAC,cAAc,CAAC;AAEnB,QAAM,YAAQ;AAAA,IACZ,IAAI,WAAqB;AACvB,UAAI,OAAO,WAAW,GAAG;AACvB,gBAAQ,QAAQ;AAAA,MAClB,OAAO;AACL;AAAA,UAAQ,CAACF,UACN,OACE,OAAO,CAAC,YAAQ,sBAAI,UAAU,GAAG,CAAC,EAClC;AAAA,YACC,CAAC,OAAO,QAAQ;AACd,yBAAO,sBAAI,OAAO,SAAK,sBAAI,UAAU,GAAG,CAAC;AAAA,YAC3C;AAAA,YACA,EAAE,GAAGA,MAAK;AAAA,UACZ;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,SAAS,QAAQ;AAAA,EACpB;AAEA,QAAM,eAAW;AAAA,IACf,CAAC,eAA4D,eAAwB;AACnF,gBAAU,CAACC,YAAW;AACpB,cAAM,YAAY;AAAA,UAChB,GAAGA;AAAA,UACH,GAAI,OAAO,kBAAkB,WAAW,EAAE,CAAC,aAAa,GAAG,WAAW,IAAI;AAAA,QAC5E;AACA,qBAAa,OAAO,KAAK,SAAS,EAAE,SAAS,CAAC;AAC9C,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAAC,WAAW,YAAY;AAAA,EAC1B;AAEA,QAAM,kBAAc;AAAA,IAClB,IAAI,WAAqB;AACvB,gBAAU,CAACA,YAAW;AACpB,cAAM,YAAY,OAAO,KAAKA,OAAM,EAAE;AAAA,UACpC,CAAC,OAAO,WAAW;AAAA,YACjB,GAAG;AAAA,YACH,GAAI,OAAO,SAAS,KAAK,CAAC,OAAO,SAAS,KAAK,IAAI,EAAE,CAAC,KAAK,GAAIA,QAAkB,KAAK,EAAE,IAAI,CAAC;AAAA,UAC/F;AAAA,UACA,CAAC;AAAA,QACH;AACA,qBAAa,OAAO,KAAK,SAAS,EAAE,SAAS,CAAC;AAC9C,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAAC,WAAW,YAAY;AAAA,EAC1B;AAEA,QAAM,0BAAsB;AAAA,IAC1B,IAAI,WAAqB;AACvB,YAAM,GAAG,MAAM;AACf,kBAAY,GAAG,MAAM;AAAA,IACvB;AAAA,IACA,CAAC,OAAO,WAAW;AAAA,EACrB;AAEA,QAAM,qBACJ,CAAC,WACD,CAAC,KAAa,UAAwB,CAAC,MAAM;AAC3C,WAAO,QAAQ,KAAK,OAAO;AAAA,EAC7B;AACF,QAAM,gBAAY,2BAAY,mBAAmB,KAAK,GAAG,CAAC,MAAM,CAAC;AACjE,QAAM,WAAO,2BAAY,mBAAmB,MAAM,GAAG,CAAC,MAAM,CAAC;AAC7D,QAAM,UAAM,2BAAY,mBAAmB,KAAK,GAAG,CAAC,MAAM,CAAC;AAC3D,QAAM,YAAQ,2BAAY,mBAAmB,OAAO,GAAG,CAAC,MAAM,CAAC;AAC/D,QAAM,mBAAe,2BAAY,mBAAmB,QAAQ,GAAG,CAAC,MAAM,CAAC;AAEvE,QAAM,aAAS,2BAAY,MAAM;AAC/B,QAAI,YAAY,SAAS;AACvB,kBAAY,QAAQ,OAAO;AAAA,IAC7B;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,wBAAoB,2BAAY,CAAC,aAAuC;AAC5E,cAAU,UAAU;AAAA,EACtB,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAAF;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAK;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,EACF;AACF;;;AD/VA,IAAM,mBAAmB,CAAC,aAAyB;AACjD,SAAO,eAAAI,QAAM,oBAAoB,aAAa,eAAAA,QAAM,gBAAgB,QAAQ,IAAI,WAAW,UAAU,CAAC;AACxG;AAUA,IAAM,OAAO,MAAM;AAEnB,IAAM,WAAO;AAAA,EACX,CACE;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU,CAAC;AAAA,IACX,yBAAyB;AAAA,IACzB,WAAW;AAAA,IACX,eAAe;AAAA,IACf,YAAY,CAAC,SAAS;AAAA,IACtB,UAAU,CAAC;AAAA,IACX,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB,yBAAyB;AAAA,IACzB,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB,uBAAuB;AAAA,IACvB,sBAAsB,CAAC;AAAA,IACvB;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,OAAO,QAA6B,CAAC,CAAC;AAC5C,UAAM,kBAAc,uBAAwB,MAAS;AAErD,UAAM,qBAAiB,wBAAQ,MAAM;AACnC,iBAAO,8BAAgB,MAAM,IAAI,OAAO,SAAU,OAAO,YAAY;AAAA,IACvE,GAAG,CAAC,QAAQ,MAAM,CAAC;AAEnB,UAAM,CAAC,SAAS,UAAU,QAAI,yBAAS,KAAK;AAC5C,UAAM,kBAAc,uBAAiB,IAAI,SAAS,CAAC;AAEnD,UAAM,cAAc,MAAgB,IAAI,SAAS,YAAY,OAAO;AAKpE,UAAM,UAAU,UAA2C,+BAAiB,YAAY,CAAC;AAEzF,UAAM,mBAAmB,CAAC,UACxB;AAAA,MAAiB,MACf,WAAW,MAAM,SAAS,UAAU,QAAQ,KAAC,2BAAQ,QAAQ,OAAG,+BAAiB,YAAY,OAAO,CAAC,CAAC;AAAA,IACxG;AAEF,kCAAU,MAAM;AACd,kBAAY,UAAU,YAAY;AAElC,YAAM,aAA+C,CAAC,SAAS,UAAU,OAAO;AAEhF,iBAAW,QAAQ,CAAC,MAAM,YAAY,QAAS,iBAAiB,GAAG,gBAAgB,CAAC;AAEpF,aAAO,MAAM,WAAW,QAAQ,CAAC,MAAM,YAAY,SAAS,oBAAoB,GAAG,gBAAgB,CAAC;AAAA,IACtG,GAAG,CAAC,CAAC;AAEL,UAAM,QAAQ,IAAI,WAAqB;AACrC,UAAI,YAAY,SAAS;AACvB,0CAAgB,YAAY,SAAS,YAAY,SAAS,MAAM;AAAA,MAClE;AAAA,IACF;AAEA,UAAM,sBAAsB,IAAI,WAAqB;AACnD,WAAK,YAAY,GAAG,MAAM;AAC1B,YAAM,GAAG,MAAM;AAAA,IACjB;AAEA,UAAM,aAAa,CAAC,gBAAoC;AACtD,UAAI,CAAC,aAAa;AAChB;AAAA,MACF;AAEA,UAAI,gBAAgB,MAAM;AACxB,cAAM;AAAA,MACR,WAAW,YAAY,SAAS,GAAG;AACjC,cAAM,GAAG,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,UAAM,SAAS,MAAM;AACnB,YAAM,CAAC,KAAK,KAAK,QAAI;AAAA,QACnB;AAAA,YACA,8BAAgB,MAAM,IAAI,OAAO,MAAM;AAAA,QACvC,QAAQ;AAAA,QACR;AAAA,MACF;AAEA,YAAM,gBAAmC;AAAA,QACvC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,IAAI,SAAS;AACtB,oBAAU,GAAG,IAAI;AACjB,2BAAiB;AAAA,YACf;AAAA,YACA;AAAA,UACF,CAAC;AACD,qBAAW,cAAc;AAEzB,cAAI,yBAAyB,MAAM;AACjC,qBAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA,WAAW,MAAM;AACf,kBAAQ,GAAG,IAAI;AACf,qBAAW,YAAY;AAAA,QACzB;AAAA,QACA,GAAG;AAAA,MACL;AAEA,WAAK,UAAU,MAAM,UAAU,KAAK,CAAC;AACrC,WAAK,OAAO,gBAAgB,KAAK,aAAa;AAAA,IAChD;AAEA,UAAM,WAAW,MAAM;AACrB,kBAAY,UAAU,YAAY;AAClC,iBAAW,KAAK;AAAA,IAClB;AAEA,UAAM,UAAU,OAAO;AAAA,MACrB,QAAQ,KAAK;AAAA,MACb,WAAW,KAAK;AAAA,MAChB,YAAY,KAAK;AAAA,MACjB,UAAU,KAAK;AAAA,MACf,eAAe,KAAK;AAAA,MACpB,oBAAoB,KAAK;AAAA,MACzB;AAAA,MACA,aAAa,KAAK;AAAA,MAClB;AAAA,MACA,UAAU,KAAK;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,4CAAoB,KAAK,SAAS,CAAC,MAAM,SAAS,MAAM,CAAC;AAEzD,eAAO;AAAA,MACL;AAAA,MACA;AAAA,QACE,GAAG;AAAA,QACH,KAAK;AAAA,QACL,YAAQ,8BAAgB,MAAM,IAAI,OAAO,MAAM;AAAA,QAC/C,QAAQ;AAAA,QACR,UAAU,CAAC,UAAsC;AAC/C,gBAAM,eAAe;AACrB,iBAAO;AAAA,QACT;AAAA;AAAA;AAAA;AAAA;AAAA,QAKA,OAAO,0BAA0B,KAAK,cAAc;AAAA,MACtD;AAAA,MACA,OAAO,aAAa,aAAa,SAAS,QAAQ,CAAC,IAAI;AAAA,IACzD;AAAA,EACF;AACF;AAEA,KAAK,cAAc;AAEnB,IAAO,eAAQ;;;AI1Nf,IAAAC,oBAAuB;AACvB,IAAAC,iBAAkG;AAUlG,IAAM,OAAoB,SAAU,EAAE,UAAU,MAAM,GAAG;AACvD,QAAM,kBAAc,2BAAW,mBAAW;AAC1C,QAAM,eAAW,wBAAQ,MAAM,YAAa,eAAe,GAAG,CAAC,WAAW,CAAC;AAC3E,QAAM,WAAW,OAAO,WAAW;AAEnC,gCAAU,MAAM;AACd,aAAS,UAAU;AACnB,aAAS,OAAO,YAAY,QAAQ,CAAC;AACrC,WAAO,MAAM;AACX,eAAS,WAAW;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,UAAU,UAAU,KAAK,CAAC;AAE9B,WAAS,WAAW,MAAyB;AAC3C,WACE,OAAO,KAAK,SAAS,YACrB;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,QAAQ,KAAK,IAAI,IAAI;AAAA,EAE3B;AAEA,WAAS,eAAe,MAAiC;AACvD,UAAM,QAAQ,OAAO,KAAK,KAAK,KAAK,EAAE,OAAO,CAAC,OAAO,SAAS;AAC5D,UAAI,CAAC,YAAY,YAAY,yBAAyB,EAAE,SAAS,IAAI,GAAG;AACtE,eAAO;AAAA,MACT;AAEA,YAAM,QAAQ,OAAO,KAAK,MAAM,IAAI,CAAC;AAErC,UAAI,UAAU,IAAI;AAChB,eAAO,QAAQ,IAAI,IAAI;AAAA,MACzB;AAEA,aAAO,QAAQ,IAAI,IAAI,SAAK,0BAAO,KAAK,CAAC;AAAA,IAC3C,GAAG,EAAE;AAEL,WAAO,IAAI,OAAO,KAAK,IAAI,CAAC,GAAG,KAAK;AAAA,EACtC;AAEA,WAAS,kBAAkB,MAAiC;AAC1D,UAAM,EAAE,UAAAC,UAAS,IAAI,KAAK;AAE1B,QAAI,OAAOA,cAAa,UAAU;AAChC,aAAOA;AAAA,IACT;AAEA,QAAI,MAAM,QAAQA,SAAQ,GAAG;AAC3B,aAAOA,UAAS,OAAO,CAAC,MAAM,UAAU,OAAO,UAAU,KAAK,GAAG,EAAE;AAAA,IACrE;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,UAAU,MAAiC;AAClD,QAAI,OAAO,eAAe,IAAI;AAE9B,QAAI,KAAK,MAAM,UAAU;AACvB,cAAQ,kBAAkB,IAAI;AAAA,IAChC;AAEA,QAAI,KAAK,MAAM,yBAAyB;AACtC,cAAQ,KAAK,MAAM,wBAAwB;AAAA,IAC7C;AAEA,QAAI,CAAC,WAAW,IAAI,GAAG;AACrB,cAAQ,KAAK,OAAO,KAAK,IAAI,CAAC;AAAA,IAChC;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,yBAAyB,MAAyB;AACzD,WAAO,eAAAC,QAAM,aAAa,MAAM;AAAA,MAC9B,CAAC,SAAS,mBAAmB,CAAC,GAAG,KAAK,MAAM,UAAU,MAAM,SAAY,KAAK,MAAM,UAAU,IAAI;AAAA,IACnG,CAAC;AAAA,EACH;AAEA,WAAS,WAAW,MAAyB;AAC3C,WAAO,UAAU,yBAAyB,IAAI,CAAC;AAAA,EACjD;AAEA,WAAS,YAAY,OAAkB;AACrC,UAAM,WAAW,eAAAA,QAAM,SAAS,QAAQ,KAAK,EAC1C,OAAO,CAAC,SAAS,IAAI,EACrB,IAAI,CAAC,SAAS,WAAW,IAAyB,CAAC;AAEtD,QAAI,SAAS,CAAC,SAAS,KAAK,CAAC,QAAQ,IAAI,WAAW,QAAQ,CAAC,GAAG;AAC9D,eAAS,KAAK,UAAU,SAAS,mBAAmB,CAAC,IAAI,KAAK,UAAU;AAAA,IAC1E;AAEA,WAAO;AAAA,EACT;AAEA,MAAI,UAAU;AACZ,aAAS,OAAO,YAAY,QAAQ,CAAC;AAAA,EACvC;AAEA,SAAO;AACT;AACA,IAAO,eAAQ;;;AC7Hf,IAAAC,eAQO;AACP,IAAAC,iBASO;AAEP,IAAM,qBAAqB,CACzB,OACA,aACuB;AACvB,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAGA,MAAI,SAAS,OAAO,UAAU,YAAY,aAAa,OAAO;AAC5D,WAAO,MAAM;AAAA,EACf;AAGA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,SAAS,cAAc,KAAK;AAAA,EACrC;AAEA,SAAO;AACT;AAGA,IAAM,aAAa,CACjB,aACA,WACA,WAA4B,SACR;AACpB,MAAI,CAAC,aAAa;AAChB,WAAO;AAAA,EACT;AAEA,SAAO,OAAO,gBAAgB,aAAa,YAAY,SAAS,IAAI;AACtE;AAqBA,IAAM,qBAAiB;AAAA,EACrB,CACE;AAAA,IACE;AAAA,IACA,SAAS;AAAA,IACT,KAAK;AAAA,IACL,SAAS;AAAA,IACT,cAAc;AAAA,IACd,cAAc;AAAA,IACd,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,eAAe;AAAA,IACf,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,CAAC,qBAAqB,sBAAsB,QAAI,yBAA6B,IAAI;AACvF,UAAM,sBAAkB,4BAAY,CAAC,SAA6B,uBAAuB,IAAI,GAAG,CAAC,CAAC;AAElG,UAAM,CAAC,mBAAmB,oBAAoB,QAAI,yBAA6B,IAAI;AACnF,UAAM,oBAAgB,4BAAY,CAAC,SAA6B,qBAAqB,IAAI,GAAG,CAAC,CAAC;AAE9F,UAAM,CAAC,qBAAqB,sBAAsB,QAAI,yBAA6B,IAAI;AACvF,UAAM,sBAAkB,4BAAY,CAAC,SAA6B,uBAAuB,IAAI,GAAG,CAAC,CAAC;AAElG,UAAM,CAAC,iBAAiB,kBAAkB,QAAI,yBAAS,KAAK;AAC5D,UAAM,CAAC,aAAa,cAAc,QAAI,yBAAS,KAAK;AACpD,UAAM,CAAC,cAAc,eAAe,QAAI,yBAAS,CAAC;AAElD,UAAM,CAAC,sBAAsB,uBAAuB,QAAI,yBAA6B,IAAI;AACzF,UAAM,CAAC,oBAAoB,qBAAqB,QAAI,yBAA6B,IAAI;AACrF,UAAM,CAAC,sBAAsB,uBAAuB,QAAI,yBAA6B,IAAI;AAGzF,kCAAU,MAAM;AACd,YAAM,UAAU,eAAe,mBAAmB,cAAc,mBAAmB,IAAI;AACvF,8BAAwB,OAAO;AAAA,IACjC,GAAG,CAAC,cAAc,mBAAmB,CAAC;AAEtC,kCAAU,MAAM;AACd,YAAM,UAAU,aAAa,mBAAmB,YAAY,iBAAiB,IAAI;AACjF,4BAAsB,OAAO;AAAA,IAC/B,GAAG,CAAC,YAAY,iBAAiB,CAAC;AAElC,kCAAU,MAAM;AACd,YAAM,UAAU,eAAe,mBAAmB,cAAc,mBAAmB,IAAI;AACvF,8BAAwB,OAAO;AAAA,IACjC,GAAG,CAAC,cAAc,mBAAmB,CAAC;AAEtC,UAAM,uBAAmB,wBAAQ,UAAM,kCAAoB,oBAAoB,GAAG,CAAC,oBAAoB,CAAC;AAExG,UAAM,uBAAmB,uBAAO;AAAA,MAC9B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAED,qBAAiB,UAAU;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,UAAM,CAAC,gBAAgB,iBAAiB,QAAI,yBAAwC,IAAI;AAExF,UAAM,kBAAc,wBAAQ,MAAM,gBAAgB,aAAa,CAAC,cAAc,CAAC;AAC/E,UAAM,qBAAiB,wBAAQ,MAAM,gBAAgB,gBAAgB,CAAC,cAAc,CAAC;AAErF,UAAM,qBAAiB,4BAAY,MAAM;AACvC,UAAI,kBAAkB;AACpB,yBAAiB,SAAS;AAAA,UACxB,KAAK,iBAAiB;AAAA,UACtB,UAAU;AAAA,QACZ,CAAC;AAAA,MACH,OAAO;AACL,eAAO,SAAS;AAAA,UACd,KAAK,SAAS,KAAK;AAAA,UACnB,UAAU;AAAA,QACZ,CAAC;AAAA,MACH;AAAA,IACF,GAAG,CAAC,gBAAgB,CAAC;AAGrB,kCAAU,MAAM;AACd,UAAI,CAAC,sBAAsB;AACzB;AAAA,MACF;AAEA,YAAM,6BAAyB,gCAAkB;AAAA;AAAA,QAE/C,aAAa,MAAM;AAAA,QACnB,eAAe,MAAM,iBAAiB,QAAQ;AAAA,QAC9C,iBAAiB,MAAM,CAAC,iBAAiB,QAAQ;AAAA,QACjD,qBAAqB,MAAM,CAAC,iBAAiB,QAAQ;AAAA,QACrD,mBAAmB,MAAM,iBAAiB,QAAQ;AAAA;AAAA,QAGlD,kBAAkB,MAAM,iBAAiB,QAAQ;AAAA,QACjD,iBAAiB,MAAM;AAAA,QACvB,eAAe,MAAM;AAAA,QACrB,iBAAiB,MAAM;AAAA,QACvB,qBAAqB,MAAM;AAAA;AAAA,QAG3B,yBAAyB,MAAM,mBAAmB,IAAI;AAAA,QACtD,qBAAqB,MAAM,eAAe,IAAI;AAAA,QAC9C,2BAA2B,MAAM;AAC/B,6BAAmB,KAAK;AACxB,0BAAgB,uBAAuB,YAAY,gBAAgB,CAAC;AAAA,QACtE;AAAA,QACA,uBAAuB,MAAM;AAC3B,yBAAe,KAAK;AACpB,0BAAgB,uBAAuB,YAAY,gBAAgB,CAAC;AAAA,QACtE;AAAA,MACF,CAAC;AAED,wBAAkB,sBAAsB;AACxC,YAAM,EAAE,aAAAC,cAAa,gBAAAC,gBAAe,IAAI;AAExC,sBAAgBD,aAAY,gBAAgB,CAAC;AAE7C,MAAAC,gBAAe,eAAe;AAC9B,MAAAA,gBAAe,4BAA4BD,aAAY,kBAAkB,CAAC;AAE1E,UAAI,UAAU;AACZ,QAAAC,gBAAe,eAAe;AAAA,MAChC;AAEA,aAAO,MAAM;AACX,+BAAuB,MAAM;AAC7B,0BAAkB,IAAI;AAAA,MACxB;AAAA,IACF,GAAG,CAAC,MAAM,sBAAsB,sBAAsB,oBAAoB,gBAAgB,CAAC;AAE3F,UAAM,iBAAa;AAAA,MACjB,MAAM,UAAW,cAAc,KAAK,gBAAgB;AAAA,MACpD,CAAC,QAAQ,aAAa,YAAY;AAAA,IACpC;AACA,UAAM,eAAW,wBAAQ,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC;AAExD,kCAAU,MAAM;AACd,iBAAW,gBAAgB,eAAe,IAAI,gBAAgB,gBAAgB;AAAA,IAChF,GAAG,CAAC,UAAU,UAAU,cAAc,sBAAsB,kBAAkB,CAAC;AAE/E,kCAAU,MAAM;AAEd,YAAM,mBAAmB,eAAe,SAAY,aAAa;AAEjE,UAAI,kBAAkB;AACpB,uBAAe;AAAA,MACjB;AAAA,IACF,GAAG,CAAC,gBAAgB,CAAC;AAErB;AAAA,MACE;AAAA,MACA,OAAO;AAAA,QACL,WAAW,aAAa,cAAc,MAAM;AAAA,QAAC;AAAA,QAC7C,eAAe,aAAa,kBAAkB,MAAM;AAAA,QAAC;AAAA,QACrD,aAAa,aAAa,gBAAgB,MAAM;AAAA,QAChD,SAAS,aAAa,YAAY,MAAM;AAAA,MAC1C;AAAA,MACA,CAAC,WAAW;AAAA,IACd;AAEA,UAAM,iBAAiB,YAAY,CAAC;AACpC,UAAM,iBAAiB,YAAY,CAAC;AAEpC,UAAM,gBAGF;AAAA,MACF;AAAA,MACA;AAAA,MACA,aAAa,aAAa,YAAY,KAAK;AAAA,MAC3C,SAAS,aAAa,QAAQ,KAAK;AAAA,IACrC;AAEA,UAAM,kBAAiD;AAAA,MACrD,SAAS;AAAA,MACT,OAAO,aAAa,kBAAkB,MAAM;AAAA,MAAC;AAAA,MAC7C,UAAU;AAAA,MACV,YAAY,CAAC;AAAA,MACb,SAAS,aAAa,YAAY,KAAK;AAAA,MACvC,GAAG;AAAA,IACL;AAEA,UAAM,cAA6C;AAAA,MACjD,SAAS;AAAA,MACT,OAAO,aAAa,cAAc,MAAM;AAAA,MAAC;AAAA,MACzC,UAAU;AAAA,MACV,YAAY,CAAC;AAAA,MACb,SAAS,aAAa,QAAQ,KAAK;AAAA,MACnC,GAAG;AAAA,IACL;AAEA,UAAM,cAAuC;AAAA,MAC3C,SAAS,mBAAmB;AAAA,MAC5B;AAAA,MACA;AAAA,IACF;AAEA,UAAM,iBAAiB,CAAC;AAGxB,QAAI,CAAC,cAAc;AACjB,qBAAe;AAAA,YACb;AAAA,UACE;AAAA,UACA,EAAE,KAAK,gBAAgB;AAAA;AAAA,UAEvB,WAAW,UAAU,iBAAiB,kBAAkB,WAAW,SAAS,eAAe,IAAI,IAAI;AAAA,QACrG;AAAA,MACF;AAAA,IACF;AAEA,mBAAe;AAAA,UACb;AAAA,QACE;AAAA,QACA,EAAE,GAAG,OAAO,KAAK,gBAAgB;AAAA,QACjC,OAAO,aAAa,aAAa,SAAS,WAAW,IAAI;AAAA,MAC3D;AAAA,IACF;AAGA,QAAI,CAAC,YAAY;AACf,qBAAe;AAAA,YACb;AAAA,UACE;AAAA,UACA,EAAE,KAAK,cAAc;AAAA;AAAA,UAErB,WAAW,MAAM,aAAa,cAAc,WAAW,SAAS,WAAW,IAAI,IAAI;AAAA,QACrF;AAAA,MACF;AAAA,IACF;AAEA,eAAO,8BAAc,eAAAC,QAAM,UAAU,CAAC,GAAG,GAAI,UAAU,CAAC,GAAG,cAAc,EAAE,QAAQ,IAAI,cAAe;AAAA,EACxG;AACF;AAEA,eAAe,cAAc;AAE7B,IAAO,yBAAQ;;;ACtUf,IAAAC,eAYO;AACP,IAAAC,iBAA6F;AAG7F,IAAMC,QAAO,MAAM;AAWnB,IAAM,WAAO;AAAA,EACX,CACE;AAAA,IACE;AAAA,IACA,KAAK;AAAA,IACL,OAAO,CAAC;AAAA,IACR,OAAO;AAAA,IACP,SAAS;AAAA,IACT,iBAAiB;AAAA,IACjB,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,UAAU;AAAA,IACV,OAAO,CAAC;AAAA,IACR,SAAS,CAAC;AAAA,IACV,UAAU,CAAC;AAAA,IACX,yBAAyB;AAAA,IACzB,QAAQ;AAAA,IACR,UAAUA;AAAA,IACV,gBAAgBA;AAAA,IAChB,WAAWA;AAAA,IACX,UAAUA;AAAA,IACV,aAAaA;AAAA,IACb,WAAWA;AAAA,IACX,WAAWA;AAAA,IACX,YAAYA;AAAA,IACZ,UAAUA;AAAA,IACV,gBAAgBA;AAAA,IAChB,eAAeA;AAAA,IACf,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY,CAAC;AAAA,IACb,iBAAiB;AAAA,IACjB,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,CAAC,eAAe,gBAAgB,QAAI,yBAAS,CAAC;AACpD,UAAM,mBAAe,uBAAe,MAAS;AAE7C,UAAM,cAAU,wBAAQ,MAAM;AAC5B,iBAAO,8BAAgB,IAAI,IAAI,KAAK,SAAU,OAAO,YAAY;AAAA,IACnE,GAAG,CAAC,MAAM,MAAM,CAAC;AAEjB,UAAM,UAAM,wBAAQ,MAAM;AACxB,UAAI,OAAO,OAAO,YAAY,GAAG,YAAY,MAAM,KAAK;AAEtD,eAAO;AAAA,MACT;AAEA,aAAO,YAAY,QAAQ,WAAW,GAAG,YAAY;AAAA,IACvD,GAAG,CAAC,IAAI,OAAO,CAAC;AAEhB,UAAM,qBAAiB;AAAA,MACrB,UAAM,uCAAyB,aAAS,8BAAgB,IAAI,IAAI,KAAK,MAAM,MAAM,MAAM,sBAAsB;AAAA,MAC7G,CAAC,MAAM,SAAS,MAAM,sBAAsB;AAAA,IAC9C;AAEA,UAAM,UAAM,wBAAQ,MAAM,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC;AAC7D,UAAM,YAAQ,wBAAQ,MAAM,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC;AAE/D,UAAM,iBAAa;AAAA,MACjB,OAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR;AAAA,QACA,eAAe,iBAAiB,YAAY;AAAA,QAC5C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,CAAC,OAAO,SAAS,gBAAgB,eAAe,aAAa,SAAS,MAAM,QAAQ,SAAS,KAAK;AAAA,IACpG;AAEA,UAAM,kBAAc;AAAA,MAClB,OAAO;AAAA,QACL,GAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ,OAAqB;AAC3B,2BAAiB,CAAC,UAAU,QAAQ,CAAC;AACrC,kBAAQ,KAAK;AAAA,QACf;AAAA,QACA;AAAA,QACA,SAAS,OAAoB;AAC3B,2BAAiB,CAAC,UAAU,QAAQ,CAAC;AACrC,mBAAS,KAAK;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,UAAM,oBAAsC;AAAA,MAC1C,MAAM;AACJ,YAAI,aAAa,MAAM;AACrB,iBAAO,CAAC,OAAO;AAAA,QACjB;AAEA,YAAI,aAAa,OAAO;AACtB,iBAAO,CAAC;AAAA,QACV;AAEA,YAAI,MAAM,QAAQ,QAAQ,GAAG;AAC3B,iBAAO;AAAA,QACT;AAEA,eAAO,CAAC,QAAQ;AAAA,MAClB;AAAA,MACA,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAQ;AAAA,IAChD;AAEA,UAAM,oBAAgB,wBAAQ,MAAM;AAClC,UAAI,aAAa,GAAG;AAElB,eAAO;AAAA,MACT;AAEA,UAAI,cAAc,WAAW,KAAK,cAAc,CAAC,MAAM,SAAS;AAG9D,eAAO;AAAA,MACT;AAGA,aAAO,OAAO,IAAI,mBAAmB;AAAA,IACvC,GAAG,CAAC,UAAU,aAAa,CAAC;AAE5B,UAAM,iBAAa,wBAAQ,MAAM;AAC/B,aAAO,MAAM;AACX,4BAAO;AAAA,UACL;AAAA,UACA;AAAA,YACE,GAAG;AAAA,YACH;AAAA,YACA;AAAA,UACF;AAAA,UACA,EAAE,UAAU,eAAe,UAAU;AAAA,QACvC;AAAA,MACF;AAAA,IACF,GAAG,CAAC,KAAK,YAAY,eAAe,cAAc,eAAe,SAAS,CAAC;AAE3E,kCAAU,MAAM;AACd,aAAO,MAAM;AACX,qBAAa,aAAa,OAAO;AAAA,MACnC;AAAA,IACF,GAAG,CAAC,CAAC;AAEL,kCAAU,MAAM;AACd,UAAI,cAAc,SAAS,OAAO,GAAG;AACnC,mBAAW,MAAM,WAAW,CAAC;AAAA,MAC/B;AAAA,IACF,GAAG,aAAa;AAEhB,UAAM,gBAAgB;AAAA,MACpB,SAAS,CAAC,UAA4B;AACpC,gBAAQ,KAAK;AAEb,gBAAI,8BAAgB,KAAK,GAAG;AAC1B,gBAAM,eAAe;AAErB,8BAAO,MAAM,KAAK,WAAW;AAAA,QAC/B;AAAA,MACF;AAAA,IACF;AAEA,UAAM,sBAAsB;AAAA,MAC1B,cAAc,MAAM;AAClB,qBAAa,UAAU,OAAO,WAAW,MAAM;AAC7C,qBAAW;AAAA,QACb,GAAG,OAAO,IAAI,qBAAqB,CAAC;AAAA,MACtC;AAAA,MACA,cAAc,MAAM;AAClB,qBAAa,aAAa,OAAO;AAAA,MACnC;AAAA,MACA,SAAS,cAAc;AAAA,IACzB;AAEA,UAAM,sBAAsB;AAAA,MAC1B,aAAa,CAAC,UAA4B;AACxC,gBAAI,8BAAgB,KAAK,GAAG;AAC1B,gBAAM,eAAe;AACrB,qBAAW;AAAA,QACb;AAAA,MACF;AAAA,MACA,WAAW,CAAC,UAA+B;AACzC,gBAAI,6BAAe,KAAK,GAAG;AACzB,gBAAM,eAAe;AACrB,qBAAW;AAAA,QACb;AAAA,MACF;AAAA,MACA,WAAW,CAAC,UAA4B;AACtC,gBAAI,8BAAgB,KAAK,GAAG;AAC1B,gBAAM,eAAe;AACrB,8BAAO,MAAM,KAAK,WAAW;AAAA,QAC/B;AAAA,MACF;AAAA,MACA,SAAS,CAAC,UAA+B;AACvC,gBAAI,6BAAe,KAAK,GAAG;AACzB,gBAAM,eAAe;AACrB,8BAAO,MAAM,KAAK,WAAW;AAAA,QAC/B;AAAA,MACF;AAAA,MACA,SAAS,CAAC,UAA4B;AACpC,gBAAQ,KAAK;AAEb,gBAAI,8BAAgB,KAAK,GAAG;AAE1B,gBAAM,eAAe;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAEA,UAAM,cAAU,wBAAQ,MAAM;AAC5B,UAAI,QAAQ,UAAU;AACpB,eAAO,EAAE,MAAM,SAAS;AAAA,MAC1B;AAEA,UAAI,QAAQ,OAAO,OAAO,QAAQ,UAAU;AAC1C,eAAO,EAAE,MAAM,IAAI;AAAA,MACrB;AAEA,aAAO,CAAC;AAAA,IACV,GAAG,CAAC,KAAK,GAAG,CAAC;AAEb,eAAO;AAAA,MACL;AAAA,MACA;AAAA,QACE,GAAG;AAAA,QACH,GAAG;AAAA,QACH;AAAA,QACA,IAAI,MAAM;AACR,cAAI,cAAc,SAAS,OAAO,GAAG;AACnC,mBAAO;AAAA,UACT;AAEA,cAAI,cAAc,SAAS,OAAO,GAAG;AACnC,mBAAO;AAAA,UACT;AAEA,iBAAO;AAAA,QACT,GAAG;AAAA,QACH,gBAAgB,gBAAgB,IAAI,KAAK;AAAA,MAC3C;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;AACA,KAAK,cAAc;AAEnB,IAAO,eAAQ;;;ACrSf,IAAAC,eAAmD;AACnD,IAAAC,iBAAkC;AAEnB,SAAR,QACL,UACA,iBAAgC,CAAC,GACjC,UAAuB;AAAA,EACrB,WAAW;AAAA,EACX,WAAW;AACb,GACA;AACA,QAAM,cAAU;AAAA,IACd,oBAAO,KAAK,UAAU,gBAAgB;AAAA,MACpC,GAAG;AAAA,MACH,WAAW;AAAA,IACb,CAAC;AAAA,EACH;AAEA,gCAAU,MAAM;AACd,QAAI,QAAQ,aAAa,MAAM;AAC7B,cAAQ,QAAQ,MAAM;AAAA,IACxB;AAEA,WAAO,MAAM,QAAQ,QAAQ,KAAK;AAAA,EACpC,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL,MAAM,QAAQ,QAAQ;AAAA,IACtB,OAAO,QAAQ,QAAQ;AAAA,EACzB;AACF;;;AC9BA,IAAAC,eAAqC;AACrC,IAAAC,iBAAoC;AAErB,SAAR,YAA6B,UAAwB,CAAC,GAK3D;AACA,QAAM,SAAS,OAAO,WAAW,cAAc,OAAO,oBAAO,UAAU,OAAO,SAAS,UAAU,OAAO;AACxG,QAAM,WAAW,OAAO,WAAW,cAAc,OAAO,oBAAO,eAAe,OAAO,SAAS,UAAU,OAAO;AAE/G,QAAM,CAAC,eAAe,gBAAgB,QAAI,yBAAwB,QAAQ,kBAAkB,IAAI;AAChG,QAAM,CAAC,eAAe,gBAAgB,QAAI,yBAAS,aAAa,IAAI;AACpE,QAAM,CAAC,cAAc,eAAe,QAAI,yBAAS,WAAW,IAAI;AAEhE,gCAAU,MAAM;AACd,UAAM,wBAAwB,oBAAO,GAAG,eAAe,CAAC,MAAM;AAC5D,UAAI,EAAE,OAAO,MAAM,IAAI,aAAa,OAAO,SAAS,UAAU;AAC5D,yBAAiB,IAAI;AAAA,MACvB;AAAA,IACF,CAAC;AAED,UAAM,uBAAuB,oBAAO,GAAG,cAAc,CAAC,MAAM;AAC1D,UAAI,EAAE,OAAO,MAAM,IAAI,aAAa,OAAO,SAAS,UAAU;AAC5D,yBAAiB,KAAK;AACtB,wBAAgB,IAAI;AACpB,yBAAiB,EAAE,OAAO,SAAS;AAAA,MACrC;AAAA,IACF,CAAC;AAED,WAAO,MAAM;AACX,2BAAqB;AACrB,4BAAsB;AAAA,IACxB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,MAAM,oBAAO,MAAM,OAAO,SAAS,UAAU,OAAO;AAAA,EAC7D;AACF;;;AC3CA,IAAAC,gBAAsC;AACtC,IAAAC,iBAAmF;AAYnF,IAAM,cAAc,CAAC,EAAE,UAAU,MAAM,QAAQ,QAAQ,IAAI,QAAQ,SAAS,MAAwB;AAClG,WAAS,UAAU;AACnB,OAAK,MAAM;AACX,aAAW,YAAY;AAEvB,QAAM,CAAC,QAAQ,SAAS,QAAI,yBAAS,KAAK;AAC1C,QAAM,iBAAa,uBAAgB,KAAK;AACxC,QAAM,eAAW,uBAAgB,KAAK;AACtC,QAAM,UAAM,uBAAuB,IAAI;AAEvC,QAAM,sBAAkB,4BAA0C,MAAM;AACtE,QAAI,MAAM;AACR,aAAO;AAAA,QACL,MAAO,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI;AAAA,MAC3C;AAAA,IACF;AAEA,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,oDAAoD;AAAA,IACtE;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,QAAQ,IAAI,CAAC;AAEjB,gCAAU,MAAM;AACd,QAAI,CAAC,IAAI,SAAS;AAChB;AAAA,IACF;AAEA,UAAM,WAAW,IAAI;AAAA,MACnB,CAAC,YAAY;AACX,YAAI,CAAC,QAAQ,CAAC,EAAE,gBAAgB;AAC9B;AAAA,QACF;AAEA,YAAI,CAAC,UAAU,WAAW,SAAS;AACjC,mBAAS,WAAW;AAAA,QACtB;AAEA,YAAI,SAAS,SAAS;AACpB;AAAA,QACF;AAEA,mBAAW,UAAU;AACrB,iBAAS,UAAU;AAEnB,cAAM,eAAe,gBAAgB;AAErC,6BAAO,OAAO;AAAA,UACZ,GAAG;AAAA,UACH,SAAS,CAAC,MAAM;AACd,qBAAS,UAAU;AACnB,yBAAa,UAAU,CAAC;AAAA,UAC1B;AAAA,UACA,UAAU,CAAC,MAAM;AACf,sBAAU,IAAI;AACd,qBAAS,UAAU;AACnB,yBAAa,WAAW,CAAC;AAEzB,gBAAI,CAAC,QAAQ;AACX,uBAAS,WAAW;AAAA,YACtB;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA;AAAA,QACE,YAAY,GAAG,UAAU,CAAC;AAAA,MAC5B;AAAA,IACF;AAEA,aAAS,QAAQ,IAAI,OAAO;AAE5B,WAAO,MAAM;AACX,eAAS,WAAW;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,KAAK,iBAAiB,MAAM,CAAC;AAEjC,QAAM,kBAAkB,MAAO,OAAO,aAAa,aAAa,SAAS,IAAI;AAC7E,QAAM,kBAAkB,MAAO,OAAO,aAAa,aAAa,SAAS,IAAI;AAE7E,MAAI,UAAU,CAAC,QAAQ;AACrB,eAAO;AAAA,MACL;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP;AAAA,MACF;AAAA,MACA,SAAS,gBAAgB,IAAI,gBAAgB;AAAA,IAC/C;AAAA,EACF;AAEA,SAAO,SAAS,gBAAgB,IAAI;AACtC;AAEA,YAAY,cAAc;AAE1B,IAAO,sBAAQ;;;AhB1GR,IAAM,WAAW,cAAAC;AACjB,IAAMC,UAAS,cAAAC;AAuBf,IAAM,SAAS,cAAAC,OAAW,OAA8B;",
|
|
6
|
+
"names": ["router", "import_core", "import_react", "import_react", "current", "children", "import_core", "import_react", "progress", "module", "import_react", "import_react", "React", "router", "import_core", "import_lodash_es", "import_react", "import_core", "import_react", "import_react", "import_core", "import_react", "progress", "data", "errors", "defaults", "React", "import_lodash_es", "import_react", "children", "React", "import_core", "import_react", "dataManager", "elementManager", "React", "import_core", "import_react", "noop", "import_core", "import_react", "import_core", "import_react", "import_core", "import_react", "Progress", "router", "Router", "coreConfig"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inertiajs/react",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.16",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "The React adapter for Inertia.js",
|
|
6
6
|
"contributors": [
|
|
@@ -43,12 +43,12 @@
|
|
|
43
43
|
}
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@types/react": "^19.2.
|
|
46
|
+
"@types/react": "^19.2.3",
|
|
47
47
|
"@types/react-dom": "^19.2.2",
|
|
48
|
-
"axios": "^1.
|
|
48
|
+
"axios": "^1.13.2",
|
|
49
49
|
"es-check": "^9.4.4",
|
|
50
|
-
"esbuild": "^0.25.
|
|
51
|
-
"esbuild-node-externals": "^1.
|
|
50
|
+
"esbuild": "^0.25.12",
|
|
51
|
+
"esbuild-node-externals": "^1.19.1",
|
|
52
52
|
"react": "^19.2.0",
|
|
53
53
|
"typescript": "^5.9.3"
|
|
54
54
|
},
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"dependencies": {
|
|
59
59
|
"@types/lodash-es": "^4.17.12",
|
|
60
60
|
"lodash-es": "^4.17.21",
|
|
61
|
-
"@inertiajs/core": "2.2.
|
|
61
|
+
"@inertiajs/core": "2.2.16"
|
|
62
62
|
},
|
|
63
63
|
"scripts": {
|
|
64
64
|
"build": "pnpm clean && ./build.js && tsc",
|
package/types/index.d.ts
CHANGED
|
@@ -11,12 +11,14 @@ export declare const progress: {
|
|
|
11
11
|
getStatus(): number | null;
|
|
12
12
|
};
|
|
13
13
|
export declare const router: import("@inertiajs/core").Router;
|
|
14
|
+
export { default as App } from './App';
|
|
14
15
|
export { default as createInertiaApp } from './createInertiaApp';
|
|
15
16
|
export { default as Deferred } from './Deferred';
|
|
16
17
|
export { default as Form } from './Form';
|
|
17
18
|
export { default as Head } from './Head';
|
|
18
19
|
export { default as InfiniteScroll } from './InfiniteScroll';
|
|
19
20
|
export { InertiaLinkProps, default as Link } from './Link';
|
|
21
|
+
export { ReactComponent as ResolvedComponent } from './types';
|
|
20
22
|
export { InertiaFormProps, SetDataAction, SetDataByKeyValuePair, SetDataByMethod, SetDataByObject, default as useForm, } from './useForm';
|
|
21
23
|
export { default as usePage } from './usePage';
|
|
22
24
|
export { default as usePoll } from './usePoll';
|