UNPKG

@data-driven-forms/react-form-renderer

Version:

React Form Renderer. Data Driven Forms converts JSON form definitions into fully functional React forms.

82 lines 3.77 kB
"use strict"; var __assign = (this && this.__assign) || function () { __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; }; return __assign.apply(this, arguments); }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); var isExtendedMapperComponent = function (binding) { return typeof binding === 'object' && binding !== null && Object.prototype.hasOwnProperty.call(binding, 'component'); }; var prepareComponentProps = function (_a) { var component = _a.component, rest = _a.rest, componentMapper = _a.componentMapper, actionMapper = _a.actionMapper; var componentProps = __assign({ component: component }, rest); var componentBinding = componentMapper[component]; var Component; if (isExtendedMapperComponent(componentBinding)) { var bindingComponent = componentBinding.component, mapperProps_1 = __rest(componentBinding, ["component"]); Component = bindingComponent; componentProps = __assign(__assign(__assign(__assign({}, mapperProps_1), componentProps), (mapperProps_1.actions && rest.actions ? { actions: __assign(__assign({}, mapperProps_1.actions), rest.actions) } : {})), (mapperProps_1.resolveProps && rest.resolveProps ? { resolveProps: function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return (__assign(__assign({}, mapperProps_1.resolveProps.apply(mapperProps_1, args)), rest.resolveProps.apply(rest, args))); }, } : {})); } else { Component = componentBinding; } /** * Map actions to props */ var overrideProps = {}; var mergedResolveProps; // new object has to be created because of references if (componentProps.actions && actionMapper) { Object.keys(componentProps.actions).forEach(function (prop) { var _a = componentProps.actions[prop], action = _a[0], args = _a.slice(1); overrideProps[prop] = actionMapper[action].apply(actionMapper, args); }); // Merge componentProps resolve props and actions resolve props if (componentProps.resolveProps && overrideProps.resolveProps) { mergedResolveProps = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return (__assign(__assign({}, componentProps.resolveProps.apply(componentProps, args)), overrideProps.resolveProps.apply(overrideProps, args))); }; } // do not pass actions object to components delete componentProps.actions; } return { componentProps: componentProps, overrideProps: overrideProps, mergedResolveProps: mergedResolveProps, Component: Component, }; }; exports.default = prepareComponentProps; //# sourceMappingURL=prepare-component-props.js.map