@inertiajs/react
Advanced tools
+24
-22
@@ -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 @@ ); |
+158
-156
@@ -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 @@ { |
+8
-8
| { | ||
| "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": { |
+1
-0
| 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
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
338796
0.23%3522
0.11%+ Added
- Removed
Updated
Updated