@psytech/react-render-engine
Version:
It is a server-driven client-side rendering system built with react which allows to render interfaces using templatised input data made up of individual template layout elements & styles received from the server-side.
67 lines (54 loc) • 1.82 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _Text = _interopRequireDefault(require("./Text"));
var _Image = _interopRequireDefault(require("./Image"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _Container = _interopRequireDefault(require("./Container"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
//IMPORTING MODULES/PACKAGES
/**
* FUNCTION: Child COMPONENT
* FUNCTIONALITY : RENDERS A CHILD COMPONENT
* @param {*} props PROPERTIES OF THE CHILD COMPONENT
* @returns <Child/> (JSX)
*/
const Child = props => {
//VARIABLES
//GETTING PROP VALUES
const id = props.id;
const template = props.template;
const inputStyle = props.inputStyle; //RETURNING APPROPRIATE COMPONENT BASED ON TYPE
if (template.element[id].type === "container") {
return /*#__PURE__*/_react.default.createElement(_Container.default, {
id: id,
template: template,
inputStyle: inputStyle
});
} else if (template.element[id].type === "image") {
return /*#__PURE__*/_react.default.createElement(_Image.default, {
id: id,
template: template,
inputStyle: inputStyle
});
} else if (template.element[id].type === "text") {
return /*#__PURE__*/_react.default.createElement(_Text.default, {
id: id,
template: template,
inputStyle: inputStyle
});
}
}; //DEFINING DEFAULT PROPS
Child.defaultProps = {
inputStyle: {}
}; //DEFINING PROP TYPES
Child.propTypes = {
id: _propTypes.default.string.isRequired,
template: _propTypes.default.object.isRequired,
inputStyle: _propTypes.default.object
};
var _default = Child;
exports.default = _default;