@reactables/forms 2.0.0-beta.11 → 2.0.0-beta.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/RxForm/RxForm.d.ts +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/Models/Controls.ts","../src/Validators/Validators.ts","../../../node_modules/tslib/tslib.es6.js","../src/Helpers/getValueFromControlConfig.ts","../src/Helpers/getFormKey.ts","../src/Helpers/generateKey.ts","../src/Reducers/Hub1/getErrors.ts","../src/Helpers/buildFormState.ts","../src/Helpers/addAsyncValidationEffects.ts","../src/Helpers/buildHub2Source.ts","../src/Helpers/getControl.ts","../src/Reducers/Hub1/updateAncestorValues.ts","../src/Helpers/isChildRef.ts","../src/Helpers/getDescendantControls.ts","../src/Helpers/getAncestorControls.ts","../src/Helpers/controlRefCheck.ts","../src/Reducers/Hub1/updateValues.ts","../src/Reducers/Hub1/updateAncestorValuesRemoveControl.ts","../src/Reducers/Hub1/removeControl.ts","../src/Reducers/Hub1/updateAncestorValuesAddControl.ts","../src/Helpers/getControlBranch.ts","../src/Reducers/Hub1/addControl.ts","../src/Reducers/Hub1/pushControl.ts","../src/Reducers/Hub1/updateAncestorPristineValues.ts","../src/Reducers/Hub1/markControlAsPristine.ts","../src/Reducers/Hub1/markControlAsTouched.ts","../src/Reducers/Hub1/markControlAsUntouched.ts","../src/Reducers/Hub1/resetControl.ts","../src/Reducers/Hub2/asyncValidation.ts","../src/Helpers/reverseObjectKeys.ts","../src/Reducers/Hub2/mergeBranchErrors.ts","../src/Reducers/Hub2/asyncValidationResponse.ts","../src/Reducers/Hub2/mergeErrors.ts","../src/Reducers/Hub2/mergeRemoveControl.ts","../src/Reducers/Hub2/mergeControls.ts","../src/Reducers/Hub2/formChange.ts","../src/RxForm/RxForm.ts","../src/Helpers/getArrayItems.ts"],"sourcesContent":["import { AbstractControlConfig } from './Configs';\nimport { FormErrors } from './FormErrors';\nimport { ControlRef } from './ControlRef';\n\nexport interface BaseControl<T> {\n pristineValue: T;\n controlRef: ControlRef;\n value: T;\n dirty: boolean;\n touched: boolean;\n validatorErrors: FormErrors;\n config: AbstractControlConfig;\n key: string;\n}\n\ninterface AsyncFields {\n asyncValidatorErrors: FormErrors;\n asyncValidateInProgress: { [key: string | number]: boolean };\n pending?: boolean;\n}\n\ninterface ValidatedFields {\n valid: boolean | null;\n errors: FormErrors;\n childrenValid: boolean | null;\n}\n\nexport interface Hub2Fields extends AsyncFields, ValidatedFields {}\n\nexport interface FormControl<T> extends BaseControl<T>, Hub2Fields {}\n\nexport interface BaseFormState<T> {\n form: BaseForm<T>;\n // controls that have changed including new ones added\n _changedControls?: {\n [key: string]: BaseControl<unknown>;\n };\n // controls removed from removeControl or resetControl - only the target control ref, not descendants\n _removedControls?: {\n [key: string]: BaseControl<unknown>;\n };\n}\n\nexport type BaseForm<T> = {\n root: BaseControl<T>;\n [key: string]: BaseControl<unknown>;\n};\n\nexport type Form<T> = {\n root: FormControl<T>;\n} & { [key: string]: FormControl<unknown> };\n\nexport const DEFAULT_HUB2_FIELDS: Hub2Fields = {\n asyncValidatorErrors: {},\n asyncValidateInProgress: {},\n pending: false,\n valid: null,\n childrenValid: null,\n errors: {},\n};\n","import { FormErrors } from '../Models/FormErrors';\nimport { ValidatorFn } from '../Models/Validators';\n\nexport const required: ValidatorFn = (value: unknown) => {\n if (typeof value === 'string' || typeof value === 'object') {\n return { required: !Boolean(value) };\n }\n\n if (typeof value === 'number') {\n return { required: !(value !== undefined && value !== null) };\n }\n\n if (typeof value === 'boolean') {\n return { required: !value };\n }\n\n return { required: false };\n};\n\nexport const arrayNotEmpty: ValidatorFn = (value: unknown[]) => ({\n arrayNotEmpty: !Boolean(value.length),\n});\n\nexport const email: ValidatorFn = (value: string): FormErrors =>\n value && !/^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/g.test(value) ? { email: true } : { email: false };\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import {\n FormControlConfig,\n FormArrayConfig,\n FormGroupConfig,\n AbstractControlConfig,\n} from '../Models/Configs';\n\nexport const getValueFromControlConfig = <T>(controlConfig: AbstractControlConfig): T => {\n const controls = (<FormArrayConfig | FormGroupConfig>controlConfig).controls;\n if (controls && !(controls instanceof Array)) {\n const result: { [key: string]: unknown } = {};\n\n for (const key in (<FormGroupConfig>controlConfig).controls) {\n const control = (<FormGroupConfig>controlConfig).controls[key];\n result[key] = getValueFromControlConfig(control);\n }\n\n return result as T;\n } else if (controls && controls instanceof Array) {\n const configs = (<FormArrayConfig>controlConfig).controls;\n const result = configs\n ? configs.map((controlConfig) => getValueFromControlConfig(controlConfig))\n : [];\n\n return result as T;\n } else {\n return (<FormControlConfig<T>>controlConfig).initialValue;\n }\n};\n","import { ControlRef } from '../Models';\nexport const getFormKey = (controlRef: ControlRef) =>\n controlRef.length ? controlRef.join('.') : 'root';\n","export const generateKey = (length: number) => {\n let result = '';\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n const charactersLength = characters.length;\n let counter = 0;\n while (counter < length) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n counter += 1;\n }\n return result;\n};\n","import { BaseControl } from '../../Models/Controls';\nimport { FormErrors } from '../../Models';\nimport { RxFormProviders } from '../../RxForm/RxForm';\n\nexport const getErrors = <T>(control: BaseControl<T>, value: T, { validators }: RxFormProviders) =>\n control.config.validators?.reduce((acc, validator) => {\n if (!validators?.[validator]) {\n throw `You have not provided a validator for \"${validator}\"`;\n }\n return { ...acc, ...validators[validator](value) };\n }, {} as FormErrors) || {};\n","import { AbstractControlConfig } from '../Models/Configs';\nimport { BaseForm, BaseControl, BaseFormState } from '../Models/Controls';\nimport { ControlRef } from '../Models/ControlRef';\nimport { FormArrayConfig, FormGroupConfig } from '../Models/Configs';\nimport { getValueFromControlConfig } from './getValueFromControlConfig';\nimport { getFormKey } from './getFormKey';\nimport { generateKey } from './generateKey';\nimport { getErrors } from '../Reducers/Hub1/getErrors';\nimport { RxFormProviders } from '../RxForm/RxForm';\n\nexport const buildState = <T>(\n config: AbstractControlConfig,\n controlRef: ControlRef = [],\n providers: RxFormProviders,\n form?: BaseForm<T>,\n): BaseForm<T> => {\n const value = getValueFromControlConfig(config);\n const control: BaseControl<unknown> = {\n pristineValue: value,\n dirty: false,\n touched: false,\n value,\n controlRef,\n validatorErrors: {},\n config,\n key: generateKey(5),\n };\n\n let newForm: BaseForm<T> = {\n ...form,\n [getFormKey(controlRef)]: {\n ...control,\n validatorErrors: getErrors(control, value, providers),\n },\n } as BaseForm<T>;\n\n const controls = (<FormGroupConfig | FormArrayConfig>config).controls;\n\n // Adding controls for Form Group\n if (controls && !(controls instanceof Array)) {\n newForm = Object.entries((<FormGroupConfig>config).controls).reduce(\n (acc, [key, controlConfig]) => {\n return buildState(controlConfig, controlRef.concat(key), providers, acc);\n },\n newForm,\n );\n } else if (controls && controls instanceof Array) {\n // Adding controls for Form Array\n newForm = (<FormArrayConfig>config).controls.reduce(\n (acc, controlConfig, index) =>\n buildState(controlConfig, controlRef.concat(index), providers, acc),\n newForm,\n );\n }\n\n return newForm;\n};\n\nexport const buildFormState = <T>(\n config: AbstractControlConfig,\n controlRef: ControlRef = [],\n providers: RxFormProviders,\n form?: BaseForm<T>,\n): BaseFormState<T> => {\n return {\n form: buildState(config, controlRef, providers, form),\n };\n};\n","import { Observable, of, concat } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { Action, Effect } from '@reactables/core';\nimport { map, switchMap } from 'rxjs/operators';\nimport { BaseControl } from '../Models/Controls';\nimport { RxFormProviders } from '../RxForm/RxForm';\n\ntype ControlScopedEffect<T> = Effect;\n\nexport const getScopedEffectsForControl = <T>(\n formControl: BaseControl<T>,\n providers: RxFormProviders,\n): ControlScopedEffect<T>[] => {\n const { config, key, controlRef } = formControl;\n const { asyncValidators } = config;\n\n let scopedEffects: ControlScopedEffect<T>[] = [];\n\n if (asyncValidators && asyncValidators.length) {\n scopedEffects = asyncValidators.reduce(\n (acc: ControlScopedEffect<T>[], asyncValidator, validatorIndex) => {\n const effect: ControlScopedEffect<T> = (actions$: Observable<Action<BaseControl<T>>>) => {\n if (!providers.asyncValidators?.[asyncValidator]) {\n throw `You have not provided an asyncValidator for \"${asyncValidator}\"`;\n }\n return actions$.pipe(\n map(({ payload: control }) => control),\n providers.asyncValidators[asyncValidator],\n switchMap((errors$) => {\n return concat(\n of({ type: 'asyncValidation', payload: controlRef }),\n errors$.pipe(\n map((errors) => ({\n type: 'asyncValidationResponse',\n payload: {\n key,\n errors,\n validatorIndex,\n },\n })),\n catchError(() =>\n of({\n type: 'asyncValidationResponse',\n payload: {\n key,\n errors: { asyncValidationApiError: true },\n validatorIndex,\n },\n }),\n ),\n ),\n );\n }),\n );\n };\n\n return acc.concat(effect);\n },\n [],\n );\n }\n return scopedEffects;\n};\n\nexport const getAsyncValidationEffects = (formControls: BaseControl<unknown>[]) =>\n formControls.reduce((acc: Action<BaseControl<unknown>>[], control) => {\n if (!control.config.asyncValidators?.length) return acc;\n\n const action = { type: 'asyncValidationEffect', payload: control };\n\n return acc.concat(action);\n }, []);\n","import { Observable, of } from 'rxjs';\nimport isEqual from 'lodash.isequal';\nimport { map, mergeMap, pairwise, startWith } from 'rxjs/operators';\nimport { Action } from '@reactables/core';\nimport { BaseFormState } from '../Models/Controls';\nimport { getAsyncValidationEffects } from './addAsyncValidationEffects';\n\nexport const buildHub2Source = (\n hub1State$: Observable<BaseFormState<any>>,\n initialBaseState: BaseFormState<any>,\n): Observable<Action<any>> => {\n const hub1StateMapped$ = hub1State$.pipe(map((payload) => ({ type: 'formChange', payload })));\n\n const initialAction = { type: 'formChange', payload: initialBaseState };\n\n const sourceForHub2$ = hub1StateMapped$.pipe(\n startWith(initialAction),\n pairwise(),\n mergeMap(\n ([\n {\n payload: { form: prevForm },\n },\n currAction,\n ]) => {\n const {\n payload: { _changedControls, form: currentForm },\n } = currAction;\n\n const valueChanged = !isEqual(prevForm.root.value, currentForm.root.value);\n\n const controlsToCheck =\n _changedControls && valueChanged ? Object.values(_changedControls) : [];\n\n const asyncValidationEffectActions = getAsyncValidationEffects(controlsToCheck);\n\n return of(currAction, ...asyncValidationEffectActions);\n },\n ),\n );\n\n return sourceForHub2$ as Observable<Action<any>>;\n};\n","import { BaseForm, Form, BaseControl, FormControl } from '../Models/Controls';\nimport { ControlRef } from '../Models/ControlRef';\nimport { getFormKey } from './getFormKey';\n\nexport const getControl = <T extends BaseForm<unknown> | Form<unknown>>(\n controlRef: ControlRef,\n form: T,\n): T extends BaseForm<unknown> ? BaseControl<unknown> : FormControl<unknown> => {\n return form[getFormKey(controlRef)] as T extends BaseForm<unknown>\n ? BaseControl<unknown>\n : FormControl<unknown>;\n};\n","import { Action } from '@reactables/core';\nimport { BaseForm } from '../../Models/Controls';\nimport { UpdateValuesPayload } from '../../Models/Payloads';\nimport { getControl } from '../../Helpers/getControl';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { getErrors } from './getErrors';\nimport isEqual from 'lodash.isequal';\nimport { RxFormProviders } from '../../RxForm/RxForm';\n\nexport const UPDATE_ANCESTOR_VALUES = 'UPDATE_ANCESTOR_VALUES';\nexport const updateAncestorValues = <T>(\n form: BaseForm<T>,\n { payload: { controlRef, value } }: Action<UpdateValuesPayload<unknown>>,\n providers: RxFormProviders,\n): BaseForm<T> => {\n if (controlRef.length) {\n const parentRef = controlRef.slice(0, -1);\n const parentControl = getControl(parentRef, form);\n const parentFormKey = getFormKey(parentControl.controlRef);\n const childKey = controlRef.slice(-1)[0];\n\n let newValue: unknown;\n\n // If parent is a Form Array\n if (Array.isArray(parentControl.value)) {\n newValue = parentControl.value.map((item: unknown, index) =>\n index === childKey ? value : item,\n );\n } else {\n // If parent is a Form Group\n newValue = {\n ...(parentControl.value as object),\n [childKey]: value,\n };\n }\n\n const newParentControl = {\n ...parentControl,\n validatorErrors: getErrors(parentControl, newValue, providers),\n value: newValue,\n dirty: !isEqual(newValue, parentControl.pristineValue),\n };\n\n return updateAncestorValues(\n {\n ...form,\n [parentFormKey]: newParentControl,\n },\n {\n type: UPDATE_ANCESTOR_VALUES,\n payload: { controlRef: parentRef, value: newValue },\n },\n providers,\n );\n }\n\n return form;\n};\n","import { ControlRef } from '../Models/ControlRef';\n\nexport const isChildRef = (controlRef: ControlRef, parentRef: ControlRef) => {\n return (\n parentRef.every((key, index) => controlRef[index] === key) &&\n controlRef.length === parentRef.length + 1\n );\n};\n","import { BaseControl, FormControl, BaseForm, Form } from '../Models/Controls';\nimport { ControlRef } from '../Models/ControlRef';\nimport { getControl } from './getControl';\n\n// Includes the original control of interest unless excludeSelf === true\nexport const getDescendantControls = <T extends BaseForm<unknown> | Form<unknown>>(\n controlRef: ControlRef,\n form: T,\n excludeSelf = false,\n): (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[] => {\n if (!controlRef.length) {\n return Object.values(form).filter(({ controlRef }) =>\n excludeSelf ? controlRef.length !== 0 : true,\n ) as (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[];\n }\n\n const control = getControl(controlRef, form);\n const { value, config } = control;\n let descendants: (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[] = [];\n\n if (Array.isArray(config.controls)) {\n // If control is a Form Array\n descendants = (value as unknown[]).reduce(\n (\n acc: (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[],\n item,\n index,\n ) => {\n return acc.concat(getDescendantControls(controlRef.concat(index), form));\n },\n [],\n ) as (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[];\n } else if (config.controls) {\n // If control is a Form Group\n descendants = Object.keys(value as object).reduce(\n (acc: (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[], key) => {\n return acc.concat(getDescendantControls(controlRef.concat(key), form));\n },\n [],\n ) as (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[];\n }\n\n if (excludeSelf) return descendants;\n\n return (\n [control] as (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[]\n ).concat(descendants || []);\n};\n","import { BaseControl, BaseForm, Form, FormControl } from '../Models/Controls';\nimport { ControlRef } from '../Models/ControlRef';\nimport { getControl } from '../Helpers/getControl';\nimport { getFormKey } from './getFormKey';\n\n// Includes the original control of interest unless excludeSelf === true\nexport const getAncestorControls = <T extends BaseForm<unknown> | Form<unknown>>(\n controlRef: ControlRef,\n form: T,\n excludeSelf = false,\n): (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[] => {\n const formControls = controlRef.reduce(\n (acc, key) => {\n const currentRef = acc.currentRef.concat(key);\n const formControls = acc.formControls.concat(getControl(currentRef, form));\n return {\n currentRef,\n formControls,\n };\n },\n {\n currentRef: [] as ControlRef,\n formControls: [] as BaseControl<unknown>[],\n },\n ).formControls as (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[];\n\n const root = form['root'] as T extends Form<unknown>\n ? FormControl<unknown>\n : BaseControl<unknown>;\n\n const result = [root].concat(formControls);\n\n return result.filter((control) =>\n excludeSelf ? getFormKey(control.controlRef) !== getFormKey(controlRef) : true,\n );\n};\n","import { ControlRef } from '../Models';\n\n/**\n * @description see if any keys in a ControlRef has a \".\" probably a mistake by developer\n */\nexport const controlRefCheck = (ref: ControlRef): void => {\n try {\n const hasError = ref.some((key) => {\n if (typeof key === 'string') {\n return key.includes('.');\n }\n\n return false;\n });\n\n if (hasError) {\n const refString = `[${ref.reduce((acc: string, key, index) => {\n if (index > 0) {\n acc = acc.concat(', ');\n }\n if (typeof key === 'number') {\n return acc.concat(key.toString());\n }\n return acc.concat(`'${key}'`);\n }, '')}]`;\n\n const suggestion = `[${ref.reduce((acc: string, key, index) => {\n if (index > 0) {\n acc = acc.concat(', ');\n }\n\n if (typeof key === 'number') {\n return acc.concat(key.toString());\n }\n\n const splitted = key\n .split('.')\n .map((key) => `'${key}'`)\n .join(', ');\n\n return acc.concat(`${splitted}`);\n }, '')}]`;\n\n console.warn(`You provided ${refString}. Did you mean ${suggestion}?`);\n }\n } catch {}\n};\n","import { Action } from '@reactables/core';\nimport { BaseFormState, BaseControl, BaseForm } from '../../Models/Controls';\nimport { FormArrayConfig, FormControlConfig, FormGroupConfig } from '../../Models';\nimport { UpdateValuesPayload } from '../../Models/Payloads';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { updateAncestorValues, UPDATE_ANCESTOR_VALUES } from './updateAncestorValues';\nimport { isChildRef } from '../../Helpers/isChildRef';\nimport { FormErrors } from '../../Models';\nimport isEqual from 'lodash.isequal';\nimport { getErrors } from './getErrors';\nimport { getDescendantControls } from '../../Helpers/getDescendantControls';\nimport { getAncestorControls } from '../../Helpers/getAncestorControls';\nimport { RxFormProviders } from '../../RxForm/RxForm';\nimport { controlRefCheck } from '../../Helpers/controlRefCheck';\n\nconst checkKeys = (oldObj: object, newObj: object): void => {\n const oldKeys = Object.keys(oldObj).slice().sort().join();\n const newKeys = Object.keys(newObj).slice().sort().join();\n if (oldKeys !== newKeys) {\n console.warn(\n `You are trying to update multiple controls but the keys don't match. It is recommended your keys match. Old keys: ${oldKeys}. New Keys: ${newKeys} `,\n );\n }\n};\n\nconst UPDATE_DESCENDANT_VALUES = 'UPDATE_DESCENDANT_VALUES';\nconst updateDescendantValues = <T>(\n form: BaseForm<T>,\n { payload: { controlRef, value } }: Action<UpdateValuesPayload<unknown>>,\n providers: RxFormProviders,\n): BaseForm<T> => {\n const descendants = getDescendantControls(controlRef, form, true).map(\n (control) => [getFormKey(control.controlRef), control] as [string, BaseControl<unknown>],\n );\n\n const result = descendants.reduce((acc: BaseForm<T>, [key, control]) => {\n if (isChildRef(control.controlRef, controlRef)) {\n const newChildValue = (value as { [key: string]: any })[\n control.controlRef.at(-1) as string\n ] as unknown;\n const validatorErrors: FormErrors = getErrors(control, newChildValue, providers);\n const oldChildValue = control.value;\n\n const newControl = {\n ...control,\n value: newChildValue,\n validatorErrors,\n dirty: !isEqual(newChildValue, control.pristineValue),\n };\n\n acc = {\n ...acc,\n [key]: newControl,\n };\n\n const { controls: configControls } = control.config as FormArrayConfig | FormGroupConfig;\n\n if (configControls) {\n checkKeys(oldChildValue as object, newChildValue as object);\n acc = updateDescendantValues(\n acc,\n {\n type: UPDATE_DESCENDANT_VALUES,\n payload: { controlRef: control.controlRef, value: newChildValue },\n },\n providers,\n );\n }\n }\n\n return acc;\n }, form);\n\n return result;\n};\n\n// Will only update child controls that are present.\n// Use AddControlPayload/RemoveControl action reducers to add/remove control\nexport const updateValues = <T>(\n { form, _changedControls = {}, _removedControls = {} }: BaseFormState<T>,\n action: Action<UpdateValuesPayload<unknown>>,\n providers: RxFormProviders,\n mergeChanges = false,\n): BaseFormState<T> => {\n const { normalizers } = providers;\n const {\n payload: { controlRef, value },\n } = action;\n\n controlRefCheck(controlRef);\n\n // Update its own value\n const ctrlKey = getFormKey(controlRef);\n\n let newValue = value;\n const oldValue = form[ctrlKey].value;\n\n const { config } = form[ctrlKey];\n\n if ((config as FormControlConfig<unknown>).normalizers) {\n newValue = (config as FormControlConfig<unknown>).normalizers?.reduce(\n (acc: unknown, normalizer) => {\n if (!normalizers?.[normalizer]) {\n throw `You have not provided a normalizer for \"${normalizer}\"`;\n }\n return normalizers[normalizer](acc) as unknown;\n },\n value,\n );\n }\n\n const validatorErrors: FormErrors = getErrors(form[ctrlKey], newValue, providers);\n\n const newControl = {\n ...form[ctrlKey],\n validatorErrors,\n dirty: !isEqual(value, form[ctrlKey].pristineValue),\n value: newValue,\n };\n\n let result: BaseFormState<T> = {\n form: {\n ...form,\n [ctrlKey]: newControl,\n },\n _changedControls: { [newControl.key]: newControl },\n };\n\n const { controls: configControls } = config as FormArrayConfig | FormGroupConfig;\n\n // Update its descendants\n if (configControls) {\n checkKeys(oldValue as object, newValue as object);\n const updatedDescendants = updateDescendantValues(\n result.form,\n {\n type: UPDATE_DESCENDANT_VALUES,\n payload: {\n controlRef,\n value: newValue,\n },\n },\n providers,\n );\n\n const changedDescendantControls = getDescendantControls(controlRef, updatedDescendants).reduce(\n (acc: { [key: string]: BaseControl<unknown> }, control) => ({\n ...acc,\n [control.key]: control,\n }),\n {},\n );\n\n result = {\n ...result,\n form: updatedDescendants,\n _changedControls: {\n ...result._changedControls,\n ...changedDescendantControls,\n },\n };\n }\n\n // Update its Ancestors\n if (controlRef.length) {\n result = {\n ...result,\n form: updateAncestorValues(\n result.form,\n {\n type: UPDATE_ANCESTOR_VALUES,\n payload: { controlRef, value: newValue },\n },\n providers,\n ),\n };\n }\n\n const changedAncestorControls = getAncestorControls(controlRef, result.form).reduce(\n (acc: { [key: string]: BaseControl<unknown> }, control) => ({\n ...acc,\n [control.key]: control,\n }),\n {},\n );\n\n const mergedResult = {\n ...result,\n _changedControls: {\n ...(mergeChanges ? _changedControls : undefined),\n ...changedAncestorControls,\n ...result._changedControls,\n },\n _removedControls: mergeChanges ? _removedControls : undefined,\n };\n\n return mergedResult;\n};\n","import { Action } from '@reactables/core';\nimport { BaseForm } from '../../Models/Controls';\nimport { getControl } from '../../Helpers/getControl';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { updateAncestorValues, UPDATE_ANCESTOR_VALUES } from './updateAncestorValues';\nimport { ControlRef } from '../../Models/ControlRef';\nimport { getErrors } from './getErrors';\nimport isEqual from 'lodash.isequal';\nimport { RxFormProviders } from '../../RxForm/RxForm';\n\nexport const UPDATE_ANCESTOR_VALUES_REMOVE_CONTROL = 'UPDATE_ANCESTOR_VALUES_REMOVE_CONTROL';\nexport const updateAncestorValuesRemoveControl = <T>(\n form: BaseForm<T>,\n { payload: controlRef }: Action<ControlRef>,\n providers: RxFormProviders,\n): BaseForm<T> => {\n if (controlRef.length) {\n const parentRef = controlRef.slice(0, -1);\n const parentControl = getControl(parentRef, form);\n const parentFormKey = getFormKey(parentControl.controlRef);\n const childKey = controlRef.slice(-1)[0];\n\n let newValue;\n\n // If parent is a Form Array\n if (Array.isArray(parentControl.value)) {\n newValue = parentControl.value.filter((item, index) => index !== childKey);\n } else {\n // If parent is a Form Group\n newValue = {\n ...(parentControl.value as object),\n };\n\n delete newValue[childKey];\n }\n\n const newParentControl = {\n ...parentControl,\n value: newValue,\n validatorErrors: getErrors(parentControl, newValue, providers),\n dirty: !isEqual(newValue, parentControl.pristineValue),\n };\n\n return updateAncestorValues(\n {\n ...form,\n [parentFormKey]: newParentControl,\n },\n {\n type: UPDATE_ANCESTOR_VALUES,\n payload: { controlRef: parentRef, value: newValue },\n },\n providers,\n );\n }\n\n return form;\n};\n","import { Action } from '@reactables/core';\nimport { BaseForm, BaseFormState, BaseControl } from '../../Models/Controls';\nimport { ControlRef } from '../../Models/ControlRef';\nimport { getControl } from '../../Helpers/getControl';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport {\n updateAncestorValuesRemoveControl,\n UPDATE_ANCESTOR_VALUES_REMOVE_CONTROL,\n} from './updateAncestorValuesRemoveControl';\nimport { getDescendantControls } from '../../Helpers/getDescendantControls';\nimport { getAncestorControls } from '../../Helpers/getAncestorControls';\nimport { RxFormProviders } from '../../RxForm/RxForm';\nimport { controlRefCheck } from '../../Helpers/controlRefCheck';\n\nexport const removeControl = <T>(\n state: BaseFormState<T>,\n action: Action<ControlRef>,\n providers: RxFormProviders,\n mergeChanges = false,\n): BaseFormState<T> => {\n const { form } = state;\n const { payload: controlRef } = action;\n\n controlRefCheck(controlRef);\n\n const controlToRemove = getControl(controlRef, form);\n\n if (!controlToRemove) {\n throw 'Control not found';\n }\n\n // Can't remove the root of the form\n if (!controlRef.length) return { form };\n\n const parentRef = controlRef.slice(0, -1);\n\n const parentIsFormArray = Array.isArray(getControl(parentRef, form).config.controls);\n\n const descendants = getDescendantControls(controlRef, form);\n const descendantkeys = descendants.map(({ controlRef }) => getFormKey(controlRef));\n\n const controlsRemoved = { ...form };\n\n descendantkeys.forEach((key) => {\n delete controlsRemoved[key];\n });\n\n // Remove control and all descendants\n const controlRemoved: BaseForm<T> = Object.entries(controlsRemoved).reduce(\n (acc, [key, control]) => {\n // May need to reindex array items of removed control\n // if it was part of a Form Array.\n if (parentIsFormArray) {\n const oldIndex = control.controlRef.at(parentRef.length) as number;\n\n if (\n // If control is descendant.\n parentRef.every((ref, index) => control.controlRef[index] === ref) &&\n control.controlRef.length > parentRef.length &&\n // If the array item index was greater than the index of item removed\n // we need to decrement its index by 1.\n oldIndex > (controlRef.at(-1) as number)\n ) {\n const newRef: ControlRef = parentRef\n .concat(oldIndex - 1)\n .concat(control.controlRef.slice(parentRef.length + 1));\n\n return {\n ...acc,\n [getFormKey(newRef)]: {\n ...control,\n controlRef: newRef,\n },\n };\n }\n }\n\n return { ...acc, [key]: control };\n },\n {} as BaseForm<T>,\n );\n\n const result = updateAncestorValuesRemoveControl(\n controlRemoved,\n {\n type: UPDATE_ANCESTOR_VALUES_REMOVE_CONTROL,\n payload: controlRef,\n },\n providers,\n );\n\n let _changedControls = {\n ...(mergeChanges ? state._changedControls || {} : undefined),\n ...getAncestorControls(controlRef.slice(0, -1), result).reduce(\n (acc: { [key: string]: BaseControl<unknown> }, control) => ({\n ...acc,\n [control.key]: control,\n }),\n {},\n ),\n };\n\n // Check for reindexing for changed controls\n if (parentIsFormArray) {\n _changedControls = Object.entries(_changedControls).reduce((acc, [key, control]) => {\n const oldIndex = control.controlRef.at(parentRef.length) as number;\n\n if (\n // If control is descendant.\n parentRef.every((ref, index) => control.controlRef[index] === ref) &&\n control.controlRef.length > parentRef.length &&\n // If the array item index was greater than the index of item removed\n // we need to decrement its index by 1.\n oldIndex > (controlRef.at(-1) as number)\n ) {\n const newRef: ControlRef = parentRef\n .concat(oldIndex - 1)\n .concat(control.controlRef.slice(parentRef.length + 1));\n\n return {\n ...acc,\n [getFormKey(newRef)]: {\n ...control,\n controlRef: newRef,\n },\n };\n } else {\n return { ...acc, [key]: control };\n }\n }, {});\n }\n\n const _removedControls = {\n ...(mergeChanges ? state._removedControls || {} : undefined),\n [controlToRemove.key]: controlToRemove,\n };\n\n descendants\n .map(({ key }) => key)\n .forEach((key) => {\n delete _changedControls[key];\n });\n\n return {\n form: result,\n _changedControls,\n _removedControls,\n };\n};\n","import { Action } from '@reactables/core';\nimport { BaseForm } from '../../Models/Controls';\nimport { UpdateValuesPayload } from '../../Models/Payloads';\nimport { getControl } from '../../Helpers/getControl';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { updateAncestorValues, UPDATE_ANCESTOR_VALUES } from './updateAncestorValues';\nimport { getErrors } from './getErrors';\nimport isEqual from 'lodash.isequal';\nimport { RxFormProviders } from '../../RxForm/RxForm';\n\nexport const UPDATE_ANCESTOR_VALUES_ADD_CONTROL = 'UPDATE_ANCESTOR_VALUES_ADD_CONTROL';\nexport const updateAncestorValuesAddControl = <T>(\n form: BaseForm<T>,\n { payload: { controlRef, value } }: Action<UpdateValuesPayload<unknown>>,\n providers: RxFormProviders,\n): BaseForm<T> => {\n if (controlRef.length) {\n const parentRef = controlRef.slice(0, -1);\n const parentControl = getControl(parentRef, form);\n const parentFormKey = getFormKey(parentControl.controlRef);\n const childKey = controlRef.slice(-1)[0];\n\n let newValue: unknown;\n\n // If parent is a Form Array\n if (Array.isArray(parentControl.value)) {\n newValue = parentControl.value.concat(value);\n } else {\n // If parent is a Form Group\n newValue = {\n ...(form[parentFormKey].value as object),\n [childKey]: value,\n };\n }\n\n const newParentControl = {\n ...parentControl,\n value: newValue,\n validatorErrors: getErrors(parentControl, newValue, providers),\n dirty: !isEqual(newValue, parentControl.pristineValue),\n };\n\n return updateAncestorValues(\n {\n ...form,\n [parentFormKey]: newParentControl,\n },\n {\n type: UPDATE_ANCESTOR_VALUES,\n payload: { controlRef: parentRef, value: newValue },\n },\n providers,\n );\n }\n\n return form;\n};\n","import { ControlRef } from '../Models/ControlRef';\nimport { getAncestorControls } from './getAncestorControls';\nimport { getDescendantControls } from './getDescendantControls';\nimport { BaseControl, FormControl, BaseForm, Form } from '../Models/Controls';\n\nexport const getControlBranch = <T extends BaseForm<unknown> | Form<unknown>>(\n controlRef: ControlRef,\n form: T,\n): (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[] => {\n const ancestors = getAncestorControls(controlRef, form);\n const childControls = getDescendantControls(controlRef, form).slice(1);\n\n return ancestors.concat(childControls).sort((a, b) => a.controlRef.length - b.controlRef.length);\n};\n","import { Action } from '@reactables/core';\nimport { BaseFormState, BaseControl } from '../../Models/Controls';\nimport { AddControlPayload } from '../../Models/Payloads';\nimport { buildState } from '../../Helpers/buildFormState';\nimport { getControl } from '../../Helpers/getControl';\nimport {\n updateAncestorValuesAddControl,\n UPDATE_ANCESTOR_VALUES_ADD_CONTROL,\n} from './updateAncestorValuesAddControl';\nimport { getControlBranch } from '../../Helpers/getControlBranch';\nimport { RxFormProviders } from '../../RxForm/RxForm';\nimport { controlRefCheck } from '../../Helpers/controlRefCheck';\n\nexport const addControl = <T>(\n state: BaseFormState<T>,\n action: Action<AddControlPayload>,\n providers: RxFormProviders,\n mergeChanges = false,\n): BaseFormState<T> => {\n const {\n payload: { config, controlRef },\n } = action;\n\n controlRefCheck(controlRef);\n\n // If controlRef does not exist we are adding control to a Form Group\n\n if (!getControl(controlRef.slice(0, -1), state.form)) {\n throw 'You are attempting to add a control to a non-existent form group';\n }\n\n const newForm = buildState(config, controlRef, providers, state.form);\n const newValue = getControl(controlRef, newForm).value;\n\n const ancestorsUpdated = updateAncestorValuesAddControl(\n newForm,\n {\n type: UPDATE_ANCESTOR_VALUES_ADD_CONTROL,\n payload: { controlRef: controlRef, value: newValue },\n },\n providers,\n );\n\n const _changedControls = getControlBranch(controlRef, ancestorsUpdated).reduce(\n (acc: { [key: string]: BaseControl<unknown> }, control) => ({ ...acc, [control.key]: control }),\n {},\n );\n\n return {\n form: ancestorsUpdated,\n _changedControls: {\n ...(mergeChanges ? state._changedControls || {} : undefined),\n ..._changedControls,\n },\n _removedControls: mergeChanges ? state._removedControls || {} : undefined,\n };\n};\n","import { Action } from '@reactables/core';\nimport { BaseFormState, BaseControl } from '../../Models/Controls';\nimport { AddControlPayload } from '../../Models/Payloads';\nimport { ControlRef } from '../../Models';\nimport { FormArrayConfig } from '../../Models';\nimport { buildState } from '../../Helpers/buildFormState';\nimport { getControl } from '../../Helpers/getControl';\nimport {\n updateAncestorValuesAddControl,\n UPDATE_ANCESTOR_VALUES_ADD_CONTROL,\n} from './updateAncestorValuesAddControl';\nimport { getControlBranch } from '../../Helpers/getControlBranch';\nimport { RxFormProviders } from '../../RxForm/RxForm';\nimport { controlRefCheck } from '../../Helpers/controlRefCheck';\n\nexport const pushControl = <T>(\n state: BaseFormState<T>,\n action: Action<AddControlPayload>,\n providers: RxFormProviders,\n mergeChanges = false,\n): BaseFormState<T> => {\n let newControlRef: ControlRef;\n\n const {\n payload: { config, controlRef },\n } = action;\n\n controlRefCheck(controlRef);\n\n const existingControl = getControl(controlRef, state.form);\n\n if (!existingControl) throw 'You are attempting to push to a control that does not exist';\n\n // If controlRef exists we are adding control to a Form Array\n if (Array.isArray((existingControl.config as FormArrayConfig).controls)) {\n newControlRef = controlRef.concat((existingControl.value as Array<unknown>).length);\n } else {\n throw 'You are attempting to push to a control that is not a Form Array';\n }\n\n const newForm = buildState(config, newControlRef, providers, state.form);\n const newValue = getControl(newControlRef, newForm).value;\n\n const ancestorsUpdated = updateAncestorValuesAddControl(\n newForm,\n {\n type: UPDATE_ANCESTOR_VALUES_ADD_CONTROL,\n payload: { controlRef: newControlRef, value: newValue },\n },\n providers,\n );\n\n const _changedControls = getControlBranch(newControlRef, ancestorsUpdated).reduce(\n (acc: { [key: string]: BaseControl<unknown> }, control) => ({ ...acc, [control.key]: control }),\n {},\n );\n\n return {\n form: ancestorsUpdated,\n _changedControls: {\n ...(mergeChanges ? state._changedControls || {} : undefined),\n ..._changedControls,\n },\n _removedControls: mergeChanges ? state._removedControls || {} : undefined,\n };\n};\n","import { Action } from '@reactables/core';\nimport { BaseForm, BaseControl } from '../../Models/Controls';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { getDescendantControls } from '../../Helpers/getDescendantControls';\nimport { ControlRef } from '../../Models/ControlRef';\nimport isEqual from 'lodash.isequal';\n\n// Same implementation as updateAncestor values except updating pristine values\nexport const UPDATE_ANCESTOR_PRISTINE_VALUES = 'UPDATE_ANCESTOR_PRISTINE_VALUES';\nexport const updateAncestorPristineValues = <T>(\n form: BaseForm<T>,\n { payload: controlRef }: Action<ControlRef>,\n): BaseForm<T> => {\n if (controlRef.length) {\n const parentRef = controlRef.slice(0, -1);\n const parentKey = getFormKey(parentRef);\n\n const siblingControls = getDescendantControls(parentRef, form).filter(\n // Out of descendants we only need the siblings\n (control) => control.controlRef.length === controlRef.length,\n );\n\n let newValue: unknown;\n\n // If parent is a Form Array\n if (Array.isArray(form[parentKey].value)) {\n newValue = siblingControls\n .slice()\n .sort((a, b) => (a.controlRef.at(-1) as number) - (b.controlRef.at(-1) as number))\n .map((control) => control.pristineValue);\n } else {\n // If parent is a Form Group\n newValue = siblingControls.reduce((acc, { controlRef, pristineValue }) => {\n return {\n ...acc,\n [controlRef.at(-1) as string | number]: pristineValue,\n };\n }, {});\n }\n\n const newParentControl: BaseControl<unknown> = {\n ...form[parentKey],\n pristineValue: newValue,\n dirty: isEqual(form[parentKey].value, newValue),\n };\n\n return updateAncestorPristineValues(\n {\n ...form,\n [parentKey]: newParentControl,\n },\n {\n type: UPDATE_ANCESTOR_PRISTINE_VALUES,\n payload: parentRef,\n },\n );\n }\n\n return form;\n};\n","import { Action } from '@reactables/core';\nimport { BaseFormState } from '../../Models/Controls';\nimport { ControlRef } from '../../Models/ControlRef';\nimport { getDescendantControls } from '../../Helpers/getDescendantControls';\nimport {\n updateAncestorPristineValues,\n UPDATE_ANCESTOR_PRISTINE_VALUES,\n} from './updateAncestorPristineValues';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { getControlBranch } from '../../Helpers/getControlBranch';\nimport { controlRefCheck } from '../../Helpers/controlRefCheck';\n\nexport const markControlAsPristine = <T>(\n state: BaseFormState<T>,\n action: Action<ControlRef>,\n mergeChanges = false,\n): BaseFormState<T> => {\n const { form } = state;\n const { payload: controlRef } = action;\n\n controlRefCheck(controlRef);\n\n const descendants = getDescendantControls(controlRef, form).reduce(\n (acc, control) => ({\n ...acc,\n [getFormKey(control.controlRef)]: {\n ...control,\n dirty: false,\n pristineValue: control.value,\n },\n }),\n {},\n );\n let result = {\n ...form,\n ...descendants,\n };\n\n if (controlRef.length) {\n result = updateAncestorPristineValues(result, {\n type: UPDATE_ANCESTOR_PRISTINE_VALUES,\n payload: controlRef,\n });\n }\n\n const _changedControls = getControlBranch(controlRef, result).reduce(\n (acc, control) => ({ ...acc, [control.key]: control }),\n {},\n );\n\n return {\n form: result,\n _changedControls: {\n ...(mergeChanges ? state._changedControls || {} : undefined),\n ..._changedControls,\n },\n _removedControls: mergeChanges ? state._removedControls || {} : undefined,\n };\n};\n","import { Action } from '@reactables/core';\nimport { BaseFormState } from '../../Models/Controls';\nimport { MarkTouchedPayload } from '../../Models/Payloads';\nimport { getAncestorControls } from '../../Helpers/getAncestorControls';\nimport { getControlBranch } from '../../Helpers/getControlBranch';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { controlRefCheck } from '../../Helpers/controlRefCheck';\n\nexport const markControlAsTouched = <T>(\n state: BaseFormState<T>,\n action: Action<MarkTouchedPayload>,\n mergeChanges = false,\n): BaseFormState<T> => {\n const { form } = state;\n const {\n payload: { controlRef, markAll = false },\n } = action;\n\n controlRefCheck(controlRef);\n\n const controls = (\n markAll ? getControlBranch(controlRef, form) : getAncestorControls(controlRef, form)\n ).reduce(\n (acc, control) => ({\n ...acc,\n [getFormKey(control.controlRef)]: {\n ...control,\n touched: true,\n },\n }),\n {},\n );\n\n const result = {\n form: {\n ...form,\n ...controls,\n },\n action,\n };\n\n const _changedControls = getControlBranch(controlRef, result.form).reduce(\n (acc, control) => ({ ...acc, [control.key]: control }),\n {},\n );\n\n return {\n form: {\n ...form,\n ...controls,\n },\n _changedControls: {\n ...(mergeChanges ? state._changedControls || {} : undefined),\n ..._changedControls,\n },\n _removedControls: mergeChanges ? state._removedControls || {} : undefined,\n };\n};\n","import { Action } from '@reactables/core';\nimport { BaseForm, BaseFormState } from '../../Models/Controls';\nimport { ControlRef } from '../../Models/ControlRef';\nimport { getDescendantControls } from '../../Helpers/getDescendantControls';\nimport { getControlBranch } from '../../Helpers/getControlBranch';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { controlRefCheck } from '../../Helpers/controlRefCheck';\n\nexport const markControlAsUntouched = <T>(\n state: BaseFormState<T>,\n action: Action<ControlRef>,\n mergeChanges = false,\n): BaseFormState<T> => {\n const { form } = state;\n const { payload: controlRef } = action;\n\n controlRefCheck(controlRef);\n\n let result = getDescendantControls(controlRef, form).reduce(\n (acc, control) => ({\n ...acc,\n [getFormKey(control.controlRef)]: {\n ...control,\n touched: false,\n },\n }),\n {},\n ) as BaseForm<unknown>;\n\n result = {\n ...form,\n ...result,\n };\n\n // Update ancestors\n let currentRef = controlRef;\n let key: string;\n while (currentRef.length > 0) {\n currentRef = currentRef.slice(0, -1);\n\n key = getFormKey(currentRef);\n result = {\n ...result,\n [key]: {\n ...result[key],\n touched: getDescendantControls(currentRef, result, true).some((control) => control.touched),\n },\n };\n }\n\n const _changedControls = getControlBranch(controlRef, result).reduce(\n (acc, control) => ({ ...acc, [control.key]: control }),\n {},\n );\n\n return {\n form: result as BaseForm<T>,\n _changedControls: {\n ...(mergeChanges ? state._changedControls || {} : undefined),\n ..._changedControls,\n },\n _removedControls: mergeChanges ? state._removedControls || {} : undefined,\n };\n};\n","import { Action } from '@reactables/core';\nimport { BaseFormState, BaseControl } from '../../Models/Controls';\nimport { ControlRef } from '../../Models/ControlRef';\nimport { getControl } from '../../Helpers/getControl';\nimport { updateAncestorValues, UPDATE_ANCESTOR_VALUES } from './updateAncestorValues';\nimport { getDescendantControls } from '../../Helpers/getDescendantControls';\nimport { buildState } from '../../Helpers/buildFormState';\nimport { getControlBranch } from '../../Helpers/getControlBranch';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { RxFormProviders } from '../../RxForm/RxForm';\nimport { controlRefCheck } from '../../Helpers/controlRefCheck';\n\nexport const resetControl = <T>(\n state: BaseFormState<T>,\n action: Action<ControlRef>,\n providers: RxFormProviders,\n mergeChanges = false,\n): BaseFormState<T> => {\n const { form } = state;\n const { payload: controlRef } = action;\n controlRefCheck(controlRef);\n const controlToReset = getControl(controlRef, form);\n\n const descendantsRemoved = { ...form };\n\n const descendants = getDescendantControls(controlRef, form);\n const descendantKeys = descendants.map(({ controlRef }) => getFormKey(controlRef));\n\n descendantKeys.forEach((key) => {\n delete descendantsRemoved[key];\n });\n\n // Remove all descendants\n\n const restoredControls = buildState(\n controlToReset.config,\n controlToReset.controlRef,\n providers,\n descendantsRemoved,\n );\n\n const restoredControlValue = getControl(controlRef, restoredControls).value;\n\n const result = updateAncestorValues(\n restoredControls,\n {\n type: UPDATE_ANCESTOR_VALUES,\n payload: { controlRef, value: restoredControlValue },\n },\n providers,\n );\n\n const _changedControls = {\n ...(mergeChanges ? state._changedControls || {} : undefined),\n ...getControlBranch(controlRef, result).reduce(\n (acc: { [key: string]: BaseControl<unknown> }, control) => ({\n ...acc,\n [control.key]: control,\n }),\n {},\n ),\n };\n\n const _removedControls = {\n ...(mergeChanges ? state._removedControls || {} : undefined),\n [controlToReset.key]: controlToReset,\n };\n\n // If control is removed, we can delete it from the _changedControls check\n descendants\n .map(({ key }) => key)\n .forEach((key) => {\n delete _changedControls[key];\n });\n\n return {\n form: result,\n _changedControls,\n _removedControls,\n };\n};\n","import { Action } from '@reactables/core';\nimport { Form, FormControl } from '../../Models/Controls';\nimport { getAncestorControls } from '../../Helpers/getAncestorControls';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { ControlRef } from '../../Models';\n\nexport const asyncValidation = (\n form: Form<any> | null,\n { payload: controlRef }: Action<ControlRef>,\n): Form<any> => {\n const updatedSelfAndAncestors = getAncestorControls(controlRef, form!).reduce((acc, control) => {\n const isChangedControl = getFormKey(control.controlRef) === getFormKey(controlRef);\n return {\n ...acc,\n [getFormKey(control.controlRef)]: {\n ...control,\n pending: true,\n asyncValidateInProgress: isChangedControl\n ? ({\n ...control.config.asyncValidators?.reduce(\n (acc, _, index) => ({ ...acc, [index]: true }),\n {},\n ),\n } as FormControl<any>['asyncValidateInProgress'])\n : (control as FormControl<any>).asyncValidateInProgress,\n },\n };\n }, {});\n\n return {\n ...form,\n ...updatedSelfAndAncestors,\n } as Form<any>;\n};\n","import { Form } from '../Models/Controls';\nexport const reverseObjectKeys = <T>(form: Form<T>) =>\n Object.keys(form)\n .reverse()\n .reduce((acc, key) => {\n acc[key] = form[key];\n return acc;\n }, {} as Form<T>);\n","import { Form } from '../../Models/Controls';\nimport { FormErrors } from '../../Models';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { ControlRef } from '../../Models';\nimport { getControlBranch } from '../../Helpers/getControlBranch';\nimport { reverseObjectKeys } from '../../Helpers/reverseObjectKeys';\n\nconst hasErrors = (errors: FormErrors) => {\n return Object.values(errors).some((hasError) => hasError);\n};\n\nexport const mergeBranchErrors = <T>(form: Form<T>, controlRef: ControlRef): Form<T> => {\n const controlBranch = getControlBranch(controlRef, form).reduce((acc, ctrl) => {\n return {\n ...acc,\n [getFormKey(ctrl.controlRef)]: ctrl,\n };\n }, {}) as Form<unknown>;\n\n const errorsMerged = Object.entries(controlBranch)\n .reverse()\n .reduce((acc, [key, control]) => {\n const errors = {\n ...control.validatorErrors,\n ...control.asyncValidatorErrors,\n };\n\n const selfValid = !hasErrors(errors);\n\n let childrenValid = true;\n\n if (Array.isArray(control.config.controls)) {\n // If control is a FormArray\n childrenValid = (control.value as unknown[]).every((item, index) => {\n const formKey = getFormKey(control.controlRef.concat(index));\n const valid = acc[formKey] === undefined ? form[formKey].valid : acc[formKey].valid;\n return valid;\n });\n } else if (control.config.controls) {\n // If control is a FormGroup\n childrenValid = Object.keys(control.value as unknown[]).every((childKey) => {\n const formKey = getFormKey(control.controlRef.concat(childKey));\n const valid = acc[formKey] === undefined ? form[formKey].valid : acc[formKey].valid;\n return valid;\n });\n }\n\n return {\n ...acc,\n [key]: {\n ...control,\n errors,\n valid: selfValid && childrenValid,\n childrenValid,\n },\n };\n }, {} as Form<T>);\n\n const errorsMergedOrderRestored = reverseObjectKeys(errorsMerged);\n\n return {\n ...form,\n ...errorsMergedOrderRestored,\n };\n};\n","import { Action } from '@reactables/core';\nimport { Form, FormControl } from '../../Models/Controls';\nimport { ControlAsyncValidationResponse } from '../../Models/Payloads';\nimport { getAncestorControls } from '../../Helpers/getAncestorControls';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { getDescendantControls } from '../../Helpers/getDescendantControls';\nimport { mergeBranchErrors } from './mergeBranchErrors';\n\nconst isControlValidating = (control: FormControl<unknown>): boolean => {\n if (!control.asyncValidateInProgress) return false;\n\n return Object.values(control.asyncValidateInProgress).some((pending) => pending);\n};\n\nconst getControlByKey = (key: string, form: Form<unknown>) => {\n return Object.values(form).find((control) => control.key === key);\n};\n\nexport const asyncValidationResponse = (\n form: Form<any> | null,\n { payload: { key, validatorIndex, errors } }: Action<ControlAsyncValidationResponse>,\n): Form<any> => {\n const control = getControlByKey(key, form!);\n\n if (!control) {\n return form!;\n }\n\n const controlUpdated = {\n ...form,\n [getFormKey(control.controlRef)]: {\n ...control,\n asyncValidateInProgress: {\n ...control.asyncValidateInProgress,\n [validatorIndex]: false,\n },\n asyncValidatorErrors: {\n ...control.asyncValidatorErrors,\n ...errors,\n },\n },\n } as Form<any>;\n\n const ancestors = getAncestorControls(control.controlRef, controlUpdated);\n\n const ancestorsUpdated = Object.entries(controlUpdated).reduce((acc, [key, control]) => {\n if (ancestors.includes(control)) {\n const descendants = getDescendantControls(control.controlRef, controlUpdated);\n const pending = descendants.some((control) => isControlValidating(control));\n\n return {\n ...acc,\n [key]: {\n ...control,\n pending,\n },\n };\n }\n\n return {\n ...acc,\n [key]: control,\n };\n }, {} as Form<any>);\n\n return mergeBranchErrors(ancestorsUpdated, control.controlRef);\n};\n","import { Form } from '../../Models/Controls';\nimport { FormErrors } from '../../Models';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { reverseObjectKeys } from '../../Helpers/reverseObjectKeys';\n\nconst hasErrors = (errors: FormErrors) => {\n return Object.values(errors).some((hasError) => hasError);\n};\n\n// TODO: update merge errors to not do the entire form but just a subset of it\n\n// TODO: separation of concern to update validity of control and ancestors\n\nexport const mergeErrors = <T>(form: Form<T>): Form<T> => {\n const errorsMerged = Object.entries(form)\n .reverse()\n .reduce((acc, [key, control]) => {\n const errors = {\n ...control.validatorErrors,\n ...control.asyncValidatorErrors,\n };\n\n const selfValid = !hasErrors(errors);\n\n let childrenValid = true;\n\n if (Array.isArray(control.config.controls)) {\n // If control is a FormArray\n childrenValid = (control.value as unknown[]).every(\n (item, index) => acc[getFormKey(control.controlRef.concat(index))].valid,\n );\n } else if (control.config.controls) {\n // If control is a FormGroup\n childrenValid = Object.keys(control.value as unknown[]).every(\n (childKey) => acc[getFormKey(control.controlRef.concat(childKey))].valid,\n );\n }\n\n return {\n ...acc,\n [key]: {\n ...control,\n errors,\n valid: selfValid && childrenValid,\n childrenValid,\n },\n };\n }, {} as Form<T>);\n\n const restoredOrder = reverseObjectKeys(errorsMerged);\n\n return restoredOrder;\n};\n","import { Form, BaseForm, FormControl, Hub2Fields } from '../../Models/Controls';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { getControlBranch } from '../../Helpers/getControlBranch';\nimport { ControlRef } from '../../Models/ControlRef';\nimport { FormErrors } from '../../Models';\nimport { DEFAULT_HUB2_FIELDS } from '../../Models/Controls';\nimport { reverseObjectKeys } from '../../Helpers/reverseObjectKeys';\n\nconst hasErrors = (errors: FormErrors) => {\n return Object.values(errors).some((hasError) => hasError);\n};\n\nexport const mergeRemoveControl = <T>(\n state: Form<T>,\n form: BaseForm<T>,\n controlRef: ControlRef,\n) => {\n const parentRef = controlRef.slice(0, -1);\n const existingBranch = getControlBranch(parentRef, state);\n\n const updatedControlBranch = getControlBranch(parentRef, form)\n .reverse()\n .reduce((acc: Form<unknown>, baseControl) => {\n const key = getFormKey(baseControl.controlRef);\n\n const existingControl =\n existingBranch.find((control) => baseControl.key === control.key) ||\n (structuredClone(DEFAULT_HUB2_FIELDS) as Hub2Fields);\n\n const errors = {\n ...baseControl.validatorErrors,\n ...existingControl.asyncValidatorErrors,\n };\n\n const selfValid = !hasErrors(errors);\n\n let childrenValid = true;\n\n if (Array.isArray(baseControl.config.controls)) {\n // If control is a FormArray\n childrenValid = (baseControl.value as unknown[]).every((item, index) => {\n const formKey = getFormKey(baseControl.controlRef.concat(index));\n const valid = acc[formKey] === undefined ? state[formKey].valid : acc[formKey].valid;\n return valid;\n });\n } else if (baseControl.config.controls) {\n // If control is a FormGroup\n childrenValid = Object.keys(baseControl.value as unknown[]).every((childKey) => {\n const formKey = getFormKey(baseControl.controlRef.concat(childKey));\n const valid = acc[formKey] === undefined ? state[formKey].valid : acc[formKey].valid;\n return valid;\n });\n }\n\n return {\n ...acc,\n [key]: {\n ...existingControl,\n ...baseControl,\n errors,\n valid: selfValid && childrenValid,\n childrenValid,\n },\n };\n }, {} as Form<unknown>) as unknown as { [key: string]: FormControl<unknown> };\n\n const updatedControlBranchOrderRestored = reverseObjectKeys(\n updatedControlBranch as Form<unknown>,\n );\n\n const descendants = existingBranch.filter(\n (control) => control.controlRef.length > parentRef.length,\n );\n\n const _removedControls = { ...state };\n\n descendants.forEach((control) => {\n delete _removedControls[getFormKey(control.controlRef)];\n });\n\n delete _removedControls[getFormKey(controlRef)];\n\n return {\n ..._removedControls,\n ...updatedControlBranchOrderRestored,\n };\n};\n","import { Form, Hub2Fields, FormControl, BaseFormState } from '../../Models/Controls';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { FormErrors } from '../../Models/FormErrors';\nimport { DEFAULT_HUB2_FIELDS } from '../../Models/Controls';\nimport { mergeRemoveControl } from './mergeRemoveControl';\nimport { reverseObjectKeys } from '../../Helpers/reverseObjectKeys';\n\nconst hasErrors = (errors: FormErrors) => {\n return Object.values(errors).some((hasError) => hasError);\n};\n\nexport const mergeControls = <T>(\n state: Form<T>,\n { form, _changedControls = {}, _removedControls }: BaseFormState<unknown>,\n) => {\n const controlsRemoved = _removedControls\n ? Object.values(_removedControls).reduce(\n (acc, { controlRef }) => mergeRemoveControl(acc, form, controlRef) as Form<T>,\n state,\n )\n : state;\n\n const updatedBranch = Object.values(_changedControls)\n .reverse()\n .reduce((acc: Form<unknown>, control) => {\n const formKey = getFormKey(control.controlRef);\n const existingControl = controlsRemoved && controlsRemoved[formKey];\n\n const newControl: FormControl<unknown> = {\n ...(existingControl\n ? existingControl\n : (structuredClone(DEFAULT_HUB2_FIELDS) as Hub2Fields)),\n ...control,\n };\n\n const errors = {\n ...newControl.validatorErrors,\n ...newControl.asyncValidatorErrors,\n };\n\n const selfValid = !hasErrors(errors);\n\n let childrenValid = true;\n\n if (Array.isArray(control.config.controls)) {\n // If control is a FormArray\n childrenValid = (control.value as unknown[]).every((item, index) => {\n const formKey = getFormKey(control.controlRef.concat(index));\n const valid =\n acc[formKey] === undefined ? controlsRemoved[formKey].valid : acc[formKey].valid;\n return valid;\n });\n } else if (control.config.controls) {\n // If control is a FormGroup\n childrenValid = Object.keys(control.value as unknown[]).every((childKey) => {\n const formKey = getFormKey(control.controlRef.concat(childKey));\n const valid =\n acc[formKey] === undefined ? controlsRemoved[formKey].valid : acc[formKey].valid;\n return valid;\n });\n }\n\n return {\n ...acc,\n [formKey]: {\n ...newControl,\n errors,\n valid: selfValid && childrenValid,\n childrenValid,\n },\n };\n }, {} as Form<unknown>);\n\n const orderRestored = reverseObjectKeys(updatedBranch);\n\n const result = {\n ...controlsRemoved,\n ...orderRestored,\n };\n\n return result;\n};\n","import { Action } from '@reactables/core';\nimport { BaseFormState, Form, Hub2Fields } from '../../Models/Controls';\nimport { mergeErrors } from './mergeErrors';\nimport { mergeControls } from './mergeControls';\nimport { DEFAULT_HUB2_FIELDS } from '../../Models/Controls';\n\nexport const formChange = (\n state: Form<any> | null = null,\n { payload }: Action<BaseFormState<any>>,\n) => {\n const { form } = payload;\n\n if (state === null) {\n return mergeErrors(\n Object.entries(form).reduce((acc, [dictKey, baseControl]) => {\n return {\n ...acc,\n [dictKey]: {\n ...(structuredClone(DEFAULT_HUB2_FIELDS) as Hub2Fields),\n ...baseControl,\n },\n };\n }, {} as Form<any>),\n );\n }\n\n return mergeControls(state, payload);\n};\n","import {\n RxBuilder,\n Reactable,\n Action,\n Effect,\n ScopedEffects,\n ActionMap,\n DestroyAction,\n ActionObservableWithTypes,\n} from '@reactables/core';\nimport { Observable } from 'rxjs';\nimport { filter, skip } from 'rxjs/operators';\nimport { buildFormState } from '../Helpers/buildFormState';\nimport {\n UpdateValuesPayload,\n AddControlPayload,\n MarkTouchedPayload,\n PushControlPayload,\n} from '../Models/Payloads';\nimport { ControlRef } from '../Models';\nimport {\n FormControlConfig,\n FormArrayConfig,\n FormGroupConfig,\n AbstractControlConfig,\n} from '../Models/Configs';\nimport { buildHub2Source } from '../Helpers/buildHub2Source';\nimport { ValidatorFn, ValidatorAsyncFn } from '../Models/Validators';\nimport { updateValues } from '../Reducers/Hub1/updateValues';\nimport { removeControl } from '../Reducers/Hub1/removeControl';\nimport { addControl } from '../Reducers/Hub1/addControl';\nimport { pushControl } from '../Reducers/Hub1/pushControl';\nimport { markControlAsPristine } from '../Reducers/Hub1/markControlAsPristine';\nimport { markControlAsTouched } from '../Reducers/Hub1/markControlAsTouched';\nimport { markControlAsUntouched } from '../Reducers/Hub1/markControlAsUntouched';\nimport { resetControl } from '../Reducers/Hub1/resetControl';\nimport { asyncValidation } from '../Reducers/Hub2/asyncValidation';\nimport { asyncValidationResponse } from '../Reducers/Hub2/asyncValidationResponse';\nimport { formChange } from '../Reducers/Hub2/formChange';\nimport { BaseControl, Form, BaseFormState } from '../Models/Controls';\nimport { getScopedEffectsForControl } from '../Helpers/addAsyncValidationEffects';\nimport * as Validators from '../Validators/Validators';\nimport { DEFAULT_HUB2_FIELDS } from '../Models/Controls';\n\n// Config Builders\ntype FbControl<T> = [T, (string | string[])?, (string | string[])?];\nexport const control = <T>(config: FormControlConfig<T> | FbControl<T>) => {\n if (Array.isArray(config)) {\n return (config as FbControl<T>).reduce((acc, item, index) => {\n const indexMap: { [key: number]: string } = {\n 0: 'initialValue',\n 1: 'validators',\n 2: 'asyncValidators',\n };\n return {\n ...acc,\n [indexMap[index]]: index < 1 ? item : ([] as any[]).concat(item || []),\n };\n }, {} as FormControlConfig<T>);\n }\n\n return config;\n};\n\nexport const array = (config: FormArrayConfig) => config;\nexport const group = (config: FormGroupConfig) => config;\n\n// Building Reactable\nexport type RxFormActions = {\n updateValues: <T>(payload: UpdateValuesPayload<T>) => void;\n addControl: (payload: AddControlPayload) => void;\n pushControl: (payload: PushControlPayload) => void;\n removeControl: (payload: ControlRef) => void;\n markControlAsPristine: (payload: ControlRef) => void;\n markControlAsTouched: (payload: MarkTouchedPayload) => void;\n markControlAsUntouched: (payload: ControlRef) => void;\n resetControl: (payload: ControlRef) => void;\n} & ActionMap;\n\n// For building custom reducers\nexport interface FormReducers {\n updateValues: <T>(\n state: BaseFormState<T>,\n payload: UpdateValuesPayload<unknown>,\n ) => BaseFormState<T>;\n removeControl: <T>(state: BaseFormState<T>, payload: ControlRef) => BaseFormState<T>;\n pushControl: <T>(state: BaseFormState<T>, payload: PushControlPayload) => BaseFormState<T>;\n addControl: <T>(state: BaseFormState<T>, payload: AddControlPayload) => BaseFormState<T>;\n markControlAsPristine: <T>(state: BaseFormState<T>, payload: ControlRef) => BaseFormState<T>;\n markControlAsTouched: <T>(\n state: BaseFormState<T>,\n payload: MarkTouchedPayload,\n ) => BaseFormState<T>;\n markControlAsUntouched: <T>(state: BaseFormState<T>, payload: ControlRef) => BaseFormState<T>;\n resetControl: <T>(state: BaseFormState<T>, payload: ControlRef) => BaseFormState<T>;\n}\n\nconst reducerTools = (providers: RxFormProviders): FormReducers => ({\n updateValues: <T>(state: BaseFormState<T>, payload: UpdateValuesPayload<unknown>) =>\n updateValues(state, { type: 'updateValues', payload }, providers, true),\n removeControl: <T>(state: BaseFormState<T>, payload: ControlRef) =>\n removeControl(state, { type: 'removeControl', payload }, providers, true),\n pushControl: <T>(state: BaseFormState<T>, payload: PushControlPayload) =>\n pushControl(state, { type: 'pushControl', payload }, providers, true),\n addControl: <T>(state: BaseFormState<T>, payload: AddControlPayload) =>\n addControl(state, { type: 'addControl', payload }, providers, true),\n resetControl: <T>(state: BaseFormState<T>, payload: ControlRef) =>\n resetControl(state, { type: 'resetControl', payload }, providers, true),\n markControlAsPristine: <T>(state: BaseFormState<T>, payload: ControlRef) =>\n markControlAsPristine(state, { type: 'markControlAsPristine', payload }, true),\n markControlAsTouched: <T>(state: BaseFormState<T>, payload: MarkTouchedPayload) =>\n markControlAsTouched(state, { type: 'markControlAsTouched', payload }, true),\n markControlAsUntouched: <T>(state: BaseFormState<T>, payload: ControlRef) =>\n markControlAsUntouched(state, { type: 'markControlAsUntouched', payload }, true),\n});\n\nexport type CustomReducerFunc<FormValue = unknown> = (\n reducers: FormReducers,\n state: BaseFormState<FormValue>,\n action: any,\n) => BaseFormState<unknown>;\n\nexport type CustomReducer<FormValue = unknown> =\n | CustomReducerFunc<FormValue>\n | {\n reducer: CustomReducerFunc<FormValue>;\n effects?: Effect[] | ((payload?: unknown) => ScopedEffects);\n };\n\n// Mapping a Custom reducer function to an action creator\nexport type ActionCreatorTypeFromCustomReducer<T> = T extends (\n formReducers: FormReducers,\n state: any,\n) => unknown\n ? () => void\n : T extends (formReducers: FormReducers, state: any, action: Action<infer P>) => unknown\n ? (payload: P) => void\n : T extends { reducer: (formReducers: FormReducers, state: any) => unknown }\n ? () => void\n : T extends {\n reducer: (formReducers: FormReducers, state: any, action: Action<infer P>) => unknown;\n }\n ? (payload: P) => void\n : never;\n\nexport interface RxFormOptions<\n T extends Record<string, CustomReducer<any>> = Record<string, CustomReducer<any>>,\n> {\n reducers?: T;\n providers?: RxFormProviders;\n name?: string;\n debug?: boolean;\n sources?: Observable<Action<unknown>>[];\n}\n\ntype NormalizerFunction<T> = (value: T) => T;\n\nexport interface RxFormProviders {\n normalizers?: { [key: string]: NormalizerFunction<any> };\n validators?: { [key: string]: ValidatorFn };\n asyncValidators?: { [key: string]: ValidatorAsyncFn };\n}\n\nexport const build = <\n FormValue,\n CustomReducers extends Record<string, CustomReducer<FormValue>> = Record<\n string,\n CustomReducer<FormValue>\n >,\n>(\n config: AbstractControlConfig,\n options: RxFormOptions<CustomReducers> = {},\n) => {\n const providers = {\n normalizers: { ...options.providers?.normalizers },\n validators: { ...Validators, ...options.providers?.validators },\n asyncValidators: { ...options.providers?.asyncValidators },\n };\n\n const initialState: BaseFormState<FormValue> = buildFormState(config, undefined, providers);\n\n return createReactable<FormValue, CustomReducers>(initialState, options);\n};\n\nexport const load = <\n FormValue,\n CustomReducers extends Record<string, CustomReducer<FormValue>> = Record<\n string,\n CustomReducer<FormValue>\n >,\n>(\n state: Form<FormValue>,\n options: RxFormOptions<CustomReducers> = {},\n) => {\n const baseFormState = {\n form: Object.entries(state).reduce(\n (acc: { [key: string]: BaseControl<unknown> }, [key, control]) => {\n return {\n ...acc,\n [key]: Object.entries(control)\n .filter(([key]) => !Object.keys(DEFAULT_HUB2_FIELDS).includes(key))\n .reduce(\n (acc: BaseControl<unknown>, [key, value]) => ({ ...acc, [key]: value as unknown }),\n {} as BaseControl<unknown>,\n ),\n };\n },\n {},\n ),\n } as BaseFormState<FormValue>;\n\n return createReactable<FormValue, CustomReducers>(baseFormState, options);\n};\n\ntype CustomReducerActionTypes<T extends Record<string, CustomReducer>> = {\n [K in keyof T as `${K & string}`]: `${K & string}`;\n};\n\ntype FormActionTypes = {\n updateValues: 'updateValues';\n addControl: 'addControl';\n pushControl: 'pushControl';\n removeControl: 'removeControl';\n markControlAsPristine: 'markControlAsPristine';\n markControlAsTouched: 'markControlAsTouched';\n markControlAsUntouched: 'markControlAsUntouched';\n resetControl: 'resetControl';\n};\n\ntype ActionTypes<T extends Record<string, CustomReducer<any>>> = CustomReducerActionTypes<T> &\n FormActionTypes;\n\nconst createReactable = <FormValue, T extends Record<string, CustomReducer<FormValue>>>(\n initialBaseState: BaseFormState<FormValue>,\n options: RxFormOptions<T> = {},\n initialFormState?: Form<FormValue>,\n): Reactable<\n Form<FormValue>,\n { [K in keyof T]: ActionCreatorTypeFromCustomReducer<T[K]> } & RxFormActions & DestroyAction,\n ActionTypes<T> & { destroy: 'destroy' }\n> => {\n const providers = {\n normalizers: { ...options.providers?.normalizers },\n validators: { ...Validators, ...options.providers?.validators },\n asyncValidators: { ...options.providers?.asyncValidators },\n };\n\n const { reducers, debug, name, ...otherOptions } = options;\n\n const customReducers = Object.entries(reducers || ({} as T)).reduce((acc, [key, _case]) => {\n const _reducer = typeof _case === 'function' ? _case : _case.reducer;\n const effects = typeof _case === 'function' ? [] : _case.effects;\n\n return {\n ...acc,\n [key as keyof T]: {\n reducer: ({ form }: BaseFormState<FormValue>, action: Action<unknown>) => {\n return _reducer(reducerTools(providers), { form }, action);\n },\n effects,\n },\n };\n }, {});\n\n const [hub1State$, hub1Actions, hub1Actions$] = RxBuilder({\n initialState: initialBaseState,\n name: `Stage 1 ${name ? name : 'rxForm'}`,\n debug,\n reducers: {\n updateValues: (state, action: Action<UpdateValuesPayload<unknown>>) =>\n updateValues(state, action, providers),\n removeControl: (state, action: Action<ControlRef>) => removeControl(state, action, providers),\n addControl: (state, action: Action<AddControlPayload>) =>\n addControl(state, action, providers),\n pushControl: (state, action: Action<AddControlPayload>) =>\n pushControl(state, action, providers),\n resetControl: (state, action: Action<ControlRef>) => resetControl(state, action, providers),\n markControlAsPristine: (state, action: Action<ControlRef>) =>\n markControlAsPristine(state, action),\n markControlAsTouched: (state, action: Action<MarkTouchedPayload>) =>\n markControlAsTouched(state, action),\n markControlAsUntouched: (state, action: Action<ControlRef>) =>\n markControlAsUntouched(state, action),\n ...customReducers,\n },\n ...otherOptions,\n });\n\n const [state$, hub2Actions] = RxBuilder({\n sources: [buildHub2Source(hub1State$, initialBaseState).pipe(skip(initialFormState ? 1 : 0))],\n initialState: initialFormState || null,\n name: `Stage 2 ${name ? name : 'rxForm'}`,\n debug,\n reducers: {\n formChange,\n asyncValidationEffect: {\n reducer: (state) => state,\n effects: (control: BaseControl<unknown>) => ({\n key: control.key,\n effects: getScopedEffectsForControl(control, providers),\n }),\n },\n asyncValidation,\n asyncValidationResponse,\n },\n });\n\n const destroy = () => {\n hub1Actions.destroy();\n hub2Actions.destroy();\n };\n\n const actions = { ...hub1Actions, destroy } as {\n [K in keyof T]: ActionCreatorTypeFromCustomReducer<T[K]>;\n } & RxFormActions &\n DestroyAction;\n\n return [\n state$.pipe(filter((form) => form !== null)) as Observable<Form<FormValue>>,\n actions,\n hub1Actions$ as ActionObservableWithTypes<ActionTypes<T> & { destroy: 'destroy' }>,\n ];\n};\n","import { FormControl, Form, BaseForm, BaseControl } from '../Models/Controls';\nimport { ControlRef } from '../Models/ControlRef';\nimport { getControl } from './getControl';\nimport { getFormKey } from './getFormKey';\n\nexport const getArrayItems = <T extends BaseForm<unknown> | Form<unknown>>(\n controlRef: ControlRef,\n form: T,\n): T extends BaseForm<unknown> ? BaseControl<unknown>[] : FormControl<unknown>[] => {\n const control = getControl(controlRef, form);\n if (!Array.isArray(control.config.controls)) {\n throw `${controlRef.join('.')} is not a Form Array control`;\n }\n\n const result = (control.value as unknown[]).map(\n (_, index) => form[getFormKey(controlRef.concat(index))],\n );\n\n return result as T extends BaseForm<unknown> ? BaseControl<unknown>[] : FormControl<unknown>[];\n};\n"],"names":["hasErrors"],"mappings":"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","x_google_ignoreList":[2]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/Models/Controls.ts","../src/Validators/Validators.ts","../../../node_modules/tslib/tslib.es6.js","../src/Helpers/getValueFromControlConfig.ts","../src/Helpers/getFormKey.ts","../src/Helpers/generateKey.ts","../src/Reducers/Hub1/getErrors.ts","../src/Helpers/buildFormState.ts","../src/Helpers/addAsyncValidationEffects.ts","../src/Helpers/buildHub2Source.ts","../src/Helpers/getControl.ts","../src/Reducers/Hub1/updateAncestorValues.ts","../src/Helpers/isChildRef.ts","../src/Helpers/getDescendantControls.ts","../src/Helpers/getAncestorControls.ts","../src/Helpers/controlRefCheck.ts","../src/Reducers/Hub1/updateValues.ts","../src/Reducers/Hub1/updateAncestorValuesRemoveControl.ts","../src/Reducers/Hub1/removeControl.ts","../src/Reducers/Hub1/updateAncestorValuesAddControl.ts","../src/Helpers/getControlBranch.ts","../src/Reducers/Hub1/addControl.ts","../src/Reducers/Hub1/pushControl.ts","../src/Reducers/Hub1/updateAncestorPristineValues.ts","../src/Reducers/Hub1/markControlAsPristine.ts","../src/Reducers/Hub1/markControlAsTouched.ts","../src/Reducers/Hub1/markControlAsUntouched.ts","../src/Reducers/Hub1/resetControl.ts","../src/Reducers/Hub2/asyncValidation.ts","../src/Helpers/reverseObjectKeys.ts","../src/Reducers/Hub2/mergeBranchErrors.ts","../src/Reducers/Hub2/asyncValidationResponse.ts","../src/Reducers/Hub2/mergeErrors.ts","../src/Reducers/Hub2/mergeRemoveControl.ts","../src/Reducers/Hub2/mergeControls.ts","../src/Reducers/Hub2/formChange.ts","../src/RxForm/RxForm.ts","../src/Helpers/getArrayItems.ts"],"sourcesContent":["import { AbstractControlConfig } from './Configs';\nimport { FormErrors } from './FormErrors';\nimport { ControlRef } from './ControlRef';\n\nexport interface BaseControl<T> {\n pristineValue: T;\n controlRef: ControlRef;\n value: T;\n dirty: boolean;\n touched: boolean;\n validatorErrors: FormErrors;\n config: AbstractControlConfig;\n key: string;\n}\n\ninterface AsyncFields {\n asyncValidatorErrors: FormErrors;\n asyncValidateInProgress: { [key: string | number]: boolean };\n pending?: boolean;\n}\n\ninterface ValidatedFields {\n valid: boolean | null;\n errors: FormErrors;\n childrenValid: boolean | null;\n}\n\nexport interface Hub2Fields extends AsyncFields, ValidatedFields {}\n\nexport interface FormControl<T> extends BaseControl<T>, Hub2Fields {}\n\nexport interface BaseFormState<T> {\n form: BaseForm<T>;\n // controls that have changed including new ones added\n _changedControls?: {\n [key: string]: BaseControl<unknown>;\n };\n // controls removed from removeControl or resetControl - only the target control ref, not descendants\n _removedControls?: {\n [key: string]: BaseControl<unknown>;\n };\n}\n\nexport type BaseForm<T> = {\n root: BaseControl<T>;\n [key: string]: BaseControl<unknown>;\n};\n\nexport type Form<T> = {\n root: FormControl<T>;\n} & { [key: string]: FormControl<unknown> };\n\nexport const DEFAULT_HUB2_FIELDS: Hub2Fields = {\n asyncValidatorErrors: {},\n asyncValidateInProgress: {},\n pending: false,\n valid: null,\n childrenValid: null,\n errors: {},\n};\n","import { FormErrors } from '../Models/FormErrors';\nimport { ValidatorFn } from '../Models/Validators';\n\nexport const required: ValidatorFn = (value: unknown) => {\n if (typeof value === 'string' || typeof value === 'object') {\n return { required: !Boolean(value) };\n }\n\n if (typeof value === 'number') {\n return { required: !(value !== undefined && value !== null) };\n }\n\n if (typeof value === 'boolean') {\n return { required: !value };\n }\n\n return { required: false };\n};\n\nexport const arrayNotEmpty: ValidatorFn = (value: unknown[]) => ({\n arrayNotEmpty: !Boolean(value.length),\n});\n\nexport const email: ValidatorFn = (value: string): FormErrors =>\n value && !/^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/g.test(value) ? { email: true } : { email: false };\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import {\n FormControlConfig,\n FormArrayConfig,\n FormGroupConfig,\n AbstractControlConfig,\n} from '../Models/Configs';\n\nexport const getValueFromControlConfig = <T>(controlConfig: AbstractControlConfig): T => {\n const controls = (<FormArrayConfig | FormGroupConfig>controlConfig).controls;\n if (controls && !(controls instanceof Array)) {\n const result: { [key: string]: unknown } = {};\n\n for (const key in (<FormGroupConfig>controlConfig).controls) {\n const control = (<FormGroupConfig>controlConfig).controls[key];\n result[key] = getValueFromControlConfig(control);\n }\n\n return result as T;\n } else if (controls && controls instanceof Array) {\n const configs = (<FormArrayConfig>controlConfig).controls;\n const result = configs\n ? configs.map((controlConfig) => getValueFromControlConfig(controlConfig))\n : [];\n\n return result as T;\n } else {\n return (<FormControlConfig<T>>controlConfig).initialValue;\n }\n};\n","import { ControlRef } from '../Models';\nexport const getFormKey = (controlRef: ControlRef) =>\n controlRef.length ? controlRef.join('.') : 'root';\n","export const generateKey = (length: number) => {\n let result = '';\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n const charactersLength = characters.length;\n let counter = 0;\n while (counter < length) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n counter += 1;\n }\n return result;\n};\n","import { BaseControl } from '../../Models/Controls';\nimport { FormErrors } from '../../Models';\nimport { RxFormProviders } from '../../RxForm/RxForm';\n\nexport const getErrors = <T>(control: BaseControl<T>, value: T, { validators }: RxFormProviders) =>\n control.config.validators?.reduce((acc, validator) => {\n if (!validators?.[validator]) {\n throw `You have not provided a validator for \"${validator}\"`;\n }\n return { ...acc, ...validators[validator](value) };\n }, {} as FormErrors) || {};\n","import { AbstractControlConfig } from '../Models/Configs';\nimport { BaseForm, BaseControl, BaseFormState } from '../Models/Controls';\nimport { ControlRef } from '../Models/ControlRef';\nimport { FormArrayConfig, FormGroupConfig } from '../Models/Configs';\nimport { getValueFromControlConfig } from './getValueFromControlConfig';\nimport { getFormKey } from './getFormKey';\nimport { generateKey } from './generateKey';\nimport { getErrors } from '../Reducers/Hub1/getErrors';\nimport { RxFormProviders } from '../RxForm/RxForm';\n\nexport const buildState = <T>(\n config: AbstractControlConfig,\n controlRef: ControlRef = [],\n providers: RxFormProviders,\n form?: BaseForm<T>,\n): BaseForm<T> => {\n const value = getValueFromControlConfig(config);\n const control: BaseControl<unknown> = {\n pristineValue: value,\n dirty: false,\n touched: false,\n value,\n controlRef,\n validatorErrors: {},\n config,\n key: generateKey(5),\n };\n\n let newForm: BaseForm<T> = {\n ...form,\n [getFormKey(controlRef)]: {\n ...control,\n validatorErrors: getErrors(control, value, providers),\n },\n } as BaseForm<T>;\n\n const controls = (<FormGroupConfig | FormArrayConfig>config).controls;\n\n // Adding controls for Form Group\n if (controls && !(controls instanceof Array)) {\n newForm = Object.entries((<FormGroupConfig>config).controls).reduce(\n (acc, [key, controlConfig]) => {\n return buildState(controlConfig, controlRef.concat(key), providers, acc);\n },\n newForm,\n );\n } else if (controls && controls instanceof Array) {\n // Adding controls for Form Array\n newForm = (<FormArrayConfig>config).controls.reduce(\n (acc, controlConfig, index) =>\n buildState(controlConfig, controlRef.concat(index), providers, acc),\n newForm,\n );\n }\n\n return newForm;\n};\n\nexport const buildFormState = <T>(\n config: AbstractControlConfig,\n controlRef: ControlRef = [],\n providers: RxFormProviders,\n form?: BaseForm<T>,\n): BaseFormState<T> => {\n return {\n form: buildState(config, controlRef, providers, form),\n };\n};\n","import { Observable, of, concat } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { Action, Effect } from '@reactables/core';\nimport { map, switchMap } from 'rxjs/operators';\nimport { BaseControl } from '../Models/Controls';\nimport { RxFormProviders } from '../RxForm/RxForm';\n\ntype ControlScopedEffect<T> = Effect;\n\nexport const getScopedEffectsForControl = <T>(\n formControl: BaseControl<T>,\n providers: RxFormProviders,\n): ControlScopedEffect<T>[] => {\n const { config, key, controlRef } = formControl;\n const { asyncValidators } = config;\n\n let scopedEffects: ControlScopedEffect<T>[] = [];\n\n if (asyncValidators && asyncValidators.length) {\n scopedEffects = asyncValidators.reduce(\n (acc: ControlScopedEffect<T>[], asyncValidator, validatorIndex) => {\n const effect: ControlScopedEffect<T> = (actions$: Observable<Action<BaseControl<T>>>) => {\n if (!providers.asyncValidators?.[asyncValidator]) {\n throw `You have not provided an asyncValidator for \"${asyncValidator}\"`;\n }\n return actions$.pipe(\n map(({ payload: control }) => control),\n providers.asyncValidators[asyncValidator],\n switchMap((errors$) => {\n return concat(\n of({ type: 'asyncValidation', payload: controlRef }),\n errors$.pipe(\n map((errors) => ({\n type: 'asyncValidationResponse',\n payload: {\n key,\n errors,\n validatorIndex,\n },\n })),\n catchError(() =>\n of({\n type: 'asyncValidationResponse',\n payload: {\n key,\n errors: { asyncValidationApiError: true },\n validatorIndex,\n },\n }),\n ),\n ),\n );\n }),\n );\n };\n\n return acc.concat(effect);\n },\n [],\n );\n }\n return scopedEffects;\n};\n\nexport const getAsyncValidationEffects = (formControls: BaseControl<unknown>[]) =>\n formControls.reduce((acc: Action<BaseControl<unknown>>[], control) => {\n if (!control.config.asyncValidators?.length) return acc;\n\n const action = { type: 'asyncValidationEffect', payload: control };\n\n return acc.concat(action);\n }, []);\n","import { Observable, of } from 'rxjs';\nimport isEqual from 'lodash.isequal';\nimport { map, mergeMap, pairwise, startWith } from 'rxjs/operators';\nimport { Action } from '@reactables/core';\nimport { BaseFormState } from '../Models/Controls';\nimport { getAsyncValidationEffects } from './addAsyncValidationEffects';\n\nexport const buildHub2Source = (\n hub1State$: Observable<BaseFormState<any>>,\n initialBaseState: BaseFormState<any>,\n): Observable<Action<any>> => {\n const hub1StateMapped$ = hub1State$.pipe(map((payload) => ({ type: 'formChange', payload })));\n\n const initialAction = { type: 'formChange', payload: initialBaseState };\n\n const sourceForHub2$ = hub1StateMapped$.pipe(\n startWith(initialAction),\n pairwise(),\n mergeMap(\n ([\n {\n payload: { form: prevForm },\n },\n currAction,\n ]) => {\n const {\n payload: { _changedControls, form: currentForm },\n } = currAction;\n\n const valueChanged = !isEqual(prevForm.root.value, currentForm.root.value);\n\n const controlsToCheck =\n _changedControls && valueChanged ? Object.values(_changedControls) : [];\n\n const asyncValidationEffectActions = getAsyncValidationEffects(controlsToCheck);\n\n return of(currAction, ...asyncValidationEffectActions);\n },\n ),\n );\n\n return sourceForHub2$ as Observable<Action<any>>;\n};\n","import { BaseForm, Form, BaseControl, FormControl } from '../Models/Controls';\nimport { ControlRef } from '../Models/ControlRef';\nimport { getFormKey } from './getFormKey';\n\nexport const getControl = <T extends BaseForm<unknown> | Form<unknown>>(\n controlRef: ControlRef,\n form: T,\n): T extends BaseForm<unknown> ? BaseControl<unknown> : FormControl<unknown> => {\n return form[getFormKey(controlRef)] as T extends BaseForm<unknown>\n ? BaseControl<unknown>\n : FormControl<unknown>;\n};\n","import { Action } from '@reactables/core';\nimport { BaseForm } from '../../Models/Controls';\nimport { UpdateValuesPayload } from '../../Models/Payloads';\nimport { getControl } from '../../Helpers/getControl';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { getErrors } from './getErrors';\nimport isEqual from 'lodash.isequal';\nimport { RxFormProviders } from '../../RxForm/RxForm';\n\nexport const UPDATE_ANCESTOR_VALUES = 'UPDATE_ANCESTOR_VALUES';\nexport const updateAncestorValues = <T>(\n form: BaseForm<T>,\n { payload: { controlRef, value } }: Action<UpdateValuesPayload<unknown>>,\n providers: RxFormProviders,\n): BaseForm<T> => {\n if (controlRef.length) {\n const parentRef = controlRef.slice(0, -1);\n const parentControl = getControl(parentRef, form);\n const parentFormKey = getFormKey(parentControl.controlRef);\n const childKey = controlRef.slice(-1)[0];\n\n let newValue: unknown;\n\n // If parent is a Form Array\n if (Array.isArray(parentControl.value)) {\n newValue = parentControl.value.map((item: unknown, index) =>\n index === childKey ? value : item,\n );\n } else {\n // If parent is a Form Group\n newValue = {\n ...(parentControl.value as object),\n [childKey]: value,\n };\n }\n\n const newParentControl = {\n ...parentControl,\n validatorErrors: getErrors(parentControl, newValue, providers),\n value: newValue,\n dirty: !isEqual(newValue, parentControl.pristineValue),\n };\n\n return updateAncestorValues(\n {\n ...form,\n [parentFormKey]: newParentControl,\n },\n {\n type: UPDATE_ANCESTOR_VALUES,\n payload: { controlRef: parentRef, value: newValue },\n },\n providers,\n );\n }\n\n return form;\n};\n","import { ControlRef } from '../Models/ControlRef';\n\nexport const isChildRef = (controlRef: ControlRef, parentRef: ControlRef) => {\n return (\n parentRef.every((key, index) => controlRef[index] === key) &&\n controlRef.length === parentRef.length + 1\n );\n};\n","import { BaseControl, FormControl, BaseForm, Form } from '../Models/Controls';\nimport { ControlRef } from '../Models/ControlRef';\nimport { getControl } from './getControl';\n\n// Includes the original control of interest unless excludeSelf === true\nexport const getDescendantControls = <T extends BaseForm<unknown> | Form<unknown>>(\n controlRef: ControlRef,\n form: T,\n excludeSelf = false,\n): (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[] => {\n if (!controlRef.length) {\n return Object.values(form).filter(({ controlRef }) =>\n excludeSelf ? controlRef.length !== 0 : true,\n ) as (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[];\n }\n\n const control = getControl(controlRef, form);\n const { value, config } = control;\n let descendants: (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[] = [];\n\n if (Array.isArray(config.controls)) {\n // If control is a Form Array\n descendants = (value as unknown[]).reduce(\n (\n acc: (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[],\n item,\n index,\n ) => {\n return acc.concat(getDescendantControls(controlRef.concat(index), form));\n },\n [],\n ) as (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[];\n } else if (config.controls) {\n // If control is a Form Group\n descendants = Object.keys(value as object).reduce(\n (acc: (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[], key) => {\n return acc.concat(getDescendantControls(controlRef.concat(key), form));\n },\n [],\n ) as (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[];\n }\n\n if (excludeSelf) return descendants;\n\n return (\n [control] as (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[]\n ).concat(descendants || []);\n};\n","import { BaseControl, BaseForm, Form, FormControl } from '../Models/Controls';\nimport { ControlRef } from '../Models/ControlRef';\nimport { getControl } from '../Helpers/getControl';\nimport { getFormKey } from './getFormKey';\n\n// Includes the original control of interest unless excludeSelf === true\nexport const getAncestorControls = <T extends BaseForm<unknown> | Form<unknown>>(\n controlRef: ControlRef,\n form: T,\n excludeSelf = false,\n): (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[] => {\n const formControls = controlRef.reduce(\n (acc, key) => {\n const currentRef = acc.currentRef.concat(key);\n const formControls = acc.formControls.concat(getControl(currentRef, form));\n return {\n currentRef,\n formControls,\n };\n },\n {\n currentRef: [] as ControlRef,\n formControls: [] as BaseControl<unknown>[],\n },\n ).formControls as (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[];\n\n const root = form['root'] as T extends Form<unknown>\n ? FormControl<unknown>\n : BaseControl<unknown>;\n\n const result = [root].concat(formControls);\n\n return result.filter((control) =>\n excludeSelf ? getFormKey(control.controlRef) !== getFormKey(controlRef) : true,\n );\n};\n","import { ControlRef } from '../Models';\n\n/**\n * @description see if any keys in a ControlRef has a \".\" probably a mistake by developer\n */\nexport const controlRefCheck = (ref: ControlRef): void => {\n try {\n const hasError = ref.some((key) => {\n if (typeof key === 'string') {\n return key.includes('.');\n }\n\n return false;\n });\n\n if (hasError) {\n const refString = `[${ref.reduce((acc: string, key, index) => {\n if (index > 0) {\n acc = acc.concat(', ');\n }\n if (typeof key === 'number') {\n return acc.concat(key.toString());\n }\n return acc.concat(`'${key}'`);\n }, '')}]`;\n\n const suggestion = `[${ref.reduce((acc: string, key, index) => {\n if (index > 0) {\n acc = acc.concat(', ');\n }\n\n if (typeof key === 'number') {\n return acc.concat(key.toString());\n }\n\n const splitted = key\n .split('.')\n .map((key) => `'${key}'`)\n .join(', ');\n\n return acc.concat(`${splitted}`);\n }, '')}]`;\n\n console.warn(`You provided ${refString}. Did you mean ${suggestion}?`);\n }\n } catch {}\n};\n","import { Action } from '@reactables/core';\nimport { BaseFormState, BaseControl, BaseForm } from '../../Models/Controls';\nimport { FormArrayConfig, FormControlConfig, FormGroupConfig } from '../../Models';\nimport { UpdateValuesPayload } from '../../Models/Payloads';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { updateAncestorValues, UPDATE_ANCESTOR_VALUES } from './updateAncestorValues';\nimport { isChildRef } from '../../Helpers/isChildRef';\nimport { FormErrors } from '../../Models';\nimport isEqual from 'lodash.isequal';\nimport { getErrors } from './getErrors';\nimport { getDescendantControls } from '../../Helpers/getDescendantControls';\nimport { getAncestorControls } from '../../Helpers/getAncestorControls';\nimport { RxFormProviders } from '../../RxForm/RxForm';\nimport { controlRefCheck } from '../../Helpers/controlRefCheck';\n\nconst checkKeys = (oldObj: object, newObj: object): void => {\n const oldKeys = Object.keys(oldObj).slice().sort().join();\n const newKeys = Object.keys(newObj).slice().sort().join();\n if (oldKeys !== newKeys) {\n console.warn(\n `You are trying to update multiple controls but the keys don't match. It is recommended your keys match. Old keys: ${oldKeys}. New Keys: ${newKeys} `,\n );\n }\n};\n\nconst UPDATE_DESCENDANT_VALUES = 'UPDATE_DESCENDANT_VALUES';\nconst updateDescendantValues = <T>(\n form: BaseForm<T>,\n { payload: { controlRef, value } }: Action<UpdateValuesPayload<unknown>>,\n providers: RxFormProviders,\n): BaseForm<T> => {\n const descendants = getDescendantControls(controlRef, form, true).map(\n (control) => [getFormKey(control.controlRef), control] as [string, BaseControl<unknown>],\n );\n\n const result = descendants.reduce((acc: BaseForm<T>, [key, control]) => {\n if (isChildRef(control.controlRef, controlRef)) {\n const newChildValue = (value as { [key: string]: any })[\n control.controlRef.at(-1) as string\n ] as unknown;\n const validatorErrors: FormErrors = getErrors(control, newChildValue, providers);\n const oldChildValue = control.value;\n\n const newControl = {\n ...control,\n value: newChildValue,\n validatorErrors,\n dirty: !isEqual(newChildValue, control.pristineValue),\n };\n\n acc = {\n ...acc,\n [key]: newControl,\n };\n\n const { controls: configControls } = control.config as FormArrayConfig | FormGroupConfig;\n\n if (configControls) {\n checkKeys(oldChildValue as object, newChildValue as object);\n acc = updateDescendantValues(\n acc,\n {\n type: UPDATE_DESCENDANT_VALUES,\n payload: { controlRef: control.controlRef, value: newChildValue },\n },\n providers,\n );\n }\n }\n\n return acc;\n }, form);\n\n return result;\n};\n\n// Will only update child controls that are present.\n// Use AddControlPayload/RemoveControl action reducers to add/remove control\nexport const updateValues = <T>(\n { form, _changedControls = {}, _removedControls = {} }: BaseFormState<T>,\n action: Action<UpdateValuesPayload<unknown>>,\n providers: RxFormProviders,\n mergeChanges = false,\n): BaseFormState<T> => {\n const { normalizers } = providers;\n const {\n payload: { controlRef, value },\n } = action;\n\n controlRefCheck(controlRef);\n\n // Update its own value\n const ctrlKey = getFormKey(controlRef);\n\n let newValue = value;\n const oldValue = form[ctrlKey].value;\n\n const { config } = form[ctrlKey];\n\n if ((config as FormControlConfig<unknown>).normalizers) {\n newValue = (config as FormControlConfig<unknown>).normalizers?.reduce(\n (acc: unknown, normalizer) => {\n if (!normalizers?.[normalizer]) {\n throw `You have not provided a normalizer for \"${normalizer}\"`;\n }\n return normalizers[normalizer](acc) as unknown;\n },\n value,\n );\n }\n\n const validatorErrors: FormErrors = getErrors(form[ctrlKey], newValue, providers);\n\n const newControl = {\n ...form[ctrlKey],\n validatorErrors,\n dirty: !isEqual(value, form[ctrlKey].pristineValue),\n value: newValue,\n };\n\n let result: BaseFormState<T> = {\n form: {\n ...form,\n [ctrlKey]: newControl,\n },\n _changedControls: { [newControl.key]: newControl },\n };\n\n const { controls: configControls } = config as FormArrayConfig | FormGroupConfig;\n\n // Update its descendants\n if (configControls) {\n checkKeys(oldValue as object, newValue as object);\n const updatedDescendants = updateDescendantValues(\n result.form,\n {\n type: UPDATE_DESCENDANT_VALUES,\n payload: {\n controlRef,\n value: newValue,\n },\n },\n providers,\n );\n\n const changedDescendantControls = getDescendantControls(controlRef, updatedDescendants).reduce(\n (acc: { [key: string]: BaseControl<unknown> }, control) => ({\n ...acc,\n [control.key]: control,\n }),\n {},\n );\n\n result = {\n ...result,\n form: updatedDescendants,\n _changedControls: {\n ...result._changedControls,\n ...changedDescendantControls,\n },\n };\n }\n\n // Update its Ancestors\n if (controlRef.length) {\n result = {\n ...result,\n form: updateAncestorValues(\n result.form,\n {\n type: UPDATE_ANCESTOR_VALUES,\n payload: { controlRef, value: newValue },\n },\n providers,\n ),\n };\n }\n\n const changedAncestorControls = getAncestorControls(controlRef, result.form).reduce(\n (acc: { [key: string]: BaseControl<unknown> }, control) => ({\n ...acc,\n [control.key]: control,\n }),\n {},\n );\n\n const mergedResult = {\n ...result,\n _changedControls: {\n ...(mergeChanges ? _changedControls : undefined),\n ...changedAncestorControls,\n ...result._changedControls,\n },\n _removedControls: mergeChanges ? _removedControls : undefined,\n };\n\n return mergedResult;\n};\n","import { Action } from '@reactables/core';\nimport { BaseForm } from '../../Models/Controls';\nimport { getControl } from '../../Helpers/getControl';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { updateAncestorValues, UPDATE_ANCESTOR_VALUES } from './updateAncestorValues';\nimport { ControlRef } from '../../Models/ControlRef';\nimport { getErrors } from './getErrors';\nimport isEqual from 'lodash.isequal';\nimport { RxFormProviders } from '../../RxForm/RxForm';\n\nexport const UPDATE_ANCESTOR_VALUES_REMOVE_CONTROL = 'UPDATE_ANCESTOR_VALUES_REMOVE_CONTROL';\nexport const updateAncestorValuesRemoveControl = <T>(\n form: BaseForm<T>,\n { payload: controlRef }: Action<ControlRef>,\n providers: RxFormProviders,\n): BaseForm<T> => {\n if (controlRef.length) {\n const parentRef = controlRef.slice(0, -1);\n const parentControl = getControl(parentRef, form);\n const parentFormKey = getFormKey(parentControl.controlRef);\n const childKey = controlRef.slice(-1)[0];\n\n let newValue;\n\n // If parent is a Form Array\n if (Array.isArray(parentControl.value)) {\n newValue = parentControl.value.filter((item, index) => index !== childKey);\n } else {\n // If parent is a Form Group\n newValue = {\n ...(parentControl.value as object),\n };\n\n delete newValue[childKey];\n }\n\n const newParentControl = {\n ...parentControl,\n value: newValue,\n validatorErrors: getErrors(parentControl, newValue, providers),\n dirty: !isEqual(newValue, parentControl.pristineValue),\n };\n\n return updateAncestorValues(\n {\n ...form,\n [parentFormKey]: newParentControl,\n },\n {\n type: UPDATE_ANCESTOR_VALUES,\n payload: { controlRef: parentRef, value: newValue },\n },\n providers,\n );\n }\n\n return form;\n};\n","import { Action } from '@reactables/core';\nimport { BaseForm, BaseFormState, BaseControl } from '../../Models/Controls';\nimport { ControlRef } from '../../Models/ControlRef';\nimport { getControl } from '../../Helpers/getControl';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport {\n updateAncestorValuesRemoveControl,\n UPDATE_ANCESTOR_VALUES_REMOVE_CONTROL,\n} from './updateAncestorValuesRemoveControl';\nimport { getDescendantControls } from '../../Helpers/getDescendantControls';\nimport { getAncestorControls } from '../../Helpers/getAncestorControls';\nimport { RxFormProviders } from '../../RxForm/RxForm';\nimport { controlRefCheck } from '../../Helpers/controlRefCheck';\n\nexport const removeControl = <T>(\n state: BaseFormState<T>,\n action: Action<ControlRef>,\n providers: RxFormProviders,\n mergeChanges = false,\n): BaseFormState<T> => {\n const { form } = state;\n const { payload: controlRef } = action;\n\n controlRefCheck(controlRef);\n\n const controlToRemove = getControl(controlRef, form);\n\n if (!controlToRemove) {\n throw 'Control not found';\n }\n\n // Can't remove the root of the form\n if (!controlRef.length) return { form };\n\n const parentRef = controlRef.slice(0, -1);\n\n const parentIsFormArray = Array.isArray(getControl(parentRef, form).config.controls);\n\n const descendants = getDescendantControls(controlRef, form);\n const descendantkeys = descendants.map(({ controlRef }) => getFormKey(controlRef));\n\n const controlsRemoved = { ...form };\n\n descendantkeys.forEach((key) => {\n delete controlsRemoved[key];\n });\n\n // Remove control and all descendants\n const controlRemoved: BaseForm<T> = Object.entries(controlsRemoved).reduce(\n (acc, [key, control]) => {\n // May need to reindex array items of removed control\n // if it was part of a Form Array.\n if (parentIsFormArray) {\n const oldIndex = control.controlRef.at(parentRef.length) as number;\n\n if (\n // If control is descendant.\n parentRef.every((ref, index) => control.controlRef[index] === ref) &&\n control.controlRef.length > parentRef.length &&\n // If the array item index was greater than the index of item removed\n // we need to decrement its index by 1.\n oldIndex > (controlRef.at(-1) as number)\n ) {\n const newRef: ControlRef = parentRef\n .concat(oldIndex - 1)\n .concat(control.controlRef.slice(parentRef.length + 1));\n\n return {\n ...acc,\n [getFormKey(newRef)]: {\n ...control,\n controlRef: newRef,\n },\n };\n }\n }\n\n return { ...acc, [key]: control };\n },\n {} as BaseForm<T>,\n );\n\n const result = updateAncestorValuesRemoveControl(\n controlRemoved,\n {\n type: UPDATE_ANCESTOR_VALUES_REMOVE_CONTROL,\n payload: controlRef,\n },\n providers,\n );\n\n let _changedControls = {\n ...(mergeChanges ? state._changedControls || {} : undefined),\n ...getAncestorControls(controlRef.slice(0, -1), result).reduce(\n (acc: { [key: string]: BaseControl<unknown> }, control) => ({\n ...acc,\n [control.key]: control,\n }),\n {},\n ),\n };\n\n // Check for reindexing for changed controls\n if (parentIsFormArray) {\n _changedControls = Object.entries(_changedControls).reduce((acc, [key, control]) => {\n const oldIndex = control.controlRef.at(parentRef.length) as number;\n\n if (\n // If control is descendant.\n parentRef.every((ref, index) => control.controlRef[index] === ref) &&\n control.controlRef.length > parentRef.length &&\n // If the array item index was greater than the index of item removed\n // we need to decrement its index by 1.\n oldIndex > (controlRef.at(-1) as number)\n ) {\n const newRef: ControlRef = parentRef\n .concat(oldIndex - 1)\n .concat(control.controlRef.slice(parentRef.length + 1));\n\n return {\n ...acc,\n [getFormKey(newRef)]: {\n ...control,\n controlRef: newRef,\n },\n };\n } else {\n return { ...acc, [key]: control };\n }\n }, {});\n }\n\n const _removedControls = {\n ...(mergeChanges ? state._removedControls || {} : undefined),\n [controlToRemove.key]: controlToRemove,\n };\n\n descendants\n .map(({ key }) => key)\n .forEach((key) => {\n delete _changedControls[key];\n });\n\n return {\n form: result,\n _changedControls,\n _removedControls,\n };\n};\n","import { Action } from '@reactables/core';\nimport { BaseForm } from '../../Models/Controls';\nimport { UpdateValuesPayload } from '../../Models/Payloads';\nimport { getControl } from '../../Helpers/getControl';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { updateAncestorValues, UPDATE_ANCESTOR_VALUES } from './updateAncestorValues';\nimport { getErrors } from './getErrors';\nimport isEqual from 'lodash.isequal';\nimport { RxFormProviders } from '../../RxForm/RxForm';\n\nexport const UPDATE_ANCESTOR_VALUES_ADD_CONTROL = 'UPDATE_ANCESTOR_VALUES_ADD_CONTROL';\nexport const updateAncestorValuesAddControl = <T>(\n form: BaseForm<T>,\n { payload: { controlRef, value } }: Action<UpdateValuesPayload<unknown>>,\n providers: RxFormProviders,\n): BaseForm<T> => {\n if (controlRef.length) {\n const parentRef = controlRef.slice(0, -1);\n const parentControl = getControl(parentRef, form);\n const parentFormKey = getFormKey(parentControl.controlRef);\n const childKey = controlRef.slice(-1)[0];\n\n let newValue: unknown;\n\n // If parent is a Form Array\n if (Array.isArray(parentControl.value)) {\n newValue = parentControl.value.concat(value);\n } else {\n // If parent is a Form Group\n newValue = {\n ...(form[parentFormKey].value as object),\n [childKey]: value,\n };\n }\n\n const newParentControl = {\n ...parentControl,\n value: newValue,\n validatorErrors: getErrors(parentControl, newValue, providers),\n dirty: !isEqual(newValue, parentControl.pristineValue),\n };\n\n return updateAncestorValues(\n {\n ...form,\n [parentFormKey]: newParentControl,\n },\n {\n type: UPDATE_ANCESTOR_VALUES,\n payload: { controlRef: parentRef, value: newValue },\n },\n providers,\n );\n }\n\n return form;\n};\n","import { ControlRef } from '../Models/ControlRef';\nimport { getAncestorControls } from './getAncestorControls';\nimport { getDescendantControls } from './getDescendantControls';\nimport { BaseControl, FormControl, BaseForm, Form } from '../Models/Controls';\n\nexport const getControlBranch = <T extends BaseForm<unknown> | Form<unknown>>(\n controlRef: ControlRef,\n form: T,\n): (T extends Form<unknown> ? FormControl<unknown> : BaseControl<unknown>)[] => {\n const ancestors = getAncestorControls(controlRef, form);\n const childControls = getDescendantControls(controlRef, form).slice(1);\n\n return ancestors.concat(childControls).sort((a, b) => a.controlRef.length - b.controlRef.length);\n};\n","import { Action } from '@reactables/core';\nimport { BaseFormState, BaseControl } from '../../Models/Controls';\nimport { AddControlPayload } from '../../Models/Payloads';\nimport { buildState } from '../../Helpers/buildFormState';\nimport { getControl } from '../../Helpers/getControl';\nimport {\n updateAncestorValuesAddControl,\n UPDATE_ANCESTOR_VALUES_ADD_CONTROL,\n} from './updateAncestorValuesAddControl';\nimport { getControlBranch } from '../../Helpers/getControlBranch';\nimport { RxFormProviders } from '../../RxForm/RxForm';\nimport { controlRefCheck } from '../../Helpers/controlRefCheck';\n\nexport const addControl = <T>(\n state: BaseFormState<T>,\n action: Action<AddControlPayload>,\n providers: RxFormProviders,\n mergeChanges = false,\n): BaseFormState<T> => {\n const {\n payload: { config, controlRef },\n } = action;\n\n controlRefCheck(controlRef);\n\n // If controlRef does not exist we are adding control to a Form Group\n\n if (!getControl(controlRef.slice(0, -1), state.form)) {\n throw 'You are attempting to add a control to a non-existent form group';\n }\n\n const newForm = buildState(config, controlRef, providers, state.form);\n const newValue = getControl(controlRef, newForm).value;\n\n const ancestorsUpdated = updateAncestorValuesAddControl(\n newForm,\n {\n type: UPDATE_ANCESTOR_VALUES_ADD_CONTROL,\n payload: { controlRef: controlRef, value: newValue },\n },\n providers,\n );\n\n const _changedControls = getControlBranch(controlRef, ancestorsUpdated).reduce(\n (acc: { [key: string]: BaseControl<unknown> }, control) => ({ ...acc, [control.key]: control }),\n {},\n );\n\n return {\n form: ancestorsUpdated,\n _changedControls: {\n ...(mergeChanges ? state._changedControls || {} : undefined),\n ..._changedControls,\n },\n _removedControls: mergeChanges ? state._removedControls || {} : undefined,\n };\n};\n","import { Action } from '@reactables/core';\nimport { BaseFormState, BaseControl } from '../../Models/Controls';\nimport { AddControlPayload } from '../../Models/Payloads';\nimport { ControlRef } from '../../Models';\nimport { FormArrayConfig } from '../../Models';\nimport { buildState } from '../../Helpers/buildFormState';\nimport { getControl } from '../../Helpers/getControl';\nimport {\n updateAncestorValuesAddControl,\n UPDATE_ANCESTOR_VALUES_ADD_CONTROL,\n} from './updateAncestorValuesAddControl';\nimport { getControlBranch } from '../../Helpers/getControlBranch';\nimport { RxFormProviders } from '../../RxForm/RxForm';\nimport { controlRefCheck } from '../../Helpers/controlRefCheck';\n\nexport const pushControl = <T>(\n state: BaseFormState<T>,\n action: Action<AddControlPayload>,\n providers: RxFormProviders,\n mergeChanges = false,\n): BaseFormState<T> => {\n let newControlRef: ControlRef;\n\n const {\n payload: { config, controlRef },\n } = action;\n\n controlRefCheck(controlRef);\n\n const existingControl = getControl(controlRef, state.form);\n\n if (!existingControl) throw 'You are attempting to push to a control that does not exist';\n\n // If controlRef exists we are adding control to a Form Array\n if (Array.isArray((existingControl.config as FormArrayConfig).controls)) {\n newControlRef = controlRef.concat((existingControl.value as Array<unknown>).length);\n } else {\n throw 'You are attempting to push to a control that is not a Form Array';\n }\n\n const newForm = buildState(config, newControlRef, providers, state.form);\n const newValue = getControl(newControlRef, newForm).value;\n\n const ancestorsUpdated = updateAncestorValuesAddControl(\n newForm,\n {\n type: UPDATE_ANCESTOR_VALUES_ADD_CONTROL,\n payload: { controlRef: newControlRef, value: newValue },\n },\n providers,\n );\n\n const _changedControls = getControlBranch(newControlRef, ancestorsUpdated).reduce(\n (acc: { [key: string]: BaseControl<unknown> }, control) => ({ ...acc, [control.key]: control }),\n {},\n );\n\n return {\n form: ancestorsUpdated,\n _changedControls: {\n ...(mergeChanges ? state._changedControls || {} : undefined),\n ..._changedControls,\n },\n _removedControls: mergeChanges ? state._removedControls || {} : undefined,\n };\n};\n","import { Action } from '@reactables/core';\nimport { BaseForm, BaseControl } from '../../Models/Controls';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { getDescendantControls } from '../../Helpers/getDescendantControls';\nimport { ControlRef } from '../../Models/ControlRef';\nimport isEqual from 'lodash.isequal';\n\n// Same implementation as updateAncestor values except updating pristine values\nexport const UPDATE_ANCESTOR_PRISTINE_VALUES = 'UPDATE_ANCESTOR_PRISTINE_VALUES';\nexport const updateAncestorPristineValues = <T>(\n form: BaseForm<T>,\n { payload: controlRef }: Action<ControlRef>,\n): BaseForm<T> => {\n if (controlRef.length) {\n const parentRef = controlRef.slice(0, -1);\n const parentKey = getFormKey(parentRef);\n\n const siblingControls = getDescendantControls(parentRef, form).filter(\n // Out of descendants we only need the siblings\n (control) => control.controlRef.length === controlRef.length,\n );\n\n let newValue: unknown;\n\n // If parent is a Form Array\n if (Array.isArray(form[parentKey].value)) {\n newValue = siblingControls\n .slice()\n .sort((a, b) => (a.controlRef.at(-1) as number) - (b.controlRef.at(-1) as number))\n .map((control) => control.pristineValue);\n } else {\n // If parent is a Form Group\n newValue = siblingControls.reduce((acc, { controlRef, pristineValue }) => {\n return {\n ...acc,\n [controlRef.at(-1) as string | number]: pristineValue,\n };\n }, {});\n }\n\n const newParentControl: BaseControl<unknown> = {\n ...form[parentKey],\n pristineValue: newValue,\n dirty: isEqual(form[parentKey].value, newValue),\n };\n\n return updateAncestorPristineValues(\n {\n ...form,\n [parentKey]: newParentControl,\n },\n {\n type: UPDATE_ANCESTOR_PRISTINE_VALUES,\n payload: parentRef,\n },\n );\n }\n\n return form;\n};\n","import { Action } from '@reactables/core';\nimport { BaseFormState } from '../../Models/Controls';\nimport { ControlRef } from '../../Models/ControlRef';\nimport { getDescendantControls } from '../../Helpers/getDescendantControls';\nimport {\n updateAncestorPristineValues,\n UPDATE_ANCESTOR_PRISTINE_VALUES,\n} from './updateAncestorPristineValues';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { getControlBranch } from '../../Helpers/getControlBranch';\nimport { controlRefCheck } from '../../Helpers/controlRefCheck';\n\nexport const markControlAsPristine = <T>(\n state: BaseFormState<T>,\n action: Action<ControlRef>,\n mergeChanges = false,\n): BaseFormState<T> => {\n const { form } = state;\n const { payload: controlRef } = action;\n\n controlRefCheck(controlRef);\n\n const descendants = getDescendantControls(controlRef, form).reduce(\n (acc, control) => ({\n ...acc,\n [getFormKey(control.controlRef)]: {\n ...control,\n dirty: false,\n pristineValue: control.value,\n },\n }),\n {},\n );\n let result = {\n ...form,\n ...descendants,\n };\n\n if (controlRef.length) {\n result = updateAncestorPristineValues(result, {\n type: UPDATE_ANCESTOR_PRISTINE_VALUES,\n payload: controlRef,\n });\n }\n\n const _changedControls = getControlBranch(controlRef, result).reduce(\n (acc, control) => ({ ...acc, [control.key]: control }),\n {},\n );\n\n return {\n form: result,\n _changedControls: {\n ...(mergeChanges ? state._changedControls || {} : undefined),\n ..._changedControls,\n },\n _removedControls: mergeChanges ? state._removedControls || {} : undefined,\n };\n};\n","import { Action } from '@reactables/core';\nimport { BaseFormState } from '../../Models/Controls';\nimport { MarkTouchedPayload } from '../../Models/Payloads';\nimport { getAncestorControls } from '../../Helpers/getAncestorControls';\nimport { getControlBranch } from '../../Helpers/getControlBranch';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { controlRefCheck } from '../../Helpers/controlRefCheck';\n\nexport const markControlAsTouched = <T>(\n state: BaseFormState<T>,\n action: Action<MarkTouchedPayload>,\n mergeChanges = false,\n): BaseFormState<T> => {\n const { form } = state;\n const {\n payload: { controlRef, markAll = false },\n } = action;\n\n controlRefCheck(controlRef);\n\n const controls = (\n markAll ? getControlBranch(controlRef, form) : getAncestorControls(controlRef, form)\n ).reduce(\n (acc, control) => ({\n ...acc,\n [getFormKey(control.controlRef)]: {\n ...control,\n touched: true,\n },\n }),\n {},\n );\n\n const result = {\n form: {\n ...form,\n ...controls,\n },\n action,\n };\n\n const _changedControls = getControlBranch(controlRef, result.form).reduce(\n (acc, control) => ({ ...acc, [control.key]: control }),\n {},\n );\n\n return {\n form: {\n ...form,\n ...controls,\n },\n _changedControls: {\n ...(mergeChanges ? state._changedControls || {} : undefined),\n ..._changedControls,\n },\n _removedControls: mergeChanges ? state._removedControls || {} : undefined,\n };\n};\n","import { Action } from '@reactables/core';\nimport { BaseForm, BaseFormState } from '../../Models/Controls';\nimport { ControlRef } from '../../Models/ControlRef';\nimport { getDescendantControls } from '../../Helpers/getDescendantControls';\nimport { getControlBranch } from '../../Helpers/getControlBranch';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { controlRefCheck } from '../../Helpers/controlRefCheck';\n\nexport const markControlAsUntouched = <T>(\n state: BaseFormState<T>,\n action: Action<ControlRef>,\n mergeChanges = false,\n): BaseFormState<T> => {\n const { form } = state;\n const { payload: controlRef } = action;\n\n controlRefCheck(controlRef);\n\n let result = getDescendantControls(controlRef, form).reduce(\n (acc, control) => ({\n ...acc,\n [getFormKey(control.controlRef)]: {\n ...control,\n touched: false,\n },\n }),\n {},\n ) as BaseForm<unknown>;\n\n result = {\n ...form,\n ...result,\n };\n\n // Update ancestors\n let currentRef = controlRef;\n let key: string;\n while (currentRef.length > 0) {\n currentRef = currentRef.slice(0, -1);\n\n key = getFormKey(currentRef);\n result = {\n ...result,\n [key]: {\n ...result[key],\n touched: getDescendantControls(currentRef, result, true).some((control) => control.touched),\n },\n };\n }\n\n const _changedControls = getControlBranch(controlRef, result).reduce(\n (acc, control) => ({ ...acc, [control.key]: control }),\n {},\n );\n\n return {\n form: result as BaseForm<T>,\n _changedControls: {\n ...(mergeChanges ? state._changedControls || {} : undefined),\n ..._changedControls,\n },\n _removedControls: mergeChanges ? state._removedControls || {} : undefined,\n };\n};\n","import { Action } from '@reactables/core';\nimport { BaseFormState, BaseControl } from '../../Models/Controls';\nimport { ControlRef } from '../../Models/ControlRef';\nimport { getControl } from '../../Helpers/getControl';\nimport { updateAncestorValues, UPDATE_ANCESTOR_VALUES } from './updateAncestorValues';\nimport { getDescendantControls } from '../../Helpers/getDescendantControls';\nimport { buildState } from '../../Helpers/buildFormState';\nimport { getControlBranch } from '../../Helpers/getControlBranch';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { RxFormProviders } from '../../RxForm/RxForm';\nimport { controlRefCheck } from '../../Helpers/controlRefCheck';\n\nexport const resetControl = <T>(\n state: BaseFormState<T>,\n action: Action<ControlRef>,\n providers: RxFormProviders,\n mergeChanges = false,\n): BaseFormState<T> => {\n const { form } = state;\n const { payload: controlRef } = action;\n controlRefCheck(controlRef);\n const controlToReset = getControl(controlRef, form);\n\n const descendantsRemoved = { ...form };\n\n const descendants = getDescendantControls(controlRef, form);\n const descendantKeys = descendants.map(({ controlRef }) => getFormKey(controlRef));\n\n descendantKeys.forEach((key) => {\n delete descendantsRemoved[key];\n });\n\n // Remove all descendants\n\n const restoredControls = buildState(\n controlToReset.config,\n controlToReset.controlRef,\n providers,\n descendantsRemoved,\n );\n\n const restoredControlValue = getControl(controlRef, restoredControls).value;\n\n const result = updateAncestorValues(\n restoredControls,\n {\n type: UPDATE_ANCESTOR_VALUES,\n payload: { controlRef, value: restoredControlValue },\n },\n providers,\n );\n\n const _changedControls = {\n ...(mergeChanges ? state._changedControls || {} : undefined),\n ...getControlBranch(controlRef, result).reduce(\n (acc: { [key: string]: BaseControl<unknown> }, control) => ({\n ...acc,\n [control.key]: control,\n }),\n {},\n ),\n };\n\n const _removedControls = {\n ...(mergeChanges ? state._removedControls || {} : undefined),\n [controlToReset.key]: controlToReset,\n };\n\n // If control is removed, we can delete it from the _changedControls check\n descendants\n .map(({ key }) => key)\n .forEach((key) => {\n delete _changedControls[key];\n });\n\n return {\n form: result,\n _changedControls,\n _removedControls,\n };\n};\n","import { Action } from '@reactables/core';\nimport { Form, FormControl } from '../../Models/Controls';\nimport { getAncestorControls } from '../../Helpers/getAncestorControls';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { ControlRef } from '../../Models';\n\nexport const asyncValidation = (\n form: Form<any> | null,\n { payload: controlRef }: Action<ControlRef>,\n): Form<any> => {\n const updatedSelfAndAncestors = getAncestorControls(controlRef, form!).reduce((acc, control) => {\n const isChangedControl = getFormKey(control.controlRef) === getFormKey(controlRef);\n return {\n ...acc,\n [getFormKey(control.controlRef)]: {\n ...control,\n pending: true,\n asyncValidateInProgress: isChangedControl\n ? ({\n ...control.config.asyncValidators?.reduce(\n (acc, _, index) => ({ ...acc, [index]: true }),\n {},\n ),\n } as FormControl<any>['asyncValidateInProgress'])\n : (control as FormControl<any>).asyncValidateInProgress,\n },\n };\n }, {});\n\n return {\n ...form,\n ...updatedSelfAndAncestors,\n } as Form<any>;\n};\n","import { Form } from '../Models/Controls';\nexport const reverseObjectKeys = <T>(form: Form<T>) =>\n Object.keys(form)\n .reverse()\n .reduce((acc, key) => {\n acc[key] = form[key];\n return acc;\n }, {} as Form<T>);\n","import { Form } from '../../Models/Controls';\nimport { FormErrors } from '../../Models';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { ControlRef } from '../../Models';\nimport { getControlBranch } from '../../Helpers/getControlBranch';\nimport { reverseObjectKeys } from '../../Helpers/reverseObjectKeys';\n\nconst hasErrors = (errors: FormErrors) => {\n return Object.values(errors).some((hasError) => hasError);\n};\n\nexport const mergeBranchErrors = <T>(form: Form<T>, controlRef: ControlRef): Form<T> => {\n const controlBranch = getControlBranch(controlRef, form).reduce((acc, ctrl) => {\n return {\n ...acc,\n [getFormKey(ctrl.controlRef)]: ctrl,\n };\n }, {}) as Form<unknown>;\n\n const errorsMerged = Object.entries(controlBranch)\n .reverse()\n .reduce((acc, [key, control]) => {\n const errors = {\n ...control.validatorErrors,\n ...control.asyncValidatorErrors,\n };\n\n const selfValid = !hasErrors(errors);\n\n let childrenValid = true;\n\n if (Array.isArray(control.config.controls)) {\n // If control is a FormArray\n childrenValid = (control.value as unknown[]).every((item, index) => {\n const formKey = getFormKey(control.controlRef.concat(index));\n const valid = acc[formKey] === undefined ? form[formKey].valid : acc[formKey].valid;\n return valid;\n });\n } else if (control.config.controls) {\n // If control is a FormGroup\n childrenValid = Object.keys(control.value as unknown[]).every((childKey) => {\n const formKey = getFormKey(control.controlRef.concat(childKey));\n const valid = acc[formKey] === undefined ? form[formKey].valid : acc[formKey].valid;\n return valid;\n });\n }\n\n return {\n ...acc,\n [key]: {\n ...control,\n errors,\n valid: selfValid && childrenValid,\n childrenValid,\n },\n };\n }, {} as Form<T>);\n\n const errorsMergedOrderRestored = reverseObjectKeys(errorsMerged);\n\n return {\n ...form,\n ...errorsMergedOrderRestored,\n };\n};\n","import { Action } from '@reactables/core';\nimport { Form, FormControl } from '../../Models/Controls';\nimport { ControlAsyncValidationResponse } from '../../Models/Payloads';\nimport { getAncestorControls } from '../../Helpers/getAncestorControls';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { getDescendantControls } from '../../Helpers/getDescendantControls';\nimport { mergeBranchErrors } from './mergeBranchErrors';\n\nconst isControlValidating = (control: FormControl<unknown>): boolean => {\n if (!control.asyncValidateInProgress) return false;\n\n return Object.values(control.asyncValidateInProgress).some((pending) => pending);\n};\n\nconst getControlByKey = (key: string, form: Form<unknown>) => {\n return Object.values(form).find((control) => control.key === key);\n};\n\nexport const asyncValidationResponse = (\n form: Form<any> | null,\n { payload: { key, validatorIndex, errors } }: Action<ControlAsyncValidationResponse>,\n): Form<any> => {\n const control = getControlByKey(key, form!);\n\n if (!control) {\n return form!;\n }\n\n const controlUpdated = {\n ...form,\n [getFormKey(control.controlRef)]: {\n ...control,\n asyncValidateInProgress: {\n ...control.asyncValidateInProgress,\n [validatorIndex]: false,\n },\n asyncValidatorErrors: {\n ...control.asyncValidatorErrors,\n ...errors,\n },\n },\n } as Form<any>;\n\n const ancestors = getAncestorControls(control.controlRef, controlUpdated);\n\n const ancestorsUpdated = Object.entries(controlUpdated).reduce((acc, [key, control]) => {\n if (ancestors.includes(control)) {\n const descendants = getDescendantControls(control.controlRef, controlUpdated);\n const pending = descendants.some((control) => isControlValidating(control));\n\n return {\n ...acc,\n [key]: {\n ...control,\n pending,\n },\n };\n }\n\n return {\n ...acc,\n [key]: control,\n };\n }, {} as Form<any>);\n\n return mergeBranchErrors(ancestorsUpdated, control.controlRef);\n};\n","import { Form } from '../../Models/Controls';\nimport { FormErrors } from '../../Models';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { reverseObjectKeys } from '../../Helpers/reverseObjectKeys';\n\nconst hasErrors = (errors: FormErrors) => {\n return Object.values(errors).some((hasError) => hasError);\n};\n\n// TODO: update merge errors to not do the entire form but just a subset of it\n\n// TODO: separation of concern to update validity of control and ancestors\n\nexport const mergeErrors = <T>(form: Form<T>): Form<T> => {\n const errorsMerged = Object.entries(form)\n .reverse()\n .reduce((acc, [key, control]) => {\n const errors = {\n ...control.validatorErrors,\n ...control.asyncValidatorErrors,\n };\n\n const selfValid = !hasErrors(errors);\n\n let childrenValid = true;\n\n if (Array.isArray(control.config.controls)) {\n // If control is a FormArray\n childrenValid = (control.value as unknown[]).every(\n (item, index) => acc[getFormKey(control.controlRef.concat(index))].valid,\n );\n } else if (control.config.controls) {\n // If control is a FormGroup\n childrenValid = Object.keys(control.value as unknown[]).every(\n (childKey) => acc[getFormKey(control.controlRef.concat(childKey))].valid,\n );\n }\n\n return {\n ...acc,\n [key]: {\n ...control,\n errors,\n valid: selfValid && childrenValid,\n childrenValid,\n },\n };\n }, {} as Form<T>);\n\n const restoredOrder = reverseObjectKeys(errorsMerged);\n\n return restoredOrder;\n};\n","import { Form, BaseForm, FormControl, Hub2Fields } from '../../Models/Controls';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { getControlBranch } from '../../Helpers/getControlBranch';\nimport { ControlRef } from '../../Models/ControlRef';\nimport { FormErrors } from '../../Models';\nimport { DEFAULT_HUB2_FIELDS } from '../../Models/Controls';\nimport { reverseObjectKeys } from '../../Helpers/reverseObjectKeys';\n\nconst hasErrors = (errors: FormErrors) => {\n return Object.values(errors).some((hasError) => hasError);\n};\n\nexport const mergeRemoveControl = <T>(\n state: Form<T>,\n form: BaseForm<T>,\n controlRef: ControlRef,\n) => {\n const parentRef = controlRef.slice(0, -1);\n const existingBranch = getControlBranch(parentRef, state);\n\n const updatedControlBranch = getControlBranch(parentRef, form)\n .reverse()\n .reduce((acc: Form<unknown>, baseControl) => {\n const key = getFormKey(baseControl.controlRef);\n\n const existingControl =\n existingBranch.find((control) => baseControl.key === control.key) ||\n (structuredClone(DEFAULT_HUB2_FIELDS) as Hub2Fields);\n\n const errors = {\n ...baseControl.validatorErrors,\n ...existingControl.asyncValidatorErrors,\n };\n\n const selfValid = !hasErrors(errors);\n\n let childrenValid = true;\n\n if (Array.isArray(baseControl.config.controls)) {\n // If control is a FormArray\n childrenValid = (baseControl.value as unknown[]).every((item, index) => {\n const formKey = getFormKey(baseControl.controlRef.concat(index));\n const valid = acc[formKey] === undefined ? state[formKey].valid : acc[formKey].valid;\n return valid;\n });\n } else if (baseControl.config.controls) {\n // If control is a FormGroup\n childrenValid = Object.keys(baseControl.value as unknown[]).every((childKey) => {\n const formKey = getFormKey(baseControl.controlRef.concat(childKey));\n const valid = acc[formKey] === undefined ? state[formKey].valid : acc[formKey].valid;\n return valid;\n });\n }\n\n return {\n ...acc,\n [key]: {\n ...existingControl,\n ...baseControl,\n errors,\n valid: selfValid && childrenValid,\n childrenValid,\n },\n };\n }, {} as Form<unknown>) as unknown as { [key: string]: FormControl<unknown> };\n\n const updatedControlBranchOrderRestored = reverseObjectKeys(\n updatedControlBranch as Form<unknown>,\n );\n\n const descendants = existingBranch.filter(\n (control) => control.controlRef.length > parentRef.length,\n );\n\n const _removedControls = { ...state };\n\n descendants.forEach((control) => {\n delete _removedControls[getFormKey(control.controlRef)];\n });\n\n delete _removedControls[getFormKey(controlRef)];\n\n return {\n ..._removedControls,\n ...updatedControlBranchOrderRestored,\n };\n};\n","import { Form, Hub2Fields, FormControl, BaseFormState } from '../../Models/Controls';\nimport { getFormKey } from '../../Helpers/getFormKey';\nimport { FormErrors } from '../../Models/FormErrors';\nimport { DEFAULT_HUB2_FIELDS } from '../../Models/Controls';\nimport { mergeRemoveControl } from './mergeRemoveControl';\nimport { reverseObjectKeys } from '../../Helpers/reverseObjectKeys';\n\nconst hasErrors = (errors: FormErrors) => {\n return Object.values(errors).some((hasError) => hasError);\n};\n\nexport const mergeControls = <T>(\n state: Form<T>,\n { form, _changedControls = {}, _removedControls }: BaseFormState<unknown>,\n) => {\n const controlsRemoved = _removedControls\n ? Object.values(_removedControls).reduce(\n (acc, { controlRef }) => mergeRemoveControl(acc, form, controlRef) as Form<T>,\n state,\n )\n : state;\n\n const updatedBranch = Object.values(_changedControls)\n .reverse()\n .reduce((acc: Form<unknown>, control) => {\n const formKey = getFormKey(control.controlRef);\n const existingControl = controlsRemoved && controlsRemoved[formKey];\n\n const newControl: FormControl<unknown> = {\n ...(existingControl\n ? existingControl\n : (structuredClone(DEFAULT_HUB2_FIELDS) as Hub2Fields)),\n ...control,\n };\n\n const errors = {\n ...newControl.validatorErrors,\n ...newControl.asyncValidatorErrors,\n };\n\n const selfValid = !hasErrors(errors);\n\n let childrenValid = true;\n\n if (Array.isArray(control.config.controls)) {\n // If control is a FormArray\n childrenValid = (control.value as unknown[]).every((item, index) => {\n const formKey = getFormKey(control.controlRef.concat(index));\n const valid =\n acc[formKey] === undefined ? controlsRemoved[formKey].valid : acc[formKey].valid;\n return valid;\n });\n } else if (control.config.controls) {\n // If control is a FormGroup\n childrenValid = Object.keys(control.value as unknown[]).every((childKey) => {\n const formKey = getFormKey(control.controlRef.concat(childKey));\n const valid =\n acc[formKey] === undefined ? controlsRemoved[formKey].valid : acc[formKey].valid;\n return valid;\n });\n }\n\n return {\n ...acc,\n [formKey]: {\n ...newControl,\n errors,\n valid: selfValid && childrenValid,\n childrenValid,\n },\n };\n }, {} as Form<unknown>);\n\n const orderRestored = reverseObjectKeys(updatedBranch);\n\n const result = {\n ...controlsRemoved,\n ...orderRestored,\n };\n\n return result;\n};\n","import { Action } from '@reactables/core';\nimport { BaseFormState, Form, Hub2Fields } from '../../Models/Controls';\nimport { mergeErrors } from './mergeErrors';\nimport { mergeControls } from './mergeControls';\nimport { DEFAULT_HUB2_FIELDS } from '../../Models/Controls';\n\nexport const formChange = (\n state: Form<any> | null = null,\n { payload }: Action<BaseFormState<any>>,\n) => {\n const { form } = payload;\n\n if (state === null) {\n return mergeErrors(\n Object.entries(form).reduce((acc, [dictKey, baseControl]) => {\n return {\n ...acc,\n [dictKey]: {\n ...(structuredClone(DEFAULT_HUB2_FIELDS) as Hub2Fields),\n ...baseControl,\n },\n };\n }, {} as Form<any>),\n );\n }\n\n return mergeControls(state, payload);\n};\n","import {\n RxBuilder,\n Reactable,\n Action,\n Effect,\n ScopedEffects,\n ActionMap,\n DestroyAction,\n ActionObservableWithTypes,\n} from '@reactables/core';\nimport { Observable } from 'rxjs';\nimport { filter, skip } from 'rxjs/operators';\nimport { buildFormState } from '../Helpers/buildFormState';\nimport {\n UpdateValuesPayload,\n AddControlPayload,\n MarkTouchedPayload,\n PushControlPayload,\n} from '../Models/Payloads';\nimport { ControlRef } from '../Models';\nimport {\n FormControlConfig,\n FormArrayConfig,\n FormGroupConfig,\n AbstractControlConfig,\n} from '../Models/Configs';\nimport { buildHub2Source } from '../Helpers/buildHub2Source';\nimport { ValidatorFn, ValidatorAsyncFn } from '../Models/Validators';\nimport { updateValues } from '../Reducers/Hub1/updateValues';\nimport { removeControl } from '../Reducers/Hub1/removeControl';\nimport { addControl } from '../Reducers/Hub1/addControl';\nimport { pushControl } from '../Reducers/Hub1/pushControl';\nimport { markControlAsPristine } from '../Reducers/Hub1/markControlAsPristine';\nimport { markControlAsTouched } from '../Reducers/Hub1/markControlAsTouched';\nimport { markControlAsUntouched } from '../Reducers/Hub1/markControlAsUntouched';\nimport { resetControl } from '../Reducers/Hub1/resetControl';\nimport { asyncValidation } from '../Reducers/Hub2/asyncValidation';\nimport { asyncValidationResponse } from '../Reducers/Hub2/asyncValidationResponse';\nimport { formChange } from '../Reducers/Hub2/formChange';\nimport { BaseControl, Form, BaseFormState } from '../Models/Controls';\nimport { getScopedEffectsForControl } from '../Helpers/addAsyncValidationEffects';\nimport * as Validators from '../Validators/Validators';\nimport { DEFAULT_HUB2_FIELDS } from '../Models/Controls';\n\n// Config Builders\ntype FbControl<T> = [T, (string | string[])?, (string | string[])?];\nexport const control = <T>(config: FormControlConfig<T> | FbControl<T>) => {\n if (Array.isArray(config)) {\n return (config as FbControl<T>).reduce((acc, item, index) => {\n const indexMap: { [key: number]: string } = {\n 0: 'initialValue',\n 1: 'validators',\n 2: 'asyncValidators',\n };\n return {\n ...acc,\n [indexMap[index]]: index < 1 ? item : ([] as any[]).concat(item || []),\n };\n }, {} as FormControlConfig<T>);\n }\n\n return config;\n};\n\nexport const array = (config: FormArrayConfig) => config;\nexport const group = (config: FormGroupConfig) => config;\n\n// Building Reactable\nexport type RxFormActions = {\n updateValues: <T>(payload: UpdateValuesPayload<T>) => void;\n addControl: (payload: AddControlPayload) => void;\n pushControl: (payload: PushControlPayload) => void;\n removeControl: (payload: ControlRef) => void;\n markControlAsPristine: (payload: ControlRef) => void;\n markControlAsTouched: (payload: MarkTouchedPayload) => void;\n markControlAsUntouched: (payload: ControlRef) => void;\n resetControl: (payload: ControlRef) => void;\n} & ActionMap;\n\n// For building custom reducers\nexport interface FormReducers {\n updateValues: <T>(\n state: BaseFormState<T>,\n payload: UpdateValuesPayload<unknown>,\n ) => BaseFormState<T>;\n removeControl: <T>(state: BaseFormState<T>, payload: ControlRef) => BaseFormState<T>;\n pushControl: <T>(state: BaseFormState<T>, payload: PushControlPayload) => BaseFormState<T>;\n addControl: <T>(state: BaseFormState<T>, payload: AddControlPayload) => BaseFormState<T>;\n markControlAsPristine: <T>(state: BaseFormState<T>, payload: ControlRef) => BaseFormState<T>;\n markControlAsTouched: <T>(\n state: BaseFormState<T>,\n payload: MarkTouchedPayload,\n ) => BaseFormState<T>;\n markControlAsUntouched: <T>(state: BaseFormState<T>, payload: ControlRef) => BaseFormState<T>;\n resetControl: <T>(state: BaseFormState<T>, payload: ControlRef) => BaseFormState<T>;\n}\n\nconst reducerTools = (providers: RxFormProviders): FormReducers => ({\n updateValues: <T>(state: BaseFormState<T>, payload: UpdateValuesPayload<unknown>) =>\n updateValues(state, { type: 'updateValues', payload }, providers, true),\n removeControl: <T>(state: BaseFormState<T>, payload: ControlRef) =>\n removeControl(state, { type: 'removeControl', payload }, providers, true),\n pushControl: <T>(state: BaseFormState<T>, payload: PushControlPayload) =>\n pushControl(state, { type: 'pushControl', payload }, providers, true),\n addControl: <T>(state: BaseFormState<T>, payload: AddControlPayload) =>\n addControl(state, { type: 'addControl', payload }, providers, true),\n resetControl: <T>(state: BaseFormState<T>, payload: ControlRef) =>\n resetControl(state, { type: 'resetControl', payload }, providers, true),\n markControlAsPristine: <T>(state: BaseFormState<T>, payload: ControlRef) =>\n markControlAsPristine(state, { type: 'markControlAsPristine', payload }, true),\n markControlAsTouched: <T>(state: BaseFormState<T>, payload: MarkTouchedPayload) =>\n markControlAsTouched(state, { type: 'markControlAsTouched', payload }, true),\n markControlAsUntouched: <T>(state: BaseFormState<T>, payload: ControlRef) =>\n markControlAsUntouched(state, { type: 'markControlAsUntouched', payload }, true),\n});\n\nexport type CustomReducerFunc<FormValue = unknown> = (\n reducers: FormReducers,\n state: BaseFormState<FormValue>,\n action: any,\n) => BaseFormState<unknown>;\n\nexport type CustomReducer<FormValue = unknown> =\n | CustomReducerFunc<FormValue>\n | {\n reducer: CustomReducerFunc<FormValue>;\n effects?: Effect[] | ((payload?: unknown) => ScopedEffects);\n };\n\n// Mapping a Custom reducer function to an action creator\nexport type ActionCreatorTypeFromCustomReducer<T> = T extends (\n formReducers: FormReducers,\n state: any,\n) => unknown\n ? () => void\n : T extends (formReducers: FormReducers, state: any, action: Action<infer P>) => unknown\n ? (payload: P) => void\n : T extends { reducer: (formReducers: FormReducers, state: any) => unknown }\n ? () => void\n : T extends {\n reducer: (formReducers: FormReducers, state: any, action: Action<infer P>) => unknown;\n }\n ? (payload: P) => void\n : never;\n\nexport interface RxFormOptions<\n T extends Record<string, CustomReducer<any>> = Record<string, CustomReducer<any>>,\n> {\n reducers?: T;\n providers?: RxFormProviders;\n name?: string;\n debug?: boolean;\n sources?: Observable<Action<any>>[];\n}\n\ntype NormalizerFunction<T> = (value: T) => T;\n\nexport interface RxFormProviders {\n normalizers?: { [key: string]: NormalizerFunction<any> };\n validators?: { [key: string]: ValidatorFn };\n asyncValidators?: { [key: string]: ValidatorAsyncFn };\n}\n\nexport const build = <\n FormValue,\n CustomReducers extends Record<string, CustomReducer<FormValue>> = Record<\n string,\n CustomReducer<FormValue>\n >,\n>(\n config: AbstractControlConfig,\n options: RxFormOptions<CustomReducers> = {},\n) => {\n const providers = {\n normalizers: { ...options.providers?.normalizers },\n validators: { ...Validators, ...options.providers?.validators },\n asyncValidators: { ...options.providers?.asyncValidators },\n };\n\n const initialState: BaseFormState<FormValue> = buildFormState(config, undefined, providers);\n\n return createReactable<FormValue, CustomReducers>(initialState, options);\n};\n\nexport const load = <\n FormValue,\n CustomReducers extends Record<string, CustomReducer<FormValue>> = Record<\n string,\n CustomReducer<FormValue>\n >,\n>(\n state: Form<FormValue>,\n options: RxFormOptions<CustomReducers> = {},\n) => {\n const baseFormState = {\n form: Object.entries(state).reduce(\n (acc: { [key: string]: BaseControl<unknown> }, [key, control]) => {\n return {\n ...acc,\n [key]: Object.entries(control)\n .filter(([key]) => !Object.keys(DEFAULT_HUB2_FIELDS).includes(key))\n .reduce(\n (acc: BaseControl<unknown>, [key, value]) => ({ ...acc, [key]: value as unknown }),\n {} as BaseControl<unknown>,\n ),\n };\n },\n {},\n ),\n } as BaseFormState<FormValue>;\n\n return createReactable<FormValue, CustomReducers>(baseFormState, options);\n};\n\ntype CustomReducerActionTypes<T extends Record<string, CustomReducer>> = {\n [K in keyof T as `${K & string}`]: `${K & string}`;\n};\n\ntype FormActionTypes = {\n updateValues: 'updateValues';\n addControl: 'addControl';\n pushControl: 'pushControl';\n removeControl: 'removeControl';\n markControlAsPristine: 'markControlAsPristine';\n markControlAsTouched: 'markControlAsTouched';\n markControlAsUntouched: 'markControlAsUntouched';\n resetControl: 'resetControl';\n};\n\ntype ActionTypes<T extends Record<string, CustomReducer<any>>> = CustomReducerActionTypes<T> &\n FormActionTypes;\n\nconst createReactable = <FormValue, T extends Record<string, CustomReducer<FormValue>>>(\n initialBaseState: BaseFormState<FormValue>,\n options: RxFormOptions<T> = {},\n initialFormState?: Form<FormValue>,\n): Reactable<\n Form<FormValue>,\n { [K in keyof T]: ActionCreatorTypeFromCustomReducer<T[K]> } & RxFormActions & DestroyAction,\n ActionTypes<T> & { destroy: 'destroy' }\n> => {\n const providers = {\n normalizers: { ...options.providers?.normalizers },\n validators: { ...Validators, ...options.providers?.validators },\n asyncValidators: { ...options.providers?.asyncValidators },\n };\n\n const { reducers, debug, name, ...otherOptions } = options;\n\n const customReducers = Object.entries(reducers || ({} as T)).reduce((acc, [key, _case]) => {\n const _reducer = typeof _case === 'function' ? _case : _case.reducer;\n const effects = typeof _case === 'function' ? [] : _case.effects;\n\n return {\n ...acc,\n [key as keyof T]: {\n reducer: ({ form }: BaseFormState<FormValue>, action: Action<any>) => {\n return _reducer(reducerTools(providers), { form }, action);\n },\n effects,\n },\n };\n }, {});\n\n const [hub1State$, hub1Actions, hub1Actions$] = RxBuilder({\n initialState: initialBaseState,\n name: `Stage 1 ${name ? name : 'rxForm'}`,\n debug,\n reducers: {\n updateValues: (state, action: Action<UpdateValuesPayload<unknown>>) =>\n updateValues(state, action, providers),\n removeControl: (state, action: Action<ControlRef>) => removeControl(state, action, providers),\n addControl: (state, action: Action<AddControlPayload>) =>\n addControl(state, action, providers),\n pushControl: (state, action: Action<AddControlPayload>) =>\n pushControl(state, action, providers),\n resetControl: (state, action: Action<ControlRef>) => resetControl(state, action, providers),\n markControlAsPristine: (state, action: Action<ControlRef>) =>\n markControlAsPristine(state, action),\n markControlAsTouched: (state, action: Action<MarkTouchedPayload>) =>\n markControlAsTouched(state, action),\n markControlAsUntouched: (state, action: Action<ControlRef>) =>\n markControlAsUntouched(state, action),\n ...customReducers,\n },\n ...otherOptions,\n });\n\n const [state$, hub2Actions] = RxBuilder({\n sources: [buildHub2Source(hub1State$, initialBaseState).pipe(skip(initialFormState ? 1 : 0))],\n initialState: initialFormState || null,\n name: `Stage 2 ${name ? name : 'rxForm'}`,\n debug,\n reducers: {\n formChange,\n asyncValidationEffect: {\n reducer: (state) => state,\n effects: (control: BaseControl<unknown>) => ({\n key: control.key,\n effects: getScopedEffectsForControl(control, providers),\n }),\n },\n asyncValidation,\n asyncValidationResponse,\n },\n });\n\n const destroy = () => {\n hub1Actions.destroy();\n hub2Actions.destroy();\n };\n\n const actions = { ...hub1Actions, destroy } as {\n [K in keyof T]: ActionCreatorTypeFromCustomReducer<T[K]>;\n } & RxFormActions &\n DestroyAction;\n\n return [\n state$.pipe(filter((form) => form !== null)) as Observable<Form<FormValue>>,\n actions,\n hub1Actions$ as ActionObservableWithTypes<ActionTypes<T> & { destroy: 'destroy' }>,\n ];\n};\n","import { FormControl, Form, BaseForm, BaseControl } from '../Models/Controls';\nimport { ControlRef } from '../Models/ControlRef';\nimport { getControl } from './getControl';\nimport { getFormKey } from './getFormKey';\n\nexport const getArrayItems = <T extends BaseForm<unknown> | Form<unknown>>(\n controlRef: ControlRef,\n form: T,\n): T extends BaseForm<unknown> ? BaseControl<unknown>[] : FormControl<unknown>[] => {\n const control = getControl(controlRef, form);\n if (!Array.isArray(control.config.controls)) {\n throw `${controlRef.join('.')} is not a Form Array control`;\n }\n\n const result = (control.value as unknown[]).map(\n (_, index) => form[getFormKey(controlRef.concat(index))],\n );\n\n return result as T extends BaseForm<unknown> ? BaseControl<unknown>[] : FormControl<unknown>[];\n};\n"],"names":["hasErrors"],"mappings":"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","x_google_ignoreList":[2]}
|