UNPKG

remx

Version:
52 lines (37 loc) 1.8 kB
Object.defineProperty(exports,"__esModule",{value:true});exports.observer=undefined;var _jsxFileName='src/es6Remx/observer.js',_arguments=arguments;var _react=require('react');var _react2=_interopRequireDefault(_react); var _mobxReact=require('mobx-react'); var _globalState=require('./globalState'); var _noop=require('../utils/noop');function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} var ReactForwardRefSymbol= typeof _react.forwardRef==='function'&&(0,_react.forwardRef)(_noop.noop).$$typeof; var isFunctionComponent=function isFunctionComponent(component){return( typeof component==='function'&&( !component.prototype||!component.prototype.render)&& !component.isReactClass&& !Object.prototype.isPrototypeOf.call(_react.Component,component));};exports.default= null; var observer=exports.observer=function observer(component){ if( ReactForwardRefSymbol&& component.$$typeof===ReactForwardRefSymbol) { if(typeof component.render!=='function'){ throw new TypeError('render property of ForwardRef was not a function'); } var render=makeRenderTrackable(component.render); return(0,_react.forwardRef)(function(){return( _react2.default.createElement(_mobxReact.Observer,{__source:{fileName:_jsxFileName,lineNumber:33}}, function(){return render.apply(undefined,_arguments);}));}); } if(isFunctionComponent(component)){ return(0,_mobxReact.observer)(makeRenderTrackable(component)); } component.prototype.render=makeRenderTrackable(component.prototype.render); return(0,_mobxReact.observer)(component); }; var makeRenderTrackable=function makeRenderTrackable(render){return function(){ (0,_globalState.incrementRenderingObserverDepth)(); var result=render.apply(this,arguments); (0,_globalState.decrementRenderingObserverDepth)(); return result; };};