@lub-crm/forms 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/dist/index.html +119 -0
- package/dist/lub-forms.es.js +1927 -3082
- package/dist/lub-forms.es.js.map +1 -1
- package/dist/lub-forms.standalone.js.map +1 -1
- package/dist/lub-forms.umd.js +99 -99
- package/dist/lub-forms.umd.js.map +1 -1
- package/dist/vite.svg +1 -0
- package/package.json +10 -8
- package/src/embed.ts +4 -4
- package/src/main.tsx +1 -1
package/dist/lub-forms.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lub-forms.es.js","sources":["../node_modules/react/cjs/react-compiler-runtime.production.js","../node_modules/react/cjs/react-compiler-runtime.development.js","../node_modules/react/compiler-runtime.js","../node_modules/react-hook-form/dist/index.esm.mjs","../src/api/client.ts","../node_modules/@hookform/resolvers/dist/resolvers.mjs","../node_modules/@hookform/resolvers/zod/dist/zod.mjs","../src/core/FormProvider.tsx","../src/utils/cn.ts","../src/fields/FieldWrapper.tsx","../src/fields/TextField.tsx","../src/fields/TextareaField.tsx","../src/fields/NumberField.tsx","../src/fields/SelectField.tsx","../src/fields/RadioField.tsx","../src/fields/CheckboxField.tsx","../src/fields/CheckboxGroupField.tsx","../src/fields/DateField.tsx","../src/fields/TimeField.tsx","../src/fields/DateTimeField.tsx","../src/fields/FileField.tsx","../src/fields/HiddenField.tsx","../src/utils/countries.ts","../src/fields/CountryField.tsx","../src/fields/StateField.tsx","../src/fields/HtmlField.tsx","../src/fields/DividerField.tsx","../src/fields/RecaptchaField.tsx","../src/fields/index.ts","../src/core/FormRenderer.tsx","../src/core/StepManager.tsx","../node_modules/zod/v3/helpers/util.js","../node_modules/zod/v3/ZodError.js","../node_modules/zod/v3/locales/en.js","../node_modules/zod/v3/errors.js","../node_modules/zod/v3/helpers/parseUtil.js","../node_modules/zod/v3/helpers/errorUtil.js","../node_modules/zod/v3/types.js","../src/validation/schema-builder.ts","../src/utils/css-variables.ts","../src/core/LubForm.tsx","../src/validation/conditional.ts","../src/hooks/useFormApi.ts","../src/hooks/useConditionalLogic.ts","../src/hooks/useMultiStep.ts","../src/hooks/useFormDesign.ts"],"sourcesContent":["/**\n * @license React\n * react-compiler-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\n\"use strict\";\nvar ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nexports.c = function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n};\n","/**\n * @license React\n * react-compiler-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n var ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n exports.c = function (size) {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher.useMemoCache(size);\n };\n })();\n","/**\n * Copyright (c) Meta Platforms, Inc. and 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\n'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-compiler-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-compiler-runtime.development.js');\n}\n","import React from 'react';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nvar isDateObject = (value) => value instanceof Date;\n\nvar isNullOrUndefined = (value) => value == null;\n\nconst isObjectType = (value) => typeof value === 'object';\nvar isObject = (value) => !isNullOrUndefined(value) &&\n !Array.isArray(value) &&\n isObjectType(value) &&\n !isDateObject(value);\n\nvar getEventValue = (event) => isObject(event) && event.target\n ? isCheckBoxInput(event.target)\n ? event.target.checked\n : event.target.value\n : event;\n\nvar getNodeParentName = (name) => name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\n\nvar isNameInFieldArray = (names, name) => names.has(getNodeParentName(name));\n\nvar isPlainObject = (tempObject) => {\n const prototypeCopy = tempObject.constructor && tempObject.constructor.prototype;\n return (isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf'));\n};\n\nvar isWeb = typeof window !== 'undefined' &&\n typeof window.HTMLElement !== 'undefined' &&\n typeof document !== 'undefined';\n\nfunction cloneObject(data) {\n if (data instanceof Date) {\n return new Date(data);\n }\n const isFileListInstance = typeof FileList !== 'undefined' && data instanceof FileList;\n if (isWeb && (data instanceof Blob || isFileListInstance)) {\n return data;\n }\n const isArray = Array.isArray(data);\n if (!isArray && !(isObject(data) && isPlainObject(data))) {\n return data;\n }\n const copy = isArray ? [] : Object.create(Object.getPrototypeOf(data));\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n copy[key] = cloneObject(data[key]);\n }\n }\n return copy;\n}\n\nvar isKey = (value) => /^\\w*$/.test(value);\n\nvar isUndefined = (val) => val === undefined;\n\nvar compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];\n\nvar stringToPath = (input) => compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n\nvar get = (object, path, defaultValue) => {\n if (!path || !isObject(object)) {\n return defaultValue;\n }\n const result = (isKey(path) ? [path] : stringToPath(path)).reduce((result, key) => isNullOrUndefined(result) ? result : result[key], object);\n return isUndefined(result) || result === object\n ? isUndefined(object[path])\n ? defaultValue\n : object[path]\n : result;\n};\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar set = (object, path, value) => {\n let index = -1;\n const tempPath = isKey(path) ? [path] : stringToPath(path);\n const length = tempPath.length;\n const lastIndex = length - 1;\n while (++index < length) {\n const key = tempPath[index];\n let newValue = value;\n if (index !== lastIndex) {\n const objValue = object[key];\n newValue =\n isObject(objValue) || Array.isArray(objValue)\n ? objValue\n : !isNaN(+tempPath[index + 1])\n ? []\n : {};\n }\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n object[key] = newValue;\n object = object[key];\n }\n};\n\nconst EVENTS = {\n BLUR: 'blur',\n FOCUS_OUT: 'focusout',\n CHANGE: 'change',\n};\nconst VALIDATION_MODE = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all',\n};\nconst INPUT_VALIDATION_RULES = {\n max: 'max',\n min: 'min',\n maxLength: 'maxLength',\n minLength: 'minLength',\n pattern: 'pattern',\n required: 'required',\n validate: 'validate',\n};\n\n/**\n * Separate context for `control` to prevent unnecessary rerenders.\n * Internal hooks that only need control use this instead of full form context.\n */\nconst HookFormControlContext = React.createContext(null);\nHookFormControlContext.displayName = 'HookFormControlContext';\n/**\n * @internal Internal hook to access only control from context.\n */\nconst useFormControlContext = () => React.useContext(HookFormControlContext);\n\nvar getProxyFormState = (formState, control, localProxyFormState, isRoot = true) => {\n const result = {\n defaultValues: control._defaultValues,\n };\n for (const key in formState) {\n Object.defineProperty(result, key, {\n get: () => {\n const _key = key;\n if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n }\n localProxyFormState && (localProxyFormState[_key] = true);\n return formState[_key];\n },\n });\n }\n return result;\n};\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n\n/**\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\n *\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, control } = useForm({\n * defaultValues: {\n * firstName: \"firstName\"\n * }});\n * const { dirtyFields } = useFormState({\n * control\n * });\n * const onSubmit = (data) => console.log(data);\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input {...register(\"firstName\")} placeholder=\"First Name\" />\n * {dirtyFields.firstName && <p>Field is dirty.</p>}\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nfunction useFormState(props) {\n const formControl = useFormControlContext();\n const { control = formControl, disabled, name, exact } = props || {};\n const [formState, updateFormState] = React.useState(control._formState);\n const _localProxyFormState = React.useRef({\n isDirty: false,\n isLoading: false,\n dirtyFields: false,\n touchedFields: false,\n validatingFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n });\n useIsomorphicLayoutEffect(() => control._subscribe({\n name,\n formState: _localProxyFormState.current,\n exact,\n callback: (formState) => {\n !disabled &&\n updateFormState({\n ...control._formState,\n ...formState,\n });\n },\n }), [name, disabled, exact]);\n React.useEffect(() => {\n _localProxyFormState.current.isValid && control._setValid(true);\n }, [control]);\n return React.useMemo(() => getProxyFormState(formState, control, _localProxyFormState.current, false), [formState, control]);\n}\n\nvar isString = (value) => typeof value === 'string';\n\nvar generateWatchOutput = (names, _names, formValues, isGlobal, defaultValue) => {\n if (isString(names)) {\n isGlobal && _names.watch.add(names);\n return get(formValues, names, defaultValue);\n }\n if (Array.isArray(names)) {\n return names.map((fieldName) => (isGlobal && _names.watch.add(fieldName),\n get(formValues, fieldName)));\n }\n isGlobal && (_names.watchAll = true);\n return formValues;\n};\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nfunction deepEqual(object1, object2, _internal_visited = new WeakSet()) {\n if (isPrimitive(object1) || isPrimitive(object2)) {\n return Object.is(object1, object2);\n }\n if (isDateObject(object1) && isDateObject(object2)) {\n return Object.is(object1.getTime(), object2.getTime());\n }\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n if (_internal_visited.has(object1) || _internal_visited.has(object2)) {\n return true;\n }\n _internal_visited.add(object1);\n _internal_visited.add(object2);\n for (const key of keys1) {\n const val1 = object1[key];\n if (!keys2.includes(key)) {\n return false;\n }\n if (key !== 'ref') {\n const val2 = object2[key];\n if ((isDateObject(val1) && isDateObject(val2)) ||\n (isObject(val1) && isObject(val2)) ||\n (Array.isArray(val1) && Array.isArray(val2))\n ? !deepEqual(val1, val2, _internal_visited)\n : !Object.is(val1, val2)) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n * name: \"fieldName\"\n * control,\n * })\n * ```\n */\nfunction useWatch(props) {\n const formControl = useFormControlContext();\n const { control = formControl, name, defaultValue, disabled, exact, compute, } = props || {};\n const _defaultValue = React.useRef(defaultValue);\n const _compute = React.useRef(compute);\n const _computeFormValues = React.useRef(undefined);\n const _prevControl = React.useRef(control);\n const _prevName = React.useRef(name);\n _compute.current = compute;\n const [value, updateValue] = React.useState(() => {\n const defaultValue = control._getWatch(name, _defaultValue.current);\n return _compute.current ? _compute.current(defaultValue) : defaultValue;\n });\n const getCurrentOutput = React.useCallback((values) => {\n const formValues = generateWatchOutput(name, control._names, values || control._formValues, false, _defaultValue.current);\n return _compute.current ? _compute.current(formValues) : formValues;\n }, [control._formValues, control._names, name]);\n const refreshValue = React.useCallback((values) => {\n if (!disabled) {\n const formValues = generateWatchOutput(name, control._names, values || control._formValues, false, _defaultValue.current);\n if (_compute.current) {\n const computedFormValues = _compute.current(formValues);\n if (!deepEqual(computedFormValues, _computeFormValues.current)) {\n updateValue(computedFormValues);\n _computeFormValues.current = computedFormValues;\n }\n }\n else {\n updateValue(formValues);\n }\n }\n }, [control._formValues, control._names, disabled, name]);\n useIsomorphicLayoutEffect(() => {\n if (_prevControl.current !== control ||\n !deepEqual(_prevName.current, name)) {\n _prevControl.current = control;\n _prevName.current = name;\n refreshValue();\n }\n return control._subscribe({\n name,\n formState: {\n values: true,\n },\n exact,\n callback: (formState) => {\n refreshValue(formState.values);\n },\n });\n }, [control, exact, name, refreshValue]);\n React.useEffect(() => control._removeUnmounted());\n // If name or control changed for this render, synchronously reflect the\n // latest value so callers (like useController) see the correct value\n // immediately on the same render.\n // Optimize: Check control reference first before expensive deepEqual\n const controlChanged = _prevControl.current !== control;\n const prevName = _prevName.current;\n // Cache the computed output to avoid duplicate calls within the same render\n // We include shouldReturnImmediate in deps to ensure proper recomputation\n const computedOutput = React.useMemo(() => {\n if (disabled) {\n return null;\n }\n const nameChanged = !controlChanged && !deepEqual(prevName, name);\n const shouldReturnImmediate = controlChanged || nameChanged;\n return shouldReturnImmediate ? getCurrentOutput() : null;\n }, [disabled, controlChanged, name, prevName, getCurrentOutput]);\n return computedOutput !== null ? computedOutput : value;\n}\n\n/**\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns field properties, field and form state. {@link UseControllerReturn}\n *\n * @example\n * ```tsx\n * function Input(props) {\n * const { field, fieldState, formState } = useController(props);\n * return (\n * <div>\n * <input {...field} placeholder={props.name} />\n * <p>{fieldState.isTouched && \"Touched\"}</p>\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * </div>\n * );\n * }\n * ```\n */\nfunction useController(props) {\n const formControl = useFormControlContext();\n const { name, disabled, control = formControl, shouldUnregister, defaultValue, exact = true, } = props;\n const isArrayField = isNameInFieldArray(control._names.array, name);\n const defaultValueMemo = React.useMemo(() => get(control._formValues, name, get(control._defaultValues, name, defaultValue)), [control, name, defaultValue]);\n const value = useWatch({\n control,\n name,\n defaultValue: defaultValueMemo,\n exact,\n });\n const formState = useFormState({\n control,\n name,\n exact,\n });\n const _props = React.useRef(props);\n const _previousNameRef = React.useRef(undefined);\n const _registerProps = React.useRef(control.register(name, {\n ...props.rules,\n value,\n ...(isBoolean(props.disabled) ? { disabled: props.disabled } : {}),\n }));\n _props.current = props;\n const fieldState = React.useMemo(() => Object.defineProperties({}, {\n invalid: {\n enumerable: true,\n get: () => !!get(formState.errors, name),\n },\n isDirty: {\n enumerable: true,\n get: () => !!get(formState.dirtyFields, name),\n },\n isTouched: {\n enumerable: true,\n get: () => !!get(formState.touchedFields, name),\n },\n isValidating: {\n enumerable: true,\n get: () => !!get(formState.validatingFields, name),\n },\n error: {\n enumerable: true,\n get: () => get(formState.errors, name),\n },\n }), [formState, name]);\n const onChange = React.useCallback((event) => _registerProps.current.onChange({\n target: {\n value: getEventValue(event),\n name: name,\n },\n type: EVENTS.CHANGE,\n }), [name]);\n const onBlur = React.useCallback(() => _registerProps.current.onBlur({\n target: {\n value: get(control._formValues, name),\n name: name,\n },\n type: EVENTS.BLUR,\n }), [name, control._formValues]);\n const ref = React.useCallback((elm) => {\n const field = get(control._fields, name);\n if (field && field._f && elm) {\n field._f.ref = {\n focus: () => isFunction(elm.focus) && elm.focus(),\n select: () => isFunction(elm.select) && elm.select(),\n setCustomValidity: (message) => isFunction(elm.setCustomValidity) && elm.setCustomValidity(message),\n reportValidity: () => isFunction(elm.reportValidity) && elm.reportValidity(),\n };\n }\n }, [control._fields, name]);\n const field = React.useMemo(() => ({\n name,\n value,\n ...(isBoolean(disabled) || formState.disabled\n ? { disabled: formState.disabled || disabled }\n : {}),\n onChange,\n onBlur,\n ref,\n }), [name, disabled, formState.disabled, onChange, onBlur, ref, value]);\n React.useEffect(() => {\n const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\n const previousName = _previousNameRef.current;\n if (previousName && previousName !== name && !isArrayField) {\n control.unregister(previousName);\n }\n control.register(name, {\n ..._props.current.rules,\n ...(isBoolean(_props.current.disabled)\n ? { disabled: _props.current.disabled }\n : {}),\n });\n const updateMounted = (name, value) => {\n const field = get(control._fields, name);\n if (field && field._f) {\n field._f.mount = value;\n }\n };\n updateMounted(name, true);\n if (_shouldUnregisterField) {\n const value = cloneObject(get(control._options.defaultValues, name, _props.current.defaultValue));\n set(control._defaultValues, name, value);\n if (isUndefined(get(control._formValues, name))) {\n set(control._formValues, name, value);\n }\n }\n !isArrayField && control.register(name);\n _previousNameRef.current = name;\n return () => {\n (isArrayField\n ? _shouldUnregisterField && !control._state.action\n : _shouldUnregisterField)\n ? control.unregister(name)\n : updateMounted(name, false);\n };\n }, [name, control, isArrayField, shouldUnregister]);\n React.useEffect(() => {\n control._setDisabledField({\n disabled,\n name,\n });\n }, [disabled, name, control]);\n return React.useMemo(() => ({\n field,\n formState,\n fieldState,\n }), [field, formState, fieldState]);\n}\n\n/**\n * Component based on `useController` hook to work with controlled component.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns provide field handler functions, field and form state.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control } = useForm<FormValues>({\n * defaultValues: {\n * test: \"\"\n * }\n * });\n *\n * return (\n * <form>\n * <Controller\n * control={control}\n * name=\"test\"\n * render={({ field: { onChange, onBlur, value, ref }, formState, fieldState }) => (\n * <>\n * <input\n * onChange={onChange} // send value to hook form\n * onBlur={onBlur} // notify when input is touched\n * value={value} // return updated value\n * ref={ref} // set ref for focus management\n * />\n * <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n * <p>{fieldState.isTouched ? \"touched\" : \"\"}</p>\n * </>\n * )}\n * />\n * </form>\n * );\n * }\n * ```\n */\nconst Controller = (props) => props.render(useController(props));\n\nconst flatten = (obj) => {\n const output = {};\n for (const key of Object.keys(obj)) {\n if (isObjectType(obj[key]) && obj[key] !== null) {\n const nested = flatten(obj[key]);\n for (const nestedKey of Object.keys(nested)) {\n output[`${key}.${nestedKey}`] = nested[nestedKey];\n }\n }\n else {\n output[key] = obj[key];\n }\n }\n return output;\n};\n\nconst HookFormContext = React.createContext(null);\nHookFormContext.displayName = 'HookFormContext';\n/**\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @returns return all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst useFormContext = () => React.useContext(HookFormContext);\n/**\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://react.dev/reference/react/useContext) API. To be used with {@link useFormContext}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @param props - all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * <FormProvider {...methods} >\n * <form onSubmit={methods.handleSubmit(onSubmit)}>\n * <NestedInput />\n * <input type=\"submit\" />\n * </form>\n * </FormProvider>\n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst FormProvider = (props) => {\n const { children, watch, getValues, getFieldState, setError, clearErrors, setValue, trigger, formState, resetField, reset, handleSubmit, unregister, control, register, setFocus, subscribe, } = props;\n return (React.createElement(HookFormContext.Provider, { value: React.useMemo(() => ({\n watch,\n getValues,\n getFieldState,\n setError,\n clearErrors,\n setValue,\n trigger,\n formState,\n resetField,\n reset,\n handleSubmit,\n unregister,\n control,\n register,\n setFocus,\n subscribe,\n }), [\n clearErrors,\n control,\n formState,\n getFieldState,\n getValues,\n handleSubmit,\n register,\n reset,\n resetField,\n setError,\n setFocus,\n setValue,\n subscribe,\n trigger,\n unregister,\n watch,\n ]) },\n React.createElement(HookFormControlContext.Provider, { value: control }, children)));\n};\n\nconst POST_REQUEST = 'post';\n/**\n * Form component to manage submission.\n *\n * @param props - to setup submission detail. {@link FormProps}\n *\n * @returns form component or headless render prop.\n *\n * @example\n * ```tsx\n * function App() {\n * const { control, formState: { errors } } = useForm();\n *\n * return (\n * <Form action=\"/api\" control={control}>\n * <input {...register(\"name\")} />\n * <p>{errors?.root?.server && 'Server error'}</p>\n * <button>Submit</button>\n * </Form>\n * );\n * }\n * ```\n */\nfunction Form(props) {\n const methods = useFormContext();\n const [mounted, setMounted] = React.useState(false);\n const { control = methods.control, onSubmit, children, action, method = POST_REQUEST, headers, encType, onError, render, onSuccess, validateStatus, ...rest } = props;\n const submit = async (event) => {\n let hasError = false;\n let type = '';\n await control.handleSubmit(async (data) => {\n const formData = new FormData();\n let formDataJson = '';\n try {\n formDataJson = JSON.stringify(data);\n }\n catch (_a) { }\n const flattenFormValues = flatten(control._formValues);\n for (const key in flattenFormValues) {\n formData.append(key, flattenFormValues[key]);\n }\n if (onSubmit) {\n await onSubmit({\n data,\n event,\n method,\n formData,\n formDataJson,\n });\n }\n if (action) {\n try {\n const shouldStringifySubmissionData = [\n headers && headers['Content-Type'],\n encType,\n ].some((value) => value && value.includes('json'));\n const response = await fetch(String(action), {\n method,\n headers: {\n ...headers,\n ...(encType && encType !== 'multipart/form-data'\n ? { 'Content-Type': encType }\n : {}),\n },\n body: shouldStringifySubmissionData ? formDataJson : formData,\n });\n if (response &&\n (validateStatus\n ? !validateStatus(response.status)\n : response.status < 200 || response.status >= 300)) {\n hasError = true;\n onError && onError({ response });\n type = String(response.status);\n }\n else {\n onSuccess && onSuccess({ response });\n }\n }\n catch (error) {\n hasError = true;\n onError && onError({ error });\n }\n }\n })(event);\n if (hasError && props.control) {\n props.control._subjects.state.next({\n isSubmitSuccessful: false,\n });\n props.control.setError('root.server', {\n type,\n });\n }\n };\n React.useEffect(() => {\n setMounted(true);\n }, []);\n return render ? (React.createElement(React.Fragment, null, render({\n submit,\n }))) : (React.createElement(\"form\", { noValidate: mounted, action: action, method: method, encType: encType, onSubmit: submit, ...rest }, children));\n}\n\nconst FormStateSubscribe = ({ control, disabled, exact, name, render, }) => render(useFormState({ control, name, disabled, exact }));\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\n ? {\n ...errors[name],\n types: {\n ...(errors[name] && errors[name].types ? errors[name].types : {}),\n [type]: message || true,\n },\n }\n : {};\n\nvar convertToArrayPayload = (value) => (Array.isArray(value) ? value : [value]);\n\nvar createSubject = () => {\n let _observers = [];\n const next = (value) => {\n for (const observer of _observers) {\n observer.next && observer.next(value);\n }\n };\n const subscribe = (observer) => {\n _observers.push(observer);\n return {\n unsubscribe: () => {\n _observers = _observers.filter((o) => o !== observer);\n },\n };\n };\n const unsubscribe = () => {\n _observers = [];\n };\n return {\n get observers() {\n return _observers;\n },\n next,\n subscribe,\n unsubscribe,\n };\n};\n\nfunction extractFormValues(fieldsState, formValues) {\n const values = {};\n for (const key in fieldsState) {\n if (fieldsState.hasOwnProperty(key)) {\n const fieldState = fieldsState[key];\n const fieldValue = formValues[key];\n if (fieldState && isObject(fieldState) && fieldValue) {\n const nestedFieldsState = extractFormValues(fieldState, fieldValue);\n if (isObject(nestedFieldsState)) {\n values[key] = nestedFieldsState;\n }\n }\n else if (fieldsState[key]) {\n values[key] = fieldValue;\n }\n }\n }\n return values;\n}\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isHTMLElement = (value) => {\n if (!isWeb) {\n return false;\n }\n const owner = value ? value.ownerDocument : 0;\n return (value instanceof\n (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement));\n};\n\nvar isMultipleSelect = (element) => element.type === `select-multiple`;\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isRadioOrCheckbox = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nvar live = (ref) => isHTMLElement(ref) && ref.isConnected;\n\nfunction baseGet(object, updatePath) {\n const length = updatePath.slice(0, -1).length;\n let index = 0;\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n return object;\n}\nfunction isEmptyArray(obj) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && !isUndefined(obj[key])) {\n return false;\n }\n }\n return true;\n}\nfunction unset(object, path) {\n const paths = Array.isArray(path)\n ? path\n : isKey(path)\n ? [path]\n : stringToPath(path);\n const childObject = paths.length === 1 ? object : baseGet(object, paths);\n const index = paths.length - 1;\n const key = paths[index];\n if (childObject) {\n delete childObject[key];\n }\n if (index !== 0 &&\n ((isObject(childObject) && isEmptyObject(childObject)) ||\n (Array.isArray(childObject) && isEmptyArray(childObject)))) {\n unset(object, paths.slice(0, -1));\n }\n return object;\n}\n\nvar objectHasFunction = (data) => {\n for (const key in data) {\n if (isFunction(data[key])) {\n return true;\n }\n }\n return false;\n};\n\nfunction isTraversable(value) {\n return Array.isArray(value) || (isObject(value) && !objectHasFunction(value));\n}\nfunction markFieldsDirty(data, fields = {}) {\n for (const key in data) {\n const value = data[key];\n if (isTraversable(value)) {\n fields[key] = Array.isArray(value) ? [] : {};\n markFieldsDirty(value, fields[key]);\n }\n else if (!isUndefined(value)) {\n fields[key] = true;\n }\n }\n return fields;\n}\nfunction getDirtyFields(data, formValues, dirtyFieldsFromValues) {\n if (!dirtyFieldsFromValues) {\n dirtyFieldsFromValues = markFieldsDirty(formValues);\n }\n for (const key in data) {\n const value = data[key];\n if (isTraversable(value)) {\n if (isUndefined(formValues) || isPrimitive(dirtyFieldsFromValues[key])) {\n dirtyFieldsFromValues[key] = markFieldsDirty(value, Array.isArray(value) ? [] : {});\n }\n else {\n getDirtyFields(value, isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\n }\n }\n else {\n const formValue = formValues[key];\n dirtyFieldsFromValues[key] = !deepEqual(value, formValue);\n }\n }\n return dirtyFieldsFromValues;\n}\n\nconst defaultResult = {\n value: false,\n isValid: false,\n};\nconst validResult = { value: true, isValid: true };\nvar getCheckboxValue = (options) => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n return defaultResult;\n};\n\nvar getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined(value)\n ? value\n : valueAsNumber\n ? value === ''\n ? NaN\n : value\n ? +value\n : value\n : valueAsDate && isString(value)\n ? new Date(value)\n : setValueAs\n ? setValueAs(value)\n : value;\n\nconst defaultReturn = {\n isValid: false,\n value: null,\n};\nvar getRadioValue = (options) => Array.isArray(options)\n ? options.reduce((previous, option) => option && option.checked && !option.disabled\n ? {\n isValid: true,\n value: option.value,\n }\n : previous, defaultReturn)\n : defaultReturn;\n\nfunction getFieldValue(_f) {\n const ref = _f.ref;\n if (isFileInput(ref)) {\n return ref.files;\n }\n if (isRadioInput(ref)) {\n return getRadioValue(_f.refs).value;\n }\n if (isMultipleSelect(ref)) {\n return [...ref.selectedOptions].map(({ value }) => value);\n }\n if (isCheckBoxInput(ref)) {\n return getCheckboxValue(_f.refs).value;\n }\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\n\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\n const fields = {};\n for (const name of fieldsNames) {\n const field = get(_fields, name);\n field && set(fields, name, field._f);\n }\n return {\n criteriaMode,\n names: [...fieldsNames],\n fields,\n shouldUseNativeValidation,\n };\n};\n\nvar isRegex = (value) => value instanceof RegExp;\n\nvar getRuleValue = (rule) => isUndefined(rule)\n ? rule\n : isRegex(rule)\n ? rule.source\n : isObject(rule)\n ? isRegex(rule.value)\n ? rule.value.source\n : rule.value\n : rule;\n\nvar getValidationModes = (mode) => ({\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n isOnBlur: mode === VALIDATION_MODE.onBlur,\n isOnChange: mode === VALIDATION_MODE.onChange,\n isOnAll: mode === VALIDATION_MODE.all,\n isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n\nconst ASYNC_FUNCTION = 'AsyncFunction';\nvar hasPromiseValidation = (fieldReference) => !!fieldReference &&\n !!fieldReference.validate &&\n !!((isFunction(fieldReference.validate) &&\n fieldReference.validate.constructor.name === ASYNC_FUNCTION) ||\n (isObject(fieldReference.validate) &&\n Object.values(fieldReference.validate).find((validateFunction) => validateFunction.constructor.name === ASYNC_FUNCTION)));\n\nvar hasValidation = (options) => options.mount &&\n (options.required ||\n options.min ||\n options.max ||\n options.maxLength ||\n options.minLength ||\n options.pattern ||\n options.validate);\n\nvar isWatched = (name, _names, isBlurEvent) => !isBlurEvent &&\n (_names.watchAll ||\n _names.watch.has(name) ||\n [..._names.watch].some((watchName) => name.startsWith(watchName) &&\n /^\\.\\w+/.test(name.slice(watchName.length))));\n\nconst iterateFieldsByAction = (fields, action, fieldsNames, abortEarly) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get(fields, key);\n if (field) {\n const { _f, ...currentField } = field;\n if (_f) {\n if (_f.refs && _f.refs[0] && action(_f.refs[0], key) && !abortEarly) {\n return true;\n }\n else if (_f.ref && action(_f.ref, _f.name) && !abortEarly) {\n return true;\n }\n else {\n if (iterateFieldsByAction(currentField, action)) {\n break;\n }\n }\n }\n else if (isObject(currentField)) {\n if (iterateFieldsByAction(currentField, action)) {\n break;\n }\n }\n }\n }\n return;\n};\n\nfunction schemaErrorLookup(errors, _fields, name) {\n const error = get(errors, name);\n if (error || isKey(name)) {\n return {\n error,\n name,\n };\n }\n const names = name.split('.');\n while (names.length) {\n const fieldName = names.join('.');\n const field = get(_fields, fieldName);\n const foundError = get(errors, fieldName);\n if (field && !Array.isArray(field) && name !== fieldName) {\n return { name };\n }\n if (foundError && foundError.type) {\n return {\n name: fieldName,\n error: foundError,\n };\n }\n if (foundError && foundError.root && foundError.root.type) {\n return {\n name: `${fieldName}.root`,\n error: foundError.root,\n };\n }\n names.pop();\n }\n return {\n name,\n };\n}\n\nvar shouldRenderFormState = (formStateData, _proxyFormState, updateFormState, isRoot) => {\n updateFormState(formStateData);\n const { name, ...formState } = formStateData;\n return (isEmptyObject(formState) ||\n Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\n Object.keys(formState).find((key) => _proxyFormState[key] ===\n (!isRoot || VALIDATION_MODE.all)));\n};\n\nvar shouldSubscribeByName = (name, signalName, exact) => !name ||\n !signalName ||\n name === signalName ||\n convertToArrayPayload(name).some((currentName) => currentName &&\n (exact\n ? currentName === signalName\n : currentName.startsWith(signalName) ||\n signalName.startsWith(currentName)));\n\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\n if (mode.isOnAll) {\n return false;\n }\n else if (!isSubmitted && mode.isOnTouch) {\n return !(isTouched || isBlurEvent);\n }\n else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n return !isBlurEvent;\n }\n else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\n\nvar unsetEmptyArray = (ref, name) => !compact(get(ref, name)).length && unset(ref, name);\n\nvar updateFieldArrayRootError = (errors, error, name) => {\n const fieldArrayErrors = convertToArrayPayload(get(errors, name));\n set(fieldArrayErrors, 'root', error[name]);\n set(errors, name, fieldArrayErrors);\n return errors;\n};\n\nfunction getValidateError(result, ref, type = 'validate') {\n if (isString(result) ||\n (Array.isArray(result) && result.every(isString)) ||\n (isBoolean(result) && !result)) {\n return {\n type,\n message: isString(result) ? result : '',\n ref,\n };\n }\n}\n\nvar getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData)\n ? validationData\n : {\n value: validationData,\n message: '',\n };\n\nvar validateField = async (field, disabledFieldNames, formValues, validateAllFieldCriteria, shouldUseNativeValidation, isFieldArray) => {\n const { ref, refs, required, maxLength, minLength, min, max, pattern, validate, name, valueAsNumber, mount, } = field._f;\n const inputValue = get(formValues, name);\n if (!mount || disabledFieldNames.has(name)) {\n return {};\n }\n const inputRef = refs ? refs[0] : ref;\n const setCustomValidity = (message) => {\n if (shouldUseNativeValidation && inputRef.reportValidity) {\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || '');\n inputRef.reportValidity();\n }\n };\n const error = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty = ((valueAsNumber || isFileInput(ref)) &&\n isUndefined(ref.value) &&\n isUndefined(inputValue)) ||\n (isHTMLElement(ref) && ref.value === '') ||\n inputValue === '' ||\n (Array.isArray(inputValue) && !inputValue.length);\n const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\n const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\n error[name] = {\n type: exceedMax ? maxType : minType,\n message,\n ref,\n ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n };\n };\n if (isFieldArray\n ? !Array.isArray(inputValue) || !inputValue.length\n : required &&\n ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\n (isBoolean(inputValue) && !inputValue) ||\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\n (isRadio && !getRadioValue(refs).isValid))) {\n const { value, message } = isString(required)\n ? { value: !!required, message: required }\n : getValueAndMessage(required);\n if (value) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message,\n ref: inputRef,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n if (!isNullOrUndefined(inputValue) && !isNaN(inputValue)) {\n const valueNumber = ref.valueAsNumber ||\n (inputValue ? +inputValue : inputValue);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n }\n else {\n const valueDate = ref.valueAsDate || new Date(inputValue);\n const convertTimeToDate = (time) => new Date(new Date().toDateString() + ' ' + time);\n const isTime = ref.type == 'time';\n const isWeek = ref.type == 'week';\n if (isString(maxOutput.value) && inputValue) {\n exceedMax = isTime\n ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value)\n : isWeek\n ? inputValue > maxOutput.value\n : valueDate > new Date(maxOutput.value);\n }\n if (isString(minOutput.value) && inputValue) {\n exceedMin = isTime\n ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value)\n : isWeek\n ? inputValue < minOutput.value\n : valueDate < new Date(minOutput.value);\n }\n }\n if (exceedMax || exceedMin) {\n getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name].message);\n return error;\n }\n }\n }\n if ((maxLength || minLength) &&\n !isEmpty &&\n (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))) {\n const maxLengthOutput = getValueAndMessage(maxLength);\n const minLengthOutput = getValueAndMessage(minLength);\n const exceedMax = !isNullOrUndefined(maxLengthOutput.value) &&\n inputValue.length > +maxLengthOutput.value;\n const exceedMin = !isNullOrUndefined(minLengthOutput.value) &&\n inputValue.length < +minLengthOutput.value;\n if (exceedMax || exceedMin) {\n getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name].message);\n return error;\n }\n }\n }\n if (pattern && !isEmpty && isString(inputValue)) {\n const { value: patternValue, message } = getValueAndMessage(pattern);\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message,\n ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n if (validate) {\n if (isFunction(validate)) {\n const result = await validate(inputValue, formValues);\n const validateError = getValidateError(result, inputRef);\n if (validateError) {\n error[name] = {\n ...validateError,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(validateError.message);\n return error;\n }\n }\n }\n else if (isObject(validate)) {\n let validationResult = {};\n for (const key in validate) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n const validateError = getValidateError(await validate[key](inputValue, formValues), inputRef, key);\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message),\n };\n setCustomValidity(validateError.message);\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n }\n if (!isEmptyObject(validationResult)) {\n error[name] = {\n ref: inputRef,\n ...validationResult,\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n }\n setCustomValidity(true);\n return error;\n};\n\nconst defaultOptions = {\n mode: VALIDATION_MODE.onSubmit,\n reValidateMode: VALIDATION_MODE.onChange,\n shouldFocusError: true,\n};\nfunction createFormControl(props = {}) {\n let _options = {\n ...defaultOptions,\n ...props,\n };\n let _formState = {\n submitCount: 0,\n isDirty: false,\n isReady: false,\n isLoading: isFunction(_options.defaultValues),\n isValidating: false,\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n touchedFields: {},\n dirtyFields: {},\n validatingFields: {},\n errors: _options.errors || {},\n disabled: _options.disabled || false,\n };\n let _fields = {};\n let _defaultValues = isObject(_options.defaultValues) || isObject(_options.values)\n ? cloneObject(_options.defaultValues || _options.values) || {}\n : {};\n let _formValues = _options.shouldUnregister\n ? {}\n : cloneObject(_defaultValues);\n let _state = {\n action: false,\n mount: false,\n watch: false,\n keepIsValid: false,\n };\n let _names = {\n mount: new Set(),\n disabled: new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n };\n let delayErrorCallback;\n let timer = 0;\n const defaultProxyFormState = {\n isDirty: false,\n dirtyFields: false,\n validatingFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n };\n const _proxyFormState = {\n ...defaultProxyFormState,\n };\n let _proxySubscribeFormState = {\n ..._proxyFormState,\n };\n const _subjects = {\n array: createSubject(),\n state: createSubject(),\n };\n const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\n const debounce = (callback) => (wait) => {\n clearTimeout(timer);\n timer = setTimeout(callback, wait);\n };\n const _setValid = async (shouldUpdateValid) => {\n if (_state.keepIsValid) {\n return;\n }\n if (!_options.disabled &&\n (_proxyFormState.isValid ||\n _proxySubscribeFormState.isValid ||\n shouldUpdateValid)) {\n let isValid;\n if (_options.resolver) {\n isValid = isEmptyObject((await _runSchema()).errors);\n _updateIsValidating();\n }\n else {\n isValid = await executeBuiltInValidation(_fields, true);\n }\n if (isValid !== _formState.isValid) {\n _subjects.state.next({\n isValid,\n });\n }\n }\n };\n const _updateIsValidating = (names, isValidating) => {\n if (!_options.disabled &&\n (_proxyFormState.isValidating ||\n _proxyFormState.validatingFields ||\n _proxySubscribeFormState.isValidating ||\n _proxySubscribeFormState.validatingFields)) {\n (names || Array.from(_names.mount)).forEach((name) => {\n if (name) {\n isValidating\n ? set(_formState.validatingFields, name, isValidating)\n : unset(_formState.validatingFields, name);\n }\n });\n _subjects.state.next({\n validatingFields: _formState.validatingFields,\n isValidating: !isEmptyObject(_formState.validatingFields),\n });\n }\n };\n const _setFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {\n if (args && method && !_options.disabled) {\n _state.action = true;\n if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\n const fieldValues = method(get(_fields, name), args.argA, args.argB);\n shouldSetValues && set(_fields, name, fieldValues);\n }\n if (shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.errors, name))) {\n const errors = method(get(_formState.errors, name), args.argA, args.argB);\n shouldSetValues && set(_formState.errors, name, errors);\n unsetEmptyArray(_formState.errors, name);\n }\n if ((_proxyFormState.touchedFields ||\n _proxySubscribeFormState.touchedFields) &&\n shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.touchedFields, name))) {\n const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\n shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n }\n if (_proxyFormState.dirtyFields || _proxySubscribeFormState.dirtyFields) {\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n }\n _subjects.state.next({\n name,\n isDirty: _getDirty(name, values),\n dirtyFields: _formState.dirtyFields,\n errors: _formState.errors,\n isValid: _formState.isValid,\n });\n }\n else {\n set(_formValues, name, values);\n }\n };\n const updateErrors = (name, error) => {\n set(_formState.errors, name, error);\n _subjects.state.next({\n errors: _formState.errors,\n });\n };\n const _setErrors = (errors) => {\n _formState.errors = errors;\n _subjects.state.next({\n errors: _formState.errors,\n isValid: false,\n });\n };\n const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref) => {\n const field = get(_fields, name);\n if (field) {\n const defaultValue = get(_formValues, name, isUndefined(value) ? get(_defaultValues, name) : value);\n isUndefined(defaultValue) ||\n (ref && ref.defaultChecked) ||\n shouldSkipSetValueAs\n ? set(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f))\n : setFieldValue(name, defaultValue);\n _state.mount && !_state.action && _setValid();\n }\n };\n const updateTouchAndDirty = (name, fieldValue, isBlurEvent, shouldDirty, shouldRender) => {\n let shouldUpdateField = false;\n let isPreviousDirty = false;\n const output = {\n name,\n };\n if (!_options.disabled) {\n if (!isBlurEvent || shouldDirty) {\n if (_proxyFormState.isDirty || _proxySubscribeFormState.isDirty) {\n isPreviousDirty = _formState.isDirty;\n _formState.isDirty = output.isDirty = _getDirty();\n shouldUpdateField = isPreviousDirty !== output.isDirty;\n }\n const isCurrentFieldPristine = deepEqual(get(_defaultValues, name), fieldValue);\n isPreviousDirty = !!get(_formState.dirtyFields, name);\n isCurrentFieldPristine\n ? unset(_formState.dirtyFields, name)\n : set(_formState.dirtyFields, name, true);\n output.dirtyFields = _formState.dirtyFields;\n shouldUpdateField =\n shouldUpdateField ||\n ((_proxyFormState.dirtyFields ||\n _proxySubscribeFormState.dirtyFields) &&\n isPreviousDirty !== !isCurrentFieldPristine);\n }\n if (isBlurEvent) {\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\n if (!isPreviousFieldTouched) {\n set(_formState.touchedFields, name, isBlurEvent);\n output.touchedFields = _formState.touchedFields;\n shouldUpdateField =\n shouldUpdateField ||\n ((_proxyFormState.touchedFields ||\n _proxySubscribeFormState.touchedFields) &&\n isPreviousFieldTouched !== isBlurEvent);\n }\n }\n shouldUpdateField && shouldRender && _subjects.state.next(output);\n }\n return shouldUpdateField ? output : {};\n };\n const shouldRenderByError = (name, isValid, error, fieldState) => {\n const previousFieldError = get(_formState.errors, name);\n const shouldUpdateValid = (_proxyFormState.isValid || _proxySubscribeFormState.isValid) &&\n isBoolean(isValid) &&\n _formState.isValid !== isValid;\n if (_options.delayError && error) {\n delayErrorCallback = debounce(() => updateErrors(name, error));\n delayErrorCallback(_options.delayError);\n }\n else {\n clearTimeout(timer);\n delayErrorCallback = null;\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n if ((error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\n !isEmptyObject(fieldState) ||\n shouldUpdateValid) {\n const updatedFormState = {\n ...fieldState,\n ...(shouldUpdateValid && isBoolean(isValid) ? { isValid } : {}),\n errors: _formState.errors,\n name,\n };\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n _subjects.state.next(updatedFormState);\n }\n };\n const _runSchema = async (name) => {\n _updateIsValidating(name, true);\n const result = await _options.resolver(_formValues, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation));\n return result;\n };\n const executeSchemaAndUpdateState = async (names) => {\n const { errors } = await _runSchema(names);\n _updateIsValidating(names);\n if (names) {\n for (const name of names) {\n const error = get(errors, name);\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n }\n else {\n _formState.errors = errors;\n }\n return errors;\n };\n const executeBuiltInValidation = async (fields, shouldOnlyCheckValid, context = {\n valid: true,\n }) => {\n for (const name in fields) {\n const field = fields[name];\n if (field) {\n const { _f, ...fieldValue } = field;\n if (_f) {\n const isFieldArrayRoot = _names.array.has(_f.name);\n const isPromiseFunction = field._f && hasPromiseValidation(field._f);\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([_f.name], true);\n }\n const fieldError = await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation && !shouldOnlyCheckValid, isFieldArrayRoot);\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([_f.name]);\n }\n if (fieldError[_f.name]) {\n context.valid = false;\n if (shouldOnlyCheckValid || props.shouldUseNativeValidation) {\n break;\n }\n }\n !shouldOnlyCheckValid &&\n (get(fieldError, _f.name)\n ? isFieldArrayRoot\n ? updateFieldArrayRootError(_formState.errors, fieldError, _f.name)\n : set(_formState.errors, _f.name, fieldError[_f.name])\n : unset(_formState.errors, _f.name));\n }\n !isEmptyObject(fieldValue) &&\n (await executeBuiltInValidation(fieldValue, shouldOnlyCheckValid, context));\n }\n }\n return context.valid;\n };\n const _removeUnmounted = () => {\n for (const name of _names.unMount) {\n const field = get(_fields, name);\n field &&\n (field._f.refs\n ? field._f.refs.every((ref) => !live(ref))\n : !live(field._f.ref)) &&\n unregister(name);\n }\n _names.unMount = new Set();\n };\n const _getDirty = (name, data) => !_options.disabled &&\n (name && data && set(_formValues, name, data),\n !deepEqual(getValues(), _defaultValues));\n const _getWatch = (names, defaultValue, isGlobal) => generateWatchOutput(names, _names, {\n ...(_state.mount\n ? _formValues\n : isUndefined(defaultValue)\n ? _defaultValues\n : isString(names)\n ? { [names]: defaultValue }\n : defaultValue),\n }, isGlobal, defaultValue);\n const _getFieldArray = (name) => compact(get(_state.mount ? _formValues : _defaultValues, name, _options.shouldUnregister ? get(_defaultValues, name, []) : []));\n const setFieldValue = (name, value, options = {}) => {\n const field = get(_fields, name);\n let fieldValue = value;\n if (field) {\n const fieldReference = field._f;\n if (fieldReference) {\n !fieldReference.disabled &&\n set(_formValues, name, getFieldValueAs(value, fieldReference));\n fieldValue =\n isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\n ? ''\n : value;\n if (isMultipleSelect(fieldReference.ref)) {\n [...fieldReference.ref.options].forEach((optionRef) => (optionRef.selected = fieldValue.includes(optionRef.value)));\n }\n else if (fieldReference.refs) {\n if (isCheckBoxInput(fieldReference.ref)) {\n fieldReference.refs.forEach((checkboxRef) => {\n if (!checkboxRef.defaultChecked || !checkboxRef.disabled) {\n if (Array.isArray(fieldValue)) {\n checkboxRef.checked = !!fieldValue.find((data) => data === checkboxRef.value);\n }\n else {\n checkboxRef.checked =\n fieldValue === checkboxRef.value || !!fieldValue;\n }\n }\n });\n }\n else {\n fieldReference.refs.forEach((radioRef) => (radioRef.checked = radioRef.value === fieldValue));\n }\n }\n else if (isFileInput(fieldReference.ref)) {\n fieldReference.ref.value = '';\n }\n else {\n fieldReference.ref.value = fieldValue;\n if (!fieldReference.ref.type) {\n _subjects.state.next({\n name,\n values: cloneObject(_formValues),\n });\n }\n }\n }\n }\n (options.shouldDirty || options.shouldTouch) &&\n updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);\n options.shouldValidate && trigger(name);\n };\n const setValues = (name, value, options) => {\n for (const fieldKey in value) {\n if (!value.hasOwnProperty(fieldKey)) {\n return;\n }\n const fieldValue = value[fieldKey];\n const fieldName = name + '.' + fieldKey;\n const field = get(_fields, fieldName);\n (_names.array.has(name) ||\n isObject(fieldValue) ||\n (field && !field._f)) &&\n !isDateObject(fieldValue)\n ? setValues(fieldName, fieldValue, options)\n : setFieldValue(fieldName, fieldValue, options);\n }\n };\n const setValue = (name, value, options = {}) => {\n const field = get(_fields, name);\n const isFieldArray = _names.array.has(name);\n const cloneValue = cloneObject(value);\n set(_formValues, name, cloneValue);\n if (isFieldArray) {\n _subjects.array.next({\n name,\n values: cloneObject(_formValues),\n });\n if ((_proxyFormState.isDirty ||\n _proxyFormState.dirtyFields ||\n _proxySubscribeFormState.isDirty ||\n _proxySubscribeFormState.dirtyFields) &&\n options.shouldDirty) {\n _subjects.state.next({\n name,\n dirtyFields: getDirtyFields(_defaultValues, _formValues),\n isDirty: _getDirty(name, cloneValue),\n });\n }\n }\n else {\n field && !field._f && !isNullOrUndefined(cloneValue)\n ? setValues(name, cloneValue, options)\n : setFieldValue(name, cloneValue, options);\n }\n if (isWatched(name, _names)) {\n _subjects.state.next({\n ..._formState,\n name,\n values: cloneObject(_formValues),\n });\n }\n else {\n _subjects.state.next({\n name: _state.mount ? name : undefined,\n values: cloneObject(_formValues),\n });\n }\n };\n const onChange = async (event) => {\n _state.mount = true;\n const target = event.target;\n let name = target.name;\n let isFieldValueUpdated = true;\n const field = get(_fields, name);\n const _updateIsFieldValueUpdated = (fieldValue) => {\n isFieldValueUpdated =\n Number.isNaN(fieldValue) ||\n (isDateObject(fieldValue) && isNaN(fieldValue.getTime())) ||\n deepEqual(fieldValue, get(_formValues, name, fieldValue));\n };\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n if (field) {\n let error;\n let isValid;\n const fieldValue = target.type\n ? getFieldValue(field._f)\n : getEventValue(event);\n const isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n const shouldSkipValidation = (!hasValidation(field._f) &&\n !_options.resolver &&\n !get(_formState.errors, name) &&\n !field._f.deps) ||\n skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit);\n const watched = isWatched(name, _names, isBlurEvent);\n set(_formValues, name, fieldValue);\n if (isBlurEvent) {\n if (!target || !target.readOnly) {\n field._f.onBlur && field._f.onBlur(event);\n delayErrorCallback && delayErrorCallback(0);\n }\n }\n else if (field._f.onChange) {\n field._f.onChange(event);\n }\n const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent);\n const shouldRender = !isEmptyObject(fieldState) || watched;\n !isBlurEvent &&\n _subjects.state.next({\n name,\n type: event.type,\n values: cloneObject(_formValues),\n });\n if (shouldSkipValidation) {\n if (_proxyFormState.isValid || _proxySubscribeFormState.isValid) {\n if (_options.mode === 'onBlur') {\n if (isBlurEvent) {\n _setValid();\n }\n }\n else if (!isBlurEvent) {\n _setValid();\n }\n }\n return (shouldRender &&\n _subjects.state.next({ name, ...(watched ? {} : fieldState) }));\n }\n !isBlurEvent && watched && _subjects.state.next({ ..._formState });\n if (_options.resolver) {\n const { errors } = await _runSchema([name]);\n _updateIsValidating([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\n const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\n error = errorLookupResult.error;\n name = errorLookupResult.name;\n isValid = isEmptyObject(errors);\n }\n }\n else {\n _updateIsValidating([name], true);\n error = (await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\n _updateIsValidating([name]);\n _updateIsFieldValueUpdated(fieldValue);\n if (isFieldValueUpdated) {\n if (error) {\n isValid = false;\n }\n else if (_proxyFormState.isValid ||\n _proxySubscribeFormState.isValid) {\n isValid = await executeBuiltInValidation(_fields, true);\n }\n }\n }\n if (isFieldValueUpdated) {\n field._f.deps &&\n (!Array.isArray(field._f.deps) || field._f.deps.length > 0) &&\n trigger(field._f.deps);\n shouldRenderByError(name, isValid, error, fieldState);\n }\n }\n };\n const _focusInput = (ref, key) => {\n if (get(_formState.errors, key) && ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n };\n const trigger = async (name, options = {}) => {\n let isValid;\n let validationResult;\n const fieldNames = convertToArrayPayload(name);\n if (_options.resolver) {\n const errors = await executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\n isValid = isEmptyObject(errors);\n validationResult = name\n ? !fieldNames.some((name) => get(errors, name))\n : isValid;\n }\n else if (name) {\n validationResult = (await Promise.all(fieldNames.map(async (fieldName) => {\n const field = get(_fields, fieldName);\n return await executeBuiltInValidation(field && field._f ? { [fieldName]: field } : field);\n }))).every(Boolean);\n !(!validationResult && !_formState.isValid) && _setValid();\n }\n else {\n validationResult = isValid = await executeBuiltInValidation(_fields);\n }\n _subjects.state.next({\n ...(!isString(name) ||\n ((_proxyFormState.isValid || _proxySubscribeFormState.isValid) &&\n isValid !== _formState.isValid)\n ? {}\n : { name }),\n ...(_options.resolver || !name ? { isValid } : {}),\n errors: _formState.errors,\n });\n options.shouldFocus &&\n !validationResult &&\n iterateFieldsByAction(_fields, _focusInput, name ? fieldNames : _names.mount);\n return validationResult;\n };\n const getValues = (fieldNames, config) => {\n let values = {\n ...(_state.mount ? _formValues : _defaultValues),\n };\n if (config) {\n values = extractFormValues(config.dirtyFields ? _formState.dirtyFields : _formState.touchedFields, values);\n }\n return isUndefined(fieldNames)\n ? values\n : isString(fieldNames)\n ? get(values, fieldNames)\n : fieldNames.map((name) => get(values, name));\n };\n const getFieldState = (name, formState) => ({\n invalid: !!get((formState || _formState).errors, name),\n isDirty: !!get((formState || _formState).dirtyFields, name),\n error: get((formState || _formState).errors, name),\n isValidating: !!get(_formState.validatingFields, name),\n isTouched: !!get((formState || _formState).touchedFields, name),\n });\n const clearErrors = (name) => {\n name &&\n convertToArrayPayload(name).forEach((inputName) => unset(_formState.errors, inputName));\n _subjects.state.next({\n errors: name ? _formState.errors : {},\n });\n };\n const setError = (name, error, options) => {\n const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\n const currentError = get(_formState.errors, name) || {};\n // Don't override existing error messages elsewhere in the object tree.\n const { ref: currentRef, message, type, ...restOfErrorTree } = currentError;\n set(_formState.errors, name, {\n ...restOfErrorTree,\n ...error,\n ref,\n });\n _subjects.state.next({\n name,\n errors: _formState.errors,\n isValid: false,\n });\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n const watch = (name, defaultValue) => isFunction(name)\n ? _subjects.state.subscribe({\n next: (payload) => 'values' in payload &&\n name(_getWatch(undefined, defaultValue), payload),\n })\n : _getWatch(name, defaultValue, true);\n const _subscribe = (props) => _subjects.state.subscribe({\n next: (formState) => {\n if (shouldSubscribeByName(props.name, formState.name, props.exact) &&\n shouldRenderFormState(formState, props.formState || _proxyFormState, _setFormState, props.reRenderRoot)) {\n props.callback({\n values: { ..._formValues },\n ..._formState,\n ...formState,\n defaultValues: _defaultValues,\n });\n }\n },\n }).unsubscribe;\n const subscribe = (props) => {\n _state.mount = true;\n _proxySubscribeFormState = {\n ..._proxySubscribeFormState,\n ...props.formState,\n };\n return _subscribe({\n ...props,\n formState: {\n ...defaultProxyFormState,\n ...props.formState,\n },\n });\n };\n const unregister = (name, options = {}) => {\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n _names.mount.delete(fieldName);\n _names.array.delete(fieldName);\n if (!options.keepValue) {\n unset(_fields, fieldName);\n unset(_formValues, fieldName);\n }\n !options.keepError && unset(_formState.errors, fieldName);\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\n !options.keepIsValidating &&\n unset(_formState.validatingFields, fieldName);\n !_options.shouldUnregister &&\n !options.keepDefaultValue &&\n unset(_defaultValues, fieldName);\n }\n _subjects.state.next({\n values: cloneObject(_formValues),\n });\n _subjects.state.next({\n ..._formState,\n ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\n });\n !options.keepIsValid && _setValid();\n };\n const _setDisabledField = ({ disabled, name, }) => {\n if ((isBoolean(disabled) && _state.mount) ||\n !!disabled ||\n _names.disabled.has(name)) {\n const wasDisabled = _names.disabled.has(name);\n const isDisabled = !!disabled;\n const disabledStateChanged = wasDisabled !== isDisabled;\n disabled ? _names.disabled.add(name) : _names.disabled.delete(name);\n disabledStateChanged && _state.mount && !_state.action && _setValid();\n }\n };\n const register = (name, options = {}) => {\n let field = get(_fields, name);\n const disabledIsDefined = isBoolean(options.disabled) || isBoolean(_options.disabled);\n set(_fields, name, {\n ...(field || {}),\n _f: {\n ...(field && field._f ? field._f : { ref: { name } }),\n name,\n mount: true,\n ...options,\n },\n });\n _names.mount.add(name);\n if (field) {\n _setDisabledField({\n disabled: isBoolean(options.disabled)\n ? options.disabled\n : _options.disabled,\n name,\n });\n }\n else {\n updateValidAndValue(name, true, options.value);\n }\n return {\n ...(disabledIsDefined\n ? { disabled: options.disabled || _options.disabled }\n : {}),\n ...(_options.progressive\n ? {\n required: !!options.required,\n min: getRuleValue(options.min),\n max: getRuleValue(options.max),\n minLength: getRuleValue(options.minLength),\n maxLength: getRuleValue(options.maxLength),\n pattern: getRuleValue(options.pattern),\n }\n : {}),\n name,\n onChange,\n onBlur: onChange,\n ref: (ref) => {\n if (ref) {\n register(name, options);\n field = get(_fields, name);\n const fieldRef = isUndefined(ref.value)\n ? ref.querySelectorAll\n ? ref.querySelectorAll('input,select,textarea')[0] || ref\n : ref\n : ref;\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n const refs = field._f.refs || [];\n if (radioOrCheckbox\n ? refs.find((option) => option === fieldRef)\n : fieldRef === field._f.ref) {\n return;\n }\n set(_fields, name, {\n _f: {\n ...field._f,\n ...(radioOrCheckbox\n ? {\n refs: [\n ...refs.filter(live),\n fieldRef,\n ...(Array.isArray(get(_defaultValues, name)) ? [{}] : []),\n ],\n ref: { type: fieldRef.type, name },\n }\n : { ref: fieldRef }),\n },\n });\n updateValidAndValue(name, false, undefined, fieldRef);\n }\n else {\n field = get(_fields, name, {});\n if (field._f) {\n field._f.mount = false;\n }\n (_options.shouldUnregister || options.shouldUnregister) &&\n !(isNameInFieldArray(_names.array, name) && _state.action) &&\n _names.unMount.add(name);\n }\n },\n };\n };\n const _focusError = () => _options.shouldFocusError &&\n iterateFieldsByAction(_fields, _focusInput, _names.mount);\n const _disableForm = (disabled) => {\n if (isBoolean(disabled)) {\n _subjects.state.next({ disabled });\n iterateFieldsByAction(_fields, (ref, name) => {\n const currentField = get(_fields, name);\n if (currentField) {\n ref.disabled = currentField._f.disabled || disabled;\n if (Array.isArray(currentField._f.refs)) {\n currentField._f.refs.forEach((inputRef) => {\n inputRef.disabled = currentField._f.disabled || disabled;\n });\n }\n }\n }, 0, false);\n }\n };\n const handleSubmit = (onValid, onInvalid) => async (e) => {\n let onValidError = undefined;\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist &&\n e.persist();\n }\n let fieldValues = cloneObject(_formValues);\n _subjects.state.next({\n isSubmitting: true,\n });\n if (_options.resolver) {\n const { errors, values } = await _runSchema();\n _updateIsValidating();\n _formState.errors = errors;\n fieldValues = cloneObject(values);\n }\n else {\n await executeBuiltInValidation(_fields);\n }\n if (_names.disabled.size) {\n for (const name of _names.disabled) {\n unset(fieldValues, name);\n }\n }\n unset(_formState.errors, 'root');\n if (isEmptyObject(_formState.errors)) {\n _subjects.state.next({\n errors: {},\n });\n try {\n await onValid(fieldValues, e);\n }\n catch (error) {\n onValidError = error;\n }\n }\n else {\n if (onInvalid) {\n await onInvalid({ ..._formState.errors }, e);\n }\n _focusError();\n setTimeout(_focusError);\n }\n _subjects.state.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful: isEmptyObject(_formState.errors) && !onValidError,\n submitCount: _formState.submitCount + 1,\n errors: _formState.errors,\n });\n if (onValidError) {\n throw onValidError;\n }\n };\n const resetField = (name, options = {}) => {\n if (get(_fields, name)) {\n if (isUndefined(options.defaultValue)) {\n setValue(name, cloneObject(get(_defaultValues, name)));\n }\n else {\n setValue(name, options.defaultValue);\n set(_defaultValues, name, cloneObject(options.defaultValue));\n }\n if (!options.keepTouched) {\n unset(_formState.touchedFields, name);\n }\n if (!options.keepDirty) {\n unset(_formState.dirtyFields, name);\n _formState.isDirty = options.defaultValue\n ? _getDirty(name, cloneObject(get(_defaultValues, name)))\n : _getDirty();\n }\n if (!options.keepError) {\n unset(_formState.errors, name);\n _proxyFormState.isValid && _setValid();\n }\n _subjects.state.next({ ..._formState });\n }\n };\n const _reset = (formValues, keepStateOptions = {}) => {\n const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n const cloneUpdatedValues = cloneObject(updatedValues);\n const isEmptyResetValues = isEmptyObject(formValues);\n const values = isEmptyResetValues ? _defaultValues : cloneUpdatedValues;\n if (!keepStateOptions.keepDefaultValues) {\n _defaultValues = updatedValues;\n }\n if (!keepStateOptions.keepValues) {\n if (keepStateOptions.keepDirtyValues) {\n const fieldsToCheck = new Set([\n ..._names.mount,\n ...Object.keys(getDirtyFields(_defaultValues, _formValues)),\n ]);\n for (const fieldName of Array.from(fieldsToCheck)) {\n const isDirty = get(_formState.dirtyFields, fieldName);\n const existingValue = get(_formValues, fieldName);\n const newValue = get(values, fieldName);\n if (isDirty && !isUndefined(existingValue)) {\n set(values, fieldName, existingValue);\n }\n else if (!isDirty && !isUndefined(newValue)) {\n setValue(fieldName, newValue);\n }\n }\n }\n else {\n if (isWeb && isUndefined(formValues)) {\n for (const name of _names.mount) {\n const field = get(_fields, name);\n if (field && field._f) {\n const fieldReference = Array.isArray(field._f.refs)\n ? field._f.refs[0]\n : field._f.ref;\n if (isHTMLElement(fieldReference)) {\n const form = fieldReference.closest('form');\n if (form) {\n form.reset();\n break;\n }\n }\n }\n }\n }\n if (keepStateOptions.keepFieldsRef) {\n for (const fieldName of _names.mount) {\n setValue(fieldName, get(values, fieldName));\n }\n }\n else {\n _fields = {};\n }\n }\n _formValues = _options.shouldUnregister\n ? keepStateOptions.keepDefaultValues\n ? cloneObject(_defaultValues)\n : {}\n : cloneObject(values);\n _subjects.array.next({\n values: { ...values },\n });\n _subjects.state.next({\n values: { ...values },\n });\n }\n _names = {\n mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),\n unMount: new Set(),\n array: new Set(),\n disabled: new Set(),\n watch: new Set(),\n watchAll: false,\n focus: '',\n };\n _state.mount =\n !_proxyFormState.isValid ||\n !!keepStateOptions.keepIsValid ||\n !!keepStateOptions.keepDirtyValues ||\n (!_options.shouldUnregister && !isEmptyObject(values));\n _state.watch = !!_options.shouldUnregister;\n _state.keepIsValid = !!keepStateOptions.keepIsValid;\n _state.action = false;\n // Clear errors synchronously to prevent validation errors on subsequent submissions\n // This fixes the issue where form.reset() causes validation errors on subsequent\n // submissions in Next.js 16 with Server Actions\n if (!keepStateOptions.keepErrors) {\n _formState.errors = {};\n }\n _subjects.state.next({\n submitCount: keepStateOptions.keepSubmitCount\n ? _formState.submitCount\n : 0,\n isDirty: isEmptyResetValues\n ? false\n : keepStateOptions.keepDirty\n ? _formState.isDirty\n : !!(keepStateOptions.keepDefaultValues &&\n !deepEqual(formValues, _defaultValues)),\n isSubmitted: keepStateOptions.keepIsSubmitted\n ? _formState.isSubmitted\n : false,\n dirtyFields: isEmptyResetValues\n ? {}\n : keepStateOptions.keepDirtyValues\n ? keepStateOptions.keepDefaultValues && _formValues\n ? getDirtyFields(_defaultValues, _formValues)\n : _formState.dirtyFields\n : keepStateOptions.keepDefaultValues && formValues\n ? getDirtyFields(_defaultValues, formValues)\n : keepStateOptions.keepDirty\n ? _formState.dirtyFields\n : {},\n touchedFields: keepStateOptions.keepTouched\n ? _formState.touchedFields\n : {},\n errors: keepStateOptions.keepErrors ? _formState.errors : {},\n isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful\n ? _formState.isSubmitSuccessful\n : false,\n isSubmitting: false,\n defaultValues: _defaultValues,\n });\n };\n const reset = (formValues, keepStateOptions) => _reset(isFunction(formValues)\n ? formValues(_formValues)\n : formValues, { ..._options.resetOptions, ...keepStateOptions });\n const setFocus = (name, options = {}) => {\n const field = get(_fields, name);\n const fieldReference = field && field._f;\n if (fieldReference) {\n const fieldRef = fieldReference.refs\n ? fieldReference.refs[0]\n : fieldReference.ref;\n if (fieldRef.focus) {\n // Use setTimeout to ensure focus happens after any pending state updates\n // This fixes the issue where setFocus doesn't work immediately after setError\n setTimeout(() => {\n fieldRef.focus();\n options.shouldSelect &&\n isFunction(fieldRef.select) &&\n fieldRef.select();\n });\n }\n }\n };\n const _setFormState = (updatedFormState) => {\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n };\n const _resetDefaultValues = () => isFunction(_options.defaultValues) &&\n _options.defaultValues().then((values) => {\n reset(values, _options.resetOptions);\n _subjects.state.next({\n isLoading: false,\n });\n });\n const methods = {\n control: {\n register,\n unregister,\n getFieldState,\n handleSubmit,\n setError,\n _subscribe,\n _runSchema,\n _updateIsValidating,\n _focusError,\n _getWatch,\n _getDirty,\n _setValid,\n _setFieldArray,\n _setDisabledField,\n _setErrors,\n _getFieldArray,\n _reset,\n _resetDefaultValues,\n _removeUnmounted,\n _disableForm,\n _subjects,\n _proxyFormState,\n get _fields() {\n return _fields;\n },\n get _formValues() {\n return _formValues;\n },\n get _state() {\n return _state;\n },\n set _state(value) {\n _state = value;\n },\n get _defaultValues() {\n return _defaultValues;\n },\n get _names() {\n return _names;\n },\n set _names(value) {\n _names = value;\n },\n get _formState() {\n return _formState;\n },\n get _options() {\n return _options;\n },\n set _options(value) {\n _options = {\n ..._options,\n ...value,\n };\n },\n },\n subscribe,\n trigger,\n register,\n handleSubmit,\n watch,\n setValue,\n getValues,\n reset,\n resetField,\n clearErrors,\n unregister,\n setError,\n setFocus,\n getFieldState,\n };\n return {\n ...methods,\n formControl: methods,\n };\n}\n\nvar generateId = () => {\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n const d = typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = ((Math.random() * 16 + d) % 16) | 0;\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n};\n\nvar getFocusFieldName = (name, index, options = {}) => options.shouldFocus || isUndefined(options.shouldFocus)\n ? options.focusName ||\n `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\n : '';\n\nvar appendAt = (data, value) => [\n ...data,\n ...convertToArrayPayload(value),\n];\n\nvar fillEmptyArray = (value) => Array.isArray(value) ? value.map(() => undefined) : undefined;\n\nfunction insert(data, index, value) {\n return [\n ...data.slice(0, index),\n ...convertToArrayPayload(value),\n ...data.slice(index),\n ];\n}\n\nvar moveArrayAt = (data, from, to) => {\n if (!Array.isArray(data)) {\n return [];\n }\n if (isUndefined(data[to])) {\n data[to] = undefined;\n }\n data.splice(to, 0, data.splice(from, 1)[0]);\n return data;\n};\n\nvar prependAt = (data, value) => [\n ...convertToArrayPayload(value),\n ...convertToArrayPayload(data),\n];\n\nfunction removeAtIndexes(data, indexes) {\n let i = 0;\n const temp = [...data];\n for (const index of indexes) {\n temp.splice(index - i, 1);\n i++;\n }\n return compact(temp).length ? temp : [];\n}\nvar removeArrayAt = (data, index) => isUndefined(index)\n ? []\n : removeAtIndexes(data, convertToArrayPayload(index).sort((a, b) => a - b));\n\nvar swapArrayAt = (data, indexA, indexB) => {\n [data[indexA], data[indexB]] = [data[indexB], data[indexA]];\n};\n\nvar updateAt = (fieldValues, index, value) => {\n fieldValues[index] = value;\n return fieldValues;\n};\n\n/**\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc. • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn) • [Video](https://youtu.be/4MrbfGSFY2A)\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\n *\n * @param props - useFieldArray props\n *\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, control, handleSubmit, reset, trigger, setError } = useForm({\n * defaultValues: {\n * test: []\n * }\n * });\n * const { fields, append } = useFieldArray({\n * control,\n * name: \"test\"\n * });\n *\n * return (\n * <form onSubmit={handleSubmit(data => console.log(data))}>\n * {fields.map((item, index) => (\n * <input key={item.id} {...register(`test.${index}.firstName`)} />\n * ))}\n * <button type=\"button\" onClick={() => append({ firstName: \"bill\" })}>\n * append\n * </button>\n * <input type=\"submit\" />\n * </form>\n * );\n * }\n * ```\n */\nfunction useFieldArray(props) {\n const formControl = useFormControlContext();\n const { control = formControl, name, keyName = 'id', shouldUnregister, rules, } = props;\n const [fields, setFields] = React.useState(control._getFieldArray(name));\n const ids = React.useRef(control._getFieldArray(name).map(generateId));\n const _actioned = React.useRef(false);\n control._names.array.add(name);\n React.useMemo(() => rules &&\n fields.length >= 0 &&\n control.register(name, rules), [control, name, fields.length, rules]);\n useIsomorphicLayoutEffect(() => control._subjects.array.subscribe({\n next: ({ values, name: fieldArrayName, }) => {\n if (fieldArrayName === name || !fieldArrayName) {\n const fieldValues = get(values, name);\n if (Array.isArray(fieldValues)) {\n setFields(fieldValues);\n ids.current = fieldValues.map(generateId);\n }\n }\n },\n }).unsubscribe, [control, name]);\n const updateValues = React.useCallback((updatedFieldArrayValues) => {\n _actioned.current = true;\n control._setFieldArray(name, updatedFieldArrayValues);\n }, [control, name]);\n const append = (value, options) => {\n const appendValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = appendAt(control._getFieldArray(name), appendValue);\n control._names.focus = getFocusFieldName(name, updatedFieldArrayValues.length - 1, options);\n ids.current = appendAt(ids.current, appendValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, appendAt, {\n argA: fillEmptyArray(value),\n });\n };\n const prepend = (value, options) => {\n const prependValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = prependAt(control._getFieldArray(name), prependValue);\n control._names.focus = getFocusFieldName(name, 0, options);\n ids.current = prependAt(ids.current, prependValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, prependAt, {\n argA: fillEmptyArray(value),\n });\n };\n const remove = (index) => {\n const updatedFieldArrayValues = removeArrayAt(control._getFieldArray(name), index);\n ids.current = removeArrayAt(ids.current, index);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n !Array.isArray(get(control._fields, name)) &&\n set(control._fields, name, undefined);\n control._setFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\n argA: index,\n });\n };\n const insert$1 = (index, value, options) => {\n const insertValue = convertToArrayPayload(cloneObject(value));\n const updatedFieldArrayValues = insert(control._getFieldArray(name), index, insertValue);\n control._names.focus = getFocusFieldName(name, index, options);\n ids.current = insert(ids.current, index, insertValue.map(generateId));\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, insert, {\n argA: index,\n argB: fillEmptyArray(value),\n });\n };\n const swap = (indexA, indexB) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n swapArrayAt(updatedFieldArrayValues, indexA, indexB);\n swapArrayAt(ids.current, indexA, indexB);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, swapArrayAt, {\n argA: indexA,\n argB: indexB,\n }, false);\n };\n const move = (from, to) => {\n const updatedFieldArrayValues = control._getFieldArray(name);\n moveArrayAt(updatedFieldArrayValues, from, to);\n moveArrayAt(ids.current, from, to);\n updateValues(updatedFieldArrayValues);\n setFields(updatedFieldArrayValues);\n control._setFieldArray(name, updatedFieldArrayValues, moveArrayAt, {\n argA: from,\n argB: to,\n }, false);\n };\n const update = (index, value) => {\n const updateValue = cloneObject(value);\n const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, updateValue);\n ids.current = [...updatedFieldArrayValues].map((item, i) => !item || i === index ? generateId() : ids.current[i]);\n updateValues(updatedFieldArrayValues);\n setFields([...updatedFieldArrayValues]);\n control._setFieldArray(name, updatedFieldArrayValues, updateAt, {\n argA: index,\n argB: updateValue,\n }, true, false);\n };\n const replace = (value) => {\n const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n ids.current = updatedFieldArrayValues.map(generateId);\n updateValues([...updatedFieldArrayValues]);\n setFields([...updatedFieldArrayValues]);\n control._setFieldArray(name, [...updatedFieldArrayValues], (data) => data, {}, true, false);\n };\n React.useEffect(() => {\n control._state.action = false;\n isWatched(name, control._names) &&\n control._subjects.state.next({\n ...control._formState,\n });\n if (_actioned.current &&\n (!getValidationModes(control._options.mode).isOnSubmit ||\n control._formState.isSubmitted) &&\n !getValidationModes(control._options.reValidateMode).isOnSubmit) {\n if (control._options.resolver) {\n control._runSchema([name]).then((result) => {\n control._updateIsValidating([name]);\n const error = get(result.errors, name);\n const existingError = get(control._formState.errors, name);\n if (existingError\n ? (!error && existingError.type) ||\n (error &&\n (existingError.type !== error.type ||\n existingError.message !== error.message))\n : error && error.type) {\n error\n ? set(control._formState.errors, name, error)\n : unset(control._formState.errors, name);\n control._subjects.state.next({\n errors: control._formState.errors,\n });\n }\n });\n }\n else {\n const field = get(control._fields, name);\n if (field &&\n field._f &&\n !(getValidationModes(control._options.reValidateMode).isOnSubmit &&\n getValidationModes(control._options.mode).isOnSubmit)) {\n validateField(field, control._names.disabled, control._formValues, control._options.criteriaMode === VALIDATION_MODE.all, control._options.shouldUseNativeValidation, true).then((error) => !isEmptyObject(error) &&\n control._subjects.state.next({\n errors: updateFieldArrayRootError(control._formState.errors, error, name),\n }));\n }\n }\n }\n control._subjects.state.next({\n name,\n values: cloneObject(control._formValues),\n });\n control._names.focus &&\n iterateFieldsByAction(control._fields, (ref, key) => {\n if (control._names.focus &&\n key.startsWith(control._names.focus) &&\n ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n });\n control._names.focus = '';\n control._setValid();\n _actioned.current = false;\n }, [fields, name, control]);\n React.useEffect(() => {\n !get(control._formValues, name) && control._setFieldArray(name);\n return () => {\n const updateMounted = (name, value) => {\n const field = get(control._fields, name);\n if (field && field._f) {\n field._f.mount = value;\n }\n };\n control._options.shouldUnregister || shouldUnregister\n ? control.unregister(name)\n : updateMounted(name, false);\n };\n }, [name, control, keyName, shouldUnregister]);\n return {\n swap: React.useCallback(swap, [updateValues, name, control]),\n move: React.useCallback(move, [updateValues, name, control]),\n prepend: React.useCallback(prepend, [updateValues, name, control]),\n append: React.useCallback(append, [updateValues, name, control]),\n remove: React.useCallback(remove, [updateValues, name, control]),\n insert: React.useCallback(insert$1, [updateValues, name, control]),\n update: React.useCallback(update, [updateValues, name, control]),\n replace: React.useCallback(replace, [updateValues, name, control]),\n fields: React.useMemo(() => fields.map((field, index) => ({\n ...field,\n [keyName]: ids.current[index] || generateId(),\n })), [fields, keyName]),\n };\n}\n\n/**\n * Custom hook to manage the entire form.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\n *\n * @param props - form configuration and validation parameters.\n *\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, watch, formState: { errors } } = useForm();\n * const onSubmit = data => console.log(data);\n *\n * console.log(watch(\"example\"));\n *\n * return (\n * <form onSubmit={handleSubmit(onSubmit)}>\n * <input defaultValue=\"test\" {...register(\"example\")} />\n * <input {...register(\"exampleRequired\", { required: true })} />\n * {errors.exampleRequired && <span>This field is required</span>}\n * <button>Submit</button>\n * </form>\n * );\n * }\n * ```\n */\nfunction useForm(props = {}) {\n const _formControl = React.useRef(undefined);\n const _values = React.useRef(undefined);\n const [formState, updateFormState] = React.useState({\n isDirty: false,\n isValidating: false,\n isLoading: isFunction(props.defaultValues),\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n submitCount: 0,\n dirtyFields: {},\n touchedFields: {},\n validatingFields: {},\n errors: props.errors || {},\n disabled: props.disabled || false,\n isReady: false,\n defaultValues: isFunction(props.defaultValues)\n ? undefined\n : props.defaultValues,\n });\n if (!_formControl.current) {\n if (props.formControl) {\n _formControl.current = {\n ...props.formControl,\n formState,\n };\n if (props.defaultValues && !isFunction(props.defaultValues)) {\n props.formControl.reset(props.defaultValues, props.resetOptions);\n }\n }\n else {\n const { formControl, ...rest } = createFormControl(props);\n _formControl.current = {\n ...rest,\n formState,\n };\n }\n }\n const control = _formControl.current.control;\n control._options = props;\n useIsomorphicLayoutEffect(() => {\n const sub = control._subscribe({\n formState: control._proxyFormState,\n callback: () => updateFormState({ ...control._formState }),\n reRenderRoot: true,\n });\n updateFormState((data) => ({\n ...data,\n isReady: true,\n }));\n control._formState.isReady = true;\n return sub;\n }, [control]);\n React.useEffect(() => control._disableForm(props.disabled), [control, props.disabled]);\n React.useEffect(() => {\n if (props.mode) {\n control._options.mode = props.mode;\n }\n if (props.reValidateMode) {\n control._options.reValidateMode = props.reValidateMode;\n }\n }, [control, props.mode, props.reValidateMode]);\n React.useEffect(() => {\n if (props.errors) {\n control._setErrors(props.errors);\n control._focusError();\n }\n }, [control, props.errors]);\n React.useEffect(() => {\n props.shouldUnregister &&\n control._subjects.state.next({\n values: control._getWatch(),\n });\n }, [control, props.shouldUnregister]);\n React.useEffect(() => {\n if (control._proxyFormState.isDirty) {\n const isDirty = control._getDirty();\n if (isDirty !== formState.isDirty) {\n control._subjects.state.next({\n isDirty,\n });\n }\n }\n }, [control, formState.isDirty]);\n React.useEffect(() => {\n var _a;\n if (props.values && !deepEqual(props.values, _values.current)) {\n control._reset(props.values, {\n keepFieldsRef: true,\n ...control._options.resetOptions,\n });\n if (!((_a = control._options.resetOptions) === null || _a === void 0 ? void 0 : _a.keepIsValid)) {\n control._setValid();\n }\n _values.current = props.values;\n updateFormState((state) => ({ ...state }));\n }\n else {\n control._resetDefaultValues();\n }\n }, [control, props.values]);\n React.useEffect(() => {\n if (!control._state.mount) {\n control._setValid();\n control._state.mount = true;\n }\n if (control._state.watch) {\n control._state.watch = false;\n control._subjects.state.next({ ...control._formState });\n }\n control._removeUnmounted();\n });\n _formControl.current.formState = React.useMemo(() => getProxyFormState(formState, control), [control, formState]);\n return _formControl.current;\n}\n\n/**\n * Watch component that subscribes to form field changes and re-renders when watched fields update.\n *\n * @param control - The form control object from useForm\n * @param name - Can be field name, array of field names, or undefined to watch the entire form\n * @param disabled - Disable subscription\n * @param exact - Whether to watch exact field names or not\n * @param defaultValue - The default value to use if the field is not yet set\n * @param compute - Function to compute derived values from watched fields\n * @param render - The function that receives watched values and returns ReactNode\n * @returns The result of calling render function with watched values\n *\n * @example\n * The `Watch` component only re-render when the values of `foo`, `bar`, and `baz.qux` change.\n * The types of `foo`, `bar`, and `baz.qux` are precisely inferred.\n *\n * ```tsx\n * const { control } = useForm();\n *\n * <Watch\n * control={control}\n * names={['foo', 'bar', 'baz.qux']}\n * render={([foo, bar, baz_qux]) => <div>{foo}{bar}{baz_qux}</div>}\n * />\n * ```\n */\nconst Watch = (props) => props.render(useWatch({ name: props.names, ...props }));\n\nexport { Controller, Form, FormProvider, FormStateSubscribe, Watch, appendErrors, createFormControl, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };\n//# sourceMappingURL=index.esm.mjs.map\n","import type {\n PublicFormResponse,\n SubmitFormRequest,\n SubmitFormResponse,\n ApiError,\n} from \"./types\";\n\nexport class LubFormsClient {\n private baseUrl: string;\n\n constructor(baseUrl: string) {\n // Remove trailing slash\n this.baseUrl = baseUrl.replace(/\\/$/, \"\");\n }\n\n /**\n * Fetch a form by ID for public display\n */\n async getForm(formId: string): Promise<PublicFormResponse> {\n const url = `${this.baseUrl}/public/forms/${formId}`;\n\n const response = await fetch(url, {\n method: \"GET\",\n headers: {\n Accept: \"application/json\",\n },\n });\n\n if (!response.ok) {\n const error = await this.parseError(response);\n throw error;\n }\n\n return response.json() as Promise<PublicFormResponse>;\n }\n\n /**\n * Submit form data\n */\n async submitForm(\n formId: string,\n data: SubmitFormRequest\n ): Promise<SubmitFormResponse> {\n const url = `${this.baseUrl}/public/forms/${formId}/submit`;\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(data),\n });\n\n if (!response.ok) {\n const error = await this.parseError(response);\n throw error;\n }\n\n return response.json() as Promise<SubmitFormResponse>;\n }\n\n /**\n * Confirm double opt-in\n */\n async confirmOptIn(\n token: string\n ): Promise<{ success: boolean; message: string; submission_id: string }> {\n const url = `${this.baseUrl}/public/forms/confirm/${token}`;\n\n const response = await fetch(url, {\n method: \"GET\",\n headers: {\n Accept: \"application/json\",\n },\n });\n\n if (!response.ok) {\n const error = await this.parseError(response);\n throw error;\n }\n\n return response.json();\n }\n\n private async parseError(response: Response): Promise<ApiError> {\n try {\n const data = await response.json();\n return {\n error: data.error || data.message || \"An error occurred\",\n code: data.code,\n details: data.details,\n };\n } catch {\n return {\n error: `HTTP ${response.status}: ${response.statusText}`,\n };\n }\n }\n}\n\n// Default client instance (can be set via LubForms.init)\nlet defaultClient: LubFormsClient | null = null;\n\nexport function setDefaultClient(client: LubFormsClient): void {\n defaultClient = client;\n}\n\nexport function getDefaultClient(): LubFormsClient | null {\n return defaultClient;\n}\n\nexport function createClient(baseUrl: string): LubFormsClient {\n return new LubFormsClient(baseUrl);\n}\n","import{get as t,set as e}from\"react-hook-form\";const s=(e,s,o)=>{if(e&&\"reportValidity\"in e){const r=t(o,s);e.setCustomValidity(r&&r.message||\"\"),e.reportValidity()}},o=(t,e)=>{for(const o in e.fields){const r=e.fields[o];r&&r.ref&&\"reportValidity\"in r.ref?s(r.ref,o,t):r.refs&&r.refs.forEach(e=>s(e,o,t))}},r=(s,r)=>{r.shouldUseNativeValidation&&o(s,r);const f={};for(const o in s){const n=t(r.fields,o),a=Object.assign(s[o]||{},{ref:n&&n.ref});if(i(r.names||Object.keys(s),o)){const s=Object.assign({},t(f,o));e(s,\"root\",a),e(f,o,s)}else e(f,o,a)}return f},i=(t,e)=>t.some(t=>t.startsWith(e+\".\"));export{r as toNestErrors,o as validateFieldsNatively};\n//# sourceMappingURL=resolvers.mjs.map\n","import{validateFieldsNatively as r,toNestErrors as e}from\"@hookform/resolvers\";import{appendErrors as o}from\"react-hook-form\";var n=function(r,e){for(var n={};r.length;){var t=r[0],s=t.code,i=t.message,a=t.path.join(\".\");if(!n[a])if(\"unionErrors\"in t){var u=t.unionErrors[0].errors[0];n[a]={message:u.message,type:u.code}}else n[a]={message:i,type:s};if(\"unionErrors\"in t&&t.unionErrors.forEach(function(e){return e.errors.forEach(function(e){return r.push(e)})}),e){var c=n[a].types,f=c&&c[t.code];n[a]=o(a,e,n,s,f?[].concat(f,t.message):t.message)}r.shift()}return n},t=function(o,t,s){return void 0===s&&(s={}),function(i,a,u){try{return Promise.resolve(function(e,n){try{var a=Promise.resolve(o[\"sync\"===s.mode?\"parse\":\"parseAsync\"](i,t)).then(function(e){return u.shouldUseNativeValidation&&r({},u),{errors:{},values:s.raw?i:e}})}catch(r){return n(r)}return a&&a.then?a.then(void 0,n):a}(0,function(r){if(function(r){return Array.isArray(null==r?void 0:r.errors)}(r))return{values:{},errors:e(n(r.errors,!u.shouldUseNativeValidation&&\"all\"===u.criteriaMode),u)};throw r}))}catch(r){return Promise.reject(r)}}};export{t as zodResolver};\n//# sourceMappingURL=zod.module.js.map\n","import {\n createContext,\n useContext,\n useMemo,\n type ReactNode,\n} from \"react\";\nimport {\n useForm,\n FormProvider as RHFFormProvider,\n type UseFormReturn,\n type FieldValues,\n} from \"react-hook-form\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport type { z } from \"zod\";\nimport type { PublicFormResponse, FormField } from \"@/api/types\";\n\n// Form context types\ninterface LubFormContextValue {\n form: PublicFormResponse;\n fields: FormField[];\n currentStep: number;\n totalSteps: number;\n isMultiStep: boolean;\n isSubmitting: boolean;\n isSuccess: boolean;\n error: string | null;\n goToStep: (step: number) => void;\n nextStep: () => void;\n prevStep: () => void;\n getFieldsForCurrentStep: () => FormField[];\n getVisibleFields: (formValues: FieldValues) => FormField[];\n}\n\nconst LubFormContext = createContext<LubFormContextValue | null>(null);\n\nexport function useLubFormContext(): LubFormContextValue {\n const context = useContext(LubFormContext);\n if (!context) {\n throw new Error(\"useLubFormContext must be used within a LubFormProvider\");\n }\n return context;\n}\n\n// Props\ninterface LubFormProviderProps {\n form: PublicFormResponse;\n schema: z.ZodSchema;\n defaultValues?: Record<string, unknown>;\n currentStep: number;\n totalSteps: number;\n isSubmitting: boolean;\n isSuccess: boolean;\n error: string | null;\n onStepChange: (step: number) => void;\n children: ReactNode;\n}\n\nexport function LubFormProvider({\n form,\n schema,\n defaultValues,\n currentStep,\n totalSteps,\n isSubmitting,\n isSuccess,\n error,\n onStepChange,\n children,\n}: LubFormProviderProps) {\n const methods = useForm({\n resolver: zodResolver(schema),\n defaultValues: defaultValues ?? {},\n mode: \"onBlur\",\n reValidateMode: \"onChange\",\n });\n\n const isMultiStep = form.is_multi_step && (form.steps?.length ?? 0) > 0;\n\n const goToStep = (step: number) => {\n if (step >= 0 && step < totalSteps) {\n onStepChange(step);\n }\n };\n\n const nextStep = () => {\n if (currentStep < totalSteps - 1) {\n onStepChange(currentStep + 1);\n }\n };\n\n const prevStep = () => {\n if (currentStep > 0) {\n onStepChange(currentStep - 1);\n }\n };\n\n const getFieldsForCurrentStep = (): FormField[] => {\n if (!isMultiStep || !form.steps) {\n return form.fields.filter((f) => f.is_active);\n }\n\n const step = form.steps[currentStep];\n if (!step) return [];\n\n const stepFieldIds = new Set(step.field_ids);\n return form.fields.filter(\n (f) => f.is_active && stepFieldIds.has(f.id)\n );\n };\n\n const getVisibleFields = (formValues: FieldValues): FormField[] => {\n const stepFields = getFieldsForCurrentStep();\n return stepFields.filter((field) => {\n if (!field.conditional_logic) return true;\n return evaluateFieldVisibility(field, formValues);\n });\n };\n\n const contextValue = useMemo(\n (): LubFormContextValue => ({\n form,\n fields: form.fields,\n currentStep,\n totalSteps,\n isMultiStep,\n isSubmitting,\n isSuccess,\n error,\n goToStep,\n nextStep,\n prevStep,\n getFieldsForCurrentStep,\n getVisibleFields,\n }),\n [form, currentStep, totalSteps, isSubmitting, isSuccess, error]\n );\n\n return (\n <LubFormContext.Provider value={contextValue}>\n <RHFFormProvider {...methods}>{children}</RHFFormProvider>\n </LubFormContext.Provider>\n );\n}\n\n// Helper to evaluate field visibility based on conditional logic\nfunction evaluateFieldVisibility(\n field: FormField,\n formValues: FieldValues\n): boolean {\n const logic = field.conditional_logic;\n if (!logic) return true;\n\n // Check show_if\n if (logic.show_if) {\n return evaluateCondition(logic.show_if, formValues);\n }\n\n // Check hide_if\n if (logic.hide_if) {\n return !evaluateCondition(logic.hide_if, formValues);\n }\n\n return true;\n}\n\nfunction evaluateCondition(\n condition: NonNullable<FormField[\"conditional_logic\"]>[\"show_if\"],\n formValues: FieldValues\n): boolean {\n if (!condition) return true;\n\n const fieldValue = formValues[condition.field_name];\n let result = compareValues(fieldValue, condition.operator, condition.value);\n\n // Evaluate AND conditions\n if (condition.and && condition.and.length > 0) {\n for (const andCond of condition.and) {\n if (!evaluateCondition(andCond, formValues)) {\n return false;\n }\n }\n }\n\n // Evaluate OR conditions\n if (condition.or && condition.or.length > 0) {\n let orResult = false;\n for (const orCond of condition.or) {\n if (evaluateCondition(orCond, formValues)) {\n orResult = true;\n break;\n }\n }\n result = result && orResult;\n }\n\n return result;\n}\n\nfunction compareValues(\n fieldValue: unknown,\n operator: string,\n compareValue: unknown\n): boolean {\n switch (operator) {\n case \"equals\":\n return fieldValue === compareValue;\n case \"not_equals\":\n return fieldValue !== compareValue;\n case \"contains\":\n return String(fieldValue ?? \"\").includes(String(compareValue));\n case \"not_contains\":\n return !String(fieldValue ?? \"\").includes(String(compareValue));\n case \"greater_than\":\n return Number(fieldValue) > Number(compareValue);\n case \"less_than\":\n return Number(fieldValue) < Number(compareValue);\n case \"is_empty\":\n return fieldValue == null || fieldValue === \"\";\n case \"is_not_empty\":\n return fieldValue != null && fieldValue !== \"\";\n default:\n return true;\n }\n}\n\n// Export React Hook Form methods hook\nexport function useFormMethods(): UseFormReturn {\n const methods = useContext(RHFFormProvider as unknown as React.Context<UseFormReturn | null>);\n if (!methods) {\n throw new Error(\"useFormMethods must be used within a LubFormProvider\");\n }\n return methods;\n}\n","/**\n * Combine class names, filtering out falsy values\n */\nexport function cn(\n ...classes: (string | undefined | null | false)[]\n): string {\n return classes.filter(Boolean).join(\" \");\n}\n","import type { ReactNode } from \"react\";\nimport { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { cn } from \"@/utils/cn\";\n\ninterface FieldWrapperProps {\n field: FormField;\n children: ReactNode;\n hideLabel?: boolean;\n}\n\nexport function FieldWrapper({ field, children, hideLabel = false }: FieldWrapperProps) {\n const { formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n return (\n <div\n className={cn(\n \"lub-form__field-wrapper\",\n hasError && \"lub-form__field-wrapper--error\"\n )}\n >\n {!hideLabel && field.label && (\n <label\n htmlFor={field.name}\n className={cn(\n \"lub-form__label\",\n field.required && \"lub-form__label--required\"\n )}\n >\n {field.label}\n {field.required && (\n <span className=\"lub-form__required-indicator\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n\n {children}\n\n {field.help_text && !hasError && (\n <p className=\"lub-form__help-text\" id={`${field.name}-help`}>\n {field.help_text}\n </p>\n )}\n\n {hasError && (\n <p\n className=\"lub-form__error\"\n id={`${field.name}-error`}\n role=\"alert\"\n >\n {error.message as string}\n </p>\n )}\n </div>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\n\ninterface TextFieldProps {\n field: FormField;\n}\n\nexport function TextField({ field }: TextFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n // Determine input type based on field_type\n const inputType = getInputType(field.field_type);\n\n return (\n <FieldWrapper field={field}>\n <input\n id={field.name}\n type={inputType}\n className={cn(\"lub-form__input\", hasError && \"lub-form__input--error\")}\n placeholder={field.placeholder}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n />\n </FieldWrapper>\n );\n}\n\nfunction getInputType(fieldType: FormField[\"field_type\"]): string {\n switch (fieldType) {\n case \"email\":\n return \"email\";\n case \"phone\":\n return \"tel\";\n case \"url\":\n return \"url\";\n case \"text\":\n default:\n return \"text\";\n }\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\n\ninterface TextareaFieldProps {\n field: FormField;\n}\n\nexport function TextareaField({ field }: TextareaFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n return (\n <FieldWrapper field={field}>\n <textarea\n id={field.name}\n className={cn(\n \"lub-form__textarea\",\n hasError && \"lub-form__textarea--error\"\n )}\n placeholder={field.placeholder}\n rows={4}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n />\n </FieldWrapper>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\n\ninterface NumberFieldProps {\n field: FormField;\n}\n\nexport function NumberField({ field }: NumberFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n const rules = field.validation_rules;\n\n return (\n <FieldWrapper field={field}>\n <input\n id={field.name}\n type=\"number\"\n className={cn(\"lub-form__input\", hasError && \"lub-form__input--error\")}\n placeholder={field.placeholder}\n min={rules?.min}\n max={rules?.max}\n step=\"any\"\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n />\n </FieldWrapper>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\n\ninterface SelectFieldProps {\n field: FormField;\n}\n\nexport function SelectField({ field }: SelectFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n const options = field.options?.options ?? [];\n\n return (\n <FieldWrapper field={field}>\n <select\n id={field.name}\n className={cn(\"lub-form__select\", hasError && \"lub-form__select--error\")}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n >\n <option value=\"\">\n {field.placeholder || \"Select an option...\"}\n </option>\n {options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n {field.options?.allow_other && (\n <option value=\"__other__\">\n {field.options.other_label || \"Other\"}\n </option>\n )}\n </select>\n </FieldWrapper>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\n\ninterface RadioFieldProps {\n field: FormField;\n}\n\nexport function RadioField({ field }: RadioFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n const options = field.options?.options ?? [];\n\n return (\n <FieldWrapper field={field}>\n <div\n className=\"lub-form__radio-group\"\n role=\"radiogroup\"\n aria-labelledby={`${field.name}-label`}\n >\n {options.map((option) => (\n <label key={option.value} className=\"lub-form__radio-label\">\n <input\n type=\"radio\"\n className={cn(\n \"lub-form__radio\",\n hasError && \"lub-form__radio--error\"\n )}\n value={option.value}\n {...register(field.name)}\n />\n <span className=\"lub-form__radio-text\">{option.label}</span>\n </label>\n ))}\n {field.options?.allow_other && (\n <label className=\"lub-form__radio-label\">\n <input\n type=\"radio\"\n className={cn(\n \"lub-form__radio\",\n hasError && \"lub-form__radio--error\"\n )}\n value=\"__other__\"\n {...register(field.name)}\n />\n <span className=\"lub-form__radio-text\">\n {field.options.other_label || \"Other\"}\n </span>\n </label>\n )}\n </div>\n </FieldWrapper>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { cn } from \"@/utils/cn\";\n\ninterface CheckboxFieldProps {\n field: FormField;\n}\n\nexport function CheckboxField({ field }: CheckboxFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n return (\n <div\n className={cn(\n \"lub-form__field-wrapper\",\n hasError && \"lub-form__field-wrapper--error\"\n )}\n >\n <label className=\"lub-form__checkbox-label\">\n <input\n id={field.name}\n type=\"checkbox\"\n className={cn(\n \"lub-form__checkbox\",\n hasError && \"lub-form__checkbox--error\"\n )}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n />\n <span className=\"lub-form__checkbox-text\">\n {field.label}\n {field.required && (\n <span className=\"lub-form__required-indicator\" aria-hidden=\"true\">\n *\n </span>\n )}\n </span>\n </label>\n\n {field.help_text && !hasError && (\n <p className=\"lub-form__help-text\" id={`${field.name}-help`}>\n {field.help_text}\n </p>\n )}\n\n {hasError && (\n <p className=\"lub-form__error\" id={`${field.name}-error`} role=\"alert\">\n {error.message as string}\n </p>\n )}\n </div>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\n\ninterface CheckboxGroupFieldProps {\n field: FormField;\n}\n\nexport function CheckboxGroupField({ field }: CheckboxGroupFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n const options = field.options?.options ?? [];\n\n return (\n <FieldWrapper field={field}>\n <div\n className=\"lub-form__checkbox-group\"\n role=\"group\"\n aria-labelledby={`${field.name}-label`}\n >\n {options.map((option) => (\n <label key={option.value} className=\"lub-form__checkbox-label\">\n <input\n type=\"checkbox\"\n className={cn(\n \"lub-form__checkbox\",\n hasError && \"lub-form__checkbox--error\"\n )}\n value={option.value}\n {...register(field.name)}\n />\n <span className=\"lub-form__checkbox-text\">{option.label}</span>\n </label>\n ))}\n {field.options?.allow_other && (\n <label className=\"lub-form__checkbox-label\">\n <input\n type=\"checkbox\"\n className={cn(\n \"lub-form__checkbox\",\n hasError && \"lub-form__checkbox--error\"\n )}\n value=\"__other__\"\n {...register(field.name)}\n />\n <span className=\"lub-form__checkbox-text\">\n {field.options.other_label || \"Other\"}\n </span>\n </label>\n )}\n </div>\n </FieldWrapper>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\n\ninterface DateFieldProps {\n field: FormField;\n}\n\nexport function DateField({ field }: DateFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n return (\n <FieldWrapper field={field}>\n <input\n id={field.name}\n type=\"date\"\n className={cn(\"lub-form__input\", hasError && \"lub-form__input--error\")}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n />\n </FieldWrapper>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\n\ninterface TimeFieldProps {\n field: FormField;\n}\n\nexport function TimeField({ field }: TimeFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n return (\n <FieldWrapper field={field}>\n <input\n id={field.name}\n type=\"time\"\n className={cn(\"lub-form__input\", hasError && \"lub-form__input--error\")}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n />\n </FieldWrapper>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\n\ninterface DateTimeFieldProps {\n field: FormField;\n}\n\nexport function DateTimeField({ field }: DateTimeFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n return (\n <FieldWrapper field={field}>\n <input\n id={field.name}\n type=\"datetime-local\"\n className={cn(\"lub-form__input\", hasError && \"lub-form__input--error\")}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n />\n </FieldWrapper>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\n\ninterface FileFieldProps {\n field: FormField;\n}\n\nexport function FileField({ field }: FileFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n const rules = field.validation_rules;\n const acceptTypes = rules?.allowed_types?.join(\",\");\n\n return (\n <FieldWrapper field={field}>\n <input\n id={field.name}\n type=\"file\"\n className={cn(\n \"lub-form__file-input\",\n hasError && \"lub-form__file-input--error\"\n )}\n accept={acceptTypes}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n />\n {rules?.max_file_size && (\n <p className=\"lub-form__file-hint\">\n Max file size: {rules.max_file_size}MB\n </p>\n )}\n </FieldWrapper>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\n\ninterface HiddenFieldProps {\n field: FormField;\n}\n\nexport function HiddenField({ field }: HiddenFieldProps) {\n const { register } = useFormContext();\n\n return (\n <input\n type=\"hidden\"\n {...register(field.name)}\n defaultValue={field.default_value}\n />\n );\n}\n","// Country data for country/state fields\n\nexport interface Country {\n code: string;\n name: string;\n}\n\nexport interface State {\n code: string;\n name: string;\n countryCode: string;\n}\n\n// ISO 3166-1 alpha-2 country codes - most common countries\nexport const countries: Country[] = [\n { code: \"US\", name: \"United States\" },\n { code: \"CA\", name: \"Canada\" },\n { code: \"GB\", name: \"United Kingdom\" },\n { code: \"AU\", name: \"Australia\" },\n { code: \"DE\", name: \"Germany\" },\n { code: \"FR\", name: \"France\" },\n { code: \"ES\", name: \"Spain\" },\n { code: \"IT\", name: \"Italy\" },\n { code: \"NL\", name: \"Netherlands\" },\n { code: \"BE\", name: \"Belgium\" },\n { code: \"AT\", name: \"Austria\" },\n { code: \"CH\", name: \"Switzerland\" },\n { code: \"SE\", name: \"Sweden\" },\n { code: \"NO\", name: \"Norway\" },\n { code: \"DK\", name: \"Denmark\" },\n { code: \"FI\", name: \"Finland\" },\n { code: \"IE\", name: \"Ireland\" },\n { code: \"PT\", name: \"Portugal\" },\n { code: \"PL\", name: \"Poland\" },\n { code: \"CZ\", name: \"Czech Republic\" },\n { code: \"JP\", name: \"Japan\" },\n { code: \"KR\", name: \"South Korea\" },\n { code: \"CN\", name: \"China\" },\n { code: \"IN\", name: \"India\" },\n { code: \"BR\", name: \"Brazil\" },\n { code: \"MX\", name: \"Mexico\" },\n { code: \"AR\", name: \"Argentina\" },\n { code: \"CL\", name: \"Chile\" },\n { code: \"CO\", name: \"Colombia\" },\n { code: \"PE\", name: \"Peru\" },\n { code: \"NZ\", name: \"New Zealand\" },\n { code: \"SG\", name: \"Singapore\" },\n { code: \"HK\", name: \"Hong Kong\" },\n { code: \"TW\", name: \"Taiwan\" },\n { code: \"MY\", name: \"Malaysia\" },\n { code: \"TH\", name: \"Thailand\" },\n { code: \"PH\", name: \"Philippines\" },\n { code: \"ID\", name: \"Indonesia\" },\n { code: \"VN\", name: \"Vietnam\" },\n { code: \"ZA\", name: \"South Africa\" },\n { code: \"AE\", name: \"United Arab Emirates\" },\n { code: \"SA\", name: \"Saudi Arabia\" },\n { code: \"IL\", name: \"Israel\" },\n { code: \"TR\", name: \"Turkey\" },\n { code: \"RU\", name: \"Russia\" },\n { code: \"UA\", name: \"Ukraine\" },\n { code: \"GR\", name: \"Greece\" },\n { code: \"HU\", name: \"Hungary\" },\n { code: \"RO\", name: \"Romania\" },\n];\n\n// US States\nexport const usStates: State[] = [\n { code: \"AL\", name: \"Alabama\", countryCode: \"US\" },\n { code: \"AK\", name: \"Alaska\", countryCode: \"US\" },\n { code: \"AZ\", name: \"Arizona\", countryCode: \"US\" },\n { code: \"AR\", name: \"Arkansas\", countryCode: \"US\" },\n { code: \"CA\", name: \"California\", countryCode: \"US\" },\n { code: \"CO\", name: \"Colorado\", countryCode: \"US\" },\n { code: \"CT\", name: \"Connecticut\", countryCode: \"US\" },\n { code: \"DE\", name: \"Delaware\", countryCode: \"US\" },\n { code: \"FL\", name: \"Florida\", countryCode: \"US\" },\n { code: \"GA\", name: \"Georgia\", countryCode: \"US\" },\n { code: \"HI\", name: \"Hawaii\", countryCode: \"US\" },\n { code: \"ID\", name: \"Idaho\", countryCode: \"US\" },\n { code: \"IL\", name: \"Illinois\", countryCode: \"US\" },\n { code: \"IN\", name: \"Indiana\", countryCode: \"US\" },\n { code: \"IA\", name: \"Iowa\", countryCode: \"US\" },\n { code: \"KS\", name: \"Kansas\", countryCode: \"US\" },\n { code: \"KY\", name: \"Kentucky\", countryCode: \"US\" },\n { code: \"LA\", name: \"Louisiana\", countryCode: \"US\" },\n { code: \"ME\", name: \"Maine\", countryCode: \"US\" },\n { code: \"MD\", name: \"Maryland\", countryCode: \"US\" },\n { code: \"MA\", name: \"Massachusetts\", countryCode: \"US\" },\n { code: \"MI\", name: \"Michigan\", countryCode: \"US\" },\n { code: \"MN\", name: \"Minnesota\", countryCode: \"US\" },\n { code: \"MS\", name: \"Mississippi\", countryCode: \"US\" },\n { code: \"MO\", name: \"Missouri\", countryCode: \"US\" },\n { code: \"MT\", name: \"Montana\", countryCode: \"US\" },\n { code: \"NE\", name: \"Nebraska\", countryCode: \"US\" },\n { code: \"NV\", name: \"Nevada\", countryCode: \"US\" },\n { code: \"NH\", name: \"New Hampshire\", countryCode: \"US\" },\n { code: \"NJ\", name: \"New Jersey\", countryCode: \"US\" },\n { code: \"NM\", name: \"New Mexico\", countryCode: \"US\" },\n { code: \"NY\", name: \"New York\", countryCode: \"US\" },\n { code: \"NC\", name: \"North Carolina\", countryCode: \"US\" },\n { code: \"ND\", name: \"North Dakota\", countryCode: \"US\" },\n { code: \"OH\", name: \"Ohio\", countryCode: \"US\" },\n { code: \"OK\", name: \"Oklahoma\", countryCode: \"US\" },\n { code: \"OR\", name: \"Oregon\", countryCode: \"US\" },\n { code: \"PA\", name: \"Pennsylvania\", countryCode: \"US\" },\n { code: \"RI\", name: \"Rhode Island\", countryCode: \"US\" },\n { code: \"SC\", name: \"South Carolina\", countryCode: \"US\" },\n { code: \"SD\", name: \"South Dakota\", countryCode: \"US\" },\n { code: \"TN\", name: \"Tennessee\", countryCode: \"US\" },\n { code: \"TX\", name: \"Texas\", countryCode: \"US\" },\n { code: \"UT\", name: \"Utah\", countryCode: \"US\" },\n { code: \"VT\", name: \"Vermont\", countryCode: \"US\" },\n { code: \"VA\", name: \"Virginia\", countryCode: \"US\" },\n { code: \"WA\", name: \"Washington\", countryCode: \"US\" },\n { code: \"WV\", name: \"West Virginia\", countryCode: \"US\" },\n { code: \"WI\", name: \"Wisconsin\", countryCode: \"US\" },\n { code: \"WY\", name: \"Wyoming\", countryCode: \"US\" },\n { code: \"DC\", name: \"District of Columbia\", countryCode: \"US\" },\n];\n\n// Canadian Provinces\nexport const caProvinces: State[] = [\n { code: \"AB\", name: \"Alberta\", countryCode: \"CA\" },\n { code: \"BC\", name: \"British Columbia\", countryCode: \"CA\" },\n { code: \"MB\", name: \"Manitoba\", countryCode: \"CA\" },\n { code: \"NB\", name: \"New Brunswick\", countryCode: \"CA\" },\n { code: \"NL\", name: \"Newfoundland and Labrador\", countryCode: \"CA\" },\n { code: \"NS\", name: \"Nova Scotia\", countryCode: \"CA\" },\n { code: \"ON\", name: \"Ontario\", countryCode: \"CA\" },\n { code: \"PE\", name: \"Prince Edward Island\", countryCode: \"CA\" },\n { code: \"QC\", name: \"Quebec\", countryCode: \"CA\" },\n { code: \"SK\", name: \"Saskatchewan\", countryCode: \"CA\" },\n { code: \"NT\", name: \"Northwest Territories\", countryCode: \"CA\" },\n { code: \"NU\", name: \"Nunavut\", countryCode: \"CA\" },\n { code: \"YT\", name: \"Yukon\", countryCode: \"CA\" },\n];\n\n// Get states for a country\nexport function getStatesForCountry(countryCode: string): State[] {\n switch (countryCode) {\n case \"US\":\n return usStates;\n case \"CA\":\n return caProvinces;\n default:\n return [];\n }\n}\n\n// Get country by code\nexport function getCountryByCode(code: string): Country | undefined {\n return countries.find((c) => c.code === code);\n}\n\n// Get state by code\nexport function getStateByCode(\n stateCode: string,\n countryCode: string\n): State | undefined {\n const states = getStatesForCountry(countryCode);\n return states.find((s) => s.code === stateCode);\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\nimport { countries } from \"@/utils/countries\";\n\ninterface CountryFieldProps {\n field: FormField;\n}\n\nexport function CountryField({ field }: CountryFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n return (\n <FieldWrapper field={field}>\n <select\n id={field.name}\n className={cn(\"lub-form__select\", hasError && \"lub-form__select--error\")}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n >\n <option value=\"\">\n {field.placeholder || \"Select a country...\"}\n </option>\n {countries.map((country) => (\n <option key={country.code} value={country.code}>\n {country.name}\n </option>\n ))}\n </select>\n </FieldWrapper>\n );\n}\n","import { useFormContext, useWatch } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\nimport { getStatesForCountry } from \"@/utils/countries\";\n\ninterface StateFieldProps {\n field: FormField;\n /** Name of the country field to watch for state filtering */\n countryFieldName?: string;\n}\n\nexport function StateField({\n field,\n countryFieldName = \"country\",\n}: StateFieldProps) {\n const { register, formState, control } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n // Watch country field to filter states\n const countryValue = useWatch({\n control,\n name: countryFieldName,\n defaultValue: \"\",\n });\n\n const states = getStatesForCountry(countryValue as string);\n const hasStates = states.length > 0;\n\n // If no country selected or country has no states, show text input\n if (!hasStates) {\n return (\n <FieldWrapper field={field}>\n <input\n id={field.name}\n type=\"text\"\n className={cn(\"lub-form__input\", hasError && \"lub-form__input--error\")}\n placeholder={field.placeholder || \"State/Province\"}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n />\n </FieldWrapper>\n );\n }\n\n return (\n <FieldWrapper field={field}>\n <select\n id={field.name}\n className={cn(\"lub-form__select\", hasError && \"lub-form__select--error\")}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n >\n <option value=\"\">\n {field.placeholder || \"Select a state...\"}\n </option>\n {states.map((state) => (\n <option key={state.code} value={state.code}>\n {state.name}\n </option>\n ))}\n </select>\n </FieldWrapper>\n );\n}\n","import type { FormField } from \"@/api/types\";\n\ninterface HtmlFieldProps {\n field: FormField;\n}\n\nexport function HtmlField({ field }: HtmlFieldProps) {\n // HTML fields display static content from default_value\n if (!field.default_value) return null;\n\n return (\n <div\n className=\"lub-form__html-content\"\n dangerouslySetInnerHTML={{ __html: field.default_value }}\n />\n );\n}\n","import type { FormField } from \"@/api/types\";\n\ninterface DividerFieldProps {\n field: FormField;\n}\n\nexport function DividerField({ field }: DividerFieldProps) {\n return (\n <div className=\"lub-form__divider\">\n <hr className=\"lub-form__divider-line\" />\n {field.label && (\n <span className=\"lub-form__divider-label\">{field.label}</span>\n )}\n </div>\n );\n}\n","import { useEffect, useRef, useCallback } from \"react\";\nimport { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { useLubFormContext } from \"@/core/FormProvider\";\n\ninterface RecaptchaFieldProps {\n field: FormField;\n}\n\ndeclare global {\n interface Window {\n grecaptcha?: {\n ready: (callback: () => void) => void;\n execute: (\n siteKey: string,\n options: { action: string }\n ) => Promise<string>;\n render: (\n container: HTMLElement,\n options: {\n sitekey: string;\n callback: (token: string) => void;\n \"expired-callback\"?: () => void;\n \"error-callback\"?: () => void;\n }\n ) => number;\n reset: (widgetId?: number) => void;\n };\n }\n}\n\nexport function RecaptchaField({ field }: RecaptchaFieldProps) {\n const { setValue, setError, clearErrors } = useFormContext();\n const { form } = useLubFormContext();\n const containerRef = useRef<HTMLDivElement>(null);\n const widgetIdRef = useRef<number | null>(null);\n const scriptLoadedRef = useRef(false);\n\n const siteKey = form.settings.recaptcha_site_key;\n\n // Callback for v2 checkbox\n const handleV2Callback = useCallback(\n (token: string) => {\n setValue(\"_recaptcha_token\", token);\n clearErrors(\"_recaptcha_token\");\n },\n [setValue, clearErrors]\n );\n\n const handleExpired = useCallback(() => {\n setValue(\"_recaptcha_token\", \"\");\n setError(\"_recaptcha_token\", {\n type: \"manual\",\n message: \"reCAPTCHA expired, please try again\",\n });\n }, [setValue, setError]);\n\n // Load reCAPTCHA script\n useEffect(() => {\n if (!siteKey || scriptLoadedRef.current) return;\n\n // Check if script already exists\n const existingScript = document.querySelector(\n 'script[src*=\"recaptcha\"]'\n );\n if (existingScript) {\n scriptLoadedRef.current = true;\n return;\n }\n\n const script = document.createElement(\"script\");\n script.src = `https://www.google.com/recaptcha/api.js?render=explicit`;\n script.async = true;\n script.defer = true;\n script.onload = () => {\n scriptLoadedRef.current = true;\n };\n document.head.appendChild(script);\n\n return () => {\n // Don't remove script on cleanup as it might be used elsewhere\n };\n }, [siteKey]);\n\n // Render v2 widget\n useEffect(() => {\n if (!siteKey || !containerRef.current) return;\n\n const renderWidget = () => {\n if (\n window.grecaptcha &&\n containerRef.current &&\n widgetIdRef.current === null\n ) {\n window.grecaptcha.ready(() => {\n if (containerRef.current) {\n widgetIdRef.current = window.grecaptcha!.render(\n containerRef.current,\n {\n sitekey: siteKey,\n callback: handleV2Callback,\n \"expired-callback\": handleExpired,\n \"error-callback\": handleExpired,\n }\n );\n }\n });\n }\n };\n\n // Try rendering, with retry if script isn't loaded yet\n const attemptRender = () => {\n if (window.grecaptcha) {\n renderWidget();\n } else {\n setTimeout(attemptRender, 100);\n }\n };\n\n attemptRender();\n\n return () => {\n if (widgetIdRef.current !== null && window.grecaptcha) {\n window.grecaptcha.reset(widgetIdRef.current);\n widgetIdRef.current = null;\n }\n };\n }, [siteKey, handleV2Callback, handleExpired]);\n\n if (!siteKey) {\n return null;\n }\n\n return (\n <div className=\"lub-form__recaptcha\">\n <div ref={containerRef} className=\"lub-form__recaptcha-widget\" />\n </div>\n );\n}\n","import type { ComponentType } from \"react\";\nimport type { FieldType, FormField } from \"@/api/types\";\n\nimport { TextField } from \"./TextField\";\nimport { TextareaField } from \"./TextareaField\";\nimport { NumberField } from \"./NumberField\";\nimport { SelectField } from \"./SelectField\";\nimport { RadioField } from \"./RadioField\";\nimport { CheckboxField } from \"./CheckboxField\";\nimport { CheckboxGroupField } from \"./CheckboxGroupField\";\nimport { DateField } from \"./DateField\";\nimport { TimeField } from \"./TimeField\";\nimport { DateTimeField } from \"./DateTimeField\";\nimport { FileField } from \"./FileField\";\nimport { HiddenField } from \"./HiddenField\";\nimport { CountryField } from \"./CountryField\";\nimport { StateField } from \"./StateField\";\nimport { HtmlField } from \"./HtmlField\";\nimport { DividerField } from \"./DividerField\";\nimport { RecaptchaField } from \"./RecaptchaField\";\n\n// Field component type\nexport type FieldComponent = ComponentType<{ field: FormField }>;\n\n// Field component registry\nconst fieldRegistry: Record<FieldType, FieldComponent> = {\n text: TextField,\n email: TextField,\n phone: TextField,\n url: TextField,\n textarea: TextareaField,\n number: NumberField,\n select: SelectField,\n radio: RadioField,\n checkbox: CheckboxField,\n checkbox_group: CheckboxGroupField,\n date: DateField,\n time: TimeField,\n datetime: DateTimeField,\n file: FileField,\n hidden: HiddenField,\n country: CountryField,\n state: StateField,\n html: HtmlField,\n divider: DividerField,\n recaptcha: RecaptchaField,\n};\n\n/**\n * Get the component for a field type\n */\nexport function getFieldComponent(type: FieldType): FieldComponent | null {\n return fieldRegistry[type] ?? null;\n}\n\n/**\n * Register a custom field component\n */\nexport function registerFieldComponent(\n type: string,\n component: FieldComponent\n): void {\n (fieldRegistry as Record<string, FieldComponent>)[type] = component;\n}\n\n// Export all field components\nexport { FieldWrapper } from \"./FieldWrapper\";\nexport { TextField } from \"./TextField\";\nexport { TextareaField } from \"./TextareaField\";\nexport { NumberField } from \"./NumberField\";\nexport { SelectField } from \"./SelectField\";\nexport { RadioField } from \"./RadioField\";\nexport { CheckboxField } from \"./CheckboxField\";\nexport { CheckboxGroupField } from \"./CheckboxGroupField\";\nexport { DateField } from \"./DateField\";\nexport { TimeField } from \"./TimeField\";\nexport { DateTimeField } from \"./DateTimeField\";\nexport { FileField } from \"./FileField\";\nexport { HiddenField } from \"./HiddenField\";\nexport { CountryField } from \"./CountryField\";\nexport { StateField } from \"./StateField\";\nexport { HtmlField } from \"./HtmlField\";\nexport { DividerField } from \"./DividerField\";\nexport { RecaptchaField } from \"./RecaptchaField\";\n","import { useFormContext, type FieldValues } from \"react-hook-form\";\nimport type { FormField, FormLayout } from \"@/api/types\";\nimport { cn } from \"@/utils/cn\";\nimport { getFieldComponent } from \"@/fields\";\nimport { useLubFormContext } from \"./FormProvider\";\n\ninterface FormRendererProps {\n fields: FormField[];\n layout?: FormLayout;\n}\n\nexport function FormRenderer({ fields, layout = \"vertical\" }: FormRendererProps) {\n const { watch } = useFormContext();\n const { getVisibleFields } = useLubFormContext();\n\n // Watch all form values to re-evaluate conditional logic\n const formValues = watch();\n const visibleFields = getVisibleFields(formValues);\n\n // Group fields for two-column layout\n const fieldGroups = layout === \"two_column\"\n ? groupFieldsForTwoColumn(visibleFields)\n : visibleFields.map((f) => [f]);\n\n return (\n <div\n className={cn(\n \"lub-form__fields\",\n `lub-form__fields--${layout}`\n )}\n >\n {fieldGroups.map((group, groupIndex) => (\n <div\n key={group.map((f) => f.id).join(\"-\") || groupIndex}\n className={cn(\n \"lub-form__field-group\",\n group.length > 1 && \"lub-form__field-group--row\"\n )}\n >\n {group.map((field) => (\n <FieldRenderer key={field.id} field={field} />\n ))}\n </div>\n ))}\n </div>\n );\n}\n\ninterface FieldRendererProps {\n field: FormField;\n}\n\nfunction FieldRenderer({ field }: FieldRendererProps) {\n const FieldComponent = getFieldComponent(field.field_type);\n\n if (!FieldComponent) {\n console.warn(`Unknown field type: ${field.field_type}`);\n return null;\n }\n\n const widthClass = getWidthClass(field.width);\n\n return (\n <div\n className={cn(\n \"lub-form__field\",\n widthClass,\n field.css_class\n )}\n >\n <FieldComponent field={field} />\n </div>\n );\n}\n\nfunction getWidthClass(width: FormField[\"width\"]): string {\n switch (width) {\n case \"half\":\n return \"lub-form__field--half\";\n case \"third\":\n return \"lub-form__field--third\";\n case \"quarter\":\n return \"lub-form__field--quarter\";\n case \"full\":\n default:\n return \"lub-form__field--full\";\n }\n}\n\n// Group fields for two-column layout respecting width settings\nfunction groupFieldsForTwoColumn(fields: FormField[]): FormField[][] {\n const groups: FormField[][] = [];\n let currentRow: FormField[] = [];\n let currentRowWidth = 0;\n\n for (const field of fields) {\n const fieldWidth = getFieldWidthValue(field.width);\n\n // Full-width fields always go on their own row\n if (fieldWidth >= 1) {\n if (currentRow.length > 0) {\n groups.push(currentRow);\n currentRow = [];\n currentRowWidth = 0;\n }\n groups.push([field]);\n continue;\n }\n\n // Check if field fits in current row\n if (currentRowWidth + fieldWidth > 1) {\n groups.push(currentRow);\n currentRow = [field];\n currentRowWidth = fieldWidth;\n } else {\n currentRow.push(field);\n currentRowWidth += fieldWidth;\n }\n }\n\n // Push remaining fields\n if (currentRow.length > 0) {\n groups.push(currentRow);\n }\n\n return groups;\n}\n\nfunction getFieldWidthValue(width: FormField[\"width\"]): number {\n switch (width) {\n case \"quarter\":\n return 0.25;\n case \"third\":\n return 0.333;\n case \"half\":\n return 0.5;\n case \"full\":\n default:\n return 1;\n }\n}\n","import type { ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { FormStep } from \"@/api/types\";\n\ninterface StepManagerProps {\n steps: FormStep[];\n currentStep: number;\n onStepClick?: (stepIndex: number) => void;\n allowStepNavigation?: boolean;\n}\n\nexport function StepManager({\n steps,\n currentStep,\n onStepClick,\n allowStepNavigation = false,\n}: StepManagerProps) {\n if (steps.length <= 1) return null;\n\n return (\n <div className=\"lub-form__steps\" role=\"navigation\" aria-label=\"Form steps\">\n <ol className=\"lub-form__steps-list\">\n {steps.map((step, index) => {\n const isActive = index === currentStep;\n const isCompleted = index < currentStep;\n const isClickable = allowStepNavigation && (isCompleted || isActive);\n\n return (\n <li\n key={step.id}\n className={cn(\n \"lub-form__step\",\n isActive && \"lub-form__step--active\",\n isCompleted && \"lub-form__step--completed\"\n )}\n >\n {isClickable ? (\n <button\n type=\"button\"\n className=\"lub-form__step-button\"\n onClick={() => onStepClick?.(index)}\n aria-current={isActive ? \"step\" : undefined}\n >\n <span className=\"lub-form__step-number\">{index + 1}</span>\n <span className=\"lub-form__step-name\">{step.name}</span>\n </button>\n ) : (\n <span\n className=\"lub-form__step-indicator\"\n aria-current={isActive ? \"step\" : undefined}\n >\n <span className=\"lub-form__step-number\">\n {isCompleted ? (\n <CheckIcon />\n ) : (\n index + 1\n )}\n </span>\n <span className=\"lub-form__step-name\">{step.name}</span>\n </span>\n )}\n {index < steps.length - 1 && (\n <span\n className={cn(\n \"lub-form__step-connector\",\n isCompleted && \"lub-form__step-connector--completed\"\n )}\n aria-hidden=\"true\"\n />\n )}\n </li>\n );\n })}\n </ol>\n {steps[currentStep]?.description && (\n <p className=\"lub-form__step-description\">\n {steps[currentStep].description}\n </p>\n )}\n </div>\n );\n}\n\nfunction CheckIcon() {\n return (\n <svg\n className=\"lub-form__check-icon\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n}\n\n// Step navigation buttons\ninterface StepNavigationProps {\n currentStep: number;\n totalSteps: number;\n onNext: () => void;\n onPrev: () => void;\n isNextDisabled?: boolean;\n isPrevDisabled?: boolean;\n isLastStep?: boolean;\n isSubmitting?: boolean;\n submitButtonText?: string;\n nextButtonText?: string;\n prevButtonText?: string;\n children?: ReactNode;\n}\n\nexport function StepNavigation({\n currentStep,\n totalSteps,\n onNext,\n onPrev,\n isNextDisabled = false,\n isPrevDisabled = false,\n isLastStep = false,\n isSubmitting = false,\n submitButtonText = \"Submit\",\n nextButtonText = \"Next\",\n prevButtonText = \"Back\",\n children,\n}: StepNavigationProps) {\n const showPrev = currentStep > 0;\n const showNext = !isLastStep;\n\n return (\n <div className=\"lub-form__navigation\">\n {showPrev && (\n <button\n type=\"button\"\n className=\"lub-form__button lub-form__button--secondary\"\n onClick={onPrev}\n disabled={isPrevDisabled || isSubmitting}\n >\n {prevButtonText}\n </button>\n )}\n <div className=\"lub-form__navigation-spacer\" />\n {showNext ? (\n <button\n type=\"button\"\n className=\"lub-form__button lub-form__button--primary\"\n onClick={onNext}\n disabled={isNextDisabled || isSubmitting}\n >\n {nextButtonText}\n </button>\n ) : (\n children ?? (\n <button\n type=\"submit\"\n className=\"lub-form__button lub-form__button--primary\"\n disabled={isSubmitting}\n >\n {isSubmitting ? (\n <span className=\"lub-form__button-loading\">\n <LoadingSpinner />\n Submitting...\n </span>\n ) : (\n submitButtonText\n )}\n </button>\n )\n )}\n </div>\n );\n}\n\nfunction LoadingSpinner() {\n return (\n <svg\n className=\"lub-form__spinner\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"lub-form__spinner-track\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n />\n <path\n className=\"lub-form__spinner-head\"\n d=\"M12 2a10 10 0 0 1 10 10\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","import { z, type ZodTypeAny } from \"zod\";\nimport type { FormField, FieldType } from \"@/api/types\";\n\n/**\n * Build a Zod schema from form field definitions\n */\nexport function buildFormSchema(fields: FormField[]): z.ZodSchema {\n const shape: Record<string, ZodTypeAny> = {};\n\n for (const field of fields) {\n if (!field.is_active) continue;\n\n // Skip non-input fields\n if (isNonInputField(field.field_type)) continue;\n\n shape[field.name] = buildFieldSchema(field);\n }\n\n return z.object(shape);\n}\n\n/**\n * Build a Zod schema for a single field\n */\nexport function buildFieldSchema(field: FormField): ZodTypeAny {\n let schema: ZodTypeAny;\n\n switch (field.field_type) {\n case \"text\":\n case \"textarea\":\n case \"hidden\":\n schema = buildStringSchema(field);\n break;\n\n case \"email\":\n schema = buildEmailSchema(field);\n break;\n\n case \"phone\":\n schema = buildPhoneSchema(field);\n break;\n\n case \"url\":\n schema = buildUrlSchema(field);\n break;\n\n case \"number\":\n schema = buildNumberSchema(field);\n break;\n\n case \"date\":\n case \"time\":\n case \"datetime\":\n schema = buildDateSchema(field);\n break;\n\n case \"select\":\n case \"radio\":\n case \"country\":\n case \"state\":\n schema = buildSelectSchema(field);\n break;\n\n case \"checkbox\":\n schema = buildCheckboxSchema(field);\n break;\n\n case \"checkbox_group\":\n schema = buildCheckboxGroupSchema(field);\n break;\n\n case \"file\":\n schema = buildFileSchema(field);\n break;\n\n default:\n schema = z.any();\n }\n\n // Make optional if not required\n if (!field.required) {\n schema = schema.optional();\n }\n\n return schema;\n}\n\nfunction buildStringSchema(field: FormField): ZodTypeAny {\n let schema = z.string();\n\n const rules = field.validation_rules;\n const customError = rules?.custom_error;\n\n if (field.required) {\n schema = schema.min(1, customError || `${field.label} is required`);\n }\n\n if (rules?.min_length) {\n schema = schema.min(\n rules.min_length,\n customError || `${field.label} must be at least ${rules.min_length} characters`\n );\n }\n\n if (rules?.max_length) {\n schema = schema.max(\n rules.max_length,\n customError || `${field.label} must be at most ${rules.max_length} characters`\n );\n }\n\n if (rules?.pattern) {\n schema = schema.regex(\n new RegExp(rules.pattern),\n customError || `${field.label} has an invalid format`\n );\n }\n\n return schema;\n}\n\nfunction buildEmailSchema(field: FormField): ZodTypeAny {\n let schema = z.string();\n const customError = field.validation_rules?.custom_error;\n\n if (field.required) {\n schema = schema.min(1, customError || `${field.label} is required`);\n }\n\n schema = schema.email(customError || \"Please enter a valid email address\");\n\n return schema;\n}\n\nfunction buildPhoneSchema(field: FormField): ZodTypeAny {\n let schema = z.string();\n const customError = field.validation_rules?.custom_error;\n\n if (field.required) {\n schema = schema.min(1, customError || `${field.label} is required`);\n }\n\n // Basic phone validation: at least 10 digits\n schema = schema.refine(\n (val) => {\n if (!val) return true;\n const digits = val.replace(/\\D/g, \"\");\n return digits.length >= 10;\n },\n { message: customError || \"Please enter a valid phone number\" }\n );\n\n return schema;\n}\n\nfunction buildUrlSchema(field: FormField): ZodTypeAny {\n let schema = z.string();\n const customError = field.validation_rules?.custom_error;\n\n if (field.required) {\n schema = schema.min(1, customError || `${field.label} is required`);\n }\n\n schema = schema.url(customError || \"Please enter a valid URL\");\n\n return schema;\n}\n\nfunction buildNumberSchema(field: FormField): ZodTypeAny {\n let schema = z.coerce.number({\n invalid_type_error: `${field.label} must be a number`,\n });\n\n const rules = field.validation_rules;\n const customError = rules?.custom_error;\n\n if (rules?.min !== undefined) {\n schema = schema.min(\n rules.min,\n customError || `${field.label} must be at least ${rules.min}`\n );\n }\n\n if (rules?.max !== undefined) {\n schema = schema.max(\n rules.max,\n customError || `${field.label} must be at most ${rules.max}`\n );\n }\n\n // For optional number fields, allow empty string\n if (!field.required) {\n return z.union([\n schema,\n z.literal(\"\").transform(() => undefined),\n ]);\n }\n\n return schema;\n}\n\nfunction buildDateSchema(field: FormField): ZodTypeAny {\n let schema = z.string();\n const customError = field.validation_rules?.custom_error;\n\n if (field.required) {\n schema = schema.min(1, customError || `${field.label} is required`);\n }\n\n // Validate date format\n schema = schema.refine(\n (val) => {\n if (!val) return true;\n const date = new Date(val);\n return !isNaN(date.getTime());\n },\n { message: customError || \"Please enter a valid date\" }\n );\n\n return schema;\n}\n\nfunction buildSelectSchema(field: FormField): ZodTypeAny {\n let schema = z.string();\n const customError = field.validation_rules?.custom_error;\n\n if (field.required) {\n schema = schema.min(1, customError || `${field.label} is required`);\n }\n\n // Validate against options if available and allow_other is false\n if (field.options?.options && !field.options.allow_other) {\n const validValues = field.options.options.map((o) => o.value);\n schema = schema.refine(\n (val) => !val || validValues.includes(val),\n { message: customError || \"Please select a valid option\" }\n );\n }\n\n return schema;\n}\n\nfunction buildCheckboxSchema(field: FormField): ZodTypeAny {\n const customError = field.validation_rules?.custom_error;\n\n if (field.required) {\n return z.literal(true, {\n errorMap: () => ({\n message: customError || `${field.label} is required`,\n }),\n });\n }\n\n return z.boolean().optional();\n}\n\nfunction buildCheckboxGroupSchema(field: FormField): ZodTypeAny {\n let schema = z.array(z.string());\n const customError = field.validation_rules?.custom_error;\n\n if (field.required) {\n schema = schema.min(1, customError || `Please select at least one option`);\n }\n\n // Validate against options if available\n if (field.options?.options && !field.options.allow_other) {\n const validValues = new Set(field.options.options.map((o) => o.value));\n schema = schema.refine(\n (arr) => arr.every((val) => validValues.has(val)),\n { message: customError || \"Please select valid options\" }\n );\n }\n\n return schema;\n}\n\nfunction buildFileSchema(field: FormField): ZodTypeAny {\n const rules = field.validation_rules;\n const customError = rules?.custom_error;\n\n let schema = z.instanceof(File).or(z.instanceof(FileList));\n\n // Validate file type\n if (rules?.allowed_types && rules.allowed_types.length > 0) {\n schema = schema.refine(\n (file) => {\n if (!file) return true;\n const files = file instanceof FileList ? Array.from(file) : [file];\n return files.every((f) =>\n rules.allowed_types!.some(\n (type) =>\n f.type === type ||\n f.name.toLowerCase().endsWith(`.${type.replace(\".\", \"\")}`)\n )\n );\n },\n {\n message:\n customError ||\n `File must be one of: ${rules.allowed_types.join(\", \")}`,\n }\n );\n }\n\n // Validate file size\n if (rules?.max_file_size) {\n const maxBytes = rules.max_file_size * 1024 * 1024; // MB to bytes\n schema = schema.refine(\n (file) => {\n if (!file) return true;\n const files = file instanceof FileList ? Array.from(file) : [file];\n return files.every((f) => f.size <= maxBytes);\n },\n {\n message:\n customError || `File must be smaller than ${rules.max_file_size}MB`,\n }\n );\n }\n\n if (!field.required) {\n return schema.optional().nullable();\n }\n\n return schema;\n}\n\nfunction isNonInputField(type: FieldType): boolean {\n return [\"html\", \"divider\", \"recaptcha\"].includes(type);\n}\n","import type { FormDesign } from \"@/api/types\";\n\n/**\n * Convert FormDesign to CSS custom properties\n */\nexport function formDesignToCssVariables(design: FormDesign): Record<string, string> {\n const vars: Record<string, string> = {};\n\n // Colors\n if (design.background_color) {\n vars[\"--lub-bg-color\"] = design.background_color;\n }\n if (design.text_color) {\n vars[\"--lub-text-color\"] = design.text_color;\n }\n if (design.primary_color) {\n vars[\"--lub-primary-color\"] = design.primary_color;\n }\n if (design.border_color) {\n vars[\"--lub-border-color\"] = design.border_color;\n }\n\n // Typography\n if (design.font_family) {\n vars[\"--lub-font-family\"] = design.font_family;\n }\n if (design.font_size) {\n vars[\"--lub-font-size\"] = design.font_size;\n }\n\n // Spacing\n if (design.padding) {\n vars[\"--lub-padding\"] = design.padding;\n }\n if (design.field_spacing) {\n vars[\"--lub-field-spacing\"] = design.field_spacing;\n }\n\n // Button styling\n if (design.button_style) {\n if (design.button_style.background_color) {\n vars[\"--lub-btn-bg\"] = design.button_style.background_color;\n }\n if (design.button_style.text_color) {\n vars[\"--lub-btn-text\"] = design.button_style.text_color;\n }\n if (design.button_style.border_radius) {\n vars[\"--lub-btn-radius\"] = design.button_style.border_radius;\n }\n }\n\n return vars;\n}\n\n/**\n * Apply CSS variables to an element's style\n */\nexport function applyCssVariables(\n design: FormDesign\n): React.CSSProperties {\n const vars = formDesignToCssVariables(design);\n return vars as React.CSSProperties;\n}\n","import { useState, useEffect, useCallback, type CSSProperties } from \"react\";\nimport { useFormContext } from \"react-hook-form\";\nimport type {\n PublicFormResponse,\n FormDesign,\n SubmitFormResponse,\n ApiError,\n} from \"@/api/types\";\nimport { LubFormsClient } from \"@/api/client\";\nimport { LubFormProvider } from \"./FormProvider\";\nimport { FormRenderer } from \"./FormRenderer\";\nimport { StepManager, StepNavigation } from \"./StepManager\";\nimport { buildFormSchema } from \"@/validation/schema-builder\";\nimport { applyCssVariables } from \"@/utils/css-variables\";\nimport { cn } from \"@/utils/cn\";\n\n// Public component props\nexport interface LubFormProps {\n formId: string;\n baseUrl?: string;\n\n // Callbacks\n onSuccess?: (data: SubmitFormResponse) => void;\n onError?: (error: ApiError) => void;\n onValidationError?: (errors: Record<string, string>) => void;\n onStepChange?: (step: number, total: number) => void;\n\n // Styling\n className?: string;\n style?: CSSProperties;\n designOverrides?: Partial<FormDesign>;\n}\n\ntype FormState =\n | { status: \"loading\" }\n | { status: \"error\"; error: string }\n | { status: \"ready\"; form: PublicFormResponse }\n | { status: \"success\"; form: PublicFormResponse; response: SubmitFormResponse };\n\nexport function LubForm({\n formId,\n baseUrl = \"\",\n onSuccess,\n onError,\n onValidationError,\n onStepChange,\n className,\n style,\n designOverrides,\n}: LubFormProps) {\n const [state, setState] = useState<FormState>({ status: \"loading\" });\n const [currentStep, setCurrentStep] = useState(0);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n // Fetch form on mount\n useEffect(() => {\n const client = new LubFormsClient(baseUrl);\n\n client\n .getForm(formId)\n .then((form) => {\n setState({ status: \"ready\", form });\n })\n .catch((error: ApiError) => {\n setState({ status: \"error\", error: error.error });\n onError?.(error);\n });\n }, [formId, baseUrl, onError]);\n\n // Handle step change\n const handleStepChange = useCallback(\n (step: number) => {\n setCurrentStep(step);\n if (state.status === \"ready\") {\n const totalSteps = state.form.is_multi_step\n ? state.form.steps?.length ?? 1\n : 1;\n onStepChange?.(step, totalSteps);\n }\n },\n [state, onStepChange]\n );\n\n // Render based on state\n if (state.status === \"loading\") {\n return <FormSkeleton className={className} style={style} />;\n }\n\n if (state.status === \"error\") {\n return (\n <div className={cn(\"lub-form lub-form--error\", className)} style={style}>\n <div className=\"lub-form__error-container\">\n <p className=\"lub-form__error-message\">{state.error}</p>\n </div>\n </div>\n );\n }\n\n if (state.status === \"success\") {\n return (\n <SuccessMessage\n message={state.form.settings.success_message}\n className={className}\n style={style}\n design={mergeDesign(state.form.design, designOverrides)}\n />\n );\n }\n\n const { form } = state;\n const totalSteps = form.is_multi_step ? form.steps?.length ?? 1 : 1;\n const mergedDesign = mergeDesign(form.design, designOverrides);\n const cssVars = applyCssVariables(mergedDesign);\n\n // Build validation schema\n const schema = buildFormSchema(form.fields);\n\n // Build default values\n const defaultValues = buildDefaultValues(form);\n\n return (\n <div\n className={cn(\"lub-form\", className)}\n style={{ ...cssVars, ...style }}\n >\n <LubFormProvider\n form={form}\n schema={schema}\n defaultValues={defaultValues}\n currentStep={currentStep}\n totalSteps={totalSteps}\n isSubmitting={isSubmitting}\n isSuccess={false}\n error={null}\n onStepChange={handleStepChange}\n >\n <FormContent\n form={form}\n currentStep={currentStep}\n totalSteps={totalSteps}\n isSubmitting={isSubmitting}\n baseUrl={baseUrl}\n onSubmitStart={() => setIsSubmitting(true)}\n onSubmitEnd={() => setIsSubmitting(false)}\n onSuccess={(response) => {\n setState({ status: \"success\", form, response });\n onSuccess?.(response);\n }}\n onError={onError}\n onValidationError={onValidationError}\n onStepChange={handleStepChange}\n />\n </LubFormProvider>\n </div>\n );\n}\n\n// Internal form content component (needs form context)\ninterface FormContentProps {\n form: PublicFormResponse;\n currentStep: number;\n totalSteps: number;\n isSubmitting: boolean;\n baseUrl: string;\n onSubmitStart: () => void;\n onSubmitEnd: () => void;\n onSuccess: (response: SubmitFormResponse) => void;\n onError?: (error: ApiError) => void;\n onValidationError?: (errors: Record<string, string>) => void;\n onStepChange: (step: number) => void;\n}\n\nfunction FormContent({\n form,\n currentStep,\n totalSteps,\n isSubmitting,\n baseUrl,\n onSubmitStart,\n onSubmitEnd,\n onSuccess,\n onError,\n onValidationError,\n onStepChange,\n}: FormContentProps) {\n const { handleSubmit, trigger, formState } = useFormContext();\n const isLastStep = currentStep >= totalSteps - 1;\n\n // Get fields for current step\n const currentFields =\n form.is_multi_step && form.steps\n ? form.fields.filter((f) =>\n form.steps![currentStep]?.field_ids.includes(f.id)\n )\n : form.fields;\n\n // Validate current step before proceeding\n const validateCurrentStep = async (): Promise<boolean> => {\n const fieldNames = currentFields\n .filter((f) => f.is_active)\n .map((f) => f.name);\n const result = await trigger(fieldNames);\n return result;\n };\n\n // Handle next step\n const handleNextStep = async () => {\n const isValid = await validateCurrentStep();\n if (isValid) {\n onStepChange(currentStep + 1);\n } else if (onValidationError) {\n const errors: Record<string, string> = {};\n for (const [key, value] of Object.entries(formState.errors)) {\n if (value?.message) {\n errors[key] = value.message as string;\n }\n }\n onValidationError(errors);\n }\n };\n\n // Handle form submission\n const onSubmit = async (data: Record<string, unknown>) => {\n onSubmitStart();\n\n try {\n const client = new LubFormsClient(baseUrl);\n const response = await client.submitForm(form.id, {\n data,\n referrer: typeof window !== \"undefined\" ? window.location.href : \"\",\n utm_parameters: getUTMParameters(),\n });\n onSuccess(response);\n } catch (error) {\n onError?.(error as ApiError);\n } finally {\n onSubmitEnd();\n }\n };\n\n return (\n <form\n className=\"lub-form__form\"\n onSubmit={handleSubmit(onSubmit)}\n noValidate\n >\n {/* Header */}\n {(form.name || form.description) && (\n <div className=\"lub-form__header\">\n {form.name && <h2 className=\"lub-form__title\">{form.name}</h2>}\n {form.description && (\n <p className=\"lub-form__description\">{form.description}</p>\n )}\n </div>\n )}\n\n {/* Step indicator */}\n {form.is_multi_step && form.steps && (\n <StepManager\n steps={form.steps}\n currentStep={currentStep}\n allowStepNavigation={false}\n />\n )}\n\n {/* Fields */}\n <FormRenderer fields={currentFields} layout={form.design.layout} />\n\n {/* Consent checkbox */}\n {form.settings.show_consent_checkbox && isLastStep && (\n <ConsentCheckbox text={form.settings.consent_text} />\n )}\n\n {/* Navigation / Submit */}\n {form.is_multi_step && totalSteps > 1 ? (\n <StepNavigation\n currentStep={currentStep}\n totalSteps={totalSteps}\n onNext={handleNextStep}\n onPrev={() => onStepChange(currentStep - 1)}\n isLastStep={isLastStep}\n isSubmitting={isSubmitting}\n submitButtonText={form.settings.submit_button_text || \"Submit\"}\n />\n ) : (\n <div className=\"lub-form__actions\">\n <button\n type=\"submit\"\n className=\"lub-form__button lub-form__button--primary\"\n disabled={isSubmitting}\n >\n {isSubmitting ? (\n <span className=\"lub-form__button-loading\">\n <LoadingSpinner />\n Submitting...\n </span>\n ) : (\n form.settings.submit_button_text || \"Submit\"\n )}\n </button>\n </div>\n )}\n </form>\n );\n}\n\n// Consent checkbox component\nfunction ConsentCheckbox({ text }: { text?: string }) {\n const { register, formState } = useFormContext();\n const error = formState.errors._consent;\n\n return (\n <div className=\"lub-form__consent\">\n <label className=\"lub-form__consent-label\">\n <input\n type=\"checkbox\"\n className=\"lub-form__consent-checkbox\"\n {...register(\"_consent\", {\n required: \"You must agree to continue\",\n })}\n />\n <span\n className=\"lub-form__consent-text\"\n dangerouslySetInnerHTML={{\n __html: text || \"I agree to the terms and conditions\",\n }}\n />\n </label>\n {error && (\n <p className=\"lub-form__error\" role=\"alert\">\n {error.message as string}\n </p>\n )}\n </div>\n );\n}\n\n// Loading skeleton\nfunction FormSkeleton({\n className,\n style,\n}: {\n className?: string;\n style?: CSSProperties;\n}) {\n return (\n <div className={cn(\"lub-form lub-form--loading\", className)} style={style}>\n <div className=\"lub-form__skeleton\">\n <div className=\"lub-form__skeleton-title\" />\n <div className=\"lub-form__skeleton-field\" />\n <div className=\"lub-form__skeleton-field\" />\n <div className=\"lub-form__skeleton-field lub-form__skeleton-field--short\" />\n <div className=\"lub-form__skeleton-button\" />\n </div>\n </div>\n );\n}\n\n// Success message\nfunction SuccessMessage({\n message,\n className,\n style,\n design,\n}: {\n message: string;\n className?: string;\n style?: CSSProperties;\n design: FormDesign;\n}) {\n const cssVars = applyCssVariables(design);\n\n return (\n <div\n className={cn(\"lub-form lub-form--success\", className)}\n style={{ ...cssVars, ...style }}\n >\n <div className=\"lub-form__success\">\n <SuccessIcon />\n <p className=\"lub-form__success-message\">{message}</p>\n </div>\n </div>\n );\n}\n\nfunction SuccessIcon() {\n return (\n <svg\n className=\"lub-form__success-icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\n <polyline points=\"22,4 12,14.01 9,11.01\" />\n </svg>\n );\n}\n\nfunction LoadingSpinner() {\n return (\n <svg className=\"lub-form__spinner\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle\n className=\"lub-form__spinner-track\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n />\n <path\n className=\"lub-form__spinner-head\"\n d=\"M12 2a10 10 0 0 1 10 10\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n\n// Helper functions\nfunction mergeDesign(\n base: FormDesign,\n overrides?: Partial<FormDesign>\n): FormDesign {\n if (!overrides) return base;\n return { ...base, ...overrides };\n}\n\nfunction buildDefaultValues(form: PublicFormResponse): Record<string, unknown> {\n const defaults: Record<string, unknown> = {};\n\n for (const field of form.fields) {\n if (field.default_value) {\n defaults[field.name] = field.default_value;\n }\n\n // Handle pre-selected options\n if (field.options?.options) {\n const selected = field.options.options.find((o) => o.selected);\n if (selected) {\n defaults[field.name] = selected.value;\n }\n }\n }\n\n return defaults;\n}\n\nfunction getUTMParameters() {\n if (typeof window === \"undefined\") return undefined;\n\n const params = new URLSearchParams(window.location.search);\n const utm: Record<string, string> = {};\n\n const utmParams = [\"utm_source\", \"utm_medium\", \"utm_campaign\", \"utm_term\", \"utm_content\"];\n for (const param of utmParams) {\n const value = params.get(param);\n if (value) {\n utm[param.replace(\"utm_\", \"\")] = value;\n }\n }\n\n return Object.keys(utm).length > 0 ? utm : undefined;\n}\n","import type { Condition, FormField, Operator } from \"@/api/types\";\n\n/**\n * Evaluate if a field should be visible based on its conditional logic\n */\nexport function evaluateFieldVisibility(\n field: FormField,\n formValues: Record<string, unknown>\n): boolean {\n const logic = field.conditional_logic;\n if (!logic) return true;\n\n // Check show_if condition\n if (logic.show_if) {\n return evaluateCondition(logic.show_if, formValues);\n }\n\n // Check hide_if condition\n if (logic.hide_if) {\n return !evaluateCondition(logic.hide_if, formValues);\n }\n\n return true;\n}\n\n/**\n * Evaluate if a field should be required based on its conditional logic\n */\nexport function evaluateFieldRequired(\n field: FormField,\n formValues: Record<string, unknown>\n): boolean {\n const logic = field.conditional_logic;\n\n // Start with base required state\n let isRequired = field.required;\n\n // Check required_if condition\n if (logic?.required_if) {\n const conditionMet = evaluateCondition(logic.required_if, formValues);\n isRequired = isRequired || conditionMet;\n }\n\n return isRequired;\n}\n\n/**\n * Evaluate a condition against form values\n */\nexport function evaluateCondition(\n condition: Condition,\n formValues: Record<string, unknown>\n): boolean {\n const fieldValue = formValues[condition.field_name];\n let result = compareValues(fieldValue, condition.operator, condition.value);\n\n // Evaluate AND conditions\n if (condition.and && condition.and.length > 0) {\n for (const andCond of condition.and) {\n if (!evaluateCondition(andCond, formValues)) {\n return false;\n }\n }\n }\n\n // Evaluate OR conditions - at least one must be true\n if (condition.or && condition.or.length > 0) {\n let orResult = false;\n for (const orCond of condition.or) {\n if (evaluateCondition(orCond, formValues)) {\n orResult = true;\n break;\n }\n }\n // For OR conditions to pass, main condition AND at least one OR must be true\n result = result && orResult;\n }\n\n return result;\n}\n\n/**\n * Compare field value against condition value using the specified operator\n */\nfunction compareValues(\n fieldValue: unknown,\n operator: Operator,\n compareValue: unknown\n): boolean {\n switch (operator) {\n case \"equals\":\n return normalizeValue(fieldValue) === normalizeValue(compareValue);\n\n case \"not_equals\":\n return normalizeValue(fieldValue) !== normalizeValue(compareValue);\n\n case \"contains\":\n return String(fieldValue ?? \"\")\n .toLowerCase()\n .includes(String(compareValue).toLowerCase());\n\n case \"not_contains\":\n return !String(fieldValue ?? \"\")\n .toLowerCase()\n .includes(String(compareValue).toLowerCase());\n\n case \"greater_than\":\n return Number(fieldValue) > Number(compareValue);\n\n case \"less_than\":\n return Number(fieldValue) < Number(compareValue);\n\n case \"is_empty\":\n return isEmpty(fieldValue);\n\n case \"is_not_empty\":\n return !isEmpty(fieldValue);\n\n default:\n return true;\n }\n}\n\n/**\n * Normalize value for comparison\n */\nfunction normalizeValue(value: unknown): string {\n if (value === null || value === undefined) return \"\";\n if (Array.isArray(value)) return value.sort().join(\",\");\n return String(value).toLowerCase().trim();\n}\n\n/**\n * Check if value is empty\n */\nfunction isEmpty(value: unknown): boolean {\n if (value === null || value === undefined) return true;\n if (typeof value === \"string\") return value.trim() === \"\";\n if (Array.isArray(value)) return value.length === 0;\n if (typeof value === \"object\") return Object.keys(value).length === 0;\n return false;\n}\n\n/**\n * Get all fields that should be visible based on conditional logic\n */\nexport function getVisibleFields(\n fields: FormField[],\n formValues: Record<string, unknown>\n): FormField[] {\n return fields.filter((field) => evaluateFieldVisibility(field, formValues));\n}\n\n/**\n * Get required field names based on conditional logic\n */\nexport function getRequiredFieldNames(\n fields: FormField[],\n formValues: Record<string, unknown>\n): Set<string> {\n const required = new Set<string>();\n\n for (const field of fields) {\n if (evaluateFieldRequired(field, formValues)) {\n required.add(field.name);\n }\n }\n\n return required;\n}\n","import { useState, useCallback } from \"react\";\nimport type {\n PublicFormResponse,\n SubmitFormRequest,\n SubmitFormResponse,\n ApiError,\n} from \"@/api/types\";\nimport { LubFormsClient } from \"@/api/client\";\n\ninterface UseFormApiOptions {\n baseUrl: string;\n formId: string;\n}\n\ninterface UseFormApiReturn {\n form: PublicFormResponse | null;\n isLoading: boolean;\n isSubmitting: boolean;\n error: ApiError | null;\n submitResponse: SubmitFormResponse | null;\n fetchForm: () => Promise<void>;\n submitForm: (data: Record<string, unknown>) => Promise<SubmitFormResponse>;\n reset: () => void;\n}\n\nexport function useFormApi({\n baseUrl,\n formId,\n}: UseFormApiOptions): UseFormApiReturn {\n const [form, setForm] = useState<PublicFormResponse | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [error, setError] = useState<ApiError | null>(null);\n const [submitResponse, setSubmitResponse] =\n useState<SubmitFormResponse | null>(null);\n\n const client = new LubFormsClient(baseUrl);\n\n const fetchForm = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n\n try {\n const data = await client.getForm(formId);\n setForm(data);\n } catch (err) {\n setError(err as ApiError);\n } finally {\n setIsLoading(false);\n }\n }, [formId, baseUrl]);\n\n const submitForm = useCallback(\n async (data: Record<string, unknown>): Promise<SubmitFormResponse> => {\n setIsSubmitting(true);\n setError(null);\n\n try {\n const request: SubmitFormRequest = {\n data,\n referrer: typeof window !== \"undefined\" ? window.location.href : \"\",\n utm_parameters: getUTMParameters(),\n };\n\n const response = await client.submitForm(formId, request);\n setSubmitResponse(response);\n return response;\n } catch (err) {\n const apiError = err as ApiError;\n setError(apiError);\n throw apiError;\n } finally {\n setIsSubmitting(false);\n }\n },\n [formId, baseUrl]\n );\n\n const reset = useCallback(() => {\n setError(null);\n setSubmitResponse(null);\n }, []);\n\n return {\n form,\n isLoading,\n isSubmitting,\n error,\n submitResponse,\n fetchForm,\n submitForm,\n reset,\n };\n}\n\nfunction getUTMParameters() {\n if (typeof window === \"undefined\") return undefined;\n\n const params = new URLSearchParams(window.location.search);\n const utm: Record<string, string> = {};\n\n const utmParams = [\n \"utm_source\",\n \"utm_medium\",\n \"utm_campaign\",\n \"utm_term\",\n \"utm_content\",\n ];\n\n for (const param of utmParams) {\n const value = params.get(param);\n if (value) {\n utm[param.replace(\"utm_\", \"\")] = value;\n }\n }\n\n return Object.keys(utm).length > 0 ? utm : undefined;\n}\n","import { useMemo } from \"react\";\nimport type { FormField } from \"@/api/types\";\nimport {\n evaluateFieldVisibility,\n evaluateFieldRequired,\n getVisibleFields,\n getRequiredFieldNames,\n} from \"@/validation/conditional\";\n\ninterface UseConditionalLogicOptions {\n fields: FormField[];\n formValues: Record<string, unknown>;\n}\n\ninterface UseConditionalLogicReturn {\n visibleFields: FormField[];\n requiredFieldNames: Set<string>;\n isFieldVisible: (fieldName: string) => boolean;\n isFieldRequired: (fieldName: string) => boolean;\n}\n\nexport function useConditionalLogic({\n fields,\n formValues,\n}: UseConditionalLogicOptions): UseConditionalLogicReturn {\n const visibleFields = useMemo(\n () => getVisibleFields(fields, formValues),\n [fields, formValues]\n );\n\n const requiredFieldNames = useMemo(\n () => getRequiredFieldNames(fields, formValues),\n [fields, formValues]\n );\n\n const fieldMap = useMemo(\n () => new Map(fields.map((f) => [f.name, f])),\n [fields]\n );\n\n const isFieldVisible = (fieldName: string): boolean => {\n const field = fieldMap.get(fieldName);\n if (!field) return false;\n return evaluateFieldVisibility(field, formValues);\n };\n\n const isFieldRequired = (fieldName: string): boolean => {\n const field = fieldMap.get(fieldName);\n if (!field) return false;\n return evaluateFieldRequired(field, formValues);\n };\n\n return {\n visibleFields,\n requiredFieldNames,\n isFieldVisible,\n isFieldRequired,\n };\n}\n","import { useState, useCallback, useMemo } from \"react\";\nimport type { FormStep, FormField } from \"@/api/types\";\n\ninterface UseMultiStepOptions {\n steps: FormStep[];\n fields: FormField[];\n onStepChange?: (step: number, total: number) => void;\n}\n\ninterface UseMultiStepReturn {\n currentStep: number;\n totalSteps: number;\n isFirstStep: boolean;\n isLastStep: boolean;\n currentStepData: FormStep | null;\n currentStepFields: FormField[];\n progress: number;\n goToStep: (step: number) => void;\n nextStep: () => void;\n prevStep: () => void;\n reset: () => void;\n}\n\nexport function useMultiStep({\n steps,\n fields,\n onStepChange,\n}: UseMultiStepOptions): UseMultiStepReturn {\n const [currentStep, setCurrentStep] = useState(0);\n\n const totalSteps = steps.length || 1;\n const isFirstStep = currentStep === 0;\n const isLastStep = currentStep >= totalSteps - 1;\n\n const currentStepData = useMemo(\n () => steps[currentStep] ?? null,\n [steps, currentStep]\n );\n\n const currentStepFields = useMemo(() => {\n if (!currentStepData) {\n return fields.filter((f) => f.is_active);\n }\n\n const stepFieldIds = new Set(currentStepData.field_ids);\n return fields.filter((f) => f.is_active && stepFieldIds.has(f.id));\n }, [currentStepData, fields]);\n\n const progress = useMemo(() => {\n if (totalSteps <= 1) return 100;\n return Math.round(((currentStep + 1) / totalSteps) * 100);\n }, [currentStep, totalSteps]);\n\n const goToStep = useCallback(\n (step: number) => {\n if (step >= 0 && step < totalSteps) {\n setCurrentStep(step);\n onStepChange?.(step, totalSteps);\n }\n },\n [totalSteps, onStepChange]\n );\n\n const nextStep = useCallback(() => {\n if (!isLastStep) {\n const newStep = currentStep + 1;\n setCurrentStep(newStep);\n onStepChange?.(newStep, totalSteps);\n }\n }, [currentStep, isLastStep, totalSteps, onStepChange]);\n\n const prevStep = useCallback(() => {\n if (!isFirstStep) {\n const newStep = currentStep - 1;\n setCurrentStep(newStep);\n onStepChange?.(newStep, totalSteps);\n }\n }, [currentStep, isFirstStep, totalSteps, onStepChange]);\n\n const reset = useCallback(() => {\n setCurrentStep(0);\n onStepChange?.(0, totalSteps);\n }, [totalSteps, onStepChange]);\n\n return {\n currentStep,\n totalSteps,\n isFirstStep,\n isLastStep,\n currentStepData,\n currentStepFields,\n progress,\n goToStep,\n nextStep,\n prevStep,\n reset,\n };\n}\n","import { useMemo, type CSSProperties } from \"react\";\nimport type { FormDesign } from \"@/api/types\";\nimport { formDesignToCssVariables } from \"@/utils/css-variables\";\n\ninterface UseFormDesignOptions {\n design: FormDesign;\n overrides?: Partial<FormDesign>;\n}\n\ninterface UseFormDesignReturn {\n mergedDesign: FormDesign;\n cssVariables: Record<string, string>;\n style: CSSProperties;\n theme: string;\n}\n\nexport function useFormDesign({\n design,\n overrides,\n}: UseFormDesignOptions): UseFormDesignReturn {\n const mergedDesign = useMemo(\n (): FormDesign => ({\n ...design,\n ...overrides,\n button_style: {\n ...design.button_style,\n ...overrides?.button_style,\n },\n }),\n [design, overrides]\n );\n\n const cssVariables = useMemo(\n () => formDesignToCssVariables(mergedDesign),\n [mergedDesign]\n );\n\n const style = useMemo(\n () => cssVariables as CSSProperties,\n [cssVariables]\n );\n\n const theme = mergedDesign.theme || \"light\";\n\n return {\n mergedDesign,\n cssVariables,\n style,\n theme,\n };\n}\n"],"names":["ReactSharedInternals","require$$0","reactCompilerRuntime_production","size","reactCompilerRuntime_development","dispatcher","compilerRuntimeModule","require$$1","isCheckBoxInput","element","isDateObject","value","isNullOrUndefined","isObjectType","isObject","getEventValue","event","getNodeParentName","name","isNameInFieldArray","names","isPlainObject","tempObject","prototypeCopy","isWeb","cloneObject","data","isFileListInstance","isArray","copy","key","isKey","isUndefined","val","compact","stringToPath","input","get","object","path","defaultValue","result","isBoolean","isFunction","set","index","tempPath","length","lastIndex","newValue","objValue","EVENTS","VALIDATION_MODE","INPUT_VALIDATION_RULES","HookFormControlContext","React","useFormControlContext","getProxyFormState","formState","control","localProxyFormState","isRoot","_key","useIsomorphicLayoutEffect","isString","generateWatchOutput","_names","formValues","isGlobal","fieldName","isPrimitive","deepEqual","object1","object2","_internal_visited","keys1","keys2","val1","val2","useWatch","props","formControl","disabled","exact","compute","_defaultValue","_compute","_computeFormValues","_prevControl","_prevName","updateValue","getCurrentOutput","values","refreshValue","computedFormValues","controlChanged","prevName","computedOutput","nameChanged","HookFormContext","useFormContext","FormProvider","children","watch","getValues","getFieldState","setError","clearErrors","setValue","trigger","resetField","reset","handleSubmit","unregister","register","setFocus","subscribe","appendErrors","validateAllFieldCriteria","errors","type","message","convertToArrayPayload","createSubject","_observers","observer","o","extractFormValues","fieldsState","fieldState","fieldValue","nestedFieldsState","isEmptyObject","isFileInput","isHTMLElement","owner","isMultipleSelect","isRadioInput","isRadioOrCheckbox","ref","live","baseGet","updatePath","isEmptyArray","obj","unset","paths","childObject","objectHasFunction","isTraversable","markFieldsDirty","fields","getDirtyFields","dirtyFieldsFromValues","formValue","defaultResult","validResult","getCheckboxValue","options","option","getFieldValueAs","valueAsNumber","valueAsDate","setValueAs","defaultReturn","getRadioValue","previous","getFieldValue","_f","getResolverOptions","fieldsNames","_fields","criteriaMode","shouldUseNativeValidation","field","isRegex","getRuleValue","rule","getValidationModes","mode","ASYNC_FUNCTION","hasPromiseValidation","fieldReference","validateFunction","hasValidation","isWatched","isBlurEvent","watchName","iterateFieldsByAction","action","abortEarly","currentField","schemaErrorLookup","error","foundError","shouldRenderFormState","formStateData","_proxyFormState","updateFormState","shouldSubscribeByName","signalName","currentName","skipValidation","isTouched","isSubmitted","reValidateMode","unsetEmptyArray","updateFieldArrayRootError","fieldArrayErrors","getValidateError","getValueAndMessage","validationData","validateField","disabledFieldNames","isFieldArray","refs","required","maxLength","minLength","min","max","pattern","validate","mount","inputValue","inputRef","setCustomValidity","isRadio","isCheckBox","isEmpty","appendErrorsCurry","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","exceedMin","maxOutput","minOutput","valueNumber","valueDate","convertTimeToDate","time","isTime","isWeek","maxLengthOutput","minLengthOutput","patternValue","validateError","validationResult","defaultOptions","createFormControl","_options","_formState","_defaultValues","_formValues","_state","delayErrorCallback","timer","defaultProxyFormState","_proxySubscribeFormState","_subjects","shouldDisplayAllAssociatedErrors","debounce","callback","wait","_setValid","shouldUpdateValid","isValid","_runSchema","_updateIsValidating","executeBuiltInValidation","isValidating","_setFieldArray","method","args","shouldSetValues","shouldUpdateFieldsAndState","fieldValues","touchedFields","_getDirty","updateErrors","_setErrors","updateValidAndValue","shouldSkipSetValueAs","setFieldValue","updateTouchAndDirty","shouldDirty","shouldRender","shouldUpdateField","isPreviousDirty","output","isCurrentFieldPristine","isPreviousFieldTouched","shouldRenderByError","previousFieldError","updatedFormState","executeSchemaAndUpdateState","shouldOnlyCheckValid","context","isFieldArrayRoot","isPromiseFunction","fieldError","_removeUnmounted","_getWatch","_getFieldArray","optionRef","checkboxRef","radioRef","setValues","fieldKey","cloneValue","onChange","target","isFieldValueUpdated","_updateIsFieldValueUpdated","validationModeBeforeSubmit","validationModeAfterSubmit","shouldSkipValidation","watched","previousErrorLookupResult","errorLookupResult","_focusInput","fieldNames","config","inputName","currentError","currentRef","restOfErrorTree","payload","_subscribe","_setFormState","_setDisabledField","disabledStateChanged","disabledIsDefined","fieldRef","radioOrCheckbox","_focusError","_disableForm","onValid","onInvalid","e","onValidError","_reset","keepStateOptions","updatedValues","cloneUpdatedValues","isEmptyResetValues","fieldsToCheck","isDirty","existingValue","form","methods","useForm","_formControl","_values","rest","sub","_a","state","LubFormsClient","baseUrl","constructor","replace","getForm","formId","url","response","fetch","headers","Accept","ok","parseError","json","submitForm","body","JSON","stringify","confirmOptIn","token","code","details","status","statusText","defaultClient","setDefaultClient","client","getDefaultClient","createClient","s","r","t","f","i","n","a","u","LubFormContext","createContext","useLubFormContext","useContext","Error","LubFormProvider","schema","defaultValues","currentStep","totalSteps","isSubmitting","isSuccess","onStepChange","resolver","zodResolver","isMultiStep","is_multi_step","steps","goToStep","step","nextStep","prevStep","getFieldsForCurrentStep","filter","is_active","stepFieldIds","Set","field_ids","has","id","getVisibleFields","conditional_logic","evaluateFieldVisibility","contextValue","useMemo","jsx","RHFFormProvider","logic","show_if","evaluateCondition","hide_if","condition","field_name","compareValues","operator","and","andCond","or","orResult","orCond","compareValue","String","includes","Number","cn","classes","Boolean","join","FieldWrapper","t0","$","_c","hideLabel","t1","undefined","hasError","t2","t3","t4","label","t5","help_text","t6","t7","jsxs","TextField","field_type","getInputType","inputType","placeholder","t8","t9","fieldType","TextareaField","NumberField","rules","validation_rules","t10","SelectField","map","_temp","allow_other","other_label","t11","t12","RadioField","CheckboxField","t13","t14","CheckboxGroupField","DateField","TimeField","DateTimeField","FileField","allowed_types","acceptTypes","max_file_size","HiddenField","default_value","countries","usStates","countryCode","caProvinces","getStatesForCountry","getCountryByCode","find","c","getStateByCode","stateCode","CountryField","Symbol","for","country","StateField","countryFieldName","countryValue","T0","bb0","states","t15","t16","t17","t18","t19","HtmlField","__html","DividerField","RecaptchaField","containerRef","useRef","widgetIdRef","scriptLoadedRef","siteKey","settings","recaptcha_site_key","handleV2Callback","handleExpired","current","document","querySelector","script","createElement","src","async","defer","onload","head","appendChild","useEffect","renderWidget","window","grecaptcha","ready","render","sitekey","attemptRender","setTimeout","fieldRegistry","text","email","phone","textarea","number","select","radio","checkbox","checkbox_group","date","datetime","file","hidden","html","divider","recaptcha","getFieldComponent","registerFieldComponent","component","FormRenderer","layout","visibleFields","fieldGroups","groupFieldsForTwoColumn","_temp4","group","groupIndex","_temp3","_temp2","FieldRenderer","f_0","FieldComponent","console","warn","css_class","width","widthClass","getWidthClass","groups","currentRow","currentRowWidth","fieldWidth","getFieldWidthValue","push","StepManager","onStepClick","allowStepNavigation","isActive","isCompleted","isClickable","CheckIcon","description","StepNavigation","onNext","onPrev","isNextDisabled","isPrevDisabled","isLastStep","submitButtonText","nextButtonText","prevButtonText","showPrev","showNext","LoadingSpinner","util","_","assertIs","_arg","assertNever","_x","items","item","validKeys","k","filtered","keys","arr","checker","joinValues","array","separator","objectUtil","first","second","ZodParsedType","getParsedType","ZodIssueCode","ZodError","issues","subs","actualProto","_mapper","mapper","issue","fieldErrors","processError","curr","el","formErrors","firstEl","errorMap","_ctx","overrideErrorMap","defaultErrorMap","getErrorMap","makeIssue","params","errorMaps","issueData","fullPath","fullIssue","errorMessage","maps","m","addIssueToContext","ctx","overrideMap","x","ParseStatus","results","arrayValue","INVALID","pairs","syncPairs","pair","finalObject","DIRTY","OK","isAborted","isAsync","errorUtil","ParseInputLazyPath","parent","handleResult","processCreateParams","invalid_type_error","required_error","iss","ZodType","err","maybeAsyncResult","check","getIssueProperties","refinementData","refinement","ZodEffects","ZodFirstPartyTypeKind","def","ZodOptional","ZodNullable","ZodArray","ZodPromise","ZodUnion","incoming","ZodIntersection","transform","defaultValueFunc","ZodDefault","ZodBranded","catchValueFunc","ZodCatch","This","ZodPipeline","ZodReadonly","cuidRegex","cuid2Regex","ulidRegex","uuidRegex","nanoidRegex","jwtRegex","durationRegex","emailRegex","_emojiRegex","emojiRegex","ipv4Regex","ipv4CidrRegex","ipv6Regex","ipv6CidrRegex","base64Regex","base64urlRegex","dateRegexSource","dateRegex","timeRegexSource","secondsRegexSource","secondsQuantifier","timeRegex","datetimeRegex","regex","opts","isValidIP","ip","version","isValidJWT","jwt","alg","header","base64","decoded","isValidCidr","ZodString","tooBig","tooSmall","validation","len","ch","floatSafeRemainder","valDecCount","stepDecCount","decCount","valInt","stepInt","ZodNumber","kind","inclusive","ZodBigInt","ZodBoolean","ZodDate","minDate","maxDate","ZodSymbol","ZodUndefined","ZodNull","ZodAny","ZodUnknown","ZodNever","ZodVoid","deepPartialify","ZodObject","newShape","fieldSchema","ZodTuple","shape","shapeKeys","extraKeys","keyValidator","unknownKeys","catchall","defaultError","augmentation","merging","mask","newField","createZodEnum","handleResults","unionErrors","childCtx","dirty","types","mergeValues","b","aType","bType","bKeys","sharedKeys","newObj","sharedValue","newArray","itemA","itemB","handleParsed","parsedLeft","parsedRight","merged","left","right","itemIndex","schemas","ZodMap","keyType","valueType","finalMap","ZodSet","finalizeSet","elements","parsedSet","minSize","maxSize","ZodLazy","getter","ZodLiteral","ZodEnum","expectedValues","enumValues","newDef","opt","ZodNativeEnum","nativeEnumValues","promisified","effect","checkCtx","arg","processed","executeRefinement","acc","inner","base","preprocess","newCtx","ZodNaN","inResult","freeze","cleanParams","p","custom","_params","fatal","_fatal","instanceOfType","cls","stringType","booleanType","anyType","arrayType","objectType","unionType","literalType","coerce","buildFormSchema","isNonInputField","buildFieldSchema","z","buildStringSchema","buildEmailSchema","buildPhoneSchema","buildUrlSchema","buildNumberSchema","buildDateSchema","buildSelectSchema","buildCheckboxSchema","buildCheckboxGroupSchema","buildFileSchema","any","optional","string","customError","custom_error","min_length","max_length","RegExp","refine","Date","isNaN","getTime","validValues","boolean","every","File","FileList","Array","from","some","toLowerCase","endsWith","maxBytes","nullable","formDesignToCssVariables","design","vars","background_color","text_color","primary_color","border_color","font_family","font_size","padding","field_spacing","button_style","border_radius","applyCssVariables","LubForm","onSuccess","onError","onValidationError","className","style","designOverrides","setState","useState","setCurrentStep","setIsSubmitting","then","catch","handleStepChange","FormSkeleton","success_message","mergeDesign","SuccessMessage","form_0","totalSteps_0","mergedDesign","cssVars","buildDefaultValues","FormContent","onSubmitStart","onSubmitEnd","currentFields","validateCurrentStep","handleNextStep","Object","entries","referrer","location","href","utm_parameters","getUTMParameters","show_consent_checkbox","ConsentCheckbox","consent_text","submit_button_text","_consent","SuccessIcon","overrides","defaults","selected","URLSearchParams","search","utm","utmParams","param","evaluateFieldRequired","isRequired","required_if","conditionMet","normalizeValue","sort","trim","getRequiredFieldNames","add","useFormApi","setForm","isLoading","setIsLoading","submitResponse","setSubmitResponse","fetchForm","useCallback","request","apiError","useConditionalLogic","requiredFieldNames","Map","fieldMap","isFieldVisible","fieldName_0","field_0","isFieldRequired","useMultiStep","isFirstStep","currentStepData","currentStepFields","bb1","Math","round","progress","newStep","newStep_0","useFormDesign","cssVariables","theme"],"mappings":"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","x_google_ignoreList":[0,1,2,3,5,6,31,32,33,34,35,36,37]}
|
|
1
|
+
{"version":3,"file":"lub-forms.es.js","sources":["../node_modules/react/cjs/react-compiler-runtime.production.js","../node_modules/react/cjs/react-compiler-runtime.development.js","../node_modules/react/compiler-runtime.js","../src/api/client.ts","../src/core/FormProvider.tsx","../src/utils/cn.ts","../src/fields/FieldWrapper.tsx","../src/fields/TextField.tsx","../src/fields/TextareaField.tsx","../src/fields/NumberField.tsx","../src/fields/SelectField.tsx","../src/fields/RadioField.tsx","../src/fields/CheckboxField.tsx","../src/fields/CheckboxGroupField.tsx","../src/fields/DateField.tsx","../src/fields/TimeField.tsx","../src/fields/DateTimeField.tsx","../src/fields/FileField.tsx","../src/fields/HiddenField.tsx","../src/utils/countries.ts","../src/fields/CountryField.tsx","../src/fields/StateField.tsx","../src/fields/HtmlField.tsx","../src/fields/DividerField.tsx","../src/fields/RecaptchaField.tsx","../src/fields/index.ts","../src/core/FormRenderer.tsx","../src/core/StepManager.tsx","../node_modules/zod/v3/helpers/util.js","../node_modules/zod/v3/ZodError.js","../node_modules/zod/v3/locales/en.js","../node_modules/zod/v3/errors.js","../node_modules/zod/v3/helpers/parseUtil.js","../node_modules/zod/v3/helpers/errorUtil.js","../node_modules/zod/v3/types.js","../src/validation/schema-builder.ts","../src/utils/css-variables.ts","../src/core/LubForm.tsx","../src/validation/conditional.ts","../src/hooks/useFormApi.ts","../src/hooks/useConditionalLogic.ts","../src/hooks/useMultiStep.ts","../src/hooks/useFormDesign.ts"],"sourcesContent":["/**\n * @license React\n * react-compiler-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\n\"use strict\";\nvar ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nexports.c = function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n};\n","/**\n * @license React\n * react-compiler-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n var ReactSharedInternals =\n require(\"react\").__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\n exports.c = function (size) {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher.useMemoCache(size);\n };\n })();\n","/**\n * Copyright (c) Meta Platforms, Inc. and 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\n'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-compiler-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-compiler-runtime.development.js');\n}\n","import type {\n PublicFormResponse,\n SubmitFormRequest,\n SubmitFormResponse,\n ApiError,\n} from \"./types\";\n\nexport class LubFormsClient {\n private baseUrl: string;\n\n constructor(baseUrl: string) {\n // Remove trailing slash\n this.baseUrl = baseUrl.replace(/\\/$/, \"\");\n }\n\n /**\n * Fetch a form by ID for public display\n */\n async getForm(formId: string): Promise<PublicFormResponse> {\n const url = `${this.baseUrl}/public/forms/${formId}`;\n\n const response = await fetch(url, {\n method: \"GET\",\n headers: {\n Accept: \"application/json\",\n },\n });\n\n if (!response.ok) {\n const error = await this.parseError(response);\n throw error;\n }\n\n return response.json() as Promise<PublicFormResponse>;\n }\n\n /**\n * Submit form data\n */\n async submitForm(\n formId: string,\n data: SubmitFormRequest,\n ): Promise<SubmitFormResponse> {\n const url = `${this.baseUrl}/public/forms/${formId}/submit`;\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify(data),\n });\n\n if (!response.ok) {\n const error = await this.parseError(response);\n throw error;\n }\n\n return response.json() as Promise<SubmitFormResponse>;\n }\n\n /**\n * Confirm double opt-in\n */\n async confirmOptIn(\n token: string,\n ): Promise<{ success: boolean; message: string; submission_id: string }> {\n const url = `${this.baseUrl}/public/forms/confirm/${token}`;\n\n const response = await fetch(url, {\n method: \"GET\",\n headers: {\n Accept: \"application/json\",\n },\n });\n\n if (!response.ok) {\n const error = await this.parseError(response);\n throw error;\n }\n\n return response.json();\n }\n\n private async parseError(response: Response): Promise<ApiError> {\n try {\n const data = await response.json();\n return {\n error: data.error || data.message || \"An error occurred\",\n code: data.code,\n details: data.details,\n };\n } catch {\n return {\n error: `HTTP ${response.status}: ${response.statusText}`,\n };\n }\n }\n}\n\n// Default client instance (can be set via LubForms.init)\nlet defaultClient: LubFormsClient | null = null;\n\nexport function setDefaultClient(client: LubFormsClient): void {\n defaultClient = client;\n}\n\nexport function getDefaultClient(): LubFormsClient | null {\n return defaultClient;\n}\n\nexport function createClient(baseUrl: string): LubFormsClient {\n return new LubFormsClient(baseUrl);\n}\n","import { createContext, useContext, useMemo, type ReactNode } from \"react\";\nimport {\n useForm,\n FormProvider as RHFFormProvider,\n type UseFormReturn,\n type FieldValues,\n} from \"react-hook-form\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport type { z } from \"zod\";\nimport type { PublicFormResponse, FormField } from \"@/api/types\";\n\n// Form context types\ninterface LubFormContextValue {\n form: PublicFormResponse;\n fields: FormField[];\n currentStep: number;\n totalSteps: number;\n isMultiStep: boolean;\n isSubmitting: boolean;\n isSuccess: boolean;\n error: string | null;\n goToStep: (step: number) => void;\n nextStep: () => void;\n prevStep: () => void;\n getFieldsForCurrentStep: () => FormField[];\n getVisibleFields: (formValues: FieldValues) => FormField[];\n}\n\nconst LubFormContext = createContext<LubFormContextValue | null>(null);\n\nexport function useLubFormContext(): LubFormContextValue {\n const context = useContext(LubFormContext);\n if (!context) {\n throw new Error(\"useLubFormContext must be used within a LubFormProvider\");\n }\n return context;\n}\n\n// Props\ninterface LubFormProviderProps {\n form: PublicFormResponse;\n schema: z.ZodSchema;\n defaultValues?: Record<string, unknown>;\n currentStep: number;\n totalSteps: number;\n isSubmitting: boolean;\n isSuccess: boolean;\n error: string | null;\n onStepChange: (step: number) => void;\n children: ReactNode;\n}\n\nexport function LubFormProvider({\n form,\n schema,\n defaultValues,\n currentStep,\n totalSteps,\n isSubmitting,\n isSuccess,\n error,\n onStepChange,\n children,\n}: LubFormProviderProps) {\n const methods = useForm({\n resolver: zodResolver(schema),\n defaultValues: defaultValues ?? {},\n mode: \"onBlur\",\n reValidateMode: \"onChange\",\n });\n\n const isMultiStep = form.is_multi_step && (form.steps?.length ?? 0) > 0;\n\n const goToStep = (step: number) => {\n if (step >= 0 && step < totalSteps) {\n onStepChange(step);\n }\n };\n\n const nextStep = () => {\n if (currentStep < totalSteps - 1) {\n onStepChange(currentStep + 1);\n }\n };\n\n const prevStep = () => {\n if (currentStep > 0) {\n onStepChange(currentStep - 1);\n }\n };\n\n const getFieldsForCurrentStep = (): FormField[] => {\n if (!isMultiStep || !form.steps) {\n return form.fields.filter((f) => f.is_active);\n }\n\n const step = form.steps[currentStep];\n if (!step) return [];\n\n const stepFieldIds = new Set(step.field_ids);\n return form.fields.filter((f) => f.is_active && stepFieldIds.has(f.id));\n };\n\n const getVisibleFields = (formValues: FieldValues): FormField[] => {\n const stepFields = getFieldsForCurrentStep();\n return stepFields.filter((field) => {\n if (!field.conditional_logic) return true;\n return evaluateFieldVisibility(field, formValues);\n });\n };\n\n const contextValue = useMemo(\n (): LubFormContextValue => ({\n form,\n fields: form.fields,\n currentStep,\n totalSteps,\n isMultiStep,\n isSubmitting,\n isSuccess,\n error,\n goToStep,\n nextStep,\n prevStep,\n getFieldsForCurrentStep,\n getVisibleFields,\n }),\n [form, currentStep, totalSteps, isSubmitting, isSuccess, error],\n );\n\n return (\n <LubFormContext.Provider value={contextValue}>\n <RHFFormProvider {...methods}>{children}</RHFFormProvider>\n </LubFormContext.Provider>\n );\n}\n\n// Helper to evaluate field visibility based on conditional logic\nfunction evaluateFieldVisibility(\n field: FormField,\n formValues: FieldValues,\n): boolean {\n const logic = field.conditional_logic;\n if (!logic) return true;\n\n // Check show_if\n if (logic.show_if) {\n return evaluateCondition(logic.show_if, formValues);\n }\n\n // Check hide_if\n if (logic.hide_if) {\n return !evaluateCondition(logic.hide_if, formValues);\n }\n\n return true;\n}\n\nfunction evaluateCondition(\n condition: NonNullable<FormField[\"conditional_logic\"]>[\"show_if\"],\n formValues: FieldValues,\n): boolean {\n if (!condition) return true;\n\n const fieldValue = formValues[condition.field_name];\n let result = compareValues(fieldValue, condition.operator, condition.value);\n\n // Evaluate AND conditions\n if (condition.and && condition.and.length > 0) {\n for (const andCond of condition.and) {\n if (!evaluateCondition(andCond, formValues)) {\n return false;\n }\n }\n }\n\n // Evaluate OR conditions\n if (condition.or && condition.or.length > 0) {\n let orResult = false;\n for (const orCond of condition.or) {\n if (evaluateCondition(orCond, formValues)) {\n orResult = true;\n break;\n }\n }\n result = result && orResult;\n }\n\n return result;\n}\n\nfunction compareValues(\n fieldValue: unknown,\n operator: string,\n compareValue: unknown,\n): boolean {\n switch (operator) {\n case \"equals\":\n return fieldValue === compareValue;\n case \"not_equals\":\n return fieldValue !== compareValue;\n case \"contains\":\n return String(fieldValue ?? \"\").includes(String(compareValue));\n case \"not_contains\":\n return !String(fieldValue ?? \"\").includes(String(compareValue));\n case \"greater_than\":\n return Number(fieldValue) > Number(compareValue);\n case \"less_than\":\n return Number(fieldValue) < Number(compareValue);\n case \"is_empty\":\n return fieldValue == null || fieldValue === \"\";\n case \"is_not_empty\":\n return fieldValue != null && fieldValue !== \"\";\n default:\n return true;\n }\n}\n\n// Export React Hook Form methods hook\nexport function useFormMethods(): UseFormReturn {\n const methods = useContext(\n RHFFormProvider as unknown as React.Context<UseFormReturn | null>,\n );\n if (!methods) {\n throw new Error(\"useFormMethods must be used within a LubFormProvider\");\n }\n return methods;\n}\n","/**\n * Combine class names, filtering out falsy values\n */\nexport function cn(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(\" \");\n}\n","import type { ReactNode } from \"react\";\nimport { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { cn } from \"@/utils/cn\";\n\ninterface FieldWrapperProps {\n field: FormField;\n children: ReactNode;\n hideLabel?: boolean;\n}\n\nexport function FieldWrapper({\n field,\n children,\n hideLabel = false,\n}: FieldWrapperProps) {\n const { formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n return (\n <div\n className={cn(\n \"lub-form__field-wrapper\",\n hasError && \"lub-form__field-wrapper--error\",\n )}\n >\n {!hideLabel && field.label && (\n <label\n htmlFor={field.name}\n className={cn(\n \"lub-form__label\",\n field.required && \"lub-form__label--required\",\n )}\n >\n {field.label}\n {field.required && (\n <span className=\"lub-form__required-indicator\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n )}\n\n {children}\n\n {field.help_text && !hasError && (\n <p className=\"lub-form__help-text\" id={`${field.name}-help`}>\n {field.help_text}\n </p>\n )}\n\n {hasError && (\n <p className=\"lub-form__error\" id={`${field.name}-error`} role=\"alert\">\n {error.message as string}\n </p>\n )}\n </div>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\n\ninterface TextFieldProps {\n field: FormField;\n}\n\nexport function TextField({ field }: TextFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n // Determine input type based on field_type\n const inputType = getInputType(field.field_type);\n\n return (\n <FieldWrapper field={field}>\n <input\n id={field.name}\n type={inputType}\n className={cn(\"lub-form__input\", hasError && \"lub-form__input--error\")}\n placeholder={field.placeholder}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n />\n </FieldWrapper>\n );\n}\n\nfunction getInputType(fieldType: FormField[\"field_type\"]): string {\n switch (fieldType) {\n case \"email\":\n return \"email\";\n case \"phone\":\n return \"tel\";\n case \"url\":\n return \"url\";\n case \"text\":\n default:\n return \"text\";\n }\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\n\ninterface TextareaFieldProps {\n field: FormField;\n}\n\nexport function TextareaField({ field }: TextareaFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n return (\n <FieldWrapper field={field}>\n <textarea\n id={field.name}\n className={cn(\n \"lub-form__textarea\",\n hasError && \"lub-form__textarea--error\",\n )}\n placeholder={field.placeholder}\n rows={4}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n />\n </FieldWrapper>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\n\ninterface NumberFieldProps {\n field: FormField;\n}\n\nexport function NumberField({ field }: NumberFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n const rules = field.validation_rules;\n\n return (\n <FieldWrapper field={field}>\n <input\n id={field.name}\n type=\"number\"\n className={cn(\"lub-form__input\", hasError && \"lub-form__input--error\")}\n placeholder={field.placeholder}\n min={rules?.min}\n max={rules?.max}\n step=\"any\"\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n />\n </FieldWrapper>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\n\ninterface SelectFieldProps {\n field: FormField;\n}\n\nexport function SelectField({ field }: SelectFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n const options = field.options?.options ?? [];\n\n return (\n <FieldWrapper field={field}>\n <select\n id={field.name}\n className={cn(\n \"lub-form__select\",\n hasError && \"lub-form__select--error\",\n )}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n >\n <option value=\"\">{field.placeholder || \"Select an option...\"}</option>\n {options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n {field.options?.allow_other && (\n <option value=\"__other__\">\n {field.options.other_label || \"Other\"}\n </option>\n )}\n </select>\n </FieldWrapper>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\n\ninterface RadioFieldProps {\n field: FormField;\n}\n\nexport function RadioField({ field }: RadioFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n const options = field.options?.options ?? [];\n\n return (\n <FieldWrapper field={field}>\n <div\n className=\"lub-form__radio-group\"\n role=\"radiogroup\"\n aria-labelledby={`${field.name}-label`}\n >\n {options.map((option) => (\n <label key={option.value} className=\"lub-form__radio-label\">\n <input\n type=\"radio\"\n className={cn(\n \"lub-form__radio\",\n hasError && \"lub-form__radio--error\",\n )}\n value={option.value}\n {...register(field.name)}\n />\n <span className=\"lub-form__radio-text\">{option.label}</span>\n </label>\n ))}\n {field.options?.allow_other && (\n <label className=\"lub-form__radio-label\">\n <input\n type=\"radio\"\n className={cn(\n \"lub-form__radio\",\n hasError && \"lub-form__radio--error\",\n )}\n value=\"__other__\"\n {...register(field.name)}\n />\n <span className=\"lub-form__radio-text\">\n {field.options.other_label || \"Other\"}\n </span>\n </label>\n )}\n </div>\n </FieldWrapper>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { cn } from \"@/utils/cn\";\n\ninterface CheckboxFieldProps {\n field: FormField;\n}\n\nexport function CheckboxField({ field }: CheckboxFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n return (\n <div\n className={cn(\n \"lub-form__field-wrapper\",\n hasError && \"lub-form__field-wrapper--error\",\n )}\n >\n <label className=\"lub-form__checkbox-label\">\n <input\n id={field.name}\n type=\"checkbox\"\n className={cn(\n \"lub-form__checkbox\",\n hasError && \"lub-form__checkbox--error\",\n )}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n />\n <span className=\"lub-form__checkbox-text\">\n {field.label}\n {field.required && (\n <span className=\"lub-form__required-indicator\" aria-hidden=\"true\">\n *\n </span>\n )}\n </span>\n </label>\n\n {field.help_text && !hasError && (\n <p className=\"lub-form__help-text\" id={`${field.name}-help`}>\n {field.help_text}\n </p>\n )}\n\n {hasError && (\n <p className=\"lub-form__error\" id={`${field.name}-error`} role=\"alert\">\n {error.message as string}\n </p>\n )}\n </div>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\n\ninterface CheckboxGroupFieldProps {\n field: FormField;\n}\n\nexport function CheckboxGroupField({ field }: CheckboxGroupFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n const options = field.options?.options ?? [];\n\n return (\n <FieldWrapper field={field}>\n <div\n className=\"lub-form__checkbox-group\"\n role=\"group\"\n aria-labelledby={`${field.name}-label`}\n >\n {options.map((option) => (\n <label key={option.value} className=\"lub-form__checkbox-label\">\n <input\n type=\"checkbox\"\n className={cn(\n \"lub-form__checkbox\",\n hasError && \"lub-form__checkbox--error\",\n )}\n value={option.value}\n {...register(field.name)}\n />\n <span className=\"lub-form__checkbox-text\">{option.label}</span>\n </label>\n ))}\n {field.options?.allow_other && (\n <label className=\"lub-form__checkbox-label\">\n <input\n type=\"checkbox\"\n className={cn(\n \"lub-form__checkbox\",\n hasError && \"lub-form__checkbox--error\",\n )}\n value=\"__other__\"\n {...register(field.name)}\n />\n <span className=\"lub-form__checkbox-text\">\n {field.options.other_label || \"Other\"}\n </span>\n </label>\n )}\n </div>\n </FieldWrapper>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\n\ninterface DateFieldProps {\n field: FormField;\n}\n\nexport function DateField({ field }: DateFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n return (\n <FieldWrapper field={field}>\n <input\n id={field.name}\n type=\"date\"\n className={cn(\"lub-form__input\", hasError && \"lub-form__input--error\")}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n />\n </FieldWrapper>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\n\ninterface TimeFieldProps {\n field: FormField;\n}\n\nexport function TimeField({ field }: TimeFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n return (\n <FieldWrapper field={field}>\n <input\n id={field.name}\n type=\"time\"\n className={cn(\"lub-form__input\", hasError && \"lub-form__input--error\")}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n />\n </FieldWrapper>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\n\ninterface DateTimeFieldProps {\n field: FormField;\n}\n\nexport function DateTimeField({ field }: DateTimeFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n return (\n <FieldWrapper field={field}>\n <input\n id={field.name}\n type=\"datetime-local\"\n className={cn(\"lub-form__input\", hasError && \"lub-form__input--error\")}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n />\n </FieldWrapper>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\n\ninterface FileFieldProps {\n field: FormField;\n}\n\nexport function FileField({ field }: FileFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n const rules = field.validation_rules;\n const acceptTypes = rules?.allowed_types?.join(\",\");\n\n return (\n <FieldWrapper field={field}>\n <input\n id={field.name}\n type=\"file\"\n className={cn(\n \"lub-form__file-input\",\n hasError && \"lub-form__file-input--error\",\n )}\n accept={acceptTypes}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n />\n {rules?.max_file_size && (\n <p className=\"lub-form__file-hint\">\n Max file size: {rules.max_file_size}MB\n </p>\n )}\n </FieldWrapper>\n );\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\n\ninterface HiddenFieldProps {\n field: FormField;\n}\n\nexport function HiddenField({ field }: HiddenFieldProps) {\n const { register } = useFormContext();\n\n return (\n <input\n type=\"hidden\"\n {...register(field.name)}\n defaultValue={field.default_value}\n />\n );\n}\n","// Country data for country/state fields\n\nexport interface Country {\n code: string;\n name: string;\n}\n\nexport interface State {\n code: string;\n name: string;\n countryCode: string;\n}\n\n// ISO 3166-1 alpha-2 country codes - most common countries\nexport const countries: Country[] = [\n { code: \"US\", name: \"United States\" },\n { code: \"CA\", name: \"Canada\" },\n { code: \"GB\", name: \"United Kingdom\" },\n { code: \"AU\", name: \"Australia\" },\n { code: \"DE\", name: \"Germany\" },\n { code: \"FR\", name: \"France\" },\n { code: \"ES\", name: \"Spain\" },\n { code: \"IT\", name: \"Italy\" },\n { code: \"NL\", name: \"Netherlands\" },\n { code: \"BE\", name: \"Belgium\" },\n { code: \"AT\", name: \"Austria\" },\n { code: \"CH\", name: \"Switzerland\" },\n { code: \"SE\", name: \"Sweden\" },\n { code: \"NO\", name: \"Norway\" },\n { code: \"DK\", name: \"Denmark\" },\n { code: \"FI\", name: \"Finland\" },\n { code: \"IE\", name: \"Ireland\" },\n { code: \"PT\", name: \"Portugal\" },\n { code: \"PL\", name: \"Poland\" },\n { code: \"CZ\", name: \"Czech Republic\" },\n { code: \"JP\", name: \"Japan\" },\n { code: \"KR\", name: \"South Korea\" },\n { code: \"CN\", name: \"China\" },\n { code: \"IN\", name: \"India\" },\n { code: \"BR\", name: \"Brazil\" },\n { code: \"MX\", name: \"Mexico\" },\n { code: \"AR\", name: \"Argentina\" },\n { code: \"CL\", name: \"Chile\" },\n { code: \"CO\", name: \"Colombia\" },\n { code: \"PE\", name: \"Peru\" },\n { code: \"NZ\", name: \"New Zealand\" },\n { code: \"SG\", name: \"Singapore\" },\n { code: \"HK\", name: \"Hong Kong\" },\n { code: \"TW\", name: \"Taiwan\" },\n { code: \"MY\", name: \"Malaysia\" },\n { code: \"TH\", name: \"Thailand\" },\n { code: \"PH\", name: \"Philippines\" },\n { code: \"ID\", name: \"Indonesia\" },\n { code: \"VN\", name: \"Vietnam\" },\n { code: \"ZA\", name: \"South Africa\" },\n { code: \"AE\", name: \"United Arab Emirates\" },\n { code: \"SA\", name: \"Saudi Arabia\" },\n { code: \"IL\", name: \"Israel\" },\n { code: \"TR\", name: \"Turkey\" },\n { code: \"RU\", name: \"Russia\" },\n { code: \"UA\", name: \"Ukraine\" },\n { code: \"GR\", name: \"Greece\" },\n { code: \"HU\", name: \"Hungary\" },\n { code: \"RO\", name: \"Romania\" },\n];\n\n// US States\nexport const usStates: State[] = [\n { code: \"AL\", name: \"Alabama\", countryCode: \"US\" },\n { code: \"AK\", name: \"Alaska\", countryCode: \"US\" },\n { code: \"AZ\", name: \"Arizona\", countryCode: \"US\" },\n { code: \"AR\", name: \"Arkansas\", countryCode: \"US\" },\n { code: \"CA\", name: \"California\", countryCode: \"US\" },\n { code: \"CO\", name: \"Colorado\", countryCode: \"US\" },\n { code: \"CT\", name: \"Connecticut\", countryCode: \"US\" },\n { code: \"DE\", name: \"Delaware\", countryCode: \"US\" },\n { code: \"FL\", name: \"Florida\", countryCode: \"US\" },\n { code: \"GA\", name: \"Georgia\", countryCode: \"US\" },\n { code: \"HI\", name: \"Hawaii\", countryCode: \"US\" },\n { code: \"ID\", name: \"Idaho\", countryCode: \"US\" },\n { code: \"IL\", name: \"Illinois\", countryCode: \"US\" },\n { code: \"IN\", name: \"Indiana\", countryCode: \"US\" },\n { code: \"IA\", name: \"Iowa\", countryCode: \"US\" },\n { code: \"KS\", name: \"Kansas\", countryCode: \"US\" },\n { code: \"KY\", name: \"Kentucky\", countryCode: \"US\" },\n { code: \"LA\", name: \"Louisiana\", countryCode: \"US\" },\n { code: \"ME\", name: \"Maine\", countryCode: \"US\" },\n { code: \"MD\", name: \"Maryland\", countryCode: \"US\" },\n { code: \"MA\", name: \"Massachusetts\", countryCode: \"US\" },\n { code: \"MI\", name: \"Michigan\", countryCode: \"US\" },\n { code: \"MN\", name: \"Minnesota\", countryCode: \"US\" },\n { code: \"MS\", name: \"Mississippi\", countryCode: \"US\" },\n { code: \"MO\", name: \"Missouri\", countryCode: \"US\" },\n { code: \"MT\", name: \"Montana\", countryCode: \"US\" },\n { code: \"NE\", name: \"Nebraska\", countryCode: \"US\" },\n { code: \"NV\", name: \"Nevada\", countryCode: \"US\" },\n { code: \"NH\", name: \"New Hampshire\", countryCode: \"US\" },\n { code: \"NJ\", name: \"New Jersey\", countryCode: \"US\" },\n { code: \"NM\", name: \"New Mexico\", countryCode: \"US\" },\n { code: \"NY\", name: \"New York\", countryCode: \"US\" },\n { code: \"NC\", name: \"North Carolina\", countryCode: \"US\" },\n { code: \"ND\", name: \"North Dakota\", countryCode: \"US\" },\n { code: \"OH\", name: \"Ohio\", countryCode: \"US\" },\n { code: \"OK\", name: \"Oklahoma\", countryCode: \"US\" },\n { code: \"OR\", name: \"Oregon\", countryCode: \"US\" },\n { code: \"PA\", name: \"Pennsylvania\", countryCode: \"US\" },\n { code: \"RI\", name: \"Rhode Island\", countryCode: \"US\" },\n { code: \"SC\", name: \"South Carolina\", countryCode: \"US\" },\n { code: \"SD\", name: \"South Dakota\", countryCode: \"US\" },\n { code: \"TN\", name: \"Tennessee\", countryCode: \"US\" },\n { code: \"TX\", name: \"Texas\", countryCode: \"US\" },\n { code: \"UT\", name: \"Utah\", countryCode: \"US\" },\n { code: \"VT\", name: \"Vermont\", countryCode: \"US\" },\n { code: \"VA\", name: \"Virginia\", countryCode: \"US\" },\n { code: \"WA\", name: \"Washington\", countryCode: \"US\" },\n { code: \"WV\", name: \"West Virginia\", countryCode: \"US\" },\n { code: \"WI\", name: \"Wisconsin\", countryCode: \"US\" },\n { code: \"WY\", name: \"Wyoming\", countryCode: \"US\" },\n { code: \"DC\", name: \"District of Columbia\", countryCode: \"US\" },\n];\n\n// Canadian Provinces\nexport const caProvinces: State[] = [\n { code: \"AB\", name: \"Alberta\", countryCode: \"CA\" },\n { code: \"BC\", name: \"British Columbia\", countryCode: \"CA\" },\n { code: \"MB\", name: \"Manitoba\", countryCode: \"CA\" },\n { code: \"NB\", name: \"New Brunswick\", countryCode: \"CA\" },\n { code: \"NL\", name: \"Newfoundland and Labrador\", countryCode: \"CA\" },\n { code: \"NS\", name: \"Nova Scotia\", countryCode: \"CA\" },\n { code: \"ON\", name: \"Ontario\", countryCode: \"CA\" },\n { code: \"PE\", name: \"Prince Edward Island\", countryCode: \"CA\" },\n { code: \"QC\", name: \"Quebec\", countryCode: \"CA\" },\n { code: \"SK\", name: \"Saskatchewan\", countryCode: \"CA\" },\n { code: \"NT\", name: \"Northwest Territories\", countryCode: \"CA\" },\n { code: \"NU\", name: \"Nunavut\", countryCode: \"CA\" },\n { code: \"YT\", name: \"Yukon\", countryCode: \"CA\" },\n];\n\n// Get states for a country\nexport function getStatesForCountry(countryCode: string): State[] {\n switch (countryCode) {\n case \"US\":\n return usStates;\n case \"CA\":\n return caProvinces;\n default:\n return [];\n }\n}\n\n// Get country by code\nexport function getCountryByCode(code: string): Country | undefined {\n return countries.find((c) => c.code === code);\n}\n\n// Get state by code\nexport function getStateByCode(\n stateCode: string,\n countryCode: string,\n): State | undefined {\n const states = getStatesForCountry(countryCode);\n return states.find((s) => s.code === stateCode);\n}\n","import { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\nimport { countries } from \"@/utils/countries\";\n\ninterface CountryFieldProps {\n field: FormField;\n}\n\nexport function CountryField({ field }: CountryFieldProps) {\n const { register, formState } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n return (\n <FieldWrapper field={field}>\n <select\n id={field.name}\n className={cn(\n \"lub-form__select\",\n hasError && \"lub-form__select--error\",\n )}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n >\n <option value=\"\">{field.placeholder || \"Select a country...\"}</option>\n {countries.map((country) => (\n <option key={country.code} value={country.code}>\n {country.name}\n </option>\n ))}\n </select>\n </FieldWrapper>\n );\n}\n","import { useFormContext, useWatch } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { FieldWrapper } from \"./FieldWrapper\";\nimport { cn } from \"@/utils/cn\";\nimport { getStatesForCountry } from \"@/utils/countries\";\n\ninterface StateFieldProps {\n field: FormField;\n /** Name of the country field to watch for state filtering */\n countryFieldName?: string;\n}\n\nexport function StateField({\n field,\n countryFieldName = \"country\",\n}: StateFieldProps) {\n const { register, formState, control } = useFormContext();\n const error = formState.errors[field.name];\n const hasError = !!error;\n\n // Watch country field to filter states\n const countryValue = useWatch({\n control,\n name: countryFieldName,\n defaultValue: \"\",\n });\n\n const states = getStatesForCountry(countryValue as string);\n const hasStates = states.length > 0;\n\n // If no country selected or country has no states, show text input\n if (!hasStates) {\n return (\n <FieldWrapper field={field}>\n <input\n id={field.name}\n type=\"text\"\n className={cn(\n \"lub-form__input\",\n hasError && \"lub-form__input--error\",\n )}\n placeholder={field.placeholder || \"State/Province\"}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n />\n </FieldWrapper>\n );\n }\n\n return (\n <FieldWrapper field={field}>\n <select\n id={field.name}\n className={cn(\n \"lub-form__select\",\n hasError && \"lub-form__select--error\",\n )}\n aria-invalid={hasError}\n aria-describedby={\n hasError\n ? `${field.name}-error`\n : field.help_text\n ? `${field.name}-help`\n : undefined\n }\n {...register(field.name)}\n >\n <option value=\"\">{field.placeholder || \"Select a state...\"}</option>\n {states.map((state) => (\n <option key={state.code} value={state.code}>\n {state.name}\n </option>\n ))}\n </select>\n </FieldWrapper>\n );\n}\n","import type { FormField } from \"@/api/types\";\n\ninterface HtmlFieldProps {\n field: FormField;\n}\n\nexport function HtmlField({ field }: HtmlFieldProps) {\n // HTML fields display static content from default_value\n if (!field.default_value) return null;\n\n return (\n <div\n className=\"lub-form__html-content\"\n dangerouslySetInnerHTML={{ __html: field.default_value }}\n />\n );\n}\n","import type { FormField } from \"@/api/types\";\n\ninterface DividerFieldProps {\n field: FormField;\n}\n\nexport function DividerField({ field }: DividerFieldProps) {\n return (\n <div className=\"lub-form__divider\">\n <hr className=\"lub-form__divider-line\" />\n {field.label && (\n <span className=\"lub-form__divider-label\">{field.label}</span>\n )}\n </div>\n );\n}\n","import { useEffect, useRef, useCallback } from \"react\";\nimport { useFormContext } from \"react-hook-form\";\nimport type { FormField } from \"@/api/types\";\nimport { useLubFormContext } from \"@/core/FormProvider\";\n\ninterface RecaptchaFieldProps {\n field: FormField;\n}\n\ndeclare global {\n interface Window {\n grecaptcha?: {\n ready: (callback: () => void) => void;\n execute: (\n siteKey: string,\n options: { action: string },\n ) => Promise<string>;\n render: (\n container: HTMLElement,\n options: {\n sitekey: string;\n callback: (token: string) => void;\n \"expired-callback\"?: () => void;\n \"error-callback\"?: () => void;\n },\n ) => number;\n reset: (widgetId?: number) => void;\n };\n }\n}\n\nexport function RecaptchaField({ field }: RecaptchaFieldProps) {\n const { setValue, setError, clearErrors } = useFormContext();\n const { form } = useLubFormContext();\n const containerRef = useRef<HTMLDivElement>(null);\n const widgetIdRef = useRef<number | null>(null);\n const scriptLoadedRef = useRef(false);\n\n const siteKey = form.settings.recaptcha_site_key;\n\n // Callback for v2 checkbox\n const handleV2Callback = useCallback(\n (token: string) => {\n setValue(\"_recaptcha_token\", token);\n clearErrors(\"_recaptcha_token\");\n },\n [setValue, clearErrors],\n );\n\n const handleExpired = useCallback(() => {\n setValue(\"_recaptcha_token\", \"\");\n setError(\"_recaptcha_token\", {\n type: \"manual\",\n message: \"reCAPTCHA expired, please try again\",\n });\n }, [setValue, setError]);\n\n // Load reCAPTCHA script\n useEffect(() => {\n if (!siteKey || scriptLoadedRef.current) return;\n\n // Check if script already exists\n const existingScript = document.querySelector('script[src*=\"recaptcha\"]');\n if (existingScript) {\n scriptLoadedRef.current = true;\n return;\n }\n\n const script = document.createElement(\"script\");\n script.src = `https://www.google.com/recaptcha/api.js?render=explicit`;\n script.async = true;\n script.defer = true;\n script.onload = () => {\n scriptLoadedRef.current = true;\n };\n document.head.appendChild(script);\n\n return () => {\n // Don't remove script on cleanup as it might be used elsewhere\n };\n }, [siteKey]);\n\n // Render v2 widget\n useEffect(() => {\n if (!siteKey || !containerRef.current) return;\n\n const renderWidget = () => {\n if (\n window.grecaptcha &&\n containerRef.current &&\n widgetIdRef.current === null\n ) {\n window.grecaptcha.ready(() => {\n if (containerRef.current) {\n widgetIdRef.current = window.grecaptcha!.render(\n containerRef.current,\n {\n sitekey: siteKey,\n callback: handleV2Callback,\n \"expired-callback\": handleExpired,\n \"error-callback\": handleExpired,\n },\n );\n }\n });\n }\n };\n\n // Try rendering, with retry if script isn't loaded yet\n const attemptRender = () => {\n if (window.grecaptcha) {\n renderWidget();\n } else {\n setTimeout(attemptRender, 100);\n }\n };\n\n attemptRender();\n\n return () => {\n if (widgetIdRef.current !== null && window.grecaptcha) {\n window.grecaptcha.reset(widgetIdRef.current);\n widgetIdRef.current = null;\n }\n };\n }, [siteKey, handleV2Callback, handleExpired]);\n\n if (!siteKey) {\n return null;\n }\n\n return (\n <div className=\"lub-form__recaptcha\">\n <div ref={containerRef} className=\"lub-form__recaptcha-widget\" />\n </div>\n );\n}\n","import type { ComponentType } from \"react\";\nimport type { FieldType, FormField } from \"@/api/types\";\n\nimport { TextField } from \"./TextField\";\nimport { TextareaField } from \"./TextareaField\";\nimport { NumberField } from \"./NumberField\";\nimport { SelectField } from \"./SelectField\";\nimport { RadioField } from \"./RadioField\";\nimport { CheckboxField } from \"./CheckboxField\";\nimport { CheckboxGroupField } from \"./CheckboxGroupField\";\nimport { DateField } from \"./DateField\";\nimport { TimeField } from \"./TimeField\";\nimport { DateTimeField } from \"./DateTimeField\";\nimport { FileField } from \"./FileField\";\nimport { HiddenField } from \"./HiddenField\";\nimport { CountryField } from \"./CountryField\";\nimport { StateField } from \"./StateField\";\nimport { HtmlField } from \"./HtmlField\";\nimport { DividerField } from \"./DividerField\";\nimport { RecaptchaField } from \"./RecaptchaField\";\n\n// Field component type\nexport type FieldComponent = ComponentType<{ field: FormField }>;\n\n// Field component registry\nconst fieldRegistry: Record<FieldType, FieldComponent> = {\n text: TextField,\n email: TextField,\n phone: TextField,\n url: TextField,\n textarea: TextareaField,\n number: NumberField,\n select: SelectField,\n radio: RadioField,\n checkbox: CheckboxField,\n checkbox_group: CheckboxGroupField,\n date: DateField,\n time: TimeField,\n datetime: DateTimeField,\n file: FileField,\n hidden: HiddenField,\n country: CountryField,\n state: StateField,\n html: HtmlField,\n divider: DividerField,\n recaptcha: RecaptchaField,\n};\n\n/**\n * Get the component for a field type\n */\nexport function getFieldComponent(type: FieldType): FieldComponent | null {\n return fieldRegistry[type] ?? null;\n}\n\n/**\n * Register a custom field component\n */\nexport function registerFieldComponent(\n type: string,\n component: FieldComponent,\n): void {\n (fieldRegistry as Record<string, FieldComponent>)[type] = component;\n}\n\n// Export all field components\nexport { FieldWrapper } from \"./FieldWrapper\";\nexport { TextField } from \"./TextField\";\nexport { TextareaField } from \"./TextareaField\";\nexport { NumberField } from \"./NumberField\";\nexport { SelectField } from \"./SelectField\";\nexport { RadioField } from \"./RadioField\";\nexport { CheckboxField } from \"./CheckboxField\";\nexport { CheckboxGroupField } from \"./CheckboxGroupField\";\nexport { DateField } from \"./DateField\";\nexport { TimeField } from \"./TimeField\";\nexport { DateTimeField } from \"./DateTimeField\";\nexport { FileField } from \"./FileField\";\nexport { HiddenField } from \"./HiddenField\";\nexport { CountryField } from \"./CountryField\";\nexport { StateField } from \"./StateField\";\nexport { HtmlField } from \"./HtmlField\";\nexport { DividerField } from \"./DividerField\";\nexport { RecaptchaField } from \"./RecaptchaField\";\n","import { useFormContext, type FieldValues } from \"react-hook-form\";\nimport type { FormField, FormLayout } from \"@/api/types\";\nimport { cn } from \"@/utils/cn\";\nimport { getFieldComponent } from \"@/fields\";\nimport { useLubFormContext } from \"./FormProvider\";\n\ninterface FormRendererProps {\n fields: FormField[];\n layout?: FormLayout;\n}\n\nexport function FormRenderer({\n fields,\n layout = \"vertical\",\n}: FormRendererProps) {\n const { watch } = useFormContext();\n const { getVisibleFields } = useLubFormContext();\n\n // Watch all form values to re-evaluate conditional logic\n const formValues = watch();\n const visibleFields = getVisibleFields(formValues);\n\n // Group fields for two-column layout\n const fieldGroups =\n layout === \"two_column\"\n ? groupFieldsForTwoColumn(visibleFields)\n : visibleFields.map((f) => [f]);\n\n return (\n <div className={cn(\"lub-form__fields\", `lub-form__fields--${layout}`)}>\n {fieldGroups.map((group, groupIndex) => (\n <div\n key={group.map((f) => f.id).join(\"-\") || groupIndex}\n className={cn(\n \"lub-form__field-group\",\n group.length > 1 && \"lub-form__field-group--row\",\n )}\n >\n {group.map((field) => (\n <FieldRenderer key={field.id} field={field} />\n ))}\n </div>\n ))}\n </div>\n );\n}\n\ninterface FieldRendererProps {\n field: FormField;\n}\n\nfunction FieldRenderer({ field }: FieldRendererProps) {\n const FieldComponent = getFieldComponent(field.field_type);\n\n if (!FieldComponent) {\n console.warn(`Unknown field type: ${field.field_type}`);\n return null;\n }\n\n const widthClass = getWidthClass(field.width);\n\n return (\n <div className={cn(\"lub-form__field\", widthClass, field.css_class)}>\n <FieldComponent field={field} />\n </div>\n );\n}\n\nfunction getWidthClass(width: FormField[\"width\"]): string {\n switch (width) {\n case \"half\":\n return \"lub-form__field--half\";\n case \"third\":\n return \"lub-form__field--third\";\n case \"quarter\":\n return \"lub-form__field--quarter\";\n case \"full\":\n default:\n return \"lub-form__field--full\";\n }\n}\n\n// Group fields for two-column layout respecting width settings\nfunction groupFieldsForTwoColumn(fields: FormField[]): FormField[][] {\n const groups: FormField[][] = [];\n let currentRow: FormField[] = [];\n let currentRowWidth = 0;\n\n for (const field of fields) {\n const fieldWidth = getFieldWidthValue(field.width);\n\n // Full-width fields always go on their own row\n if (fieldWidth >= 1) {\n if (currentRow.length > 0) {\n groups.push(currentRow);\n currentRow = [];\n currentRowWidth = 0;\n }\n groups.push([field]);\n continue;\n }\n\n // Check if field fits in current row\n if (currentRowWidth + fieldWidth > 1) {\n groups.push(currentRow);\n currentRow = [field];\n currentRowWidth = fieldWidth;\n } else {\n currentRow.push(field);\n currentRowWidth += fieldWidth;\n }\n }\n\n // Push remaining fields\n if (currentRow.length > 0) {\n groups.push(currentRow);\n }\n\n return groups;\n}\n\nfunction getFieldWidthValue(width: FormField[\"width\"]): number {\n switch (width) {\n case \"quarter\":\n return 0.25;\n case \"third\":\n return 0.333;\n case \"half\":\n return 0.5;\n case \"full\":\n default:\n return 1;\n }\n}\n","import type { ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport type { FormStep } from \"@/api/types\";\n\ninterface StepManagerProps {\n steps: FormStep[];\n currentStep: number;\n onStepClick?: (stepIndex: number) => void;\n allowStepNavigation?: boolean;\n}\n\nexport function StepManager({\n steps,\n currentStep,\n onStepClick,\n allowStepNavigation = false,\n}: StepManagerProps) {\n if (steps.length <= 1) return null;\n\n return (\n <div className=\"lub-form__steps\" role=\"navigation\" aria-label=\"Form steps\">\n <ol className=\"lub-form__steps-list\">\n {steps.map((step, index) => {\n const isActive = index === currentStep;\n const isCompleted = index < currentStep;\n const isClickable = allowStepNavigation && (isCompleted || isActive);\n\n return (\n <li\n key={step.id}\n className={cn(\n \"lub-form__step\",\n isActive && \"lub-form__step--active\",\n isCompleted && \"lub-form__step--completed\",\n )}\n >\n {isClickable ? (\n <button\n type=\"button\"\n className=\"lub-form__step-button\"\n onClick={() => onStepClick?.(index)}\n aria-current={isActive ? \"step\" : undefined}\n >\n <span className=\"lub-form__step-number\">{index + 1}</span>\n <span className=\"lub-form__step-name\">{step.name}</span>\n </button>\n ) : (\n <span\n className=\"lub-form__step-indicator\"\n aria-current={isActive ? \"step\" : undefined}\n >\n <span className=\"lub-form__step-number\">\n {isCompleted ? <CheckIcon /> : index + 1}\n </span>\n <span className=\"lub-form__step-name\">{step.name}</span>\n </span>\n )}\n {index < steps.length - 1 && (\n <span\n className={cn(\n \"lub-form__step-connector\",\n isCompleted && \"lub-form__step-connector--completed\",\n )}\n aria-hidden=\"true\"\n />\n )}\n </li>\n );\n })}\n </ol>\n {steps[currentStep]?.description && (\n <p className=\"lub-form__step-description\">\n {steps[currentStep].description}\n </p>\n )}\n </div>\n );\n}\n\nfunction CheckIcon() {\n return (\n <svg\n className=\"lub-form__check-icon\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n}\n\n// Step navigation buttons\ninterface StepNavigationProps {\n currentStep: number;\n totalSteps: number;\n onNext: () => void;\n onPrev: () => void;\n isNextDisabled?: boolean;\n isPrevDisabled?: boolean;\n isLastStep?: boolean;\n isSubmitting?: boolean;\n submitButtonText?: string;\n nextButtonText?: string;\n prevButtonText?: string;\n children?: ReactNode;\n}\n\nexport function StepNavigation({\n currentStep,\n totalSteps,\n onNext,\n onPrev,\n isNextDisabled = false,\n isPrevDisabled = false,\n isLastStep = false,\n isSubmitting = false,\n submitButtonText = \"Submit\",\n nextButtonText = \"Next\",\n prevButtonText = \"Back\",\n children,\n}: StepNavigationProps) {\n const showPrev = currentStep > 0;\n const showNext = !isLastStep;\n\n return (\n <div className=\"lub-form__navigation\">\n {showPrev && (\n <button\n type=\"button\"\n className=\"lub-form__button lub-form__button--secondary\"\n onClick={onPrev}\n disabled={isPrevDisabled || isSubmitting}\n >\n {prevButtonText}\n </button>\n )}\n <div className=\"lub-form__navigation-spacer\" />\n {showNext ? (\n <button\n type=\"button\"\n className=\"lub-form__button lub-form__button--primary\"\n onClick={onNext}\n disabled={isNextDisabled || isSubmitting}\n >\n {nextButtonText}\n </button>\n ) : (\n (children ?? (\n <button\n type=\"submit\"\n className=\"lub-form__button lub-form__button--primary\"\n disabled={isSubmitting}\n >\n {isSubmitting ? (\n <span className=\"lub-form__button-loading\">\n <LoadingSpinner />\n Submitting...\n </span>\n ) : (\n submitButtonText\n )}\n </button>\n ))\n )}\n </div>\n );\n}\n\nfunction LoadingSpinner() {\n return (\n <svg\n className=\"lub-form__spinner\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"lub-form__spinner-track\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n />\n <path\n className=\"lub-form__spinner-head\"\n d=\"M12 2a10 10 0 0 1 10 10\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","import { z, type ZodTypeAny } from \"zod\";\nimport type { FormField, FieldType } from \"@/api/types\";\n\n/**\n * Build a Zod schema from form field definitions\n */\nexport function buildFormSchema(fields: FormField[]): z.ZodSchema {\n const shape: Record<string, ZodTypeAny> = {};\n\n for (const field of fields) {\n if (!field.is_active) continue;\n\n // Skip non-input fields\n if (isNonInputField(field.field_type)) continue;\n\n shape[field.name] = buildFieldSchema(field);\n }\n\n return z.object(shape);\n}\n\n/**\n * Build a Zod schema for a single field\n */\nexport function buildFieldSchema(field: FormField): ZodTypeAny {\n let schema: ZodTypeAny;\n\n switch (field.field_type) {\n case \"text\":\n case \"textarea\":\n case \"hidden\":\n schema = buildStringSchema(field);\n break;\n\n case \"email\":\n schema = buildEmailSchema(field);\n break;\n\n case \"phone\":\n schema = buildPhoneSchema(field);\n break;\n\n case \"url\":\n schema = buildUrlSchema(field);\n break;\n\n case \"number\":\n schema = buildNumberSchema(field);\n break;\n\n case \"date\":\n case \"time\":\n case \"datetime\":\n schema = buildDateSchema(field);\n break;\n\n case \"select\":\n case \"radio\":\n case \"country\":\n case \"state\":\n schema = buildSelectSchema(field);\n break;\n\n case \"checkbox\":\n schema = buildCheckboxSchema(field);\n break;\n\n case \"checkbox_group\":\n schema = buildCheckboxGroupSchema(field);\n break;\n\n case \"file\":\n schema = buildFileSchema(field);\n break;\n\n default:\n schema = z.any();\n }\n\n // Make optional if not required\n if (!field.required) {\n schema = schema.optional();\n }\n\n return schema;\n}\n\nfunction buildStringSchema(field: FormField): ZodTypeAny {\n let schema = z.string();\n\n const rules = field.validation_rules;\n const customError = rules?.custom_error;\n\n if (field.required) {\n schema = schema.min(1, customError || `${field.label} is required`);\n }\n\n if (rules?.min_length) {\n schema = schema.min(\n rules.min_length,\n customError ||\n `${field.label} must be at least ${rules.min_length} characters`,\n );\n }\n\n if (rules?.max_length) {\n schema = schema.max(\n rules.max_length,\n customError ||\n `${field.label} must be at most ${rules.max_length} characters`,\n );\n }\n\n if (rules?.pattern) {\n schema = schema.regex(\n new RegExp(rules.pattern),\n customError || `${field.label} has an invalid format`,\n );\n }\n\n return schema;\n}\n\nfunction buildEmailSchema(field: FormField): ZodTypeAny {\n let schema = z.string();\n const customError = field.validation_rules?.custom_error;\n\n if (field.required) {\n schema = schema.min(1, customError || `${field.label} is required`);\n }\n\n schema = schema.email(customError || \"Please enter a valid email address\");\n\n return schema;\n}\n\nfunction buildPhoneSchema(field: FormField): ZodTypeAny {\n let schema = z.string();\n const customError = field.validation_rules?.custom_error;\n\n if (field.required) {\n schema = schema.min(1, customError || `${field.label} is required`);\n }\n\n // Basic phone validation: at least 10 digits\n schema = schema.refine(\n (val) => {\n if (!val) return true;\n const digits = val.replace(/\\D/g, \"\");\n return digits.length >= 10;\n },\n { message: customError || \"Please enter a valid phone number\" },\n );\n\n return schema;\n}\n\nfunction buildUrlSchema(field: FormField): ZodTypeAny {\n let schema = z.string();\n const customError = field.validation_rules?.custom_error;\n\n if (field.required) {\n schema = schema.min(1, customError || `${field.label} is required`);\n }\n\n schema = schema.url(customError || \"Please enter a valid URL\");\n\n return schema;\n}\n\nfunction buildNumberSchema(field: FormField): ZodTypeAny {\n let schema = z.coerce.number({\n invalid_type_error: `${field.label} must be a number`,\n });\n\n const rules = field.validation_rules;\n const customError = rules?.custom_error;\n\n if (rules?.min !== undefined) {\n schema = schema.min(\n rules.min,\n customError || `${field.label} must be at least ${rules.min}`,\n );\n }\n\n if (rules?.max !== undefined) {\n schema = schema.max(\n rules.max,\n customError || `${field.label} must be at most ${rules.max}`,\n );\n }\n\n // For optional number fields, allow empty string\n if (!field.required) {\n return z.union([schema, z.literal(\"\").transform(() => undefined)]);\n }\n\n return schema;\n}\n\nfunction buildDateSchema(field: FormField): ZodTypeAny {\n let schema = z.string();\n const customError = field.validation_rules?.custom_error;\n\n if (field.required) {\n schema = schema.min(1, customError || `${field.label} is required`);\n }\n\n // Validate date format\n schema = schema.refine(\n (val) => {\n if (!val) return true;\n const date = new Date(val);\n return !isNaN(date.getTime());\n },\n { message: customError || \"Please enter a valid date\" },\n );\n\n return schema;\n}\n\nfunction buildSelectSchema(field: FormField): ZodTypeAny {\n let schema = z.string();\n const customError = field.validation_rules?.custom_error;\n\n if (field.required) {\n schema = schema.min(1, customError || `${field.label} is required`);\n }\n\n // Validate against options if available and allow_other is false\n if (field.options?.options && !field.options.allow_other) {\n const validValues = field.options.options.map((o) => o.value);\n schema = schema.refine((val) => !val || validValues.includes(val), {\n message: customError || \"Please select a valid option\",\n });\n }\n\n return schema;\n}\n\nfunction buildCheckboxSchema(field: FormField): ZodTypeAny {\n const customError = field.validation_rules?.custom_error;\n\n if (field.required) {\n return z.literal(true, {\n errorMap: () => ({\n message: customError || `${field.label} is required`,\n }),\n });\n }\n\n return z.boolean().optional();\n}\n\nfunction buildCheckboxGroupSchema(field: FormField): ZodTypeAny {\n let schema = z.array(z.string());\n const customError = field.validation_rules?.custom_error;\n\n if (field.required) {\n schema = schema.min(1, customError || `Please select at least one option`);\n }\n\n // Validate against options if available\n if (field.options?.options && !field.options.allow_other) {\n const validValues = new Set(field.options.options.map((o) => o.value));\n schema = schema.refine((arr) => arr.every((val) => validValues.has(val)), {\n message: customError || \"Please select valid options\",\n });\n }\n\n return schema;\n}\n\nfunction buildFileSchema(field: FormField): ZodTypeAny {\n const rules = field.validation_rules;\n const customError = rules?.custom_error;\n\n let schema = z.instanceof(File).or(z.instanceof(FileList));\n\n // Validate file type\n if (rules?.allowed_types && rules.allowed_types.length > 0) {\n schema = schema.refine(\n (file) => {\n if (!file) return true;\n const files = file instanceof FileList ? Array.from(file) : [file];\n return files.every((f) =>\n rules.allowed_types!.some(\n (type) =>\n f.type === type ||\n f.name.toLowerCase().endsWith(`.${type.replace(\".\", \"\")}`),\n ),\n );\n },\n {\n message:\n customError ||\n `File must be one of: ${rules.allowed_types.join(\", \")}`,\n },\n );\n }\n\n // Validate file size\n if (rules?.max_file_size) {\n const maxBytes = rules.max_file_size * 1024 * 1024; // MB to bytes\n schema = schema.refine(\n (file) => {\n if (!file) return true;\n const files = file instanceof FileList ? Array.from(file) : [file];\n return files.every((f) => f.size <= maxBytes);\n },\n {\n message:\n customError || `File must be smaller than ${rules.max_file_size}MB`,\n },\n );\n }\n\n if (!field.required) {\n return schema.optional().nullable();\n }\n\n return schema;\n}\n\nfunction isNonInputField(type: FieldType): boolean {\n return [\"html\", \"divider\", \"recaptcha\"].includes(type);\n}\n","import type { FormDesign } from \"@/api/types\";\n\n/**\n * Convert FormDesign to CSS custom properties\n */\nexport function formDesignToCssVariables(\n design: FormDesign,\n): Record<string, string> {\n const vars: Record<string, string> = {};\n\n // Colors\n if (design.background_color) {\n vars[\"--lub-bg-color\"] = design.background_color;\n }\n if (design.text_color) {\n vars[\"--lub-text-color\"] = design.text_color;\n }\n if (design.primary_color) {\n vars[\"--lub-primary-color\"] = design.primary_color;\n }\n if (design.border_color) {\n vars[\"--lub-border-color\"] = design.border_color;\n }\n\n // Typography\n if (design.font_family) {\n vars[\"--lub-font-family\"] = design.font_family;\n }\n if (design.font_size) {\n vars[\"--lub-font-size\"] = design.font_size;\n }\n\n // Spacing\n if (design.padding) {\n vars[\"--lub-padding\"] = design.padding;\n }\n if (design.field_spacing) {\n vars[\"--lub-field-spacing\"] = design.field_spacing;\n }\n\n // Button styling\n if (design.button_style) {\n if (design.button_style.background_color) {\n vars[\"--lub-btn-bg\"] = design.button_style.background_color;\n }\n if (design.button_style.text_color) {\n vars[\"--lub-btn-text\"] = design.button_style.text_color;\n }\n if (design.button_style.border_radius) {\n vars[\"--lub-btn-radius\"] = design.button_style.border_radius;\n }\n }\n\n return vars;\n}\n\n/**\n * Apply CSS variables to an element's style\n */\nexport function applyCssVariables(design: FormDesign): React.CSSProperties {\n const vars = formDesignToCssVariables(design);\n return vars as React.CSSProperties;\n}\n","import { useState, useEffect, useCallback, type CSSProperties } from \"react\";\nimport { useFormContext } from \"react-hook-form\";\nimport type {\n PublicFormResponse,\n FormDesign,\n SubmitFormResponse,\n ApiError,\n} from \"@/api/types\";\nimport { LubFormsClient } from \"@/api/client\";\nimport { LubFormProvider } from \"./FormProvider\";\nimport { FormRenderer } from \"./FormRenderer\";\nimport { StepManager, StepNavigation } from \"./StepManager\";\nimport { buildFormSchema } from \"@/validation/schema-builder\";\nimport { applyCssVariables } from \"@/utils/css-variables\";\nimport { cn } from \"@/utils/cn\";\n\n// Public component props\nexport interface LubFormProps {\n formId: string;\n baseUrl?: string;\n\n // Callbacks\n onSuccess?: (data: SubmitFormResponse) => void;\n onError?: (error: ApiError) => void;\n onValidationError?: (errors: Record<string, string>) => void;\n onStepChange?: (step: number, total: number) => void;\n\n // Styling\n className?: string;\n style?: CSSProperties;\n designOverrides?: Partial<FormDesign>;\n}\n\ntype FormState =\n | { status: \"loading\" }\n | { status: \"error\"; error: string }\n | { status: \"ready\"; form: PublicFormResponse }\n | {\n status: \"success\";\n form: PublicFormResponse;\n response: SubmitFormResponse;\n };\n\nexport function LubForm({\n formId,\n baseUrl = \"\",\n onSuccess,\n onError,\n onValidationError,\n onStepChange,\n className,\n style,\n designOverrides,\n}: LubFormProps) {\n const [state, setState] = useState<FormState>({ status: \"loading\" });\n const [currentStep, setCurrentStep] = useState(0);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n // Fetch form on mount\n useEffect(() => {\n const client = new LubFormsClient(baseUrl);\n\n client\n .getForm(formId)\n .then((form) => {\n setState({ status: \"ready\", form });\n })\n .catch((error: ApiError) => {\n setState({ status: \"error\", error: error.error });\n onError?.(error);\n });\n }, [formId, baseUrl, onError]);\n\n // Handle step change\n const handleStepChange = useCallback(\n (step: number) => {\n setCurrentStep(step);\n if (state.status === \"ready\") {\n const totalSteps = state.form.is_multi_step\n ? (state.form.steps?.length ?? 1)\n : 1;\n onStepChange?.(step, totalSteps);\n }\n },\n [state, onStepChange],\n );\n\n // Render based on state\n if (state.status === \"loading\") {\n return <FormSkeleton className={className} style={style} />;\n }\n\n if (state.status === \"error\") {\n return (\n <div className={cn(\"lub-form lub-form--error\", className)} style={style}>\n <div className=\"lub-form__error-container\">\n <p className=\"lub-form__error-message\">{state.error}</p>\n </div>\n </div>\n );\n }\n\n if (state.status === \"success\") {\n return (\n <SuccessMessage\n message={state.form.settings.success_message}\n className={className}\n style={style}\n design={mergeDesign(state.form.design, designOverrides)}\n />\n );\n }\n\n const { form } = state;\n const totalSteps = form.is_multi_step ? (form.steps?.length ?? 1) : 1;\n const mergedDesign = mergeDesign(form.design, designOverrides);\n const cssVars = applyCssVariables(mergedDesign);\n\n // Build validation schema\n const schema = buildFormSchema(form.fields);\n\n // Build default values\n const defaultValues = buildDefaultValues(form);\n\n return (\n <div className={cn(\"lub-form\", className)} style={{ ...cssVars, ...style }}>\n <LubFormProvider\n form={form}\n schema={schema}\n defaultValues={defaultValues}\n currentStep={currentStep}\n totalSteps={totalSteps}\n isSubmitting={isSubmitting}\n isSuccess={false}\n error={null}\n onStepChange={handleStepChange}\n >\n <FormContent\n form={form}\n currentStep={currentStep}\n totalSteps={totalSteps}\n isSubmitting={isSubmitting}\n baseUrl={baseUrl}\n onSubmitStart={() => setIsSubmitting(true)}\n onSubmitEnd={() => setIsSubmitting(false)}\n onSuccess={(response) => {\n setState({ status: \"success\", form, response });\n onSuccess?.(response);\n }}\n onError={onError}\n onValidationError={onValidationError}\n onStepChange={handleStepChange}\n />\n </LubFormProvider>\n </div>\n );\n}\n\n// Internal form content component (needs form context)\ninterface FormContentProps {\n form: PublicFormResponse;\n currentStep: number;\n totalSteps: number;\n isSubmitting: boolean;\n baseUrl: string;\n onSubmitStart: () => void;\n onSubmitEnd: () => void;\n onSuccess: (response: SubmitFormResponse) => void;\n onError?: (error: ApiError) => void;\n onValidationError?: (errors: Record<string, string>) => void;\n onStepChange: (step: number) => void;\n}\n\nfunction FormContent({\n form,\n currentStep,\n totalSteps,\n isSubmitting,\n baseUrl,\n onSubmitStart,\n onSubmitEnd,\n onSuccess,\n onError,\n onValidationError,\n onStepChange,\n}: FormContentProps) {\n const { handleSubmit, trigger, formState } = useFormContext();\n const isLastStep = currentStep >= totalSteps - 1;\n\n // Get fields for current step\n const currentFields =\n form.is_multi_step && form.steps\n ? form.fields.filter((f) =>\n form.steps![currentStep]?.field_ids.includes(f.id),\n )\n : form.fields;\n\n // Validate current step before proceeding\n const validateCurrentStep = async (): Promise<boolean> => {\n const fieldNames = currentFields\n .filter((f) => f.is_active)\n .map((f) => f.name);\n const result = await trigger(fieldNames);\n return result;\n };\n\n // Handle next step\n const handleNextStep = async () => {\n const isValid = await validateCurrentStep();\n if (isValid) {\n onStepChange(currentStep + 1);\n } else if (onValidationError) {\n const errors: Record<string, string> = {};\n for (const [key, value] of Object.entries(formState.errors)) {\n if (value?.message) {\n errors[key] = value.message as string;\n }\n }\n onValidationError(errors);\n }\n };\n\n // Handle form submission\n const onSubmit = async (data: Record<string, unknown>) => {\n onSubmitStart();\n\n try {\n const client = new LubFormsClient(baseUrl);\n const response = await client.submitForm(form.id, {\n data,\n referrer: typeof window !== \"undefined\" ? window.location.href : \"\",\n utm_parameters: getUTMParameters(),\n });\n onSuccess(response);\n } catch (error) {\n onError?.(error as ApiError);\n } finally {\n onSubmitEnd();\n }\n };\n\n return (\n <form\n className=\"lub-form__form\"\n onSubmit={handleSubmit(onSubmit)}\n noValidate\n >\n {/* Header */}\n {(form.name || form.description) && (\n <div className=\"lub-form__header\">\n {form.name && <h2 className=\"lub-form__title\">{form.name}</h2>}\n {form.description && (\n <p className=\"lub-form__description\">{form.description}</p>\n )}\n </div>\n )}\n\n {/* Step indicator */}\n {form.is_multi_step && form.steps && (\n <StepManager\n steps={form.steps}\n currentStep={currentStep}\n allowStepNavigation={false}\n />\n )}\n\n {/* Fields */}\n <FormRenderer fields={currentFields} layout={form.design.layout} />\n\n {/* Consent checkbox */}\n {form.settings.show_consent_checkbox && isLastStep && (\n <ConsentCheckbox text={form.settings.consent_text} />\n )}\n\n {/* Navigation / Submit */}\n {form.is_multi_step && totalSteps > 1 ? (\n <StepNavigation\n currentStep={currentStep}\n totalSteps={totalSteps}\n onNext={handleNextStep}\n onPrev={() => onStepChange(currentStep - 1)}\n isLastStep={isLastStep}\n isSubmitting={isSubmitting}\n submitButtonText={form.settings.submit_button_text || \"Submit\"}\n />\n ) : (\n <div className=\"lub-form__actions\">\n <button\n type=\"submit\"\n className=\"lub-form__button lub-form__button--primary\"\n disabled={isSubmitting}\n >\n {isSubmitting ? (\n <span className=\"lub-form__button-loading\">\n <LoadingSpinner />\n Submitting...\n </span>\n ) : (\n form.settings.submit_button_text || \"Submit\"\n )}\n </button>\n </div>\n )}\n </form>\n );\n}\n\n// Consent checkbox component\nfunction ConsentCheckbox({ text }: { text?: string }) {\n const { register, formState } = useFormContext();\n const error = formState.errors._consent;\n\n return (\n <div className=\"lub-form__consent\">\n <label className=\"lub-form__consent-label\">\n <input\n type=\"checkbox\"\n className=\"lub-form__consent-checkbox\"\n {...register(\"_consent\", {\n required: \"You must agree to continue\",\n })}\n />\n <span\n className=\"lub-form__consent-text\"\n dangerouslySetInnerHTML={{\n __html: text || \"I agree to the terms and conditions\",\n }}\n />\n </label>\n {error && (\n <p className=\"lub-form__error\" role=\"alert\">\n {error.message as string}\n </p>\n )}\n </div>\n );\n}\n\n// Loading skeleton\nfunction FormSkeleton({\n className,\n style,\n}: {\n className?: string;\n style?: CSSProperties;\n}) {\n return (\n <div className={cn(\"lub-form lub-form--loading\", className)} style={style}>\n <div className=\"lub-form__skeleton\">\n <div className=\"lub-form__skeleton-title\" />\n <div className=\"lub-form__skeleton-field\" />\n <div className=\"lub-form__skeleton-field\" />\n <div className=\"lub-form__skeleton-field lub-form__skeleton-field--short\" />\n <div className=\"lub-form__skeleton-button\" />\n </div>\n </div>\n );\n}\n\n// Success message\nfunction SuccessMessage({\n message,\n className,\n style,\n design,\n}: {\n message: string;\n className?: string;\n style?: CSSProperties;\n design: FormDesign;\n}) {\n const cssVars = applyCssVariables(design);\n\n return (\n <div\n className={cn(\"lub-form lub-form--success\", className)}\n style={{ ...cssVars, ...style }}\n >\n <div className=\"lub-form__success\">\n <SuccessIcon />\n <p className=\"lub-form__success-message\">{message}</p>\n </div>\n </div>\n );\n}\n\nfunction SuccessIcon() {\n return (\n <svg\n className=\"lub-form__success-icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\n <polyline points=\"22,4 12,14.01 9,11.01\" />\n </svg>\n );\n}\n\nfunction LoadingSpinner() {\n return (\n <svg className=\"lub-form__spinner\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle\n className=\"lub-form__spinner-track\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n />\n <path\n className=\"lub-form__spinner-head\"\n d=\"M12 2a10 10 0 0 1 10 10\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n\n// Helper functions\nfunction mergeDesign(\n base: FormDesign,\n overrides?: Partial<FormDesign>,\n): FormDesign {\n if (!overrides) return base;\n return { ...base, ...overrides };\n}\n\nfunction buildDefaultValues(form: PublicFormResponse): Record<string, unknown> {\n const defaults: Record<string, unknown> = {};\n\n for (const field of form.fields) {\n if (field.default_value) {\n defaults[field.name] = field.default_value;\n }\n\n // Handle pre-selected options\n if (field.options?.options) {\n const selected = field.options.options.find((o) => o.selected);\n if (selected) {\n defaults[field.name] = selected.value;\n }\n }\n }\n\n return defaults;\n}\n\nfunction getUTMParameters() {\n if (typeof window === \"undefined\") return undefined;\n\n const params = new URLSearchParams(window.location.search);\n const utm: Record<string, string> = {};\n\n const utmParams = [\n \"utm_source\",\n \"utm_medium\",\n \"utm_campaign\",\n \"utm_term\",\n \"utm_content\",\n ];\n for (const param of utmParams) {\n const value = params.get(param);\n if (value) {\n utm[param.replace(\"utm_\", \"\")] = value;\n }\n }\n\n return Object.keys(utm).length > 0 ? utm : undefined;\n}\n","import type { Condition, FormField, Operator } from \"@/api/types\";\n\n/**\n * Evaluate if a field should be visible based on its conditional logic\n */\nexport function evaluateFieldVisibility(\n field: FormField,\n formValues: Record<string, unknown>,\n): boolean {\n const logic = field.conditional_logic;\n if (!logic) return true;\n\n // Check show_if condition\n if (logic.show_if) {\n return evaluateCondition(logic.show_if, formValues);\n }\n\n // Check hide_if condition\n if (logic.hide_if) {\n return !evaluateCondition(logic.hide_if, formValues);\n }\n\n return true;\n}\n\n/**\n * Evaluate if a field should be required based on its conditional logic\n */\nexport function evaluateFieldRequired(\n field: FormField,\n formValues: Record<string, unknown>,\n): boolean {\n const logic = field.conditional_logic;\n\n // Start with base required state\n let isRequired = field.required;\n\n // Check required_if condition\n if (logic?.required_if) {\n const conditionMet = evaluateCondition(logic.required_if, formValues);\n isRequired = isRequired || conditionMet;\n }\n\n return isRequired;\n}\n\n/**\n * Evaluate a condition against form values\n */\nexport function evaluateCondition(\n condition: Condition,\n formValues: Record<string, unknown>,\n): boolean {\n const fieldValue = formValues[condition.field_name];\n let result = compareValues(fieldValue, condition.operator, condition.value);\n\n // Evaluate AND conditions\n if (condition.and && condition.and.length > 0) {\n for (const andCond of condition.and) {\n if (!evaluateCondition(andCond, formValues)) {\n return false;\n }\n }\n }\n\n // Evaluate OR conditions - at least one must be true\n if (condition.or && condition.or.length > 0) {\n let orResult = false;\n for (const orCond of condition.or) {\n if (evaluateCondition(orCond, formValues)) {\n orResult = true;\n break;\n }\n }\n // For OR conditions to pass, main condition AND at least one OR must be true\n result = result && orResult;\n }\n\n return result;\n}\n\n/**\n * Compare field value against condition value using the specified operator\n */\nfunction compareValues(\n fieldValue: unknown,\n operator: Operator,\n compareValue: unknown,\n): boolean {\n switch (operator) {\n case \"equals\":\n return normalizeValue(fieldValue) === normalizeValue(compareValue);\n\n case \"not_equals\":\n return normalizeValue(fieldValue) !== normalizeValue(compareValue);\n\n case \"contains\":\n return String(fieldValue ?? \"\")\n .toLowerCase()\n .includes(String(compareValue).toLowerCase());\n\n case \"not_contains\":\n return !String(fieldValue ?? \"\")\n .toLowerCase()\n .includes(String(compareValue).toLowerCase());\n\n case \"greater_than\":\n return Number(fieldValue) > Number(compareValue);\n\n case \"less_than\":\n return Number(fieldValue) < Number(compareValue);\n\n case \"is_empty\":\n return isEmpty(fieldValue);\n\n case \"is_not_empty\":\n return !isEmpty(fieldValue);\n\n default:\n return true;\n }\n}\n\n/**\n * Normalize value for comparison\n */\nfunction normalizeValue(value: unknown): string {\n if (value === null || value === undefined) return \"\";\n if (Array.isArray(value)) return value.sort().join(\",\");\n return String(value).toLowerCase().trim();\n}\n\n/**\n * Check if value is empty\n */\nfunction isEmpty(value: unknown): boolean {\n if (value === null || value === undefined) return true;\n if (typeof value === \"string\") return value.trim() === \"\";\n if (Array.isArray(value)) return value.length === 0;\n if (typeof value === \"object\") return Object.keys(value).length === 0;\n return false;\n}\n\n/**\n * Get all fields that should be visible based on conditional logic\n */\nexport function getVisibleFields(\n fields: FormField[],\n formValues: Record<string, unknown>,\n): FormField[] {\n return fields.filter((field) => evaluateFieldVisibility(field, formValues));\n}\n\n/**\n * Get required field names based on conditional logic\n */\nexport function getRequiredFieldNames(\n fields: FormField[],\n formValues: Record<string, unknown>,\n): Set<string> {\n const required = new Set<string>();\n\n for (const field of fields) {\n if (evaluateFieldRequired(field, formValues)) {\n required.add(field.name);\n }\n }\n\n return required;\n}\n","import { useState, useCallback } from \"react\";\nimport type {\n PublicFormResponse,\n SubmitFormRequest,\n SubmitFormResponse,\n ApiError,\n} from \"@/api/types\";\nimport { LubFormsClient } from \"@/api/client\";\n\ninterface UseFormApiOptions {\n baseUrl: string;\n formId: string;\n}\n\ninterface UseFormApiReturn {\n form: PublicFormResponse | null;\n isLoading: boolean;\n isSubmitting: boolean;\n error: ApiError | null;\n submitResponse: SubmitFormResponse | null;\n fetchForm: () => Promise<void>;\n submitForm: (data: Record<string, unknown>) => Promise<SubmitFormResponse>;\n reset: () => void;\n}\n\nexport function useFormApi({\n baseUrl,\n formId,\n}: UseFormApiOptions): UseFormApiReturn {\n const [form, setForm] = useState<PublicFormResponse | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [error, setError] = useState<ApiError | null>(null);\n const [submitResponse, setSubmitResponse] =\n useState<SubmitFormResponse | null>(null);\n\n const client = new LubFormsClient(baseUrl);\n\n const fetchForm = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n\n try {\n const data = await client.getForm(formId);\n setForm(data);\n } catch (err) {\n setError(err as ApiError);\n } finally {\n setIsLoading(false);\n }\n }, [formId, baseUrl]);\n\n const submitForm = useCallback(\n async (data: Record<string, unknown>): Promise<SubmitFormResponse> => {\n setIsSubmitting(true);\n setError(null);\n\n try {\n const request: SubmitFormRequest = {\n data,\n referrer: typeof window !== \"undefined\" ? window.location.href : \"\",\n utm_parameters: getUTMParameters(),\n };\n\n const response = await client.submitForm(formId, request);\n setSubmitResponse(response);\n return response;\n } catch (err) {\n const apiError = err as ApiError;\n setError(apiError);\n throw apiError;\n } finally {\n setIsSubmitting(false);\n }\n },\n [formId, baseUrl],\n );\n\n const reset = useCallback(() => {\n setError(null);\n setSubmitResponse(null);\n }, []);\n\n return {\n form,\n isLoading,\n isSubmitting,\n error,\n submitResponse,\n fetchForm,\n submitForm,\n reset,\n };\n}\n\nfunction getUTMParameters() {\n if (typeof window === \"undefined\") return undefined;\n\n const params = new URLSearchParams(window.location.search);\n const utm: Record<string, string> = {};\n\n const utmParams = [\n \"utm_source\",\n \"utm_medium\",\n \"utm_campaign\",\n \"utm_term\",\n \"utm_content\",\n ];\n\n for (const param of utmParams) {\n const value = params.get(param);\n if (value) {\n utm[param.replace(\"utm_\", \"\")] = value;\n }\n }\n\n return Object.keys(utm).length > 0 ? utm : undefined;\n}\n","import { useMemo } from \"react\";\nimport type { FormField } from \"@/api/types\";\nimport {\n evaluateFieldVisibility,\n evaluateFieldRequired,\n getVisibleFields,\n getRequiredFieldNames,\n} from \"@/validation/conditional\";\n\ninterface UseConditionalLogicOptions {\n fields: FormField[];\n formValues: Record<string, unknown>;\n}\n\ninterface UseConditionalLogicReturn {\n visibleFields: FormField[];\n requiredFieldNames: Set<string>;\n isFieldVisible: (fieldName: string) => boolean;\n isFieldRequired: (fieldName: string) => boolean;\n}\n\nexport function useConditionalLogic({\n fields,\n formValues,\n}: UseConditionalLogicOptions): UseConditionalLogicReturn {\n const visibleFields = useMemo(\n () => getVisibleFields(fields, formValues),\n [fields, formValues],\n );\n\n const requiredFieldNames = useMemo(\n () => getRequiredFieldNames(fields, formValues),\n [fields, formValues],\n );\n\n const fieldMap = useMemo(\n () => new Map(fields.map((f) => [f.name, f])),\n [fields],\n );\n\n const isFieldVisible = (fieldName: string): boolean => {\n const field = fieldMap.get(fieldName);\n if (!field) return false;\n return evaluateFieldVisibility(field, formValues);\n };\n\n const isFieldRequired = (fieldName: string): boolean => {\n const field = fieldMap.get(fieldName);\n if (!field) return false;\n return evaluateFieldRequired(field, formValues);\n };\n\n return {\n visibleFields,\n requiredFieldNames,\n isFieldVisible,\n isFieldRequired,\n };\n}\n","import { useState, useCallback, useMemo } from \"react\";\nimport type { FormStep, FormField } from \"@/api/types\";\n\ninterface UseMultiStepOptions {\n steps: FormStep[];\n fields: FormField[];\n onStepChange?: (step: number, total: number) => void;\n}\n\ninterface UseMultiStepReturn {\n currentStep: number;\n totalSteps: number;\n isFirstStep: boolean;\n isLastStep: boolean;\n currentStepData: FormStep | null;\n currentStepFields: FormField[];\n progress: number;\n goToStep: (step: number) => void;\n nextStep: () => void;\n prevStep: () => void;\n reset: () => void;\n}\n\nexport function useMultiStep({\n steps,\n fields,\n onStepChange,\n}: UseMultiStepOptions): UseMultiStepReturn {\n const [currentStep, setCurrentStep] = useState(0);\n\n const totalSteps = steps.length || 1;\n const isFirstStep = currentStep === 0;\n const isLastStep = currentStep >= totalSteps - 1;\n\n const currentStepData = useMemo(\n () => steps[currentStep] ?? null,\n [steps, currentStep],\n );\n\n const currentStepFields = useMemo(() => {\n if (!currentStepData) {\n return fields.filter((f) => f.is_active);\n }\n\n const stepFieldIds = new Set(currentStepData.field_ids);\n return fields.filter((f) => f.is_active && stepFieldIds.has(f.id));\n }, [currentStepData, fields]);\n\n const progress = useMemo(() => {\n if (totalSteps <= 1) return 100;\n return Math.round(((currentStep + 1) / totalSteps) * 100);\n }, [currentStep, totalSteps]);\n\n const goToStep = useCallback(\n (step: number) => {\n if (step >= 0 && step < totalSteps) {\n setCurrentStep(step);\n onStepChange?.(step, totalSteps);\n }\n },\n [totalSteps, onStepChange],\n );\n\n const nextStep = useCallback(() => {\n if (!isLastStep) {\n const newStep = currentStep + 1;\n setCurrentStep(newStep);\n onStepChange?.(newStep, totalSteps);\n }\n }, [currentStep, isLastStep, totalSteps, onStepChange]);\n\n const prevStep = useCallback(() => {\n if (!isFirstStep) {\n const newStep = currentStep - 1;\n setCurrentStep(newStep);\n onStepChange?.(newStep, totalSteps);\n }\n }, [currentStep, isFirstStep, totalSteps, onStepChange]);\n\n const reset = useCallback(() => {\n setCurrentStep(0);\n onStepChange?.(0, totalSteps);\n }, [totalSteps, onStepChange]);\n\n return {\n currentStep,\n totalSteps,\n isFirstStep,\n isLastStep,\n currentStepData,\n currentStepFields,\n progress,\n goToStep,\n nextStep,\n prevStep,\n reset,\n };\n}\n","import { useMemo, type CSSProperties } from \"react\";\nimport type { FormDesign } from \"@/api/types\";\nimport { formDesignToCssVariables } from \"@/utils/css-variables\";\n\ninterface UseFormDesignOptions {\n design: FormDesign;\n overrides?: Partial<FormDesign>;\n}\n\ninterface UseFormDesignReturn {\n mergedDesign: FormDesign;\n cssVariables: Record<string, string>;\n style: CSSProperties;\n theme: string;\n}\n\nexport function useFormDesign({\n design,\n overrides,\n}: UseFormDesignOptions): UseFormDesignReturn {\n const mergedDesign = useMemo(\n (): FormDesign => ({\n ...design,\n ...overrides,\n button_style: {\n ...design.button_style,\n ...overrides?.button_style,\n },\n }),\n [design, overrides],\n );\n\n const cssVariables = useMemo(\n () => formDesignToCssVariables(mergedDesign),\n [mergedDesign],\n );\n\n const style = useMemo(() => cssVariables as CSSProperties, [cssVariables]);\n\n const theme = mergedDesign.theme || \"light\";\n\n return {\n mergedDesign,\n cssVariables,\n style,\n theme,\n };\n}\n"],"names":["ReactSharedInternals","require$$0","reactCompilerRuntime_production","size","reactCompilerRuntime_development","dispatcher","compilerRuntimeModule","require$$1","LubFormsClient","baseUrl","constructor","replace","getForm","formId","url","response","fetch","method","headers","Accept","ok","parseError","json","submitForm","data","body","JSON","stringify","confirmOptIn","token","error","message","code","details","status","statusText","defaultClient","setDefaultClient","client","getDefaultClient","createClient","LubFormContext","createContext","useLubFormContext","context","useContext","Error","LubFormProvider","form","schema","defaultValues","currentStep","totalSteps","isSubmitting","isSuccess","onStepChange","children","methods","useForm","resolver","zodResolver","mode","reValidateMode","isMultiStep","is_multi_step","steps","length","goToStep","step","nextStep","prevStep","getFieldsForCurrentStep","fields","filter","f","is_active","stepFieldIds","Set","field_ids","has","id","getVisibleFields","formValues","field","conditional_logic","evaluateFieldVisibility","contextValue","useMemo","jsx","RHFFormProvider","logic","show_if","evaluateCondition","hide_if","condition","fieldValue","field_name","result","compareValues","operator","value","and","andCond","or","orResult","orCond","compareValue","String","includes","Number","cn","classes","Boolean","join","FieldWrapper","t0","$","_c","hideLabel","t1","undefined","formState","useFormContext","errors","name","hasError","t2","t3","t4","label","required","t5","help_text","t6","t7","jsxs","TextField","register","field_type","getInputType","inputType","placeholder","t8","t9","fieldType","TextareaField","NumberField","rules","validation_rules","min","max","t10","SelectField","options","map","_temp","allow_other","other_label","t11","t12","option","RadioField","CheckboxField","t13","t14","CheckboxGroupField","DateField","TimeField","DateTimeField","FileField","allowed_types","acceptTypes","max_file_size","HiddenField","default_value","countries","usStates","countryCode","caProvinces","getStatesForCountry","getCountryByCode","find","c","getStateByCode","stateCode","s","CountryField","Symbol","for","country","StateField","countryFieldName","control","defaultValue","countryValue","useWatch","T0","bb0","states","t15","t16","t17","t18","t19","state","HtmlField","__html","DividerField","RecaptchaField","setValue","setError","clearErrors","containerRef","useRef","widgetIdRef","scriptLoadedRef","siteKey","settings","recaptcha_site_key","handleV2Callback","type","handleExpired","current","document","querySelector","script","createElement","src","async","defer","onload","head","appendChild","useEffect","renderWidget","window","grecaptcha","ready","render","sitekey","callback","attemptRender","setTimeout","reset","fieldRegistry","text","email","phone","textarea","number","select","radio","checkbox","checkbox_group","date","time","datetime","file","hidden","html","divider","recaptcha","getFieldComponent","registerFieldComponent","component","FormRenderer","layout","watch","visibleFields","fieldGroups","groupFieldsForTwoColumn","_temp4","group","groupIndex","_temp3","_temp2","FieldRenderer","f_0","FieldComponent","console","warn","css_class","width","widthClass","getWidthClass","groups","currentRow","currentRowWidth","fieldWidth","getFieldWidthValue","push","StepManager","onStepClick","allowStepNavigation","index","isActive","isCompleted","isClickable","CheckIcon","description","StepNavigation","onNext","onPrev","isNextDisabled","isPrevDisabled","isLastStep","submitButtonText","nextButtonText","prevButtonText","showPrev","showNext","LoadingSpinner","util","_","assertIs","_arg","assertNever","_x","items","obj","item","validKeys","k","filtered","e","object","keys","key","arr","checker","val","joinValues","array","separator","objectUtil","first","second","ZodParsedType","getParsedType","ZodIssueCode","ZodError","issues","sub","subs","actualProto","_mapper","mapper","issue","fieldErrors","processError","curr","i","el","formErrors","firstEl","errorMap","_ctx","overrideErrorMap","defaultErrorMap","getErrorMap","makeIssue","params","path","errorMaps","issueData","fullPath","fullIssue","errorMessage","maps","m","addIssueToContext","ctx","overrideMap","x","ParseStatus","results","arrayValue","INVALID","pairs","syncPairs","pair","finalObject","DIRTY","OK","isAborted","isDirty","isValid","isAsync","errorUtil","ParseInputLazyPath","parent","handleResult","processCreateParams","invalid_type_error","required_error","iss","ZodType","input","err","maybeAsyncResult","check","getIssueProperties","refinementData","refinement","ZodEffects","ZodFirstPartyTypeKind","def","ZodOptional","ZodNullable","ZodArray","ZodPromise","ZodUnion","incoming","ZodIntersection","transform","defaultValueFunc","ZodDefault","ZodBranded","catchValueFunc","ZodCatch","This","target","ZodPipeline","ZodReadonly","cuidRegex","cuid2Regex","ulidRegex","uuidRegex","nanoidRegex","jwtRegex","durationRegex","emailRegex","_emojiRegex","emojiRegex","ipv4Regex","ipv4CidrRegex","ipv6Regex","ipv6CidrRegex","base64Regex","base64urlRegex","dateRegexSource","dateRegex","timeRegexSource","args","secondsRegexSource","secondsQuantifier","timeRegex","datetimeRegex","regex","opts","isValidIP","ip","version","isValidJWT","jwt","alg","header","base64","decoded","isValidCidr","ZodString","tooBig","tooSmall","validation","minLength","maxLength","len","ch","floatSafeRemainder","valDecCount","stepDecCount","decCount","valInt","stepInt","ZodNumber","kind","inclusive","ZodBigInt","ZodBoolean","ZodDate","minDate","maxDate","ZodSymbol","ZodUndefined","ZodNull","ZodAny","ZodUnknown","ZodNever","ZodVoid","deepPartialify","ZodObject","newShape","fieldSchema","ZodTuple","shape","shapeKeys","extraKeys","keyValidator","unknownKeys","catchall","defaultError","augmentation","merging","mask","newField","createZodEnum","handleResults","unionErrors","childCtx","dirty","types","mergeValues","a","b","aType","bType","bKeys","sharedKeys","newObj","sharedValue","newArray","itemA","itemB","handleParsed","parsedLeft","parsedRight","merged","left","right","itemIndex","rest","schemas","ZodMap","keyType","valueType","finalMap","ZodSet","finalizeSet","elements","parsedSet","element","minSize","maxSize","ZodLazy","getter","ZodLiteral","values","ZodEnum","expectedValues","enumValues","newDef","opt","ZodNativeEnum","nativeEnumValues","promisified","effect","checkCtx","arg","processed","executeRefinement","acc","inner","base","preprocess","newCtx","ZodNaN","inResult","freeze","cleanParams","p","custom","_params","fatal","r","_fatal","instanceOfType","cls","stringType","booleanType","anyType","arrayType","objectType","unionType","literalType","coerce","buildFormSchema","isNonInputField","buildFieldSchema","z","buildStringSchema","buildEmailSchema","buildPhoneSchema","buildUrlSchema","buildNumberSchema","buildDateSchema","buildSelectSchema","buildCheckboxSchema","buildCheckboxGroupSchema","buildFileSchema","any","optional","string","customError","custom_error","min_length","max_length","pattern","RegExp","refine","Date","isNaN","getTime","validValues","o","boolean","every","File","FileList","Array","from","some","toLowerCase","endsWith","maxBytes","nullable","formDesignToCssVariables","design","vars","background_color","text_color","primary_color","border_color","font_family","font_size","padding","field_spacing","button_style","border_radius","applyCssVariables","LubForm","onSuccess","onError","onValidationError","className","style","designOverrides","setState","useState","setCurrentStep","setIsSubmitting","then","catch","handleStepChange","FormSkeleton","success_message","mergeDesign","SuccessMessage","form_0","totalSteps_0","mergedDesign","cssVars","buildDefaultValues","FormContent","onSubmitStart","onSubmitEnd","handleSubmit","trigger","currentFields","validateCurrentStep","fieldNames","handleNextStep","Object","entries","referrer","location","href","utm_parameters","getUTMParameters","show_consent_checkbox","ConsentCheckbox","consent_text","submit_button_text","_consent","SuccessIcon","overrides","defaults","selected","URLSearchParams","search","utm","utmParams","param","get","evaluateFieldRequired","isRequired","required_if","conditionMet","normalizeValue","isEmpty","isArray","sort","trim","getRequiredFieldNames","add","useFormApi","setForm","isLoading","setIsLoading","submitResponse","setSubmitResponse","fetchForm","useCallback","request","apiError","useConditionalLogic","requiredFieldNames","Map","fieldMap","fieldName","isFieldVisible","fieldName_0","field_0","isFieldRequired","useMultiStep","isFirstStep","currentStepData","currentStepFields","bb1","Math","round","progress","newStep","newStep_0","useFormDesign","cssVariables","theme"],"mappings":"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","x_google_ignoreList":[0,1,2,28,29,30,31,32,33,34]}
|