UNPKG

spur-events

Version:

Cross-browser & cross-platform event system based on the PointerEvent API.

165 lines (135 loc) 6.91 kB
var React = require('react'); var ReactDOM = require('react-dom'); var SpurEvents = require('../index.js'); var addListener = SpurEvents.addListener; var removeListener = SpurEvents.removeListener; var removeListenerById = SpurEvents.removeListenerById; var removeAllListeners = SpurEvents.removeAllListeners; var PointerEvent = SpurEvents.PointerEvent; var SpurEvent = SpurEvents.SpurEvent; var dispatchEvent = SpurEvents.dispatchEvent; require('./styles.less'); var PointerTest = React.createClass({ onPointerEnter: function (e) { e.currentTarget.classList.add('hover'); console.log('enter', e.currentTarget) }, onPointerLeave: function (e) { e.currentTarget.classList.remove('hover'); console.log('leave', e.currentTarget.className, 'is active', e.buttons !== 0) }, onPointerDown: function (e) { console.log('pointer down', e.target.className); }, onPointerUp: function (e) { console.log('pointer up', e.target.className); }, onPointerOut: function (e) { console.log('pointer out', e.target.className); }, onPointerOver: function (e) { console.log('pointer over', e.target.className); }, onPointer: function (e) { console.log(e.type, e.target.className); }, componentDidMount: function () { // var start; // function checkPropagationtime() { // console.log('propagation time', (performance.now() - start)) // } // addListener(this.refs.lastLevel, 'pointerdown', function () { // start = performance.now(); // console.log('hit last level') // }, { context: this, capture: true }); addListener(window, 'pointermove', function (e) { e.preventDefault(); }); // this.refs.firstLevel.addEventListener('pointerout', this.onPointer); // this.refs.firstLevel.addEventListener('pointerover', this.onPointer); // this.refs.firstLevel.addEventListener('pointerup', this.onPointer); // this.refs.firstLevel.addEventListener('pointerdown', this.onPointer); // this.refs.firstLevel.addEventListener('pointerenter', this.onPointerEnter); // this.refs.firstLevel.addEventListener('pointerleave', this.onPointerLeave); // this.refs.secondLevelA.addEventListener('pointerenter', this.onPointerEnter); // this.refs.secondLevelA.addEventListener('pointerleave', this.onPointerLeave); // this.refs.secondLevelB.addEventListener('pointerenter', this.onPointerEnter); // this.refs.secondLevelB.addEventListener('pointerleave', this.onPointerLeave); // this.refs.lastLevel.addEventListener('pointerenter', this.onPointerEnter); // this.refs.lastLevel.addEventListener('pointerleave', this.onPointerLeave); addListener(this.refs.firstLevel, 'pointerout', this.onPointer, { context: this }); addListener(this.refs.firstLevel, 'pointerover', this.onPointer, { context: this }); addListener(this.refs.firstLevel, 'pointerup', this.onPointer, { context: this }); addListener(this.refs.firstLevel, 'pointerdown', this.onPointer, { context: this }); addListener(this.refs.firstLevel, 'pointerenter', this.onPointerEnter); addListener(this.refs.firstLevel, 'pointerleave', this.onPointerLeave); addListener(this.refs.secondLevelB, 'pointerenter', this.onPointerEnter); addListener(this.refs.secondLevelB, 'pointerleave', this.onPointerLeave); addListener(this.refs.secondLevelA, 'pointerenter', this.onPointerEnter, { id: 'test' }); addListener(this.refs.secondLevelA, 'pointerleave', this.onPointerLeave); addListener(this.refs.lastLevel, 'pointerenter', this.onPointerEnter); addListener(this.refs.lastLevel, 'pointerleave', this.onPointerLeave); // addListener(window, 'pointerdown', this.onPointerDown); this.refs.firstLevel.addEventListener('click', function () { console.log('click') }); addListener(this.refs.firstLevel, 'tap', function (e) { console.log('tap!', e); }); var event = new SpurEvent('tap'); event.target = this.refs.secondLevelB; event.bubbles = true; dispatchEvent(event); // var event = new PointerEvent('pointerdown'); // // event.target = this.refs.firstLevel; // dispatchEvent(event); // removeAllListeners(this.refs.secondLevelA, 'pointerenter'); // this.refs.lastLevel.addEventListener('pointerdown', function () { // start = performance.now(); // console.log('hit last level') // }, true); // this.refs.firstLevel.addEventListener('pointerout', this.onPointer); // this.refs.firstLevel.addEventListener('pointerover', this.onPointer); // this.refs.firstLevel.addEventListener('pointerup', this.onPointer); // this.refs.firstLevel.addEventListener('pointerdown', checkPropagationtime); // this.refs.firstLevel.addEventListener('pointerenter', this.onPointerEnter); // this.refs.firstLevel.addEventListener('pointerleave', this.onPointerLeave); // this.refs.secondLevelB.addEventListener('pointerenter', this.onPointerEnter); // this.refs.secondLevelB.addEventListener('pointerleave', this.onPointerLeave); // this.refs.secondLevelA.addEventListener('pointerenter', this.onPointerEnter); // this.refs.secondLevelA.addEventListener('pointerleave', this.onPointerLeave); // this.refs.secondLevelB.addEventListener('mouseout', function () { console.log('out') }, false); // this.refs.secondLevelB.addEventListener('mouseup', function () { console.log('up') }, false); // this.refs.secondLevelB.addEventListener('mousedown', function () { console.log('down') }, false); // this.refs.secondLevelB.addEventListener('mouseenter', function () { console.log('enter') }, false); // this.refs.secondLevelB.addEventListener('mouseleave', function () { console.log('leave') }, false); }, componentWillUnmount: function () { // this.DOMNode.removeListener(listenerType, this.onPointerDown); // removeListener(this.DOMNode, listenerType, this.onMouseDown); // removeListener(this.refs.firstLevel, listenerType, this.onMouseDown); // removeListener(this.refs.secondLevelA, 'pointerdown', this.onMouseDown); // removeListener(this.refs.secondLevelB, 'pointerenter', this.onPointerEnter); // removeListener(this.refs.secondLevelB, 'pointerleave', this.onPointerLeave); }, createChild: function (count) { if (count === 0) { return (<div ref='lastLevel'>test</div>); } return (<div>{this.createChild(count - 1)}</div>) }, render: function () { return ( <div className='pointer-test'> <div className='first-level' ref='firstLevel'> <div className='second-level a' ref='secondLevelA'> { this.createChild(10) } </div> <div className='second-level b' ref='secondLevelB'> </div> </div> </div> ); } }); module.exports = ReactDOM.render(<PointerTest />, document.getElementById('pointer-test'));