@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
JavaScript
;
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