@radicalbit/formbit 2.1.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.
Files changed (33) hide show
  1. package/README.md +150 -400
  2. package/dist/formbit-context.d.ts +4 -4
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.js +142 -269
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.modern.js +142 -269
  7. package/dist/index.modern.js.map +1 -1
  8. package/dist/use-execute-callbacks.d.ts +2 -2
  9. package/dist/use-formbit.d.ts +5 -5
  10. package/dist/validate-sync-all.d.ts +2 -2
  11. package/package.json +32 -49
  12. package/dist/__tests__/check.test.d.ts +0 -1
  13. package/dist/__tests__/error.test.d.ts +0 -1
  14. package/dist/__tests__/initialize.test.d.ts +0 -1
  15. package/dist/__tests__/is-form-invalid.test.d.ts +0 -1
  16. package/dist/__tests__/is-form-valid.test.d.ts +0 -1
  17. package/dist/__tests__/live-validation.test.d.ts +0 -1
  18. package/dist/__tests__/miscellaneous.d.ts +0 -1
  19. package/dist/__tests__/remove-all.test.d.ts +0 -1
  20. package/dist/__tests__/remove.test.d.ts +0 -1
  21. package/dist/__tests__/reset-form.test.d.ts +0 -1
  22. package/dist/__tests__/set-error.test.d.ts +0 -1
  23. package/dist/__tests__/set-schema.test.d.ts +0 -1
  24. package/dist/__tests__/submit-form.test.d.ts +0 -1
  25. package/dist/__tests__/use-execute-callbacks.test.d.ts +0 -1
  26. package/dist/__tests__/use-formbit-context.test.d.ts +0 -1
  27. package/dist/__tests__/validate-all.test.d.ts +0 -1
  28. package/dist/__tests__/validate-form.test.d.ts +0 -1
  29. package/dist/__tests__/validate-sync-all.test.d.ts +0 -1
  30. package/dist/__tests__/validate.test.d.ts +0 -1
  31. package/dist/__tests__/write-all.test.d.ts +0 -1
  32. package/dist/__tests__/write.test.d.ts +0 -1
  33. package/dist/types/index.d.ts +0 -333
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' || path === undefined) &&\n Array.isArray(inner)\n }\n\n return false\n}\n","import { isEmpty } from 'lodash'\nimport { Form, InitialValues, 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 = <Values extends InitialValues> (\n paths:string[],\n schema:ValidationSchema<Values>,\n form: Form,\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, InitialValues, 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 <Values extends InitialValues>(writer: FormState<Values>, setError: SetError) => {\n const callbacksStore = useRef<Record<string, GenericCallback<Partial<Values>> | 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<Values>>) => {\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 InitialValues,\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<Values extends InitialValues> = {\n initialValues?: Partial<Values>,\n yup: ValidationSchema<Values>\n}\n\nexport default <Values extends InitialValues>({\n initialValues = {},\n yup: schema\n}: UseFormbitParams<Values>): FormbitObject<Values> => {\n const schemaRef = useRef<ValidationSchema<Values>>(schema)\n\n const [writer, setWriter] = useState<FormState<Partial<Values>>>({\n form: initialValues,\n initialValues,\n errors: {},\n liveValidation: {},\n isDirty: false\n })\n\n const initialize = useCallback((values: Partial<Values>) => {\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<Values>) => { 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<Values>>(writer, setError)\n\n const writeOrRemove: WriteOrRemove<Values> = 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<Values>>(cloneDeep(w.form), path)\n\n default: return cloneDeep(w.form)\n }\n }())\n\n const newWriter: FormState<Partial<Values>> = { ...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<Values> = useCallback((path, value, options) =>\n writeOrRemove(path, value, options, ACTIONS.write), [writeOrRemove])\n\n const remove: Remove<Values> = useCallback((path, options) =>\n writeOrRemove(path, undefined, options, ACTIONS.remove), [writeOrRemove])\n\n const writeAll: WriteAll<Values> = 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<Values> = 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 = pathsToValidate.reduce(\n (acc, key) => set(acc, key, undefined),\n cloneDeep(newWriter.errors)\n )\n\n const inner = validateSyncAll(pathsToValidate, 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<Values> = 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<Values> = 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<Values>> = useCallback((\n json,\n {\n successCallback,\n errorCallback,\n options\n } = {}\n ) => {\n try {\n schema.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 }, [schema, setError, writer])\n\n const privateValidateForm: PrivateValidateForm<Partial<Values>> = useCallback((\n successCallback,\n errorCallback,\n { isDirty: _, 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<Values>> = useCallback((successCallback, errorCallback, options = {}) =>\n privateValidateForm(\n successCallback,\n errorCallback,\n { options }\n ), [privateValidateForm])\n\n const submitForm: SubmitForm<Values> =\n useCallback((successCallback, errorCallback, options = {}) => {\n const fn = () => setWriter((w) => ({ ...w, isDirty: false }))\n\n const successCallbackAndClearIsDirty: SuccessCallback<Partial<Values>> = (a, b) => {\n // Success callback is called only if the form is valid so we can safely cast a as FormState<Values>\n const writer = a as FormState<Values>\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, InitialValues, ValidationSchema } from './types'\nimport { MISSING_CONTEXT_ERROR } from './helpers/constants'\nimport { once } from 'lodash'\n\ntype Props<Values extends InitialValues> = {\n initialValues?: Partial<Values> | {}\n schema: ValidationSchema<Values>\n} & PropsWithChildren\n\nconst createFormbitContext =\n once(<Values extends InitialValues>() => createContext<FormbitObject<Values> | undefined>(undefined))\n\nexport default function FormbitContextProvider<Values extends InitialValues>({\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 InitialValues>() => {\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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"}