@inertiajs/vue3 3.0.2 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +44 -42
- package/dist/index.js.map +3 -3
- package/package.json +3 -3
- package/types/deferred.d.ts +3 -0
- package/types/form.d.ts +5 -2
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import { http as http2, progress, router as router12 } from "@inertiajs/core";
|
|
|
6
6
|
import {
|
|
7
7
|
createHeadManager,
|
|
8
8
|
isPropsObject,
|
|
9
|
+
isPropsObjectOrCallback,
|
|
9
10
|
normalizeLayouts,
|
|
10
11
|
router as router4
|
|
11
12
|
} from "@inertiajs/core";
|
|
@@ -591,7 +592,7 @@ var App = defineComponent({
|
|
|
591
592
|
const layoutValue = component.value.layout;
|
|
592
593
|
if (typeof layoutValue === "function" && layoutValue.length <= 1 && typeof layoutValue.prototype === "undefined") {
|
|
593
594
|
const result = layoutValue(page.value.props);
|
|
594
|
-
if (
|
|
595
|
+
if (isPropsObjectOrCallback(result, isComponent)) {
|
|
595
596
|
effectiveLayout = defaultLayout?.(page.value.component, page.value);
|
|
596
597
|
callbackProps = result;
|
|
597
598
|
} else {
|
|
@@ -654,6 +655,7 @@ function usePage() {
|
|
|
654
655
|
version: computed(() => page.value?.version),
|
|
655
656
|
clearHistory: computed(() => page.value?.clearHistory),
|
|
656
657
|
deferredProps: computed(() => page.value?.deferredProps),
|
|
658
|
+
rescuedProps: computed(() => page.value?.rescuedProps),
|
|
657
659
|
mergeProps: computed(() => page.value?.mergeProps),
|
|
658
660
|
prependProps: computed(() => page.value?.prependProps),
|
|
659
661
|
deepMergeProps: computed(() => page.value?.deepMergeProps),
|
|
@@ -685,11 +687,15 @@ async function createInertiaApp({
|
|
|
685
687
|
page: page2,
|
|
686
688
|
render,
|
|
687
689
|
defaults = {},
|
|
690
|
+
nonce,
|
|
688
691
|
http: http3,
|
|
689
692
|
layout: layout2,
|
|
690
693
|
withApp
|
|
691
694
|
} = {}) {
|
|
692
695
|
config.replace(defaults);
|
|
696
|
+
if (nonce) {
|
|
697
|
+
config.set("nonce", nonce);
|
|
698
|
+
}
|
|
693
699
|
if (http3) {
|
|
694
700
|
httpModule.setClient(http3);
|
|
695
701
|
}
|
|
@@ -786,18 +792,9 @@ async function createInertiaApp({
|
|
|
786
792
|
}
|
|
787
793
|
|
|
788
794
|
// src/deferred.ts
|
|
789
|
-
import { isSameUrlWithoutQueryOrHash, router as router6 } from "@inertiajs/core";
|
|
795
|
+
import { isSameUrlWithoutQueryOrHash, partialReloadRequestsSomeProps, router as router6 } from "@inertiajs/core";
|
|
790
796
|
import { get as get2 } from "es-toolkit/compat";
|
|
791
|
-
import { defineComponent as defineComponent2, onMounted, onUnmounted, ref as ref3 } from "vue";
|
|
792
|
-
var keysAreBeingReloaded = (only, except, keys) => {
|
|
793
|
-
if (only.length === 0 && except.length === 0) {
|
|
794
|
-
return true;
|
|
795
|
-
}
|
|
796
|
-
if (only.length > 0) {
|
|
797
|
-
return keys.some((key2) => only.includes(key2));
|
|
798
|
-
}
|
|
799
|
-
return keys.some((key2) => !except.includes(key2));
|
|
800
|
-
};
|
|
797
|
+
import { computed as computed2, defineComponent as defineComponent2, onMounted, onUnmounted, ref as ref3 } from "vue";
|
|
801
798
|
var deferred_default = defineComponent2({
|
|
802
799
|
name: "Deferred",
|
|
803
800
|
props: {
|
|
@@ -811,13 +808,14 @@ var deferred_default = defineComponent2({
|
|
|
811
808
|
const reloading = ref3(false);
|
|
812
809
|
const activeReloads = /* @__PURE__ */ new Set();
|
|
813
810
|
const page2 = usePage();
|
|
811
|
+
const keys = computed2(() => Array.isArray(props.data) ? props.data : [props.data]);
|
|
812
|
+
const rescuedKeys = computed2(() => new Set(page2.rescuedProps));
|
|
814
813
|
let removeStartListener = null;
|
|
815
814
|
let removeFinishListener = null;
|
|
816
815
|
onMounted(() => {
|
|
817
|
-
const keys = Array.isArray(props.data) ? props.data : [props.data];
|
|
818
816
|
removeStartListener = router6.on("start", (e) => {
|
|
819
817
|
const visit = e.detail.visit;
|
|
820
|
-
if (visit.preserveState === true && isSameUrlWithoutQueryOrHash(visit.url, window.location) &&
|
|
818
|
+
if (visit.preserveState === true && isSameUrlWithoutQueryOrHash(visit.url, window.location) && partialReloadRequestsSomeProps(visit, keys.value)) {
|
|
821
819
|
activeReloads.add(visit);
|
|
822
820
|
reloading.value = true;
|
|
823
821
|
}
|
|
@@ -836,11 +834,12 @@ var deferred_default = defineComponent2({
|
|
|
836
834
|
activeReloads.clear();
|
|
837
835
|
});
|
|
838
836
|
return () => {
|
|
839
|
-
const keys = Array.isArray(props.data) ? props.data : [props.data];
|
|
840
837
|
if (!slots.fallback) {
|
|
841
838
|
throw new Error("`<Deferred>` requires a `<template #fallback>` slot");
|
|
842
839
|
}
|
|
843
|
-
|
|
840
|
+
const propsAreDefined = keys.value.every((key2) => get2(page2.props, key2) !== void 0);
|
|
841
|
+
const hasRescuedProps = keys.value.some((key2) => rescuedKeys.value.has(key2));
|
|
842
|
+
return propsAreDefined && !hasRescuedProps ? slots.default?.({ reloading: reloading.value }) : hasRescuedProps && slots.rescue ? slots.rescue({ reloading: reloading.value }) : slots.fallback({});
|
|
844
843
|
};
|
|
845
844
|
}
|
|
846
845
|
});
|
|
@@ -858,7 +857,7 @@ import {
|
|
|
858
857
|
} from "@inertiajs/core";
|
|
859
858
|
import { isEqual as isEqual2 } from "es-toolkit";
|
|
860
859
|
import {
|
|
861
|
-
computed as
|
|
860
|
+
computed as computed3,
|
|
862
861
|
defineComponent as defineComponent3,
|
|
863
862
|
h as h3,
|
|
864
863
|
inject,
|
|
@@ -1003,10 +1002,10 @@ var Form = defineComponent3({
|
|
|
1003
1002
|
form.withAllErrors();
|
|
1004
1003
|
}
|
|
1005
1004
|
const formElement = ref4();
|
|
1006
|
-
const method =
|
|
1005
|
+
const method = computed3(
|
|
1007
1006
|
() => isUrlMethodPair(props.action) ? props.action.method : props.method.toLowerCase()
|
|
1008
1007
|
);
|
|
1009
|
-
const resolvedComponent =
|
|
1008
|
+
const resolvedComponent = computed3(() => {
|
|
1010
1009
|
if (props.component) {
|
|
1011
1010
|
return props.component;
|
|
1012
1011
|
}
|
|
@@ -1264,7 +1263,7 @@ function renderTag(node) {
|
|
|
1264
1263
|
}
|
|
1265
1264
|
function addTitleElement(elements, title) {
|
|
1266
1265
|
if (title && !elements.find((tag) => tag.startsWith("<title"))) {
|
|
1267
|
-
elements.push(`<title data-inertia="">${title}</title>`);
|
|
1266
|
+
elements.push(`<title data-inertia="">${escape(title)}</title>`);
|
|
1268
1267
|
}
|
|
1269
1268
|
return elements;
|
|
1270
1269
|
}
|
|
@@ -1312,7 +1311,7 @@ import {
|
|
|
1312
1311
|
getScrollableParent,
|
|
1313
1312
|
useInfiniteScroll
|
|
1314
1313
|
} from "@inertiajs/core";
|
|
1315
|
-
import { computed as
|
|
1314
|
+
import { computed as computed4, defineComponent as defineComponent5, Fragment, h as h4, onMounted as onMounted3, onUnmounted as onUnmounted2, ref as ref5, watch as watch3 } from "vue";
|
|
1316
1315
|
var resolveHTMLElement = (value, fallback) => {
|
|
1317
1316
|
if (!value) {
|
|
1318
1317
|
return fallback;
|
|
@@ -1391,14 +1390,14 @@ var InfiniteScroll = defineComponent5({
|
|
|
1391
1390
|
const itemsElementRef = ref5(null);
|
|
1392
1391
|
const startElementRef = ref5(null);
|
|
1393
1392
|
const endElementRef = ref5(null);
|
|
1394
|
-
const itemsElement =
|
|
1393
|
+
const itemsElement = computed4(
|
|
1395
1394
|
() => resolveHTMLElement(props.itemsElement, itemsElementRef.value)
|
|
1396
1395
|
);
|
|
1397
|
-
const scrollableParent =
|
|
1398
|
-
const startElement =
|
|
1396
|
+
const scrollableParent = computed4(() => getScrollableParent(itemsElement.value));
|
|
1397
|
+
const startElement = computed4(
|
|
1399
1398
|
() => resolveHTMLElement(props.startElement, startElementRef.value)
|
|
1400
1399
|
);
|
|
1401
|
-
const endElement =
|
|
1400
|
+
const endElement = computed4(() => resolveHTMLElement(props.endElement, endElementRef.value));
|
|
1402
1401
|
const loadingPrevious = ref5(false);
|
|
1403
1402
|
const loadingNext = ref5(false);
|
|
1404
1403
|
const requestCount = ref5(0);
|
|
@@ -1448,8 +1447,8 @@ var InfiniteScroll = defineComponent5({
|
|
|
1448
1447
|
hasNextPage.value = !!scrollProp.nextPage;
|
|
1449
1448
|
}
|
|
1450
1449
|
}
|
|
1451
|
-
const autoLoad =
|
|
1452
|
-
const manualMode =
|
|
1450
|
+
const autoLoad = computed4(() => !manualMode.value);
|
|
1451
|
+
const manualMode = computed4(
|
|
1453
1452
|
() => props.manual || props.manualAfter > 0 && requestCount.value >= props.manualAfter
|
|
1454
1453
|
);
|
|
1455
1454
|
const scrollToBottom = () => {
|
|
@@ -1559,7 +1558,7 @@ import {
|
|
|
1559
1558
|
shouldIntercept,
|
|
1560
1559
|
shouldNavigate
|
|
1561
1560
|
} from "@inertiajs/core";
|
|
1562
|
-
import { computed as
|
|
1561
|
+
import { computed as computed5, defineComponent as defineComponent6, h as h5, onMounted as onMounted4, onUnmounted as onUnmounted3, ref as ref6 } from "vue";
|
|
1563
1562
|
var noop2 = () => {
|
|
1564
1563
|
};
|
|
1565
1564
|
var Link = defineComponent6({
|
|
@@ -1689,7 +1688,7 @@ var Link = defineComponent6({
|
|
|
1689
1688
|
setup(props, { slots, attrs }) {
|
|
1690
1689
|
const inFlightCount = ref6(0);
|
|
1691
1690
|
const hoverTimeout = ref6();
|
|
1692
|
-
const prefetchModes =
|
|
1691
|
+
const prefetchModes = computed5(() => {
|
|
1693
1692
|
if (props.prefetch === true) {
|
|
1694
1693
|
return ["hover"];
|
|
1695
1694
|
}
|
|
@@ -1701,7 +1700,7 @@ var Link = defineComponent6({
|
|
|
1701
1700
|
}
|
|
1702
1701
|
return [props.prefetch];
|
|
1703
1702
|
});
|
|
1704
|
-
const cacheForValue =
|
|
1703
|
+
const cacheForValue = computed5(() => {
|
|
1705
1704
|
if (props.cacheFor !== 0) {
|
|
1706
1705
|
return props.cacheFor;
|
|
1707
1706
|
}
|
|
@@ -1718,16 +1717,16 @@ var Link = defineComponent6({
|
|
|
1718
1717
|
onUnmounted3(() => {
|
|
1719
1718
|
clearTimeout(hoverTimeout.value);
|
|
1720
1719
|
});
|
|
1721
|
-
const method =
|
|
1720
|
+
const method = computed5(
|
|
1722
1721
|
() => isUrlMethodPair2(props.href) ? props.href.method : (props.method ?? "get").toLowerCase()
|
|
1723
1722
|
);
|
|
1724
|
-
const as =
|
|
1723
|
+
const as = computed5(() => {
|
|
1725
1724
|
if (typeof props.as !== "string" || props.as.toLowerCase() !== "a") {
|
|
1726
1725
|
return props.as;
|
|
1727
1726
|
}
|
|
1728
1727
|
return method.value !== "get" ? "button" : props.as.toLowerCase();
|
|
1729
1728
|
});
|
|
1730
|
-
const mergeDataArray =
|
|
1729
|
+
const mergeDataArray = computed5(
|
|
1731
1730
|
() => mergeDataIntoQueryString2(
|
|
1732
1731
|
method.value,
|
|
1733
1732
|
isUrlMethodPair2(props.href) ? props.href.url : props.href,
|
|
@@ -1735,9 +1734,9 @@ var Link = defineComponent6({
|
|
|
1735
1734
|
props.queryStringArrayFormat
|
|
1736
1735
|
)
|
|
1737
1736
|
);
|
|
1738
|
-
const href =
|
|
1739
|
-
const data =
|
|
1740
|
-
const resolvedComponent =
|
|
1737
|
+
const href = computed5(() => mergeDataArray.value[0]);
|
|
1738
|
+
const data = computed5(() => mergeDataArray.value[1]);
|
|
1739
|
+
const resolvedComponent = computed5(() => {
|
|
1741
1740
|
if (props.component) {
|
|
1742
1741
|
return props.component;
|
|
1743
1742
|
}
|
|
@@ -1746,7 +1745,7 @@ var Link = defineComponent6({
|
|
|
1746
1745
|
}
|
|
1747
1746
|
return null;
|
|
1748
1747
|
});
|
|
1749
|
-
const elProps =
|
|
1748
|
+
const elProps = computed5(() => {
|
|
1750
1749
|
if (as.value === "button") {
|
|
1751
1750
|
return { type: "button" };
|
|
1752
1751
|
}
|
|
@@ -1755,7 +1754,7 @@ var Link = defineComponent6({
|
|
|
1755
1754
|
}
|
|
1756
1755
|
return {};
|
|
1757
1756
|
});
|
|
1758
|
-
const baseParams =
|
|
1757
|
+
const baseParams = computed5(() => ({
|
|
1759
1758
|
data: data.value,
|
|
1760
1759
|
method: method.value,
|
|
1761
1760
|
replace: props.replace,
|
|
@@ -1769,7 +1768,7 @@ var Link = defineComponent6({
|
|
|
1769
1768
|
component: resolvedComponent.value,
|
|
1770
1769
|
pageProps: props.pageProps
|
|
1771
1770
|
}));
|
|
1772
|
-
const visitParams =
|
|
1771
|
+
const visitParams = computed5(() => ({
|
|
1773
1772
|
...baseParams.value,
|
|
1774
1773
|
viewTransition: props.viewTransition,
|
|
1775
1774
|
onCancelToken: props.onCancelToken,
|
|
@@ -1978,7 +1977,7 @@ function useHttp(...args) {
|
|
|
1978
1977
|
if (response.status >= 200 && response.status < 300) {
|
|
1979
1978
|
markAsSuccessful();
|
|
1980
1979
|
form.response = responseData;
|
|
1981
|
-
options.onSuccess?.(responseData);
|
|
1980
|
+
options.onSuccess?.(responseData, response);
|
|
1982
1981
|
if (!wasDefaultsCalledInOnSuccess()) {
|
|
1983
1982
|
setDefaults(cloneDeep4(form.data()));
|
|
1984
1983
|
}
|
|
@@ -2000,6 +1999,8 @@ function useHttp(...args) {
|
|
|
2000
1999
|
const processedErrors = withAllErrors.enabled() ? validationErrors : toSimpleValidationErrors2(validationErrors);
|
|
2001
2000
|
form.clearErrors().setError(processedErrors);
|
|
2002
2001
|
options.onError?.(processedErrors);
|
|
2002
|
+
} else {
|
|
2003
|
+
options.onHttpException?.(error.response);
|
|
2003
2004
|
}
|
|
2004
2005
|
throw error;
|
|
2005
2006
|
}
|
|
@@ -2007,6 +2008,7 @@ function useHttp(...args) {
|
|
|
2007
2008
|
options.onCancel?.();
|
|
2008
2009
|
throw new HttpCancelledError("Request was cancelled", url);
|
|
2009
2010
|
}
|
|
2011
|
+
options.onNetworkError?.(error instanceof Error ? error : new Error("Unknown error"));
|
|
2010
2012
|
throw error;
|
|
2011
2013
|
} finally {
|
|
2012
2014
|
finishProcessing();
|
|
@@ -2144,7 +2146,7 @@ function useRemember(data, key2) {
|
|
|
2144
2146
|
// src/whenVisible.ts
|
|
2145
2147
|
import { router as router11 } from "@inertiajs/core";
|
|
2146
2148
|
import { get as get3 } from "es-toolkit/compat";
|
|
2147
|
-
import { computed as
|
|
2149
|
+
import { computed as computed6, defineComponent as defineComponent7, h as h6, nextTick, onUnmounted as onUnmounted6, ref as ref9, watch as watch5 } from "vue";
|
|
2148
2150
|
var whenVisible_default = defineComponent7({
|
|
2149
2151
|
name: "WhenVisible",
|
|
2150
2152
|
slots: Object,
|
|
@@ -2174,7 +2176,7 @@ var whenVisible_default = defineComponent7({
|
|
|
2174
2176
|
const observer = ref9(null);
|
|
2175
2177
|
const elementRef = ref9(null);
|
|
2176
2178
|
const page2 = usePage();
|
|
2177
|
-
const keys =
|
|
2179
|
+
const keys = computed6(() => {
|
|
2178
2180
|
return props.data ? Array.isArray(props.data) ? props.data : [props.data] : [];
|
|
2179
2181
|
});
|
|
2180
2182
|
function getReloadParams() {
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts", "../src/app.ts", "../src/layoutProps.ts", "../src/remember.ts", "../src/useForm.ts", "../src/useFormState.ts", "../src/createInertiaApp.ts", "../src/deferred.ts", "../src/form.ts", "../src/head.ts", "../src/infiniteScroll.ts", "../src/link.ts", "../src/useHttp.ts", "../src/usePoll.ts", "../src/usePrefetch.ts", "../src/useRemember.ts", "../src/whenVisible.ts"],
|
|
4
|
-
"sourcesContent": ["import { config as coreConfig } from '@inertiajs/core'\nimport type { VueInertiaAppConfig } from './types'\n\nexport { http, progress, router } from '@inertiajs/core'\nexport { default as App, usePage } from './app'\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './deferred'\nexport { createForm, default as Form, useFormContext } from './form'\nexport { default as Head } from './head'\nexport { default as InfiniteScroll } from './infiniteScroll'\nexport { resetLayoutProps, setLayoutProps } from './layoutProps'\nexport { InertiaLinkProps, default as Link } from './link'\nexport { type LayoutCallback, type VueInertiaAppConfig, type VuePageHandlerArgs } from './types'\nexport { InertiaForm, InertiaFormProps, InertiaPrecognitiveForm, default as useForm } from './useForm'\nexport { default as useHttp } from './useHttp'\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<VueInertiaAppConfig>({})\n", "import {\n createHeadManager,\n HeadManager,\n HeadManagerOnUpdateCallback,\n HeadManagerTitleCallback,\n isPropsObject,\n normalizeLayouts,\n Page,\n PageProps,\n router,\n SharedPageProps,\n} from '@inertiajs/core'\nimport {\n Component,\n computed,\n DefineComponent,\n defineComponent,\n h,\n markRaw,\n Plugin,\n PropType,\n reactive,\n ref,\n shallowRef,\n} from 'vue'\nimport { state as layoutPropsState, resetLayoutProps } from './layoutProps'\nimport remember from './remember'\nimport { VuePageHandlerArgs } from './types'\nimport useForm from './useForm'\n\ntype LayoutComponent = DefineComponent | Component\n\nfunction isComponent(value: unknown): value is LayoutComponent {\n if (!value) {\n return false\n }\n\n if (typeof value === 'function') {\n return true\n }\n\n if (typeof value === 'object') {\n const obj = value as Record<string, unknown>\n return (\n typeof obj.render === 'function' ||\n typeof obj.setup === 'function' ||\n typeof obj.template === 'string' ||\n '__file' in obj ||\n '__name' in obj\n )\n }\n\n return false\n}\n\nfunction isRenderFunction(value: unknown): boolean {\n if (typeof value !== 'function') {\n return false\n }\n\n const fn = value as Function\n return fn.length === 2 && typeof fn.prototype === 'undefined'\n}\n\nexport interface InertiaAppProps<SharedProps extends PageProps = PageProps> {\n initialPage: Page<SharedProps>\n initialComponent?: DefineComponent\n resolveComponent?: (name: string, page?: Page) => DefineComponent | Promise<DefineComponent>\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdateCallback\n defaultLayout?: (name: string, page: Page) => unknown\n}\n\nexport type InertiaApp = DefineComponent<InertiaAppProps>\n\nconst component = ref<DefineComponent | undefined>(undefined)\nconst page = ref<Page>()\nlet pageAccessor: Page | null = null\nconst layout = shallowRef(null)\nconst key = ref<number | undefined>(undefined)\nexport let headManager: HeadManager\n\nconst App: InertiaApp = defineComponent({\n name: 'Inertia',\n props: {\n initialPage: {\n type: Object as PropType<Page>,\n required: true,\n },\n initialComponent: {\n type: Object as PropType<DefineComponent>,\n required: false,\n },\n resolveComponent: {\n type: Function as PropType<(name: string, page?: Page) => DefineComponent | Promise<DefineComponent>>,\n required: false,\n },\n titleCallback: {\n type: Function as PropType<HeadManagerTitleCallback>,\n required: false,\n default: (title: string) => title,\n },\n onHeadUpdate: {\n type: Function as PropType<HeadManagerOnUpdateCallback>,\n required: false,\n default: () => () => {},\n },\n defaultLayout: {\n type: Function as PropType<(name: string, page: Page) => unknown>,\n required: false,\n },\n },\n setup({\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n defaultLayout,\n }: InertiaAppProps) {\n component.value = initialComponent ? markRaw(initialComponent) : undefined\n page.value = { ...initialPage, flash: initialPage.flash ?? {} }\n key.value = undefined\n\n const isServer = typeof window === 'undefined'\n\n headManager = createHeadManager(isServer, titleCallback || ((title: string) => title), onHeadUpdate || (() => {}))\n\n if (!isServer) {\n router.init<DefineComponent>({\n initialPage,\n resolveComponent: resolveComponent!,\n swapComponent: async (options: VuePageHandlerArgs) => {\n if (!options.preserveState) {\n resetLayoutProps()\n }\n\n component.value = markRaw(options.component)\n page.value = options.page\n key.value = options.preserveState ? key.value : Date.now()\n },\n onFlash: (flash) => {\n page.value = { ...page.value!, flash }\n },\n })\n\n router.on('navigate', () => headManager.forceUpdate())\n }\n\n return () => {\n if (component.value) {\n component.value.inheritAttrs = !!component.value.inheritAttrs\n\n const child = h(component.value, {\n ...page.value!.props,\n key: key.value,\n })\n\n if (layout.value) {\n component.value.layout = layout.value\n layout.value = null\n }\n\n if (component.value.layout && isRenderFunction(component.value.layout)) {\n return (component.value.layout as Function)(h, child)\n }\n\n let effectiveLayout: unknown\n let callbackProps: Record<string, unknown> | null = null\n const layoutValue = component.value.layout\n\n if (\n typeof layoutValue === 'function' &&\n (layoutValue as Function).length <= 1 &&\n typeof (layoutValue as Function).prototype === 'undefined'\n ) {\n const result = (layoutValue as Function)(page.value!.props)\n\n if (isPropsObject(result, isComponent)) {\n effectiveLayout = defaultLayout?.(page.value!.component, page.value!)\n callbackProps = result as Record<string, unknown>\n } else {\n effectiveLayout = result\n }\n } else if (isPropsObject(layoutValue, isComponent)) {\n effectiveLayout = defaultLayout?.(page.value!.component, page.value!)\n callbackProps = layoutValue as Record<string, unknown>\n } else {\n effectiveLayout = layoutValue ?? defaultLayout?.(page.value!.component, page.value!)\n }\n\n if (effectiveLayout) {\n let layouts = normalizeLayouts(\n effectiveLayout,\n isComponent,\n component.value.layout && !callbackProps ? isRenderFunction : undefined,\n )\n\n if (callbackProps) {\n layouts = layouts.map((l) => ({ ...l, props: { ...l.props, ...callbackProps } }))\n }\n\n if (layouts.length > 0) {\n const dynamicProps = isServer ? { shared: {}, named: {} } : layoutPropsState.value\n\n return layouts.reduceRight((childNode, layout) => {\n const layoutComponent = layout.component as DefineComponent\n layoutComponent.inheritAttrs = !!layoutComponent.inheritAttrs\n\n return h(\n layoutComponent,\n {\n ...page.value!.props,\n ...layout.props,\n ...dynamicProps.shared,\n ...(layout.name ? dynamicProps.named[layout.name] || {} : {}),\n },\n () => childNode,\n )\n }, child)\n }\n }\n\n return child\n }\n }\n },\n})\nexport default App\n\nexport const plugin: Plugin = {\n install(app) {\n router.form = useForm\n\n Object.defineProperty(app.config.globalProperties, '$inertia', { get: () => router })\n Object.defineProperty(app.config.globalProperties, '$page', { get: () => page.value })\n Object.defineProperty(app.config.globalProperties, '$headManager', { get: () => headManager })\n\n app.mixin(remember)\n },\n}\n\nexport function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps & SharedPageProps> {\n if (!pageAccessor) {\n pageAccessor = reactive({\n props: computed(() => page.value?.props),\n url: computed(() => page.value?.url),\n component: computed(() => page.value?.component),\n version: computed(() => page.value?.version),\n clearHistory: computed(() => page.value?.clearHistory),\n deferredProps: computed(() => page.value?.deferredProps),\n mergeProps: computed(() => page.value?.mergeProps),\n prependProps: computed(() => page.value?.prependProps),\n deepMergeProps: computed(() => page.value?.deepMergeProps),\n matchPropsOn: computed(() => page.value?.matchPropsOn),\n rememberedState: computed(() => page.value?.rememberedState),\n encryptHistory: computed(() => page.value?.encryptHistory),\n scrollProps: computed(() => page.value?.scrollProps),\n flash: computed(() => page.value?.flash),\n }) as Page\n }\n\n return pageAccessor as Page<TPageProps>\n}\n", "import { createLayoutPropsStore, type LayoutProps, type NamedLayoutProps } from '@inertiajs/core'\nimport { ref } from 'vue'\n\nconst store = createLayoutPropsStore()\n\nexport const state = ref(store.get())\n\nstore.subscribe(() => {\n state.value = store.get()\n})\n\nexport function setLayoutProps(props: Partial<LayoutProps>): void\nexport function setLayoutProps<K extends keyof NamedLayoutProps>(name: K, props: Partial<NamedLayoutProps[K]>): void\nexport function setLayoutProps<T = never>(props: Partial<NoInfer<T>>): void\nexport function setLayoutProps<T = never>(name: string, props: Partial<NoInfer<T>>): void\nexport function setLayoutProps(nameOrProps: string | Record<string, unknown>, props?: Record<string, unknown>): void {\n if (typeof nameOrProps === 'string') {\n store.setFor(nameOrProps, props!)\n } else {\n store.set(nameOrProps)\n }\n}\n\nexport function resetLayoutProps(): void {\n store.reset()\n state.value = store.get()\n}\n", "import { router } from '@inertiajs/core'\nimport { cloneDeep } from 'es-toolkit'\nimport { ComponentOptions } from 'vue'\n\nconst remember: ComponentOptions = {\n created() {\n if (!this.$options.remember) {\n return\n }\n\n if (Array.isArray(this.$options.remember)) {\n this.$options.remember = { data: this.$options.remember }\n }\n\n if (typeof this.$options.remember === 'string') {\n this.$options.remember = { data: [this.$options.remember] }\n }\n\n if (typeof this.$options.remember.data === 'string') {\n this.$options.remember = { data: [this.$options.remember.data] }\n }\n\n const rememberKey =\n this.$options.remember.key instanceof Function\n ? this.$options.remember.key.call(this)\n : this.$options.remember.key\n\n const restored = router.restore(rememberKey) as Record<string, unknown> | undefined\n\n const rememberable = this.$options.remember.data.filter((key: string) => {\n return !(this[key] !== null && typeof this[key] === 'object' && this[key].__rememberable === false)\n }) as string[]\n\n const hasCallbacks = (key: string) => {\n return (\n this[key] !== null &&\n typeof this[key] === 'object' &&\n typeof this[key].__remember === 'function' &&\n typeof this[key].__restore === 'function'\n )\n }\n\n rememberable.forEach((key: string) => {\n if (this[key] !== undefined && restored !== undefined && restored[key] !== undefined) {\n hasCallbacks(key) ? this[key].__restore(restored[key]) : (this[key] = restored[key])\n }\n\n this.$watch(\n key,\n () => {\n router.remember(\n rememberable.reduce(\n (data, key) => ({\n ...data,\n [key]: cloneDeep(hasCallbacks(key) ? this[key].__remember() : this[key]),\n }),\n {},\n ),\n rememberKey,\n )\n },\n { immediate: true, deep: true },\n )\n })\n },\n}\n\nexport default remember\n", "import {\n CancelToken,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n Method,\n OptimisticCallback,\n Progress,\n RequestPayload,\n router,\n UrlMethodPair,\n UseFormArguments,\n UseFormSubmitArguments,\n UseFormSubmitOptions,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep } from 'es-toolkit'\nimport { NamedInputEvent, PrecognitionPath, ValidationConfig, Validator } from 'laravel-precognition'\nimport useFormState from './useFormState'\n\n// Reserved keys validation - logs console.error at runtime when form data keys conflict with form properties\nlet reservedFormKeys: Set<string> | null = null\nlet bootstrapping = false\n\nfunction validateFormDataKeys<TForm extends object>(data: TForm): void {\n if (bootstrapping) {\n return\n }\n\n if (reservedFormKeys === null) {\n bootstrapping = true\n reservedFormKeys = new Set(Object.keys(useForm({})))\n bootstrapping = false\n }\n\n const conflicts = Object.keys(data).filter((key) => reservedFormKeys!.has(key))\n if (conflicts.length > 0) {\n console.error(\n `[Inertia] useForm() data contains field(s) that conflict with form properties: ${conflicts.map((k) => `\"${k}\"`).join(', ')}. ` +\n `These fields will be overwritten by form methods/properties. Please rename these fields.`,\n )\n }\n}\n\nexport interface InertiaFormProps<TForm extends object> {\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n data(): TForm\n transform(callback: UseFormTransformCallback<TForm>): this\n defaults(): this\n defaults<T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): this\n defaults(fields: Partial<TForm>): this\n reset<K extends FormDataKeys<TForm>>(...fields: K[]): this\n clearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): this\n resetAndClearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): this\n setError<K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): this\n setError(errors: FormDataErrors<TForm>): this\n submit: (...args: UseFormSubmitArguments) => void\n get(url: string, options?: UseFormSubmitOptions): void\n post(url: string, options?: UseFormSubmitOptions): void\n put(url: string, options?: UseFormSubmitOptions): void\n patch(url: string, options?: UseFormSubmitOptions): void\n delete(url: string, options?: UseFormSubmitOptions): void\n cancel(): void\n dontRemember<K extends FormDataKeys<TForm>>(...fields: K[]): this\n optimistic<TProps>(callback: OptimisticCallback<TProps>): this\n withPrecognition(...args: UseFormWithPrecognitionArguments): InertiaPrecognitiveForm<TForm>\n}\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface InertiaFormValidationProps<TForm extends object> {\n invalid<K extends FormDataKeys<TForm>>(field: K): boolean\n setValidationTimeout(duration: number): this\n touch<K extends FormDataKeys<TForm>>(field: K | NamedInputEvent | Array<K>, ...fields: K[]): this\n touched<K extends FormDataKeys<TForm>>(field?: K): boolean\n valid<K extends FormDataKeys<TForm>>(field: K): boolean\n validate<K extends FormDataKeys<TForm> | PrecognitionPath<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ): this\n validateFiles(): this\n validating: boolean\n validator: () => Validator\n withAllErrors(): this\n withoutFileValidation(): this\n // Backward compatibility for easy migration from the original Precognition libraries\n setErrors(errors: FormDataErrors<TForm> | Record<string, string | string[]>): this\n forgetError<K extends FormDataKeys<TForm> | NamedInputEvent>(field: K): this\n}\n\ninterface InternalPrecognitionState {\n __touched: string[]\n __valid: string[]\n}\n\nexport type InertiaForm<TForm extends object> = TForm & InertiaFormProps<TForm>\nexport type InertiaPrecognitiveForm<TForm extends object> = InertiaForm<TForm> &\n InertiaFormValidationProps<TForm> &\n InternalPrecognitionState\n\ntype ReservedFormKeys = keyof InertiaFormProps<any>\n\ntype ValidateFormData<T> = {\n [K in keyof T]: K extends ReservedFormKeys ? ['Error: This field name is reserved by useForm:', K] : T[K]\n}\n\nexport default function useForm<TForm extends FormDataType<TForm> & ValidateFormData<TForm>>(\n method: Method | (() => Method),\n url: string | (() => string),\n data: TForm | (() => TForm),\n): InertiaPrecognitiveForm<TForm>\nexport default function useForm<TForm extends FormDataType<TForm> & ValidateFormData<TForm>>(\n urlMethodPair: UrlMethodPair | (() => UrlMethodPair),\n data: TForm | (() => TForm),\n): InertiaPrecognitiveForm<TForm>\nexport default function useForm<TForm extends FormDataType<TForm> & ValidateFormData<TForm>>(\n rememberKey: string,\n data: TForm | (() => TForm),\n): InertiaForm<TForm>\nexport default function useForm<TForm extends FormDataType<TForm> & ValidateFormData<TForm>>(\n data: TForm | (() => TForm),\n): InertiaForm<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(): InertiaForm<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n ...args: UseFormArguments<TForm>\n): InertiaForm<TForm> | InertiaPrecognitiveForm<TForm> {\n const { rememberKey, data, precognitionEndpoint } = UseFormUtils.parseUseFormArguments<TForm>(...args)\n\n const initialDefaults = typeof data === 'function' ? cloneDeep(data()) : cloneDeep(data)\n validateFormDataKeys(initialDefaults)\n\n let cancelToken: CancelToken | null = null\n let pendingOptimisticCallback: OptimisticCallback | null = null\n\n const {\n form: baseForm,\n setDefaults,\n getTransform,\n getPrecognitionEndpoint,\n markAsSuccessful,\n wasDefaultsCalledInOnSuccess,\n resetDefaultsCalledInOnSuccess,\n setRememberExcludeKeys,\n resetBeforeSubmit,\n finishProcessing,\n } = useFormState<TForm>({\n data,\n rememberKey,\n precognitionEndpoint,\n })\n\n // Cast needed: baseForm has all form state/methods, we're adding submit methods below via Object.assign\n const form = baseForm as unknown as InertiaForm<TForm>\n\n const createSubmitMethod =\n (method: Method) =>\n (url: string, options: VisitOptions = {}) => {\n form.submit(method, url, options)\n }\n\n Object.assign(form, {\n submit(...args: UseFormSubmitArguments) {\n const { method, url, options } = UseFormUtils.parseSubmitArguments(args, getPrecognitionEndpoint())\n\n resetDefaultsCalledInOnSuccess()\n\n const _options: VisitOptions = {\n ...options,\n onCancelToken: (token) => {\n cancelToken = token\n\n return options.onCancelToken?.(token)\n },\n onBefore: (visit) => {\n resetBeforeSubmit()\n\n return options.onBefore?.(visit)\n },\n onStart: (visit) => {\n form.processing = true\n\n return options.onStart?.(visit)\n },\n onProgress: (event) => {\n form.progress = event ?? null\n\n return options.onProgress?.(event)\n },\n onSuccess: async (page) => {\n markAsSuccessful()\n\n const onSuccess = options.onSuccess ? await options.onSuccess(page) : null\n\n if (!wasDefaultsCalledInOnSuccess()) {\n setDefaults(cloneDeep(form.data()))\n form.isDirty = false\n }\n\n return onSuccess\n },\n onError: (errors) => {\n form.clearErrors().setError(errors as FormDataErrors<TForm>)\n\n return options.onError?.(errors)\n },\n onCancel: () => {\n return options.onCancel?.()\n },\n onFinish: (visit) => {\n finishProcessing()\n cancelToken = null\n\n return options.onFinish?.(visit)\n },\n }\n\n _options.optimistic = _options.optimistic ?? pendingOptimisticCallback ?? undefined\n pendingOptimisticCallback = null\n\n const transformedData = getTransform()(form.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\n get: createSubmitMethod('get'),\n post: createSubmitMethod('post'),\n put: createSubmitMethod('put'),\n patch: createSubmitMethod('patch'),\n delete: createSubmitMethod('delete'),\n\n cancel() {\n if (cancelToken) {\n cancelToken.cancel()\n }\n },\n\n dontRemember(...keys: FormDataKeys<TForm>[]) {\n setRememberExcludeKeys(keys)\n return form\n },\n\n optimistic<TProps>(callback: OptimisticCallback<TProps>) {\n pendingOptimisticCallback = callback as OptimisticCallback\n return form\n },\n })\n\n return getPrecognitionEndpoint() ? (form as InertiaPrecognitiveForm<TForm>) : form\n}\n", "import {\n Errors,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataValues,\n Progress,\n router,\n UrlMethodPair,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n} from '@inertiajs/core'\nimport { cloneDeep, isEqual } from 'es-toolkit'\nimport { get, has, set } from 'es-toolkit/compat'\nimport {\n createValidator,\n NamedInputEvent,\n resolveName,\n toSimpleValidationErrors,\n ValidationConfig,\n Validator,\n} from 'laravel-precognition'\nimport { reactive, watch } from 'vue'\nimport { config } from '.'\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface FormStateProps<TForm extends object> {\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n data(): TForm\n transform(callback: UseFormTransformCallback<TForm>): this\n defaults(): this\n defaults<T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): this\n defaults(fields: Partial<TForm>): this\n reset<K extends FormDataKeys<TForm>>(...fields: K[]): this\n clearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): this\n resetAndClearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): this\n setError<K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): this\n setError(errors: FormDataErrors<TForm>): this\n withPrecognition(...args: UseFormWithPrecognitionArguments): this & FormStateValidationProps<TForm>\n}\n\nexport interface FormStateValidationProps<TForm extends object> {\n invalid<K extends FormDataKeys<TForm>>(field: K): boolean\n setValidationTimeout(duration: number): this\n touch<K extends FormDataKeys<TForm>>(field: K | NamedInputEvent | Array<K>, ...fields: K[]): this\n touched<K extends FormDataKeys<TForm>>(field?: K): boolean\n valid<K extends FormDataKeys<TForm>>(field: K): boolean\n validate<K extends FormDataKeys<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ): this\n validateFiles(): this\n validating: boolean\n validator: () => Validator\n withAllErrors(): this\n withoutFileValidation(): this\n setErrors(errors: FormDataErrors<TForm> | Record<string, string | string[]>): this\n forgetError<K extends FormDataKeys<TForm> | NamedInputEvent>(field: K): this\n}\n\ninterface InternalPrecognitionState {\n __touched: string[]\n __valid: string[]\n}\n\nexport type FormState<TForm extends object> = TForm & FormStateProps<TForm>\nexport type FormStateWithPrecognition<TForm extends object> = FormState<TForm> &\n FormStateValidationProps<TForm> &\n InternalPrecognitionState\n\ninterface InternalRememberState<TForm extends object> {\n __rememberable: boolean\n __remember: () => { data: TForm; errors: FormDataErrors<TForm> }\n __restore: (restored: { data: TForm; errors: FormDataErrors<TForm> }) => void\n}\n\nexport interface UseFormStateOptions<TForm extends object> {\n data: TForm | (() => TForm)\n rememberKey?: string | null\n precognitionEndpoint?: (() => UrlMethodPair) | null\n}\n\nexport interface UseFormStateReturn<TForm extends object> {\n form: FormState<TForm> & InternalRememberState<TForm>\n setDefaults: (newDefaults: TForm) => void\n getTransform: () => UseFormTransformCallback<TForm>\n getPrecognitionEndpoint: () => (() => UrlMethodPair) | null\n markAsSuccessful: () => void\n wasDefaultsCalledInOnSuccess: () => boolean\n resetDefaultsCalledInOnSuccess: () => void\n setRememberExcludeKeys: (keys: FormDataKeys<TForm>[]) => void\n resetBeforeSubmit: () => void\n finishProcessing: () => void\n withAllErrors: { enabled: () => boolean; enable: () => void }\n}\n\nexport default function useFormState<TForm extends object>(\n options: UseFormStateOptions<TForm>,\n): UseFormStateReturn<TForm> {\n const { data: dataOption, rememberKey } = options\n let { precognitionEndpoint } = options\n\n const isDataFunction = typeof dataOption === 'function'\n const resolveData = () => (isDataFunction ? (dataOption as () => TForm)() : dataOption)\n\n const restored = rememberKey\n ? (router.restore(rememberKey) as { data: TForm; errors: Record<FormDataKeys<TForm>, ErrorValue> } | null)\n : null\n\n const initialData = restored?.data ?? cloneDeep(resolveData())\n let defaults = cloneDeep(initialData)\n let transform: UseFormTransformCallback<TForm> = (data) => data\n let validatorRef: Validator | null = null\n let withAllErrors: boolean | null = null\n const withAllErrorsEnabled = () => withAllErrors ?? config.get('form.withAllErrors')\n let recentlySuccessfulTimeoutId: ReturnType<typeof setTimeout> | undefined\n let defaultsCalledInOnSuccess = false\n let rememberExcludeKeys: FormDataKeys<TForm>[] = []\n\n const form = reactive<FormState<TForm>>({\n ...cloneDeep(defaults),\n isDirty: false,\n errors: {} as FormDataErrors<TForm>,\n hasErrors: false,\n processing: false,\n progress: null as Progress | null,\n wasSuccessful: false,\n recentlySuccessful: false,\n\n withPrecognition(...args: UseFormWithPrecognitionArguments): FormStateWithPrecognition<TForm> {\n precognitionEndpoint = UseFormUtils.createWayfinderCallback(...args)\n\n const formWithPrecognition = this as any as FormStateWithPrecognition<TForm>\n\n const validator = createValidator(\n (client) => {\n const { method, url } = precognitionEndpoint!()\n const transformedData = cloneDeep(transform(this.data())) as Record<string, unknown>\n\n return client[method](url, transformedData)\n },\n cloneDeep(defaults) as Record<string, unknown>,\n )\n\n validatorRef = validator\n\n validator\n .on('validatingChanged', () => {\n formWithPrecognition.validating = validator.validating()\n })\n .on('validatedChanged', () => {\n formWithPrecognition.__valid = validator.valid()\n })\n .on('touchedChanged', () => {\n formWithPrecognition.__touched = validator.touched()\n })\n .on('errorsChanged', () => {\n const validationErrors = withAllErrorsEnabled()\n ? validator.errors()\n : toSimpleValidationErrors(validator.errors())\n\n this.errors = {} as FormDataErrors<TForm>\n\n this.setError(validationErrors as FormDataErrors<TForm>)\n\n formWithPrecognition.__valid = validator.valid()\n })\n\n const tap = <T>(value: T, callback: (value: T) => unknown): T => {\n callback(value)\n return value\n }\n\n Object.assign(formWithPrecognition, {\n __touched: [],\n __valid: [],\n validating: false,\n validator: () => validator,\n withAllErrors: () => tap(formWithPrecognition, () => (withAllErrors = true)),\n valid: (field: string) => formWithPrecognition.__valid.includes(field),\n invalid: (field: string) => field in this.errors,\n setValidationTimeout: (duration: number) => tap(formWithPrecognition, () => validator.setTimeout(duration)),\n validateFiles: () => tap(formWithPrecognition, () => validator.validateFiles()),\n withoutFileValidation: () => tap(formWithPrecognition, () => validator.withoutFileValidation()),\n touch: (\n field: FormDataKeys<TForm> | NamedInputEvent | Array<FormDataKeys<TForm>>,\n ...fields: FormDataKeys<TForm>[]\n ) => {\n if (Array.isArray(field)) {\n validator.touch(field)\n } else if (typeof field === 'string') {\n validator.touch([field, ...fields])\n } else {\n validator.touch(field)\n }\n\n return formWithPrecognition\n },\n touched: (field?: string): boolean =>\n typeof field === 'string'\n ? formWithPrecognition.__touched.includes(field)\n : formWithPrecognition.__touched.length > 0,\n validate: (field?: string | NamedInputEvent | ValidationConfig, config?: ValidationConfig) => {\n if (typeof field === 'object' && !('target' in field)) {\n config = field\n field = undefined\n }\n\n if (field === undefined) {\n validator.validate(config)\n } else {\n const fieldName = resolveName(field)\n const transformedData = transform(this.data()) as Record<string, unknown>\n validator.validate(fieldName, get(transformedData, fieldName), config)\n }\n\n return formWithPrecognition\n },\n setErrors: (errors: FormDataErrors<TForm>) => tap(formWithPrecognition, () => this.setError(errors)),\n forgetError: (field: FormDataKeys<TForm> | NamedInputEvent) =>\n tap(formWithPrecognition, () =>\n this.clearErrors(resolveName(field as string | NamedInputEvent) as FormDataKeys<TForm>),\n ),\n })\n\n return formWithPrecognition\n },\n\n data() {\n return (Object.keys(defaults) as Array<FormDataKeys<TForm>>).reduce((carry, key) => {\n return set(carry, key, get(this, key))\n }, {} as Partial<TForm>) as TForm\n },\n\n transform(callback: UseFormTransformCallback<TForm>) {\n transform = callback\n\n return this\n },\n\n defaults(fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) {\n if (isDataFunction) {\n throw new Error('You cannot call `defaults()` when using a function to define your form data.')\n }\n\n defaultsCalledInOnSuccess = true\n\n if (typeof fieldOrFields === 'undefined') {\n defaults = cloneDeep(this.data())\n this.isDirty = false\n } else {\n defaults =\n typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign({}, cloneDeep(defaults), fieldOrFields)\n }\n\n validatorRef?.defaults(defaults as Record<string, unknown>)\n\n return this\n },\n\n reset(...fields: FormDataKeys<TForm>[]) {\n const resolvedData = isDataFunction ? cloneDeep(resolveData()) : defaults\n const clonedData = cloneDeep(resolvedData)\n\n if (fields.length === 0) {\n if (isDataFunction) {\n defaults = clonedData\n }\n Object.assign(this, clonedData)\n } else {\n ;(fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(clonedData, key))\n .forEach((key) => {\n if (isDataFunction) {\n set(defaults, key, get(clonedData, key))\n }\n set(this, key, get(clonedData, key))\n })\n }\n\n validatorRef?.reset(...fields)\n\n return this\n },\n\n setError(fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: ErrorValue) {\n const errors = typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields\n\n Object.assign(this.errors, errors)\n\n this.hasErrors = Object.keys(this.errors).length > 0\n\n validatorRef?.setErrors(errors as Errors)\n\n return this\n },\n\n clearErrors(...fields: string[]) {\n this.errors = Object.keys(this.errors).reduce(\n (carry, field) => ({\n ...carry,\n ...(fields.length > 0 && !fields.includes(field) ? { [field]: (this.errors as Errors)[field] } : {}),\n }),\n {} as FormDataErrors<TForm>,\n )\n\n this.hasErrors = Object.keys(this.errors).length > 0\n\n if (validatorRef) {\n if (fields.length === 0) {\n validatorRef.setErrors({})\n } else {\n fields.forEach(validatorRef.forgetError)\n }\n }\n\n return this\n },\n\n resetAndClearErrors(...fields: FormDataKeys<TForm>[]) {\n this.reset(...fields)\n this.clearErrors(...fields)\n return this\n },\n\n __rememberable: rememberKey === null,\n\n __remember() {\n const formData = (this as unknown as FormState<TForm>).data()\n\n if (rememberExcludeKeys.length > 0) {\n const filtered = { ...formData } as Record<string, unknown>\n rememberExcludeKeys.forEach((k) => delete filtered[k as string])\n return { data: filtered as TForm, errors: (this as unknown as FormState<TForm>).errors }\n }\n\n return { data: formData, errors: (this as unknown as FormState<TForm>).errors }\n },\n\n __restore(restored: { data: TForm; errors: FormDataErrors<TForm> }) {\n Object.assign(this, restored.data)\n ;(this as unknown as FormState<TForm>).setError(restored.errors)\n },\n })\n\n const typedForm = form as any as FormState<TForm> & InternalRememberState<TForm>\n\n // Set restored errors if any\n if (restored?.errors) {\n typedForm.setError(restored.errors as FormDataErrors<TForm>)\n }\n\n watch(\n typedForm,\n () => {\n typedForm.isDirty = !isEqual(typedForm.data(), defaults)\n },\n { immediate: true, deep: true },\n )\n\n // Watch for remember functionality\n watch(\n typedForm,\n (newValue) => {\n if (!rememberKey) {\n return\n }\n\n const storedData = router.restore(rememberKey)\n const newData = cloneDeep((newValue as unknown as InternalRememberState<TForm>).__remember())\n\n if (!isEqual(storedData, newData)) {\n router.remember(newData, rememberKey)\n }\n },\n { immediate: true, deep: true },\n )\n\n if (precognitionEndpoint) {\n typedForm.withPrecognition(precognitionEndpoint)\n }\n\n return {\n form: typedForm,\n setDefaults: (newDefaults: TForm) => {\n defaults = newDefaults\n },\n getTransform: () => transform,\n getPrecognitionEndpoint: () => precognitionEndpoint ?? null,\n markAsSuccessful: () => {\n typedForm.clearErrors()\n typedForm.wasSuccessful = true\n typedForm.recentlySuccessful = true\n\n recentlySuccessfulTimeoutId = setTimeout(\n () => (typedForm.recentlySuccessful = false),\n config.get('form.recentlySuccessfulDuration'),\n )\n },\n wasDefaultsCalledInOnSuccess: () => defaultsCalledInOnSuccess,\n resetDefaultsCalledInOnSuccess: () => {\n defaultsCalledInOnSuccess = false\n },\n setRememberExcludeKeys: (keys: FormDataKeys<TForm>[]) => {\n rememberExcludeKeys = keys\n },\n resetBeforeSubmit: () => {\n typedForm.wasSuccessful = false\n typedForm.recentlySuccessful = false\n clearTimeout(recentlySuccessfulTimeoutId)\n },\n finishProcessing: () => {\n typedForm.processing = false\n typedForm.progress = null\n },\n withAllErrors: {\n enabled: withAllErrorsEnabled,\n enable: () => {\n withAllErrors = true\n },\n },\n }\n}\n", "import {\n buildSSRBody,\n CreateInertiaAppOptions,\n CreateInertiaAppOptionsForCSR,\n CreateInertiaAppOptionsForSSR,\n getInitialPageFromDOM,\n http as httpModule,\n InertiaAppSSRResponse,\n Page,\n PageProps,\n router,\n setupProgress,\n SharedPageProps,\n} from '@inertiajs/core'\nimport { createApp, createSSRApp, DefineComponent, h, Plugin, App as VueApp } from 'vue'\nimport App, { InertiaApp, InertiaAppProps, plugin } from './app'\nimport { config } from './index'\nimport { VueInertiaAppConfig } from './types'\n\ntype ComponentResolver = (\n name: string,\n page?: Page<SharedPageProps>,\n) => DefineComponent | Promise<DefineComponent> | { default: DefineComponent }\n\ntype SetupOptions<ElementType, SharedProps extends PageProps> = {\n el: ElementType\n App: InertiaApp\n props: InertiaAppProps<SharedProps>\n plugin: Plugin\n}\n\ntype VueWithApp = (app: VueApp, options: { ssr: boolean }) => void\n\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForCSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<HTMLElement, SharedProps>,\n void,\n VueInertiaAppConfig\n> & {\n withApp?: never\n}\n\ntype InertiaAppOptionsForSSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForSSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<null, SharedProps>,\n VueApp,\n VueInertiaAppConfig\n> & {\n render: (app: VueApp) => Promise<string>\n withApp?: never\n}\n\ntype InertiaAppOptionsAuto<SharedProps extends PageProps> = Omit<\n CreateInertiaAppOptions<\n ComponentResolver,\n SetupOptions<HTMLElement | null, SharedProps>,\n VueApp | void,\n VueInertiaAppConfig\n >,\n 'setup'\n> & {\n page?: Page<SharedProps>\n render?: undefined\n} & (\n | { setup?: undefined; withApp?: VueWithApp }\n | { setup: (options: SetupOptions<HTMLElement | null, SharedProps>) => VueApp | void; withApp?: never }\n )\n\ntype RenderToString = (app: VueApp) => Promise<string>\n\ntype RenderFunction<SharedProps extends PageProps> = (\n page: Page<SharedProps>,\n renderToString: RenderToString,\n) => Promise<InertiaAppSSRResponse>\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<void>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<InertiaAppSSRResponse>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options?: InertiaAppOptionsAuto<SharedProps>,\n): Promise<void | RenderFunction<SharedProps>>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n {\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n defaults = {},\n http,\n layout,\n withApp,\n }:\n | InertiaAppOptionsForCSR<SharedProps>\n | InertiaAppOptionsForSSR<SharedProps>\n | InertiaAppOptionsAuto<SharedProps> = {} as InertiaAppOptionsAuto<SharedProps>,\n): Promise<InertiaAppSSRResponse | RenderFunction<SharedProps> | void> {\n config.replace(defaults)\n\n if (http) {\n httpModule.setClient(http)\n }\n\n const isServer = typeof window === 'undefined'\n\n const resolveComponent = (name: string, page?: Page) =>\n Promise.resolve(resolve!(name, page)).then((module) => module.default || module)\n\n // SSR render function factory - when on server without page/render, return a render function\n // This is used by the Vite plugin's SSR transform\n if (isServer && !page && !render) {\n return async (page: Page<SharedProps>, renderToString: RenderToString) => {\n let head: string[] = []\n\n const initialComponent = await resolveComponent(page.component, page)\n\n const props: InertiaAppProps<SharedProps> = {\n initialPage: page,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: (elements: string[]) => (head = elements),\n defaultLayout: layout,\n }\n\n let vueApp: VueApp\n\n if (setup) {\n vueApp = (setup as (options: SetupOptions<null, SharedProps>) => VueApp)({\n el: null,\n App,\n props,\n plugin,\n })\n } else {\n vueApp = createSSRApp({ render: () => h(App, props) })\n vueApp.use(plugin)\n\n if (withApp) {\n withApp(vueApp, { ssr: true })\n }\n }\n\n const html = await renderToString(vueApp)\n const body = buildSSRBody(id, page, html)\n\n return { head, body }\n }\n }\n\n const initialPage = page || getInitialPageFromDOM<Page<SharedProps>>(id)!\n\n let head: string[] = []\n\n const vueApp = await Promise.all([\n resolveComponent(initialPage.component, initialPage),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n const props: InertiaAppProps<SharedProps> = {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: isServer ? (elements: string[]) => (head = elements) : undefined,\n defaultLayout: layout,\n }\n\n if (isServer) {\n return (setup as (options: SetupOptions<null, SharedProps>) => VueApp)({\n el: null,\n App,\n props,\n plugin,\n })\n }\n\n const el = document.getElementById(id)!\n\n if (setup) {\n return (setup as (options: SetupOptions<HTMLElement, SharedProps>) => void)({\n el,\n App,\n props,\n plugin,\n })\n }\n\n // Default mounting when setup is not provided\n if (el.hasAttribute('data-server-rendered')) {\n const app = createSSRApp({ render: () => h(App, props) })\n app.use(plugin)\n\n if (withApp) {\n withApp(app, { ssr: false })\n }\n\n app.mount(el)\n } else {\n const app = createApp({ render: () => h(App, props) })\n app.use(plugin)\n\n if (withApp) {\n withApp(app, { ssr: false })\n }\n\n app.mount(el)\n }\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer && render && vueApp) {\n const html = await render(vueApp)\n const body = buildSSRBody(id, initialPage, html)\n\n return { head, body }\n }\n}\n", "import { isSameUrlWithoutQueryOrHash, router } from '@inertiajs/core'\nimport { get } from 'es-toolkit/compat'\nimport { defineComponent, onMounted, onUnmounted, ref, type SlotsType } from 'vue'\nimport { usePage } from './app'\n\nconst keysAreBeingReloaded = (only: string[], except: string[], keys: string[]): boolean => {\n if (only.length === 0 && except.length === 0) {\n return true\n }\n\n if (only.length > 0) {\n return keys.some((key) => only.includes(key))\n }\n\n return keys.some((key) => !except.includes(key))\n}\n\nexport default defineComponent({\n name: 'Deferred',\n props: {\n data: {\n type: [String, Array<String>],\n required: true,\n },\n },\n slots: Object as SlotsType<{\n default: { reloading: boolean }\n fallback: {}\n }>,\n setup(props, { slots }) {\n const reloading = ref(false)\n const activeReloads = new Set<object>()\n const page = usePage()\n\n let removeStartListener: (() => void) | null = null\n let removeFinishListener: (() => void) | null = null\n\n onMounted(() => {\n const keys = (Array.isArray(props.data) ? props.data : [props.data]) as string[]\n\n removeStartListener = router.on('start', (e) => {\n const visit = e.detail.visit\n\n if (\n visit.preserveState === true &&\n isSameUrlWithoutQueryOrHash(visit.url, window.location) &&\n keysAreBeingReloaded(visit.only, visit.except, keys)\n ) {\n activeReloads.add(visit)\n reloading.value = true\n }\n })\n\n removeFinishListener = router.on('finish', (e) => {\n const visit = e.detail.visit\n\n if (activeReloads.has(visit)) {\n activeReloads.delete(visit)\n reloading.value = activeReloads.size > 0\n }\n })\n })\n\n onUnmounted(() => {\n removeStartListener?.()\n removeFinishListener?.()\n activeReloads.clear()\n })\n\n return () => {\n const keys = (Array.isArray(props.data) ? props.data : [props.data]) as string[]\n\n if (!slots.fallback) {\n throw new Error('`<Deferred>` requires a `<template #fallback>` slot')\n }\n\n return keys.every((key) => get(page.props, key) !== undefined)\n ? slots.default?.({ reloading: reloading.value })\n : slots.fallback({})\n }\n },\n})\n", "import {\n config,\n Errors,\n FormComponentProps,\n FormComponentRef,\n FormComponentResetSymbol,\n FormComponentSlotProps,\n FormDataConvertible,\n formDataToObject,\n isUrlMethodPair,\n mergeDataIntoQueryString,\n Method,\n resetFormFields,\n resolveUrlMethodPairComponent,\n UseFormUtils,\n VisitOptions,\n} from '@inertiajs/core'\nimport { isEqual } from 'es-toolkit'\nimport { NamedInputEvent, ValidationConfig } from 'laravel-precognition'\nimport {\n computed,\n defineComponent,\n h,\n inject,\n InjectionKey,\n onBeforeUnmount,\n onMounted,\n PropType,\n provide,\n ref,\n SlotsType,\n watch,\n} from 'vue'\nimport useForm from './useForm'\n\ntype FormSubmitOptions = Omit<VisitOptions, 'data' | 'onPrefetched' | 'onPrefetching'>\ntype FormSubmitter = HTMLElement | null\n\nconst noop = () => undefined\n\nconst FormContextKey: InjectionKey<FormComponentRef> = Symbol('InertiaFormContext')\n\nconst Form = defineComponent({\n name: 'Form',\n slots: Object as SlotsType<{\n default: FormComponentSlotProps\n }>,\n props: {\n action: {\n type: [String, Object] as PropType<FormComponentProps['action']>,\n default: '',\n },\n method: {\n type: String as PropType<FormComponentProps['method']>,\n default: 'get',\n },\n headers: {\n type: Object as PropType<FormComponentProps['headers']>,\n default: () => ({}),\n },\n queryStringArrayFormat: {\n type: String as PropType<FormComponentProps['queryStringArrayFormat']>,\n default: 'brackets',\n },\n errorBag: {\n type: [String, null] as PropType<FormComponentProps['errorBag']>,\n default: null,\n },\n showProgress: {\n type: Boolean,\n default: true,\n },\n transform: {\n type: Function as PropType<FormComponentProps['transform']>,\n default: (data: Record<string, FormDataConvertible>) => data,\n },\n options: {\n type: Object as PropType<FormComponentProps['options']>,\n default: () => ({}),\n },\n resetOnError: {\n type: [Boolean, Array] as PropType<FormComponentProps['resetOnError']>,\n default: false,\n },\n resetOnSuccess: {\n type: [Boolean, Array] as PropType<FormComponentProps['resetOnSuccess']>,\n default: false,\n },\n setDefaultsOnSuccess: {\n type: Boolean as PropType<FormComponentProps['setDefaultsOnSuccess']>,\n default: false,\n },\n onCancelToken: {\n type: Function as PropType<FormComponentProps['onCancelToken']>,\n default: noop,\n },\n onBefore: {\n type: Function as PropType<FormComponentProps['onBefore']>,\n default: noop,\n },\n onStart: {\n type: Function as PropType<FormComponentProps['onStart']>,\n default: noop,\n },\n onProgress: {\n type: Function as PropType<FormComponentProps['onProgress']>,\n default: noop,\n },\n onFinish: {\n type: Function as PropType<FormComponentProps['onFinish']>,\n default: noop,\n },\n onCancel: {\n type: Function as PropType<FormComponentProps['onCancel']>,\n default: noop,\n },\n onSuccess: {\n type: Function as PropType<FormComponentProps['onSuccess']>,\n default: noop,\n },\n onError: {\n type: Function as PropType<FormComponentProps['onError']>,\n default: noop,\n },\n onSubmitComplete: {\n type: Function as PropType<FormComponentProps['onSubmitComplete']>,\n default: noop,\n },\n disableWhileProcessing: {\n type: Boolean,\n default: false,\n },\n invalidateCacheTags: {\n type: [String, Array] as PropType<FormComponentProps['invalidateCacheTags']>,\n default: () => [],\n },\n validateFiles: {\n type: Boolean as PropType<FormComponentProps['validateFiles']>,\n default: false,\n },\n validationTimeout: {\n type: Number as PropType<FormComponentProps['validationTimeout']>,\n default: 1500,\n },\n optimistic: {\n type: Function as PropType<FormComponentProps['optimistic']>,\n default: undefined,\n },\n withAllErrors: {\n type: Boolean as PropType<FormComponentProps['withAllErrors']>,\n default: null,\n },\n component: {\n type: String as PropType<FormComponentProps['component']>,\n default: null,\n },\n instant: {\n type: Boolean as PropType<FormComponentProps['instant']>,\n default: false,\n },\n },\n setup(props, { slots, attrs, expose }) {\n const getTransformedData = (): Record<string, FormDataConvertible> => {\n const [_url, data] = getUrlAndData()\n\n return props.transform(data)\n }\n\n const form = useForm<Record<string, any>>({})\n .withPrecognition(\n () => method.value,\n () => getUrlAndData()[0],\n )\n .transform(getTransformedData)\n .setValidationTimeout(props.validationTimeout)\n\n if (props.validateFiles) {\n form.validateFiles()\n }\n\n if (props.withAllErrors ?? config.get('form.withAllErrors')) {\n form.withAllErrors()\n }\n\n const formElement = ref()\n const method = computed(() =>\n isUrlMethodPair(props.action) ? props.action.method : (props.method.toLowerCase() as Method),\n )\n const resolvedComponent = computed(() => {\n if (props.component) {\n return props.component\n }\n\n if (props.instant && isUrlMethodPair(props.action)) {\n return resolveUrlMethodPairComponent(props.action)\n }\n\n return null\n })\n\n // Can't use computed because FormData is not reactive\n const isDirty = ref(false)\n\n const defaultData = ref(new FormData())\n\n const onFormUpdate = (event: Event) => {\n if (event.type === 'reset' && (event as CustomEvent).detail?.[FormComponentResetSymbol]) {\n // When the form is reset programmatically, prevent native reset behavior\n event.preventDefault()\n }\n\n isDirty.value = event.type === 'reset' ? false : !isEqual(getData(), formDataToObject(defaultData.value))\n }\n\n const formEvents: Array<keyof HTMLElementEventMap> = ['input', 'change', 'reset']\n\n onMounted(() => {\n defaultData.value = getFormData()\n\n form.defaults(getData())\n\n formEvents.forEach((e) => formElement.value.addEventListener(e, onFormUpdate))\n })\n\n watch(\n () => props.validateFiles,\n (value) => (value ? form.validateFiles() : form.withoutFileValidation()),\n )\n\n watch(\n () => props.validationTimeout,\n (value) => form.setValidationTimeout(value),\n )\n\n onBeforeUnmount(() => formEvents.forEach((e) => formElement.value?.removeEventListener(e, onFormUpdate)))\n\n const getFormData = (submitter?: FormSubmitter): FormData => new FormData(formElement.value, submitter)\n\n // Convert the FormData to an object because we can't compare two FormData\n // instances directly (which is needed for isDirty), mergeDataIntoQueryString()\n // expects an object, and submitting a FormData instance directly causes problems with nested objects.\n const getData = (submitter?: FormSubmitter): Record<string, FormDataConvertible> =>\n formDataToObject(getFormData(submitter))\n\n const getUrlAndData = (submitter?: FormSubmitter): [string, Record<string, FormDataConvertible>] => {\n return mergeDataIntoQueryString(\n method.value,\n isUrlMethodPair(props.action) ? props.action.url : props.action,\n getData(submitter),\n props.queryStringArrayFormat,\n )\n }\n\n const submit = (submitter?: FormSubmitter) => {\n const [url, data] = getUrlAndData(submitter)\n const formTarget = (submitter as HTMLButtonElement | HTMLInputElement | null)?.getAttribute('formtarget')\n\n if (formTarget === '_blank' && method.value === 'get') {\n window.open(url, '_blank')\n return\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 submitOptions: FormSubmitOptions = {\n headers: props.headers,\n queryStringArrayFormat: props.queryStringArrayFormat,\n errorBag: props.errorBag,\n showProgress: props.showProgress,\n invalidateCacheTags: props.invalidateCacheTags,\n component: resolvedComponent.value,\n optimistic: props.optimistic ? (pageProps) => props.optimistic!(pageProps, data) : undefined,\n onCancelToken: props.onCancelToken,\n onBefore: props.onBefore,\n onStart: props.onStart,\n onProgress: props.onProgress,\n onFinish: props.onFinish,\n onCancel: props.onCancel,\n onSuccess: (...args) => {\n props.onSuccess?.(...args)\n props.onSubmitComplete?.(exposed)\n maybeReset(props.resetOnSuccess)\n\n if (props.setDefaultsOnSuccess === true) {\n defaults()\n }\n },\n onError: (...args) => {\n props.onError?.(...args)\n maybeReset(props.resetOnError)\n },\n ...props.options,\n }\n\n // We need transform because we can't override the default data with different keys (by design)\n form.transform(() => props.transform(data)).submit(method.value, url, submitOptions)\n\n // Reset the transformer back so the submitter is not used for future submissions\n form.transform(getTransformedData)\n }\n\n const reset = (...fields: string[]) => {\n resetFormFields(formElement.value, defaultData.value, fields)\n\n form.reset(...fields)\n }\n\n const clearErrors = (...fields: string[]) => {\n form.clearErrors(...fields)\n }\n\n const resetAndClearErrors = (...fields: string[]) => {\n clearErrors(...fields)\n reset(...fields)\n }\n\n const defaults = () => {\n defaultData.value = getFormData()\n isDirty.value = false\n }\n\n const exposed = {\n get errors() {\n return form.errors\n },\n get hasErrors() {\n return form.hasErrors\n },\n get processing() {\n return form.processing\n },\n get progress() {\n return form.progress\n },\n get wasSuccessful() {\n return form.wasSuccessful\n },\n get recentlySuccessful() {\n return form.recentlySuccessful\n },\n get validating() {\n return form.validating\n },\n clearErrors,\n resetAndClearErrors,\n setError: (fieldOrFields: string | Record<string, string>, maybeValue?: string) =>\n form.setError((typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields) as Errors),\n get isDirty() {\n return isDirty.value\n },\n reset,\n submit,\n defaults,\n getData,\n getFormData,\n\n // Precognition\n touch: form.touch,\n valid: form.valid,\n invalid: form.invalid,\n touched: form.touched,\n validate: (field?: string | NamedInputEvent | ValidationConfig, config?: ValidationConfig) =>\n form.validate(...UseFormUtils.mergeHeadersForValidation(field, config, props.headers)),\n validator: () => form.validator(),\n }\n\n expose<FormComponentRef>(exposed)\n\n provide(FormContextKey, exposed)\n\n return () => {\n return h(\n 'form',\n {\n ...attrs,\n ref: formElement,\n action: isUrlMethodPair(props.action) ? props.action.url : props.action,\n method: method.value,\n onSubmit: (event) => {\n event.preventDefault()\n submit(event.submitter)\n },\n inert: props.disableWhileProcessing && form.processing,\n },\n slots.default ? slots.default(exposed) : [],\n )\n }\n },\n})\n\nexport function useFormContext<TForm extends object = Record<string, any>>(): FormComponentRef<TForm> | undefined {\n return inject(FormContextKey) as FormComponentRef<TForm> | undefined\n}\n\ntype TypedFormComponent<TForm extends Record<string, any>> = Omit<typeof Form, 'new'> & {\n new (...args: ConstructorParameters<typeof Form>): Omit<InstanceType<typeof Form>, '$props' | '$slots'> & {\n $props: Omit<InstanceType<typeof Form>['$props'], 'optimistic' | 'transform'> & {\n optimistic?: FormComponentProps<TForm>['optimistic']\n transform?: FormComponentProps<TForm>['transform']\n }\n $slots: {\n default: (props: FormComponentSlotProps<TForm>) => any\n }\n }\n}\n\nexport function createForm<TForm extends Record<string, any>>(): TypedFormComponent<TForm> {\n return Form as TypedFormComponent<TForm>\n}\n\nexport default Form\n", "import { escape } from 'es-toolkit/compat'\nimport { defineComponent, DefineComponent, onBeforeUnmount, VNode } from 'vue'\nimport { headManager } from './app'\n\nexport type InertiaHead = DefineComponent<{\n title?: string\n}>\n\nfunction isUnaryTag(node: VNode): boolean {\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\nfunction renderTagStart(node: VNode): string {\n node.props = node.props || {}\n node.props['data-inertia'] = node.props['head-key'] !== undefined ? node.props['head-key'] : ''\n\n const attrs = Object.keys(node.props).reduce((carry, name) => {\n const value = String(node.props![name])\n if (['key', 'head-key'].includes(name)) {\n return carry\n } else if (value === '') {\n return carry + ` ${name}`\n } else {\n return carry + ` ${name}=\"${escape(value)}\"`\n }\n }, '')\n\n return `<${String(node.type)}${attrs}>`\n}\n\nfunction renderTagChildren(node: VNode): string {\n const { children } = node\n\n if (typeof children === 'string') {\n return children\n }\n\n if (Array.isArray(children)) {\n return children.reduce<string>((html, child) => {\n return html + renderTag(child as VNode)\n }, '')\n }\n\n return ''\n}\n\nfunction isFunctionNode(node: VNode): node is VNode & { type: () => VNode } {\n return typeof node.type === 'function'\n}\n\nfunction isComponentNode(node: VNode): node is VNode & { type: object } {\n return typeof node.type === 'object'\n}\n\nfunction isCommentNode(node: VNode): boolean {\n return /(comment|cmt)/i.test(node.type.toString())\n}\n\nfunction isFragmentNode(node: VNode): boolean {\n return /(fragment|fgt|symbol\\(\\))/i.test(node.type.toString())\n}\n\nfunction isTextNode(node: VNode): boolean {\n return /(text|txt)/i.test(node.type.toString())\n}\n\nfunction renderTag(node: VNode): string {\n if (isTextNode(node)) {\n return String(node.children)\n } else if (isFragmentNode(node)) {\n return ''\n } else if (isCommentNode(node)) {\n return ''\n }\n\n let html = renderTagStart(node)\n\n if (node.children) {\n html += renderTagChildren(node)\n }\n\n if (!isUnaryTag(node)) {\n html += `</${String(node.type)}>`\n }\n\n return html\n}\n\nfunction addTitleElement(elements: string[], title?: string): string[] {\n if (title && !elements.find((tag) => tag.startsWith('<title'))) {\n elements.push(`<title data-inertia=\"\">${title}</title>`)\n }\n\n return elements\n}\n\nfunction renderNodes(nodes: VNode[], title?: string): string[] {\n const elements = nodes\n .flatMap((node) => resolveNode(node))\n .map((node) => renderTag(node))\n .filter((node) => node)\n\n return addTitleElement(elements, title)\n}\n\nfunction resolveNode(node: VNode): VNode | VNode[] {\n if (isFunctionNode(node)) {\n return resolveNode(node.type())\n } else if (isComponentNode(node)) {\n console.warn(`Using components in the <Head> component is not supported.`)\n return []\n } else if (isTextNode(node) && node.children) {\n return node\n } else if (isFragmentNode(node) && node.children) {\n return (node.children as VNode[]).flatMap((child) => resolveNode(child))\n } else if (isCommentNode(node)) {\n return []\n } else {\n return node\n }\n}\n\nconst Head: InertiaHead = defineComponent({\n props: {\n title: {\n type: String,\n required: false,\n },\n },\n setup(props, { slots }) {\n const provider = headManager.createProvider()\n\n onBeforeUnmount(() => {\n provider.disconnect()\n })\n\n return () => {\n provider.update(renderNodes(slots.default ? slots.default() : [], props.title))\n }\n },\n})\n\nexport default Head\n", "import {\n getScrollableParent,\n InfiniteScrollActionSlotProps,\n InfiniteScrollComponentBaseProps,\n InfiniteScrollRef,\n InfiniteScrollSlotProps,\n ReloadOptions,\n useInfiniteScroll,\n} from '@inertiajs/core'\nimport { computed, defineComponent, Fragment, h, onMounted, onUnmounted, PropType, ref, SlotsType, watch } from 'vue'\nimport { usePage } from './app'\n\n// Vue-specific element resolver\nconst resolveHTMLElement = (\n value: string | object | (() => HTMLElement | null),\n fallback: HTMLElement | null,\n): HTMLElement | null => {\n if (!value) {\n return fallback\n }\n\n // CSS Selector string\n if (typeof value === 'string') {\n return document.querySelector(value) as HTMLElement | null\n }\n\n // Function that returns an element\n if (typeof value === 'function') {\n return value() || null\n }\n\n return fallback\n}\n\nconst InfiniteScroll = defineComponent({\n name: 'InfiniteScroll',\n slots: Object as SlotsType<{\n default: InfiniteScrollSlotProps\n previous: InfiniteScrollActionSlotProps\n next: InfiniteScrollActionSlotProps\n loading: InfiniteScrollActionSlotProps\n }>,\n props: {\n data: {\n type: String as PropType<InfiniteScrollComponentBaseProps['data']>,\n required: true,\n },\n buffer: {\n type: Number as PropType<InfiniteScrollComponentBaseProps['buffer']>,\n default: 0,\n },\n onlyNext: {\n type: Boolean,\n default: false,\n },\n onlyPrevious: {\n type: Boolean,\n default: false,\n },\n as: {\n type: String as PropType<InfiniteScrollComponentBaseProps['as']>,\n default: 'div',\n },\n manual: {\n type: Boolean as PropType<InfiniteScrollComponentBaseProps['manual']>,\n default: false,\n },\n manualAfter: {\n type: Number as PropType<InfiniteScrollComponentBaseProps['manualAfter']>,\n default: 0,\n },\n preserveUrl: {\n type: Boolean as PropType<InfiniteScrollComponentBaseProps['preserveUrl']>,\n default: false,\n },\n reverse: {\n type: Boolean as PropType<InfiniteScrollComponentBaseProps['reverse']>,\n default: false,\n },\n autoScroll: {\n type: Boolean as PropType<InfiniteScrollComponentBaseProps['autoScroll']>,\n default: undefined,\n },\n itemsElement: {\n type: [String, Function, Object] as PropType<string | (() => HTMLElement | null | undefined)>,\n default: null,\n },\n startElement: {\n type: [String, Function, Object] as PropType<string | (() => HTMLElement | null | undefined)>,\n default: null,\n },\n endElement: {\n type: [String, Function, Object] as PropType<string | (() => HTMLElement | null | undefined)>,\n default: null,\n },\n params: {\n type: Object as PropType<ReloadOptions>,\n default: () => ({}),\n },\n },\n inheritAttrs: false,\n setup(props, { slots, attrs, expose }) {\n const itemsElementRef = ref<HTMLElement | null>(null)\n const startElementRef = ref<HTMLElement | null>(null)\n const endElementRef = ref<HTMLElement | null>(null)\n\n const itemsElement = computed<HTMLElement | null>(() =>\n resolveHTMLElement(props.itemsElement, itemsElementRef.value),\n )\n const scrollableParent = computed(() => getScrollableParent(itemsElement.value))\n const startElement = computed<HTMLElement | null>(() =>\n resolveHTMLElement(props.startElement, startElementRef.value),\n )\n const endElement = computed<HTMLElement | null>(() => resolveHTMLElement(props.endElement, endElementRef.value))\n\n const loadingPrevious = ref(false)\n const loadingNext = ref(false)\n const requestCount = ref(0)\n const hasPreviousPage = ref(false)\n const hasNextPage = ref(false)\n\n const syncStateFromDataManager = () => {\n requestCount.value = dataManager.getRequestCount()\n hasPreviousPage.value = dataManager.hasPrevious()\n hasNextPage.value = dataManager.hasNext()\n }\n\n const {\n dataManager,\n elementManager,\n flush: flushInfiniteScroll,\n } = useInfiniteScroll({\n // Data\n getPropName: () => props.data,\n inReverseMode: () => props.reverse,\n shouldFetchNext: () => !props.onlyPrevious,\n shouldFetchPrevious: () => !props.onlyNext,\n shouldPreserveUrl: () => props.preserveUrl,\n getReloadOptions: () => props.params,\n\n // Elements\n getTriggerMargin: () => props.buffer,\n getStartElement: () => startElement.value!,\n getEndElement: () => endElement.value!,\n getItemsElement: () => itemsElement.value!,\n getScrollableParent: () => scrollableParent.value,\n\n // Request callbacks\n onBeforePreviousRequest: () => (loadingPrevious.value = true),\n onBeforeNextRequest: () => (loadingNext.value = true),\n onCompletePreviousRequest: () => {\n loadingPrevious.value = false\n syncStateFromDataManager()\n },\n onCompleteNextRequest: () => {\n loadingNext.value = false\n syncStateFromDataManager()\n },\n onDataReset: syncStateFromDataManager,\n })\n\n syncStateFromDataManager()\n\n if (typeof window === 'undefined') {\n const scrollProp = usePage().scrollProps?.[props.data]\n\n if (scrollProp) {\n hasPreviousPage.value = !!scrollProp.previousPage\n hasNextPage.value = !!scrollProp.nextPage\n }\n }\n\n const autoLoad = computed<boolean>(() => !manualMode.value)\n const manualMode = computed<boolean>(\n () => props.manual || (props.manualAfter > 0 && requestCount.value >= props.manualAfter),\n )\n\n const scrollToBottom = () => {\n if (scrollableParent.value) {\n scrollableParent.value.scrollTo({\n top: scrollableParent.value.scrollHeight,\n behavior: 'instant',\n })\n } else {\n window.scrollTo({\n top: document.body.scrollHeight,\n behavior: 'instant',\n })\n }\n }\n\n onMounted(() => {\n elementManager.setupObservers()\n elementManager.processServerLoadedElements(dataManager.getLastLoadedPage())\n\n // autoScroll defaults to reverse value if not explicitly set\n const shouldAutoScroll = props.autoScroll !== undefined ? props.autoScroll : props.reverse\n\n if (shouldAutoScroll) {\n scrollToBottom()\n }\n\n if (autoLoad.value) {\n elementManager.enableTriggers()\n }\n })\n\n onUnmounted(flushInfiniteScroll)\n\n watch(\n () => [autoLoad.value, props.onlyNext, props.onlyPrevious],\n ([enabled]) => {\n enabled ? elementManager.enableTriggers() : elementManager.disableTriggers()\n },\n )\n\n expose<InfiniteScrollRef>({\n fetchNext: dataManager.fetchNext,\n fetchPrevious: dataManager.fetchPrevious,\n hasPrevious: dataManager.hasPrevious,\n hasNext: dataManager.hasNext,\n })\n\n return () => {\n const renderElements = []\n\n const sharedExposed: Pick<\n InfiniteScrollActionSlotProps,\n 'loadingPrevious' | 'loadingNext' | 'hasPrevious' | 'hasNext'\n > = {\n loadingPrevious: loadingPrevious.value,\n loadingNext: loadingNext.value,\n hasPrevious: hasPreviousPage.value,\n hasNext: hasNextPage.value,\n }\n\n // Only render previous trigger if not using custom element\n if (!props.startElement) {\n const headerAutoMode = autoLoad.value && !props.onlyNext\n const exposedPrevious: InfiniteScrollActionSlotProps = {\n loading: loadingPrevious.value,\n fetch: dataManager.fetchPrevious,\n autoMode: headerAutoMode,\n manualMode: !headerAutoMode,\n hasMore: hasPreviousPage.value,\n ...sharedExposed,\n }\n\n renderElements.push(\n h(\n 'div',\n { ref: startElementRef },\n slots.previous\n ? slots.previous(exposedPrevious)\n : loadingPrevious.value\n ? slots.loading?.(exposedPrevious)\n : undefined,\n ),\n )\n }\n\n renderElements.push(\n h(\n props.as,\n { ...attrs, ref: itemsElementRef },\n slots.default?.({\n loading: loadingPrevious.value || loadingNext.value,\n loadingPrevious: loadingPrevious.value,\n loadingNext: loadingNext.value,\n }),\n ),\n )\n\n // Only render next trigger if not using custom element\n if (!props.endElement) {\n const footerAutoMode = autoLoad.value && !props.onlyPrevious\n const exposedNext: InfiniteScrollActionSlotProps = {\n loading: loadingNext.value,\n fetch: dataManager.fetchNext,\n autoMode: footerAutoMode,\n manualMode: !footerAutoMode,\n hasMore: hasNextPage.value,\n ...sharedExposed,\n }\n\n renderElements.push(\n h(\n 'div',\n { ref: endElementRef },\n slots.next ? slots.next(exposedNext) : loadingNext.value ? slots.loading?.(exposedNext) : undefined,\n ),\n )\n }\n\n return h(Fragment, {}, props.reverse ? [...renderElements].reverse() : renderElements)\n }\n },\n})\n\nexport default InfiniteScroll\n", "import {\n ActiveVisit,\n isUrlMethodPair,\n LinkComponentBaseProps,\n LinkPrefetchOption,\n mergeDataIntoQueryString,\n Method,\n PendingVisit,\n resolveUrlMethodPairComponent,\n router,\n shouldIntercept,\n shouldNavigate,\n} from '@inertiajs/core'\nimport { Component, computed, defineComponent, DefineComponent, h, onMounted, onUnmounted, PropType, ref } from 'vue'\nimport { config } from '.'\n\nconst noop = () => {}\n\nexport interface InertiaLinkProps extends LinkComponentBaseProps {\n as?: string | Component\n onClick?: (event: MouseEvent) => void\n}\n\ntype InertiaLink = DefineComponent<InertiaLinkProps>\n\nconst Link: InertiaLink = defineComponent({\n name: 'Link',\n props: {\n as: {\n type: [String, Object] as PropType<InertiaLinkProps['as']>,\n default: 'a',\n },\n data: {\n type: Object as PropType<InertiaLinkProps['data']>,\n default: () => ({}),\n },\n href: {\n type: [String, Object] as PropType<InertiaLinkProps['href']>,\n default: '',\n },\n method: {\n type: String as PropType<InertiaLinkProps['method']>,\n default: 'get',\n },\n replace: {\n type: Boolean as PropType<InertiaLinkProps['replace']>,\n default: false,\n },\n preserveScroll: {\n type: [Boolean, String, Function] as PropType<InertiaLinkProps['preserveScroll']>,\n default: false,\n },\n preserveState: {\n type: [Boolean, String, Function] as PropType<InertiaLinkProps['preserveState']>,\n default: null,\n },\n preserveUrl: {\n type: Boolean as PropType<InertiaLinkProps['preserveUrl']>,\n default: false,\n },\n only: {\n type: Array as PropType<InertiaLinkProps['only']>,\n default: () => [],\n },\n except: {\n type: Array as PropType<InertiaLinkProps['except']>,\n default: () => [],\n },\n headers: {\n type: Object as PropType<InertiaLinkProps['headers']>,\n default: () => ({}),\n },\n queryStringArrayFormat: {\n type: String as PropType<InertiaLinkProps['queryStringArrayFormat']>,\n default: 'brackets',\n },\n async: {\n type: Boolean as PropType<InertiaLinkProps['async']>,\n default: false,\n },\n prefetch: {\n type: [Boolean, String, Array] as PropType<InertiaLinkProps['prefetch']>,\n default: false,\n },\n cacheFor: {\n type: [Number, String, Array] as PropType<InertiaLinkProps['cacheFor']>,\n default: 0,\n },\n onStart: {\n type: Function as PropType<InertiaLinkProps['onStart']>,\n default: noop,\n },\n onProgress: {\n type: Function as PropType<InertiaLinkProps['onProgress']>,\n default: noop,\n },\n onFinish: {\n type: Function as PropType<InertiaLinkProps['onFinish']>,\n default: noop,\n },\n onBefore: {\n type: Function as PropType<InertiaLinkProps['onBefore']>,\n default: noop,\n },\n onCancel: {\n type: Function as PropType<InertiaLinkProps['onCancel']>,\n default: noop,\n },\n onSuccess: {\n type: Function as PropType<InertiaLinkProps['onSuccess']>,\n default: noop,\n },\n onError: {\n type: Function as PropType<InertiaLinkProps['onError']>,\n default: noop,\n },\n onCancelToken: {\n type: Function as PropType<InertiaLinkProps['onCancelToken']>,\n default: noop,\n },\n onPrefetching: {\n type: Function as PropType<InertiaLinkProps['onPrefetching']>,\n default: noop,\n },\n onPrefetched: {\n type: Function as PropType<InertiaLinkProps['onPrefetched']>,\n default: noop,\n },\n cacheTags: {\n type: [String, Array] as PropType<InertiaLinkProps['cacheTags']>,\n default: () => [],\n },\n viewTransition: {\n type: [Boolean, Object] as PropType<InertiaLinkProps['viewTransition']>,\n default: false,\n },\n component: {\n type: String as PropType<InertiaLinkProps['component']>,\n default: null,\n },\n instant: {\n type: Boolean as PropType<InertiaLinkProps['instant']>,\n default: false,\n },\n pageProps: {\n type: [Object, Function] as PropType<InertiaLinkProps['pageProps']>,\n default: null,\n },\n },\n setup(props, { slots, attrs }) {\n const inFlightCount = ref(0)\n const hoverTimeout = ref<ReturnType<typeof setTimeout>>()\n\n const prefetchModes = computed<LinkPrefetchOption[]>(() => {\n if (props.prefetch === true) {\n return ['hover']\n }\n\n if (props.prefetch === false) {\n return []\n }\n\n if (Array.isArray(props.prefetch)) {\n return props.prefetch\n }\n\n return [props.prefetch] as LinkPrefetchOption[]\n })\n\n const cacheForValue = computed(() => {\n if (props.cacheFor !== 0) {\n // If they've provided a value, respect it\n return props.cacheFor\n }\n\n if (prefetchModes.value.length === 1 && prefetchModes.value[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 })\n\n onMounted(() => {\n if (prefetchModes.value.includes('mount')) {\n prefetch()\n }\n })\n\n onUnmounted(() => {\n clearTimeout(hoverTimeout.value)\n })\n\n const method = computed(() =>\n isUrlMethodPair(props.href) ? props.href.method : ((props.method ?? 'get').toLowerCase() as Method),\n )\n const as = computed(() => {\n if (typeof props.as !== 'string' || props.as.toLowerCase() !== 'a') {\n // Custom component or element\n return props.as\n }\n\n return method.value !== 'get' ? 'button' : props.as.toLowerCase()\n })\n const mergeDataArray = computed(() =>\n mergeDataIntoQueryString(\n method.value,\n isUrlMethodPair(props.href) ? props.href.url : (props.href as string),\n props.data || {},\n props.queryStringArrayFormat,\n ),\n )\n const href = computed(() => mergeDataArray.value[0])\n const data = computed(() => mergeDataArray.value[1])\n\n const resolvedComponent = computed(() => {\n if (props.component) {\n return props.component\n }\n\n if (props.instant && isUrlMethodPair(props.href)) {\n return resolveUrlMethodPairComponent(props.href)\n }\n\n return null\n })\n\n const elProps = computed(() => {\n if (as.value === 'button') {\n return { type: 'button' }\n }\n\n if (as.value === 'a' || typeof as.value !== 'string') {\n return { href: href.value }\n }\n\n return {}\n })\n\n const baseParams = computed(() => ({\n data: data.value,\n method: method.value,\n replace: props.replace,\n preserveScroll: props.preserveScroll,\n preserveState: props.preserveState ?? method.value !== 'get',\n preserveUrl: props.preserveUrl,\n only: props.only,\n except: props.except,\n headers: props.headers,\n async: props.async,\n component: resolvedComponent.value,\n pageProps: props.pageProps,\n }))\n\n const visitParams = computed(() => ({\n ...baseParams.value,\n viewTransition: props.viewTransition,\n onCancelToken: props.onCancelToken,\n onBefore: props.onBefore,\n onStart: (visit: PendingVisit) => {\n inFlightCount.value++\n props.onStart?.(visit)\n },\n onProgress: props.onProgress,\n onFinish: (visit: ActiveVisit) => {\n inFlightCount.value--\n props.onFinish?.(visit)\n },\n onCancel: props.onCancel,\n onSuccess: props.onSuccess,\n onError: props.onError,\n }))\n\n const prefetch = () => {\n router.prefetch(\n href.value,\n {\n ...baseParams.value,\n onPrefetching: props.onPrefetching,\n onPrefetched: props.onPrefetched,\n },\n {\n cacheFor: cacheForValue.value,\n cacheTags: props.cacheTags,\n },\n )\n }\n\n const regularEvents = {\n onClick: (event: MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n router.visit(href.value, visitParams.value)\n }\n },\n }\n\n const prefetchHoverEvents = {\n onMouseenter: () => {\n hoverTimeout.value = setTimeout(() => {\n prefetch()\n }, config.get('prefetch.hoverDelay'))\n },\n onMouseleave: () => {\n clearTimeout(hoverTimeout.value)\n },\n onClick: regularEvents.onClick,\n }\n\n const prefetchClickEvents = {\n onMousedown: (event: MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n prefetch()\n }\n },\n onKeydown: (event: KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n prefetch()\n }\n },\n onMouseup: (event: MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n router.visit(href.value, visitParams.value)\n }\n },\n onKeyup: (event: KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n router.visit(href.value, visitParams.value)\n }\n },\n onClick: (event: MouseEvent) => {\n if (shouldIntercept(event)) {\n // Let the mouseup/keyup event handle the visit\n event.preventDefault()\n }\n },\n }\n\n return () => {\n return h(\n as.value as string | Component,\n {\n ...attrs,\n ...elProps.value,\n 'data-loading': inFlightCount.value > 0 ? '' : undefined,\n ...(() => {\n if (prefetchModes.value.includes('hover')) {\n return prefetchHoverEvents\n }\n\n if (prefetchModes.value.includes('click')) {\n return prefetchClickEvents\n }\n\n return regularEvents\n })(),\n },\n slots,\n )\n }\n },\n})\n\nexport default Link\n", "import {\n CancelToken,\n Errors,\n ErrorValue,\n FormDataConvertible,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n hasFiles,\n http,\n HttpCancelledError,\n HttpProgressEvent,\n HttpResponseError,\n mergeDataIntoQueryString,\n Method,\n objectToFormData,\n Progress,\n UrlMethodPair,\n UseFormArguments,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n UseHttpSubmitArguments,\n UseHttpSubmitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep } from 'es-toolkit'\nimport { NamedInputEvent, toSimpleValidationErrors, ValidationConfig, Validator } from 'laravel-precognition'\nimport useFormState from './useFormState'\n\nexport interface UseHttpProps<TForm extends object, TResponse = unknown> {\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n response: TResponse | null\n data(): TForm\n transform(callback: UseFormTransformCallback<TForm>): this\n defaults(): this\n defaults<T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): this\n defaults(fields: Partial<TForm>): this\n reset<K extends FormDataKeys<TForm>>(...fields: K[]): this\n clearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): this\n resetAndClearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): this\n setError<K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): this\n setError(errors: FormDataErrors<TForm>): this\n submit(...args: UseHttpSubmitArguments<TResponse, TForm>): Promise<TResponse>\n get(url: string, options?: UseHttpSubmitOptions<TResponse, TForm>): Promise<TResponse>\n post(url: string, options?: UseHttpSubmitOptions<TResponse, TForm>): Promise<TResponse>\n put(url: string, options?: UseHttpSubmitOptions<TResponse, TForm>): Promise<TResponse>\n patch(url: string, options?: UseHttpSubmitOptions<TResponse, TForm>): Promise<TResponse>\n delete(url: string, options?: UseHttpSubmitOptions<TResponse, TForm>): Promise<TResponse>\n cancel(): void\n dontRemember<K extends FormDataKeys<TForm>>(...fields: K[]): this\n optimistic(callback: (currentData: TForm) => Partial<TForm>): this\n withAllErrors(): this\n withPrecognition(...args: UseFormWithPrecognitionArguments): UseHttpPrecognitiveProps<TForm, TResponse>\n}\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface UseHttpValidationProps<TForm extends object> {\n invalid<K extends FormDataKeys<TForm>>(field: K): boolean\n setValidationTimeout(duration: number): this\n touch<K extends FormDataKeys<TForm>>(field: K | NamedInputEvent | Array<K>, ...fields: K[]): this\n touched<K extends FormDataKeys<TForm>>(field?: K): boolean\n valid<K extends FormDataKeys<TForm>>(field: K): boolean\n validate<K extends FormDataKeys<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ): this\n validateFiles(): this\n validating: boolean\n validator: () => Validator\n withAllErrors(): this\n withoutFileValidation(): this\n setErrors(errors: FormDataErrors<TForm> | Record<string, string | string[]>): this\n forgetError<K extends FormDataKeys<TForm> | NamedInputEvent>(field: K): this\n}\n\ninterface InternalPrecognitionState {\n __touched: string[]\n __valid: string[]\n}\n\nexport type UseHttp<TForm extends object, TResponse = unknown> = TForm & UseHttpProps<TForm, TResponse>\nexport type UseHttpPrecognitiveProps<TForm extends object, TResponse = unknown> = UseHttp<TForm, TResponse> &\n UseHttpValidationProps<TForm> &\n InternalPrecognitionState\n\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n method: Method | (() => Method),\n url: string | (() => string),\n data: TForm | (() => TForm),\n): UseHttpPrecognitiveProps<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n urlMethodPair: UrlMethodPair | (() => UrlMethodPair),\n data: TForm | (() => TForm),\n): UseHttpPrecognitiveProps<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n rememberKey: string,\n data: TForm | (() => TForm),\n): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n data: TForm | (() => TForm),\n): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n ...args: UseFormArguments<TForm>\n): UseHttp<TForm, TResponse> | UseHttpPrecognitiveProps<TForm, TResponse> {\n const { rememberKey, data, precognitionEndpoint } = UseFormUtils.parseUseFormArguments<TForm>(...args)\n\n let abortController: AbortController | null = null\n let pendingOptimisticCallback: ((currentData: TForm) => Partial<TForm>) | null = null\n\n const {\n form: baseForm,\n setDefaults,\n getTransform,\n getPrecognitionEndpoint,\n markAsSuccessful,\n wasDefaultsCalledInOnSuccess,\n resetDefaultsCalledInOnSuccess,\n setRememberExcludeKeys,\n resetBeforeSubmit,\n finishProcessing,\n withAllErrors,\n } = useFormState({\n data,\n rememberKey,\n precognitionEndpoint,\n })\n\n // Cast needed: baseForm has all form state/methods, we're adding HTTP methods below via Object.assign\n const form = baseForm as unknown as UseHttp<TForm, TResponse>\n\n // Add response property\n ;(form as any).response = null as TResponse | null\n\n const submit = async (\n method: Method,\n url: string,\n options: UseHttpSubmitOptions<TResponse, TForm>,\n ): Promise<TResponse> => {\n const onBefore = options.onBefore?.()\n\n if (onBefore === false) {\n return Promise.reject(new Error('Request cancelled by onBefore'))\n }\n\n resetDefaultsCalledInOnSuccess()\n resetBeforeSubmit()\n\n abortController = new AbortController()\n\n const cancelToken: CancelToken = {\n cancel: () => abortController?.abort(),\n }\n\n options.onCancelToken?.(cancelToken)\n\n options.optimistic = options.optimistic ?? pendingOptimisticCallback ?? undefined\n pendingOptimisticCallback = null\n\n let snapshot: TForm | undefined\n\n if (options.optimistic) {\n snapshot = cloneDeep(form.data())\n const optimisticData = options.optimistic(cloneDeep(snapshot))\n\n if (optimisticData) {\n Object.keys(optimisticData).forEach((key) => {\n ;(form as any)[key] = (optimisticData as any)[key]\n })\n }\n }\n\n form.processing = true\n options.onStart?.()\n\n const transform = getTransform()\n const transformedData = transform(form.data())\n const useFormData = hasFiles(transformedData as Record<string, FormDataConvertible>)\n\n let requestUrl = url\n let requestData: FormData | string | undefined\n let contentType: string | undefined\n\n if (method === 'get') {\n const [urlWithParams] = mergeDataIntoQueryString(\n method,\n url,\n transformedData as Record<string, FormDataConvertible>,\n )\n requestUrl = urlWithParams\n } else {\n if (useFormData) {\n requestData = objectToFormData(transformedData as Record<string, FormDataConvertible>)\n } else {\n requestData = JSON.stringify(transformedData)\n contentType = 'application/json'\n }\n }\n\n try {\n const response = await http.getClient().request({\n method,\n url: requestUrl,\n data: requestData,\n headers: {\n Accept: 'application/json',\n ...(contentType ? { 'Content-Type': contentType } : {}),\n ...options.headers,\n },\n signal: abortController.signal,\n onUploadProgress: (event: HttpProgressEvent) => {\n form.progress = event\n options.onProgress?.(event)\n },\n })\n\n const responseData = (response.data ? JSON.parse(response.data) : null) as TResponse\n\n if (response.status >= 200 && response.status < 300) {\n markAsSuccessful()\n ;(form as any).response = responseData\n\n options.onSuccess?.(responseData)\n\n if (!wasDefaultsCalledInOnSuccess()) {\n setDefaults(cloneDeep(form.data()))\n }\n\n form.isDirty = false\n\n return responseData\n }\n\n throw new HttpResponseError(`Request failed with status ${response.status}`, response, url)\n } catch (error: unknown) {\n if (snapshot) {\n Object.keys(snapshot).forEach((key) => {\n ;(form as any)[key] = (snapshot as any)[key]\n })\n }\n\n if (error instanceof HttpResponseError) {\n if (error.response.status === 422) {\n const responseData = JSON.parse(error.response.data)\n const validationErrors = responseData.errors || {}\n const processedErrors = (\n withAllErrors.enabled() ? validationErrors : toSimpleValidationErrors(validationErrors)\n ) as FormDataErrors<TForm>\n\n form.clearErrors().setError(processedErrors)\n options.onError?.(processedErrors as Errors)\n }\n\n throw error\n }\n\n if (error instanceof HttpCancelledError || (error instanceof Error && error.name === 'AbortError')) {\n options.onCancel?.()\n throw new HttpCancelledError('Request was cancelled', url)\n }\n\n throw error\n } finally {\n finishProcessing()\n abortController = null\n options.onFinish?.()\n }\n }\n\n const createSubmitMethod =\n (method: Method) =>\n async (url: string, options: UseHttpSubmitOptions<TResponse, TForm> = {}): Promise<TResponse> => {\n return submit(method, url, options)\n }\n\n Object.assign(form, {\n submit(...args: UseHttpSubmitArguments<TResponse, TForm>) {\n const parsed = UseFormUtils.parseSubmitArguments(args as any, getPrecognitionEndpoint())\n\n return submit(parsed.method, parsed.url, parsed.options as UseHttpSubmitOptions<TResponse, TForm>)\n },\n\n get: createSubmitMethod('get'),\n post: createSubmitMethod('post'),\n put: createSubmitMethod('put'),\n patch: createSubmitMethod('patch'),\n delete: createSubmitMethod('delete'),\n\n cancel() {\n if (abortController) {\n abortController.abort()\n }\n },\n\n dontRemember(...keys: FormDataKeys<TForm>[]) {\n setRememberExcludeKeys(keys)\n return form\n },\n\n optimistic(callback: (currentData: TForm) => Partial<TForm>) {\n pendingOptimisticCallback = callback\n return form\n },\n\n withAllErrors() {\n withAllErrors.enable()\n return form\n },\n })\n\n const originalWithPrecognition = form.withPrecognition\n form.withPrecognition = (...args: UseFormWithPrecognitionArguments): UseHttpPrecognitiveProps<TForm, TResponse> => {\n originalWithPrecognition.call(form, ...args)\n\n return form as UseHttpPrecognitiveProps<TForm, TResponse>\n }\n\n return getPrecognitionEndpoint() ? (form as UseHttpPrecognitiveProps<TForm, TResponse>) : form\n}\n", "import { PollOptions, ReloadOptions, router } from '@inertiajs/core'\nimport { onMounted, onUnmounted } from 'vue'\n\nexport default function usePoll(\n interval: number,\n requestOptions: ReloadOptions = {},\n options: PollOptions = {\n keepAlive: false,\n autoStart: true,\n },\n): {\n stop: VoidFunction\n start: VoidFunction\n} {\n const { stop, start } = router.poll(interval, requestOptions, {\n ...options,\n autoStart: false,\n })\n\n onMounted(() => {\n if (options.autoStart ?? true) {\n start()\n }\n })\n\n onUnmounted(() => {\n stop()\n })\n\n return {\n stop,\n start,\n }\n}\n", "import { router, VisitOptions } from '@inertiajs/core'\nimport { onMounted, onUnmounted, ref, Ref } from 'vue'\n\nexport default function usePrefetch(options: VisitOptions = {}): {\n lastUpdatedAt: Ref<number | null>\n isPrefetching: Ref<boolean>\n isPrefetched: Ref<boolean>\n flush: () => void\n} {\n const isPrefetching = ref(false)\n const lastUpdatedAt = ref<number | null>(null)\n const isPrefetched = ref(false)\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 lastUpdatedAt.value = cached?.staleTimestamp || null\n\n isPrefetching.value = inFlight !== null\n isPrefetched.value = cached !== null\n\n let onPrefetchedListener: () => void\n let onPrefetchingListener: () => void\n\n onMounted(() => {\n onPrefetchingListener = router.on('prefetching', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n isPrefetching.value = true\n }\n })\n\n onPrefetchedListener = router.on('prefetched', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n isPrefetching.value = false\n isPrefetched.value = true\n }\n })\n })\n\n onUnmounted(() => {\n onPrefetchedListener()\n onPrefetchingListener()\n })\n\n return {\n lastUpdatedAt,\n isPrefetching,\n isPrefetched,\n flush: () => router.flush(window.location.pathname, options),\n }\n}\n", "import { router } from '@inertiajs/core'\nimport { cloneDeep } from 'es-toolkit'\nimport { isReactive, reactive, ref, Ref, watch } from 'vue'\n\nexport default function useRemember<T extends object>(\n data: T & { __rememberable?: boolean; __remember?: Function; __restore?: Function },\n key?: string,\n): Ref<T> | T {\n if (typeof data === 'object' && data !== null && data.__rememberable === false) {\n return data\n }\n\n const restored = router.restore(key)\n const type = isReactive(data) ? reactive : ref\n const hasCallbacks = typeof data.__remember === 'function' && typeof data.__restore === 'function'\n const remembered = type(\n restored === undefined ? data : hasCallbacks ? data.__restore!(cloneDeep(restored)) : cloneDeep(restored),\n )\n\n watch(\n remembered,\n (newValue) => {\n router.remember(cloneDeep(hasCallbacks ? data.__remember!() : newValue), key)\n },\n { immediate: true, deep: true },\n )\n\n return remembered\n}\n", "import { ReloadOptions, router } from '@inertiajs/core'\nimport { get } from 'es-toolkit/compat'\nimport { computed, defineComponent, h, nextTick, onUnmounted, PropType, ref, SlotsType, watch } from 'vue'\nimport { usePage } from './app'\n\nexport default defineComponent({\n name: 'WhenVisible',\n slots: Object as SlotsType<{\n default: { fetching: boolean }\n fallback: {}\n }>,\n props: {\n data: {\n type: [String, Array<String>],\n },\n params: {\n type: Object as PropType<ReloadOptions>,\n },\n buffer: {\n type: Number,\n default: 0,\n },\n as: {\n type: String,\n default: 'div',\n },\n always: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { slots }) {\n const loaded = ref(false)\n const fetching = ref(false)\n const observer = ref<IntersectionObserver | null>(null)\n const elementRef = ref<HTMLElement | null>(null)\n const page = usePage()\n\n const keys = computed(() => {\n return props.data ? ((Array.isArray(props.data) ? props.data : [props.data]) as string[]) : []\n })\n\n function getReloadParams(): Partial<ReloadOptions> {\n const reloadParams: Partial<ReloadOptions> = { preserveErrors: true, ...props.params }\n\n if (props.data) {\n reloadParams.only = (Array.isArray(props.data) ? props.data : [props.data]) as string[]\n }\n\n return reloadParams\n }\n\n function registerObserver() {\n if (typeof window === 'undefined') {\n return\n }\n\n observer.value?.disconnect()\n\n observer.value = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (fetching.value) {\n return\n }\n\n if (!props.always && loaded.value) {\n return\n }\n\n fetching.value = true\n\n const reloadParams = getReloadParams()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.value = true\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n loaded.value = true\n fetching.value = false\n reloadParams.onFinish?.(e)\n\n if (!props.always) {\n observer.value?.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${props.buffer}px`,\n },\n )\n\n if (elementRef.value) {\n observer.value.observe(elementRef.value)\n }\n }\n\n watch(\n () => keys.value.map((key) => get(page.props, key)),\n () => {\n const exists = keys.value.length > 0 && keys.value.every((key) => get(page.props, key) !== undefined)\n loaded.value = exists\n\n if (exists && !props.always) {\n return\n }\n\n if (!observer.value || !exists) {\n nextTick(registerObserver)\n }\n },\n { immediate: true },\n )\n\n onUnmounted(() => {\n observer.value?.disconnect()\n })\n\n return () => {\n const els = []\n\n if (props.always || !loaded.value) {\n els.push(h(props.as, { ref: elementRef }))\n }\n\n if (!loaded.value) {\n els.push(slots.fallback ? slots.fallback({}) : null)\n } else if (slots.default) {\n els.push(slots.default({ fetching: fetching.value }))\n }\n\n return els\n }\n },\n})\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["http", "router", "router", "reactive", "ref", "key", "router", "UseFormUtils", "cloneDeep", "router", "cloneDeep", "router", "cloneDeep", "config", "key", "restored", "key", "UseFormUtils", "cloneDeep", "args", "page", "router", "ref", "router", "layout", "reactive", "router", "h", "progress", "page", "http", "layout", "head", "vueApp", "h", "router", "router", "get", "
|
|
4
|
+
"sourcesContent": ["import { config as coreConfig } from '@inertiajs/core'\nimport type { VueInertiaAppConfig } from './types'\n\nexport { http, progress, router } from '@inertiajs/core'\nexport { default as App, usePage } from './app'\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './deferred'\nexport { createForm, default as Form, useFormContext } from './form'\nexport { default as Head } from './head'\nexport { default as InfiniteScroll } from './infiniteScroll'\nexport { resetLayoutProps, setLayoutProps } from './layoutProps'\nexport { InertiaLinkProps, default as Link } from './link'\nexport { type LayoutCallback, type VueInertiaAppConfig, type VuePageHandlerArgs } from './types'\nexport { InertiaForm, InertiaFormProps, InertiaPrecognitiveForm, default as useForm } from './useForm'\nexport { default as useHttp } from './useHttp'\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<VueInertiaAppConfig>({})\n", "import {\n createHeadManager,\n HeadManager,\n HeadManagerOnUpdateCallback,\n HeadManagerTitleCallback,\n isPropsObject,\n isPropsObjectOrCallback,\n normalizeLayouts,\n Page,\n PageProps,\n router,\n SharedPageProps,\n} from '@inertiajs/core'\nimport {\n Component,\n computed,\n DefineComponent,\n defineComponent,\n h,\n markRaw,\n Plugin,\n PropType,\n reactive,\n ref,\n shallowRef,\n} from 'vue'\nimport { state as layoutPropsState, resetLayoutProps } from './layoutProps'\nimport remember from './remember'\nimport { VuePageHandlerArgs } from './types'\nimport useForm from './useForm'\n\ntype LayoutComponent = DefineComponent | Component\n\nfunction isComponent(value: unknown): value is LayoutComponent {\n if (!value) {\n return false\n }\n\n if (typeof value === 'function') {\n return true\n }\n\n if (typeof value === 'object') {\n const obj = value as Record<string, unknown>\n return (\n typeof obj.render === 'function' ||\n typeof obj.setup === 'function' ||\n typeof obj.template === 'string' ||\n '__file' in obj ||\n '__name' in obj\n )\n }\n\n return false\n}\n\nfunction isRenderFunction(value: unknown): boolean {\n if (typeof value !== 'function') {\n return false\n }\n\n const fn = value as Function\n return fn.length === 2 && typeof fn.prototype === 'undefined'\n}\n\nexport interface InertiaAppProps<SharedProps extends PageProps = PageProps> {\n initialPage: Page<SharedProps>\n initialComponent?: DefineComponent\n resolveComponent?: (name: string, page?: Page) => DefineComponent | Promise<DefineComponent>\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdateCallback\n defaultLayout?: (name: string, page: Page) => unknown\n}\n\nexport type InertiaApp = DefineComponent<InertiaAppProps>\n\nconst component = ref<DefineComponent | undefined>(undefined)\nconst page = ref<Page>()\nlet pageAccessor: Page | null = null\nconst layout = shallowRef(null)\nconst key = ref<number | undefined>(undefined)\nexport let headManager: HeadManager\n\nconst App: InertiaApp = defineComponent({\n name: 'Inertia',\n props: {\n initialPage: {\n type: Object as PropType<Page>,\n required: true,\n },\n initialComponent: {\n type: Object as PropType<DefineComponent>,\n required: false,\n },\n resolveComponent: {\n type: Function as PropType<(name: string, page?: Page) => DefineComponent | Promise<DefineComponent>>,\n required: false,\n },\n titleCallback: {\n type: Function as PropType<HeadManagerTitleCallback>,\n required: false,\n default: (title: string) => title,\n },\n onHeadUpdate: {\n type: Function as PropType<HeadManagerOnUpdateCallback>,\n required: false,\n default: () => () => {},\n },\n defaultLayout: {\n type: Function as PropType<(name: string, page: Page) => unknown>,\n required: false,\n },\n },\n setup({\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n defaultLayout,\n }: InertiaAppProps) {\n component.value = initialComponent ? markRaw(initialComponent) : undefined\n page.value = { ...initialPage, flash: initialPage.flash ?? {} }\n key.value = undefined\n\n const isServer = typeof window === 'undefined'\n\n headManager = createHeadManager(isServer, titleCallback || ((title: string) => title), onHeadUpdate || (() => {}))\n\n if (!isServer) {\n router.init<DefineComponent>({\n initialPage,\n resolveComponent: resolveComponent!,\n swapComponent: async (options: VuePageHandlerArgs) => {\n if (!options.preserveState) {\n resetLayoutProps()\n }\n\n component.value = markRaw(options.component)\n page.value = options.page\n key.value = options.preserveState ? key.value : Date.now()\n },\n onFlash: (flash) => {\n page.value = { ...page.value!, flash }\n },\n })\n\n router.on('navigate', () => headManager.forceUpdate())\n }\n\n return () => {\n if (component.value) {\n component.value.inheritAttrs = !!component.value.inheritAttrs\n\n const child = h(component.value, {\n ...page.value!.props,\n key: key.value,\n })\n\n if (layout.value) {\n component.value.layout = layout.value\n layout.value = null\n }\n\n if (component.value.layout && isRenderFunction(component.value.layout)) {\n return (component.value.layout as Function)(h, child)\n }\n\n let effectiveLayout: unknown\n let callbackProps: Record<string, unknown> | null = null\n const layoutValue = component.value.layout\n\n if (\n typeof layoutValue === 'function' &&\n (layoutValue as Function).length <= 1 &&\n typeof (layoutValue as Function).prototype === 'undefined'\n ) {\n const result = (layoutValue as Function)(page.value!.props)\n\n if (isPropsObjectOrCallback(result, isComponent)) {\n effectiveLayout = defaultLayout?.(page.value!.component, page.value!)\n callbackProps = result as Record<string, unknown>\n } else {\n effectiveLayout = result\n }\n } else if (isPropsObject(layoutValue, isComponent)) {\n effectiveLayout = defaultLayout?.(page.value!.component, page.value!)\n callbackProps = layoutValue as Record<string, unknown>\n } else {\n effectiveLayout = layoutValue ?? defaultLayout?.(page.value!.component, page.value!)\n }\n\n if (effectiveLayout) {\n let layouts = normalizeLayouts(\n effectiveLayout,\n isComponent,\n component.value.layout && !callbackProps ? isRenderFunction : undefined,\n )\n\n if (callbackProps) {\n layouts = layouts.map((l) => ({ ...l, props: { ...l.props, ...callbackProps } }))\n }\n\n if (layouts.length > 0) {\n const dynamicProps = isServer ? { shared: {}, named: {} } : layoutPropsState.value\n\n return layouts.reduceRight((childNode, layout) => {\n const layoutComponent = layout.component as DefineComponent\n layoutComponent.inheritAttrs = !!layoutComponent.inheritAttrs\n\n return h(\n layoutComponent,\n {\n ...page.value!.props,\n ...layout.props,\n ...dynamicProps.shared,\n ...(layout.name ? dynamicProps.named[layout.name] || {} : {}),\n },\n () => childNode,\n )\n }, child)\n }\n }\n\n return child\n }\n }\n },\n})\nexport default App\n\nexport const plugin: Plugin = {\n install(app) {\n router.form = useForm\n\n Object.defineProperty(app.config.globalProperties, '$inertia', { get: () => router })\n Object.defineProperty(app.config.globalProperties, '$page', { get: () => page.value })\n Object.defineProperty(app.config.globalProperties, '$headManager', { get: () => headManager })\n\n app.mixin(remember)\n },\n}\n\nexport function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps & SharedPageProps> {\n if (!pageAccessor) {\n pageAccessor = reactive({\n props: computed(() => page.value?.props),\n url: computed(() => page.value?.url),\n component: computed(() => page.value?.component),\n version: computed(() => page.value?.version),\n clearHistory: computed(() => page.value?.clearHistory),\n deferredProps: computed(() => page.value?.deferredProps),\n rescuedProps: computed(() => page.value?.rescuedProps),\n mergeProps: computed(() => page.value?.mergeProps),\n prependProps: computed(() => page.value?.prependProps),\n deepMergeProps: computed(() => page.value?.deepMergeProps),\n matchPropsOn: computed(() => page.value?.matchPropsOn),\n rememberedState: computed(() => page.value?.rememberedState),\n encryptHistory: computed(() => page.value?.encryptHistory),\n scrollProps: computed(() => page.value?.scrollProps),\n flash: computed(() => page.value?.flash),\n }) as Page\n }\n\n return pageAccessor as Page<TPageProps>\n}\n", "import { createLayoutPropsStore, type LayoutProps, type NamedLayoutProps } from '@inertiajs/core'\nimport { ref } from 'vue'\n\nconst store = createLayoutPropsStore()\n\nexport const state = ref(store.get())\n\nstore.subscribe(() => {\n state.value = store.get()\n})\n\nexport function setLayoutProps(props: Partial<LayoutProps>): void\nexport function setLayoutProps<K extends keyof NamedLayoutProps>(name: K, props: Partial<NamedLayoutProps[K]>): void\nexport function setLayoutProps<T = never>(props: Partial<NoInfer<T>>): void\nexport function setLayoutProps<T = never>(name: string, props: Partial<NoInfer<T>>): void\nexport function setLayoutProps(nameOrProps: string | Record<string, unknown>, props?: Record<string, unknown>): void {\n if (typeof nameOrProps === 'string') {\n store.setFor(nameOrProps, props!)\n } else {\n store.set(nameOrProps)\n }\n}\n\nexport function resetLayoutProps(): void {\n store.reset()\n state.value = store.get()\n}\n", "import { router } from '@inertiajs/core'\nimport { cloneDeep } from 'es-toolkit'\nimport { ComponentOptions } from 'vue'\n\nconst remember: ComponentOptions = {\n created() {\n if (!this.$options.remember) {\n return\n }\n\n if (Array.isArray(this.$options.remember)) {\n this.$options.remember = { data: this.$options.remember }\n }\n\n if (typeof this.$options.remember === 'string') {\n this.$options.remember = { data: [this.$options.remember] }\n }\n\n if (typeof this.$options.remember.data === 'string') {\n this.$options.remember = { data: [this.$options.remember.data] }\n }\n\n const rememberKey =\n this.$options.remember.key instanceof Function\n ? this.$options.remember.key.call(this)\n : this.$options.remember.key\n\n const restored = router.restore(rememberKey) as Record<string, unknown> | undefined\n\n const rememberable = this.$options.remember.data.filter((key: string) => {\n return !(this[key] !== null && typeof this[key] === 'object' && this[key].__rememberable === false)\n }) as string[]\n\n const hasCallbacks = (key: string) => {\n return (\n this[key] !== null &&\n typeof this[key] === 'object' &&\n typeof this[key].__remember === 'function' &&\n typeof this[key].__restore === 'function'\n )\n }\n\n rememberable.forEach((key: string) => {\n if (this[key] !== undefined && restored !== undefined && restored[key] !== undefined) {\n hasCallbacks(key) ? this[key].__restore(restored[key]) : (this[key] = restored[key])\n }\n\n this.$watch(\n key,\n () => {\n router.remember(\n rememberable.reduce(\n (data, key) => ({\n ...data,\n [key]: cloneDeep(hasCallbacks(key) ? this[key].__remember() : this[key]),\n }),\n {},\n ),\n rememberKey,\n )\n },\n { immediate: true, deep: true },\n )\n })\n },\n}\n\nexport default remember\n", "import {\n CancelToken,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n Method,\n OptimisticCallback,\n Progress,\n RequestPayload,\n router,\n UrlMethodPair,\n UseFormArguments,\n UseFormSubmitArguments,\n UseFormSubmitOptions,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep } from 'es-toolkit'\nimport { NamedInputEvent, PrecognitionPath, ValidationConfig, Validator } from 'laravel-precognition'\nimport useFormState from './useFormState'\n\n// Reserved keys validation - logs console.error at runtime when form data keys conflict with form properties\nlet reservedFormKeys: Set<string> | null = null\nlet bootstrapping = false\n\nfunction validateFormDataKeys<TForm extends object>(data: TForm): void {\n if (bootstrapping) {\n return\n }\n\n if (reservedFormKeys === null) {\n bootstrapping = true\n reservedFormKeys = new Set(Object.keys(useForm({})))\n bootstrapping = false\n }\n\n const conflicts = Object.keys(data).filter((key) => reservedFormKeys!.has(key))\n if (conflicts.length > 0) {\n console.error(\n `[Inertia] useForm() data contains field(s) that conflict with form properties: ${conflicts.map((k) => `\"${k}\"`).join(', ')}. ` +\n `These fields will be overwritten by form methods/properties. Please rename these fields.`,\n )\n }\n}\n\nexport interface InertiaFormProps<TForm extends object> {\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n data(): TForm\n transform(callback: UseFormTransformCallback<TForm>): this\n defaults(): this\n defaults<T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): this\n defaults(fields: Partial<TForm>): this\n reset<K extends FormDataKeys<TForm>>(...fields: K[]): this\n clearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): this\n resetAndClearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): this\n setError<K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): this\n setError(errors: FormDataErrors<TForm>): this\n submit: (...args: UseFormSubmitArguments) => void\n get(url: string, options?: UseFormSubmitOptions): void\n post(url: string, options?: UseFormSubmitOptions): void\n put(url: string, options?: UseFormSubmitOptions): void\n patch(url: string, options?: UseFormSubmitOptions): void\n delete(url: string, options?: UseFormSubmitOptions): void\n cancel(): void\n dontRemember<K extends FormDataKeys<TForm>>(...fields: K[]): this\n optimistic<TProps>(callback: OptimisticCallback<TProps>): this\n withPrecognition(...args: UseFormWithPrecognitionArguments): InertiaPrecognitiveForm<TForm>\n}\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface InertiaFormValidationProps<TForm extends object> {\n invalid<K extends FormDataKeys<TForm>>(field: K): boolean\n setValidationTimeout(duration: number): this\n touch<K extends FormDataKeys<TForm>>(field: K | NamedInputEvent | Array<K>, ...fields: K[]): this\n touched<K extends FormDataKeys<TForm>>(field?: K): boolean\n valid<K extends FormDataKeys<TForm>>(field: K): boolean\n validate<K extends FormDataKeys<TForm> | PrecognitionPath<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ): this\n validateFiles(): this\n validating: boolean\n validator: () => Validator\n withAllErrors(): this\n withoutFileValidation(): this\n // Backward compatibility for easy migration from the original Precognition libraries\n setErrors(errors: FormDataErrors<TForm> | Record<string, string | string[]>): this\n forgetError<K extends FormDataKeys<TForm> | NamedInputEvent>(field: K): this\n}\n\ninterface InternalPrecognitionState {\n __touched: string[]\n __valid: string[]\n}\n\nexport type InertiaForm<TForm extends object> = TForm & InertiaFormProps<TForm>\nexport type InertiaPrecognitiveForm<TForm extends object> = InertiaForm<TForm> &\n InertiaFormValidationProps<TForm> &\n InternalPrecognitionState\n\ntype ReservedFormKeys = keyof InertiaFormProps<any>\n\ntype ValidateFormData<T> = {\n [K in keyof T]: K extends ReservedFormKeys ? ['Error: This field name is reserved by useForm:', K] : T[K]\n}\n\nexport default function useForm<TForm extends FormDataType<TForm> & ValidateFormData<TForm>>(\n method: Method | (() => Method),\n url: string | (() => string),\n data: TForm | (() => TForm),\n): InertiaPrecognitiveForm<TForm>\nexport default function useForm<TForm extends FormDataType<TForm> & ValidateFormData<TForm>>(\n urlMethodPair: UrlMethodPair | (() => UrlMethodPair),\n data: TForm | (() => TForm),\n): InertiaPrecognitiveForm<TForm>\nexport default function useForm<TForm extends FormDataType<TForm> & ValidateFormData<TForm>>(\n rememberKey: string,\n data: TForm | (() => TForm),\n): InertiaForm<TForm>\nexport default function useForm<TForm extends FormDataType<TForm> & ValidateFormData<TForm>>(\n data: TForm | (() => TForm),\n): InertiaForm<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(): InertiaForm<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n ...args: UseFormArguments<TForm>\n): InertiaForm<TForm> | InertiaPrecognitiveForm<TForm> {\n const { rememberKey, data, precognitionEndpoint } = UseFormUtils.parseUseFormArguments<TForm>(...args)\n\n const initialDefaults = typeof data === 'function' ? cloneDeep(data()) : cloneDeep(data)\n validateFormDataKeys(initialDefaults)\n\n let cancelToken: CancelToken | null = null\n let pendingOptimisticCallback: OptimisticCallback | null = null\n\n const {\n form: baseForm,\n setDefaults,\n getTransform,\n getPrecognitionEndpoint,\n markAsSuccessful,\n wasDefaultsCalledInOnSuccess,\n resetDefaultsCalledInOnSuccess,\n setRememberExcludeKeys,\n resetBeforeSubmit,\n finishProcessing,\n } = useFormState<TForm>({\n data,\n rememberKey,\n precognitionEndpoint,\n })\n\n // Cast needed: baseForm has all form state/methods, we're adding submit methods below via Object.assign\n const form = baseForm as unknown as InertiaForm<TForm>\n\n const createSubmitMethod =\n (method: Method) =>\n (url: string, options: VisitOptions = {}) => {\n form.submit(method, url, options)\n }\n\n Object.assign(form, {\n submit(...args: UseFormSubmitArguments) {\n const { method, url, options } = UseFormUtils.parseSubmitArguments(args, getPrecognitionEndpoint())\n\n resetDefaultsCalledInOnSuccess()\n\n const _options: VisitOptions = {\n ...options,\n onCancelToken: (token) => {\n cancelToken = token\n\n return options.onCancelToken?.(token)\n },\n onBefore: (visit) => {\n resetBeforeSubmit()\n\n return options.onBefore?.(visit)\n },\n onStart: (visit) => {\n form.processing = true\n\n return options.onStart?.(visit)\n },\n onProgress: (event) => {\n form.progress = event ?? null\n\n return options.onProgress?.(event)\n },\n onSuccess: async (page) => {\n markAsSuccessful()\n\n const onSuccess = options.onSuccess ? await options.onSuccess(page) : null\n\n if (!wasDefaultsCalledInOnSuccess()) {\n setDefaults(cloneDeep(form.data()))\n form.isDirty = false\n }\n\n return onSuccess\n },\n onError: (errors) => {\n form.clearErrors().setError(errors as FormDataErrors<TForm>)\n\n return options.onError?.(errors)\n },\n onCancel: () => {\n return options.onCancel?.()\n },\n onFinish: (visit) => {\n finishProcessing()\n cancelToken = null\n\n return options.onFinish?.(visit)\n },\n }\n\n _options.optimistic = _options.optimistic ?? pendingOptimisticCallback ?? undefined\n pendingOptimisticCallback = null\n\n const transformedData = getTransform()(form.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\n get: createSubmitMethod('get'),\n post: createSubmitMethod('post'),\n put: createSubmitMethod('put'),\n patch: createSubmitMethod('patch'),\n delete: createSubmitMethod('delete'),\n\n cancel() {\n if (cancelToken) {\n cancelToken.cancel()\n }\n },\n\n dontRemember(...keys: FormDataKeys<TForm>[]) {\n setRememberExcludeKeys(keys)\n return form\n },\n\n optimistic<TProps>(callback: OptimisticCallback<TProps>) {\n pendingOptimisticCallback = callback as OptimisticCallback\n return form\n },\n })\n\n return getPrecognitionEndpoint() ? (form as InertiaPrecognitiveForm<TForm>) : form\n}\n", "import {\n Errors,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataValues,\n Progress,\n router,\n UrlMethodPair,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n} from '@inertiajs/core'\nimport { cloneDeep, isEqual } from 'es-toolkit'\nimport { get, has, set } from 'es-toolkit/compat'\nimport {\n createValidator,\n NamedInputEvent,\n resolveName,\n toSimpleValidationErrors,\n ValidationConfig,\n Validator,\n} from 'laravel-precognition'\nimport { reactive, watch } from 'vue'\nimport { config } from '.'\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface FormStateProps<TForm extends object> {\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n data(): TForm\n transform(callback: UseFormTransformCallback<TForm>): this\n defaults(): this\n defaults<T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): this\n defaults(fields: Partial<TForm>): this\n reset<K extends FormDataKeys<TForm>>(...fields: K[]): this\n clearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): this\n resetAndClearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): this\n setError<K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): this\n setError(errors: FormDataErrors<TForm>): this\n withPrecognition(...args: UseFormWithPrecognitionArguments): this & FormStateValidationProps<TForm>\n}\n\nexport interface FormStateValidationProps<TForm extends object> {\n invalid<K extends FormDataKeys<TForm>>(field: K): boolean\n setValidationTimeout(duration: number): this\n touch<K extends FormDataKeys<TForm>>(field: K | NamedInputEvent | Array<K>, ...fields: K[]): this\n touched<K extends FormDataKeys<TForm>>(field?: K): boolean\n valid<K extends FormDataKeys<TForm>>(field: K): boolean\n validate<K extends FormDataKeys<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ): this\n validateFiles(): this\n validating: boolean\n validator: () => Validator\n withAllErrors(): this\n withoutFileValidation(): this\n setErrors(errors: FormDataErrors<TForm> | Record<string, string | string[]>): this\n forgetError<K extends FormDataKeys<TForm> | NamedInputEvent>(field: K): this\n}\n\ninterface InternalPrecognitionState {\n __touched: string[]\n __valid: string[]\n}\n\nexport type FormState<TForm extends object> = TForm & FormStateProps<TForm>\nexport type FormStateWithPrecognition<TForm extends object> = FormState<TForm> &\n FormStateValidationProps<TForm> &\n InternalPrecognitionState\n\ninterface InternalRememberState<TForm extends object> {\n __rememberable: boolean\n __remember: () => { data: TForm; errors: FormDataErrors<TForm> }\n __restore: (restored: { data: TForm; errors: FormDataErrors<TForm> }) => void\n}\n\nexport interface UseFormStateOptions<TForm extends object> {\n data: TForm | (() => TForm)\n rememberKey?: string | null\n precognitionEndpoint?: (() => UrlMethodPair) | null\n}\n\nexport interface UseFormStateReturn<TForm extends object> {\n form: FormState<TForm> & InternalRememberState<TForm>\n setDefaults: (newDefaults: TForm) => void\n getTransform: () => UseFormTransformCallback<TForm>\n getPrecognitionEndpoint: () => (() => UrlMethodPair) | null\n markAsSuccessful: () => void\n wasDefaultsCalledInOnSuccess: () => boolean\n resetDefaultsCalledInOnSuccess: () => void\n setRememberExcludeKeys: (keys: FormDataKeys<TForm>[]) => void\n resetBeforeSubmit: () => void\n finishProcessing: () => void\n withAllErrors: { enabled: () => boolean; enable: () => void }\n}\n\nexport default function useFormState<TForm extends object>(\n options: UseFormStateOptions<TForm>,\n): UseFormStateReturn<TForm> {\n const { data: dataOption, rememberKey } = options\n let { precognitionEndpoint } = options\n\n const isDataFunction = typeof dataOption === 'function'\n const resolveData = () => (isDataFunction ? (dataOption as () => TForm)() : dataOption)\n\n const restored = rememberKey\n ? (router.restore(rememberKey) as { data: TForm; errors: Record<FormDataKeys<TForm>, ErrorValue> } | null)\n : null\n\n const initialData = restored?.data ?? cloneDeep(resolveData())\n let defaults = cloneDeep(initialData)\n let transform: UseFormTransformCallback<TForm> = (data) => data\n let validatorRef: Validator | null = null\n let withAllErrors: boolean | null = null\n const withAllErrorsEnabled = () => withAllErrors ?? config.get('form.withAllErrors')\n let recentlySuccessfulTimeoutId: ReturnType<typeof setTimeout> | undefined\n let defaultsCalledInOnSuccess = false\n let rememberExcludeKeys: FormDataKeys<TForm>[] = []\n\n const form = reactive<FormState<TForm>>({\n ...cloneDeep(defaults),\n isDirty: false,\n errors: {} as FormDataErrors<TForm>,\n hasErrors: false,\n processing: false,\n progress: null as Progress | null,\n wasSuccessful: false,\n recentlySuccessful: false,\n\n withPrecognition(...args: UseFormWithPrecognitionArguments): FormStateWithPrecognition<TForm> {\n precognitionEndpoint = UseFormUtils.createWayfinderCallback(...args)\n\n const formWithPrecognition = this as any as FormStateWithPrecognition<TForm>\n\n const validator = createValidator(\n (client) => {\n const { method, url } = precognitionEndpoint!()\n const transformedData = cloneDeep(transform(this.data())) as Record<string, unknown>\n\n return client[method](url, transformedData)\n },\n cloneDeep(defaults) as Record<string, unknown>,\n )\n\n validatorRef = validator\n\n validator\n .on('validatingChanged', () => {\n formWithPrecognition.validating = validator.validating()\n })\n .on('validatedChanged', () => {\n formWithPrecognition.__valid = validator.valid()\n })\n .on('touchedChanged', () => {\n formWithPrecognition.__touched = validator.touched()\n })\n .on('errorsChanged', () => {\n const validationErrors = withAllErrorsEnabled()\n ? validator.errors()\n : toSimpleValidationErrors(validator.errors())\n\n this.errors = {} as FormDataErrors<TForm>\n\n this.setError(validationErrors as FormDataErrors<TForm>)\n\n formWithPrecognition.__valid = validator.valid()\n })\n\n const tap = <T>(value: T, callback: (value: T) => unknown): T => {\n callback(value)\n return value\n }\n\n Object.assign(formWithPrecognition, {\n __touched: [],\n __valid: [],\n validating: false,\n validator: () => validator,\n withAllErrors: () => tap(formWithPrecognition, () => (withAllErrors = true)),\n valid: (field: string) => formWithPrecognition.__valid.includes(field),\n invalid: (field: string) => field in this.errors,\n setValidationTimeout: (duration: number) => tap(formWithPrecognition, () => validator.setTimeout(duration)),\n validateFiles: () => tap(formWithPrecognition, () => validator.validateFiles()),\n withoutFileValidation: () => tap(formWithPrecognition, () => validator.withoutFileValidation()),\n touch: (\n field: FormDataKeys<TForm> | NamedInputEvent | Array<FormDataKeys<TForm>>,\n ...fields: FormDataKeys<TForm>[]\n ) => {\n if (Array.isArray(field)) {\n validator.touch(field)\n } else if (typeof field === 'string') {\n validator.touch([field, ...fields])\n } else {\n validator.touch(field)\n }\n\n return formWithPrecognition\n },\n touched: (field?: string): boolean =>\n typeof field === 'string'\n ? formWithPrecognition.__touched.includes(field)\n : formWithPrecognition.__touched.length > 0,\n validate: (field?: string | NamedInputEvent | ValidationConfig, config?: ValidationConfig) => {\n if (typeof field === 'object' && !('target' in field)) {\n config = field\n field = undefined\n }\n\n if (field === undefined) {\n validator.validate(config)\n } else {\n const fieldName = resolveName(field)\n const transformedData = transform(this.data()) as Record<string, unknown>\n validator.validate(fieldName, get(transformedData, fieldName), config)\n }\n\n return formWithPrecognition\n },\n setErrors: (errors: FormDataErrors<TForm>) => tap(formWithPrecognition, () => this.setError(errors)),\n forgetError: (field: FormDataKeys<TForm> | NamedInputEvent) =>\n tap(formWithPrecognition, () =>\n this.clearErrors(resolveName(field as string | NamedInputEvent) as FormDataKeys<TForm>),\n ),\n })\n\n return formWithPrecognition\n },\n\n data() {\n return (Object.keys(defaults) as Array<FormDataKeys<TForm>>).reduce((carry, key) => {\n return set(carry, key, get(this, key))\n }, {} as Partial<TForm>) as TForm\n },\n\n transform(callback: UseFormTransformCallback<TForm>) {\n transform = callback\n\n return this\n },\n\n defaults(fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) {\n if (isDataFunction) {\n throw new Error('You cannot call `defaults()` when using a function to define your form data.')\n }\n\n defaultsCalledInOnSuccess = true\n\n if (typeof fieldOrFields === 'undefined') {\n defaults = cloneDeep(this.data())\n this.isDirty = false\n } else {\n defaults =\n typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign({}, cloneDeep(defaults), fieldOrFields)\n }\n\n validatorRef?.defaults(defaults as Record<string, unknown>)\n\n return this\n },\n\n reset(...fields: FormDataKeys<TForm>[]) {\n const resolvedData = isDataFunction ? cloneDeep(resolveData()) : defaults\n const clonedData = cloneDeep(resolvedData)\n\n if (fields.length === 0) {\n if (isDataFunction) {\n defaults = clonedData\n }\n Object.assign(this, clonedData)\n } else {\n ;(fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(clonedData, key))\n .forEach((key) => {\n if (isDataFunction) {\n set(defaults, key, get(clonedData, key))\n }\n set(this, key, get(clonedData, key))\n })\n }\n\n validatorRef?.reset(...fields)\n\n return this\n },\n\n setError(fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: ErrorValue) {\n const errors = typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields\n\n Object.assign(this.errors, errors)\n\n this.hasErrors = Object.keys(this.errors).length > 0\n\n validatorRef?.setErrors(errors as Errors)\n\n return this\n },\n\n clearErrors(...fields: string[]) {\n this.errors = Object.keys(this.errors).reduce(\n (carry, field) => ({\n ...carry,\n ...(fields.length > 0 && !fields.includes(field) ? { [field]: (this.errors as Errors)[field] } : {}),\n }),\n {} as FormDataErrors<TForm>,\n )\n\n this.hasErrors = Object.keys(this.errors).length > 0\n\n if (validatorRef) {\n if (fields.length === 0) {\n validatorRef.setErrors({})\n } else {\n fields.forEach(validatorRef.forgetError)\n }\n }\n\n return this\n },\n\n resetAndClearErrors(...fields: FormDataKeys<TForm>[]) {\n this.reset(...fields)\n this.clearErrors(...fields)\n return this\n },\n\n __rememberable: rememberKey === null,\n\n __remember() {\n const formData = (this as unknown as FormState<TForm>).data()\n\n if (rememberExcludeKeys.length > 0) {\n const filtered = { ...formData } as Record<string, unknown>\n rememberExcludeKeys.forEach((k) => delete filtered[k as string])\n return { data: filtered as TForm, errors: (this as unknown as FormState<TForm>).errors }\n }\n\n return { data: formData, errors: (this as unknown as FormState<TForm>).errors }\n },\n\n __restore(restored: { data: TForm; errors: FormDataErrors<TForm> }) {\n Object.assign(this, restored.data)\n ;(this as unknown as FormState<TForm>).setError(restored.errors)\n },\n })\n\n const typedForm = form as any as FormState<TForm> & InternalRememberState<TForm>\n\n // Set restored errors if any\n if (restored?.errors) {\n typedForm.setError(restored.errors as FormDataErrors<TForm>)\n }\n\n watch(\n typedForm,\n () => {\n typedForm.isDirty = !isEqual(typedForm.data(), defaults)\n },\n { immediate: true, deep: true },\n )\n\n // Watch for remember functionality\n watch(\n typedForm,\n (newValue) => {\n if (!rememberKey) {\n return\n }\n\n const storedData = router.restore(rememberKey)\n const newData = cloneDeep((newValue as unknown as InternalRememberState<TForm>).__remember())\n\n if (!isEqual(storedData, newData)) {\n router.remember(newData, rememberKey)\n }\n },\n { immediate: true, deep: true },\n )\n\n if (precognitionEndpoint) {\n typedForm.withPrecognition(precognitionEndpoint)\n }\n\n return {\n form: typedForm,\n setDefaults: (newDefaults: TForm) => {\n defaults = newDefaults\n },\n getTransform: () => transform,\n getPrecognitionEndpoint: () => precognitionEndpoint ?? null,\n markAsSuccessful: () => {\n typedForm.clearErrors()\n typedForm.wasSuccessful = true\n typedForm.recentlySuccessful = true\n\n recentlySuccessfulTimeoutId = setTimeout(\n () => (typedForm.recentlySuccessful = false),\n config.get('form.recentlySuccessfulDuration'),\n )\n },\n wasDefaultsCalledInOnSuccess: () => defaultsCalledInOnSuccess,\n resetDefaultsCalledInOnSuccess: () => {\n defaultsCalledInOnSuccess = false\n },\n setRememberExcludeKeys: (keys: FormDataKeys<TForm>[]) => {\n rememberExcludeKeys = keys\n },\n resetBeforeSubmit: () => {\n typedForm.wasSuccessful = false\n typedForm.recentlySuccessful = false\n clearTimeout(recentlySuccessfulTimeoutId)\n },\n finishProcessing: () => {\n typedForm.processing = false\n typedForm.progress = null\n },\n withAllErrors: {\n enabled: withAllErrorsEnabled,\n enable: () => {\n withAllErrors = true\n },\n },\n }\n}\n", "import {\n buildSSRBody,\n CreateInertiaAppOptions,\n CreateInertiaAppOptionsForCSR,\n CreateInertiaAppOptionsForSSR,\n getInitialPageFromDOM,\n http as httpModule,\n InertiaAppSSRResponse,\n Page,\n PageProps,\n router,\n setupProgress,\n SharedPageProps,\n} from '@inertiajs/core'\nimport { createApp, createSSRApp, DefineComponent, h, Plugin, App as VueApp } from 'vue'\nimport App, { InertiaApp, InertiaAppProps, plugin } from './app'\nimport { config } from './index'\nimport { VueInertiaAppConfig } from './types'\n\ntype ComponentResolver = (\n name: string,\n page?: Page<SharedPageProps>,\n) => DefineComponent | Promise<DefineComponent> | { default: DefineComponent }\n\ntype SetupOptions<ElementType, SharedProps extends PageProps> = {\n el: ElementType\n App: InertiaApp\n props: InertiaAppProps<SharedProps>\n plugin: Plugin\n}\n\ntype VueWithApp = (app: VueApp, options: { ssr: boolean }) => void\n\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForCSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<HTMLElement, SharedProps>,\n void,\n VueInertiaAppConfig\n> & {\n withApp?: never\n}\n\ntype InertiaAppOptionsForSSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForSSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<null, SharedProps>,\n VueApp,\n VueInertiaAppConfig\n> & {\n render: (app: VueApp) => Promise<string>\n withApp?: never\n}\n\ntype InertiaAppOptionsAuto<SharedProps extends PageProps> = Omit<\n CreateInertiaAppOptions<\n ComponentResolver,\n SetupOptions<HTMLElement | null, SharedProps>,\n VueApp | void,\n VueInertiaAppConfig\n >,\n 'setup'\n> & {\n page?: Page<SharedProps>\n render?: undefined\n} & (\n | { setup?: undefined; withApp?: VueWithApp }\n | { setup: (options: SetupOptions<HTMLElement | null, SharedProps>) => VueApp | void; withApp?: never }\n )\n\ntype RenderToString = (app: VueApp) => Promise<string>\n\ntype RenderFunction<SharedProps extends PageProps> = (\n page: Page<SharedProps>,\n renderToString: RenderToString,\n) => Promise<InertiaAppSSRResponse>\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<void>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<InertiaAppSSRResponse>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options?: InertiaAppOptionsAuto<SharedProps>,\n): Promise<void | RenderFunction<SharedProps>>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n {\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n defaults = {},\n nonce,\n http,\n layout,\n withApp,\n }:\n | InertiaAppOptionsForCSR<SharedProps>\n | InertiaAppOptionsForSSR<SharedProps>\n | InertiaAppOptionsAuto<SharedProps> = {} as InertiaAppOptionsAuto<SharedProps>,\n): Promise<InertiaAppSSRResponse | RenderFunction<SharedProps> | void> {\n config.replace(defaults)\n\n if (nonce) {\n config.set('nonce', nonce)\n }\n\n if (http) {\n httpModule.setClient(http)\n }\n\n const isServer = typeof window === 'undefined'\n\n const resolveComponent = (name: string, page?: Page) =>\n Promise.resolve(resolve!(name, page)).then((module) => module.default || module)\n\n // SSR render function factory - when on server without page/render, return a render function\n // This is used by the Vite plugin's SSR transform\n if (isServer && !page && !render) {\n return async (page: Page<SharedProps>, renderToString: RenderToString) => {\n let head: string[] = []\n\n const initialComponent = await resolveComponent(page.component, page)\n\n const props: InertiaAppProps<SharedProps> = {\n initialPage: page,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: (elements: string[]) => (head = elements),\n defaultLayout: layout,\n }\n\n let vueApp: VueApp\n\n if (setup) {\n vueApp = (setup as (options: SetupOptions<null, SharedProps>) => VueApp)({\n el: null,\n App,\n props,\n plugin,\n })\n } else {\n vueApp = createSSRApp({ render: () => h(App, props) })\n vueApp.use(plugin)\n\n if (withApp) {\n withApp(vueApp, { ssr: true })\n }\n }\n\n const html = await renderToString(vueApp)\n const body = buildSSRBody(id, page, html)\n\n return { head, body }\n }\n }\n\n const initialPage = page || getInitialPageFromDOM<Page<SharedProps>>(id)!\n\n let head: string[] = []\n\n const vueApp = await Promise.all([\n resolveComponent(initialPage.component, initialPage),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n const props: InertiaAppProps<SharedProps> = {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: isServer ? (elements: string[]) => (head = elements) : undefined,\n defaultLayout: layout,\n }\n\n if (isServer) {\n return (setup as (options: SetupOptions<null, SharedProps>) => VueApp)({\n el: null,\n App,\n props,\n plugin,\n })\n }\n\n const el = document.getElementById(id)!\n\n if (setup) {\n return (setup as (options: SetupOptions<HTMLElement, SharedProps>) => void)({\n el,\n App,\n props,\n plugin,\n })\n }\n\n // Default mounting when setup is not provided\n if (el.hasAttribute('data-server-rendered')) {\n const app = createSSRApp({ render: () => h(App, props) })\n app.use(plugin)\n\n if (withApp) {\n withApp(app, { ssr: false })\n }\n\n app.mount(el)\n } else {\n const app = createApp({ render: () => h(App, props) })\n app.use(plugin)\n\n if (withApp) {\n withApp(app, { ssr: false })\n }\n\n app.mount(el)\n }\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer && render && vueApp) {\n const html = await render(vueApp)\n const body = buildSSRBody(id, initialPage, html)\n\n return { head, body }\n }\n}\n", "import { isSameUrlWithoutQueryOrHash, partialReloadRequestsSomeProps, router } from '@inertiajs/core'\nimport { get } from 'es-toolkit/compat'\nimport { computed, defineComponent, onMounted, onUnmounted, ref, type SlotsType } from 'vue'\nimport { usePage } from './app'\n\nexport default defineComponent({\n name: 'Deferred',\n props: {\n data: {\n type: [String, Array<String>],\n required: true,\n },\n },\n slots: Object as SlotsType<{\n default: { reloading: boolean }\n fallback: {}\n rescue: { reloading: boolean }\n }>,\n setup(props, { slots }) {\n const reloading = ref(false)\n const activeReloads = new Set<object>()\n const page = usePage()\n const keys = computed(() => (Array.isArray(props.data) ? props.data : [props.data]) as string[])\n const rescuedKeys = computed(() => new Set(page.rescuedProps))\n\n let removeStartListener: (() => void) | null = null\n let removeFinishListener: (() => void) | null = null\n\n onMounted(() => {\n removeStartListener = router.on('start', (e) => {\n const visit = e.detail.visit\n\n if (\n visit.preserveState === true &&\n isSameUrlWithoutQueryOrHash(visit.url, window.location) &&\n partialReloadRequestsSomeProps(visit, keys.value)\n ) {\n activeReloads.add(visit)\n reloading.value = true\n }\n })\n\n removeFinishListener = router.on('finish', (e) => {\n const visit = e.detail.visit\n\n if (activeReloads.has(visit)) {\n activeReloads.delete(visit)\n reloading.value = activeReloads.size > 0\n }\n })\n })\n\n onUnmounted(() => {\n removeStartListener?.()\n removeFinishListener?.()\n activeReloads.clear()\n })\n\n return () => {\n if (!slots.fallback) {\n throw new Error('`<Deferred>` requires a `<template #fallback>` slot')\n }\n\n const propsAreDefined = keys.value.every((key) => get(page.props, key) !== undefined)\n const hasRescuedProps = keys.value.some((key) => rescuedKeys.value.has(key))\n\n return propsAreDefined && !hasRescuedProps\n ? slots.default?.({ reloading: reloading.value })\n : hasRescuedProps && slots.rescue\n ? slots.rescue({ reloading: reloading.value })\n : slots.fallback({})\n }\n },\n})\n", "import {\n config,\n Errors,\n FormComponentProps,\n FormComponentRef,\n FormComponentResetSymbol,\n FormComponentSlotProps,\n FormDataConvertible,\n formDataToObject,\n isUrlMethodPair,\n mergeDataIntoQueryString,\n Method,\n resetFormFields,\n resolveUrlMethodPairComponent,\n UseFormUtils,\n VisitOptions,\n} from '@inertiajs/core'\nimport { isEqual } from 'es-toolkit'\nimport { NamedInputEvent, ValidationConfig } from 'laravel-precognition'\nimport {\n computed,\n defineComponent,\n h,\n inject,\n InjectionKey,\n onBeforeUnmount,\n onMounted,\n PropType,\n provide,\n ref,\n SlotsType,\n watch,\n} from 'vue'\nimport useForm from './useForm'\n\ntype FormSubmitOptions = Omit<VisitOptions, 'data' | 'onPrefetched' | 'onPrefetching'>\ntype FormSubmitter = HTMLElement | null\n\nconst noop = () => undefined\n\nconst FormContextKey: InjectionKey<FormComponentRef> = Symbol('InertiaFormContext')\n\nconst Form = defineComponent({\n name: 'Form',\n slots: Object as SlotsType<{\n default: FormComponentSlotProps\n }>,\n props: {\n action: {\n type: [String, Object] as PropType<FormComponentProps['action']>,\n default: '',\n },\n method: {\n type: String as PropType<FormComponentProps['method']>,\n default: 'get',\n },\n headers: {\n type: Object as PropType<FormComponentProps['headers']>,\n default: () => ({}),\n },\n queryStringArrayFormat: {\n type: String as PropType<FormComponentProps['queryStringArrayFormat']>,\n default: 'brackets',\n },\n errorBag: {\n type: [String, null] as PropType<FormComponentProps['errorBag']>,\n default: null,\n },\n showProgress: {\n type: Boolean,\n default: true,\n },\n transform: {\n type: Function as PropType<FormComponentProps['transform']>,\n default: (data: Record<string, FormDataConvertible>) => data,\n },\n options: {\n type: Object as PropType<FormComponentProps['options']>,\n default: () => ({}),\n },\n resetOnError: {\n type: [Boolean, Array] as PropType<FormComponentProps['resetOnError']>,\n default: false,\n },\n resetOnSuccess: {\n type: [Boolean, Array] as PropType<FormComponentProps['resetOnSuccess']>,\n default: false,\n },\n setDefaultsOnSuccess: {\n type: Boolean as PropType<FormComponentProps['setDefaultsOnSuccess']>,\n default: false,\n },\n onCancelToken: {\n type: Function as PropType<FormComponentProps['onCancelToken']>,\n default: noop,\n },\n onBefore: {\n type: Function as PropType<FormComponentProps['onBefore']>,\n default: noop,\n },\n onStart: {\n type: Function as PropType<FormComponentProps['onStart']>,\n default: noop,\n },\n onProgress: {\n type: Function as PropType<FormComponentProps['onProgress']>,\n default: noop,\n },\n onFinish: {\n type: Function as PropType<FormComponentProps['onFinish']>,\n default: noop,\n },\n onCancel: {\n type: Function as PropType<FormComponentProps['onCancel']>,\n default: noop,\n },\n onSuccess: {\n type: Function as PropType<FormComponentProps['onSuccess']>,\n default: noop,\n },\n onError: {\n type: Function as PropType<FormComponentProps['onError']>,\n default: noop,\n },\n onSubmitComplete: {\n type: Function as PropType<FormComponentProps['onSubmitComplete']>,\n default: noop,\n },\n disableWhileProcessing: {\n type: Boolean,\n default: false,\n },\n invalidateCacheTags: {\n type: [String, Array] as PropType<FormComponentProps['invalidateCacheTags']>,\n default: () => [],\n },\n validateFiles: {\n type: Boolean as PropType<FormComponentProps['validateFiles']>,\n default: false,\n },\n validationTimeout: {\n type: Number as PropType<FormComponentProps['validationTimeout']>,\n default: 1500,\n },\n optimistic: {\n type: Function as PropType<FormComponentProps['optimistic']>,\n default: undefined,\n },\n withAllErrors: {\n type: Boolean as PropType<FormComponentProps['withAllErrors']>,\n default: null,\n },\n component: {\n type: String as PropType<FormComponentProps['component']>,\n default: null,\n },\n instant: {\n type: Boolean as PropType<FormComponentProps['instant']>,\n default: false,\n },\n },\n setup(props, { slots, attrs, expose }) {\n const getTransformedData = (): Record<string, FormDataConvertible> => {\n const [_url, data] = getUrlAndData()\n\n return props.transform(data)\n }\n\n const form = useForm<Record<string, any>>({})\n .withPrecognition(\n () => method.value,\n () => getUrlAndData()[0],\n )\n .transform(getTransformedData)\n .setValidationTimeout(props.validationTimeout)\n\n if (props.validateFiles) {\n form.validateFiles()\n }\n\n if (props.withAllErrors ?? config.get('form.withAllErrors')) {\n form.withAllErrors()\n }\n\n const formElement = ref()\n const method = computed(() =>\n isUrlMethodPair(props.action) ? props.action.method : (props.method.toLowerCase() as Method),\n )\n const resolvedComponent = computed(() => {\n if (props.component) {\n return props.component\n }\n\n if (props.instant && isUrlMethodPair(props.action)) {\n return resolveUrlMethodPairComponent(props.action)\n }\n\n return null\n })\n\n // Can't use computed because FormData is not reactive\n const isDirty = ref(false)\n\n const defaultData = ref(new FormData())\n\n const onFormUpdate = (event: Event) => {\n if (event.type === 'reset' && (event as CustomEvent).detail?.[FormComponentResetSymbol]) {\n // When the form is reset programmatically, prevent native reset behavior\n event.preventDefault()\n }\n\n isDirty.value = event.type === 'reset' ? false : !isEqual(getData(), formDataToObject(defaultData.value))\n }\n\n const formEvents: Array<keyof HTMLElementEventMap> = ['input', 'change', 'reset']\n\n onMounted(() => {\n defaultData.value = getFormData()\n\n form.defaults(getData())\n\n formEvents.forEach((e) => formElement.value.addEventListener(e, onFormUpdate))\n })\n\n watch(\n () => props.validateFiles,\n (value) => (value ? form.validateFiles() : form.withoutFileValidation()),\n )\n\n watch(\n () => props.validationTimeout,\n (value) => form.setValidationTimeout(value),\n )\n\n onBeforeUnmount(() => formEvents.forEach((e) => formElement.value?.removeEventListener(e, onFormUpdate)))\n\n const getFormData = (submitter?: FormSubmitter): FormData => new FormData(formElement.value, submitter)\n\n // Convert the FormData to an object because we can't compare two FormData\n // instances directly (which is needed for isDirty), mergeDataIntoQueryString()\n // expects an object, and submitting a FormData instance directly causes problems with nested objects.\n const getData = (submitter?: FormSubmitter): Record<string, FormDataConvertible> =>\n formDataToObject(getFormData(submitter))\n\n const getUrlAndData = (submitter?: FormSubmitter): [string, Record<string, FormDataConvertible>] => {\n return mergeDataIntoQueryString(\n method.value,\n isUrlMethodPair(props.action) ? props.action.url : props.action,\n getData(submitter),\n props.queryStringArrayFormat,\n )\n }\n\n const submit = (submitter?: FormSubmitter) => {\n const [url, data] = getUrlAndData(submitter)\n const formTarget = (submitter as HTMLButtonElement | HTMLInputElement | null)?.getAttribute('formtarget')\n\n if (formTarget === '_blank' && method.value === 'get') {\n window.open(url, '_blank')\n return\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 submitOptions: FormSubmitOptions = {\n headers: props.headers,\n queryStringArrayFormat: props.queryStringArrayFormat,\n errorBag: props.errorBag,\n showProgress: props.showProgress,\n invalidateCacheTags: props.invalidateCacheTags,\n component: resolvedComponent.value,\n optimistic: props.optimistic ? (pageProps) => props.optimistic!(pageProps, data) : undefined,\n onCancelToken: props.onCancelToken,\n onBefore: props.onBefore,\n onStart: props.onStart,\n onProgress: props.onProgress,\n onFinish: props.onFinish,\n onCancel: props.onCancel,\n onSuccess: (...args) => {\n props.onSuccess?.(...args)\n props.onSubmitComplete?.(exposed)\n maybeReset(props.resetOnSuccess)\n\n if (props.setDefaultsOnSuccess === true) {\n defaults()\n }\n },\n onError: (...args) => {\n props.onError?.(...args)\n maybeReset(props.resetOnError)\n },\n ...props.options,\n }\n\n // We need transform because we can't override the default data with different keys (by design)\n form.transform(() => props.transform(data)).submit(method.value, url, submitOptions)\n\n // Reset the transformer back so the submitter is not used for future submissions\n form.transform(getTransformedData)\n }\n\n const reset = (...fields: string[]) => {\n resetFormFields(formElement.value, defaultData.value, fields)\n\n form.reset(...fields)\n }\n\n const clearErrors = (...fields: string[]) => {\n form.clearErrors(...fields)\n }\n\n const resetAndClearErrors = (...fields: string[]) => {\n clearErrors(...fields)\n reset(...fields)\n }\n\n const defaults = () => {\n defaultData.value = getFormData()\n isDirty.value = false\n }\n\n const exposed = {\n get errors() {\n return form.errors\n },\n get hasErrors() {\n return form.hasErrors\n },\n get processing() {\n return form.processing\n },\n get progress() {\n return form.progress\n },\n get wasSuccessful() {\n return form.wasSuccessful\n },\n get recentlySuccessful() {\n return form.recentlySuccessful\n },\n get validating() {\n return form.validating\n },\n clearErrors,\n resetAndClearErrors,\n setError: (fieldOrFields: string | Record<string, string>, maybeValue?: string) =>\n form.setError((typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields) as Errors),\n get isDirty() {\n return isDirty.value\n },\n reset,\n submit,\n defaults,\n getData,\n getFormData,\n\n // Precognition\n touch: form.touch,\n valid: form.valid,\n invalid: form.invalid,\n touched: form.touched,\n validate: (field?: string | NamedInputEvent | ValidationConfig, config?: ValidationConfig) =>\n form.validate(...UseFormUtils.mergeHeadersForValidation(field, config, props.headers)),\n validator: () => form.validator(),\n }\n\n expose<FormComponentRef>(exposed)\n\n provide(FormContextKey, exposed)\n\n return () => {\n return h(\n 'form',\n {\n ...attrs,\n ref: formElement,\n action: isUrlMethodPair(props.action) ? props.action.url : props.action,\n method: method.value,\n onSubmit: (event) => {\n event.preventDefault()\n submit(event.submitter)\n },\n inert: props.disableWhileProcessing && form.processing,\n },\n slots.default ? slots.default(exposed) : [],\n )\n }\n },\n})\n\nexport function useFormContext<TForm extends object = Record<string, any>>(): FormComponentRef<TForm> | undefined {\n return inject(FormContextKey) as FormComponentRef<TForm> | undefined\n}\n\ntype TypedFormComponent<TForm extends Record<string, any>> = Omit<typeof Form, 'new'> & {\n new (...args: ConstructorParameters<typeof Form>): Omit<InstanceType<typeof Form>, '$props' | '$slots'> & {\n $props: Omit<\n InstanceType<typeof Form>['$props'],\n 'optimistic' | 'transform' | 'resetOnSuccess' | 'resetOnError' | 'onSubmitComplete'\n > & {\n optimistic?: FormComponentProps<TForm>['optimistic']\n transform?: FormComponentProps<TForm>['transform']\n resetOnSuccess?: FormComponentProps<TForm>['resetOnSuccess']\n resetOnError?: FormComponentProps<TForm>['resetOnError']\n onSubmitComplete?: FormComponentProps<TForm>['onSubmitComplete']\n }\n $slots: {\n default: (props: FormComponentSlotProps<TForm>) => any\n }\n }\n}\n\nexport function createForm<TForm extends Record<string, any>>(): TypedFormComponent<TForm> {\n return Form as TypedFormComponent<TForm>\n}\n\nexport default Form\n", "import { escape } from 'es-toolkit/compat'\nimport { defineComponent, DefineComponent, onBeforeUnmount, VNode } from 'vue'\nimport { headManager } from './app'\n\nexport type InertiaHead = DefineComponent<{\n title?: string\n}>\n\nfunction isUnaryTag(node: VNode): boolean {\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\nfunction renderTagStart(node: VNode): string {\n node.props = node.props || {}\n node.props['data-inertia'] = node.props['head-key'] !== undefined ? node.props['head-key'] : ''\n\n const attrs = Object.keys(node.props).reduce((carry, name) => {\n const value = String(node.props![name])\n if (['key', 'head-key'].includes(name)) {\n return carry\n } else if (value === '') {\n return carry + ` ${name}`\n } else {\n return carry + ` ${name}=\"${escape(value)}\"`\n }\n }, '')\n\n return `<${String(node.type)}${attrs}>`\n}\n\nfunction renderTagChildren(node: VNode): string {\n const { children } = node\n\n if (typeof children === 'string') {\n return children\n }\n\n if (Array.isArray(children)) {\n return children.reduce<string>((html, child) => {\n return html + renderTag(child as VNode)\n }, '')\n }\n\n return ''\n}\n\nfunction isFunctionNode(node: VNode): node is VNode & { type: () => VNode } {\n return typeof node.type === 'function'\n}\n\nfunction isComponentNode(node: VNode): node is VNode & { type: object } {\n return typeof node.type === 'object'\n}\n\nfunction isCommentNode(node: VNode): boolean {\n return /(comment|cmt)/i.test(node.type.toString())\n}\n\nfunction isFragmentNode(node: VNode): boolean {\n return /(fragment|fgt|symbol\\(\\))/i.test(node.type.toString())\n}\n\nfunction isTextNode(node: VNode): boolean {\n return /(text|txt)/i.test(node.type.toString())\n}\n\nfunction renderTag(node: VNode): string {\n if (isTextNode(node)) {\n return String(node.children)\n } else if (isFragmentNode(node)) {\n return ''\n } else if (isCommentNode(node)) {\n return ''\n }\n\n let html = renderTagStart(node)\n\n if (node.children) {\n html += renderTagChildren(node)\n }\n\n if (!isUnaryTag(node)) {\n html += `</${String(node.type)}>`\n }\n\n return html\n}\n\nfunction addTitleElement(elements: string[], title?: string): string[] {\n if (title && !elements.find((tag) => tag.startsWith('<title'))) {\n elements.push(`<title data-inertia=\"\">${escape(title)}</title>`)\n }\n\n return elements\n}\n\nfunction renderNodes(nodes: VNode[], title?: string): string[] {\n const elements = nodes\n .flatMap((node) => resolveNode(node))\n .map((node) => renderTag(node))\n .filter((node) => node)\n\n return addTitleElement(elements, title)\n}\n\nfunction resolveNode(node: VNode): VNode | VNode[] {\n if (isFunctionNode(node)) {\n return resolveNode(node.type())\n } else if (isComponentNode(node)) {\n console.warn(`Using components in the <Head> component is not supported.`)\n return []\n } else if (isTextNode(node) && node.children) {\n return node\n } else if (isFragmentNode(node) && node.children) {\n return (node.children as VNode[]).flatMap((child) => resolveNode(child))\n } else if (isCommentNode(node)) {\n return []\n } else {\n return node\n }\n}\n\nconst Head: InertiaHead = defineComponent({\n props: {\n title: {\n type: String,\n required: false,\n },\n },\n setup(props, { slots }) {\n const provider = headManager.createProvider()\n\n onBeforeUnmount(() => {\n provider.disconnect()\n })\n\n return () => {\n provider.update(renderNodes(slots.default ? slots.default() : [], props.title))\n }\n },\n})\n\nexport default Head\n", "import {\n getScrollableParent,\n InfiniteScrollActionSlotProps,\n InfiniteScrollComponentBaseProps,\n InfiniteScrollRef,\n InfiniteScrollSlotProps,\n ReloadOptions,\n useInfiniteScroll,\n} from '@inertiajs/core'\nimport { computed, defineComponent, Fragment, h, onMounted, onUnmounted, PropType, ref, SlotsType, watch } from 'vue'\nimport { usePage } from './app'\n\n// Vue-specific element resolver\nconst resolveHTMLElement = (\n value: string | object | (() => HTMLElement | null),\n fallback: HTMLElement | null,\n): HTMLElement | null => {\n if (!value) {\n return fallback\n }\n\n // CSS Selector string\n if (typeof value === 'string') {\n return document.querySelector(value) as HTMLElement | null\n }\n\n // Function that returns an element\n if (typeof value === 'function') {\n return value() || null\n }\n\n return fallback\n}\n\nconst InfiniteScroll = defineComponent({\n name: 'InfiniteScroll',\n slots: Object as SlotsType<{\n default: InfiniteScrollSlotProps\n previous: InfiniteScrollActionSlotProps\n next: InfiniteScrollActionSlotProps\n loading: InfiniteScrollActionSlotProps\n }>,\n props: {\n data: {\n type: String as PropType<InfiniteScrollComponentBaseProps['data']>,\n required: true,\n },\n buffer: {\n type: Number as PropType<InfiniteScrollComponentBaseProps['buffer']>,\n default: 0,\n },\n onlyNext: {\n type: Boolean,\n default: false,\n },\n onlyPrevious: {\n type: Boolean,\n default: false,\n },\n as: {\n type: String as PropType<InfiniteScrollComponentBaseProps['as']>,\n default: 'div',\n },\n manual: {\n type: Boolean as PropType<InfiniteScrollComponentBaseProps['manual']>,\n default: false,\n },\n manualAfter: {\n type: Number as PropType<InfiniteScrollComponentBaseProps['manualAfter']>,\n default: 0,\n },\n preserveUrl: {\n type: Boolean as PropType<InfiniteScrollComponentBaseProps['preserveUrl']>,\n default: false,\n },\n reverse: {\n type: Boolean as PropType<InfiniteScrollComponentBaseProps['reverse']>,\n default: false,\n },\n autoScroll: {\n type: Boolean as PropType<InfiniteScrollComponentBaseProps['autoScroll']>,\n default: undefined,\n },\n itemsElement: {\n type: [String, Function, Object] as PropType<string | (() => HTMLElement | null | undefined)>,\n default: null,\n },\n startElement: {\n type: [String, Function, Object] as PropType<string | (() => HTMLElement | null | undefined)>,\n default: null,\n },\n endElement: {\n type: [String, Function, Object] as PropType<string | (() => HTMLElement | null | undefined)>,\n default: null,\n },\n params: {\n type: Object as PropType<ReloadOptions>,\n default: () => ({}),\n },\n },\n inheritAttrs: false,\n setup(props, { slots, attrs, expose }) {\n const itemsElementRef = ref<HTMLElement | null>(null)\n const startElementRef = ref<HTMLElement | null>(null)\n const endElementRef = ref<HTMLElement | null>(null)\n\n const itemsElement = computed<HTMLElement | null>(() =>\n resolveHTMLElement(props.itemsElement, itemsElementRef.value),\n )\n const scrollableParent = computed(() => getScrollableParent(itemsElement.value))\n const startElement = computed<HTMLElement | null>(() =>\n resolveHTMLElement(props.startElement, startElementRef.value),\n )\n const endElement = computed<HTMLElement | null>(() => resolveHTMLElement(props.endElement, endElementRef.value))\n\n const loadingPrevious = ref(false)\n const loadingNext = ref(false)\n const requestCount = ref(0)\n const hasPreviousPage = ref(false)\n const hasNextPage = ref(false)\n\n const syncStateFromDataManager = () => {\n requestCount.value = dataManager.getRequestCount()\n hasPreviousPage.value = dataManager.hasPrevious()\n hasNextPage.value = dataManager.hasNext()\n }\n\n const {\n dataManager,\n elementManager,\n flush: flushInfiniteScroll,\n } = useInfiniteScroll({\n // Data\n getPropName: () => props.data,\n inReverseMode: () => props.reverse,\n shouldFetchNext: () => !props.onlyPrevious,\n shouldFetchPrevious: () => !props.onlyNext,\n shouldPreserveUrl: () => props.preserveUrl,\n getReloadOptions: () => props.params,\n\n // Elements\n getTriggerMargin: () => props.buffer,\n getStartElement: () => startElement.value!,\n getEndElement: () => endElement.value!,\n getItemsElement: () => itemsElement.value!,\n getScrollableParent: () => scrollableParent.value,\n\n // Request callbacks\n onBeforePreviousRequest: () => (loadingPrevious.value = true),\n onBeforeNextRequest: () => (loadingNext.value = true),\n onCompletePreviousRequest: () => {\n loadingPrevious.value = false\n syncStateFromDataManager()\n },\n onCompleteNextRequest: () => {\n loadingNext.value = false\n syncStateFromDataManager()\n },\n onDataReset: syncStateFromDataManager,\n })\n\n syncStateFromDataManager()\n\n if (typeof window === 'undefined') {\n const scrollProp = usePage().scrollProps?.[props.data]\n\n if (scrollProp) {\n hasPreviousPage.value = !!scrollProp.previousPage\n hasNextPage.value = !!scrollProp.nextPage\n }\n }\n\n const autoLoad = computed<boolean>(() => !manualMode.value)\n const manualMode = computed<boolean>(\n () => props.manual || (props.manualAfter > 0 && requestCount.value >= props.manualAfter),\n )\n\n const scrollToBottom = () => {\n if (scrollableParent.value) {\n scrollableParent.value.scrollTo({\n top: scrollableParent.value.scrollHeight,\n behavior: 'instant',\n })\n } else {\n window.scrollTo({\n top: document.body.scrollHeight,\n behavior: 'instant',\n })\n }\n }\n\n onMounted(() => {\n elementManager.setupObservers()\n elementManager.processServerLoadedElements(dataManager.getLastLoadedPage())\n\n // autoScroll defaults to reverse value if not explicitly set\n const shouldAutoScroll = props.autoScroll !== undefined ? props.autoScroll : props.reverse\n\n if (shouldAutoScroll) {\n scrollToBottom()\n }\n\n if (autoLoad.value) {\n elementManager.enableTriggers()\n }\n })\n\n onUnmounted(flushInfiniteScroll)\n\n watch(\n () => [autoLoad.value, props.onlyNext, props.onlyPrevious],\n ([enabled]) => {\n enabled ? elementManager.enableTriggers() : elementManager.disableTriggers()\n },\n )\n\n expose<InfiniteScrollRef>({\n fetchNext: dataManager.fetchNext,\n fetchPrevious: dataManager.fetchPrevious,\n hasPrevious: dataManager.hasPrevious,\n hasNext: dataManager.hasNext,\n })\n\n return () => {\n const renderElements = []\n\n const sharedExposed: Pick<\n InfiniteScrollActionSlotProps,\n 'loadingPrevious' | 'loadingNext' | 'hasPrevious' | 'hasNext'\n > = {\n loadingPrevious: loadingPrevious.value,\n loadingNext: loadingNext.value,\n hasPrevious: hasPreviousPage.value,\n hasNext: hasNextPage.value,\n }\n\n // Only render previous trigger if not using custom element\n if (!props.startElement) {\n const headerAutoMode = autoLoad.value && !props.onlyNext\n const exposedPrevious: InfiniteScrollActionSlotProps = {\n loading: loadingPrevious.value,\n fetch: dataManager.fetchPrevious,\n autoMode: headerAutoMode,\n manualMode: !headerAutoMode,\n hasMore: hasPreviousPage.value,\n ...sharedExposed,\n }\n\n renderElements.push(\n h(\n 'div',\n { ref: startElementRef },\n slots.previous\n ? slots.previous(exposedPrevious)\n : loadingPrevious.value\n ? slots.loading?.(exposedPrevious)\n : undefined,\n ),\n )\n }\n\n renderElements.push(\n h(\n props.as,\n { ...attrs, ref: itemsElementRef },\n slots.default?.({\n loading: loadingPrevious.value || loadingNext.value,\n loadingPrevious: loadingPrevious.value,\n loadingNext: loadingNext.value,\n }),\n ),\n )\n\n // Only render next trigger if not using custom element\n if (!props.endElement) {\n const footerAutoMode = autoLoad.value && !props.onlyPrevious\n const exposedNext: InfiniteScrollActionSlotProps = {\n loading: loadingNext.value,\n fetch: dataManager.fetchNext,\n autoMode: footerAutoMode,\n manualMode: !footerAutoMode,\n hasMore: hasNextPage.value,\n ...sharedExposed,\n }\n\n renderElements.push(\n h(\n 'div',\n { ref: endElementRef },\n slots.next ? slots.next(exposedNext) : loadingNext.value ? slots.loading?.(exposedNext) : undefined,\n ),\n )\n }\n\n return h(Fragment, {}, props.reverse ? [...renderElements].reverse() : renderElements)\n }\n },\n})\n\nexport default InfiniteScroll\n", "import {\n ActiveVisit,\n isUrlMethodPair,\n LinkComponentBaseProps,\n LinkPrefetchOption,\n mergeDataIntoQueryString,\n Method,\n PendingVisit,\n resolveUrlMethodPairComponent,\n router,\n shouldIntercept,\n shouldNavigate,\n} from '@inertiajs/core'\nimport { Component, computed, defineComponent, DefineComponent, h, onMounted, onUnmounted, PropType, ref } from 'vue'\nimport { config } from '.'\n\nconst noop = () => {}\n\nexport interface InertiaLinkProps extends LinkComponentBaseProps {\n as?: string | Component\n onClick?: (event: MouseEvent) => void\n}\n\ntype InertiaLink = DefineComponent<InertiaLinkProps>\n\nconst Link: InertiaLink = defineComponent({\n name: 'Link',\n props: {\n as: {\n type: [String, Object] as PropType<InertiaLinkProps['as']>,\n default: 'a',\n },\n data: {\n type: Object as PropType<InertiaLinkProps['data']>,\n default: () => ({}),\n },\n href: {\n type: [String, Object] as PropType<InertiaLinkProps['href']>,\n default: '',\n },\n method: {\n type: String as PropType<InertiaLinkProps['method']>,\n default: 'get',\n },\n replace: {\n type: Boolean as PropType<InertiaLinkProps['replace']>,\n default: false,\n },\n preserveScroll: {\n type: [Boolean, String, Function] as PropType<InertiaLinkProps['preserveScroll']>,\n default: false,\n },\n preserveState: {\n type: [Boolean, String, Function] as PropType<InertiaLinkProps['preserveState']>,\n default: null,\n },\n preserveUrl: {\n type: Boolean as PropType<InertiaLinkProps['preserveUrl']>,\n default: false,\n },\n only: {\n type: Array as PropType<InertiaLinkProps['only']>,\n default: () => [],\n },\n except: {\n type: Array as PropType<InertiaLinkProps['except']>,\n default: () => [],\n },\n headers: {\n type: Object as PropType<InertiaLinkProps['headers']>,\n default: () => ({}),\n },\n queryStringArrayFormat: {\n type: String as PropType<InertiaLinkProps['queryStringArrayFormat']>,\n default: 'brackets',\n },\n async: {\n type: Boolean as PropType<InertiaLinkProps['async']>,\n default: false,\n },\n prefetch: {\n type: [Boolean, String, Array] as PropType<InertiaLinkProps['prefetch']>,\n default: false,\n },\n cacheFor: {\n type: [Number, String, Array] as PropType<InertiaLinkProps['cacheFor']>,\n default: 0,\n },\n onStart: {\n type: Function as PropType<InertiaLinkProps['onStart']>,\n default: noop,\n },\n onProgress: {\n type: Function as PropType<InertiaLinkProps['onProgress']>,\n default: noop,\n },\n onFinish: {\n type: Function as PropType<InertiaLinkProps['onFinish']>,\n default: noop,\n },\n onBefore: {\n type: Function as PropType<InertiaLinkProps['onBefore']>,\n default: noop,\n },\n onCancel: {\n type: Function as PropType<InertiaLinkProps['onCancel']>,\n default: noop,\n },\n onSuccess: {\n type: Function as PropType<InertiaLinkProps['onSuccess']>,\n default: noop,\n },\n onError: {\n type: Function as PropType<InertiaLinkProps['onError']>,\n default: noop,\n },\n onCancelToken: {\n type: Function as PropType<InertiaLinkProps['onCancelToken']>,\n default: noop,\n },\n onPrefetching: {\n type: Function as PropType<InertiaLinkProps['onPrefetching']>,\n default: noop,\n },\n onPrefetched: {\n type: Function as PropType<InertiaLinkProps['onPrefetched']>,\n default: noop,\n },\n cacheTags: {\n type: [String, Array] as PropType<InertiaLinkProps['cacheTags']>,\n default: () => [],\n },\n viewTransition: {\n type: [Boolean, Object] as PropType<InertiaLinkProps['viewTransition']>,\n default: false,\n },\n component: {\n type: String as PropType<InertiaLinkProps['component']>,\n default: null,\n },\n instant: {\n type: Boolean as PropType<InertiaLinkProps['instant']>,\n default: false,\n },\n pageProps: {\n type: [Object, Function] as PropType<InertiaLinkProps['pageProps']>,\n default: null,\n },\n },\n setup(props, { slots, attrs }) {\n const inFlightCount = ref(0)\n const hoverTimeout = ref<ReturnType<typeof setTimeout>>()\n\n const prefetchModes = computed<LinkPrefetchOption[]>(() => {\n if (props.prefetch === true) {\n return ['hover']\n }\n\n if (props.prefetch === false) {\n return []\n }\n\n if (Array.isArray(props.prefetch)) {\n return props.prefetch\n }\n\n return [props.prefetch] as LinkPrefetchOption[]\n })\n\n const cacheForValue = computed(() => {\n if (props.cacheFor !== 0) {\n // If they've provided a value, respect it\n return props.cacheFor\n }\n\n if (prefetchModes.value.length === 1 && prefetchModes.value[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 })\n\n onMounted(() => {\n if (prefetchModes.value.includes('mount')) {\n prefetch()\n }\n })\n\n onUnmounted(() => {\n clearTimeout(hoverTimeout.value)\n })\n\n const method = computed(() =>\n isUrlMethodPair(props.href) ? props.href.method : ((props.method ?? 'get').toLowerCase() as Method),\n )\n const as = computed(() => {\n if (typeof props.as !== 'string' || props.as.toLowerCase() !== 'a') {\n // Custom component or element\n return props.as\n }\n\n return method.value !== 'get' ? 'button' : props.as.toLowerCase()\n })\n const mergeDataArray = computed(() =>\n mergeDataIntoQueryString(\n method.value,\n isUrlMethodPair(props.href) ? props.href.url : (props.href as string),\n props.data || {},\n props.queryStringArrayFormat,\n ),\n )\n const href = computed(() => mergeDataArray.value[0])\n const data = computed(() => mergeDataArray.value[1])\n\n const resolvedComponent = computed(() => {\n if (props.component) {\n return props.component\n }\n\n if (props.instant && isUrlMethodPair(props.href)) {\n return resolveUrlMethodPairComponent(props.href)\n }\n\n return null\n })\n\n const elProps = computed(() => {\n if (as.value === 'button') {\n return { type: 'button' }\n }\n\n if (as.value === 'a' || typeof as.value !== 'string') {\n return { href: href.value }\n }\n\n return {}\n })\n\n const baseParams = computed(() => ({\n data: data.value,\n method: method.value,\n replace: props.replace,\n preserveScroll: props.preserveScroll,\n preserveState: props.preserveState ?? method.value !== 'get',\n preserveUrl: props.preserveUrl,\n only: props.only,\n except: props.except,\n headers: props.headers,\n async: props.async,\n component: resolvedComponent.value,\n pageProps: props.pageProps,\n }))\n\n const visitParams = computed(() => ({\n ...baseParams.value,\n viewTransition: props.viewTransition,\n onCancelToken: props.onCancelToken,\n onBefore: props.onBefore,\n onStart: (visit: PendingVisit) => {\n inFlightCount.value++\n props.onStart?.(visit)\n },\n onProgress: props.onProgress,\n onFinish: (visit: ActiveVisit) => {\n inFlightCount.value--\n props.onFinish?.(visit)\n },\n onCancel: props.onCancel,\n onSuccess: props.onSuccess,\n onError: props.onError,\n }))\n\n const prefetch = () => {\n router.prefetch(\n href.value,\n {\n ...baseParams.value,\n onPrefetching: props.onPrefetching,\n onPrefetched: props.onPrefetched,\n },\n {\n cacheFor: cacheForValue.value,\n cacheTags: props.cacheTags,\n },\n )\n }\n\n const regularEvents = {\n onClick: (event: MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n router.visit(href.value, visitParams.value)\n }\n },\n }\n\n const prefetchHoverEvents = {\n onMouseenter: () => {\n hoverTimeout.value = setTimeout(() => {\n prefetch()\n }, config.get('prefetch.hoverDelay'))\n },\n onMouseleave: () => {\n clearTimeout(hoverTimeout.value)\n },\n onClick: regularEvents.onClick,\n }\n\n const prefetchClickEvents = {\n onMousedown: (event: MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n prefetch()\n }\n },\n onKeydown: (event: KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n prefetch()\n }\n },\n onMouseup: (event: MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n router.visit(href.value, visitParams.value)\n }\n },\n onKeyup: (event: KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n router.visit(href.value, visitParams.value)\n }\n },\n onClick: (event: MouseEvent) => {\n if (shouldIntercept(event)) {\n // Let the mouseup/keyup event handle the visit\n event.preventDefault()\n }\n },\n }\n\n return () => {\n return h(\n as.value as string | Component,\n {\n ...attrs,\n ...elProps.value,\n 'data-loading': inFlightCount.value > 0 ? '' : undefined,\n ...(() => {\n if (prefetchModes.value.includes('hover')) {\n return prefetchHoverEvents\n }\n\n if (prefetchModes.value.includes('click')) {\n return prefetchClickEvents\n }\n\n return regularEvents\n })(),\n },\n slots,\n )\n }\n },\n})\n\nexport default Link\n", "import {\n CancelToken,\n Errors,\n ErrorValue,\n FormDataConvertible,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n hasFiles,\n http,\n HttpCancelledError,\n HttpProgressEvent,\n HttpResponseError,\n mergeDataIntoQueryString,\n Method,\n objectToFormData,\n Progress,\n UrlMethodPair,\n UseFormArguments,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n UseHttpSubmitArguments,\n UseHttpSubmitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep } from 'es-toolkit'\nimport { NamedInputEvent, toSimpleValidationErrors, ValidationConfig, Validator } from 'laravel-precognition'\nimport useFormState from './useFormState'\n\nexport interface UseHttpProps<TForm extends object, TResponse = unknown> {\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n response: TResponse | null\n data(): TForm\n transform(callback: UseFormTransformCallback<TForm>): this\n defaults(): this\n defaults<T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): this\n defaults(fields: Partial<TForm>): this\n reset<K extends FormDataKeys<TForm>>(...fields: K[]): this\n clearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): this\n resetAndClearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): this\n setError<K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): this\n setError(errors: FormDataErrors<TForm>): this\n submit(...args: UseHttpSubmitArguments<TResponse, TForm>): Promise<TResponse>\n get(url: string, options?: UseHttpSubmitOptions<TResponse, TForm>): Promise<TResponse>\n post(url: string, options?: UseHttpSubmitOptions<TResponse, TForm>): Promise<TResponse>\n put(url: string, options?: UseHttpSubmitOptions<TResponse, TForm>): Promise<TResponse>\n patch(url: string, options?: UseHttpSubmitOptions<TResponse, TForm>): Promise<TResponse>\n delete(url: string, options?: UseHttpSubmitOptions<TResponse, TForm>): Promise<TResponse>\n cancel(): void\n dontRemember<K extends FormDataKeys<TForm>>(...fields: K[]): this\n optimistic(callback: (currentData: TForm) => Partial<TForm>): this\n withAllErrors(): this\n withPrecognition(...args: UseFormWithPrecognitionArguments): UseHttpPrecognitiveProps<TForm, TResponse>\n}\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface UseHttpValidationProps<TForm extends object> {\n invalid<K extends FormDataKeys<TForm>>(field: K): boolean\n setValidationTimeout(duration: number): this\n touch<K extends FormDataKeys<TForm>>(field: K | NamedInputEvent | Array<K>, ...fields: K[]): this\n touched<K extends FormDataKeys<TForm>>(field?: K): boolean\n valid<K extends FormDataKeys<TForm>>(field: K): boolean\n validate<K extends FormDataKeys<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ): this\n validateFiles(): this\n validating: boolean\n validator: () => Validator\n withAllErrors(): this\n withoutFileValidation(): this\n setErrors(errors: FormDataErrors<TForm> | Record<string, string | string[]>): this\n forgetError<K extends FormDataKeys<TForm> | NamedInputEvent>(field: K): this\n}\n\ninterface InternalPrecognitionState {\n __touched: string[]\n __valid: string[]\n}\n\nexport type UseHttp<TForm extends object, TResponse = unknown> = TForm & UseHttpProps<TForm, TResponse>\nexport type UseHttpPrecognitiveProps<TForm extends object, TResponse = unknown> = UseHttp<TForm, TResponse> &\n UseHttpValidationProps<TForm> &\n InternalPrecognitionState\n\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n method: Method | (() => Method),\n url: string | (() => string),\n data: TForm | (() => TForm),\n): UseHttpPrecognitiveProps<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n urlMethodPair: UrlMethodPair | (() => UrlMethodPair),\n data: TForm | (() => TForm),\n): UseHttpPrecognitiveProps<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n rememberKey: string,\n data: TForm | (() => TForm),\n): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n data: TForm | (() => TForm),\n): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n ...args: UseFormArguments<TForm>\n): UseHttp<TForm, TResponse> | UseHttpPrecognitiveProps<TForm, TResponse> {\n const { rememberKey, data, precognitionEndpoint } = UseFormUtils.parseUseFormArguments<TForm>(...args)\n\n let abortController: AbortController | null = null\n let pendingOptimisticCallback: ((currentData: TForm) => Partial<TForm>) | null = null\n\n const {\n form: baseForm,\n setDefaults,\n getTransform,\n getPrecognitionEndpoint,\n markAsSuccessful,\n wasDefaultsCalledInOnSuccess,\n resetDefaultsCalledInOnSuccess,\n setRememberExcludeKeys,\n resetBeforeSubmit,\n finishProcessing,\n withAllErrors,\n } = useFormState({\n data,\n rememberKey,\n precognitionEndpoint,\n })\n\n // Cast needed: baseForm has all form state/methods, we're adding HTTP methods below via Object.assign\n const form = baseForm as unknown as UseHttp<TForm, TResponse>\n\n // Add response property\n ;(form as any).response = null as TResponse | null\n\n const submit = async (\n method: Method,\n url: string,\n options: UseHttpSubmitOptions<TResponse, TForm>,\n ): Promise<TResponse> => {\n const onBefore = options.onBefore?.()\n\n if (onBefore === false) {\n return Promise.reject(new Error('Request cancelled by onBefore'))\n }\n\n resetDefaultsCalledInOnSuccess()\n resetBeforeSubmit()\n\n abortController = new AbortController()\n\n const cancelToken: CancelToken = {\n cancel: () => abortController?.abort(),\n }\n\n options.onCancelToken?.(cancelToken)\n\n options.optimistic = options.optimistic ?? pendingOptimisticCallback ?? undefined\n pendingOptimisticCallback = null\n\n let snapshot: TForm | undefined\n\n if (options.optimistic) {\n snapshot = cloneDeep(form.data())\n const optimisticData = options.optimistic(cloneDeep(snapshot))\n\n if (optimisticData) {\n Object.keys(optimisticData).forEach((key) => {\n ;(form as any)[key] = (optimisticData as any)[key]\n })\n }\n }\n\n form.processing = true\n options.onStart?.()\n\n const transform = getTransform()\n const transformedData = transform(form.data())\n const useFormData = hasFiles(transformedData as Record<string, FormDataConvertible>)\n\n let requestUrl = url\n let requestData: FormData | string | undefined\n let contentType: string | undefined\n\n if (method === 'get') {\n const [urlWithParams] = mergeDataIntoQueryString(\n method,\n url,\n transformedData as Record<string, FormDataConvertible>,\n )\n requestUrl = urlWithParams\n } else {\n if (useFormData) {\n requestData = objectToFormData(transformedData as Record<string, FormDataConvertible>)\n } else {\n requestData = JSON.stringify(transformedData)\n contentType = 'application/json'\n }\n }\n\n try {\n const response = await http.getClient().request({\n method,\n url: requestUrl,\n data: requestData,\n headers: {\n Accept: 'application/json',\n ...(contentType ? { 'Content-Type': contentType } : {}),\n ...options.headers,\n },\n signal: abortController.signal,\n onUploadProgress: (event: HttpProgressEvent) => {\n form.progress = event\n options.onProgress?.(event)\n },\n })\n\n const responseData = (response.data ? JSON.parse(response.data) : null) as TResponse\n\n if (response.status >= 200 && response.status < 300) {\n markAsSuccessful()\n ;(form as any).response = responseData\n\n options.onSuccess?.(responseData, response)\n\n if (!wasDefaultsCalledInOnSuccess()) {\n setDefaults(cloneDeep(form.data()))\n }\n\n form.isDirty = false\n\n return responseData\n }\n\n throw new HttpResponseError(`Request failed with status ${response.status}`, response, url)\n } catch (error: unknown) {\n if (snapshot) {\n Object.keys(snapshot).forEach((key) => {\n ;(form as any)[key] = (snapshot as any)[key]\n })\n }\n\n if (error instanceof HttpResponseError) {\n if (error.response.status === 422) {\n const responseData = JSON.parse(error.response.data)\n const validationErrors = responseData.errors || {}\n const processedErrors = (\n withAllErrors.enabled() ? validationErrors : toSimpleValidationErrors(validationErrors)\n ) as FormDataErrors<TForm>\n\n form.clearErrors().setError(processedErrors)\n options.onError?.(processedErrors as Errors)\n } else {\n options.onHttpException?.(error.response)\n }\n\n throw error\n }\n\n if (error instanceof HttpCancelledError || (error instanceof Error && error.name === 'AbortError')) {\n options.onCancel?.()\n throw new HttpCancelledError('Request was cancelled', url)\n }\n\n options.onNetworkError?.(error instanceof Error ? error : new Error('Unknown error'))\n\n throw error\n } finally {\n finishProcessing()\n abortController = null\n options.onFinish?.()\n }\n }\n\n const createSubmitMethod =\n (method: Method) =>\n async (url: string, options: UseHttpSubmitOptions<TResponse, TForm> = {}): Promise<TResponse> => {\n return submit(method, url, options)\n }\n\n Object.assign(form, {\n submit(...args: UseHttpSubmitArguments<TResponse, TForm>) {\n const parsed = UseFormUtils.parseSubmitArguments(args as any, getPrecognitionEndpoint())\n\n return submit(parsed.method, parsed.url, parsed.options as UseHttpSubmitOptions<TResponse, TForm>)\n },\n\n get: createSubmitMethod('get'),\n post: createSubmitMethod('post'),\n put: createSubmitMethod('put'),\n patch: createSubmitMethod('patch'),\n delete: createSubmitMethod('delete'),\n\n cancel() {\n if (abortController) {\n abortController.abort()\n }\n },\n\n dontRemember(...keys: FormDataKeys<TForm>[]) {\n setRememberExcludeKeys(keys)\n return form\n },\n\n optimistic(callback: (currentData: TForm) => Partial<TForm>) {\n pendingOptimisticCallback = callback\n return form\n },\n\n withAllErrors() {\n withAllErrors.enable()\n return form\n },\n })\n\n const originalWithPrecognition = form.withPrecognition\n form.withPrecognition = (...args: UseFormWithPrecognitionArguments): UseHttpPrecognitiveProps<TForm, TResponse> => {\n originalWithPrecognition.call(form, ...args)\n\n return form as UseHttpPrecognitiveProps<TForm, TResponse>\n }\n\n return getPrecognitionEndpoint() ? (form as UseHttpPrecognitiveProps<TForm, TResponse>) : form\n}\n", "import { PollOptions, ReloadOptions, router } from '@inertiajs/core'\nimport { onMounted, onUnmounted } from 'vue'\n\nexport default function usePoll(\n interval: number,\n requestOptions: ReloadOptions = {},\n options: PollOptions = {\n keepAlive: false,\n autoStart: true,\n },\n): {\n stop: VoidFunction\n start: VoidFunction\n} {\n const { stop, start } = router.poll(interval, requestOptions, {\n ...options,\n autoStart: false,\n })\n\n onMounted(() => {\n if (options.autoStart ?? true) {\n start()\n }\n })\n\n onUnmounted(() => {\n stop()\n })\n\n return {\n stop,\n start,\n }\n}\n", "import { router, VisitOptions } from '@inertiajs/core'\nimport { onMounted, onUnmounted, ref, Ref } from 'vue'\n\nexport default function usePrefetch(options: VisitOptions = {}): {\n lastUpdatedAt: Ref<number | null>\n isPrefetching: Ref<boolean>\n isPrefetched: Ref<boolean>\n flush: () => void\n} {\n const isPrefetching = ref(false)\n const lastUpdatedAt = ref<number | null>(null)\n const isPrefetched = ref(false)\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 lastUpdatedAt.value = cached?.staleTimestamp || null\n\n isPrefetching.value = inFlight !== null\n isPrefetched.value = cached !== null\n\n let onPrefetchedListener: () => void\n let onPrefetchingListener: () => void\n\n onMounted(() => {\n onPrefetchingListener = router.on('prefetching', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n isPrefetching.value = true\n }\n })\n\n onPrefetchedListener = router.on('prefetched', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n isPrefetching.value = false\n isPrefetched.value = true\n }\n })\n })\n\n onUnmounted(() => {\n onPrefetchedListener()\n onPrefetchingListener()\n })\n\n return {\n lastUpdatedAt,\n isPrefetching,\n isPrefetched,\n flush: () => router.flush(window.location.pathname, options),\n }\n}\n", "import { router } from '@inertiajs/core'\nimport { cloneDeep } from 'es-toolkit'\nimport { isReactive, reactive, ref, Ref, watch } from 'vue'\n\nexport default function useRemember<T extends object>(\n data: T & { __rememberable?: boolean; __remember?: Function; __restore?: Function },\n key?: string,\n): Ref<T> | T {\n if (typeof data === 'object' && data !== null && data.__rememberable === false) {\n return data\n }\n\n const restored = router.restore(key)\n const type = isReactive(data) ? reactive : ref\n const hasCallbacks = typeof data.__remember === 'function' && typeof data.__restore === 'function'\n const remembered = type(\n restored === undefined ? data : hasCallbacks ? data.__restore!(cloneDeep(restored)) : cloneDeep(restored),\n )\n\n watch(\n remembered,\n (newValue) => {\n router.remember(cloneDeep(hasCallbacks ? data.__remember!() : newValue), key)\n },\n { immediate: true, deep: true },\n )\n\n return remembered\n}\n", "import { ReloadOptions, router } from '@inertiajs/core'\nimport { get } from 'es-toolkit/compat'\nimport { computed, defineComponent, h, nextTick, onUnmounted, PropType, ref, SlotsType, watch } from 'vue'\nimport { usePage } from './app'\n\nexport default defineComponent({\n name: 'WhenVisible',\n slots: Object as SlotsType<{\n default: { fetching: boolean }\n fallback: {}\n }>,\n props: {\n data: {\n type: [String, Array<String>],\n },\n params: {\n type: Object as PropType<ReloadOptions>,\n },\n buffer: {\n type: Number,\n default: 0,\n },\n as: {\n type: String,\n default: 'div',\n },\n always: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { slots }) {\n const loaded = ref(false)\n const fetching = ref(false)\n const observer = ref<IntersectionObserver | null>(null)\n const elementRef = ref<HTMLElement | null>(null)\n const page = usePage()\n\n const keys = computed(() => {\n return props.data ? ((Array.isArray(props.data) ? props.data : [props.data]) as string[]) : []\n })\n\n function getReloadParams(): Partial<ReloadOptions> {\n const reloadParams: Partial<ReloadOptions> = { preserveErrors: true, ...props.params }\n\n if (props.data) {\n reloadParams.only = (Array.isArray(props.data) ? props.data : [props.data]) as string[]\n }\n\n return reloadParams\n }\n\n function registerObserver() {\n if (typeof window === 'undefined') {\n return\n }\n\n observer.value?.disconnect()\n\n observer.value = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (fetching.value) {\n return\n }\n\n if (!props.always && loaded.value) {\n return\n }\n\n fetching.value = true\n\n const reloadParams = getReloadParams()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.value = true\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n loaded.value = true\n fetching.value = false\n reloadParams.onFinish?.(e)\n\n if (!props.always) {\n observer.value?.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${props.buffer}px`,\n },\n )\n\n if (elementRef.value) {\n observer.value.observe(elementRef.value)\n }\n }\n\n watch(\n () => keys.value.map((key) => get(page.props, key)),\n () => {\n const exists = keys.value.length > 0 && keys.value.every((key) => get(page.props, key) !== undefined)\n loaded.value = exists\n\n if (exists && !props.always) {\n return\n }\n\n if (!observer.value || !exists) {\n nextTick(registerObserver)\n }\n },\n { immediate: true },\n )\n\n onUnmounted(() => {\n observer.value?.disconnect()\n })\n\n return () => {\n const els = []\n\n if (props.always || !loaded.value) {\n els.push(h(props.as, { ref: elementRef }))\n }\n\n if (!loaded.value) {\n els.push(slots.fallback ? slots.fallback({}) : null)\n } else if (slots.default) {\n els.push(slots.default({ fetching: fetching.value }))\n }\n\n return els\n }\n },\n})\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["http", "router", "router", "reactive", "ref", "key", "router", "UseFormUtils", "cloneDeep", "router", "cloneDeep", "router", "cloneDeep", "config", "key", "restored", "key", "UseFormUtils", "cloneDeep", "args", "page", "router", "ref", "router", "layout", "reactive", "router", "h", "progress", "page", "http", "layout", "head", "vueApp", "h", "router", "router", "get", "computed", "defineComponent", "ref", "defineComponent", "ref", "page", "computed", "router", "key", "get", "config", "UseFormUtils", "isEqual", "computed", "defineComponent", "h", "onMounted", "ref", "watch", "defineComponent", "config", "ref", "computed", "isEqual", "onMounted", "watch", "UseFormUtils", "h", "defineComponent", "onBeforeUnmount", "defineComponent", "onBeforeUnmount", "computed", "defineComponent", "h", "onMounted", "onUnmounted", "ref", "watch", "defineComponent", "ref", "computed", "onMounted", "onUnmounted", "watch", "h", "isUrlMethodPair", "mergeDataIntoQueryString", "resolveUrlMethodPairComponent", "router", "computed", "defineComponent", "h", "onMounted", "onUnmounted", "ref", "noop", "defineComponent", "ref", "computed", "onMounted", "onUnmounted", "isUrlMethodPair", "mergeDataIntoQueryString", "resolveUrlMethodPairComponent", "router", "h", "mergeDataIntoQueryString", "UseFormUtils", "cloneDeep", "toSimpleValidationErrors", "UseFormUtils", "cloneDeep", "key", "mergeDataIntoQueryString", "toSimpleValidationErrors", "args", "router", "onMounted", "onUnmounted", "router", "onMounted", "onUnmounted", "ref", "router", "cloneDeep", "reactive", "ref", "watch", "key", "router", "get", "computed", "defineComponent", "h", "onUnmounted", "ref", "watch", "defineComponent", "ref", "page", "computed", "router", "watch", "key", "get", "onUnmounted", "h"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inertiajs/vue3",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "The Vue 3 adapter for Inertia.js",
|
|
6
6
|
"contributors": [
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"axios": "^1.
|
|
44
|
+
"axios": "^1.15.2",
|
|
45
45
|
"es-check": "^9.6.1",
|
|
46
46
|
"esbuild": "^0.27.3",
|
|
47
47
|
"esbuild-node-externals": "^1.20.1",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"es-toolkit": "^1.33.0",
|
|
56
56
|
"laravel-precognition": "^2.0.0",
|
|
57
|
-
"@inertiajs/core": "3.0
|
|
57
|
+
"@inertiajs/core": "3.1.0"
|
|
58
58
|
},
|
|
59
59
|
"scripts": {
|
|
60
60
|
"build": "pnpm clean && ./build.js && tsc",
|
package/types/deferred.d.ts
CHANGED
|
@@ -42,5 +42,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
42
42
|
reloading: boolean;
|
|
43
43
|
};
|
|
44
44
|
fallback: {};
|
|
45
|
+
rescue: {
|
|
46
|
+
reloading: boolean;
|
|
47
|
+
};
|
|
45
48
|
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
46
49
|
export default _default;
|
package/types/form.d.ts
CHANGED
|
@@ -255,7 +255,7 @@ declare const Form: import("vue").DefineComponent<import("vue").ExtractPropTypes
|
|
|
255
255
|
resetOnError: boolean | string[] | undefined;
|
|
256
256
|
resetOnSuccess: boolean | string[] | undefined;
|
|
257
257
|
setDefaultsOnSuccess: boolean | undefined;
|
|
258
|
-
onSubmitComplete: ((props: import("@inertiajs/core").FormComponentOnSubmitCompleteArguments) => void) | undefined;
|
|
258
|
+
onSubmitComplete: ((props: import("@inertiajs/core").FormComponentOnSubmitCompleteArguments<Record<string, FormDataConvertible> & object>) => void) | undefined;
|
|
259
259
|
validateFiles: boolean | undefined;
|
|
260
260
|
validationTimeout: number | undefined;
|
|
261
261
|
instant: boolean | undefined;
|
|
@@ -266,9 +266,12 @@ declare const Form: import("vue").DefineComponent<import("vue").ExtractPropTypes
|
|
|
266
266
|
export declare function useFormContext<TForm extends object = Record<string, any>>(): FormComponentRef<TForm> | undefined;
|
|
267
267
|
type TypedFormComponent<TForm extends Record<string, any>> = Omit<typeof Form, 'new'> & {
|
|
268
268
|
new (...args: ConstructorParameters<typeof Form>): Omit<InstanceType<typeof Form>, '$props' | '$slots'> & {
|
|
269
|
-
$props: Omit<InstanceType<typeof Form>['$props'], 'optimistic' | 'transform'> & {
|
|
269
|
+
$props: Omit<InstanceType<typeof Form>['$props'], 'optimistic' | 'transform' | 'resetOnSuccess' | 'resetOnError' | 'onSubmitComplete'> & {
|
|
270
270
|
optimistic?: FormComponentProps<TForm>['optimistic'];
|
|
271
271
|
transform?: FormComponentProps<TForm>['transform'];
|
|
272
|
+
resetOnSuccess?: FormComponentProps<TForm>['resetOnSuccess'];
|
|
273
|
+
resetOnError?: FormComponentProps<TForm>['resetOnError'];
|
|
274
|
+
onSubmitComplete?: FormComponentProps<TForm>['onSubmitComplete'];
|
|
272
275
|
};
|
|
273
276
|
$slots: {
|
|
274
277
|
default: (props: FormComponentSlotProps<TForm>) => any;
|