remix-validated-form 4.6.1 → 4.6.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"remix-validated-form.es.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":["this","from","i","l","fn","a","b","uniq","R.omitBy","_","R.pathOr","hydratedData","replace","require$$0","h","k","n","p","q","d","f","c","g","r","t","u","shimModule","require$$1","v","w","e","m","withSelectorModule","useSyncExternalStoreWithSelector","createStore__default","o","s","produce","arrayUtil.getArray","arrayUtil.swap","arrayUtil.mutateAsArray","arrayUtil.move","arrayUtil.insert","arrayUtil.remove","arrayUtil.replace","create","state","match","touched","fieldErrors","value","R.equals","R.uniq","Form","RemixForm","useLayoutEffect","_a","R.omit"],"mappings":"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"}
1
+ {"version":3,"file":"remix-validated-form.es.js","sources":["../../../node_modules/lodash/_listCacheClear.js","../../../node_modules/lodash/eq.js","../../../node_modules/lodash/_assocIndexOf.js","../../../node_modules/lodash/_listCacheDelete.js","../../../node_modules/lodash/_listCacheGet.js","../../../node_modules/lodash/_listCacheHas.js","../../../node_modules/lodash/_listCacheSet.js","../../../node_modules/lodash/_ListCache.js","../../../node_modules/lodash/_stackClear.js","../../../node_modules/lodash/_stackDelete.js","../../../node_modules/lodash/_stackGet.js","../../../node_modules/lodash/_stackHas.js","../../../node_modules/lodash/_freeGlobal.js","../../../node_modules/lodash/_root.js","../../../node_modules/lodash/_Symbol.js","../../../node_modules/lodash/_getRawTag.js","../../../node_modules/lodash/_objectToString.js","../../../node_modules/lodash/_baseGetTag.js","../../../node_modules/lodash/isObject.js","../../../node_modules/lodash/isFunction.js","../../../node_modules/lodash/_coreJsData.js","../../../node_modules/lodash/_isMasked.js","../../../node_modules/lodash/_toSource.js","../../../node_modules/lodash/_baseIsNative.js","../../../node_modules/lodash/_getValue.js","../../../node_modules/lodash/_getNative.js","../../../node_modules/lodash/_Map.js","../../../node_modules/lodash/_nativeCreate.js","../../../node_modules/lodash/_hashClear.js","../../../node_modules/lodash/_hashDelete.js","../../../node_modules/lodash/_hashGet.js","../../../node_modules/lodash/_hashHas.js","../../../node_modules/lodash/_hashSet.js","../../../node_modules/lodash/_Hash.js","../../../node_modules/lodash/_mapCacheClear.js","../../../node_modules/lodash/_isKeyable.js","../../../node_modules/lodash/_getMapData.js","../../../node_modules/lodash/_mapCacheDelete.js","../../../node_modules/lodash/_mapCacheGet.js","../../../node_modules/lodash/_mapCacheHas.js","../../../node_modules/lodash/_mapCacheSet.js","../../../node_modules/lodash/_MapCache.js","../../../node_modules/lodash/_stackSet.js","../../../node_modules/lodash/_Stack.js","../../../node_modules/lodash/_setCacheAdd.js","../../../node_modules/lodash/_setCacheHas.js","../../../node_modules/lodash/_SetCache.js","../../../node_modules/lodash/_arraySome.js","../../../node_modules/lodash/_cacheHas.js","../../../node_modules/lodash/_equalArrays.js","../../../node_modules/lodash/_Uint8Array.js","../../../node_modules/lodash/_mapToArray.js","../../../node_modules/lodash/_setToArray.js","../../../node_modules/lodash/_equalByTag.js","../../../node_modules/lodash/_arrayPush.js","../../../node_modules/lodash/isArray.js","../../../node_modules/lodash/_baseGetAllKeys.js","../../../node_modules/lodash/_arrayFilter.js","../../../node_modules/lodash/stubArray.js","../../../node_modules/lodash/_getSymbols.js","../../../node_modules/lodash/_baseTimes.js","../../../node_modules/lodash/isObjectLike.js","../../../node_modules/lodash/_baseIsArguments.js","../../../node_modules/lodash/isArguments.js","../../../node_modules/lodash/stubFalse.js","../../../node_modules/lodash/isBuffer.js","../../../node_modules/lodash/_isIndex.js","../../../node_modules/lodash/isLength.js","../../../node_modules/lodash/_baseIsTypedArray.js","../../../node_modules/lodash/_baseUnary.js","../../../node_modules/lodash/_nodeUtil.js","../../../node_modules/lodash/isTypedArray.js","../../../node_modules/lodash/_arrayLikeKeys.js","../../../node_modules/lodash/_isPrototype.js","../../../node_modules/lodash/_overArg.js","../../../node_modules/lodash/_nativeKeys.js","../../../node_modules/lodash/_baseKeys.js","../../../node_modules/lodash/isArrayLike.js","../../../node_modules/lodash/keys.js","../../../node_modules/lodash/_getAllKeys.js","../../../node_modules/lodash/_equalObjects.js","../../../node_modules/lodash/_DataView.js","../../../node_modules/lodash/_Promise.js","../../../node_modules/lodash/_Set.js","../../../node_modules/lodash/_WeakMap.js","../../../node_modules/lodash/_getTag.js","../../../node_modules/lodash/_baseIsEqualDeep.js","../../../node_modules/lodash/_baseIsEqual.js","../../../node_modules/lodash/_baseIsMatch.js","../../../node_modules/lodash/_isStrictComparable.js","../../../node_modules/lodash/_getMatchData.js","../../../node_modules/lodash/_matchesStrictComparable.js","../../../node_modules/lodash/_baseMatches.js","../../../node_modules/lodash/isSymbol.js","../../../node_modules/lodash/_isKey.js","../../../node_modules/lodash/memoize.js","../../../node_modules/lodash/_memoizeCapped.js","../../../node_modules/lodash/_stringToPath.js","../../../node_modules/lodash/_arrayMap.js","../../../node_modules/lodash/_baseToString.js","../../../node_modules/lodash/toString.js","../../../node_modules/lodash/_castPath.js","../../../node_modules/lodash/_toKey.js","../../../node_modules/lodash/_baseGet.js","../../../node_modules/lodash/get.js","../../../node_modules/lodash/_baseHasIn.js","../../../node_modules/lodash/_hasPath.js","../../../node_modules/lodash/hasIn.js","../../../node_modules/lodash/_baseMatchesProperty.js","../../../node_modules/lodash/identity.js","../../../node_modules/lodash/_baseProperty.js","../../../node_modules/lodash/_basePropertyDeep.js","../../../node_modules/lodash/property.js","../../../node_modules/lodash/_baseIteratee.js","../../../node_modules/lodash/negate.js","../../../node_modules/lodash/_defineProperty.js","../../../node_modules/lodash/_baseAssignValue.js","../../../node_modules/lodash/_assignValue.js","../../../node_modules/lodash/_baseSet.js","../../../node_modules/lodash/_basePickBy.js","../../../node_modules/lodash/_getPrototype.js","../../../node_modules/lodash/_getSymbolsIn.js","../../../node_modules/lodash/_nativeKeysIn.js","../../../node_modules/lodash/_baseKeysIn.js","../../../node_modules/lodash/keysIn.js","../../../node_modules/lodash/_getAllKeysIn.js","../../../node_modules/lodash/pickBy.js","../../../node_modules/lodash/omitBy.js","../src/internal/logic/getCheckboxChecked.ts","../src/internal/logic/getRadioChecked.ts","../src/internal/getInputProps.ts","../../../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../src/internal/constants.ts","../src/internal/formContext.ts","../src/internal/hydratable.ts","../../../node_modules/lodash/set.js","../../../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","../../../node_modules/lodash/_baseFindIndex.js","../../../node_modules/lodash/_baseIsNaN.js","../../../node_modules/lodash/_strictIndexOf.js","../../../node_modules/lodash/_baseIndexOf.js","../../../node_modules/lodash/_arrayIncludes.js","../../../node_modules/lodash/_arrayIncludesWith.js","../../../node_modules/lodash/noop.js","../../../node_modules/lodash/_createSet.js","../../../node_modules/lodash/_baseUniq.js","../../../node_modules/lodash/uniq.js","../src/internal/MultiValueMap.ts","../src/internal/submissionCallbacks.ts","../../../node_modules/lodash/isEqual.js","../src/internal/util.ts","../src/ValidatedForm.tsx","../../../node_modules/lodash/_arrayEach.js","../../../node_modules/lodash/_copyObject.js","../../../node_modules/lodash/_baseAssign.js","../../../node_modules/lodash/_baseAssignIn.js","../../../node_modules/lodash/_cloneBuffer.js","../../../node_modules/lodash/_copyArray.js","../../../node_modules/lodash/_copySymbols.js","../../../node_modules/lodash/_copySymbolsIn.js","../../../node_modules/lodash/_initCloneArray.js","../../../node_modules/lodash/_cloneArrayBuffer.js","../../../node_modules/lodash/_cloneDataView.js","../../../node_modules/lodash/_cloneRegExp.js","../../../node_modules/lodash/_cloneSymbol.js","../../../node_modules/lodash/_cloneTypedArray.js","../../../node_modules/lodash/_initCloneByTag.js","../../../node_modules/lodash/_baseCreate.js","../../../node_modules/lodash/_initCloneObject.js","../../../node_modules/lodash/_baseIsMap.js","../../../node_modules/lodash/isMap.js","../../../node_modules/lodash/_baseIsSet.js","../../../node_modules/lodash/isSet.js","../../../node_modules/lodash/_baseClone.js","../../../node_modules/lodash/last.js","../../../node_modules/lodash/_baseSlice.js","../../../node_modules/lodash/_parent.js","../../../node_modules/lodash/_baseUnset.js","../../../node_modules/lodash/isPlainObject.js","../../../node_modules/lodash/_customOmitClone.js","../../../node_modules/lodash/_isFlattenable.js","../../../node_modules/lodash/_baseFlatten.js","../../../node_modules/lodash/flatten.js","../../../node_modules/lodash/_apply.js","../../../node_modules/lodash/_overRest.js","../../../node_modules/lodash/constant.js","../../../node_modules/lodash/_baseSetToString.js","../../../node_modules/lodash/_shortOut.js","../../../node_modules/lodash/_setToString.js","../../../node_modules/lodash/_flatRest.js","../../../node_modules/lodash/omit.js","../src/internal/flatten.ts","../src/validation/createValidator.ts","../src/unreleased/formStateHooks.ts","../src/userFacingFormContext.ts","../src/internal/state/fieldArray.tsx"],"sourcesContent":["/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\nmodule.exports = negate;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nmodule.exports = pickBy;\n","var baseIteratee = require('./_baseIteratee'),\n negate = require('./negate'),\n pickBy = require('./pickBy');\n\n/**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\nfunction omitBy(object, predicate) {\n return pickBy(object, negate(baseIteratee(predicate)));\n}\n\nmodule.exports = omitBy;\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 omitBy from \"lodash/omitBy\";\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 omitBy(inputProps, (value) => value === undefined) as T;\n };\n};\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","var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\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 lodashGet from \"lodash/get\";\nimport lodashSet from \"lodash/set\";\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 = lodashGet(values, field);\n if (value === undefined || value === null) {\n const newValue: unknown[] = [];\n lodashSet(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 }\n lodashSet(arr, key.substring(field.length), value);\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 = lodashGet(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 lodashGet from \"lodash/get\";\nimport lodashSet from \"lodash/set\";\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 { useControlledFieldStore } from \"./controlledFieldStore\";\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 lodashSet(\n state.controlledFields.values,\n fieldName,\n lodashGet(state.formProps?.defaultValues, fieldName)\n );\n lodashSet(\n state.currentDefaultValues,\n fieldName,\n lodashGet(state.formProps?.defaultValues, fieldName)\n );\n }\n\n delete state.controlledFields.refCounts[fieldName];\n });\n },\n getValue: (fieldName) =>\n lodashGet(get().controlledFields.values, fieldName),\n setValue: (fieldName, value) => {\n set((state) => {\n lodashSet(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 lodashGet from \"lodash/get\";\nimport { useCallback, useContext } from \"react\";\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) => lodashGet(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) => lodashGet(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","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\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","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","import isEqual from \"lodash/isEqual\";\nimport type React from \"react\";\nimport { useEffect, useLayoutEffect, useRef } from \"react\";\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 || isEqual(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 uniq from \"lodash/uniq\";\nimport React, {\n ComponentProps,\n FormEvent,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\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 = 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","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","var arrayMap = require('./_arrayMap'),\n baseClone = require('./_baseClone'),\n baseUnset = require('./_baseUnset'),\n castPath = require('./_castPath'),\n copyObject = require('./_copyObject'),\n customOmitClone = require('./_customOmitClone'),\n flatRest = require('./_flatRest'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nmodule.exports = omit;\n","import set from \"lodash/set\";\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]) => set(acc, key, value.length === 1 ? value[0] : value),\n {}\n );\n};\n","import omit from \"lodash/omit\";\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 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":["listCacheClear","eq","require$$0","assocIndexOf","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","require$$1","require$$2","require$$3","require$$4","ListCache","stackClear","stackDelete","stackGet","stackHas","freeGlobal","global","root","Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","e","objectToString","baseGetTag","isObject","funcTag","genTag","isFunction","coreJsData","isMasked","funcProto","funcToString","toSource","baseIsNative","getValue","getNative","Map","nativeCreate","hashClear","hashDelete","HASH_UNDEFINED","hashGet","hashHas","hashSet","Hash","mapCacheClear","isKeyable","getMapData","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","LARGE_ARRAY_SIZE","stackSet","require$$5","Stack","setCacheAdd","setCacheHas","SetCache","arraySome","cacheHas","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","othValue","Uint8Array","mapToArray","setToArray","set","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","stringTag","symbolTag","arrayBufferTag","dataViewTag","symbolProto","symbolValueOf","equalByTag","arrayPush","isArray","baseGetAllKeys","arrayFilter","stubArray","propertyIsEnumerable","nativeGetSymbols","getSymbols","baseTimes","n","isObjectLike","argsTag","baseIsArguments","isArguments","stubFalse","isBuffer","MAX_SAFE_INTEGER","isIndex","isLength","arrayTag","objectTag","weakMapTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","baseIsTypedArray","baseUnary","nodeUtil","isTypedArray","arrayLikeKeys","isPrototype","overArg","nativeKeys","baseKeys","isArrayLike","keys","getAllKeys","equalObjects","DataView","Promise","Set","WeakMap","require$$6","getTag","require$$7","baseIsEqualDeep","baseIsEqual","baseIsMatch","isStrictComparable","getMatchData","matchesStrictComparable","baseMatches","isSymbol","isKey","FUNC_ERROR_TEXT","memoize","memoizeCapped","stringToPath","arrayMap","INFINITY","baseToString","toString","castPath","toKey","baseGet","get","baseHasIn","hasPath","hasIn","baseMatchesProperty","identity","baseProperty","basePropertyDeep","property","baseIteratee","negate","defineProperty","baseAssignValue","assignValue","baseSet","basePickBy","getPrototype","getSymbolsIn","nativeKeysIn","baseKeysIn","keysIn","getAllKeysIn","pickBy","omitBy","fn","hydratedData","replace","h","a","b","k","l","p","q","d","f","c","g","r","t","u","shimModule","v","w","m","withSelectorModule","useSyncExternalStoreWithSelector","createStore__default","i","o","s","produce","lodashGet","lodashSet","from","arrayUtil.getArray","arrayUtil.swap","arrayUtil.mutateAsArray","arrayUtil.move","arrayUtil.insert","arrayUtil.remove","arrayUtil.replace","create","state","match","touched","fieldErrors","value","baseFindIndex","baseIsNaN","strictIndexOf","baseIndexOf","arrayIncludes","arrayIncludesWith","noop","createSet","baseUniq","isEqual","uniq","Form","RemixForm","useLayoutEffect","_a","arrayEach","copyObject","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","initCloneArray","cloneArrayBuffer","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","initCloneByTag","baseCreate","initCloneObject","baseIsMap","isMap","baseIsSet","isSet","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","baseClone","key","last","baseSlice","parent","baseUnset","isPlainObject","customOmitClone","isFlattenable","baseFlatten","flatten","apply","overRest","constant","baseSetToString","shortOut","setToString","flatRest","omit"],"mappings":"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"}