@radicalbit/formbit 3.0.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/helpers/obj-leaves.ts","../src/helpers/constants.ts","../src/types/helpers.ts","../src/validate-sync-all.ts","../src/use-execute-callbacks.ts","../src/use-formbit.ts","../src/formbit-context.tsx"],"sourcesContent":["type ObjectLeaves = (obj: unknown, acc?: string[]) => string[]\n\nfunction isObject(val: unknown): val is Record<string, unknown> {\n return val != null && typeof val === 'object' && Array.isArray(val) === false\n}\n\nconst objLeaves: ObjectLeaves = (obj, acc = []) => {\n const fn = (o: unknown, s?: string) => {\n if (Array.isArray(o)) {\n return Object.keys(o).forEach((k) => {\n const path = s ? `${s}[${k}]` : k\n\n const isLeaf = fn(o[+k], path) === false\n if (isLeaf) {\n acc.push(path)\n }\n })\n }\n\n if (isObject(o)) {\n return Object.keys(o).forEach((k) => {\n const path = s ? `${s}.${k}` : k\n\n const isLeaf = fn(o[k], path) === false\n if (isLeaf) {\n acc.push(path)\n }\n })\n }\n\n return false\n }\n\n fn(obj)\n return acc\n}\n\nexport default objLeaves\n","export const TEST_ERROR_MESSAGES = {\n MIN: 'must be greater than or equal',\n REQUIRED: 'is a required field'\n}\n\nexport enum ACTIONS {\n write = 'write',\n remove = 'remove'\n}\n\nexport const MISSING_CONTEXT_ERROR =\n 'No FormbitContext.Provider found, useFormbitContext can only be called inside proper context'\n","import { ValidationError } from 'yup'\n\nexport const isValidationError = (error: unknown): error is ValidationError => {\n if (error && typeof error === 'object' && 'message' in error && 'path' in error && 'inner' in error) {\n const { path, message, inner } = error\n\n return (typeof path === 'string' || path === undefined) &&\n (typeof message === 'string' || message === undefined) &&\n Array.isArray(inner)\n }\n\n return false\n}\n","import { isEmpty } from 'lodash'\nimport { FormbitValues, ValidateOptions, ValidationFormbitError, ValidationSchema } from './types'\nimport { isValidationError } from './types/helpers'\n\n/* We implement the validateSyncAll because yup.pick won't work with\n * schema with nested values: https://github.com/jquense/yup/issues/1269 */\nexport const validateSyncAll = <T extends FormbitValues> (\n paths:string[],\n schema:ValidationSchema<T>,\n form: FormbitValues,\n options: ValidateOptions = {}\n): ValidationFormbitError[] => {\n let errors: ValidationFormbitError[] = []\n\n if (isEmpty(paths)) {\n return errors\n }\n\n for (const pathToValidate of paths) {\n try {\n schema.validateSyncAt(pathToValidate, form, options)\n } catch (e) {\n if (isValidationError(e)) {\n const { message, path } = e\n\n errors = errors.concat({ message, path })\n }\n\n if (options?.abortEarly) {\n break\n }\n }\n }\n\n return errors\n}\n","import { useCallback, useEffect, useRef } from 'react'\nimport { FormState, GenericCallback, FormbitValues, SetError } from './types'\nimport { isEmpty } from 'lodash'\n\n/**\n * useExecuteCallbacks\n *\n * This hook is meant to give a simple way to make sure that callbacks are called only once,\n * even if they are called inside React hooks like useEffect or setState.\n *\n *\n */\nexport default <T extends FormbitValues>(writer: FormState<T>, setError: SetError) => {\n const callbacksStore = useRef<Record<string, GenericCallback<Partial<T>> | undefined>>({})\n\n useEffect(() => {\n if (isEmpty(callbacksStore.current)) {\n return\n }\n\n Object.entries(callbacksStore.current).forEach(([, cb]) => {\n if (cb) {\n cb(writer, setError)\n }\n })\n\n callbacksStore.current = {}\n }, [setError, writer])\n\n /**\n * executeCallbacks\n * @param cb Callback that needs to be executed.\n *\n */\n return useCallback((uuid: string, cb?: GenericCallback<Partial<T>>) => {\n if (cb) {\n callbacksStore.current = { ...callbacksStore.current, [uuid]: cb }\n }\n }, [])\n}\n","import objLeaves from './helpers/obj-leaves'\nimport {\n useCallback, useRef, useState\n} from 'react'\nimport { ACTIONS } from './helpers/constants'\nimport {\n Check,\n FormbitObject,\n FormState,\n FormbitValues,\n LiveValidation,\n PrivateValidateForm,\n Remove,\n RemoveAll,\n SetError,\n SubmitForm,\n SuccessCallback,\n Validate,\n ValidateAll,\n ValidateForm,\n ValidationSchema,\n Write,\n WriteAll,\n WriteOrRemove\n} from './types'\nimport { isValidationError } from './types/helpers'\nimport { validateSyncAll } from './validate-sync-all'\nimport useExecuteCallbacks from './use-execute-callbacks'\nimport { cloneDeep, get, isEmpty, omit, set } from 'lodash'\nimport { v4 as uuidv4 } from 'uuid'\n\ntype UseFormbitParams<T extends FormbitValues> = {\n initialValues?: Partial<T>,\n yup: ValidationSchema<T>\n}\n\nexport default <T extends FormbitValues>({\n initialValues = {},\n yup: schema\n}: UseFormbitParams<T>): FormbitObject<T> => {\n const schemaRef = useRef<ValidationSchema<T>>(schema)\n\n const [writer, setWriter] = useState<FormState<Partial<T>>>({\n form: initialValues,\n initialValues,\n errors: {},\n liveValidation: {},\n isDirty: false\n })\n\n const initialize = useCallback((values: Partial<T>) => {\n const { __metadata } = values\n\n if (__metadata) {\n setWriter((w) => ({\n ...w,\n initialValues: values,\n form: values,\n errors: {},\n liveValidation: {},\n isDirty: false\n }))\n\n return\n }\n\n setWriter((w) => {\n const { form: { __metadata } } = w\n const newValues = { ...values, __metadata }\n\n return {\n ...w,\n initialValues: newValues,\n form: newValues,\n errors: {},\n liveValidation: {},\n isDirty: false\n }\n })\n }, [])\n\n const setSchema = useCallback((newSchema: ValidationSchema<T>) => { schemaRef.current = newSchema }, [])\n\n const setError: SetError = useCallback((path, value) => {\n setWriter((w) => {\n const errors = set(cloneDeep(w.errors), path, value)\n\n return { ...w, errors }\n })\n }, [])\n\n const executeCb = useExecuteCallbacks<Partial<T>>(writer, setError)\n\n const writeOrRemove: WriteOrRemove<T> = useCallback((\n path,\n value,\n {\n noLiveValidation = false,\n pathsToValidate = [],\n successCallback,\n errorCallback,\n options = {}\n } = {},\n action\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n const liveValidationPaths = noLiveValidation ? [] : Object.keys(w.liveValidation)\n const paths = pathsToValidate.concat(liveValidationPaths)\n\n const form = (function execute() {\n switch (action) {\n case ACTIONS.write: return set(cloneDeep(w.form), path, value)\n\n case ACTIONS.remove: return omit<Partial<T>>(cloneDeep(w.form), path)\n\n default: return cloneDeep(w.form)\n }\n }())\n\n const newWriter: FormState<Partial<T>> = { ...w, form, isDirty: true }\n\n if (paths.length === 0) {\n newUUID && executeCb(newUUID, successCallback)\n\n return newWriter\n }\n\n // Teardown errors\n const cleanErrors = paths.reduce(\n (acc, key) => set(acc, key, undefined),\n cloneDeep(newWriter.errors)\n )\n\n // VALIDATE\n const inner = validateSyncAll(paths, schemaRef.current, newWriter.form, options)\n\n if (isEmpty(inner)) {\n const neww = { ...newWriter, errors: cleanErrors }\n\n newUUID && executeCb(newUUID, successCallback)\n\n return neww\n }\n\n const errors = inner.reduce(\n (acc, { path: innerPath, message }) => innerPath ? set(acc, innerPath, message) : acc,\n cleanErrors\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path: innerPath }) => innerPath ? ({ ...acc, [innerPath]: true }) : acc,\n newWriter.liveValidation\n )\n\n const neww = { ...newWriter, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return neww\n })\n }, [executeCb])\n\n const write: Write<T> = useCallback((path, value, options) =>\n writeOrRemove(path, value, options, ACTIONS.write), [writeOrRemove])\n\n const remove: Remove<T> = useCallback((path, options) =>\n writeOrRemove(path, undefined, options, ACTIONS.remove), [writeOrRemove])\n\n const writeAll: WriteAll<T> = useCallback((\n arr,\n {\n noLiveValidation = false,\n pathsToValidate = [],\n successCallback,\n errorCallback,\n options = {}\n } = {}\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n const liveValidationPaths = noLiveValidation ? [] : Object.keys(w.liveValidation)\n const paths = pathsToValidate.concat(liveValidationPaths)\n\n const form = arr.reduce(\n (acc, [key, val]) => set(acc, key, val),\n cloneDeep(w.form)\n )\n\n const newWriter = { ...w, form, isDirty: true }\n\n if (paths.length === 0) {\n newUUID && executeCb(newUUID, successCallback)\n\n return newWriter\n }\n\n // Teardown errors\n const cleanErrors = paths.reduce(\n (acc, key) => set(acc, key, undefined),\n cloneDeep(newWriter.errors)\n )\n\n // VALIDATE ALL\n const inner = validateSyncAll(paths, schemaRef.current, newWriter.form, options)\n\n if (isEmpty(inner)) {\n const neww = { ...newWriter, errors: cleanErrors }\n\n newUUID && executeCb(newUUID, successCallback)\n\n return neww\n }\n\n const errors = inner.reduce(\n (acc, { path = '', message }) => set(acc, path, message),\n cleanErrors\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path = '' }) => ({ ...acc, [path]: true }),\n newWriter.liveValidation\n )\n\n const neww = { ...newWriter, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return neww\n })\n }, [executeCb])\n\n const removeAll: RemoveAll<T> = useCallback(\n (\n arr,\n {\n noLiveValidation = false,\n pathsToValidate = [],\n successCallback,\n errorCallback,\n options = {}\n } = {}\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n const liveValidationPaths = noLiveValidation ? [] : Object.keys(w.liveValidation)\n const paths = pathsToValidate.concat(liveValidationPaths)\n\n const form = arr.reduce(\n (acc, path) => set(acc, path, undefined),\n cloneDeep(w.form)\n )\n\n const newWriter = { ...w, form, isDirty: true }\n\n if (paths.length === 0) {\n newUUID && executeCb(newUUID, successCallback)\n return newWriter\n }\n\n const cleanErrors = paths.reduce(\n (acc, key) => set(acc, key, undefined),\n cloneDeep(newWriter.errors)\n )\n\n const inner = validateSyncAll(paths, schemaRef.current, newWriter.form, options)\n\n if (isEmpty(inner)) {\n const neww = { ...newWriter, errors: cleanErrors }\n newUUID && executeCb(newUUID, successCallback)\n return neww\n }\n\n const errors = inner.reduce(\n (acc, { path = '', message }) => set(acc, path, message),\n cleanErrors\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path = '' }) => ({ ...acc, [path]: true }),\n newWriter.liveValidation\n )\n\n const neww = { ...newWriter, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return neww\n })\n },\n [executeCb]\n )\n\n const validate: Validate<T> = useCallback((\n path,\n {\n successCallback,\n errorCallback,\n options\n } = {}\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n // Teardown errors\n const cleanErrors = set(cloneDeep(w.errors), path, undefined)\n\n // VALIDATE\n const inner = validateSyncAll([path], schemaRef.current, w.form, options)\n\n if (isEmpty(inner)) {\n const neww = { ...w, errors: cleanErrors }\n\n newUUID && executeCb(newUUID, successCallback)\n\n return neww\n }\n\n const errors = inner.reduce(\n (acc, { path: errorPath = '', message }) => set(acc, errorPath, message),\n cleanErrors\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path: errorPath = '' }) => ({ ...acc, [errorPath]: true }),\n w.liveValidation\n )\n\n const neww = { ...w, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return neww\n })\n }, [executeCb])\n\n const validateAll: ValidateAll<T> = useCallback((\n paths,\n { successCallback, errorCallback, options } = {}\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n // Teardown errors\n const cleanErrors = paths.reduce(\n (acc, path) => set(acc, path, undefined),\n cloneDeep(w.errors)\n )\n\n // VALIDATE ALL\n const inner = validateSyncAll(paths, schemaRef.current, w.form, options)\n\n if (isEmpty(inner)) {\n const neww = { ...w, errors: cleanErrors }\n\n newUUID && executeCb(newUUID, successCallback)\n\n return neww\n }\n\n const errors = inner.reduce(\n (acc, { path = '', message }) => set(acc, path, message),\n cleanErrors\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path = '' }) => ({ ...acc, [path]: true }),\n w.liveValidation\n )\n\n const neww = { ...w, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return neww\n })\n }, [executeCb])\n\n const check: Check<Partial<T>> = useCallback((\n json,\n {\n successCallback,\n errorCallback,\n options\n } = {}\n ) => {\n try {\n schemaRef.current.validateSync(json, { abortEarly: false, ...options })\n successCallback?.(json, writer, setError)\n\n return undefined\n } catch (e) {\n if (isValidationError(e)) {\n const { inner } = e\n\n errorCallback?.(json, inner, writer, setError)\n\n return inner\n }\n\n return undefined\n }\n }, [setError, writer])\n\n const privateValidateForm: PrivateValidateForm<Partial<T>> = useCallback((\n successCallback,\n errorCallback,\n { options } = {}\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n try {\n // abortEarly: false as default is to be retrocompatible\n schemaRef.current.validateSync(w.form, { abortEarly: false, ...options })\n\n newUUID && executeCb(newUUID, successCallback)\n\n return { ...w, errors: {} }\n } catch (e) {\n if (!isValidationError(e)) {\n // Checking if error is not formbit-related (e.g. a bug inside the successCallback)\n console.error(e)\n return w\n }\n\n const { inner } = e\n\n const errors = inner.reduce(\n (acc, { message, path = '' }) => set(acc, path, message),\n {}\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path = '' }) => ({ ...acc, [path]: true }),\n w.liveValidation\n )\n\n const newWriter = { ...w, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return newWriter\n }\n })\n }, [executeCb])\n\n const validateForm: ValidateForm<Partial<T>> = useCallback((successCallback, errorCallback, options = {}) =>\n privateValidateForm(\n successCallback,\n errorCallback,\n { options }\n ), [privateValidateForm])\n\n const submitForm: SubmitForm<T> =\n useCallback((successCallback, errorCallback, options = {}) => {\n const fn = () => setWriter((w) => ({ ...w, isDirty: false }))\n\n const successCallbackAndClearIsDirty: SuccessCallback<Partial<T>> = (a, b) => {\n // Success callback is called only if the form is valid so we can safely cast a as FormState<T>\n const writer = a as FormState<T>\n\n // __metadata is a field used to store metadata about the form and should not be submitted\n const { __metadata: _, ...form } = writer.form\n\n return successCallback({ ...writer, form }, b, fn)\n }\n\n return privateValidateForm(\n successCallbackAndClearIsDirty,\n errorCallback,\n { options }\n )\n }, [privateValidateForm])\n\n const resetForm = useCallback(() => {\n setWriter((w) => ({\n ...w,\n form: w.initialValues,\n errors: {},\n isDirty: false,\n liveValidation: {}\n }))\n }, [])\n\n const isFormValid = useCallback(() => {\n const { silent: _, ...e } = writer.errors\n return objLeaves(e).every((leaf) => !get(e, leaf))\n }, [writer.errors])\n\n const isFormInvalid = useCallback(() => {\n const { silent: _, ...e } = writer.errors\n return objLeaves(e).some((leaf) => get(e, leaf))\n }, [writer.errors])\n\n const error = useCallback((path: string): string | undefined => get(writer.errors, path, undefined), [writer.errors])\n\n const liveValidation = useCallback(\n (path: string): true | undefined => get(writer.liveValidation, path, undefined),\n [writer.liveValidation]\n )\n\n return {\n // State\n form: writer.form,\n errors: writer.errors,\n isDirty: writer.isDirty,\n\n // Queries\n error,\n isFormValid,\n isFormInvalid,\n liveValidation,\n\n // Mutations\n write,\n writeAll,\n remove,\n removeAll,\n initialize,\n resetForm,\n setError,\n setSchema,\n validate,\n validateAll,\n validateForm,\n submitForm,\n check\n }\n}\n","import React, { useContext, createContext, PropsWithChildren } from 'react'\nimport useFormbit from './use-formbit'\nimport * as yup from 'yup'\nimport { FormbitObject, FormbitValues, ValidationSchema } from './types'\nimport { MISSING_CONTEXT_ERROR } from './helpers/constants'\nimport { once } from 'lodash'\n\ntype Props<Values extends FormbitValues> = {\n initialValues?: Partial<Values> | {}\n schema: ValidationSchema<Values>\n} & PropsWithChildren\n\nconst createFormbitContext =\n once(<Values extends FormbitValues>() => createContext<FormbitObject<Values> | undefined>(undefined))\n\nexport default function FormbitContextProvider<Values extends FormbitValues>({\n initialValues = {},\n schema,\n children\n}: Props<Values>) {\n const FormbitContext = createFormbitContext<Values>()\n\n const value = useFormbit({ initialValues, yup: schema || yup.object() })\n\n return (\n <FormbitContext.Provider value={value}>{children}</FormbitContext.Provider>\n )\n}\n\nexport const useFormbitContext = <Values extends FormbitValues>() => {\n const context = useContext(createFormbitContext<Values>())\n\n if (!context) {\n throw new Error(MISSING_CONTEXT_ERROR)\n }\n\n return context\n}\n"],"names":["isObject","val","Array","isArray","objLeaves","obj","acc","fn","o","s","Object","keys","forEach","k","path","isLeaf","push","ACTIONS","MISSING_CONTEXT_ERROR","isValidationError","error","message","inner","undefined","validateSyncAll","paths","schema","form","options","errors","isEmpty","pathToValidate","validateSyncAt","e","concat","abortEarly","writer","setError","callbacksStore","useRef","useEffect","current","entries","cb","useCallback","uuid","initialValues","yup","schemaRef","useState","liveValidation","isDirty","setWriter","initialize","values","__metadata","w","newValues","setSchema","newSchema","value","set","cloneDeep","executeCb","useExecuteCallbacks","writeOrRemove","action","noLiveValidation","pathsToValidate","successCallback","errorCallback","newUUID","getUUID","uuidv4","liveValidationPaths","execute","write","remove","omit","newWriter","length","cleanErrors","reduce","key","neww","innerPath","writeAll","arr","removeAll","validate","errorPath","validateAll","check","json","validateSync","privateValidateForm","console","validateForm","submitForm","successCallbackAndClearIsDirty","a","b","_","resetForm","isFormValid","every","leaf","get","isFormInvalid","some","createFormbitContext","once","createContext","FormbitContextProvider","children","FormbitContext","useFormbit","React","useFormbitContext","context","useContext","Error"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/helpers/obj-leaves.ts","../src/helpers/constants.ts","../src/types/helpers.ts","../src/validate-sync-all.ts","../src/use-execute-callbacks.ts","../src/use-formbit.ts","../src/formbit-context.tsx"],"sourcesContent":["type ObjectLeaves = (obj: unknown, acc?: string[]) => string[]\n\nfunction isObject(val: unknown): val is Record<string, unknown> {\n return val != null && typeof val === 'object' && Array.isArray(val) === false\n}\n\nconst objLeaves: ObjectLeaves = (obj, acc = []) => {\n const fn = (o: unknown, s?: string) => {\n if (Array.isArray(o)) {\n return Object.keys(o).forEach((k) => {\n const path = s ? `${s}[${k}]` : k\n\n const isLeaf = fn(o[+k], path) === false\n if (isLeaf) {\n acc.push(path)\n }\n })\n }\n\n if (isObject(o)) {\n return Object.keys(o).forEach((k) => {\n const path = s ? `${s}.${k}` : k\n\n const isLeaf = fn(o[k], path) === false\n if (isLeaf) {\n acc.push(path)\n }\n })\n }\n\n return false\n }\n\n fn(obj)\n return acc\n}\n\nexport default objLeaves\n","export const TEST_ERROR_MESSAGES = {\n MIN: 'must be greater than or equal',\n REQUIRED: 'is a required field'\n}\n\nexport enum ACTIONS {\n write = 'write',\n remove = 'remove'\n}\n\nexport const MISSING_CONTEXT_ERROR =\n 'No FormbitContext.Provider found, useFormbitContext can only be called inside proper context'\n","import { ValidationError } from 'yup'\n\nexport const isValidationError = (error: unknown): error is ValidationError => {\n if (error && typeof error === 'object' && 'message' in error && 'path' in error && 'inner' in error) {\n const { path, message, inner } = error\n\n return (typeof path === 'string' || path === undefined) &&\n (typeof message === 'string' || message === undefined) &&\n Array.isArray(inner)\n }\n\n return false\n}\n","import { isEmpty } from 'lodash'\nimport { FormbitValues, ValidateOptions, ValidationFormbitError, ValidationSchema } from './types'\nimport { isValidationError } from './types/helpers'\n\n/* We implement the validateSyncAll because yup.pick won't work with\n * schema with nested values: https://github.com/jquense/yup/issues/1269 */\nexport const validateSyncAll = <T extends FormbitValues> (\n paths:string[],\n schema:ValidationSchema<T>,\n form: FormbitValues,\n options: ValidateOptions = {}\n): ValidationFormbitError[] => {\n let errors: ValidationFormbitError[] = []\n\n if (isEmpty(paths)) {\n return errors\n }\n\n for (const pathToValidate of paths) {\n try {\n schema.validateSyncAt(pathToValidate, form, options)\n } catch (e) {\n if (isValidationError(e)) {\n const { message, path } = e\n\n errors = errors.concat({ message, path })\n }\n\n if (options?.abortEarly) {\n break\n }\n }\n }\n\n return errors\n}\n","import { useCallback, useEffect, useRef } from 'react'\nimport { FormState, GenericCallback, FormbitValues, SetError } from './types'\nimport { isEmpty } from 'lodash'\n\n/**\n * useExecuteCallbacks\n *\n * This hook is meant to give a simple way to make sure that callbacks are called only once,\n * even if they are called inside React hooks like useEffect or setState.\n *\n *\n */\nexport default <T extends FormbitValues>(writer: FormState<T>, setError: SetError) => {\n const callbacksStore = useRef<Record<string, GenericCallback<Partial<T>> | undefined>>({})\n\n useEffect(() => {\n if (isEmpty(callbacksStore.current)) {\n return\n }\n\n Object.entries(callbacksStore.current).forEach(([, cb]) => {\n if (cb) {\n cb(writer, setError)\n }\n })\n\n callbacksStore.current = {}\n }, [setError, writer])\n\n /**\n * executeCallbacks\n * @param cb Callback that needs to be executed.\n *\n */\n return useCallback((uuid: string, cb?: GenericCallback<Partial<T>>) => {\n if (cb) {\n callbacksStore.current = { ...callbacksStore.current, [uuid]: cb }\n }\n }, [])\n}\n","import objLeaves from './helpers/obj-leaves'\nimport {\n useCallback, useRef, useState\n} from 'react'\nimport { ACTIONS } from './helpers/constants'\nimport {\n Check,\n FormbitObject,\n FormState,\n FormbitValues,\n LiveValidation,\n PrivateValidateForm,\n Remove,\n RemoveAll,\n SetError,\n SubmitForm,\n SuccessCallback,\n Validate,\n ValidateAll,\n ValidateForm,\n ValidationSchema,\n Write,\n WriteAll,\n WriteOrRemove\n} from './types'\nimport { isValidationError } from './types/helpers'\nimport { validateSyncAll } from './validate-sync-all'\nimport useExecuteCallbacks from './use-execute-callbacks'\nimport { cloneDeep, get, isEmpty, omit, set } from 'lodash'\nimport { v4 as uuidv4 } from 'uuid'\n\ntype UseFormbitParams<T extends FormbitValues> = {\n initialValues?: Partial<T>,\n yup: ValidationSchema<T>\n}\n\nexport default <T extends FormbitValues>({\n initialValues = {},\n yup: schema\n}: UseFormbitParams<T>): FormbitObject<T> => {\n const schemaRef = useRef<ValidationSchema<T>>(schema)\n\n const [writer, setWriter] = useState<FormState<Partial<T>>>({\n form: initialValues,\n initialValues,\n errors: {},\n liveValidation: {},\n isDirty: false\n })\n\n const initialize = useCallback((values: Partial<T>) => {\n const { __metadata } = values\n\n if (__metadata) {\n setWriter((w) => ({\n ...w,\n initialValues: values,\n form: values,\n errors: {},\n liveValidation: {},\n isDirty: false\n }))\n\n return\n }\n\n setWriter((w) => {\n const { form: { __metadata } } = w\n const newValues = { ...values, __metadata }\n\n return {\n ...w,\n initialValues: newValues,\n form: newValues,\n errors: {},\n liveValidation: {},\n isDirty: false\n }\n })\n }, [])\n\n const setSchema = useCallback((newSchema: ValidationSchema<T>) => { schemaRef.current = newSchema }, [])\n\n const setError: SetError = useCallback((path, value) => {\n setWriter((w) => {\n const errors = set(cloneDeep(w.errors), path, value)\n\n return { ...w, errors }\n })\n }, [])\n\n const executeCb = useExecuteCallbacks<Partial<T>>(writer, setError)\n\n const writeOrRemove: WriteOrRemove<T> = useCallback((\n path,\n value,\n {\n noLiveValidation = false,\n pathsToValidate = [],\n successCallback,\n errorCallback,\n options = {}\n } = {},\n action\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n const liveValidationPaths = noLiveValidation ? [] : Object.keys(w.liveValidation)\n const paths = pathsToValidate.concat(liveValidationPaths)\n\n const form = (function execute() {\n switch (action) {\n case ACTIONS.write: return set(cloneDeep(w.form), path, value)\n\n case ACTIONS.remove: return omit<Partial<T>>(cloneDeep(w.form), path)\n\n default: return cloneDeep(w.form)\n }\n }())\n\n const newWriter: FormState<Partial<T>> = { ...w, form, isDirty: true }\n\n if (paths.length === 0) {\n newUUID && executeCb(newUUID, successCallback)\n\n return newWriter\n }\n\n // Teardown errors\n const cleanErrors = paths.reduce(\n (acc, key) => set(acc, key, undefined),\n cloneDeep(newWriter.errors)\n )\n\n // VALIDATE\n const inner = validateSyncAll(paths, schemaRef.current, newWriter.form, options)\n\n if (isEmpty(inner)) {\n const neww = { ...newWriter, errors: cleanErrors }\n\n newUUID && executeCb(newUUID, successCallback)\n\n return neww\n }\n\n const errors = inner.reduce(\n (acc, { path: innerPath, message }) => innerPath ? set(acc, innerPath, message) : acc,\n cleanErrors\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path: innerPath }) => innerPath ? ({ ...acc, [innerPath]: true }) : acc,\n newWriter.liveValidation\n )\n\n const neww = { ...newWriter, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return neww\n })\n }, [executeCb])\n\n const write: Write<T> = useCallback((path, value, options) =>\n writeOrRemove(path, value, options, ACTIONS.write), [writeOrRemove])\n\n const remove: Remove<T> = useCallback((path, options) =>\n writeOrRemove(path, undefined, options, ACTIONS.remove), [writeOrRemove])\n\n const writeAll: WriteAll<T> = useCallback((\n arr,\n {\n noLiveValidation = false,\n pathsToValidate = [],\n successCallback,\n errorCallback,\n options = {}\n } = {}\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n const liveValidationPaths = noLiveValidation ? [] : Object.keys(w.liveValidation)\n const paths = pathsToValidate.concat(liveValidationPaths)\n\n const form = arr.reduce(\n (acc, [key, val]) => set(acc, key, val),\n cloneDeep(w.form)\n )\n\n const newWriter = { ...w, form, isDirty: true }\n\n if (paths.length === 0) {\n newUUID && executeCb(newUUID, successCallback)\n\n return newWriter\n }\n\n // Teardown errors\n const cleanErrors = paths.reduce(\n (acc, key) => set(acc, key, undefined),\n cloneDeep(newWriter.errors)\n )\n\n // VALIDATE ALL\n const inner = validateSyncAll(paths, schemaRef.current, newWriter.form, options)\n\n if (isEmpty(inner)) {\n const neww = { ...newWriter, errors: cleanErrors }\n\n newUUID && executeCb(newUUID, successCallback)\n\n return neww\n }\n\n const errors = inner.reduce(\n (acc, { path = '', message }) => set(acc, path, message),\n cleanErrors\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path = '' }) => ({ ...acc, [path]: true }),\n newWriter.liveValidation\n )\n\n const neww = { ...newWriter, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return neww\n })\n }, [executeCb])\n\n const removeAll: RemoveAll<T> = useCallback(\n (\n arr,\n {\n noLiveValidation = false,\n pathsToValidate = [],\n successCallback,\n errorCallback,\n options = {}\n } = {}\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n const liveValidationPaths = noLiveValidation ? [] : Object.keys(w.liveValidation)\n const paths = pathsToValidate.concat(liveValidationPaths)\n\n const form = arr.reduce(\n (acc, path) => set(acc, path, undefined),\n cloneDeep(w.form)\n )\n\n const newWriter = { ...w, form, isDirty: true }\n\n if (paths.length === 0) {\n newUUID && executeCb(newUUID, successCallback)\n return newWriter\n }\n\n const cleanErrors = paths.reduce(\n (acc, key) => set(acc, key, undefined),\n cloneDeep(newWriter.errors)\n )\n\n const inner = validateSyncAll(paths, schemaRef.current, newWriter.form, options)\n\n if (isEmpty(inner)) {\n const neww = { ...newWriter, errors: cleanErrors }\n newUUID && executeCb(newUUID, successCallback)\n return neww\n }\n\n const errors = inner.reduce(\n (acc, { path = '', message }) => set(acc, path, message),\n cleanErrors\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path = '' }) => ({ ...acc, [path]: true }),\n newWriter.liveValidation\n )\n\n const neww = { ...newWriter, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return neww\n })\n },\n [executeCb]\n )\n\n const validate: Validate<T> = useCallback((\n path,\n {\n successCallback,\n errorCallback,\n options\n } = {}\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n // Teardown errors\n const cleanErrors = set(cloneDeep(w.errors), path, undefined)\n\n // VALIDATE\n const inner = validateSyncAll([path], schemaRef.current, w.form, options)\n\n if (isEmpty(inner)) {\n const neww = { ...w, errors: cleanErrors }\n\n newUUID && executeCb(newUUID, successCallback)\n\n return neww\n }\n\n const errors = inner.reduce(\n (acc, { path: errorPath = '', message }) => set(acc, errorPath, message),\n cleanErrors\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path: errorPath = '' }) => ({ ...acc, [errorPath]: true }),\n w.liveValidation\n )\n\n const neww = { ...w, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return neww\n })\n }, [executeCb])\n\n const validateAll: ValidateAll<T> = useCallback((\n paths,\n { successCallback, errorCallback, options } = {}\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n // Teardown errors\n const cleanErrors = paths.reduce(\n (acc, path) => set(acc, path, undefined),\n cloneDeep(w.errors)\n )\n\n // VALIDATE ALL\n const inner = validateSyncAll(paths, schemaRef.current, w.form, options)\n\n if (isEmpty(inner)) {\n const neww = { ...w, errors: cleanErrors }\n\n newUUID && executeCb(newUUID, successCallback)\n\n return neww\n }\n\n const errors = inner.reduce(\n (acc, { path = '', message }) => set(acc, path, message),\n cleanErrors\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path = '' }) => ({ ...acc, [path]: true }),\n w.liveValidation\n )\n\n const neww = { ...w, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return neww\n })\n }, [executeCb])\n\n const check: Check<Partial<T>> = useCallback((\n json,\n {\n successCallback,\n errorCallback,\n options\n } = {}\n ) => {\n try {\n schemaRef.current.validateSync(json, { abortEarly: false, ...options })\n successCallback?.(json, writer, setError)\n\n return undefined\n } catch (e) {\n if (isValidationError(e)) {\n const { inner } = e\n\n errorCallback?.(json, inner, writer, setError)\n\n return inner\n }\n\n return undefined\n }\n }, [setError, writer])\n\n const privateValidateForm: PrivateValidateForm<Partial<T>> = useCallback((\n successCallback,\n errorCallback,\n { options } = {}\n ) => {\n const newUUID = (function getUUID() {\n if (successCallback || errorCallback) {\n return uuidv4()\n }\n\n return undefined\n })()\n\n setWriter((w) => {\n try {\n // abortEarly: false as default is to be retrocompatible\n schemaRef.current.validateSync(w.form, { abortEarly: false, ...options })\n\n newUUID && executeCb(newUUID, successCallback)\n\n return { ...w, errors: {} }\n } catch (e) {\n if (!isValidationError(e)) {\n // Checking if error is not formbit-related (e.g. a bug inside the successCallback)\n console.error(e)\n return w\n }\n\n const { inner } = e\n\n const errors = inner.reduce(\n (acc, { message, path = '' }) => set(acc, path, message),\n {}\n )\n\n const liveValidation: LiveValidation = inner.reduce(\n (acc, { path = '' }) => ({ ...acc, [path]: true }),\n w.liveValidation\n )\n\n const newWriter = { ...w, errors, liveValidation }\n\n newUUID && executeCb(newUUID, errorCallback)\n\n return newWriter\n }\n })\n }, [executeCb])\n\n const validateForm: ValidateForm<Partial<T>> = useCallback((successCallback, errorCallback, options = {}) =>\n privateValidateForm(\n successCallback,\n errorCallback,\n { options }\n ), [privateValidateForm])\n\n const submitForm: SubmitForm<T> =\n useCallback((successCallback, errorCallback, options = {}) => {\n const fn = () => setWriter((w) => ({ ...w, isDirty: false }))\n\n const successCallbackAndClearIsDirty: SuccessCallback<Partial<T>> = (a, b) => {\n // Success callback is called only if the form is valid so we can safely cast a as FormState<T>\n const writer = a as FormState<T>\n\n // __metadata is a field used to store metadata about the form and should not be submitted\n const { __metadata: _, ...form } = writer.form\n\n return successCallback({ ...writer, form }, b, fn)\n }\n\n return privateValidateForm(\n successCallbackAndClearIsDirty,\n errorCallback,\n { options }\n )\n }, [privateValidateForm])\n\n const resetForm = useCallback(() => {\n setWriter((w) => ({\n ...w,\n form: w.initialValues,\n errors: {},\n isDirty: false,\n liveValidation: {}\n }))\n }, [])\n\n const isFormValid = useCallback(() => {\n const { silent: _, ...e } = writer.errors\n return objLeaves(e).every((leaf) => !get(e, leaf))\n }, [writer.errors])\n\n const isFormInvalid = useCallback(() => {\n const { silent: _, ...e } = writer.errors\n return objLeaves(e).some((leaf) => get(e, leaf))\n }, [writer.errors])\n\n const error = useCallback((path: string): string | undefined => get(writer.errors, path, undefined), [writer.errors])\n\n const liveValidation = useCallback(\n (path: string): true | undefined => get(writer.liveValidation, path, undefined),\n [writer.liveValidation]\n )\n\n return {\n // State\n form: writer.form,\n errors: writer.errors,\n isDirty: writer.isDirty,\n\n // Queries\n error,\n isFormValid,\n isFormInvalid,\n liveValidation,\n\n // Mutations\n write,\n writeAll,\n remove,\n removeAll,\n initialize,\n resetForm,\n setError,\n setSchema,\n validate,\n validateAll,\n validateForm,\n submitForm,\n check\n }\n}\n","import React, { useContext, createContext, PropsWithChildren } from 'react'\nimport useFormbit from './use-formbit'\nimport * as yup from 'yup'\nimport { FormbitObject, FormbitValues, ValidationSchema } from './types'\nimport { MISSING_CONTEXT_ERROR } from './helpers/constants'\nimport { once } from 'lodash'\n\ntype Props<Values extends FormbitValues> = {\n initialValues?: Partial<Values> | {}\n schema: ValidationSchema<Values>\n} & PropsWithChildren\n\nconst createFormbitContext =\n once(<Values extends FormbitValues>() => createContext<FormbitObject<Values> | undefined>(undefined))\n\nexport default function FormbitContextProvider<Values extends FormbitValues>({\n initialValues = {},\n schema,\n children\n}: Props<Values>) {\n const FormbitContext = createFormbitContext<Values>()\n\n const value = useFormbit({ initialValues, yup: schema || yup.object() })\n\n return (\n <FormbitContext.Provider value={value}>{children}</FormbitContext.Provider>\n )\n}\n\nexport const useFormbitContext = <Values extends FormbitValues>() => {\n const context = useContext(createFormbitContext<Values>())\n\n if (!context) {\n throw new Error(MISSING_CONTEXT_ERROR)\n }\n\n return context\n}\n"],"names":["isObject","val","Array","isArray","objLeaves","obj","acc","fn","o","s","Object","keys","forEach","k","path","isLeaf","push","ACTIONS","MISSING_CONTEXT_ERROR","isValidationError","error","message","inner","undefined","validateSyncAll","paths","schema","form","options","errors","isEmpty","_iterator","_createForOfIteratorHelperLoose","_step","done","pathToValidate","value","validateSyncAt","e","_options","concat","abortEarly","writer","setError","callbacksStore","useRef","useEffect","current","entries","_ref","cb","useCallback","uuid","_extends2","_extends","initialValues","_ref$initialValues","yup","schemaRef","_useState","useState","liveValidation","isDirty","setWriter","initialize","values","__metadata","w","newValues","setSchema","newSchema","set","cloneDeep","executeCb","useExecuteCallbacks","writeOrRemove","_temp","action","_ref2$noLiveValidatio","_ref2","noLiveValidation","_ref2$pathsToValidate","pathsToValidate","successCallback","errorCallback","_ref2$options","newUUID","getUUID","uuidv4","liveValidationPaths","execute","write","remove","omit","newWriter","length","cleanErrors","reduce","key","neww","_ref3","innerPath","_ref4","writeAll","arr","_temp2","_ref5$noLiveValidatio","_ref5","_ref5$pathsToValidate","_ref5$options","_ref6","_ref7","_ref7$path","_ref8","_extends3","_ref8$path","removeAll","_temp3","_ref9$noLiveValidatio","_ref9","_ref9$pathsToValidate","_ref9$options","_ref0","_ref0$path","_ref1","_extends4","_ref1$path","validate","_temp4","_ref10","_ref11","_ref11$path","errorPath","_ref12","_extends5","_ref12$path","validateAll","_temp5","_ref13","_ref14","_ref14$path","_ref15","_extends6","_ref15$path","check","json","_temp6","_ref16","validateSync","privateValidateForm","_temp7","_ref17","console","_ref18","_ref18$path","_ref19","_extends7","_ref19$path","validateForm","submitForm","successCallbackAndClearIsDirty","a","b","_writer$form","_","_objectWithoutPropertiesLoose","_excluded","resetForm","isFormValid","_writer$errors","_excluded2","every","leaf","get","isFormInvalid","_writer$errors2","_excluded3","some","createFormbitContext","once","createContext","FormbitContextProvider","children","FormbitContext","useFormbit","React","createElement","Provider","useFormbitContext","context","useContext","Error"],"mappings":"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"}