remix-validated-form 4.6.1-beta.0 → 4.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"remix-validated-form.cjs.js","sources":["../../../node_modules/remeda/dist/es/purry.js","../../../node_modules/remeda/dist/es/_reduceLazy.js","../../../node_modules/remeda/dist/es/equals.js","../../../node_modules/remeda/dist/es/omit.js","../../../node_modules/remeda/dist/es/omitBy.js","../../../node_modules/remeda/dist/es/pathOr.js","../../../node_modules/remeda/dist/es/set.js","../../../node_modules/remeda/dist/es/uniq.js","../src/internal/logic/getCheckboxChecked.ts","../src/internal/logic/getRadioChecked.ts","../src/internal/getInputProps.ts","../../setGet/src/stringToPathArray.ts","../../setGet/src/setPath.ts","../../setGet/src/getPath.ts","../../../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../src/internal/constants.ts","../src/internal/formContext.ts","../src/internal/hydratable.ts","../../../node_modules/zustand/esm/vanilla.js","../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../../../node_modules/use-sync-external-store/shim/index.js","../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../../../node_modules/use-sync-external-store/shim/with-selector.js","../../../node_modules/zustand/esm/index.js","../../../node_modules/immer/dist/immer.esm.js","../../../node_modules/zustand/esm/middleware/immer.js","../src/internal/logic/requestSubmit.ts","../src/internal/state/arrayUtil.ts","../src/internal/state/createFormStore.ts","../src/internal/state/storeHooks.ts","../src/internal/hooks.ts","../src/internal/state/controlledFields.ts","../src/hooks.ts","../../../node_modules/@remix-run/server-runtime/dist/esm/responses.js","../src/server.ts","../src/internal/MultiValueMap.ts","../src/internal/submissionCallbacks.ts","../src/internal/util.ts","../src/ValidatedForm.tsx","../src/internal/flatten.ts","../src/validation/createValidator.ts","../src/unreleased/formStateHooks.ts","../src/userFacingFormContext.ts","../src/internal/state/fieldArray.tsx"],"sourcesContent":["var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n/**\n * Creates a function with `data-first` and `data-last` signatures.\n *\n * `purry` is a dynamic function and it's not type safe. It should be wrapped by a function that have proper typings.\n * Refer to the example below for correct usage.\n *\n * @param fn the function to purry.\n * @param args the arguments\n * @signature R.purry(fn, arguments);\n * @example-raw\n * function _findIndex(array, fn) {\n * for (let i = 0; i < array.length; i++) {\n * if (fn(array[i])) {\n * return i;\n * }\n * }\n * return -1;\n * }\n *\n * // data-first\n * function findIndex<T>(array: T[], fn: (item: T) => boolean): number;\n *\n * // data-last\n * function findIndex<T>(fn: (item: T) => boolean): (array: T[]) => number;\n *\n * function findIndex() {\n * return R.purry(_findIndex, arguments);\n * }\n * @category Function\n */\nexport function purry(fn, args, lazy) {\n var diff = fn.length - args.length;\n var arrayArgs = Array.from(args);\n if (diff === 0) {\n return fn.apply(void 0, arrayArgs);\n }\n if (diff === 1) {\n var ret = function (data) { return fn.apply(void 0, __spreadArray([data], arrayArgs, false)); };\n if (lazy || fn.lazy) {\n ret.lazy = lazy || fn.lazy;\n ret.lazyArgs = args;\n }\n return ret;\n }\n throw new Error('Wrong number of arguments');\n}\n","export function _reduceLazy(array, lazy, indexed) {\n return array.reduce(function (acc, item, index) {\n var result = indexed ? lazy(item, index, array) : lazy(item);\n if (result.hasMany === true) {\n acc.push.apply(acc, result.next);\n }\n else if (result.hasNext === true) {\n acc.push(result.next);\n }\n return acc;\n }, []);\n}\n","import { purry } from './purry';\n// from https://github.com/epoberezkin/fast-deep-equal/blob/master/index.js\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nexport function equals() {\n return purry(_equals, arguments);\n}\nfunction _equals(a, b) {\n if (a === b) {\n return true;\n }\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n var arrA = isArray(a);\n var arrB = isArray(b);\n var i = void 0;\n var length = void 0;\n var key = void 0;\n if (arrA && arrB) {\n length = a.length;\n if (length !== b.length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (arrA !== arrB) {\n return false;\n }\n var dateA = a instanceof Date;\n var dateB = b instanceof Date;\n if (dateA !== dateB) {\n return false;\n }\n if (dateA && dateB) {\n return a.getTime() === b.getTime();\n }\n var regexpA = a instanceof RegExp;\n var regexpB = b instanceof RegExp;\n if (regexpA !== regexpB) {\n return false;\n }\n if (regexpA && regexpB) {\n return a.toString() === b.toString();\n }\n var keys = keyList(a);\n length = keys.length;\n if (length !== keyList(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!hasProp.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!equals(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n","import { purry } from './purry';\nexport function omit() {\n return purry(_omit, arguments);\n}\nfunction _omit(object, names) {\n var set = new Set(names);\n return Object.entries(object).reduce(function (acc, _a) {\n var name = _a[0], value = _a[1];\n if (!set.has(name)) {\n acc[name] = value;\n }\n return acc;\n }, {});\n}\n","import { purry } from './purry';\nexport function omitBy() {\n return purry(_omitBy, arguments);\n}\nfunction _omitBy(object, fn) {\n return Object.keys(object).reduce(function (acc, key) {\n if (!fn(object[key], key)) {\n acc[key] = object[key];\n }\n return acc;\n }, {});\n}\n","import { purry } from './purry';\nexport function pathOr() {\n return purry(_pathOr, arguments);\n}\nfunction _pathOr(object, path, defaultValue) {\n var current = object;\n for (var _i = 0, path_1 = path; _i < path_1.length; _i++) {\n var prop = path_1[_i];\n if (current == null || current[prop] == null) {\n return defaultValue;\n }\n current = current[prop];\n }\n return current;\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { purry } from './purry';\nexport function set() {\n return purry(_set, arguments);\n}\nfunction _set(obj, prop, value) {\n var _a;\n return __assign(__assign({}, obj), (_a = {}, _a[prop] = value, _a));\n}\n","import { purry } from './purry';\nimport { _reduceLazy } from './_reduceLazy';\nexport function uniq() {\n return purry(_uniq, arguments, uniq.lazy);\n}\nfunction _uniq(array) {\n return _reduceLazy(array, uniq.lazy());\n}\n(function (uniq) {\n function lazy() {\n var set = new Set();\n return function (value) {\n if (set.has(value)) {\n return {\n done: false,\n hasNext: false,\n };\n }\n set.add(value);\n return {\n done: false,\n hasNext: true,\n next: value,\n };\n };\n }\n uniq.lazy = lazy;\n})(uniq || (uniq = {}));\n","export const getCheckboxChecked = (\n checkboxValue: string | undefined = \"on\",\n newValue: unknown\n): boolean | undefined => {\n if (Array.isArray(newValue))\n return newValue.some((val) => val === true || val === checkboxValue);\n if (typeof newValue === \"boolean\") return newValue;\n if (typeof newValue === \"string\") return newValue === checkboxValue;\n return undefined;\n};\n","export const getRadioChecked = (\n radioValue: string | undefined = \"on\",\n newValue: unknown\n) => {\n if (typeof newValue === \"string\") return newValue === radioValue;\n return undefined;\n};\n\nif (import.meta.vitest) {\n const { it, expect } = import.meta.vitest;\n it(\"getRadioChecked\", () => {\n expect(getRadioChecked(\"on\", \"on\")).toBe(true);\n expect(getRadioChecked(\"on\", undefined)).toBe(undefined);\n expect(getRadioChecked(\"trueValue\", undefined)).toBe(undefined);\n expect(getRadioChecked(\"trueValue\", \"bob\")).toBe(false);\n expect(getRadioChecked(\"trueValue\", \"trueValue\")).toBe(true);\n });\n}\n","import * as R from \"remeda\";\nimport { getCheckboxChecked } from \"./logic/getCheckboxChecked\";\nimport { getRadioChecked } from \"./logic/getRadioChecked\";\n\nexport type ValidationBehavior = \"onBlur\" | \"onChange\" | \"onSubmit\";\n\nexport type ValidationBehaviorOptions = {\n initial: ValidationBehavior;\n whenTouched: ValidationBehavior;\n whenSubmitted: ValidationBehavior;\n};\n\nexport type CreateGetInputPropsOptions = {\n clearError: () => void;\n validate: () => void;\n defaultValue?: any;\n touched: boolean;\n setTouched: (touched: boolean) => void;\n hasBeenSubmitted: boolean;\n validationBehavior?: Partial<ValidationBehaviorOptions>;\n name: string;\n};\n\ntype HandledProps = \"name\" | \"defaultValue\" | \"defaultChecked\";\ntype Callbacks = \"onChange\" | \"onBlur\";\n\ntype MinimalInputProps = {\n onChange?: (...args: any[]) => void;\n onBlur?: (...args: any[]) => void;\n defaultValue?: any;\n defaultChecked?: boolean;\n name?: string;\n type?: string;\n};\n\nexport type GetInputProps = <T extends MinimalInputProps>(\n props?: Omit<T, HandledProps | Callbacks> & Partial<Pick<T, Callbacks>>\n) => T;\n\nconst defaultValidationBehavior: ValidationBehaviorOptions = {\n initial: \"onBlur\",\n whenTouched: \"onChange\",\n whenSubmitted: \"onChange\",\n};\n\nexport const createGetInputProps = ({\n clearError,\n validate,\n defaultValue,\n touched,\n setTouched,\n hasBeenSubmitted,\n validationBehavior,\n name,\n}: CreateGetInputPropsOptions): GetInputProps => {\n const validationBehaviors = {\n ...defaultValidationBehavior,\n ...validationBehavior,\n };\n\n return <T extends MinimalInputProps>(props = {} as any) => {\n const behavior = hasBeenSubmitted\n ? validationBehaviors.whenSubmitted\n : touched\n ? validationBehaviors.whenTouched\n : validationBehaviors.initial;\n\n const inputProps: MinimalInputProps = {\n ...props,\n onChange: (...args: unknown[]) => {\n if (behavior === \"onChange\") validate();\n else clearError();\n return props?.onChange?.(...args);\n },\n onBlur: (...args: unknown[]) => {\n if (behavior === \"onBlur\") validate();\n setTouched(true);\n return props?.onBlur?.(...args);\n },\n name,\n };\n\n if (props.type === \"checkbox\") {\n inputProps.defaultChecked = getCheckboxChecked(props.value, defaultValue);\n } else if (props.type === \"radio\") {\n inputProps.defaultChecked = getRadioChecked(props.value, defaultValue);\n } else if (props.value === undefined) {\n // We should only set the defaultValue if the input is uncontrolled.\n inputProps.defaultValue = defaultValue;\n }\n\n return R.omitBy(inputProps, (value) => value === undefined) as T;\n };\n};\n","export const stringToPathArray = <T extends string>(\n path: T\n): (string | number)[] => {\n if (path.length === 0) return [];\n\n const match =\n path.match(/^\\[(.+?)\\](.*)$/) || path.match(/^\\.?([^\\.\\[\\]]+)(.*)$/);\n if (match) {\n const [_, key, rest] = match;\n return [/^\\d+$/.test(key) ? Number(key) : key, ...stringToPathArray(rest)];\n }\n return [path];\n};\n","import { stringToPathArray } from \"./stringToPathArray\";\n\nexport function setPath<T>(object: T, path: string, defaultValue: any) {\n return _setPathNormalized(object, stringToPathArray(path), defaultValue);\n}\n\nfunction _setPathNormalized(\n object: any,\n path: (string | number)[],\n value: any\n): any {\n const leadingSegments = path.slice(0, -1);\n const lastSegment = path[path.length - 1];\n\n let obj = object;\n for (let i = 0; i < leadingSegments.length; i++) {\n const segment = leadingSegments[i];\n if (obj[segment] === undefined) {\n const nextSegment = leadingSegments[i + 1] ?? lastSegment;\n obj[segment] = typeof nextSegment === \"number\" ? [] : {};\n }\n obj = obj[segment];\n }\n obj[lastSegment] = value;\n return object;\n}\n","import * as R from \"remeda\";\nimport { stringToPathArray } from \"./stringToPathArray\";\n\n// pathOr types don't support deeper than 3 levels, but the code works\nexport const getPath = (object: any, path: string) =>\n R.pathOr(object, stringToPathArray(path) as any, undefined);\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? prefix + \": \" + provided : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","export const FORM_ID_FIELD = \"__rvfInternalFormId\" as const;\nexport const FORM_DEFAULTS_FIELD = \"__rvfInternalFormDefaults\" as const;\nexport const formDefaultValuesKey = (formId: string) =>\n `${FORM_DEFAULTS_FIELD}_${formId}`;\n","import { useFetcher } from \"@remix-run/react\";\nimport { createContext } from \"react\";\n\nexport type InternalFormContextValue = {\n formId: string | symbol;\n action?: string;\n subaction?: string;\n defaultValuesProp?: { [fieldName: string]: any };\n fetcher?: ReturnType<typeof useFetcher>;\n};\n\nexport const InternalFormContext =\n createContext<InternalFormContextValue | null>(null);\n","/**\n * The purpose of this type is to simplify the logic\n * around data that needs to come from the server initially,\n * but from the internal state after hydration.\n */\nexport type Hydratable<T> = {\n hydrateTo: (data: T) => T;\n map: <U>(fn: (data: T) => U) => Hydratable<U>;\n};\n\nconst serverData = <T>(data: T): Hydratable<T> => ({\n hydrateTo: () => data,\n map: (fn) => serverData(fn(data)),\n});\n\nconst hydratedData = <T>(): Hydratable<T> => ({\n hydrateTo: (hydratedData: T) => hydratedData,\n map: <U>() => hydratedData<U>(),\n});\n\nconst from = <T>(data: T, hydrated: boolean): Hydratable<T> =>\n hydrated ? hydratedData<T>() : serverData<T>(data);\n\nexport const hydratable = {\n serverData,\n hydratedData,\n from,\n};\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (nextState !== state) {\n const previousState = state;\n state = replace ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => listeners.clear();\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\nexport { createStore as default };\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","import createStore__default from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nexport { default as createStore } from 'zustand/vanilla';\nimport { useDebugValue } from 'react';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector.js';\n\nfunction useStore(api, selector = api.getState, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(api.subscribe, api.getState, api.getServerState || api.getState, selector, equalityFn);\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = typeof createState === \"function\" ? createStore__default(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\nvar create$1 = create;\n\nexport { create$1 as default, useStore };\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if(\"production\"!==process.env.NODE_ENV){var i=Y[n],o=i?\"function\"==typeof i?i.apply(null,t):i:\"unknown error nr: \"+n;throw Error(\"[Immer] \"+o)}throw Error(\"[Immer] minified error nr: \"+n+(t.length?\" \"+t.map((function(n){return\"'\"+n+\"'\"})).join(\",\"):\"\")+\". Find the full error at: https://bit.ly/3cXEKWf\")}function r(n){return!!n&&!!n[Q]}function t(n){return!!n&&(function(n){if(!n||\"object\"!=typeof n)return!1;var r=Object.getPrototypeOf(n);if(null===r)return!0;var t=Object.hasOwnProperty.call(r,\"constructor\")&&r.constructor;return t===Object||\"function\"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!n.constructor[L]||s(n)||v(n))}function e(t){return r(t)||n(23,t),t[Q].t}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&\"symbol\"==typeof e||r(e,n[e],n)})):n.forEach((function(t,e){return r(e,t,n)}))}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?(n.delete(r),n.add(t)):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]})}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)?n:(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0),n)}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function O(n){g(n),n.p.forEach(S),n.p=null}function g(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.O=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.g||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(O(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),O(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o;i(3===e.i?new Set(o):o,(function(r,i){return A(n,e,o,r,i,t)})),x(n,o,!1),t&&n.u&&b(\"Patches\").R(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var v=M(e,c,s&&i&&3!==i.i&&!u(i.D,a)?s.concat(a):void 0);if(f(o,a,v),!r(v))return;e.m=!1}if(t(c)&&!y(c)){if(!e.h.F&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),n.h.F&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function R(n,r,t){var e=s(r)?b(\"MapSet\").N(r,t):v(r)?b(\"MapSet\").T(r,t):n.g?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function D(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=F(r,c),u.I=!1}else e=F(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function F(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function N(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e<r.length;e++)if(!r.hasOwnProperty(e))return!0;return!1}function f(r){r.O&&n(3,JSON.stringify(p(r)))}var s={};m(\"ES5\",{J:function(n,r){var e=Array.isArray(n),i=function(n,r){if(n){for(var e=Array(r.length),i=0;i<r.length;i++)Object.defineProperty(e,\"\"+i,t(i,!0));return e}var o=rn(r);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=t(f,n||!!o[f].enumerable)}return Object.create(Object.getPrototypeOf(r),o)}(e,n),o={i:e?5:4,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:i,o:null,O:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,t,o){o?r(t)&&t[Q].A===n&&e(n.p):(n.u&&function n(r){if(r&&\"object\"==typeof r){var t=r[Q];if(t){var e=t.t,o=t.k,f=t.D,c=t.i;if(4===c)i(o,(function(r){r!==Q&&(void 0!==e[r]||u(e,r)?f[r]||n(o[r]):(f[r]=!0,k(t)))})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,k(t))}));else if(5===c){if(a(t)&&(k(t),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)o.hasOwnProperty(l)||(f[l]=!0),void 0===f[l]&&n(o[l])}}}}(n.p[0]),e(n.p))},K:function(n){return 4===n.i?o(n):a(n)}})}function T(){function e(n){if(!t(n))return n;if(Array.isArray(n))return n.map(e);if(s(n))return new Map(Array.from(n.entries()).map((function(n){return[n[0],e(n[1])]})));if(v(n))return new Set(Array.from(n).map(e));var r=Object.create(Object.getPrototypeOf(n));for(var i in n)r[i]=e(n[i]);return u(n,L)&&(r[L]=n[L]),r}function f(n){return r(n)?e(n):n}var c=\"add\";m(\"Patches\",{$:function(r,t){return t.forEach((function(t){for(var i=t.path,u=t.op,f=r,s=0;s<i.length-1;s++){var v=o(f),p=\"\"+i[s];0!==v&&1!==v||\"__proto__\"!==p&&\"constructor\"!==p||n(24),\"function\"==typeof f&&\"prototype\"===p&&n(24),\"object\"!=typeof(f=a(f,p))&&n(15,i.join(\"/\"))}var l=o(f),d=e(t.value),h=i[i.length-1];switch(u){case\"replace\":switch(l){case 2:return f.set(h,d);case 3:n(16);default:return f[h]=d}case c:switch(l){case 1:return\"-\"===h?f.push(d):f.splice(h,0,d);case 2:return f.set(h,d);case 3:return f.add(d);default:return f[h]=d}case\"remove\":switch(l){case 1:return f.splice(h,1);case 2:return f.delete(h);case 3:return f.delete(t.value);default:return delete f[h]}default:n(17,u)}})),r},R:function(n,r,t,e){switch(n.i){case 0:case 4:case 2:return function(n,r,t,e){var o=n.t,s=n.o;i(n.D,(function(n,i){var v=a(o,n),p=a(s,n),l=i?u(o,n)?\"replace\":c:\"remove\";if(v!==p||\"replace\"!==l){var d=r.concat(n);t.push(\"remove\"===l?{op:l,path:d}:{op:l,path:d,value:p}),e.push(l===c?{op:\"remove\",path:d}:\"remove\"===l?{op:c,path:d,value:f(v)}:{op:\"replace\",path:d,value:f(v)})}}))}(n,r,t,e);case 5:case 1:return function(n,r,t,e){var i=n.t,o=n.D,u=n.o;if(u.length<i.length){var a=[u,i];i=a[0],u=a[1];var s=[e,t];t=s[0],e=s[1]}for(var v=0;v<i.length;v++)if(o[v]&&u[v]!==i[v]){var p=r.concat([v]);t.push({op:\"replace\",path:p,value:f(u[v])}),e.push({op:\"replace\",path:p,value:f(i[v])})}for(var l=i.length;l<u.length;l++){var d=r.concat([l]);t.push({op:c,path:d,value:f(u[l])})}i.length<u.length&&e.push({op:\"replace\",path:r.concat([\"length\"]),value:i.length})}(n,r,t,e);case 3:return function(n,r,t,e){var i=n.t,o=n.o,u=0;i.forEach((function(n){if(!o.has(n)){var i=r.concat([u]);t.push({op:\"remove\",path:i,value:n}),e.unshift({op:c,path:i,value:n})}u++})),u=0,o.forEach((function(n){if(!i.has(n)){var o=r.concat([u]);t.push({op:c,path:o,value:n}),e.unshift({op:\"remove\",path:o,value:n})}u++}))}(n,r,t,e)}},M:function(n,r,t,e){t.push({op:\"replace\",path:[],value:r===H?void 0:r}),e.push({op:\"replace\",path:[],value:n})}})}function C(){function r(n,r){function t(){this.constructor=n}a(n,r),n.prototype=(t.prototype=r.prototype,new t)}function e(n){n.o||(n.D=new Map,n.o=new Map(n.t))}function o(n){n.o||(n.o=new Set,n.t.forEach((function(r){if(t(r)){var e=R(n.A.h,r,n);n.p.set(r,e),n.o.add(e)}else n.o.add(r)})))}function u(r){r.O&&n(3,JSON.stringify(p(r)))}var a=function(n,r){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t])})(n,r)},f=function(){function n(n,r){return this[Q]={i:2,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,D:void 0,t:n,k:this,C:!1,O:!1},this}r(n,Map);var o=n.prototype;return Object.defineProperty(o,\"size\",{get:function(){return p(this[Q]).size}}),o.has=function(n){return p(this[Q]).has(n)},o.set=function(n,r){var t=this[Q];return u(t),p(t).has(n)&&p(t).get(n)===r||(e(t),k(t),t.D.set(n,!0),t.o.set(n,r),t.D.set(n,!0)),this},o.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),e(r),k(r),r.t.has(n)?r.D.set(n,!1):r.D.delete(n),r.o.delete(n),!0},o.clear=function(){var n=this[Q];u(n),p(n).size&&(e(n),k(n),n.D=new Map,i(n.t,(function(r){n.D.set(r,!1)})),n.o.clear())},o.forEach=function(n,r){var t=this;p(this[Q]).forEach((function(e,i){n.call(r,t.get(i),i,t)}))},o.get=function(n){var r=this[Q];u(r);var i=p(r).get(n);if(r.I||!t(i))return i;if(i!==r.t.get(n))return i;var o=R(r.A.h,i,r);return e(r),r.o.set(n,o),o},o.keys=function(){return p(this[Q]).keys()},o.values=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.values()},n.next=function(){var n=t.next();return n.done?n:{done:!1,value:r.get(n.value)}},n},o.entries=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.entries()},n.next=function(){var n=t.next();if(n.done)return n;var e=r.get(n.value);return{done:!1,value:[n.value,e]}},n},o[V]=function(){return this.entries()},n}(),c=function(){function n(n,r){return this[Q]={i:3,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,t:n,k:this,p:new Map,O:!1,C:!1},this}r(n,Set);var t=n.prototype;return Object.defineProperty(t,\"size\",{get:function(){return p(this[Q]).size}}),t.has=function(n){var r=this[Q];return u(r),r.o?!!r.o.has(n)||!(!r.p.has(n)||!r.o.has(r.p.get(n))):r.t.has(n)},t.add=function(n){var r=this[Q];return u(r),this.has(n)||(o(r),k(r),r.o.add(n)),this},t.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),o(r),k(r),r.o.delete(n)||!!r.p.has(n)&&r.o.delete(r.p.get(n))},t.clear=function(){var n=this[Q];u(n),p(n).size&&(o(n),k(n),n.o.clear())},t.values=function(){var n=this[Q];return u(n),o(n),n.o.values()},t.entries=function(){var n=this[Q];return u(n),o(n),n.o.entries()},t.keys=function(){return this.values()},t[V]=function(){return this.values()},t.forEach=function(n,r){for(var t=this.values(),e=t.next();!e.done;)n.call(r,e.value,e.value,this),e=t.next()},n}();m(\"MapSet\",{N:function(n,r){return new f(n,r)},T:function(n,r){return new c(n,r)}})}function J(){N(),C(),T()}function K(n){return n}function $(n){return n}var G,U,W=\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol(\"x\"),X=\"undefined\"!=typeof Map,q=\"undefined\"!=typeof Set,B=\"undefined\"!=typeof Proxy&&void 0!==Proxy.revocable&&\"undefined\"!=typeof Reflect,H=W?Symbol.for(\"immer-nothing\"):((G={})[\"immer-nothing\"]=!0,G),L=W?Symbol.for(\"immer-draftable\"):\"__$immer_draftable\",Q=W?Symbol.for(\"immer-state\"):\"__$immer_state\",V=\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\",Y={0:\"Illegal state\",1:\"Immer drafts cannot have computed properties\",2:\"This object has been frozen and should not be mutated\",3:function(n){return\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \"+n},4:\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",5:\"Immer forbids circular references\",6:\"The first or second argument to `produce` must be a function\",7:\"The third argument to `produce` must be a function or undefined\",8:\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",9:\"First argument to `finishDraft` must be a draft returned by `createDraft`\",10:\"The given draft is already finalized\",11:\"Object.defineProperty() cannot be used on an Immer draft\",12:\"Object.setPrototypeOf() cannot be used on an Immer draft\",13:\"Immer only supports deleting array indices\",14:\"Immer only supports setting array indices and the 'length' property\",15:function(n){return\"Cannot apply patch, path doesn't resolve: \"+n},16:'Sets cannot have \"replace\" patches.',17:function(n){return\"Unsupported patch operation: \"+n},18:function(n){return\"The plugin for '\"+n+\"' has not been loaded into Immer. To enable the plugin, import and call `enable\"+n+\"()` when initializing your application.\"},20:\"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",21:function(n){return\"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\"+n+\"'\"},22:function(n){return\"'current' expects a draft, got: \"+n},23:function(n){return\"'original' expects a draft, got: \"+n},24:\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"},Z=\"\"+Object.prototype.constructor,nn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t)})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?\"value\"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=R(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.D[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return!0;E(n),k(n)}return n.o[r]===t&&\"number\"!=typeof t&&(void 0!==t||r in n.o)||(n.o[r]=t,n.D[r]=!0,!0)},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.D[r]=!1,E(n),k(n)):delete n.D[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||\"length\"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11)},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12)}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}})),on.deleteProperty=function(r,t){return\"production\"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return\"production\"!==process.env.NODE_ENV&&\"length\"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.g=B,this.F=!0,this.produce=function(r,i,o){if(\"function\"==typeof r&&\"function\"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return(t=i).call.apply(t,[r,n].concat(e))}))}}var f;if(\"function\"!=typeof i&&n(6),void 0!==o&&\"function\"!=typeof o&&n(7),t(r)){var c=w(e),s=R(e,r,void 0),v=!0;try{f=i(s),v=!1}finally{v?O(c):g(c)}return\"undefined\"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw O(c),n})):(j(c,o),P(f,c))}if(!r||\"object\"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.F&&d(f,!0),o){var p=[],l=[];b(\"Patches\").M(r,f,p,l),o(p,l)}return f}n(21,r)},this.produceWithPatches=function(n,r){if(\"function\"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r}));return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then((function(n){return[n,t,i]})):[o,t,i]},\"boolean\"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),\"boolean\"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze)}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=D(e));var i=w(this),o=R(this,e,void 0);return o[Q].C=!0,g(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];\"production\"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.F=n},i.setUseProxies=function(r){r&&!B&&n(20),this.g=r},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,D as current,J as enableAllPlugins,N as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","import { produce } from 'immer';\n\nconst immerImpl = (initializer) => (set, get, store) => {\n store.setState = (updater, replace, ...a) => {\n const nextState = typeof updater === \"function\" ? produce(updater) : updater;\n return set(nextState, replace, ...a);\n };\n return initializer(store.setState, get, store);\n};\nconst immer = immerImpl;\n\nexport { immer };\n","/**\n * Ponyfill of the HTMLFormElement.requestSubmit() method.\n * Based on polyfill from: https://github.com/javan/form-request-submit-polyfill/blob/main/form-request-submit-polyfill.js\n */\nexport const requestSubmit = (\n element: HTMLFormElement,\n submitter?: HTMLElement\n) => {\n // In vitest, let's test the polyfill.\n // Cypress will test the native implementation by nature of using chrome.\n if (\n typeof Object.getPrototypeOf(element).requestSubmit === \"function\" &&\n !import.meta.vitest\n ) {\n element.requestSubmit(submitter);\n return;\n }\n\n if (submitter) {\n validateSubmitter(element, submitter);\n submitter.click();\n return;\n }\n\n const dummySubmitter = document.createElement(\"input\");\n dummySubmitter.type = \"submit\";\n dummySubmitter.hidden = true;\n element.appendChild(dummySubmitter);\n dummySubmitter.click();\n element.removeChild(dummySubmitter);\n};\n\nfunction validateSubmitter(element: HTMLFormElement, submitter: HTMLElement) {\n // Should be redundant, but here for completeness\n const isHtmlElement = submitter instanceof HTMLElement;\n if (!isHtmlElement) {\n raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n }\n\n const hasSubmitType =\n \"type\" in submitter && (submitter as HTMLInputElement).type === \"submit\";\n if (!hasSubmitType)\n raise(TypeError, \"The specified element is not a submit button\");\n\n const isForCorrectForm =\n \"form\" in submitter && (submitter as HTMLInputElement).form === element;\n if (!isForCorrectForm)\n raise(\n DOMException,\n \"The specified element is not owned by this form element\",\n \"NotFoundError\"\n );\n}\n\ninterface ErrorConstructor {\n new (message: string, name?: string): Error;\n}\n\nfunction raise(\n errorConstructor: ErrorConstructor,\n message: string,\n name?: string\n): never {\n throw new errorConstructor(\n \"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\",\n name\n );\n}\n\nif (import.meta.vitest) {\n const { it, expect } = import.meta.vitest;\n it(\"should validate the submitter\", () => {\n const form = document.createElement(\"form\");\n document.body.appendChild(form);\n\n const submitter = document.createElement(\"input\");\n expect(() => validateSubmitter(null as any, null as any)).toThrow();\n expect(() => validateSubmitter(form, null as any)).toThrow();\n expect(() => validateSubmitter(form, submitter)).toThrow();\n expect(() =>\n validateSubmitter(form, document.createElement(\"div\"))\n ).toThrow();\n\n submitter.type = \"submit\";\n expect(() => validateSubmitter(form, submitter)).toThrow();\n\n form.appendChild(submitter);\n expect(() => validateSubmitter(form, submitter)).not.toThrow();\n\n form.removeChild(submitter);\n expect(() => validateSubmitter(form, submitter)).toThrow();\n\n document.body.appendChild(submitter);\n form.id = \"test-form\";\n submitter.setAttribute(\"form\", \"test-form\");\n expect(() => validateSubmitter(form, submitter)).not.toThrow();\n\n const button = document.createElement(\"button\");\n button.type = \"submit\";\n form.appendChild(button);\n expect(() => validateSubmitter(form, button)).not.toThrow();\n });\n}\n","import { getPath, setPath } from \"setGet\";\nimport invariant from \"tiny-invariant\";\n\n////\n// All of these array helpers are written in a way that mutates the original array.\n// This is because we're working with immer.\n////\n\nexport const getArray = (values: any, field: string): unknown[] => {\n const value = getPath(values, field);\n if (value === undefined || value === null) {\n const newValue: unknown[] = [];\n setPath(values, field, newValue);\n return newValue;\n }\n invariant(\n Array.isArray(value),\n `FieldArray: defaultValue value for ${field} must be an array, null, or undefined`\n );\n return value;\n};\n\nexport const swap = (array: unknown[], indexA: number, indexB: number) => {\n const itemA = array[indexA];\n const itemB = array[indexB];\n\n const hasItemA = indexA in array;\n const hasItemB = indexB in array;\n\n // If we're dealing with a sparse array (i.e. one of the indeces doesn't exist),\n // we should keep it sparse\n if (hasItemA) {\n array[indexB] = itemA;\n } else {\n delete array[indexB];\n }\n\n if (hasItemB) {\n array[indexA] = itemB;\n } else {\n delete array[indexA];\n }\n};\n\n// A splice that can handle sparse arrays\nfunction sparseSplice(\n array: unknown[],\n start: number,\n deleteCount: number,\n item?: unknown\n) {\n // Inserting an item into an array won't behave as we need it to if the array isn't\n // at least as long as the start index. We can force the array to be long enough like this.\n if (array.length < start && item) {\n array.length = start;\n }\n\n // If we just pass item in, it'll be undefined and splice will delete the item.\n if (arguments.length === 4) return array.splice(start, deleteCount, item);\n return array.splice(start, deleteCount);\n}\n\nexport const move = (array: unknown[], from: number, to: number) => {\n const [item] = sparseSplice(array, from, 1);\n sparseSplice(array, to, 0, item);\n};\n\nexport const insert = (array: unknown[], index: number, value: unknown) => {\n sparseSplice(array, index, 0, value);\n};\n\nexport const remove = (array: unknown[], index: number) => {\n sparseSplice(array, index, 1);\n};\n\nexport const replace = (array: unknown[], index: number, value: unknown) => {\n sparseSplice(array, index, 1, value);\n};\n\n/**\n * The purpose of this helper is to make it easier to update `fieldErrors` and `touchedFields`.\n * We key those objects by full paths to the fields.\n * When we're doing array mutations, that makes it difficult to update those objects.\n */\nexport const mutateAsArray = (\n field: string,\n obj: Record<string, any>,\n mutate: (arr: any[]) => void\n) => {\n const beforeKeys = new Set<string>();\n const arr: any[] = [];\n\n for (const [key, value] of Object.entries(obj)) {\n if (key.startsWith(field) && key !== field) {\n beforeKeys.add(key);\n setPath(arr, key.substring(field.length), value);\n }\n }\n\n mutate(arr);\n for (const key of beforeKeys) {\n delete obj[key];\n }\n\n const newKeys = getDeepArrayPaths(arr);\n for (const key of newKeys) {\n const val = getPath(arr, key);\n obj[`${field}${key}`] = val;\n }\n};\n\nconst getDeepArrayPaths = (obj: any, basePath: string = \"\"): string[] => {\n // This only needs to handle arrays and plain objects\n // and we can assume the first call is always an array.\n\n if (Array.isArray(obj)) {\n return obj.flatMap((item, index) =>\n getDeepArrayPaths(item, `${basePath}[${index}]`)\n );\n }\n\n if (typeof obj === \"object\") {\n return Object.keys(obj).flatMap((key) =>\n getDeepArrayPaths(obj[key], `${basePath}.${key}`)\n );\n }\n\n return [basePath];\n};\n\nif (import.meta.vitest) {\n const { describe, expect, it } = import.meta.vitest;\n\n // Count the actual number of items in the array\n // instead of just getting the length.\n // This is useful for validating that sparse arrays are handled correctly.\n const countArrayItems = (arr: any[]) => {\n let count = 0;\n arr.forEach(() => count++);\n return count;\n };\n\n describe(\"getArray\", () => {\n it(\"shoud get a deeply nested array that can be mutated to update the nested value\", () => {\n const values = {\n d: [\n { foo: \"bar\", baz: [true, false] },\n { e: true, f: \"hi\" },\n ],\n };\n const result = getArray(values, \"d[0].baz\");\n const finalValues = {\n d: [\n { foo: \"bar\", baz: [true, false, true] },\n { e: true, f: \"hi\" },\n ],\n };\n\n expect(result).toEqual([true, false]);\n result.push(true);\n expect(values).toEqual(finalValues);\n });\n\n it(\"should return an empty array that can be mutated if result is null or undefined\", () => {\n const values = {};\n const result = getArray(values, \"a.foo[0].bar\");\n const finalValues = {\n a: { foo: [{ bar: [\"Bob ross\"] }] },\n };\n\n expect(result).toEqual([]);\n result.push(\"Bob ross\");\n expect(values).toEqual(finalValues);\n });\n\n it(\"should throw if the value is defined and not an array\", () => {\n const values = { foo: \"foo\" };\n expect(() => getArray(values, \"foo\")).toThrow();\n });\n });\n\n describe(\"swap\", () => {\n it(\"should swap two items\", () => {\n const array = [1, 2, 3];\n swap(array, 0, 1);\n expect(array).toEqual([2, 1, 3]);\n });\n\n it(\"should work for sparse arrays\", () => {\n // A bit of a sanity check for native array behavior\n const arr = [] as any[];\n arr[0] = true;\n swap(arr, 0, 2);\n\n expect(countArrayItems(arr)).toEqual(1);\n expect(0 in arr).toBe(false);\n expect(2 in arr).toBe(true);\n expect(arr[2]).toEqual(true);\n });\n });\n\n describe(\"move\", () => {\n it(\"should move an item to a new index\", () => {\n const array = [1, 2, 3];\n move(array, 0, 1);\n expect(array).toEqual([2, 1, 3]);\n });\n\n it(\"should work with sparse arrays\", () => {\n const array = [1];\n move(array, 0, 2);\n\n expect(countArrayItems(array)).toEqual(1);\n expect(array).toEqual([undefined, undefined, 1]);\n });\n });\n\n describe(\"insert\", () => {\n it(\"should insert an item at a new index\", () => {\n const array = [1, 2, 3];\n insert(array, 1, 4);\n expect(array).toEqual([1, 4, 2, 3]);\n });\n\n it(\"should be able to insert falsey values\", () => {\n const array = [1, 2, 3];\n insert(array, 1, null);\n expect(array).toEqual([1, null, 2, 3]);\n });\n\n it(\"should handle sparse arrays\", () => {\n const array: any[] = [];\n array[2] = true;\n insert(array, 0, true);\n\n expect(countArrayItems(array)).toEqual(2);\n expect(array).toEqual([true, undefined, undefined, true]);\n });\n });\n\n describe(\"remove\", () => {\n it(\"should remove an item at a given index\", () => {\n const array = [1, 2, 3];\n remove(array, 1);\n expect(array).toEqual([1, 3]);\n });\n\n it(\"should handle sparse arrays\", () => {\n const array: any[] = [];\n array[2] = true;\n remove(array, 0);\n\n expect(countArrayItems(array)).toEqual(1);\n expect(array).toEqual([undefined, true]);\n });\n });\n\n describe(\"replace\", () => {\n it(\"should replace an item at a given index\", () => {\n const array = [1, 2, 3];\n replace(array, 1, 4);\n expect(array).toEqual([1, 4, 3]);\n });\n\n it(\"should handle sparse arrays\", () => {\n const array: any[] = [];\n array[2] = true;\n replace(array, 0, true);\n expect(countArrayItems(array)).toEqual(2);\n expect(array).toEqual([true, undefined, true]);\n });\n });\n\n describe(\"mutateAsArray\", () => {\n it(\"should handle swap\", () => {\n const values = {\n myField: \"something\",\n \"myField[0]\": \"foo\",\n \"myField[2]\": \"bar\",\n otherField: \"baz\",\n \"otherField[0]\": \"something else\",\n };\n mutateAsArray(\"myField\", values, (arr) => {\n swap(arr, 0, 2);\n });\n expect(values).toEqual({\n myField: \"something\",\n \"myField[0]\": \"bar\",\n \"myField[2]\": \"foo\",\n otherField: \"baz\",\n \"otherField[0]\": \"something else\",\n });\n });\n\n it(\"should swap sparse arrays\", () => {\n const values = {\n myField: \"something\",\n \"myField[0]\": \"foo\",\n otherField: \"baz\",\n \"otherField[0]\": \"something else\",\n };\n mutateAsArray(\"myField\", values, (arr) => {\n swap(arr, 0, 2);\n });\n expect(values).toEqual({\n myField: \"something\",\n \"myField[2]\": \"foo\",\n otherField: \"baz\",\n \"otherField[0]\": \"something else\",\n });\n });\n\n it(\"should handle arrays with nested values\", () => {\n const values = {\n myField: \"something\",\n \"myField[0].title\": \"foo\",\n \"myField[0].note\": \"bar\",\n \"myField[2].title\": \"other\",\n \"myField[2].note\": \"other\",\n otherField: \"baz\",\n \"otherField[0]\": \"something else\",\n };\n mutateAsArray(\"myField\", values, (arr) => {\n swap(arr, 0, 2);\n });\n expect(values).toEqual({\n myField: \"something\",\n \"myField[0].title\": \"other\",\n \"myField[0].note\": \"other\",\n \"myField[2].title\": \"foo\",\n \"myField[2].note\": \"bar\",\n otherField: \"baz\",\n \"otherField[0]\": \"something else\",\n });\n });\n\n it(\"should handle move\", () => {\n const values = {\n myField: \"something\",\n \"myField[0]\": \"foo\",\n \"myField[1]\": \"bar\",\n \"myField[2]\": \"baz\",\n \"otherField[0]\": \"something else\",\n };\n mutateAsArray(\"myField\", values, (arr) => {\n move(arr, 0, 2);\n });\n expect(values).toEqual({\n myField: \"something\",\n \"myField[0]\": \"bar\",\n \"myField[1]\": \"baz\",\n \"myField[2]\": \"foo\",\n \"otherField[0]\": \"something else\",\n });\n });\n\n it(\"should handle remove\", () => {\n const values = {\n myField: \"something\",\n \"myField[0]\": \"foo\",\n \"myField[1]\": \"bar\",\n \"myField[2]\": \"baz\",\n \"otherField[0]\": \"something else\",\n };\n mutateAsArray(\"myField\", values, (arr) => {\n remove(arr, 1);\n });\n expect(values).toEqual({\n myField: \"something\",\n \"myField[0]\": \"foo\",\n \"myField[1]\": \"baz\",\n \"otherField[0]\": \"something else\",\n });\n expect(\"myField[2]\" in values).toBe(false);\n });\n });\n\n describe(\"getDeepArrayPaths\", () => {\n it(\"should return all paths recursively\", () => {\n const obj = [\n true,\n true,\n [true, true],\n { foo: true, bar: { baz: true, test: [true] } },\n ];\n\n expect(getDeepArrayPaths(obj, \"myField\")).toEqual([\n \"myField[0]\",\n \"myField[1]\",\n \"myField[2][0]\",\n \"myField[2][1]\",\n \"myField[3].foo\",\n \"myField[3].bar.baz\",\n \"myField[3].bar.test[0]\",\n ]);\n });\n });\n}\n","import { WritableDraft } from \"immer/dist/internal\";\nimport { getPath, setPath } from \"setGet\";\nimport invariant from \"tiny-invariant\";\nimport create, { GetState } from \"zustand\";\nimport { immer } from \"zustand/middleware/immer\";\nimport {\n FieldErrors,\n TouchedFields,\n ValidationResult,\n Validator,\n} from \"../../validation/types\";\nimport { requestSubmit } from \"../logic/requestSubmit\";\nimport * as arrayUtil from \"./arrayUtil\";\nimport { InternalFormId } from \"./types\";\n\nexport type SyncedFormProps = {\n formId?: string;\n action?: string;\n subaction?: string;\n defaultValues: { [fieldName: string]: any };\n registerReceiveFocus: (fieldName: string, handler: () => void) => () => void;\n validator: Validator<unknown>;\n};\n\nexport type FormStoreState = {\n forms: { [formId: InternalFormId]: FormState };\n form: (formId: InternalFormId) => FormState;\n registerForm: (formId: InternalFormId) => void;\n cleanupForm: (formId: InternalFormId) => void;\n};\n\nexport type FormState = {\n isHydrated: boolean;\n isSubmitting: boolean;\n hasBeenSubmitted: boolean;\n fieldErrors: FieldErrors;\n touchedFields: TouchedFields;\n formProps?: SyncedFormProps;\n formElement: HTMLFormElement | null;\n currentDefaultValues: Record<string, any>;\n\n isValid: () => boolean;\n startSubmit: () => void;\n endSubmit: () => void;\n setTouched: (field: string, touched: boolean) => void;\n setFieldError: (field: string, error: string) => void;\n setFieldErrors: (errors: FieldErrors) => void;\n clearFieldError: (field: string) => void;\n reset: () => void;\n syncFormProps: (props: SyncedFormProps) => void;\n setFormElement: (formElement: HTMLFormElement | null) => void;\n validateField: (fieldName: string) => Promise<string | null>;\n validate: () => Promise<ValidationResult<unknown>>;\n resetFormElement: () => void;\n submit: () => void;\n getValues: () => FormData;\n\n controlledFields: {\n values: { [fieldName: string]: any };\n refCounts: { [fieldName: string]: number };\n valueUpdatePromises: { [fieldName: string]: Promise<void> };\n valueUpdateResolvers: { [fieldName: string]: () => void };\n\n register: (fieldName: string) => void;\n unregister: (fieldName: string) => void;\n setValue: (fieldName: string, value: unknown) => void;\n kickoffValueUpdate: (fieldName: string) => void;\n getValue: (fieldName: string) => unknown;\n awaitValueUpdate: (fieldName: string) => Promise<void>;\n\n array: {\n push: (fieldName: string, value: unknown) => void;\n swap: (fieldName: string, indexA: number, indexB: number) => void;\n move: (fieldName: string, fromIndex: number, toIndex: number) => void;\n insert: (fieldName: string, index: number, value: unknown) => void;\n unshift: (fieldName: string, value: unknown) => void;\n remove: (fieldName: string, index: number) => void;\n pop: (fieldName: string) => void;\n replace: (fieldName: string, index: number, value: unknown) => void;\n };\n };\n};\n\nconst noOp = () => {};\nconst defaultFormState: FormState = {\n isHydrated: false,\n isSubmitting: false,\n hasBeenSubmitted: false,\n touchedFields: {},\n fieldErrors: {},\n formElement: null,\n isValid: () => true,\n startSubmit: noOp,\n endSubmit: noOp,\n setTouched: noOp,\n setFieldError: noOp,\n setFieldErrors: noOp,\n clearFieldError: noOp,\n currentDefaultValues: {},\n\n reset: () => noOp,\n syncFormProps: noOp,\n setFormElement: noOp,\n validateField: async () => null,\n\n validate: async () => {\n throw new Error(\"Validate called before form was initialized.\");\n },\n\n submit: async () => {\n throw new Error(\"Submit called before form was initialized.\");\n },\n\n resetFormElement: noOp,\n getValues: () => new FormData(),\n\n controlledFields: {\n values: {},\n refCounts: {},\n valueUpdatePromises: {},\n valueUpdateResolvers: {},\n\n register: noOp,\n unregister: noOp,\n setValue: noOp,\n getValue: noOp,\n kickoffValueUpdate: noOp,\n awaitValueUpdate: async () => {\n throw new Error(\"AwaitValueUpdate called before form was initialized.\");\n },\n\n array: {\n push: noOp,\n swap: noOp,\n move: noOp,\n insert: noOp,\n unshift: noOp,\n remove: noOp,\n pop: noOp,\n replace: noOp,\n },\n },\n};\n\nconst createFormState = (\n set: (setter: (draft: WritableDraft<FormState>) => void) => void,\n get: GetState<FormState>\n): FormState => ({\n // It's not \"hydrated\" until the form props are synced\n isHydrated: false,\n isSubmitting: false,\n hasBeenSubmitted: false,\n touchedFields: {},\n fieldErrors: {},\n formElement: null,\n currentDefaultValues: {},\n\n isValid: () => Object.keys(get().fieldErrors).length === 0,\n startSubmit: () =>\n set((state) => {\n state.isSubmitting = true;\n state.hasBeenSubmitted = true;\n }),\n endSubmit: () =>\n set((state) => {\n state.isSubmitting = false;\n }),\n setTouched: (fieldName, touched) =>\n set((state) => {\n state.touchedFields[fieldName] = touched;\n }),\n setFieldError: (fieldName: string, error: string) =>\n set((state) => {\n state.fieldErrors[fieldName] = error;\n }),\n setFieldErrors: (errors: FieldErrors) =>\n set((state) => {\n state.fieldErrors = errors;\n }),\n clearFieldError: (fieldName: string) =>\n set((state) => {\n delete state.fieldErrors[fieldName];\n }),\n reset: () =>\n set((state) => {\n state.fieldErrors = {};\n state.touchedFields = {};\n state.hasBeenSubmitted = false;\n const nextDefaults = state.formProps?.defaultValues ?? {};\n state.controlledFields.values = nextDefaults;\n state.currentDefaultValues = nextDefaults;\n }),\n syncFormProps: (props: SyncedFormProps) =>\n set((state) => {\n if (!state.isHydrated) {\n state.controlledFields.values = props.defaultValues;\n state.currentDefaultValues = props.defaultValues;\n }\n\n state.formProps = props;\n state.isHydrated = true;\n }),\n setFormElement: (formElement: HTMLFormElement | null) => {\n // This gets called frequently, so we want to avoid calling set() every time\n // Or else we wind up with an infinite loop\n if (get().formElement === formElement) return;\n set((state) => {\n // weird type issue here\n // seems to be because formElement is a writable draft\n state.formElement = formElement as any;\n });\n },\n validateField: async (field: string) => {\n const formElement = get().formElement;\n invariant(\n formElement,\n \"Cannot find reference to form. This is probably a bug in remix-validated-form.\"\n );\n\n const validator = get().formProps?.validator;\n invariant(\n validator,\n \"Cannot validator. This is probably a bug in remix-validated-form.\"\n );\n\n await get().controlledFields.awaitValueUpdate?.(field);\n\n const { error } = await validator.validateField(\n new FormData(formElement),\n field\n );\n\n if (error) {\n get().setFieldError(field, error);\n return error;\n } else {\n get().clearFieldError(field);\n return null;\n }\n },\n\n validate: async () => {\n const formElement = get().formElement;\n invariant(\n formElement,\n \"Cannot find reference to form. This is probably a bug in remix-validated-form.\"\n );\n\n const validator = get().formProps?.validator;\n invariant(\n validator,\n \"Cannot validator. This is probably a bug in remix-validated-form.\"\n );\n\n const result = await validator.validate(new FormData(formElement));\n if (result.error) get().setFieldErrors(result.error.fieldErrors);\n return result;\n },\n\n submit: () => {\n const formElement = get().formElement;\n invariant(\n formElement,\n \"Cannot find reference to form. This is probably a bug in remix-validated-form.\"\n );\n\n requestSubmit(formElement);\n },\n\n getValues: () => new FormData(get().formElement ?? undefined),\n\n resetFormElement: () => get().formElement?.reset(),\n\n controlledFields: {\n values: {},\n refCounts: {},\n valueUpdatePromises: {},\n valueUpdateResolvers: {},\n\n register: (fieldName) => {\n set((state) => {\n const current = state.controlledFields.refCounts[fieldName] ?? 0;\n state.controlledFields.refCounts[fieldName] = current + 1;\n });\n },\n unregister: (fieldName) => {\n // For this helper in particular, we may run into a case where state is undefined.\n // When the whole form unmounts, the form state may be cleaned up before the fields are.\n if (get() === null || get() === undefined) return;\n set((state) => {\n const current = state.controlledFields.refCounts[fieldName] ?? 0;\n if (current > 1) {\n state.controlledFields.refCounts[fieldName] = current - 1;\n return;\n }\n\n const isNested = Object.keys(state.controlledFields.refCounts).some(\n (key) => fieldName.startsWith(key) && key !== fieldName\n );\n\n // When nested within a field array, we should leave resetting up to the field array\n if (!isNested) {\n setPath(\n state.controlledFields.values,\n fieldName,\n getPath(state.formProps?.defaultValues, fieldName)\n );\n setPath(\n state.currentDefaultValues,\n fieldName,\n getPath(state.formProps?.defaultValues, fieldName)\n );\n }\n\n delete state.controlledFields.refCounts[fieldName];\n });\n },\n getValue: (fieldName) => getPath(get().controlledFields.values, fieldName),\n setValue: (fieldName, value) => {\n set((state) => {\n setPath(state.controlledFields.values, fieldName, value);\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n kickoffValueUpdate: (fieldName) => {\n const clear = () =>\n set((state) => {\n delete state.controlledFields.valueUpdateResolvers[fieldName];\n delete state.controlledFields.valueUpdatePromises[fieldName];\n });\n set((state) => {\n const promise = new Promise<void>((resolve) => {\n state.controlledFields.valueUpdateResolvers[fieldName] = resolve;\n }).then(clear);\n state.controlledFields.valueUpdatePromises[fieldName] = promise;\n });\n },\n\n awaitValueUpdate: async (fieldName) => {\n await get().controlledFields.valueUpdatePromises[fieldName];\n },\n\n array: {\n push: (fieldName, item) => {\n set((state) => {\n arrayUtil\n .getArray(state.controlledFields.values, fieldName)\n .push(item);\n arrayUtil.getArray(state.currentDefaultValues, fieldName).push(item);\n // New item added to the end, no need to update touched or error\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n\n swap: (fieldName, indexA, indexB) => {\n set((state) => {\n arrayUtil.swap(\n arrayUtil.getArray(state.controlledFields.values, fieldName),\n indexA,\n indexB\n );\n arrayUtil.swap(\n arrayUtil.getArray(state.currentDefaultValues, fieldName),\n indexA,\n indexB\n );\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n arrayUtil.swap(array, indexA, indexB)\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n arrayUtil.swap(array, indexA, indexB)\n );\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n\n move: (fieldName, from, to) => {\n set((state) => {\n arrayUtil.move(\n arrayUtil.getArray(state.controlledFields.values, fieldName),\n from,\n to\n );\n arrayUtil.move(\n arrayUtil.getArray(state.currentDefaultValues, fieldName),\n from,\n to\n );\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n arrayUtil.move(array, from, to)\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n arrayUtil.move(array, from, to)\n );\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n insert: (fieldName, index, item) => {\n set((state) => {\n arrayUtil.insert(\n arrayUtil.getArray(state.controlledFields.values, fieldName),\n index,\n item\n );\n arrayUtil.insert(\n arrayUtil.getArray(state.currentDefaultValues, fieldName),\n index,\n item\n );\n // Even though this is a new item, we need to push around other items.\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n arrayUtil.insert(array, index, false)\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n arrayUtil.insert(array, index, undefined)\n );\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n remove: (fieldName, index) => {\n set((state) => {\n arrayUtil.remove(\n arrayUtil.getArray(state.controlledFields.values, fieldName),\n index\n );\n arrayUtil.remove(\n arrayUtil.getArray(state.currentDefaultValues, fieldName),\n index\n );\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n arrayUtil.remove(array, index)\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n arrayUtil.remove(array, index)\n );\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n pop: (fieldName) => {\n set((state) => {\n arrayUtil.getArray(state.controlledFields.values, fieldName).pop();\n arrayUtil.getArray(state.currentDefaultValues, fieldName).pop();\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n array.pop()\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n array.pop()\n );\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n unshift: (fieldName, value) => {\n set((state) => {\n arrayUtil\n .getArray(state.controlledFields.values, fieldName)\n .unshift(value);\n arrayUtil\n .getArray(state.currentDefaultValues, fieldName)\n .unshift(value);\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n array.unshift(false)\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n array.unshift(undefined)\n );\n });\n },\n replace: (fieldName, index, item) => {\n set((state) => {\n arrayUtil.replace(\n arrayUtil.getArray(state.controlledFields.values, fieldName),\n index,\n item\n );\n arrayUtil.replace(\n arrayUtil.getArray(state.currentDefaultValues, fieldName),\n index,\n item\n );\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n arrayUtil.replace(array, index, item)\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n arrayUtil.replace(array, index, item)\n );\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n },\n },\n});\n\nexport const useRootFormStore = create<FormStoreState>()(\n immer((set, get) => ({\n forms: {},\n form: (formId) => {\n return get().forms[formId] ?? defaultFormState;\n },\n cleanupForm: (formId: InternalFormId) => {\n set((state) => {\n delete state.forms[formId];\n });\n },\n registerForm: (formId: InternalFormId) => {\n if (get().forms[formId]) return;\n set((state) => {\n state.forms[formId] = createFormState(\n (setter) => set((state) => setter(state.forms[formId])),\n () => get().forms[formId]\n ) as WritableDraft<FormState>;\n });\n },\n }))\n);\n","import { FormState, useRootFormStore } from \"./createFormStore\";\nimport { InternalFormId } from \"./types\";\n\nexport const useFormStore = <T>(\n formId: InternalFormId,\n selector: (state: FormState) => T\n) => {\n return useRootFormStore((state) => selector(state.form(formId)));\n};\n","import { useActionData, useMatches, useTransition } from \"@remix-run/react\";\nimport { useCallback, useContext } from \"react\";\nimport { getPath } from \"setGet\";\nimport invariant from \"tiny-invariant\";\nimport { FieldErrors, ValidationErrorResponseData } from \"..\";\nimport { formDefaultValuesKey } from \"./constants\";\nimport { InternalFormContext, InternalFormContextValue } from \"./formContext\";\nimport { Hydratable, hydratable } from \"./hydratable\";\nimport { useFormStore } from \"./state/storeHooks\";\nimport { InternalFormId } from \"./state/types\";\n\nexport const useInternalFormContext = (\n formId?: string | symbol,\n hookName?: string\n) => {\n const formContext = useContext(InternalFormContext);\n\n if (formId) return { formId };\n if (formContext) return formContext;\n\n throw new Error(\n `Unable to determine form for ${hookName}. Please use it inside a ValidatedForm or pass a 'formId'.`\n );\n};\n\nexport function useErrorResponseForForm({\n fetcher,\n subaction,\n formId,\n}: InternalFormContextValue): ValidationErrorResponseData | null {\n const actionData = useActionData<any>();\n if (fetcher) {\n if ((fetcher.data as any)?.fieldErrors) return fetcher.data as any;\n return null;\n }\n\n if (!actionData?.fieldErrors) return null;\n\n // If there's an explicit id, we should ignore data that has the wrong id\n if (typeof formId === \"string\" && actionData.formId)\n return actionData.formId === formId ? actionData : null;\n\n if (\n (!subaction && !actionData.subaction) ||\n actionData.subaction === subaction\n )\n return actionData;\n\n return null;\n}\n\nexport const useFieldErrorsForForm = (\n context: InternalFormContextValue\n): Hydratable<FieldErrors | undefined> => {\n const response = useErrorResponseForForm(context);\n const hydrated = useFormStore(context.formId, (state) => state.isHydrated);\n return hydratable.from(response?.fieldErrors, hydrated);\n};\n\nexport const useDefaultValuesFromLoader = ({\n formId,\n}: InternalFormContextValue) => {\n const matches = useMatches();\n if (typeof formId === \"string\") {\n const dataKey = formDefaultValuesKey(formId);\n // If multiple loaders declare the same default values,\n // we should use the data from the deepest route.\n const match = matches\n .reverse()\n .find((match) => match.data && dataKey in match.data);\n return match?.data[dataKey];\n }\n\n return null;\n};\n\nexport const useDefaultValuesForForm = (\n context: InternalFormContextValue\n): Hydratable<{ [fieldName: string]: any }> => {\n const { formId, defaultValuesProp } = context;\n const hydrated = useFormStore(formId, (state) => state.isHydrated);\n const errorResponse = useErrorResponseForForm(context);\n const defaultValuesFromLoader = useDefaultValuesFromLoader(context);\n\n // Typical flow is:\n // - Default values only available from props or server\n // - Props have a higher priority than server\n // - State gets hydrated with default values\n // - After submit, we may need to use values from the error\n\n if (hydrated) return hydratable.hydratedData();\n if (errorResponse?.repopulateFields) {\n invariant(\n typeof errorResponse.repopulateFields === \"object\",\n \"repopulateFields returned something other than an object\"\n );\n return hydratable.serverData(errorResponse.repopulateFields);\n }\n if (defaultValuesProp) return hydratable.serverData(defaultValuesProp);\n\n return hydratable.serverData(defaultValuesFromLoader);\n};\n\nexport const useHasActiveFormSubmit = ({\n fetcher,\n}: InternalFormContextValue): boolean => {\n const transition = useTransition();\n const hasActiveSubmission = fetcher\n ? fetcher.state === \"submitting\"\n : !!transition.submission;\n return hasActiveSubmission;\n};\n\nexport const useFieldTouched = (\n field: string,\n { formId }: InternalFormContextValue\n) => {\n const touched = useFormStore(formId, (state) => state.touchedFields[field]);\n const setFieldTouched = useFormStore(formId, (state) => state.setTouched);\n const setTouched = useCallback(\n (touched: boolean) => setFieldTouched(field, touched),\n [field, setFieldTouched]\n );\n return [touched, setTouched] as const;\n};\n\nexport const useFieldError = (\n name: string,\n context: InternalFormContextValue\n) => {\n const fieldErrors = useFieldErrorsForForm(context);\n const state = useFormStore(\n context.formId,\n (state) => state.fieldErrors[name]\n );\n return fieldErrors.map((fieldErrors) => fieldErrors?.[name]).hydrateTo(state);\n};\n\nexport const useClearError = (context: InternalFormContextValue) => {\n const { formId } = context;\n return useFormStore(formId, (state) => state.clearFieldError);\n};\n\nexport const useCurrentDefaultValueForField = (\n formId: InternalFormId,\n field: string\n) =>\n useFormStore(formId, (state) => getPath(state.currentDefaultValues, field));\n\nexport const useFieldDefaultValue = (\n name: string,\n context: InternalFormContextValue\n) => {\n const defaultValues = useDefaultValuesForForm(context);\n const state = useCurrentDefaultValueForField(context.formId, name);\n\n return defaultValues.map((val) => getPath(val, name)).hydrateTo(state);\n};\n\nexport const useInternalIsSubmitting = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.isSubmitting);\n\nexport const useInternalIsValid = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.isValid());\n\nexport const useInternalHasBeenSubmitted = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.hasBeenSubmitted);\n\nexport const useValidateField = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.validateField);\n\nexport const useValidate = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.validate);\n\nconst noOpReceiver = () => () => {};\nexport const useRegisterReceiveFocus = (formId: InternalFormId) =>\n useFormStore(\n formId,\n (state) => state.formProps?.registerReceiveFocus ?? noOpReceiver\n );\n\nconst defaultDefaultValues = {};\nexport const useSyncedDefaultValues = (formId: InternalFormId) =>\n useFormStore(\n formId,\n (state) => state.formProps?.defaultValues ?? defaultDefaultValues\n );\n\nexport const useSetTouched = ({ formId }: InternalFormContextValue) =>\n useFormStore(formId, (state) => state.setTouched);\n\nexport const useTouchedFields = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.touchedFields);\n\nexport const useFieldErrors = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.fieldErrors);\n\nexport const useSetFieldErrors = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.setFieldErrors);\n\nexport const useResetFormElement = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.resetFormElement);\n\nexport const useSubmitForm = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.submit);\n\nexport const useFormActionProp = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.formProps?.action);\n\nexport const useFormSubactionProp = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.formProps?.subaction);\n\nexport const useFormValues = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.getValues);\n","import { useCallback, useEffect } from \"react\";\nimport { InternalFormContextValue } from \"../formContext\";\nimport { useFieldDefaultValue } from \"../hooks\";\nimport { useFormStore } from \"./storeHooks\";\nimport { InternalFormId } from \"./types\";\n\nexport const useControlledFieldValue = (\n context: InternalFormContextValue,\n field: string\n) => {\n const value = useFormStore(context.formId, (state) =>\n state.controlledFields.getValue(field)\n );\n const isFormHydrated = useFormStore(\n context.formId,\n (state) => state.isHydrated\n );\n const defaultValue = useFieldDefaultValue(field, context);\n\n return isFormHydrated ? value : defaultValue;\n};\n\nexport const useRegisterControlledField = (\n context: InternalFormContextValue,\n field: string\n) => {\n const resolveUpdate = useFormStore(\n context.formId,\n (state) => state.controlledFields.valueUpdateResolvers[field]\n );\n useEffect(() => {\n resolveUpdate?.();\n }, [resolveUpdate]);\n\n const register = useFormStore(\n context.formId,\n (state) => state.controlledFields.register\n );\n const unregister = useFormStore(\n context.formId,\n (state) => state.controlledFields.unregister\n );\n useEffect(() => {\n register(field);\n return () => unregister(field);\n }, [context.formId, field, register, unregister]);\n};\n\nexport const useControllableValue = (\n context: InternalFormContextValue,\n field: string\n) => {\n useRegisterControlledField(context, field);\n\n const setControlledFieldValue = useFormStore(\n context.formId,\n (state) => state.controlledFields.setValue\n );\n const setValue = useCallback(\n (value: unknown) => setControlledFieldValue(field, value),\n [field, setControlledFieldValue]\n );\n\n const value = useControlledFieldValue(context, field);\n\n return [value, setValue] as const;\n};\n\nexport const useUpdateControllableValue = (formId: InternalFormId) => {\n const setValue = useFormStore(\n formId,\n (state) => state.controlledFields.setValue\n );\n return useCallback(\n (field: string, value: unknown) => setValue(field, value),\n [setValue]\n );\n};\n\nexport const useAwaitValue = (formId: InternalFormId) => {\n const awaitValue = useFormStore(\n formId,\n (state) => state.controlledFields.awaitValueUpdate\n );\n return useCallback((field: string) => awaitValue(field), [awaitValue]);\n};\n","import { useEffect, useMemo } from \"react\";\nimport {\n createGetInputProps,\n GetInputProps,\n ValidationBehaviorOptions,\n} from \"./internal/getInputProps\";\nimport {\n useInternalFormContext,\n useFieldTouched,\n useFieldError,\n useFieldDefaultValue,\n useClearError,\n useInternalIsSubmitting,\n useInternalIsValid,\n useInternalHasBeenSubmitted,\n useValidateField,\n useRegisterReceiveFocus,\n} from \"./internal/hooks\";\nimport {\n useControllableValue,\n useUpdateControllableValue,\n} from \"./internal/state/controlledFields\";\n\n/**\n * Returns whether or not the parent form is currently being submitted.\n * This is different from remix's `useTransition().submission` in that it\n * is aware of what form it's in and when _that_ form is being submitted.\n *\n * @param formId\n */\nexport const useIsSubmitting = (formId?: string) => {\n const formContext = useInternalFormContext(formId, \"useIsSubmitting\");\n return useInternalIsSubmitting(formContext.formId);\n};\n\n/**\n * Returns whether or not the current form is valid.\n *\n * @param formId the id of the form. Only necessary if being used outside a ValidatedForm.\n */\nexport const useIsValid = (formId?: string) => {\n const formContext = useInternalFormContext(formId, \"useIsValid\");\n return useInternalIsValid(formContext.formId);\n};\n\nexport type FieldProps = {\n /**\n * The validation error message if there is one.\n */\n error?: string;\n /**\n * Clears the error message.\n */\n clearError: () => void;\n /**\n * Validates the field.\n */\n validate: () => void;\n /**\n * The default value of the field, if there is one.\n */\n defaultValue?: any;\n /**\n * Whether or not the field has been touched.\n */\n touched: boolean;\n /**\n * Helper to set the touched state of the field.\n */\n setTouched: (touched: boolean) => void;\n /**\n * Helper to get all the props necessary for a regular input.\n */\n getInputProps: GetInputProps;\n};\n\n/**\n * Provides the data and helpers necessary to set up a field.\n */\nexport const useField = (\n name: string,\n options?: {\n /**\n * Allows you to configure a custom function that will be called\n * when the input needs to receive focus due to a validation error.\n * This is useful for custom components that use a hidden input.\n */\n handleReceiveFocus?: () => void;\n /**\n * Allows you to specify when a field gets validated (when using getInputProps)\n */\n validationBehavior?: Partial<ValidationBehaviorOptions>;\n /**\n * The formId of the form you want to use.\n * This is not necesary if the input is used inside a form.\n */\n formId?: string;\n }\n): FieldProps => {\n const { formId: providedFormId, handleReceiveFocus } = options ?? {};\n const formContext = useInternalFormContext(providedFormId, \"useField\");\n\n const defaultValue = useFieldDefaultValue(name, formContext);\n const [touched, setTouched] = useFieldTouched(name, formContext);\n const error = useFieldError(name, formContext);\n const clearError = useClearError(formContext);\n\n const hasBeenSubmitted = useInternalHasBeenSubmitted(formContext.formId);\n const validateField = useValidateField(formContext.formId);\n const registerReceiveFocus = useRegisterReceiveFocus(formContext.formId);\n\n useEffect(() => {\n if (handleReceiveFocus)\n return registerReceiveFocus(name, handleReceiveFocus);\n }, [handleReceiveFocus, name, registerReceiveFocus]);\n\n const field = useMemo<FieldProps>(() => {\n const helpers = {\n error,\n clearError: () => clearError(name),\n validate: () => {\n validateField(name);\n },\n defaultValue,\n touched,\n setTouched,\n };\n const getInputProps = createGetInputProps({\n ...helpers,\n name,\n hasBeenSubmitted,\n validationBehavior: options?.validationBehavior,\n });\n return {\n ...helpers,\n getInputProps,\n };\n }, [\n error,\n clearError,\n defaultValue,\n touched,\n setTouched,\n name,\n hasBeenSubmitted,\n options?.validationBehavior,\n validateField,\n ]);\n\n return field;\n};\n\nexport const useControlField = <T>(name: string, formId?: string) => {\n const context = useInternalFormContext(formId, \"useControlField\");\n const [value, setValue] = useControllableValue(context, name);\n return [value as T, setValue as (value: T) => void] as const;\n};\n\nexport const useUpdateControlledField = (formId?: string) => {\n const context = useInternalFormContext(formId, \"useControlField\");\n return useUpdateControllableValue(context.formId);\n};\n","/**\n * @remix-run/server-runtime v1.6.5\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// must be a type since this is a subtype of response\n// interfaces must conform to the types they extend\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n *\n * @see https://remix.run/api/remix#json\n */\nconst json = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n let headers = new Headers(responseInit.headers);\n\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), { ...responseInit,\n headers\n });\n};\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n *\n * @see https://remix.run/api/remix#redirect\n */\nconst redirect = (url, init = 302) => {\n let responseInit = init;\n\n if (typeof responseInit === \"number\") {\n responseInit = {\n status: responseInit\n };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n return new Response(null, { ...responseInit,\n headers\n });\n};\nfunction isResponse(value) {\n return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nfunction isRedirectResponse(response) {\n return redirectStatusCodes.has(response.status);\n}\nfunction isCatchResponse(response) {\n return response.headers.get(\"X-Remix-Catch\") != null;\n}\n\nexport { isCatchResponse, isRedirectResponse, isResponse, json, redirect };\n","import { json } from \"remix\";\nimport {\n formDefaultValuesKey,\n FORM_DEFAULTS_FIELD,\n} from \"./internal/constants\";\nimport {\n ValidatorError,\n ValidationErrorResponseData,\n} from \"./validation/types\";\n\n/**\n * Takes the errors from a `Validator` and returns a `Response`.\n * When you return this from your action, `ValidatedForm` on the frontend will automatically\n * display the errors on the correct fields on the correct form.\n *\n * You can also provide a second argument to `validationError`\n * to specify how to repopulate the form when JS is disabled.\n *\n * @example\n * ```ts\n * const result = validator.validate(await request.formData());\n * if (result.error) return validationError(result.error, result.submittedData);\n * ```\n */\nexport function validationError(\n error: ValidatorError,\n repopulateFields?: unknown,\n init?: ResponseInit\n) {\n return json<ValidationErrorResponseData>(\n {\n fieldErrors: error.fieldErrors,\n subaction: error.subaction,\n repopulateFields,\n formId: error.formId,\n },\n { status: 422, ...init }\n );\n}\n\nexport type FormDefaults = {\n [formDefaultsKey: `${typeof FORM_DEFAULTS_FIELD}_${string}`]: any;\n};\n\nexport const setFormDefaults = <DataType = any>(\n formId: string,\n defaultValues: Partial<DataType>\n): FormDefaults => ({\n [formDefaultValuesKey(formId)]: defaultValues,\n});\n","import { useCallback, useRef } from \"react\";\n\nexport class MultiValueMap<Key, Value> {\n private dict: Map<Key, Value[]> = new Map();\n\n add = (key: Key, value: Value) => {\n if (this.dict.has(key)) {\n this.dict.get(key)!.push(value);\n } else {\n this.dict.set(key, [value]);\n }\n };\n\n delete = (key: Key) => {\n this.dict.delete(key);\n };\n\n remove = (key: Key, value: Value) => {\n if (!this.dict.has(key)) return;\n const array = this.dict.get(key)!;\n const index = array.indexOf(value);\n if (index !== -1) array.splice(index, 1);\n if (array.length === 0) this.dict.delete(key);\n };\n\n getAll = (key: Key): Value[] => {\n return this.dict.get(key) ?? [];\n };\n\n entries = (): IterableIterator<[Key, Value[]]> => this.dict.entries();\n\n values = (): IterableIterator<Value[]> => this.dict.values();\n\n has = (key: Key): boolean => this.dict.has(key);\n}\n\nexport const useMultiValueMap = <Key, Value>() => {\n const ref = useRef<MultiValueMap<Key, Value> | null>(null);\n return useCallback(() => {\n if (ref.current) return ref.current;\n ref.current = new MultiValueMap();\n return ref.current;\n }, []);\n};\n","import { useEffect, useRef } from \"react\";\n\nexport function useSubmitComplete(isSubmitting: boolean, callback: () => void) {\n const isPending = useRef(false);\n useEffect(() => {\n if (isSubmitting) {\n isPending.current = true;\n }\n\n if (!isSubmitting && isPending.current) {\n isPending.current = false;\n callback();\n }\n });\n}\n","import type React from \"react\";\nimport { useEffect, useLayoutEffect, useRef } from \"react\";\nimport * as R from \"remeda\";\n\nexport const omit = (obj: any, ...keys: string[]) => {\n const result = { ...obj };\n for (const key of keys) {\n delete result[key];\n }\n return result;\n};\n\nexport const mergeRefs = <T = any>(\n refs: Array<React.MutableRefObject<T> | React.LegacyRef<T> | undefined>\n): React.RefCallback<T> => {\n return (value: T) => {\n refs.filter(Boolean).forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref != null) {\n (ref as React.MutableRefObject<T | null>).current = value;\n }\n });\n };\n};\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\nexport const useDeepEqualsMemo = <T>(item: T): T => {\n const ref = useRef<T>(item);\n const areEqual = ref.current === item || R.equals(ref.current, item);\n useEffect(() => {\n if (!areEqual) {\n ref.current = item;\n }\n });\n return areEqual ? ref.current : item;\n};\n","import {\n Form as RemixForm,\n FormMethod,\n useFetcher,\n useSubmit,\n} from \"@remix-run/react\";\nimport React, {\n ComponentProps,\n FormEvent,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport * as R from \"remeda\";\nimport { useIsSubmitting, useIsValid } from \"./hooks\";\nimport { FORM_ID_FIELD } from \"./internal/constants\";\nimport {\n InternalFormContext,\n InternalFormContextValue,\n} from \"./internal/formContext\";\nimport {\n useDefaultValuesFromLoader,\n useErrorResponseForForm,\n useHasActiveFormSubmit,\n useSetFieldErrors,\n} from \"./internal/hooks\";\nimport { MultiValueMap, useMultiValueMap } from \"./internal/MultiValueMap\";\nimport {\n SyncedFormProps,\n useRootFormStore,\n} from \"./internal/state/createFormStore\";\nimport { useFormStore } from \"./internal/state/storeHooks\";\nimport { useSubmitComplete } from \"./internal/submissionCallbacks\";\nimport {\n mergeRefs,\n useDeepEqualsMemo,\n useIsomorphicLayoutEffect as useLayoutEffect,\n} from \"./internal/util\";\nimport { FieldErrors, Validator } from \"./validation/types\";\n\nexport type FormProps<DataType> = {\n /**\n * A `Validator` object that describes how to validate the form.\n */\n validator: Validator<DataType>;\n /**\n * A submit callback that gets called when the form is submitted\n * after all validations have been run.\n */\n onSubmit?: (\n data: DataType,\n event: React.FormEvent<HTMLFormElement>\n ) => void | Promise<void>;\n /**\n * Allows you to provide a `fetcher` from remix's `useFetcher` hook.\n * The form will use the fetcher for loading states, action data, etc\n * instead of the default form action.\n */\n fetcher?: ReturnType<typeof useFetcher>;\n /**\n * Accepts an object of default values for the form\n * that will automatically be propagated to the form fields via `useField`.\n */\n defaultValues?: Partial<DataType>;\n /**\n * A ref to the form element.\n */\n formRef?: React.RefObject<HTMLFormElement>;\n /**\n * An optional sub-action to use for the form.\n * Setting a value here will cause the form to be submitted with an extra `subaction` value.\n * This can be useful when there are multiple forms on the screen handled by the same action.\n */\n subaction?: string;\n /**\n * Reset the form to the default values after the form has been successfully submitted.\n * This is useful if you want to submit the same form multiple times,\n * and don't redirect in-between submissions.\n */\n resetAfterSubmit?: boolean;\n /**\n * Normally, the first invalid input will be focused when the validation fails on form submit.\n * Set this to `false` to disable this behavior.\n */\n disableFocusOnError?: boolean;\n} & Omit<ComponentProps<typeof RemixForm>, \"onSubmit\">;\n\nconst getDataFromForm = (el: HTMLFormElement) => new FormData(el);\n\nfunction nonNull<T>(value: T | null | undefined): value is T {\n return value !== null;\n}\n\nconst focusFirstInvalidInput = (\n fieldErrors: FieldErrors,\n customFocusHandlers: MultiValueMap<string, () => void>,\n formElement: HTMLFormElement\n) => {\n const namesInOrder = [...formElement.elements]\n .map((el) => {\n const input = el instanceof RadioNodeList ? el[0] : el;\n if (input instanceof HTMLElement && \"name\" in input)\n return (input as any).name;\n return null;\n })\n .filter(nonNull)\n .filter((name) => name in fieldErrors);\n const uniqueNamesInOrder = R.uniq(namesInOrder);\n\n for (const fieldName of uniqueNamesInOrder) {\n if (customFocusHandlers.has(fieldName)) {\n customFocusHandlers.getAll(fieldName).forEach((handler) => {\n handler();\n });\n break;\n }\n\n const elem = formElement.elements.namedItem(fieldName);\n if (!elem) continue;\n\n if (elem instanceof RadioNodeList) {\n const selectedRadio =\n [...elem]\n .filter(\n (item): item is HTMLInputElement => item instanceof HTMLInputElement\n )\n .find((item) => item.value === elem.value) ?? elem[0];\n if (selectedRadio && selectedRadio instanceof HTMLInputElement) {\n selectedRadio.focus();\n break;\n }\n }\n\n if (elem instanceof HTMLElement) {\n if (elem instanceof HTMLInputElement && elem.type === \"hidden\") {\n continue;\n }\n\n elem.focus();\n break;\n }\n }\n};\n\nconst useFormId = (providedId?: string): string | symbol => {\n // We can use a `Symbol` here because we only use it after hydration\n const [symbolId] = useState(() => Symbol(\"remix-validated-form-id\"));\n return providedId ?? symbolId;\n};\n\n/**\n * Use a component to access the state so we don't cause\n * any extra rerenders of the whole form.\n */\nconst FormResetter = ({\n resetAfterSubmit,\n formRef,\n}: {\n resetAfterSubmit: boolean;\n formRef: RefObject<HTMLFormElement>;\n}) => {\n const isSubmitting = useIsSubmitting();\n const isValid = useIsValid();\n useSubmitComplete(isSubmitting, () => {\n if (isValid && resetAfterSubmit) {\n formRef.current?.reset();\n }\n });\n return null;\n};\n\nfunction formEventProxy<T extends object>(event: T): T {\n let defaultPrevented = false;\n return new Proxy(event, {\n get: (target, prop) => {\n if (prop === \"preventDefault\") {\n return () => {\n defaultPrevented = true;\n };\n }\n\n if (prop === \"defaultPrevented\") {\n return defaultPrevented;\n }\n\n return target[prop as keyof T];\n },\n }) as T;\n}\n\ntype HTMLSubmitEvent = React.BaseSyntheticEvent<\n SubmitEvent,\n Event,\n HTMLFormElement\n>;\n\ntype HTMLFormSubmitter = HTMLButtonElement | HTMLInputElement;\n\n/**\n * The primary form component of `remix-validated-form`.\n */\nexport function ValidatedForm<DataType>({\n validator,\n onSubmit,\n children,\n fetcher,\n action,\n defaultValues: unMemoizedDefaults,\n formRef: formRefProp,\n onReset,\n subaction,\n resetAfterSubmit = false,\n disableFocusOnError,\n method,\n replace,\n id,\n ...rest\n}: FormProps<DataType>) {\n const formId = useFormId(id);\n const providedDefaultValues = useDeepEqualsMemo(unMemoizedDefaults);\n const contextValue = useMemo<InternalFormContextValue>(\n () => ({\n formId,\n action,\n subaction,\n defaultValuesProp: providedDefaultValues,\n fetcher,\n }),\n [action, fetcher, formId, providedDefaultValues, subaction]\n );\n const backendError = useErrorResponseForForm(contextValue);\n const backendDefaultValues = useDefaultValuesFromLoader(contextValue);\n const hasActiveSubmission = useHasActiveFormSubmit(contextValue);\n const formRef = useRef<HTMLFormElement>(null);\n const Form = fetcher?.Form ?? RemixForm;\n\n const submit = useSubmit();\n const setFieldErrors = useSetFieldErrors(formId);\n const setFieldError = useFormStore(formId, (state) => state.setFieldError);\n const reset = useFormStore(formId, (state) => state.reset);\n const startSubmit = useFormStore(formId, (state) => state.startSubmit);\n const endSubmit = useFormStore(formId, (state) => state.endSubmit);\n const syncFormProps = useFormStore(formId, (state) => state.syncFormProps);\n const setFormElementInState = useFormStore(\n formId,\n (state) => state.setFormElement\n );\n const cleanupForm = useRootFormStore((state) => state.cleanupForm);\n const registerForm = useRootFormStore((state) => state.registerForm);\n\n const customFocusHandlers = useMultiValueMap<string, () => void>();\n const registerReceiveFocus: SyncedFormProps[\"registerReceiveFocus\"] =\n useCallback(\n (fieldName, handler) => {\n customFocusHandlers().add(fieldName, handler);\n return () => {\n customFocusHandlers().remove(fieldName, handler);\n };\n },\n [customFocusHandlers]\n );\n\n // TODO: all these hooks running at startup cause extra, unnecessary renders\n // There must be a nice way to avoid this.\n useLayoutEffect(() => {\n registerForm(formId);\n return () => cleanupForm(formId);\n }, [cleanupForm, formId, registerForm]);\n\n useLayoutEffect(() => {\n syncFormProps({\n action,\n defaultValues: providedDefaultValues ?? backendDefaultValues ?? {},\n subaction,\n registerReceiveFocus,\n validator,\n });\n }, [\n action,\n providedDefaultValues,\n registerReceiveFocus,\n subaction,\n syncFormProps,\n backendDefaultValues,\n validator,\n ]);\n\n useLayoutEffect(() => {\n setFormElementInState(formRef.current);\n }, [setFormElementInState]);\n\n useEffect(() => {\n setFieldErrors(backendError?.fieldErrors ?? {});\n }, [backendError?.fieldErrors, setFieldErrors, setFieldError]);\n\n useSubmitComplete(hasActiveSubmission, () => {\n endSubmit();\n });\n\n const handleSubmit = async (\n e: FormEvent<HTMLFormElement>,\n target: typeof e.currentTarget,\n nativeEvent: HTMLSubmitEvent[\"nativeEvent\"]\n ) => {\n startSubmit();\n const submitter = nativeEvent.submitter as HTMLFormSubmitter | null;\n const formDataToValidate = getDataFromForm(e.currentTarget);\n if (submitter?.name) {\n formDataToValidate.append(submitter.name, submitter.value);\n }\n\n const result = await validator.validate(formDataToValidate);\n if (result.error) {\n setFieldErrors(result.error.fieldErrors);\n endSubmit();\n if (!disableFocusOnError) {\n focusFirstInvalidInput(\n result.error.fieldErrors,\n customFocusHandlers(),\n formRef.current!\n );\n }\n } else {\n setFieldErrors({});\n const eventProxy = formEventProxy(e);\n await onSubmit?.(result.data, eventProxy);\n if (eventProxy.defaultPrevented) {\n endSubmit();\n return;\n }\n\n // We deviate from the remix code here a bit because of our async submit.\n // In remix's `FormImpl`, they use `event.currentTarget` to get the form,\n // but we already have the form in `formRef.current` so we can just use that.\n // If we use `event.currentTarget` here, it will break because `currentTarget`\n // will have changed since the start of the submission.\n if (fetcher) fetcher.submit(submitter || e.currentTarget);\n else\n submit(submitter || target, {\n replace,\n method: (submitter?.formMethod as FormMethod) || method,\n });\n }\n };\n\n return (\n <Form\n ref={mergeRefs([formRef, formRefProp])}\n {...rest}\n id={id}\n action={action}\n method={method}\n replace={replace}\n onSubmit={(e) => {\n e.preventDefault();\n handleSubmit(\n e,\n e.currentTarget,\n (e as unknown as HTMLSubmitEvent).nativeEvent\n );\n }}\n onReset={(event) => {\n onReset?.(event);\n if (event.defaultPrevented) return;\n reset();\n }}\n >\n <InternalFormContext.Provider value={contextValue}>\n <>\n <FormResetter formRef={formRef} resetAfterSubmit={resetAfterSubmit} />\n {subaction && (\n <input type=\"hidden\" value={subaction} name=\"subaction\" />\n )}\n {id && <input type=\"hidden\" value={id} name={FORM_ID_FIELD} />}\n {children}\n </>\n </InternalFormContext.Provider>\n </Form>\n );\n}\n","import * as R from \"remeda\";\nimport { MultiValueMap } from \"./MultiValueMap\";\n\nexport const objectFromPathEntries = (entries: [string, any][]) => {\n const map = new MultiValueMap<string, any>();\n entries.forEach(([key, value]) => map.add(key, value));\n return [...map.entries()].reduce(\n (acc, [key, value]) =>\n R.set(acc, key, value.length === 1 ? value[0] : value),\n {} as Record<string, any>\n );\n};\n","import * as R from \"remeda\";\nimport { CreateValidatorArg, GenericObject, Validator } from \"..\";\nimport { FORM_ID_FIELD } from \"../internal/constants\";\nimport { objectFromPathEntries } from \"../internal/flatten\";\n\nconst preprocessFormData = (data: GenericObject | FormData): GenericObject => {\n // A slightly janky way of determining if the data is a FormData object\n // since node doesn't really have FormData\n if (\"entries\" in data && typeof data.entries === \"function\")\n return objectFromPathEntries([...data.entries()]);\n return objectFromPathEntries(Object.entries(data));\n};\n\nconst omitInternalFields = (data: GenericObject): GenericObject =>\n R.omit(data, [FORM_ID_FIELD]);\n\n/**\n * Used to create a validator for a form.\n * It provides built-in handling for unflattening nested objects and\n * extracting the values from FormData.\n */\nexport function createValidator<T>(\n validator: CreateValidatorArg<T>\n): Validator<T> {\n return {\n validate: async (value) => {\n const data = preprocessFormData(value);\n const result = await validator.validate(omitInternalFields(data));\n\n if (result.error) {\n return {\n data: undefined,\n error: {\n fieldErrors: result.error,\n subaction: data.subaction,\n formId: data[FORM_ID_FIELD],\n },\n submittedData: data,\n formId: data[FORM_ID_FIELD],\n };\n }\n\n return {\n data: result.data,\n error: undefined,\n submittedData: data,\n formId: data[FORM_ID_FIELD],\n };\n },\n validateField: (data: GenericObject | FormData, field: string) =>\n validator.validateField(preprocessFormData(data), field),\n };\n}\n","import { useMemo } from \"react\";\nimport {} from \"../internal/getInputProps\";\nimport {\n useInternalFormContext,\n useClearError,\n useSetTouched,\n useDefaultValuesForForm,\n useFieldErrorsForForm,\n useInternalIsSubmitting,\n useInternalHasBeenSubmitted,\n useTouchedFields,\n useInternalIsValid,\n useFieldErrors,\n useValidateField,\n useValidate,\n useSetFieldErrors,\n useResetFormElement,\n useSyncedDefaultValues,\n useFormActionProp,\n useFormSubactionProp,\n useSubmitForm,\n useFormValues,\n} from \"../internal/hooks\";\nimport {\n FieldErrors,\n TouchedFields,\n ValidationResult,\n} from \"../validation/types\";\n\nexport type FormState = {\n fieldErrors: FieldErrors;\n isSubmitting: boolean;\n hasBeenSubmitted: boolean;\n touchedFields: TouchedFields;\n defaultValues: { [fieldName: string]: any };\n action?: string;\n subaction?: string;\n isValid: boolean;\n};\n\n/**\n * Returns information about the form.\n *\n * @param formId the id of the form. Only necessary if being used outside a ValidatedForm.\n */\nexport const useFormState = (formId?: string): FormState => {\n const formContext = useInternalFormContext(formId, \"useFormState\");\n const isSubmitting = useInternalIsSubmitting(formContext.formId);\n const hasBeenSubmitted = useInternalHasBeenSubmitted(formContext.formId);\n const touchedFields = useTouchedFields(formContext.formId);\n const isValid = useInternalIsValid(formContext.formId);\n const action = useFormActionProp(formContext.formId);\n const subaction = useFormSubactionProp(formContext.formId);\n\n const syncedDefaultValues = useSyncedDefaultValues(formContext.formId);\n const defaultValuesToUse = useDefaultValuesForForm(formContext);\n const hydratedDefaultValues =\n defaultValuesToUse.hydrateTo(syncedDefaultValues);\n\n const fieldErrorsFromState = useFieldErrors(formContext.formId);\n const fieldErrorsToUse = useFieldErrorsForForm(formContext);\n const hydratedFieldErrors = fieldErrorsToUse.hydrateTo(fieldErrorsFromState);\n\n return useMemo(\n () => ({\n action,\n subaction,\n defaultValues: hydratedDefaultValues,\n fieldErrors: hydratedFieldErrors ?? {},\n hasBeenSubmitted,\n isSubmitting,\n touchedFields,\n isValid,\n }),\n [\n action,\n hasBeenSubmitted,\n hydratedDefaultValues,\n hydratedFieldErrors,\n isSubmitting,\n isValid,\n subaction,\n touchedFields,\n ]\n );\n};\n\nexport type FormHelpers = {\n /**\n * Clear the error of the specified field.\n */\n clearError: (fieldName: string) => void;\n /**\n * Validate the specified field.\n */\n validateField: (fieldName: string) => Promise<string | null>;\n /**\n * Change the touched state of the specified field.\n */\n setTouched: (fieldName: string, touched: boolean) => void;\n /**\n * Validate the whole form and populate any errors.\n */\n validate: () => Promise<ValidationResult<unknown>>;\n /**\n * Clears all errors on the form.\n */\n clearAllErrors: () => void;\n /**\n * Resets the form.\n *\n * _Note_: The equivalent behavior can be achieved by calling formElement.reset()\n * or clicking a button element with `type=\"reset\"`.\n */\n reset: () => void;\n /**\n * Submits the form, running all validations first.\n *\n * _Note_: This is equivalent to clicking a button element with `type=\"submit\"` or calling formElement.submit().\n */\n submit: () => void;\n /**\n * Returns the current form values as FormData\n */\n getValues: () => FormData;\n};\n\n/**\n * Returns helpers that can be used to update the form state.\n *\n * @param formId the id of the form. Only necessary if being used outside a ValidatedForm.\n */\nexport const useFormHelpers = (formId?: string): FormHelpers => {\n const formContext = useInternalFormContext(formId, \"useFormHelpers\");\n const setTouched = useSetTouched(formContext);\n const validateField = useValidateField(formContext.formId);\n const validate = useValidate(formContext.formId);\n const clearError = useClearError(formContext);\n const setFieldErrors = useSetFieldErrors(formContext.formId);\n const reset = useResetFormElement(formContext.formId);\n const submit = useSubmitForm(formContext.formId);\n const getValues = useFormValues(formContext.formId);\n return useMemo(\n () => ({\n setTouched,\n validateField,\n clearError,\n validate,\n clearAllErrors: () => setFieldErrors({}),\n reset,\n submit,\n getValues,\n }),\n [\n clearError,\n reset,\n setFieldErrors,\n setTouched,\n submit,\n validate,\n validateField,\n getValues,\n ]\n );\n};\n","import { useCallback, useMemo } from \"react\";\nimport {\n useInternalFormContext,\n useRegisterReceiveFocus,\n} from \"./internal/hooks\";\nimport { useFormHelpers, useFormState } from \"./unreleased/formStateHooks\";\nimport {\n FieldErrors,\n TouchedFields,\n ValidationResult,\n} from \"./validation/types\";\n\nexport type FormContextValue = {\n /**\n * All the errors in all the fields in the form.\n */\n fieldErrors: FieldErrors;\n /**\n * Clear the errors of the specified fields.\n */\n clearError: (...names: string[]) => void;\n /**\n * Validate the specified field.\n */\n validateField: (fieldName: string) => Promise<string | null>;\n /**\n * The `action` prop of the form.\n */\n action?: string;\n /**\n * The `subaction` prop of the form.\n */\n subaction?: string;\n /**\n * Whether or not the form is submitting.\n */\n isSubmitting: boolean;\n /**\n * Whether or not a submission has been attempted.\n * This is true once the form has been submitted, even if there were validation errors.\n * Resets to false when the form is reset.\n */\n hasBeenSubmitted: boolean;\n /**\n * Whether or not the form is valid.\n */\n isValid: boolean;\n /**\n * The default values of the form.\n */\n defaultValues?: { [fieldName: string]: any };\n /**\n * Register a custom focus handler to be used when\n * the field needs to receive focus due to a validation error.\n */\n registerReceiveFocus: (fieldName: string, handler: () => void) => () => void;\n /**\n * Any fields that have been touched by the user.\n */\n touchedFields: TouchedFields;\n /**\n * Change the touched state of the specified field.\n */\n setFieldTouched: (fieldName: string, touched: boolean) => void;\n /**\n * Validate the whole form and populate any errors.\n */\n validate: () => Promise<ValidationResult<unknown>>;\n /**\n * Clears all errors on the form.\n */\n clearAllErrors: () => void;\n /**\n * Resets the form.\n *\n * _Note_: The equivalent behavior can be achieved by calling formElement.reset()\n * or clicking a button element with `type=\"reset\"`.\n */\n reset: () => void;\n /**\n * Submits the form, running all validations first.\n *\n * _Note_: This is equivalent to clicking a button element with `type=\"submit\"` or calling formElement.submit().\n */\n submit: () => void;\n /**\n * Returns the current form values as FormData\n */\n getValues: () => FormData;\n};\n\n/**\n * Provides access to some of the internal state of the form.\n */\nexport const useFormContext = (formId?: string): FormContextValue => {\n // Try to access context so we get our error specific to this hook if it's not there\n const context = useInternalFormContext(formId, \"useFormContext\");\n const state = useFormState(formId);\n const {\n clearError: internalClearError,\n setTouched,\n validateField,\n clearAllErrors,\n validate,\n reset,\n submit,\n getValues,\n } = useFormHelpers(formId);\n\n const registerReceiveFocus = useRegisterReceiveFocus(context.formId);\n\n const clearError = useCallback(\n (...names: string[]) => {\n names.forEach((name) => {\n internalClearError(name);\n });\n },\n [internalClearError]\n );\n\n return useMemo(\n () => ({\n ...state,\n setFieldTouched: setTouched,\n validateField,\n clearError,\n registerReceiveFocus,\n clearAllErrors,\n validate,\n reset,\n submit,\n getValues,\n }),\n [\n clearAllErrors,\n clearError,\n registerReceiveFocus,\n reset,\n setTouched,\n state,\n submit,\n validate,\n validateField,\n getValues,\n ]\n );\n};\n","import React, { useMemo } from \"react\";\nimport { useCallback } from \"react\";\nimport invariant from \"tiny-invariant\";\nimport { InternalFormContextValue } from \"../formContext\";\nimport {\n useFieldDefaultValue,\n useFieldError,\n useInternalFormContext,\n useInternalHasBeenSubmitted,\n useValidateField,\n} from \"../hooks\";\nimport { useRegisterControlledField } from \"./controlledFields\";\nimport { useFormStore } from \"./storeHooks\";\n\nexport type FieldArrayValidationBehavior = \"onChange\" | \"onSubmit\";\n\nexport type FieldArrayValidationBehaviorOptions = {\n initial: FieldArrayValidationBehavior;\n whenSubmitted: FieldArrayValidationBehavior;\n};\n\nconst useInternalFieldArray = (\n context: InternalFormContextValue,\n field: string,\n validationBehavior?: Partial<FieldArrayValidationBehaviorOptions>\n) => {\n const value = useFieldDefaultValue(field, context);\n useRegisterControlledField(context, field);\n const hasBeenSubmitted = useInternalHasBeenSubmitted(context.formId);\n const validateField = useValidateField(context.formId);\n const error = useFieldError(field, context);\n\n const resolvedValidationBehavior: FieldArrayValidationBehaviorOptions = {\n initial: \"onSubmit\",\n whenSubmitted: \"onChange\",\n ...validationBehavior,\n };\n\n const behavior = hasBeenSubmitted\n ? resolvedValidationBehavior.whenSubmitted\n : resolvedValidationBehavior.initial;\n\n const maybeValidate = useCallback(() => {\n if (behavior === \"onChange\") {\n validateField(field);\n }\n }, [behavior, field, validateField]);\n\n invariant(\n value === undefined || value === null || Array.isArray(value),\n `FieldArray: defaultValue value for ${field} must be an array, null, or undefined`\n );\n\n const arr = useFormStore(\n context.formId,\n (state) => state.controlledFields.array\n );\n\n const helpers = useMemo(\n () => ({\n push: (item: any) => {\n arr.push(field, item);\n maybeValidate();\n },\n swap: (indexA: number, indexB: number) => {\n arr.swap(field, indexA, indexB);\n maybeValidate();\n },\n move: (from: number, to: number) => {\n arr.move(field, from, to);\n maybeValidate();\n },\n insert: (index: number, value: any) => {\n arr.insert(field, index, value);\n maybeValidate();\n },\n unshift: (value: any) => {\n arr.unshift(field, value);\n maybeValidate();\n },\n remove: (index: number) => {\n arr.remove(field, index);\n maybeValidate();\n },\n pop: () => {\n arr.pop(field);\n maybeValidate();\n },\n replace: (index: number, value: any) => {\n arr.replace(field, index, value);\n maybeValidate();\n },\n }),\n [arr, field, maybeValidate]\n );\n\n const arrayValue = useMemo(() => value ?? [], [value]);\n\n return [arrayValue, helpers, error] as const;\n};\n\nexport type FieldArrayHelpers<Item = any> = {\n push: (item: Item) => void;\n swap: (indexA: number, indexB: number) => void;\n move: (from: number, to: number) => void;\n insert: (index: number, value: Item) => void;\n unshift: (value: Item) => void;\n remove: (index: number) => void;\n pop: () => void;\n replace: (index: number, value: Item) => void;\n};\n\nexport type UseFieldArrayOptions = {\n formId?: string;\n validationBehavior?: Partial<FieldArrayValidationBehaviorOptions>;\n};\n\nexport function useFieldArray<Item = any>(\n name: string,\n { formId, validationBehavior }: UseFieldArrayOptions = {}\n) {\n const context = useInternalFormContext(formId, \"FieldArray\");\n\n return useInternalFieldArray(context, name, validationBehavior) as [\n itemDefaults: Item[],\n helpers: FieldArrayHelpers,\n error: string | undefined\n ];\n}\n\nexport type FieldArrayProps = {\n name: string;\n children: (\n itemDefaults: any[],\n helpers: FieldArrayHelpers,\n error: string | undefined\n ) => React.ReactNode;\n formId?: string;\n validationBehavior?: FieldArrayValidationBehaviorOptions;\n};\n\nexport const FieldArray = ({\n name,\n children,\n formId,\n validationBehavior,\n}: FieldArrayProps) => {\n const context = useInternalFormContext(formId, \"FieldArray\");\n const [value, helpers, error] = useInternalFieldArray(\n context,\n name,\n validationBehavior\n );\n return <>{children(value, helpers, error)}</>;\n};\n"],"names":["__spreadArray","this","to","from","pack","i","l","ar","purry","fn","args","lazy","diff","arrayArgs","ret","data","_reduceLazy","array","indexed","acc","item","index","result","isArray","keyList","hasProp","equals","_equals","a","b","arrA","arrB","length","key","dateA","dateB","regexpA","regexpB","keys","omit","_omit","object","names","set","_a","name","value","omitBy","_omitBy","pathOr","_pathOr","path","defaultValue","current","_i","path_1","prop","__assign","t","s","p","_set","obj","uniq","_uniq","getCheckboxChecked","checkboxValue","newValue","val","getRadioChecked","radioValue","defaultValidationBehavior","createGetInputProps","clearError","validate","touched","setTouched","hasBeenSubmitted","validationBehavior","validationBehaviors","props","behavior","inputProps","R.omitBy","stringToPathArray","match","_","rest","setPath","_setPathNormalized","leadingSegments","lastSegment","segment","nextSegment","getPath","R.pathOr","isProduction","prefix","invariant","condition","message","provided","FORM_ID_FIELD","FORM_DEFAULTS_FIELD","formDefaultValuesKey","formId","InternalFormContext","createContext","serverData","hydratedData","hydrated","hydratable","createStoreImpl","createState","state","listeners","setState","partial","replace","nextState","previousState","listener","getState","api","createStore","e","require$$0","h","k","m","n","q","d","f","c","g","r","u","useSyncExternalStoreShim_production_min","shimModule","require$$1","v","w","withSelector_production_min","withSelectorModule","useStore","selector","equalityFn","slice","useSyncExternalStoreWithSelector","useDebugValue","createImpl","createStore__default","useBoundStore","create","create$1","Q","Z","L","o","nn","X","rn","y","tn","U","j","O","S","P","M","x","H","A","z","I","E","R","en","on","D","F","G","W","B","un","an","immerImpl","initializer","get","store","updater","produce","immer","requestSubmit","element","submitter","validateSubmitter","dummySubmitter","raise","errorConstructor","getArray","values","field","swap","indexA","indexB","itemA","itemB","hasItemA","hasItemB","sparseSplice","start","deleteCount","move","insert","remove","mutateAsArray","mutate","beforeKeys","arr","newKeys","getDeepArrayPaths","basePath","noOp","defaultFormState","createFormState","fieldName","error","errors","nextDefaults","_b","formElement","validator","_c","clear","promise","resolve","arrayUtil.getArray","arrayUtil.swap","arrayUtil.mutateAsArray","arrayUtil.move","arrayUtil.insert","arrayUtil.remove","arrayUtil.replace","useRootFormStore","setter","useFormStore","useInternalFormContext","hookName","formContext","useContext","useErrorResponseForForm","fetcher","subaction","actionData","useActionData","useFieldErrorsForForm","context","response","useDefaultValuesFromLoader","matches","useMatches","dataKey","useDefaultValuesForForm","defaultValuesProp","errorResponse","defaultValuesFromLoader","useHasActiveFormSubmit","transition","useTransition","useFieldTouched","setFieldTouched","useCallback","useFieldError","fieldErrors","useClearError","useCurrentDefaultValueForField","useFieldDefaultValue","defaultValues","useInternalIsSubmitting","useInternalIsValid","useInternalHasBeenSubmitted","useValidateField","useValidate","noOpReceiver","useRegisterReceiveFocus","defaultDefaultValues","useSyncedDefaultValues","useSetTouched","useTouchedFields","useFieldErrors","useSetFieldErrors","useResetFormElement","useSubmitForm","useFormActionProp","useFormSubactionProp","useFormValues","useControlledFieldValue","isFormHydrated","useRegisterControlledField","resolveUpdate","useEffect","register","unregister","useControllableValue","setControlledFieldValue","setValue","useUpdateControllableValue","useIsSubmitting","useIsValid","useField","options","providedFormId","handleReceiveFocus","validateField","registerReceiveFocus","useMemo","helpers","getInputProps","useControlField","useUpdateControlledField","json","init","responseInit","headers","validationError","repopulateFields","setFormDefaults","MultiValueMap","useMultiValueMap","ref","useRef","useSubmitComplete","isSubmitting","callback","isPending","mergeRefs","refs","useIsomorphicLayoutEffect","useLayoutEffect","useDeepEqualsMemo","areEqual","R.equals","getDataFromForm","el","nonNull","focusFirstInvalidInput","customFocusHandlers","namesInOrder","input","uniqueNamesInOrder","R.uniq","handler","elem","selectedRadio","useFormId","providedId","symbolId","useState","FormResetter","resetAfterSubmit","formRef","isValid","formEventProxy","event","defaultPrevented","target","ValidatedForm","onSubmit","children","action","unMemoizedDefaults","formRefProp","onReset","disableFocusOnError","method","id","providedDefaultValues","contextValue","backendError","backendDefaultValues","hasActiveSubmission","Form","RemixForm","submit","useSubmit","setFieldErrors","setFieldError","reset","startSubmit","endSubmit","syncFormProps","setFormElementInState","cleanupForm","registerForm","handleSubmit","nativeEvent","formDataToValidate","eventProxy","React","objectFromPathEntries","entries","map","R.set","preprocessFormData","omitInternalFields","R.omit","createValidator","useFormState","touchedFields","syncedDefaultValues","hydratedDefaultValues","fieldErrorsFromState","hydratedFieldErrors","useFormHelpers","getValues","useFormContext","internalClearError","clearAllErrors","useInternalFieldArray","resolvedValidationBehavior","maybeValidate","useFieldArray","FieldArray"],"mappings":"sPAAIA,GAAiBC,YAAQA,WAAK,eAAkB,SAAUC,EAAIC,EAAMC,EAAM,CAC1E,GAAIA,GAAQ,UAAU,SAAW,EAAG,QAASC,EAAI,EAAGC,EAAIH,EAAK,OAAQI,EAAIF,EAAIC,EAAGD,KACxEE,GAAM,EAAEF,KAAKF,MACRI,IAAIA,EAAK,MAAM,UAAU,MAAM,KAAKJ,EAAM,EAAGE,CAAC,GACnDE,EAAGF,GAAKF,EAAKE,IAGrB,OAAOH,EAAG,OAAOK,GAAM,MAAM,UAAU,MAAM,KAAKJ,CAAI,CAAC,CAC3D,EA+BO,SAASK,EAAMC,EAAIC,EAAMC,EAAM,CAClC,IAAIC,EAAOH,EAAG,OAASC,EAAK,OACxBG,EAAY,MAAM,KAAKH,CAAI,EAC/B,GAAIE,IAAS,EACT,OAAOH,EAAG,MAAM,OAAQI,CAAS,EAErC,GAAID,IAAS,EAAG,CACZ,IAAIE,EAAM,SAAUC,EAAM,CAAE,OAAON,EAAG,MAAM,OAAQT,GAAc,CAACe,CAAI,EAAGF,EAAW,EAAK,CAAC,CAAE,EAC7F,OAAIF,GAAQF,EAAG,QACXK,EAAI,KAAOH,GAAQF,EAAG,KACtBK,EAAI,SAAWJ,GAEZI,CACV,CACD,MAAM,IAAI,MAAM,2BAA2B,CAC/C,CCtDO,SAASE,GAAYC,EAAON,EAAMO,EAAS,CAC9C,OAAOD,EAAM,OAAO,SAAUE,EAAKC,EAAMC,EAAO,CAC5C,IAAIC,EAASJ,EAAUP,EAAKS,EAAMC,EAAOJ,CAAK,EAAIN,EAAKS,CAAI,EAC3D,OAAIE,EAAO,UAAY,GACnBH,EAAI,KAAK,MAAMA,EAAKG,EAAO,IAAI,EAE1BA,EAAO,UAAY,IACxBH,EAAI,KAAKG,EAAO,IAAI,EAEjBH,CACV,EAAE,CAAE,CAAA,CACT,CCTA,IAAII,GAAU,MAAM,QAChBC,GAAU,OAAO,KACjBC,GAAU,OAAO,UAAU,eACxB,SAASC,IAAS,CACrB,OAAOlB,EAAMmB,GAAS,SAAS,CACnC,CACA,SAASA,GAAQC,EAAGC,EAAG,CACnB,GAAID,IAAMC,EACN,MAAO,GAEX,GAAID,GAAKC,GAAK,OAAOD,GAAM,UAAY,OAAOC,GAAM,SAAU,CAC1D,IAAIC,EAAOP,GAAQK,CAAC,EAChBG,EAAOR,GAAQM,CAAC,EAChBxB,EAAI,OACJ2B,EAAS,OACTC,EAAM,OACV,GAAIH,GAAQC,EAAM,CAEd,GADAC,EAASJ,EAAE,OACPI,IAAWH,EAAE,OACb,MAAO,GAEX,IAAKxB,EAAI2B,EAAQ3B,MAAQ,GACrB,GAAI,CAACqB,GAAOE,EAAEvB,GAAIwB,EAAExB,EAAE,EAClB,MAAO,GAGf,MAAO,EACV,CACD,GAAIyB,IAASC,EACT,MAAO,GAEX,IAAIG,EAAQN,aAAa,KACrBO,EAAQN,aAAa,KACzB,GAAIK,IAAUC,EACV,MAAO,GAEX,GAAID,GAASC,EACT,OAAOP,EAAE,QAAO,IAAOC,EAAE,QAAO,EAEpC,IAAIO,EAAUR,aAAa,OACvBS,EAAUR,aAAa,OAC3B,GAAIO,IAAYC,EACZ,MAAO,GAEX,GAAID,GAAWC,EACX,OAAOT,EAAE,SAAQ,IAAOC,EAAE,SAAQ,EAEtC,IAAIS,EAAOd,GAAQI,CAAC,EAEpB,GADAI,EAASM,EAAK,OACVN,IAAWR,GAAQK,CAAC,EAAE,OACtB,MAAO,GAEX,IAAKxB,EAAI2B,EAAQ3B,MAAQ,GACrB,GAAI,CAACoB,GAAQ,KAAKI,EAAGS,EAAKjC,EAAE,EACxB,MAAO,GAGf,IAAKA,EAAI2B,EAAQ3B,MAAQ,GAErB,GADA4B,EAAMK,EAAKjC,GACP,CAACqB,GAAOE,EAAEK,GAAMJ,EAAEI,EAAI,EACtB,MAAO,GAGf,MAAO,EACV,CACD,OAAOL,IAAMA,GAAKC,IAAMA,CAC5B,CCnEO,SAASU,IAAO,CACnB,OAAO/B,EAAMgC,GAAO,SAAS,CACjC,CACA,SAASA,GAAMC,EAAQC,EAAO,CAC1B,IAAIC,EAAM,IAAI,IAAID,CAAK,EACvB,OAAO,OAAO,QAAQD,CAAM,EAAE,OAAO,SAAUtB,EAAKyB,EAAI,CACpD,IAAIC,EAAOD,EAAG,GAAIE,EAAQF,EAAG,GAC7B,OAAKD,EAAI,IAAIE,CAAI,IACb1B,EAAI0B,GAAQC,GAET3B,CACV,EAAE,CAAE,CAAA,CACT,CCZO,SAAS4B,IAAS,CACrB,OAAOvC,EAAMwC,GAAS,SAAS,CACnC,CACA,SAASA,GAAQP,EAAQhC,EAAI,CACzB,OAAO,OAAO,KAAKgC,CAAM,EAAE,OAAO,SAAUtB,EAAKc,EAAK,CAClD,OAAKxB,EAAGgC,EAAOR,GAAMA,CAAG,IACpBd,EAAIc,GAAOQ,EAAOR,IAEfd,CACV,EAAE,CAAE,CAAA,CACT,CCVO,SAAS8B,IAAS,CACrB,OAAOzC,EAAM0C,GAAS,SAAS,CACnC,CACA,SAASA,GAAQT,EAAQU,EAAMC,EAAc,CAEzC,QADIC,EAAUZ,EACLa,EAAK,EAAGC,EAASJ,EAAMG,EAAKC,EAAO,OAAQD,IAAM,CACtD,IAAIE,EAAOD,EAAOD,GAClB,GAAID,GAAW,MAAQA,EAAQG,IAAS,KACpC,OAAOJ,EAEXC,EAAUA,EAAQG,EACrB,CACD,OAAOH,CACX,CCdA,IAAII,GAAYxD,YAAQA,WAAK,UAAa,UAAY,CAClD,OAAAwD,GAAW,OAAO,QAAU,SAASC,EAAG,CACpC,QAASC,EAAGtD,EAAI,EAAG,EAAI,UAAU,OAAQA,EAAI,EAAGA,IAAK,CACjDsD,EAAI,UAAUtD,GACd,QAASuD,KAAKD,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGC,CAAC,IAC1DF,EAAEE,GAAKD,EAAEC,GAChB,CACD,OAAOF,CACf,EACWD,GAAS,MAAM,KAAM,SAAS,CACzC,EAEO,SAASd,IAAM,CAClB,OAAOnC,EAAMqD,GAAM,SAAS,CAChC,CACA,SAASA,GAAKC,EAAKN,EAAMV,EAAO,CAC5B,IAAIF,EACJ,OAAOa,GAASA,GAAS,CAAE,EAAEK,CAAG,GAAIlB,EAAK,CAAE,EAAEA,EAAGY,GAAQV,EAAOF,EAAE,CACrE,CChBO,SAASmB,GAAO,CACnB,OAAOvD,EAAMwD,GAAO,UAAWD,EAAK,IAAI,CAC5C,CACA,SAASC,GAAM/C,EAAO,CAClB,OAAOD,GAAYC,EAAO8C,EAAK,KAAM,CAAA,CACzC,EACC,SAAUA,EAAM,CACb,SAASpD,GAAO,CACZ,IAAIgC,EAAM,IAAI,IACd,OAAO,SAAUG,EAAO,CACpB,OAAIH,EAAI,IAAIG,CAAK,EACN,CACH,KAAM,GACN,QAAS,EAC7B,GAEYH,EAAI,IAAIG,CAAK,EACN,CACH,KAAM,GACN,QAAS,GACT,KAAMA,CACtB,EACA,CACK,CACDiB,EAAK,KAAOpD,CAChB,GAAGoD,IAASA,EAAO,CAAA,EAAG,EC3Bf,MAAME,GAAqB,CAChCC,EAAoC,KACpCC,IACwB,CACpB,GAAA,MAAM,QAAQA,CAAQ,EACxB,OAAOA,EAAS,KAAMC,GAAQA,IAAQ,IAAQA,IAAQF,CAAa,EACrE,GAAI,OAAOC,GAAa,UAAkB,OAAAA,EAC1C,GAAI,OAAOA,GAAa,SAAU,OAAOA,IAAaD,CAExD,ECTaG,GAAkB,CAC7BC,EAAiC,KACjCH,IACG,CACH,GAAI,OAAOA,GAAa,SAAU,OAAOA,IAAaG,CAExD,ECiCMC,GAAuD,CAC3D,QAAS,SACT,YAAa,WACb,cAAe,UACjB,EAEaC,GAAsB,CAAC,CAClC,WAAAC,EACA,SAAAC,EACA,aAAAtB,EACA,QAAAuB,EACA,WAAAC,EACA,iBAAAC,EACA,mBAAAC,EACA,KAAAjC,CACF,IAAiD,CAC/C,MAAMkC,EAAsB,CAC1B,GAAGR,GACH,GAAGO,CAAA,EAGE,MAAA,CAA8BE,EAAQ,KAAc,CACzD,MAAMC,EAAWJ,EACbE,EAAoB,cACpBJ,EACAI,EAAoB,YACpBA,EAAoB,QAElBG,EAAgC,CACpC,GAAGF,EACH,SAAU,IAAItE,IAAoB,OAChC,OAAIuE,IAAa,WAAqBP,IACtBD,KACT7B,EAAAoC,GAAA,YAAAA,EAAO,WAAP,YAAApC,EAAA,KAAAoC,EAAkB,GAAGtE,EAC9B,EACA,OAAQ,IAAIA,IAAoB,OAC9B,OAAIuE,IAAa,UAAmBP,IACpCE,EAAW,EAAI,GACRhC,EAAAoC,GAAA,YAAAA,EAAO,SAAP,YAAApC,EAAA,KAAAoC,EAAgB,GAAGtE,EAC5B,EACA,KAAAmC,CAAA,EAGE,OAAAmC,EAAM,OAAS,WACjBE,EAAW,eAAiBjB,GAAmBe,EAAM,MAAO5B,CAAY,EAC/D4B,EAAM,OAAS,QACxBE,EAAW,eAAiBb,GAAgBW,EAAM,MAAO5B,CAAY,EAC5D4B,EAAM,QAAU,SAEzBE,EAAW,aAAe9B,GAGrB+B,GAASD,EAAapC,GAAUA,IAAU,MAAS,CAAA,CAE9D,EC7FasC,GACXjC,GACwB,CACxB,GAAIA,EAAK,SAAW,EAAG,MAAO,GAE9B,MAAMkC,EACJlC,EAAK,MAAM,iBAAiB,GAAKA,EAAK,MAAM,uBAAuB,EACrE,GAAIkC,EAAO,CACT,KAAM,CAACC,EAAGrD,EAAKsD,CAAI,EAAIF,EACvB,MAAO,CAAC,QAAQ,KAAKpD,CAAG,EAAI,OAAOA,CAAG,EAAIA,EAAK,GAAGmD,GAAkBG,CAAI,CAAC,CAC3E,CACA,MAAO,CAACpC,CAAI,CACd,ECVgB,SAAAqC,EAAW/C,EAAWU,EAAcC,EAAmB,CACrE,OAAOqC,GAAmBhD,EAAQ2C,GAAkBjC,CAAI,EAAGC,CAAY,CACzE,CAEA,SAASqC,GACPhD,EACAU,EACAL,EACK,OACL,MAAM4C,EAAkBvC,EAAK,MAAM,EAAG,EAAE,EAClCwC,EAAcxC,EAAKA,EAAK,OAAS,GAEvC,IAAIW,EAAMrB,EACV,QAAS,EAAI,EAAG,EAAIiD,EAAgB,OAAQ,IAAK,CAC/C,MAAME,EAAUF,EAAgB,GAC5B,GAAA5B,EAAI8B,KAAa,OAAW,CACxB,MAAAC,GAAcjD,EAAA8C,EAAgB,EAAI,KAApB,KAAA9C,EAA0B+C,EAC9C7B,EAAI8B,GAAW,OAAOC,GAAgB,SAAW,GAAK,EACxD,CACA/B,EAAMA,EAAI8B,EACZ,CACA,OAAA9B,EAAI6B,GAAe7C,EACZL,CACT,CCrBa,MAAAqD,EAAU,CAACrD,EAAaU,IACnC4C,GAAStD,EAAQ2C,GAAkBjC,CAAI,EAAU,MAAS,ECL5D,IAAI6C,GAAe,GACfC,GAAS,mBACb,SAASC,EAAUC,EAAWC,EAAS,CACnC,GAAI,CAAAD,EAGJ,IAAIH,GACA,MAAM,IAAI,MAAMC,EAAM,EAE1B,IAAII,EAAW,OAAOD,GAAY,WAAaA,EAAO,EAAKA,EACvDtD,EAAQuD,EAAWJ,GAAS,KAAOI,EAAWJ,GAClD,MAAM,IAAI,MAAMnD,CAAK,EACzB,CCZO,MAAMwD,EAAgB,sBAChBC,GAAsB,4BACtBC,GAAwBC,GACnC,GAAGF,MAAuBE,ICQfC,GACXC,gBAA+C,IAAI,ECF/CC,GAAiB7F,IAA4B,CACjD,UAAW,IAAMA,EACjB,IAAMN,GAAOmG,GAAWnG,EAAGM,CAAI,CAAC,CAClC,GAEM8F,GAAe,KAAyB,CAC5C,UAAYA,GAAoBA,EAChC,IAAK,IAASA,GAAgB,CAChC,GAEM1G,GAAO,CAAIY,EAAS+F,IACxBA,EAAWD,KAAoBD,GAAc7F,CAAI,EAEtCgG,EAAa,CACxB,WAAAH,GACA,aAAAC,GACA,KAAA1G,EACF,EC3BM6G,GAAmBC,GAAgB,CACvC,IAAIC,EACJ,MAAMC,EAA4B,IAAI,IAChCC,EAAW,CAACC,EAASC,IAAY,CACrC,MAAMC,EAAY,OAAOF,GAAY,WAAaA,EAAQH,CAAK,EAAIG,EACnE,GAAIE,IAAcL,EAAO,CACvB,MAAMM,EAAgBN,EACtBA,EAAQI,EAAUC,EAAY,OAAO,OAAO,GAAIL,EAAOK,CAAS,EAChEJ,EAAU,QAASM,GAAaA,EAASP,EAAOM,CAAa,CAAC,CAC/D,CACL,EACQE,EAAW,IAAMR,EAMjBS,EAAM,CAAE,SAAAP,EAAU,SAAAM,EAAU,UALfD,IACjBN,EAAU,IAAIM,CAAQ,EACf,IAAMN,EAAU,OAAOM,CAAQ,GAGK,QAD7B,IAAMN,EAAU,OACoB,EACpD,OAAAD,EAAQD,EAAYG,EAAUM,EAAUC,CAAG,EACpCA,CACT,EACMC,GAAeX,GAAgBA,EAAcD,GAAgBC,CAAW,EAAID;;;;;;;;GCZrE,IAAIa,EAAEC,EAAgB,QAAC,SAASC,GAAEnG,EAAEC,EAAE,CAAC,OAAOD,IAAIC,IAAQD,IAAJ,GAAO,EAAEA,IAAI,EAAEC,IAAID,IAAIA,GAAGC,IAAIA,CAAC,CAAC,IAAImG,GAAe,OAAO,OAAO,IAA3B,WAA8B,OAAO,GAAGD,GAAEzH,GAAEuH,EAAE,SAASI,GAAEJ,EAAE,UAAUK,GAAEL,EAAE,gBAAgBjE,GAAEiE,EAAE,cAAc,SAASM,GAAEvG,EAAEC,EAAE,CAAC,IAAIuG,EAAEvG,EAAC,EAAGwG,EAAE/H,GAAE,CAAC,KAAK,CAAC,MAAM8H,EAAE,YAAYvG,CAAC,CAAC,CAAC,EAAEyG,EAAED,EAAE,GAAG,KAAKE,EAAEF,EAAE,GAAGH,OAAAA,GAAE,UAAU,CAACI,EAAE,MAAMF,EAAEE,EAAE,YAAYzG,EAAE2G,GAAEF,CAAC,GAAGC,EAAE,CAAC,KAAKD,CAAC,CAAC,CAAC,EAAE,CAAC1G,EAAEwG,EAAEvG,CAAC,CAAC,EAAEoG,GAAE,UAAU,CAACO,OAAAA,GAAEF,CAAC,GAAGC,EAAE,CAAC,KAAKD,CAAC,CAAC,EAAS1G,EAAE,UAAU,CAAC4G,GAAEF,CAAC,GAAGC,EAAE,CAAC,KAAKD,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC1G,CAAC,CAAC,EAAEgC,GAAEwE,CAAC,EAASA,CAAC,CAClc,SAASI,GAAE5G,EAAE,CAAC,IAAIC,EAAED,EAAE,YAAYA,EAAEA,EAAE,MAAM,GAAG,CAAC,IAAIwG,EAAEvG,EAAG,EAAC,MAAM,CAACmG,GAAEpG,EAAEwG,CAAC,CAAC,MAAC,CAAS,MAAM,EAAE,CAAC,CAAC,SAAS1E,GAAE9B,EAAEC,EAAE,CAAC,OAAOA,EAAC,CAAE,CAAC,IAAI4G,GAAgB,OAAO,QAArB,aAA2C,OAAO,OAAO,UAA5B,aAAoD,OAAO,OAAO,SAAS,eAArC,YAAmD/E,GAAEyE,GAA8BO,GAAA,qBAAUb,EAAE,uBAAX,OAAgCA,EAAE,qBAAqBY,GCPxUE,GAAA,QAAiBb;;;;;;;;GCMN,IAAIC,GAAED,EAAAA,QAAiBI,GAAEU,WAAwC,SAAShF,GAAEhC,EAAEC,EAAE,CAAC,OAAOD,IAAIC,IAAQD,IAAJ,GAAO,EAAEA,IAAI,EAAEC,IAAID,IAAIA,GAAGC,IAAIA,CAAC,CAAC,IAAIsG,GAAe,OAAO,OAAO,IAA3B,WAA8B,OAAO,GAAGvE,GAAE4E,GAAEN,GAAE,qBAAqBxE,GAAEqE,GAAE,OAAOU,GAAEV,GAAE,UAAUc,GAAEd,GAAE,QAAQe,GAAEf,GAAE,cAC/PgB,GAAA,iCAAyC,SAASnH,EAAEC,EAAEgG,EAAEvH,EAAEiI,EAAE,CAAC,IAAID,EAAE5E,GAAE,IAAI,EAAE,GAAU4E,EAAE,UAAT,KAAiB,CAAC,IAAID,EAAE,CAAC,SAAS,GAAG,MAAM,IAAI,EAAEC,EAAE,QAAQD,CAAC,MAAMA,EAAEC,EAAE,QAAQA,EAAEO,GAAE,UAAU,CAAC,SAAS,EAAEjH,EAAE,CAAC,GAAG,CAAC0G,EAAE,CAAiB,GAAhBA,EAAE,GAAGF,EAAExG,EAAEA,EAAEtB,EAAEsB,CAAC,EAAc2G,IAAT,QAAYF,EAAE,SAAS,CAAC,IAAIxG,EAAEwG,EAAE,MAAM,GAAGE,EAAE1G,EAAED,CAAC,EAAE,OAAOoG,EAAEnG,CAAC,CAAC,OAAOmG,EAAEpG,CAAC,CAAK,GAAJC,EAAEmG,EAAKG,GAAEC,EAAExG,CAAC,EAAE,OAAOC,EAAE,IAAIgG,EAAEvH,EAAEsB,CAAC,EAAE,OAAY2G,IAAT,QAAYA,EAAE1G,EAAEgG,CAAC,EAAShG,GAAEuG,EAAExG,EAASoG,EAAEH,EAAC,CAAC,IAAIS,EAAE,GAAGF,EAAEJ,EAAEC,EAAWJ,IAAT,OAAW,KAAKA,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,EAAEhG,EAAG,CAAA,CAAC,EAASoG,IAAP,KAAS,OAAO,UAAU,CAAC,OAAO,EAAEA,EAAC,CAAE,CAAC,CAAC,CAAC,EAAE,CAACpG,EAAEgG,EAAEvH,EAAEiI,CAAC,CAAC,EAAE,IAAIH,EAAEI,GAAE5G,EAAE0G,EAAE,GAAGA,EAAE,EAAE,EACrfG,OAAAA,GAAE,UAAU,CAACJ,EAAE,SAAS,GAAGA,EAAE,MAAMD,CAAC,EAAE,CAACA,CAAC,CAAC,EAAEU,GAAEV,CAAC,EAASA,CAAC,ECRtDY,GAAA,QAAiBlB,GCGnB,SAASmB,GAAStB,EAAKuB,EAAWvB,EAAI,SAAUwB,EAAY,CAC1D,MAAMC,EAAQC,GAAgC,QAAA,iCAAC1B,EAAI,UAAWA,EAAI,SAAUA,EAAI,gBAAkBA,EAAI,SAAUuB,EAAUC,CAAU,EACpIG,OAAAA,EAAa,cAACF,CAAK,EACZA,CACT,CACA,MAAMG,GAActC,GAAgB,CAClC,MAAMU,EAAM,OAAOV,GAAgB,WAAauC,GAAqBvC,CAAW,EAAIA,EAC9EwC,EAAgB,CAACP,EAAUC,IAAeF,GAAStB,EAAKuB,EAAUC,CAAU,EAClF,cAAO,OAAOM,EAAe9B,CAAG,EACzB8B,CACT,EACMC,GAAUzC,GAAgBA,EAAcsC,GAAWtC,CAAW,EAAIsC,GACxE,IAAII,GAAWD,GClBf,SAASxB,EAAEA,EAAE,CAAC,QAAQM,EAAE,UAAU,OAAO9E,EAAE,MAAM8E,EAAE,EAAEA,EAAE,EAAE,CAAC,EAAEX,EAAE,EAAEA,EAAEW,EAAEX,IAAInE,EAAEmE,EAAE,GAAG,UAAUA,GAAkJ,MAAM,MAAM,8BAA8BK,GAAGxE,EAAE,OAAO,IAAIA,EAAE,IAAK,SAASwE,EAAE,CAAC,MAAM,IAAIA,EAAE,GAAG,CAAG,EAAC,KAAK,GAAG,EAAE,IAAI,kDAAkD,CAAC,CAAC,SAASM,EAAEN,EAAE,CAAC,MAAM,CAAC,CAACA,GAAG,CAAC,CAACA,EAAE0B,EAAE,CAAC,SAASlG,EAAEwE,EAAE,CAAC,MAAM,CAAC,CAACA,IAAI,SAASA,EAAE,CAAC,GAAG,CAACA,GAAa,OAAOA,GAAjB,SAAmB,MAAM,GAAG,IAAI,EAAE,OAAO,eAAeA,CAAC,EAAE,GAAU,IAAP,KAAS,MAAM,GAAG,IAAIxE,EAAE,OAAO,eAAe,KAAK,EAAE,aAAa,GAAG,EAAE,YAAY,OAAOA,IAAI,QAAoB,OAAOA,GAAnB,YAAsB,SAAS,SAAS,KAAKA,CAAC,IAAImG,EAAC,EAAE3B,CAAC,GAAG,MAAM,QAAQA,CAAC,GAAG,CAAC,CAACA,EAAE4B,KAAI,CAAC,CAAC5B,EAAE,YAAY4B,KAAInG,GAAEuE,CAAC,GAAGW,GAAEX,CAAC,EAAE,CAA2C,SAAS7H,EAAE6H,EAAEM,EAAE9E,EAAE,CAAUA,IAAT,SAAaA,EAAE,IAAQqG,EAAE7B,CAAC,IAAP,GAAUxE,EAAE,OAAO,KAAKsG,IAAI9B,CAAC,EAAE,QAAS,SAASL,EAAE,CAACnE,GAAa,OAAOmE,GAAjB,UAAoBW,EAAEX,EAAEK,EAAEL,GAAGK,CAAC,CAAC,CAAG,EAACA,EAAE,QAAS,SAASxE,EAAEmE,EAAE,CAAC,OAAOW,EAAEX,EAAEnE,EAAEwE,CAAC,CAAC,CAAG,CAAA,CAAC,SAAS6B,EAAE7B,EAAE,CAAC,IAAIM,EAAEN,EAAE0B,GAAG,OAAOpB,EAAEA,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,EAAE,MAAM,QAAQN,CAAC,EAAE,EAAEvE,GAAEuE,CAAC,EAAE,EAAEW,GAAEX,CAAC,EAAE,EAAE,CAAC,CAAC,SAASO,GAAEP,EAAEM,EAAE,CAAC,OAAWuB,EAAE7B,CAAC,IAAP,EAASA,EAAE,IAAIM,CAAC,EAAE,OAAO,UAAU,eAAe,KAAKN,EAAEM,CAAC,CAAC,CAAC,SAAS5G,GAAEsG,EAAEM,EAAE,CAAC,OAAWuB,EAAE7B,CAAC,IAAP,EAASA,EAAE,IAAIM,CAAC,EAAEN,EAAEM,EAAE,CAAC,SAASH,GAAEH,EAAEM,EAAE9E,EAAE,CAAC,IAAImE,EAAEkC,EAAE7B,CAAC,EAAML,IAAJ,EAAMK,EAAE,IAAIM,EAAE9E,CAAC,EAAMmE,IAAJ,GAAOK,EAAE,OAAOM,CAAC,EAAEN,EAAE,IAAIxE,CAAC,GAAGwE,EAAEM,GAAG9E,CAAC,CAAC,SAAS4E,GAAEJ,EAAEM,EAAE,CAAC,OAAON,IAAIM,EAAMN,IAAJ,GAAO,EAAEA,GAAG,EAAEM,EAAEN,GAAGA,GAAGM,GAAGA,CAAC,CAAC,SAAS7E,GAAEuE,EAAE,CAAC,OAAO+B,IAAG/B,aAAa,GAAG,CAAC,SAASW,GAAEX,EAAE,CAAC,OAAOC,IAAGD,aAAa,GAAG,CAAC,SAAStE,EAAEsE,EAAE,CAAC,OAAOA,EAAE,GAAGA,EAAE,CAAC,CAAC,SAAS5H,GAAE4H,EAAE,CAAC,GAAG,MAAM,QAAQA,CAAC,EAAE,OAAO,MAAM,UAAU,MAAM,KAAKA,CAAC,EAAE,IAAIM,EAAE0B,GAAGhC,CAAC,EAAE,OAAOM,EAAEoB,GAAG,QAAQlG,EAAEsG,GAAGxB,CAAC,EAAEX,EAAE,EAAEA,EAAEnE,EAAE,OAAOmE,IAAI,CAAC,IAAIxH,EAAEqD,EAAEmE,GAAGkC,EAAEvB,EAAEnI,GAAQ0J,EAAE,WAAP,KAAkBA,EAAE,SAAS,GAAGA,EAAE,aAAa,KAAKA,EAAE,KAAKA,EAAE,OAAOvB,EAAEnI,GAAG,CAAC,aAAa,GAAG,SAAS,GAAG,WAAW0J,EAAE,WAAW,MAAM7B,EAAE7H,EAAE,EAAE,CAAC,OAAO,OAAO,OAAO,OAAO,eAAe6H,CAAC,EAAEM,CAAC,CAAC,CAAC,SAASJ,GAAEF,EAAEL,EAAE,CAAC,OAAgBA,IAAT,SAAaA,EAAE,IAAIsC,GAAEjC,CAAC,GAAGM,EAAEN,CAAC,GAAG,CAACxE,EAAEwE,CAAC,IAAK6B,EAAE7B,CAAC,EAAE,IAAIA,EAAE,IAAIA,EAAE,IAAIA,EAAE,MAAMA,EAAE,OAAOH,IAAG,OAAO,OAAOG,CAAC,EAAEL,GAAGxH,EAAE6H,EAAG,SAASA,EAAEM,EAAE,CAAC,OAAOJ,GAAEI,EAAE,EAAE,CAAC,EAAG,EAAE,GAAEN,CAAE,CAAC,SAASH,IAAG,CAACG,EAAE,CAAC,CAAC,CAAC,SAASiC,GAAEjC,EAAE,CAAC,OAAaA,GAAN,MAAmB,OAAOA,GAAjB,UAAoB,OAAO,SAASA,CAAC,CAAC,CAAC,SAASrG,EAAE2G,EAAE,CAAC,IAAI,EAAE4B,GAAG5B,GAAG,OAAO,GAAGN,EAAE,GAAGM,CAAC,EAAE,CAAC,CAAkC,SAASlD,IAAG,CAAC,OAAmD+E,CAAC,CAAC,SAASC,GAAEpC,EAAEM,EAAE,CAACA,IAAI3G,EAAE,SAAS,EAAEqG,EAAE,EAAE,CAAA,EAAGA,EAAE,EAAE,CAAA,EAAGA,EAAE,EAAEM,EAAE,CAAC,SAAS+B,GAAErC,EAAE,CAACK,GAAEL,CAAC,EAAEA,EAAE,EAAE,QAAQsC,EAAC,EAAEtC,EAAE,EAAE,IAAI,CAAC,SAASK,GAAEL,EAAE,CAACA,IAAImC,IAAIA,EAAEnC,EAAE,EAAE,CAAC,SAASY,GAAEZ,EAAE,CAAC,OAAOmC,EAAE,CAAC,EAAE,CAAA,EAAG,EAAEA,EAAE,EAAEnC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAASsC,GAAEtC,EAAE,CAAC,IAAIM,EAAEN,EAAE0B,GAAOpB,EAAE,IAAN,GAAaA,EAAE,IAAN,EAAQA,EAAE,EAAG,EAACA,EAAE,EAAE,EAAE,CAAC,SAASiC,GAAEjC,EAAEX,EAAE,CAACA,EAAE,EAAEA,EAAE,EAAE,OAAO,IAAIxH,EAAEwH,EAAE,EAAE,GAAGkC,EAAWvB,IAAT,QAAYA,IAAInI,EAAE,OAAOwH,EAAE,EAAE,GAAGhG,EAAE,KAAK,EAAE,EAAEgG,EAAEW,EAAEuB,CAAC,EAAEA,GAAG1J,EAAEuJ,GAAG,IAAIW,GAAE1C,CAAC,EAAEK,EAAE,CAAC,GAAGxE,EAAE8E,CAAC,IAAIA,EAAEkC,GAAE7C,EAAEW,CAAC,EAAEX,EAAE,GAAG8C,GAAE9C,EAAEW,CAAC,GAAGX,EAAE,GAAGhG,EAAE,SAAS,EAAE,EAAExB,EAAEuJ,GAAG,EAAEpB,EAAEX,EAAE,EAAEA,EAAE,CAAC,GAAGW,EAAEkC,GAAE7C,EAAExH,EAAE,CAAE,CAAA,EAAEkK,GAAE1C,CAAC,EAAEA,EAAE,GAAGA,EAAE,EAAEA,EAAE,EAAEA,EAAE,CAAC,EAAEW,IAAIoC,GAAEpC,EAAE,MAAM,CAAC,SAASkC,GAAExC,EAAEM,EAAE9E,EAAE,CAAC,GAAGyG,GAAE3B,CAAC,EAAE,OAAOA,EAAE,IAAIX,EAAEW,EAAEoB,GAAG,GAAG,CAAC/B,EAAE,OAAOxH,EAAEmI,EAAG,SAASnI,EAAE0J,EAAE,CAAC,OAAOc,GAAE3C,EAAEL,EAAEW,EAAEnI,EAAE0J,EAAErG,CAAC,CAAC,EAAG,EAAE,EAAE8E,EAAE,GAAGX,EAAE,IAAIK,EAAE,OAAOM,EAAE,GAAG,CAACX,EAAE,EAAE,OAAO8C,GAAEzC,EAAEL,EAAE,EAAE,EAAE,EAAEA,EAAE,EAAE,GAAG,CAACA,EAAE,EAAE,CAACA,EAAE,EAAE,GAAGA,EAAE,EAAE,IAAI,IAAI,EAAMA,EAAE,IAAN,GAAaA,EAAE,IAAN,EAAQA,EAAE,EAAEvH,GAAEuH,EAAE,CAAC,EAAEA,EAAE,EAAExH,EAAMwH,EAAE,IAAN,EAAQ,IAAI,IAAI,CAAC,EAAE,EAAG,SAASW,EAAEnI,EAAE,CAAC,OAAOwK,GAAE3C,EAAEL,EAAE,EAAEW,EAAEnI,EAAEqD,CAAC,CAAC,CAAC,EAAGiH,GAAEzC,EAAE,EAAE,EAAE,EAAExE,GAAGwE,EAAE,GAAGrG,EAAE,SAAS,EAAE,EAAEgG,EAAEnE,EAAEwE,EAAE,EAAEA,EAAE,CAAC,CAAC,CAAC,OAAOL,EAAE,CAAC,CAAC,SAASgD,GAAE,EAAExK,EAAE0J,EAAEnI,EAAE0G,EAAE3E,EAAE,CAAC,GAAoD6E,EAAEF,CAAC,EAAE,CAAC,IAAIO,EAAE6B,GAAE,EAAEpC,EAAE3E,GAAGtD,GAAOA,EAAE,IAAN,GAAS,CAACoI,GAAEpI,EAAE,EAAEuB,CAAC,EAAE+B,EAAE,OAAO/B,CAAC,EAAE,MAAM,EAAE,GAAGyG,GAAE0B,EAAEnI,EAAEiH,CAAC,EAAE,CAACL,EAAEK,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAGnF,EAAE4E,CAAC,GAAG,CAAC6B,GAAE7B,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,OAAOoC,GAAE,EAAEpC,CAAC,EAAEjI,GAAGA,EAAE,EAAE,GAAGsK,GAAE,EAAErC,CAAC,CAAC,CAAC,CAAC,SAASqC,GAAEzC,EAAEM,EAAE9E,EAAE,CAAUA,IAAT,SAAaA,EAAE,IAAIwE,EAAE,EAAE,GAAGA,EAAE,GAAGE,GAAEI,EAAE9E,CAAC,CAAC,CAAC,SAASoH,GAAE5C,EAAEM,EAAE,CAAC,IAAI9E,EAAEwE,EAAE0B,GAAG,OAAOlG,EAAEE,EAAEF,CAAC,EAAEwE,GAAGM,EAAE,CAAC,SAASuC,GAAE7C,EAAEM,EAAE,CAAC,GAAGA,KAAKN,EAAE,QAAQxE,EAAE,OAAO,eAAewE,CAAC,EAAExE,GAAG,CAAC,IAAImE,EAAE,OAAO,yBAAyBnE,EAAE8E,CAAC,EAAE,GAAGX,EAAE,OAAOA,EAAEnE,EAAE,OAAO,eAAeA,CAAC,CAAC,CAAC,CAAC,SAASsE,GAAEE,EAAE,CAACA,EAAE,IAAIA,EAAE,EAAE,GAAGA,EAAE,GAAGF,GAAEE,EAAE,CAAC,EAAE,CAAC,SAAS8C,GAAE9C,EAAE,CAACA,EAAE,IAAIA,EAAE,EAAE5H,GAAE4H,EAAE,CAAC,EAAE,CAAC,SAAS+C,GAAE/C,EAAEM,EAAE9E,EAAE,CAAC,IAAImE,EAAElE,GAAE6E,CAAC,EAAE3G,EAAE,QAAQ,EAAE,EAAE2G,EAAE9E,CAAC,EAAEmF,GAAEL,CAAC,EAAE3G,EAAE,QAAQ,EAAE,EAAE2G,EAAE9E,CAAC,EAAEwE,EAAE,EAAE,SAASA,EAAEM,EAAE,CAAC,IAAI9E,EAAE,MAAM,QAAQwE,CAAC,EAAEL,EAAE,CAAC,EAAEnE,EAAE,EAAE,EAAE,EAAE8E,EAAEA,EAAE,EAAElD,GAAC,EAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA,EAAG,EAAEkD,EAAE,EAAEN,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE7H,EAAEwH,EAAEkC,EAAEmB,GAAGxH,IAAIrD,EAAE,CAACwH,CAAC,EAAEkC,EAAEoB,GAAI,IAAI1C,EAAE,MAAM,UAAUpI,EAAE0J,CAAC,EAAEnI,EAAE6G,EAAE,OAAOJ,EAAEI,EAAE,MAAM,OAAOZ,EAAE,EAAEQ,EAAER,EAAE,EAAEjG,EAAEyG,CAAC,EAAEG,EAAE9E,CAAC,EAAE7B,EAAE,KAAK,EAAE,EAAE2G,EAAE9E,CAAC,EAAE,OAAOA,EAAEA,EAAE,EAAE4B,GAAG,GAAE,EAAE,KAAKuC,CAAC,EAAEA,CAAC,CAAC,SAASuD,GAAE,EAAE,CAAC,OAAO5C,EAAE,CAAC,GAAGN,EAAE,GAAG,CAAC,EAAE,SAASA,EAAE,EAAE,CAAC,GAAG,CAACxE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAImE,EAAEY,EAAE,EAAEmB,GAAGtB,EAAEyB,EAAE,CAAC,EAAE,GAAGtB,EAAE,CAAC,GAAG,CAACA,EAAE,IAAIA,EAAE,EAAE,GAAG,CAAC5G,EAAE,KAAK,EAAE,EAAE4G,CAAC,GAAG,OAAOA,EAAE,EAAEA,EAAE,EAAE,GAAGZ,EAAEwD,GAAE,EAAE/C,CAAC,EAAEG,EAAE,EAAE,EAAE,MAAMZ,EAAEwD,GAAE,EAAE/C,CAAC,EAAE,OAAOjI,EAAEwH,EAAG,SAASW,EAAE9E,EAAE,CAAC+E,GAAG7G,GAAE6G,EAAE,EAAED,CAAC,IAAI9E,GAAG2E,GAAER,EAAEW,EAAEN,EAAExE,CAAC,CAAC,CAAC,CAAG,EAAK4E,IAAJ,EAAM,IAAI,IAAIT,CAAC,EAAEA,CAAC,EAAE,CAAC,CAAC,CAAC,SAASwD,GAAEnD,EAAEM,EAAE,CAAC,OAAOA,OAAQ,GAAE,OAAO,IAAI,IAAIN,CAAC,MAAO,GAAE,OAAO,MAAM,KAAKA,CAAC,EAAE,OAAO5H,GAAE4H,CAAC,CAAC,CAAirO,IAACoD,GAAEjB,EAAEkB,GAAe,OAAO,QAApB,aAAsC,OAAO,OAAO,GAAG,GAA3B,SAA6BtB,GAAe,OAAO,KAApB,YAAwB9B,GAAe,OAAO,KAApB,YAAwBqD,GAAe,OAAO,OAApB,aAAoC,MAAM,YAAf,QAAuC,OAAO,SAApB,YAA4BZ,GAAEW,GAAE,OAAO,IAAI,eAAe,IAAID,GAAE,CAAA,GAAI,iBAAiB,GAAGA,IAAGxB,GAAEyB,GAAE,OAAO,IAAI,iBAAiB,EAAE,qBAAqB3B,EAAE2B,GAAE,OAAO,IAAI,aAAa,EAAE,iBAAy2D1B,GAAE,GAAG,OAAO,UAAU,YAAYG,GAAgB,OAAO,SAApB,aAA6B,QAAQ,QAAQ,QAAQ,QAAiB,OAAO,wBAAhB,OAAsC,SAAS9B,EAAE,CAAC,OAAO,OAAO,oBAAoBA,CAAC,EAAE,OAAO,OAAO,sBAAsBA,CAAC,CAAC,CAAC,EAAE,OAAO,oBAAoBgC,GAAG,OAAO,2BAA2B,SAAShC,EAAE,CAAC,IAAIM,EAAE,CAAE,EAAC,OAAOwB,GAAG9B,CAAC,EAAE,QAAS,SAASxE,EAAE,CAAC8E,EAAE9E,GAAG,OAAO,yBAAyBwE,EAAExE,CAAC,CAAC,CAAG,EAAC8E,CAAC,EAAE4B,GAAG,CAAA,EAAGc,GAAG,CAAC,IAAI,SAAShD,EAAEM,EAAE,CAAC,GAAGA,IAAIoB,EAAE,OAAO1B,EAAE,IAAIL,EAAEjE,EAAEsE,CAAC,EAAE,GAAG,CAACO,GAAEZ,EAAEW,CAAC,EAAE,OAAO,SAASN,EAAEM,EAAE9E,EAAE,CAAC,IAAImE,EAAExH,EAAE0K,GAAEvC,EAAE9E,CAAC,EAAE,OAAOrD,EAAE,UAAUA,EAAEA,EAAE,OAAcwH,EAAExH,EAAE,OAAZ,MAA2BwH,IAAT,OAAW,OAAOA,EAAE,KAAKK,EAAE,CAAC,EAAE,MAAM,EAAEA,EAAEL,EAAEW,CAAC,EAAE,IAAInI,EAAEwH,EAAEW,GAAG,OAAON,EAAE,GAAG,CAACxE,EAAErD,CAAC,EAAEA,EAAEA,IAAIyK,GAAE5C,EAAE,EAAEM,CAAC,GAAGwC,GAAE9C,CAAC,EAAEA,EAAE,EAAEM,GAAGyC,GAAE/C,EAAE,EAAE,EAAE7H,EAAE6H,CAAC,GAAG7H,CAAC,EAAE,IAAI,SAAS6H,EAAEM,EAAE,CAAC,OAAOA,KAAK5E,EAAEsE,CAAC,CAAC,EAAE,QAAQ,SAASA,EAAE,CAAC,OAAO,QAAQ,QAAQtE,EAAEsE,CAAC,CAAC,CAAC,EAAE,IAAI,SAASA,EAAEM,EAAE9E,EAAE,CAAC,IAAImE,EAAEkD,GAAEnH,EAAEsE,CAAC,EAAEM,CAAC,EAAE,GAASX,GAAN,MAAeA,EAAE,IAAI,OAAOA,EAAE,IAAI,KAAKK,EAAE,EAAExE,CAAC,EAAE,GAAG,GAAG,CAACwE,EAAE,EAAE,CAAC,IAAI7H,EAAEyK,GAAElH,EAAEsE,CAAC,EAAEM,CAAC,EAAEuB,EAAQ1J,GAAN,KAAQ,OAAOA,EAAEuJ,GAAG,GAAGG,GAAGA,EAAE,IAAIrG,EAAE,OAAOwE,EAAE,EAAEM,GAAG9E,EAAEwE,EAAE,EAAEM,GAAG,GAAG,GAAG,GAAGF,GAAE5E,EAAErD,CAAC,IAAaqD,IAAT,QAAY+E,GAAEP,EAAE,EAAEM,CAAC,GAAG,MAAM,GAAGwC,GAAE9C,CAAC,EAAEF,GAAEE,CAAC,CAAC,CAAC,OAAOA,EAAE,EAAEM,KAAK9E,GAAa,OAAOA,GAAjB,WAA8BA,IAAT,QAAY8E,KAAKN,EAAE,KAAKA,EAAE,EAAEM,GAAG9E,EAAEwE,EAAE,EAAEM,GAAG,GAAG,GAAG,EAAE,eAAe,SAASN,EAAEM,EAAE,CAAC,OAAgBsC,GAAE5C,EAAE,EAAEM,CAAC,IAAhB,QAAmBA,KAAKN,EAAE,GAAGA,EAAE,EAAEM,GAAG,GAAGwC,GAAE9C,CAAC,EAAEF,GAAEE,CAAC,GAAG,OAAOA,EAAE,EAAEM,GAAGN,EAAE,GAAG,OAAOA,EAAE,EAAEM,GAAG,EAAE,EAAE,yBAAyB,SAASN,EAAEM,EAAE,CAAC,IAAI9E,EAAEE,EAAEsE,CAAC,EAAEL,EAAE,QAAQ,yBAAyBnE,EAAE8E,CAAC,EAAE,OAAOX,GAAE,CAAC,SAAS,GAAG,aAAiBK,EAAE,IAAN,GAAoBM,IAAX,SAAa,WAAWX,EAAE,WAAW,MAAMnE,EAAE8E,EAAE,CAAG,EAAE,eAAe,UAAU,CAACN,EAAE,EAAE,CAAC,EAAE,eAAe,SAASA,EAAE,CAAC,OAAO,OAAO,eAAeA,EAAE,CAAC,CAAC,EAAE,eAAe,UAAU,CAACA,EAAE,EAAE,CAAC,CAAC,EAAEiD,EAAG,CAAA,EAAG9K,EAAE6K,GAAI,SAAShD,EAAEM,EAAE,CAAC2C,EAAGjD,GAAG,UAAU,CAAC,OAAO,UAAU,GAAG,UAAU,GAAG,GAAGM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAG2C,EAAG,eAAe,SAAS3C,EAAE,EAAE,CAAC,OAAqE2C,EAAG,IAAI,KAAK,KAAK3C,EAAE,EAAE,MAAM,CAAC,EAAE2C,EAAG,IAAI,SAAS3C,EAAE,EAAEX,EAAE,CAAC,OAAmFqD,GAAG,IAAI,KAAK,KAAK1C,EAAE,GAAG,EAAEX,EAAEW,EAAE,EAAE,CAAC,EAAK,IAACiD,GAAG,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI5D,EAAE,KAAK,KAAK,EAAE2D,GAAE,KAAK,EAAE,GAAG,KAAK,QAAQ,SAAShD,EAAEnI,EAAE0J,EAAE,CAAC,GAAe,OAAOvB,GAAnB,YAAkC,OAAOnI,GAAnB,WAAqB,CAAC,IAAIoI,EAAEpI,EAAEA,EAAEmI,EAAE,IAAI,EAAEX,EAAE,OAAO,SAASK,EAAE,CAAC,IAAIM,EAAE,KAAcN,IAAT,SAAaA,EAAEO,GAAG,QAAQ/E,EAAE,UAAU,OAAOmE,EAAE,MAAMnE,EAAE,EAAEA,EAAE,EAAE,CAAC,EAAEqG,EAAE,EAAEA,EAAErG,EAAEqG,IAAIlC,EAAEkC,EAAE,GAAG,UAAUA,GAAG,OAAO,EAAE,QAAQ7B,EAAG,SAASA,GAAE,CAAC,IAAIxE,EAAE,OAAOA,EAAErD,GAAG,KAAK,MAAMqD,EAAE,CAAC8E,EAAEN,EAAC,EAAE,OAAOL,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,IAAIQ,EAAE,GAAe,OAAOhI,GAAnB,YAAsB6H,EAAE,CAAC,EAAW6B,IAAT,QAAwB,OAAOA,GAAnB,YAAsB7B,EAAE,CAAC,EAAExE,EAAE8E,CAAC,EAAE,CAAC,IAAI,EAAEM,GAAEjB,CAAC,EAAElE,EAAEsH,GAAEpD,EAAEW,EAAE,MAAM,EAAEK,EAAE,GAAG,GAAG,CAACR,EAAEhI,EAAEsD,CAAC,EAAEkF,EAAE,EAAE,QAAC,CAAQA,EAAE0B,GAAE,CAAC,EAAEhC,GAAE,CAAC,CAAC,CAAC,OAAmB,OAAO,SAApB,aAA6BF,aAAa,QAAQA,EAAE,KAAM,SAASH,EAAE,CAAC,OAAOoC,GAAE,EAAEP,CAAC,EAAEU,GAAEvC,EAAE,CAAC,CAAC,EAAI,SAASA,EAAE,CAAC,MAAMqC,GAAE,CAAC,EAAErC,CAAC,CAAG,GAAEoC,GAAE,EAAEP,CAAC,EAAEU,GAAEpC,EAAE,CAAC,EAAE,CAAC,GAAG,CAACG,GAAa,OAAOA,GAAjB,SAAmB,CAAC,IAAaH,EAAEhI,EAAEmI,CAAC,KAAf,SAAoBH,EAAEG,GAAGH,IAAIuC,KAAIvC,EAAE,QAAQR,EAAE,GAAGO,GAAEC,EAAE,EAAE,EAAE0B,EAAE,CAAC,IAAInG,EAAE,CAAE,EAACtD,EAAE,CAAE,EAACuB,EAAE,SAAS,EAAE,EAAE2G,EAAEH,EAAEzE,EAAEtD,CAAC,EAAEyJ,EAAEnG,EAAEtD,CAAC,CAAC,CAAC,OAAO+H,CAAC,CAACH,EAAE,GAAGM,CAAC,CAAC,EAAE,KAAK,mBAAmB,SAASN,EAAEM,EAAE,CAAC,GAAe,OAAON,GAAnB,WAAqB,OAAO,SAASM,EAAE,CAAC,QAAQ9E,EAAE,UAAU,OAAOrD,EAAE,MAAMqD,EAAE,EAAEA,EAAE,EAAE,CAAC,EAAEqG,EAAE,EAAEA,EAAErG,EAAEqG,IAAI1J,EAAE0J,EAAE,GAAG,UAAUA,GAAG,OAAOlC,EAAE,mBAAmBW,EAAG,SAASA,EAAE,CAAC,OAAON,EAAE,MAAM,OAAO,CAACM,CAAC,EAAE,OAAOnI,CAAC,CAAC,CAAC,CAAG,CAAA,EAAE,IAAIqD,EAAE,EAAEqG,EAAElC,EAAE,QAAQK,EAAEM,EAAG,SAASN,EAAEM,EAAE,CAAC9E,EAAEwE,EAAE,EAAEM,CAAC,CAAG,EAAC,OAAmB,OAAO,SAApB,aAA6BuB,aAAa,QAAQA,EAAE,KAAM,SAAS7B,EAAE,CAAC,MAAM,CAACA,EAAExE,EAAE,CAAC,CAAC,CAAC,EAAG,CAACqG,EAAErG,EAAE,CAAC,CAAC,EAAa,OAAa,GAAN,KAAQ,OAAO,EAAE,aAAnC,WAAgD,KAAK,cAAc,EAAE,UAAU,EAAa,OAAa,GAAN,KAAQ,OAAO,EAAE,aAAnC,WAAgD,KAAK,cAAc,EAAE,UAAU,CAAC,CAAC,IAAIrD,EAAE,EAAE,UAAU,OAAOA,EAAE,YAAY,SAASwH,EAAE,CAACnE,EAAEmE,CAAC,GAAGK,EAAE,CAAC,EAAEM,EAAEX,CAAC,IAAIA,EAAEuD,GAAEvD,CAAC,GAAG,IAAIxH,EAAEyI,GAAE,IAAI,EAAE,EAAEmC,GAAE,KAAKpD,EAAE,MAAM,EAAE,OAAO,EAAE+B,GAAG,EAAE,GAAGrB,GAAElI,CAAC,EAAE,CAAC,EAAEA,EAAE,YAAY,SAAS,EAAEqD,EAAE,CAAC,IAAImE,EAAE,GAAG,EAAE+B,GAAsEvJ,EAAEwH,EAAE,EAAE,OAAOyC,GAAEjK,EAAEqD,CAAC,EAAE+G,GAAE,OAAOpK,CAAC,CAAC,EAAEA,EAAE,cAAc,SAAS6H,EAAE,CAAC,KAAK,EAAEA,CAAC,EAAE7H,EAAE,cAAc,SAAS,EAAE,CAAC,GAAG,CAACmL,IAAGtD,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE7H,EAAE,aAAa,SAAS6H,EAAExE,EAAE,CAAC,IAAImE,EAAE,IAAIA,EAAEnE,EAAE,OAAO,EAAEmE,GAAG,EAAEA,IAAI,CAAC,IAAIxH,EAAEqD,EAAEmE,GAAG,GAAOxH,EAAE,KAAK,SAAX,GAA+BA,EAAE,KAAd,UAAiB,CAAC6H,EAAE7H,EAAE,MAAM,KAAK,CAAC,CAACwH,EAAE,KAAKnE,EAAEA,EAAE,MAAMmE,EAAE,CAAC,GAAG,IAAIkC,EAAElI,EAAE,SAAS,EAAE,EAAE,OAAO2G,EAAEN,CAAC,EAAE6B,EAAE7B,EAAExE,CAAC,EAAE,KAAK,QAAQwE,EAAG,SAASA,EAAE,CAAC,OAAO6B,EAAE7B,EAAExE,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,EAAG,EAACgI,EAAG,IAAID,GAAGhL,GAAGiL,EAAG,QAAWA,EAAG,mBAAmB,KAAKA,CAAE,EAAKA,EAAG,cAAc,KAAKA,CAAE,EAAKA,EAAG,cAAc,KAAKA,CAAE,EAAKA,EAAG,aAAa,KAAKA,CAAE,EAAKA,EAAG,YAAY,KAAKA,CAAE,EAAKA,EAAG,YAAY,KAAKA,CAAE,ECEp8iB,MAAMC,GAAaC,GAAgB,CAACjJ,EAAKkJ,EAAKC,KAC5CA,EAAM,SAAW,CAACC,EAASzE,KAAY1F,IAAM,CAC3C,MAAM2F,EAAY,OAAOwE,GAAY,WAAaC,GAAQD,CAAO,EAAIA,EACrE,OAAOpJ,EAAI4E,EAAWD,EAAS,GAAG1F,CAAC,CACvC,EACSgK,EAAYE,EAAM,SAAUD,EAAKC,CAAK,GAEzCG,GAAQN,GCLDO,GAAgB,CAC3BC,EACAC,IACG,CAID,GAAA,OAAO,OAAO,eAAeD,CAAO,EAAE,eAAkB,WAExD,CACAA,EAAQ,cAAcC,CAAS,EAC/B,MACF,CAEA,GAAIA,EAAW,CACbC,GAAkBF,EAASC,CAAS,EACpCA,EAAU,MAAM,EAChB,MACF,CAEM,MAAAE,EAAiB,SAAS,cAAc,OAAO,EACrDA,EAAe,KAAO,SACtBA,EAAe,OAAS,GACxBH,EAAQ,YAAYG,CAAc,EAClCA,EAAe,MAAM,EACrBH,EAAQ,YAAYG,CAAc,CACpC,EAEA,SAASD,GAAkBF,EAA0BC,EAAwB,CAErDA,aAAqB,aAEzCG,GAAM,UAAW,0CAA0C,EAI3D,SAAUH,GAAcA,EAA+B,OAAS,UAEhEG,GAAM,UAAW,8CAA8C,EAG/D,SAAUH,GAAcA,EAA+B,OAASD,GAEhEI,GACE,aACA,0DACA,eAAA,CAEN,CAMA,SAASA,GACPC,EACApG,EACAvD,EACO,CACP,MAAM,IAAI2J,EACR,2DAA6DpG,EAAU,IACvEvD,CAAA,CAEJ,CC3Da,MAAA4J,EAAW,CAACC,EAAaC,IAA6B,CAC3D,MAAA7J,EAAQgD,EAAQ4G,EAAQC,CAAK,EAC/B,GAAuB7J,GAAU,KAAM,CACzC,MAAMqB,EAAsB,CAAA,EACpB,OAAAqB,EAAAkH,EAAQC,EAAOxI,CAAQ,EACxBA,CACT,CACA,OAAA+B,EACE,MAAM,QAAQpD,CAAK,EACnB,sCAAsC6J,wCAAA,EAEjC7J,CACT,EAEa8J,GAAO,CAAC3L,EAAkB4L,EAAgBC,IAAmB,CACxE,MAAMC,EAAQ9L,EAAM4L,GACdG,EAAQ/L,EAAM6L,GAEdG,EAAWJ,KAAU5L,EACrBiM,EAAWJ,KAAU7L,EAIvBgM,EACFhM,EAAM6L,GAAUC,EAEhB,OAAO9L,EAAM6L,GAGXI,EACFjM,EAAM4L,GAAUG,EAEhB,OAAO/L,EAAM4L,EAEjB,EAGA,SAASM,EACPlM,EACAmM,EACAC,EACAjM,EACA,CAQA,OALIH,EAAM,OAASmM,GAAShM,IAC1BH,EAAM,OAASmM,GAIb,UAAU,SAAW,EAAUnM,EAAM,OAAOmM,EAAOC,EAAajM,CAAI,EACjEH,EAAM,OAAOmM,EAAOC,CAAW,CACxC,CAEO,MAAMC,GAAO,CAACrM,EAAkBd,EAAcD,IAAe,CAClE,KAAM,CAACkB,CAAI,EAAI+L,EAAalM,EAAOd,EAAM,CAAC,EAC7BgN,EAAAlM,EAAOf,EAAI,EAAGkB,CAAI,CACjC,EAEamM,GAAS,CAACtM,EAAkBI,EAAeyB,IAAmB,CAC5DqK,EAAAlM,EAAOI,EAAO,EAAGyB,CAAK,CACrC,EAEa0K,GAAS,CAACvM,EAAkBI,IAAkB,CAC5C8L,EAAAlM,EAAOI,EAAO,CAAC,CAC9B,EAEaiG,GAAU,CAACrG,EAAkBI,EAAeyB,IAAmB,CAC7DqK,EAAAlM,EAAOI,EAAO,EAAGyB,CAAK,CACrC,EAOa2K,EAAgB,CAC3Bd,EACA7I,EACA4J,IACG,CACG,MAAAC,MAAiB,IACjBC,EAAa,CAAA,EAEnB,SAAW,CAAC3L,EAAKa,CAAK,IAAK,OAAO,QAAQgB,CAAG,EACvC7B,EAAI,WAAW0K,CAAK,GAAK1K,IAAQ0K,IACnCgB,EAAW,IAAI1L,CAAG,EAClBuD,EAAQoI,EAAK3L,EAAI,UAAU0K,EAAM,MAAM,EAAG7J,CAAK,GAInD4K,EAAOE,CAAG,EACV,UAAW3L,KAAO0L,EAChB,OAAO7J,EAAI7B,GAGP,MAAA4L,EAAUC,GAAkBF,CAAG,EACrC,UAAW3L,KAAO4L,EAAS,CACnB,MAAAzJ,EAAM0B,EAAQ8H,EAAK3L,CAAG,EACxB6B,EAAA,GAAG6I,IAAQ1K,KAASmC,CAC1B,CACF,EAEM0J,GAAoB,CAAChK,EAAUiK,EAAmB,KAIlD,MAAM,QAAQjK,CAAG,EACZA,EAAI,QAAQ,CAAC1C,EAAMC,IACxByM,GAAkB1M,EAAM,GAAG2M,KAAY1M,IAAQ,CAAA,EAI/C,OAAOyC,GAAQ,SACV,OAAO,KAAKA,CAAG,EAAE,QAAS7B,GAC/B6L,GAAkBhK,EAAI7B,GAAM,GAAG8L,KAAY9L,GAAK,CAAA,EAI7C,CAAC8L,CAAQ,EC5CZC,EAAO,IAAM,CAAC,EACdC,GAA8B,CAClC,WAAY,GACZ,aAAc,GACd,iBAAkB,GAClB,cAAe,CAAC,EAChB,YAAa,CAAC,EACd,YAAa,KACb,QAAS,IAAM,GACf,YAAaD,EACb,UAAWA,EACX,WAAYA,EACZ,cAAeA,EACf,eAAgBA,EAChB,gBAAiBA,EACjB,qBAAsB,CAAC,EAEvB,MAAO,IAAMA,EACb,cAAeA,EACf,eAAgBA,EAChB,cAAe,SAAY,KAE3B,SAAU,SAAY,CACd,MAAA,IAAI,MAAM,8CAA8C,CAChE,EAEA,OAAQ,SAAY,CACZ,MAAA,IAAI,MAAM,4CAA4C,CAC9D,EAEA,iBAAkBA,EAClB,UAAW,IAAM,IAAI,SAErB,iBAAkB,CAChB,OAAQ,CAAC,EACT,UAAW,CAAC,EACZ,oBAAqB,CAAC,EACtB,qBAAsB,CAAC,EAEvB,SAAUA,EACV,WAAYA,EACZ,SAAUA,EACV,SAAUA,EACV,mBAAoBA,EACpB,iBAAkB,SAAY,CACtB,MAAA,IAAI,MAAM,sDAAsD,CACxE,EAEA,MAAO,CACL,KAAMA,EACN,KAAMA,EACN,KAAMA,EACN,OAAQA,EACR,QAASA,EACT,OAAQA,EACR,IAAKA,EACL,QAASA,CACX,CACF,CACF,EAEME,GAAkB,CACtBvL,EACAkJ,KACe,CAEf,WAAY,GACZ,aAAc,GACd,iBAAkB,GAClB,cAAe,CAAC,EAChB,YAAa,CAAC,EACd,YAAa,KACb,qBAAsB,CAAC,EAEvB,QAAS,IAAM,OAAO,KAAKA,IAAM,WAAW,EAAE,SAAW,EACzD,YAAa,IACXlJ,EAAKuE,GAAU,CACbA,EAAM,aAAe,GACrBA,EAAM,iBAAmB,EAAA,CAC1B,EACH,UAAW,IACTvE,EAAKuE,GAAU,CACbA,EAAM,aAAe,EAAA,CACtB,EACH,WAAY,CAACiH,EAAWxJ,IACtBhC,EAAKuE,GAAU,CACbA,EAAM,cAAciH,GAAaxJ,CAAA,CAClC,EACH,cAAe,CAACwJ,EAAmBC,IACjCzL,EAAKuE,GAAU,CACbA,EAAM,YAAYiH,GAAaC,CAAA,CAChC,EACH,eAAiBC,GACf1L,EAAKuE,GAAU,CACbA,EAAM,YAAcmH,CAAA,CACrB,EACH,gBAAkBF,GAChBxL,EAAKuE,GAAU,CACb,OAAOA,EAAM,YAAYiH,EAAA,CAC1B,EACH,MAAO,IACLxL,EAAKuE,GAAU,SACbA,EAAM,YAAc,GACpBA,EAAM,cAAgB,GACtBA,EAAM,iBAAmB,GACzB,MAAMoH,GAAeC,GAAA3L,EAAAsE,EAAM,YAAN,YAAAtE,EAAiB,gBAAjB,KAAA2L,EAAkC,CAAA,EACvDrH,EAAM,iBAAiB,OAASoH,EAChCpH,EAAM,qBAAuBoH,CAAA,CAC9B,EACH,cAAgBtJ,GACdrC,EAAKuE,GAAU,CACRA,EAAM,aACHA,EAAA,iBAAiB,OAASlC,EAAM,cACtCkC,EAAM,qBAAuBlC,EAAM,eAGrCkC,EAAM,UAAYlC,EAClBkC,EAAM,WAAa,EAAA,CACpB,EACH,eAAiBsH,GAAwC,CAGnD3C,EAAA,EAAM,cAAgB2C,GAC1B7L,EAAKuE,GAAU,CAGbA,EAAM,YAAcsH,CAAA,CACrB,CACH,EACA,cAAe,MAAO7B,GAAkB,WAChC,MAAA6B,EAAc3C,EAAM,EAAA,YAC1B3F,EACEsI,EACA,gFAAA,EAGI,MAAAC,GAAY7L,EAAAiJ,IAAM,YAAN,YAAAjJ,EAAiB,UACnCsD,EACEuI,EACA,mEAAA,EAGF,OAAMC,GAAAH,EAAA1C,EAAI,EAAE,kBAAiB,mBAAvB,YAAA6C,EAAA,KAAAH,EAA0C5B,IAEhD,KAAM,CAAE,MAAAyB,CAAA,EAAU,MAAMK,EAAU,cAChC,IAAI,SAASD,CAAW,EACxB7B,CAAA,EAGF,OAAIyB,GACEvC,IAAE,cAAcc,EAAOyB,CAAK,EACzBA,IAEHvC,EAAA,EAAE,gBAAgBc,CAAK,EACpB,KAEX,EAEA,SAAU,SAAY,OACd,MAAA6B,EAAc3C,EAAM,EAAA,YAC1B3F,EACEsI,EACA,gFAAA,EAGI,MAAAC,GAAY7L,EAAAiJ,IAAM,YAAN,YAAAjJ,EAAiB,UACnCsD,EACEuI,EACA,mEAAA,EAGF,MAAMnN,EAAS,MAAMmN,EAAU,SAAS,IAAI,SAASD,CAAW,CAAC,EACjE,OAAIlN,EAAO,OAAOuK,EAAM,EAAA,eAAevK,EAAO,MAAM,WAAW,EACxDA,CACT,EAEA,OAAQ,IAAM,CACN,MAAAkN,EAAc3C,EAAM,EAAA,YAC1B3F,EACEsI,EACA,gFAAA,EAGFtC,GAAcsC,CAAW,CAC3B,EAEA,UAAW,IAAM,OAAA,WAAI,UAAS5L,EAAAiJ,EAAI,EAAE,cAAN,KAAAjJ,EAAqB,MAAS,GAE5D,iBAAkB,IAAM,OAAA,OAAAA,EAAAiJ,IAAM,cAAN,YAAAjJ,EAAmB,SAE3C,iBAAkB,CAChB,OAAQ,CAAC,EACT,UAAW,CAAC,EACZ,oBAAqB,CAAC,EACtB,qBAAsB,CAAC,EAEvB,SAAWuL,GAAc,CACvBxL,EAAKuE,GAAU,OACb,MAAM7D,GAAUT,EAAAsE,EAAM,iBAAiB,UAAUiH,KAAjC,KAAAvL,EAA+C,EACzDsE,EAAA,iBAAiB,UAAUiH,GAAa9K,EAAU,CAAA,CACzD,CACH,EACA,WAAa8K,GAAc,CAGrBtC,EAAI,IAAM,MAAQA,EAAA,IAAU,QAChClJ,EAAKuE,GAAU,WACb,MAAM7D,GAAUT,EAAAsE,EAAM,iBAAiB,UAAUiH,KAAjC,KAAAvL,EAA+C,EAC/D,GAAIS,EAAU,EAAG,CACT6D,EAAA,iBAAiB,UAAUiH,GAAa9K,EAAU,EACxD,MACF,CAEiB,OAAO,KAAK6D,EAAM,iBAAiB,SAAS,EAAE,KAC5DjF,GAAQkM,EAAU,WAAWlM,CAAG,GAAKA,IAAQkM,CAAA,IAK9C3I,EACE0B,EAAM,iBAAiB,OACvBiH,EACArI,GAAQyI,EAAArH,EAAM,YAAN,YAAAqH,EAAiB,cAAeJ,CAAS,CAAA,EAEnD3I,EACE0B,EAAM,qBACNiH,EACArI,GAAQ4I,EAAAxH,EAAM,YAAN,YAAAwH,EAAiB,cAAeP,CAAS,CAAA,GAI9C,OAAAjH,EAAM,iBAAiB,UAAUiH,EAAA,CACzC,CACH,EACA,SAAWA,GAAcrI,EAAQ+F,IAAM,iBAAiB,OAAQsC,CAAS,EACzE,SAAU,CAACA,EAAWrL,IAAU,CAC9BH,EAAKuE,GAAU,CACb1B,EAAQ0B,EAAM,iBAAiB,OAAQiH,EAAWrL,CAAK,CAAA,CACxD,EACG+I,IAAE,iBAAiB,mBAAmBsC,CAAS,CACrD,EACA,mBAAqBA,GAAc,CACjC,MAAMQ,EAAQ,IACZhM,EAAKuE,GAAU,CACN,OAAAA,EAAM,iBAAiB,qBAAqBiH,GAC5C,OAAAjH,EAAM,iBAAiB,oBAAoBiH,EAAA,CACnD,EACHxL,EAAKuE,GAAU,CACb,MAAM0H,EAAU,IAAI,QAAeC,GAAY,CACvC3H,EAAA,iBAAiB,qBAAqBiH,GAAaU,CAAA,CAC1D,EAAE,KAAKF,CAAK,EACPzH,EAAA,iBAAiB,oBAAoBiH,GAAaS,CAAA,CACzD,CACH,EAEA,iBAAkB,MAAOT,GAAc,CAC/B,MAAAtC,EAAA,EAAM,iBAAiB,oBAAoBsC,EACnD,EAEA,MAAO,CACL,KAAM,CAACA,EAAW/M,IAAS,CACzBuB,EAAKuE,GAAU,CACb4H,EACY5H,EAAM,iBAAiB,OAAQiH,CAAS,EACjD,KAAK/M,CAAI,EACZ0N,EAAmB5H,EAAM,qBAAsBiH,CAAS,EAAE,KAAK/M,CAAI,CAAA,CAEpE,EACGyK,IAAE,iBAAiB,mBAAmBsC,CAAS,CACrD,EAEA,KAAM,CAACA,EAAWtB,EAAQC,IAAW,CACnCnK,EAAKuE,GAAU,CACH6H,GACRD,EAAmB5H,EAAM,iBAAiB,OAAQiH,CAAS,EAC3DtB,EACAC,CAAA,EAEQiC,GACRD,EAAmB5H,EAAM,qBAAsBiH,CAAS,EACxDtB,EACAC,CAAA,EAEQkC,EAAcb,EAAWjH,EAAM,cAAgBjG,GACvD8N,GAAe9N,EAAO4L,EAAQC,CAAM,CAAA,EAE5BkC,EAAcb,EAAWjH,EAAM,YAAcjG,GACrD8N,GAAe9N,EAAO4L,EAAQC,CAAM,CAAA,CACtC,CACD,EACGjB,IAAE,iBAAiB,mBAAmBsC,CAAS,CACrD,EAEA,KAAM,CAACA,EAAWhO,EAAMD,IAAO,CAC7ByC,EAAKuE,GAAU,CACH+H,GACRH,EAAmB5H,EAAM,iBAAiB,OAAQiH,CAAS,EAC3DhO,EACAD,CAAA,EAEQ+O,GACRH,EAAmB5H,EAAM,qBAAsBiH,CAAS,EACxDhO,EACAD,CAAA,EAEQ8O,EAAcb,EAAWjH,EAAM,cAAgBjG,GACvDgO,GAAehO,EAAOd,EAAMD,CAAE,CAAA,EAEtB8O,EAAcb,EAAWjH,EAAM,YAAcjG,GACrDgO,GAAehO,EAAOd,EAAMD,CAAE,CAAA,CAChC,CACD,EACG2L,IAAE,iBAAiB,mBAAmBsC,CAAS,CACrD,EACA,OAAQ,CAACA,EAAW9M,EAAOD,IAAS,CAClCuB,EAAKuE,GAAU,CACHgI,GACRJ,EAAmB5H,EAAM,iBAAiB,OAAQiH,CAAS,EAC3D9M,EACAD,CAAA,EAEQ8N,GACRJ,EAAmB5H,EAAM,qBAAsBiH,CAAS,EACxD9M,EACAD,CAAA,EAGQ4N,EAAcb,EAAWjH,EAAM,cAAgBjG,GACvDiO,GAAiBjO,EAAOI,EAAO,EAAK,CAAA,EAE5B2N,EAAcb,EAAWjH,EAAM,YAAcjG,GACrDiO,GAAiBjO,EAAOI,EAAO,MAAS,CAAA,CAC1C,CACD,EACGwK,IAAE,iBAAiB,mBAAmBsC,CAAS,CACrD,EACA,OAAQ,CAACA,EAAW9M,IAAU,CAC5BsB,EAAKuE,GAAU,CACHiI,GACRL,EAAmB5H,EAAM,iBAAiB,OAAQiH,CAAS,EAC3D9M,CAAA,EAEQ8N,GACRL,EAAmB5H,EAAM,qBAAsBiH,CAAS,EACxD9M,CAAA,EAEQ2N,EAAcb,EAAWjH,EAAM,cAAgBjG,GACvDkO,GAAiBlO,EAAOI,CAAK,CAAA,EAErB2N,EAAcb,EAAWjH,EAAM,YAAcjG,GACrDkO,GAAiBlO,EAAOI,CAAK,CAAA,CAC/B,CACD,EACGwK,IAAE,iBAAiB,mBAAmBsC,CAAS,CACrD,EACA,IAAMA,GAAc,CAClBxL,EAAKuE,GAAU,CACb4H,EAAmB5H,EAAM,iBAAiB,OAAQiH,CAAS,EAAE,MAC7DW,EAAmB5H,EAAM,qBAAsBiH,CAAS,EAAE,IAAI,EACpDa,EAAcb,EAAWjH,EAAM,cAAgBjG,GACvDA,EAAM,IAAI,CAAA,EAEF+N,EAAcb,EAAWjH,EAAM,YAAcjG,GACrDA,EAAM,IAAI,CAAA,CACZ,CACD,EACG4K,IAAE,iBAAiB,mBAAmBsC,CAAS,CACrD,EACA,QAAS,CAACA,EAAWrL,IAAU,CAC7BH,EAAKuE,GAAU,CACb4H,EACY5H,EAAM,iBAAiB,OAAQiH,CAAS,EACjD,QAAQrL,CAAK,EAChBgM,EACY5H,EAAM,qBAAsBiH,CAAS,EAC9C,QAAQrL,CAAK,EACNkM,EAAcb,EAAWjH,EAAM,cAAgBjG,GACvDA,EAAM,QAAQ,EAAK,CAAA,EAEX+N,EAAcb,EAAWjH,EAAM,YAAcjG,GACrDA,EAAM,QAAQ,MAAS,CAAA,CACzB,CACD,CACH,EACA,QAAS,CAACkN,EAAW9M,EAAOD,IAAS,CACnCuB,EAAKuE,GAAU,CACHkI,GACRN,EAAmB5H,EAAM,iBAAiB,OAAQiH,CAAS,EAC3D9M,EACAD,CAAA,EAEQgO,GACRN,EAAmB5H,EAAM,qBAAsBiH,CAAS,EACxD9M,EACAD,CAAA,EAEQ4N,EAAcb,EAAWjH,EAAM,cAAgBjG,GACvDmO,GAAkBnO,EAAOI,EAAOD,CAAI,CAAA,EAE5B4N,EAAcb,EAAWjH,EAAM,YAAcjG,GACrDmO,GAAkBnO,EAAOI,EAAOD,CAAI,CAAA,CACtC,CACD,EACGyK,IAAE,iBAAiB,mBAAmBsC,CAAS,CACrD,CACF,CACF,CACF,GAEakB,GAAmB3F,GAAuB,EACrDuC,GAAM,CAACtJ,EAAKkJ,KAAS,CACnB,MAAO,CAAC,EACR,KAAOpF,GAAW,OACT,OAAA7D,EAAAiJ,EAAA,EAAM,MAAMpF,KAAZ,KAAA7D,EAAuBqL,EAChC,EACA,YAAcxH,GAA2B,CACvC9D,EAAKuE,GAAU,CACb,OAAOA,EAAM,MAAMT,EAAA,CACpB,CACH,EACA,aAAeA,GAA2B,CACpCoF,EAAA,EAAM,MAAMpF,IAChB9D,EAAKuE,GAAU,CACbA,EAAM,MAAMT,GAAUyH,GACnBoB,GAAW3M,EAAKuE,GAAUoI,EAAOpI,EAAM,MAAMT,EAAO,CAAC,EACtD,IAAMoF,EAAI,EAAE,MAAMpF,EAAA,CACpB,CACD,CACH,CAAA,EACA,CACJ,EC9fa8I,EAAe,CAC1B9I,EACAyC,IAEOmG,GAAkBnI,GAAUgC,EAAShC,EAAM,KAAKT,CAAM,CAAC,CAAC,ECIpD+I,EAAyB,CACpC/I,EACAgJ,IACG,CACG,MAAAC,EAAcC,aAAWjJ,EAAmB,EAE9C,GAAAD,EAAQ,MAAO,CAAE,OAAAA,CAAO,EACxB,GAAAiJ,EAAoB,OAAAA,EAExB,MAAM,IAAI,MACR,gCAAgCD,6DAAA,CAEpC,EAEO,SAASG,GAAwB,CACtC,QAAAC,EACA,UAAAC,EACA,OAAArJ,CACF,EAAiE,OAC/D,MAAMsJ,EAAaC,EAAAA,gBACnB,OAAIH,GACGjN,EAAAiN,EAAQ,OAAR,MAAAjN,EAAsB,YAAoBiN,EAAQ,KAChD,KAGJE,GAAA,MAAAA,EAAY,YAGb,OAAOtJ,GAAW,UAAYsJ,EAAW,OACpCA,EAAW,SAAWtJ,EAASsJ,EAAa,KAGlD,CAACD,GAAa,CAACC,EAAW,WAC3BA,EAAW,YAAcD,EAElBC,EAEF,KAZ8B,IAavC,CAEa,MAAAE,GACXC,GACwC,CAClC,MAAAC,EAAWP,GAAwBM,CAAO,EAC1CpJ,EAAWyI,EAAaW,EAAQ,OAAShJ,GAAUA,EAAM,UAAU,EACzE,OAAOH,EAAW,KAAKoJ,GAAA,YAAAA,EAAU,YAAarJ,CAAQ,CACxD,EAEasJ,GAA6B,CAAC,CACzC,OAAA3J,CACF,IAAgC,CAC9B,MAAM4J,EAAUC,EAAAA,aACZ,GAAA,OAAO7J,GAAW,SAAU,CACxB,MAAA8J,EAAU/J,GAAqBC,CAAM,EAGrCpB,EAAQgL,EACX,QAAA,EACA,KAAMhL,GAAUA,EAAM,MAAQkL,KAAWlL,EAAM,IAAI,EACtD,OAAOA,GAAA,YAAAA,EAAO,KAAKkL,EACrB,CAEO,OAAA,IACT,EAEaC,GACXN,GAC6C,CACvC,KAAA,CAAE,OAAAzJ,EAAQ,kBAAAgK,CAAsB,EAAAP,EAChCpJ,EAAWyI,EAAa9I,EAASS,GAAUA,EAAM,UAAU,EAC3DwJ,EAAgBd,GAAwBM,CAAO,EAC/CS,EAA0BP,GAA2BF,CAAO,EAQ9D,OAAApJ,EAAiBC,EAAW,eAC5B2J,GAAA,MAAAA,EAAe,kBACjBxK,EACE,OAAOwK,EAAc,kBAAqB,SAC1C,0DAAA,EAEK3J,EAAW,WAAW2J,EAAc,gBAAgB,GAEzDD,EAA0B1J,EAAW,WAAW0J,CAAiB,EAE9D1J,EAAW,WAAW4J,CAAuB,CACtD,EAEaC,GAAyB,CAAC,CACrC,QAAAf,CACF,IAAyC,CACvC,MAAMgB,EAAaC,EAAAA,gBAIZ,OAHqBjB,EACxBA,EAAQ,QAAU,aAClB,CAAC,CAACgB,EAAW,UAEnB,EAEaE,GAAkB,CAC7BpE,EACA,CAAE,OAAAlG,KACC,CACH,MAAM9B,EAAU4K,EAAa9I,EAASS,GAAUA,EAAM,cAAcyF,EAAM,EACpEqE,EAAkBzB,EAAa9I,EAASS,GAAUA,EAAM,UAAU,EAClEtC,EAAaqM,EAAA,YAChBtM,GAAqBqM,EAAgBrE,EAAOhI,CAAO,EACpD,CAACgI,EAAOqE,CAAe,CAAA,EAElB,MAAA,CAACrM,EAASC,CAAU,CAC7B,EAEasM,GAAgB,CAC3BrO,EACAqN,IACG,CACG,MAAAiB,EAAclB,GAAsBC,CAAO,EAC3ChJ,EAAQqI,EACZW,EAAQ,OACPhJ,GAAUA,EAAM,YAAYrE,EAAA,EAExB,OAAAsO,EAAY,IAAKA,GAAgBA,GAAAA,YAAAA,EAActO,EAAK,EAAE,UAAUqE,CAAK,CAC9E,EAEakK,GAAiBlB,GAAsC,CAC5D,KAAA,CAAE,OAAAzJ,CAAW,EAAAyJ,EACnB,OAAOX,EAAa9I,EAASS,GAAUA,EAAM,eAAe,CAC9D,EAEamK,GAAiC,CAC5C5K,EACAkG,IAEA4C,EAAa9I,EAASS,GAAUpB,EAAQoB,EAAM,qBAAsByF,CAAK,CAAC,EAE/D2E,GAAuB,CAClCzO,EACAqN,IACG,CACG,MAAAqB,EAAgBf,GAAwBN,CAAO,EAC/ChJ,EAAQmK,GAA+BnB,EAAQ,OAAQrN,CAAI,EAE1D,OAAA0O,EAAc,IAAKnN,GAAQ0B,EAAQ1B,EAAKvB,CAAI,CAAC,EAAE,UAAUqE,CAAK,CACvE,EAEasK,GAA2B/K,GACtC8I,EAAa9I,EAASS,GAAUA,EAAM,YAAY,EAEvCuK,GAAsBhL,GACjC8I,EAAa9I,EAASS,GAAUA,EAAM,QAAA,CAAS,EAEpCwK,GAA+BjL,GAC1C8I,EAAa9I,EAASS,GAAUA,EAAM,gBAAgB,EAE3CyK,GAAoBlL,GAC/B8I,EAAa9I,EAASS,GAAUA,EAAM,aAAa,EAExC0K,GAAenL,GAC1B8I,EAAa9I,EAASS,GAAUA,EAAM,QAAQ,EAE1C2K,GAAe,IAAM,IAAM,CAAC,EACrBC,GAA2BrL,GACtC8I,EACE9I,EACCS,GAAU,SAAA,OAAAqH,GAAA3L,EAAAsE,EAAM,YAAN,YAAAtE,EAAiB,uBAAjB,KAAA2L,EAAyCsD,GACtD,EAEIE,GAAuB,CAAA,EAChBC,GAA0BvL,GACrC8I,EACE9I,EACCS,GAAU,SAAA,OAAAqH,GAAA3L,EAAAsE,EAAM,YAAN,YAAAtE,EAAiB,gBAAjB,KAAA2L,EAAkCwD,GAC/C,EAEWE,GAAgB,CAAC,CAAE,OAAAxL,CAAO,IACrC8I,EAAa9I,EAASS,GAAUA,EAAM,UAAU,EAErCgL,GAAoBzL,GAC/B8I,EAAa9I,EAASS,GAAUA,EAAM,aAAa,EAExCiL,GAAkB1L,GAC7B8I,EAAa9I,EAASS,GAAUA,EAAM,WAAW,EAEtCkL,GAAqB3L,GAChC8I,EAAa9I,EAASS,GAAUA,EAAM,cAAc,EAEzCmL,GAAuB5L,GAClC8I,EAAa9I,EAASS,GAAUA,EAAM,gBAAgB,EAE3CoL,GAAiB7L,GAC5B8I,EAAa9I,EAASS,GAAUA,EAAM,MAAM,EAEjCqL,GAAqB9L,GAChC8I,EAAa9I,EAASS,UAAU,OAAAtE,EAAAsE,EAAM,YAAN,YAAAtE,EAAiB,OAAM,EAE5C4P,GAAwB/L,GACnC8I,EAAa9I,EAASS,UAAU,OAAAtE,EAAAsE,EAAM,YAAN,YAAAtE,EAAiB,UAAS,EAE/C6P,GAAiBhM,GAC5B8I,EAAa9I,EAASS,GAAUA,EAAM,SAAS,EC/MpCwL,GAA0B,CACrCxC,EACAvD,IACG,CACH,MAAM7J,EAAQyM,EAAaW,EAAQ,OAAShJ,GAC1CA,EAAM,iBAAiB,SAASyF,CAAK,CAAA,EAEjCgG,EAAiBpD,EACrBW,EAAQ,OACPhJ,GAAUA,EAAM,UAAA,EAEb9D,EAAekO,GAAqB3E,EAAOuD,CAAO,EAExD,OAAOyC,EAAiB7P,EAAQM,CAClC,EAEawP,GAA6B,CACxC1C,EACAvD,IACG,CACH,MAAMkG,EAAgBtD,EACpBW,EAAQ,OACPhJ,GAAUA,EAAM,iBAAiB,qBAAqByF,EAAA,EAEzDmG,EAAAA,UAAU,IAAM,CACED,GAAA,MAAAA,GAAA,EACf,CAACA,CAAa,CAAC,EAElB,MAAME,EAAWxD,EACfW,EAAQ,OACPhJ,GAAUA,EAAM,iBAAiB,QAAA,EAE9B8L,EAAazD,EACjBW,EAAQ,OACPhJ,GAAUA,EAAM,iBAAiB,UAAA,EAEpC4L,EAAAA,UAAU,KACRC,EAASpG,CAAK,EACP,IAAMqG,EAAWrG,CAAK,GAC5B,CAACuD,EAAQ,OAAQvD,EAAOoG,EAAUC,CAAU,CAAC,CAClD,EAEaC,GAAuB,CAClC/C,EACAvD,IACG,CACHiG,GAA2B1C,EAASvD,CAAK,EAEzC,MAAMuG,EAA0B3D,EAC9BW,EAAQ,OACPhJ,GAAUA,EAAM,iBAAiB,QAAA,EAE9BiM,EAAWlC,EAAA,YACdnO,GAAmBoQ,EAAwBvG,EAAO7J,CAAK,EACxD,CAAC6J,EAAOuG,CAAuB,CAAA,EAK1B,MAAA,CAFOR,GAAwBxC,EAASvD,CAAK,EAErCwG,CAAQ,CACzB,EAEaC,GAA8B3M,GAA2B,CACpE,MAAM0M,EAAW5D,EACf9I,EACCS,GAAUA,EAAM,iBAAiB,QAAA,EAE7B,OAAA+J,EAAA,YACL,CAACtE,EAAe7J,IAAmBqQ,EAASxG,EAAO7J,CAAK,EACxD,CAACqQ,CAAQ,CAAA,CAEb,EC/CaE,GAAmB5M,GAAoB,CAC5C,MAAAiJ,EAAcF,EAAuB/I,EAAQ,iBAAiB,EAC7D,OAAA+K,GAAwB9B,EAAY,MAAM,CACnD,EAOa4D,GAAc7M,GAAoB,CACvC,MAAAiJ,EAAcF,EAAuB/I,EAAQ,YAAY,EACxD,OAAAgL,GAAmB/B,EAAY,MAAM,CAC9C,EAoCa6D,GAAW,CACtB1Q,EACA2Q,IAiBe,CACf,KAAM,CAAE,OAAQC,EAAgB,mBAAAC,CAAmB,EAAIF,GAAA,KAAAA,EAAW,CAAA,EAC5D9D,EAAcF,EAAuBiE,EAAgB,UAAU,EAE/DrQ,EAAekO,GAAqBzO,EAAM6M,CAAW,EACrD,CAAC/K,EAASC,CAAU,EAAImM,GAAgBlO,EAAM6M,CAAW,EACzDtB,EAAQ8C,GAAcrO,EAAM6M,CAAW,EACvCjL,EAAa2M,GAAc1B,CAAW,EAEtC7K,EAAmB6M,GAA4BhC,EAAY,MAAM,EACjEiE,EAAgBhC,GAAiBjC,EAAY,MAAM,EACnDkE,EAAuB9B,GAAwBpC,EAAY,MAAM,EAEvEoD,OAAAA,EAAAA,UAAU,IAAM,CACV,GAAAY,EACK,OAAAE,EAAqB/Q,EAAM6Q,CAAkB,CACrD,EAAA,CAACA,EAAoB7Q,EAAM+Q,CAAoB,CAAC,EAErCC,EAAAA,QAAoB,IAAM,CACtC,MAAMC,EAAU,CACd,MAAA1F,EACA,WAAY,IAAM3J,EAAW5B,CAAI,EACjC,SAAU,IAAM,CACd8Q,EAAc9Q,CAAI,CACpB,EACA,aAAAO,EACA,QAAAuB,EACA,WAAAC,CAAA,EAEImP,EAAgBvP,GAAoB,CACxC,GAAGsP,EACH,KAAAjR,EACA,iBAAAgC,EACA,mBAAoB2O,GAAA,YAAAA,EAAS,kBAAA,CAC9B,EACM,MAAA,CACL,GAAGM,EACH,cAAAC,CAAA,CACF,EACC,CACD3F,EACA3J,EACArB,EACAuB,EACAC,EACA/B,EACAgC,EACA2O,GAAA,YAAAA,EAAS,mBACTG,CAAA,CACD,CAGH,EAEaK,GAAkB,CAAInR,EAAc4D,IAAoB,CAC7D,MAAAyJ,EAAUV,EAAuB/I,EAAQ,iBAAiB,EAC1D,CAAC3D,EAAOqQ,CAAQ,EAAIF,GAAqB/C,EAASrN,CAAI,EACrD,MAAA,CAACC,EAAYqQ,CAA8B,CACpD,EAEac,GAA4BxN,GAAoB,CACrD,MAAAyJ,EAAUV,EAAuB/I,EAAQ,iBAAiB,EACzD,OAAA2M,GAA2BlD,EAAQ,MAAM,CAClD,ECjKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAmBA,MAAMgE,GAAO,CAACnT,EAAMoT,EAAO,KAAO,CAChC,IAAIC,EAAe,OAAOD,GAAS,SAAW,CAC5C,OAAQA,CACT,EAAGA,EACAE,EAAU,IAAI,QAAQD,EAAa,OAAO,EAE9C,OAAKC,EAAQ,IAAI,cAAc,GAC7BA,EAAQ,IAAI,eAAgB,iCAAiC,EAGxD,IAAI,SAAS,KAAK,UAAUtT,CAAI,EAAG,CAAE,GAAGqT,EAC7C,QAAAC,CACJ,CAAG,CACH,ECRgB,SAAAC,GACdlG,EACAmG,EACAJ,EACA,CACO,OAAAD,GACL,CACE,YAAa9F,EAAM,YACnB,UAAWA,EAAM,UACjB,iBAAAmG,EACA,OAAQnG,EAAM,MAChB,EACA,CAAE,OAAQ,IAAK,GAAG+F,CAAK,CAAA,CAE3B,CAMa,MAAAK,GAAkB,CAC7B/N,EACA8K,KACkB,CAClB,CAAC/K,GAAqBC,CAAM,GAAI8K,CAClC,GC/CO,MAAMkD,EAA0B,CAAhC,aAAA,CACG,KAAA,SAA8B,IAEhC,KAAA,IAAA,CAACxS,EAAUa,IAAiB,CAC5B,KAAK,KAAK,IAAIb,CAAG,EACnB,KAAK,KAAK,IAAIA,CAAG,EAAG,KAAKa,CAAK,EAE9B,KAAK,KAAK,IAAIb,EAAK,CAACa,CAAK,CAAC,CAC5B,EAGF,KAAA,OAAUb,GAAa,CAChB,KAAA,KAAK,OAAOA,CAAG,CAAA,EAGb,KAAA,OAAA,CAACA,EAAUa,IAAiB,CACnC,GAAI,CAAC,KAAK,KAAK,IAAIb,CAAG,EAAG,OACzB,MAAMhB,EAAQ,KAAK,KAAK,IAAIgB,CAAG,EACzBZ,EAAQJ,EAAM,QAAQ6B,CAAK,EAC7BzB,IAAU,IAAUJ,EAAA,OAAOI,EAAO,CAAC,EACnCJ,EAAM,SAAW,GAAQ,KAAA,KAAK,OAAOgB,CAAG,CAAA,EAG9C,KAAA,OAAUA,GAAsB,OAC9B,OAAOW,EAAA,KAAK,KAAK,IAAIX,CAAG,IAAjB,KAAAW,EAAsB,CAAA,CAAC,EAGtB,KAAA,QAAA,IAAwC,KAAK,KAAK,QAAQ,EAE3D,KAAA,OAAA,IAAiC,KAAK,KAAK,OAAO,EAE3D,KAAA,IAAOX,GAAsB,KAAK,KAAK,IAAIA,CAAG,CAAA,CAChD,CAEO,MAAMyS,GAAmB,IAAkB,CAC1C,MAAAC,EAAMC,SAAyC,IAAI,EACzD,OAAO3D,cAAY,KACb0D,EAAI,UACJA,EAAA,QAAU,IAAIF,IACXE,EAAI,SACV,CAAE,CAAA,CACP,ECzCgB,SAAAE,GAAkBC,EAAuBC,EAAsB,CACvE,MAAAC,EAAYJ,SAAO,EAAK,EAC9B9B,EAAAA,UAAU,IAAM,CACVgC,IACFE,EAAU,QAAU,IAGlB,CAACF,GAAgBE,EAAU,UAC7BA,EAAU,QAAU,GACXD,IACX,CACD,CACH,CCFa,MAAAE,GACXC,GAEQpS,GAAa,CACnBoS,EAAK,OAAO,OAAO,EAAE,QAASP,GAAQ,CAChC,OAAOA,GAAQ,WACjBA,EAAI7R,CAAK,EACA6R,GAAO,OACfA,EAAyC,QAAU7R,EACtD,CACD,CAAA,EAIQqS,GACX,OAAO,QAAW,YAAcC,EAAAA,gBAAkBtC,EAAAA,UAEvCuC,GAAwBjU,GAAe,CAC5C,MAAAuT,EAAMC,SAAUxT,CAAI,EACpBkU,EAAWX,EAAI,UAAYvT,GAAQmU,GAASZ,EAAI,QAASvT,CAAI,EACnE0R,OAAAA,EAAAA,UAAU,IAAM,CACTwC,IACHX,EAAI,QAAUvT,EAChB,CACD,EACMkU,EAAWX,EAAI,QAAUvT,CAClC,ECoDMoU,GAAmBC,GAAwB,IAAI,SAASA,CAAE,EAEhE,SAASC,GAAW5S,EAAyC,CAC3D,OAAOA,IAAU,IACnB,CAEA,MAAM6S,GAAyB,CAC7BxE,EACAyE,EACApH,IACG,OACG,MAAAqH,EAAe,CAAC,GAAGrH,EAAY,QAAQ,EAC1C,IAAKiH,GAAO,CACX,MAAMK,EAAQL,aAAc,cAAgBA,EAAG,GAAKA,EAChD,OAAAK,aAAiB,aAAe,SAAUA,EACpCA,EAAc,KACjB,IAAA,CACR,EACA,OAAOJ,EAAO,EACd,OAAQ7S,GAASA,KAAQsO,CAAW,EACjC4E,EAAqBC,EAAOH,CAAY,EAE9C,UAAW1H,KAAa4H,EAAoB,CACtC,GAAAH,EAAoB,IAAIzH,CAAS,EAAG,CACtCyH,EAAoB,OAAOzH,CAAS,EAAE,QAAS8H,GAAY,CACjDA,GAAA,CACT,EACD,KACF,CAEA,MAAMC,EAAO1H,EAAY,SAAS,UAAUL,CAAS,EACrD,GAAI,EAAC+H,EAEL,IAAIA,aAAgB,cAAe,CACjC,MAAMC,GACJvT,EAAA,CAAC,GAAGsT,CAAI,EACL,OACE9U,GAAmCA,aAAgB,gBAAA,EAErD,KAAMA,GAASA,EAAK,QAAU8U,EAAK,KAAK,IAJ3C,KAAAtT,EAIgDsT,EAAK,GACnD,GAAAC,GAAiBA,aAAyB,iBAAkB,CAC9DA,EAAc,MAAM,EACpB,KACF,CACF,CAEA,GAAID,aAAgB,YAAa,CAC/B,GAAIA,aAAgB,kBAAoBA,EAAK,OAAS,SACpD,SAGFA,EAAK,MAAM,EACX,KACF,EACF,CACF,EAEME,GAAaC,GAAyC,CAE1D,KAAM,CAACC,CAAQ,EAAIC,EAAAA,SAAS,IAAM,OAAO,yBAAyB,CAAC,EACnE,OAAOF,GAAA,KAAAA,EAAcC,CACvB,EAMME,GAAe,CAAC,CACpB,iBAAAC,EACA,QAAAC,CACF,IAGM,CACJ,MAAM5B,EAAezB,KACfsD,EAAUrD,KAChB,OAAAuB,GAAkBC,EAAc,IAAM,OAChC6B,GAAWF,KACb7T,EAAA8T,EAAQ,UAAR,MAAA9T,EAAiB,QACnB,CACD,EACM,IACT,EAEA,SAASgU,GAAiCC,EAAa,CACrD,IAAIC,EAAmB,GAChB,OAAA,IAAI,MAAMD,EAAO,CACtB,IAAK,CAACE,EAAQvT,IACRA,IAAS,iBACJ,IAAM,CACQsT,EAAA,EAAA,EAInBtT,IAAS,mBACJsT,EAGFC,EAAOvT,EAChB,CACD,CACH,CAaO,SAASwT,GAAwB,CACtC,UAAAvI,EACA,SAAAwI,EACA,SAAAC,EACA,QAAArH,EACA,OAAAsH,EACA,cAAeC,EACf,QAASC,EACT,QAAAC,EACA,UAAAxH,EACA,iBAAA2G,EAAmB,GACnB,oBAAAc,EACA,OAAAC,EACA,QAAAlQ,EACA,GAAAmQ,KACGlS,CACL,EAAwB,QAChB,MAAAkB,EAAS2P,GAAUqB,CAAE,EACrBC,EAAwBrC,GAAkB+B,CAAkB,EAC5DO,EAAe9D,EAAA,QACnB,KAAO,CACL,OAAApN,EACA,OAAA0Q,EACA,UAAArH,EACA,kBAAmB4H,EACnB,QAAA7H,CAAA,GAEF,CAACsH,EAAQtH,EAASpJ,EAAQiR,EAAuB5H,CAAS,CAAA,EAEtD8H,EAAehI,GAAwB+H,CAAY,EACnDE,EAAuBzH,GAA2BuH,CAAY,EAC9DG,GAAsBlH,GAAuB+G,CAAY,EACzDjB,EAAU9B,SAAwB,IAAI,EACtCmD,IAAOnV,GAAAiN,GAAA,YAAAA,EAAS,OAAT,KAAAjN,GAAiBoV,OAExBC,GAASC,EAAAA,YACTC,EAAiB/F,GAAkB3L,CAAM,EACzC2R,GAAgB7I,EAAa9I,EAASS,GAAUA,EAAM,aAAa,EACnEmR,GAAQ9I,EAAa9I,EAASS,GAAUA,EAAM,KAAK,EACnDoR,GAAc/I,EAAa9I,EAASS,GAAUA,EAAM,WAAW,EAC/DqR,GAAYhJ,EAAa9I,EAASS,GAAUA,EAAM,SAAS,EAC3DsR,GAAgBjJ,EAAa9I,EAASS,GAAUA,EAAM,aAAa,EACnEuR,GAAwBlJ,EAC5B9I,EACCS,GAAUA,EAAM,cAAA,EAEbwR,GAAcrJ,GAAkBnI,GAAUA,EAAM,WAAW,EAC3DyR,GAAetJ,GAAkBnI,GAAUA,EAAM,YAAY,EAE7D0O,EAAsBlB,KACtBd,GACJ3C,EAAA,YACE,CAAC9C,EAAW8H,KACUL,IAAE,IAAIzH,EAAW8H,CAAO,EACrC,IAAM,CACSL,IAAE,OAAOzH,EAAW8H,CAAO,CAAA,GAGnD,CAACL,CAAmB,CAAA,EAKxBR,GAAgB,KACduD,GAAalS,CAAM,EACZ,IAAMiS,GAAYjS,CAAM,GAC9B,CAACiS,GAAajS,EAAQkS,EAAY,CAAC,EAEtCvD,GAAgB,IAAM,OACNoD,GAAA,CACZ,OAAArB,EACA,eAAevU,EAAA8U,GAAA,KAAAA,EAAyBG,IAAzB,KAAAjV,EAAiD,CAAC,EACjE,UAAAkN,EACA,qBAAA8D,GACA,UAAAnF,CAAA,CACD,CAAA,EACA,CACD0I,EACAO,EACA9D,GACA9D,EACA0I,GACAX,EACApJ,CAAA,CACD,EAED2G,GAAgB,IAAM,CACpBqD,GAAsB/B,EAAQ,OAAO,CAAA,EACpC,CAAC+B,EAAqB,CAAC,EAE1B3F,EAAAA,UAAU,IAAM,OACCqF,GAAAvV,EAAAgV,GAAA,YAAAA,EAAc,cAAd,KAAAhV,EAA6B,CAAA,CAAE,GAC7C,CAACgV,GAAA,YAAAA,EAAc,YAAaO,EAAgBC,EAAa,CAAC,EAE7DvD,GAAkBiD,GAAqB,IAAM,CACjCS,IAAA,CACX,EAED,MAAMK,GAAe,MACnB/Q,EACAkP,EACA8B,KACG,CACSP,KACZ,MAAMlM,EAAYyM,GAAY,UACxBC,GAAqBtD,GAAgB3N,EAAE,aAAa,EACtDuE,GAAA,MAAAA,EAAW,MACb0M,GAAmB,OAAO1M,EAAU,KAAMA,EAAU,KAAK,EAG3D,MAAM9K,GAAS,MAAMmN,EAAU,SAASqK,EAAkB,EAC1D,GAAIxX,GAAO,MACM6W,EAAA7W,GAAO,MAAM,WAAW,EAC7BiX,KACLhB,GACH5B,GACErU,GAAO,MAAM,YACbsU,EAAoB,EACpBc,EAAQ,OAAA,MAGP,CACLyB,EAAe,CAAE,CAAA,EACX,MAAAY,GAAanC,GAAe/O,CAAC,EAEnC,GADM,MAAAoP,GAAA,YAAAA,EAAW3V,GAAO,KAAMyX,KAC1BA,GAAW,iBAAkB,CACrBR,KACV,MACF,CAOI1I,EAAiBA,EAAA,OAAOzD,GAAavE,EAAE,aAAa,EAEtDoQ,GAAO7L,GAAa2K,EAAQ,CAC1B,QAAAzP,EACA,QAAS8E,GAAA,YAAAA,EAAW,aAA6BoL,CAAA,CAClD,CACL,CAAA,EAGF,OACGwB,EAAA,QAAA,cAAAjB,GAAA,CACC,IAAK9C,GAAU,CAACyB,EAASW,CAAW,CAAC,EACpC,GAAG9R,EACJ,GAAAkS,EACA,OAAAN,EACA,OAAAK,EACA,QAAAlQ,EACA,SAAWO,GAAM,CACfA,EAAE,eAAe,EACjB+Q,GACE/Q,EACAA,EAAE,cACDA,EAAiC,WAAA,CAEtC,EACA,QAAUgP,GAAU,CAClBS,GAAA,MAAAA,EAAUT,GACN,CAAAA,EAAM,kBACJwB,IACR,CAEA,EAAAW,UAAA,cAACtS,GAAoB,SAApB,CAA6B,MAAOiR,CAAA,kDAEhCqB,EAAA,QAAA,cAAAxC,GAAA,CAAa,QAAAE,EAAkB,iBAAAD,CAAoC,CAAA,EACnE3G,GACEkJ,UAAA,cAAA,QAAA,CAAM,KAAK,SAAS,MAAOlJ,EAAW,KAAK,WAAY,CAAA,EAEzD2H,GAAOuB,UAAA,cAAA,QAAA,CAAM,KAAK,SAAS,MAAOvB,EAAI,KAAMnR,CAAA,CAAe,EAC3D4Q,CACH,CACF,CACF,CAEJ,CC3Xa,MAAA+B,GAAyBC,GAA6B,CAC3D,MAAAC,EAAM,IAAI1E,GACR,OAAAyE,EAAA,QAAQ,CAAC,CAACjX,EAAKa,CAAK,IAAMqW,EAAI,IAAIlX,EAAKa,CAAK,CAAC,EAC9C,CAAC,GAAGqW,EAAI,QAAA,CAAS,EAAE,OACxB,CAAChY,EAAK,CAACc,EAAKa,CAAK,IACfsW,GAAMjY,EAAKc,EAAKa,EAAM,SAAW,EAAIA,EAAM,GAAKA,CAAK,EACvD,CAAC,CAAA,CAEL,ECNMuW,GAAsBtY,GAGtB,YAAaA,GAAQ,OAAOA,EAAK,SAAY,WACxCkY,GAAsB,CAAC,GAAGlY,EAAK,QAAA,CAAS,CAAC,EAC3CkY,GAAsB,OAAO,QAAQlY,CAAI,CAAC,EAG7CuY,GAAsBvY,GAC1BwY,GAAOxY,EAAM,CAACuF,CAAa,CAAC,EAOvB,SAASkT,GACd/K,EACc,CACP,MAAA,CACL,SAAU,MAAO3L,GAAU,CACnB,MAAA/B,EAAOsY,GAAmBvW,CAAK,EAC/BxB,EAAS,MAAMmN,EAAU,SAAS6K,GAAmBvY,CAAI,CAAC,EAEhE,OAAIO,EAAO,MACF,CACL,KAAM,OACN,MAAO,CACL,YAAaA,EAAO,MACpB,UAAWP,EAAK,UAChB,OAAQA,EAAKuF,EACf,EACA,cAAevF,EACf,OAAQA,EAAKuF,EAAA,EAIV,CACL,KAAMhF,EAAO,KACb,MAAO,OACP,cAAeP,EACf,OAAQA,EAAKuF,EAAA,CAEjB,EACA,cAAe,CAACvF,EAAgC4L,IAC9C8B,EAAU,cAAc4K,GAAmBtY,CAAI,EAAG4L,CAAK,CAAA,CAE7D,CCPa,MAAA8M,GAAgBhT,GAA+B,CACpD,MAAAiJ,EAAcF,EAAuB/I,EAAQ,cAAc,EAC3DqO,EAAetD,GAAwB9B,EAAY,MAAM,EACzD7K,EAAmB6M,GAA4BhC,EAAY,MAAM,EACjEgK,EAAgBxH,GAAiBxC,EAAY,MAAM,EACnDiH,EAAUlF,GAAmB/B,EAAY,MAAM,EAC/CyH,EAAS5E,GAAkB7C,EAAY,MAAM,EAC7CI,EAAY0C,GAAqB9C,EAAY,MAAM,EAEnDiK,EAAsB3H,GAAuBtC,EAAY,MAAM,EAE/DkK,EADqBpJ,GAAwBd,CAAW,EAEzC,UAAUiK,CAAmB,EAE5CE,EAAuB1H,GAAezC,EAAY,MAAM,EAExDoK,EADmB7J,GAAsBP,CAAW,EACb,UAAUmK,CAAoB,EAEpE,OAAAhG,EAAA,QACL,KAAO,CACL,OAAAsD,EACA,UAAArH,EACA,cAAe8J,EACf,YAAaE,GAAA,KAAAA,EAAuB,CAAC,EACrC,iBAAAjV,EACA,aAAAiQ,EACA,cAAA4E,EACA,QAAA/C,CAAA,GAEF,CACEQ,EACAtS,EACA+U,EACAE,EACAhF,EACA6B,EACA7G,EACA4J,CACF,CAAA,CAEJ,EA+CaK,GAAkBtT,GAAiC,CACxD,MAAAiJ,EAAcF,EAAuB/I,EAAQ,gBAAgB,EAC7D7B,EAAaqN,GAAcvC,CAAW,EACtCiE,EAAgBhC,GAAiBjC,EAAY,MAAM,EACnDhL,EAAWkN,GAAYlC,EAAY,MAAM,EACzCjL,EAAa2M,GAAc1B,CAAW,EACtCyI,EAAiB/F,GAAkB1C,EAAY,MAAM,EACrD2I,EAAQhG,GAAoB3C,EAAY,MAAM,EAC9CuI,EAAS3F,GAAc5C,EAAY,MAAM,EACzCsK,EAAYvH,GAAc/C,EAAY,MAAM,EAC3C,OAAAmE,EAAA,QACL,KAAO,CACL,WAAAjP,EACA,cAAA+O,EACA,WAAAlP,EACA,SAAAC,EACA,eAAgB,IAAMyT,EAAe,EAAE,EACvC,MAAAE,EACA,OAAAJ,EACA,UAAA+B,CAAA,GAEF,CACEvV,EACA4T,EACAF,EACAvT,EACAqT,EACAvT,EACAiP,EACAqG,CACF,CAAA,CAEJ,ECtEaC,GAAkBxT,GAAsC,CAE7D,MAAAyJ,EAAUV,EAAuB/I,EAAQ,gBAAgB,EACzDS,EAAQuS,GAAahT,CAAM,EAC3B,CACJ,WAAYyT,EACZ,WAAAtV,EACA,cAAA+O,EACA,eAAAwG,EACA,SAAAzV,EACA,MAAA2T,EACA,OAAAJ,EACA,UAAA+B,CAAA,EACED,GAAetT,CAAM,EAEnBmN,EAAuB9B,GAAwB5B,EAAQ,MAAM,EAE7DzL,EAAawM,EAAA,YACjB,IAAIvO,IAAoB,CAChBA,EAAA,QAASG,GAAS,CACtBqX,EAAmBrX,CAAI,CAAA,CACxB,CACH,EACA,CAACqX,CAAkB,CAAA,EAGd,OAAArG,EAAA,QACL,KAAO,CACL,GAAG3M,EACH,gBAAiBtC,EACjB,cAAA+O,EACA,WAAAlP,EACA,qBAAAmP,EACA,eAAAuG,EACA,SAAAzV,EACA,MAAA2T,EACA,OAAAJ,EACA,UAAA+B,CAAA,GAEF,CACEG,EACA1V,EACAmP,EACAyE,EACAzT,EACAsC,EACA+Q,EACAvT,EACAiP,EACAqG,CACF,CAAA,CAEJ,EC7HMI,GAAwB,CAC5BlK,EACAvD,EACA7H,IACG,CACG,MAAAhC,EAAQwO,GAAqB3E,EAAOuD,CAAO,EACjD0C,GAA2B1C,EAASvD,CAAK,EACnC,MAAA9H,EAAmB6M,GAA4BxB,EAAQ,MAAM,EAC7DyD,EAAgBhC,GAAiBzB,EAAQ,MAAM,EAC/C9B,EAAQ8C,GAAcvE,EAAOuD,CAAO,EAEpCmK,EAAkE,CACtE,QAAS,WACT,cAAe,WACf,GAAGvV,CAAA,EAGCG,EAAWJ,EACbwV,EAA2B,cAC3BA,EAA2B,QAEzBC,EAAgBrJ,EAAAA,YAAY,IAAM,CAClChM,IAAa,YACf0O,EAAchH,CAAK,CAEpB,EAAA,CAAC1H,EAAU0H,EAAOgH,CAAa,CAAC,EAEnCzN,EACyBpD,GAAU,MAAQ,MAAM,QAAQA,CAAK,EAC5D,sCAAsC6J,wCAAA,EAGxC,MAAMiB,EAAM2B,EACVW,EAAQ,OACPhJ,GAAUA,EAAM,iBAAiB,KAAA,EAG9B4M,EAAUD,EAAA,QACd,KAAO,CACL,KAAOzS,GAAc,CACfwM,EAAA,KAAKjB,EAAOvL,CAAI,EACNkZ,GAChB,EACA,KAAM,CAACzN,EAAgBC,IAAmB,CACpCc,EAAA,KAAKjB,EAAOE,EAAQC,CAAM,EAChBwN,GAChB,EACA,KAAM,CAACna,EAAcD,IAAe,CAC9B0N,EAAA,KAAKjB,EAAOxM,EAAMD,CAAE,EACVoa,GAChB,EACA,OAAQ,CAACjZ,EAAeyB,IAAe,CACjC8K,EAAA,OAAOjB,EAAOtL,EAAOyB,CAAK,EAChBwX,GAChB,EACA,QAAUxX,GAAe,CACnB8K,EAAA,QAAQjB,EAAO7J,CAAK,EACVwX,GAChB,EACA,OAASjZ,GAAkB,CACrBuM,EAAA,OAAOjB,EAAOtL,CAAK,EACTiZ,GAChB,EACA,IAAK,IAAM,CACT1M,EAAI,IAAIjB,CAAK,EACC2N,GAChB,EACA,QAAS,CAACjZ,EAAeyB,IAAe,CAClC8K,EAAA,QAAQjB,EAAOtL,EAAOyB,CAAK,EACjBwX,GAChB,CAAA,GAEF,CAAC1M,EAAKjB,EAAO2N,CAAa,CAAA,EAKrB,MAAA,CAFYzG,EAAAA,QAAQ,IAAM/Q,GAAA,KAAAA,EAAS,CAAA,EAAI,CAACA,CAAK,CAAC,EAEjCgR,EAAS1F,CAAK,CACpC,EAkBO,SAASmM,GACd1X,EACA,CAAE,OAAA4D,EAAQ,mBAAA3B,CAAmB,EAA0B,CAAA,EACvD,CACM,MAAAoL,EAAUV,EAAuB/I,EAAQ,YAAY,EAEpD,OAAA2T,GAAsBlK,EAASrN,EAAMiC,CAAkB,CAKhE,CAaO,MAAM0V,GAAa,CAAC,CACzB,KAAA3X,EACA,SAAAqU,EACA,OAAAzQ,EACA,mBAAA3B,CACF,IAAuB,CACf,MAAAoL,EAAUV,EAAuB/I,EAAQ,YAAY,EACrD,CAAC3D,EAAOgR,EAAS1F,CAAK,EAAIgM,GAC9BlK,EACArN,EACAiC,CAAA,EAEF,OAAUkU,UAAA,cAAAA,EAAA,QAAA,SAAA,KAAA9B,EAASpU,EAAOgR,EAAS1F,CAAK,CAAE,CAC5C"}
1
+ {"version":3,"file":"remix-validated-form.cjs.js","sources":["../../../node_modules/remeda/dist/es/purry.js","../../../node_modules/remeda/dist/es/_reduceLazy.js","../../../node_modules/remeda/dist/es/equals.js","../../../node_modules/remeda/dist/es/omit.js","../../../node_modules/remeda/dist/es/omitBy.js","../../../node_modules/remeda/dist/es/pathOr.js","../../../node_modules/remeda/dist/es/uniq.js","../src/internal/logic/getCheckboxChecked.ts","../src/internal/logic/getRadioChecked.ts","../src/internal/getInputProps.ts","../../setGet/src/stringToPathArray.ts","../../setGet/src/setPath.ts","../../setGet/src/getPath.ts","../../../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../src/internal/constants.ts","../src/internal/formContext.ts","../src/internal/hydratable.ts","../../../node_modules/zustand/esm/vanilla.js","../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../../../node_modules/use-sync-external-store/shim/index.js","../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../../../node_modules/use-sync-external-store/shim/with-selector.js","../../../node_modules/zustand/esm/index.js","../../../node_modules/immer/dist/immer.esm.js","../../../node_modules/zustand/esm/middleware/immer.js","../src/internal/logic/requestSubmit.ts","../src/internal/state/arrayUtil.ts","../src/internal/state/createFormStore.ts","../src/internal/state/storeHooks.ts","../src/internal/hooks.ts","../src/internal/state/controlledFields.ts","../src/hooks.ts","../../../node_modules/@remix-run/server-runtime/dist/esm/responses.js","../src/server.ts","../src/internal/MultiValueMap.ts","../src/internal/submissionCallbacks.ts","../src/internal/util.ts","../src/ValidatedForm.tsx","../src/internal/flatten.ts","../src/validation/createValidator.ts","../src/unreleased/formStateHooks.ts","../src/userFacingFormContext.ts","../src/internal/state/fieldArray.tsx"],"sourcesContent":["var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n/**\n * Creates a function with `data-first` and `data-last` signatures.\n *\n * `purry` is a dynamic function and it's not type safe. It should be wrapped by a function that have proper typings.\n * Refer to the example below for correct usage.\n *\n * @param fn the function to purry.\n * @param args the arguments\n * @signature R.purry(fn, arguments);\n * @example-raw\n * function _findIndex(array, fn) {\n * for (let i = 0; i < array.length; i++) {\n * if (fn(array[i])) {\n * return i;\n * }\n * }\n * return -1;\n * }\n *\n * // data-first\n * function findIndex<T>(array: T[], fn: (item: T) => boolean): number;\n *\n * // data-last\n * function findIndex<T>(fn: (item: T) => boolean): (array: T[]) => number;\n *\n * function findIndex() {\n * return R.purry(_findIndex, arguments);\n * }\n * @category Function\n */\nexport function purry(fn, args, lazy) {\n var diff = fn.length - args.length;\n var arrayArgs = Array.from(args);\n if (diff === 0) {\n return fn.apply(void 0, arrayArgs);\n }\n if (diff === 1) {\n var ret = function (data) { return fn.apply(void 0, __spreadArray([data], arrayArgs, false)); };\n if (lazy || fn.lazy) {\n ret.lazy = lazy || fn.lazy;\n ret.lazyArgs = args;\n }\n return ret;\n }\n throw new Error('Wrong number of arguments');\n}\n","export function _reduceLazy(array, lazy, indexed) {\n return array.reduce(function (acc, item, index) {\n var result = indexed ? lazy(item, index, array) : lazy(item);\n if (result.hasMany === true) {\n acc.push.apply(acc, result.next);\n }\n else if (result.hasNext === true) {\n acc.push(result.next);\n }\n return acc;\n }, []);\n}\n","import { purry } from './purry';\n// from https://github.com/epoberezkin/fast-deep-equal/blob/master/index.js\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nexport function equals() {\n return purry(_equals, arguments);\n}\nfunction _equals(a, b) {\n if (a === b) {\n return true;\n }\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n var arrA = isArray(a);\n var arrB = isArray(b);\n var i = void 0;\n var length = void 0;\n var key = void 0;\n if (arrA && arrB) {\n length = a.length;\n if (length !== b.length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (arrA !== arrB) {\n return false;\n }\n var dateA = a instanceof Date;\n var dateB = b instanceof Date;\n if (dateA !== dateB) {\n return false;\n }\n if (dateA && dateB) {\n return a.getTime() === b.getTime();\n }\n var regexpA = a instanceof RegExp;\n var regexpB = b instanceof RegExp;\n if (regexpA !== regexpB) {\n return false;\n }\n if (regexpA && regexpB) {\n return a.toString() === b.toString();\n }\n var keys = keyList(a);\n length = keys.length;\n if (length !== keyList(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!hasProp.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!equals(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n","import { purry } from './purry';\nexport function omit() {\n return purry(_omit, arguments);\n}\nfunction _omit(object, names) {\n var set = new Set(names);\n return Object.entries(object).reduce(function (acc, _a) {\n var name = _a[0], value = _a[1];\n if (!set.has(name)) {\n acc[name] = value;\n }\n return acc;\n }, {});\n}\n","import { purry } from './purry';\nexport function omitBy() {\n return purry(_omitBy, arguments);\n}\nfunction _omitBy(object, fn) {\n return Object.keys(object).reduce(function (acc, key) {\n if (!fn(object[key], key)) {\n acc[key] = object[key];\n }\n return acc;\n }, {});\n}\n","import { purry } from './purry';\nexport function pathOr() {\n return purry(_pathOr, arguments);\n}\nfunction _pathOr(object, path, defaultValue) {\n var current = object;\n for (var _i = 0, path_1 = path; _i < path_1.length; _i++) {\n var prop = path_1[_i];\n if (current == null || current[prop] == null) {\n return defaultValue;\n }\n current = current[prop];\n }\n return current;\n}\n","import { purry } from './purry';\nimport { _reduceLazy } from './_reduceLazy';\nexport function uniq() {\n return purry(_uniq, arguments, uniq.lazy);\n}\nfunction _uniq(array) {\n return _reduceLazy(array, uniq.lazy());\n}\n(function (uniq) {\n function lazy() {\n var set = new Set();\n return function (value) {\n if (set.has(value)) {\n return {\n done: false,\n hasNext: false,\n };\n }\n set.add(value);\n return {\n done: false,\n hasNext: true,\n next: value,\n };\n };\n }\n uniq.lazy = lazy;\n})(uniq || (uniq = {}));\n","export const getCheckboxChecked = (\n checkboxValue: string | undefined = \"on\",\n newValue: unknown\n): boolean | undefined => {\n if (Array.isArray(newValue))\n return newValue.some((val) => val === true || val === checkboxValue);\n if (typeof newValue === \"boolean\") return newValue;\n if (typeof newValue === \"string\") return newValue === checkboxValue;\n return undefined;\n};\n","export const getRadioChecked = (\n radioValue: string | undefined = \"on\",\n newValue: unknown\n) => {\n if (typeof newValue === \"string\") return newValue === radioValue;\n return undefined;\n};\n\nif (import.meta.vitest) {\n const { it, expect } = import.meta.vitest;\n it(\"getRadioChecked\", () => {\n expect(getRadioChecked(\"on\", \"on\")).toBe(true);\n expect(getRadioChecked(\"on\", undefined)).toBe(undefined);\n expect(getRadioChecked(\"trueValue\", undefined)).toBe(undefined);\n expect(getRadioChecked(\"trueValue\", \"bob\")).toBe(false);\n expect(getRadioChecked(\"trueValue\", \"trueValue\")).toBe(true);\n });\n}\n","import * as R from \"remeda\";\nimport { getCheckboxChecked } from \"./logic/getCheckboxChecked\";\nimport { getRadioChecked } from \"./logic/getRadioChecked\";\n\nexport type ValidationBehavior = \"onBlur\" | \"onChange\" | \"onSubmit\";\n\nexport type ValidationBehaviorOptions = {\n initial: ValidationBehavior;\n whenTouched: ValidationBehavior;\n whenSubmitted: ValidationBehavior;\n};\n\nexport type CreateGetInputPropsOptions = {\n clearError: () => void;\n validate: () => void;\n defaultValue?: any;\n touched: boolean;\n setTouched: (touched: boolean) => void;\n hasBeenSubmitted: boolean;\n validationBehavior?: Partial<ValidationBehaviorOptions>;\n name: string;\n};\n\ntype HandledProps = \"name\" | \"defaultValue\" | \"defaultChecked\";\ntype Callbacks = \"onChange\" | \"onBlur\";\n\ntype MinimalInputProps = {\n onChange?: (...args: any[]) => void;\n onBlur?: (...args: any[]) => void;\n defaultValue?: any;\n defaultChecked?: boolean;\n name?: string;\n type?: string;\n};\n\nexport type GetInputProps = <T extends MinimalInputProps>(\n props?: Omit<T, HandledProps | Callbacks> & Partial<Pick<T, Callbacks>>\n) => T;\n\nconst defaultValidationBehavior: ValidationBehaviorOptions = {\n initial: \"onBlur\",\n whenTouched: \"onChange\",\n whenSubmitted: \"onChange\",\n};\n\nexport const createGetInputProps = ({\n clearError,\n validate,\n defaultValue,\n touched,\n setTouched,\n hasBeenSubmitted,\n validationBehavior,\n name,\n}: CreateGetInputPropsOptions): GetInputProps => {\n const validationBehaviors = {\n ...defaultValidationBehavior,\n ...validationBehavior,\n };\n\n return <T extends MinimalInputProps>(props = {} as any) => {\n const behavior = hasBeenSubmitted\n ? validationBehaviors.whenSubmitted\n : touched\n ? validationBehaviors.whenTouched\n : validationBehaviors.initial;\n\n const inputProps: MinimalInputProps = {\n ...props,\n onChange: (...args: unknown[]) => {\n if (behavior === \"onChange\") validate();\n else clearError();\n return props?.onChange?.(...args);\n },\n onBlur: (...args: unknown[]) => {\n if (behavior === \"onBlur\") validate();\n setTouched(true);\n return props?.onBlur?.(...args);\n },\n name,\n };\n\n if (props.type === \"checkbox\") {\n inputProps.defaultChecked = getCheckboxChecked(props.value, defaultValue);\n } else if (props.type === \"radio\") {\n inputProps.defaultChecked = getRadioChecked(props.value, defaultValue);\n } else if (props.value === undefined) {\n // We should only set the defaultValue if the input is uncontrolled.\n inputProps.defaultValue = defaultValue;\n }\n\n return R.omitBy(inputProps, (value) => value === undefined) as T;\n };\n};\n","export const stringToPathArray = <T extends string>(\n path: T\n): (string | number)[] => {\n if (path.length === 0) return [];\n\n const match =\n path.match(/^\\[(.+?)\\](.*)$/) || path.match(/^\\.?([^\\.\\[\\]]+)(.*)$/);\n if (match) {\n const [_, key, rest] = match;\n return [/^\\d+$/.test(key) ? Number(key) : key, ...stringToPathArray(rest)];\n }\n return [path];\n};\n","import { stringToPathArray } from \"./stringToPathArray\";\n\nexport function setPath<T>(object: T, path: string, defaultValue: any) {\n return _setPathNormalized(object, stringToPathArray(path), defaultValue);\n}\n\nfunction _setPathNormalized(\n object: any,\n path: (string | number)[],\n value: any\n): any {\n const leadingSegments = path.slice(0, -1);\n const lastSegment = path[path.length - 1];\n\n let obj = object;\n for (let i = 0; i < leadingSegments.length; i++) {\n const segment = leadingSegments[i];\n if (obj[segment] === undefined) {\n const nextSegment = leadingSegments[i + 1] ?? lastSegment;\n obj[segment] = typeof nextSegment === \"number\" ? [] : {};\n }\n obj = obj[segment];\n }\n obj[lastSegment] = value;\n return object;\n}\n","import * as R from \"remeda\";\nimport { stringToPathArray } from \"./stringToPathArray\";\n\n// pathOr types don't support deeper than 3 levels, but the code works\nexport const getPath = (object: any, path: string) =>\n R.pathOr(object, stringToPathArray(path) as any, undefined);\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? prefix + \": \" + provided : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","export const FORM_ID_FIELD = \"__rvfInternalFormId\" as const;\nexport const FORM_DEFAULTS_FIELD = \"__rvfInternalFormDefaults\" as const;\nexport const formDefaultValuesKey = (formId: string) =>\n `${FORM_DEFAULTS_FIELD}_${formId}`;\n","import { useFetcher } from \"@remix-run/react\";\nimport { createContext } from \"react\";\n\nexport type InternalFormContextValue = {\n formId: string | symbol;\n action?: string;\n subaction?: string;\n defaultValuesProp?: { [fieldName: string]: any };\n fetcher?: ReturnType<typeof useFetcher>;\n};\n\nexport const InternalFormContext =\n createContext<InternalFormContextValue | null>(null);\n","/**\n * The purpose of this type is to simplify the logic\n * around data that needs to come from the server initially,\n * but from the internal state after hydration.\n */\nexport type Hydratable<T> = {\n hydrateTo: (data: T) => T;\n map: <U>(fn: (data: T) => U) => Hydratable<U>;\n};\n\nconst serverData = <T>(data: T): Hydratable<T> => ({\n hydrateTo: () => data,\n map: (fn) => serverData(fn(data)),\n});\n\nconst hydratedData = <T>(): Hydratable<T> => ({\n hydrateTo: (hydratedData: T) => hydratedData,\n map: <U>() => hydratedData<U>(),\n});\n\nconst from = <T>(data: T, hydrated: boolean): Hydratable<T> =>\n hydrated ? hydratedData<T>() : serverData<T>(data);\n\nexport const hydratable = {\n serverData,\n hydratedData,\n from,\n};\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (nextState !== state) {\n const previousState = state;\n state = replace ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => listeners.clear();\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\nexport { createStore as default };\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","import createStore__default from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nexport { default as createStore } from 'zustand/vanilla';\nimport { useDebugValue } from 'react';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector.js';\n\nfunction useStore(api, selector = api.getState, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(api.subscribe, api.getState, api.getServerState || api.getState, selector, equalityFn);\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = typeof createState === \"function\" ? createStore__default(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\nvar create$1 = create;\n\nexport { create$1 as default, useStore };\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e<r;e++)t[e-1]=arguments[e];if(\"production\"!==process.env.NODE_ENV){var i=Y[n],o=i?\"function\"==typeof i?i.apply(null,t):i:\"unknown error nr: \"+n;throw Error(\"[Immer] \"+o)}throw Error(\"[Immer] minified error nr: \"+n+(t.length?\" \"+t.map((function(n){return\"'\"+n+\"'\"})).join(\",\"):\"\")+\". Find the full error at: https://bit.ly/3cXEKWf\")}function r(n){return!!n&&!!n[Q]}function t(n){return!!n&&(function(n){if(!n||\"object\"!=typeof n)return!1;var r=Object.getPrototypeOf(n);if(null===r)return!0;var t=Object.hasOwnProperty.call(r,\"constructor\")&&r.constructor;return t===Object||\"function\"==typeof t&&Function.toString.call(t)===Z}(n)||Array.isArray(n)||!!n[L]||!!n.constructor[L]||s(n)||v(n))}function e(t){return r(t)||n(23,t),t[Q].t}function i(n,r,t){void 0===t&&(t=!1),0===o(n)?(t?Object.keys:nn)(n).forEach((function(e){t&&\"symbol\"==typeof e||r(e,n[e],n)})):n.forEach((function(t,e){return r(e,t,n)}))}function o(n){var r=n[Q];return r?r.i>3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?(n.delete(r),n.add(t)):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e<t.length;e++){var i=t[e],o=r[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(r[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:n[i]})}return Object.create(Object.getPrototypeOf(n),r)}function d(n,e){return void 0===e&&(e=!1),y(n)||r(n)||!t(n)?n:(o(n)>1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0),n)}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function O(n){g(n),n.p.forEach(S),n.p=null}function g(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.O=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.g||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(O(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),O(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o;i(3===e.i?new Set(o):o,(function(r,i){return A(n,e,o,r,i,t)})),x(n,o,!1),t&&n.u&&b(\"Patches\").R(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var v=M(e,c,s&&i&&3!==i.i&&!u(i.D,a)?s.concat(a):void 0);if(f(o,a,v),!r(v))return;e.m=!1}if(t(c)&&!y(c)){if(!e.h.F&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),n.h.F&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function R(n,r,t){var e=s(r)?b(\"MapSet\").N(r,t):v(r)?b(\"MapSet\").T(r,t):n.g?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function D(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=F(r,c),u.I=!1}else e=F(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function F(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function N(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e<r.length;e++)if(!r.hasOwnProperty(e))return!0;return!1}function f(r){r.O&&n(3,JSON.stringify(p(r)))}var s={};m(\"ES5\",{J:function(n,r){var e=Array.isArray(n),i=function(n,r){if(n){for(var e=Array(r.length),i=0;i<r.length;i++)Object.defineProperty(e,\"\"+i,t(i,!0));return e}var o=rn(r);delete o[Q];for(var u=nn(o),a=0;a<u.length;a++){var f=u[a];o[f]=t(f,n||!!o[f].enumerable)}return Object.create(Object.getPrototypeOf(r),o)}(e,n),o={i:e?5:4,A:r?r.A:_(),P:!1,I:!1,D:{},l:r,t:n,k:i,o:null,O:!1,C:!1};return Object.defineProperty(i,Q,{value:o,writable:!0}),i},S:function(n,t,o){o?r(t)&&t[Q].A===n&&e(n.p):(n.u&&function n(r){if(r&&\"object\"==typeof r){var t=r[Q];if(t){var e=t.t,o=t.k,f=t.D,c=t.i;if(4===c)i(o,(function(r){r!==Q&&(void 0!==e[r]||u(e,r)?f[r]||n(o[r]):(f[r]=!0,k(t)))})),i(e,(function(n){void 0!==o[n]||u(o,n)||(f[n]=!1,k(t))}));else if(5===c){if(a(t)&&(k(t),f.length=!0),o.length<e.length)for(var s=o.length;s<e.length;s++)f[s]=!1;else for(var v=e.length;v<o.length;v++)f[v]=!0;for(var p=Math.min(o.length,e.length),l=0;l<p;l++)o.hasOwnProperty(l)||(f[l]=!0),void 0===f[l]&&n(o[l])}}}}(n.p[0]),e(n.p))},K:function(n){return 4===n.i?o(n):a(n)}})}function T(){function e(n){if(!t(n))return n;if(Array.isArray(n))return n.map(e);if(s(n))return new Map(Array.from(n.entries()).map((function(n){return[n[0],e(n[1])]})));if(v(n))return new Set(Array.from(n).map(e));var r=Object.create(Object.getPrototypeOf(n));for(var i in n)r[i]=e(n[i]);return u(n,L)&&(r[L]=n[L]),r}function f(n){return r(n)?e(n):n}var c=\"add\";m(\"Patches\",{$:function(r,t){return t.forEach((function(t){for(var i=t.path,u=t.op,f=r,s=0;s<i.length-1;s++){var v=o(f),p=\"\"+i[s];0!==v&&1!==v||\"__proto__\"!==p&&\"constructor\"!==p||n(24),\"function\"==typeof f&&\"prototype\"===p&&n(24),\"object\"!=typeof(f=a(f,p))&&n(15,i.join(\"/\"))}var l=o(f),d=e(t.value),h=i[i.length-1];switch(u){case\"replace\":switch(l){case 2:return f.set(h,d);case 3:n(16);default:return f[h]=d}case c:switch(l){case 1:return\"-\"===h?f.push(d):f.splice(h,0,d);case 2:return f.set(h,d);case 3:return f.add(d);default:return f[h]=d}case\"remove\":switch(l){case 1:return f.splice(h,1);case 2:return f.delete(h);case 3:return f.delete(t.value);default:return delete f[h]}default:n(17,u)}})),r},R:function(n,r,t,e){switch(n.i){case 0:case 4:case 2:return function(n,r,t,e){var o=n.t,s=n.o;i(n.D,(function(n,i){var v=a(o,n),p=a(s,n),l=i?u(o,n)?\"replace\":c:\"remove\";if(v!==p||\"replace\"!==l){var d=r.concat(n);t.push(\"remove\"===l?{op:l,path:d}:{op:l,path:d,value:p}),e.push(l===c?{op:\"remove\",path:d}:\"remove\"===l?{op:c,path:d,value:f(v)}:{op:\"replace\",path:d,value:f(v)})}}))}(n,r,t,e);case 5:case 1:return function(n,r,t,e){var i=n.t,o=n.D,u=n.o;if(u.length<i.length){var a=[u,i];i=a[0],u=a[1];var s=[e,t];t=s[0],e=s[1]}for(var v=0;v<i.length;v++)if(o[v]&&u[v]!==i[v]){var p=r.concat([v]);t.push({op:\"replace\",path:p,value:f(u[v])}),e.push({op:\"replace\",path:p,value:f(i[v])})}for(var l=i.length;l<u.length;l++){var d=r.concat([l]);t.push({op:c,path:d,value:f(u[l])})}i.length<u.length&&e.push({op:\"replace\",path:r.concat([\"length\"]),value:i.length})}(n,r,t,e);case 3:return function(n,r,t,e){var i=n.t,o=n.o,u=0;i.forEach((function(n){if(!o.has(n)){var i=r.concat([u]);t.push({op:\"remove\",path:i,value:n}),e.unshift({op:c,path:i,value:n})}u++})),u=0,o.forEach((function(n){if(!i.has(n)){var o=r.concat([u]);t.push({op:c,path:o,value:n}),e.unshift({op:\"remove\",path:o,value:n})}u++}))}(n,r,t,e)}},M:function(n,r,t,e){t.push({op:\"replace\",path:[],value:r===H?void 0:r}),e.push({op:\"replace\",path:[],value:n})}})}function C(){function r(n,r){function t(){this.constructor=n}a(n,r),n.prototype=(t.prototype=r.prototype,new t)}function e(n){n.o||(n.D=new Map,n.o=new Map(n.t))}function o(n){n.o||(n.o=new Set,n.t.forEach((function(r){if(t(r)){var e=R(n.A.h,r,n);n.p.set(r,e),n.o.add(e)}else n.o.add(r)})))}function u(r){r.O&&n(3,JSON.stringify(p(r)))}var a=function(n,r){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var t in r)r.hasOwnProperty(t)&&(n[t]=r[t])})(n,r)},f=function(){function n(n,r){return this[Q]={i:2,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,D:void 0,t:n,k:this,C:!1,O:!1},this}r(n,Map);var o=n.prototype;return Object.defineProperty(o,\"size\",{get:function(){return p(this[Q]).size}}),o.has=function(n){return p(this[Q]).has(n)},o.set=function(n,r){var t=this[Q];return u(t),p(t).has(n)&&p(t).get(n)===r||(e(t),k(t),t.D.set(n,!0),t.o.set(n,r),t.D.set(n,!0)),this},o.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),e(r),k(r),r.t.has(n)?r.D.set(n,!1):r.D.delete(n),r.o.delete(n),!0},o.clear=function(){var n=this[Q];u(n),p(n).size&&(e(n),k(n),n.D=new Map,i(n.t,(function(r){n.D.set(r,!1)})),n.o.clear())},o.forEach=function(n,r){var t=this;p(this[Q]).forEach((function(e,i){n.call(r,t.get(i),i,t)}))},o.get=function(n){var r=this[Q];u(r);var i=p(r).get(n);if(r.I||!t(i))return i;if(i!==r.t.get(n))return i;var o=R(r.A.h,i,r);return e(r),r.o.set(n,o),o},o.keys=function(){return p(this[Q]).keys()},o.values=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.values()},n.next=function(){var n=t.next();return n.done?n:{done:!1,value:r.get(n.value)}},n},o.entries=function(){var n,r=this,t=this.keys();return(n={})[V]=function(){return r.entries()},n.next=function(){var n=t.next();if(n.done)return n;var e=r.get(n.value);return{done:!1,value:[n.value,e]}},n},o[V]=function(){return this.entries()},n}(),c=function(){function n(n,r){return this[Q]={i:3,l:r,A:r?r.A:_(),P:!1,I:!1,o:void 0,t:n,k:this,p:new Map,O:!1,C:!1},this}r(n,Set);var t=n.prototype;return Object.defineProperty(t,\"size\",{get:function(){return p(this[Q]).size}}),t.has=function(n){var r=this[Q];return u(r),r.o?!!r.o.has(n)||!(!r.p.has(n)||!r.o.has(r.p.get(n))):r.t.has(n)},t.add=function(n){var r=this[Q];return u(r),this.has(n)||(o(r),k(r),r.o.add(n)),this},t.delete=function(n){if(!this.has(n))return!1;var r=this[Q];return u(r),o(r),k(r),r.o.delete(n)||!!r.p.has(n)&&r.o.delete(r.p.get(n))},t.clear=function(){var n=this[Q];u(n),p(n).size&&(o(n),k(n),n.o.clear())},t.values=function(){var n=this[Q];return u(n),o(n),n.o.values()},t.entries=function(){var n=this[Q];return u(n),o(n),n.o.entries()},t.keys=function(){return this.values()},t[V]=function(){return this.values()},t.forEach=function(n,r){for(var t=this.values(),e=t.next();!e.done;)n.call(r,e.value,e.value,this),e=t.next()},n}();m(\"MapSet\",{N:function(n,r){return new f(n,r)},T:function(n,r){return new c(n,r)}})}function J(){N(),C(),T()}function K(n){return n}function $(n){return n}var G,U,W=\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol(\"x\"),X=\"undefined\"!=typeof Map,q=\"undefined\"!=typeof Set,B=\"undefined\"!=typeof Proxy&&void 0!==Proxy.revocable&&\"undefined\"!=typeof Reflect,H=W?Symbol.for(\"immer-nothing\"):((G={})[\"immer-nothing\"]=!0,G),L=W?Symbol.for(\"immer-draftable\"):\"__$immer_draftable\",Q=W?Symbol.for(\"immer-state\"):\"__$immer_state\",V=\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\",Y={0:\"Illegal state\",1:\"Immer drafts cannot have computed properties\",2:\"This object has been frozen and should not be mutated\",3:function(n){return\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \"+n},4:\"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",5:\"Immer forbids circular references\",6:\"The first or second argument to `produce` must be a function\",7:\"The third argument to `produce` must be a function or undefined\",8:\"First argument to `createDraft` must be a plain object, an array, or an immerable object\",9:\"First argument to `finishDraft` must be a draft returned by `createDraft`\",10:\"The given draft is already finalized\",11:\"Object.defineProperty() cannot be used on an Immer draft\",12:\"Object.setPrototypeOf() cannot be used on an Immer draft\",13:\"Immer only supports deleting array indices\",14:\"Immer only supports setting array indices and the 'length' property\",15:function(n){return\"Cannot apply patch, path doesn't resolve: \"+n},16:'Sets cannot have \"replace\" patches.',17:function(n){return\"Unsupported patch operation: \"+n},18:function(n){return\"The plugin for '\"+n+\"' has not been loaded into Immer. To enable the plugin, import and call `enable\"+n+\"()` when initializing your application.\"},20:\"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",21:function(n){return\"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\"+n+\"'\"},22:function(n){return\"'current' expects a draft, got: \"+n},23:function(n){return\"'original' expects a draft, got: \"+n},24:\"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"},Z=\"\"+Object.prototype.constructor,nn=\"undefined\"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:Object.getOwnPropertyNames,rn=Object.getOwnPropertyDescriptors||function(n){var r={};return nn(n).forEach((function(t){r[t]=Object.getOwnPropertyDescriptor(n,t)})),r},tn={},en={get:function(n,r){if(r===Q)return n;var e=p(n);if(!u(e,r))return function(n,r,t){var e,i=I(r,t);return i?\"value\"in i?i.value:null===(e=i.get)||void 0===e?void 0:e.call(n.k):void 0}(n,e,r);var i=e[r];return n.I||!t(i)?i:i===z(n.t,r)?(E(n),n.o[r]=R(n.A.h,i,n)):i},has:function(n,r){return r in p(n)},ownKeys:function(n){return Reflect.ownKeys(p(n))},set:function(n,r,t){var e=I(p(n),r);if(null==e?void 0:e.set)return e.set.call(n.k,t),!0;if(!n.P){var i=z(p(n),r),o=null==i?void 0:i[Q];if(o&&o.t===t)return n.o[r]=t,n.D[r]=!1,!0;if(c(t,i)&&(void 0!==t||u(n.t,r)))return!0;E(n),k(n)}return n.o[r]===t&&\"number\"!=typeof t&&(void 0!==t||r in n.o)||(n.o[r]=t,n.D[r]=!0,!0)},deleteProperty:function(n,r){return void 0!==z(n.t,r)||r in n.t?(n.D[r]=!1,E(n),k(n)):delete n.D[r],n.o&&delete n.o[r],!0},getOwnPropertyDescriptor:function(n,r){var t=p(n),e=Reflect.getOwnPropertyDescriptor(t,r);return e?{writable:!0,configurable:1!==n.i||\"length\"!==r,enumerable:e.enumerable,value:t[r]}:e},defineProperty:function(){n(11)},getPrototypeOf:function(n){return Object.getPrototypeOf(n.t)},setPrototypeOf:function(){n(12)}},on={};i(en,(function(n,r){on[n]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}})),on.deleteProperty=function(r,t){return\"production\"!==process.env.NODE_ENV&&isNaN(parseInt(t))&&n(13),on.set.call(this,r,t,void 0)},on.set=function(r,t,e){return\"production\"!==process.env.NODE_ENV&&\"length\"!==t&&isNaN(parseInt(t))&&n(14),en.set.call(this,r[0],t,e,r[0])};var un=function(){function e(r){var e=this;this.g=B,this.F=!0,this.produce=function(r,i,o){if(\"function\"==typeof r&&\"function\"!=typeof i){var u=i;i=r;var a=e;return function(n){var r=this;void 0===n&&(n=u);for(var t=arguments.length,e=Array(t>1?t-1:0),o=1;o<t;o++)e[o-1]=arguments[o];return a.produce(n,(function(n){var t;return(t=i).call.apply(t,[r,n].concat(e))}))}}var f;if(\"function\"!=typeof i&&n(6),void 0!==o&&\"function\"!=typeof o&&n(7),t(r)){var c=w(e),s=R(e,r,void 0),v=!0;try{f=i(s),v=!1}finally{v?O(c):g(c)}return\"undefined\"!=typeof Promise&&f instanceof Promise?f.then((function(n){return j(c,o),P(n,c)}),(function(n){throw O(c),n})):(j(c,o),P(f,c))}if(!r||\"object\"!=typeof r){if(void 0===(f=i(r))&&(f=r),f===H&&(f=void 0),e.F&&d(f,!0),o){var p=[],l=[];b(\"Patches\").M(r,f,p,l),o(p,l)}return f}n(21,r)},this.produceWithPatches=function(n,r){if(\"function\"==typeof n)return function(r){for(var t=arguments.length,i=Array(t>1?t-1:0),o=1;o<t;o++)i[o-1]=arguments[o];return e.produceWithPatches(r,(function(r){return n.apply(void 0,[r].concat(i))}))};var t,i,o=e.produce(n,r,(function(n,r){t=n,i=r}));return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then((function(n){return[n,t,i]})):[o,t,i]},\"boolean\"==typeof(null==r?void 0:r.useProxies)&&this.setUseProxies(r.useProxies),\"boolean\"==typeof(null==r?void 0:r.autoFreeze)&&this.setAutoFreeze(r.autoFreeze)}var i=e.prototype;return i.createDraft=function(e){t(e)||n(8),r(e)&&(e=D(e));var i=w(this),o=R(this,e,void 0);return o[Q].C=!0,g(i),o},i.finishDraft=function(r,t){var e=r&&r[Q];\"production\"!==process.env.NODE_ENV&&(e&&e.C||n(9),e.I&&n(10));var i=e.A;return j(i,t),P(void 0,i)},i.setAutoFreeze=function(n){this.F=n},i.setUseProxies=function(r){r&&!B&&n(20),this.g=r},i.applyPatches=function(n,t){var e;for(e=t.length-1;e>=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,D as current,J as enableAllPlugins,N as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","import { produce } from 'immer';\n\nconst immerImpl = (initializer) => (set, get, store) => {\n store.setState = (updater, replace, ...a) => {\n const nextState = typeof updater === \"function\" ? produce(updater) : updater;\n return set(nextState, replace, ...a);\n };\n return initializer(store.setState, get, store);\n};\nconst immer = immerImpl;\n\nexport { immer };\n","/**\n * Ponyfill of the HTMLFormElement.requestSubmit() method.\n * Based on polyfill from: https://github.com/javan/form-request-submit-polyfill/blob/main/form-request-submit-polyfill.js\n */\nexport const requestSubmit = (\n element: HTMLFormElement,\n submitter?: HTMLElement\n) => {\n // In vitest, let's test the polyfill.\n // Cypress will test the native implementation by nature of using chrome.\n if (\n typeof Object.getPrototypeOf(element).requestSubmit === \"function\" &&\n !import.meta.vitest\n ) {\n element.requestSubmit(submitter);\n return;\n }\n\n if (submitter) {\n validateSubmitter(element, submitter);\n submitter.click();\n return;\n }\n\n const dummySubmitter = document.createElement(\"input\");\n dummySubmitter.type = \"submit\";\n dummySubmitter.hidden = true;\n element.appendChild(dummySubmitter);\n dummySubmitter.click();\n element.removeChild(dummySubmitter);\n};\n\nfunction validateSubmitter(element: HTMLFormElement, submitter: HTMLElement) {\n // Should be redundant, but here for completeness\n const isHtmlElement = submitter instanceof HTMLElement;\n if (!isHtmlElement) {\n raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n }\n\n const hasSubmitType =\n \"type\" in submitter && (submitter as HTMLInputElement).type === \"submit\";\n if (!hasSubmitType)\n raise(TypeError, \"The specified element is not a submit button\");\n\n const isForCorrectForm =\n \"form\" in submitter && (submitter as HTMLInputElement).form === element;\n if (!isForCorrectForm)\n raise(\n DOMException,\n \"The specified element is not owned by this form element\",\n \"NotFoundError\"\n );\n}\n\ninterface ErrorConstructor {\n new (message: string, name?: string): Error;\n}\n\nfunction raise(\n errorConstructor: ErrorConstructor,\n message: string,\n name?: string\n): never {\n throw new errorConstructor(\n \"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\",\n name\n );\n}\n\nif (import.meta.vitest) {\n const { it, expect } = import.meta.vitest;\n it(\"should validate the submitter\", () => {\n const form = document.createElement(\"form\");\n document.body.appendChild(form);\n\n const submitter = document.createElement(\"input\");\n expect(() => validateSubmitter(null as any, null as any)).toThrow();\n expect(() => validateSubmitter(form, null as any)).toThrow();\n expect(() => validateSubmitter(form, submitter)).toThrow();\n expect(() =>\n validateSubmitter(form, document.createElement(\"div\"))\n ).toThrow();\n\n submitter.type = \"submit\";\n expect(() => validateSubmitter(form, submitter)).toThrow();\n\n form.appendChild(submitter);\n expect(() => validateSubmitter(form, submitter)).not.toThrow();\n\n form.removeChild(submitter);\n expect(() => validateSubmitter(form, submitter)).toThrow();\n\n document.body.appendChild(submitter);\n form.id = \"test-form\";\n submitter.setAttribute(\"form\", \"test-form\");\n expect(() => validateSubmitter(form, submitter)).not.toThrow();\n\n const button = document.createElement(\"button\");\n button.type = \"submit\";\n form.appendChild(button);\n expect(() => validateSubmitter(form, button)).not.toThrow();\n });\n}\n","import { getPath, setPath } from \"setGet\";\nimport invariant from \"tiny-invariant\";\n\n////\n// All of these array helpers are written in a way that mutates the original array.\n// This is because we're working with immer.\n////\n\nexport const getArray = (values: any, field: string): unknown[] => {\n const value = getPath(values, field);\n if (value === undefined || value === null) {\n const newValue: unknown[] = [];\n setPath(values, field, newValue);\n return newValue;\n }\n invariant(\n Array.isArray(value),\n `FieldArray: defaultValue value for ${field} must be an array, null, or undefined`\n );\n return value;\n};\n\nexport const swap = (array: unknown[], indexA: number, indexB: number) => {\n const itemA = array[indexA];\n const itemB = array[indexB];\n\n const hasItemA = indexA in array;\n const hasItemB = indexB in array;\n\n // If we're dealing with a sparse array (i.e. one of the indeces doesn't exist),\n // we should keep it sparse\n if (hasItemA) {\n array[indexB] = itemA;\n } else {\n delete array[indexB];\n }\n\n if (hasItemB) {\n array[indexA] = itemB;\n } else {\n delete array[indexA];\n }\n};\n\n// A splice that can handle sparse arrays\nfunction sparseSplice(\n array: unknown[],\n start: number,\n deleteCount: number,\n item?: unknown\n) {\n // Inserting an item into an array won't behave as we need it to if the array isn't\n // at least as long as the start index. We can force the array to be long enough like this.\n if (array.length < start && item) {\n array.length = start;\n }\n\n // If we just pass item in, it'll be undefined and splice will delete the item.\n if (arguments.length === 4) return array.splice(start, deleteCount, item);\n return array.splice(start, deleteCount);\n}\n\nexport const move = (array: unknown[], from: number, to: number) => {\n const [item] = sparseSplice(array, from, 1);\n sparseSplice(array, to, 0, item);\n};\n\nexport const insert = (array: unknown[], index: number, value: unknown) => {\n sparseSplice(array, index, 0, value);\n};\n\nexport const remove = (array: unknown[], index: number) => {\n sparseSplice(array, index, 1);\n};\n\nexport const replace = (array: unknown[], index: number, value: unknown) => {\n sparseSplice(array, index, 1, value);\n};\n\n/**\n * The purpose of this helper is to make it easier to update `fieldErrors` and `touchedFields`.\n * We key those objects by full paths to the fields.\n * When we're doing array mutations, that makes it difficult to update those objects.\n */\nexport const mutateAsArray = (\n field: string,\n obj: Record<string, any>,\n mutate: (arr: any[]) => void\n) => {\n const beforeKeys = new Set<string>();\n const arr: any[] = [];\n\n for (const [key, value] of Object.entries(obj)) {\n if (key.startsWith(field) && key !== field) {\n beforeKeys.add(key);\n setPath(arr, key.substring(field.length), value);\n }\n }\n\n mutate(arr);\n for (const key of beforeKeys) {\n delete obj[key];\n }\n\n const newKeys = getDeepArrayPaths(arr);\n for (const key of newKeys) {\n const val = getPath(arr, key);\n obj[`${field}${key}`] = val;\n }\n};\n\nconst getDeepArrayPaths = (obj: any, basePath: string = \"\"): string[] => {\n // This only needs to handle arrays and plain objects\n // and we can assume the first call is always an array.\n\n if (Array.isArray(obj)) {\n return obj.flatMap((item, index) =>\n getDeepArrayPaths(item, `${basePath}[${index}]`)\n );\n }\n\n if (typeof obj === \"object\") {\n return Object.keys(obj).flatMap((key) =>\n getDeepArrayPaths(obj[key], `${basePath}.${key}`)\n );\n }\n\n return [basePath];\n};\n\nif (import.meta.vitest) {\n const { describe, expect, it } = import.meta.vitest;\n\n // Count the actual number of items in the array\n // instead of just getting the length.\n // This is useful for validating that sparse arrays are handled correctly.\n const countArrayItems = (arr: any[]) => {\n let count = 0;\n arr.forEach(() => count++);\n return count;\n };\n\n describe(\"getArray\", () => {\n it(\"shoud get a deeply nested array that can be mutated to update the nested value\", () => {\n const values = {\n d: [\n { foo: \"bar\", baz: [true, false] },\n { e: true, f: \"hi\" },\n ],\n };\n const result = getArray(values, \"d[0].baz\");\n const finalValues = {\n d: [\n { foo: \"bar\", baz: [true, false, true] },\n { e: true, f: \"hi\" },\n ],\n };\n\n expect(result).toEqual([true, false]);\n result.push(true);\n expect(values).toEqual(finalValues);\n });\n\n it(\"should return an empty array that can be mutated if result is null or undefined\", () => {\n const values = {};\n const result = getArray(values, \"a.foo[0].bar\");\n const finalValues = {\n a: { foo: [{ bar: [\"Bob ross\"] }] },\n };\n\n expect(result).toEqual([]);\n result.push(\"Bob ross\");\n expect(values).toEqual(finalValues);\n });\n\n it(\"should throw if the value is defined and not an array\", () => {\n const values = { foo: \"foo\" };\n expect(() => getArray(values, \"foo\")).toThrow();\n });\n });\n\n describe(\"swap\", () => {\n it(\"should swap two items\", () => {\n const array = [1, 2, 3];\n swap(array, 0, 1);\n expect(array).toEqual([2, 1, 3]);\n });\n\n it(\"should work for sparse arrays\", () => {\n // A bit of a sanity check for native array behavior\n const arr = [] as any[];\n arr[0] = true;\n swap(arr, 0, 2);\n\n expect(countArrayItems(arr)).toEqual(1);\n expect(0 in arr).toBe(false);\n expect(2 in arr).toBe(true);\n expect(arr[2]).toEqual(true);\n });\n });\n\n describe(\"move\", () => {\n it(\"should move an item to a new index\", () => {\n const array = [1, 2, 3];\n move(array, 0, 1);\n expect(array).toEqual([2, 1, 3]);\n });\n\n it(\"should work with sparse arrays\", () => {\n const array = [1];\n move(array, 0, 2);\n\n expect(countArrayItems(array)).toEqual(1);\n expect(array).toEqual([undefined, undefined, 1]);\n });\n });\n\n describe(\"insert\", () => {\n it(\"should insert an item at a new index\", () => {\n const array = [1, 2, 3];\n insert(array, 1, 4);\n expect(array).toEqual([1, 4, 2, 3]);\n });\n\n it(\"should be able to insert falsey values\", () => {\n const array = [1, 2, 3];\n insert(array, 1, null);\n expect(array).toEqual([1, null, 2, 3]);\n });\n\n it(\"should handle sparse arrays\", () => {\n const array: any[] = [];\n array[2] = true;\n insert(array, 0, true);\n\n expect(countArrayItems(array)).toEqual(2);\n expect(array).toEqual([true, undefined, undefined, true]);\n });\n });\n\n describe(\"remove\", () => {\n it(\"should remove an item at a given index\", () => {\n const array = [1, 2, 3];\n remove(array, 1);\n expect(array).toEqual([1, 3]);\n });\n\n it(\"should handle sparse arrays\", () => {\n const array: any[] = [];\n array[2] = true;\n remove(array, 0);\n\n expect(countArrayItems(array)).toEqual(1);\n expect(array).toEqual([undefined, true]);\n });\n });\n\n describe(\"replace\", () => {\n it(\"should replace an item at a given index\", () => {\n const array = [1, 2, 3];\n replace(array, 1, 4);\n expect(array).toEqual([1, 4, 3]);\n });\n\n it(\"should handle sparse arrays\", () => {\n const array: any[] = [];\n array[2] = true;\n replace(array, 0, true);\n expect(countArrayItems(array)).toEqual(2);\n expect(array).toEqual([true, undefined, true]);\n });\n });\n\n describe(\"mutateAsArray\", () => {\n it(\"should handle swap\", () => {\n const values = {\n myField: \"something\",\n \"myField[0]\": \"foo\",\n \"myField[2]\": \"bar\",\n otherField: \"baz\",\n \"otherField[0]\": \"something else\",\n };\n mutateAsArray(\"myField\", values, (arr) => {\n swap(arr, 0, 2);\n });\n expect(values).toEqual({\n myField: \"something\",\n \"myField[0]\": \"bar\",\n \"myField[2]\": \"foo\",\n otherField: \"baz\",\n \"otherField[0]\": \"something else\",\n });\n });\n\n it(\"should swap sparse arrays\", () => {\n const values = {\n myField: \"something\",\n \"myField[0]\": \"foo\",\n otherField: \"baz\",\n \"otherField[0]\": \"something else\",\n };\n mutateAsArray(\"myField\", values, (arr) => {\n swap(arr, 0, 2);\n });\n expect(values).toEqual({\n myField: \"something\",\n \"myField[2]\": \"foo\",\n otherField: \"baz\",\n \"otherField[0]\": \"something else\",\n });\n });\n\n it(\"should handle arrays with nested values\", () => {\n const values = {\n myField: \"something\",\n \"myField[0].title\": \"foo\",\n \"myField[0].note\": \"bar\",\n \"myField[2].title\": \"other\",\n \"myField[2].note\": \"other\",\n otherField: \"baz\",\n \"otherField[0]\": \"something else\",\n };\n mutateAsArray(\"myField\", values, (arr) => {\n swap(arr, 0, 2);\n });\n expect(values).toEqual({\n myField: \"something\",\n \"myField[0].title\": \"other\",\n \"myField[0].note\": \"other\",\n \"myField[2].title\": \"foo\",\n \"myField[2].note\": \"bar\",\n otherField: \"baz\",\n \"otherField[0]\": \"something else\",\n });\n });\n\n it(\"should handle move\", () => {\n const values = {\n myField: \"something\",\n \"myField[0]\": \"foo\",\n \"myField[1]\": \"bar\",\n \"myField[2]\": \"baz\",\n \"otherField[0]\": \"something else\",\n };\n mutateAsArray(\"myField\", values, (arr) => {\n move(arr, 0, 2);\n });\n expect(values).toEqual({\n myField: \"something\",\n \"myField[0]\": \"bar\",\n \"myField[1]\": \"baz\",\n \"myField[2]\": \"foo\",\n \"otherField[0]\": \"something else\",\n });\n });\n\n it(\"should handle remove\", () => {\n const values = {\n myField: \"something\",\n \"myField[0]\": \"foo\",\n \"myField[1]\": \"bar\",\n \"myField[2]\": \"baz\",\n \"otherField[0]\": \"something else\",\n };\n mutateAsArray(\"myField\", values, (arr) => {\n remove(arr, 1);\n });\n expect(values).toEqual({\n myField: \"something\",\n \"myField[0]\": \"foo\",\n \"myField[1]\": \"baz\",\n \"otherField[0]\": \"something else\",\n });\n expect(\"myField[2]\" in values).toBe(false);\n });\n });\n\n describe(\"getDeepArrayPaths\", () => {\n it(\"should return all paths recursively\", () => {\n const obj = [\n true,\n true,\n [true, true],\n { foo: true, bar: { baz: true, test: [true] } },\n ];\n\n expect(getDeepArrayPaths(obj, \"myField\")).toEqual([\n \"myField[0]\",\n \"myField[1]\",\n \"myField[2][0]\",\n \"myField[2][1]\",\n \"myField[3].foo\",\n \"myField[3].bar.baz\",\n \"myField[3].bar.test[0]\",\n ]);\n });\n });\n}\n","import { WritableDraft } from \"immer/dist/internal\";\nimport { getPath, setPath } from \"setGet\";\nimport invariant from \"tiny-invariant\";\nimport create, { GetState } from \"zustand\";\nimport { immer } from \"zustand/middleware/immer\";\nimport {\n FieldErrors,\n TouchedFields,\n ValidationResult,\n Validator,\n} from \"../../validation/types\";\nimport { requestSubmit } from \"../logic/requestSubmit\";\nimport * as arrayUtil from \"./arrayUtil\";\nimport { InternalFormId } from \"./types\";\n\nexport type SyncedFormProps = {\n formId?: string;\n action?: string;\n subaction?: string;\n defaultValues: { [fieldName: string]: any };\n registerReceiveFocus: (fieldName: string, handler: () => void) => () => void;\n validator: Validator<unknown>;\n};\n\nexport type FormStoreState = {\n forms: { [formId: InternalFormId]: FormState };\n form: (formId: InternalFormId) => FormState;\n registerForm: (formId: InternalFormId) => void;\n cleanupForm: (formId: InternalFormId) => void;\n};\n\nexport type FormState = {\n isHydrated: boolean;\n isSubmitting: boolean;\n hasBeenSubmitted: boolean;\n fieldErrors: FieldErrors;\n touchedFields: TouchedFields;\n formProps?: SyncedFormProps;\n formElement: HTMLFormElement | null;\n currentDefaultValues: Record<string, any>;\n\n isValid: () => boolean;\n startSubmit: () => void;\n endSubmit: () => void;\n setTouched: (field: string, touched: boolean) => void;\n setFieldError: (field: string, error: string) => void;\n setFieldErrors: (errors: FieldErrors) => void;\n clearFieldError: (field: string) => void;\n reset: () => void;\n syncFormProps: (props: SyncedFormProps) => void;\n setFormElement: (formElement: HTMLFormElement | null) => void;\n validateField: (fieldName: string) => Promise<string | null>;\n validate: () => Promise<ValidationResult<unknown>>;\n resetFormElement: () => void;\n submit: () => void;\n getValues: () => FormData;\n\n controlledFields: {\n values: { [fieldName: string]: any };\n refCounts: { [fieldName: string]: number };\n valueUpdatePromises: { [fieldName: string]: Promise<void> };\n valueUpdateResolvers: { [fieldName: string]: () => void };\n\n register: (fieldName: string) => void;\n unregister: (fieldName: string) => void;\n setValue: (fieldName: string, value: unknown) => void;\n kickoffValueUpdate: (fieldName: string) => void;\n getValue: (fieldName: string) => unknown;\n awaitValueUpdate: (fieldName: string) => Promise<void>;\n\n array: {\n push: (fieldName: string, value: unknown) => void;\n swap: (fieldName: string, indexA: number, indexB: number) => void;\n move: (fieldName: string, fromIndex: number, toIndex: number) => void;\n insert: (fieldName: string, index: number, value: unknown) => void;\n unshift: (fieldName: string, value: unknown) => void;\n remove: (fieldName: string, index: number) => void;\n pop: (fieldName: string) => void;\n replace: (fieldName: string, index: number, value: unknown) => void;\n };\n };\n};\n\nconst noOp = () => {};\nconst defaultFormState: FormState = {\n isHydrated: false,\n isSubmitting: false,\n hasBeenSubmitted: false,\n touchedFields: {},\n fieldErrors: {},\n formElement: null,\n isValid: () => true,\n startSubmit: noOp,\n endSubmit: noOp,\n setTouched: noOp,\n setFieldError: noOp,\n setFieldErrors: noOp,\n clearFieldError: noOp,\n currentDefaultValues: {},\n\n reset: () => noOp,\n syncFormProps: noOp,\n setFormElement: noOp,\n validateField: async () => null,\n\n validate: async () => {\n throw new Error(\"Validate called before form was initialized.\");\n },\n\n submit: async () => {\n throw new Error(\"Submit called before form was initialized.\");\n },\n\n resetFormElement: noOp,\n getValues: () => new FormData(),\n\n controlledFields: {\n values: {},\n refCounts: {},\n valueUpdatePromises: {},\n valueUpdateResolvers: {},\n\n register: noOp,\n unregister: noOp,\n setValue: noOp,\n getValue: noOp,\n kickoffValueUpdate: noOp,\n awaitValueUpdate: async () => {\n throw new Error(\"AwaitValueUpdate called before form was initialized.\");\n },\n\n array: {\n push: noOp,\n swap: noOp,\n move: noOp,\n insert: noOp,\n unshift: noOp,\n remove: noOp,\n pop: noOp,\n replace: noOp,\n },\n },\n};\n\nconst createFormState = (\n set: (setter: (draft: WritableDraft<FormState>) => void) => void,\n get: GetState<FormState>\n): FormState => ({\n // It's not \"hydrated\" until the form props are synced\n isHydrated: false,\n isSubmitting: false,\n hasBeenSubmitted: false,\n touchedFields: {},\n fieldErrors: {},\n formElement: null,\n currentDefaultValues: {},\n\n isValid: () => Object.keys(get().fieldErrors).length === 0,\n startSubmit: () =>\n set((state) => {\n state.isSubmitting = true;\n state.hasBeenSubmitted = true;\n }),\n endSubmit: () =>\n set((state) => {\n state.isSubmitting = false;\n }),\n setTouched: (fieldName, touched) =>\n set((state) => {\n state.touchedFields[fieldName] = touched;\n }),\n setFieldError: (fieldName: string, error: string) =>\n set((state) => {\n state.fieldErrors[fieldName] = error;\n }),\n setFieldErrors: (errors: FieldErrors) =>\n set((state) => {\n state.fieldErrors = errors;\n }),\n clearFieldError: (fieldName: string) =>\n set((state) => {\n delete state.fieldErrors[fieldName];\n }),\n reset: () =>\n set((state) => {\n state.fieldErrors = {};\n state.touchedFields = {};\n state.hasBeenSubmitted = false;\n const nextDefaults = state.formProps?.defaultValues ?? {};\n state.controlledFields.values = nextDefaults;\n state.currentDefaultValues = nextDefaults;\n }),\n syncFormProps: (props: SyncedFormProps) =>\n set((state) => {\n if (!state.isHydrated) {\n state.controlledFields.values = props.defaultValues;\n state.currentDefaultValues = props.defaultValues;\n }\n\n state.formProps = props;\n state.isHydrated = true;\n }),\n setFormElement: (formElement: HTMLFormElement | null) => {\n // This gets called frequently, so we want to avoid calling set() every time\n // Or else we wind up with an infinite loop\n if (get().formElement === formElement) return;\n set((state) => {\n // weird type issue here\n // seems to be because formElement is a writable draft\n state.formElement = formElement as any;\n });\n },\n validateField: async (field: string) => {\n const formElement = get().formElement;\n invariant(\n formElement,\n \"Cannot find reference to form. This is probably a bug in remix-validated-form.\"\n );\n\n const validator = get().formProps?.validator;\n invariant(\n validator,\n \"Cannot validator. This is probably a bug in remix-validated-form.\"\n );\n\n await get().controlledFields.awaitValueUpdate?.(field);\n\n const { error } = await validator.validateField(\n new FormData(formElement),\n field\n );\n\n if (error) {\n get().setFieldError(field, error);\n return error;\n } else {\n get().clearFieldError(field);\n return null;\n }\n },\n\n validate: async () => {\n const formElement = get().formElement;\n invariant(\n formElement,\n \"Cannot find reference to form. This is probably a bug in remix-validated-form.\"\n );\n\n const validator = get().formProps?.validator;\n invariant(\n validator,\n \"Cannot validator. This is probably a bug in remix-validated-form.\"\n );\n\n const result = await validator.validate(new FormData(formElement));\n if (result.error) get().setFieldErrors(result.error.fieldErrors);\n return result;\n },\n\n submit: () => {\n const formElement = get().formElement;\n invariant(\n formElement,\n \"Cannot find reference to form. This is probably a bug in remix-validated-form.\"\n );\n\n requestSubmit(formElement);\n },\n\n getValues: () => new FormData(get().formElement ?? undefined),\n\n resetFormElement: () => get().formElement?.reset(),\n\n controlledFields: {\n values: {},\n refCounts: {},\n valueUpdatePromises: {},\n valueUpdateResolvers: {},\n\n register: (fieldName) => {\n set((state) => {\n const current = state.controlledFields.refCounts[fieldName] ?? 0;\n state.controlledFields.refCounts[fieldName] = current + 1;\n });\n },\n unregister: (fieldName) => {\n // For this helper in particular, we may run into a case where state is undefined.\n // When the whole form unmounts, the form state may be cleaned up before the fields are.\n if (get() === null || get() === undefined) return;\n set((state) => {\n const current = state.controlledFields.refCounts[fieldName] ?? 0;\n if (current > 1) {\n state.controlledFields.refCounts[fieldName] = current - 1;\n return;\n }\n\n const isNested = Object.keys(state.controlledFields.refCounts).some(\n (key) => fieldName.startsWith(key) && key !== fieldName\n );\n\n // When nested within a field array, we should leave resetting up to the field array\n if (!isNested) {\n setPath(\n state.controlledFields.values,\n fieldName,\n getPath(state.formProps?.defaultValues, fieldName)\n );\n setPath(\n state.currentDefaultValues,\n fieldName,\n getPath(state.formProps?.defaultValues, fieldName)\n );\n }\n\n delete state.controlledFields.refCounts[fieldName];\n });\n },\n getValue: (fieldName) => getPath(get().controlledFields.values, fieldName),\n setValue: (fieldName, value) => {\n set((state) => {\n setPath(state.controlledFields.values, fieldName, value);\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n kickoffValueUpdate: (fieldName) => {\n const clear = () =>\n set((state) => {\n delete state.controlledFields.valueUpdateResolvers[fieldName];\n delete state.controlledFields.valueUpdatePromises[fieldName];\n });\n set((state) => {\n const promise = new Promise<void>((resolve) => {\n state.controlledFields.valueUpdateResolvers[fieldName] = resolve;\n }).then(clear);\n state.controlledFields.valueUpdatePromises[fieldName] = promise;\n });\n },\n\n awaitValueUpdate: async (fieldName) => {\n await get().controlledFields.valueUpdatePromises[fieldName];\n },\n\n array: {\n push: (fieldName, item) => {\n set((state) => {\n arrayUtil\n .getArray(state.controlledFields.values, fieldName)\n .push(item);\n arrayUtil.getArray(state.currentDefaultValues, fieldName).push(item);\n // New item added to the end, no need to update touched or error\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n\n swap: (fieldName, indexA, indexB) => {\n set((state) => {\n arrayUtil.swap(\n arrayUtil.getArray(state.controlledFields.values, fieldName),\n indexA,\n indexB\n );\n arrayUtil.swap(\n arrayUtil.getArray(state.currentDefaultValues, fieldName),\n indexA,\n indexB\n );\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n arrayUtil.swap(array, indexA, indexB)\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n arrayUtil.swap(array, indexA, indexB)\n );\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n\n move: (fieldName, from, to) => {\n set((state) => {\n arrayUtil.move(\n arrayUtil.getArray(state.controlledFields.values, fieldName),\n from,\n to\n );\n arrayUtil.move(\n arrayUtil.getArray(state.currentDefaultValues, fieldName),\n from,\n to\n );\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n arrayUtil.move(array, from, to)\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n arrayUtil.move(array, from, to)\n );\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n insert: (fieldName, index, item) => {\n set((state) => {\n arrayUtil.insert(\n arrayUtil.getArray(state.controlledFields.values, fieldName),\n index,\n item\n );\n arrayUtil.insert(\n arrayUtil.getArray(state.currentDefaultValues, fieldName),\n index,\n item\n );\n // Even though this is a new item, we need to push around other items.\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n arrayUtil.insert(array, index, false)\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n arrayUtil.insert(array, index, undefined)\n );\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n remove: (fieldName, index) => {\n set((state) => {\n arrayUtil.remove(\n arrayUtil.getArray(state.controlledFields.values, fieldName),\n index\n );\n arrayUtil.remove(\n arrayUtil.getArray(state.currentDefaultValues, fieldName),\n index\n );\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n arrayUtil.remove(array, index)\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n arrayUtil.remove(array, index)\n );\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n pop: (fieldName) => {\n set((state) => {\n arrayUtil.getArray(state.controlledFields.values, fieldName).pop();\n arrayUtil.getArray(state.currentDefaultValues, fieldName).pop();\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n array.pop()\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n array.pop()\n );\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n unshift: (fieldName, value) => {\n set((state) => {\n arrayUtil\n .getArray(state.controlledFields.values, fieldName)\n .unshift(value);\n arrayUtil\n .getArray(state.currentDefaultValues, fieldName)\n .unshift(value);\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n array.unshift(false)\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n array.unshift(undefined)\n );\n });\n },\n replace: (fieldName, index, item) => {\n set((state) => {\n arrayUtil.replace(\n arrayUtil.getArray(state.controlledFields.values, fieldName),\n index,\n item\n );\n arrayUtil.replace(\n arrayUtil.getArray(state.currentDefaultValues, fieldName),\n index,\n item\n );\n arrayUtil.mutateAsArray(fieldName, state.touchedFields, (array) =>\n arrayUtil.replace(array, index, item)\n );\n arrayUtil.mutateAsArray(fieldName, state.fieldErrors, (array) =>\n arrayUtil.replace(array, index, item)\n );\n });\n get().controlledFields.kickoffValueUpdate(fieldName);\n },\n },\n },\n});\n\nexport const useRootFormStore = create<FormStoreState>()(\n immer((set, get) => ({\n forms: {},\n form: (formId) => {\n return get().forms[formId] ?? defaultFormState;\n },\n cleanupForm: (formId: InternalFormId) => {\n set((state) => {\n delete state.forms[formId];\n });\n },\n registerForm: (formId: InternalFormId) => {\n if (get().forms[formId]) return;\n set((state) => {\n state.forms[formId] = createFormState(\n (setter) => set((state) => setter(state.forms[formId])),\n () => get().forms[formId]\n ) as WritableDraft<FormState>;\n });\n },\n }))\n);\n","import { FormState, useRootFormStore } from \"./createFormStore\";\nimport { InternalFormId } from \"./types\";\n\nexport const useFormStore = <T>(\n formId: InternalFormId,\n selector: (state: FormState) => T\n) => {\n return useRootFormStore((state) => selector(state.form(formId)));\n};\n","import { useActionData, useMatches, useTransition } from \"@remix-run/react\";\nimport { useCallback, useContext } from \"react\";\nimport { getPath } from \"setGet\";\nimport invariant from \"tiny-invariant\";\nimport { FieldErrors, ValidationErrorResponseData } from \"..\";\nimport { formDefaultValuesKey } from \"./constants\";\nimport { InternalFormContext, InternalFormContextValue } from \"./formContext\";\nimport { Hydratable, hydratable } from \"./hydratable\";\nimport { useFormStore } from \"./state/storeHooks\";\nimport { InternalFormId } from \"./state/types\";\n\nexport const useInternalFormContext = (\n formId?: string | symbol,\n hookName?: string\n) => {\n const formContext = useContext(InternalFormContext);\n\n if (formId) return { formId };\n if (formContext) return formContext;\n\n throw new Error(\n `Unable to determine form for ${hookName}. Please use it inside a ValidatedForm or pass a 'formId'.`\n );\n};\n\nexport function useErrorResponseForForm({\n fetcher,\n subaction,\n formId,\n}: InternalFormContextValue): ValidationErrorResponseData | null {\n const actionData = useActionData<any>();\n if (fetcher) {\n if ((fetcher.data as any)?.fieldErrors) return fetcher.data as any;\n return null;\n }\n\n if (!actionData?.fieldErrors) return null;\n\n // If there's an explicit id, we should ignore data that has the wrong id\n if (typeof formId === \"string\" && actionData.formId)\n return actionData.formId === formId ? actionData : null;\n\n if (\n (!subaction && !actionData.subaction) ||\n actionData.subaction === subaction\n )\n return actionData;\n\n return null;\n}\n\nexport const useFieldErrorsForForm = (\n context: InternalFormContextValue\n): Hydratable<FieldErrors | undefined> => {\n const response = useErrorResponseForForm(context);\n const hydrated = useFormStore(context.formId, (state) => state.isHydrated);\n return hydratable.from(response?.fieldErrors, hydrated);\n};\n\nexport const useDefaultValuesFromLoader = ({\n formId,\n}: InternalFormContextValue) => {\n const matches = useMatches();\n if (typeof formId === \"string\") {\n const dataKey = formDefaultValuesKey(formId);\n // If multiple loaders declare the same default values,\n // we should use the data from the deepest route.\n const match = matches\n .reverse()\n .find((match) => match.data && dataKey in match.data);\n return match?.data[dataKey];\n }\n\n return null;\n};\n\nexport const useDefaultValuesForForm = (\n context: InternalFormContextValue\n): Hydratable<{ [fieldName: string]: any }> => {\n const { formId, defaultValuesProp } = context;\n const hydrated = useFormStore(formId, (state) => state.isHydrated);\n const errorResponse = useErrorResponseForForm(context);\n const defaultValuesFromLoader = useDefaultValuesFromLoader(context);\n\n // Typical flow is:\n // - Default values only available from props or server\n // - Props have a higher priority than server\n // - State gets hydrated with default values\n // - After submit, we may need to use values from the error\n\n if (hydrated) return hydratable.hydratedData();\n if (errorResponse?.repopulateFields) {\n invariant(\n typeof errorResponse.repopulateFields === \"object\",\n \"repopulateFields returned something other than an object\"\n );\n return hydratable.serverData(errorResponse.repopulateFields);\n }\n if (defaultValuesProp) return hydratable.serverData(defaultValuesProp);\n\n return hydratable.serverData(defaultValuesFromLoader);\n};\n\nexport const useHasActiveFormSubmit = ({\n fetcher,\n}: InternalFormContextValue): boolean => {\n const transition = useTransition();\n const hasActiveSubmission = fetcher\n ? fetcher.state === \"submitting\"\n : !!transition.submission;\n return hasActiveSubmission;\n};\n\nexport const useFieldTouched = (\n field: string,\n { formId }: InternalFormContextValue\n) => {\n const touched = useFormStore(formId, (state) => state.touchedFields[field]);\n const setFieldTouched = useFormStore(formId, (state) => state.setTouched);\n const setTouched = useCallback(\n (touched: boolean) => setFieldTouched(field, touched),\n [field, setFieldTouched]\n );\n return [touched, setTouched] as const;\n};\n\nexport const useFieldError = (\n name: string,\n context: InternalFormContextValue\n) => {\n const fieldErrors = useFieldErrorsForForm(context);\n const state = useFormStore(\n context.formId,\n (state) => state.fieldErrors[name]\n );\n return fieldErrors.map((fieldErrors) => fieldErrors?.[name]).hydrateTo(state);\n};\n\nexport const useClearError = (context: InternalFormContextValue) => {\n const { formId } = context;\n return useFormStore(formId, (state) => state.clearFieldError);\n};\n\nexport const useCurrentDefaultValueForField = (\n formId: InternalFormId,\n field: string\n) =>\n useFormStore(formId, (state) => getPath(state.currentDefaultValues, field));\n\nexport const useFieldDefaultValue = (\n name: string,\n context: InternalFormContextValue\n) => {\n const defaultValues = useDefaultValuesForForm(context);\n const state = useCurrentDefaultValueForField(context.formId, name);\n\n return defaultValues.map((val) => getPath(val, name)).hydrateTo(state);\n};\n\nexport const useInternalIsSubmitting = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.isSubmitting);\n\nexport const useInternalIsValid = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.isValid());\n\nexport const useInternalHasBeenSubmitted = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.hasBeenSubmitted);\n\nexport const useValidateField = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.validateField);\n\nexport const useValidate = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.validate);\n\nconst noOpReceiver = () => () => {};\nexport const useRegisterReceiveFocus = (formId: InternalFormId) =>\n useFormStore(\n formId,\n (state) => state.formProps?.registerReceiveFocus ?? noOpReceiver\n );\n\nconst defaultDefaultValues = {};\nexport const useSyncedDefaultValues = (formId: InternalFormId) =>\n useFormStore(\n formId,\n (state) => state.formProps?.defaultValues ?? defaultDefaultValues\n );\n\nexport const useSetTouched = ({ formId }: InternalFormContextValue) =>\n useFormStore(formId, (state) => state.setTouched);\n\nexport const useTouchedFields = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.touchedFields);\n\nexport const useFieldErrors = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.fieldErrors);\n\nexport const useSetFieldErrors = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.setFieldErrors);\n\nexport const useResetFormElement = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.resetFormElement);\n\nexport const useSubmitForm = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.submit);\n\nexport const useFormActionProp = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.formProps?.action);\n\nexport const useFormSubactionProp = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.formProps?.subaction);\n\nexport const useFormValues = (formId: InternalFormId) =>\n useFormStore(formId, (state) => state.getValues);\n","import { useCallback, useEffect } from \"react\";\nimport { InternalFormContextValue } from \"../formContext\";\nimport { useFieldDefaultValue } from \"../hooks\";\nimport { useFormStore } from \"./storeHooks\";\nimport { InternalFormId } from \"./types\";\n\nexport const useControlledFieldValue = (\n context: InternalFormContextValue,\n field: string\n) => {\n const value = useFormStore(context.formId, (state) =>\n state.controlledFields.getValue(field)\n );\n const isFormHydrated = useFormStore(\n context.formId,\n (state) => state.isHydrated\n );\n const defaultValue = useFieldDefaultValue(field, context);\n\n return isFormHydrated ? value : defaultValue;\n};\n\nexport const useRegisterControlledField = (\n context: InternalFormContextValue,\n field: string\n) => {\n const resolveUpdate = useFormStore(\n context.formId,\n (state) => state.controlledFields.valueUpdateResolvers[field]\n );\n useEffect(() => {\n resolveUpdate?.();\n }, [resolveUpdate]);\n\n const register = useFormStore(\n context.formId,\n (state) => state.controlledFields.register\n );\n const unregister = useFormStore(\n context.formId,\n (state) => state.controlledFields.unregister\n );\n useEffect(() => {\n register(field);\n return () => unregister(field);\n }, [context.formId, field, register, unregister]);\n};\n\nexport const useControllableValue = (\n context: InternalFormContextValue,\n field: string\n) => {\n useRegisterControlledField(context, field);\n\n const setControlledFieldValue = useFormStore(\n context.formId,\n (state) => state.controlledFields.setValue\n );\n const setValue = useCallback(\n (value: unknown) => setControlledFieldValue(field, value),\n [field, setControlledFieldValue]\n );\n\n const value = useControlledFieldValue(context, field);\n\n return [value, setValue] as const;\n};\n\nexport const useUpdateControllableValue = (formId: InternalFormId) => {\n const setValue = useFormStore(\n formId,\n (state) => state.controlledFields.setValue\n );\n return useCallback(\n (field: string, value: unknown) => setValue(field, value),\n [setValue]\n );\n};\n\nexport const useAwaitValue = (formId: InternalFormId) => {\n const awaitValue = useFormStore(\n formId,\n (state) => state.controlledFields.awaitValueUpdate\n );\n return useCallback((field: string) => awaitValue(field), [awaitValue]);\n};\n","import { useEffect, useMemo } from \"react\";\nimport {\n createGetInputProps,\n GetInputProps,\n ValidationBehaviorOptions,\n} from \"./internal/getInputProps\";\nimport {\n useInternalFormContext,\n useFieldTouched,\n useFieldError,\n useFieldDefaultValue,\n useClearError,\n useInternalIsSubmitting,\n useInternalIsValid,\n useInternalHasBeenSubmitted,\n useValidateField,\n useRegisterReceiveFocus,\n} from \"./internal/hooks\";\nimport {\n useControllableValue,\n useUpdateControllableValue,\n} from \"./internal/state/controlledFields\";\n\n/**\n * Returns whether or not the parent form is currently being submitted.\n * This is different from remix's `useTransition().submission` in that it\n * is aware of what form it's in and when _that_ form is being submitted.\n *\n * @param formId\n */\nexport const useIsSubmitting = (formId?: string) => {\n const formContext = useInternalFormContext(formId, \"useIsSubmitting\");\n return useInternalIsSubmitting(formContext.formId);\n};\n\n/**\n * Returns whether or not the current form is valid.\n *\n * @param formId the id of the form. Only necessary if being used outside a ValidatedForm.\n */\nexport const useIsValid = (formId?: string) => {\n const formContext = useInternalFormContext(formId, \"useIsValid\");\n return useInternalIsValid(formContext.formId);\n};\n\nexport type FieldProps = {\n /**\n * The validation error message if there is one.\n */\n error?: string;\n /**\n * Clears the error message.\n */\n clearError: () => void;\n /**\n * Validates the field.\n */\n validate: () => void;\n /**\n * The default value of the field, if there is one.\n */\n defaultValue?: any;\n /**\n * Whether or not the field has been touched.\n */\n touched: boolean;\n /**\n * Helper to set the touched state of the field.\n */\n setTouched: (touched: boolean) => void;\n /**\n * Helper to get all the props necessary for a regular input.\n */\n getInputProps: GetInputProps;\n};\n\n/**\n * Provides the data and helpers necessary to set up a field.\n */\nexport const useField = (\n name: string,\n options?: {\n /**\n * Allows you to configure a custom function that will be called\n * when the input needs to receive focus due to a validation error.\n * This is useful for custom components that use a hidden input.\n */\n handleReceiveFocus?: () => void;\n /**\n * Allows you to specify when a field gets validated (when using getInputProps)\n */\n validationBehavior?: Partial<ValidationBehaviorOptions>;\n /**\n * The formId of the form you want to use.\n * This is not necesary if the input is used inside a form.\n */\n formId?: string;\n }\n): FieldProps => {\n const { formId: providedFormId, handleReceiveFocus } = options ?? {};\n const formContext = useInternalFormContext(providedFormId, \"useField\");\n\n const defaultValue = useFieldDefaultValue(name, formContext);\n const [touched, setTouched] = useFieldTouched(name, formContext);\n const error = useFieldError(name, formContext);\n const clearError = useClearError(formContext);\n\n const hasBeenSubmitted = useInternalHasBeenSubmitted(formContext.formId);\n const validateField = useValidateField(formContext.formId);\n const registerReceiveFocus = useRegisterReceiveFocus(formContext.formId);\n\n useEffect(() => {\n if (handleReceiveFocus)\n return registerReceiveFocus(name, handleReceiveFocus);\n }, [handleReceiveFocus, name, registerReceiveFocus]);\n\n const field = useMemo<FieldProps>(() => {\n const helpers = {\n error,\n clearError: () => clearError(name),\n validate: () => {\n validateField(name);\n },\n defaultValue,\n touched,\n setTouched,\n };\n const getInputProps = createGetInputProps({\n ...helpers,\n name,\n hasBeenSubmitted,\n validationBehavior: options?.validationBehavior,\n });\n return {\n ...helpers,\n getInputProps,\n };\n }, [\n error,\n clearError,\n defaultValue,\n touched,\n setTouched,\n name,\n hasBeenSubmitted,\n options?.validationBehavior,\n validateField,\n ]);\n\n return field;\n};\n\nexport const useControlField = <T>(name: string, formId?: string) => {\n const context = useInternalFormContext(formId, \"useControlField\");\n const [value, setValue] = useControllableValue(context, name);\n return [value as T, setValue as (value: T) => void] as const;\n};\n\nexport const useUpdateControlledField = (formId?: string) => {\n const context = useInternalFormContext(formId, \"useControlField\");\n return useUpdateControllableValue(context.formId);\n};\n","/**\n * @remix-run/server-runtime v1.6.5\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// must be a type since this is a subtype of response\n// interfaces must conform to the types they extend\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n *\n * @see https://remix.run/api/remix#json\n */\nconst json = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n let headers = new Headers(responseInit.headers);\n\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), { ...responseInit,\n headers\n });\n};\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n *\n * @see https://remix.run/api/remix#redirect\n */\nconst redirect = (url, init = 302) => {\n let responseInit = init;\n\n if (typeof responseInit === \"number\") {\n responseInit = {\n status: responseInit\n };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n return new Response(null, { ...responseInit,\n headers\n });\n};\nfunction isResponse(value) {\n return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nfunction isRedirectResponse(response) {\n return redirectStatusCodes.has(response.status);\n}\nfunction isCatchResponse(response) {\n return response.headers.get(\"X-Remix-Catch\") != null;\n}\n\nexport { isCatchResponse, isRedirectResponse, isResponse, json, redirect };\n","import { json } from \"remix\";\nimport {\n formDefaultValuesKey,\n FORM_DEFAULTS_FIELD,\n} from \"./internal/constants\";\nimport {\n ValidatorError,\n ValidationErrorResponseData,\n} from \"./validation/types\";\n\n/**\n * Takes the errors from a `Validator` and returns a `Response`.\n * When you return this from your action, `ValidatedForm` on the frontend will automatically\n * display the errors on the correct fields on the correct form.\n *\n * You can also provide a second argument to `validationError`\n * to specify how to repopulate the form when JS is disabled.\n *\n * @example\n * ```ts\n * const result = validator.validate(await request.formData());\n * if (result.error) return validationError(result.error, result.submittedData);\n * ```\n */\nexport function validationError(\n error: ValidatorError,\n repopulateFields?: unknown,\n init?: ResponseInit\n) {\n return json<ValidationErrorResponseData>(\n {\n fieldErrors: error.fieldErrors,\n subaction: error.subaction,\n repopulateFields,\n formId: error.formId,\n },\n { status: 422, ...init }\n );\n}\n\nexport type FormDefaults = {\n [formDefaultsKey: `${typeof FORM_DEFAULTS_FIELD}_${string}`]: any;\n};\n\nexport const setFormDefaults = <DataType = any>(\n formId: string,\n defaultValues: Partial<DataType>\n): FormDefaults => ({\n [formDefaultValuesKey(formId)]: defaultValues,\n});\n","import { useCallback, useRef } from \"react\";\n\nexport class MultiValueMap<Key, Value> {\n private dict: Map<Key, Value[]> = new Map();\n\n add = (key: Key, value: Value) => {\n if (this.dict.has(key)) {\n this.dict.get(key)!.push(value);\n } else {\n this.dict.set(key, [value]);\n }\n };\n\n delete = (key: Key) => {\n this.dict.delete(key);\n };\n\n remove = (key: Key, value: Value) => {\n if (!this.dict.has(key)) return;\n const array = this.dict.get(key)!;\n const index = array.indexOf(value);\n if (index !== -1) array.splice(index, 1);\n if (array.length === 0) this.dict.delete(key);\n };\n\n getAll = (key: Key): Value[] => {\n return this.dict.get(key) ?? [];\n };\n\n entries = (): IterableIterator<[Key, Value[]]> => this.dict.entries();\n\n values = (): IterableIterator<Value[]> => this.dict.values();\n\n has = (key: Key): boolean => this.dict.has(key);\n}\n\nexport const useMultiValueMap = <Key, Value>() => {\n const ref = useRef<MultiValueMap<Key, Value> | null>(null);\n return useCallback(() => {\n if (ref.current) return ref.current;\n ref.current = new MultiValueMap();\n return ref.current;\n }, []);\n};\n","import { useEffect, useRef } from \"react\";\n\nexport function useSubmitComplete(isSubmitting: boolean, callback: () => void) {\n const isPending = useRef(false);\n useEffect(() => {\n if (isSubmitting) {\n isPending.current = true;\n }\n\n if (!isSubmitting && isPending.current) {\n isPending.current = false;\n callback();\n }\n });\n}\n","import type React from \"react\";\nimport { useEffect, useLayoutEffect, useRef } from \"react\";\nimport * as R from \"remeda\";\n\nexport const omit = (obj: any, ...keys: string[]) => {\n const result = { ...obj };\n for (const key of keys) {\n delete result[key];\n }\n return result;\n};\n\nexport const mergeRefs = <T = any>(\n refs: Array<React.MutableRefObject<T> | React.LegacyRef<T> | undefined>\n): React.RefCallback<T> => {\n return (value: T) => {\n refs.filter(Boolean).forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref != null) {\n (ref as React.MutableRefObject<T | null>).current = value;\n }\n });\n };\n};\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\nexport const useDeepEqualsMemo = <T>(item: T): T => {\n const ref = useRef<T>(item);\n const areEqual = ref.current === item || R.equals(ref.current, item);\n useEffect(() => {\n if (!areEqual) {\n ref.current = item;\n }\n });\n return areEqual ? ref.current : item;\n};\n","import {\n Form as RemixForm,\n FormMethod,\n useFetcher,\n useSubmit,\n} from \"@remix-run/react\";\nimport React, {\n ComponentProps,\n FormEvent,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport * as R from \"remeda\";\nimport { useIsSubmitting, useIsValid } from \"./hooks\";\nimport { FORM_ID_FIELD } from \"./internal/constants\";\nimport {\n InternalFormContext,\n InternalFormContextValue,\n} from \"./internal/formContext\";\nimport {\n useDefaultValuesFromLoader,\n useErrorResponseForForm,\n useHasActiveFormSubmit,\n useSetFieldErrors,\n} from \"./internal/hooks\";\nimport { MultiValueMap, useMultiValueMap } from \"./internal/MultiValueMap\";\nimport {\n SyncedFormProps,\n useRootFormStore,\n} from \"./internal/state/createFormStore\";\nimport { useFormStore } from \"./internal/state/storeHooks\";\nimport { useSubmitComplete } from \"./internal/submissionCallbacks\";\nimport {\n mergeRefs,\n useDeepEqualsMemo,\n useIsomorphicLayoutEffect as useLayoutEffect,\n} from \"./internal/util\";\nimport { FieldErrors, Validator } from \"./validation/types\";\n\nexport type FormProps<DataType> = {\n /**\n * A `Validator` object that describes how to validate the form.\n */\n validator: Validator<DataType>;\n /**\n * A submit callback that gets called when the form is submitted\n * after all validations have been run.\n */\n onSubmit?: (\n data: DataType,\n event: React.FormEvent<HTMLFormElement>\n ) => void | Promise<void>;\n /**\n * Allows you to provide a `fetcher` from remix's `useFetcher` hook.\n * The form will use the fetcher for loading states, action data, etc\n * instead of the default form action.\n */\n fetcher?: ReturnType<typeof useFetcher>;\n /**\n * Accepts an object of default values for the form\n * that will automatically be propagated to the form fields via `useField`.\n */\n defaultValues?: Partial<DataType>;\n /**\n * A ref to the form element.\n */\n formRef?: React.RefObject<HTMLFormElement>;\n /**\n * An optional sub-action to use for the form.\n * Setting a value here will cause the form to be submitted with an extra `subaction` value.\n * This can be useful when there are multiple forms on the screen handled by the same action.\n */\n subaction?: string;\n /**\n * Reset the form to the default values after the form has been successfully submitted.\n * This is useful if you want to submit the same form multiple times,\n * and don't redirect in-between submissions.\n */\n resetAfterSubmit?: boolean;\n /**\n * Normally, the first invalid input will be focused when the validation fails on form submit.\n * Set this to `false` to disable this behavior.\n */\n disableFocusOnError?: boolean;\n} & Omit<ComponentProps<typeof RemixForm>, \"onSubmit\">;\n\nconst getDataFromForm = (el: HTMLFormElement) => new FormData(el);\n\nfunction nonNull<T>(value: T | null | undefined): value is T {\n return value !== null;\n}\n\nconst focusFirstInvalidInput = (\n fieldErrors: FieldErrors,\n customFocusHandlers: MultiValueMap<string, () => void>,\n formElement: HTMLFormElement\n) => {\n const namesInOrder = [...formElement.elements]\n .map((el) => {\n const input = el instanceof RadioNodeList ? el[0] : el;\n if (input instanceof HTMLElement && \"name\" in input)\n return (input as any).name;\n return null;\n })\n .filter(nonNull)\n .filter((name) => name in fieldErrors);\n const uniqueNamesInOrder = R.uniq(namesInOrder);\n\n for (const fieldName of uniqueNamesInOrder) {\n if (customFocusHandlers.has(fieldName)) {\n customFocusHandlers.getAll(fieldName).forEach((handler) => {\n handler();\n });\n break;\n }\n\n const elem = formElement.elements.namedItem(fieldName);\n if (!elem) continue;\n\n if (elem instanceof RadioNodeList) {\n const selectedRadio =\n [...elem]\n .filter(\n (item): item is HTMLInputElement => item instanceof HTMLInputElement\n )\n .find((item) => item.value === elem.value) ?? elem[0];\n if (selectedRadio && selectedRadio instanceof HTMLInputElement) {\n selectedRadio.focus();\n break;\n }\n }\n\n if (elem instanceof HTMLElement) {\n if (elem instanceof HTMLInputElement && elem.type === \"hidden\") {\n continue;\n }\n\n elem.focus();\n break;\n }\n }\n};\n\nconst useFormId = (providedId?: string): string | symbol => {\n // We can use a `Symbol` here because we only use it after hydration\n const [symbolId] = useState(() => Symbol(\"remix-validated-form-id\"));\n return providedId ?? symbolId;\n};\n\n/**\n * Use a component to access the state so we don't cause\n * any extra rerenders of the whole form.\n */\nconst FormResetter = ({\n resetAfterSubmit,\n formRef,\n}: {\n resetAfterSubmit: boolean;\n formRef: RefObject<HTMLFormElement>;\n}) => {\n const isSubmitting = useIsSubmitting();\n const isValid = useIsValid();\n useSubmitComplete(isSubmitting, () => {\n if (isValid && resetAfterSubmit) {\n formRef.current?.reset();\n }\n });\n return null;\n};\n\nfunction formEventProxy<T extends object>(event: T): T {\n let defaultPrevented = false;\n return new Proxy(event, {\n get: (target, prop) => {\n if (prop === \"preventDefault\") {\n return () => {\n defaultPrevented = true;\n };\n }\n\n if (prop === \"defaultPrevented\") {\n return defaultPrevented;\n }\n\n return target[prop as keyof T];\n },\n }) as T;\n}\n\ntype HTMLSubmitEvent = React.BaseSyntheticEvent<\n SubmitEvent,\n Event,\n HTMLFormElement\n>;\n\ntype HTMLFormSubmitter = HTMLButtonElement | HTMLInputElement;\n\n/**\n * The primary form component of `remix-validated-form`.\n */\nexport function ValidatedForm<DataType>({\n validator,\n onSubmit,\n children,\n fetcher,\n action,\n defaultValues: unMemoizedDefaults,\n formRef: formRefProp,\n onReset,\n subaction,\n resetAfterSubmit = false,\n disableFocusOnError,\n method,\n replace,\n id,\n ...rest\n}: FormProps<DataType>) {\n const formId = useFormId(id);\n const providedDefaultValues = useDeepEqualsMemo(unMemoizedDefaults);\n const contextValue = useMemo<InternalFormContextValue>(\n () => ({\n formId,\n action,\n subaction,\n defaultValuesProp: providedDefaultValues,\n fetcher,\n }),\n [action, fetcher, formId, providedDefaultValues, subaction]\n );\n const backendError = useErrorResponseForForm(contextValue);\n const backendDefaultValues = useDefaultValuesFromLoader(contextValue);\n const hasActiveSubmission = useHasActiveFormSubmit(contextValue);\n const formRef = useRef<HTMLFormElement>(null);\n const Form = fetcher?.Form ?? RemixForm;\n\n const submit = useSubmit();\n const setFieldErrors = useSetFieldErrors(formId);\n const setFieldError = useFormStore(formId, (state) => state.setFieldError);\n const reset = useFormStore(formId, (state) => state.reset);\n const startSubmit = useFormStore(formId, (state) => state.startSubmit);\n const endSubmit = useFormStore(formId, (state) => state.endSubmit);\n const syncFormProps = useFormStore(formId, (state) => state.syncFormProps);\n const setFormElementInState = useFormStore(\n formId,\n (state) => state.setFormElement\n );\n const cleanupForm = useRootFormStore((state) => state.cleanupForm);\n const registerForm = useRootFormStore((state) => state.registerForm);\n\n const customFocusHandlers = useMultiValueMap<string, () => void>();\n const registerReceiveFocus: SyncedFormProps[\"registerReceiveFocus\"] =\n useCallback(\n (fieldName, handler) => {\n customFocusHandlers().add(fieldName, handler);\n return () => {\n customFocusHandlers().remove(fieldName, handler);\n };\n },\n [customFocusHandlers]\n );\n\n // TODO: all these hooks running at startup cause extra, unnecessary renders\n // There must be a nice way to avoid this.\n useLayoutEffect(() => {\n registerForm(formId);\n return () => cleanupForm(formId);\n }, [cleanupForm, formId, registerForm]);\n\n useLayoutEffect(() => {\n syncFormProps({\n action,\n defaultValues: providedDefaultValues ?? backendDefaultValues ?? {},\n subaction,\n registerReceiveFocus,\n validator,\n });\n }, [\n action,\n providedDefaultValues,\n registerReceiveFocus,\n subaction,\n syncFormProps,\n backendDefaultValues,\n validator,\n ]);\n\n useLayoutEffect(() => {\n setFormElementInState(formRef.current);\n }, [setFormElementInState]);\n\n useEffect(() => {\n setFieldErrors(backendError?.fieldErrors ?? {});\n }, [backendError?.fieldErrors, setFieldErrors, setFieldError]);\n\n useSubmitComplete(hasActiveSubmission, () => {\n endSubmit();\n });\n\n const handleSubmit = async (\n e: FormEvent<HTMLFormElement>,\n target: typeof e.currentTarget,\n nativeEvent: HTMLSubmitEvent[\"nativeEvent\"]\n ) => {\n startSubmit();\n const submitter = nativeEvent.submitter as HTMLFormSubmitter | null;\n const formDataToValidate = getDataFromForm(e.currentTarget);\n if (submitter?.name) {\n formDataToValidate.append(submitter.name, submitter.value);\n }\n\n const result = await validator.validate(formDataToValidate);\n if (result.error) {\n setFieldErrors(result.error.fieldErrors);\n endSubmit();\n if (!disableFocusOnError) {\n focusFirstInvalidInput(\n result.error.fieldErrors,\n customFocusHandlers(),\n formRef.current!\n );\n }\n } else {\n setFieldErrors({});\n const eventProxy = formEventProxy(e);\n await onSubmit?.(result.data, eventProxy);\n if (eventProxy.defaultPrevented) {\n endSubmit();\n return;\n }\n\n // We deviate from the remix code here a bit because of our async submit.\n // In remix's `FormImpl`, they use `event.currentTarget` to get the form,\n // but we already have the form in `formRef.current` so we can just use that.\n // If we use `event.currentTarget` here, it will break because `currentTarget`\n // will have changed since the start of the submission.\n if (fetcher) fetcher.submit(submitter || e.currentTarget);\n else\n submit(submitter || target, {\n replace,\n method: (submitter?.formMethod as FormMethod) || method,\n });\n }\n };\n\n return (\n <Form\n ref={mergeRefs([formRef, formRefProp])}\n {...rest}\n id={id}\n action={action}\n method={method}\n replace={replace}\n onSubmit={(e) => {\n e.preventDefault();\n handleSubmit(\n e,\n e.currentTarget,\n (e as unknown as HTMLSubmitEvent).nativeEvent\n );\n }}\n onReset={(event) => {\n onReset?.(event);\n if (event.defaultPrevented) return;\n reset();\n }}\n >\n <InternalFormContext.Provider value={contextValue}>\n <>\n <FormResetter formRef={formRef} resetAfterSubmit={resetAfterSubmit} />\n {subaction && (\n <input type=\"hidden\" value={subaction} name=\"subaction\" />\n )}\n {id && <input type=\"hidden\" value={id} name={FORM_ID_FIELD} />}\n {children}\n </>\n </InternalFormContext.Provider>\n </Form>\n );\n}\n","import { setPath } from \"setGet\";\nimport { MultiValueMap } from \"./MultiValueMap\";\n\nexport const objectFromPathEntries = (entries: [string, any][]) => {\n const map = new MultiValueMap<string, any>();\n entries.forEach(([key, value]) => map.add(key, value));\n return [...map.entries()].reduce(\n (acc, [key, value]) =>\n setPath(acc, key, value.length === 1 ? value[0] : value),\n {} as Record<string, any>\n );\n};\n","import * as R from \"remeda\";\nimport { CreateValidatorArg, GenericObject, Validator } from \"..\";\nimport { FORM_ID_FIELD } from \"../internal/constants\";\nimport { objectFromPathEntries } from \"../internal/flatten\";\n\nconst preprocessFormData = (data: GenericObject | FormData): GenericObject => {\n // A slightly janky way of determining if the data is a FormData object\n // since node doesn't really have FormData\n if (\"entries\" in data && typeof data.entries === \"function\")\n return objectFromPathEntries([...data.entries()]);\n return objectFromPathEntries(Object.entries(data));\n};\n\nconst omitInternalFields = (data: GenericObject): GenericObject =>\n R.omit(data, [FORM_ID_FIELD]);\n\n/**\n * Used to create a validator for a form.\n * It provides built-in handling for unflattening nested objects and\n * extracting the values from FormData.\n */\nexport function createValidator<T>(\n validator: CreateValidatorArg<T>\n): Validator<T> {\n return {\n validate: async (value) => {\n const data = preprocessFormData(value);\n const result = await validator.validate(omitInternalFields(data));\n\n if (result.error) {\n return {\n data: undefined,\n error: {\n fieldErrors: result.error,\n subaction: data.subaction,\n formId: data[FORM_ID_FIELD],\n },\n submittedData: data,\n formId: data[FORM_ID_FIELD],\n };\n }\n\n return {\n data: result.data,\n error: undefined,\n submittedData: data,\n formId: data[FORM_ID_FIELD],\n };\n },\n validateField: (data: GenericObject | FormData, field: string) =>\n validator.validateField(preprocessFormData(data), field),\n };\n}\n","import { useMemo } from \"react\";\nimport {} from \"../internal/getInputProps\";\nimport {\n useInternalFormContext,\n useClearError,\n useSetTouched,\n useDefaultValuesForForm,\n useFieldErrorsForForm,\n useInternalIsSubmitting,\n useInternalHasBeenSubmitted,\n useTouchedFields,\n useInternalIsValid,\n useFieldErrors,\n useValidateField,\n useValidate,\n useSetFieldErrors,\n useResetFormElement,\n useSyncedDefaultValues,\n useFormActionProp,\n useFormSubactionProp,\n useSubmitForm,\n useFormValues,\n} from \"../internal/hooks\";\nimport {\n FieldErrors,\n TouchedFields,\n ValidationResult,\n} from \"../validation/types\";\n\nexport type FormState = {\n fieldErrors: FieldErrors;\n isSubmitting: boolean;\n hasBeenSubmitted: boolean;\n touchedFields: TouchedFields;\n defaultValues: { [fieldName: string]: any };\n action?: string;\n subaction?: string;\n isValid: boolean;\n};\n\n/**\n * Returns information about the form.\n *\n * @param formId the id of the form. Only necessary if being used outside a ValidatedForm.\n */\nexport const useFormState = (formId?: string): FormState => {\n const formContext = useInternalFormContext(formId, \"useFormState\");\n const isSubmitting = useInternalIsSubmitting(formContext.formId);\n const hasBeenSubmitted = useInternalHasBeenSubmitted(formContext.formId);\n const touchedFields = useTouchedFields(formContext.formId);\n const isValid = useInternalIsValid(formContext.formId);\n const action = useFormActionProp(formContext.formId);\n const subaction = useFormSubactionProp(formContext.formId);\n\n const syncedDefaultValues = useSyncedDefaultValues(formContext.formId);\n const defaultValuesToUse = useDefaultValuesForForm(formContext);\n const hydratedDefaultValues =\n defaultValuesToUse.hydrateTo(syncedDefaultValues);\n\n const fieldErrorsFromState = useFieldErrors(formContext.formId);\n const fieldErrorsToUse = useFieldErrorsForForm(formContext);\n const hydratedFieldErrors = fieldErrorsToUse.hydrateTo(fieldErrorsFromState);\n\n return useMemo(\n () => ({\n action,\n subaction,\n defaultValues: hydratedDefaultValues,\n fieldErrors: hydratedFieldErrors ?? {},\n hasBeenSubmitted,\n isSubmitting,\n touchedFields,\n isValid,\n }),\n [\n action,\n hasBeenSubmitted,\n hydratedDefaultValues,\n hydratedFieldErrors,\n isSubmitting,\n isValid,\n subaction,\n touchedFields,\n ]\n );\n};\n\nexport type FormHelpers = {\n /**\n * Clear the error of the specified field.\n */\n clearError: (fieldName: string) => void;\n /**\n * Validate the specified field.\n */\n validateField: (fieldName: string) => Promise<string | null>;\n /**\n * Change the touched state of the specified field.\n */\n setTouched: (fieldName: string, touched: boolean) => void;\n /**\n * Validate the whole form and populate any errors.\n */\n validate: () => Promise<ValidationResult<unknown>>;\n /**\n * Clears all errors on the form.\n */\n clearAllErrors: () => void;\n /**\n * Resets the form.\n *\n * _Note_: The equivalent behavior can be achieved by calling formElement.reset()\n * or clicking a button element with `type=\"reset\"`.\n */\n reset: () => void;\n /**\n * Submits the form, running all validations first.\n *\n * _Note_: This is equivalent to clicking a button element with `type=\"submit\"` or calling formElement.submit().\n */\n submit: () => void;\n /**\n * Returns the current form values as FormData\n */\n getValues: () => FormData;\n};\n\n/**\n * Returns helpers that can be used to update the form state.\n *\n * @param formId the id of the form. Only necessary if being used outside a ValidatedForm.\n */\nexport const useFormHelpers = (formId?: string): FormHelpers => {\n const formContext = useInternalFormContext(formId, \"useFormHelpers\");\n const setTouched = useSetTouched(formContext);\n const validateField = useValidateField(formContext.formId);\n const validate = useValidate(formContext.formId);\n const clearError = useClearError(formContext);\n const setFieldErrors = useSetFieldErrors(formContext.formId);\n const reset = useResetFormElement(formContext.formId);\n const submit = useSubmitForm(formContext.formId);\n const getValues = useFormValues(formContext.formId);\n return useMemo(\n () => ({\n setTouched,\n validateField,\n clearError,\n validate,\n clearAllErrors: () => setFieldErrors({}),\n reset,\n submit,\n getValues,\n }),\n [\n clearError,\n reset,\n setFieldErrors,\n setTouched,\n submit,\n validate,\n validateField,\n getValues,\n ]\n );\n};\n","import { useCallback, useMemo } from \"react\";\nimport {\n useInternalFormContext,\n useRegisterReceiveFocus,\n} from \"./internal/hooks\";\nimport { useFormHelpers, useFormState } from \"./unreleased/formStateHooks\";\nimport {\n FieldErrors,\n TouchedFields,\n ValidationResult,\n} from \"./validation/types\";\n\nexport type FormContextValue = {\n /**\n * All the errors in all the fields in the form.\n */\n fieldErrors: FieldErrors;\n /**\n * Clear the errors of the specified fields.\n */\n clearError: (...names: string[]) => void;\n /**\n * Validate the specified field.\n */\n validateField: (fieldName: string) => Promise<string | null>;\n /**\n * The `action` prop of the form.\n */\n action?: string;\n /**\n * The `subaction` prop of the form.\n */\n subaction?: string;\n /**\n * Whether or not the form is submitting.\n */\n isSubmitting: boolean;\n /**\n * Whether or not a submission has been attempted.\n * This is true once the form has been submitted, even if there were validation errors.\n * Resets to false when the form is reset.\n */\n hasBeenSubmitted: boolean;\n /**\n * Whether or not the form is valid.\n */\n isValid: boolean;\n /**\n * The default values of the form.\n */\n defaultValues?: { [fieldName: string]: any };\n /**\n * Register a custom focus handler to be used when\n * the field needs to receive focus due to a validation error.\n */\n registerReceiveFocus: (fieldName: string, handler: () => void) => () => void;\n /**\n * Any fields that have been touched by the user.\n */\n touchedFields: TouchedFields;\n /**\n * Change the touched state of the specified field.\n */\n setFieldTouched: (fieldName: string, touched: boolean) => void;\n /**\n * Validate the whole form and populate any errors.\n */\n validate: () => Promise<ValidationResult<unknown>>;\n /**\n * Clears all errors on the form.\n */\n clearAllErrors: () => void;\n /**\n * Resets the form.\n *\n * _Note_: The equivalent behavior can be achieved by calling formElement.reset()\n * or clicking a button element with `type=\"reset\"`.\n */\n reset: () => void;\n /**\n * Submits the form, running all validations first.\n *\n * _Note_: This is equivalent to clicking a button element with `type=\"submit\"` or calling formElement.submit().\n */\n submit: () => void;\n /**\n * Returns the current form values as FormData\n */\n getValues: () => FormData;\n};\n\n/**\n * Provides access to some of the internal state of the form.\n */\nexport const useFormContext = (formId?: string): FormContextValue => {\n // Try to access context so we get our error specific to this hook if it's not there\n const context = useInternalFormContext(formId, \"useFormContext\");\n const state = useFormState(formId);\n const {\n clearError: internalClearError,\n setTouched,\n validateField,\n clearAllErrors,\n validate,\n reset,\n submit,\n getValues,\n } = useFormHelpers(formId);\n\n const registerReceiveFocus = useRegisterReceiveFocus(context.formId);\n\n const clearError = useCallback(\n (...names: string[]) => {\n names.forEach((name) => {\n internalClearError(name);\n });\n },\n [internalClearError]\n );\n\n return useMemo(\n () => ({\n ...state,\n setFieldTouched: setTouched,\n validateField,\n clearError,\n registerReceiveFocus,\n clearAllErrors,\n validate,\n reset,\n submit,\n getValues,\n }),\n [\n clearAllErrors,\n clearError,\n registerReceiveFocus,\n reset,\n setTouched,\n state,\n submit,\n validate,\n validateField,\n getValues,\n ]\n );\n};\n","import React, { useMemo } from \"react\";\nimport { useCallback } from \"react\";\nimport invariant from \"tiny-invariant\";\nimport { InternalFormContextValue } from \"../formContext\";\nimport {\n useFieldDefaultValue,\n useFieldError,\n useInternalFormContext,\n useInternalHasBeenSubmitted,\n useValidateField,\n} from \"../hooks\";\nimport { useRegisterControlledField } from \"./controlledFields\";\nimport { useFormStore } from \"./storeHooks\";\n\nexport type FieldArrayValidationBehavior = \"onChange\" | \"onSubmit\";\n\nexport type FieldArrayValidationBehaviorOptions = {\n initial: FieldArrayValidationBehavior;\n whenSubmitted: FieldArrayValidationBehavior;\n};\n\nconst useInternalFieldArray = (\n context: InternalFormContextValue,\n field: string,\n validationBehavior?: Partial<FieldArrayValidationBehaviorOptions>\n) => {\n const value = useFieldDefaultValue(field, context);\n useRegisterControlledField(context, field);\n const hasBeenSubmitted = useInternalHasBeenSubmitted(context.formId);\n const validateField = useValidateField(context.formId);\n const error = useFieldError(field, context);\n\n const resolvedValidationBehavior: FieldArrayValidationBehaviorOptions = {\n initial: \"onSubmit\",\n whenSubmitted: \"onChange\",\n ...validationBehavior,\n };\n\n const behavior = hasBeenSubmitted\n ? resolvedValidationBehavior.whenSubmitted\n : resolvedValidationBehavior.initial;\n\n const maybeValidate = useCallback(() => {\n if (behavior === \"onChange\") {\n validateField(field);\n }\n }, [behavior, field, validateField]);\n\n invariant(\n value === undefined || value === null || Array.isArray(value),\n `FieldArray: defaultValue value for ${field} must be an array, null, or undefined`\n );\n\n const arr = useFormStore(\n context.formId,\n (state) => state.controlledFields.array\n );\n\n const helpers = useMemo(\n () => ({\n push: (item: any) => {\n arr.push(field, item);\n maybeValidate();\n },\n swap: (indexA: number, indexB: number) => {\n arr.swap(field, indexA, indexB);\n maybeValidate();\n },\n move: (from: number, to: number) => {\n arr.move(field, from, to);\n maybeValidate();\n },\n insert: (index: number, value: any) => {\n arr.insert(field, index, value);\n maybeValidate();\n },\n unshift: (value: any) => {\n arr.unshift(field, value);\n maybeValidate();\n },\n remove: (index: number) => {\n arr.remove(field, index);\n maybeValidate();\n },\n pop: () => {\n arr.pop(field);\n maybeValidate();\n },\n replace: (index: number, value: any) => {\n arr.replace(field, index, value);\n maybeValidate();\n },\n }),\n [arr, field, maybeValidate]\n );\n\n const arrayValue = useMemo(() => value ?? [], [value]);\n\n return [arrayValue, helpers, error] as const;\n};\n\nexport type FieldArrayHelpers<Item = any> = {\n push: (item: Item) => void;\n swap: (indexA: number, indexB: number) => void;\n move: (from: number, to: number) => void;\n insert: (index: number, value: Item) => void;\n unshift: (value: Item) => void;\n remove: (index: number) => void;\n pop: () => void;\n replace: (index: number, value: Item) => void;\n};\n\nexport type UseFieldArrayOptions = {\n formId?: string;\n validationBehavior?: Partial<FieldArrayValidationBehaviorOptions>;\n};\n\nexport function useFieldArray<Item = any>(\n name: string,\n { formId, validationBehavior }: UseFieldArrayOptions = {}\n) {\n const context = useInternalFormContext(formId, \"FieldArray\");\n\n return useInternalFieldArray(context, name, validationBehavior) as [\n itemDefaults: Item[],\n helpers: FieldArrayHelpers,\n error: string | undefined\n ];\n}\n\nexport type FieldArrayProps = {\n name: string;\n children: (\n itemDefaults: any[],\n helpers: FieldArrayHelpers,\n error: string | undefined\n ) => React.ReactNode;\n formId?: string;\n validationBehavior?: FieldArrayValidationBehaviorOptions;\n};\n\nexport const FieldArray = ({\n name,\n children,\n formId,\n validationBehavior,\n}: FieldArrayProps) => {\n const context = useInternalFormContext(formId, \"FieldArray\");\n const [value, helpers, error] = useInternalFieldArray(\n context,\n name,\n validationBehavior\n );\n return <>{children(value, helpers, error)}</>;\n};\n"],"names":["__spreadArray","this","to","from","pack","i","l","ar","purry","fn","args","lazy","diff","arrayArgs","ret","data","_reduceLazy","array","indexed","acc","item","index","result","isArray","keyList","hasProp","equals","_equals","a","b","arrA","arrB","length","key","dateA","dateB","regexpA","regexpB","keys","omit","_omit","object","names","set","_a","name","value","omitBy","_omitBy","pathOr","_pathOr","path","defaultValue","current","_i","path_1","prop","uniq","_uniq","getCheckboxChecked","checkboxValue","newValue","val","getRadioChecked","radioValue","defaultValidationBehavior","createGetInputProps","clearError","validate","touched","setTouched","hasBeenSubmitted","validationBehavior","validationBehaviors","props","behavior","inputProps","R.omitBy","stringToPathArray","match","_","rest","setPath","_setPathNormalized","leadingSegments","lastSegment","obj","segment","nextSegment","getPath","R.pathOr","isProduction","prefix","invariant","condition","message","provided","FORM_ID_FIELD","FORM_DEFAULTS_FIELD","formDefaultValuesKey","formId","InternalFormContext","createContext","serverData","hydratedData","hydrated","hydratable","createStoreImpl","createState","state","listeners","setState","partial","replace","nextState","previousState","listener","getState","api","createStore","e","require$$0","h","k","m","n","p","q","d","f","c","g","r","t","u","useSyncExternalStoreShim_production_min","shimModule","require$$1","v","w","withSelector_production_min","withSelectorModule","useStore","selector","equalityFn","slice","useSyncExternalStoreWithSelector","useDebugValue","createImpl","createStore__default","useBoundStore","create","create$1","Q","Z","L","s","o","nn","X","rn","y","tn","U","j","O","S","P","M","x","H","A","z","I","E","R","en","on","D","F","G","W","B","un","an","immerImpl","initializer","get","store","updater","produce","immer","requestSubmit","element","submitter","validateSubmitter","dummySubmitter","raise","errorConstructor","getArray","values","field","swap","indexA","indexB","itemA","itemB","hasItemA","hasItemB","sparseSplice","start","deleteCount","move","insert","remove","mutateAsArray","mutate","beforeKeys","arr","newKeys","getDeepArrayPaths","basePath","noOp","defaultFormState","createFormState","fieldName","error","errors","nextDefaults","_b","formElement","validator","_c","clear","promise","resolve","arrayUtil.getArray","arrayUtil.swap","arrayUtil.mutateAsArray","arrayUtil.move","arrayUtil.insert","arrayUtil.remove","arrayUtil.replace","useRootFormStore","setter","useFormStore","useInternalFormContext","hookName","formContext","useContext","useErrorResponseForForm","fetcher","subaction","actionData","useActionData","useFieldErrorsForForm","context","response","useDefaultValuesFromLoader","matches","useMatches","dataKey","useDefaultValuesForForm","defaultValuesProp","errorResponse","defaultValuesFromLoader","useHasActiveFormSubmit","transition","useTransition","useFieldTouched","setFieldTouched","useCallback","useFieldError","fieldErrors","useClearError","useCurrentDefaultValueForField","useFieldDefaultValue","defaultValues","useInternalIsSubmitting","useInternalIsValid","useInternalHasBeenSubmitted","useValidateField","useValidate","noOpReceiver","useRegisterReceiveFocus","defaultDefaultValues","useSyncedDefaultValues","useSetTouched","useTouchedFields","useFieldErrors","useSetFieldErrors","useResetFormElement","useSubmitForm","useFormActionProp","useFormSubactionProp","useFormValues","useControlledFieldValue","isFormHydrated","useRegisterControlledField","resolveUpdate","useEffect","register","unregister","useControllableValue","setControlledFieldValue","setValue","useUpdateControllableValue","useIsSubmitting","useIsValid","useField","options","providedFormId","handleReceiveFocus","validateField","registerReceiveFocus","useMemo","helpers","getInputProps","useControlField","useUpdateControlledField","json","init","responseInit","headers","validationError","repopulateFields","setFormDefaults","MultiValueMap","useMultiValueMap","ref","useRef","useSubmitComplete","isSubmitting","callback","isPending","mergeRefs","refs","useIsomorphicLayoutEffect","useLayoutEffect","useDeepEqualsMemo","areEqual","R.equals","getDataFromForm","el","nonNull","focusFirstInvalidInput","customFocusHandlers","namesInOrder","input","uniqueNamesInOrder","R.uniq","handler","elem","selectedRadio","useFormId","providedId","symbolId","useState","FormResetter","resetAfterSubmit","formRef","isValid","formEventProxy","event","defaultPrevented","target","ValidatedForm","onSubmit","children","action","unMemoizedDefaults","formRefProp","onReset","disableFocusOnError","method","id","providedDefaultValues","contextValue","backendError","backendDefaultValues","hasActiveSubmission","Form","RemixForm","submit","useSubmit","setFieldErrors","setFieldError","reset","startSubmit","endSubmit","syncFormProps","setFormElementInState","cleanupForm","registerForm","handleSubmit","nativeEvent","formDataToValidate","eventProxy","React","objectFromPathEntries","entries","map","preprocessFormData","omitInternalFields","R.omit","createValidator","useFormState","touchedFields","syncedDefaultValues","hydratedDefaultValues","fieldErrorsFromState","hydratedFieldErrors","useFormHelpers","getValues","useFormContext","internalClearError","clearAllErrors","useInternalFieldArray","resolvedValidationBehavior","maybeValidate","useFieldArray","FieldArray"],"mappings":"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"}