UNPKG

yarfl

Version:

Yet Another Redux Forms Library

91 lines 4.26 kB
var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; import { combineReducers, compose } from 'redux'; import ThunkFactory from './actions/ThunkFactory'; import { connectDirectly } from './connect'; import { FormProviderComponent } from './FormProvider'; import { checkConfigs } from './helpers/checkers'; import { mergeDeep } from './helpers/utils'; import { registerCustomRules, reigsterErrorMessages } from './helpers/validator'; import { initializeFormState } from './initializeState'; import { createReducer } from './reducers'; export function init() { var configs = []; for (var _i = 0; _i < arguments.length; _i++) { configs[_i] = arguments[_i]; } checkConfigs(configs); var forms = configs.map(initForm); var mergedForms = forms.reduce(function (acc, curr) { var _a, _b, _c, _d, _e; // tslint:disable-next-line:no-shadowed-variable var initialState = curr.initialState, reducer = curr.reducer, formProvider = curr.formProvider, config = curr.config, c = curr.connect, actionCreators = curr.actionCreators; var name = config.name; return mergeDeep(acc, { initialState: initialState, reducers: (_a = {}, _a[name] = reducer, _a), formProviders: (_b = {}, _b[name] = formProvider, _b), config: (_c = {}, _c[name] = config, _c), connectors: (_d = {}, _d[name] = c, _d), actionCreators: (_e = {}, _e[name] = actionCreators, _e), }); }, {}); var _a = mergedForms, reducers = _a.reducers, connectors = _a.connectors, formProviders = _a.formProviders; var connect = compose.apply(void 0, Object.values(connectors)); Object.entries(connectors).forEach(function (_a) { var key = _a[0], connector = _a[1]; connect[key] = connector; }); // tslint:disable-next-line:variable-name var FormProvider = connect(FormProviderComponent); Object.entries(formProviders).forEach(function (_a) { var key = _a[0], formProvider = _a[1]; FormProvider[key] = formProvider; }); return { initialState: mergedForms.initialState, config: mergedForms.config, connect: connect, reducer: combineReducers(reducers), FormProvider: FormProvider, actionCreators: mergedForms.actionCreators, }; } var initForm = function (config) { var _a; var customRules = config.customRules, errorMessages = config.errorMessages; var isAsync = customRules && customRules.length ? registerCustomRules(customRules) : false; if (errorMessages) { reigsterErrorMessages(errorMessages); } var configWithDefaults = addDefaultsToConfig(config); var initialFormState = initializeFormState(configWithDefaults, isAsync); var reducer = createReducer(configWithDefaults, initialFormState); var connect = connectDirectly(configWithDefaults); var formProvider = connect(FormProviderComponent); // TODO: include option to return selectors var actionCreators = new ThunkFactory(configWithDefaults).getThunks(); var initialState = (_a = {}, _a[config.name] = initialFormState, _a); return { initialState: initialState, reducer: reducer, connect: connect, formProvider: formProvider, config: configWithDefaults, actionCreators: actionCreators, }; }; var addDefaultsToConfig = function (config) { return __assign({ // useLang?: string; method: 'POST', customRules: [], errorMessages: {}, validateOnInit: true, validateOnFocus: false, validateOnBlur: true, validateOnChange: true, validateOnClear: true, validateOnReset: true, validateOnAdd: true, validateOnDelete: true, showErrorsOnInit: false, showErrorsOnFocus: false, showErrorsOnBlur: true, showErrorsOnChange: false, showErrorsOnClear: false, showErrorsOnReset: false, autoParseNumbers: true, skipDefaults: false, mapState: function (state) { return state[config.name]; } }, config); }; //# sourceMappingURL=init.js.map