diff --git a/package.json b/package.json index ec443d5..c5b4f6f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "preact-compat", - "version": "0.4.0", + "version": "0.5.0", "description": "A React compatibility layer for Preact", "main": "preact-compat.js", "scripts": { @@ -30,7 +30,9 @@ "chai": "^3.4.1", "eslint": "^1.9.0", "mocha": "^2.3.3", - "preact-render-to-string": "^1.2.0" + "preact-render-to-string": "^1.2.0", + "sinon": "^1.17.3", + "sinon-chai": "^2.8.0" }, "peerDependencies": { "preact": "^1.5.2 || ^2.0.0", diff --git a/preact-compat.js b/preact-compat.js index 85a0652..d525bdd 100644 --- a/preact-compat.js +++ b/preact-compat.js @@ -1,3 +1,3 @@ -'use strict';exports.__esModule = true;function _interopRequireDefault(obj){return obj && obj.__esModule?obj:{'default':obj};}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}var _proptypes=require('proptypes');var _proptypes2=_interopRequireDefault(_proptypes);var _preact=require('preact');var DEV=!process || !process.env || process.env.NODE_ENV !== 'production';var createElement=function createElement(){var vnode=_preact.h.apply(undefined,arguments);applyClassName(vnode);return vnode;};var applyClassName=function applyClassName(_ref){var attributes=_ref.attributes;if(!attributes)return;var cl=attributes.className || attributes['class'];if(cl)attributes.className = cl;};var extend=function extend(base){for(var _len=arguments.length,objs=Array(_len > 1?_len - 1:0),_key=1;_key < _len;_key++) {objs[_key - 1] = arguments[_key];}for(var i=0;i < objs.length;i++) {for(var key in objs[i]) {if(objs[i].hasOwnProperty(key)){var v=objs[i][key];if(v !== null && v !== undefined){base[key] = v;}}}}return base;};var findDOMNode=function findDOMNode(component){return component.base || component;};var Component=(function(_PreactComponent){_inherits(Component,_PreactComponent);function Component(){_classCallCheck(this,Component);for(var _len2=arguments.length,args=Array(_len2),_key2=0;_key2 < _len2;_key2++) {args[_key2] = arguments[_key2];}_PreactComponent.call.apply(_PreactComponent,[this].concat(args));this._stateUpdateCallbacks = [];}Component.prototype.getDOMNode = function getDOMNode(){return this.base;};Component.prototype.setState = function setState(state,callback){_PreactComponent.prototype.setState.call(this,state);if(typeof callback === 'function'){this._stateUpdateCallbacks.push(callback);callback();}};Component.prototype.componentWillReceiveProps = function componentWillReceiveProps(props){var defaultProps=this.defaultProps || this.constructor.defaultProps;if(defaultProps){props = extend({},defaultProps,props);}if(DEV){var propTypes=this.propTypes || this.constructor.propTypes;if(propTypes){for(var prop in propTypes) {if(propTypes.hasOwnProperty(prop)){var err=propTypes[prop](props,prop,this.constructor.name,'prop');if(err)throw err;}}}}};Component.prototype._render = function _render(){var _PreactComponent$prototype$_render;for(var _len3=arguments.length,args=Array(_len3),_key3=0;_key3 < _len3;_key3++) {args[_key3] = arguments[_key3];}var ret=(_PreactComponent$prototype$_render = _PreactComponent.prototype._render).call.apply(_PreactComponent$prototype$_render,[this].concat(args));if(this.props.ref && this.base.getAttribute('ref') !== this.props.ref){this.base.setAttribute('ref',this.props.ref);}var refs=this.base.querySelectorAll('[ref]');this.refs = {};for(var i=refs.length;i--;) {this.refs[refs[i].getAttribute('ref')] = refs[i]._component || refs[i];}var cb=this._stateUpdateCallbacks;if(cb){this._stateUpdateCallbacks = [];for(var i=0;i < cb.length;i++) {cb[i]();}}return ret;};return Component;})(_preact.Component);exports.PropTypes = _proptypes2['default'];exports.render = _preact.render;exports.createElement = createElement;exports.findDOMNode = findDOMNode;exports.Component = Component;exports['default'] = {PropTypes:_proptypes2['default'],render:_preact.render,createElement:createElement,findDOMNode:findDOMNode,Component:Component}; +'use strict';exports.__esModule = true;function _interopRequireDefault(obj){return obj && obj.__esModule?obj:{'default':obj};}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}var _proptypes=require('proptypes');var _proptypes2=_interopRequireDefault(_proptypes);var _preact=require('preact');var DEV=!process || !process.env || process.env.NODE_ENV !== 'production';var createElement=function createElement(){var vnode=_preact.h.apply(undefined,arguments);applyClassName(vnode);return vnode;};var applyClassName=function applyClassName(_ref){var attributes=_ref.attributes;if(!attributes)return;var cl=attributes.className || attributes['class'];if(cl)attributes.className = cl;};var extend=function extend(base){for(var _len=arguments.length,objs=Array(_len > 1?_len - 1:0),_key=1;_key < _len;_key++) {objs[_key - 1] = arguments[_key];}for(var i=0;i < objs.length;i++) {for(var key in objs[i]) {if(objs[i].hasOwnProperty(key)){var v=objs[i][key];if(v !== null && v !== undefined){base[key] = v;}}}}return base;};var findDOMNode=function findDOMNode(component){return component.base || component;};function F(){}var createClass=function createClass(obj){var cl=function cl(){Component.call(this);extend(this,obj);bindAll(this);};F.prototype = Component.prototype;cl.prototype = new F();cl.prototype.constructor = cl;return cl;};var bindAll=function bindAll(ctx){for(var i in ctx) {var v=ctx[i];if(typeof v === 'function' && !v.__bound){(ctx[i] = v.bind(ctx)).__bound = true;}}};var Component=(function(_PreactComponent){_inherits(Component,_PreactComponent);function Component(){_classCallCheck(this,Component);for(var _len2=arguments.length,args=Array(_len2),_key2=0;_key2 < _len2;_key2++) {args[_key2] = arguments[_key2];}_PreactComponent.call.apply(_PreactComponent,[this].concat(args));this._stateUpdateCallbacks = [];}Component.prototype.getDOMNode = function getDOMNode(){return this.base;};Component.prototype.setState = function setState(state,callback){_PreactComponent.prototype.setState.call(this,state);if(typeof callback === 'function'){this._stateUpdateCallbacks.push(callback);callback();}};Component.prototype.componentWillReceiveProps = function componentWillReceiveProps(props){var defaultProps=this.defaultProps || this.constructor.defaultProps;if(defaultProps){props = extend({},defaultProps,props);}if(DEV){var propTypes=this.propTypes || this.constructor.propTypes;if(propTypes){for(var prop in propTypes) {if(propTypes.hasOwnProperty(prop)){var err=propTypes[prop](props,prop,this.constructor.name,'prop');if(err)throw err;}}}}};Component.prototype._render = function _render(){var _PreactComponent$prototype$_render;for(var _len3=arguments.length,args=Array(_len3),_key3=0;_key3 < _len3;_key3++) {args[_key3] = arguments[_key3];}var ret=(_PreactComponent$prototype$_render = _PreactComponent.prototype._render).call.apply(_PreactComponent$prototype$_render,[this].concat(args));if(this.props.ref && this.base.getAttribute('ref') !== this.props.ref){this.base.setAttribute('ref',this.props.ref);}var refs=this.base.querySelectorAll('[ref]');this.refs = {};for(var i=refs.length;i--;) {this.refs[refs[i].getAttribute('ref')] = refs[i]._component || refs[i];}var cb=this._stateUpdateCallbacks;if(cb){this._stateUpdateCallbacks = [];for(var i=0;i < cb.length;i++) {cb[i]();}}return ret;};return Component;})(_preact.Component);exports.PropTypes = _proptypes2['default'];exports.render = _preact.render;exports.createClass = createClass;exports.createElement = createElement;exports.findDOMNode = findDOMNode;exports.Component = Component;exports['default'] = {PropTypes:_proptypes2['default'],render:_preact.render,createClass:createClass,createElement:createElement,findDOMNode:findDOMNode,Component:Component}; //# sourceMappingURL=preact-compat.js.map \ No newline at end of file diff --git a/preact-compat.js.map b/preact-compat.js.map index 452b826..904d155 100644 --- a/preact-compat.js.map +++ b/preact-compat.js.map @@ -1 +1 @@ -{"version":3,"sources":["preact-compat.js"],"names":[],"mappings":"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","file":"preact-compat.js","sourcesContent":["import PropTypes from 'proptypes';\nimport { render, h, Component as PreactComponent, hooks } from 'preact';\n\n\nconst DEV = !process || !process.env || process.env.NODE_ENV!=='production';\n\n\nlet createElement = (...args) => {\n\tlet vnode = h(...args);\n\tapplyClassName(vnode);\n\treturn vnode;\n};\n\n\nlet applyClassName = ({ attributes }) => {\n\tif (!attributes) return;\n\tlet cl = attributes.className || attributes.class;\n\tif (cl) attributes.className = cl;\n};\n\n\nlet extend = (base, ...objs) => {\n\tfor (let i=0; i component.base || component;\n\n\nclass Component extends PreactComponent {\n\tconstructor(...args) {\n\t\tsuper(...args);\n\t\tthis._stateUpdateCallbacks = [];\n\t}\n\n\tgetDOMNode() {\n\t\treturn this.base;\n\t}\n\n\tsetState(state, callback) {\n\t\tsuper.setState(state);\n\t\tif (typeof callback==='function') {\n\t\t\tthis._stateUpdateCallbacks.push(callback);\n\t\t\tcallback();\n\t\t}\n\t}\n\n\tcomponentWillReceiveProps(props) {\n\t\tlet defaultProps = this.defaultProps || this.constructor.defaultProps;\n\t\tif (defaultProps) {\n\t\t\tprops = extend({}, defaultProps, props);\n\t\t}\n\n\t\t// add proptype checking\n\t\tif (DEV) {\n\t\t\tlet propTypes = this.propTypes || this.constructor.propTypes;\n\t\t\tif (propTypes) {\n\t\t\t\tfor (let prop in propTypes) {\n\t\t\t\t\tif (propTypes.hasOwnProperty(prop)) {\n\t\t\t\t\t\tlet err = propTypes[prop](props, prop, this.constructor.name, 'prop');\n\t\t\t\t\t\tif (err) throw err;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t_render(...args) {\n\t\tlet ret = super._render(...args);\n\n\t\tif (this.props.ref && this.base.getAttribute('ref')!==this.props.ref) {\n\t\t\tthis.base.setAttribute('ref', this.props.ref);\n\t\t}\n\n\t\t// add refs\n\t\tlet refs = this.base.querySelectorAll('[ref]');\n\t\tthis.refs = {};\n\t\tfor (let i=refs.length; i--; ) {\n\t\t\tthis.refs[refs[i].getAttribute('ref')] = refs[i]._component || refs[i];\n\t\t}\n\n\t\tlet cb = this._stateUpdateCallbacks;\n\t\tif (cb) {\n\t\t\tthis._stateUpdateCallbacks = [];\n\t\t\tfor (let i=0; i {\n\tlet vnode = h(...args);\n\tapplyClassName(vnode);\n\treturn vnode;\n};\n\n\nlet applyClassName = ({ attributes }) => {\n\tif (!attributes) return;\n\tlet cl = attributes.className || attributes.class;\n\tif (cl) attributes.className = cl;\n};\n\n\nlet extend = (base, ...objs) => {\n\tfor (let i=0; i component.base || component;\n\n\nfunction F(){}\n\nlet createClass = obj => {\n\tlet cl = function() {\n\t\tComponent.call(this);\n\t\textend(this, obj);\n\t\tbindAll(this);\n\t};\n\tF.prototype = Component.prototype;\n\tcl.prototype = new F();\n\tcl.prototype.constructor = cl;\n\treturn cl;\n};\n\nlet bindAll = ctx => {\n\tfor (let i in ctx) {\n\t\tlet v = ctx[i];\n\t\tif (typeof v==='function' && !v.__bound) {\n\t\t\t(ctx[i] = v.bind(ctx)).__bound = true;\n\t\t}\n\t}\n};\n\n\nclass Component extends PreactComponent {\n\tconstructor(...args) {\n\t\tsuper(...args);\n\t\tthis._stateUpdateCallbacks = [];\n\t}\n\n\tgetDOMNode() {\n\t\treturn this.base;\n\t}\n\n\tsetState(state, callback) {\n\t\tsuper.setState(state);\n\t\tif (typeof callback==='function') {\n\t\t\tthis._stateUpdateCallbacks.push(callback);\n\t\t\tcallback();\n\t\t}\n\t}\n\n\tcomponentWillReceiveProps(props) {\n\t\tlet defaultProps = this.defaultProps || this.constructor.defaultProps;\n\t\tif (defaultProps) {\n\t\t\tprops = extend({}, defaultProps, props);\n\t\t}\n\n\t\t// add proptype checking\n\t\tif (DEV) {\n\t\t\tlet propTypes = this.propTypes || this.constructor.propTypes;\n\t\t\tif (propTypes) {\n\t\t\t\tfor (let prop in propTypes) {\n\t\t\t\t\tif (propTypes.hasOwnProperty(prop)) {\n\t\t\t\t\t\tlet err = propTypes[prop](props, prop, this.constructor.name, 'prop');\n\t\t\t\t\t\tif (err) throw err;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t_render(...args) {\n\t\tlet ret = super._render(...args);\n\n\t\tif (this.props.ref && this.base.getAttribute('ref')!==this.props.ref) {\n\t\t\tthis.base.setAttribute('ref', this.props.ref);\n\t\t}\n\n\t\t// add refs\n\t\tlet refs = this.base.querySelectorAll('[ref]');\n\t\tthis.refs = {};\n\t\tfor (let i=refs.length; i--; ) {\n\t\t\tthis.refs[refs[i].getAttribute('ref')] = refs[i]._component || refs[i];\n\t\t}\n\n\t\tlet cb = this._stateUpdateCallbacks;\n\t\tif (cb) {\n\t\t\tthis._stateUpdateCallbacks = [];\n\t\t\tfor (let i=0; i