@skele/classic
Version:
Skele is an architectural framework that assists with building data-driven apps with React or React Native.
1 lines • 4.26 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var R=_interopRequireWildcard(require("ramda"));var _immutable=_interopRequireDefault(require("immutable"));var _react=_interopRequireDefault(require("react"));var _propTypes=_interopRequireDefault(require("prop-types"));var _core=require("@skele/core");var _memoizeOne=_interopRequireDefault(require("../impl/memoize-one"));var _jsxFileName="/Users/bevkoski/code/skele/packages/classic/src/ui/ElementView.js";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj;}else{var newObj={};if(obj!=null){for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key)){var desc=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):{};if(desc.get||desc.set){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}}newObj.default=obj;return newObj;}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor;}function _possibleConstructorReturn(self,call){if(call&&(typeof call==="object"||typeof call==="function")){return call;}return _assertThisInitialized(self);}function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return self;}function _getPrototypeOf(o){_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o);};return _getPrototypeOf(o);}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function");}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});if(superClass)_setPrototypeOf(subClass,superClass);}function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(o,p){o.__proto__=p;return o;};return _setPrototypeOf(o,p);}var _default=R.curry(function(kind,Component,runtime){var _class,_temp;var globalUIFor=runtime.uiFor,system=runtime.system;var dispatchFor=(0,_memoizeOne.default)(function(element){var focused=system.focusOn(element._keyPath);return focused.dispatch.bind(focused);});return _temp=_class=function(_React$Component){_inherits(_class,_React$Component);function _class(props){var _this;_classCallCheck(this,_class);_this=_possibleConstructorReturn(this,_getPrototypeOf(_class).call(this,props));_this._uiFor=function(path){var reactKey=arguments.length>1&&arguments[1]!==undefined?arguments[1]:undefined;var element=_this.props.element;var sub;if(Array.isArray(path)){sub=element.getIn(path);}else{sub=element.get(path);}return globalUIFor(sub,reactKey);};return _this;}_createClass(_class,[{key:"shouldComponentUpdate",value:function shouldComponentUpdate(nextProps){var current=this.props.element;var next=nextProps.element;if(current!=null&&next==null||current==null&&next!=null){return true;}if(current.deref)current=current.deref();if(next.deref)next=next.deref();return!_immutable.default.is(current,next);}},{key:"render",value:function render(){var dispatch=dispatchFor(this.props.element);return _react.default.createElement(Component,{element:this.props.element,dispatch:dispatch,uiFor:this._uiFor,__source:{fileName:_jsxFileName,lineNumber:68}});}}]);return _class;}(_react.default.Component),_class.propTypes={element:_propTypes.default.object.isRequired},_class.contextTypes={store:_propTypes.default.object},_class.displayName="ElementView["+_core.data.canonical(kind).toJS()+"]",_temp;});exports.default=_default;