framework-entersol-web
Version:
Framework based on bootstrap 5
24 lines • 9.56 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _react=_interopRequireDefault(require("react"));var _reactRouterDom=require("react-router-dom");var _htmlReactParser=_interopRequireWildcard(require("html-react-parser"));var _deepMerge=_interopRequireDefault(require("./functions/deep-merge"));var _icons=_interopRequireDefault(require("./media/icons"));var _components=_interopRequireDefault(require("./components"));var _excluded=["component","content","placeholder","label","message","errorMessage","managerName","wrapperClasses"];function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?t:r})(e)}function _interopRequireWildcard(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=_typeof(e)&&"function"!=typeof e)return{"default":e};var t=_getRequireWildcardCache(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u]}return n["default"]=e,t&&t.set(e,n),n}function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function _objectWithoutProperties(e,t){if(null==e)return{};var o,r,i=_objectWithoutPropertiesLoose(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)o=n[r],-1===t.indexOf(o)&&{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}function _objectWithoutPropertiesLoose(r,e){if(null==r)return{};var t={};for(var n in r)if({}.hasOwnProperty.call(r,n)){if(-1!==e.indexOf(n))continue;t[n]=r[n]}return t}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)({}).hasOwnProperty.call(t,r)&&(n[r]=t[r])}return n},_extends.apply(null,arguments)}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o)}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}/**
* Clase utilizada para generar contenido dinámico en React a partir de una estructura de datos JSON.
*
* @class JsonRender
*/var JsonRender=exports["default"]=/*#__PURE__*/function(){/**
* Crea una instancia de JsonRender.
* @param {Object} props - Las propiedades del componente.
* @param {Object} mutations - Las mutaciones para las secciones.
*/function JsonRender(props,mutations){var _this=this;_classCallCheck(this,JsonRender);/**
* Opciones para el análisis del contenido HTML.
* @type {Object}
*/_defineProperty(this,"parseOpts",{replace:function replace(domNode){var C7tReplace;switch(domNode.name){case"navlink":C7tReplace=_reactRouterDom.NavLink;break;case"a":if(!domNode.attribs.to&&domNode.attribs.href)return;C7tReplace=_reactRouterDom.Link;break;case"icons":C7tReplace=_icons["default"];domNode.attribs.inline=domNode.attribs.inline==="false"?false:true;break;case"textarea":case"input":domNode.defaultValue=domNode.value;domNode.defaultChecked=domNode.checked;delete domNode.value;delete domNode.checked;default:return}Object.keys(domNode).forEach(function(k){if(k.match(/^on[A-Z]/)){domNode[k]=_this.props[k]}});return/*#__PURE__*/_react["default"].createElement(C7tReplace,_extends({},(0,_htmlReactParser.attributesToProps)(domNode.attribs),{children:(0,_htmlReactParser.domToReact)(domNode.children,_this.parseOpts)}))}});this.props=props;this.mutations=mutations;this.sections=this.sections.bind(this);this.buildContent=this.buildContent.bind(this)}/**
* Construye el contenido basado en la estructura de datos proporcionada.
* @param {any} content - El contenido a construir.
* @param {number} index - El índice del contenido.
* @returns {React.Component|React.Fragment|boolean} - El componente construido.
*/return _createClass(JsonRender,[{key:"buildContent",value:function buildContent(content,index){var _this2=this;if(!content)return false;if(typeof content==="number"){return content}else if(typeof content==="string"){return/*#__PURE__*/_react["default"].createElement(_react["default"].Fragment,{key:content.name||index},(0,_htmlReactParser["default"])(content,this.parseOpts))}else if(/*#__PURE__*/_react["default"].isValidElement(content)){try{content.key=content.name||index}catch(error){}return content}else if(Array.isArray(content))return content.map(this.buildContent);if(Array.isArray(content.name))content.name=content.name.join("-");if(_typeof(content)==="object"&&typeof content.name!=="string")return Object.keys(content).map(function(name,i){return _this2.buildContent(_objectSpread({name:name},content[name]),i)});return this.sections(content,index)}/**
* Construye una sección basada en la información proporcionada.
* @param {Object} sectionRaw - Los datos de la sección.
* @param {number} i - El índice de la sección.
* @returns {React.Component|boolean} - El componente de la sección construido.
*/},{key:"sections",value:function sections(sectionRaw,i){if(typeof this.mutations==="function"){var m=this.mutations(sectionRaw.name,sectionRaw)||{};//Si la mutacion contiene elementos react, hacer un deepMerge truena con loop infinito
Object.assign(sectionRaw,m)}if(typeof sectionRaw.active==="boolean"&&!sectionRaw.active)return false;var componentName=sectionRaw.component,content=sectionRaw.content,placeholder=sectionRaw.placeholder,label=sectionRaw.label,message=sectionRaw.message,errorMessage=sectionRaw.errorMessage,managerName=sectionRaw.managerName,wrapperClasses=sectionRaw.wrapperClasses,section=_objectWithoutProperties(sectionRaw,_excluded);var _this$props=this.props,location=_this$props.location,match=_this$props.match,_this$props$childrenI=_this$props.childrenIn,childrenIn=_this$props$childrenI===void 0?this.childrenIn:_this$props$childrenI,history=_this$props.history,children=_this$props.children;var Component=_components["default"][componentName]||_components["default"].Component;var componentProps=_objectSpread(_objectSpread({},section),{},{managerName:managerName||this.props.name,label:this.buildContent(label),placeholder:this.buildContent(placeholder),message:this.buildContent(message),errorMessage:this.buildContent(errorMessage),location:location,match:match,history:history});if(Component.dontBuildContent)componentProps.content=content;if(!Component.dontBuildContent&&content&&childrenIn===section.name){componentProps.children=/*#__PURE__*/_react["default"].createElement(_react["default"].Fragment,null,this.buildContent(content),children)}else if(!Component.dontBuildContent&&content){componentProps.children=this.buildContent(content)}else if(childrenIn===section.name){componentProps.children=children}var cnSection=[componentProps.name+"-section"];if(this.props.test)cnSection.push("test-section-wrapper");if(this.props.wrapperClasses)cnSection.push(this.props.wrapperClasses);if(wrapperClasses)cnSection.push(wrapperClasses);var exclusionSec=["NavLink","Image","Link","Icons","Action","DropdownButtonContainer","ModalButtonContainer","DropdownItem"].includes(componentName);var Wrapper=componentProps.wrapper===false?false:componentProps.wrapper||Component.wrapper||"section";if(!Wrapper||exclusionSec||componentProps.tag){if(this.props.test){if(!componentProps.style)componentProps.style={};componentProps.style.border="1px solid yellow"}return/*#__PURE__*/_react["default"].createElement(Component,_extends({key:componentProps.name||i},componentProps))}return/*#__PURE__*/_react["default"].createElement(Wrapper,{key:componentProps.name||i,className:cnSection.flat().join(" ")},/*#__PURE__*/_react["default"].createElement(Component,componentProps))}}])}();
//# sourceMappingURL=json-render.js.map