@bolttech/form-engine 0.14.3 → 3.0.0-beta.2
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 +2 -1628
- package/index.esm.d.ts +1 -0
- package/index.esm.js +1683 -0
- package/package.json +15 -16
- package/src/components/AsFormField/AsFormField.d.ts +4 -0
- package/src/components/FieldWrapper/FieldWrapper.d.ts +4 -0
- package/src/components/Form/Form.d.ts +4 -0
- package/src/components/index.d.ts +2 -0
- package/src/context/FormGroupContext.d.ts +27 -0
- package/src/generators/formBuilder.d.ts +11 -0
- package/src/index.d.ts +3 -3
- package/src/types/index.d.ts +47 -0
- package/CHANGELOG.md +0 -529
- package/asFormField-3108e669.js +0 -2
- package/asFormField-3108e669.js.map +0 -1
- package/index.js +0 -2
- package/index.js.map +0 -1
- package/react.js +0 -2
- package/react.js.map +0 -1
- package/src/adapters/react/Field.d.ts +0 -4
- package/src/adapters/react/Form.d.ts +0 -5
- package/src/adapters/react/Submit.d.ts +0 -3
- package/src/adapters/react/asFormField.d.ts +0 -4
- package/src/adapters/react/context.d.ts +0 -5
- package/src/adapters/react/index.d.ts +0 -7
- package/src/adapters/react/types.d.ts +0 -326
- package/src/adapters/react/useForceUpdate.d.ts +0 -3
- package/src/adapters/react/useForm.d.ts +0 -12
- package/src/adapters/react/useFormGroup.d.ts +0 -3
- package/src/core/apis/formatters.d.ts +0 -16
- package/src/core/apis/index.d.ts +0 -4
- package/src/core/apis/masks.d.ts +0 -3
- package/src/core/apis/validations.d.ts +0 -11
- package/src/core/apis/varOps.d.ts +0 -4
- package/src/core/constants/events.d.ts +0 -32
- package/src/core/constants/index.d.ts +0 -5
- package/src/core/constants/observer.d.ts +0 -7
- package/src/core/events/ObserverError.d.ts +0 -7
- package/src/core/events/events.types.d.ts +0 -27
- package/src/core/events/index.d.ts +0 -2
- package/src/core/handlers/common/templating.d.ts +0 -2
- package/src/core/handlers/field/api.d.ts +0 -4
- package/src/core/handlers/field/blur.d.ts +0 -2
- package/src/core/handlers/field/change.d.ts +0 -2
- package/src/core/handlers/field/clearFields.d.ts +0 -4
- package/src/core/handlers/field/data.d.ts +0 -3
- package/src/core/handlers/field/filter.d.ts +0 -2
- package/src/core/handlers/field/focus.d.ts +0 -2
- package/src/core/handlers/field/formatters.d.ts +0 -4
- package/src/core/handlers/field/htmlEventParser.d.ts +0 -6
- package/src/core/handlers/field/keydown.d.ts +0 -2
- package/src/core/handlers/field/keyup.d.ts +0 -2
- package/src/core/handlers/field/masks.d.ts +0 -4
- package/src/core/handlers/field/mount.d.ts +0 -2
- package/src/core/handlers/field/validations.d.ts +0 -4
- package/src/core/handlers/field/visibilityConditions.d.ts +0 -4
- package/src/core/handlers/flows.d.ts +0 -47
- package/src/core/handlers/form/bindFields.d.ts +0 -3
- package/src/core/handlers/form/hooks.d.ts +0 -3
- package/src/core/handlers/form/steps.d.ts +0 -2
- package/src/core/handlers/form/templating.d.ts +0 -2
- package/src/core/handlers/form/validate.d.ts +0 -2
- package/src/core/handlers/form/visibilityConditions.d.ts +0 -4
- package/src/core/index.d.ts +0 -3
- package/src/core/managers/Base.d.ts +0 -19
- package/src/core/managers/Factory.d.ts +0 -52
- package/src/core/managers/Field.d.ts +0 -33
- package/src/core/managers/Form.d.ts +0 -28
- package/src/core/managers/Scope.d.ts +0 -12
- package/src/core/managers/index.d.ts +0 -1
- package/src/core/types/index.d.ts +0 -937
- package/src/core/utils/common.d.ts +0 -9
- package/src/core/utils/credit-card.d.ts +0 -16
- package/src/core/utils/index.d.ts +0 -6
- package/src/core/utils/object.d.ts +0 -27
- package/src/core/utils/string.d.ts +0 -3
- package/src/core/utils/value.d.ts +0 -2
- package/types.js +0 -2
- package/types.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"asFormField-3108e669.js","sources":["../../../libs/form-engine/src/core/constants/observer.ts","../../../libs/form-engine/src/core/constants/events.ts","../../../libs/form-engine/src/core/constants/index.ts","../../../libs/form-engine/src/adapters/react/useForceUpdate.ts","../../../libs/form-engine/src/core/managers/Base.ts","../../../libs/form-engine/src/core/managers/Scope.ts","../../../libs/form-engine/src/core/utils/value.ts","../../../libs/form-engine/src/core/utils/common.ts","../../../libs/form-engine/src/core/utils/object.ts","../../../libs/form-engine/src/core/utils/credit-card.ts","../../../libs/form-engine/src/core/utils/string.ts","../../../libs/form-engine/src/core/apis/formatters.ts","../../../libs/form-engine/src/core/apis/masks.ts","../../../libs/form-engine/src/core/apis/validations.ts","../../../libs/form-engine/src/core/apis/varOps.ts","../../../libs/form-engine/src/core/handlers/field/change.ts","../../../libs/form-engine/src/core/handlers/field/mount.ts","../../../libs/form-engine/src/core/handlers/field/blur.ts","../../../libs/form-engine/src/core/handlers/field/focus.ts","../../../libs/form-engine/src/core/handlers/common/templating.ts","../../../libs/form-engine/src/core/handlers/field/api.ts","../../../libs/form-engine/src/core/handlers/field/data.ts","../../../libs/form-engine/src/core/handlers/field/visibilityConditions.ts","../../../libs/form-engine/src/core/handlers/field/clearFields.ts","../../../libs/form-engine/src/core/handlers/field/htmlEventParser.ts","../../../libs/form-engine/src/core/handlers/field/formatters.ts","../../../libs/form-engine/src/core/events/ObserverError.ts","../../../libs/form-engine/src/core/handlers/field/filter.ts","../../../libs/form-engine/src/core/handlers/field/masks.ts","../../../libs/form-engine/src/core/handlers/field/validations.ts","../../../libs/form-engine/src/core/handlers/field/keyup.ts","../../../libs/form-engine/src/core/handlers/field/keydown.ts","../../../libs/form-engine/src/core/handlers/form/hooks.ts","../../../libs/form-engine/src/core/handlers/form/steps.ts","../../../libs/form-engine/src/core/handlers/form/validate.ts","../../../libs/form-engine/src/core/handlers/form/bindFields.ts","../../../libs/form-engine/src/core/handlers/form/visibilityConditions.ts","../../../libs/form-engine/src/core/handlers/form/templating.ts","../../../libs/form-engine/src/core/handlers/flows.ts","../../../libs/form-engine/src/core/managers/Field.ts","../../../libs/form-engine/src/core/managers/Form.ts","../../../libs/form-engine/src/core/events/events.types.ts","../../../libs/form-engine/src/core/managers/Factory.ts","../../../libs/form-engine/src/adapters/react/Field.tsx","../../../libs/form-engine/src/adapters/react/Submit.tsx","../../../libs/form-engine/src/adapters/react/context.tsx","../../../libs/form-engine/src/adapters/react/Form.tsx","../../../libs/form-engine/src/adapters/react/asFormField.tsx","../../../libs/form-engine/src/adapters/react/useForm.tsx"],"sourcesContent":["import { TEventsKeys } from '@core';\nimport { EEVents } from '@core/constants';\n\nconst EXTRACT_EVENT_NAMESPACE = (event: TEventsKeys): EEVents =>\n (event.split('/')[1] as EEVents) || ('' as EEVents);\n\nconst BUILD_EVENT = (\n event: EEVents,\n namespace?: string,\n key?: string,\n): EEVents => {\n if (!namespace) return event;\n\n return (event + '/' + namespace + (key ? '/' + key : '')) as EEVents;\n};\n\nconst ALL_NAMESPACE_EVENTS = (event: TEventsKeys) =>\n new RegExp(`^(${event}).*$`, 'g') as unknown as EEVents;\n\nconst EXTRACT_CORE_NAMESPACE = (event: TEventsKeys): EEVents =>\n Array.isArray(event.split('/'))\n ? (event.split('/')[0] as EEVents)\n : (event as EEVents);\n\nexport {\n ALL_NAMESPACE_EVENTS,\n BUILD_EVENT,\n EXTRACT_EVENT_NAMESPACE,\n EXTRACT_CORE_NAMESPACE,\n};\n","import { TEventsKeys } from '@core/types';\n\nexport const enum EEVents {\n ON_FIELD_VALIDATION_TOGGLE = 'ON_FIELD_VALIDATION_TOGGLE',\n ON_FIELD_MOUNT = 'ON_FIELD_MOUNT',\n ON_FIELD_CHANGE = 'ON_FIELD_CHANGE',\n ON_FIELD_BLUR = 'ON_FIELD_BLUR',\n ON_FIELD_FOCUS = 'ON_FIELD_FOCUS',\n ON_FIELD_REHYDRATE = 'ON_FIELD_REHYDRATE',\n ON_FIELD_CLEARED = 'ON_FIELD_CLEARED',\n ON_FIELD_CLICK = 'ON_FIELD_CLICK',\n ON_FIELD_KEYUP = 'ON_FIELD_KEYUP',\n ON_FIELD_KEYDOWN = 'ON_FIELD_KEYDOWN',\n ON_FIELD_BINDED = 'ON_FIELD_BINDED',\n\n AFTER_FIELD_API_CALL = 'AFTER_FIELD_API_CALL',\n\n RUN_FIELD_VALIDATIONS = 'RUN_FIELD_VALIDATIONS',\n RUN_FIELD_MASKS = 'RUN_FIELD_MASKS',\n RUN_FIELD_FORMATTERS = 'RUN_FIELD_FORMATTERS',\n\n ON_SCOPE_CHANGE = 'ON_SCOPE_CHANGE',\n\n ON_FORM_REHYDRATE = 'ON_FORM_REHYDRATE',\n ON_FORM_SUBMIT = 'ON_FORM_SUBMIT',\n ON_FORM_MOUNT = 'ON_FORM_MOUNT',\n ON_FORM_UN_MOUNT = 'ON_FORM_UN_MOUNT',\n ON_FORM_DATA = 'ON_FORM_DATA',\n ON_FORM_DESTROY_FIELD = 'ON_FORM_DESTROY_FIELD',\n\n NAVIGATE_STEP = 'NAVIGATE_STEP',\n NAVIGATE_STEP_FORWARD = 'NAVIGATE_STEP_FORWARD',\n NAVIGATE_STEP_BACK = 'NAVIGATE_STEP_BACK',\n\n VALIDATE_FORM = 'VALIDATE_FORM',\n\n BIND_FIELDS = 'BIND_FIELDS',\n\n LOG = 'LOG',\n}\n\nexport const CoreEvents: Record<TEventsKeys, TEventsKeys> = {\n ON_FIELD_VALIDATION_TOGGLE: 'ON_FIELD_VALIDATION_TOGGLE',\n ON_FIELD_MOUNT: 'ON_FIELD_MOUNT',\n ON_FIELD_CHANGE: 'ON_FIELD_CHANGE',\n ON_FIELD_BLUR: 'ON_FIELD_BLUR',\n ON_FIELD_FOCUS: 'ON_FIELD_FOCUS',\n ON_FIELD_REHYDRATE: 'ON_FIELD_REHYDRATE',\n ON_FIELD_CLEARED: 'ON_FIELD_CLEARED',\n ON_FIELD_CLICK: 'ON_FIELD_CLICK',\n ON_FIELD_KEYUP: 'ON_FIELD_KEYUP',\n ON_FIELD_KEYDOWN: 'ON_FIELD_KEYDOWN',\n ON_FIELD_BINDED: 'ON_FIELD_BINDED',\n\n AFTER_FIELD_API_CALL: 'AFTER_FIELD_API_CALL',\n\n RUN_FIELD_VALIDATIONS: 'RUN_FIELD_VALIDATIONS',\n RUN_FIELD_FORMATTERS: 'RUN_FIELD_FORMATTERS',\n\n RUN_FIELD_MASKS: 'RUN_FIELD_MASKS',\n ON_SCOPE_CHANGE: 'ON_SCOPE_CHANGE',\n\n ON_FORM_REHYDRATE: 'ON_FORM_REHYDRATE',\n ON_FORM_SUBMIT: 'ON_FORM_SUBMIT',\n ON_FORM_MOUNT: 'ON_FORM_MOUNT',\n ON_FORM_UN_MOUNT: 'ON_FORM_UN_MOUNT',\n ON_FORM_DATA: 'ON_FORM_DATA',\n ON_FORM_DESTROY_FIELD: 'ON_FORM_DESTROY_FIELD',\n\n NAVIGATE_STEP: 'NAVIGATE_STEP',\n NAVIGATE_STEP_FORWARD: 'NAVIGATE_STEP_FORWARD',\n NAVIGATE_STEP_BACK: 'NAVIGATE_STEP_BACK',\n\n VALIDATE_FORM: 'VALIDATE_FORM',\n\n BIND_FIELDS: 'BIND_FIELDS',\n\n LOG: 'LOG',\n};\n","const DEFAULT_FORM_ID = 'default_form_id';\nconst DEFAULT_FORM_HOOK_ID = 'default_form_hook_id';\n\nexport {\n ALL_NAMESPACE_EVENTS,\n BUILD_EVENT,\n EXTRACT_EVENT_NAMESPACE,\n EXTRACT_CORE_NAMESPACE,\n} from '@core/constants/observer';\nexport { CoreEvents, EEVents } from '@core/constants/events';\nexport { DEFAULT_FORM_ID, DEFAULT_FORM_HOOK_ID };\n","import { useState } from 'react';\n\ntype TProps = [value: unknown, dispatch: () => void];\n\nconst useForceUpdate = (): TProps => {\n const [value, setValue] = useState(0); // integer state\n return [value, () => setValue((value) => value + 1)];\n // An function that increment 👆🏻 the previous state like here\n // is better than directly setting `value + 1`\n};\n\nexport { useForceUpdate };\n","import { Observer } from '@core/events';\nimport { EFlowLogging, TEventPublishPayload } from '@core/events/events.types';\nimport { TEventsKeys } from '@core';\n\nclass Base {\n #observer: Observer;\n #debounceQueue: Record<string, NodeJS.Timer> = {};\n subscriptions: { [x in TEventsKeys]?: () => void };\n debounceTime = 50;\n\n constructor(observer: Observer) {\n this.#observer = observer;\n\n this.publish = this.publish.bind(this);\n this.subscribe = this.subscribe.bind(this);\n this.debounce = this.debounce.bind(this);\n this.subscribeBulk = this.subscribeBulk.bind(this);\n this.subscriptions = {};\n }\n\n subscribe(event: TEventsKeys, cb: (...data: any) => void) {\n if (this.subscriptions[event]) {\n this.subscriptions[event]!();\n }\n this.subscriptions[event] = this.#observer.subscribe(event, cb);\n }\n\n subscribeBulk(events: TEventsKeys[], cb: (...data: any) => void) {\n events.forEach((event) => this.subscribe(event, cb));\n }\n\n publish(events: TEventsKeys, data?: TEventPublishPayload) {\n this.#observer.publish(events, data);\n }\n publishFor(events: TEventsKeys): any {\n return async (data = {}) => {\n return await this.#observer.publish(events, data);\n };\n }\n\n debounce = async (\n fn: any,\n debounceTime = this.debounceTime,\n ): Promise<unknown> => {\n return new Promise((resolve) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n if (this.#debounceQueue[fn]) [clearTimeout(this.#debounceQueue[fn])];\n\n this.#debounceQueue[fn] = setTimeout(() => {\n clearTimeout(this.#debounceQueue[fn]);\n resolve(fn());\n }, debounceTime);\n });\n };\n\n logError(file: EFlowLogging, event: string, method: string, error: unknown) {\n this.#observer.logError(file, event, method, error);\n }\n\n logInfo(\n file: EFlowLogging,\n event: string,\n method: string,\n extraData?: unknown,\n ) {\n this.#observer.logInfo(file, event, method, extraData);\n }\n}\n\nexport default Base;\n","import { TScope, TSetGlobalScope } from '@core/types';\nimport { Observer } from '@core/events';\nimport Base from '@core/managers/Base';\nimport { ALL_NAMESPACE_EVENTS, BUILD_EVENT } from '@core';\nimport { EEVents } from '@core/constants';\n\nclass Scope extends Base {\n #scope: TScope = {\n global: {},\n api: {},\n hooks: {},\n configs: {},\n fields: {},\n };\n\n constructor(observer: Observer) {\n super(observer);\n }\n\n get scope() {\n return this.#scope || {};\n }\n\n getGlobalScope<T extends TScope>(namespace?: string, key?: string): T {\n if (namespace && !key && this.scope[namespace])\n return this.scope[namespace];\n if (namespace && key && this.scope[namespace])\n return this.scope[namespace][key];\n\n return this.#scope as T;\n }\n\n set initialScope(data: TScope) {\n this.#scope = data || this.#scope;\n }\n\n set globalScope({ namespace, key, data }: TSetGlobalScope) {\n if (!key) {\n this.#scope[namespace] = data;\n }\n\n if (key && !this.#scope[namespace]) {\n this.#scope[namespace] = {\n [key]: data,\n };\n }\n if (this.#scope[namespace] && key) {\n this.#scope[namespace] = {\n ...this.#scope[namespace],\n [key]: data,\n };\n }\n\n // If no key is given, we will build one event based on regex to match all keys for a given namespace\n const eventName = key\n ? BUILD_EVENT(EEVents.ON_SCOPE_CHANGE, namespace, key)\n : ALL_NAMESPACE_EVENTS(\n BUILD_EVENT(EEVents.ON_SCOPE_CHANGE, namespace, key),\n );\n this.publish(eventName, { scope: this.scope, namespace, key });\n\n this.publish(EEVents.ON_SCOPE_CHANGE);\n }\n}\n\nexport default Scope;\n","const getValueByPath = (\r\n object: Record<string, any> = {},\r\n path = '',\r\n): string | number | boolean | Record<string, unknown> => {\r\n const parts = path.split('.');\r\n return parts.reduce((acc, part): any => (acc || {})[part], object);\r\n};\r\n\r\nexport { getValueByPath };\r\n","import Scope from '@core/managers/Scope';\nimport { getValueByPath } from '@core/utils/value';\n\nconst template = {\n BEGIN: '${',\n END: '}',\n DEFAULT_SPLITTER: '||',\n};\n\nconst getScopedField = <T>(scope: T, childrenScope?: string[]): T => {\n if (!childrenScope) return scope;\n return Object.keys(scope).reduce((acc, key) => {\n if (!childrenScope.includes(key)) return acc;\n return {\n ...acc,\n [key]: scope[key],\n };\n }, {} as T) as T;\n};\n\nconst extractTargetString = <T>(\n target: string,\n formScope: Scope,\n scope?: Scope,\n): T => {\n target = target.toString();\n const lastIndex = target.lastIndexOf(template.BEGIN);\n if (lastIndex === -1) return target as T;\n\n const substringTemplate = target.substring(\n lastIndex + template.BEGIN.length,\n target.length,\n );\n\n let match = substringTemplate.substring(\n 0,\n substringTemplate.indexOf(template.END),\n );\n const originalMatchLength = match.length;\n\n let defaultValue: string | number | boolean | Record<string, unknown> = '';\n const parts = match.split(template.DEFAULT_SPLITTER);\n if (parts.length > 1) {\n match = parts[0];\n for (const part of parts) {\n if (\n part.includes('api') ||\n part.includes('global') ||\n part.includes('fields') ||\n part.includes('hooks') ||\n part.includes('configs')\n ) {\n const parse = getValueByPath(scope.getGlobalScope(), part);\n if (parse) {\n defaultValue = parse;\n }\n\n continue;\n }\n\n defaultValue = part;\n }\n }\n\n const scopedTemplateValue = getValueByPath(formScope.getGlobalScope(), match);\n\n let value =\n typeof scopedTemplateValue === 'undefined'\n ? defaultValue\n : scopedTemplateValue;\n\n if (typeof value !== 'string' && lastIndex === 0) {\n return value as T;\n }\n\n try {\n value = JSON.stringify(value).replace(/^\"(.*)\"$/, '$1');\n // eslint-disable-next-line no-empty\n } catch (e) {}\n\n return (target.substring(0, lastIndex) +\n value +\n target.substring(\n lastIndex +\n originalMatchLength +\n template.BEGIN.length +\n template.END.length,\n target.length,\n )) as T;\n};\n\nexport { getScopedField, extractTargetString, template };\n","import Form from '@core/managers/Form';\nimport Field from '@core/managers/Field';\nimport { extractTargetString } from '@core/utils/common';\n\n/**\n * Encapsulates in a given object, at a given path the provided value\n *\n * @example\n * ORIGINAL object\n *\n * encapsulateIn({maintain: 'spread_me'}, 'a.b.c','test')\n *\n * RESULT\n *\n * {\n * maintain: 'spread_me',\n * c: 'test\n * }\n * }\n *\n * @param origin - The original object where the new value will be appended\n * @param path - The path at which the new value will be placed\n * @param value - The new value\n * @param form - The form instance to be used on extract string\n * @param field - The field instance to be used on extract string\n * @returns One new object with the new value at the provided path merged with the given object\n */\nconst encapsulateIn = (\n origin: Record<string, unknown>,\n path: string,\n value: string,\n form: Form,\n field: Field,\n): Record<string, unknown> => {\n const getType = (v: string | number | boolean | Record<string, unknown>) => {\n if (typeof value === 'boolean' && typeof v === 'string') {\n return /true/.test(v);\n }\n\n return value.constructor(v);\n };\n const parts = path.split('.');\n if (parts.length === 1) {\n return {\n ...origin,\n [path]: getType(\n extractTargetString<\n string | number | boolean | Record<string, unknown>\n >(value, form.scope, field.scope),\n ),\n };\n }\n const getNewPart = (\n parts: string[],\n subObject: Record<string, unknown>,\n ): Record<string, unknown> => {\n const clonedParts = [...parts];\n clonedParts.splice(0, 1);\n const part =\n parts.length !== 1\n ? getNewPart(\n clonedParts,\n subObject ? (subObject[parts[0]] as Record<string, unknown>) : {},\n )\n : getType(\n extractTargetString<\n string | number | boolean | Record<string, unknown>\n >(value, form.scope, field.scope),\n );\n return {\n ...subObject,\n [parts[0]]: part,\n };\n };\n return getNewPart(parts, origin);\n};\n\nexport { encapsulateIn };\n","import creditCardType from 'credit-card-type';\n\nexport interface ICreditCardType {\n niceType: string;\n type: string;\n patterns: number[] | [number[]];\n gaps: number[];\n lengths: number[];\n code: {\n size: number;\n name: string;\n };\n matchStrength?: number;\n}\n\ntype TGetTypeCard = [ICreditCardType, string];\n\nexport const getTypeCard = (value: string, availableOptions?: string[]): TGetTypeCard => {\n const rawValue = removeGaps(value.toString());\n const types = creditCardType(rawValue);\n const selected = availableOptions?.length\n ? types?.filter(({ type: id1 }) => availableOptions.some((id2) => id2 === id1))[0]\n : types[0];\n\n return [selected, rawValue];\n};\n\nconst removeGaps = (value: string): string => value?.replace(/ /g, '');\n\nconst addGaps = (value: string, gaps = []): string => {\n const [regexString, replaceString] = gaps.reduce(\n ([regexString, replaceString], offset, i) => {\n const lastOffset = gaps[i - 1] || 0;\n const digitNumber = offset - lastOffset;\n\n return [`${regexString}([0-9]{0,${digitNumber}})`, `${replaceString}$${i + 1} `];\n },\n ['', ''],\n );\n\n return value.replace(new RegExp(regexString), replaceString).trim();\n};\n\nexport const formatValue = (value: string, type: ICreditCardType): string => {\n const DEFAULT_LENGTH = 19;\n\n return type ? addGaps(value.slice(0, type?.lengths[0]), type.gaps as []) : value.slice(0, DEFAULT_LENGTH);\n};\n","function hasJsonStructure(str) {\n if (typeof str !== 'string') return false;\n try {\n const result = JSON.parse(str);\n const type = Object.prototype.toString.call(result);\n return type === '[object Object]' || type === '[object Array]';\n } catch (err) {\n return false;\n }\n}\n\nconst hasTemplate = (value: string) => {\n return /\\$\\{(.*)\\}.*/g.test(value);\n};\n\nexport { hasJsonStructure, hasTemplate };\n","/**\n *\n * This file will allow to expose functions to be used as formatters in schema and HOC\n *\n * Since it is a formatter, you can also expose its \"undo\" function that will allow form to make logic on the value without the\n * formatter applied\n *\n * EG:\n * splitter -> 22/33/4444\n * undo_splitter -> 22334444\n *\n * This undo will be called when the form is filtering the data on the input if it has formatters configured\n */\nimport { TSplitterFormatterValue, TSchemaFormatters } from '@core/types';\nimport * as utils from '@core/utils';\n\ntype TFormatterFunction = (data: {\n value: string | number;\n formatterValue: unknown;\n onBlur?: boolean;\n}) => string;\n\nconst splitter = ({\n value,\n formatterValue,\n}: {\n value: string;\n formatterValue: TSplitterFormatterValue;\n}): string => {\n if (!value) return value;\n\n let formattedValue = undo_splitter({ value, formatterValue });\n formatterValue.forEach((formatter): void => {\n if (formatter.position >= value.length) {\n return;\n }\n\n formattedValue =\n formattedValue.slice(0, formatter.position) +\n formatter.value +\n formattedValue.slice(formatter.position, formattedValue?.length);\n });\n return formattedValue;\n};\n\nconst undo_splitter = ({\n value,\n formatterValue,\n}: {\n value: string;\n formatterValue: TSplitterFormatterValue;\n}): string => {\n if (!value) return value;\n let originalValue = '';\n let formattersApplied = 0;\n formatterValue.forEach((formatter, i) => {\n const nextStartingIndex = i === 0 ? i : formatterValue[i - 1].position + 1;\n if (value[formatter.position] == formatter.value) {\n formattersApplied++;\n }\n originalValue += value.slice(nextStartingIndex, formatter.position);\n });\n originalValue += value.slice(originalValue.length + formattersApplied);\n\n return originalValue;\n};\n\nconst capitalize = ({ value }: { value: string }): string => {\n if (!value) return value;\n\n return value.charAt(0).toUpperCase() + value.slice(1);\n};\n\nconst upperCase = ({ value }: { value: string }): string => {\n if (!value) return value;\n\n return value.toUpperCase();\n};\n\nconst gapsCreditCard = ({\n value,\n formatterValue,\n}: {\n value: string;\n formatterValue: string[];\n}): string | undefined => {\n if (!value) return;\n\n const [type, rawValue] = utils.creditCard.getTypeCard(value, formatterValue);\n return utils.creditCard.formatValue(rawValue, type);\n};\n\nconst onlyNumbers = ({ value }: { value: string }) => {\n return value.replace(/([^\\d])+/gim, '');\n};\n\nconst onlyLetters = ({ value }: { value: string }) => {\n return value.replace(/([0-9:\\s/-])+/g, '');\n};\n\nconst regex = ({\n value,\n formatterValue,\n}: {\n value: string;\n formatterValue: string;\n}) => {\n return value.replace(new RegExp(formatterValue, 'g'), '');\n};\n\nconst callback = ({ value, formatterValue }) => {\n return formatterValue(value);\n};\n\nconst formatters: Record<string, unknown> = {\n splitter,\n undo_splitter,\n capitalize,\n upperCase,\n gapsCreditCard,\n onlyNumbers,\n onlyLetters,\n regex,\n callback,\n};\n\nconst run = (\n value: any,\n componentFormatters: TSchemaFormatters,\n undo?: boolean,\n): string | number => {\n let newValue = value;\n\n Object.keys(componentFormatters).forEach((key: string): void => {\n const formatterValue = (componentFormatters as Record<string, unknown>)[\n key\n ];\n const formatterFn = formatters[undo ? `undo_${key}` : key];\n if (!formatterFn) return;\n\n newValue = (formatterFn as TFormatterFunction)({\n value: newValue,\n formatterValue,\n });\n });\n return newValue;\n};\n\nexport { run };\n","import { TComponentMasks } from '@core/types';\n\ntype TMaskGeneric = {\n to: number;\n from: number;\n mask: string;\n}[];\n\ntype TCurrencyMask = {\n locale: string;\n currency: string;\n};\n\ntype TMaskFunction = (data: {\n value: string | number;\n maskValue: unknown;\n}) => string;\n\ntype TReplaceProps<T> = {\n value: string;\n maskValue?: T;\n};\n\nconst hideCardNumber = ({ value }: TReplaceProps<string>) => {\n const maskValue: TMaskGeneric = [\n {\n from: 1,\n to: 4,\n mask: 'x',\n },\n {\n from: 6,\n to: 9,\n mask: 'x',\n },\n {\n from: 11,\n to: 14,\n mask: 'x',\n },\n {\n from: 16,\n to: 19,\n mask: 'x',\n },\n ];\n return generic({ value, maskValue });\n};\n\nconst cardMask = ({ value }: TReplaceProps<string>) => {\n return value\n .replace(/[^\\dA-Z]/g, '')\n .replace(/(.{4})/g, '$1 ')\n .trim();\n};\n\nconst cardDate = ({ value }: TReplaceProps<string>) => {\n const fixedValue = value.replace(/\\D/g, '');\n const valZeroTwo = fixedValue.slice(0, 2);\n\n return fixedValue.length >= 5\n ? `${valZeroTwo}/${fixedValue.slice(2, 4)}`\n : fixedValue.length >= 3\n ? `${valZeroTwo}/${fixedValue.slice(2)}`\n : fixedValue;\n};\n\nconst feinMask = ({ value }: TReplaceProps<string>) => {\n const fixedValue = value.replace(/\\D/g, '');\n const valZeroTwo = fixedValue.slice(0, 2);\n\n return fixedValue.length >= 5\n ? `${valZeroTwo}-${fixedValue.slice(2, 9)}`\n : fixedValue.length >= 3\n ? `${valZeroTwo}-${fixedValue.slice(2)}`\n : fixedValue;\n};\n\nconst currencyMask = ({\n value = '',\n maskValue,\n}: TReplaceProps<TCurrencyMask>) => {\n const replacedValue = value.replace(/[^0-9]/g, '');\n\n return new Intl.NumberFormat(maskValue.locale, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n style: 'currency',\n currency: maskValue.currency,\n }).format(+replacedValue);\n};\n\nconst cardNumber = ({ value }: TReplaceProps<string>) => {\n const maskValue: TMaskGeneric = [\n {\n from: 1,\n to: 4,\n mask: 'x',\n },\n {\n from: 6,\n to: 9,\n mask: 'x',\n },\n {\n from: 11,\n to: 14,\n mask: 'x',\n },\n {\n from: 16,\n to: 19,\n mask: 'x',\n },\n ];\n return generic({ value, maskValue });\n};\n\nconst generic = ({ value = '', maskValue }: TReplaceProps<TMaskGeneric>) => {\n let masked = value;\n\n maskValue.forEach((item) => {\n const { to = masked.length, mask } = item;\n let { from } = item;\n\n if (to > value.length - 1) return;\n if (from === 0) {\n from = 1;\n }\n\n const maskedPortion = new Array(to - from + 2).join(mask);\n masked = masked.slice(0, from - 1) + maskedPortion + masked.slice(to);\n });\n\n return masked;\n};\n\nconst replaceAll = ({\n value = '',\n maskValue,\n}: TReplaceProps<string | number>) => {\n let targetReplaceMask = maskValue;\n if (!targetReplaceMask || typeof value !== 'string') return value;\n\n if (typeof targetReplaceMask === 'number') {\n targetReplaceMask = targetReplaceMask?.toString();\n }\n return new Array(value.length + 1).join(targetReplaceMask);\n};\n\nconst callback = ({ value, maskValue }) => {\n return maskValue(value);\n};\n\nconst masks: Record<string, unknown> = {\n generic,\n cardNumber,\n hideCardNumber,\n cardMask,\n cardDate,\n currencyMask,\n feinMask,\n replaceAll,\n callback,\n};\n\nconst run = (value: any, componentMasks: TComponentMasks): string => {\n let newValue = value;\n\n Object.keys(componentMasks).forEach((key: string): void => {\n const maskValue = (componentMasks as Record<string, unknown>)[key];\n const formatterFn = masks[key];\n if (!formatterFn) return;\n\n newValue = (formatterFn as TMaskFunction)({\n value: newValue,\n maskValue,\n });\n });\n return newValue;\n};\n\nexport { run };\n","import {\n TError,\n TErrorMessages,\n TErrors,\n TFieldData,\n TGenericValidationRule,\n TValidationDateFormats,\n TValidationDateOperators,\n TVAvailableValidations,\n} from '@core/types';\nimport * as utils from '@core/utils';\n\ntype TRuleValue = string | number | boolean | undefined;\ntype TValidationValue = string | number | boolean | (() => boolean);\ntype TRuleFunction = (data: TErrorArgumentsGeneric) => TError;\n\ntype TValidationArguments<T, I> = {\n value: T;\n values?: Record<string, unknown>;\n validationValue: I;\n errorMessage?: string;\n};\n\ntype TErrorArgumentsGeneric = {\n value: TRuleValue;\n values?: Record<string, unknown>;\n validationValue: TValidationValue;\n errorMessage: string;\n};\n\ninterface TCallback {\n value: string;\n validationValue: (value: string | number) => {\n errorMessage: string;\n fail: boolean;\n };\n}\n\ninterface IValidationCreditCard {\n value: string;\n validationValue: string[];\n}\n\nexport interface ICustomValidationValue {\n from: number;\n to: number;\n validations: Record<string, any>;\n}\n\ntype TErrorReturn = {\n fail: boolean;\n message?: string;\n metadata?: Record<string, unknown>;\n};\n// ERROR HELPERS\nconst searchFailedError = (errors: TErrors) => {\n const defaultResponse = { fail: false };\n\n if (!errors) return defaultResponse;\n return Object.keys(errors).reduce((acc, key) => {\n return errors[key].fail ? errors[key] : acc;\n }, defaultResponse);\n};\nconst dateRearrangeMapper: Record<\n TValidationDateFormats,\n (value: string) => string\n> = {\n DDMMYYYY: (value: string) => {\n const dateParts = value.split(value.includes('/') ? '/' : '-');\n return `${dateParts[1]}/${dateParts[0]}/${dateParts[2]}`;\n },\n YYYYMMDD: (value: string) => {\n const dateParts = value.split(value.includes('/') ? '/' : '-');\n return `${dateParts[1]}/${dateParts[2]}/${dateParts[0]}`;\n },\n YYYYDDMM: (value: string) => {\n const dateParts = value.split(value.includes('/') ? '/' : '-');\n return `${dateParts[2]}/${dateParts[1]}/${dateParts[0]}`;\n },\n MMDDYYYY: (value: string) => value,\n timestamp: (value: string) => new Date(value).toString(),\n};\n\n// VALIDATIONS\n\nconst length = ({\n value,\n validationValue,\n}: TErrorArgumentsGeneric): TErrorReturn => {\n let targetValue = value;\n // We want length even if it is a numeric\n if (typeof targetValue !== 'string') {\n targetValue = value?.toString();\n }\n\n return { fail: !value || targetValue?.length === validationValue };\n};\n\nconst greaterThan = ({\n value,\n validationValue,\n}: TValidationArguments<string, string>): TErrorReturn => {\n return { fail: !value || parseInt(value) <= parseInt(validationValue) };\n};\n\nconst lessThan = ({\n value,\n validationValue,\n}: TValidationArguments<string, string>): TErrorReturn => {\n return { fail: !value || parseInt(value) >= parseInt(validationValue) };\n};\n\nconst maxLength = ({\n value = '',\n validationValue,\n}: TValidationArguments<string, number>): TErrorReturn => {\n let targetValue = value;\n // We want length even if it is a numeric\n if (Number.isInteger(targetValue)) {\n targetValue = value.toString();\n }\n\n return {\n fail: targetValue.length > validationValue,\n };\n};\n\nconst minLength = ({\n value = '',\n validationValue,\n}: TValidationArguments<string, number>): TErrorReturn => {\n let targetValue = value;\n // We want length even if it is a numeric\n if (Number.isInteger(targetValue)) {\n targetValue = value.toString();\n }\n\n return {\n fail: targetValue.length < validationValue,\n };\n};\n\nconst required = ({\n value,\n validationValue,\n}: TValidationArguments<string, boolean>): TErrorReturn => {\n return {\n fail: validationValue && !value,\n };\n};\n\nconst value = ({\n value,\n validationValue,\n}: TValidationArguments<TRuleValue, TValidationValue>): TErrorReturn => {\n return { fail: value !== validationValue };\n};\n\nconst regex = ({\n value,\n validationValue,\n}: TValidationArguments<string, string>): TErrorReturn => {\n const regex = new RegExp(validationValue);\n const fail = !regex.test(value);\n\n return { fail };\n};\n\nconst email = ({\n value,\n}: TValidationArguments<string, string>): TErrorReturn => {\n const regex =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n const fail = !regex.test(value as string);\n\n return { fail };\n};\n\nconst isCreditCard = ({\n value,\n validationValue,\n}: IValidationCreditCard): TErrorReturn => {\n if (!value) return { fail: true };\n\n const [type] = utils.creditCard.getTypeCard(value, validationValue);\n\n return {\n fail: !type,\n metadata: {\n typeCard: type?.type,\n creditCardCC: type?.code?.name,\n creditCardCCSize: type?.code?.size,\n },\n };\n};\n\nconst isCreditCodeMatch = ({\n value,\n validationValue,\n}: TValidationArguments<\n string,\n { numberCard: string; availableOptions: string[] }\n>): TErrorReturn => {\n if (!value) return { fail: true };\n const [type] = utils.creditCard.getTypeCard(\n validationValue.numberCard,\n validationValue.availableOptions,\n );\n return { fail: type?.code?.size !== value.length };\n};\n\nconst isCreditCardAndLength = ({\n value,\n validationValue,\n}: IValidationCreditCard): TErrorReturn => {\n if (!value) return { fail: true };\n\n const [type, rawValue] = utils.creditCard.getTypeCard(value, validationValue);\n const fail = type && !type.lengths.includes(rawValue.length);\n return { fail };\n};\n\nconst url = ({ value }: TValidationArguments<string, string>): TErrorReturn => {\n const regex =\n /[(http(s)?)://(www.)?a-zA-Z0-9@:%._+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/gi;\n const fail = !regex.test(value as string);\n\n return { fail };\n};\n\nconst onlyLetters = ({\n value,\n}: TValidationArguments<string, string>): TErrorReturn => {\n const fail = !/^[a-zA-Z\\s]*$/.test(value);\n\n return { fail };\n};\n\nconst customValidation = ({\n value,\n validationValue,\n}: TValidationArguments<string, ICustomValidationValue[]>): TErrorReturn =>\n generic({ value, validationValue });\n\n/* - Allow to use specific validations for specific position caracters\n *\n * customValidation: [\n * {\n * from: 0,\n * to: 2,\n * validations: {\n * greaterThan: date.getMonth(),\n * lessThan: '13',\n * }\n * },\n * {\n * from: 3,\n * to: 5,\n * validations: {\n * greaterThan: date.getFullYear().toString().substr(-2) - 1,\n * }\n * },\n * ],\n */\n\nconst generic = ({\n value = '',\n validationValue,\n}: TValidationArguments<string, ICustomValidationValue[]>): TErrorReturn => {\n const fail = validationValue.some((item) => {\n const { to, from, validations } = item;\n\n const substring = value.substring(to, from);\n return hasError(run(substring, validations));\n });\n return { fail };\n};\n\nconst notAllowSpaces = ({\n value,\n}: TValidationArguments<string, boolean>): TErrorReturn => {\n const fail = /\\s/.test(value);\n return { fail };\n};\n\nconst callback = ({ value, validationValue }: TCallback): TErrorReturn => {\n const result = validationValue(value);\n\n return {\n message: result.errorMessage,\n fail: result.fail,\n };\n};\n\nconst isNumber = ({\n value,\n}: TValidationArguments<string, boolean>): TErrorReturn => {\n const fail = !!value && !/^[0-9\\s]*$/.test(value);\n return { fail };\n};\n\nconst notEmpty = ({\n value,\n}: TValidationArguments<string, boolean>): TErrorReturn => {\n return { fail: !value.trim().length };\n};\n\n/**\n * Check if has tralling/landing spaces.\n */\nconst hasNoExtraSpaces = ({\n value,\n}: TValidationArguments<string, boolean>): TErrorReturn => {\n const regexToCheckTrailingSpaces = '^[A-Za-z0-9.-]+(?: +[A-Za-z0-9.-]+)*$';\n\n const { fail } = regex({\n value,\n validationValue: regexToCheckTrailingSpaces,\n errorMessage: '',\n });\n\n return { fail };\n};\n\nconst numericRange = ({\n value,\n validationValue,\n}: TValidationArguments<\n number,\n { start: number; end: number }\n>): TErrorReturn => {\n const replacedValue = String(value).replace(/[^0-9]/g, '');\n const fail =\n !replacedValue ||\n !Number.isInteger(parseInt(replacedValue.toString())) ||\n +replacedValue > validationValue.end ||\n +replacedValue < validationValue.start;\n\n return {\n fail,\n };\n};\n\nconst isInTheList = ({\n value,\n validationValue,\n}: TValidationArguments<\n string | number,\n string[] | number[]\n>): TErrorReturn => {\n if (!value || !Array.isArray(validationValue)) return { fail: true };\n return {\n fail: !validationValue.some(\n (code) => code === value || JSON.stringify(code) === value,\n ),\n };\n};\n\nconst sequentialNumber = ({\n value,\n}: TValidationArguments<TRuleValue, boolean>) => {\n const numbers = '0123456789';\n const numbersRev = '9876543210';\n const replacedValue = String(value).replace(/[^0-9]/g, '');\n const fail = !(\n numbers.indexOf(replacedValue) === -1 &&\n numbersRev.indexOf(replacedValue) === -1\n );\n\n return { fail };\n};\n\nconst repeatedNumbers = ({\n value,\n}: TValidationArguments<TRuleValue, boolean>) => {\n const replacedValue = String(value).replace(/[^0-9]/g, '');\n const regex = /\\b(\\d)\\1+\\b/gm;\n const fail = regex.test(replacedValue);\n\n return { fail };\n};\n\nconst path = ({\n value,\n validationValue,\n}: TValidationArguments<\n Record<string, unknown>,\n Record<string, unknown>\n>): TErrorReturn => {\n const searchErrorInPath = (path: string) => {\n const valueForPath = utils.value.getValueByPath(value, path as string);\n if (validationValue.preventUnMountValidation && !(path in value)) {\n return { fail: false };\n }\n\n const validationsResult = run(valueForPath as string, validationValue);\n\n return searchFailedError(validationsResult);\n };\n if (Array.isArray(validationValue.paths)) {\n return validationValue.paths.reduce((acc, path) => {\n const res = searchErrorInPath(path);\n if (res.fail) {\n return res;\n }\n return acc;\n }, {});\n }\n\n return searchErrorInPath(validationValue.path as string);\n};\n\nconst fields = ({\n values,\n validationValue,\n}: {\n validationValue: Pick<TVAvailableValidations, 'fields'>['fields'];\n values: TFieldData;\n}) => ({\n fail: validationValue?.set[validationValue.rule]((validation) => {\n return hasError(\n run(\n values[validation.fieldName]?.value as string,\n validation.validations,\n ),\n );\n }),\n});\n\nconst customNameRule = ({\n value,\n validationValue,\n}: TValidationArguments<TRuleValue, TGenericValidationRule>) => {\n if (typeof validationValue !== 'object') return { fail: false };\n return {\n fail: hasError(run(value, validationValue)),\n };\n};\n\nconst between = ({\n value,\n validationValue,\n}: TValidationArguments<\n string,\n Pick<TVAvailableValidations, 'between'>['between']\n>) => {\n let fail = false;\n\n if (\n validationValue?.dates?.length != 2 &&\n (!validationValue?.start || !validationValue?.end)\n ) {\n return {\n fail: false,\n };\n }\n\n if (validationValue.dates) {\n for (const validation of validationValue.dates) {\n const result = date({ value, validationValue: validation });\n\n if (result.fail) {\n fail = true;\n break;\n }\n }\n } else {\n const parsedValue = parseInt(value);\n\n if (validationValue.isIncludedBoundaries) {\n if (\n parsedValue < validationValue.start ||\n parsedValue > validationValue.end\n ) {\n fail = true;\n }\n } else {\n if (\n parsedValue <= validationValue.start ||\n parsedValue >= validationValue.end\n ) {\n fail = true;\n }\n }\n }\n\n return { fail };\n};\n\nconst date = ({\n value = '',\n validationValue,\n}: TValidationArguments<\n string,\n Pick<TVAvailableValidations, 'date'>['date']\n>): TErrorReturn => {\n if (!validationValue?.target?.value && !validationValue?.origin?.intervals) {\n return {\n fail: false,\n };\n }\n\n const getIntervalsDate = (date, intervals: any) => {\n const intervalsMapper = {\n years: (date: Date, value: number) =>\n new Date(date.setUTCFullYear(date.getUTCFullYear() + value)),\n months: (date: Date, value: number) =>\n new Date(date.setUTCMonth(date.getUTCMonth() + value)),\n days: (date: Date, value: number) =>\n new Date(date.setDate(date.getUTCDate() + value)),\n };\n return Object.keys(intervals).reduce(\n (acc, interval) => intervalsMapper[interval](acc, intervals[interval]),\n new Date(date),\n );\n };\n\n const originValue = (validationValue.origin.value || value) as string;\n let originDate = new Date(\n dateRearrangeMapper[validationValue?.origin.format](originValue).toString(),\n );\n\n let targetDate = new Date();\n let target: Date;\n\n if (validationValue?.target?.format) {\n target = new Date(\n dateRearrangeMapper[validationValue?.target?.format](\n validationValue.target.value as string,\n ).toString(),\n );\n targetDate = target;\n }\n\n if (validationValue.origin.intervals) {\n targetDate = getIntervalsDate(originDate, validationValue.origin.intervals);\n const date = new Date();\n\n if (validationValue.target?.value && target) {\n date.setDate(target.getDate());\n date.setMonth(target.getMonth());\n }\n\n originDate = new Date(\n `${date.getUTCMonth() + 1}/${date.getUTCDate()}/${date.getUTCFullYear()}`,\n );\n }\n\n if (\n validationValue.onlyValidDate &&\n (!(\n targetDate instanceof Date && isFinite(targetDate as unknown as number)\n ) ||\n !(\n targetDate instanceof Date && isFinite(originDate as unknown as number)\n ) ||\n originValue.length < 8)\n ) {\n return {\n fail: true,\n };\n }\n\n const originTimestamp = originDate.getTime();\n const targetTimestamp = targetDate.getTime();\n\n const operationsMapper: Record<string, boolean> = {\n '>': originTimestamp > targetTimestamp,\n '>=': originTimestamp >= targetTimestamp,\n '<': originTimestamp < targetTimestamp,\n '<=': originTimestamp <= targetTimestamp,\n '===': originTimestamp === targetTimestamp,\n '!==': originTimestamp !== targetTimestamp,\n };\n\n return {\n fail: operationsMapper[validationValue?.operator as string],\n };\n};\n\nconst validDate = ({\n value = '',\n validationValue,\n}: TValidationArguments<\n string,\n Pick<TVAvailableValidations, 'validDate'>['validDate']\n>): TErrorReturn => {\n if (!validationValue) {\n return {\n fail: false,\n };\n }\n\n const dateParts = dateRearrangeMapper[validationValue](value)\n .toString()\n .split(/[/-]/);\n const year = parseInt(dateParts[2], 10);\n const month = parseInt(dateParts[0], 10) - 1; // Month is zero-based\n const day = parseInt(dateParts[1], 10);\n\n const date = new Date(year, month, day);\n\n // Check if the date is valid\n const isValidDate =\n date.getFullYear() === year &&\n date.getMonth() === month &&\n date.getDate() === day;\n\n return { fail: !isValidDate };\n};\n\nconst conditions = ({\n value = '',\n validationValue,\n}: TValidationArguments<\n string,\n Pick<TVAvailableValidations, 'conditions'>['conditions']\n>) => {\n if (!validationValue) return { fail: false };\n\n const conditionResult = (rule) => {\n if (\n (rule.forceDefinedOrigin && rule.origin === undefined) ||\n (rule.forceDefinedTarget && rule.target === undefined)\n )\n return { fail: false };\n\n const origin = rule.origin === undefined ? value : rule.origin;\n const target = rule.target === undefined ? value : rule.target;\n const conditionMapper: Record<TValidationDateOperators, boolean> = {\n '!==': (origin || value) !== (target || value),\n '===': (origin || value) === (target || value),\n '<': (origin || value) < (target || value),\n '>': (origin || value) > (target || value),\n '<=': (origin || value) <= (target || value),\n '>=': (origin || value) >= (target || value),\n '!!origin': !!String(origin || value).trim().length,\n };\n\n return conditionMapper[rule.condition];\n };\n\n const rulesMapper = {\n and: () => !!validationValue.set.every(conditionResult),\n or: () => !!validationValue.set.some(conditionResult),\n };\n\n let result = rulesMapper[validationValue.rule]();\n\n if (validationValue.conditions) {\n if (validationValue.rule === 'and') {\n result =\n result &&\n conditions({\n value,\n validationValue: validationValue.conditions,\n }).fail;\n } else {\n result =\n result ||\n conditions({\n value,\n validationValue: validationValue.conditions,\n }).fail;\n }\n }\n\n return {\n fail: result,\n };\n};\n\nconst multipleValidations = ({\n value = '',\n validationValue,\n}: TValidationArguments<\n string,\n Pick<TVAvailableValidations, 'multipleValidations'>['multipleValidations']\n>) => {\n if (!validationValue) return { fail: false };\n\n const validations = Object.values(run(value, validationValue.validations));\n const rulesMapper = {\n AND: () => !!validations.every((validation) => validation.fail),\n OR: () => !!validations.some((validation) => validation.fail),\n NOT: () => !validations.every((validation) => validation.fail),\n };\n\n return {\n fail: rulesMapper[validationValue.rule](),\n };\n};\n\nconst bool = ({\n validationValue,\n}: TValidationArguments<TRuleValue, TValidationValue>): TErrorReturn => {\n let fail = false;\n\n if (typeof validationValue === 'boolean') {\n fail = validationValue;\n }\n\n return { fail };\n};\n\nconst exists = ({\n validationValue,\n}: TValidationArguments<TRuleValue, TValidationValue>): TErrorReturn => {\n return { fail: !validationValue };\n};\n\nconst validations: Record<string, unknown> = {\n between,\n conditions,\n multipleValidations,\n date,\n validDate,\n length,\n greaterThan,\n maxLength,\n minLength,\n required,\n value,\n bool,\n regex,\n hasNoExtraSpaces,\n isCreditCard,\n isCreditCardAndLength,\n isCreditCodeMatch,\n onlyLetters,\n notAllowSpaces,\n callback,\n isNumber,\n customValidation,\n notEmpty,\n numericRange,\n email,\n lessThan,\n sequentialNumber,\n repeatedNumbers,\n url,\n path,\n isInTheList,\n fields,\n customNameRule,\n exists,\n};\n\nconst run = (\n value: TRuleValue,\n rules: TVAvailableValidations,\n errorMessages: TErrorMessages = {},\n formData: TFieldData = {},\n): TErrors => {\n let result = {};\n Object.keys(rules).forEach((key): void => {\n const validationValue = rules[key] as TValidationValue;\n let validationFN = validations[key] as TRuleFunction;\n if (!validationFN) {\n validationFN = validations.customNameRule as TRuleFunction;\n }\n\n const errorMessage = errorMessages[key] || errorMessages.default;\n const ruleResult = validationFN({\n value,\n validationValue,\n errorMessage: errorMessage,\n values: formData,\n });\n result = {\n ...result,\n [key]: { ...ruleResult, validationValue, message: errorMessage },\n };\n });\n return result;\n};\n\nconst generateCustomError = (name: string, message: string): TErrors => {\n return {\n [name]: {\n fail: true,\n message,\n value: undefined,\n },\n };\n};\n\nconst hasError = (errors?: TErrors) => {\n if (!errors) {\n return false;\n }\n return !!Object.keys(errors).find((key) => errors && errors[key].fail, []);\n};\n\nexport { generateCustomError, hasError, run };\n","export const concatenate = (a, b) => {\n return a + b;\n};\n\nexport const add = (a, b) => {\n return ((parseInt(a) || 0) + (parseInt(b) || 0)).toString();\n};\n\nexport const subtract = (a, b) => {\n return parseInt(a) - parseInt(b);\n};\n\nexport const replaceAll = (value: string, searchValue: string, replaceValue: string) => {\n return value.replace(new RegExp(searchValue, 'g'), replaceValue);\n};\n","import * as Events from '@core/events';\n\nexport const handler = ({\n field,\n data,\n}: Pick<Events.TEventInformation<unknown>, 'field' | 'data'>) => {\n field.data.changed = true;\n field.data.metadata = data.metadata;\n field.value = data.parsedEventValue;\n};\n","import * as Events from '@core/events';\nimport * as utils from '@core/utils';\nimport { BUILD_EVENT } from '@core';\nimport { EEVents } from '@core/constants';\n\nexport const handler = ({\n form,\n field,\n}: Pick<Events.TEventInformation<unknown>, 'form' | 'field'>) => {\n field.subscribe(\n BUILD_EVENT(EEVents.ON_SCOPE_CHANGE, 'configs', 'disable'),\n () => field.rehydrate(),\n );\n\n const { props = {} } = field.component;\n const staticInitialSchemaValue = props[field.mappings?.setValue] as\n | string\n | number;\n\n const groupValue =\n field.component.group &&\n utils.value.getValueByPath(form.initialValues, field.component.group);\n const initialValue =\n utils.value.getValueByPath(\n form.initialValues,\n groupValue === field.component.props?.value && !!groupValue\n ? field.component.group\n : field.component.name,\n ) || staticInitialSchemaValue;\n\n field.value =\n form.formData.form?.steps?.data[form.formData?.form?.steps?.index]\n ?.formatted[field.component.name] ||\n (!field.data.mounted ? initialValue : undefined);\n field.data.mounted = true;\n};\n","import * as Events from '@core/events';\n\nexport const handler = ({\n field,\n}: Pick<Events.TEventInformation<unknown>, 'field' | 'eventReducedSchema'>) => {\n field.data.blured = true;\n};\n","import * as Events from '@core/events';\n\nexport const handler = ({ field }: Pick<Events.TEventInformation<unknown>, 'field'>) => {\n field.data = {\n ...field.data,\n focused: true,\n };\n};\n","import * as utils from '@core/utils';\nimport * as Events from '@core/events';\nimport * as apis from '@core/apis';\n\nimport { BUILD_EVENT, TSchema } from '@core';\nimport { EEVents } from '@core/constants';\nimport { template } from '@core/utils/common';\n\nconst hasTemplateString = (value: string) => {\n return /\\$\\{(.*)\\}.*/g.test(value);\n};\n\nconst varOps = {\n PREFIX: 'varOps.',\n FUNCTION_SUFFIX: ')',\n FUNCTION_PREFIX: '(',\n FUNCTION_ARGUMENTS_SPLITTER: ',',\n};\n\nconst isVarOps = (value: string) => value.includes(varOps.PREFIX);\n\nconst extractVarOpsArgs = (value: string) =>\n value\n .split(varOps.PREFIX)[1]\n .split(varOps.FUNCTION_PREFIX)[1]\n .split(varOps.FUNCTION_SUFFIX)[0]\n .split(varOps.FUNCTION_ARGUMENTS_SPLITTER);\n\nconst getVarOpsOp = (value: string) =>\n apis.varOps[value.split(varOps.PREFIX)[1].split(varOps.FUNCTION_PREFIX)[0]];\n\nexport const handler = ({\n field,\n form,\n}: Pick<Events.TEventInformation<unknown>, 'form' | 'field'>) => {\n const scopeComponent = () => {\n if (!field) return;\n const { children, wrapper, ...rest } = field.component;\n const scopedComponent = {\n ...inObject(rest as any),\n };\n\n field.scopedComponent = {\n ...rest,\n ...scopedComponent,\n children,\n wrapper,\n };\n };\n\n const scopeForm = () => {\n const { components, ...rest } = form.schema || ({} as TSchema);\n const newScopedForm = inObject<any>(rest);\n\n form.scopedSchema = newScopedForm as TSchema;\n form.rehydrate();\n };\n\n const subscribeFieldToScopeChange = (parts) => {\n const isFieldExcludedObservable =\n !field.scope.scope.configs?.observables?.templates?.exclude?.includes(\n field.component.name,\n );\n const matchingParts = parts[0].split('.');\n isFieldExcludedObservable &&\n field.subscribe(\n BUILD_EVENT(\n EEVents.ON_SCOPE_CHANGE,\n matchingParts[0],\n matchingParts[1],\n ),\n () => {\n scopeComponent();\n field.rehydrate();\n },\n );\n };\n\n const replaceTemplateString = (targetString: string): any => {\n targetString = targetString.toString();\n const lastIndex = targetString.lastIndexOf(template.BEGIN);\n if (lastIndex === -1) return targetString;\n\n const substringTemplate = targetString.substring(\n lastIndex + template.BEGIN.length,\n targetString.length,\n );\n let match = substringTemplate.substring(\n 0,\n substringTemplate.indexOf(template.END),\n );\n const originalMatchLength = match.length;\n\n let defaultValue: string | number | boolean | Record<string, unknown> = '';\n const parts = match.split(template.DEFAULT_SPLITTER);\n if (parts.length > 1) {\n match = parts[0];\n for (const part of parts) {\n if (\n part.includes('api') ||\n part.includes('global') ||\n part.includes('fields') ||\n part.includes('hooks') ||\n part.includes('configs')\n ) {\n const parse = utils.value.getValueByPath(\n field.scope.getGlobalScope(),\n part,\n );\n if (parse) {\n defaultValue = parse;\n }\n\n continue;\n }\n\n defaultValue = part;\n }\n }\n\n field && subscribeFieldToScopeChange(parts);\n\n const scopedTemplateValue = utils.value.getValueByPath(\n form.scope.getGlobalScope(),\n match,\n );\n\n let value =\n typeof scopedTemplateValue === 'undefined'\n ? defaultValue\n : scopedTemplateValue;\n\n // If we are interested in other data than string and its the only data we have in the template, we just return it\n if (typeof value !== 'string' && lastIndex === 0) {\n return value;\n } else if (!value && !/^\\$\\{.*\\}$/.test(targetString)) {\n // If it has no value and the replacing its from api call, rollback.\n return (\n targetString.substring(0, lastIndex) +\n targetString.substring(\n targetString.indexOf(template.BEGIN),\n targetString.lastIndexOf(template.END) + 1,\n )\n );\n }\n\n // Otherwise, we just stringify it and ussume the client will use as string\n try {\n value = JSON.stringify(value).replace(/^\"(.*)\"$/, '$1');\n // eslint-disable-next-line no-empty\n } catch (e) {}\n\n const scopedString =\n targetString.substring(0, lastIndex) +\n value +\n targetString.substring(\n lastIndex +\n originalMatchLength +\n template.BEGIN.length +\n template.END.length,\n targetString.length,\n );\n\n if (isVarOps(scopedString) && !hasTemplateString(scopedString)) {\n return scopedString.replace(/([^\\s]+)/g, (match) => {\n if (!isVarOps(match)) return match;\n\n const fn = getVarOpsOp(match);\n if (fn) {\n return fn(...extractVarOpsArgs(match));\n }\n });\n }\n return replaceTemplateString(scopedString);\n };\n\n const inObject = <T extends Record<string, unknown>>(\n obj: T,\n recursionLevel = 0,\n ): Record<string, unknown> => {\n if (typeof obj === 'string') {\n return replaceTemplateString(obj);\n }\n if (typeof obj === 'number') {\n return obj;\n }\n\n const object = { ...obj };\n return Object.keys(object).reduce((acc, key): Record<string, string> => {\n if (object[key] === null) {\n return acc;\n }\n\n if (Array.isArray(object[key])) {\n return {\n ...acc,\n [key]: (object[key] as unknown[]).map(inObject),\n };\n }\n\n if (typeof object[key] === 'object') {\n return {\n ...acc,\n [key]: {\n ...inObject(\n { ...(object[key] as Record<string, unknown>) },\n recursionLevel + 1,\n ),\n },\n };\n }\n\n if (typeof object[key] !== 'string') {\n return {\n ...acc,\n [key]: object[key],\n };\n }\n\n if (!hasTemplateString(object[key] as string)) {\n return { ...acc, [key]: object[key] };\n }\n let value = replaceTemplateString(object[key] as string);\n\n try {\n if (utils.string.hasJsonStructure(value)) {\n value = JSON.parse(value);\n }\n // eslint-disable-next-line no-empty\n } catch (e) {}\n\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n };\n\n scopeComponent();\n scopeForm();\n};\n","import { BUILD_EVENT, TComponent } from '@core';\nimport { validations } from '@core/apis';\nimport * as Events from '@core/events';\nimport { EEVents } from '@core/constants';\nimport { extractTargetString, template } from \"@core/utils/common\";\n\nconst DEFAULT_DEBOUNCE_MS = 200;\n\nexport const handler = ({\n field,\n form,\n eventReducedSchema: { api },\n}: Pick<\n Events.TEventInformation<unknown>,\n 'form' | 'field' | 'eventReducedSchema'\n>) =>\n api.forEach((apiCall) => {\n const { scope } = field;\n const meetsRunningCondition = validations.run(\n field.data.value,\n apiCall.preConditions || {},\n field.scopedComponent.errorMessages,\n form?.formData?.fields,\n );\n if (\n field.fieldHasError(meetsRunningCondition) ||\n (apiCall.blockRequestWhenInvalid &&\n field.fieldValidationsHaveError(false))\n ) {\n return;\n } else if (apiCall.url.includes(template.BEGIN)) {\n apiCall.url = extractTargetString<string>(\n apiCall.url,\n form.scope,\n field.scope,\n );\n }\n\n let paramValues = {};\n let url = apiCall.url;\n\n if (apiCall.fieldValueAsPathParams) {\n for (const param of apiCall.fieldValueAsPathParams) {\n if (Object.prototype.hasOwnProperty.call(form.fields, param)) {\n url = `${url}/${form.fields[param].data.value}`;\n }\n }\n }\n\n if (apiCall.fieldValueAsParams) {\n for (const key in apiCall.fieldValueAsParams) {\n if (Object.prototype.hasOwnProperty.call(form.fields, key)) {\n const value = apiCall.fieldValueAsParams[key] || key;\n\n paramValues = {\n ...paramValues,\n [value]: form.fields[key].data.value,\n };\n }\n }\n\n if (url.includes('?')) {\n const uri = url.split('?');\n const uriParams = uri.at(1).split('&');\n url = uri.at(0);\n\n if (uriParams.length > 1) {\n for (const uriParam of uriParams) {\n const item = uriParam.split('=');\n paramValues = {\n ...paramValues,\n [item.at(0)]: item.at(1),\n };\n }\n } else {\n const item = uriParams.at(0).split('=');\n paramValues = {\n ...paramValues,\n [item.at(0)]: item.at(1),\n };\n }\n }\n\n const params = new URLSearchParams(paramValues);\n url = `${url}?${params.toString()}`;\n }\n\n scope.globalScope = {\n namespace: 'api',\n key: apiCall.scope,\n data: {\n loading: true,\n },\n };\n field.debounce(() => {\n return fetch(url, {\n method: apiCall.method,\n ...(apiCall.body && { body: JSON.stringify(apiCall.body) }),\n headers: apiCall.headers || {\n 'Content-type': 'application/json; charset=UTF-8',\n },\n })\n .then((res) => {\n const parsedResponse = res.json();\n if (res.status >= 400) throw parsedResponse;\n\n return parsedResponse;\n })\n .then((res) => {\n scope.globalScope = {\n namespace: 'api',\n key: apiCall.scope,\n data: {\n loading: false,\n response: res,\n ...(res as any),\n },\n };\n })\n .catch(async (err) => {\n const jsonErr = await err;\n scope.globalScope = {\n namespace: 'api',\n key: apiCall.scope,\n data: {\n loading: false,\n error: true,\n err: jsonErr,\n },\n };\n })\n .finally(() =>\n field.publish(\n BUILD_EVENT(EEVents.AFTER_FIELD_API_CALL, field.component.name),\n ),\n );\n }, apiCall.debounceTime || DEFAULT_DEBOUNCE_MS);\n });\n\nexport const events = (component: TComponent) =>\n Object.keys(component.api || {});\n","import { TFormValues } from '@core';\nimport * as utils from '@core/utils';\nimport { TEventInformation } from '@core/events';\n\nexport const handler = ({\n form,\n field: eventField,\n}: Pick<TEventInformation<unknown>, 'form' | 'field'>): TFormValues => {\n const buildFormMessages = (data: Record<string, any>) => {\n if (!form.schema?.messages) {\n return [];\n }\n return Object.keys(form.schema.messages).reduce((acc: string[], key) => {\n const fieldValue = utils.value.getValueByPath(data, key);\n\n if (!form.schema?.messages || !form.schema?.messages[key]) return acc;\n if (\n form.schema.messages[key].values?.includes(fieldValue as string) ||\n form.schema.messages[key].value === fieldValue ||\n (form.schema.messages[key].required && !fieldValue)\n ) {\n return [...acc, form.schema.messages[key].name];\n }\n\n return acc;\n }, []);\n };\n\n const fieldsData = (fields) =>\n Object.keys(fields).reduce(\n (acc: TFormValues, key) => {\n const field = form.fields[key];\n const fieldValues = field.data;\n if (!field || !field.data.visible || !field.data.name) return acc;\n\n let group = '';\n if (\n field.component?.group &&\n ((eventField && eventField.component.name === field.component.name) ||\n (!eventField && !form.formData.formatted[field.component.group]))\n ) {\n group = field.component.group;\n }\n\n const mergedKey = group || key;\n const value =\n typeof fieldValues.value === 'undefined'\n ? form.initialValues[key] ||\n (form.schema?.formattedDataDefaults &&\n form.schema?.formattedDataDefaults[key])\n : fieldValues.value;\n\n return {\n erroredFields: field.fieldHasError()\n ? [...acc.erroredFields, key]\n : acc.erroredFields,\n predictableErroredFields: field.fieldValidationsHaveError()\n ? [...acc.predictableErroredFields, key]\n : acc.predictableErroredFields,\n fields: {\n ...acc.fields,\n [key]: fieldValues,\n },\n filteredFields: form.schema?.filteredFields?.includes(mergedKey)\n ? {\n ...acc.filteredFields,\n ...(typeof value === 'undefined' ? {} : { [mergedKey]: value }),\n ...(group\n ? { [group]: value ? value : acc.formatted[group] }\n : {}),\n }\n : acc.filteredFields,\n formatted: {\n ...acc.formatted,\n ...(typeof fieldValues?.value === 'undefined' || fieldValues.ignore\n ? {}\n : utils.object.encapsulateIn(\n acc.formatted,\n key,\n fieldValues?.value as string,\n form,\n field,\n ) || { [key]: value }),\n ...(group ? { [group]: value ? value : acc.formatted[group] } : {}),\n },\n };\n },\n {\n predictableErroredFields: [],\n erroredFields: [],\n fields: {},\n formatted: {\n ...form.schema?.formattedDataDefaults,\n },\n filteredFields: {},\n },\n );\n\n const formData = fieldsData(form.fields);\n const stepData = fieldsData(form.steps[form.step.index] || {});\n const result = {\n ...formData,\n form: {\n scope: form.scope.getGlobalScope(),\n steps: {\n ...form.step,\n data: { [form.step.index]: stepData },\n isValid: !stepData.predictableErroredFields.length,\n },\n isValid: !formData.predictableErroredFields.length,\n messages: buildFormMessages({\n ...form.initialValues,\n ...formData.formatted,\n }),\n },\n };\n\n form.formData = result;\n return result;\n};\n","import { BUILD_EVENT, TComponent } from '@core';\nimport * as apis from '@core/apis';\nimport { EEVents } from '@core/constants';\nimport * as Events from '@core/events';\nimport Field from '@core/managers/Field';\nimport { TSchemaValidation } from '@core/types';\n\nenum RULES {\n AND = 'and',\n OR = 'or',\n}\n\nconst ruleMapper = {\n [RULES.OR]: (field: Field, validations: TSchemaValidation): boolean =>\n field.fieldHasError(apis.validations.run(field.value, validations)),\n [RULES.AND]: (field: Field, validations: TSchemaValidation): boolean => {\n const errors = [];\n\n for (const validation in validations) {\n errors.push(\n field.fieldHasError(\n apis.validations.run(field.value, {\n [validation]: validations[validation],\n }),\n ),\n );\n }\n\n return errors.every((val) => val);\n },\n};\n\nconst handleVisibility = (field: Field, visibility: boolean) => {\n field.visibility = visibility;\n field.rehydrate();\n\n if (!field.visibility)\n field.errors = {};\n}\n\nexport const handler = ({\n form,\n field,\n eventReducedSchema,\n}: Pick<Events.TEventInformation<unknown>, 'form' | 'field' | 'eventReducedSchema'>) => {\n eventReducedSchema.visibilityConditions?.forEach(\n ({ validations, fieldName, fieldNames, rule, showOnlyIfTrue }) => {\n const fields = [...(fieldNames || [fieldName])];\n const mapper = rule || 'or';\n\n fields.forEach((targetFieldName) => {\n if (!targetFieldName) return;\n\n const hasError = ruleMapper[mapper](field, validations);\n const visibility = showOnlyIfTrue\n ? ruleMapper[mapper](field, validations) === true\n : !hasError;\n // IF ITS NOT INITIALIZED, SUBSCRIBE TO ITS MOUNT\n if (!form.fields[targetFieldName]) {\n field.subscribe(\n BUILD_EVENT(EEVents.ON_FIELD_MOUNT, targetFieldName),\n () => handleVisibility(form.fields[targetFieldName], visibility),\n );\n return;\n }\n\n handleVisibility(form.fields[targetFieldName], visibility);\n });\n },\n );\n};\n\nexport const events = (component: TComponent) =>\n Object.keys(component.visibilityConditions || {});\n","import * as Events from '@core/events';\nimport * as apis from '@core/apis';\nimport { BUILD_EVENT, TComponent } from '@core';\nimport Field from '@core/managers/Field';\nimport { EEVents } from '@core/constants';\n\nconst triggerTargetValue = (\n target: Field,\n clearedValue: string | number | boolean,\n props: Record<string, unknown>,\n): void => {\n const cleared = !clearedValue || clearedValue !== target.data.value;\n target.value = clearedValue;\n target.componentProps = { ...target.componentProps, ...props };\n\n if (cleared) {\n target.publish(\n BUILD_EVENT(EEVents.ON_FIELD_CLEARED, target.component.name),\n );\n }\n\n target.rehydrate();\n};\n\nexport const handler = ({\n field,\n form,\n eventReducedSchema,\n}: Pick<\n Events.TEventInformation<unknown>,\n 'form' | 'eventReducedSchema' | 'field'\n>) => {\n eventReducedSchema?.clearFields.forEach((clearField) => {\n clearField.fields.forEach((fieldName, index) => {\n const targetField = form.fields[fieldName];\n const fieldProp = Array.isArray(clearField.clearedProps)\n ? clearField.clearedProps[index]\n : clearField.clearedProps || {};\n const clearedValue = Array.isArray(clearField.clearedValue)\n ? clearField.clearedValue[index]\n : clearField.clearedValue;\n const validations = Array.isArray(clearField.validations)\n ? clearField.validations[index]\n : clearField.validations;\n const defaultClearedValue = Array.isArray(clearField.defaultClearedValue)\n ? clearField.defaultClearedValue[index]\n : clearField.defaultClearedValue;\n const defaultClearedProps = Array.isArray(clearField.defaultClearedProps)\n ? clearField.defaultClearedProps[index]\n : clearField.defaultClearedProps;\n if (!targetField) return;\n if (!clearField.validations) {\n return triggerTargetValue(targetField, clearedValue, fieldProp);\n }\n\n const errors = apis.validations.run(\n clearField.useCurrentFieldValidation\n ? field.data.value\n : targetField.value,\n validations,\n );\n\n if (!targetField.fieldHasError(errors)) {\n if (defaultClearedValue || defaultClearedProps) {\n triggerTargetValue(\n targetField,\n defaultClearedValue,\n defaultClearedProps,\n );\n }\n return;\n }\n triggerTargetValue(targetField, clearedValue, fieldProp);\n });\n });\n};\n\nexport const events = (component: TComponent) =>\n Object.keys(component.clearFields || {});\n","import { TEventInformation } from '@core/events';\n\nexport const handler = ({ field, data: { event } }: TEventInformation<unknown>) => {\n let parsedEventValue = undefined;\n let metadata = undefined;\n\n //HTML event values here\n const eventMapper: Record<string, () => void> = {\n number: () => parseInt(event?.target?.value),\n checkbox: () => !!event?.target?.checked,\n };\n\n parsedEventValue = eventMapper[event?.target?.type]\n ? eventMapper[event?.target?.type]()\n : event?.target?.value;\n\n if (\n Array.isArray(event) ||\n typeof event !== 'object' ||\n typeof event === 'string' ||\n typeof event === 'number'\n ) {\n parsedEventValue = event;\n }\n\n if (event?.id) {\n parsedEventValue = event?.id;\n metadata = event;\n }\n\n if (event?.options) {\n parsedEventValue = event?.options;\n }\n\n const isDeletingValue =\n (parsedEventValue as any)?.toString().length <\n (field.data?.value?.toString()?.length || 0);\n\n return {\n parsedEventValue,\n metadata,\n isDeletingValue,\n };\n};\n","import * as apis from '@core/apis';\nimport { TComponent } from '@core';\nimport { TEventInformation } from '@core/events';\n\nexport const handler = ({\n data,\n field,\n eventReducedSchema: { formatters },\n}: TEventInformation<unknown>) => {\n if (!formatters || data.isDeletingValue) return;\n\n field.data.value = apis.formatters.run(field.data.value, formatters);\n};\n\nexport const events = (component: TComponent) =>\n Object.keys(component?.formatters || []);\n","class ObserverError extends Error {\n breaksObservingChain = false;\n\n constructor(message, { breaksObservingChain }) {\n super();\n this.message = message;\n this.breaksObservingChain = breaksObservingChain;\n }\n}\n\nexport { ObserverError };\n","import * as apis from '@core/apis';\nimport * as Events from '@core/events';\nimport { ObserverError } from '@core/events/ObserverError';\n\nexport const handler = ({\n field,\n data,\n eventReducedSchema: { formatters },\n}: Events.TEventInformation<unknown>) => {\n const { errorMessages, filter } = field.scopedComponent;\n\n if (!filter || !data.parsedEventValue || data.isDeletingValue) return;\n\n // If field has formatted data lets try to undo it and then apply the filter\n const dataToFilter = formatters\n ? apis.formatters.run(data.parsedEventValue, formatters, true) ||\n data.parsedEventValue\n : data.parsedEventValue;\n const error = apis.validations.run(dataToFilter, filter, errorMessages);\n\n if (field.fieldHasError(error)) {\n throw new ObserverError(`Filter applied ${JSON.stringify(filter)}`, {\n breaksObservingChain: true,\n });\n }\n};\n","import { TComponent } from '@core';\nimport * as apis from '@core/apis';\nimport * as Events from '@core/events';\n\nexport const handler = ({\n field,\n eventReducedSchema: { masks },\n}: Events.TEventInformation<unknown>) => {\n if (!masks) return;\n\n field.data.mask = masks?.cleanMask\n ? undefined\n : apis.masks.run(field.data.value, masks);\n};\n\nexport const events = (component: TComponent) =>\n Object.keys(component.masks || {});\n","import { TComponent } from '@core';\nimport * as apis from '@core/apis';\nimport { EEVents } from '@core/constants';\nimport * as Events from '@core/events';\n\nexport const handler = ({\n field,\n eventReducedSchema: { validations },\n form,\n}: Pick<Events.TEventInformation<unknown>, 'field' | 'eventReducedSchema' | 'form'>) => {\n if (!validations) return;\n\n const error = apis.validations.run(\n field.data.value,\n validations,\n field.scopedComponent.errorMessages,\n form.formData.fields,\n );\n\n // Publish on validation toggle topic if needed\n if (field.fieldHasError(error) !== field.fieldHasError()) {\n field.publish(EEVents.ON_FIELD_VALIDATION_TOGGLE, {\n field: field.data,\n });\n }\n\n field.errors = field.data.visible ? error : {};\n field.data.failedErrorMessages = field.getFieldErrorMessages(field.data);\n};\n\nexport const events = (component: TComponent) =>\n Object.keys(component.validations || {});\n","import * as Events from '@core/events';\n\nexport const handler = ({\n field,\n data,\n}: Pick<Events.TEventInformation<unknown>, 'field' | 'data'>) => {\n field.data.keyup = true;\n field.value = data.parsedEventValue;\n};\n","import * as Events from '@core/events';\n\nexport const handler = ({\n field,\n data,\n}: Pick<Events.TEventInformation<unknown>, 'field' | 'data'>) => {\n field.data.keydown = true;\n field.value = data.parsedEventValue;\n};\n","import { TEventInformation } from '@core/events';\nimport { THookPayload, TSetGlobalScope } from '@core/types';\n\nexport const handler = ({\n form,\n}: Pick<TEventInformation<unknown>, 'form'>): THookPayload => {\n return {\n setScope: (data: TSetGlobalScope) => (form.scope.globalScope = data),\n };\n};\n","import * as Events from '@core/events';\nimport { CoreEvents } from '@core';\n\nexport const handler = ({\n form,\n event,\n payload,\n}: Pick<Events.TEventInformation<unknown>, 'form' | 'event' | 'payload'>) => {\n const mapperNextStepIndex = {\n [CoreEvents.NAVIGATE_STEP_BACK]: form.step.index - 1,\n [CoreEvents.NAVIGATE_STEP_FORWARD]: form.step.index + 1,\n };\n const steps = form.schema.components;\n\n let nextStepIndex = mapperNextStepIndex[event];\n\n const nextStep = () => {\n if (payload.constructor === Object) {\n return steps[mapperNextStepIndex[event]];\n } else if (typeof payload === 'string') {\n nextStepIndex = steps.findIndex((item) => item.name === payload);\n return steps.find((item) => item.name === payload);\n } else if (typeof payload === 'number') {\n nextStepIndex = payload;\n return steps[payload];\n }\n };\n\n const step = nextStep();\n\n if (!step) {\n form.step = {\n ...form.step,\n navigated: false,\n };\n return;\n }\n\n form.step = {\n ...form.step,\n numSteps: steps.length,\n navigated: !!step,\n index: step ? nextStepIndex : form.step.index,\n currentStepSchema: step ? step : form.step.currentStepSchema,\n };\n};\n","import * as Events from '@core/events';\nimport { TChildrenOptions, TFields } from '@core/types';\nimport { getScopedField } from '@core/utils/common';\n\nexport const handler = ({\n form,\n payload,\n}: Pick<Events.TEventInformation<unknown>, 'form' | 'payload'>) => {\n const extractScopedChildrenFromOptions = (\n opts?: TChildrenOptions,\n ): string[] | undefined => {\n if (\n !opts ||\n !Object.keys(opts).length ||\n (!opts.scopeBlurredChildren &&\n !opts.scopeChangedChildren &&\n !opts.childrenScope)\n )\n return undefined;\n\n return Object.keys(form.fields).filter((key) => {\n return (\n (opts?.scopeBlurredChildren && form.fields[key].data.blured) ||\n (opts?.scopeChangedChildren && form.fields[key].data.changed) ||\n opts?.childrenScope?.includes(key)\n );\n });\n };\n\n const fields = getScopedField<TFields>(\n form.fields,\n extractScopedChildrenFromOptions(payload),\n );\n Object.keys(fields).forEach((key) => {\n if (fields[key].fieldValidationsHaveError(true)) {\n fields[key].rehydrate();\n }\n });\n};\n","import { BUILD_EVENT, EEVents } from '@core/constants';\nimport * as Events from '@core/events';\nimport { handler as validationHandler } from '@core/handlers/field/validations';\nimport Field from '@core/managers/Field';\nimport { TEventReducedSchema, TFields, TSubmitValueData } from '@core/types';\nimport { getScopedField } from '@core/utils/common';\n\nexport const handler = ({\n form,\n payload,\n}: Pick<Events.TEventInformation<TSubmitValueData>, 'form' | 'payload'>) => {\n const fields = getScopedField<TFields>(form.fields, Object.keys(payload));\n Object.keys(fields).forEach((key) => {\n const value = payload?.[key]?.value;\n const field: Field = fields[key];\n field.value = value ? value : '';\n field.componentProps = { ...field.componentProps, ...payload[key].props };\n const validationsEvents = Object.keys(field.scopedComponent.validations);\n const validations = validationsEvents.reduce((acc, curr: EEVents) => {\n return { ...acc, ...field.eventReducedSchema(curr).validations };\n }, {});\n /**\n * Test if its necessary to maintain those two lines of handlers above.\n */\n validationHandler({\n field,\n eventReducedSchema: {\n validations,\n } as TEventReducedSchema,\n form,\n });\n field.publish(BUILD_EVENT(EEVents.ON_FIELD_BINDED, field.component.name));\n field.rehydrate();\n });\n};\n","import { TSchema } from '@core';\nimport { TEventInformation } from '@core/events';\nimport * as apis from '@core/apis';\n\nexport const handler = ({\n form,\n formEventDirectives,\n}: Pick<TEventInformation<unknown>, 'form' | 'formEventDirectives'>) => {\n formEventDirectives?.visibilityConditions?.forEach((condition) => {\n const fieldNames = [...(condition.fieldNames || [condition.fieldName])];\n\n fieldNames.forEach((targetFieldName) => {\n if (!targetFieldName) return;\n\n const field = form.fields[targetFieldName];\n\n form.fields[targetFieldName].visibility = field?.fieldHasError(\n apis.validations.run(field.value, condition.validations),\n );\n form.fields[targetFieldName].rehydrate();\n });\n });\n};\n\nexport const events = (schema: TSchema) =>\n Object.keys(schema?.visibilityConditions || {});\n","import * as utils from '@core/utils';\nimport * as Events from '@core/events';\n\nimport { TSchema } from '@core';\nimport { extractTargetString } from '@core/utils/common';\n\nconst hasTemplateString = (value: string) => {\n return /\\$\\{(.*)\\}.*/g.test(value);\n};\n\nexport const handler = ({\n form,\n}: Pick<Events.TEventInformation<unknown>, 'form'>) => {\n const replaceTemplateString = (targetString: string): any => {\n const scopedString = extractTargetString<string>(\n targetString,\n form.scope,\n form.scope,\n );\n return replaceTemplateString(scopedString);\n };\n\n const inObject = <T extends Record<string, unknown>>(\n obj: T,\n recursionLevel = 0,\n ): Record<string, unknown> => {\n if (typeof obj === 'string') {\n return replaceTemplateString(obj);\n }\n if (typeof obj === 'number') {\n return obj;\n }\n\n const object = { ...obj };\n return Object.keys(object).reduce((acc, key): Record<string, string> => {\n if (object[key] === null) {\n return acc;\n }\n\n if (Array.isArray(object[key])) {\n return {\n ...acc,\n [key]: (object[key] as unknown[]).map(inObject),\n } as Record<string, string>;\n }\n\n if (typeof object[key] === 'object') {\n return {\n ...acc,\n [key]: {\n ...inObject(\n { ...(object[key] as Record<string, unknown>) },\n recursionLevel + 1,\n ),\n },\n } as Record<string, string>;\n }\n\n if (typeof object[key] !== 'string') {\n return {\n ...acc,\n [key]: object[key],\n } as Record<string, string>;\n }\n\n if (!hasTemplateString(object[key] as string)) {\n return { ...acc, [key]: object[key] } as Record<string, string>;\n }\n let value = replaceTemplateString(object[key] as string);\n\n try {\n if (utils.string.hasJsonStructure(value)) {\n value = JSON.parse(value);\n }\n // eslint-disable-next-line no-empty\n } catch (e) {}\n\n return {\n ...acc,\n [key]: value,\n } as Record<string, string>;\n }, {} as Record<string, string>);\n };\n\n form.scopedSchema = {\n ...form.schema,\n ...inObject({\n visibilityConditions: form?.schema?.visibilityConditions,\n } as Partial<TSchema>),\n };\n};\n","import { ALL_NAMESPACE_EVENTS, BUILD_EVENT, TSchema } from '@core';\nimport * as Events from '@core/events';\nimport { EEVents } from '@core/constants';\nimport { TFlowType } from '@core/types';\n\n//Field handlers\nimport * as change from '@core/handlers/field/change';\nimport * as mount from '@core/handlers/field/mount';\nimport * as blur from '@core/handlers/field/blur';\nimport * as focus from '@core/handlers/field/focus';\nimport * as templating from './common/templating';\nimport * as api from '@core/handlers/field/api';\nimport * as data from '@core/handlers/field/data';\nimport * as clearFields from '@core/handlers/field/clearFields';\nimport * as visibilityConditions from '@core/handlers/field/visibilityConditions';\nimport * as htmlEventParser from '@core/handlers/field/htmlEventParser';\nimport * as formatters from '@core/handlers/field/formatters';\nimport * as filter from '@core/handlers/field/filter';\nimport * as masks from '@core/handlers/field/masks';\nimport * as validations from '@core/handlers/field/validations';\nimport * as keyup from '@core/handlers/field/keyup';\nimport * as keydown from '@core/handlers/field/keydown';\n\n//Form handlers\nimport * as hooks from '@core/handlers/form/hooks';\nimport * as steps from '@core/handlers/form/steps';\nimport * as validate from '@core/handlers/form/validate';\nimport * as bindFields from '@core/handlers/form/bindFields';\nimport * as formLevelVisibilityConditions from '@core/handlers/form/visibilityConditions';\nimport * as formTemplating from '@core/handlers/form/templating';\n\nconst register = (\n observer: Events.Observer,\n flows: any,\n component?: any | TSchema,\n) => {\n const flow = flows() as TFlowType;\n Object.keys(flow).forEach((event: EEVents) => {\n flow[event].forEach((handler) => {\n if (handler.events) {\n const events = handler.events(component);\n if (Array.isArray(events) && !events.includes(event)) return;\n }\n observer.subscribe(BUILD_EVENT(event, component?.name), handler.handler);\n });\n });\n};\n\nconst fieldFlows = () => ({\n [EEVents.ON_FIELD_MOUNT]: [\n templating,\n mount,\n api,\n validations,\n formatters,\n visibilityConditions,\n clearFields,\n masks,\n data,\n ],\n [EEVents.ON_FIELD_CHANGE]: [\n htmlEventParser,\n filter,\n change,\n validations,\n formatters,\n visibilityConditions,\n clearFields,\n api,\n data,\n masks,\n ],\n [EEVents.ON_FIELD_KEYUP]: [\n htmlEventParser,\n filter,\n keyup,\n validations,\n formatters,\n visibilityConditions,\n clearFields,\n api,\n data,\n masks,\n ],\n [EEVents.ON_FIELD_KEYDOWN]: [\n htmlEventParser,\n filter,\n keydown,\n validations,\n formatters,\n visibilityConditions,\n clearFields,\n api,\n data,\n masks,\n ],\n [EEVents.ON_FIELD_REHYDRATE]: [validations],\n [EEVents.ON_FIELD_CLEARED]: [\n formatters,\n masks,\n filter,\n validations,\n visibilityConditions,\n api,\n data,\n ],\n [EEVents.ON_FIELD_BINDED]: [\n data,\n formatters,\n masks,\n filter,\n validations,\n api,\n visibilityConditions,\n clearFields,\n ],\n [EEVents.ON_FIELD_CLICK]: [\n validations,\n api,\n visibilityConditions,\n clearFields,\n ],\n [EEVents.ON_FIELD_BLUR]: [\n blur,\n formatters,\n masks,\n validations,\n api,\n visibilityConditions,\n clearFields,\n data,\n ],\n [EEVents.ON_FIELD_FOCUS]: [focus, masks],\n [EEVents.AFTER_FIELD_API_CALL]: [\n htmlEventParser,\n filter,\n validations,\n formatters,\n masks,\n data,\n visibilityConditions,\n clearFields,\n ],\n});\n\nconst formFlows = () => ({\n [EEVents.ON_SCOPE_CHANGE]: [formTemplating, formLevelVisibilityConditions],\n [EEVents.ON_FORM_MOUNT]: [\n templating,\n hooks,\n steps,\n formLevelVisibilityConditions,\n ],\n [EEVents.VALIDATE_FORM]: [validate],\n [EEVents.ON_FORM_SUBMIT]: [hooks],\n [EEVents.ON_FORM_UN_MOUNT]: [hooks],\n [EEVents.NAVIGATE_STEP]: [steps],\n [EEVents.NAVIGATE_STEP_BACK]: [steps],\n [EEVents.NAVIGATE_STEP_FORWARD]: [steps],\n [ALL_NAMESPACE_EVENTS(EEVents.ON_SCOPE_CHANGE)]: [\n formLevelVisibilityConditions,\n templating,\n ],\n [EEVents.ON_FORM_REHYDRATE]: [formLevelVisibilityConditions],\n [EEVents.ON_FIELD_CHANGE]: [formLevelVisibilityConditions],\n [EEVents.BIND_FIELDS]: [bindFields],\n [EEVents.ON_FORM_DESTROY_FIELD]: [data],\n});\n\nexport { register, fieldFlows, formFlows };\n","import { SyntheticEvent } from 'react';\n\nimport * as apis from '@core/apis';\nimport * as Events from '@core/events';\n\nimport { fieldFlows, register } from '@core/handlers/flows';\nimport {\n TComponent,\n TComponentPropsMapping,\n TErrors,\n TEventReducedSchema,\n TEventsKeys,\n TField,\n} from '@core/types';\n\nimport { BUILD_EVENT } from '@core';\nimport { EEVents } from '@core/constants';\nimport Base from '@core/managers/Base';\nimport Scope from '@core/managers/Scope';\n\nclass Field extends Base {\n #fieldData: TField;\n #component: TComponent;\n #scopedComponent: TComponent;\n #propsMapping: TComponentPropsMapping;\n scope: Scope;\n constructor(\n observer: Events.Observer,\n component: TComponent,\n propsMapping: TComponentPropsMapping,\n scope: Scope,\n ) {\n super(observer);\n\n this.scopedComponent = component;\n this.#component = component;\n this.#propsMapping = propsMapping;\n this.scope = scope;\n this.#fieldData = {\n blured: false,\n changed: false,\n mounted: false,\n focused: false,\n errors: {},\n failedErrorMessages: [],\n visible: !component.state?.hidden,\n ignore: component.state?.ignoreValue,\n name: component.name,\n };\n\n register(observer, fieldFlows, component);\n }\n\n get value() {\n if (\n this.#propsMapping.setValue &&\n this.#component.props &&\n this.scopedComponent.props &&\n typeof this.scopedComponent.props[this.#propsMapping.setValue] !==\n 'undefined' &&\n this.scopedComponent.props[this.#propsMapping.setValue] !==\n this.#component.props[this.#propsMapping.setValue]\n ) {\n if (\n typeof this.#fieldData.value !== 'undefined' &&\n this.#component.props[this.#propsMapping.setValue] !==\n this.#fieldData.value\n ) {\n return this.#fieldData.value;\n }\n return this.scopedComponent.props[this.#propsMapping.setValue];\n }\n\n return this.#fieldData.mask || this.#fieldData.value;\n }\n\n set value(value: any) {\n this.#fieldData.value = value;\n\n this.scope.globalScope = {\n namespace: 'fields',\n key: this.#component.name,\n data: this.#fieldData,\n };\n }\n\n get component() {\n return this.#component;\n }\n\n get componentProps() {\n return this.#component.props;\n }\n\n set componentProps(props: Record<string, unknown>) {\n this.#component.props = props;\n this.#scopedComponent.props = props;\n }\n\n get data() {\n return this.#fieldData;\n }\n\n set data(data: TField) {\n this.#fieldData = {\n ...this.#fieldData,\n ...data,\n };\n\n this.scope.globalScope = {\n namespace: 'fields',\n key: this.#component.name,\n data: this.#fieldData,\n };\n }\n\n set visibility(visible: boolean) {\n this.#fieldData.visible = visible;\n }\n\n get scopedComponent() {\n return this.#scopedComponent;\n }\n\n set scopedComponent(component: TComponent) {\n this.#scopedComponent = component;\n }\n\n get errors() {\n return this.#fieldData.errors;\n }\n\n set errors(errors: TErrors) {\n this.#fieldData.errors = errors;\n this.scope.globalScope = {\n namespace: 'fields',\n key: this.#component.name,\n data: this.#fieldData,\n };\n }\n\n get props() {\n if (!this.scopedComponent.name || !this.#propsMapping)\n return this.scopedComponent.props;\n\n const propsActionsMapping: Record<string, unknown> = {\n getValue: (event: SyntheticEvent) => {\n this.publish(\n BUILD_EVENT(EEVents.ON_FIELD_CHANGE, this.component.name),\n { event },\n );\n this.publish(EEVents.ON_FIELD_CHANGE, {\n component: this.component.name,\n event,\n });\n },\n onBlur: (event: SyntheticEvent) =>\n this.publish(BUILD_EVENT(EEVents.ON_FIELD_BLUR, this.component.name), {\n event,\n }),\n onClick: (event: SyntheticEvent) =>\n this.publish(BUILD_EVENT(EEVents.ON_FIELD_CLICK, this.component.name), {\n event,\n }),\n onFocus: (event: SyntheticEvent) =>\n this.publish(BUILD_EVENT(EEVents.ON_FIELD_FOCUS, this.component.name), {\n event,\n }),\n onKeyUp: (event: SyntheticEvent) =>\n this.publish(BUILD_EVENT(EEVents.ON_FIELD_KEYUP, this.component.name), {\n event,\n }),\n onKeyDown: (event: SyntheticEvent) =>\n this.publish(\n BUILD_EVENT(EEVents.ON_FIELD_KEYDOWN, this.component.name),\n {\n event,\n },\n ),\n setValue: this.value,\n setErrorMessage: this.getFieldErrorMessages()[0],\n setErrorState: this.fieldHasError(),\n };\n\n return Object.keys(this.#propsMapping).reduce(\n (acc, key) => {\n if (typeof propsActionsMapping[key] === 'undefined') return acc;\n\n return {\n ...acc,\n [this.#propsMapping[key]]: propsActionsMapping[key],\n };\n },\n {\n disabled: this.scope.scope.configs?.disable,\n ...this.#scopedComponent.props,\n },\n );\n }\n\n get mappings() {\n return this.#propsMapping;\n }\n\n getFieldErrorMessages(data = this.#fieldData): string[] {\n if (!data.errors) return [];\n\n return Object.keys(data.errors).reduce((acc, key) => {\n const { errors = {} } = data;\n if (!errors[key].fail) return acc;\n\n if (!this.scopedComponent.errorMessages) {\n return acc;\n }\n return [\n ...acc,\n this.scopedComponent.errorMessages[key] ||\n this.scopedComponent.errorMessages.default,\n ];\n }, [] as string[]);\n }\n\n fieldHasError(errors?: TErrors) {\n if (!errors) {\n errors = this.#fieldData.errors || {};\n }\n return !!Object.keys(errors).find((key) => errors && errors[key].fail, []);\n }\n\n fieldValidationsHaveError(\n setErrorMessages?: boolean,\n event?: TEventsKeys,\n ): boolean {\n if (!this.#scopedComponent.validations || !this.#fieldData.visible)\n return false;\n return !!Object.keys(this.#scopedComponent.validations).find((key) => {\n const { validations = {}, errorMessages } = this\n .#scopedComponent as TComponent;\n const error = apis.validations.run(\n this.#fieldData.value,\n validations[event || key],\n errorMessages,\n );\n\n if (setErrorMessages) {\n this.errors = error;\n }\n\n return this.fieldHasError(error);\n });\n }\n\n /**\n *\n Calculates and returns the version of the current scoped object for a given event\n */\n eventReducedSchema(event: TEventsKeys): TEventReducedSchema {\n return {\n api: this.#scopedComponent.api && this.#scopedComponent.api[event],\n clearFields:\n this.#scopedComponent.clearFields &&\n this.#scopedComponent.clearFields[event],\n formatters:\n this.#scopedComponent.formatters &&\n this.#scopedComponent.formatters[event],\n masks: this.#scopedComponent.masks && this.#scopedComponent.masks[event],\n validations:\n this.#scopedComponent.validations &&\n this.#scopedComponent.validations[event],\n visibilityConditions:\n this.#scopedComponent.visibilityConditions &&\n this.#scopedComponent.visibilityConditions[event],\n };\n }\n\n rehydrate(customChecksum: number | string | object = Math.random()) {\n this.publish(\n BUILD_EVENT(EEVents.ON_FIELD_REHYDRATE, this.#component.name),\n {\n checksum:\n JSON.stringify(this.data) +\n JSON.stringify(this.scopedComponent) +\n customChecksum,\n },\n );\n }\n}\n\nexport default Field;\n","import Field from '@core/managers/Field';\nimport Scope from '@core/managers/Scope';\nimport Base from '@core/managers/Base';\n\nimport * as Events from '@core/events';\nimport {\n TComponent,\n TFormValues,\n TSchema,\n TStepData,\n TComponentPropsMapping,\n TFormEventDirectives,\n TEventsKeys,\n TFields,\n} from '@core/types';\nimport { formFlows, register } from '@core/handlers/flows';\nimport { EEVents } from '@core/constants';\n\nclass Form extends Base {\n #fields: TFields = {};\n #observer: Events.Observer;\n formData: TFormValues;\n formId: string;\n schema: TSchema;\n scopedSchema: TSchema;\n scope: Scope;\n initialValues: Record<string, unknown>;\n #step: TStepData;\n steps: Record<number, TFields> = {};\n group: string;\n constructor(\n formId: string,\n observer: Events.Observer,\n scope: Scope,\n schema: TSchema,\n opts: {\n initialValues: Record<string, unknown>;\n },\n group,\n ) {\n super(observer);\n this.#observer = observer;\n this.schema = schema;\n this.scopedSchema = schema;\n this.scope = scope;\n this.formId = formId;\n this.initialValues = opts?.initialValues;\n this.group = group;\n this.#step = {\n numSteps: schema?.components.length,\n navigated: false,\n index: 0,\n currentStepSchema: schema?.components[0],\n isValid: false,\n data: {},\n };\n\n this.formData = {\n predictableErroredFields: [],\n erroredFields: [],\n fields: {},\n formatted: {},\n form: {\n scope: scope.getGlobalScope(),\n steps: this.#step,\n isValid: false,\n messages: [],\n },\n };\n\n register(observer, formFlows, schema);\n }\n\n get step() {\n return this.#step;\n }\n\n set step(step: TStepData) {\n this.#step = step;\n }\n\n get fields() {\n return this.#fields || {};\n }\n\n eventReducedSchema(event: TEventsKeys): TFormEventDirectives {\n return this.scopedSchema\n ? (Object.keys(this.scopedSchema).reduce((acc, key) => {\n if (!this.scopedSchema[key]) return acc;\n return { ...acc, [key]: this.scopedSchema[key][event] };\n }, {}) as any)\n : ({} as TFormEventDirectives);\n }\n\n getFieldInstance(\n component: TComponent,\n propsMapping: TComponentPropsMapping = {},\n ) {\n component.name =\n component.name ||\n component.component + '_' + JSON.stringify(component.props);\n if (!this.steps[this.#step.index]) {\n this.steps[this.#step.index] = {};\n }\n\n if (this.fields[component.name]) {\n return this.fields[component.name];\n }\n\n this.fields[component.name] = new Field(\n this.#observer,\n component,\n propsMapping,\n this.scope,\n );\n this.steps[this.#step.index][component.name] = this.fields[component.name];\n return this.fields[component.name];\n }\n\n rehydrate() {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { components, ...rest } = this.scopedSchema;\n this.publish(EEVents.ON_FORM_REHYDRATE, {\n checksum: JSON.stringify(rest),\n });\n }\n\n destroyField(field: string) {\n if (!this.#fields[field]) return;\n delete this.#fields[field];\n delete this.steps[this.#step.index][field];\n this.publish(EEVents.ON_FORM_DESTROY_FIELD, {\n checksum: field,\n });\n }\n}\n\nexport default Form;\nexport type { Form };\n","import Field from '@core/managers/Field';\nimport { Form } from '@core/managers/Form';\nimport {\n TEventReducedSchema,\n TEventsKeys,\n TFormEventDirectives,\n TObserverData,\n} from '@core/types';\n\nexport type TEventPublishPayload = {\n checksum?: string;\n} & {\n [key in string]?: unknown;\n};\n\nexport type TEventInformation<T> = TObserverData<T> & {\n eventReducedSchema: TEventReducedSchema;\n formEventDirectives: TFormEventDirectives;\n form: Form;\n field: Field;\n coreEvent: TEventsKeys;\n};\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport enum EFlowLogging {\n OBSERVER = 'OBSERVER',\n REACT_FIELD_ADAPTER = 'REACT FIELD ADAPTER',\n FIELD_HANDLER = 'FIELD HANDLER',\n}\n\nexport type TLoggingEvent = {\n level: 'error' | 'info';\n data?: any;\n flow: EFlowLogging;\n action: string;\n error?: any;\n};\n","import Scope from '@core/managers/Scope';\nimport { TEventInformation } from '@core/events';\nimport Form from '@core/managers/Form';\n\nimport {\n IObservable,\n TEvents,\n TEventsKeys,\n TObservable,\n TObserverData,\n TSchema,\n TScope,\n} from '@core/types';\nimport {\n DEFAULT_FORM_ID,\n EEVents,\n EXTRACT_CORE_NAMESPACE,\n EXTRACT_EVENT_NAMESPACE,\n} from '@core/constants';\nimport {\n EFlowLogging,\n TEventPublishPayload,\n TLoggingEvent,\n} from '@core/events/events.types';\nimport { ObserverError } from '@core/events/ObserverError';\n\nclass Factory {\n workers: Record<string, Form> = {};\n\n constructor() {\n this.getFormInstance = this.getFormInstance.bind(this);\n this.getGroupFormsIds = this.getGroupFormsIds.bind(this);\n }\n\n getGroupFormsIds(group: string) {\n return Object.keys(this.workers || {}).filter(\n (key) => this.workers[key].group === group,\n [],\n );\n }\n\n getFormInstance(\n namespace = DEFAULT_FORM_ID,\n opts?: {\n schema?: TSchema;\n initialScope?: TScope;\n initialValues?: Record<string, any>;\n newInstance?: boolean;\n group?: string;\n },\n ) {\n if (this.workers[namespace] && !opts?.newInstance) {\n return this.workers[namespace];\n }\n\n const observer = new Observer(\n namespace,\n opts?.initialScope?.configs?.enableLogging,\n );\n const scope = new Scope(observer);\n\n scope.initialScope = { ...opts?.initialScope, ...opts?.schema?.iVars };\n this.workers[namespace] = new Form(\n namespace,\n observer,\n scope,\n opts?.schema,\n {\n initialValues: opts?.initialValues || {},\n },\n opts?.group,\n );\n return this.workers[namespace];\n }\n}\n\nclass Observer implements IObservable {\n regexBasedEvents: Record<string, { regex: RegExp; handlers: TObservable[] }> =\n {};\n events: TEvents = {};\n history: { [key in EEVents]?: string } = {};\n namespace: string;\n enableLogging: boolean;\n constructor(namespace: string, enableLogging = false) {\n this.namespace = namespace;\n this.enableLogging = enableLogging;\n }\n\n #buildEventPayload = ({\n event,\n data,\n payload,\n }: TObserverData<unknown>): TEventInformation<unknown> => {\n const eventFieldName = EXTRACT_EVENT_NAMESPACE(event);\n const form = getFormInstance(this.namespace, data?.opts);\n const field = form.fields[eventFieldName];\n const coreEvent = EXTRACT_CORE_NAMESPACE(event);\n\n return {\n eventReducedSchema: field && field.eventReducedSchema(coreEvent),\n formEventDirectives: form && form.eventReducedSchema(coreEvent),\n namespace: this.namespace,\n coreEvent,\n form,\n field,\n event,\n data,\n payload,\n };\n };\n\n runForRegexBasedEvent(eventName, cb: (event: TEventsKeys) => void) {\n let isMatchEvent = false;\n for (const event of Object.keys(this.events)) {\n isMatchEvent = (eventName as RegExp).test(event);\n isMatchEvent && cb(event as TEventsKeys);\n }\n\n return isMatchEvent;\n }\n\n handleRegexSubscription(eventName: any, handler: TObservable) {\n const foundEvent = this.runForRegexBasedEvent(eventName, (event) =>\n this.subscribe(event as TEventsKeys, handler),\n );\n\n if (!foundEvent) {\n this.regexBasedEvents[eventName] = {\n regex: eventName,\n handlers: Array.isArray(this.events[eventName])\n ? [...this.events[eventName], handler]\n : [handler],\n };\n }\n }\n\n /**\n * This function lets you subscribe to a given event and register one callback to be called when someone published in it\n *\n * The callback you redister will, return you the published data and one function to unregister your callback from that event\n *\n */\n subscribe(eventName: TEventsKeys, handler: TObservable) {\n if (typeof eventName === 'object') {\n this.handleRegexSubscription(eventName, handler);\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n return () => {};\n }\n\n this.events = {\n ...this.events,\n [eventName]: Array.isArray(this.events[eventName])\n ? [...this.events[eventName], handler]\n : [handler],\n };\n\n return () => {\n this.unsubscribe(eventName, handler);\n };\n }\n\n unsubscribe(eventName: TEventsKeys, handler: TObservable) {\n this.events = {\n ...this.events,\n [eventName]: (this.events as TEvents)[eventName].filter(\n (eventFn) => eventFn !== handler,\n ),\n };\n }\n\n isAsyncFunction(fn: (...data: any) => any) {\n const string = fn.toString().trim();\n return !!(\n fn[Symbol.toStringTag] === 'AsyncFunction' ||\n fn.constructor.name == 'AsyncFunction' ||\n string.match(/^async /) ||\n string.match(/return _ref[^\\\\.]*\\.apply/) ||\n fn instanceof Promise\n );\n }\n\n /**\n * Allows to publish data to a given event name\n *\n * Will iterate the subscriptions and call their handlers.\n *\n * When calling the handler, will also inject the unsubscribe function\n *\n * This methods also accepts one regex and will find the matchin events and\n * publish in them\n *\n */\n async publish(eventName: TEventsKeys, data?: TEventPublishPayload) {\n if (data?.checksum && this.history[eventName] === data?.checksum) return;\n\n this.history[eventName] = data?.checksum;\n if (typeof eventName === 'object') {\n this.runForRegexBasedEvent(eventName, (event) =>\n this.publish(event as TEventsKeys, data),\n );\n return;\n }\n\n for (const regexEvent of Object.keys(this.regexBasedEvents)) {\n const isMatchEvent = new RegExp(\n this.regexBasedEvents[regexEvent].regex,\n ).test(eventName);\n if (isMatchEvent) {\n await this.publishForEvents(eventName, data, {\n [eventName]: this.regexBasedEvents[regexEvent].handlers,\n });\n }\n }\n\n return this.publishForEvents(eventName, data, this.events);\n }\n\n async publishForEvents(eventName: TEventsKeys, data = {}, events: TEvents) {\n if (!events[eventName]) return {};\n let lastCallbackResult = {};\n\n for (const fn of events[eventName]) {\n try {\n if (!fn) return;\n const payload: TObserverData<unknown> = this.#buildEventPayload({\n data: {\n ...data,\n ...lastCallbackResult,\n },\n payload: data,\n event: eventName,\n namespace: this.namespace,\n });\n const isAsync = this.isAsyncFunction(fn);\n\n const handlerRes = isAsync\n ? await fn(payload, () => this.unsubscribe(eventName, fn))\n : fn(payload, () => this.unsubscribe(eventName, fn));\n\n lastCallbackResult = {\n ...lastCallbackResult,\n ...handlerRes,\n };\n } catch (e) {\n if (e instanceof ObserverError && e.breaksObservingChain) {\n this.logError(EFlowLogging.OBSERVER, eventName, 'publish', e);\n return {};\n }\n throw e;\n }\n }\n\n return {\n ...lastCallbackResult,\n ...getFormInstance(this.namespace).formData,\n };\n }\n\n logError(\n flow: Pick<TLoggingEvent, 'flow'>['flow'],\n event: string,\n method: string,\n error: unknown,\n ) {\n if (!this.enableLogging) return;\n event !== EEVents.LOG &&\n this.publish(EEVents.LOG, {\n level: 'error',\n data: {\n event,\n error,\n },\n action: method,\n flow,\n });\n }\n\n logInfo(\n flow: Pick<TLoggingEvent, 'flow'>['flow'],\n event: string,\n method: string,\n extraData?: any,\n ) {\n if (!this.enableLogging) return;\n event !== EEVents.LOG &&\n this.publish(EEVents.LOG, {\n level: 'info',\n data: {\n event,\n ...extraData,\n },\n action: method,\n flow,\n });\n }\n}\n\nexport const { getFormInstance, getGroupFormsIds } = new Factory();\nexport { Observer };\n","import React, { ReactElement, useMemo, useEffect } from 'react';\n\nimport { TChildWrapperProps } from '@react/types';\nimport { BUILD_EVENT } from '@core';\nimport { EEVents } from '@core/constants';\nimport { useForceUpdate } from '@react/useForceUpdate';\nimport { getFormInstance } from '@core/managers';\n\nconst Field = ({\n children,\n component,\n wrapper,\n propsMapping = {},\n formId,\n onMount,\n onChange,\n onFocus,\n onBlur,\n onClick,\n onRehydrate,\n afterApiCall,\n}: TChildWrapperProps): ReactElement | null => {\n const [forceChange, dispatchForceChange] = useForceUpdate();\n const [forceRehydrate, dispatchForceRehydrate] = useForceUpdate();\n const [forceBlur, dispatchForceBlur] = useForceUpdate();\n const [forceFocus, dispatchForceFocus] = useForceUpdate();\n const [forceClick, dispatchForceClick] = useForceUpdate();\n const [forceAfterApiCall, dispatchForceAfterApiCall] = useForceUpdate();\n const fieldInstance = useMemo(\n () => getFormInstance(formId).getFieldInstance(component, propsMapping),\n [],\n );\n const Element = useMemo(() => wrapper, [wrapper]);\n\n useMemo(() => {\n fieldInstance.publish(BUILD_EVENT(EEVents.ON_FIELD_MOUNT, component.name));\n onMount(fieldInstance.data);\n }, []);\n\n // Effects to make the Field -> Form callback flow synchronous\n\n useEffect(() => {\n if (!forceRehydrate) return;\n onRehydrate(fieldInstance.data);\n }, [forceRehydrate]);\n\n useEffect(() => {\n if (!forceChange) return;\n onChange(fieldInstance.data);\n }, [forceChange]);\n\n useEffect(() => {\n if (!forceBlur) return;\n onBlur(fieldInstance.data);\n }, [forceBlur]);\n\n useEffect(() => {\n if (!forceFocus) return;\n onFocus(fieldInstance.data);\n }, [forceFocus]);\n\n useEffect(() => {\n if (!forceClick) return;\n onClick(fieldInstance.data);\n }, [forceClick]);\n\n useEffect(() => {\n if (!forceAfterApiCall) return;\n afterApiCall(fieldInstance.data);\n }, [forceAfterApiCall]);\n\n //Effects to listen to form Events\n useEffect(\n () =>\n fieldInstance.subscribe(\n BUILD_EVENT(EEVents.ON_FIELD_REHYDRATE, component.name),\n () => dispatchForceRehydrate(),\n ),\n [],\n );\n\n useEffect(\n () =>\n fieldInstance.subscribe(\n BUILD_EVENT(EEVents.ON_FIELD_BLUR, component.name),\n () => dispatchForceBlur(),\n ),\n [],\n );\n\n useEffect(\n () =>\n fieldInstance.subscribe(\n BUILD_EVENT(EEVents.ON_FIELD_CHANGE, component.name),\n () => dispatchForceChange(),\n ),\n [],\n );\n\n useEffect(\n () =>\n fieldInstance.subscribe(\n BUILD_EVENT(EEVents.ON_FIELD_FOCUS, component.name),\n () => dispatchForceFocus(),\n ),\n [],\n );\n\n useEffect(\n () =>\n fieldInstance.subscribe(\n BUILD_EVENT(EEVents.ON_FIELD_CLICK, component.name),\n () => dispatchForceClick(),\n ),\n [],\n );\n\n useEffect(\n () =>\n fieldInstance.subscribe(\n BUILD_EVENT(EEVents.AFTER_FIELD_API_CALL, component.name),\n () => dispatchForceAfterApiCall(),\n ),\n [],\n );\n\n if (!fieldInstance.data.visible || !fieldInstance.data.mounted) {\n return null;\n }\n return <Element {...fieldInstance.props}>{children}</Element>;\n};\n\nexport default Field;\n","import React, { forwardRef } from 'react';\n\nconst Submit = forwardRef<HTMLInputElement>((_, ref) => (\n <input ref={ref} type=\"submit\" style={{ display: 'none' }} />\n));\nSubmit.displayName = 'Submit';\n\nexport default Submit;\n","import React, { createContext, ReactElement } from 'react';\n\nimport * as T from '@adapters/react';\n\nconst FormContext = createContext<T.TContext>({} as T.TContext);\nFormContext.displayName = 'FormContext';\n\nconst FormProvider = ({\n children,\n mapper,\n propsMapping,\n}: T.TProvider): ReactElement => {\n return (\n <FormContext.Provider\n value={{\n mapper,\n propsMapping,\n }}\n >\n {children}\n </FormContext.Provider>\n );\n};\n\nexport { FormContext, FormProvider };\n","import React, {\n ReactElement,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useReducer,\n useRef,\n} from 'react';\nimport { ALL_NAMESPACE_EVENTS, CoreEvents, TFormRefActions } from '@core';\nimport { DEFAULT_FORM_ID, EEVents } from '@core/constants';\n\nimport { TComponent, TFormProps } from './types';\nimport ChildWrapper from '@react/Field';\nimport Submit from '@react/Submit';\nimport { FormContext } from '@react/context';\nimport { getFormInstance } from '@core/managers';\n\nconst Form = React.forwardRef<TFormRefActions, TFormProps>(\n (\n {\n autoComplete,\n hooks,\n iVars,\n id = DEFAULT_FORM_ID,\n submitOnValidOnly = true,\n initialValues = {},\n className,\n schema,\n group,\n onData,\n onSubmit,\n onBlur,\n onClick,\n afterApiCall,\n onFormMount,\n onFieldMount,\n onStep,\n onFocus,\n onLog,\n onScopeChange,\n onFieldRehydrate,\n renderFieldWrapper,\n disable,\n },\n ref,\n ): ReactElement => {\n const [, forceUpdate] = useReducer((x) => x + 1, 0);\n const formRef = useRef<HTMLFormElement>(null);\n const submitRef = useRef<HTMLInputElement>(null);\n const { mapper: Mapper, propsMapping: PropsMapping } =\n useContext(FormContext);\n\n const formInstance = useMemo(() => {\n return getFormInstance(id, {\n group,\n schema,\n newInstance: true,\n initialScope: {\n configs: { ...schema?.configs, enableLogging: !!onLog, disable },\n global: {\n ...schema?.iVars,\n ...iVars,\n },\n },\n initialValues,\n });\n }, []);\n\n useEffect(() => {\n formInstance.publish(EEVents.ON_FORM_MOUNT);\n }, []);\n\n const StepWrapper = useMemo(\n () =>\n Mapper.step\n ? (Mapper.step.component as new () => React.Component)\n : React.Fragment,\n [],\n );\n const Children = useMemo(() => {\n if (!formInstance.step.currentStepSchema) {\n return undefined;\n }\n\n const generateComponentChildren = (\n component: TComponent,\n componentLevel = 0,\n ): any => {\n return component.children?.map((component: TComponent, i: number) => {\n const Component = Mapper[component.component as string]\n ?.component as new () => React.Component;\n\n const children = (\n <ChildWrapper\n key={`${formInstance.step.index}_${componentLevel}_${component.name}_${component.component}_${i}`}\n component={component}\n wrapper={Component}\n propsMapping={\n PropsMapping[component.component] || PropsMapping.__default__\n }\n formId={id}\n onMount={(data) => {\n onFieldMount &&\n onFieldMount(formInstance.formData, component, data);\n }}\n onRehydrate={(data) => {\n onFieldRehydrate &&\n onFieldRehydrate(formInstance.formData, component, data);\n }}\n onChange={(data) => {\n onData && onData(formInstance.formData, component, data);\n }}\n onBlur={(data) => {\n onBlur && onBlur(formInstance.formData, component, data);\n }}\n onClick={(data) => {\n onClick && onClick(formInstance.formData, data);\n }}\n afterApiCall={(data) => {\n afterApiCall &&\n afterApiCall(formInstance.formData, component, data);\n }}\n onFocus={(data) => {\n onFocus &&\n onFocus(formInstance.formData, component, {\n ...data,\n schemaLocation: {\n step: formInstance.step.index,\n depth: componentLevel,\n index: i,\n },\n });\n }}\n >\n {Array.isArray(component.children)\n ? generateComponentChildren(component, componentLevel++)\n : component.children}\n </ChildWrapper>\n );\n\n if (renderFieldWrapper) {\n return renderFieldWrapper(component, children as any);\n }\n return children;\n });\n };\n return generateComponentChildren(formInstance.step.currentStepSchema);\n }, [formInstance.step.index, id]);\n\n useEffect(() => {\n formInstance.scope.globalScope = {\n namespace: 'configs',\n data: {\n disable,\n },\n };\n }, [disable]);\n\n useEffect(() => {\n onFormMount && onFormMount(formInstance.formData);\n }, []);\n\n useEffect(() => {\n formInstance.scope.globalScope = {\n namespace: 'configs',\n data: {\n disable,\n },\n };\n }, [disable]);\n\n useEffect(() => {\n formInstance.scope.globalScope = {\n namespace: 'global',\n data: {\n ...schema?.iVars,\n ...iVars,\n },\n };\n }, [JSON.stringify(iVars)]);\n\n useEffect(\n () =>\n formInstance.subscribe(EEVents.ON_FORM_REHYDRATE, () => {\n forceUpdate();\n }),\n [],\n );\n useEffect(\n () =>\n formInstance.subscribe(EEVents.LOG, ({ data }) => onLog && onLog(data)),\n [],\n );\n useMemo(\n () =>\n formInstance.subscribe(\n ALL_NAMESPACE_EVENTS(EEVents.ON_SCOPE_CHANGE),\n (data) =>\n onScopeChange &&\n onScopeChange(\n formInstance.scope.scope,\n data.data.namespace,\n data.data.key,\n ),\n ),\n [],\n );\n\n useEffect(\n () =>\n formInstance.subscribe(EEVents.ON_FORM_SUBMIT, ({ data }) => {\n const hookResult =\n hooks?.preSubmit && hooks?.preSubmit(formInstance.formData);\n if (!formInstance.formData.form.isValid && submitOnValidOnly) return;\n\n onSubmit &&\n onSubmit(data.event, {\n ...formInstance.formData,\n formatted: { ...formInstance.formData.formatted, ...hookResult },\n });\n }),\n [],\n );\n\n useEffect(\n () =>\n formInstance.subscribeBulk(\n [\n CoreEvents.NAVIGATE_STEP_BACK,\n CoreEvents.NAVIGATE_STEP_FORWARD,\n CoreEvents.NAVIGATE_STEP,\n ],\n () => {\n onStep && onStep(formInstance.formData);\n forceUpdate();\n },\n ),\n [],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n values: () => formInstance.formData,\n step: formInstance.publishFor(CoreEvents.NAVIGATE_STEP),\n stepForward: formInstance.publishFor(CoreEvents.NAVIGATE_STEP_FORWARD),\n bindFields: formInstance.publishFor(CoreEvents.BIND_FIELDS),\n stepBack: formInstance.publishFor(CoreEvents.NAVIGATE_STEP_BACK),\n validateForm: formInstance.publishFor(CoreEvents.VALIDATE_FORM),\n submit: () => submitRef.current?.click(),\n schema,\n }),\n [],\n );\n\n return (\n <form\n action={formInstance.scopedSchema.action}\n method={formInstance.scopedSchema.method}\n className={className}\n ref={formRef}\n autoComplete={autoComplete}\n onSubmit={(event) => {\n formInstance.publish(CoreEvents.ON_FORM_SUBMIT, { event });\n }}\n >\n <StepWrapper {...formInstance.step.currentStepSchema?.props}>\n {Children}\n </StepWrapper>\n {!formInstance.scopedSchema.disableFormSubmit && (\n <Submit ref={submitRef} />\n )}\n </form>\n );\n },\n);\n\n//If we do not have schema present loading component if defined and render only when we have schema\nconst SchemaGuard = React.forwardRef<TFormRefActions, TFormProps>(\n (props, ref): ReactElement => {\n if (!props.schema)\n return props.renderLoading ? props.renderLoading() : <></>;\n\n return <Form {...props} ref={ref} />;\n },\n);\n\nexport default SchemaGuard;\n","import React, { ReactElement, useEffect, useMemo } from 'react';\n\nimport { BUILD_EVENT, TComponent } from '@core';\nimport { DEFAULT_FORM_HOOK_ID, EEVents } from '@core/constants';\n\nimport { useForceUpdate } from '@react/useForceUpdate';\nimport { getFormInstance } from '@core/managers';\nimport { TAsFormFieldProps, TDecoratorProps } from '../react/types';\n\nconst asFormField =\n <OriginalComponentProps,>({ Comp, propsMapping }: TAsFormFieldProps) =>\n ({\n name,\n validations,\n errorMessages,\n masks,\n clearFields,\n api,\n filter,\n formatters,\n visibilityConditions,\n formId = DEFAULT_FORM_HOOK_ID,\n visibility = true,\n value,\n disabled = false,\n optionList = [],\n onSelected,\n ...props\n }: TDecoratorProps<OriginalComponentProps>): ReactElement => {\n const [, forceUpdate] = useForceUpdate();\n const component: TComponent = useMemo(\n () => ({\n state: {\n hidden: !visibility,\n },\n component: '',\n name,\n validations,\n errorMessages,\n masks,\n filter,\n visibilityConditions,\n formatters,\n clearFields,\n api,\n }),\n [\n errorMessages,\n name,\n filter,\n formatters,\n masks,\n validations,\n visibilityConditions,\n clearFields,\n api,\n ],\n );\n const fieldInstance = useMemo(\n () => getFormInstance(formId).getFieldInstance(component, propsMapping),\n [],\n );\n const getValue = useMemo(\n () => props[propsMapping.getValue as string],\n [props],\n );\n const onBlur = useMemo(() => props[propsMapping.onBlur as string], [props]);\n const onClick = useMemo(\n () => props[propsMapping.onClick as string],\n [props],\n );\n const onFocus = useMemo(\n () => props[propsMapping.onFocus as string],\n [props],\n );\n const onKeyUp = useMemo(\n () => props[propsMapping.onKeyUp as string],\n [props],\n );\n const onKeyDown = useMemo(\n () => props[propsMapping.onKeyDown as string],\n [props],\n );\n\n useMemo(() => {\n fieldInstance.publish(\n BUILD_EVENT(EEVents.ON_FIELD_MOUNT, component.name),\n );\n }, []);\n\n useMemo(() => {\n fieldInstance.subscribeBulk(\n [\n BUILD_EVENT(EEVents.ON_FIELD_MOUNT, component.name),\n BUILD_EVENT(EEVents.ON_FIELD_REHYDRATE, component.name),\n ],\n () => {\n forceUpdate();\n onSelected && onSelected(fieldInstance.data);\n },\n );\n }, []);\n\n useMemo(() => {\n fieldInstance.subscribe(\n BUILD_EVENT(EEVents.ON_FIELD_CHANGE, component.name),\n ({ data }) => {\n forceUpdate();\n getValue && getValue(data.event, fieldInstance.data);\n onSelected && onSelected(fieldInstance.data);\n },\n );\n }, [getValue]);\n\n useMemo(() => {\n fieldInstance.subscribe(\n BUILD_EVENT(EEVents.ON_FIELD_BLUR, component.name),\n ({ data }) => {\n forceUpdate();\n onBlur && onBlur(data.event);\n },\n );\n }, [onBlur]);\n\n useMemo(() => {\n fieldInstance.subscribe(\n BUILD_EVENT(EEVents.ON_FIELD_CLICK, component.name),\n ({ data }) => {\n forceUpdate();\n onClick && onClick(data.event);\n },\n );\n }, [onClick]);\n\n useMemo(() => {\n fieldInstance.subscribe(\n BUILD_EVENT(EEVents.ON_FIELD_FOCUS, component.name),\n ({ data }) => {\n forceUpdate();\n onFocus && onFocus(data.event);\n },\n );\n }, [onFocus]);\n\n useMemo(() => {\n fieldInstance.subscribe(\n BUILD_EVENT(EEVents.ON_FIELD_KEYUP, component.name),\n ({ data }) => {\n forceUpdate();\n onKeyUp && onKeyUp(data.event);\n },\n );\n }, [onKeyUp]);\n\n useMemo(() => {\n fieldInstance.subscribe(\n BUILD_EVENT(EEVents.ON_FIELD_KEYDOWN, component.name),\n ({ data }) => {\n forceUpdate();\n onKeyDown && onKeyDown(data.event);\n },\n );\n }, [onKeyDown]);\n\n useEffect(() => {\n if (typeof value === 'undefined') return;\n fieldInstance.value = value;\n fieldInstance.rehydrate();\n }, [value]);\n\n useEffect(() => {\n fieldInstance.visibility = visibility;\n fieldInstance.rehydrate();\n }, [visibility]);\n\n useEffect(() => {\n fieldInstance.componentProps = {\n ...fieldInstance.componentProps,\n disabled,\n };\n }, [disabled]);\n\n useEffect(() => {\n fieldInstance.componentProps = {\n ...fieldInstance.componentProps,\n optionList,\n };\n fieldInstance.rehydrate(JSON.stringify(optionList));\n }, [optionList]);\n\n useEffect(() => {\n return () => getFormInstance(formId).destroyField(name);\n }, []);\n\n if (!fieldInstance.data.visible) {\n return <></>;\n }\n\n return <Comp {...props} {...fieldInstance.props} />;\n };\n\nexport default asFormField;\n","import { useEffect, useCallback } from 'react';\n\nimport {\n TChildrenOptions,\n TFormValues,\n THookReturn,\n TUseFormProps,\n} from '../react/types';\n\nimport { CoreEvents, ALL_NAMESPACE_EVENTS } from '@core';\nimport { DEFAULT_FORM_HOOK_ID, EEVents } from '@core/constants';\nimport { getFormInstance } from '@core/managers';\nimport { getScopedField } from '@core/utils/common';\n\n/**\n * This hooks lets you connect to your form/s in anywhere in your application. Even if you are outside the <FormProvider />\n *\n * You can connect to:\n * - A specific form\n * - Several forms identified by their id's\n * - A group of forms\n *\n */\nconst useForm = ({\n onValid,\n onData,\n onClick,\n onSubmit,\n id = DEFAULT_FORM_HOOK_ID,\n ids,\n}: TUseFormProps): THookReturn => {\n /**\n * Subscribe to some event.\n *\n * If the hook has more than one formId, will run subscription for all of them\n *\n * @param event The event name\n * @param cb The callback to run on subscription\n */\n const subscribe = (event, cb) => {\n if (!cb) return;\n if (ids) {\n ids.map((formId) =>\n getFormInstance(formId).subscribe(event, ({ data }) =>\n cb(getFormInstance(formId).formData, { field: data.field }),\n ),\n );\n return;\n }\n\n getFormInstance(id).subscribe(event, cb);\n };\n\n /**\n * Get all the available form data\n *\n * Will return to a given form, or data to multiple form in the same data structure\n *\n * @returns form data\n */\n const extractFormsData = (opts?: TChildrenOptions) => {\n const formData = !ids\n ? getFormInstance(id).formData\n : (ids.reduce(\n (acc, formId) =>\n Object.keys(acc).reduce(\n (innerAcc, key) => ({\n ...innerAcc,\n [key]: {\n ...acc[key],\n ...getFormInstance(formId).formData[key],\n },\n }),\n {},\n ),\n {\n formatted: {},\n erroredFields: {},\n fields: {},\n form: {},\n predictableErroredFields: {},\n filteredFields: {},\n },\n ) as TFormValues);\n if (\n opts &&\n Object.keys(opts).length &&\n (opts.scopeBlurredChildren ||\n opts.scopeChangedChildren ||\n opts.childrenScope)\n ) {\n const keys = Object.keys(formData.formatted).filter((key) => {\n return (\n (opts?.scopeBlurredChildren && formData.fields[key].blured) ||\n (opts?.scopeChangedChildren && formData.fields[key].changed) ||\n opts?.childrenScope?.includes(key)\n );\n });\n formData.formatted = getScopedField(formData.formatted, keys);\n }\n\n return formData;\n };\n\n const onDataChange = useCallback(() => {\n let data = getFormInstance(id).formData;\n if (ids) {\n data = ids.reduce(\n (acc, formId) => ({\n ...acc,\n [formId]: getFormInstance(formId).formData,\n }),\n {},\n ) as TFormValues;\n }\n\n onData && onData(data);\n }, [onData, onValid]);\n\n useEffect(\n () => subscribe(EEVents.ON_FIELD_VALIDATION_TOGGLE, onValid),\n [onValid],\n );\n useEffect(\n () => subscribe(EEVents.ON_FIELD_CHANGE, onDataChange),\n [onData, onValid],\n );\n useEffect(\n () =>\n subscribe(\n ALL_NAMESPACE_EVENTS(CoreEvents.ON_FIELD_REHYDRATE),\n onDataChange,\n ),\n [onData, onValid],\n );\n useEffect(\n () => subscribe(CoreEvents.ON_FORM_DESTROY_FIELD, onDataChange),\n [onData, onValid],\n );\n useEffect(\n () =>\n subscribe(\n ALL_NAMESPACE_EVENTS(CoreEvents.ON_FIELD_CLICK),\n () => onClick && onClick(extractFormsData()),\n ),\n [onClick],\n );\n\n useEffect(\n () =>\n subscribe(CoreEvents.ON_FORM_SUBMIT, () => {\n onSubmit && onSubmit(extractFormsData());\n }),\n [onSubmit],\n );\n\n const submitForm = () =>\n getFormInstance(ids ? ids[0] : id).publish(CoreEvents.ON_FORM_SUBMIT);\n\n return { submitForm, formData: extractFormsData };\n};\n\nexport default useForm;\n"],"names":["BUILD_EVENT","event","namespace","key","ALL_NAMESPACE_EVENTS","RegExp","concat","CoreEvents","ON_FIELD_VALIDATION_TOGGLE","ON_FIELD_MOUNT","ON_FIELD_CHANGE","ON_FIELD_BLUR","ON_FIELD_FOCUS","ON_FIELD_REHYDRATE","ON_FIELD_CLEARED","ON_FIELD_CLICK","ON_FIELD_KEYUP","ON_FIELD_KEYDOWN","ON_FIELD_BINDED","AFTER_FIELD_API_CALL","RUN_FIELD_VALIDATIONS","RUN_FIELD_FORMATTERS","RUN_FIELD_MASKS","ON_SCOPE_CHANGE","ON_FORM_REHYDRATE","ON_FORM_SUBMIT","ON_FORM_MOUNT","ON_FORM_UN_MOUNT","ON_FORM_DATA","ON_FORM_DESTROY_FIELD","NAVIGATE_STEP","NAVIGATE_STEP_FORWARD","NAVIGATE_STEP_BACK","VALIDATE_FORM","BIND_FIELDS","LOG","DEFAULT_FORM_ID","DEFAULT_FORM_HOOK_ID","useForceUpdate","_useState2","_slicedToArray","useState","value","setValue","Base","constructor","observer","_this","this","_classCallCheck","_Base_observer","set","_Base_debounceQueue","debounceTime","debounce","fn","arguments","length","undefined","__awaiter","_regeneratorRuntime","mark","_callee","_this2","wrap","_context","prev","next","abrupt","Promise","resolve","__classPrivateFieldGet","clearTimeout","setTimeout","stop","__classPrivateFieldSet","publish","bind","subscribe","subscribeBulk","subscriptions","cb","events","_this3","forEach","data","publishFor","_this4","_callee2","_context2","sent","logError","file","method","error","logInfo","extraData","Scope","_Base","_callSuper","_Scope_scope","global","api","hooks","configs","fields","_inherits","get","getGlobalScope","scope","_ref","_defineProperty","Object","assign","eventName","getValueByPath","object","split","reduce","acc","part","template","getScopedField","childrenScope","keys","includes","extractTargetString","target","formScope","lastIndex","toString","lastIndexOf","substringTemplate","substring","match","indexOf","originalMatchLength","defaultValue","parts","_step","_iterator","_createForOfIteratorHelper","s","n","done","parse","err","e","f","scopedTemplateValue","JSON","stringify","replace","encapsulateIn","origin","path","form","field","getType","v","test","getNewPart","subObject","clonedParts","_toConsumableArray","splice","getTypeCard","availableOptions","rawValue","removeGaps","types","creditCardType","filter","id1","type","some","id2","formatValue","addGaps","gaps","_gaps$reduce","_ref2","offset","i","_ref3","regexString","replaceString","digitNumber","_gaps$reduce2","trim","slice","lengths","hasJsonStructure","str","result","prototype","call","undo_splitter","formatterValue","originalValue","formattersApplied","formatter","nextStartingIndex","position","formatters","splitter","formattedValue","capitalize","charAt","toUpperCase","upperCase","_ref4","gapsCreditCard","_ref5","_utils$creditCard$get2","utils","onlyNumbers","_ref6","onlyLetters","_ref7","regex","_ref8","callback","_ref9","run","componentFormatters","undo","newValue","formatterFn","generic","_ref7$value","maskValue","masked","item","_item$to","to","mask","from","maskedPortion","Array","join","masks","cardNumber","hideCardNumber","cardMask","cardDate","fixedValue","valZeroTwo","currencyMask","_ref5$value","replacedValue","Intl","NumberFormat","locale","minimumFractionDigits","maximumFractionDigits","style","currency","format","feinMask","replaceAll","_ref8$value","targetReplaceMask","dateRearrangeMapper","DDMMYYYY","dateParts","YYYYMMDD","YYYYDDMM","MMDDYYYY","timestamp","Date","validationValue","fail","_ref16","_ref16$value","validations","hasError","date","_ref30","_ref30$value","_a","_b","intervals","originValue","originDate","targetDate","_c","_d","getIntervalsDate","intervalsMapper","years","setUTCFullYear","getUTCFullYear","months","setUTCMonth","getUTCMonth","days","setDate","getUTCDate","interval","_e","getDate","setMonth","getMonth","onlyValidDate","isFinite","originTimestamp","getTime","targetTimestamp","operator","between","_ref29","dates","start","end","validation","parsedValue","parseInt","isIncludedBoundaries","conditions","_ref32","_ref32$value","conditionResult","rule","forceDefinedOrigin","forceDefinedTarget","String","condition","and","every","or","multipleValidations","_ref33","_ref33$value","values","AND","OR","NOT","validDate","_ref31","_ref31$value","year","month","day","getFullYear","targetValue","greaterThan","maxLength","_ref4$value","Number","isInteger","minLength","required","bool","_ref34","hasNoExtraSpaces","_ref21","errorMessage","isCreditCard","_ref10","metadata","typeCard","creditCardCC","code","name","creditCardCCSize","size","isCreditCardAndLength","_ref12","_utils$creditCard$get6","isCreditCodeMatch","_ref11","numberCard","_ref14","notAllowSpaces","_ref17","_ref18","message","isNumber","_ref19","customValidation","_ref15","notEmpty","_ref20","numericRange","_ref22","email","lessThan","sequentialNumber","_ref24","repeatedNumbers","_ref25","url","_ref13","_ref26","searchErrorInPath","valueForPath","preventUnMountValidation","errors","defaultResponse","validationsResult","isArray","paths","res","isInTheList","_ref23","_ref27","fieldName","customNameRule","_ref28","_typeof","exists","_ref35","rules","errorMessages","formData","validationFN","ruleResult","find","concatenate","a","b","add","subtract","searchValue","replaceValue","handler","changed","parsedEventValue","rehydrate","_field$component$prop","component","props","staticInitialSchemaValue","mappings","groupValue","group","initialValues","initialValue","_h","steps","_g","_f","index","formatted","mounted","blured","focused","hasTemplateString","varOps","isVarOps","scopeComponent","children","wrapper","rest","__rest","scopedComponent","inObject","replaceTemplateString","targetString","isFieldExcludedObservable","observables","templates","exclude","matchingParts","subscribeFieldToScopeChange","scopedString","apis","getVarOpsOp","apply","extractVarOpsArgs","obj","map","scopeForm","schema","components","newScopedForm","scopedSchema","t","r","hasOwnProperty","o","defineProperty","Symbol","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","l","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","then","callInvokeWithMethodAndArg","Error","delegate","maybeInvokeDelegate","_sent","dispatchException","TypeError","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","setPrototypeOf","__proto__","awrap","async","reverse","pop","rval","handle","complete","finish","delegateYield","toPrimitive","_toPrimitive","_toPropertyKey","_arrayLikeToArray","_unsupportedIterableToArray","_n","F","eventReducedSchema","apiCall","meetsRunningCondition","preConditions","fieldHasError","blockRequestWhenInvalid","fieldValidationsHaveError","paramValues","fieldValueAsPathParams","param","fieldValueAsParams","uri","uriParams","at","_step2","_iterator2","params","URLSearchParams","globalScope","loading","fetch","body","headers","parsedResponse","json","status","response","jsonErr","RULES","eventField","fieldsData","fieldValues","visible","mergedKey","formattedDataDefaults","erroredFields","predictableErroredFields","filteredFields","ignore","stepData","step","isValid","messages","fieldValue","buildFormMessages","triggerTargetValue","clearedValue","cleared","componentProps","clearFields","clearField","targetField","fieldProp","clearedProps","defaultClearedValue","defaultClearedProps","useCurrentFieldValidation","ruleMapper","val","handleVisibility","visibility","visibilityConditions","fieldNames","showOnlyIfTrue","mapper","targetFieldName","eventMapper","number","checkbox","checked","id","options","isDeletingValue","ObserverError","_Error","breaksObservingChain","_wrapNativeSuper","_field$scopedComponen","dataToFilter","cleanMask","componentMasks","failedErrorMessages","getFieldErrorMessages","keyup","keydown","setScope","payload","mapperNextStepIndex","nextStepIndex","findIndex","numSteps","navigated","currentStepSchema","opts","scopeBlurredChildren","scopeChangedChildren","extractScopedChildrenFromOptions","curr","validationHandler","formEventDirectives","register","flows","flow","fieldFlows","templating","mount","htmlEventParser","change","blur","focus","formFlows","formTemplating","formLevelVisibilityConditions","validate","bindFields","Field","propsMapping","_Field_fieldData","_Field_component","_Field_scopedComponent","_Field_propsMapping","state","hidden","ignoreValue","propsActionsMapping","getValue","onBlur","onClick","onFocus","onKeyUp","onKeyDown","setErrorMessage","setErrorState","disabled","disable","_data$errors","setErrorMessages","_classPrivateFieldGe","_classPrivateFieldGe$","customChecksum","Math","random","checksum","EFlowLogging","Form","formId","_Form_fields","_Form_observer","_Form_step","getFieldInstance","destroyField","Factory","_createClass","workers","getFormInstance","getGroupFormsIds","newInstance","Observer","initialScope","enableLogging","iVars","regexBasedEvents","history","_Observer_buildEventPayload","eventFieldName","EXTRACT_EVENT_NAMESPACE","coreEvent","EXTRACT_CORE_NAMESPACE","runForRegexBasedEvent","isMatchEvent","_i","_Object$keys","handleRegexSubscription","handlers","unsubscribe","eventFn","isAsyncFunction","string","_this5","_i2","_Object$keys2","regexEvent","publishForEvents","_context3","lastCallbackResult","_loop","handlerRes","_this6","t0","t1","OBSERVER","_ret","level","action","_Factory","onMount","onChange","onRehydrate","afterApiCall","forceChange","dispatchForceChange","forceRehydrate","dispatchForceRehydrate","forceBlur","dispatchForceBlur","forceFocus","dispatchForceFocus","forceClick","dispatchForceClick","forceAfterApiCall","dispatchForceAfterApiCall","fieldInstance","useMemo","Element","useEffect","_jsx","Submit","forwardRef","_","ref","display","FormContext","createContext","FormProvider","React","autoComplete","submitOnValidOnly","className","onData","onSubmit","onFormMount","onFieldMount","onStep","onLog","onScopeChange","onFieldRehydrate","renderFieldWrapper","forceUpdate","useReducer","x","formRef","useRef","submitRef","Mapper","PropsMapping","useContext","formInstance","StepWrapper","Fragment","Children","generateComponentChildren","componentLevel","Component","jsx","ChildWrapper","__default__","schemaLocation","depth","hookResult","preSubmit","useImperativeHandle","stepForward","stepBack","validateForm","submit","current","click","_jsxs","disableFormSubmit","SchemaGuard","renderLoading","Provider","asFormField","Comp","optionList","onSelected","useForm","onValid","ids","extractFormsData","innerAcc","onDataChange","useCallback","submitForm"],"mappings":"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"}
|
package/index.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./types.js"),r=require("./asFormField-3108e669.js");require("react"),require("react/jsx-runtime"),require("credit-card-type"),Object.defineProperty(exports,"TAvailableHooks",{enumerable:!0,get:function(){return e.TAvailableHooks}}),exports.ALL_NAMESPACE_EVENTS=r.ALL_NAMESPACE_EVENTS,exports.BUILD_EVENT=r.BUILD_EVENT,exports.CoreEvents=r.CoreEvents,exports.Form=r.SchemaGuard,exports.FormProvider=r.FormProvider,exports.asFormField=r.asFormField,exports.useForm=r.useForm;
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
package/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/react.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./asFormField-3108e669.js"),r=require("react");require("./types.js"),require("react/jsx-runtime"),require("credit-card-type");exports.Form=e.SchemaGuard,exports.FormProvider=e.FormProvider,exports.asFormField=e.asFormField,exports.useForm=e.useForm,exports.useFormGroup=({group:s,onData:t,onClick:o,onSubmit:a,ids:c=[]})=>{const[n,i]=r.useState(s?e.getGroupFormsIds(s):c),u=r.useCallback((()=>{const r=n.reduce(((r,s)=>Object.assign(Object.assign({},r),{[s]:e.getFormInstance(s).formData})),{});t&&t(r)}),[t]);function m(r){return n.reduce(((s,t)=>(null==r?void 0:r.aggregate)?Object.keys(s).reduce(((o,a)=>Object.assign(Object.assign({},o),{[a]:Object.assign(Object.assign({},s[a]),e.getFormInstance(t,r).formData[a])})),{}):Object.assign(Object.assign({},s),{[t]:e.getFormInstance(t,r).formData})),{formatted:{},erroredFields:{},fields:{},form:{},predictableErroredFields:{},filteredFields:{}})}r.useEffect((()=>{!n.length&&s&&i(e.getGroupFormsIds(s))}),[n]),r.useEffect((()=>{n.map((r=>e.getFormInstance(r).subscribe("ON_FIELD_CHANGE",u)))}),[t,n]),r.useEffect((()=>{n.map((r=>e.getFormInstance(r).subscribe("ON_SCOPE_CHANGE",u)))}),[t,n]),r.useEffect((()=>{n.map((r=>e.getFormInstance(r).subscribe(e.ALL_NAMESPACE_EVENTS(e.CoreEvents.ON_FIELD_REHYDRATE),u)))}),[t,n]),r.useEffect((()=>{n.map((r=>e.getFormInstance(r).subscribe(e.ALL_NAMESPACE_EVENTS(e.CoreEvents.ON_FIELD_CLICK),(()=>o&&o(m({aggregate:!0}))))))}),[o,n]),r.useEffect((()=>{n.map((r=>e.getFormInstance(r).subscribe(e.CoreEvents.ON_FORM_SUBMIT,(()=>a&&a(m({}))))))}),[a,n]);return{submitForm:()=>n.map((r=>e.getFormInstance(r).publish(e.CoreEvents.ON_FORM_SUBMIT))),formData:m}};
|
|
2
|
-
//# sourceMappingURL=react.js.map
|
package/react.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","sources":["../../../libs/form-engine/src/adapters/react/useFormGroup.tsx"],"sourcesContent":["import { useEffect, useCallback, useState } from 'react';\n\nimport {\n TFormValues,\n TGroupOption,\n THookReturn,\n TUseFormGroupProps,\n} from '../react/types';\nimport { TFactoryOptions } from '../../core/types';\n\nimport { CoreEvents, ALL_NAMESPACE_EVENTS } from '@core';\nimport { getFormInstance, getGroupFormsIds } from '@core/managers';\nimport { EEVents } from '@core/constants';\n\nconst useFormGroup = ({\n group,\n onData,\n onClick,\n onSubmit,\n ids = [],\n}: TUseFormGroupProps): THookReturn => {\n const [formIds, setFormIds] = useState(group ? getGroupFormsIds(group) : ids);\n\n const onDataChange = useCallback(() => {\n const data = formIds.reduce(\n (acc, formId) => ({\n ...acc,\n [formId]: getFormInstance(formId).formData,\n }),\n {},\n );\n\n onData && onData(data);\n }, [onData]);\n\n function extractFormsData<T>(opts?: TFactoryOptions & TGroupOption): T {\n return formIds.reduce(\n (acc, formId) => {\n if (opts?.aggregate) {\n return Object.keys(acc).reduce(\n (innerAcc, key) => ({\n ...innerAcc,\n [key]: {\n ...acc[key],\n ...getFormInstance(formId, opts).formData[key],\n },\n }),\n {},\n );\n }\n\n return { ...acc, [formId]: getFormInstance(formId, opts).formData };\n },\n {\n formatted: {},\n erroredFields: {},\n fields: {},\n form: {},\n predictableErroredFields: {},\n filteredFields: {},\n } as TFormValues,\n ) as T;\n }\n\n useEffect(() => {\n if (formIds.length || !group) return;\n setFormIds(getGroupFormsIds(group));\n }, [formIds]);\n\n useEffect(() => {\n formIds.map((formId) =>\n getFormInstance(formId).subscribe(EEVents.ON_FIELD_CHANGE, onDataChange),\n );\n }, [onData, formIds]);\n\n useEffect(() => {\n formIds.map((formId) =>\n getFormInstance(formId).subscribe(EEVents.ON_SCOPE_CHANGE, onDataChange),\n );\n }, [onData, formIds]);\n\n useEffect(() => {\n formIds.map((formId) =>\n getFormInstance(formId).subscribe(\n ALL_NAMESPACE_EVENTS(CoreEvents.ON_FIELD_REHYDRATE),\n onDataChange,\n ),\n );\n }, [onData, formIds]);\n\n useEffect(() => {\n formIds.map((formId) =>\n getFormInstance(formId).subscribe(\n ALL_NAMESPACE_EVENTS(CoreEvents.ON_FIELD_CLICK),\n () =>\n onClick &&\n onClick(extractFormsData<TFormValues>({ aggregate: true })),\n ),\n );\n }, [onClick, formIds]);\n\n useEffect(() => {\n formIds.map((formId) =>\n getFormInstance(formId).subscribe(\n CoreEvents.ON_FORM_SUBMIT,\n () => onSubmit && onSubmit(extractFormsData({})),\n ),\n );\n }, [onSubmit, formIds]);\n\n const submitForm = () =>\n formIds.map((formId) =>\n getFormInstance(formId).publish(CoreEvents.ON_FORM_SUBMIT),\n );\n\n return {\n submitForm,\n formData: extractFormsData,\n };\n};\n\nexport { useFormGroup };\n"],"names":["useFormGroup","group","onData","onClick","onSubmit","ids","formIds","setFormIds","useState","getGroupFormsIds","onDataChange","useCallback","data","reduce","acc","formId","Object","assign","getFormInstance","formData","extractFormsData","opts","aggregate","keys","innerAcc","key","formatted","erroredFields","fields","form","predictableErroredFields","filteredFields","useEffect","length","map","subscribe","ALL_NAMESPACE_EVENTS","CoreEvents","ON_FIELD_REHYDRATE","ON_FIELD_CLICK","ON_FORM_SUBMIT","submitForm","publish"],"mappings":"iWAcqBA,EACnBC,QACAC,SACAC,UACAC,WACAC,MAAM,OAEN,MAAOC,EAASC,GAAcC,EAAQA,SAACP,EAAQQ,mBAAiBR,GAASI,GAEnEK,EAAeC,EAAAA,aAAY,KAC/B,MAAMC,EAAON,EAAQO,QACnB,CAACC,EAAKC,IACDC,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAAH,GACH,CAAAC,CAACA,GAASG,EAAAA,gBAAgBH,GAAQI,YAEpC,CAAE,GAGJjB,GAAUA,EAAOU,EAAK,GACrB,CAACV,IAEJ,SAASkB,EAAoBC,GAC3B,OAAOf,EAAQO,QACb,CAACC,EAAKC,KACAM,eAAAA,EAAMC,WACDN,OAAOO,KAAKT,GAAKD,QACtB,CAACW,EAAUC,IACNT,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAAO,IACHC,CAACA,GACIT,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAAH,EAAIW,IACJP,EAAeA,gBAACH,EAAQM,GAAMF,SAASM,OAG9C,CAAE,GAINT,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAYH,GAAG,CAAEC,CAACA,GAASG,EAAeA,gBAACH,EAAQM,GAAMF,YAE3D,CACEO,UAAW,CAAE,EACbC,cAAe,CAAE,EACjBC,OAAQ,CAAE,EACVC,KAAM,CAAE,EACRC,yBAA0B,CAAE,EAC5BC,eAAgB,CAAE,GAGxB,CAEAC,EAAAA,WAAU,MACJ1B,EAAQ2B,QAAWhC,GACvBM,EAAWE,EAAAA,iBAAiBR,GAAO,GAClC,CAACK,IAEJ0B,EAAAA,WAAU,KACR1B,EAAQ4B,KAAKnB,GACXG,kBAAgBH,GAAQoB,4BAAmCzB,IAC5D,GACA,CAACR,EAAQI,IAEZ0B,EAAAA,WAAU,KACR1B,EAAQ4B,KAAKnB,GACXG,kBAAgBH,GAAQoB,4BAAmCzB,IAC5D,GACA,CAACR,EAAQI,IAEZ0B,EAAAA,WAAU,KACR1B,EAAQ4B,KAAKnB,GACXG,EAAAA,gBAAgBH,GAAQoB,UACtBC,EAAAA,qBAAqBC,EAAAA,WAAWC,oBAChC5B,IAEH,GACA,CAACR,EAAQI,IAEZ0B,EAAAA,WAAU,KACR1B,EAAQ4B,KAAKnB,GACXG,EAAAA,gBAAgBH,GAAQoB,UACtBC,uBAAqBC,EAAAA,WAAWE,iBAChC,IACEpC,GACAA,EAAQiB,EAA8B,CAAEE,WAAW,QAExD,GACA,CAACnB,EAASG,IAEb0B,EAAAA,WAAU,KACR1B,EAAQ4B,KAAKnB,GACXG,EAAeA,gBAACH,GAAQoB,UACtBE,EAAAA,WAAWG,gBACX,IAAMpC,GAAYA,EAASgB,EAAiB,CAAE,OAEjD,GACA,CAAChB,EAAUE,IAOd,MAAO,CACLmC,WANiBA,IACjBnC,EAAQ4B,KAAKnB,GACXG,EAAAA,gBAAgBH,GAAQ2B,QAAQL,aAAWG,kBAK7CrB,SAAUC,EACX"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { ReactElement } from 'react';
|
|
2
|
-
import { TChildWrapperProps } from '@react/types';
|
|
3
|
-
declare const Field: ({ children, component, wrapper, propsMapping, formId, onMount, onChange, onFocus, onBlur, onClick, onRehydrate, afterApiCall, }: TChildWrapperProps) => ReactElement | null;
|
|
4
|
-
export default Field;
|