Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@inertiajs/react

Package Overview
Dependencies
Maintainers
2
Versions
120
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@inertiajs/react - npm Package Compare versions

Comparing version
2.3.10
to
2.3.11
+24
-22
dist/index.esm.js

@@ -195,8 +195,17 @@ // src/index.ts

// src/Deferred.ts
import { useEffect as useEffect2, useMemo as useMemo2, useState as useState2 } from "react";
import { useEffect as useEffect3, useMemo as useMemo2, useState as useState2 } from "react";
// src/usePage.ts
import React from "react";
import React2 from "react";
// src/react.ts
import React, { useEffect as useEffect2, useLayoutEffect } from "react";
function useIsomorphicLayoutEffect(effect, deps) {
typeof window === "undefined" ? useEffect2(effect, deps) : useLayoutEffect(effect, deps);
}
var isReact19 = typeof React.use === "function";
// src/usePage.ts
function usePage() {
const page = typeof React.use === "function" ? React.use(PageContext_default) : React.useContext(PageContext_default);
const page = isReact19 ? React2.use(PageContext_default) : React2.useContext(PageContext_default);
if (!page) {

@@ -224,3 +233,3 @@ throw new Error("usePage must be used within the Inertia component");

const keys = useMemo2(() => Array.isArray(data) ? data : [data], [data]);
useEffect2(() => {
useEffect3(() => {
const removeListener = router3.on("start", (e) => {

@@ -237,3 +246,3 @@ const isPartialVisit = e.detail.visit.only.length > 0 || e.detail.visit.except.length > 0;

}, []);
useEffect2(() => {
useEffect3(() => {
setLoaded(keys.every((key) => pageProps[key] !== void 0));

@@ -259,3 +268,3 @@ }, [pageProps, keys]);

import { isEqual as isEqual2 } from "lodash-es";
import React2, {
import React3, {
createContext as createContext3,

@@ -285,8 +294,2 @@ createElement as createElement3,

// src/react.ts
import { useEffect as useEffect3, useLayoutEffect } from "react";
function useIsomorphicLayoutEffect(effect, deps) {
typeof window === "undefined" ? useEffect3(effect, deps) : useLayoutEffect(effect, deps);
}
// src/useRemember.ts

@@ -676,3 +679,3 @@ import { router as router4 } from "@inertiajs/core";

var deferStateUpdate = (callback) => {
typeof React2.startTransition === "function" ? React2.startTransition(callback) : setTimeout(callback, 0);
typeof React3.startTransition === "function" ? React3.startTransition(callback) : setTimeout(callback, 0);
};

@@ -869,7 +872,6 @@ var noop = () => void 0;

},
// Only React 19 supports passing a boolean to the `inert` attribute.
// To support earlier versions as well, we use the string 'true'.
// Unfortunately, React 19 treats an empty string as `false`.
// React 19 supports passing a boolean to the `inert` attribute, but shows
// a warning when receiving a string. Earlier versions require the string 'true'.
// See: https://github.com/inertiajs/inertia/pull/2536
inert: disableWhileProcessing && form.processing && "true"
inert: disableWhileProcessing && form.processing && (isReact19 ? true : "true")
},

@@ -889,3 +891,3 @@ typeof children === "function" ? children(exposed) : children

import { escape } from "lodash-es";
import React3, { useContext as useContext2, useEffect as useEffect7, useMemo as useMemo5 } from "react";
import React4, { useContext as useContext2, useEffect as useEffect7, useMemo as useMemo5 } from "react";
var Head = function({ children, title }) {

@@ -958,3 +960,3 @@ const headManager = useContext2(HeadContext_default);

function ensureNodeHasInertiaProp(node) {
return React3.cloneElement(node, {
return React4.cloneElement(node, {
[provider.preferredAttribute()]: node.props["head-key"] !== void 0 ? node.props["head-key"] : ""

@@ -967,3 +969,3 @@ });

function renderNodes(nodes) {
const elements = React3.Children.toArray(nodes).filter((node) => node).map((node) => renderNode(node));
const elements = React4.Children.toArray(nodes).filter((node) => node).map((node) => renderNode(node));
if (title && !elements.find((tag) => tag.startsWith("<title"))) {

@@ -986,3 +988,3 @@ elements.push(`<title ${provider.preferredAttribute()}>${title}</title>`);

} from "@inertiajs/core";
import React4, {
import React5, {
createElement as createElement4,

@@ -1226,3 +1228,3 @@ forwardRef as forwardRef2,

}
return createElement4(React4.Fragment, {}, ...reverse ? [...renderElements].reverse() : renderElements);
return createElement4(React5.Fragment, {}, ...reverse ? [...renderElements].reverse() : renderElements);
}

@@ -1229,0 +1231,0 @@ );

@@ -238,8 +238,17 @@ "use strict";

// src/Deferred.ts
var import_react6 = require("react");
var import_react8 = require("react");
// src/usePage.ts
var import_react6 = __toESM(require("react"), 1);
// src/react.ts
var import_react5 = __toESM(require("react"), 1);
function useIsomorphicLayoutEffect(effect, deps) {
typeof window === "undefined" ? (0, import_react5.useEffect)(effect, deps) : (0, import_react5.useLayoutEffect)(effect, deps);
}
var isReact19 = typeof import_react5.default.use === "function";
// src/usePage.ts
function usePage() {
const page = typeof import_react5.default.use === "function" ? import_react5.default.use(PageContext_default) : import_react5.default.useContext(PageContext_default);
const page = isReact19 ? import_react6.default.use(PageContext_default) : import_react6.default.useContext(PageContext_default);
if (!page) {

@@ -264,6 +273,6 @@ throw new Error("usePage must be used within the Inertia component");

}
const [loaded, setLoaded] = (0, import_react6.useState)(false);
const [loaded, setLoaded] = (0, import_react8.useState)(false);
const pageProps = usePage().props;
const keys = (0, import_react6.useMemo)(() => Array.isArray(data) ? data : [data], [data]);
(0, import_react6.useEffect)(() => {
const keys = (0, import_react8.useMemo)(() => Array.isArray(data) ? data : [data], [data]);
(0, import_react8.useEffect)(() => {
const removeListener = router3.on("start", (e) => {

@@ -280,3 +289,3 @@ const isPartialVisit = e.detail.visit.only.length > 0 || e.detail.visit.except.length > 0;

}, []);
(0, import_react6.useEffect)(() => {
(0, import_react8.useEffect)(() => {
setLoaded(keys.every((key) => pageProps[key] !== void 0));

@@ -295,3 +304,3 @@ }, [pageProps, keys]);

var import_lodash_es2 = require("lodash-es");
var import_react11 = __toESM(require("react"), 1);
var import_react12 = __toESM(require("react"), 1);

@@ -302,19 +311,13 @@ // src/useForm.ts

var import_lodash_es = require("lodash-es");
var import_react9 = require("react");
var import_react10 = require("react");
// src/react.ts
var import_react7 = require("react");
function useIsomorphicLayoutEffect(effect, deps) {
typeof window === "undefined" ? (0, import_react7.useEffect)(effect, deps) : (0, import_react7.useLayoutEffect)(effect, deps);
}
// src/useRemember.ts
var import_core3 = require("@inertiajs/core");
var import_react8 = require("react");
var import_react9 = require("react");
function useRemember(initialState, key, excludeKeysRef) {
const [state, setState] = (0, import_react8.useState)(() => {
const [state, setState] = (0, import_react9.useState)(() => {
const restored = import_core3.router.restore(key);
return restored !== void 0 ? restored : initialState;
});
(0, import_react8.useEffect)(() => {
(0, import_react9.useEffect)(() => {
const keys = excludeKeysRef?.current;

@@ -334,27 +337,27 @@ if (keys && keys.length > 0 && typeof state === "object" && state !== null) {

function useForm(...args) {
const isMounted = (0, import_react9.useRef)(false);
const isMounted = (0, import_react10.useRef)(false);
const parsedArgs = import_core4.UseFormUtils.parseUseFormArguments(...args);
const { rememberKey, data: initialData } = parsedArgs;
const precognitionEndpoint = (0, import_react9.useRef)(parsedArgs.precognitionEndpoint);
const [defaults, setDefaults] = (0, import_react9.useState)(
const precognitionEndpoint = (0, import_react10.useRef)(parsedArgs.precognitionEndpoint);
const [defaults, setDefaults] = (0, import_react10.useState)(
typeof initialData === "function" ? (0, import_lodash_es.cloneDeep)(initialData()) : (0, import_lodash_es.cloneDeep)(initialData)
);
const cancelToken = (0, import_react9.useRef)(null);
const recentlySuccessfulTimeoutId = (0, import_react9.useRef)(void 0);
const excludeKeysRef = (0, import_react9.useRef)([]);
const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`, excludeKeysRef) : (0, import_react9.useState)(defaults);
const [errors, setErrors] = rememberKey ? useRemember({}, `${rememberKey}:errors`) : (0, import_react9.useState)({});
const [hasErrors, setHasErrors] = (0, import_react9.useState)(false);
const [processing, setProcessing] = (0, import_react9.useState)(false);
const [progress2, setProgress] = (0, import_react9.useState)(null);
const [wasSuccessful, setWasSuccessful] = (0, import_react9.useState)(false);
const [recentlySuccessful, setRecentlySuccessful] = (0, import_react9.useState)(false);
const transform = (0, import_react9.useRef)((data2) => data2);
const isDirty = (0, import_react9.useMemo)(() => !(0, import_lodash_es.isEqual)(data, defaults), [data, defaults]);
const validatorRef = (0, import_react9.useRef)(null);
const [validating, setValidating] = (0, import_react9.useState)(false);
const [touchedFields, setTouchedFields] = (0, import_react9.useState)([]);
const [validFields, setValidFields] = (0, import_react9.useState)([]);
const withAllErrors = (0, import_react9.useRef)(false);
(0, import_react9.useEffect)(() => {
const cancelToken = (0, import_react10.useRef)(null);
const recentlySuccessfulTimeoutId = (0, import_react10.useRef)(void 0);
const excludeKeysRef = (0, import_react10.useRef)([]);
const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`, excludeKeysRef) : (0, import_react10.useState)(defaults);
const [errors, setErrors] = rememberKey ? useRemember({}, `${rememberKey}:errors`) : (0, import_react10.useState)({});
const [hasErrors, setHasErrors] = (0, import_react10.useState)(false);
const [processing, setProcessing] = (0, import_react10.useState)(false);
const [progress2, setProgress] = (0, import_react10.useState)(null);
const [wasSuccessful, setWasSuccessful] = (0, import_react10.useState)(false);
const [recentlySuccessful, setRecentlySuccessful] = (0, import_react10.useState)(false);
const transform = (0, import_react10.useRef)((data2) => data2);
const isDirty = (0, import_react10.useMemo)(() => !(0, import_lodash_es.isEqual)(data, defaults), [data, defaults]);
const validatorRef = (0, import_react10.useRef)(null);
const [validating, setValidating] = (0, import_react10.useState)(false);
const [touchedFields, setTouchedFields] = (0, import_react10.useState)([]);
const [validFields, setValidFields] = (0, import_react10.useState)([]);
const withAllErrors = (0, import_react10.useRef)(false);
(0, import_react10.useEffect)(() => {
isMounted.current = true;

@@ -365,4 +368,4 @@ return () => {

}, []);
const setDefaultsCalledInOnSuccess = (0, import_react9.useRef)(false);
const submit = (0, import_react9.useCallback)(
const setDefaultsCalledInOnSuccess = (0, import_react10.useRef)(false);
const submit = (0, import_react10.useCallback)(
(...args2) => {

@@ -461,3 +464,3 @@ const { method, url, options } = import_core4.UseFormUtils.parseSubmitArguments(args2, precognitionEndpoint.current);

);
const setDataFunction = (0, import_react9.useCallback)(
const setDataFunction = (0, import_react10.useCallback)(
(keyOrData, maybeValue) => {

@@ -474,8 +477,8 @@ if (typeof keyOrData === "string") {

);
const [dataAsDefaults, setDataAsDefaults] = (0, import_react9.useState)(false);
const dataRef = (0, import_react9.useRef)(data);
(0, import_react9.useEffect)(() => {
const [dataAsDefaults, setDataAsDefaults] = (0, import_react10.useState)(false);
const dataRef = (0, import_react10.useRef)(data);
(0, import_react10.useEffect)(() => {
dataRef.current = data;
});
const setDefaultsFunction = (0, import_react9.useCallback)(
const setDefaultsFunction = (0, import_react10.useCallback)(
(fieldOrFields, maybeValue) => {

@@ -507,3 +510,3 @@ setDefaultsCalledInOnSuccess.current = true;

}, [dataAsDefaults]);
const reset = (0, import_react9.useCallback)(
const reset = (0, import_react10.useCallback)(
(...fields) => {

@@ -526,3 +529,3 @@ if (fields.length === 0) {

);
const setError = (0, import_react9.useCallback)(
const setError = (0, import_react10.useCallback)(
(fieldOrFields, maybeValue) => {

@@ -541,3 +544,3 @@ setErrors((errors2) => {

);
const clearErrors = (0, import_react9.useCallback)(
const clearErrors = (0, import_react10.useCallback)(
(...fields) => {

@@ -565,3 +568,3 @@ setErrors((errors2) => {

);
const resetAndClearErrors = (0, import_react9.useCallback)(
const resetAndClearErrors = (0, import_react10.useCallback)(
(...fields) => {

@@ -576,8 +579,8 @@ reset(...fields);

};
const getMethod = (0, import_react9.useCallback)(createSubmitMethod("get"), [submit]);
const post = (0, import_react9.useCallback)(createSubmitMethod("post"), [submit]);
const put = (0, import_react9.useCallback)(createSubmitMethod("put"), [submit]);
const patch = (0, import_react9.useCallback)(createSubmitMethod("patch"), [submit]);
const deleteMethod = (0, import_react9.useCallback)(createSubmitMethod("delete"), [submit]);
const cancel = (0, import_react9.useCallback)(() => {
const getMethod = (0, import_react10.useCallback)(createSubmitMethod("get"), [submit]);
const post = (0, import_react10.useCallback)(createSubmitMethod("post"), [submit]);
const put = (0, import_react10.useCallback)(createSubmitMethod("put"), [submit]);
const patch = (0, import_react10.useCallback)(createSubmitMethod("patch"), [submit]);
const deleteMethod = (0, import_react10.useCallback)(createSubmitMethod("delete"), [submit]);
const cancel = (0, import_react10.useCallback)(() => {
if (cancelToken.current) {

@@ -587,3 +590,3 @@ cancelToken.current.cancel();

}, []);
const transformFunction = (0, import_react9.useCallback)((callback) => {
const transformFunction = (0, import_react10.useCallback)((callback) => {
transform.current = callback;

@@ -623,8 +626,8 @@ }, []);

};
const valid = (0, import_react9.useCallback)(
const valid = (0, import_react10.useCallback)(
(field) => validFields.includes(field),
[validFields]
);
const invalid = (0, import_react9.useCallback)((field) => field in errors, [errors]);
const touched = (0, import_react9.useCallback)(
const invalid = (0, import_react10.useCallback)((field) => field in errors, [errors]);
const touched = (0, import_react10.useCallback)(
(field) => typeof field === "string" ? touchedFields.includes(field) : touchedFields.length > 0,

@@ -706,7 +709,7 @@ [touchedFields]

var deferStateUpdate = (callback) => {
typeof import_react11.default.startTransition === "function" ? import_react11.default.startTransition(callback) : setTimeout(callback, 0);
typeof import_react12.default.startTransition === "function" ? import_react12.default.startTransition(callback) : setTimeout(callback, 0);
};
var noop = () => void 0;
var FormContext = (0, import_react11.createContext)(void 0);
var Form = (0, import_react11.forwardRef)(
var FormContext = (0, import_react12.createContext)(void 0);
var Form = (0, import_react12.forwardRef)(
({

@@ -756,8 +759,8 @@ action = "",

form.transform(getTransformedData);
const formElement = (0, import_react11.useRef)(void 0);
const resolvedMethod = (0, import_react11.useMemo)(() => {
const formElement = (0, import_react12.useRef)(void 0);
const resolvedMethod = (0, import_react12.useMemo)(() => {
return (0, import_core5.isUrlMethodPair)(action) ? action.method : method.toLowerCase();
}, [action, method]);
const [isDirty, setIsDirty] = (0, import_react11.useState)(false);
const defaultData = (0, import_react11.useRef)(new FormData());
const [isDirty, setIsDirty] = (0, import_react12.useState)(false);
const defaultData = (0, import_react12.useRef)(new FormData());
const getFormData = (submitter) => new FormData(formElement.current, submitter);

@@ -785,3 +788,3 @@ const getData = (submitter) => (0, import_core5.formDataToObject)(getFormData(submitter));

};
(0, import_react11.useEffect)(() => {
(0, import_react12.useEffect)(() => {
defaultData.current = getFormData();

@@ -795,6 +798,6 @@ form.setDefaults(getData());

}, []);
(0, import_react11.useEffect)(() => {
(0, import_react12.useEffect)(() => {
form.setValidationTimeout(validationTimeout);
}, [validationTimeout]);
(0, import_react11.useEffect)(() => {
(0, import_react12.useEffect)(() => {
if (validateFiles) {

@@ -890,4 +893,4 @@ form.validateFiles();

};
(0, import_react11.useImperativeHandle)(ref, () => exposed, [form, isDirty, submit]);
const formNode = (0, import_react11.createElement)(
(0, import_react12.useImperativeHandle)(ref, () => exposed, [form, isDirty, submit]);
const formNode = (0, import_react12.createElement)(
"form",

@@ -903,11 +906,10 @@ {

},
// Only React 19 supports passing a boolean to the `inert` attribute.
// To support earlier versions as well, we use the string 'true'.
// Unfortunately, React 19 treats an empty string as `false`.
// React 19 supports passing a boolean to the `inert` attribute, but shows
// a warning when receiving a string. Earlier versions require the string 'true'.
// See: https://github.com/inertiajs/inertia/pull/2536
inert: disableWhileProcessing && form.processing && "true"
inert: disableWhileProcessing && form.processing && (isReact19 ? true : "true")
},
typeof children === "function" ? children(exposed) : children
);
return (0, import_react11.createElement)(FormContext.Provider, { value: exposed }, formNode);
return (0, import_react12.createElement)(FormContext.Provider, { value: exposed }, formNode);
}

@@ -917,3 +919,3 @@ );

function useFormContext() {
return (0, import_react11.useContext)(FormContext);
return (0, import_react12.useContext)(FormContext);
}

@@ -924,8 +926,8 @@ var Form_default = Form;

var import_lodash_es3 = require("lodash-es");
var import_react12 = __toESM(require("react"), 1);
var import_react14 = __toESM(require("react"), 1);
var Head = function({ children, title }) {
const headManager = (0, import_react12.useContext)(HeadContext_default);
const provider = (0, import_react12.useMemo)(() => headManager.createProvider(), [headManager]);
const headManager = (0, import_react14.useContext)(HeadContext_default);
const provider = (0, import_react14.useMemo)(() => headManager.createProvider(), [headManager]);
const isServer = typeof window === "undefined";
(0, import_react12.useEffect)(() => {
(0, import_react14.useEffect)(() => {
provider.reconnect();

@@ -993,3 +995,3 @@ provider.update(renderNodes(children));

function ensureNodeHasInertiaProp(node) {
return import_react12.default.cloneElement(node, {
return import_react14.default.cloneElement(node, {
[provider.preferredAttribute()]: node.props["head-key"] !== void 0 ? node.props["head-key"] : ""

@@ -1002,3 +1004,3 @@ });

function renderNodes(nodes) {
const elements = import_react12.default.Children.toArray(nodes).filter((node) => node).map((node) => renderNode(node));
const elements = import_react14.default.Children.toArray(nodes).filter((node) => node).map((node) => renderNode(node));
if (title && !elements.find((tag) => tag.startsWith("<title"))) {

@@ -1018,3 +1020,3 @@ elements.push(`<title ${provider.preferredAttribute()}>${title}</title>`);

var import_core6 = require("@inertiajs/core");
var import_react13 = __toESM(require("react"), 1);
var import_react15 = __toESM(require("react"), 1);
var resolveHTMLElement = (value, fallback) => {

@@ -1038,3 +1040,3 @@ if (!value) {

};
var InfiniteScroll = (0, import_react13.forwardRef)(
var InfiniteScroll = (0, import_react15.forwardRef)(
({

@@ -1060,30 +1062,30 @@ data,

}, ref) => {
const [startElementFromRef, setStartElementFromRef] = (0, import_react13.useState)(null);
const startElementRef = (0, import_react13.useCallback)((node) => setStartElementFromRef(node), []);
const [endElementFromRef, setEndElementFromRef] = (0, import_react13.useState)(null);
const endElementRef = (0, import_react13.useCallback)((node) => setEndElementFromRef(node), []);
const [itemsElementFromRef, setItemsElementFromRef] = (0, import_react13.useState)(null);
const itemsElementRef = (0, import_react13.useCallback)((node) => setItemsElementFromRef(node), []);
const [loadingPrevious, setLoadingPrevious] = (0, import_react13.useState)(false);
const [loadingNext, setLoadingNext] = (0, import_react13.useState)(false);
const [requestCount, setRequestCount] = (0, import_react13.useState)(0);
const [hasPreviousPage, setHasPreviousPage] = (0, import_react13.useState)(false);
const [hasNextPage, setHasNextPage] = (0, import_react13.useState)(false);
const [resolvedStartElement, setResolvedStartElement] = (0, import_react13.useState)(null);
const [resolvedEndElement, setResolvedEndElement] = (0, import_react13.useState)(null);
const [resolvedItemsElement, setResolvedItemsElement] = (0, import_react13.useState)(null);
(0, import_react13.useEffect)(() => {
const [startElementFromRef, setStartElementFromRef] = (0, import_react15.useState)(null);
const startElementRef = (0, import_react15.useCallback)((node) => setStartElementFromRef(node), []);
const [endElementFromRef, setEndElementFromRef] = (0, import_react15.useState)(null);
const endElementRef = (0, import_react15.useCallback)((node) => setEndElementFromRef(node), []);
const [itemsElementFromRef, setItemsElementFromRef] = (0, import_react15.useState)(null);
const itemsElementRef = (0, import_react15.useCallback)((node) => setItemsElementFromRef(node), []);
const [loadingPrevious, setLoadingPrevious] = (0, import_react15.useState)(false);
const [loadingNext, setLoadingNext] = (0, import_react15.useState)(false);
const [requestCount, setRequestCount] = (0, import_react15.useState)(0);
const [hasPreviousPage, setHasPreviousPage] = (0, import_react15.useState)(false);
const [hasNextPage, setHasNextPage] = (0, import_react15.useState)(false);
const [resolvedStartElement, setResolvedStartElement] = (0, import_react15.useState)(null);
const [resolvedEndElement, setResolvedEndElement] = (0, import_react15.useState)(null);
const [resolvedItemsElement, setResolvedItemsElement] = (0, import_react15.useState)(null);
(0, import_react15.useEffect)(() => {
const element = startElement ? resolveHTMLElement(startElement, startElementFromRef) : startElementFromRef;
setResolvedStartElement(element);
}, [startElement, startElementFromRef]);
(0, import_react13.useEffect)(() => {
(0, import_react15.useEffect)(() => {
const element = endElement ? resolveHTMLElement(endElement, endElementFromRef) : endElementFromRef;
setResolvedEndElement(element);
}, [endElement, endElementFromRef]);
(0, import_react13.useEffect)(() => {
(0, import_react15.useEffect)(() => {
const element = itemsElement ? resolveHTMLElement(itemsElement, itemsElementFromRef) : itemsElementFromRef;
setResolvedItemsElement(element);
}, [itemsElement, itemsElementFromRef]);
const scrollableParent = (0, import_react13.useMemo)(() => (0, import_core6.getScrollableParent)(resolvedItemsElement), [resolvedItemsElement]);
const callbackPropsRef = (0, import_react13.useRef)({
const scrollableParent = (0, import_react15.useMemo)(() => (0, import_core6.getScrollableParent)(resolvedItemsElement), [resolvedItemsElement]);
const callbackPropsRef = (0, import_react15.useRef)({
buffer,

@@ -1102,6 +1104,6 @@ onlyNext,

};
const [infiniteScroll, setInfiniteScroll] = (0, import_react13.useState)(null);
const dataManager = (0, import_react13.useMemo)(() => infiniteScroll?.dataManager, [infiniteScroll]);
const elementManager = (0, import_react13.useMemo)(() => infiniteScroll?.elementManager, [infiniteScroll]);
const scrollToBottom = (0, import_react13.useCallback)(() => {
const [infiniteScroll, setInfiniteScroll] = (0, import_react15.useState)(null);
const dataManager = (0, import_react15.useMemo)(() => infiniteScroll?.dataManager, [infiniteScroll]);
const elementManager = (0, import_react15.useMemo)(() => infiniteScroll?.elementManager, [infiniteScroll]);
const scrollToBottom = (0, import_react15.useCallback)(() => {
if (scrollableParent) {

@@ -1119,3 +1121,3 @@ scrollableParent.scrollTo({

}, [scrollableParent]);
(0, import_react13.useEffect)(() => {
(0, import_react15.useEffect)(() => {
if (!resolvedItemsElement) {

@@ -1168,11 +1170,11 @@ return;

}, [data, resolvedItemsElement, resolvedStartElement, resolvedEndElement, scrollableParent]);
const manualMode = (0, import_react13.useMemo)(
const manualMode = (0, import_react15.useMemo)(
() => manual || manualAfter > 0 && requestCount >= manualAfter,
[manual, manualAfter, requestCount]
);
const autoLoad = (0, import_react13.useMemo)(() => !manualMode, [manualMode]);
(0, import_react13.useEffect)(() => {
const autoLoad = (0, import_react15.useMemo)(() => !manualMode, [manualMode]);
(0, import_react15.useEffect)(() => {
autoLoad ? elementManager?.enableTriggers() : elementManager?.disableTriggers();
}, [autoLoad, onlyNext, onlyPrevious, resolvedStartElement, resolvedEndElement]);
(0, import_react13.useEffect)(() => {
(0, import_react15.useEffect)(() => {
const shouldAutoScroll = autoScroll !== void 0 ? autoScroll : reverse;

@@ -1183,3 +1185,3 @@ if (shouldAutoScroll) {

}, [scrollableParent]);
(0, import_react13.useImperativeHandle)(
(0, import_react15.useImperativeHandle)(
ref,

@@ -1230,3 +1232,3 @@ () => ({

renderElements.push(
(0, import_react13.createElement)(
(0, import_react15.createElement)(
"div",

@@ -1240,3 +1242,3 @@ { ref: startElementRef },

renderElements.push(
(0, import_react13.createElement)(
(0, import_react15.createElement)(
as,

@@ -1249,3 +1251,3 @@ { ...props, ref: itemsElementRef },

renderElements.push(
(0, import_react13.createElement)(
(0, import_react15.createElement)(
"div",

@@ -1258,3 +1260,3 @@ { ref: endElementRef },

}
return (0, import_react13.createElement)(import_react13.default.Fragment, {}, ...reverse ? [...renderElements].reverse() : renderElements);
return (0, import_react15.createElement)(import_react15.default.Fragment, {}, ...reverse ? [...renderElements].reverse() : renderElements);
}

@@ -1267,5 +1269,5 @@ );

var import_core7 = require("@inertiajs/core");
var import_react14 = require("react");
var import_react16 = require("react");
var noop2 = () => void 0;
var Link = (0, import_react14.forwardRef)(
var Link = (0, import_react16.forwardRef)(
({

@@ -1303,8 +1305,8 @@ children,

}, ref) => {
const [inFlightCount, setInFlightCount] = (0, import_react14.useState)(0);
const hoverTimeout = (0, import_react14.useRef)(void 0);
const _method = (0, import_react14.useMemo)(() => {
const [inFlightCount, setInFlightCount] = (0, import_react16.useState)(0);
const hoverTimeout = (0, import_react16.useRef)(void 0);
const _method = (0, import_react16.useMemo)(() => {
return (0, import_core7.isUrlMethodPair)(href) ? href.method : method.toLowerCase();
}, [href, method]);
const _as = (0, import_react14.useMemo)(() => {
const _as = (0, import_react16.useMemo)(() => {
if (typeof as !== "string" || as.toLowerCase() !== "a") {

@@ -1315,9 +1317,9 @@ return as;

}, [as, _method]);
const mergeDataArray = (0, import_react14.useMemo)(
const mergeDataArray = (0, import_react16.useMemo)(
() => (0, import_core7.mergeDataIntoQueryString)(_method, (0, import_core7.isUrlMethodPair)(href) ? href.url : href, data, queryStringArrayFormat),
[href, _method, data, queryStringArrayFormat]
);
const url = (0, import_react14.useMemo)(() => mergeDataArray[0], [mergeDataArray]);
const _data = (0, import_react14.useMemo)(() => mergeDataArray[1], [mergeDataArray]);
const baseParams = (0, import_react14.useMemo)(
const url = (0, import_react16.useMemo)(() => mergeDataArray[0], [mergeDataArray]);
const _data = (0, import_react16.useMemo)(() => mergeDataArray[1], [mergeDataArray]);
const baseParams = (0, import_react16.useMemo)(
() => ({

@@ -1337,3 +1339,3 @@ data: _data,

);
const visitParams = (0, import_react14.useMemo)(
const visitParams = (0, import_react16.useMemo)(
() => ({

@@ -1370,3 +1372,3 @@ ...baseParams,

);
const prefetchModes = (0, import_react14.useMemo)(
const prefetchModes = (0, import_react16.useMemo)(
() => {

@@ -1386,3 +1388,3 @@ if (prefetch === true) {

);
const cacheForValue = (0, import_react14.useMemo)(() => {
const cacheForValue = (0, import_react16.useMemo)(() => {
if (cacheFor !== 0) {

@@ -1396,3 +1398,3 @@ return cacheFor;

}, [cacheFor, prefetchModes]);
const doPrefetch = (0, import_react14.useMemo)(() => {
const doPrefetch = (0, import_react16.useMemo)(() => {
return () => {

@@ -1410,3 +1412,3 @@ import_core7.router.prefetch(

}, [url, baseParams, onPrefetching, onPrefetched, cacheForValue, cacheTags]);
(0, import_react14.useEffect)(() => {
(0, import_react16.useEffect)(() => {
return () => {

@@ -1416,3 +1418,3 @@ clearTimeout(hoverTimeout.current);

}, []);
(0, import_react14.useEffect)(() => {
(0, import_react16.useEffect)(() => {
if (prefetchModes.includes("mount")) {

@@ -1474,3 +1476,3 @@ setTimeout(() => doPrefetch());

};
const elProps = (0, import_react14.useMemo)(() => {
const elProps = (0, import_react16.useMemo)(() => {
if (_as === "button") {

@@ -1484,3 +1486,3 @@ return { type: "button" };

}, [_as, url]);
return (0, import_react14.createElement)(
return (0, import_react16.createElement)(
_as,

@@ -1511,3 +1513,3 @@ {

var import_core8 = require("@inertiajs/core");
var import_react15 = require("react");
var import_react17 = require("react");
function usePoll(interval, requestOptions = {}, options = {

@@ -1517,3 +1519,3 @@ keepAlive: false,

}) {
const pollRef = (0, import_react15.useRef)(
const pollRef = (0, import_react17.useRef)(
import_core8.router.poll(interval, requestOptions, {

@@ -1524,3 +1526,3 @@ ...options,

);
(0, import_react15.useEffect)(() => {
(0, import_react17.useEffect)(() => {
if (options.autoStart ?? true) {

@@ -1539,10 +1541,10 @@ pollRef.current.start();

var import_core9 = require("@inertiajs/core");
var import_react16 = require("react");
var import_react18 = require("react");
function usePrefetch(options = {}) {
const cached = typeof window === "undefined" ? null : import_core9.router.getCached(window.location.pathname, options);
const inFlight = typeof window === "undefined" ? null : import_core9.router.getPrefetching(window.location.pathname, options);
const [lastUpdatedAt, setLastUpdatedAt] = (0, import_react16.useState)(cached?.staleTimestamp || null);
const [isPrefetching, setIsPrefetching] = (0, import_react16.useState)(inFlight !== null);
const [isPrefetched, setIsPrefetched] = (0, import_react16.useState)(cached !== null);
(0, import_react16.useEffect)(() => {
const [lastUpdatedAt, setLastUpdatedAt] = (0, import_react18.useState)(cached?.staleTimestamp || null);
const [isPrefetching, setIsPrefetching] = (0, import_react18.useState)(inFlight !== null);
const [isPrefetched, setIsPrefetched] = (0, import_react18.useState)(cached !== null);
(0, import_react18.useEffect)(() => {
const onPrefetchingListener = import_core9.router.on("prefetching", (e) => {

@@ -1575,3 +1577,3 @@ if (e.detail.visit.url.pathname === window.location.pathname) {

var import_core10 = require("@inertiajs/core");
var import_react17 = require("react");
var import_react19 = require("react");
var WhenVisible = ({ children, data, params, buffer, as, always, fallback }) => {

@@ -1582,10 +1584,10 @@ always = always ?? false;

const pageProps = usePage().props;
const keys = (0, import_react17.useMemo)(() => data ? Array.isArray(data) ? data : [data] : [], [data]);
const [loaded, setLoaded] = (0, import_react17.useState)(() => keys.length > 0 && keys.every((key) => pageProps[key] !== void 0));
const [isFetching, setIsFetching] = (0, import_react17.useState)(false);
const fetching = (0, import_react17.useRef)(false);
const ref = (0, import_react17.useRef)(null);
const observer = (0, import_react17.useRef)(null);
const getReloadParamsRef = (0, import_react17.useRef)(() => ({}));
(0, import_react17.useEffect)(() => {
const keys = (0, import_react19.useMemo)(() => data ? Array.isArray(data) ? data : [data] : [], [data]);
const [loaded, setLoaded] = (0, import_react19.useState)(() => keys.length > 0 && keys.every((key) => pageProps[key] !== void 0));
const [isFetching, setIsFetching] = (0, import_react19.useState)(false);
const fetching = (0, import_react19.useRef)(false);
const ref = (0, import_react19.useRef)(null);
const observer = (0, import_react19.useRef)(null);
const getReloadParamsRef = (0, import_react19.useRef)(() => ({}));
(0, import_react19.useEffect)(() => {
if (keys.length > 0) {

@@ -1595,3 +1597,3 @@ setLoaded(keys.every((key) => pageProps[key] !== void 0));

}, [pageProps, keys]);
const getReloadParams = (0, import_react17.useCallback)(() => {
const getReloadParams = (0, import_react19.useCallback)(() => {
const reloadParams = { ...params };

@@ -1644,3 +1646,3 @@ if (data) {

};
(0, import_react17.useEffect)(() => {
(0, import_react19.useEffect)(() => {
if (!ref.current) {

@@ -1660,3 +1662,3 @@ return;

if (always || !loaded) {
return (0, import_react17.createElement)(
return (0, import_react19.createElement)(
as,

@@ -1663,0 +1665,0 @@ {

{
"name": "@inertiajs/react",
"version": "2.3.10",
"version": "2.3.11",
"license": "MIT",

@@ -46,10 +46,10 @@ "description": "The React adapter for Inertia.js",

"devDependencies": {
"@types/react": "^19.2.6",
"@types/react": "^19.2.8",
"@types/react-dom": "^19.2.3",
"axios": "^1.13.2",
"es-check": "^9.4.5",
"esbuild": "^0.25.12",
"es-check": "^9.5.3",
"esbuild": "^0.27.2",
"esbuild-node-externals": "^1.20.1",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"typescript": "^5.9.3"

@@ -64,4 +64,4 @@ },

"laravel-precognition": "^1.0.0",
"lodash-es": "^4.17.21",
"@inertiajs/core": "2.3.10"
"lodash-es": "^4.17.22",
"@inertiajs/core": "2.3.11"
},

@@ -68,0 +68,0 @@ "scripts": {

import { DependencyList, EffectCallback } from 'react';
export declare function useIsomorphicLayoutEffect(effect: EffectCallback, deps?: DependencyList): void;
export declare const isReact19: boolean;

@@ -64,2 +64,3 @@ import { ErrorValue, FormDataErrors, FormDataKeys, FormDataType, FormDataValues, Method, Progress, UrlMethodPair, UseFormSubmitArguments, UseFormSubmitOptions, UseFormTransformCallback, UseFormWithPrecognitionArguments } from '@inertiajs/core';

export default function useForm<TForm extends FormDataType<TForm>>(data: TForm | (() => TForm)): InertiaFormProps<TForm>;
export default function useForm<TForm extends FormDataType<TForm>>(): InertiaFormProps<TForm>;
export {};

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display