@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 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) && keysAreBeingReloaded(visit.only, visit.except, keys)) {
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
- return keys.every((key2) => get2(page2.props, key2) !== void 0) ? slots.default?.({ reloading: reloading.value }) : slots.fallback({});
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 computed2,
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 = computed2(
1005
+ const method = computed3(
1008
1006
  () => isUrlMethodPair(props.action) ? props.action.method : props.method.toLowerCase()
1009
1007
  );
1010
- const resolvedComponent = computed2(() => {
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 computed3, defineComponent as defineComponent5, Fragment, h as h4, onMounted as onMounted3, onUnmounted as onUnmounted2, ref as ref5, watch as watch3 } from "vue";
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 = computed3(
1393
+ const itemsElement = computed4(
1396
1394
  () => resolveHTMLElement(props.itemsElement, itemsElementRef.value)
1397
1395
  );
1398
- const scrollableParent = computed3(() => getScrollableParent(itemsElement.value));
1399
- const startElement = computed3(
1396
+ const scrollableParent = computed4(() => getScrollableParent(itemsElement.value));
1397
+ const startElement = computed4(
1400
1398
  () => resolveHTMLElement(props.startElement, startElementRef.value)
1401
1399
  );
1402
- const endElement = computed3(() => resolveHTMLElement(props.endElement, endElementRef.value));
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 = computed3(() => !manualMode.value);
1453
- const manualMode = computed3(
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 computed4, defineComponent as defineComponent6, h as h5, onMounted as onMounted4, onUnmounted as onUnmounted3, ref as ref6 } from "vue";
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 = computed4(() => {
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 = computed4(() => {
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 = computed4(
1720
+ const method = computed5(
1723
1721
  () => isUrlMethodPair2(props.href) ? props.href.method : (props.method ?? "get").toLowerCase()
1724
1722
  );
1725
- const as = computed4(() => {
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 = computed4(
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 = computed4(() => mergeDataArray.value[0]);
1740
- const data = computed4(() => mergeDataArray.value[1]);
1741
- const resolvedComponent = computed4(() => {
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 = computed4(() => {
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 = computed4(() => ({
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 = computed4(() => ({
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 computed5, defineComponent as defineComponent7, h as h6, nextTick, onUnmounted as onUnmounted6, ref as ref9, watch as watch5 } from "vue";
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 = computed5(() => {
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": "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",
6
- "names": ["http", "router", "router", "reactive", "ref", "key", "router", "UseFormUtils", "cloneDeep", "router", "cloneDeep", "router", "cloneDeep", "config", "key", "restored", "key", "UseFormUtils", "cloneDeep", "args", "page", "router", "ref", "router", "layout", "reactive", "router", "h", "progress", "page", "http", "layout", "head", "vueApp", "h", "router", "router", "get", "defineComponent", "ref", "key", "defineComponent", "ref", "page", "router", "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"]
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",
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.13.5",
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.3"
57
+ "@inertiajs/core": "3.1.0"
58
58
  },
59
59
  "scripts": {
60
60
  "build": "pnpm clean && ./build.js && tsc",
@@ -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;