@bolttech/form-engine 0.1.9 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/README.md +85 -25
- package/{asFormField-4a8116fd.js → asFormField-6ff5abdc.js} +2 -2
- package/asFormField-6ff5abdc.js.map +1 -0
- package/index.js +1 -1
- package/package.json +1 -1
- package/react.js +1 -1
- package/src/core/handlers/flows.d.ts +1 -1
- package/src/core/handlers/form/steps.d.ts +1 -1
- package/src/core/types/index.d.ts +2 -2
- package/types.js.map +1 -1
- package/asFormField-4a8116fd.js.map +0 -1
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../libs/form-engine/src/core/types/index.ts"],"sourcesContent":["import { ICustomValidationValue } from '@core/apis/validations';\nimport { EEVents } from '@core/constants';\nimport { TEventInformation } from '@core/events';\n\nexport type TObserverData = {\n data: any;\n event: TEventsKeys;\n namespace: string;\n payload: any;\n};\n\nexport type TObservable = (data: any, unsubscribe: () => void) => any;\n\nexport type TEvents = Record<string, TObservable[]>;\n\nexport interface IObservable {\n events: TEvents;\n}\n\nexport type TScopeNamespaces =\n | 'global'\n | 'api'\n | 'hooks'\n | 'fields'\n | 'configs';\n\nexport type TSetGlobalScope = {\n namespace: TScopeNamespaces;\n key?: string;\n data: any;\n merge?: boolean;\n};\nexport type TScope = {\n global?: any;\n api?: any;\n hooks?: any;\n configs?: TConfigs & {\n disable?: boolean;\n enableLogging?: boolean;\n };\n fields?: any;\n};\n\nexport type TMapper = Record<string, Record<string, unknown>>;\n\nexport type TMaskGeneric = {\n to: number;\n from: number;\n mask: string;\n}[];\n\ntype TCurrencyMask = {\n locale: string;\n currency: string;\n};\n\nexport type TComponentMasks = {\n generic?: TMaskGeneric;\n cardNumber?: boolean;\n hideCardNumber?: boolean;\n cardMask?: boolean;\n cardDate?: boolean;\n currencyMask?: TCurrencyMask;\n feinMask?: boolean;\n replaceAll?: string | number;\n};\n\ntype TFormMessages = Record<\n string,\n { name: string; value?: any; values?: string[]; required?: boolean }\n>;\n\nexport type TChildrenOptions = {\n childrenScope?: string[];\n blurredChildren?: string[];\n changedChildren?: string[];\n scopeBlurredChildren?: boolean;\n scopeChangedChildren?: boolean;\n};\n\nexport type TFieldData = Record<string, TField>;\n\nexport type TFormRefActions = {\n submit(): void;\n stepForward(): TFormValues;\n stepBack(): TFormValues;\n validateForm(opts?: TChildrenOptions): Promise<TFormValues>;\n values(\n opts: Pick<\n TChildrenOptions,\n 'scopeBlurredChildren' | 'scopeChangedChildren' | 'childrenScope'\n >,\n ): TFormValues;\n};\n\nexport type THookPayload = {\n setScope(data: TSetGlobalScope): void;\n};\n\nexport type THooks = {\n preMount?: () => Record<string, unknown>;\n preUnmount?: () => Record<string, unknown>;\n preSubmit?: (formData: TFormValues) => Record<string, unknown>;\n posSubmit?: (formData: TFormValues) => Record<string, unknown>;\n};\n\nexport type TIVars = Record<string, unknown>;\n\nexport type TEventsKeys = keyof typeof EEVents;\nexport enum TAvailableHooks {\n 'preMount' = 'preMount',\n 'preUnmount' = 'preUnmount',\n 'preSubmit' = 'preSubmit',\n 'postSubmit' = 'postSubmit',\n}\nexport type TField = {\n value?: string | number | boolean;\n errors?: TErrors;\n visible?: boolean;\n failedErrorMessages?: string[];\n mask?: string;\n changed?: boolean;\n blured?: boolean;\n focused?: boolean;\n name: string;\n mounted: boolean;\n metadata?: any;\n ignore?: boolean;\n schemaLocation?: {\n step: number;\n depth: number;\n index: number;\n };\n};\n\ntype TPathError = Omit<TSchemaValidation, 'path'> & {\n path?: string;\n paths?: string[];\n preventUnMountValidation?: boolean;\n};\n\nexport type TValidationDateFormats =\n | 'MMDDYYYY'\n | 'DDMMYYYY'\n | 'YYYYMMDD'\n | 'YYYYDDMM'\n | 'timestamp';\nexport type TValidationDateOperators = '<' | '>' | '===' | '>=' | '<=' | '!==';\n\nexport type TVAvailableValitationConditionsSet = {\n forceDefinedOrigin?: boolean;\n forceDefinedTarget?: boolean;\n origin?: string | number | boolean;\n condition: TValidationDateOperators;\n target?: string | number | boolean;\n};\n\nexport type TVAvailableValitationConditions = {\n rule: 'and' | 'or';\n set: TVAvailableValitationConditionsSet[];\n};\n\nexport type TVAvailableValidations = {\n /**\n * Validation based on conditions\n *\n * @example - Compare own field to two. Origin and target default to field value\n * ```\n * conditions: {\n rule: 'and',\n set: [\n {\n condition: '===',\n target: '2',\n },\n {\n origin: '2',\n condition: '===',\n },\n ],\n },\n * ```\n * @example - Binded to Postcode field value. Must be greater than or equal two\n * ```\n * conditions: {\n rule: 'or',\n set: [\n {\n origin: '${fields.postcode.value}',\n condition: '>',\n target: '2',\n },\n {\n origin: '${fields.postcode.value}',\n condition: '===',\n target: '2',\n },\n ],\n },\n * ```\n * @example - Binded to Postcode field value. Must be equal to two\n * ```\n * conditions: {\n rule: 'or',\n set: [\n {\n origin: '${fields.postcode.value}',\n condition: '===',\n target: '2',\n },\n ],\n },\n * ```\n */\n conditions?: TVAvailableValitationConditions;\n /**\n * Dates validations\n *\n * @example - Dates should be different\n * ```\n * date: {\n operator: '!==',\n origin: {\n format: 'DDMMYYYY',\n },\n target: {\n format: 'DDMMYYYY',\n value: '10/10/2001',\n },\n },\n * ```\n *\n * @example - Compare only valid dates using intervals\n * ```\n * date: {\n * onlyValidDate: true,\n * operator: '<',\n * origin: {\n * format: 'DD/MM/YYYY',\n * intervals: {\n * years: 1,\n * },\n * },\n * },\n * ```\n *\n * @example - Should have at max 85 years\n * ```\n * {\n operator: '>',\n origin: {\n format: 'DDMMYYYY',\n value: eightyFiveYearsDate,\n intervals: {\n years: 85,\n },\n },\n }\n * }\n *\n * ```\n */\n date?: {\n /**\n * Flag to force only valid dates. Valid dates must be of min length of 8\n */\n onlyValidDate?: boolean;\n /**\n * List of operations you can do\n * - between origin and target dates\n * - Betweeen origin and intervals\n */\n operator: TValidationDateOperators;\n /**\n * The origin configurations\n */\n origin: {\n /**\n * Origin date value\n */\n value?: string | number;\n /**\n * The available date formats\n */\n format: TValidationDateFormats;\n /**\n * Intervals to compare with the original date.\n *\n * It will use todays date for comparison.\n *\n * @example\n *\n * origin date = 10/10/2022\n * interval.year = 1\n * operator = '==='\n *\n * It will compare (10/10/2022 + 1) with the current date and check if they are the same\n */\n intervals?: {\n years?: number;\n months?: number;\n days?: number;\n };\n };\n target?: {\n value: string | number;\n format: TValidationDateFormats;\n };\n };\n /**\n * Allow to define a maximum length for the input to have no error\n */\n length?: number;\n /**\n * Will look into the input length and send an error if if not greater than this value\n */\n greaterThan?: number | string;\n regex?: string;\n maxLength?: number;\n minLength?: number;\n required?: boolean;\n onlyLetters?: boolean;\n value?: string | number | boolean;\n notEmpty?: boolean;\n callback?(value: string | number): { fail: boolean; errorMessage?: string };\n numericRange?: { start: number | string; end: number | string };\n isNumber?: boolean;\n hasNoExtraSpaces?: boolean;\n email?: boolean;\n lessThan?: number | string;\n sequentialNumber?: boolean;\n repeatedNumbers?: boolean;\n url?: boolean;\n path?: TPathError;\n isCreditCard?: string[];\n isCreditCardAndLength?: string[];\n isCreditCodeMatch?: { numberCard: string; availableOptions: string[] };\n customValidation?: ICustomValidationValue[];\n notAllowSpaces?: true;\n isInTheList?: string[] | number[] | string;\n fields?: {\n rule: 'every';\n set: {\n bind: string;\n fieldName: string;\n validations: Omit<TVAvailableValidations, 'fields'>;\n }[];\n };\n};\n\nexport type TGenericValidationRule = {\n [key: string]: TVAvailableValidations;\n};\n\nexport type TSchemaValidation = TVAvailableValidations | TGenericValidationRule;\n\nexport type TStepData = {\n navigated: boolean;\n index: number;\n data: Record<\n number,\n Pick<\n TFormValues,\n 'fields' | 'erroredFields' | 'formatted' | 'filteredFields'\n >\n >;\n currentStepSchema?: TComponent;\n isValid: boolean;\n numSteps?: number;\n};\n\nexport type TFormValues = {\n predictableErroredFields: string[];\n erroredFields: string[];\n fields: TFieldData;\n formatted: Record<string, unknown>;\n filteredFields?: Record<string, unknown>;\n form: {\n steps: TStepData;\n isValid: boolean;\n messages: string[];\n scope: TScope;\n };\n};\n\nexport type TError = {\n value: unknown;\n message?: string;\n fail: boolean;\n};\n\nexport type TErrors = Record<string, TError> | undefined;\n\n// TODO - object with the available errors has props\nexport type TErrorMessages = Record<string, string>;\n\nexport type TSchemaValidations = TSchemaHandler<TSchemaValidation>;\n\ntype TFormLevelSchemaHandler<T> = Partial<\n Record<\n | EEVents.ON_FIELD_CHANGE\n | EEVents.ON_FORM_REHYDRATE\n | EEVents.ON_FORM_MOUNT\n | EEVents.ON_SCOPE_CHANGE,\n T\n >\n>;\n\ntype TSchemaHandler<T> = Partial<\n Record<\n | EEVents.ON_FIELD_REHYDRATE\n | EEVents.ON_FIELD_CHANGE\n | EEVents.ON_FIELD_BLUR\n | EEVents.ON_FIELD_MOUNT\n | EEVents.ON_FIELD_FOCUS,\n T\n >\n>;\n\nexport type TSchemaVisibilityConditions = {\n /**\n * The validations that will say if the target field will be visible or not\n *\n * Those validations will run against your field (the one that has this directive)\n */\n validations: TSchemaValidation;\n /**\n * Target field that will have the visibility toggled\n */\n fieldName?: string;\n /**\n * Target fields that will have the visibility toggled\n */\n fieldNames?: string[];\n}[];\n\nexport type TSchemaClearFields = {\n /**\n * Validations to run for the target field\n */\n validations?: TSchemaValidation;\n /**\n * target fields that will be used in the validation specified\n */\n fields: string[];\n /**\n * The cleared values on the fields in case they do no pass the validation\n */\n clearedValue: string | number | boolean;\n}[];\n\nexport type TSchemaApi = {\n /**\n * Specify a debounce time in miliseconds for your call\n */\n debounceTime?: number;\n method: 'GET' | 'POST' | 'PUT' | 'PATCH';\n url: string;\n headers?: HeadersInit | undefined;\n body?: Record<string, any>;\n scope?: string;\n blockRequestWhenInvalid?: boolean;\n preConditions?: TSchemaValidation;\n}[];\n\nexport type TSchemaMasks = { cleanMask?: boolean } & TComponentMasks;\n\nexport type TFormEventDirectives = {\n visibilityConditions: TSchemaVisibilityConditions;\n};\n\nexport type TEventReducedSchema = {\n api: TSchemaApi;\n clearFields: TSchemaClearFields;\n formatters: TSchemaFormatters;\n masks: TSchemaMasks;\n validations: TSchemaValidation;\n visibilityConditions: TSchemaVisibilityConditions;\n};\n\nexport type TComponent = {\n /**\n * This name will be used latter to corelate the field with the value and you will be able to read it\n *\n * You can also mount here complex objects like\n *\n * name={a.b.c}\n *\n * that will result in\n * a: {\n * b: {\n * c: 'field_value'\n * }\n * }\n */\n name: string;\n /**\n * A component name that should map to the one you gave in the from mappings\n *\n * @example - For React\n * ```\n * const mappings: TMapper = {\n * input: { component: Input },\n * formGroup: { component: FormGroup },\n * };\n * ```\n *\n * The component name for the Input element will be \"input\" ending up like\n * ```\n * {\n * component: 'input'\n * }\n * ```\n */\n component: string;\n /**\n * You can attach metadata to your component that will be forwarded to you after on your frontend\n * callback methods link `onData`, `onBlur` etc\n */\n metadata?: Record<string, any>;\n /**\n * This property allows you to specify a virtual fieldName that can be in several fields\n *\n * USAGE - You have two fields but you want to have the value stored only under one name\n *\n */\n group?: string;\n wrapper?: new () => React.Component;\n children?: TComponent[];\n /**\n * Field error messages in case any validation fails\n *\n * @example - Set a default error message for all the validations\n *\n * ```\n * {\n * errorMessages: {\n * default: 'default error message'\n * }\n * }\n * ```\n *\n * @example - Set error message for a given validation\n *\n * ```\n * {\n * validations: {\n * ON_FIELD_CHANGE: {\n * required: true\n * }\n * },\n * errorMessages: {\n * required: 'This field is required'\n * }\n * }\n * ```\n *\n */\n errorMessages?: TErrorMessages;\n type?: 'text' | 'number' | string;\n /**\n * Allow you to set a initial state for this field\n */\n state?: {\n /**\n * Hide the field\n */\n hidden?: boolean;\n /**\n * Ignore value from field\n */\n ignoreValue?: boolean;\n };\n /**\n * This key lets you inject props directly into the component\n */\n props?: Record<string, unknown>;\n /**\n * Setup validations to be used in the field.\n *\n * You can setup validations in several life-cycle methods\n *\n * @example - Required validation\n * ```\n * validations: {\n ON_FIELD_CHANGE: {\n required: true,\n },\n },\n * ```\n */\n validations?: TSchemaHandler<\n Pick<TEventReducedSchema, 'validations'>['validations']\n >;\n filter?: Pick<TEventReducedSchema, 'validations'>['validations'];\n /**\n * Allows you to specify the conditions a given field will be visible\n * what will run when this field meets the specified life-cycle\n */\n visibilityConditions?: TSchemaHandler<\n Pick<TEventReducedSchema, 'visibilityConditions'>['visibilityConditions']\n >;\n /**\n * Will clear target fields in case they do not pass with the specified validations\n */\n clearFields?: TSchemaHandler<\n Pick<TEventReducedSchema, 'clearFields'>['clearFields']\n >;\n api?: TSchemaHandler<Pick<TEventReducedSchema, 'api'>['api']>;\n masks?: Partial<\n Record<\n | EEVents.ON_FIELD_BLUR\n | EEVents.ON_FIELD_MOUNT\n | EEVents.ON_FIELD_FOCUS\n | EEVents.ON_FIELD_CHANGE,\n Pick<TEventReducedSchema, 'masks'>['masks']\n >\n >;\n formatters?: TSchemaHandler<\n Pick<TEventReducedSchema, 'formatters'>['formatters']\n >;\n};\n\nexport type TStep = {\n component: string;\n name: string;\n children: TComponent[];\n props?: Record<string, string>;\n};\n\nexport type TComponentPropsMapping = {\n getValue?: string;\n setValue?: string;\n onBlur?: string;\n onClick?: string;\n onFocus?: string;\n setErrorMessage?: string;\n setErrorState?: string;\n};\n\nexport type TPropsMapping = Record<string, TComponentPropsMapping>;\n\nexport type TSchema = {\n action?: string;\n method?: string;\n /**\n * Give some configurations to the form\n */\n configs?: TConfigs;\n /**\n * Allows you to expose some messages to the outside world when something happen\n */\n messages?: TFormMessages;\n /**\n * Specify some static field defaults before rendereing the form.\n *\n * If you have initialValues in the frontend setted, those will ovewride this\n */\n formattedDataDefaults?: Record<string, unknown>;\n /**\n * Form level props mapping\n */\n propsMapping?: TPropsMapping;\n visibilityConditions?: TFormLevelSchemaHandler<TSchemaVisibilityConditions>;\n /**\n * Entry point for the form should be a step (even if you have only one)\n */\n components: TStep[];\n /**\n * You can have many fields in the form, but be interested only in some\n *\n * You can put here the fields you want to read onSubmit for example\n *\n * You will receive those in TFormValues.filteredFields\n */\n filteredFields?: string[];\n /**\n * Schema level iVars.\n *\n * These iVars will go to the global scope namespace\n */\n iVars?: TIVars;\n};\n\nexport type TSplitterFormatterValue = {\n value: string;\n position: number;\n}[];\n\nexport type TSchemaFormatters = {\n splitter?: TSplitterFormatterValue;\n capitalize?: boolean;\n upperCase?: boolean;\n gapsCreditCard?: string[];\n};\n\nexport type TConfigs = {\n observables?: { templates?: { exclude?: string[] } };\n};\n\nexport type TFlowType = {\n [x: string]: {\n events: (component?: TComponent) => EEVents[];\n handler: (args: TEventInformation) => void;\n }[];\n};\n"],"names":["TAvailableHooks"],"mappings":"aA6GA,IAAYA,yDAAAA,QAKXA,qBAAA,GALWA,EAAAA,QAAeA,kBAAfA,wBAKX,CAAA,IAJC,SAAA,WACAA,EAAA,WAAA,aACAA,EAAA,UAAA,YACAA,EAAA,WAAA"}
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../libs/form-engine/src/core/types/index.ts"],"sourcesContent":["import { ICustomValidationValue } from '@core/apis/validations';\nimport { EEVents } from '@core/constants';\nimport { TEventInformation } from '@core/events';\n\nexport type TObserverData = {\n data: any;\n event: TEventsKeys;\n namespace: string;\n payload: any;\n};\n\nexport type TObservable = (data: any, unsubscribe: () => void) => any;\n\nexport type TEvents = Record<string, TObservable[]>;\n\nexport interface IObservable {\n events: TEvents;\n}\n\nexport type TScopeNamespaces =\n | 'global'\n | 'api'\n | 'hooks'\n | 'fields'\n | 'configs';\n\nexport type TSetGlobalScope = {\n namespace: TScopeNamespaces;\n key?: string;\n data: any;\n merge?: boolean;\n};\nexport type TScope = {\n global?: any;\n api?: any;\n hooks?: any;\n configs?: TConfigs & {\n disable?: boolean;\n enableLogging?: boolean;\n };\n fields?: any;\n};\n\nexport type TMapper = Record<string, Record<string, unknown>>;\n\nexport type TMaskGeneric = {\n to: number;\n from: number;\n mask: string;\n}[];\n\ntype TCurrencyMask = {\n locale: string;\n currency: string;\n};\n\nexport type TComponentMasks = {\n generic?: TMaskGeneric;\n cardNumber?: boolean;\n hideCardNumber?: boolean;\n cardMask?: boolean;\n cardDate?: boolean;\n currencyMask?: TCurrencyMask;\n feinMask?: boolean;\n replaceAll?: string | number;\n};\n\ntype TFormMessages = Record<\n string,\n { name: string; value?: any; values?: string[]; required?: boolean }\n>;\n\nexport type TChildrenOptions = {\n childrenScope?: string[];\n blurredChildren?: string[];\n changedChildren?: string[];\n scopeBlurredChildren?: boolean;\n scopeChangedChildren?: boolean;\n};\n\nexport type TFieldData = Record<string, TField>;\n\nexport type TFormRefActions = {\n submit(): void;\n stepForward(index?: number | string): TFormValues;\n stepBack(index?: number | string): TFormValues;\n validateForm(opts?: TChildrenOptions): Promise<TFormValues>;\n values(\n opts: Pick<\n TChildrenOptions,\n 'scopeBlurredChildren' | 'scopeChangedChildren' | 'childrenScope'\n >,\n ): TFormValues;\n};\n\nexport type THookPayload = {\n setScope(data: TSetGlobalScope): void;\n};\n\nexport type THooks = {\n preMount?: () => Record<string, unknown>;\n preUnmount?: () => Record<string, unknown>;\n preSubmit?: (formData: TFormValues) => Record<string, unknown>;\n posSubmit?: (formData: TFormValues) => Record<string, unknown>;\n};\n\nexport type TIVars = Record<string, unknown>;\n\nexport type TEventsKeys = keyof typeof EEVents;\nexport enum TAvailableHooks {\n 'preMount' = 'preMount',\n 'preUnmount' = 'preUnmount',\n 'preSubmit' = 'preSubmit',\n 'postSubmit' = 'postSubmit',\n}\nexport type TField = {\n value?: string | number | boolean;\n errors?: TErrors;\n visible?: boolean;\n failedErrorMessages?: string[];\n mask?: string;\n changed?: boolean;\n blured?: boolean;\n focused?: boolean;\n name: string;\n mounted: boolean;\n metadata?: any;\n ignore?: boolean;\n schemaLocation?: {\n step: number;\n depth: number;\n index: number;\n };\n};\n\ntype TPathError = Omit<TSchemaValidation, 'path'> & {\n path?: string;\n paths?: string[];\n preventUnMountValidation?: boolean;\n};\n\nexport type TValidationDateFormats =\n | 'MMDDYYYY'\n | 'DDMMYYYY'\n | 'YYYYMMDD'\n | 'YYYYDDMM'\n | 'timestamp';\nexport type TValidationDateOperators = '<' | '>' | '===' | '>=' | '<=' | '!==';\n\nexport type TVAvailableValitationConditionsSet = {\n forceDefinedOrigin?: boolean;\n forceDefinedTarget?: boolean;\n origin?: string | number | boolean;\n condition: TValidationDateOperators;\n target?: string | number | boolean;\n};\n\nexport type TVAvailableValitationConditions = {\n rule: 'and' | 'or';\n set: TVAvailableValitationConditionsSet[];\n};\n\nexport type TVAvailableValidations = {\n /**\n * Validation based on conditions\n *\n * @example - Compare own field to two. Origin and target default to field value\n * ```\n * conditions: {\n rule: 'and',\n set: [\n {\n condition: '===',\n target: '2',\n },\n {\n origin: '2',\n condition: '===',\n },\n ],\n },\n * ```\n * @example - Binded to Postcode field value. Must be greater than or equal two\n * ```\n * conditions: {\n rule: 'or',\n set: [\n {\n origin: '${fields.postcode.value}',\n condition: '>',\n target: '2',\n },\n {\n origin: '${fields.postcode.value}',\n condition: '===',\n target: '2',\n },\n ],\n },\n * ```\n * @example - Binded to Postcode field value. Must be equal to two\n * ```\n * conditions: {\n rule: 'or',\n set: [\n {\n origin: '${fields.postcode.value}',\n condition: '===',\n target: '2',\n },\n ],\n },\n * ```\n */\n conditions?: TVAvailableValitationConditions;\n /**\n * Dates validations\n *\n * @example - Dates should be different\n * ```\n * date: {\n operator: '!==',\n origin: {\n format: 'DDMMYYYY',\n },\n target: {\n format: 'DDMMYYYY',\n value: '10/10/2001',\n },\n },\n * ```\n *\n * @example - Compare only valid dates using intervals\n * ```\n * date: {\n * onlyValidDate: true,\n * operator: '<',\n * origin: {\n * format: 'DD/MM/YYYY',\n * intervals: {\n * years: 1,\n * },\n * },\n * },\n * ```\n *\n * @example - Should have at max 85 years\n * ```\n * {\n operator: '>',\n origin: {\n format: 'DDMMYYYY',\n value: eightyFiveYearsDate,\n intervals: {\n years: 85,\n },\n },\n }\n * }\n *\n * ```\n */\n date?: {\n /**\n * Flag to force only valid dates. Valid dates must be of min length of 8\n */\n onlyValidDate?: boolean;\n /**\n * List of operations you can do\n * - between origin and target dates\n * - Betweeen origin and intervals\n */\n operator: TValidationDateOperators;\n /**\n * The origin configurations\n */\n origin: {\n /**\n * Origin date value\n */\n value?: string | number;\n /**\n * The available date formats\n */\n format: TValidationDateFormats;\n /**\n * Intervals to compare with the original date.\n *\n * It will use todays date for comparison.\n *\n * @example\n *\n * origin date = 10/10/2022\n * interval.year = 1\n * operator = '==='\n *\n * It will compare (10/10/2022 + 1) with the current date and check if they are the same\n */\n intervals?: {\n years?: number;\n months?: number;\n days?: number;\n };\n };\n target?: {\n value: string | number;\n format: TValidationDateFormats;\n };\n };\n /**\n * Allow to define a maximum length for the input to have no error\n */\n length?: number;\n /**\n * Will look into the input length and send an error if if not greater than this value\n */\n greaterThan?: number | string;\n regex?: string;\n maxLength?: number;\n minLength?: number;\n required?: boolean;\n onlyLetters?: boolean;\n value?: string | number | boolean;\n notEmpty?: boolean;\n callback?(value: string | number): { fail: boolean; errorMessage?: string };\n numericRange?: { start: number | string; end: number | string };\n isNumber?: boolean;\n hasNoExtraSpaces?: boolean;\n email?: boolean;\n lessThan?: number | string;\n sequentialNumber?: boolean;\n repeatedNumbers?: boolean;\n url?: boolean;\n path?: TPathError;\n isCreditCard?: string[];\n isCreditCardAndLength?: string[];\n isCreditCodeMatch?: { numberCard: string; availableOptions: string[] };\n customValidation?: ICustomValidationValue[];\n notAllowSpaces?: true;\n isInTheList?: string[] | number[] | string;\n fields?: {\n rule: 'every';\n set: {\n bind: string;\n fieldName: string;\n validations: Omit<TVAvailableValidations, 'fields'>;\n }[];\n };\n};\n\nexport type TGenericValidationRule = {\n [key: string]: TVAvailableValidations;\n};\n\nexport type TSchemaValidation = TVAvailableValidations | TGenericValidationRule;\n\nexport type TStepData = {\n navigated: boolean;\n index: number;\n data: Record<\n number,\n Pick<\n TFormValues,\n 'fields' | 'erroredFields' | 'formatted' | 'filteredFields'\n >\n >;\n currentStepSchema?: TComponent;\n isValid: boolean;\n numSteps?: number;\n};\n\nexport type TFormValues = {\n predictableErroredFields: string[];\n erroredFields: string[];\n fields: TFieldData;\n formatted: Record<string, unknown>;\n filteredFields?: Record<string, unknown>;\n form: {\n steps: TStepData;\n isValid: boolean;\n messages: string[];\n scope: TScope;\n };\n};\n\nexport type TError = {\n value: unknown;\n message?: string;\n fail: boolean;\n};\n\nexport type TErrors = Record<string, TError> | undefined;\n\n// TODO - object with the available errors has props\nexport type TErrorMessages = Record<string, string>;\n\nexport type TSchemaValidations = TSchemaHandler<TSchemaValidation>;\n\ntype TFormLevelSchemaHandler<T> = Partial<\n Record<\n | EEVents.ON_FIELD_CHANGE\n | EEVents.ON_FORM_REHYDRATE\n | EEVents.ON_FORM_MOUNT\n | EEVents.ON_SCOPE_CHANGE,\n T\n >\n>;\n\ntype TSchemaHandler<T> = Partial<\n Record<\n | EEVents.ON_FIELD_REHYDRATE\n | EEVents.ON_FIELD_CHANGE\n | EEVents.ON_FIELD_BLUR\n | EEVents.ON_FIELD_MOUNT\n | EEVents.ON_FIELD_FOCUS,\n T\n >\n>;\n\nexport type TSchemaVisibilityConditions = {\n /**\n * The validations that will say if the target field will be visible or not\n *\n * Those validations will run against your field (the one that has this directive)\n */\n validations: TSchemaValidation;\n /**\n * Target field that will have the visibility toggled\n */\n fieldName?: string;\n /**\n * Target fields that will have the visibility toggled\n */\n fieldNames?: string[];\n}[];\n\nexport type TSchemaClearFields = {\n /**\n * Validations to run for the target field\n */\n validations?: TSchemaValidation;\n /**\n * target fields that will be used in the validation specified\n */\n fields: string[];\n /**\n * The cleared values on the fields in case they do no pass the validation\n */\n clearedValue: string | number | boolean;\n}[];\n\nexport type TSchemaApi = {\n /**\n * Specify a debounce time in miliseconds for your call\n */\n debounceTime?: number;\n method: 'GET' | 'POST' | 'PUT' | 'PATCH';\n url: string;\n headers?: HeadersInit | undefined;\n body?: Record<string, any>;\n scope?: string;\n blockRequestWhenInvalid?: boolean;\n preConditions?: TSchemaValidation;\n}[];\n\nexport type TSchemaMasks = { cleanMask?: boolean } & TComponentMasks;\n\nexport type TFormEventDirectives = {\n visibilityConditions: TSchemaVisibilityConditions;\n};\n\nexport type TEventReducedSchema = {\n api: TSchemaApi;\n clearFields: TSchemaClearFields;\n formatters: TSchemaFormatters;\n masks: TSchemaMasks;\n validations: TSchemaValidation;\n visibilityConditions: TSchemaVisibilityConditions;\n};\n\nexport type TComponent = {\n /**\n * This name will be used latter to corelate the field with the value and you will be able to read it\n *\n * You can also mount here complex objects like\n *\n * name={a.b.c}\n *\n * that will result in\n * a: {\n * b: {\n * c: 'field_value'\n * }\n * }\n */\n name: string;\n /**\n * A component name that should map to the one you gave in the from mappings\n *\n * @example - For React\n * ```\n * const mappings: TMapper = {\n * input: { component: Input },\n * formGroup: { component: FormGroup },\n * };\n * ```\n *\n * The component name for the Input element will be \"input\" ending up like\n * ```\n * {\n * component: 'input'\n * }\n * ```\n */\n component: string;\n /**\n * You can attach metadata to your component that will be forwarded to you after on your frontend\n * callback methods link `onData`, `onBlur` etc\n */\n metadata?: Record<string, any>;\n /**\n * This property allows you to specify a virtual fieldName that can be in several fields\n *\n * USAGE - You have two fields but you want to have the value stored only under one name\n *\n */\n group?: string;\n wrapper?: new () => React.Component;\n children?: TComponent[];\n /**\n * Field error messages in case any validation fails\n *\n * @example - Set a default error message for all the validations\n *\n * ```\n * {\n * errorMessages: {\n * default: 'default error message'\n * }\n * }\n * ```\n *\n * @example - Set error message for a given validation\n *\n * ```\n * {\n * validations: {\n * ON_FIELD_CHANGE: {\n * required: true\n * }\n * },\n * errorMessages: {\n * required: 'This field is required'\n * }\n * }\n * ```\n *\n */\n errorMessages?: TErrorMessages;\n type?: 'text' | 'number' | string;\n /**\n * Allow you to set a initial state for this field\n */\n state?: {\n /**\n * Hide the field\n */\n hidden?: boolean;\n /**\n * Ignore value from field\n */\n ignoreValue?: boolean;\n };\n /**\n * This key lets you inject props directly into the component\n */\n props?: Record<string, unknown>;\n /**\n * Setup validations to be used in the field.\n *\n * You can setup validations in several life-cycle methods\n *\n * @example - Required validation\n * ```\n * validations: {\n ON_FIELD_CHANGE: {\n required: true,\n },\n },\n * ```\n */\n validations?: TSchemaHandler<\n Pick<TEventReducedSchema, 'validations'>['validations']\n >;\n filter?: Pick<TEventReducedSchema, 'validations'>['validations'];\n /**\n * Allows you to specify the conditions a given field will be visible\n * what will run when this field meets the specified life-cycle\n */\n visibilityConditions?: TSchemaHandler<\n Pick<TEventReducedSchema, 'visibilityConditions'>['visibilityConditions']\n >;\n /**\n * Will clear target fields in case they do not pass with the specified validations\n */\n clearFields?: TSchemaHandler<\n Pick<TEventReducedSchema, 'clearFields'>['clearFields']\n >;\n api?: TSchemaHandler<Pick<TEventReducedSchema, 'api'>['api']>;\n masks?: Partial<\n Record<\n | EEVents.ON_FIELD_BLUR\n | EEVents.ON_FIELD_MOUNT\n | EEVents.ON_FIELD_FOCUS\n | EEVents.ON_FIELD_CHANGE,\n Pick<TEventReducedSchema, 'masks'>['masks']\n >\n >;\n formatters?: TSchemaHandler<\n Pick<TEventReducedSchema, 'formatters'>['formatters']\n >;\n};\n\nexport type TStep = {\n component: string;\n name: string;\n children: TComponent[];\n props?: Record<string, string>;\n};\n\nexport type TComponentPropsMapping = {\n getValue?: string;\n setValue?: string;\n onBlur?: string;\n onClick?: string;\n onFocus?: string;\n setErrorMessage?: string;\n setErrorState?: string;\n};\n\nexport type TPropsMapping = Record<string, TComponentPropsMapping>;\n\nexport type TSchema = {\n action?: string;\n method?: string;\n /**\n * Give some configurations to the form\n */\n configs?: TConfigs;\n /**\n * Allows you to expose some messages to the outside world when something happen\n */\n messages?: TFormMessages;\n /**\n * Specify some static field defaults before rendereing the form.\n *\n * If you have initialValues in the frontend setted, those will ovewride this\n */\n formattedDataDefaults?: Record<string, unknown>;\n /**\n * Form level props mapping\n */\n propsMapping?: TPropsMapping;\n visibilityConditions?: TFormLevelSchemaHandler<TSchemaVisibilityConditions>;\n /**\n * Entry point for the form should be a step (even if you have only one)\n */\n components: TStep[];\n /**\n * You can have many fields in the form, but be interested only in some\n *\n * You can put here the fields you want to read onSubmit for example\n *\n * You will receive those in TFormValues.filteredFields\n */\n filteredFields?: string[];\n /**\n * Schema level iVars.\n *\n * These iVars will go to the global scope namespace\n */\n iVars?: TIVars;\n};\n\nexport type TSplitterFormatterValue = {\n value: string;\n position: number;\n}[];\n\nexport type TSchemaFormatters = {\n splitter?: TSplitterFormatterValue;\n capitalize?: boolean;\n upperCase?: boolean;\n gapsCreditCard?: string[];\n};\n\nexport type TConfigs = {\n observables?: { templates?: { exclude?: string[] } };\n};\n\nexport type TFlowType = {\n [x: string]: {\n events: (component?: TComponent) => EEVents[];\n handler: (args: TEventInformation) => void;\n }[];\n};\n"],"names":["TAvailableHooks"],"mappings":"aA6GA,IAAYA,yDAAAA,QAKXA,qBAAA,GALWA,EAAAA,QAAeA,kBAAfA,wBAKX,CAAA,IAJC,SAAA,WACAA,EAAA,WAAA,aACAA,EAAA,UAAA,YACAA,EAAA,WAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"asFormField-4a8116fd.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/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/clearFields.ts","../../../libs/form-engine/src/core/handlers/field/visibilityConditions.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/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/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_CLICK = 'ON_FIELD_CLICK',\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\n NAVIGATE_STEP_FORWARD = 'NAVIGATE_STEP_FORWARD',\n NAVIGATE_STEP_BACK = 'NAVIGATE_STEP_BACK',\n\n VALIDATE_FORM = 'VALIDATE_FORM',\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_CLICK: 'ON_FIELD_CLICK',\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\n NAVIGATE_STEP_FORWARD: 'NAVIGATE_STEP_FORWARD',\n NAVIGATE_STEP_BACK: 'NAVIGATE_STEP_BACK',\n\n VALIDATE_FORM: 'VALIDATE_FORM',\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","/**\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 * @returns One new object with the new value at the provided path merged with the given object\n */\nconst encapsulateIn = (origin: Record<string, unknown>, path: string, value: string): Record<string, unknown> => {\n const parts = path.split('.');\n if (parts.length === 1) {\n return { ...origin, [path]: value };\n }\n const getNewPart = (parts: string[], subObject: Record<string, unknown>): Record<string, unknown> => {\n const clonedParts = [...parts];\n clonedParts.splice(0, 1);\n const part =\n parts.length !== 1\n ? getNewPart(clonedParts, subObject ? (subObject[parts[0]] as Record<string, unknown>) : {})\n : value;\n return {\n ...subObject,\n [parts[0]]: part,\n };\n };\n return getNewPart(parts, origin);\n};\n\nconst getValueByPath = (\n object: Record<string, any> = {},\n path = '',\n): string | number | boolean | Record<string, unknown> => {\n const parts = path.split('.');\n return parts.reduce((acc, part): any => (acc || {})[part], object);\n};\n\nexport { encapsulateIn, getValueByPath };\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 formatters: Record<string, unknown> = {\n splitter,\n undo_splitter,\n capitalize,\n upperCase,\n gapsCreditCard,\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\nconst hideCardNumber = ({ value }: { value: 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 }: { value: string }) => {\n return value\n .replace(/[^\\dA-Z]/g, '')\n .replace(/(.{4})/g, '$1 ')\n .trim();\n};\n\nconst cardDate = ({ value }: { value: 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 }: { value: 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}: {\n value: string;\n maskValue: TCurrencyMask;\n}) => {\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 }: { value: 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 = ({\n value = '',\n maskValue,\n}: {\n value: string;\n maskValue: TMaskGeneric;\n}) => {\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\ntype TReplaceProps = {\n value: string;\n maskValue: string | number;\n};\n\nconst replaceAll = ({ value = '', maskValue }: TReplaceProps) => {\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 masks: Record<string, unknown> = {\n generic,\n cardNumber,\n hideCardNumber,\n cardMask,\n cardDate,\n currencyMask,\n feinMask,\n replaceAll,\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};\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.object.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 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 const dateRearangeMapper: 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 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 dateRearangeMapper[validationValue?.origin.format](originValue).toString(),\n );\n\n let targetDate = validationValue?.target?.format\n ? new Date(\n dateRearangeMapper[validationValue?.target?.format](\n validationValue.target.value as string,\n ).toString(),\n )\n : new Date();\n\n if (validationValue.origin.intervals) {\n targetDate = getIntervalsDate(originDate, validationValue.origin.intervals);\n const date = new Date();\n originDate = new Date(\n `${date.getUTCMonth() + 1}/${date.getUTCDate()}/${date.getUTCFullYear()}`,\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<TValidationDateOperators, 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 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 = {\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 };\n\n return conditionMapper[rule.condition];\n };\n const rulesMapper = {\n and: () => !!validationValue.set.every(conditionResult),\n or: () => !!validationValue.set.some(conditionResult),\n };\n\n return {\n fail: rulesMapper[validationValue.rule](),\n };\n};\n\nconst validations: Record<string, unknown> = {\n conditions,\n date,\n length,\n greaterThan,\n maxLength,\n minLength,\n required,\n value,\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};\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 { run, generateCustomError, hasError };\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, '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, 'form' | 'field'>) => {\n field.subscribe(\n BUILD_EVENT(EEVents.ON_SCOPE_CHANGE, 'configs', 'disable'),\n () => field.rehydrate(),\n );\n\n field.data.mounted = true;\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.object.getValueByPath(form.initialValues, field.component.group);\n const initialValue =\n utils.object.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] || initialValue;\n};\n","import * as Events from '@core/events';\n\nexport const handler = ({\n field,\n}: Pick<Events.TEventInformation, 'field' | 'eventReducedSchema'>) => {\n field.data.blured = true;\n};\n","import * as Events from '@core/events';\n\nexport const handler = ({ field }: Pick<Events.TEventInformation, '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';\n\nconst template = {\n BEGIN: '${',\n END: '}',\n DEFAULT_SPLITTER: '||',\n};\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, '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 = '';\n const parts = match.split(template.DEFAULT_SPLITTER);\n if (parts.length > 1) {\n match = parts[0];\n defaultValue =\n (utils.object.getValueByPath(\n field.scope.getGlobalScope(),\n parts[1],\n ) as string) || parts[1];\n }\n\n field && subscribeFieldToScopeChange(parts);\n\n const scopedTemplateValue = utils.object.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 }\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 { TComponent } from '@core';\nimport { validations } from '@core/apis';\nimport * as Events from '@core/events';\n\nconst DEFAULT_DEBOUNCE_MS = 200;\n\nexport const handler = ({\n field,\n form,\n eventReducedSchema: { api },\n}: Pick<Events.TEventInformation, 'form' | 'field' | 'eventReducedSchema'>) =>\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\n scope.globalScope = {\n namespace: 'api',\n key: apiCall.scope,\n data: {\n loading: true,\n },\n };\n field.debounce(() => {\n return fetch(apiCall.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 }, 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, '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.object.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 ) || { [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 * as Events from '@core/events';\nimport * as apis from '@core/apis';\nimport { TComponent } from '@core';\n\nexport const handler = ({\n form,\n eventReducedSchema,\n}: Pick<Events.TEventInformation, 'form' | 'eventReducedSchema' | 'field'>) => {\n eventReducedSchema?.clearFields.forEach((clearField) => {\n clearField.fields.forEach((fieldName) => {\n const targetField = form.fields[fieldName];\n if (!targetField) return;\n if (!clearField.validations) {\n targetField.value = clearField.clearedValue;\n targetField.rehydrate();\n\n return;\n }\n\n const errors = apis.validations.run(\n targetField.value,\n clearField.validations,\n );\n\n if (!targetField.fieldHasError(errors)) return;\n targetField.value = clearField.clearedValue;\n targetField.rehydrate();\n });\n });\n};\n\nexport const events = (component: TComponent) =>\n Object.keys(component.clearFields || {});\n","import * as Events from '@core/events';\nimport * as apis from '@core/apis';\nimport { BUILD_EVENT, TComponent } from '@core';\nimport { EEVents } from '@core/constants';\n\nexport const handler = ({\n form,\n field,\n eventReducedSchema,\n}: Pick<Events.TEventInformation, 'form' | 'field' | 'eventReducedSchema'>) => {\n eventReducedSchema.visibilityConditions?.forEach((condition) => {\n const fieldNames = [...(condition.fieldNames || [condition.fieldName])];\n\n fieldNames.forEach((targetFieldName) => {\n if (!targetFieldName) return;\n const hasError = field.fieldHasError(\n apis.validations.run(field.value, condition.validations),\n );\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 () => {\n form.fields[targetFieldName].visibility = !hasError;\n form.fields[targetFieldName].rehydrate();\n },\n );\n return;\n }\n\n form.fields[targetFieldName].visibility = !hasError;\n form.fields[targetFieldName].rehydrate();\n });\n });\n};\n\nexport const events = (component: TComponent) =>\n Object.keys(component.visibilityConditions || {});\n","import { TEventInformation } from '@core/events';\n\nexport const handler = ({ field, data: { event } }: TEventInformation) => {\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) => {\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) => {\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) => {\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 * as Events from '@core/events';\nimport { EEVents } from '@core/constants';\n\nexport const handler = ({\n field,\n eventReducedSchema: { validations },\n form,\n}: Events.TEventInformation) => {\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 = error;\n\n field.data.failedErrorMessages = field.getFieldErrorMessages(field.data);\n};\n\nexport const events = (component: TComponent) =>\n Object.keys(component.validations || {});\n","import { TEventInformation } from '@core/events';\nimport { THookPayload, TSetGlobalScope } from '@core/types';\n\nexport const handler = ({\n form,\n}: Pick<TEventInformation, '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}: Pick<Events.TEventInformation, 'form' | 'event'>) => {\n const mapperNextStepIndex = {\n [CoreEvents.NAVIGATE_STEP_BACK]: form.step.index - 1,\n [CoreEvents.NAVIGATE_STEP_FORWARD]: form.step.index + 1,\n };\n\n const nextStepIndex = mapperNextStepIndex[event];\n if (!form.schema?.components[mapperNextStepIndex[event]]) {\n form.step = {\n ...form.step,\n navigated: false,\n };\n return;\n }\n\n const nextStep = form.schema.components[nextStepIndex];\n\n form.step = {\n ...form.step,\n numSteps: form.schema.components.length,\n navigated: !!form.schema.components[nextStepIndex],\n index: form.schema.components[nextStepIndex]\n ? nextStepIndex\n : form.step.index,\n currentStepSchema: form.schema.components[nextStepIndex]\n ? nextStep\n : form.step.currentStepSchema,\n };\n};\n","import * as Events from '@core/events';\nimport { TChildrenOptions } from '@core/types';\n\nexport const handler = ({\n form,\n payload,\n}: Pick<Events.TEventInformation, '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 getScopedField = (childrenScope?: string[]) => {\n if (!childrenScope) return form.fields;\n return Object.keys(form.fields).reduce((acc, key) => {\n if (!childrenScope.includes(key)) return acc;\n return {\n ...acc,\n [key]: form.fields[key],\n };\n }, {});\n };\n\n const fields = getScopedField(extractScopedChildrenFromOptions(payload));\n Object.keys(fields).forEach((key) => {\n if (fields[key].fieldValidationsHaveError(true)) {\n fields[key].rehydrate();\n }\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, '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';\n\nconst template = {\n BEGIN: '${',\n END: '}',\n DEFAULT_SPLITTER: '||',\n};\n\nconst hasTemplateString = (value: string) => {\n return /\\$\\{(.*)\\}.*/g.test(value);\n};\n\nexport const handler = ({ form }: Pick<Events.TEventInformation, 'form'>) => {\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 = '';\n const parts = match.split(template.DEFAULT_SPLITTER);\n if (parts.length > 1) {\n match = parts[0];\n defaultValue =\n (utils.object.getValueByPath(\n form.scope.getGlobalScope(),\n parts[1],\n ) as string) || parts[1];\n }\n\n const scopedTemplateValue = utils.object.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 }\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 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';\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 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 api,\n visibilityConditions,\n clearFields,\n data,\n masks,\n ],\n [EEVents.ON_FIELD_REHYDRATE]: [validations],\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});\n\nconst formFlows = () => ({\n [EEVents.ON_SCOPE_CHANGE]: [formTemplating, formLevelVisibilityConditions],\n [EEVents.ON_FORM_MOUNT]: [\n templating,\n hooks,\n steps,\n validate,\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_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});\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 TField,\n TComponent,\n TErrors,\n TComponentPropsMapping,\n TEventReducedSchema,\n TEventsKeys,\n} from '@core/types';\n\nimport Scope from '@core/managers/Scope';\nimport Base from '@core/managers/Base';\nimport { BUILD_EVENT } from '@core';\nimport { EEVents } from '@core/constants';\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 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 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 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(setErrorMessages?: boolean): 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[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() {\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 JSON.stringify(this.scope.scope.configs),\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} from '@core/types';\nimport { formFlows, register } from '@core/handlers/flows';\nimport { EEVents } from '@core/constants';\n\nclass Form extends Base {\n #fields: { [x in string]: Field } = {};\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, { [x in string]: Field }> = {};\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 }\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 = TObserverData & {\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): TEventInformation => {\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 = 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}: 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 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 //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 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 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 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 [CoreEvents.NAVIGATE_STEP_BACK, CoreEvents.NAVIGATE_STEP_FORWARD],\n () => {\n onStep && onStep(formInstance.formData);\n forceUpdate();\n },\n ),\n [],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n values: () => formInstance.formData,\n stepForward: formInstance.publishFor(CoreEvents.NAVIGATE_STEP_FORWARD),\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 <Submit ref={submitRef} />\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';\n\ninterface HocProps {\n Comp: (new () => React.Component) | any;\n propsMapping: Record<string, string>;\n}\n\ntype DecoratorProps<OriginalComponentProps = Record<string, unknown>> =\n OriginalComponentProps &\n Pick<\n TComponent,\n | 'validations'\n | 'masks'\n | 'clearFields'\n | 'api'\n | 'errorMessages'\n | 'filter'\n | 'formatters'\n | 'visibilityConditions'\n > & {\n formId?: string;\n visibility?: boolean;\n name: string;\n value?: any;\n };\n\nconst asFormField =\n <OriginalComponentProps,>({ Comp, propsMapping }: HocProps) =>\n ({\n name,\n validations,\n errorMessages,\n masks,\n filter,\n formatters,\n visibilityConditions,\n formId = DEFAULT_FORM_HOOK_ID,\n visibility = true,\n value,\n ...props\n }: DecoratorProps<OriginalComponentProps>): ReactElement => {\n const [, forceUpdate] = useForceUpdate();\n const component: TComponent = useMemo(\n () => ({\n state: {\n hidden: !visibility,\n },\n component: '',\n name: name,\n validations,\n errorMessages,\n masks,\n filter,\n visibilityConditions,\n formatters,\n }),\n [\n errorMessages,\n name,\n filter,\n formatters,\n masks,\n validations,\n visibilityConditions,\n ],\n );\n const fieldInstance = useMemo(\n () => getFormInstance(formId).getFieldInstance(component, propsMapping),\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 forceUpdate,\n );\n }, []);\n\n useMemo(() => {\n fieldInstance.subscribe(\n BUILD_EVENT(EEVents.ON_FIELD_CHANGE, component.name),\n ({ data }) => {\n forceUpdate();\n props[propsMapping.getValue] &&\n props[propsMapping.getValue](data.event, fieldInstance.data);\n },\n );\n }, [props[propsMapping.getValue]]);\n\n useMemo(() => {\n fieldInstance.subscribe(\n BUILD_EVENT(EEVents.ON_FIELD_BLUR, component.name),\n ({ data }) => {\n forceUpdate();\n props[propsMapping.onBlur] && props[propsMapping.onBlur](data.event);\n },\n );\n }, [props[propsMapping.onBlur]]);\n\n useMemo(() => {\n fieldInstance.subscribe(\n BUILD_EVENT(EEVents.ON_FIELD_FOCUS, component.name),\n ({ data }) => {\n forceUpdate();\n props[propsMapping.onFocus] &&\n props[propsMapping.onFocus](data.event);\n },\n );\n }, [props[propsMapping.onFocus]]);\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 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 { TChildrenOptions, TFormValues } from '@react/types';\n\nimport { CoreEvents, ALL_NAMESPACE_EVENTS, TField } from '@core';\nimport { DEFAULT_FORM_HOOK_ID, EEVents } from '@core/constants';\nimport { getFormInstance } from '@core/managers';\n\ntype TProps = {\n /**\n * The if of the form you want to connect to\n */\n id?: string;\n /**\n * And array of ids of forms you want to connect to\n */\n ids?: string[];\n /**\n * Callback to be called when form validity toggled\n * @param data All the available form data\n * @param field\n */\n onValid?(data: TFormValues, field: TField): void;\n /**\n * Callback to be called when the form generates some new data\n * @param data All the available form data\n */\n onData?(data: TFormValues): void;\n /**\n * Callback to be called when the form submits\n * @param data All the available form data\n */\n onSubmit?(data: TFormValues): void;\n};\n\ntype THookReturn = {\n /**\n * A function that lets you start the form submission\n */\n submitForm(): void;\n /**\n * You can call this function to get all the updated form data\n *\n * @param opts Options to configure your form data\n */\n formData(opts?: TChildrenOptions): TFormValues;\n};\n\n/**\n * This hooks lets you connect to your form/s in anywherer 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 onSubmit,\n id = DEFAULT_FORM_HOOK_ID,\n ids,\n}: TProps): 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 = () => {\n if (!ids) return getFormInstance(id).formData;\n return ids.reduce(\n (acc, formId) =>\n Object.keys(acc).reduce(\n (innerAcc, key) => ({\n ...innerAcc,\n [key]: { ...acc[key], ...getFormInstance(formId).formData[key] },\n }),\n {},\n ),\n {\n formatted: {},\n erroredFields: {},\n fields: {},\n form: {},\n predictableErroredFields: {},\n filteredFields: {},\n },\n ) as TFormValues;\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 () =>\n subscribe(ALL_NAMESPACE_EVENTS(CoreEvents.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\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_CLICK","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","NAVIGATE_STEP_FORWARD","NAVIGATE_STEP_BACK","VALIDATE_FORM","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","_inherits","_super","_createSuper","call","_Scope_scope","_assertThisInitialized","global","api","hooks","configs","fields","get","getGlobalScope","scope","_ref","_defineProperty","Object","assign","eventName","encapsulateIn","origin","path","parts","split","getNewPart","subObject","clonedParts","_toConsumableArray","splice","part","getValueByPath","object","reduce","acc","getTypeCard","availableOptions","rawValue","removeGaps","toString","types","creditCardType","filter","id1","type","some","id2","replace","formatValue","addGaps","gaps","_gaps$reduce","_ref2","offset","i","_ref3","regexString","replaceString","digitNumber","_gaps$reduce2","trim","slice","lengths","hasJsonStructure","str","result","JSON","parse","prototype","err","undo_splitter","formatterValue","originalValue","formattersApplied","formatter","nextStartingIndex","position","formatters","splitter","formattedValue","capitalize","charAt","toUpperCase","upperCase","_ref4","gapsCreditCard","_ref5","_utils$creditCard$get2","utils","run","componentFormatters","undo","newValue","keys","formatterFn","generic","_ref7","_ref7$value","maskValue","masked","item","_item$to","to","mask","from","maskedPortion","Array","join","masks","cardNumber","_ref6","hideCardNumber","cardMask","cardDate","fixedValue","valZeroTwo","currencyMask","_ref5$value","replacedValue","Intl","NumberFormat","locale","minimumFractionDigits","maximumFractionDigits","style","currency","format","feinMask","replaceAll","_ref8","_ref8$value","targetReplaceMask","regex","validationValue","fail","test","_ref16","_ref16$value","validations","substring","hasError","conditions","_ref30","_ref30$value","conditionResult","rule","forceDefinedOrigin","forceDefinedTarget","target","condition","and","every","or","date","_ref29","_ref29$value","_a","_b","intervals","dateRearangeMapper","DDMMYYYY","dateParts","includes","YYYYMMDD","YYYYDDMM","MMDDYYYY","timestamp","Date","originValue","originDate","targetDate","_c","_d","getIntervalsDate","intervalsMapper","years","setUTCFullYear","getUTCFullYear","months","setUTCMonth","getUTCMonth","days","setDate","getUTCDate","interval","onlyValidDate","isFinite","originTimestamp","getTime","targetTimestamp","operator","targetValue","greaterThan","parseInt","maxLength","_ref4$value","Number","isInteger","minLength","required","hasNoExtraSpaces","_ref21","errorMessage","isCreditCard","_ref10","metadata","typeCard","creditCardCC","code","name","creditCardCCSize","size","isCreditCardAndLength","_ref12","_utils$creditCard$get6","isCreditCodeMatch","_ref11","numberCard","onlyLetters","_ref14","notAllowSpaces","_ref17","callback","_ref18","message","isNumber","_ref19","customValidation","_ref15","notEmpty","_ref20","numericRange","_ref22","String","end","start","email","_ref9","lessThan","sequentialNumber","_ref24","indexOf","repeatedNumbers","_ref25","url","_ref13","_ref26","searchErrorInPath","valueForPath","preventUnMountValidation","errors","defaultResponse","validationsResult","isArray","paths","res","isInTheList","_ref23","stringify","_ref27","values","validation","fieldName","customNameRule","_ref28","_typeof","rules","errorMessages","formData","validationFN","ruleResult","find","concatenate","a","b","add","subtract","searchValue","replaceValue","handler","field","changed","parsedEventValue","form","rehydrate","mounted","_field$component$prop","component","props","staticInitialSchemaValue","mappings","groupValue","group","initialValues","initialValue","steps","_g","_f","_e","index","_h","formatted","blured","focused","template","hasTemplateString","varOps","isVarOps","scopeComponent","children","wrapper","rest","__rest","scopedComponent","inObject","replaceTemplateString","targetString","lastIndex","lastIndexOf","substringTemplate","match","originalMatchLength","defaultValue","isFieldExcludedObservable","observables","templates","exclude","matchingParts","subscribeFieldToScopeChange","scopedTemplateValue","e","scopedString","apis","getVarOpsOp","apply","extractVarOpsArgs","obj","map","scopeForm","schema","components","newScopedForm","scopedSchema","exports","Op","hasOwn","hasOwnProperty","defineProperty","desc","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","arg","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","reject","record","__await","then","unwrapped","previousPromise","callInvokeWithMethodAndArg","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","_sent","dispatchException","done","methodName","TypeError","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","setPrototypeOf","__proto__","awrap","async","iter","val","reverse","pop","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","eventReducedSchema","apiCall","meetsRunningCondition","preConditions","fieldHasError","blockRequestWhenInvalid","fieldValidationsHaveError","globalScope","loading","fetch","body","headers","parsedResponse","json","status","response","jsonErr","eventField","fieldsData","fieldValues","visible","mergedKey","formattedDataDefaults","erroredFields","predictableErroredFields","filteredFields","ignore","stepData","step","isValid","messages","fieldValue","buildFormMessages","clearFields","clearField","targetField","clearedValue","visibilityConditions","fieldNames","targetFieldName","visibility","eventMapper","number","checkbox","checked","id","options","isDeletingValue","ObserverError","_Error","_wrapNativeSuper","breaksObservingChain","_field$scopedComponen","dataToFilter","cleanMask","componentMasks","failedErrorMessages","getFieldErrorMessages","setScope","_mapperNextStepIndex","mapperNextStepIndex","nextStepIndex","nextStep","numSteps","navigated","currentStepSchema","childrenScope","payload","opts","scopeBlurredChildren","scopeChangedChildren","extractScopedChildrenFromOptions","formEventDirectives","register","flows","flow","fieldFlows","templating","mount","htmlEventParser","change","blur","focus","formFlows","formTemplating","formLevelVisibilityConditions","validate","Field","propsMapping","_Field_fieldData","_Field_component","_Field_scopedComponent","_Field_propsMapping","hidden","ignoreValue","propsActionsMapping","getValue","onBlur","onClick","onFocus","setErrorMessage","setErrorState","disabled","disable","_data$errors","setErrorMessages","_classPrivateFieldGe","_classPrivateFieldGe$","checksum","EFlowLogging","Form","formId","_Form_fields","_Form_observer","_Form_step","getFieldInstance","destroyField","Factory","workers","getFormInstance","getGroupFormsIds","_createClass","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","_iterator","_createForOfIteratorHelper","_loop","handlerRes","_step","v","_this6","t0","t1","OBSERVER","s","n","_ret","f","level","action","_Factory","onMount","onChange","onRehydrate","forceChange","dispatchForceChange","forceRehydrate","dispatchForceRehydrate","forceBlur","dispatchForceBlur","forceFocus","dispatchForceFocus","forceClick","dispatchForceClick","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","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","SchemaGuard","renderLoading","Provider","asFormField","Comp","useForm","onValid","ids","extractFormsData","innerAcc","onDataChange","useCallback","submitForm"],"mappings":"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"}
|