@skele/components
Version:
Skele custom components for React and React Native.
1 lines • 6.04 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _propTypes=_interopRequireDefault(require("prop-types"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==='function'){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable;}));}ownKeys.forEach(function(key){_defineProperty(target,key,source[key]);});}return target;}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}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 _get(target,property,receiver){if(typeof Reflect!=="undefined"&&Reflect.get){_get=Reflect.get;}else{_get=function _get(target,property,receiver){var base=_superPropBase(target,property);if(!base)return;var desc=Object.getOwnPropertyDescriptor(base,property);if(desc.get){return desc.get.call(receiver);}return desc.value;};}return _get(target,property,receiver||target);}function _superPropBase(object,property){while(!Object.prototype.hasOwnProperty.call(object,property)){object=_getPrototypeOf(object);if(object===null)break;}return object;}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);}function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return self;}var listeners='@@skele.internal/listeners';var lastEvent='@@skele.internal/lastEvent';var _default=function _default(eventDefinitons,OriginalComponent){var defs=normalizeEventDefinitions(eventDefinitons);var inChildContext=defs.filter(function(d){return d.inChildContext;});var Derived=function(_OriginalComponent){_inherits(Derived,_OriginalComponent);function Derived(props,context){var _this;_classCallCheck(this,Derived);_this=_possibleConstructorReturn(this,_getPrototypeOf(Derived).call(this,props,context));_this[listeners]={};defs.forEach(function(d){_this[listeners][d.name]=[];_this[d.addMethod]=_this[d.addMethod].bind(_assertThisInitialized(_assertThisInitialized(_this)));_this[d.removeMethod]=_this[d.removeMethod].bind(_assertThisInitialized(_assertThisInitialized(_this)));_this[d.notifyMethod]=_this[d.notifyMethod].bind(_assertThisInitialized(_assertThisInitialized(_this)));});return _this;}_createClass(Derived,[{key:"getChildContext",value:function getChildContext(){var _this2=this;var orig=_get(_getPrototypeOf(Derived.prototype),"getChildContext",this)&&_get(_getPrototypeOf(Derived.prototype),"getChildContext",this).call(this);if(inChildContext.length>0){var derived=_objectSpread({},orig);inChildContext.forEach(function(d){derived[d.addMethod]=_this2[d.addMethod];derived[d.removeMethod]=_this2[d.removeMethod];});return derived;}return orig;}}]);return Derived;}(OriginalComponent);Derived.displayName="WithListeners("+(OriginalComponent.displayName||OriginalComponent.name||'Component')+")";Derived.propTypes=OriginalComponent.propTypes;defs.forEach(function(d){Derived.prototype[d.addMethod]=function(callback){if(this[listeners][d.name].indexOf(callback===-1)){this[listeners][d.name].push(callback);d.notifiesWithLastEventOnAdd&&this[lastEvent]&&callback(this[lastEvent]);}};Derived.prototype[d.removeMethod]=function(callback){var index=this[listeners][d.name].indexOf(callback);if(index!==-1){this[listeners][d.name].splice(index,1);}};Derived.prototype[d.notifyMethod]=function(evt){this[listeners][d.name].forEach(function(callback){return callback(evt);});this[lastEvent]=evt;};});Derived.childContextTypes=_objectSpread({},OriginalComponent.childContextTypes);if(inChildContext.length>0){inChildContext.forEach(function(d){Derived.childContextTypes[d.addMethod]=_propTypes.default.func;Derived.childContextTypes[d.removeMethod]=_propTypes.default.func;});}return Derived;};exports.default=_default;function normalizeEventDefinitions(eventDefs){var defs=eventDefs;if(!Array.isArray(defs)){defs=[defs];}else if(defs==null){defs=[];}defs=defs.map(function(d){return typeof d==='string'?{name:d}:d;});defs.forEach(function(d){return d.name=capitalize(d.name);});defs=defs.map(function(d){return _objectSpread({inChildContext:false,notifiesWithLastEventOnAdd:false,addMethod:"add"+d.name+"Listener",removeMethod:"remove"+d.name+"Listener",notifyMethod:"notify"+d.name+"Listeners"},d);});return defs;}function capitalize(s){return s&&s[0].toUpperCase()+s.slice(1);}
;