@inertiajs/vue3 3.0.3 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +38 -40
- package/dist/index.js.map +3 -3
- package/package.json +3 -3
- package/types/deferred.d.ts +3 -0
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, 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,12 @@ 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
|
+
return propsAreDefined && !hasRescuedProps ? slots.default?.({ reloading: reloading.value }) : hasRescuedProps && slots.rescue ? slots.rescue({ reloading: reloading.value }) : slots.fallback({});
|
|
845
843
|
};
|
|
846
844
|
}
|
|
847
845
|
});
|
|
@@ -859,7 +857,7 @@ import {
|
|
|
859
857
|
} from "@inertiajs/core";
|
|
860
858
|
import { isEqual as isEqual2 } from "es-toolkit";
|
|
861
859
|
import {
|
|
862
|
-
computed as
|
|
860
|
+
computed as computed3,
|
|
863
861
|
defineComponent as defineComponent3,
|
|
864
862
|
h as h3,
|
|
865
863
|
inject,
|
|
@@ -1004,10 +1002,10 @@ var Form = defineComponent3({
|
|
|
1004
1002
|
form.withAllErrors();
|
|
1005
1003
|
}
|
|
1006
1004
|
const formElement = ref4();
|
|
1007
|
-
const method =
|
|
1005
|
+
const method = computed3(
|
|
1008
1006
|
() => isUrlMethodPair(props.action) ? props.action.method : props.method.toLowerCase()
|
|
1009
1007
|
);
|
|
1010
|
-
const resolvedComponent =
|
|
1008
|
+
const resolvedComponent = computed3(() => {
|
|
1011
1009
|
if (props.component) {
|
|
1012
1010
|
return props.component;
|
|
1013
1011
|
}
|
|
@@ -1265,7 +1263,7 @@ function renderTag(node) {
|
|
|
1265
1263
|
}
|
|
1266
1264
|
function addTitleElement(elements, title) {
|
|
1267
1265
|
if (title && !elements.find((tag) => tag.startsWith("<title"))) {
|
|
1268
|
-
elements.push(`<title data-inertia="">${title}</title>`);
|
|
1266
|
+
elements.push(`<title data-inertia="">${escape(title)}</title>`);
|
|
1269
1267
|
}
|
|
1270
1268
|
return elements;
|
|
1271
1269
|
}
|
|
@@ -1313,7 +1311,7 @@ import {
|
|
|
1313
1311
|
getScrollableParent,
|
|
1314
1312
|
useInfiniteScroll
|
|
1315
1313
|
} from "@inertiajs/core";
|
|
1316
|
-
import { computed as
|
|
1314
|
+
import { computed as computed4, defineComponent as defineComponent5, Fragment, h as h4, onMounted as onMounted3, onUnmounted as onUnmounted2, ref as ref5, watch as watch3 } from "vue";
|
|
1317
1315
|
var resolveHTMLElement = (value, fallback) => {
|
|
1318
1316
|
if (!value) {
|
|
1319
1317
|
return fallback;
|
|
@@ -1392,14 +1390,14 @@ var InfiniteScroll = defineComponent5({
|
|
|
1392
1390
|
const itemsElementRef = ref5(null);
|
|
1393
1391
|
const startElementRef = ref5(null);
|
|
1394
1392
|
const endElementRef = ref5(null);
|
|
1395
|
-
const itemsElement =
|
|
1393
|
+
const itemsElement = computed4(
|
|
1396
1394
|
() => resolveHTMLElement(props.itemsElement, itemsElementRef.value)
|
|
1397
1395
|
);
|
|
1398
|
-
const scrollableParent =
|
|
1399
|
-
const startElement =
|
|
1396
|
+
const scrollableParent = computed4(() => getScrollableParent(itemsElement.value));
|
|
1397
|
+
const startElement = computed4(
|
|
1400
1398
|
() => resolveHTMLElement(props.startElement, startElementRef.value)
|
|
1401
1399
|
);
|
|
1402
|
-
const endElement =
|
|
1400
|
+
const endElement = computed4(() => resolveHTMLElement(props.endElement, endElementRef.value));
|
|
1403
1401
|
const loadingPrevious = ref5(false);
|
|
1404
1402
|
const loadingNext = ref5(false);
|
|
1405
1403
|
const requestCount = ref5(0);
|
|
@@ -1449,8 +1447,8 @@ var InfiniteScroll = defineComponent5({
|
|
|
1449
1447
|
hasNextPage.value = !!scrollProp.nextPage;
|
|
1450
1448
|
}
|
|
1451
1449
|
}
|
|
1452
|
-
const autoLoad =
|
|
1453
|
-
const manualMode =
|
|
1450
|
+
const autoLoad = computed4(() => !manualMode.value);
|
|
1451
|
+
const manualMode = computed4(
|
|
1454
1452
|
() => props.manual || props.manualAfter > 0 && requestCount.value >= props.manualAfter
|
|
1455
1453
|
);
|
|
1456
1454
|
const scrollToBottom = () => {
|
|
@@ -1560,7 +1558,7 @@ import {
|
|
|
1560
1558
|
shouldIntercept,
|
|
1561
1559
|
shouldNavigate
|
|
1562
1560
|
} from "@inertiajs/core";
|
|
1563
|
-
import { computed as
|
|
1561
|
+
import { computed as computed5, defineComponent as defineComponent6, h as h5, onMounted as onMounted4, onUnmounted as onUnmounted3, ref as ref6 } from "vue";
|
|
1564
1562
|
var noop2 = () => {
|
|
1565
1563
|
};
|
|
1566
1564
|
var Link = defineComponent6({
|
|
@@ -1690,7 +1688,7 @@ var Link = defineComponent6({
|
|
|
1690
1688
|
setup(props, { slots, attrs }) {
|
|
1691
1689
|
const inFlightCount = ref6(0);
|
|
1692
1690
|
const hoverTimeout = ref6();
|
|
1693
|
-
const prefetchModes =
|
|
1691
|
+
const prefetchModes = computed5(() => {
|
|
1694
1692
|
if (props.prefetch === true) {
|
|
1695
1693
|
return ["hover"];
|
|
1696
1694
|
}
|
|
@@ -1702,7 +1700,7 @@ var Link = defineComponent6({
|
|
|
1702
1700
|
}
|
|
1703
1701
|
return [props.prefetch];
|
|
1704
1702
|
});
|
|
1705
|
-
const cacheForValue =
|
|
1703
|
+
const cacheForValue = computed5(() => {
|
|
1706
1704
|
if (props.cacheFor !== 0) {
|
|
1707
1705
|
return props.cacheFor;
|
|
1708
1706
|
}
|
|
@@ -1719,16 +1717,16 @@ var Link = defineComponent6({
|
|
|
1719
1717
|
onUnmounted3(() => {
|
|
1720
1718
|
clearTimeout(hoverTimeout.value);
|
|
1721
1719
|
});
|
|
1722
|
-
const method =
|
|
1720
|
+
const method = computed5(
|
|
1723
1721
|
() => isUrlMethodPair2(props.href) ? props.href.method : (props.method ?? "get").toLowerCase()
|
|
1724
1722
|
);
|
|
1725
|
-
const as =
|
|
1723
|
+
const as = computed5(() => {
|
|
1726
1724
|
if (typeof props.as !== "string" || props.as.toLowerCase() !== "a") {
|
|
1727
1725
|
return props.as;
|
|
1728
1726
|
}
|
|
1729
1727
|
return method.value !== "get" ? "button" : props.as.toLowerCase();
|
|
1730
1728
|
});
|
|
1731
|
-
const mergeDataArray =
|
|
1729
|
+
const mergeDataArray = computed5(
|
|
1732
1730
|
() => mergeDataIntoQueryString2(
|
|
1733
1731
|
method.value,
|
|
1734
1732
|
isUrlMethodPair2(props.href) ? props.href.url : props.href,
|
|
@@ -1736,9 +1734,9 @@ var Link = defineComponent6({
|
|
|
1736
1734
|
props.queryStringArrayFormat
|
|
1737
1735
|
)
|
|
1738
1736
|
);
|
|
1739
|
-
const href =
|
|
1740
|
-
const data =
|
|
1741
|
-
const resolvedComponent =
|
|
1737
|
+
const href = computed5(() => mergeDataArray.value[0]);
|
|
1738
|
+
const data = computed5(() => mergeDataArray.value[1]);
|
|
1739
|
+
const resolvedComponent = computed5(() => {
|
|
1742
1740
|
if (props.component) {
|
|
1743
1741
|
return props.component;
|
|
1744
1742
|
}
|
|
@@ -1747,7 +1745,7 @@ var Link = defineComponent6({
|
|
|
1747
1745
|
}
|
|
1748
1746
|
return null;
|
|
1749
1747
|
});
|
|
1750
|
-
const elProps =
|
|
1748
|
+
const elProps = computed5(() => {
|
|
1751
1749
|
if (as.value === "button") {
|
|
1752
1750
|
return { type: "button" };
|
|
1753
1751
|
}
|
|
@@ -1756,7 +1754,7 @@ var Link = defineComponent6({
|
|
|
1756
1754
|
}
|
|
1757
1755
|
return {};
|
|
1758
1756
|
});
|
|
1759
|
-
const baseParams =
|
|
1757
|
+
const baseParams = computed5(() => ({
|
|
1760
1758
|
data: data.value,
|
|
1761
1759
|
method: method.value,
|
|
1762
1760
|
replace: props.replace,
|
|
@@ -1770,7 +1768,7 @@ var Link = defineComponent6({
|
|
|
1770
1768
|
component: resolvedComponent.value,
|
|
1771
1769
|
pageProps: props.pageProps
|
|
1772
1770
|
}));
|
|
1773
|
-
const visitParams =
|
|
1771
|
+
const visitParams = computed5(() => ({
|
|
1774
1772
|
...baseParams.value,
|
|
1775
1773
|
viewTransition: props.viewTransition,
|
|
1776
1774
|
onCancelToken: props.onCancelToken,
|
|
@@ -2148,7 +2146,7 @@ function useRemember(data, key2) {
|
|
|
2148
2146
|
// src/whenVisible.ts
|
|
2149
2147
|
import { router as router11 } from "@inertiajs/core";
|
|
2150
2148
|
import { get as get3 } from "es-toolkit/compat";
|
|
2151
|
-
import { computed as
|
|
2149
|
+
import { computed as computed6, defineComponent as defineComponent7, h as h6, nextTick, onUnmounted as onUnmounted6, ref as ref9, watch as watch5 } from "vue";
|
|
2152
2150
|
var whenVisible_default = defineComponent7({
|
|
2153
2151
|
name: "WhenVisible",
|
|
2154
2152
|
slots: Object,
|
|
@@ -2178,7 +2176,7 @@ var whenVisible_default = defineComponent7({
|
|
|
2178
2176
|
const observer = ref9(null);
|
|
2179
2177
|
const elementRef = ref9(null);
|
|
2180
2178
|
const page2 = usePage();
|
|
2181
|
-
const keys =
|
|
2179
|
+
const keys = computed6(() => {
|
|
2182
2180
|
return props.data ? Array.isArray(props.data) ? props.data : [props.data] : [];
|
|
2183
2181
|
});
|
|
2184
2182
|
function getReloadParams() {
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts", "../src/app.ts", "../src/layoutProps.ts", "../src/remember.ts", "../src/useForm.ts", "../src/useFormState.ts", "../src/createInertiaApp.ts", "../src/deferred.ts", "../src/form.ts", "../src/head.ts", "../src/infiniteScroll.ts", "../src/link.ts", "../src/useHttp.ts", "../src/usePoll.ts", "../src/usePrefetch.ts", "../src/useRemember.ts", "../src/whenVisible.ts"],
|
|
4
|
-
"sourcesContent": ["import { config as coreConfig } from '@inertiajs/core'\nimport type { VueInertiaAppConfig } from './types'\n\nexport { http, progress, router } from '@inertiajs/core'\nexport { default as App, usePage } from './app'\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './deferred'\nexport { createForm, default as Form, useFormContext } from './form'\nexport { default as Head } from './head'\nexport { default as InfiniteScroll } from './infiniteScroll'\nexport { resetLayoutProps, setLayoutProps } from './layoutProps'\nexport { InertiaLinkProps, default as Link } from './link'\nexport { type LayoutCallback, type VueInertiaAppConfig, type VuePageHandlerArgs } from './types'\nexport { InertiaForm, InertiaFormProps, InertiaPrecognitiveForm, default as useForm } from './useForm'\nexport { default as useHttp } from './useHttp'\nexport { default as usePoll } from './usePoll'\nexport { default as usePrefetch } from './usePrefetch'\nexport { default as useRemember } from './useRemember'\nexport { default as WhenVisible } from './whenVisible'\n\nexport const config = coreConfig.extend<VueInertiaAppConfig>({})\n", "import {\n createHeadManager,\n HeadManager,\n HeadManagerOnUpdateCallback,\n HeadManagerTitleCallback,\n isPropsObject,\n 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": ";AAAA,SAAS,UAAU,kBAAkB;AAGrC,SAAS,QAAAA,OAAM,UAAU,UAAAC,gBAAc;;;ACHvC;AAAA,EACE;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,EAGA,UAAAC;AAAA,OAEK;AACP;AAAA,EAEE;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EAGA,YAAAC;AAAA,EACA,OAAAC;AAAA,EACA;AAAA,OACK;;;ACzBP,SAAS,8BAAuE;AAChF,SAAS,WAAW;AAEpB,IAAM,QAAQ,uBAAuB;AAE9B,IAAM,QAAQ,IAAI,MAAM,IAAI,CAAC;AAEpC,MAAM,UAAU,MAAM;AACpB,QAAM,QAAQ,MAAM,IAAI;AAC1B,CAAC;AAMM,SAAS,eAAe,aAA+C,OAAuC;AACnH,MAAI,OAAO,gBAAgB,UAAU;AACnC,UAAM,OAAO,aAAa,KAAM;AAAA,EAClC,OAAO;AACL,UAAM,IAAI,WAAW;AAAA,EACvB;AACF;AAEO,SAAS,mBAAyB;AACvC,QAAM,MAAM;AACZ,QAAM,QAAQ,MAAM,IAAI;AAC1B;;;AC1BA,SAAS,cAAc;AACvB,SAAS,iBAAiB;AAG1B,IAAM,WAA6B;AAAA,EACjC,UAAU;AACR,QAAI,CAAC,KAAK,SAAS,UAAU;AAC3B;AAAA,IACF;AAEA,QAAI,MAAM,QAAQ,KAAK,SAAS,QAAQ,GAAG;AACzC,WAAK,SAAS,WAAW,EAAE,MAAM,KAAK,SAAS,SAAS;AAAA,IAC1D;AAEA,QAAI,OAAO,KAAK,SAAS,aAAa,UAAU;AAC9C,WAAK,SAAS,WAAW,EAAE,MAAM,CAAC,KAAK,SAAS,QAAQ,EAAE;AAAA,IAC5D;AAEA,QAAI,OAAO,KAAK,SAAS,SAAS,SAAS,UAAU;AACnD,WAAK,SAAS,WAAW,EAAE,MAAM,CAAC,KAAK,SAAS,SAAS,IAAI,EAAE;AAAA,IACjE;AAEA,UAAM,cACJ,KAAK,SAAS,SAAS,eAAe,WAClC,KAAK,SAAS,SAAS,IAAI,KAAK,IAAI,IACpC,KAAK,SAAS,SAAS;AAE7B,UAAM,WAAW,OAAO,QAAQ,WAAW;AAE3C,UAAM,eAAe,KAAK,SAAS,SAAS,KAAK,OAAO,CAACC,SAAgB;AACvE,aAAO,EAAE,KAAKA,IAAG,MAAM,QAAQ,OAAO,KAAKA,IAAG,MAAM,YAAY,KAAKA,IAAG,EAAE,mBAAmB;AAAA,IAC/F,CAAC;AAED,UAAM,eAAe,CAACA,SAAgB;AACpC,aACE,KAAKA,IAAG,MAAM,QACd,OAAO,KAAKA,IAAG,MAAM,YACrB,OAAO,KAAKA,IAAG,EAAE,eAAe,cAChC,OAAO,KAAKA,IAAG,EAAE,cAAc;AAAA,IAEnC;AAEA,iBAAa,QAAQ,CAACA,SAAgB;AACpC,UAAI,KAAKA,IAAG,MAAM,UAAa,aAAa,UAAa,SAASA,IAAG,MAAM,QAAW;AACpF,qBAAaA,IAAG,IAAI,KAAKA,IAAG,EAAE,UAAU,SAASA,IAAG,CAAC,IAAK,KAAKA,IAAG,IAAI,SAASA,IAAG;AAAA,MACpF;AAEA,WAAK;AAAA,QACHA;AAAA,QACA,MAAM;AACJ,iBAAO;AAAA,YACL,aAAa;AAAA,cACX,CAAC,MAAMA,UAAS;AAAA,gBACd,GAAG;AAAA,gBACH,CAACA,IAAG,GAAG,UAAU,aAAaA,IAAG,IAAI,KAAKA,IAAG,EAAE,WAAW,IAAI,KAAKA,IAAG,CAAC;AAAA,cACzE;AAAA,cACA,CAAC;AAAA,YACH;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,QACA,EAAE,WAAW,MAAM,MAAM,KAAK;AAAA,MAChC;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEA,IAAO,mBAAQ;;;ACnEf;AAAA,EAWE,UAAAC;AAAA,EAMA,gBAAAC;AAAA,OAGK;AACP,SAAS,aAAAC,kBAAiB;;;ACrB1B;AAAA,EAOE,UAAAC;AAAA,EAGA;AAAA,OAEK;AACP,SAAS,aAAAC,YAAW,eAAe;AACnC,SAAS,KAAK,KAAK,WAAW;AAC9B;AAAA,EACE;AAAA,EAEA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,UAAU,aAAa;AAmFjB,SAAR,aACL,SAC2B;AAC3B,QAAM,EAAE,MAAM,YAAY,YAAY,IAAI;AAC1C,MAAI,EAAE,qBAAqB,IAAI;AAE/B,QAAM,iBAAiB,OAAO,eAAe;AAC7C,QAAM,cAAc,MAAO,iBAAkB,WAA2B,IAAI;AAE5E,QAAM,WAAW,cACZC,QAAO,QAAQ,WAAW,IAC3B;AAEJ,QAAM,cAAc,UAAU,QAAQC,WAAU,YAAY,CAAC;AAC7D,MAAI,WAAWA,WAAU,WAAW;AACpC,MAAI,YAA6C,CAAC,SAAS;AAC3D,MAAI,eAAiC;AACrC,MAAI,gBAAgC;AACpC,QAAM,uBAAuB,MAAM,iBAAiB,OAAO,IAAI,oBAAoB;AACnF,MAAI;AACJ,MAAI,4BAA4B;AAChC,MAAI,sBAA6C,CAAC;AAElD,QAAM,OAAO,SAA2B;AAAA,IACtC,GAAGA,WAAU,QAAQ;AAAA,IACrB,SAAS;AAAA,IACT,QAAQ,CAAC;AAAA,IACT,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,eAAe;AAAA,IACf,oBAAoB;AAAA,IAEpB,oBAAoB,MAA0E;AAC5F,6BAAuB,aAAa,wBAAwB,GAAG,IAAI;AAEnE,YAAM,uBAAuB;AAE7B,YAAM,YAAY;AAAA,QAChB,CAAC,WAAW;AACV,gBAAM,EAAE,QAAQ,IAAI,IAAI,qBAAsB;AAC9C,gBAAM,kBAAkBA,WAAU,UAAU,KAAK,KAAK,CAAC,CAAC;AAExD,iBAAO,OAAO,MAAM,EAAE,KAAK,eAAe;AAAA,QAC5C;AAAA,QACAA,WAAU,QAAQ;AAAA,MACpB;AAEA,qBAAe;AAEf,gBACG,GAAG,qBAAqB,MAAM;AAC7B,6BAAqB,aAAa,UAAU,WAAW;AAAA,MACzD,CAAC,EACA,GAAG,oBAAoB,MAAM;AAC5B,6BAAqB,UAAU,UAAU,MAAM;AAAA,MACjD,CAAC,EACA,GAAG,kBAAkB,MAAM;AAC1B,6BAAqB,YAAY,UAAU,QAAQ;AAAA,MACrD,CAAC,EACA,GAAG,iBAAiB,MAAM;AACzB,cAAM,mBAAmB,qBAAqB,IAC1C,UAAU,OAAO,IACjB,yBAAyB,UAAU,OAAO,CAAC;AAE/C,aAAK,SAAS,CAAC;AAEf,aAAK,SAAS,gBAAyC;AAEvD,6BAAqB,UAAU,UAAU,MAAM;AAAA,MACjD,CAAC;AAEH,YAAM,MAAM,CAAI,OAAU,aAAuC;AAC/D,iBAAS,KAAK;AACd,eAAO;AAAA,MACT;AAEA,aAAO,OAAO,sBAAsB;AAAA,QAClC,WAAW,CAAC;AAAA,QACZ,SAAS,CAAC;AAAA,QACV,YAAY;AAAA,QACZ,WAAW,MAAM;AAAA,QACjB,eAAe,MAAM,IAAI,sBAAsB,MAAO,gBAAgB,IAAK;AAAA,QAC3E,OAAO,CAAC,UAAkB,qBAAqB,QAAQ,SAAS,KAAK;AAAA,QACrE,SAAS,CAAC,UAAkB,SAAS,KAAK;AAAA,QAC1C,sBAAsB,CAAC,aAAqB,IAAI,sBAAsB,MAAM,UAAU,WAAW,QAAQ,CAAC;AAAA,QAC1G,eAAe,MAAM,IAAI,sBAAsB,MAAM,UAAU,cAAc,CAAC;AAAA,QAC9E,uBAAuB,MAAM,IAAI,sBAAsB,MAAM,UAAU,sBAAsB,CAAC;AAAA,QAC9F,OAAO,CACL,UACG,WACA;AACH,cAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,sBAAU,MAAM,KAAK;AAAA,UACvB,WAAW,OAAO,UAAU,UAAU;AACpC,sBAAU,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;AAAA,UACpC,OAAO;AACL,sBAAU,MAAM,KAAK;AAAA,UACvB;AAEA,iBAAO;AAAA,QACT;AAAA,QACA,SAAS,CAAC,UACR,OAAO,UAAU,WACb,qBAAqB,UAAU,SAAS,KAAK,IAC7C,qBAAqB,UAAU,SAAS;AAAA,QAC9C,UAAU,CAAC,OAAqDC,YAA8B;AAC5F,cAAI,OAAO,UAAU,YAAY,EAAE,YAAY,QAAQ;AACrD,YAAAA,UAAS;AACT,oBAAQ;AAAA,UACV;AAEA,cAAI,UAAU,QAAW;AACvB,sBAAU,SAASA,OAAM;AAAA,UAC3B,OAAO;AACL,kBAAM,YAAY,YAAY,KAAK;AACnC,kBAAM,kBAAkB,UAAU,KAAK,KAAK,CAAC;AAC7C,sBAAU,SAAS,WAAW,IAAI,iBAAiB,SAAS,GAAGA,OAAM;AAAA,UACvE;AAEA,iBAAO;AAAA,QACT;AAAA,QACA,WAAW,CAAC,WAAkC,IAAI,sBAAsB,MAAM,KAAK,SAAS,MAAM,CAAC;AAAA,QACnG,aAAa,CAAC,UACZ;AAAA,UAAI;AAAA,UAAsB,MACxB,KAAK,YAAY,YAAY,KAAiC,CAAwB;AAAA,QACxF;AAAA,MACJ,CAAC;AAED,aAAO;AAAA,IACT;AAAA,IAEA,OAAO;AACL,aAAQ,OAAO,KAAK,QAAQ,EAAiC,OAAO,CAAC,OAAOC,SAAQ;AAClF,eAAO,IAAI,OAAOA,MAAK,IAAI,MAAMA,IAAG,CAAC;AAAA,MACvC,GAAG,CAAC,CAAmB;AAAA,IACzB;AAAA,IAEA,UAAU,UAA2C;AACnD,kBAAY;AAEZ,aAAO;AAAA,IACT;AAAA,IAEA,SAAS,eAAsD,YAAsB;AACnF,UAAI,gBAAgB;AAClB,cAAM,IAAI,MAAM,8EAA8E;AAAA,MAChG;AAEA,kCAA4B;AAE5B,UAAI,OAAO,kBAAkB,aAAa;AACxC,mBAAWF,WAAU,KAAK,KAAK,CAAC;AAChC,aAAK,UAAU;AAAA,MACjB,OAAO;AACL,mBACE,OAAO,kBAAkB,WACrB,IAAIA,WAAU,QAAQ,GAAG,eAAe,UAAU,IAClD,OAAO,OAAO,CAAC,GAAGA,WAAU,QAAQ,GAAG,aAAa;AAAA,MAC5D;AAEA,oBAAc,SAAS,QAAmC;AAE1D,aAAO;AAAA,IACT;AAAA,IAEA,SAAS,QAA+B;AACtC,YAAM,eAAe,iBAAiBA,WAAU,YAAY,CAAC,IAAI;AACjE,YAAM,aAAaA,WAAU,YAAY;AAEzC,UAAI,OAAO,WAAW,GAAG;AACvB,YAAI,gBAAgB;AAClB,qBAAW;AAAA,QACb;AACA,eAAO,OAAO,MAAM,UAAU;AAAA,MAChC,OAAO;AACL;AAAC,QAAC,OACC,OAAO,CAACE,SAAQ,IAAI,YAAYA,IAAG,CAAC,EACpC,QAAQ,CAACA,SAAQ;AAChB,cAAI,gBAAgB;AAClB,gBAAI,UAAUA,MAAK,IAAI,YAAYA,IAAG,CAAC;AAAA,UACzC;AACA,cAAI,MAAMA,MAAK,IAAI,YAAYA,IAAG,CAAC;AAAA,QACrC,CAAC;AAAA,MACL;AAEA,oBAAc,MAAM,GAAG,MAAM;AAE7B,aAAO;AAAA,IACT;AAAA,IAEA,SAAS,eAA4D,YAAyB;AAC5F,YAAM,SAAS,OAAO,kBAAkB,WAAW,EAAE,CAAC,aAAa,GAAG,WAAW,IAAI;AAErF,aAAO,OAAO,KAAK,QAAQ,MAAM;AAEjC,WAAK,YAAY,OAAO,KAAK,KAAK,MAAM,EAAE,SAAS;AAEnD,oBAAc,UAAU,MAAgB;AAExC,aAAO;AAAA,IACT;AAAA,IAEA,eAAe,QAAkB;AAC/B,WAAK,SAAS,OAAO,KAAK,KAAK,MAAM,EAAE;AAAA,QACrC,CAAC,OAAO,WAAW;AAAA,UACjB,GAAG;AAAA,UACH,GAAI,OAAO,SAAS,KAAK,CAAC,OAAO,SAAS,KAAK,IAAI,EAAE,CAAC,KAAK,GAAI,KAAK,OAAkB,KAAK,EAAE,IAAI,CAAC;AAAA,QACpG;AAAA,QACA,CAAC;AAAA,MACH;AAEA,WAAK,YAAY,OAAO,KAAK,KAAK,MAAM,EAAE,SAAS;AAEnD,UAAI,cAAc;AAChB,YAAI,OAAO,WAAW,GAAG;AACvB,uBAAa,UAAU,CAAC,CAAC;AAAA,QAC3B,OAAO;AACL,iBAAO,QAAQ,aAAa,WAAW;AAAA,QACzC;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,uBAAuB,QAA+B;AACpD,WAAK,MAAM,GAAG,MAAM;AACpB,WAAK,YAAY,GAAG,MAAM;AAC1B,aAAO;AAAA,IACT;AAAA,IAEA,gBAAgB,gBAAgB;AAAA,IAEhC,aAAa;AACX,YAAM,WAAY,KAAqC,KAAK;AAE5D,UAAI,oBAAoB,SAAS,GAAG;AAClC,cAAM,WAAW,EAAE,GAAG,SAAS;AAC/B,4BAAoB,QAAQ,CAAC,MAAM,OAAO,SAAS,CAAW,CAAC;AAC/D,eAAO,EAAE,MAAM,UAAmB,QAAS,KAAqC,OAAO;AAAA,MACzF;AAEA,aAAO,EAAE,MAAM,UAAU,QAAS,KAAqC,OAAO;AAAA,IAChF;AAAA,IAEA,UAAUC,WAA0D;AAClE,aAAO,OAAO,MAAMA,UAAS,IAAI;AAChC,MAAC,KAAqC,SAASA,UAAS,MAAM;AAAA,IACjE;AAAA,EACF,CAAC;AAED,QAAM,YAAY;AAGlB,MAAI,UAAU,QAAQ;AACpB,cAAU,SAAS,SAAS,MAA+B;AAAA,EAC7D;AAEA;AAAA,IACE;AAAA,IACA,MAAM;AACJ,gBAAU,UAAU,CAAC,QAAQ,UAAU,KAAK,GAAG,QAAQ;AAAA,IACzD;AAAA,IACA,EAAE,WAAW,MAAM,MAAM,KAAK;AAAA,EAChC;AAGA;AAAA,IACE;AAAA,IACA,CAAC,aAAa;AACZ,UAAI,CAAC,aAAa;AAChB;AAAA,MACF;AAEA,YAAM,aAAaJ,QAAO,QAAQ,WAAW;AAC7C,YAAM,UAAUC,WAAW,SAAqD,WAAW,CAAC;AAE5F,UAAI,CAAC,QAAQ,YAAY,OAAO,GAAG;AACjC,QAAAD,QAAO,SAAS,SAAS,WAAW;AAAA,MACtC;AAAA,IACF;AAAA,IACA,EAAE,WAAW,MAAM,MAAM,KAAK;AAAA,EAChC;AAEA,MAAI,sBAAsB;AACxB,cAAU,iBAAiB,oBAAoB;AAAA,EACjD;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,aAAa,CAAC,gBAAuB;AACnC,iBAAW;AAAA,IACb;AAAA,IACA,cAAc,MAAM;AAAA,IACpB,yBAAyB,MAAM,wBAAwB;AAAA,IACvD,kBAAkB,MAAM;AACtB,gBAAU,YAAY;AACtB,gBAAU,gBAAgB;AAC1B,gBAAU,qBAAqB;AAE/B,oCAA8B;AAAA,QAC5B,MAAO,UAAU,qBAAqB;AAAA,QACtC,OAAO,IAAI,iCAAiC;AAAA,MAC9C;AAAA,IACF;AAAA,IACA,8BAA8B,MAAM;AAAA,IACpC,gCAAgC,MAAM;AACpC,kCAA4B;AAAA,IAC9B;AAAA,IACA,wBAAwB,CAAC,SAAgC;AACvD,4BAAsB;AAAA,IACxB;AAAA,IACA,mBAAmB,MAAM;AACvB,gBAAU,gBAAgB;AAC1B,gBAAU,qBAAqB;AAC/B,mBAAa,2BAA2B;AAAA,IAC1C;AAAA,IACA,kBAAkB,MAAM;AACtB,gBAAU,aAAa;AACvB,gBAAU,WAAW;AAAA,IACvB;AAAA,IACA,eAAe;AAAA,MACb,SAAS;AAAA,MACT,QAAQ,MAAM;AACZ,wBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACF;;;ADxZA,IAAI,mBAAuC;AAC3C,IAAI,gBAAgB;AAEpB,SAAS,qBAA2C,MAAmB;AACrE,MAAI,eAAe;AACjB;AAAA,EACF;AAEA,MAAI,qBAAqB,MAAM;AAC7B,oBAAgB;AAChB,uBAAmB,IAAI,IAAI,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC;AACnD,oBAAgB;AAAA,EAClB;AAEA,QAAM,YAAY,OAAO,KAAK,IAAI,EAAE,OAAO,CAACK,SAAQ,iBAAkB,IAAIA,IAAG,CAAC;AAC9E,MAAI,UAAU,SAAS,GAAG;AACxB,YAAQ;AAAA,MACN,kFAAkF,UAAU,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC;AAAA,IAE7H;AAAA,EACF;AACF;AAyFe,SAAR,WACF,MACkD;AACrD,QAAM,EAAE,aAAa,MAAM,qBAAqB,IAAIC,cAAa,sBAA6B,GAAG,IAAI;AAErG,QAAM,kBAAkB,OAAO,SAAS,aAAaC,WAAU,KAAK,CAAC,IAAIA,WAAU,IAAI;AACvF,uBAAqB,eAAe;AAEpC,MAAI,cAAkC;AACtC,MAAI,4BAAuD;AAE3D,QAAM;AAAA,IACJ,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,aAAoB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAGD,QAAM,OAAO;AAEb,QAAM,qBACJ,CAAC,WACD,CAAC,KAAa,UAAwB,CAAC,MAAM;AAC3C,SAAK,OAAO,QAAQ,KAAK,OAAO;AAAA,EAClC;AAEF,SAAO,OAAO,MAAM;AAAA,IAClB,UAAUC,OAA8B;AACtC,YAAM,EAAE,QAAQ,KAAK,QAAQ,IAAIF,cAAa,qBAAqBE,OAAM,wBAAwB,CAAC;AAElG,qCAA+B;AAE/B,YAAM,WAAyB;AAAA,QAC7B,GAAG;AAAA,QACH,eAAe,CAAC,UAAU;AACxB,wBAAc;AAEd,iBAAO,QAAQ,gBAAgB,KAAK;AAAA,QACtC;AAAA,QACA,UAAU,CAAC,UAAU;AACnB,4BAAkB;AAElB,iBAAO,QAAQ,WAAW,KAAK;AAAA,QACjC;AAAA,QACA,SAAS,CAAC,UAAU;AAClB,eAAK,aAAa;AAElB,iBAAO,QAAQ,UAAU,KAAK;AAAA,QAChC;AAAA,QACA,YAAY,CAAC,UAAU;AACrB,eAAK,WAAW,SAAS;AAEzB,iBAAO,QAAQ,aAAa,KAAK;AAAA,QACnC;AAAA,QACA,WAAW,OAAOC,UAAS;AACzB,2BAAiB;AAEjB,gBAAM,YAAY,QAAQ,YAAY,MAAM,QAAQ,UAAUA,KAAI,IAAI;AAEtE,cAAI,CAAC,6BAA6B,GAAG;AACnC,wBAAYF,WAAU,KAAK,KAAK,CAAC,CAAC;AAClC,iBAAK,UAAU;AAAA,UACjB;AAEA,iBAAO;AAAA,QACT;AAAA,QACA,SAAS,CAAC,WAAW;AACnB,eAAK,YAAY,EAAE,SAAS,MAA+B;AAE3D,iBAAO,QAAQ,UAAU,MAAM;AAAA,QACjC;AAAA,QACA,UAAU,MAAM;AACd,iBAAO,QAAQ,WAAW;AAAA,QAC5B;AAAA,QACA,UAAU,CAAC,UAAU;AACnB,2BAAiB;AACjB,wBAAc;AAEd,iBAAO,QAAQ,WAAW,KAAK;AAAA,QACjC;AAAA,MACF;AAEA,eAAS,aAAa,SAAS,cAAc,6BAA6B;AAC1E,kCAA4B;AAE5B,YAAM,kBAAkB,aAAa,EAAE,KAAK,KAAK,CAAC;AAElD,UAAI,WAAW,UAAU;AACvB,QAAAG,QAAO,OAAO,KAAK,EAAE,GAAG,UAAU,MAAM,gBAAgB,CAAC;AAAA,MAC3D,OAAO;AACL,QAAAA,QAAO,MAAM,EAAE,KAAK,iBAAiB,QAAQ;AAAA,MAC/C;AAAA,IACF;AAAA,IAEA,KAAK,mBAAmB,KAAK;AAAA,IAC7B,MAAM,mBAAmB,MAAM;AAAA,IAC/B,KAAK,mBAAmB,KAAK;AAAA,IAC7B,OAAO,mBAAmB,OAAO;AAAA,IACjC,QAAQ,mBAAmB,QAAQ;AAAA,IAEnC,SAAS;AACP,UAAI,aAAa;AACf,oBAAY,OAAO;AAAA,MACrB;AAAA,IACF;AAAA,IAEA,gBAAgB,MAA6B;AAC3C,6BAAuB,IAAI;AAC3B,aAAO;AAAA,IACT;AAAA,IAEA,WAAmB,UAAsC;AACvD,kCAA4B;AAC5B,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AAED,SAAO,wBAAwB,IAAK,OAA0C;AAChF;;;AHxOA,SAAS,YAAY,OAA0C;AAC7D,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,UAAU,YAAY;AAC/B,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,MAAM;AACZ,WACE,OAAO,IAAI,WAAW,cACtB,OAAO,IAAI,UAAU,cACrB,OAAO,IAAI,aAAa,YACxB,YAAY,OACZ,YAAY;AAAA,EAEhB;AAEA,SAAO;AACT;AAEA,SAAS,iBAAiB,OAAyB;AACjD,MAAI,OAAO,UAAU,YAAY;AAC/B,WAAO;AAAA,EACT;AAEA,QAAM,KAAK;AACX,SAAO,GAAG,WAAW,KAAK,OAAO,GAAG,cAAc;AACpD;AAaA,IAAM,YAAYC,KAAiC,MAAS;AAC5D,IAAM,OAAOA,KAAU;AACvB,IAAI,eAA4B;AAChC,IAAM,SAAS,WAAW,IAAI;AAC9B,IAAM,MAAMA,KAAwB,MAAS;AACtC,IAAI;AAEX,IAAM,MAAkB,gBAAgB;AAAA,EACtC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,aAAa;AAAA,MACX,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,IACA,eAAe;AAAA,MACb,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS,CAAC,UAAkB;AAAA,IAC9B;AAAA,IACA,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS,MAAM,MAAM;AAAA,MAAC;AAAA,IACxB;AAAA,IACA,eAAe;AAAA,MACb,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,MAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAoB;AAClB,cAAU,QAAQ,mBAAmB,QAAQ,gBAAgB,IAAI;AACjE,SAAK,QAAQ,EAAE,GAAG,aAAa,OAAO,YAAY,SAAS,CAAC,EAAE;AAC9D,QAAI,QAAQ;AAEZ,UAAM,WAAW,OAAO,WAAW;AAEnC,kBAAc,kBAAkB,UAAU,kBAAkB,CAAC,UAAkB,QAAQ,iBAAiB,MAAM;AAAA,IAAC,EAAE;AAEjH,QAAI,CAAC,UAAU;AACb,MAAAC,QAAO,KAAsB;AAAA,QAC3B;AAAA,QACA;AAAA,QACA,eAAe,OAAO,YAAgC;AACpD,cAAI,CAAC,QAAQ,eAAe;AAC1B,6BAAiB;AAAA,UACnB;AAEA,oBAAU,QAAQ,QAAQ,QAAQ,SAAS;AAC3C,eAAK,QAAQ,QAAQ;AACrB,cAAI,QAAQ,QAAQ,gBAAgB,IAAI,QAAQ,KAAK,IAAI;AAAA,QAC3D;AAAA,QACA,SAAS,CAAC,UAAU;AAClB,eAAK,QAAQ,EAAE,GAAG,KAAK,OAAQ,MAAM;AAAA,QACvC;AAAA,MACF,CAAC;AAED,MAAAA,QAAO,GAAG,YAAY,MAAM,YAAY,YAAY,CAAC;AAAA,IACvD;AAEA,WAAO,MAAM;AACX,UAAI,UAAU,OAAO;AACnB,kBAAU,MAAM,eAAe,CAAC,CAAC,UAAU,MAAM;AAEjD,cAAM,QAAQ,EAAE,UAAU,OAAO;AAAA,UAC/B,GAAG,KAAK,MAAO;AAAA,UACf,KAAK,IAAI;AAAA,QACX,CAAC;AAED,YAAI,OAAO,OAAO;AAChB,oBAAU,MAAM,SAAS,OAAO;AAChC,iBAAO,QAAQ;AAAA,QACjB;AAEA,YAAI,UAAU,MAAM,UAAU,iBAAiB,UAAU,MAAM,MAAM,GAAG;AACtE,iBAAQ,UAAU,MAAM,OAAoB,GAAG,KAAK;AAAA,QACtD;AAEA,YAAI;AACJ,YAAI,gBAAgD;AACpD,cAAM,cAAc,UAAU,MAAM;AAEpC,YACE,OAAO,gBAAgB,cACtB,YAAyB,UAAU,KACpC,OAAQ,YAAyB,cAAc,aAC/C;AACA,gBAAM,SAAU,YAAyB,KAAK,MAAO,KAAK;AAE1D,cAAI,wBAAwB,QAAQ,WAAW,GAAG;AAChD,8BAAkB,gBAAgB,KAAK,MAAO,WAAW,KAAK,KAAM;AACpE,4BAAgB;AAAA,UAClB,OAAO;AACL,8BAAkB;AAAA,UACpB;AAAA,QACF,WAAW,cAAc,aAAa,WAAW,GAAG;AAClD,4BAAkB,gBAAgB,KAAK,MAAO,WAAW,KAAK,KAAM;AACpE,0BAAgB;AAAA,QAClB,OAAO;AACL,4BAAkB,eAAe,gBAAgB,KAAK,MAAO,WAAW,KAAK,KAAM;AAAA,QACrF;AAEA,YAAI,iBAAiB;AACnB,cAAI,UAAU;AAAA,YACZ;AAAA,YACA;AAAA,YACA,UAAU,MAAM,UAAU,CAAC,gBAAgB,mBAAmB;AAAA,UAChE;AAEA,cAAI,eAAe;AACjB,sBAAU,QAAQ,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,cAAc,EAAE,EAAE;AAAA,UAClF;AAEA,cAAI,QAAQ,SAAS,GAAG;AACtB,kBAAM,eAAe,WAAW,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,EAAE,IAAI,MAAiB;AAE7E,mBAAO,QAAQ,YAAY,CAAC,WAAWC,YAAW;AAChD,oBAAM,kBAAkBA,QAAO;AAC/B,8BAAgB,eAAe,CAAC,CAAC,gBAAgB;AAEjD,qBAAO;AAAA,gBACL;AAAA,gBACA;AAAA,kBACE,GAAG,KAAK,MAAO;AAAA,kBACf,GAAGA,QAAO;AAAA,kBACV,GAAG,aAAa;AAAA,kBAChB,GAAIA,QAAO,OAAO,aAAa,MAAMA,QAAO,IAAI,KAAK,CAAC,IAAI,CAAC;AAAA,gBAC7D;AAAA,gBACA,MAAM;AAAA,cACR;AAAA,YACF,GAAG,KAAK;AAAA,UACV;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF,CAAC;AACD,IAAO,cAAQ;AAER,IAAM,SAAiB;AAAA,EAC5B,QAAQ,KAAK;AACX,IAAAD,QAAO,OAAO;AAEd,WAAO,eAAe,IAAI,OAAO,kBAAkB,YAAY,EAAE,KAAK,MAAMA,QAAO,CAAC;AACpF,WAAO,eAAe,IAAI,OAAO,kBAAkB,SAAS,EAAE,KAAK,MAAM,KAAK,MAAM,CAAC;AACrF,WAAO,eAAe,IAAI,OAAO,kBAAkB,gBAAgB,EAAE,KAAK,MAAM,YAAY,CAAC;AAE7F,QAAI,MAAM,gBAAQ;AAAA,EACpB;AACF;AAEO,SAAS,UAAwF;AACtG,MAAI,CAAC,cAAc;AACjB,mBAAeE,UAAS;AAAA,MACtB,OAAO,SAAS,MAAM,KAAK,OAAO,KAAK;AAAA,MACvC,KAAK,SAAS,MAAM,KAAK,OAAO,GAAG;AAAA,MACnC,WAAW,SAAS,MAAM,KAAK,OAAO,SAAS;AAAA,MAC/C,SAAS,SAAS,MAAM,KAAK,OAAO,OAAO;AAAA,MAC3C,cAAc,SAAS,MAAM,KAAK,OAAO,YAAY;AAAA,MACrD,eAAe,SAAS,MAAM,KAAK,OAAO,aAAa;AAAA,MACvD,YAAY,SAAS,MAAM,KAAK,OAAO,UAAU;AAAA,MACjD,cAAc,SAAS,MAAM,KAAK,OAAO,YAAY;AAAA,MACrD,gBAAgB,SAAS,MAAM,KAAK,OAAO,cAAc;AAAA,MACzD,cAAc,SAAS,MAAM,KAAK,OAAO,YAAY;AAAA,MACrD,iBAAiB,SAAS,MAAM,KAAK,OAAO,eAAe;AAAA,MAC3D,gBAAgB,SAAS,MAAM,KAAK,OAAO,cAAc;AAAA,MACzD,aAAa,SAAS,MAAM,KAAK,OAAO,WAAW;AAAA,MACnD,OAAO,SAAS,MAAM,KAAK,OAAO,KAAK;AAAA,IACzC,CAAC;AAAA,EACH;AAEA,SAAO;AACT;;;AKxQA;AAAA,EACE;AAAA,EAIA;AAAA,EACA,QAAQ;AAAA,EAIR,UAAAC;AAAA,EACA;AAAA,OAEK;AACP,SAAS,WAAW,cAA+B,KAAAC,UAAgC;AAwEnF,eAAO,iBACL;AAAA,EACE,KAAK;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAAC,YAAW,CAAC;AAAA,EACZ,MAAAC;AAAA,EACA;AAAA,EACA,WAAW,CAAC;AAAA,EACZ,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA;AACF,IAGyC,CAAC,GAC2B;AACrE,SAAO,QAAQ,QAAQ;AAEvB,MAAID,OAAM;AACR,eAAW,UAAUA,KAAI;AAAA,EAC3B;AAEA,QAAM,WAAW,OAAO,WAAW;AAEnC,QAAM,mBAAmB,CAAC,MAAcD,UACtC,QAAQ,QAAQ,QAAS,MAAMA,KAAI,CAAC,EAAE,KAAK,CAAC,WAAW,OAAO,WAAW,MAAM;AAIjF,MAAI,YAAY,CAACA,SAAQ,CAAC,QAAQ;AAChC,WAAO,OAAOA,OAAyB,mBAAmC;AACxE,UAAIG,QAAiB,CAAC;AAEtB,YAAM,mBAAmB,MAAM,iBAAiBH,MAAK,WAAWA,KAAI;AAEpE,YAAM,QAAsC;AAAA,QAC1C,aAAaA;AAAA,QACb;AAAA,QACA;AAAA,QACA,eAAe;AAAA,QACf,cAAc,CAAC,aAAwBG,QAAO;AAAA,QAC9C,eAAeD;AAAA,MACjB;AAEA,UAAIE;AAEJ,UAAI,OAAO;AACT,QAAAA,UAAU,MAA+D;AAAA,UACvE,IAAI;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH,OAAO;AACL,QAAAA,UAAS,aAAa,EAAE,QAAQ,MAAMC,GAAE,aAAK,KAAK,EAAE,CAAC;AACrD,QAAAD,QAAO,IAAI,MAAM;AAEjB,YAAI,SAAS;AACX,kBAAQA,SAAQ,EAAE,KAAK,KAAK,CAAC;AAAA,QAC/B;AAAA,MACF;AAEA,YAAM,OAAO,MAAM,eAAeA,OAAM;AACxC,YAAM,OAAO,aAAa,IAAIJ,OAAM,IAAI;AAExC,aAAO,EAAE,MAAAG,OAAM,KAAK;AAAA,IACtB;AAAA,EACF;AAEA,QAAM,cAAcH,SAAQ,sBAAyC,EAAE;AAEvE,MAAI,OAAiB,CAAC;AAEtB,QAAM,SAAS,MAAM,QAAQ,IAAI;AAAA,IAC/B,iBAAiB,YAAY,WAAW,WAAW;AAAA,IACnDM,QAAO,eAAe,EAAE,MAAM,MAAM;AAAA,IAAC,CAAC;AAAA,EACxC,CAAC,EAAE,KAAK,CAAC,CAAC,gBAAgB,MAAM;AAC9B,UAAM,QAAsC;AAAA,MAC1C;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe;AAAA,MACf,cAAc,WAAW,CAAC,aAAwB,OAAO,WAAY;AAAA,MACrE,eAAeJ;AAAA,IACjB;AAEA,QAAI,UAAU;AACZ,aAAQ,MAA+D;AAAA,QACrE,IAAI;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAEA,UAAM,KAAK,SAAS,eAAe,EAAE;AAErC,QAAI,OAAO;AACT,aAAQ,MAAoE;AAAA,QAC1E;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAGA,QAAI,GAAG,aAAa,sBAAsB,GAAG;AAC3C,YAAM,MAAM,aAAa,EAAE,QAAQ,MAAMG,GAAE,aAAK,KAAK,EAAE,CAAC;AACxD,UAAI,IAAI,MAAM;AAEd,UAAI,SAAS;AACX,gBAAQ,KAAK,EAAE,KAAK,MAAM,CAAC;AAAA,MAC7B;AAEA,UAAI,MAAM,EAAE;AAAA,IACd,OAAO;AACL,YAAM,MAAM,UAAU,EAAE,QAAQ,MAAMA,GAAE,aAAK,KAAK,EAAE,CAAC;AACrD,UAAI,IAAI,MAAM;AAEd,UAAI,SAAS;AACX,gBAAQ,KAAK,EAAE,KAAK,MAAM,CAAC;AAAA,MAC7B;AAEA,UAAI,MAAM,EAAE;AAAA,IACd;AAAA,EACF,CAAC;AAED,MAAI,CAAC,YAAYN,WAAU;AACzB,kBAAcA,SAAQ;AAAA,EACxB;AAEA,MAAI,YAAY,UAAU,QAAQ;AAChC,UAAM,OAAO,MAAM,OAAO,MAAM;AAChC,UAAM,OAAO,aAAa,IAAI,aAAa,IAAI;AAE/C,WAAO,EAAE,MAAM,KAAK;AAAA,EACtB;AACF;;;AClOA,SAAS,6BAA6B,UAAAQ,eAAc;AACpD,SAAS,OAAAC,YAAW;AACpB,SAAS,mBAAAC,kBAAiB,WAAW,aAAa,OAAAC,YAA2B;AAG7E,IAAM,uBAAuB,CAAC,MAAgB,QAAkB,SAA4B;AAC1F,MAAI,KAAK,WAAW,KAAK,OAAO,WAAW,GAAG;AAC5C,WAAO;AAAA,EACT;AAEA,MAAI,KAAK,SAAS,GAAG;AACnB,WAAO,KAAK,KAAK,CAACC,SAAQ,KAAK,SAASA,IAAG,CAAC;AAAA,EAC9C;AAEA,SAAO,KAAK,KAAK,CAACA,SAAQ,CAAC,OAAO,SAASA,IAAG,CAAC;AACjD;AAEA,IAAO,mBAAQC,iBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,MAAM,CAAC,QAAQ,KAAa;AAAA,MAC5B,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,OAAO;AAAA,EAIP,MAAM,OAAO,EAAE,MAAM,GAAG;AACtB,UAAM,YAAYC,KAAI,KAAK;AAC3B,UAAM,gBAAgB,oBAAI,IAAY;AACtC,UAAMC,QAAO,QAAQ;AAErB,QAAI,sBAA2C;AAC/C,QAAI,uBAA4C;AAEhD,cAAU,MAAM;AACd,YAAM,OAAQ,MAAM,QAAQ,MAAM,IAAI,IAAI,MAAM,OAAO,CAAC,MAAM,IAAI;AAElE,4BAAsBC,QAAO,GAAG,SAAS,CAAC,MAAM;AAC9C,cAAM,QAAQ,EAAE,OAAO;AAEvB,YACE,MAAM,kBAAkB,QACxB,4BAA4B,MAAM,KAAK,OAAO,QAAQ,KACtD,qBAAqB,MAAM,MAAM,MAAM,QAAQ,IAAI,GACnD;AACA,wBAAc,IAAI,KAAK;AACvB,oBAAU,QAAQ;AAAA,QACpB;AAAA,MACF,CAAC;AAED,6BAAuBA,QAAO,GAAG,UAAU,CAAC,MAAM;AAChD,cAAM,QAAQ,EAAE,OAAO;AAEvB,YAAI,cAAc,IAAI,KAAK,GAAG;AAC5B,wBAAc,OAAO,KAAK;AAC1B,oBAAU,QAAQ,cAAc,OAAO;AAAA,QACzC;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAED,gBAAY,MAAM;AAChB,4BAAsB;AACtB,6BAAuB;AACvB,oBAAc,MAAM;AAAA,IACtB,CAAC;AAED,WAAO,MAAM;AACX,YAAM,OAAQ,MAAM,QAAQ,MAAM,IAAI,IAAI,MAAM,OAAO,CAAC,MAAM,IAAI;AAElE,UAAI,CAAC,MAAM,UAAU;AACnB,cAAM,IAAI,MAAM,qDAAqD;AAAA,MACvE;AAEA,aAAO,KAAK,MAAM,CAACJ,SAAQK,KAAIF,MAAK,OAAOH,IAAG,MAAM,MAAS,IACzD,MAAM,UAAU,EAAE,WAAW,UAAU,MAAM,CAAC,IAC9C,MAAM,SAAS,CAAC,CAAC;AAAA,IACvB;AAAA,EACF;AACF,CAAC;;;ACjFD;AAAA,EACE,UAAAM;AAAA,EAIA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA,gBAAAC;AAAA,OAEK;AACP,SAAS,WAAAC,gBAAe;AAExB;AAAA,EACE,YAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,KAAAC;AAAA,EACA;AAAA,EAEA;AAAA,EACA,aAAAC;AAAA,EAEA;AAAA,EACA,OAAAC;AAAA,EAEA,SAAAC;AAAA,OACK;AAMP,IAAM,OAAO,MAAM;AAEnB,IAAM,iBAAiD,uBAAO,oBAAoB;AAElF,IAAM,OAAOC,iBAAgB;AAAA,EAC3B,MAAM;AAAA,EACN,OAAO;AAAA,EAGP,OAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS,OAAO,CAAC;AAAA,IACnB;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM,CAAC,QAAQ,IAAI;AAAA,MACnB,SAAS;AAAA,IACX;AAAA,IACA,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS,CAAC,SAA8C;AAAA,IAC1D;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS,OAAO,CAAC;AAAA,IACnB;AAAA,IACA,cAAc;AAAA,MACZ,MAAM,CAAC,SAAS,KAAK;AAAA,MACrB,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM,CAAC,SAAS,KAAK;AAAA,MACrB,SAAS;AAAA,IACX;AAAA,IACA,sBAAsB;AAAA,MACpB,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,qBAAqB;AAAA,MACnB,MAAM,CAAC,QAAQ,KAAK;AAAA,MACpB,SAAS,MAAM,CAAC;AAAA,IAClB;AAAA,IACA,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,MAAM,OAAO,EAAE,OAAO,OAAO,OAAO,GAAG;AACrC,UAAM,qBAAqB,MAA2C;AACpE,YAAM,CAAC,MAAM,IAAI,IAAI,cAAc;AAEnC,aAAO,MAAM,UAAU,IAAI;AAAA,IAC7B;AAEA,UAAM,OAAO,QAA6B,CAAC,CAAC,EACzC;AAAA,MACC,MAAM,OAAO;AAAA,MACb,MAAM,cAAc,EAAE,CAAC;AAAA,IACzB,EACC,UAAU,kBAAkB,EAC5B,qBAAqB,MAAM,iBAAiB;AAE/C,QAAI,MAAM,eAAe;AACvB,WAAK,cAAc;AAAA,IACrB;AAEA,QAAI,MAAM,iBAAiBC,QAAO,IAAI,oBAAoB,GAAG;AAC3D,WAAK,cAAc;AAAA,IACrB;AAEA,UAAM,cAAcC,KAAI;AACxB,UAAM,SAASC;AAAA,MAAS,MACtB,gBAAgB,MAAM,MAAM,IAAI,MAAM,OAAO,SAAU,MAAM,OAAO,YAAY;AAAA,IAClF;AACA,UAAM,oBAAoBA,UAAS,MAAM;AACvC,UAAI,MAAM,WAAW;AACnB,eAAO,MAAM;AAAA,MACf;AAEA,UAAI,MAAM,WAAW,gBAAgB,MAAM,MAAM,GAAG;AAClD,eAAO,8BAA8B,MAAM,MAAM;AAAA,MACnD;AAEA,aAAO;AAAA,IACT,CAAC;AAGD,UAAM,UAAUD,KAAI,KAAK;AAEzB,UAAM,cAAcA,KAAI,IAAI,SAAS,CAAC;AAEtC,UAAM,eAAe,CAAC,UAAiB;AACrC,UAAI,MAAM,SAAS,WAAY,MAAsB,SAAS,wBAAwB,GAAG;AAEvF,cAAM,eAAe;AAAA,MACvB;AAEA,cAAQ,QAAQ,MAAM,SAAS,UAAU,QAAQ,CAACE,SAAQ,QAAQ,GAAG,iBAAiB,YAAY,KAAK,CAAC;AAAA,IAC1G;AAEA,UAAM,aAA+C,CAAC,SAAS,UAAU,OAAO;AAEhF,IAAAC,WAAU,MAAM;AACd,kBAAY,QAAQ,YAAY;AAEhC,WAAK,SAAS,QAAQ,CAAC;AAEvB,iBAAW,QAAQ,CAAC,MAAM,YAAY,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAAA,IAC/E,CAAC;AAED,IAAAC;AAAA,MACE,MAAM,MAAM;AAAA,MACZ,CAAC,UAAW,QAAQ,KAAK,cAAc,IAAI,KAAK,sBAAsB;AAAA,IACxE;AAEA,IAAAA;AAAA,MACE,MAAM,MAAM;AAAA,MACZ,CAAC,UAAU,KAAK,qBAAqB,KAAK;AAAA,IAC5C;AAEA,oBAAgB,MAAM,WAAW,QAAQ,CAAC,MAAM,YAAY,OAAO,oBAAoB,GAAG,YAAY,CAAC,CAAC;AAExG,UAAM,cAAc,CAAC,cAAwC,IAAI,SAAS,YAAY,OAAO,SAAS;AAKtG,UAAM,UAAU,CAAC,cACf,iBAAiB,YAAY,SAAS,CAAC;AAEzC,UAAM,gBAAgB,CAAC,cAA6E;AAClG,aAAO;AAAA,QACL,OAAO;AAAA,QACP,gBAAgB,MAAM,MAAM,IAAI,MAAM,OAAO,MAAM,MAAM;AAAA,QACzD,QAAQ,SAAS;AAAA,QACjB,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,SAAS,CAAC,cAA8B;AAC5C,YAAM,CAAC,KAAK,IAAI,IAAI,cAAc,SAAS;AAC3C,YAAM,aAAc,WAA2D,aAAa,YAAY;AAExG,UAAI,eAAe,YAAY,OAAO,UAAU,OAAO;AACrD,eAAO,KAAK,KAAK,QAAQ;AACzB;AAAA,MACF;AAEA,YAAM,aAAa,CAAC,gBAAoC;AACtD,YAAI,CAAC,aAAa;AAChB;AAAA,QACF;AAEA,YAAI,gBAAgB,MAAM;AACxB,gBAAM;AAAA,QACR,WAAW,YAAY,SAAS,GAAG;AACjC,gBAAM,GAAG,WAAW;AAAA,QACtB;AAAA,MACF;AAEA,YAAM,gBAAmC;AAAA,QACvC,SAAS,MAAM;AAAA,QACf,wBAAwB,MAAM;AAAA,QAC9B,UAAU,MAAM;AAAA,QAChB,cAAc,MAAM;AAAA,QACpB,qBAAqB,MAAM;AAAA,QAC3B,WAAW,kBAAkB;AAAA,QAC7B,YAAY,MAAM,aAAa,CAAC,cAAc,MAAM,WAAY,WAAW,IAAI,IAAI;AAAA,QACnF,eAAe,MAAM;AAAA,QACrB,UAAU,MAAM;AAAA,QAChB,SAAS,MAAM;AAAA,QACf,YAAY,MAAM;AAAA,QAClB,UAAU,MAAM;AAAA,QAChB,UAAU,MAAM;AAAA,QAChB,WAAW,IAAI,SAAS;AACtB,gBAAM,YAAY,GAAG,IAAI;AACzB,gBAAM,mBAAmB,OAAO;AAChC,qBAAW,MAAM,cAAc;AAE/B,cAAI,MAAM,yBAAyB,MAAM;AACvC,qBAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA,SAAS,IAAI,SAAS;AACpB,gBAAM,UAAU,GAAG,IAAI;AACvB,qBAAW,MAAM,YAAY;AAAA,QAC/B;AAAA,QACA,GAAG,MAAM;AAAA,MACX;AAGA,WAAK,UAAU,MAAM,MAAM,UAAU,IAAI,CAAC,EAAE,OAAO,OAAO,OAAO,KAAK,aAAa;AAGnF,WAAK,UAAU,kBAAkB;AAAA,IACnC;AAEA,UAAM,QAAQ,IAAI,WAAqB;AACrC,sBAAgB,YAAY,OAAO,YAAY,OAAO,MAAM;AAE5D,WAAK,MAAM,GAAG,MAAM;AAAA,IACtB;AAEA,UAAM,cAAc,IAAI,WAAqB;AAC3C,WAAK,YAAY,GAAG,MAAM;AAAA,IAC5B;AAEA,UAAM,sBAAsB,IAAI,WAAqB;AACnD,kBAAY,GAAG,MAAM;AACrB,YAAM,GAAG,MAAM;AAAA,IACjB;AAEA,UAAM,WAAW,MAAM;AACrB,kBAAY,QAAQ,YAAY;AAChC,cAAQ,QAAQ;AAAA,IAClB;AAEA,UAAM,UAAU;AAAA,MACd,IAAI,SAAS;AACX,eAAO,KAAK;AAAA,MACd;AAAA,MACA,IAAI,YAAY;AACd,eAAO,KAAK;AAAA,MACd;AAAA,MACA,IAAI,aAAa;AACf,eAAO,KAAK;AAAA,MACd;AAAA,MACA,IAAI,WAAW;AACb,eAAO,KAAK;AAAA,MACd;AAAA,MACA,IAAI,gBAAgB;AAClB,eAAO,KAAK;AAAA,MACd;AAAA,MACA,IAAI,qBAAqB;AACvB,eAAO,KAAK;AAAA,MACd;AAAA,MACA,IAAI,aAAa;AACf,eAAO,KAAK;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,CAAC,eAAgD,eACzD,KAAK,SAAU,OAAO,kBAAkB,WAAW,EAAE,CAAC,aAAa,GAAG,WAAW,IAAI,aAAwB;AAAA,MAC/G,IAAI,UAAU;AACZ,eAAO,QAAQ;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAGA,OAAO,KAAK;AAAA,MACZ,OAAO,KAAK;AAAA,MACZ,SAAS,KAAK;AAAA,MACd,SAAS,KAAK;AAAA,MACd,UAAU,CAAC,OAAqDL,YAC9D,KAAK,SAAS,GAAGM,cAAa,0BAA0B,OAAON,SAAQ,MAAM,OAAO,CAAC;AAAA,MACvF,WAAW,MAAM,KAAK,UAAU;AAAA,IAClC;AAEA,WAAyB,OAAO;AAEhC,YAAQ,gBAAgB,OAAO;AAE/B,WAAO,MAAM;AACX,aAAOO;AAAA,QACL;AAAA,QACA;AAAA,UACE,GAAG;AAAA,UACH,KAAK;AAAA,UACL,QAAQ,gBAAgB,MAAM,MAAM,IAAI,MAAM,OAAO,MAAM,MAAM;AAAA,UACjE,QAAQ,OAAO;AAAA,UACf,UAAU,CAAC,UAAU;AACnB,kBAAM,eAAe;AACrB,mBAAO,MAAM,SAAS;AAAA,UACxB;AAAA,UACA,OAAO,MAAM,0BAA0B,KAAK;AAAA,QAC9C;AAAA,QACA,MAAM,UAAU,MAAM,QAAQ,OAAO,IAAI,CAAC;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AACF,CAAC;AAEM,SAAS,iBAAkG;AAChH,SAAO,OAAO,cAAc;AAC9B;AAoBO,SAAS,aAA2E;AACzF,SAAO;AACT;AAEA,IAAO,eAAQ;;;AC1af,SAAS,cAAc;AACvB,SAAS,mBAAAC,kBAAkC,mBAAAC,wBAA8B;AAOzE,SAAS,WAAW,MAAsB;AACxC,SACE,OAAO,KAAK,SAAS,YACrB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,QAAQ,KAAK,IAAI,IAAI;AAE3B;AAEA,SAAS,eAAe,MAAqB;AAC3C,OAAK,QAAQ,KAAK,SAAS,CAAC;AAC5B,OAAK,MAAM,cAAc,IAAI,KAAK,MAAM,UAAU,MAAM,SAAY,KAAK,MAAM,UAAU,IAAI;AAE7F,QAAM,QAAQ,OAAO,KAAK,KAAK,KAAK,EAAE,OAAO,CAAC,OAAO,SAAS;AAC5D,UAAM,QAAQ,OAAO,KAAK,MAAO,IAAI,CAAC;AACtC,QAAI,CAAC,OAAO,UAAU,EAAE,SAAS,IAAI,GAAG;AACtC,aAAO;AAAA,IACT,WAAW,UAAU,IAAI;AACvB,aAAO,QAAQ,IAAI,IAAI;AAAA,IACzB,OAAO;AACL,aAAO,QAAQ,IAAI,IAAI,KAAK,OAAO,KAAK,CAAC;AAAA,IAC3C;AAAA,EACF,GAAG,EAAE;AAEL,SAAO,IAAI,OAAO,KAAK,IAAI,CAAC,GAAG,KAAK;AACtC;AAEA,SAAS,kBAAkB,MAAqB;AAC9C,QAAM,EAAE,SAAS,IAAI;AAErB,MAAI,OAAO,aAAa,UAAU;AAChC,WAAO;AAAA,EACT;AAEA,MAAI,MAAM,QAAQ,QAAQ,GAAG;AAC3B,WAAO,SAAS,OAAe,CAAC,MAAM,UAAU;AAC9C,aAAO,OAAO,UAAU,KAAc;AAAA,IACxC,GAAG,EAAE;AAAA,EACP;AAEA,SAAO;AACT;AAEA,SAAS,eAAe,MAAoD;AAC1E,SAAO,OAAO,KAAK,SAAS;AAC9B;AAEA,SAAS,gBAAgB,MAA+C;AACtE,SAAO,OAAO,KAAK,SAAS;AAC9B;AAEA,SAAS,cAAc,MAAsB;AAC3C,SAAO,iBAAiB,KAAK,KAAK,KAAK,SAAS,CAAC;AACnD;AAEA,SAAS,eAAe,MAAsB;AAC5C,SAAO,6BAA6B,KAAK,KAAK,KAAK,SAAS,CAAC;AAC/D;AAEA,SAAS,WAAW,MAAsB;AACxC,SAAO,cAAc,KAAK,KAAK,KAAK,SAAS,CAAC;AAChD;AAEA,SAAS,UAAU,MAAqB;AACtC,MAAI,WAAW,IAAI,GAAG;AACpB,WAAO,OAAO,KAAK,QAAQ;AAAA,EAC7B,WAAW,eAAe,IAAI,GAAG;AAC/B,WAAO;AAAA,EACT,WAAW,cAAc,IAAI,GAAG;AAC9B,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,eAAe,IAAI;AAE9B,MAAI,KAAK,UAAU;AACjB,YAAQ,kBAAkB,IAAI;AAAA,EAChC;AAEA,MAAI,CAAC,WAAW,IAAI,GAAG;AACrB,YAAQ,KAAK,OAAO,KAAK,IAAI,CAAC;AAAA,EAChC;AAEA,SAAO;AACT;AAEA,SAAS,gBAAgB,UAAoB,OAA0B;AACrE,MAAI,SAAS,CAAC,SAAS,KAAK,CAAC,QAAQ,IAAI,WAAW,QAAQ,CAAC,GAAG;AAC9D,aAAS,KAAK,0BAA0B,KAAK,UAAU;AAAA,EACzD;AAEA,SAAO;AACT;AAEA,SAAS,YAAY,OAAgB,OAA0B;AAC7D,QAAM,WAAW,MACd,QAAQ,CAAC,SAAS,YAAY,IAAI,CAAC,EACnC,IAAI,CAAC,SAAS,UAAU,IAAI,CAAC,EAC7B,OAAO,CAAC,SAAS,IAAI;AAExB,SAAO,gBAAgB,UAAU,KAAK;AACxC;AAEA,SAAS,YAAY,MAA8B;AACjD,MAAI,eAAe,IAAI,GAAG;AACxB,WAAO,YAAY,KAAK,KAAK,CAAC;AAAA,EAChC,WAAW,gBAAgB,IAAI,GAAG;AAChC,YAAQ,KAAK,4DAA4D;AACzE,WAAO,CAAC;AAAA,EACV,WAAW,WAAW,IAAI,KAAK,KAAK,UAAU;AAC5C,WAAO;AAAA,EACT,WAAW,eAAe,IAAI,KAAK,KAAK,UAAU;AAChD,WAAQ,KAAK,SAAqB,QAAQ,CAAC,UAAU,YAAY,KAAK,CAAC;AAAA,EACzE,WAAW,cAAc,IAAI,GAAG;AAC9B,WAAO,CAAC;AAAA,EACV,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAEA,IAAM,OAAoBC,iBAAgB;AAAA,EACxC,OAAO;AAAA,IACL,OAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,MAAM,OAAO,EAAE,MAAM,GAAG;AACtB,UAAM,WAAW,YAAY,eAAe;AAE5C,IAAAC,iBAAgB,MAAM;AACpB,eAAS,WAAW;AAAA,IACtB,CAAC;AAED,WAAO,MAAM;AACX,eAAS,OAAO,YAAY,MAAM,UAAU,MAAM,QAAQ,IAAI,CAAC,GAAG,MAAM,KAAK,CAAC;AAAA,IAChF;AAAA,EACF;AACF,CAAC;AAED,IAAO,eAAQ;;;ACjKf;AAAA,EACE;AAAA,EAMA;AAAA,OACK;AACP,SAAS,YAAAC,WAAU,mBAAAC,kBAAiB,UAAU,KAAAC,IAAG,aAAAC,YAAW,eAAAC,cAAuB,OAAAC,MAAgB,SAAAC,cAAa;AAIhH,IAAM,qBAAqB,CACzB,OACA,aACuB;AACvB,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAGA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,SAAS,cAAc,KAAK;AAAA,EACrC;AAGA,MAAI,OAAO,UAAU,YAAY;AAC/B,WAAO,MAAM,KAAK;AAAA,EACpB;AAEA,SAAO;AACT;AAEA,IAAM,iBAAiBC,iBAAgB;AAAA,EACrC,MAAM;AAAA,EACN,OAAO;AAAA,EAMP,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,IAAI;AAAA,MACF,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,cAAc;AAAA,MACZ,MAAM,CAAC,QAAQ,UAAU,MAAM;AAAA,MAC/B,SAAS;AAAA,IACX;AAAA,IACA,cAAc;AAAA,MACZ,MAAM,CAAC,QAAQ,UAAU,MAAM;AAAA,MAC/B,SAAS;AAAA,IACX;AAAA,IACA,YAAY;AAAA,MACV,MAAM,CAAC,QAAQ,UAAU,MAAM;AAAA,MAC/B,SAAS;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS,OAAO,CAAC;AAAA,IACnB;AAAA,EACF;AAAA,EACA,cAAc;AAAA,EACd,MAAM,OAAO,EAAE,OAAO,OAAO,OAAO,GAAG;AACrC,UAAM,kBAAkBC,KAAwB,IAAI;AACpD,UAAM,kBAAkBA,KAAwB,IAAI;AACpD,UAAM,gBAAgBA,KAAwB,IAAI;AAElD,UAAM,eAAeC;AAAA,MAA6B,MAChD,mBAAmB,MAAM,cAAc,gBAAgB,KAAK;AAAA,IAC9D;AACA,UAAM,mBAAmBA,UAAS,MAAM,oBAAoB,aAAa,KAAK,CAAC;AAC/E,UAAM,eAAeA;AAAA,MAA6B,MAChD,mBAAmB,MAAM,cAAc,gBAAgB,KAAK;AAAA,IAC9D;AACA,UAAM,aAAaA,UAA6B,MAAM,mBAAmB,MAAM,YAAY,cAAc,KAAK,CAAC;AAE/G,UAAM,kBAAkBD,KAAI,KAAK;AACjC,UAAM,cAAcA,KAAI,KAAK;AAC7B,UAAM,eAAeA,KAAI,CAAC;AAC1B,UAAM,kBAAkBA,KAAI,KAAK;AACjC,UAAM,cAAcA,KAAI,KAAK;AAE7B,UAAM,2BAA2B,MAAM;AACrC,mBAAa,QAAQ,YAAY,gBAAgB;AACjD,sBAAgB,QAAQ,YAAY,YAAY;AAChD,kBAAY,QAAQ,YAAY,QAAQ;AAAA,IAC1C;AAEA,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,OAAO;AAAA,IACT,IAAI,kBAAkB;AAAA;AAAA,MAEpB,aAAa,MAAM,MAAM;AAAA,MACzB,eAAe,MAAM,MAAM;AAAA,MAC3B,iBAAiB,MAAM,CAAC,MAAM;AAAA,MAC9B,qBAAqB,MAAM,CAAC,MAAM;AAAA,MAClC,mBAAmB,MAAM,MAAM;AAAA,MAC/B,kBAAkB,MAAM,MAAM;AAAA;AAAA,MAG9B,kBAAkB,MAAM,MAAM;AAAA,MAC9B,iBAAiB,MAAM,aAAa;AAAA,MACpC,eAAe,MAAM,WAAW;AAAA,MAChC,iBAAiB,MAAM,aAAa;AAAA,MACpC,qBAAqB,MAAM,iBAAiB;AAAA;AAAA,MAG5C,yBAAyB,MAAO,gBAAgB,QAAQ;AAAA,MACxD,qBAAqB,MAAO,YAAY,QAAQ;AAAA,MAChD,2BAA2B,MAAM;AAC/B,wBAAgB,QAAQ;AACxB,iCAAyB;AAAA,MAC3B;AAAA,MACA,uBAAuB,MAAM;AAC3B,oBAAY,QAAQ;AACpB,iCAAyB;AAAA,MAC3B;AAAA,MACA,aAAa;AAAA,IACf,CAAC;AAED,6BAAyB;AAEzB,QAAI,OAAO,WAAW,aAAa;AACjC,YAAM,aAAa,QAAQ,EAAE,cAAc,MAAM,IAAI;AAErD,UAAI,YAAY;AACd,wBAAgB,QAAQ,CAAC,CAAC,WAAW;AACrC,oBAAY,QAAQ,CAAC,CAAC,WAAW;AAAA,MACnC;AAAA,IACF;AAEA,UAAM,WAAWC,UAAkB,MAAM,CAAC,WAAW,KAAK;AAC1D,UAAM,aAAaA;AAAA,MACjB,MAAM,MAAM,UAAW,MAAM,cAAc,KAAK,aAAa,SAAS,MAAM;AAAA,IAC9E;AAEA,UAAM,iBAAiB,MAAM;AAC3B,UAAI,iBAAiB,OAAO;AAC1B,yBAAiB,MAAM,SAAS;AAAA,UAC9B,KAAK,iBAAiB,MAAM;AAAA,UAC5B,UAAU;AAAA,QACZ,CAAC;AAAA,MACH,OAAO;AACL,eAAO,SAAS;AAAA,UACd,KAAK,SAAS,KAAK;AAAA,UACnB,UAAU;AAAA,QACZ,CAAC;AAAA,MACH;AAAA,IACF;AAEA,IAAAC,WAAU,MAAM;AACd,qBAAe,eAAe;AAC9B,qBAAe,4BAA4B,YAAY,kBAAkB,CAAC;AAG1E,YAAM,mBAAmB,MAAM,eAAe,SAAY,MAAM,aAAa,MAAM;AAEnF,UAAI,kBAAkB;AACpB,uBAAe;AAAA,MACjB;AAEA,UAAI,SAAS,OAAO;AAClB,uBAAe,eAAe;AAAA,MAChC;AAAA,IACF,CAAC;AAED,IAAAC,aAAY,mBAAmB;AAE/B,IAAAC;AAAA,MACE,MAAM,CAAC,SAAS,OAAO,MAAM,UAAU,MAAM,YAAY;AAAA,MACzD,CAAC,CAAC,OAAO,MAAM;AACb,kBAAU,eAAe,eAAe,IAAI,eAAe,gBAAgB;AAAA,MAC7E;AAAA,IACF;AAEA,WAA0B;AAAA,MACxB,WAAW,YAAY;AAAA,MACvB,eAAe,YAAY;AAAA,MAC3B,aAAa,YAAY;AAAA,MACzB,SAAS,YAAY;AAAA,IACvB,CAAC;AAED,WAAO,MAAM;AACX,YAAM,iBAAiB,CAAC;AAExB,YAAM,gBAGF;AAAA,QACF,iBAAiB,gBAAgB;AAAA,QACjC,aAAa,YAAY;AAAA,QACzB,aAAa,gBAAgB;AAAA,QAC7B,SAAS,YAAY;AAAA,MACvB;AAGA,UAAI,CAAC,MAAM,cAAc;AACvB,cAAM,iBAAiB,SAAS,SAAS,CAAC,MAAM;AAChD,cAAM,kBAAiD;AAAA,UACrD,SAAS,gBAAgB;AAAA,UACzB,OAAO,YAAY;AAAA,UACnB,UAAU;AAAA,UACV,YAAY,CAAC;AAAA,UACb,SAAS,gBAAgB;AAAA,UACzB,GAAG;AAAA,QACL;AAEA,uBAAe;AAAA,UACbC;AAAA,YACE;AAAA,YACA,EAAE,KAAK,gBAAgB;AAAA,YACvB,MAAM,WACF,MAAM,SAAS,eAAe,IAC9B,gBAAgB,QACd,MAAM,UAAU,eAAe,IAC/B;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAEA,qBAAe;AAAA,QACbA;AAAA,UACE,MAAM;AAAA,UACN,EAAE,GAAG,OAAO,KAAK,gBAAgB;AAAA,UACjC,MAAM,UAAU;AAAA,YACd,SAAS,gBAAgB,SAAS,YAAY;AAAA,YAC9C,iBAAiB,gBAAgB;AAAA,YACjC,aAAa,YAAY;AAAA,UAC3B,CAAC;AAAA,QACH;AAAA,MACF;AAGA,UAAI,CAAC,MAAM,YAAY;AACrB,cAAM,iBAAiB,SAAS,SAAS,CAAC,MAAM;AAChD,cAAM,cAA6C;AAAA,UACjD,SAAS,YAAY;AAAA,UACrB,OAAO,YAAY;AAAA,UACnB,UAAU;AAAA,UACV,YAAY,CAAC;AAAA,UACb,SAAS,YAAY;AAAA,UACrB,GAAG;AAAA,QACL;AAEA,uBAAe;AAAA,UACbA;AAAA,YACE;AAAA,YACA,EAAE,KAAK,cAAc;AAAA,YACrB,MAAM,OAAO,MAAM,KAAK,WAAW,IAAI,YAAY,QAAQ,MAAM,UAAU,WAAW,IAAI;AAAA,UAC5F;AAAA,QACF;AAAA,MACF;AAEA,aAAOA,GAAE,UAAU,CAAC,GAAG,MAAM,UAAU,CAAC,GAAG,cAAc,EAAE,QAAQ,IAAI,cAAc;AAAA,IACvF;AAAA,EACF;AACF,CAAC;AAED,IAAO,yBAAQ;;;AC3Sf;AAAA,EAEE,mBAAAC;AAAA,EAGA,4BAAAC;AAAA,EAGA,iCAAAC;AAAA,EACA,UAAAC;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAoB,YAAAC,WAAU,mBAAAC,kBAAkC,KAAAC,IAAG,aAAAC,YAAW,eAAAC,cAAuB,OAAAC,YAAW;AAGhH,IAAMC,QAAO,MAAM;AAAC;AASpB,IAAM,OAAoBC,iBAAgB;AAAA,EACxC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,IAAI;AAAA,MACF,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA,IACX;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS,OAAO,CAAC;AAAA,IACnB;AAAA,IACA,MAAM;AAAA,MACJ,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM,CAAC,SAAS,QAAQ,QAAQ;AAAA,MAChC,SAAS;AAAA,IACX;AAAA,IACA,eAAe;AAAA,MACb,MAAM,CAAC,SAAS,QAAQ,QAAQ;AAAA,MAChC,SAAS;AAAA,IACX;AAAA,IACA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS,MAAM,CAAC;AAAA,IAClB;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS,MAAM,CAAC;AAAA,IAClB;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS,OAAO,CAAC;AAAA,IACnB;AAAA,IACA,wBAAwB;AAAA,MACtB,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM,CAAC,SAAS,QAAQ,KAAK;AAAA,MAC7B,SAAS;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM,CAAC,QAAQ,QAAQ,KAAK;AAAA,MAC5B,SAAS;AAAA,IACX;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAASD;AAAA,IACX;AAAA,IACA,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAASA;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAASA;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAASA;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAASA;AAAA,IACX;AAAA,IACA,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAASA;AAAA,IACX;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAASA;AAAA,IACX;AAAA,IACA,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAASA;AAAA,IACX;AAAA,IACA,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAASA;AAAA,IACX;AAAA,IACA,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAASA;AAAA,IACX;AAAA,IACA,WAAW;AAAA,MACT,MAAM,CAAC,QAAQ,KAAK;AAAA,MACpB,SAAS,MAAM,CAAC;AAAA,IAClB;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM,CAAC,SAAS,MAAM;AAAA,MACtB,SAAS;AAAA,IACX;AAAA,IACA,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,WAAW;AAAA,MACT,MAAM,CAAC,QAAQ,QAAQ;AAAA,MACvB,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,MAAM,OAAO,EAAE,OAAO,MAAM,GAAG;AAC7B,UAAM,gBAAgBE,KAAI,CAAC;AAC3B,UAAM,eAAeA,KAAmC;AAExD,UAAM,gBAAgBC,UAA+B,MAAM;AACzD,UAAI,MAAM,aAAa,MAAM;AAC3B,eAAO,CAAC,OAAO;AAAA,MACjB;AAEA,UAAI,MAAM,aAAa,OAAO;AAC5B,eAAO,CAAC;AAAA,MACV;AAEA,UAAI,MAAM,QAAQ,MAAM,QAAQ,GAAG;AACjC,eAAO,MAAM;AAAA,MACf;AAEA,aAAO,CAAC,MAAM,QAAQ;AAAA,IACxB,CAAC;AAED,UAAM,gBAAgBA,UAAS,MAAM;AACnC,UAAI,MAAM,aAAa,GAAG;AAExB,eAAO,MAAM;AAAA,MACf;AAEA,UAAI,cAAc,MAAM,WAAW,KAAK,cAAc,MAAM,CAAC,MAAM,SAAS;AAG1E,eAAO;AAAA,MACT;AAGA,aAAO,OAAO,IAAI,mBAAmB;AAAA,IACvC,CAAC;AAED,IAAAC,WAAU,MAAM;AACd,UAAI,cAAc,MAAM,SAAS,OAAO,GAAG;AACzC,iBAAS;AAAA,MACX;AAAA,IACF,CAAC;AAED,IAAAC,aAAY,MAAM;AAChB,mBAAa,aAAa,KAAK;AAAA,IACjC,CAAC;AAED,UAAM,SAASF;AAAA,MAAS,MACtBG,iBAAgB,MAAM,IAAI,IAAI,MAAM,KAAK,UAAW,MAAM,UAAU,OAAO,YAAY;AAAA,IACzF;AACA,UAAM,KAAKH,UAAS,MAAM;AACxB,UAAI,OAAO,MAAM,OAAO,YAAY,MAAM,GAAG,YAAY,MAAM,KAAK;AAElE,eAAO,MAAM;AAAA,MACf;AAEA,aAAO,OAAO,UAAU,QAAQ,WAAW,MAAM,GAAG,YAAY;AAAA,IAClE,CAAC;AACD,UAAM,iBAAiBA;AAAA,MAAS,MAC9BI;AAAA,QACE,OAAO;AAAA,QACPD,iBAAgB,MAAM,IAAI,IAAI,MAAM,KAAK,MAAO,MAAM;AAAA,QACtD,MAAM,QAAQ,CAAC;AAAA,QACf,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,OAAOH,UAAS,MAAM,eAAe,MAAM,CAAC,CAAC;AACnD,UAAM,OAAOA,UAAS,MAAM,eAAe,MAAM,CAAC,CAAC;AAEnD,UAAM,oBAAoBA,UAAS,MAAM;AACvC,UAAI,MAAM,WAAW;AACnB,eAAO,MAAM;AAAA,MACf;AAEA,UAAI,MAAM,WAAWG,iBAAgB,MAAM,IAAI,GAAG;AAChD,eAAOE,+BAA8B,MAAM,IAAI;AAAA,MACjD;AAEA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,UAAUL,UAAS,MAAM;AAC7B,UAAI,GAAG,UAAU,UAAU;AACzB,eAAO,EAAE,MAAM,SAAS;AAAA,MAC1B;AAEA,UAAI,GAAG,UAAU,OAAO,OAAO,GAAG,UAAU,UAAU;AACpD,eAAO,EAAE,MAAM,KAAK,MAAM;AAAA,MAC5B;AAEA,aAAO,CAAC;AAAA,IACV,CAAC;AAED,UAAM,aAAaA,UAAS,OAAO;AAAA,MACjC,MAAM,KAAK;AAAA,MACX,QAAQ,OAAO;AAAA,MACf,SAAS,MAAM;AAAA,MACf,gBAAgB,MAAM;AAAA,MACtB,eAAe,MAAM,iBAAiB,OAAO,UAAU;AAAA,MACvD,aAAa,MAAM;AAAA,MACnB,MAAM,MAAM;AAAA,MACZ,QAAQ,MAAM;AAAA,MACd,SAAS,MAAM;AAAA,MACf,OAAO,MAAM;AAAA,MACb,WAAW,kBAAkB;AAAA,MAC7B,WAAW,MAAM;AAAA,IACnB,EAAE;AAEF,UAAM,cAAcA,UAAS,OAAO;AAAA,MAClC,GAAG,WAAW;AAAA,MACd,gBAAgB,MAAM;AAAA,MACtB,eAAe,MAAM;AAAA,MACrB,UAAU,MAAM;AAAA,MAChB,SAAS,CAAC,UAAwB;AAChC,sBAAc;AACd,cAAM,UAAU,KAAK;AAAA,MACvB;AAAA,MACA,YAAY,MAAM;AAAA,MAClB,UAAU,CAAC,UAAuB;AAChC,sBAAc;AACd,cAAM,WAAW,KAAK;AAAA,MACxB;AAAA,MACA,UAAU,MAAM;AAAA,MAChB,WAAW,MAAM;AAAA,MACjB,SAAS,MAAM;AAAA,IACjB,EAAE;AAEF,UAAM,WAAW,MAAM;AACrB,MAAAM,QAAO;AAAA,QACL,KAAK;AAAA,QACL;AAAA,UACE,GAAG,WAAW;AAAA,UACd,eAAe,MAAM;AAAA,UACrB,cAAc,MAAM;AAAA,QACtB;AAAA,QACA;AAAA,UACE,UAAU,cAAc;AAAA,UACxB,WAAW,MAAM;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAEA,UAAM,gBAAgB;AAAA,MACpB,SAAS,CAAC,UAAsB;AAC9B,YAAI,gBAAgB,KAAK,GAAG;AAC1B,gBAAM,eAAe;AACrB,UAAAA,QAAO,MAAM,KAAK,OAAO,YAAY,KAAK;AAAA,QAC5C;AAAA,MACF;AAAA,IACF;AAEA,UAAM,sBAAsB;AAAA,MAC1B,cAAc,MAAM;AAClB,qBAAa,QAAQ,WAAW,MAAM;AACpC,mBAAS;AAAA,QACX,GAAG,OAAO,IAAI,qBAAqB,CAAC;AAAA,MACtC;AAAA,MACA,cAAc,MAAM;AAClB,qBAAa,aAAa,KAAK;AAAA,MACjC;AAAA,MACA,SAAS,cAAc;AAAA,IACzB;AAEA,UAAM,sBAAsB;AAAA,MAC1B,aAAa,CAAC,UAAsB;AAClC,YAAI,gBAAgB,KAAK,GAAG;AAC1B,gBAAM,eAAe;AACrB,mBAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,WAAW,CAAC,UAAyB;AACnC,YAAI,eAAe,KAAK,GAAG;AACzB,gBAAM,eAAe;AACrB,mBAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,WAAW,CAAC,UAAsB;AAChC,YAAI,gBAAgB,KAAK,GAAG;AAC1B,gBAAM,eAAe;AACrB,UAAAA,QAAO,MAAM,KAAK,OAAO,YAAY,KAAK;AAAA,QAC5C;AAAA,MACF;AAAA,MACA,SAAS,CAAC,UAAyB;AACjC,YAAI,eAAe,KAAK,GAAG;AACzB,gBAAM,eAAe;AACrB,UAAAA,QAAO,MAAM,KAAK,OAAO,YAAY,KAAK;AAAA,QAC5C;AAAA,MACF;AAAA,MACA,SAAS,CAAC,UAAsB;AAC9B,YAAI,gBAAgB,KAAK,GAAG;AAE1B,gBAAM,eAAe;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAEA,WAAO,MAAM;AACX,aAAOC;AAAA,QACL,GAAG;AAAA,QACH;AAAA,UACE,GAAG;AAAA,UACH,GAAG,QAAQ;AAAA,UACX,gBAAgB,cAAc,QAAQ,IAAI,KAAK;AAAA,UAC/C,IAAI,MAAM;AACR,gBAAI,cAAc,MAAM,SAAS,OAAO,GAAG;AACzC,qBAAO;AAAA,YACT;AAEA,gBAAI,cAAc,MAAM,SAAS,OAAO,GAAG;AACzC,qBAAO;AAAA,YACT;AAEA,mBAAO;AAAA,UACT,GAAG;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;AAED,IAAO,eAAQ;;;ACjXf;AAAA,EASE;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA,4BAAAC;AAAA,EAEA;AAAA,EAKA,gBAAAC;AAAA,OAIK;AACP,SAAS,aAAAC,kBAAiB;AAC1B,SAA0B,4BAAAC,iCAA6D;AAqFxE,SAAR,WACF,MACqE;AACxE,QAAM,EAAE,aAAa,MAAM,qBAAqB,IAAIC,cAAa,sBAA6B,GAAG,IAAI;AAErG,MAAI,kBAA0C;AAC9C,MAAI,4BAA6E;AAEjF,QAAM;AAAA,IACJ,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,aAAa;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAGD,QAAM,OAAO;AAGZ,EAAC,KAAa,WAAW;AAE1B,QAAM,SAAS,OACb,QACA,KACA,YACuB;AACvB,UAAM,WAAW,QAAQ,WAAW;AAEpC,QAAI,aAAa,OAAO;AACtB,aAAO,QAAQ,OAAO,IAAI,MAAM,+BAA+B,CAAC;AAAA,IAClE;AAEA,mCAA+B;AAC/B,sBAAkB;AAElB,sBAAkB,IAAI,gBAAgB;AAEtC,UAAM,cAA2B;AAAA,MAC/B,QAAQ,MAAM,iBAAiB,MAAM;AAAA,IACvC;AAEA,YAAQ,gBAAgB,WAAW;AAEnC,YAAQ,aAAa,QAAQ,cAAc,6BAA6B;AACxE,gCAA4B;AAE5B,QAAI;AAEJ,QAAI,QAAQ,YAAY;AACtB,iBAAWC,WAAU,KAAK,KAAK,CAAC;AAChC,YAAM,iBAAiB,QAAQ,WAAWA,WAAU,QAAQ,CAAC;AAE7D,UAAI,gBAAgB;AAClB,eAAO,KAAK,cAAc,EAAE,QAAQ,CAACC,SAAQ;AAC3C;AAAC,UAAC,KAAaA,IAAG,IAAK,eAAuBA,IAAG;AAAA,QACnD,CAAC;AAAA,MACH;AAAA,IACF;AAEA,SAAK,aAAa;AAClB,YAAQ,UAAU;AAElB,UAAM,YAAY,aAAa;AAC/B,UAAM,kBAAkB,UAAU,KAAK,KAAK,CAAC;AAC7C,UAAM,cAAc,SAAS,eAAsD;AAEnF,QAAI,aAAa;AACjB,QAAI;AACJ,QAAI;AAEJ,QAAI,WAAW,OAAO;AACpB,YAAM,CAAC,aAAa,IAAIC;AAAA,QACtB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,mBAAa;AAAA,IACf,OAAO;AACL,UAAI,aAAa;AACf,sBAAc,iBAAiB,eAAsD;AAAA,MACvF,OAAO;AACL,sBAAc,KAAK,UAAU,eAAe;AAC5C,sBAAc;AAAA,MAChB;AAAA,IACF;AAEA,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,UAAU,EAAE,QAAQ;AAAA,QAC9C;AAAA,QACA,KAAK;AAAA,QACL,MAAM;AAAA,QACN,SAAS;AAAA,UACP,QAAQ;AAAA,UACR,GAAI,cAAc,EAAE,gBAAgB,YAAY,IAAI,CAAC;AAAA,UACrD,GAAG,QAAQ;AAAA,QACb;AAAA,QACA,QAAQ,gBAAgB;AAAA,QACxB,kBAAkB,CAAC,UAA6B;AAC9C,eAAK,WAAW;AAChB,kBAAQ,aAAa,KAAK;AAAA,QAC5B;AAAA,MACF,CAAC;AAED,YAAM,eAAgB,SAAS,OAAO,KAAK,MAAM,SAAS,IAAI,IAAI;AAElE,UAAI,SAAS,UAAU,OAAO,SAAS,SAAS,KAAK;AACnD,yBAAiB;AAChB,QAAC,KAAa,WAAW;AAE1B,gBAAQ,YAAY,cAAc,QAAQ;AAE1C,YAAI,CAAC,6BAA6B,GAAG;AACnC,sBAAYF,WAAU,KAAK,KAAK,CAAC,CAAC;AAAA,QACpC;AAEA,aAAK,UAAU;AAEf,eAAO;AAAA,MACT;AAEA,YAAM,IAAI,kBAAkB,8BAA8B,SAAS,MAAM,IAAI,UAAU,GAAG;AAAA,IAC5F,SAAS,OAAgB;AACvB,UAAI,UAAU;AACZ,eAAO,KAAK,QAAQ,EAAE,QAAQ,CAACC,SAAQ;AACrC;AAAC,UAAC,KAAaA,IAAG,IAAK,SAAiBA,IAAG;AAAA,QAC7C,CAAC;AAAA,MACH;AAEA,UAAI,iBAAiB,mBAAmB;AACtC,YAAI,MAAM,SAAS,WAAW,KAAK;AACjC,gBAAM,eAAe,KAAK,MAAM,MAAM,SAAS,IAAI;AACnD,gBAAM,mBAAmB,aAAa,UAAU,CAAC;AACjD,gBAAM,kBACJ,cAAc,QAAQ,IAAI,mBAAmBE,0BAAyB,gBAAgB;AAGxF,eAAK,YAAY,EAAE,SAAS,eAAe;AAC3C,kBAAQ,UAAU,eAAyB;AAAA,QAC7C,OAAO;AACL,kBAAQ,kBAAkB,MAAM,QAAQ;AAAA,QAC1C;AAEA,cAAM;AAAA,MACR;AAEA,UAAI,iBAAiB,sBAAuB,iBAAiB,SAAS,MAAM,SAAS,cAAe;AAClG,gBAAQ,WAAW;AACnB,cAAM,IAAI,mBAAmB,yBAAyB,GAAG;AAAA,MAC3D;AAEA,cAAQ,iBAAiB,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,eAAe,CAAC;AAEpF,YAAM;AAAA,IACR,UAAE;AACA,uBAAiB;AACjB,wBAAkB;AAClB,cAAQ,WAAW;AAAA,IACrB;AAAA,EACF;AAEA,QAAM,qBACJ,CAAC,WACD,OAAO,KAAa,UAAkD,CAAC,MAA0B;AAC/F,WAAO,OAAO,QAAQ,KAAK,OAAO;AAAA,EACpC;AAEF,SAAO,OAAO,MAAM;AAAA,IAClB,UAAUC,OAAgD;AACxD,YAAM,SAASL,cAAa,qBAAqBK,OAAa,wBAAwB,CAAC;AAEvF,aAAO,OAAO,OAAO,QAAQ,OAAO,KAAK,OAAO,OAAiD;AAAA,IACnG;AAAA,IAEA,KAAK,mBAAmB,KAAK;AAAA,IAC7B,MAAM,mBAAmB,MAAM;AAAA,IAC/B,KAAK,mBAAmB,KAAK;AAAA,IAC7B,OAAO,mBAAmB,OAAO;AAAA,IACjC,QAAQ,mBAAmB,QAAQ;AAAA,IAEnC,SAAS;AACP,UAAI,iBAAiB;AACnB,wBAAgB,MAAM;AAAA,MACxB;AAAA,IACF;AAAA,IAEA,gBAAgB,MAA6B;AAC3C,6BAAuB,IAAI;AAC3B,aAAO;AAAA,IACT;AAAA,IAEA,WAAW,UAAkD;AAC3D,kCAA4B;AAC5B,aAAO;AAAA,IACT;AAAA,IAEA,gBAAgB;AACd,oBAAc,OAAO;AACrB,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AAED,QAAM,2BAA2B,KAAK;AACtC,OAAK,mBAAmB,IAAIA,UAAuF;AACjH,6BAAyB,KAAK,MAAM,GAAGA,KAAI;AAE3C,WAAO;AAAA,EACT;AAEA,SAAO,wBAAwB,IAAK,OAAsD;AAC5F;;;AC5UA,SAAqC,UAAAC,eAAc;AACnD,SAAS,aAAAC,YAAW,eAAAC,oBAAmB;AAExB,SAAR,QACL,UACA,iBAAgC,CAAC,GACjC,UAAuB;AAAA,EACrB,WAAW;AAAA,EACX,WAAW;AACb,GAIA;AACA,QAAM,EAAE,MAAM,MAAM,IAAIF,QAAO,KAAK,UAAU,gBAAgB;AAAA,IAC5D,GAAG;AAAA,IACH,WAAW;AAAA,EACb,CAAC;AAED,EAAAC,WAAU,MAAM;AACd,QAAI,QAAQ,aAAa,MAAM;AAC7B,YAAM;AAAA,IACR;AAAA,EACF,CAAC;AAED,EAAAC,aAAY,MAAM;AAChB,SAAK;AAAA,EACP,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;;;ACjCA,SAAS,UAAAC,eAA4B;AACrC,SAAS,aAAAC,YAAW,eAAAC,cAAa,OAAAC,YAAgB;AAElC,SAAR,YAA6B,UAAwB,CAAC,GAK3D;AACA,QAAM,gBAAgBA,KAAI,KAAK;AAC/B,QAAM,gBAAgBA,KAAmB,IAAI;AAC7C,QAAM,eAAeA,KAAI,KAAK;AAE9B,QAAM,SAAS,OAAO,WAAW,cAAc,OAAOH,QAAO,UAAU,OAAO,SAAS,UAAU,OAAO;AACxG,QAAM,WAAW,OAAO,WAAW,cAAc,OAAOA,QAAO,eAAe,OAAO,SAAS,UAAU,OAAO;AAE/G,gBAAc,QAAQ,QAAQ,kBAAkB;AAEhD,gBAAc,QAAQ,aAAa;AACnC,eAAa,QAAQ,WAAW;AAEhC,MAAI;AACJ,MAAI;AAEJ,EAAAC,WAAU,MAAM;AACd,4BAAwBD,QAAO,GAAG,eAAe,CAAC,MAAM;AACtD,UAAI,EAAE,OAAO,MAAM,IAAI,aAAa,OAAO,SAAS,UAAU;AAC5D,sBAAc,QAAQ;AAAA,MACxB;AAAA,IACF,CAAC;AAED,2BAAuBA,QAAO,GAAG,cAAc,CAAC,MAAM;AACpD,UAAI,EAAE,OAAO,MAAM,IAAI,aAAa,OAAO,SAAS,UAAU;AAC5D,sBAAc,QAAQ;AACtB,qBAAa,QAAQ;AAAA,MACvB;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,EAAAE,aAAY,MAAM;AAChB,yBAAqB;AACrB,0BAAsB;AAAA,EACxB,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,MAAMF,QAAO,MAAM,OAAO,SAAS,UAAU,OAAO;AAAA,EAC7D;AACF;;;AClDA,SAAS,UAAAI,gBAAc;AACvB,SAAS,aAAAC,kBAAiB;AAC1B,SAAS,YAAY,YAAAC,WAAU,OAAAC,MAAU,SAAAC,cAAa;AAEvC,SAAR,YACL,MACAC,MACY;AACZ,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,KAAK,mBAAmB,OAAO;AAC9E,WAAO;AAAA,EACT;AAEA,QAAM,WAAWL,SAAO,QAAQK,IAAG;AACnC,QAAM,OAAO,WAAW,IAAI,IAAIH,YAAWC;AAC3C,QAAM,eAAe,OAAO,KAAK,eAAe,cAAc,OAAO,KAAK,cAAc;AACxF,QAAM,aAAa;AAAA,IACjB,aAAa,SAAY,OAAO,eAAe,KAAK,UAAWF,WAAU,QAAQ,CAAC,IAAIA,WAAU,QAAQ;AAAA,EAC1G;AAEA,EAAAG;AAAA,IACE;AAAA,IACA,CAAC,aAAa;AACZ,MAAAJ,SAAO,SAASC,WAAU,eAAe,KAAK,WAAY,IAAI,QAAQ,GAAGI,IAAG;AAAA,IAC9E;AAAA,IACA,EAAE,WAAW,MAAM,MAAM,KAAK;AAAA,EAChC;AAEA,SAAO;AACT;;;AC5BA,SAAwB,UAAAC,gBAAc;AACtC,SAAS,OAAAC,YAAW;AACpB,SAAS,YAAAC,WAAU,mBAAAC,kBAAiB,KAAAC,IAAG,UAAU,eAAAC,cAAuB,OAAAC,MAAgB,SAAAC,cAAa;AAGrG,IAAO,sBAAQC,iBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,EAIP,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,MAAM,CAAC,QAAQ,KAAa;AAAA,IAC9B;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,IACR;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,IAAI;AAAA,MACF,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,MAAM,OAAO,EAAE,MAAM,GAAG;AACtB,UAAM,SAASC,KAAI,KAAK;AACxB,UAAM,WAAWA,KAAI,KAAK;AAC1B,UAAM,WAAWA,KAAiC,IAAI;AACtD,UAAM,aAAaA,KAAwB,IAAI;AAC/C,UAAMC,QAAO,QAAQ;AAErB,UAAM,OAAOC,UAAS,MAAM;AAC1B,aAAO,MAAM,OAAS,MAAM,QAAQ,MAAM,IAAI,IAAI,MAAM,OAAO,CAAC,MAAM,IAAI,IAAkB,CAAC;AAAA,IAC/F,CAAC;AAED,aAAS,kBAA0C;AACjD,YAAM,eAAuC,EAAE,gBAAgB,MAAM,GAAG,MAAM,OAAO;AAErF,UAAI,MAAM,MAAM;AACd,qBAAa,OAAQ,MAAM,QAAQ,MAAM,IAAI,IAAI,MAAM,OAAO,CAAC,MAAM,IAAI;AAAA,MAC3E;AAEA,aAAO;AAAA,IACT;AAEA,aAAS,mBAAmB;AAC1B,UAAI,OAAO,WAAW,aAAa;AACjC;AAAA,MACF;AAEA,eAAS,OAAO,WAAW;AAE3B,eAAS,QAAQ,IAAI;AAAA,QACnB,CAAC,YAAY;AACX,cAAI,CAAC,QAAQ,CAAC,EAAE,gBAAgB;AAC9B;AAAA,UACF;AAEA,cAAI,SAAS,OAAO;AAClB;AAAA,UACF;AAEA,cAAI,CAAC,MAAM,UAAU,OAAO,OAAO;AACjC;AAAA,UACF;AAEA,mBAAS,QAAQ;AAEjB,gBAAM,eAAe,gBAAgB;AAErC,UAAAC,SAAO,OAAO;AAAA,YACZ,GAAG;AAAA,YACH,SAAS,CAAC,MAAM;AACd,uBAAS,QAAQ;AACjB,2BAAa,UAAU,CAAC;AAAA,YAC1B;AAAA,YACA,UAAU,CAAC,MAAM;AACf,qBAAO,QAAQ;AACf,uBAAS,QAAQ;AACjB,2BAAa,WAAW,CAAC;AAEzB,kBAAI,CAAC,MAAM,QAAQ;AACjB,yBAAS,OAAO,WAAW;AAAA,cAC7B;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QACA;AAAA,UACE,YAAY,GAAG,MAAM,MAAM;AAAA,QAC7B;AAAA,MACF;AAEA,UAAI,WAAW,OAAO;AACpB,iBAAS,MAAM,QAAQ,WAAW,KAAK;AAAA,MACzC;AAAA,IACF;AAEA,IAAAC;AAAA,MACE,MAAM,KAAK,MAAM,IAAI,CAACC,SAAQC,KAAIL,MAAK,OAAOI,IAAG,CAAC;AAAA,MAClD,MAAM;AACJ,cAAM,SAAS,KAAK,MAAM,SAAS,KAAK,KAAK,MAAM,MAAM,CAACA,SAAQC,KAAIL,MAAK,OAAOI,IAAG,MAAM,MAAS;AACpG,eAAO,QAAQ;AAEf,YAAI,UAAU,CAAC,MAAM,QAAQ;AAC3B;AAAA,QACF;AAEA,YAAI,CAAC,SAAS,SAAS,CAAC,QAAQ;AAC9B,mBAAS,gBAAgB;AAAA,QAC3B;AAAA,MACF;AAAA,MACA,EAAE,WAAW,KAAK;AAAA,IACpB;AAEA,IAAAE,aAAY,MAAM;AAChB,eAAS,OAAO,WAAW;AAAA,IAC7B,CAAC;AAED,WAAO,MAAM;AACX,YAAM,MAAM,CAAC;AAEb,UAAI,MAAM,UAAU,CAAC,OAAO,OAAO;AACjC,YAAI,KAAKC,GAAE,MAAM,IAAI,EAAE,KAAK,WAAW,CAAC,CAAC;AAAA,MAC3C;AAEA,UAAI,CAAC,OAAO,OAAO;AACjB,YAAI,KAAK,MAAM,WAAW,MAAM,SAAS,CAAC,CAAC,IAAI,IAAI;AAAA,MACrD,WAAW,MAAM,SAAS;AACxB,YAAI,KAAK,MAAM,QAAQ,EAAE,UAAU,SAAS,MAAM,CAAC,CAAC;AAAA,MACtD;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AACF,CAAC;;;AhBzHM,IAAM,SAAS,WAAW,OAA4B,CAAC,CAAC;",
|
|
6
|
-
"names": ["http", "router", "router", "reactive", "ref", "key", "router", "UseFormUtils", "cloneDeep", "router", "cloneDeep", "router", "cloneDeep", "config", "key", "restored", "key", "UseFormUtils", "cloneDeep", "args", "page", "router", "ref", "router", "layout", "reactive", "router", "h", "progress", "page", "http", "layout", "head", "vueApp", "h", "router", "router", "get", "
|
|
4
|
+
"sourcesContent": ["import { config as coreConfig } from '@inertiajs/core'\nimport type { VueInertiaAppConfig } from './types'\n\nexport { http, progress, router } from '@inertiajs/core'\nexport { default as App, usePage } from './app'\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './deferred'\nexport { createForm, default as Form, useFormContext } from './form'\nexport { default as Head } from './head'\nexport { default as InfiniteScroll } from './infiniteScroll'\nexport { resetLayoutProps, setLayoutProps } from './layoutProps'\nexport { InertiaLinkProps, default as Link } from './link'\nexport { type LayoutCallback, type VueInertiaAppConfig, type VuePageHandlerArgs } from './types'\nexport { InertiaForm, InertiaFormProps, InertiaPrecognitiveForm, default as useForm } from './useForm'\nexport { default as useHttp } from './useHttp'\nexport { default as usePoll } from './usePoll'\nexport { default as usePrefetch } from './usePrefetch'\nexport { default as useRemember } from './useRemember'\nexport { default as WhenVisible } from './whenVisible'\n\nexport const config = coreConfig.extend<VueInertiaAppConfig>({})\n", "import {\n createHeadManager,\n HeadManager,\n HeadManagerOnUpdateCallback,\n HeadManagerTitleCallback,\n isPropsObject,\n isPropsObjectOrCallback,\n normalizeLayouts,\n Page,\n PageProps,\n router,\n SharedPageProps,\n} from '@inertiajs/core'\nimport {\n Component,\n computed,\n DefineComponent,\n defineComponent,\n h,\n markRaw,\n Plugin,\n PropType,\n reactive,\n ref,\n shallowRef,\n} from 'vue'\nimport { state as layoutPropsState, resetLayoutProps } from './layoutProps'\nimport remember from './remember'\nimport { VuePageHandlerArgs } from './types'\nimport useForm from './useForm'\n\ntype LayoutComponent = DefineComponent | Component\n\nfunction isComponent(value: unknown): value is LayoutComponent {\n if (!value) {\n return false\n }\n\n if (typeof value === 'function') {\n return true\n }\n\n if (typeof value === 'object') {\n const obj = value as Record<string, unknown>\n return (\n typeof obj.render === 'function' ||\n typeof obj.setup === 'function' ||\n typeof obj.template === 'string' ||\n '__file' in obj ||\n '__name' in obj\n )\n }\n\n return false\n}\n\nfunction isRenderFunction(value: unknown): boolean {\n if (typeof value !== 'function') {\n return false\n }\n\n const fn = value as Function\n return fn.length === 2 && typeof fn.prototype === 'undefined'\n}\n\nexport interface InertiaAppProps<SharedProps extends PageProps = PageProps> {\n initialPage: Page<SharedProps>\n initialComponent?: DefineComponent\n resolveComponent?: (name: string, page?: Page) => DefineComponent | Promise<DefineComponent>\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdateCallback\n defaultLayout?: (name: string, page: Page) => unknown\n}\n\nexport type InertiaApp = DefineComponent<InertiaAppProps>\n\nconst component = ref<DefineComponent | undefined>(undefined)\nconst page = ref<Page>()\nlet pageAccessor: Page | null = null\nconst layout = shallowRef(null)\nconst key = ref<number | undefined>(undefined)\nexport let headManager: HeadManager\n\nconst App: InertiaApp = defineComponent({\n name: 'Inertia',\n props: {\n initialPage: {\n type: Object as PropType<Page>,\n required: true,\n },\n initialComponent: {\n type: Object as PropType<DefineComponent>,\n required: false,\n },\n resolveComponent: {\n type: Function as PropType<(name: string, page?: Page) => DefineComponent | Promise<DefineComponent>>,\n required: false,\n },\n titleCallback: {\n type: Function as PropType<HeadManagerTitleCallback>,\n required: false,\n default: (title: string) => title,\n },\n onHeadUpdate: {\n type: Function as PropType<HeadManagerOnUpdateCallback>,\n required: false,\n default: () => () => {},\n },\n defaultLayout: {\n type: Function as PropType<(name: string, page: Page) => unknown>,\n required: false,\n },\n },\n setup({\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n defaultLayout,\n }: InertiaAppProps) {\n component.value = initialComponent ? markRaw(initialComponent) : undefined\n page.value = { ...initialPage, flash: initialPage.flash ?? {} }\n key.value = undefined\n\n const isServer = typeof window === 'undefined'\n\n headManager = createHeadManager(isServer, titleCallback || ((title: string) => title), onHeadUpdate || (() => {}))\n\n if (!isServer) {\n router.init<DefineComponent>({\n initialPage,\n resolveComponent: resolveComponent!,\n swapComponent: async (options: VuePageHandlerArgs) => {\n if (!options.preserveState) {\n resetLayoutProps()\n }\n\n component.value = markRaw(options.component)\n page.value = options.page\n key.value = options.preserveState ? key.value : Date.now()\n },\n onFlash: (flash) => {\n page.value = { ...page.value!, flash }\n },\n })\n\n router.on('navigate', () => headManager.forceUpdate())\n }\n\n return () => {\n if (component.value) {\n component.value.inheritAttrs = !!component.value.inheritAttrs\n\n const child = h(component.value, {\n ...page.value!.props,\n key: key.value,\n })\n\n if (layout.value) {\n component.value.layout = layout.value\n layout.value = null\n }\n\n if (component.value.layout && isRenderFunction(component.value.layout)) {\n return (component.value.layout as Function)(h, child)\n }\n\n let effectiveLayout: unknown\n let callbackProps: Record<string, unknown> | null = null\n const layoutValue = component.value.layout\n\n if (\n typeof layoutValue === 'function' &&\n (layoutValue as Function).length <= 1 &&\n typeof (layoutValue as Function).prototype === 'undefined'\n ) {\n const result = (layoutValue as Function)(page.value!.props)\n\n if (isPropsObjectOrCallback(result, isComponent)) {\n effectiveLayout = defaultLayout?.(page.value!.component, page.value!)\n callbackProps = result as Record<string, unknown>\n } else {\n effectiveLayout = result\n }\n } else if (isPropsObject(layoutValue, isComponent)) {\n effectiveLayout = defaultLayout?.(page.value!.component, page.value!)\n callbackProps = layoutValue as Record<string, unknown>\n } else {\n effectiveLayout = layoutValue ?? defaultLayout?.(page.value!.component, page.value!)\n }\n\n if (effectiveLayout) {\n let layouts = normalizeLayouts(\n effectiveLayout,\n isComponent,\n component.value.layout && !callbackProps ? isRenderFunction : undefined,\n )\n\n if (callbackProps) {\n layouts = layouts.map((l) => ({ ...l, props: { ...l.props, ...callbackProps } }))\n }\n\n if (layouts.length > 0) {\n const dynamicProps = isServer ? { shared: {}, named: {} } : layoutPropsState.value\n\n return layouts.reduceRight((childNode, layout) => {\n const layoutComponent = layout.component as DefineComponent\n layoutComponent.inheritAttrs = !!layoutComponent.inheritAttrs\n\n return h(\n layoutComponent,\n {\n ...page.value!.props,\n ...layout.props,\n ...dynamicProps.shared,\n ...(layout.name ? dynamicProps.named[layout.name] || {} : {}),\n },\n () => childNode,\n )\n }, child)\n }\n }\n\n return child\n }\n }\n },\n})\nexport default App\n\nexport const plugin: Plugin = {\n install(app) {\n router.form = useForm\n\n Object.defineProperty(app.config.globalProperties, '$inertia', { get: () => router })\n Object.defineProperty(app.config.globalProperties, '$page', { get: () => page.value })\n Object.defineProperty(app.config.globalProperties, '$headManager', { get: () => headManager })\n\n app.mixin(remember)\n },\n}\n\nexport function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps & SharedPageProps> {\n if (!pageAccessor) {\n pageAccessor = reactive({\n props: computed(() => page.value?.props),\n url: computed(() => page.value?.url),\n component: computed(() => page.value?.component),\n version: computed(() => page.value?.version),\n clearHistory: computed(() => page.value?.clearHistory),\n deferredProps: computed(() => page.value?.deferredProps),\n rescuedProps: computed(() => page.value?.rescuedProps),\n mergeProps: computed(() => page.value?.mergeProps),\n prependProps: computed(() => page.value?.prependProps),\n deepMergeProps: computed(() => page.value?.deepMergeProps),\n matchPropsOn: computed(() => page.value?.matchPropsOn),\n rememberedState: computed(() => page.value?.rememberedState),\n encryptHistory: computed(() => page.value?.encryptHistory),\n scrollProps: computed(() => page.value?.scrollProps),\n flash: computed(() => page.value?.flash),\n }) as Page\n }\n\n return pageAccessor as Page<TPageProps>\n}\n", "import { createLayoutPropsStore, type LayoutProps, type NamedLayoutProps } from '@inertiajs/core'\nimport { ref } from 'vue'\n\nconst store = createLayoutPropsStore()\n\nexport const state = ref(store.get())\n\nstore.subscribe(() => {\n state.value = store.get()\n})\n\nexport function setLayoutProps(props: Partial<LayoutProps>): void\nexport function setLayoutProps<K extends keyof NamedLayoutProps>(name: K, props: Partial<NamedLayoutProps[K]>): void\nexport function setLayoutProps<T = never>(props: Partial<NoInfer<T>>): void\nexport function setLayoutProps<T = never>(name: string, props: Partial<NoInfer<T>>): void\nexport function setLayoutProps(nameOrProps: string | Record<string, unknown>, props?: Record<string, unknown>): void {\n if (typeof nameOrProps === 'string') {\n store.setFor(nameOrProps, props!)\n } else {\n store.set(nameOrProps)\n }\n}\n\nexport function resetLayoutProps(): void {\n store.reset()\n state.value = store.get()\n}\n", "import { router } from '@inertiajs/core'\nimport { cloneDeep } from 'es-toolkit'\nimport { ComponentOptions } from 'vue'\n\nconst remember: ComponentOptions = {\n created() {\n if (!this.$options.remember) {\n return\n }\n\n if (Array.isArray(this.$options.remember)) {\n this.$options.remember = { data: this.$options.remember }\n }\n\n if (typeof this.$options.remember === 'string') {\n this.$options.remember = { data: [this.$options.remember] }\n }\n\n if (typeof this.$options.remember.data === 'string') {\n this.$options.remember = { data: [this.$options.remember.data] }\n }\n\n const rememberKey =\n this.$options.remember.key instanceof Function\n ? this.$options.remember.key.call(this)\n : this.$options.remember.key\n\n const restored = router.restore(rememberKey) as Record<string, unknown> | undefined\n\n const rememberable = this.$options.remember.data.filter((key: string) => {\n return !(this[key] !== null && typeof this[key] === 'object' && this[key].__rememberable === false)\n }) as string[]\n\n const hasCallbacks = (key: string) => {\n return (\n this[key] !== null &&\n typeof this[key] === 'object' &&\n typeof this[key].__remember === 'function' &&\n typeof this[key].__restore === 'function'\n )\n }\n\n rememberable.forEach((key: string) => {\n if (this[key] !== undefined && restored !== undefined && restored[key] !== undefined) {\n hasCallbacks(key) ? this[key].__restore(restored[key]) : (this[key] = restored[key])\n }\n\n this.$watch(\n key,\n () => {\n router.remember(\n rememberable.reduce(\n (data, key) => ({\n ...data,\n [key]: cloneDeep(hasCallbacks(key) ? this[key].__remember() : this[key]),\n }),\n {},\n ),\n rememberKey,\n )\n },\n { immediate: true, deep: true },\n )\n })\n },\n}\n\nexport default remember\n", "import {\n CancelToken,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n Method,\n OptimisticCallback,\n Progress,\n RequestPayload,\n router,\n UrlMethodPair,\n UseFormArguments,\n UseFormSubmitArguments,\n UseFormSubmitOptions,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep } from 'es-toolkit'\nimport { NamedInputEvent, PrecognitionPath, ValidationConfig, Validator } from 'laravel-precognition'\nimport useFormState from './useFormState'\n\n// Reserved keys validation - logs console.error at runtime when form data keys conflict with form properties\nlet reservedFormKeys: Set<string> | null = null\nlet bootstrapping = false\n\nfunction validateFormDataKeys<TForm extends object>(data: TForm): void {\n if (bootstrapping) {\n return\n }\n\n if (reservedFormKeys === null) {\n bootstrapping = true\n reservedFormKeys = new Set(Object.keys(useForm({})))\n bootstrapping = false\n }\n\n const conflicts = Object.keys(data).filter((key) => reservedFormKeys!.has(key))\n if (conflicts.length > 0) {\n console.error(\n `[Inertia] useForm() data contains field(s) that conflict with form properties: ${conflicts.map((k) => `\"${k}\"`).join(', ')}. ` +\n `These fields will be overwritten by form methods/properties. Please rename these fields.`,\n )\n }\n}\n\nexport interface InertiaFormProps<TForm extends object> {\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n data(): TForm\n transform(callback: UseFormTransformCallback<TForm>): this\n defaults(): this\n defaults<T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): this\n defaults(fields: Partial<TForm>): this\n reset<K extends FormDataKeys<TForm>>(...fields: K[]): this\n clearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): this\n resetAndClearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): this\n setError<K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): this\n setError(errors: FormDataErrors<TForm>): this\n submit: (...args: UseFormSubmitArguments) => void\n get(url: string, options?: UseFormSubmitOptions): void\n post(url: string, options?: UseFormSubmitOptions): void\n put(url: string, options?: UseFormSubmitOptions): void\n patch(url: string, options?: UseFormSubmitOptions): void\n delete(url: string, options?: UseFormSubmitOptions): void\n cancel(): void\n dontRemember<K extends FormDataKeys<TForm>>(...fields: K[]): this\n optimistic<TProps>(callback: OptimisticCallback<TProps>): this\n withPrecognition(...args: UseFormWithPrecognitionArguments): InertiaPrecognitiveForm<TForm>\n}\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface InertiaFormValidationProps<TForm extends object> {\n invalid<K extends FormDataKeys<TForm>>(field: K): boolean\n setValidationTimeout(duration: number): this\n touch<K extends FormDataKeys<TForm>>(field: K | NamedInputEvent | Array<K>, ...fields: K[]): this\n touched<K extends FormDataKeys<TForm>>(field?: K): boolean\n valid<K extends FormDataKeys<TForm>>(field: K): boolean\n validate<K extends FormDataKeys<TForm> | PrecognitionPath<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ): this\n validateFiles(): this\n validating: boolean\n validator: () => Validator\n withAllErrors(): this\n withoutFileValidation(): this\n // Backward compatibility for easy migration from the original Precognition libraries\n setErrors(errors: FormDataErrors<TForm> | Record<string, string | string[]>): this\n forgetError<K extends FormDataKeys<TForm> | NamedInputEvent>(field: K): this\n}\n\ninterface InternalPrecognitionState {\n __touched: string[]\n __valid: string[]\n}\n\nexport type InertiaForm<TForm extends object> = TForm & InertiaFormProps<TForm>\nexport type InertiaPrecognitiveForm<TForm extends object> = InertiaForm<TForm> &\n InertiaFormValidationProps<TForm> &\n InternalPrecognitionState\n\ntype ReservedFormKeys = keyof InertiaFormProps<any>\n\ntype ValidateFormData<T> = {\n [K in keyof T]: K extends ReservedFormKeys ? ['Error: This field name is reserved by useForm:', K] : T[K]\n}\n\nexport default function useForm<TForm extends FormDataType<TForm> & ValidateFormData<TForm>>(\n method: Method | (() => Method),\n url: string | (() => string),\n data: TForm | (() => TForm),\n): InertiaPrecognitiveForm<TForm>\nexport default function useForm<TForm extends FormDataType<TForm> & ValidateFormData<TForm>>(\n urlMethodPair: UrlMethodPair | (() => UrlMethodPair),\n data: TForm | (() => TForm),\n): InertiaPrecognitiveForm<TForm>\nexport default function useForm<TForm extends FormDataType<TForm> & ValidateFormData<TForm>>(\n rememberKey: string,\n data: TForm | (() => TForm),\n): InertiaForm<TForm>\nexport default function useForm<TForm extends FormDataType<TForm> & ValidateFormData<TForm>>(\n data: TForm | (() => TForm),\n): InertiaForm<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(): InertiaForm<TForm>\nexport default function useForm<TForm extends FormDataType<TForm>>(\n ...args: UseFormArguments<TForm>\n): InertiaForm<TForm> | InertiaPrecognitiveForm<TForm> {\n const { rememberKey, data, precognitionEndpoint } = UseFormUtils.parseUseFormArguments<TForm>(...args)\n\n const initialDefaults = typeof data === 'function' ? cloneDeep(data()) : cloneDeep(data)\n validateFormDataKeys(initialDefaults)\n\n let cancelToken: CancelToken | null = null\n let pendingOptimisticCallback: OptimisticCallback | null = null\n\n const {\n form: baseForm,\n setDefaults,\n getTransform,\n getPrecognitionEndpoint,\n markAsSuccessful,\n wasDefaultsCalledInOnSuccess,\n resetDefaultsCalledInOnSuccess,\n setRememberExcludeKeys,\n resetBeforeSubmit,\n finishProcessing,\n } = useFormState<TForm>({\n data,\n rememberKey,\n precognitionEndpoint,\n })\n\n // Cast needed: baseForm has all form state/methods, we're adding submit methods below via Object.assign\n const form = baseForm as unknown as InertiaForm<TForm>\n\n const createSubmitMethod =\n (method: Method) =>\n (url: string, options: VisitOptions = {}) => {\n form.submit(method, url, options)\n }\n\n Object.assign(form, {\n submit(...args: UseFormSubmitArguments) {\n const { method, url, options } = UseFormUtils.parseSubmitArguments(args, getPrecognitionEndpoint())\n\n resetDefaultsCalledInOnSuccess()\n\n const _options: VisitOptions = {\n ...options,\n onCancelToken: (token) => {\n cancelToken = token\n\n return options.onCancelToken?.(token)\n },\n onBefore: (visit) => {\n resetBeforeSubmit()\n\n return options.onBefore?.(visit)\n },\n onStart: (visit) => {\n form.processing = true\n\n return options.onStart?.(visit)\n },\n onProgress: (event) => {\n form.progress = event ?? null\n\n return options.onProgress?.(event)\n },\n onSuccess: async (page) => {\n markAsSuccessful()\n\n const onSuccess = options.onSuccess ? await options.onSuccess(page) : null\n\n if (!wasDefaultsCalledInOnSuccess()) {\n setDefaults(cloneDeep(form.data()))\n form.isDirty = false\n }\n\n return onSuccess\n },\n onError: (errors) => {\n form.clearErrors().setError(errors as FormDataErrors<TForm>)\n\n return options.onError?.(errors)\n },\n onCancel: () => {\n return options.onCancel?.()\n },\n onFinish: (visit) => {\n finishProcessing()\n cancelToken = null\n\n return options.onFinish?.(visit)\n },\n }\n\n _options.optimistic = _options.optimistic ?? pendingOptimisticCallback ?? undefined\n pendingOptimisticCallback = null\n\n const transformedData = getTransform()(form.data()) as RequestPayload\n\n if (method === 'delete') {\n router.delete(url, { ..._options, data: transformedData })\n } else {\n router[method](url, transformedData, _options)\n }\n },\n\n get: createSubmitMethod('get'),\n post: createSubmitMethod('post'),\n put: createSubmitMethod('put'),\n patch: createSubmitMethod('patch'),\n delete: createSubmitMethod('delete'),\n\n cancel() {\n if (cancelToken) {\n cancelToken.cancel()\n }\n },\n\n dontRemember(...keys: FormDataKeys<TForm>[]) {\n setRememberExcludeKeys(keys)\n return form\n },\n\n optimistic<TProps>(callback: OptimisticCallback<TProps>) {\n pendingOptimisticCallback = callback as OptimisticCallback\n return form\n },\n })\n\n return getPrecognitionEndpoint() ? (form as InertiaPrecognitiveForm<TForm>) : form\n}\n", "import {\n Errors,\n ErrorValue,\n FormDataErrors,\n FormDataKeys,\n FormDataValues,\n Progress,\n router,\n UrlMethodPair,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n} from '@inertiajs/core'\nimport { cloneDeep, isEqual } from 'es-toolkit'\nimport { get, has, set } from 'es-toolkit/compat'\nimport {\n createValidator,\n NamedInputEvent,\n resolveName,\n toSimpleValidationErrors,\n ValidationConfig,\n Validator,\n} from 'laravel-precognition'\nimport { reactive, watch } from 'vue'\nimport { config } from '.'\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface FormStateProps<TForm extends object> {\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n data(): TForm\n transform(callback: UseFormTransformCallback<TForm>): this\n defaults(): this\n defaults<T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): this\n defaults(fields: Partial<TForm>): this\n reset<K extends FormDataKeys<TForm>>(...fields: K[]): this\n clearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): this\n resetAndClearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): this\n setError<K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): this\n setError(errors: FormDataErrors<TForm>): this\n withPrecognition(...args: UseFormWithPrecognitionArguments): this & FormStateValidationProps<TForm>\n}\n\nexport interface FormStateValidationProps<TForm extends object> {\n invalid<K extends FormDataKeys<TForm>>(field: K): boolean\n setValidationTimeout(duration: number): this\n touch<K extends FormDataKeys<TForm>>(field: K | NamedInputEvent | Array<K>, ...fields: K[]): this\n touched<K extends FormDataKeys<TForm>>(field?: K): boolean\n valid<K extends FormDataKeys<TForm>>(field: K): boolean\n validate<K extends FormDataKeys<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ): this\n validateFiles(): this\n validating: boolean\n validator: () => Validator\n withAllErrors(): this\n withoutFileValidation(): this\n setErrors(errors: FormDataErrors<TForm> | Record<string, string | string[]>): this\n forgetError<K extends FormDataKeys<TForm> | NamedInputEvent>(field: K): this\n}\n\ninterface InternalPrecognitionState {\n __touched: string[]\n __valid: string[]\n}\n\nexport type FormState<TForm extends object> = TForm & FormStateProps<TForm>\nexport type FormStateWithPrecognition<TForm extends object> = FormState<TForm> &\n FormStateValidationProps<TForm> &\n InternalPrecognitionState\n\ninterface InternalRememberState<TForm extends object> {\n __rememberable: boolean\n __remember: () => { data: TForm; errors: FormDataErrors<TForm> }\n __restore: (restored: { data: TForm; errors: FormDataErrors<TForm> }) => void\n}\n\nexport interface UseFormStateOptions<TForm extends object> {\n data: TForm | (() => TForm)\n rememberKey?: string | null\n precognitionEndpoint?: (() => UrlMethodPair) | null\n}\n\nexport interface UseFormStateReturn<TForm extends object> {\n form: FormState<TForm> & InternalRememberState<TForm>\n setDefaults: (newDefaults: TForm) => void\n getTransform: () => UseFormTransformCallback<TForm>\n getPrecognitionEndpoint: () => (() => UrlMethodPair) | null\n markAsSuccessful: () => void\n wasDefaultsCalledInOnSuccess: () => boolean\n resetDefaultsCalledInOnSuccess: () => void\n setRememberExcludeKeys: (keys: FormDataKeys<TForm>[]) => void\n resetBeforeSubmit: () => void\n finishProcessing: () => void\n withAllErrors: { enabled: () => boolean; enable: () => void }\n}\n\nexport default function useFormState<TForm extends object>(\n options: UseFormStateOptions<TForm>,\n): UseFormStateReturn<TForm> {\n const { data: dataOption, rememberKey } = options\n let { precognitionEndpoint } = options\n\n const isDataFunction = typeof dataOption === 'function'\n const resolveData = () => (isDataFunction ? (dataOption as () => TForm)() : dataOption)\n\n const restored = rememberKey\n ? (router.restore(rememberKey) as { data: TForm; errors: Record<FormDataKeys<TForm>, ErrorValue> } | null)\n : null\n\n const initialData = restored?.data ?? cloneDeep(resolveData())\n let defaults = cloneDeep(initialData)\n let transform: UseFormTransformCallback<TForm> = (data) => data\n let validatorRef: Validator | null = null\n let withAllErrors: boolean | null = null\n const withAllErrorsEnabled = () => withAllErrors ?? config.get('form.withAllErrors')\n let recentlySuccessfulTimeoutId: ReturnType<typeof setTimeout> | undefined\n let defaultsCalledInOnSuccess = false\n let rememberExcludeKeys: FormDataKeys<TForm>[] = []\n\n const form = reactive<FormState<TForm>>({\n ...cloneDeep(defaults),\n isDirty: false,\n errors: {} as FormDataErrors<TForm>,\n hasErrors: false,\n processing: false,\n progress: null as Progress | null,\n wasSuccessful: false,\n recentlySuccessful: false,\n\n withPrecognition(...args: UseFormWithPrecognitionArguments): FormStateWithPrecognition<TForm> {\n precognitionEndpoint = UseFormUtils.createWayfinderCallback(...args)\n\n const formWithPrecognition = this as any as FormStateWithPrecognition<TForm>\n\n const validator = createValidator(\n (client) => {\n const { method, url } = precognitionEndpoint!()\n const transformedData = cloneDeep(transform(this.data())) as Record<string, unknown>\n\n return client[method](url, transformedData)\n },\n cloneDeep(defaults) as Record<string, unknown>,\n )\n\n validatorRef = validator\n\n validator\n .on('validatingChanged', () => {\n formWithPrecognition.validating = validator.validating()\n })\n .on('validatedChanged', () => {\n formWithPrecognition.__valid = validator.valid()\n })\n .on('touchedChanged', () => {\n formWithPrecognition.__touched = validator.touched()\n })\n .on('errorsChanged', () => {\n const validationErrors = withAllErrorsEnabled()\n ? validator.errors()\n : toSimpleValidationErrors(validator.errors())\n\n this.errors = {} as FormDataErrors<TForm>\n\n this.setError(validationErrors as FormDataErrors<TForm>)\n\n formWithPrecognition.__valid = validator.valid()\n })\n\n const tap = <T>(value: T, callback: (value: T) => unknown): T => {\n callback(value)\n return value\n }\n\n Object.assign(formWithPrecognition, {\n __touched: [],\n __valid: [],\n validating: false,\n validator: () => validator,\n withAllErrors: () => tap(formWithPrecognition, () => (withAllErrors = true)),\n valid: (field: string) => formWithPrecognition.__valid.includes(field),\n invalid: (field: string) => field in this.errors,\n setValidationTimeout: (duration: number) => tap(formWithPrecognition, () => validator.setTimeout(duration)),\n validateFiles: () => tap(formWithPrecognition, () => validator.validateFiles()),\n withoutFileValidation: () => tap(formWithPrecognition, () => validator.withoutFileValidation()),\n touch: (\n field: FormDataKeys<TForm> | NamedInputEvent | Array<FormDataKeys<TForm>>,\n ...fields: FormDataKeys<TForm>[]\n ) => {\n if (Array.isArray(field)) {\n validator.touch(field)\n } else if (typeof field === 'string') {\n validator.touch([field, ...fields])\n } else {\n validator.touch(field)\n }\n\n return formWithPrecognition\n },\n touched: (field?: string): boolean =>\n typeof field === 'string'\n ? formWithPrecognition.__touched.includes(field)\n : formWithPrecognition.__touched.length > 0,\n validate: (field?: string | NamedInputEvent | ValidationConfig, config?: ValidationConfig) => {\n if (typeof field === 'object' && !('target' in field)) {\n config = field\n field = undefined\n }\n\n if (field === undefined) {\n validator.validate(config)\n } else {\n const fieldName = resolveName(field)\n const transformedData = transform(this.data()) as Record<string, unknown>\n validator.validate(fieldName, get(transformedData, fieldName), config)\n }\n\n return formWithPrecognition\n },\n setErrors: (errors: FormDataErrors<TForm>) => tap(formWithPrecognition, () => this.setError(errors)),\n forgetError: (field: FormDataKeys<TForm> | NamedInputEvent) =>\n tap(formWithPrecognition, () =>\n this.clearErrors(resolveName(field as string | NamedInputEvent) as FormDataKeys<TForm>),\n ),\n })\n\n return formWithPrecognition\n },\n\n data() {\n return (Object.keys(defaults) as Array<FormDataKeys<TForm>>).reduce((carry, key) => {\n return set(carry, key, get(this, key))\n }, {} as Partial<TForm>) as TForm\n },\n\n transform(callback: UseFormTransformCallback<TForm>) {\n transform = callback\n\n return this\n },\n\n defaults(fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: unknown) {\n if (isDataFunction) {\n throw new Error('You cannot call `defaults()` when using a function to define your form data.')\n }\n\n defaultsCalledInOnSuccess = true\n\n if (typeof fieldOrFields === 'undefined') {\n defaults = cloneDeep(this.data())\n this.isDirty = false\n } else {\n defaults =\n typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign({}, cloneDeep(defaults), fieldOrFields)\n }\n\n validatorRef?.defaults(defaults as Record<string, unknown>)\n\n return this\n },\n\n reset(...fields: FormDataKeys<TForm>[]) {\n const resolvedData = isDataFunction ? cloneDeep(resolveData()) : defaults\n const clonedData = cloneDeep(resolvedData)\n\n if (fields.length === 0) {\n if (isDataFunction) {\n defaults = clonedData\n }\n Object.assign(this, clonedData)\n } else {\n ;(fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(clonedData, key))\n .forEach((key) => {\n if (isDataFunction) {\n set(defaults, key, get(clonedData, key))\n }\n set(this, key, get(clonedData, key))\n })\n }\n\n validatorRef?.reset(...fields)\n\n return this\n },\n\n setError(fieldOrFields: FormDataKeys<TForm> | FormDataErrors<TForm>, maybeValue?: ErrorValue) {\n const errors = typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields\n\n Object.assign(this.errors, errors)\n\n this.hasErrors = Object.keys(this.errors).length > 0\n\n validatorRef?.setErrors(errors as Errors)\n\n return this\n },\n\n clearErrors(...fields: string[]) {\n this.errors = Object.keys(this.errors).reduce(\n (carry, field) => ({\n ...carry,\n ...(fields.length > 0 && !fields.includes(field) ? { [field]: (this.errors as Errors)[field] } : {}),\n }),\n {} as FormDataErrors<TForm>,\n )\n\n this.hasErrors = Object.keys(this.errors).length > 0\n\n if (validatorRef) {\n if (fields.length === 0) {\n validatorRef.setErrors({})\n } else {\n fields.forEach(validatorRef.forgetError)\n }\n }\n\n return this\n },\n\n resetAndClearErrors(...fields: FormDataKeys<TForm>[]) {\n this.reset(...fields)\n this.clearErrors(...fields)\n return this\n },\n\n __rememberable: rememberKey === null,\n\n __remember() {\n const formData = (this as unknown as FormState<TForm>).data()\n\n if (rememberExcludeKeys.length > 0) {\n const filtered = { ...formData } as Record<string, unknown>\n rememberExcludeKeys.forEach((k) => delete filtered[k as string])\n return { data: filtered as TForm, errors: (this as unknown as FormState<TForm>).errors }\n }\n\n return { data: formData, errors: (this as unknown as FormState<TForm>).errors }\n },\n\n __restore(restored: { data: TForm; errors: FormDataErrors<TForm> }) {\n Object.assign(this, restored.data)\n ;(this as unknown as FormState<TForm>).setError(restored.errors)\n },\n })\n\n const typedForm = form as any as FormState<TForm> & InternalRememberState<TForm>\n\n // Set restored errors if any\n if (restored?.errors) {\n typedForm.setError(restored.errors as FormDataErrors<TForm>)\n }\n\n watch(\n typedForm,\n () => {\n typedForm.isDirty = !isEqual(typedForm.data(), defaults)\n },\n { immediate: true, deep: true },\n )\n\n // Watch for remember functionality\n watch(\n typedForm,\n (newValue) => {\n if (!rememberKey) {\n return\n }\n\n const storedData = router.restore(rememberKey)\n const newData = cloneDeep((newValue as unknown as InternalRememberState<TForm>).__remember())\n\n if (!isEqual(storedData, newData)) {\n router.remember(newData, rememberKey)\n }\n },\n { immediate: true, deep: true },\n )\n\n if (precognitionEndpoint) {\n typedForm.withPrecognition(precognitionEndpoint)\n }\n\n return {\n form: typedForm,\n setDefaults: (newDefaults: TForm) => {\n defaults = newDefaults\n },\n getTransform: () => transform,\n getPrecognitionEndpoint: () => precognitionEndpoint ?? null,\n markAsSuccessful: () => {\n typedForm.clearErrors()\n typedForm.wasSuccessful = true\n typedForm.recentlySuccessful = true\n\n recentlySuccessfulTimeoutId = setTimeout(\n () => (typedForm.recentlySuccessful = false),\n config.get('form.recentlySuccessfulDuration'),\n )\n },\n wasDefaultsCalledInOnSuccess: () => defaultsCalledInOnSuccess,\n resetDefaultsCalledInOnSuccess: () => {\n defaultsCalledInOnSuccess = false\n },\n setRememberExcludeKeys: (keys: FormDataKeys<TForm>[]) => {\n rememberExcludeKeys = keys\n },\n resetBeforeSubmit: () => {\n typedForm.wasSuccessful = false\n typedForm.recentlySuccessful = false\n clearTimeout(recentlySuccessfulTimeoutId)\n },\n finishProcessing: () => {\n typedForm.processing = false\n typedForm.progress = null\n },\n withAllErrors: {\n enabled: withAllErrorsEnabled,\n enable: () => {\n withAllErrors = true\n },\n },\n }\n}\n", "import {\n buildSSRBody,\n CreateInertiaAppOptions,\n CreateInertiaAppOptionsForCSR,\n CreateInertiaAppOptionsForSSR,\n getInitialPageFromDOM,\n http as httpModule,\n InertiaAppSSRResponse,\n Page,\n PageProps,\n router,\n setupProgress,\n SharedPageProps,\n} from '@inertiajs/core'\nimport { createApp, createSSRApp, DefineComponent, h, Plugin, App as VueApp } from 'vue'\nimport App, { InertiaApp, InertiaAppProps, plugin } from './app'\nimport { config } from './index'\nimport { VueInertiaAppConfig } from './types'\n\ntype ComponentResolver = (\n name: string,\n page?: Page<SharedPageProps>,\n) => DefineComponent | Promise<DefineComponent> | { default: DefineComponent }\n\ntype SetupOptions<ElementType, SharedProps extends PageProps> = {\n el: ElementType\n App: InertiaApp\n props: InertiaAppProps<SharedProps>\n plugin: Plugin\n}\n\ntype VueWithApp = (app: VueApp, options: { ssr: boolean }) => void\n\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForCSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<HTMLElement, SharedProps>,\n void,\n VueInertiaAppConfig\n> & {\n withApp?: never\n}\n\ntype InertiaAppOptionsForSSR<SharedProps extends PageProps> = CreateInertiaAppOptionsForSSR<\n SharedProps,\n ComponentResolver,\n SetupOptions<null, SharedProps>,\n VueApp,\n VueInertiaAppConfig\n> & {\n render: (app: VueApp) => Promise<string>\n withApp?: never\n}\n\ntype InertiaAppOptionsAuto<SharedProps extends PageProps> = Omit<\n CreateInertiaAppOptions<\n ComponentResolver,\n SetupOptions<HTMLElement | null, SharedProps>,\n VueApp | void,\n VueInertiaAppConfig\n >,\n 'setup'\n> & {\n page?: Page<SharedProps>\n render?: undefined\n} & (\n | { setup?: undefined; withApp?: VueWithApp }\n | { setup: (options: SetupOptions<HTMLElement | null, SharedProps>) => VueApp | void; withApp?: never }\n )\n\ntype RenderToString = (app: VueApp) => Promise<string>\n\ntype RenderFunction<SharedProps extends PageProps> = (\n page: Page<SharedProps>,\n renderToString: RenderToString,\n) => Promise<InertiaAppSSRResponse>\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<void>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<InertiaAppSSRResponse>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n options?: InertiaAppOptionsAuto<SharedProps>,\n): Promise<void | RenderFunction<SharedProps>>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps & SharedPageProps>(\n {\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n defaults = {},\n nonce,\n http,\n layout,\n withApp,\n }:\n | InertiaAppOptionsForCSR<SharedProps>\n | InertiaAppOptionsForSSR<SharedProps>\n | InertiaAppOptionsAuto<SharedProps> = {} as InertiaAppOptionsAuto<SharedProps>,\n): Promise<InertiaAppSSRResponse | RenderFunction<SharedProps> | void> {\n config.replace(defaults)\n\n if (nonce) {\n config.set('nonce', nonce)\n }\n\n if (http) {\n httpModule.setClient(http)\n }\n\n const isServer = typeof window === 'undefined'\n\n const resolveComponent = (name: string, page?: Page) =>\n Promise.resolve(resolve!(name, page)).then((module) => module.default || module)\n\n // SSR render function factory - when on server without page/render, return a render function\n // This is used by the Vite plugin's SSR transform\n if (isServer && !page && !render) {\n return async (page: Page<SharedProps>, renderToString: RenderToString) => {\n let head: string[] = []\n\n const initialComponent = await resolveComponent(page.component, page)\n\n const props: InertiaAppProps<SharedProps> = {\n initialPage: page,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: (elements: string[]) => (head = elements),\n defaultLayout: layout,\n }\n\n let vueApp: VueApp\n\n if (setup) {\n vueApp = (setup as (options: SetupOptions<null, SharedProps>) => VueApp)({\n el: null,\n App,\n props,\n plugin,\n })\n } else {\n vueApp = createSSRApp({ render: () => h(App, props) })\n vueApp.use(plugin)\n\n if (withApp) {\n withApp(vueApp, { ssr: true })\n }\n }\n\n const html = await renderToString(vueApp)\n const body = buildSSRBody(id, page, html)\n\n return { head, body }\n }\n }\n\n const initialPage = page || getInitialPageFromDOM<Page<SharedProps>>(id)!\n\n let head: string[] = []\n\n const vueApp = await Promise.all([\n resolveComponent(initialPage.component, initialPage),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n const props: InertiaAppProps<SharedProps> = {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: isServer ? (elements: string[]) => (head = elements) : undefined,\n defaultLayout: layout,\n }\n\n if (isServer) {\n return (setup as (options: SetupOptions<null, SharedProps>) => VueApp)({\n el: null,\n App,\n props,\n plugin,\n })\n }\n\n const el = document.getElementById(id)!\n\n if (setup) {\n return (setup as (options: SetupOptions<HTMLElement, SharedProps>) => void)({\n el,\n App,\n props,\n plugin,\n })\n }\n\n // Default mounting when setup is not provided\n if (el.hasAttribute('data-server-rendered')) {\n const app = createSSRApp({ render: () => h(App, props) })\n app.use(plugin)\n\n if (withApp) {\n withApp(app, { ssr: false })\n }\n\n app.mount(el)\n } else {\n const app = createApp({ render: () => h(App, props) })\n app.use(plugin)\n\n if (withApp) {\n withApp(app, { ssr: false })\n }\n\n app.mount(el)\n }\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer && render && vueApp) {\n const html = await render(vueApp)\n const body = buildSSRBody(id, initialPage, html)\n\n return { head, body }\n }\n}\n", "import { isSameUrlWithoutQueryOrHash, partialReloadRequestsSomeProps, router } from '@inertiajs/core'\nimport { get } from 'es-toolkit/compat'\nimport { computed, defineComponent, onMounted, onUnmounted, ref, type SlotsType } from 'vue'\nimport { usePage } from './app'\n\nexport default defineComponent({\n name: 'Deferred',\n props: {\n data: {\n type: [String, Array<String>],\n required: true,\n },\n },\n slots: Object as SlotsType<{\n default: { reloading: boolean }\n fallback: {}\n rescue: { reloading: boolean }\n }>,\n setup(props, { slots }) {\n const reloading = ref(false)\n const activeReloads = new Set<object>()\n const page = usePage()\n const keys = computed(() => (Array.isArray(props.data) ? props.data : [props.data]) as string[])\n const rescuedKeys = computed(() => new Set(page.rescuedProps))\n\n let removeStartListener: (() => void) | null = null\n let removeFinishListener: (() => void) | null = null\n\n onMounted(() => {\n removeStartListener = router.on('start', (e) => {\n const visit = e.detail.visit\n\n if (\n visit.preserveState === true &&\n isSameUrlWithoutQueryOrHash(visit.url, window.location) &&\n partialReloadRequestsSomeProps(visit, keys.value)\n ) {\n activeReloads.add(visit)\n reloading.value = true\n }\n })\n\n removeFinishListener = router.on('finish', (e) => {\n const visit = e.detail.visit\n\n if (activeReloads.has(visit)) {\n activeReloads.delete(visit)\n reloading.value = activeReloads.size > 0\n }\n })\n })\n\n onUnmounted(() => {\n removeStartListener?.()\n removeFinishListener?.()\n activeReloads.clear()\n })\n\n return () => {\n if (!slots.fallback) {\n throw new Error('`<Deferred>` requires a `<template #fallback>` slot')\n }\n\n const propsAreDefined = keys.value.every((key) => get(page.props, key) !== undefined)\n const hasRescuedProps = keys.value.some((key) => rescuedKeys.value.has(key))\n\n return propsAreDefined && !hasRescuedProps\n ? slots.default?.({ reloading: reloading.value })\n : hasRescuedProps && slots.rescue\n ? slots.rescue({ reloading: reloading.value })\n : slots.fallback({})\n }\n },\n})\n", "import {\n config,\n Errors,\n FormComponentProps,\n FormComponentRef,\n FormComponentResetSymbol,\n FormComponentSlotProps,\n FormDataConvertible,\n formDataToObject,\n isUrlMethodPair,\n mergeDataIntoQueryString,\n Method,\n resetFormFields,\n resolveUrlMethodPairComponent,\n UseFormUtils,\n VisitOptions,\n} from '@inertiajs/core'\nimport { isEqual } from 'es-toolkit'\nimport { NamedInputEvent, ValidationConfig } from 'laravel-precognition'\nimport {\n computed,\n defineComponent,\n h,\n inject,\n InjectionKey,\n onBeforeUnmount,\n onMounted,\n PropType,\n provide,\n ref,\n SlotsType,\n watch,\n} from 'vue'\nimport useForm from './useForm'\n\ntype FormSubmitOptions = Omit<VisitOptions, 'data' | 'onPrefetched' | 'onPrefetching'>\ntype FormSubmitter = HTMLElement | null\n\nconst noop = () => undefined\n\nconst FormContextKey: InjectionKey<FormComponentRef> = Symbol('InertiaFormContext')\n\nconst Form = defineComponent({\n name: 'Form',\n slots: Object as SlotsType<{\n default: FormComponentSlotProps\n }>,\n props: {\n action: {\n type: [String, Object] as PropType<FormComponentProps['action']>,\n default: '',\n },\n method: {\n type: String as PropType<FormComponentProps['method']>,\n default: 'get',\n },\n headers: {\n type: Object as PropType<FormComponentProps['headers']>,\n default: () => ({}),\n },\n queryStringArrayFormat: {\n type: String as PropType<FormComponentProps['queryStringArrayFormat']>,\n default: 'brackets',\n },\n errorBag: {\n type: [String, null] as PropType<FormComponentProps['errorBag']>,\n default: null,\n },\n showProgress: {\n type: Boolean,\n default: true,\n },\n transform: {\n type: Function as PropType<FormComponentProps['transform']>,\n default: (data: Record<string, FormDataConvertible>) => data,\n },\n options: {\n type: Object as PropType<FormComponentProps['options']>,\n default: () => ({}),\n },\n resetOnError: {\n type: [Boolean, Array] as PropType<FormComponentProps['resetOnError']>,\n default: false,\n },\n resetOnSuccess: {\n type: [Boolean, Array] as PropType<FormComponentProps['resetOnSuccess']>,\n default: false,\n },\n setDefaultsOnSuccess: {\n type: Boolean as PropType<FormComponentProps['setDefaultsOnSuccess']>,\n default: false,\n },\n onCancelToken: {\n type: Function as PropType<FormComponentProps['onCancelToken']>,\n default: noop,\n },\n onBefore: {\n type: Function as PropType<FormComponentProps['onBefore']>,\n default: noop,\n },\n onStart: {\n type: Function as PropType<FormComponentProps['onStart']>,\n default: noop,\n },\n onProgress: {\n type: Function as PropType<FormComponentProps['onProgress']>,\n default: noop,\n },\n onFinish: {\n type: Function as PropType<FormComponentProps['onFinish']>,\n default: noop,\n },\n onCancel: {\n type: Function as PropType<FormComponentProps['onCancel']>,\n default: noop,\n },\n onSuccess: {\n type: Function as PropType<FormComponentProps['onSuccess']>,\n default: noop,\n },\n onError: {\n type: Function as PropType<FormComponentProps['onError']>,\n default: noop,\n },\n onSubmitComplete: {\n type: Function as PropType<FormComponentProps['onSubmitComplete']>,\n default: noop,\n },\n disableWhileProcessing: {\n type: Boolean,\n default: false,\n },\n invalidateCacheTags: {\n type: [String, Array] as PropType<FormComponentProps['invalidateCacheTags']>,\n default: () => [],\n },\n validateFiles: {\n type: Boolean as PropType<FormComponentProps['validateFiles']>,\n default: false,\n },\n validationTimeout: {\n type: Number as PropType<FormComponentProps['validationTimeout']>,\n default: 1500,\n },\n optimistic: {\n type: Function as PropType<FormComponentProps['optimistic']>,\n default: undefined,\n },\n withAllErrors: {\n type: Boolean as PropType<FormComponentProps['withAllErrors']>,\n default: null,\n },\n component: {\n type: String as PropType<FormComponentProps['component']>,\n default: null,\n },\n instant: {\n type: Boolean as PropType<FormComponentProps['instant']>,\n default: false,\n },\n },\n setup(props, { slots, attrs, expose }) {\n const getTransformedData = (): Record<string, FormDataConvertible> => {\n const [_url, data] = getUrlAndData()\n\n return props.transform(data)\n }\n\n const form = useForm<Record<string, any>>({})\n .withPrecognition(\n () => method.value,\n () => getUrlAndData()[0],\n )\n .transform(getTransformedData)\n .setValidationTimeout(props.validationTimeout)\n\n if (props.validateFiles) {\n form.validateFiles()\n }\n\n if (props.withAllErrors ?? config.get('form.withAllErrors')) {\n form.withAllErrors()\n }\n\n const formElement = ref()\n const method = computed(() =>\n isUrlMethodPair(props.action) ? props.action.method : (props.method.toLowerCase() as Method),\n )\n const resolvedComponent = computed(() => {\n if (props.component) {\n return props.component\n }\n\n if (props.instant && isUrlMethodPair(props.action)) {\n return resolveUrlMethodPairComponent(props.action)\n }\n\n return null\n })\n\n // Can't use computed because FormData is not reactive\n const isDirty = ref(false)\n\n const defaultData = ref(new FormData())\n\n const onFormUpdate = (event: Event) => {\n if (event.type === 'reset' && (event as CustomEvent).detail?.[FormComponentResetSymbol]) {\n // When the form is reset programmatically, prevent native reset behavior\n event.preventDefault()\n }\n\n isDirty.value = event.type === 'reset' ? false : !isEqual(getData(), formDataToObject(defaultData.value))\n }\n\n const formEvents: Array<keyof HTMLElementEventMap> = ['input', 'change', 'reset']\n\n onMounted(() => {\n defaultData.value = getFormData()\n\n form.defaults(getData())\n\n formEvents.forEach((e) => formElement.value.addEventListener(e, onFormUpdate))\n })\n\n watch(\n () => props.validateFiles,\n (value) => (value ? form.validateFiles() : form.withoutFileValidation()),\n )\n\n watch(\n () => props.validationTimeout,\n (value) => form.setValidationTimeout(value),\n )\n\n onBeforeUnmount(() => formEvents.forEach((e) => formElement.value?.removeEventListener(e, onFormUpdate)))\n\n const getFormData = (submitter?: FormSubmitter): FormData => new FormData(formElement.value, submitter)\n\n // Convert the FormData to an object because we can't compare two FormData\n // instances directly (which is needed for isDirty), mergeDataIntoQueryString()\n // expects an object, and submitting a FormData instance directly causes problems with nested objects.\n const getData = (submitter?: FormSubmitter): Record<string, FormDataConvertible> =>\n formDataToObject(getFormData(submitter))\n\n const getUrlAndData = (submitter?: FormSubmitter): [string, Record<string, FormDataConvertible>] => {\n return mergeDataIntoQueryString(\n method.value,\n isUrlMethodPair(props.action) ? props.action.url : props.action,\n getData(submitter),\n props.queryStringArrayFormat,\n )\n }\n\n const submit = (submitter?: FormSubmitter) => {\n const [url, data] = getUrlAndData(submitter)\n const formTarget = (submitter as HTMLButtonElement | HTMLInputElement | null)?.getAttribute('formtarget')\n\n if (formTarget === '_blank' && method.value === 'get') {\n window.open(url, '_blank')\n return\n }\n\n const maybeReset = (resetOption: boolean | string[]) => {\n if (!resetOption) {\n return\n }\n\n if (resetOption === true) {\n reset()\n } else if (resetOption.length > 0) {\n reset(...resetOption)\n }\n }\n\n const submitOptions: FormSubmitOptions = {\n headers: props.headers,\n queryStringArrayFormat: props.queryStringArrayFormat,\n errorBag: props.errorBag,\n showProgress: props.showProgress,\n invalidateCacheTags: props.invalidateCacheTags,\n component: resolvedComponent.value,\n optimistic: props.optimistic ? (pageProps) => props.optimistic!(pageProps, data) : undefined,\n onCancelToken: props.onCancelToken,\n onBefore: props.onBefore,\n onStart: props.onStart,\n onProgress: props.onProgress,\n onFinish: props.onFinish,\n onCancel: props.onCancel,\n onSuccess: (...args) => {\n props.onSuccess?.(...args)\n props.onSubmitComplete?.(exposed)\n maybeReset(props.resetOnSuccess)\n\n if (props.setDefaultsOnSuccess === true) {\n defaults()\n }\n },\n onError: (...args) => {\n props.onError?.(...args)\n maybeReset(props.resetOnError)\n },\n ...props.options,\n }\n\n // We need transform because we can't override the default data with different keys (by design)\n form.transform(() => props.transform(data)).submit(method.value, url, submitOptions)\n\n // Reset the transformer back so the submitter is not used for future submissions\n form.transform(getTransformedData)\n }\n\n const reset = (...fields: string[]) => {\n resetFormFields(formElement.value, defaultData.value, fields)\n\n form.reset(...fields)\n }\n\n const clearErrors = (...fields: string[]) => {\n form.clearErrors(...fields)\n }\n\n const resetAndClearErrors = (...fields: string[]) => {\n clearErrors(...fields)\n reset(...fields)\n }\n\n const defaults = () => {\n defaultData.value = getFormData()\n isDirty.value = false\n }\n\n const exposed = {\n get errors() {\n return form.errors\n },\n get hasErrors() {\n return form.hasErrors\n },\n get processing() {\n return form.processing\n },\n get progress() {\n return form.progress\n },\n get wasSuccessful() {\n return form.wasSuccessful\n },\n get recentlySuccessful() {\n return form.recentlySuccessful\n },\n get validating() {\n return form.validating\n },\n clearErrors,\n resetAndClearErrors,\n setError: (fieldOrFields: string | Record<string, string>, maybeValue?: string) =>\n form.setError((typeof fieldOrFields === 'string' ? { [fieldOrFields]: maybeValue } : fieldOrFields) as Errors),\n get isDirty() {\n return isDirty.value\n },\n reset,\n submit,\n defaults,\n getData,\n getFormData,\n\n // Precognition\n touch: form.touch,\n valid: form.valid,\n invalid: form.invalid,\n touched: form.touched,\n validate: (field?: string | NamedInputEvent | ValidationConfig, config?: ValidationConfig) =>\n form.validate(...UseFormUtils.mergeHeadersForValidation(field, config, props.headers)),\n validator: () => form.validator(),\n }\n\n expose<FormComponentRef>(exposed)\n\n provide(FormContextKey, exposed)\n\n return () => {\n return h(\n 'form',\n {\n ...attrs,\n ref: formElement,\n action: isUrlMethodPair(props.action) ? props.action.url : props.action,\n method: method.value,\n onSubmit: (event) => {\n event.preventDefault()\n submit(event.submitter)\n },\n inert: props.disableWhileProcessing && form.processing,\n },\n slots.default ? slots.default(exposed) : [],\n )\n }\n },\n})\n\nexport function useFormContext<TForm extends object = Record<string, any>>(): FormComponentRef<TForm> | undefined {\n return inject(FormContextKey) as FormComponentRef<TForm> | undefined\n}\n\ntype TypedFormComponent<TForm extends Record<string, any>> = Omit<typeof Form, 'new'> & {\n new (...args: ConstructorParameters<typeof Form>): Omit<InstanceType<typeof Form>, '$props' | '$slots'> & {\n $props: Omit<\n InstanceType<typeof Form>['$props'],\n 'optimistic' | 'transform' | 'resetOnSuccess' | 'resetOnError' | 'onSubmitComplete'\n > & {\n optimistic?: FormComponentProps<TForm>['optimistic']\n transform?: FormComponentProps<TForm>['transform']\n resetOnSuccess?: FormComponentProps<TForm>['resetOnSuccess']\n resetOnError?: FormComponentProps<TForm>['resetOnError']\n onSubmitComplete?: FormComponentProps<TForm>['onSubmitComplete']\n }\n $slots: {\n default: (props: FormComponentSlotProps<TForm>) => any\n }\n }\n}\n\nexport function createForm<TForm extends Record<string, any>>(): TypedFormComponent<TForm> {\n return Form as TypedFormComponent<TForm>\n}\n\nexport default Form\n", "import { escape } from 'es-toolkit/compat'\nimport { defineComponent, DefineComponent, onBeforeUnmount, VNode } from 'vue'\nimport { headManager } from './app'\n\nexport type InertiaHead = DefineComponent<{\n title?: string\n}>\n\nfunction isUnaryTag(node: VNode): boolean {\n return (\n typeof node.type === 'string' &&\n [\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n ].indexOf(node.type) > -1\n )\n}\n\nfunction renderTagStart(node: VNode): string {\n node.props = node.props || {}\n node.props['data-inertia'] = node.props['head-key'] !== undefined ? node.props['head-key'] : ''\n\n const attrs = Object.keys(node.props).reduce((carry, name) => {\n const value = String(node.props![name])\n if (['key', 'head-key'].includes(name)) {\n return carry\n } else if (value === '') {\n return carry + ` ${name}`\n } else {\n return carry + ` ${name}=\"${escape(value)}\"`\n }\n }, '')\n\n return `<${String(node.type)}${attrs}>`\n}\n\nfunction renderTagChildren(node: VNode): string {\n const { children } = node\n\n if (typeof children === 'string') {\n return children\n }\n\n if (Array.isArray(children)) {\n return children.reduce<string>((html, child) => {\n return html + renderTag(child as VNode)\n }, '')\n }\n\n return ''\n}\n\nfunction isFunctionNode(node: VNode): node is VNode & { type: () => VNode } {\n return typeof node.type === 'function'\n}\n\nfunction isComponentNode(node: VNode): node is VNode & { type: object } {\n return typeof node.type === 'object'\n}\n\nfunction isCommentNode(node: VNode): boolean {\n return /(comment|cmt)/i.test(node.type.toString())\n}\n\nfunction isFragmentNode(node: VNode): boolean {\n return /(fragment|fgt|symbol\\(\\))/i.test(node.type.toString())\n}\n\nfunction isTextNode(node: VNode): boolean {\n return /(text|txt)/i.test(node.type.toString())\n}\n\nfunction renderTag(node: VNode): string {\n if (isTextNode(node)) {\n return String(node.children)\n } else if (isFragmentNode(node)) {\n return ''\n } else if (isCommentNode(node)) {\n return ''\n }\n\n let html = renderTagStart(node)\n\n if (node.children) {\n html += renderTagChildren(node)\n }\n\n if (!isUnaryTag(node)) {\n html += `</${String(node.type)}>`\n }\n\n return html\n}\n\nfunction addTitleElement(elements: string[], title?: string): string[] {\n if (title && !elements.find((tag) => tag.startsWith('<title'))) {\n elements.push(`<title data-inertia=\"\">${escape(title)}</title>`)\n }\n\n return elements\n}\n\nfunction renderNodes(nodes: VNode[], title?: string): string[] {\n const elements = nodes\n .flatMap((node) => resolveNode(node))\n .map((node) => renderTag(node))\n .filter((node) => node)\n\n return addTitleElement(elements, title)\n}\n\nfunction resolveNode(node: VNode): VNode | VNode[] {\n if (isFunctionNode(node)) {\n return resolveNode(node.type())\n } else if (isComponentNode(node)) {\n console.warn(`Using components in the <Head> component is not supported.`)\n return []\n } else if (isTextNode(node) && node.children) {\n return node\n } else if (isFragmentNode(node) && node.children) {\n return (node.children as VNode[]).flatMap((child) => resolveNode(child))\n } else if (isCommentNode(node)) {\n return []\n } else {\n return node\n }\n}\n\nconst Head: InertiaHead = defineComponent({\n props: {\n title: {\n type: String,\n required: false,\n },\n },\n setup(props, { slots }) {\n const provider = headManager.createProvider()\n\n onBeforeUnmount(() => {\n provider.disconnect()\n })\n\n return () => {\n provider.update(renderNodes(slots.default ? slots.default() : [], props.title))\n }\n },\n})\n\nexport default Head\n", "import {\n getScrollableParent,\n InfiniteScrollActionSlotProps,\n InfiniteScrollComponentBaseProps,\n InfiniteScrollRef,\n InfiniteScrollSlotProps,\n ReloadOptions,\n useInfiniteScroll,\n} from '@inertiajs/core'\nimport { computed, defineComponent, Fragment, h, onMounted, onUnmounted, PropType, ref, SlotsType, watch } from 'vue'\nimport { usePage } from './app'\n\n// Vue-specific element resolver\nconst resolveHTMLElement = (\n value: string | object | (() => HTMLElement | null),\n fallback: HTMLElement | null,\n): HTMLElement | null => {\n if (!value) {\n return fallback\n }\n\n // CSS Selector string\n if (typeof value === 'string') {\n return document.querySelector(value) as HTMLElement | null\n }\n\n // Function that returns an element\n if (typeof value === 'function') {\n return value() || null\n }\n\n return fallback\n}\n\nconst InfiniteScroll = defineComponent({\n name: 'InfiniteScroll',\n slots: Object as SlotsType<{\n default: InfiniteScrollSlotProps\n previous: InfiniteScrollActionSlotProps\n next: InfiniteScrollActionSlotProps\n loading: InfiniteScrollActionSlotProps\n }>,\n props: {\n data: {\n type: String as PropType<InfiniteScrollComponentBaseProps['data']>,\n required: true,\n },\n buffer: {\n type: Number as PropType<InfiniteScrollComponentBaseProps['buffer']>,\n default: 0,\n },\n onlyNext: {\n type: Boolean,\n default: false,\n },\n onlyPrevious: {\n type: Boolean,\n default: false,\n },\n as: {\n type: String as PropType<InfiniteScrollComponentBaseProps['as']>,\n default: 'div',\n },\n manual: {\n type: Boolean as PropType<InfiniteScrollComponentBaseProps['manual']>,\n default: false,\n },\n manualAfter: {\n type: Number as PropType<InfiniteScrollComponentBaseProps['manualAfter']>,\n default: 0,\n },\n preserveUrl: {\n type: Boolean as PropType<InfiniteScrollComponentBaseProps['preserveUrl']>,\n default: false,\n },\n reverse: {\n type: Boolean as PropType<InfiniteScrollComponentBaseProps['reverse']>,\n default: false,\n },\n autoScroll: {\n type: Boolean as PropType<InfiniteScrollComponentBaseProps['autoScroll']>,\n default: undefined,\n },\n itemsElement: {\n type: [String, Function, Object] as PropType<string | (() => HTMLElement | null | undefined)>,\n default: null,\n },\n startElement: {\n type: [String, Function, Object] as PropType<string | (() => HTMLElement | null | undefined)>,\n default: null,\n },\n endElement: {\n type: [String, Function, Object] as PropType<string | (() => HTMLElement | null | undefined)>,\n default: null,\n },\n params: {\n type: Object as PropType<ReloadOptions>,\n default: () => ({}),\n },\n },\n inheritAttrs: false,\n setup(props, { slots, attrs, expose }) {\n const itemsElementRef = ref<HTMLElement | null>(null)\n const startElementRef = ref<HTMLElement | null>(null)\n const endElementRef = ref<HTMLElement | null>(null)\n\n const itemsElement = computed<HTMLElement | null>(() =>\n resolveHTMLElement(props.itemsElement, itemsElementRef.value),\n )\n const scrollableParent = computed(() => getScrollableParent(itemsElement.value))\n const startElement = computed<HTMLElement | null>(() =>\n resolveHTMLElement(props.startElement, startElementRef.value),\n )\n const endElement = computed<HTMLElement | null>(() => resolveHTMLElement(props.endElement, endElementRef.value))\n\n const loadingPrevious = ref(false)\n const loadingNext = ref(false)\n const requestCount = ref(0)\n const hasPreviousPage = ref(false)\n const hasNextPage = ref(false)\n\n const syncStateFromDataManager = () => {\n requestCount.value = dataManager.getRequestCount()\n hasPreviousPage.value = dataManager.hasPrevious()\n hasNextPage.value = dataManager.hasNext()\n }\n\n const {\n dataManager,\n elementManager,\n flush: flushInfiniteScroll,\n } = useInfiniteScroll({\n // Data\n getPropName: () => props.data,\n inReverseMode: () => props.reverse,\n shouldFetchNext: () => !props.onlyPrevious,\n shouldFetchPrevious: () => !props.onlyNext,\n shouldPreserveUrl: () => props.preserveUrl,\n getReloadOptions: () => props.params,\n\n // Elements\n getTriggerMargin: () => props.buffer,\n getStartElement: () => startElement.value!,\n getEndElement: () => endElement.value!,\n getItemsElement: () => itemsElement.value!,\n getScrollableParent: () => scrollableParent.value,\n\n // Request callbacks\n onBeforePreviousRequest: () => (loadingPrevious.value = true),\n onBeforeNextRequest: () => (loadingNext.value = true),\n onCompletePreviousRequest: () => {\n loadingPrevious.value = false\n syncStateFromDataManager()\n },\n onCompleteNextRequest: () => {\n loadingNext.value = false\n syncStateFromDataManager()\n },\n onDataReset: syncStateFromDataManager,\n })\n\n syncStateFromDataManager()\n\n if (typeof window === 'undefined') {\n const scrollProp = usePage().scrollProps?.[props.data]\n\n if (scrollProp) {\n hasPreviousPage.value = !!scrollProp.previousPage\n hasNextPage.value = !!scrollProp.nextPage\n }\n }\n\n const autoLoad = computed<boolean>(() => !manualMode.value)\n const manualMode = computed<boolean>(\n () => props.manual || (props.manualAfter > 0 && requestCount.value >= props.manualAfter),\n )\n\n const scrollToBottom = () => {\n if (scrollableParent.value) {\n scrollableParent.value.scrollTo({\n top: scrollableParent.value.scrollHeight,\n behavior: 'instant',\n })\n } else {\n window.scrollTo({\n top: document.body.scrollHeight,\n behavior: 'instant',\n })\n }\n }\n\n onMounted(() => {\n elementManager.setupObservers()\n elementManager.processServerLoadedElements(dataManager.getLastLoadedPage())\n\n // autoScroll defaults to reverse value if not explicitly set\n const shouldAutoScroll = props.autoScroll !== undefined ? props.autoScroll : props.reverse\n\n if (shouldAutoScroll) {\n scrollToBottom()\n }\n\n if (autoLoad.value) {\n elementManager.enableTriggers()\n }\n })\n\n onUnmounted(flushInfiniteScroll)\n\n watch(\n () => [autoLoad.value, props.onlyNext, props.onlyPrevious],\n ([enabled]) => {\n enabled ? elementManager.enableTriggers() : elementManager.disableTriggers()\n },\n )\n\n expose<InfiniteScrollRef>({\n fetchNext: dataManager.fetchNext,\n fetchPrevious: dataManager.fetchPrevious,\n hasPrevious: dataManager.hasPrevious,\n hasNext: dataManager.hasNext,\n })\n\n return () => {\n const renderElements = []\n\n const sharedExposed: Pick<\n InfiniteScrollActionSlotProps,\n 'loadingPrevious' | 'loadingNext' | 'hasPrevious' | 'hasNext'\n > = {\n loadingPrevious: loadingPrevious.value,\n loadingNext: loadingNext.value,\n hasPrevious: hasPreviousPage.value,\n hasNext: hasNextPage.value,\n }\n\n // Only render previous trigger if not using custom element\n if (!props.startElement) {\n const headerAutoMode = autoLoad.value && !props.onlyNext\n const exposedPrevious: InfiniteScrollActionSlotProps = {\n loading: loadingPrevious.value,\n fetch: dataManager.fetchPrevious,\n autoMode: headerAutoMode,\n manualMode: !headerAutoMode,\n hasMore: hasPreviousPage.value,\n ...sharedExposed,\n }\n\n renderElements.push(\n h(\n 'div',\n { ref: startElementRef },\n slots.previous\n ? slots.previous(exposedPrevious)\n : loadingPrevious.value\n ? slots.loading?.(exposedPrevious)\n : undefined,\n ),\n )\n }\n\n renderElements.push(\n h(\n props.as,\n { ...attrs, ref: itemsElementRef },\n slots.default?.({\n loading: loadingPrevious.value || loadingNext.value,\n loadingPrevious: loadingPrevious.value,\n loadingNext: loadingNext.value,\n }),\n ),\n )\n\n // Only render next trigger if not using custom element\n if (!props.endElement) {\n const footerAutoMode = autoLoad.value && !props.onlyPrevious\n const exposedNext: InfiniteScrollActionSlotProps = {\n loading: loadingNext.value,\n fetch: dataManager.fetchNext,\n autoMode: footerAutoMode,\n manualMode: !footerAutoMode,\n hasMore: hasNextPage.value,\n ...sharedExposed,\n }\n\n renderElements.push(\n h(\n 'div',\n { ref: endElementRef },\n slots.next ? slots.next(exposedNext) : loadingNext.value ? slots.loading?.(exposedNext) : undefined,\n ),\n )\n }\n\n return h(Fragment, {}, props.reverse ? [...renderElements].reverse() : renderElements)\n }\n },\n})\n\nexport default InfiniteScroll\n", "import {\n ActiveVisit,\n isUrlMethodPair,\n LinkComponentBaseProps,\n LinkPrefetchOption,\n mergeDataIntoQueryString,\n Method,\n PendingVisit,\n resolveUrlMethodPairComponent,\n router,\n shouldIntercept,\n shouldNavigate,\n} from '@inertiajs/core'\nimport { Component, computed, defineComponent, DefineComponent, h, onMounted, onUnmounted, PropType, ref } from 'vue'\nimport { config } from '.'\n\nconst noop = () => {}\n\nexport interface InertiaLinkProps extends LinkComponentBaseProps {\n as?: string | Component\n onClick?: (event: MouseEvent) => void\n}\n\ntype InertiaLink = DefineComponent<InertiaLinkProps>\n\nconst Link: InertiaLink = defineComponent({\n name: 'Link',\n props: {\n as: {\n type: [String, Object] as PropType<InertiaLinkProps['as']>,\n default: 'a',\n },\n data: {\n type: Object as PropType<InertiaLinkProps['data']>,\n default: () => ({}),\n },\n href: {\n type: [String, Object] as PropType<InertiaLinkProps['href']>,\n default: '',\n },\n method: {\n type: String as PropType<InertiaLinkProps['method']>,\n default: 'get',\n },\n replace: {\n type: Boolean as PropType<InertiaLinkProps['replace']>,\n default: false,\n },\n preserveScroll: {\n type: [Boolean, String, Function] as PropType<InertiaLinkProps['preserveScroll']>,\n default: false,\n },\n preserveState: {\n type: [Boolean, String, Function] as PropType<InertiaLinkProps['preserveState']>,\n default: null,\n },\n preserveUrl: {\n type: Boolean as PropType<InertiaLinkProps['preserveUrl']>,\n default: false,\n },\n only: {\n type: Array as PropType<InertiaLinkProps['only']>,\n default: () => [],\n },\n except: {\n type: Array as PropType<InertiaLinkProps['except']>,\n default: () => [],\n },\n headers: {\n type: Object as PropType<InertiaLinkProps['headers']>,\n default: () => ({}),\n },\n queryStringArrayFormat: {\n type: String as PropType<InertiaLinkProps['queryStringArrayFormat']>,\n default: 'brackets',\n },\n async: {\n type: Boolean as PropType<InertiaLinkProps['async']>,\n default: false,\n },\n prefetch: {\n type: [Boolean, String, Array] as PropType<InertiaLinkProps['prefetch']>,\n default: false,\n },\n cacheFor: {\n type: [Number, String, Array] as PropType<InertiaLinkProps['cacheFor']>,\n default: 0,\n },\n onStart: {\n type: Function as PropType<InertiaLinkProps['onStart']>,\n default: noop,\n },\n onProgress: {\n type: Function as PropType<InertiaLinkProps['onProgress']>,\n default: noop,\n },\n onFinish: {\n type: Function as PropType<InertiaLinkProps['onFinish']>,\n default: noop,\n },\n onBefore: {\n type: Function as PropType<InertiaLinkProps['onBefore']>,\n default: noop,\n },\n onCancel: {\n type: Function as PropType<InertiaLinkProps['onCancel']>,\n default: noop,\n },\n onSuccess: {\n type: Function as PropType<InertiaLinkProps['onSuccess']>,\n default: noop,\n },\n onError: {\n type: Function as PropType<InertiaLinkProps['onError']>,\n default: noop,\n },\n onCancelToken: {\n type: Function as PropType<InertiaLinkProps['onCancelToken']>,\n default: noop,\n },\n onPrefetching: {\n type: Function as PropType<InertiaLinkProps['onPrefetching']>,\n default: noop,\n },\n onPrefetched: {\n type: Function as PropType<InertiaLinkProps['onPrefetched']>,\n default: noop,\n },\n cacheTags: {\n type: [String, Array] as PropType<InertiaLinkProps['cacheTags']>,\n default: () => [],\n },\n viewTransition: {\n type: [Boolean, Object] as PropType<InertiaLinkProps['viewTransition']>,\n default: false,\n },\n component: {\n type: String as PropType<InertiaLinkProps['component']>,\n default: null,\n },\n instant: {\n type: Boolean as PropType<InertiaLinkProps['instant']>,\n default: false,\n },\n pageProps: {\n type: [Object, Function] as PropType<InertiaLinkProps['pageProps']>,\n default: null,\n },\n },\n setup(props, { slots, attrs }) {\n const inFlightCount = ref(0)\n const hoverTimeout = ref<ReturnType<typeof setTimeout>>()\n\n const prefetchModes = computed<LinkPrefetchOption[]>(() => {\n if (props.prefetch === true) {\n return ['hover']\n }\n\n if (props.prefetch === false) {\n return []\n }\n\n if (Array.isArray(props.prefetch)) {\n return props.prefetch\n }\n\n return [props.prefetch] as LinkPrefetchOption[]\n })\n\n const cacheForValue = computed(() => {\n if (props.cacheFor !== 0) {\n // If they've provided a value, respect it\n return props.cacheFor\n }\n\n if (prefetchModes.value.length === 1 && prefetchModes.value[0] === 'click') {\n // If they've only provided a prefetch mode of 'click',\n // we should only prefetch for the next request but not keep it around\n return 0\n }\n\n // Otherwise, default to 30 seconds\n return config.get('prefetch.cacheFor')\n })\n\n onMounted(() => {\n if (prefetchModes.value.includes('mount')) {\n prefetch()\n }\n })\n\n onUnmounted(() => {\n clearTimeout(hoverTimeout.value)\n })\n\n const method = computed(() =>\n isUrlMethodPair(props.href) ? props.href.method : ((props.method ?? 'get').toLowerCase() as Method),\n )\n const as = computed(() => {\n if (typeof props.as !== 'string' || props.as.toLowerCase() !== 'a') {\n // Custom component or element\n return props.as\n }\n\n return method.value !== 'get' ? 'button' : props.as.toLowerCase()\n })\n const mergeDataArray = computed(() =>\n mergeDataIntoQueryString(\n method.value,\n isUrlMethodPair(props.href) ? props.href.url : (props.href as string),\n props.data || {},\n props.queryStringArrayFormat,\n ),\n )\n const href = computed(() => mergeDataArray.value[0])\n const data = computed(() => mergeDataArray.value[1])\n\n const resolvedComponent = computed(() => {\n if (props.component) {\n return props.component\n }\n\n if (props.instant && isUrlMethodPair(props.href)) {\n return resolveUrlMethodPairComponent(props.href)\n }\n\n return null\n })\n\n const elProps = computed(() => {\n if (as.value === 'button') {\n return { type: 'button' }\n }\n\n if (as.value === 'a' || typeof as.value !== 'string') {\n return { href: href.value }\n }\n\n return {}\n })\n\n const baseParams = computed(() => ({\n data: data.value,\n method: method.value,\n replace: props.replace,\n preserveScroll: props.preserveScroll,\n preserveState: props.preserveState ?? method.value !== 'get',\n preserveUrl: props.preserveUrl,\n only: props.only,\n except: props.except,\n headers: props.headers,\n async: props.async,\n component: resolvedComponent.value,\n pageProps: props.pageProps,\n }))\n\n const visitParams = computed(() => ({\n ...baseParams.value,\n viewTransition: props.viewTransition,\n onCancelToken: props.onCancelToken,\n onBefore: props.onBefore,\n onStart: (visit: PendingVisit) => {\n inFlightCount.value++\n props.onStart?.(visit)\n },\n onProgress: props.onProgress,\n onFinish: (visit: ActiveVisit) => {\n inFlightCount.value--\n props.onFinish?.(visit)\n },\n onCancel: props.onCancel,\n onSuccess: props.onSuccess,\n onError: props.onError,\n }))\n\n const prefetch = () => {\n router.prefetch(\n href.value,\n {\n ...baseParams.value,\n onPrefetching: props.onPrefetching,\n onPrefetched: props.onPrefetched,\n },\n {\n cacheFor: cacheForValue.value,\n cacheTags: props.cacheTags,\n },\n )\n }\n\n const regularEvents = {\n onClick: (event: MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n router.visit(href.value, visitParams.value)\n }\n },\n }\n\n const prefetchHoverEvents = {\n onMouseenter: () => {\n hoverTimeout.value = setTimeout(() => {\n prefetch()\n }, config.get('prefetch.hoverDelay'))\n },\n onMouseleave: () => {\n clearTimeout(hoverTimeout.value)\n },\n onClick: regularEvents.onClick,\n }\n\n const prefetchClickEvents = {\n onMousedown: (event: MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n prefetch()\n }\n },\n onKeydown: (event: KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n prefetch()\n }\n },\n onMouseup: (event: MouseEvent) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n router.visit(href.value, visitParams.value)\n }\n },\n onKeyup: (event: KeyboardEvent) => {\n if (shouldNavigate(event)) {\n event.preventDefault()\n router.visit(href.value, visitParams.value)\n }\n },\n onClick: (event: MouseEvent) => {\n if (shouldIntercept(event)) {\n // Let the mouseup/keyup event handle the visit\n event.preventDefault()\n }\n },\n }\n\n return () => {\n return h(\n as.value as string | Component,\n {\n ...attrs,\n ...elProps.value,\n 'data-loading': inFlightCount.value > 0 ? '' : undefined,\n ...(() => {\n if (prefetchModes.value.includes('hover')) {\n return prefetchHoverEvents\n }\n\n if (prefetchModes.value.includes('click')) {\n return prefetchClickEvents\n }\n\n return regularEvents\n })(),\n },\n slots,\n )\n }\n },\n})\n\nexport default Link\n", "import {\n CancelToken,\n Errors,\n ErrorValue,\n FormDataConvertible,\n FormDataErrors,\n FormDataKeys,\n FormDataType,\n FormDataValues,\n hasFiles,\n http,\n HttpCancelledError,\n HttpProgressEvent,\n HttpResponseError,\n mergeDataIntoQueryString,\n Method,\n objectToFormData,\n Progress,\n UrlMethodPair,\n UseFormArguments,\n UseFormTransformCallback,\n UseFormUtils,\n UseFormWithPrecognitionArguments,\n UseHttpSubmitArguments,\n UseHttpSubmitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep } from 'es-toolkit'\nimport { NamedInputEvent, toSimpleValidationErrors, ValidationConfig, Validator } from 'laravel-precognition'\nimport useFormState from './useFormState'\n\nexport interface UseHttpProps<TForm extends object, TResponse = unknown> {\n isDirty: boolean\n errors: FormDataErrors<TForm>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n response: TResponse | null\n data(): TForm\n transform(callback: UseFormTransformCallback<TForm>): this\n defaults(): this\n defaults<T extends FormDataKeys<TForm>>(field: T, value: FormDataValues<TForm, T>): this\n defaults(fields: Partial<TForm>): this\n reset<K extends FormDataKeys<TForm>>(...fields: K[]): this\n clearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): this\n resetAndClearErrors<K extends FormDataKeys<TForm>>(...fields: K[]): this\n setError<K extends FormDataKeys<TForm>>(field: K, value: ErrorValue): this\n setError(errors: FormDataErrors<TForm>): this\n submit(...args: UseHttpSubmitArguments<TResponse, TForm>): Promise<TResponse>\n get(url: string, options?: UseHttpSubmitOptions<TResponse, TForm>): Promise<TResponse>\n post(url: string, options?: UseHttpSubmitOptions<TResponse, TForm>): Promise<TResponse>\n put(url: string, options?: UseHttpSubmitOptions<TResponse, TForm>): Promise<TResponse>\n patch(url: string, options?: UseHttpSubmitOptions<TResponse, TForm>): Promise<TResponse>\n delete(url: string, options?: UseHttpSubmitOptions<TResponse, TForm>): Promise<TResponse>\n cancel(): void\n dontRemember<K extends FormDataKeys<TForm>>(...fields: K[]): this\n optimistic(callback: (currentData: TForm) => Partial<TForm>): this\n withAllErrors(): this\n withPrecognition(...args: UseFormWithPrecognitionArguments): UseHttpPrecognitiveProps<TForm, TResponse>\n}\n\ntype PrecognitionValidationConfig<TKeys> = ValidationConfig & {\n only?: TKeys[] | Iterable<TKeys> | ArrayLike<TKeys>\n}\n\nexport interface UseHttpValidationProps<TForm extends object> {\n invalid<K extends FormDataKeys<TForm>>(field: K): boolean\n setValidationTimeout(duration: number): this\n touch<K extends FormDataKeys<TForm>>(field: K | NamedInputEvent | Array<K>, ...fields: K[]): this\n touched<K extends FormDataKeys<TForm>>(field?: K): boolean\n valid<K extends FormDataKeys<TForm>>(field: K): boolean\n validate<K extends FormDataKeys<TForm>>(\n field?: K | NamedInputEvent | PrecognitionValidationConfig<K>,\n config?: PrecognitionValidationConfig<K>,\n ): this\n validateFiles(): this\n validating: boolean\n validator: () => Validator\n withAllErrors(): this\n withoutFileValidation(): this\n setErrors(errors: FormDataErrors<TForm> | Record<string, string | string[]>): this\n forgetError<K extends FormDataKeys<TForm> | NamedInputEvent>(field: K): this\n}\n\ninterface InternalPrecognitionState {\n __touched: string[]\n __valid: string[]\n}\n\nexport type UseHttp<TForm extends object, TResponse = unknown> = TForm & UseHttpProps<TForm, TResponse>\nexport type UseHttpPrecognitiveProps<TForm extends object, TResponse = unknown> = UseHttp<TForm, TResponse> &\n UseHttpValidationProps<TForm> &\n InternalPrecognitionState\n\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n method: Method | (() => Method),\n url: string | (() => string),\n data: TForm | (() => TForm),\n): UseHttpPrecognitiveProps<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n urlMethodPair: UrlMethodPair | (() => UrlMethodPair),\n data: TForm | (() => TForm),\n): UseHttpPrecognitiveProps<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n rememberKey: string,\n data: TForm | (() => TForm),\n): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n data: TForm | (() => TForm),\n): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(): UseHttp<TForm, TResponse>\nexport default function useHttp<TForm extends FormDataType<TForm>, TResponse = unknown>(\n ...args: UseFormArguments<TForm>\n): UseHttp<TForm, TResponse> | UseHttpPrecognitiveProps<TForm, TResponse> {\n const { rememberKey, data, precognitionEndpoint } = UseFormUtils.parseUseFormArguments<TForm>(...args)\n\n let abortController: AbortController | null = null\n let pendingOptimisticCallback: ((currentData: TForm) => Partial<TForm>) | null = null\n\n const {\n form: baseForm,\n setDefaults,\n getTransform,\n getPrecognitionEndpoint,\n markAsSuccessful,\n wasDefaultsCalledInOnSuccess,\n resetDefaultsCalledInOnSuccess,\n setRememberExcludeKeys,\n resetBeforeSubmit,\n finishProcessing,\n withAllErrors,\n } = useFormState({\n data,\n rememberKey,\n precognitionEndpoint,\n })\n\n // Cast needed: baseForm has all form state/methods, we're adding HTTP methods below via Object.assign\n const form = baseForm as unknown as UseHttp<TForm, TResponse>\n\n // Add response property\n ;(form as any).response = null as TResponse | null\n\n const submit = async (\n method: Method,\n url: string,\n options: UseHttpSubmitOptions<TResponse, TForm>,\n ): Promise<TResponse> => {\n const onBefore = options.onBefore?.()\n\n if (onBefore === false) {\n return Promise.reject(new Error('Request cancelled by onBefore'))\n }\n\n resetDefaultsCalledInOnSuccess()\n resetBeforeSubmit()\n\n abortController = new AbortController()\n\n const cancelToken: CancelToken = {\n cancel: () => abortController?.abort(),\n }\n\n options.onCancelToken?.(cancelToken)\n\n options.optimistic = options.optimistic ?? pendingOptimisticCallback ?? undefined\n pendingOptimisticCallback = null\n\n let snapshot: TForm | undefined\n\n if (options.optimistic) {\n snapshot = cloneDeep(form.data())\n const optimisticData = options.optimistic(cloneDeep(snapshot))\n\n if (optimisticData) {\n Object.keys(optimisticData).forEach((key) => {\n ;(form as any)[key] = (optimisticData as any)[key]\n })\n }\n }\n\n form.processing = true\n options.onStart?.()\n\n const transform = getTransform()\n const transformedData = transform(form.data())\n const useFormData = hasFiles(transformedData as Record<string, FormDataConvertible>)\n\n let requestUrl = url\n let requestData: FormData | string | undefined\n let contentType: string | undefined\n\n if (method === 'get') {\n const [urlWithParams] = mergeDataIntoQueryString(\n method,\n url,\n transformedData as Record<string, FormDataConvertible>,\n )\n requestUrl = urlWithParams\n } else {\n if (useFormData) {\n requestData = objectToFormData(transformedData as Record<string, FormDataConvertible>)\n } else {\n requestData = JSON.stringify(transformedData)\n contentType = 'application/json'\n }\n }\n\n try {\n const response = await http.getClient().request({\n method,\n url: requestUrl,\n data: requestData,\n headers: {\n Accept: 'application/json',\n ...(contentType ? { 'Content-Type': contentType } : {}),\n ...options.headers,\n },\n signal: abortController.signal,\n onUploadProgress: (event: HttpProgressEvent) => {\n form.progress = event\n options.onProgress?.(event)\n },\n })\n\n const responseData = (response.data ? JSON.parse(response.data) : null) as TResponse\n\n if (response.status >= 200 && response.status < 300) {\n markAsSuccessful()\n ;(form as any).response = responseData\n\n options.onSuccess?.(responseData, response)\n\n if (!wasDefaultsCalledInOnSuccess()) {\n setDefaults(cloneDeep(form.data()))\n }\n\n form.isDirty = false\n\n return responseData\n }\n\n throw new HttpResponseError(`Request failed with status ${response.status}`, response, url)\n } catch (error: unknown) {\n if (snapshot) {\n Object.keys(snapshot).forEach((key) => {\n ;(form as any)[key] = (snapshot as any)[key]\n })\n }\n\n if (error instanceof HttpResponseError) {\n if (error.response.status === 422) {\n const responseData = JSON.parse(error.response.data)\n const validationErrors = responseData.errors || {}\n const processedErrors = (\n withAllErrors.enabled() ? validationErrors : toSimpleValidationErrors(validationErrors)\n ) as FormDataErrors<TForm>\n\n form.clearErrors().setError(processedErrors)\n options.onError?.(processedErrors as Errors)\n } else {\n options.onHttpException?.(error.response)\n }\n\n throw error\n }\n\n if (error instanceof HttpCancelledError || (error instanceof Error && error.name === 'AbortError')) {\n options.onCancel?.()\n throw new HttpCancelledError('Request was cancelled', url)\n }\n\n options.onNetworkError?.(error instanceof Error ? error : new Error('Unknown error'))\n\n throw error\n } finally {\n finishProcessing()\n abortController = null\n options.onFinish?.()\n }\n }\n\n const createSubmitMethod =\n (method: Method) =>\n async (url: string, options: UseHttpSubmitOptions<TResponse, TForm> = {}): Promise<TResponse> => {\n return submit(method, url, options)\n }\n\n Object.assign(form, {\n submit(...args: UseHttpSubmitArguments<TResponse, TForm>) {\n const parsed = UseFormUtils.parseSubmitArguments(args as any, getPrecognitionEndpoint())\n\n return submit(parsed.method, parsed.url, parsed.options as UseHttpSubmitOptions<TResponse, TForm>)\n },\n\n get: createSubmitMethod('get'),\n post: createSubmitMethod('post'),\n put: createSubmitMethod('put'),\n patch: createSubmitMethod('patch'),\n delete: createSubmitMethod('delete'),\n\n cancel() {\n if (abortController) {\n abortController.abort()\n }\n },\n\n dontRemember(...keys: FormDataKeys<TForm>[]) {\n setRememberExcludeKeys(keys)\n return form\n },\n\n optimistic(callback: (currentData: TForm) => Partial<TForm>) {\n pendingOptimisticCallback = callback\n return form\n },\n\n withAllErrors() {\n withAllErrors.enable()\n return form\n },\n })\n\n const originalWithPrecognition = form.withPrecognition\n form.withPrecognition = (...args: UseFormWithPrecognitionArguments): UseHttpPrecognitiveProps<TForm, TResponse> => {\n originalWithPrecognition.call(form, ...args)\n\n return form as UseHttpPrecognitiveProps<TForm, TResponse>\n }\n\n return getPrecognitionEndpoint() ? (form as UseHttpPrecognitiveProps<TForm, TResponse>) : form\n}\n", "import { PollOptions, ReloadOptions, router } from '@inertiajs/core'\nimport { onMounted, onUnmounted } from 'vue'\n\nexport default function usePoll(\n interval: number,\n requestOptions: ReloadOptions = {},\n options: PollOptions = {\n keepAlive: false,\n autoStart: true,\n },\n): {\n stop: VoidFunction\n start: VoidFunction\n} {\n const { stop, start } = router.poll(interval, requestOptions, {\n ...options,\n autoStart: false,\n })\n\n onMounted(() => {\n if (options.autoStart ?? true) {\n start()\n }\n })\n\n onUnmounted(() => {\n stop()\n })\n\n return {\n stop,\n start,\n }\n}\n", "import { router, VisitOptions } from '@inertiajs/core'\nimport { onMounted, onUnmounted, ref, Ref } from 'vue'\n\nexport default function usePrefetch(options: VisitOptions = {}): {\n lastUpdatedAt: Ref<number | null>\n isPrefetching: Ref<boolean>\n isPrefetched: Ref<boolean>\n flush: () => void\n} {\n const isPrefetching = ref(false)\n const lastUpdatedAt = ref<number | null>(null)\n const isPrefetched = ref(false)\n\n const cached = typeof window === 'undefined' ? null : router.getCached(window.location.pathname, options)\n const inFlight = typeof window === 'undefined' ? null : router.getPrefetching(window.location.pathname, options)\n\n lastUpdatedAt.value = cached?.staleTimestamp || null\n\n isPrefetching.value = inFlight !== null\n isPrefetched.value = cached !== null\n\n let onPrefetchedListener: () => void\n let onPrefetchingListener: () => void\n\n onMounted(() => {\n onPrefetchingListener = router.on('prefetching', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n isPrefetching.value = true\n }\n })\n\n onPrefetchedListener = router.on('prefetched', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n isPrefetching.value = false\n isPrefetched.value = true\n }\n })\n })\n\n onUnmounted(() => {\n onPrefetchedListener()\n onPrefetchingListener()\n })\n\n return {\n lastUpdatedAt,\n isPrefetching,\n isPrefetched,\n flush: () => router.flush(window.location.pathname, options),\n }\n}\n", "import { router } from '@inertiajs/core'\nimport { cloneDeep } from 'es-toolkit'\nimport { isReactive, reactive, ref, Ref, watch } from 'vue'\n\nexport default function useRemember<T extends object>(\n data: T & { __rememberable?: boolean; __remember?: Function; __restore?: Function },\n key?: string,\n): Ref<T> | T {\n if (typeof data === 'object' && data !== null && data.__rememberable === false) {\n return data\n }\n\n const restored = router.restore(key)\n const type = isReactive(data) ? reactive : ref\n const hasCallbacks = typeof data.__remember === 'function' && typeof data.__restore === 'function'\n const remembered = type(\n restored === undefined ? data : hasCallbacks ? data.__restore!(cloneDeep(restored)) : cloneDeep(restored),\n )\n\n watch(\n remembered,\n (newValue) => {\n router.remember(cloneDeep(hasCallbacks ? data.__remember!() : newValue), key)\n },\n { immediate: true, deep: true },\n )\n\n return remembered\n}\n", "import { ReloadOptions, router } from '@inertiajs/core'\nimport { get } from 'es-toolkit/compat'\nimport { computed, defineComponent, h, nextTick, onUnmounted, PropType, ref, SlotsType, watch } from 'vue'\nimport { usePage } from './app'\n\nexport default defineComponent({\n name: 'WhenVisible',\n slots: Object as SlotsType<{\n default: { fetching: boolean }\n fallback: {}\n }>,\n props: {\n data: {\n type: [String, Array<String>],\n },\n params: {\n type: Object as PropType<ReloadOptions>,\n },\n buffer: {\n type: Number,\n default: 0,\n },\n as: {\n type: String,\n default: 'div',\n },\n always: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { slots }) {\n const loaded = ref(false)\n const fetching = ref(false)\n const observer = ref<IntersectionObserver | null>(null)\n const elementRef = ref<HTMLElement | null>(null)\n const page = usePage()\n\n const keys = computed(() => {\n return props.data ? ((Array.isArray(props.data) ? props.data : [props.data]) as string[]) : []\n })\n\n function getReloadParams(): Partial<ReloadOptions> {\n const reloadParams: Partial<ReloadOptions> = { preserveErrors: true, ...props.params }\n\n if (props.data) {\n reloadParams.only = (Array.isArray(props.data) ? props.data : [props.data]) as string[]\n }\n\n return reloadParams\n }\n\n function registerObserver() {\n if (typeof window === 'undefined') {\n return\n }\n\n observer.value?.disconnect()\n\n observer.value = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (fetching.value) {\n return\n }\n\n if (!props.always && loaded.value) {\n return\n }\n\n fetching.value = true\n\n const reloadParams = getReloadParams()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.value = true\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n loaded.value = true\n fetching.value = false\n reloadParams.onFinish?.(e)\n\n if (!props.always) {\n observer.value?.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${props.buffer}px`,\n },\n )\n\n if (elementRef.value) {\n observer.value.observe(elementRef.value)\n }\n }\n\n watch(\n () => keys.value.map((key) => get(page.props, key)),\n () => {\n const exists = keys.value.length > 0 && keys.value.every((key) => get(page.props, key) !== undefined)\n loaded.value = exists\n\n if (exists && !props.always) {\n return\n }\n\n if (!observer.value || !exists) {\n nextTick(registerObserver)\n }\n },\n { immediate: true },\n )\n\n onUnmounted(() => {\n observer.value?.disconnect()\n })\n\n return () => {\n const els = []\n\n if (props.always || !loaded.value) {\n els.push(h(props.as, { ref: elementRef }))\n }\n\n if (!loaded.value) {\n els.push(slots.fallback ? slots.fallback({}) : null)\n } else if (slots.default) {\n els.push(slots.default({ fetching: fetching.value }))\n }\n\n return els\n }\n },\n})\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["http", "router", "router", "reactive", "ref", "key", "router", "UseFormUtils", "cloneDeep", "router", "cloneDeep", "router", "cloneDeep", "config", "key", "restored", "key", "UseFormUtils", "cloneDeep", "args", "page", "router", "ref", "router", "layout", "reactive", "router", "h", "progress", "page", "http", "layout", "head", "vueApp", "h", "router", "router", "get", "computed", "defineComponent", "ref", "defineComponent", "ref", "page", "computed", "router", "key", "get", "config", "UseFormUtils", "isEqual", "computed", "defineComponent", "h", "onMounted", "ref", "watch", "defineComponent", "config", "ref", "computed", "isEqual", "onMounted", "watch", "UseFormUtils", "h", "defineComponent", "onBeforeUnmount", "defineComponent", "onBeforeUnmount", "computed", "defineComponent", "h", "onMounted", "onUnmounted", "ref", "watch", "defineComponent", "ref", "computed", "onMounted", "onUnmounted", "watch", "h", "isUrlMethodPair", "mergeDataIntoQueryString", "resolveUrlMethodPairComponent", "router", "computed", "defineComponent", "h", "onMounted", "onUnmounted", "ref", "noop", "defineComponent", "ref", "computed", "onMounted", "onUnmounted", "isUrlMethodPair", "mergeDataIntoQueryString", "resolveUrlMethodPairComponent", "router", "h", "mergeDataIntoQueryString", "UseFormUtils", "cloneDeep", "toSimpleValidationErrors", "UseFormUtils", "cloneDeep", "key", "mergeDataIntoQueryString", "toSimpleValidationErrors", "args", "router", "onMounted", "onUnmounted", "router", "onMounted", "onUnmounted", "ref", "router", "cloneDeep", "reactive", "ref", "watch", "key", "router", "get", "computed", "defineComponent", "h", "onUnmounted", "ref", "watch", "defineComponent", "ref", "page", "computed", "router", "watch", "key", "get", "onUnmounted", "h"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inertiajs/vue3",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "The Vue 3 adapter for Inertia.js",
|
|
6
6
|
"contributors": [
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"axios": "^1.
|
|
44
|
+
"axios": "^1.15.2",
|
|
45
45
|
"es-check": "^9.6.1",
|
|
46
46
|
"esbuild": "^0.27.3",
|
|
47
47
|
"esbuild-node-externals": "^1.20.1",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"es-toolkit": "^1.33.0",
|
|
56
56
|
"laravel-precognition": "^2.0.0",
|
|
57
|
-
"@inertiajs/core": "3.0
|
|
57
|
+
"@inertiajs/core": "3.1.0"
|
|
58
58
|
},
|
|
59
59
|
"scripts": {
|
|
60
60
|
"build": "pnpm clean && ./build.js && tsc",
|
package/types/deferred.d.ts
CHANGED
|
@@ -42,5 +42,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
42
42
|
reloading: boolean;
|
|
43
43
|
};
|
|
44
44
|
fallback: {};
|
|
45
|
+
rescue: {
|
|
46
|
+
reloading: boolean;
|
|
47
|
+
};
|
|
45
48
|
}>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
46
49
|
export default _default;
|