dbl-components
Version:
Framework based on bootstrap 5
23 lines • 11.6 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.addExclusions=addExclusions;exports["default"]=void 0;var _react=_interopRequireDefault(require("react"));var _reactRouterDom=require("react-router-dom");var _htmlReactParser=_interopRequireWildcard(require("html-react-parser"));var _dblUtils=require("dbl-utils");var _icons=_interopRequireDefault(require("./media/icons"));var _components=_interopRequireDefault(require("./components"));var _excluded=["component","content","placeholder","label","message","errorMessage","managerName","wrapperClasses","wrapperStyle"];function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var o,i,f={__proto__:null,"default":e};if(null===e||"object"!=_typeof(e)&&"function"!=typeof e)return f;if(o=t?n:r){if(o.has(e))return o.get(e);o.set(e,f)}for(var _t in e)"default"!==_t&&{}.hasOwnProperty.call(e,_t)&&((i=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,_t))&&(i.get||i.set)?o(f,_t,i):f[_t]=e[_t]);return f})(e,t)}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 _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 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 _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)}function _toConsumableArray(r){return _arrayWithoutHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r)}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}var excludeSectionWrapper=["NavLink","Image","Link","Icons","SvgImports","Action","DropdownButtonContainer","ModalButtonContainer","DropdownItem"];function addExclusions(exclusion){excludeSectionWrapper.push.apply(excludeSectionWrapper,_toConsumableArray([exclusion].flat()))}/**
* 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,_objectSpread({},(0,_htmlReactParser.attributesToProps)(domNode.attribs)),(0,_htmlReactParser.domToReact)(domNode.children,_this.parseOpts))}});_defineProperty(this,"actualSections",[]);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)!=="object"){var translate=(0,_dblUtils.t)(content,this.props.context);var section=this.actualSections[this.actualSections.length-1];if(typeof translate==="number"||typeof translate==="boolean"){return(0,_dblUtils.formatValue)(translate,section)}else if(typeof translate==="string"){var parsed=(0,_htmlReactParser["default"])(translate,this.parseOpts);if(typeof parsed==="string")parsed=(0,_dblUtils.formatValue)(parsed,section);return/*#__PURE__*/_react["default"].createElement(_react["default"].Fragment,{key:[index||"0",section===null||section===void 0?void 0:section.name,(0,_dblUtils.hash)(translate)].filter(Boolean).join("-")},parsed)}}else if(/*#__PURE__*/_react["default"].isValidElement(content)){try{content.key=content.key||content.props.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(_typeof(content[name])!=="object"?content[name]:_objectSpread({name:name},content[name]),i)});this.actualSections.push(content);var builded=this.sections(content,index);this.actualSections.pop();return builded}/**
* 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.ElementType} - El componente construido.
*/},{key:"sections",value:function sections(sr,i){var _this3=this;var m=typeof this.mutations==="function"&&this.mutations(sr.name,sr)||{};if(m.style&&sr.style)m.style=(0,_dblUtils.deepMerge)({},sr.style,m.style);if(m._props&&sr._props)m._props=(0,_dblUtils.deepMerge)({},sr._props,m._props);var sectionRaw=Object.assign({},sr,m||{});if(sectionRaw.active===false)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,_sectionRaw$wrapperSt=sectionRaw.wrapperStyle,wrapperStyle=_sectionRaw$wrapperSt===void 0?{}:_sectionRaw$wrapperSt,section=_objectWithoutProperties(sectionRaw,_excluded);var _this$props=this.props,navigate=_this$props.navigate,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,children=_this$props.children;var Component=_components["default"][componentName]||_components["default"].Component;var extraBuilded=[Component.slots].flat().filter(Boolean).reduce(function(eb,key){var tmp=section[key];section[key]=null;delete section[key];eb[key]=_this3.buildContent(tmp);return eb},{});var componentProps=_objectSpread(_objectSpread(_objectSpread({},section),{},{managerName:managerName||this.props.name,label:this.buildContent(label),placeholder:this.buildContent(placeholder),message:this.buildContent(message),errorMessage:this.buildContent(errorMessage)},extraBuilded),{},{location:location,match:match,navigate:navigate});if(Component.dontBuildContent)componentProps.content=content;var childrenHere=(Array.isArray(childrenIn)?childrenIn.join("-"):childrenIn)===(Array.isArray(section.name)?section.name.join("-"):section.name);if(!Component.dontBuildContent&&content&&childrenHere){componentProps.children=/*#__PURE__*/_react["default"].createElement(_react["default"].Fragment,{},this.buildContent(content),children)}else if(!Component.dontBuildContent&&content){componentProps.children=this.buildContent(content)}else if(childrenHere){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=excludeSectionWrapper.includes(componentName);var Wrapper=componentProps.wrapper===false||Component.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,_objectSpread({key:componentProps.name||i},componentProps))}return/*#__PURE__*/_react["default"].createElement(Wrapper,{key:componentProps.name||i,className:cnSection.flat().join(" "),style:_objectSpread({"--component-name":"\"".concat(componentProps.name,"\"")},wrapperStyle)},/*#__PURE__*/_react["default"].createElement(Component,_objectSpread({},componentProps)))}}])}();
//# sourceMappingURL=json-render.js.map