@inertiajs/vue3 3.0.3 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +53 -48
- package/dist/index.js.map +3 -3
- package/package.json +3 -3
- package/types/deferred.d.ts +4 -1
package/dist/index.js
CHANGED
|
@@ -655,6 +655,7 @@ function usePage() {
|
|
|
655
655
|
version: computed(() => page.value?.version),
|
|
656
656
|
clearHistory: computed(() => page.value?.clearHistory),
|
|
657
657
|
deferredProps: computed(() => page.value?.deferredProps),
|
|
658
|
+
rescuedProps: computed(() => page.value?.rescuedProps),
|
|
658
659
|
mergeProps: computed(() => page.value?.mergeProps),
|
|
659
660
|
prependProps: computed(() => page.value?.prependProps),
|
|
660
661
|
deepMergeProps: computed(() => page.value?.deepMergeProps),
|
|
@@ -686,11 +687,15 @@ async function createInertiaApp({
|
|
|
686
687
|
page: page2,
|
|
687
688
|
render,
|
|
688
689
|
defaults = {},
|
|
690
|
+
nonce,
|
|
689
691
|
http: http3,
|
|
690
692
|
layout: layout2,
|
|
691
693
|
withApp
|
|
692
694
|
} = {}) {
|
|
693
695
|
config.replace(defaults);
|
|
696
|
+
if (nonce) {
|
|
697
|
+
config.set("nonce", nonce);
|
|
698
|
+
}
|
|
694
699
|
if (http3) {
|
|
695
700
|
httpModule.setClient(http3);
|
|
696
701
|
}
|
|
@@ -787,18 +792,9 @@ async function createInertiaApp({
|
|
|
787
792
|
}
|
|
788
793
|
|
|
789
794
|
// src/deferred.ts
|
|
790
|
-
import { isSameUrlWithoutQueryOrHash, router as router6 } from "@inertiajs/core";
|
|
795
|
+
import { isSameUrlWithoutQueryOrHash, partialReloadRequestsSomeProps, router as router6 } from "@inertiajs/core";
|
|
791
796
|
import { get as get2 } from "es-toolkit/compat";
|
|
792
|
-
import { defineComponent as defineComponent2, onMounted, onUnmounted, ref as ref3 } from "vue";
|
|
793
|
-
var keysAreBeingReloaded = (only, except, keys) => {
|
|
794
|
-
if (only.length === 0 && except.length === 0) {
|
|
795
|
-
return true;
|
|
796
|
-
}
|
|
797
|
-
if (only.length > 0) {
|
|
798
|
-
return keys.some((key2) => only.includes(key2));
|
|
799
|
-
}
|
|
800
|
-
return keys.some((key2) => !except.includes(key2));
|
|
801
|
-
};
|
|
797
|
+
import { computed as computed2, defineComponent as defineComponent2, Fragment, h as h3, onMounted, onUnmounted, ref as ref3 } from "vue";
|
|
802
798
|
var deferred_default = defineComponent2({
|
|
803
799
|
name: "Deferred",
|
|
804
800
|
props: {
|
|
@@ -812,13 +808,14 @@ var deferred_default = defineComponent2({
|
|
|
812
808
|
const reloading = ref3(false);
|
|
813
809
|
const activeReloads = /* @__PURE__ */ new Set();
|
|
814
810
|
const page2 = usePage();
|
|
811
|
+
const keys = computed2(() => Array.isArray(props.data) ? props.data : [props.data]);
|
|
812
|
+
const rescuedKeys = computed2(() => new Set(page2.rescuedProps));
|
|
815
813
|
let removeStartListener = null;
|
|
816
814
|
let removeFinishListener = null;
|
|
817
815
|
onMounted(() => {
|
|
818
|
-
const keys = Array.isArray(props.data) ? props.data : [props.data];
|
|
819
816
|
removeStartListener = router6.on("start", (e) => {
|
|
820
817
|
const visit = e.detail.visit;
|
|
821
|
-
if (visit.preserveState === true && isSameUrlWithoutQueryOrHash(visit.url, window.location) &&
|
|
818
|
+
if (visit.preserveState === true && isSameUrlWithoutQueryOrHash(visit.url, window.location) && partialReloadRequestsSomeProps(visit, keys.value)) {
|
|
822
819
|
activeReloads.add(visit);
|
|
823
820
|
reloading.value = true;
|
|
824
821
|
}
|
|
@@ -837,11 +834,19 @@ var deferred_default = defineComponent2({
|
|
|
837
834
|
activeReloads.clear();
|
|
838
835
|
});
|
|
839
836
|
return () => {
|
|
840
|
-
const keys = Array.isArray(props.data) ? props.data : [props.data];
|
|
841
837
|
if (!slots.fallback) {
|
|
842
838
|
throw new Error("`<Deferred>` requires a `<template #fallback>` slot");
|
|
843
839
|
}
|
|
844
|
-
|
|
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
|
+
const slotProps = { reloading: reloading.value };
|
|
843
|
+
if (propsAreDefined && !hasRescuedProps) {
|
|
844
|
+
return h3(Fragment, { key: "default" }, slots.default?.(slotProps) ?? []);
|
|
845
|
+
}
|
|
846
|
+
if (hasRescuedProps && slots.rescue) {
|
|
847
|
+
return h3(Fragment, { key: "rescue" }, slots.rescue(slotProps));
|
|
848
|
+
}
|
|
849
|
+
return h3(Fragment, { key: "fallback" }, slots.fallback({}));
|
|
845
850
|
};
|
|
846
851
|
}
|
|
847
852
|
});
|
|
@@ -859,9 +864,9 @@ import {
|
|
|
859
864
|
} from "@inertiajs/core";
|
|
860
865
|
import { isEqual as isEqual2 } from "es-toolkit";
|
|
861
866
|
import {
|
|
862
|
-
computed as
|
|
867
|
+
computed as computed3,
|
|
863
868
|
defineComponent as defineComponent3,
|
|
864
|
-
h as
|
|
869
|
+
h as h4,
|
|
865
870
|
inject,
|
|
866
871
|
onBeforeUnmount,
|
|
867
872
|
onMounted as onMounted2,
|
|
@@ -1004,10 +1009,10 @@ var Form = defineComponent3({
|
|
|
1004
1009
|
form.withAllErrors();
|
|
1005
1010
|
}
|
|
1006
1011
|
const formElement = ref4();
|
|
1007
|
-
const method =
|
|
1012
|
+
const method = computed3(
|
|
1008
1013
|
() => isUrlMethodPair(props.action) ? props.action.method : props.method.toLowerCase()
|
|
1009
1014
|
);
|
|
1010
|
-
const resolvedComponent =
|
|
1015
|
+
const resolvedComponent = computed3(() => {
|
|
1011
1016
|
if (props.component) {
|
|
1012
1017
|
return props.component;
|
|
1013
1018
|
}
|
|
@@ -1156,7 +1161,7 @@ var Form = defineComponent3({
|
|
|
1156
1161
|
expose(exposed);
|
|
1157
1162
|
provide(FormContextKey, exposed);
|
|
1158
1163
|
return () => {
|
|
1159
|
-
return
|
|
1164
|
+
return h4(
|
|
1160
1165
|
"form",
|
|
1161
1166
|
{
|
|
1162
1167
|
...attrs,
|
|
@@ -1265,7 +1270,7 @@ function renderTag(node) {
|
|
|
1265
1270
|
}
|
|
1266
1271
|
function addTitleElement(elements, title) {
|
|
1267
1272
|
if (title && !elements.find((tag) => tag.startsWith("<title"))) {
|
|
1268
|
-
elements.push(`<title data-inertia="">${title}</title>`);
|
|
1273
|
+
elements.push(`<title data-inertia="">${escape(title)}</title>`);
|
|
1269
1274
|
}
|
|
1270
1275
|
return elements;
|
|
1271
1276
|
}
|
|
@@ -1313,7 +1318,7 @@ import {
|
|
|
1313
1318
|
getScrollableParent,
|
|
1314
1319
|
useInfiniteScroll
|
|
1315
1320
|
} from "@inertiajs/core";
|
|
1316
|
-
import { computed as
|
|
1321
|
+
import { computed as computed4, defineComponent as defineComponent5, Fragment as Fragment2, h as h5, onMounted as onMounted3, onUnmounted as onUnmounted2, ref as ref5, watch as watch3 } from "vue";
|
|
1317
1322
|
var resolveHTMLElement = (value, fallback) => {
|
|
1318
1323
|
if (!value) {
|
|
1319
1324
|
return fallback;
|
|
@@ -1392,14 +1397,14 @@ var InfiniteScroll = defineComponent5({
|
|
|
1392
1397
|
const itemsElementRef = ref5(null);
|
|
1393
1398
|
const startElementRef = ref5(null);
|
|
1394
1399
|
const endElementRef = ref5(null);
|
|
1395
|
-
const itemsElement =
|
|
1400
|
+
const itemsElement = computed4(
|
|
1396
1401
|
() => resolveHTMLElement(props.itemsElement, itemsElementRef.value)
|
|
1397
1402
|
);
|
|
1398
|
-
const scrollableParent =
|
|
1399
|
-
const startElement =
|
|
1403
|
+
const scrollableParent = computed4(() => getScrollableParent(itemsElement.value));
|
|
1404
|
+
const startElement = computed4(
|
|
1400
1405
|
() => resolveHTMLElement(props.startElement, startElementRef.value)
|
|
1401
1406
|
);
|
|
1402
|
-
const endElement =
|
|
1407
|
+
const endElement = computed4(() => resolveHTMLElement(props.endElement, endElementRef.value));
|
|
1403
1408
|
const loadingPrevious = ref5(false);
|
|
1404
1409
|
const loadingNext = ref5(false);
|
|
1405
1410
|
const requestCount = ref5(0);
|
|
@@ -1449,8 +1454,8 @@ var InfiniteScroll = defineComponent5({
|
|
|
1449
1454
|
hasNextPage.value = !!scrollProp.nextPage;
|
|
1450
1455
|
}
|
|
1451
1456
|
}
|
|
1452
|
-
const autoLoad =
|
|
1453
|
-
const manualMode =
|
|
1457
|
+
const autoLoad = computed4(() => !manualMode.value);
|
|
1458
|
+
const manualMode = computed4(
|
|
1454
1459
|
() => props.manual || props.manualAfter > 0 && requestCount.value >= props.manualAfter
|
|
1455
1460
|
);
|
|
1456
1461
|
const scrollToBottom = () => {
|
|
@@ -1509,7 +1514,7 @@ var InfiniteScroll = defineComponent5({
|
|
|
1509
1514
|
...sharedExposed
|
|
1510
1515
|
};
|
|
1511
1516
|
renderElements.push(
|
|
1512
|
-
|
|
1517
|
+
h5(
|
|
1513
1518
|
"div",
|
|
1514
1519
|
{ ref: startElementRef },
|
|
1515
1520
|
slots.previous ? slots.previous(exposedPrevious) : loadingPrevious.value ? slots.loading?.(exposedPrevious) : void 0
|
|
@@ -1517,7 +1522,7 @@ var InfiniteScroll = defineComponent5({
|
|
|
1517
1522
|
);
|
|
1518
1523
|
}
|
|
1519
1524
|
renderElements.push(
|
|
1520
|
-
|
|
1525
|
+
h5(
|
|
1521
1526
|
props.as,
|
|
1522
1527
|
{ ...attrs, ref: itemsElementRef },
|
|
1523
1528
|
slots.default?.({
|
|
@@ -1538,14 +1543,14 @@ var InfiniteScroll = defineComponent5({
|
|
|
1538
1543
|
...sharedExposed
|
|
1539
1544
|
};
|
|
1540
1545
|
renderElements.push(
|
|
1541
|
-
|
|
1546
|
+
h5(
|
|
1542
1547
|
"div",
|
|
1543
1548
|
{ ref: endElementRef },
|
|
1544
1549
|
slots.next ? slots.next(exposedNext) : loadingNext.value ? slots.loading?.(exposedNext) : void 0
|
|
1545
1550
|
)
|
|
1546
1551
|
);
|
|
1547
1552
|
}
|
|
1548
|
-
return
|
|
1553
|
+
return h5(Fragment2, {}, props.reverse ? [...renderElements].reverse() : renderElements);
|
|
1549
1554
|
};
|
|
1550
1555
|
}
|
|
1551
1556
|
});
|
|
@@ -1560,7 +1565,7 @@ import {
|
|
|
1560
1565
|
shouldIntercept,
|
|
1561
1566
|
shouldNavigate
|
|
1562
1567
|
} from "@inertiajs/core";
|
|
1563
|
-
import { computed as
|
|
1568
|
+
import { computed as computed5, defineComponent as defineComponent6, h as h6, onMounted as onMounted4, onUnmounted as onUnmounted3, ref as ref6 } from "vue";
|
|
1564
1569
|
var noop2 = () => {
|
|
1565
1570
|
};
|
|
1566
1571
|
var Link = defineComponent6({
|
|
@@ -1690,7 +1695,7 @@ var Link = defineComponent6({
|
|
|
1690
1695
|
setup(props, { slots, attrs }) {
|
|
1691
1696
|
const inFlightCount = ref6(0);
|
|
1692
1697
|
const hoverTimeout = ref6();
|
|
1693
|
-
const prefetchModes =
|
|
1698
|
+
const prefetchModes = computed5(() => {
|
|
1694
1699
|
if (props.prefetch === true) {
|
|
1695
1700
|
return ["hover"];
|
|
1696
1701
|
}
|
|
@@ -1702,7 +1707,7 @@ var Link = defineComponent6({
|
|
|
1702
1707
|
}
|
|
1703
1708
|
return [props.prefetch];
|
|
1704
1709
|
});
|
|
1705
|
-
const cacheForValue =
|
|
1710
|
+
const cacheForValue = computed5(() => {
|
|
1706
1711
|
if (props.cacheFor !== 0) {
|
|
1707
1712
|
return props.cacheFor;
|
|
1708
1713
|
}
|
|
@@ -1719,16 +1724,16 @@ var Link = defineComponent6({
|
|
|
1719
1724
|
onUnmounted3(() => {
|
|
1720
1725
|
clearTimeout(hoverTimeout.value);
|
|
1721
1726
|
});
|
|
1722
|
-
const method =
|
|
1727
|
+
const method = computed5(
|
|
1723
1728
|
() => isUrlMethodPair2(props.href) ? props.href.method : (props.method ?? "get").toLowerCase()
|
|
1724
1729
|
);
|
|
1725
|
-
const as =
|
|
1730
|
+
const as = computed5(() => {
|
|
1726
1731
|
if (typeof props.as !== "string" || props.as.toLowerCase() !== "a") {
|
|
1727
1732
|
return props.as;
|
|
1728
1733
|
}
|
|
1729
1734
|
return method.value !== "get" ? "button" : props.as.toLowerCase();
|
|
1730
1735
|
});
|
|
1731
|
-
const mergeDataArray =
|
|
1736
|
+
const mergeDataArray = computed5(
|
|
1732
1737
|
() => mergeDataIntoQueryString2(
|
|
1733
1738
|
method.value,
|
|
1734
1739
|
isUrlMethodPair2(props.href) ? props.href.url : props.href,
|
|
@@ -1736,9 +1741,9 @@ var Link = defineComponent6({
|
|
|
1736
1741
|
props.queryStringArrayFormat
|
|
1737
1742
|
)
|
|
1738
1743
|
);
|
|
1739
|
-
const href =
|
|
1740
|
-
const data =
|
|
1741
|
-
const resolvedComponent =
|
|
1744
|
+
const href = computed5(() => mergeDataArray.value[0]);
|
|
1745
|
+
const data = computed5(() => mergeDataArray.value[1]);
|
|
1746
|
+
const resolvedComponent = computed5(() => {
|
|
1742
1747
|
if (props.component) {
|
|
1743
1748
|
return props.component;
|
|
1744
1749
|
}
|
|
@@ -1747,7 +1752,7 @@ var Link = defineComponent6({
|
|
|
1747
1752
|
}
|
|
1748
1753
|
return null;
|
|
1749
1754
|
});
|
|
1750
|
-
const elProps =
|
|
1755
|
+
const elProps = computed5(() => {
|
|
1751
1756
|
if (as.value === "button") {
|
|
1752
1757
|
return { type: "button" };
|
|
1753
1758
|
}
|
|
@@ -1756,7 +1761,7 @@ var Link = defineComponent6({
|
|
|
1756
1761
|
}
|
|
1757
1762
|
return {};
|
|
1758
1763
|
});
|
|
1759
|
-
const baseParams =
|
|
1764
|
+
const baseParams = computed5(() => ({
|
|
1760
1765
|
data: data.value,
|
|
1761
1766
|
method: method.value,
|
|
1762
1767
|
replace: props.replace,
|
|
@@ -1770,7 +1775,7 @@ var Link = defineComponent6({
|
|
|
1770
1775
|
component: resolvedComponent.value,
|
|
1771
1776
|
pageProps: props.pageProps
|
|
1772
1777
|
}));
|
|
1773
|
-
const visitParams =
|
|
1778
|
+
const visitParams = computed5(() => ({
|
|
1774
1779
|
...baseParams.value,
|
|
1775
1780
|
viewTransition: props.viewTransition,
|
|
1776
1781
|
onCancelToken: props.onCancelToken,
|
|
@@ -1853,7 +1858,7 @@ var Link = defineComponent6({
|
|
|
1853
1858
|
}
|
|
1854
1859
|
};
|
|
1855
1860
|
return () => {
|
|
1856
|
-
return
|
|
1861
|
+
return h6(
|
|
1857
1862
|
as.value,
|
|
1858
1863
|
{
|
|
1859
1864
|
...attrs,
|
|
@@ -2148,7 +2153,7 @@ function useRemember(data, key2) {
|
|
|
2148
2153
|
// src/whenVisible.ts
|
|
2149
2154
|
import { router as router11 } from "@inertiajs/core";
|
|
2150
2155
|
import { get as get3 } from "es-toolkit/compat";
|
|
2151
|
-
import { computed as
|
|
2156
|
+
import { computed as computed6, defineComponent as defineComponent7, h as h7, nextTick, onUnmounted as onUnmounted6, ref as ref9, watch as watch5 } from "vue";
|
|
2152
2157
|
var whenVisible_default = defineComponent7({
|
|
2153
2158
|
name: "WhenVisible",
|
|
2154
2159
|
slots: Object,
|
|
@@ -2178,7 +2183,7 @@ var whenVisible_default = defineComponent7({
|
|
|
2178
2183
|
const observer = ref9(null);
|
|
2179
2184
|
const elementRef = ref9(null);
|
|
2180
2185
|
const page2 = usePage();
|
|
2181
|
-
const keys =
|
|
2186
|
+
const keys = computed6(() => {
|
|
2182
2187
|
return props.data ? Array.isArray(props.data) ? props.data : [props.data] : [];
|
|
2183
2188
|
});
|
|
2184
2189
|
function getReloadParams() {
|
|
@@ -2250,7 +2255,7 @@ var whenVisible_default = defineComponent7({
|
|
|
2250
2255
|
return () => {
|
|
2251
2256
|
const els = [];
|
|
2252
2257
|
if (props.always || !loaded.value) {
|
|
2253
|
-
els.push(
|
|
2258
|
+
els.push(h7(props.as, { ref: elementRef }));
|
|
2254
2259
|
}
|
|
2255
2260
|
if (!loaded.value) {
|
|
2256
2261
|
els.push(slots.fallback ? slots.fallback({}) : null);
|
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 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 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<\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=\"\">${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", "defineComponent", "
|
|
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, Fragment, h, 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 const slotProps = { reloading: reloading.value }\n\n if (propsAreDefined && !hasRescuedProps) {\n return h(Fragment, { key: 'default' }, slots.default?.(slotProps) ?? [])\n }\n\n if (hasRescuedProps && slots.rescue) {\n return h(Fragment, { key: 'rescue' }, slots.rescue(slotProps))\n }\n\n return h(Fragment, { key: 'fallback' }, 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", "h", "ref", "defineComponent", "ref", "page", "computed", "router", "key", "get", "h", "config", "UseFormUtils", "isEqual", "computed", "defineComponent", "h", "onMounted", "ref", "watch", "defineComponent", "config", "ref", "computed", "isEqual", "onMounted", "watch", "UseFormUtils", "h", "defineComponent", "onBeforeUnmount", "defineComponent", "onBeforeUnmount", "computed", "defineComponent", "Fragment", "h", "onMounted", "onUnmounted", "ref", "watch", "defineComponent", "ref", "computed", "onMounted", "onUnmounted", "watch", "h", "Fragment", "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.
|
|
3
|
+
"version": "3.1.1",
|
|
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.
|
|
57
|
+
"@inertiajs/core": "3.1.1"
|
|
58
58
|
},
|
|
59
59
|
"scripts": {
|
|
60
60
|
"build": "pnpm clean && ./build.js && tsc",
|
package/types/deferred.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
19
19
|
};
|
|
20
20
|
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
21
21
|
[key: string]: any;
|
|
22
|
-
}
|
|
22
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
23
23
|
data: {
|
|
24
24
|
type: (StringConstructor | {
|
|
25
25
|
(arrayLength: number): String[];
|
|
@@ -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;
|