UNPKG

dom-mousemove-dispatcher

Version:
143 lines (120 loc) 4.5 kB
var objectCreate = void 0; if (typeof Object.create != 'function') { objectCreate = function (undefined) { var Temp = function Temp() {}; return function (prototype, propertiesObject) { if (prototype !== Object(prototype) && prototype !== null) { throw TypeError('Argument must be an object, or null'); } Temp.prototype = prototype || {}; var result = new Temp(); Temp.prototype = null; if (propertiesObject !== undefined) { Object.defineProperties(result, propertiesObject); } // to imitate the case of Object.create(null) if (prototype === null) { result.__proto__ = null; } return result; }; }(); } else { objectCreate = Object.create; } var objectCreate$1 = objectCreate; var mouseEventProps = ['altKey', 'button', 'buttons', 'clientX', 'clientY', 'ctrlKey', 'metaKey', 'movementX', 'movementY', 'offsetX', 'offsetY', 'pageX', 'pageY', 'region', 'relatedTarget', 'screenX', 'screenY', 'shiftKey', 'which', 'x', 'y']; function createDispatcher(element) { var defaultSettings = { screenX: 0, screenY: 0, clientX: 0, clientY: 0, ctrlKey: false, shiftKey: false, altKey: false, metaKey: false, button: 0, buttons: 1, relatedTarget: null, region: null }; if (element !== undefined) { element.addEventListener('mousemove', onMove); } function onMove(e) { for (var i = 0; i < mouseEventProps.length; i++) { defaultSettings[mouseEventProps[i]] = e[mouseEventProps[i]]; } } var dispatch = function () { if (MouseEvent) { return function m1(element, initMove, data) { var evt = new MouseEvent('mousemove', createMoveInit(defaultSettings, initMove)); //evt.dispatched = 'mousemove'; setSpecial(evt, data); return element.dispatchEvent(evt); }; } else if (typeof document.createEvent === 'function') { return function m2(element, initMove, data) { var settings = createMoveInit(defaultSettings, initMove); var evt = document.createEvent('MouseEvents'); evt.initMouseEvent("mousemove", true, //can bubble true, //cancelable window, //view 0, //detail settings.screenX, //0, //screenX settings.screenY, //0, //screenY settings.clientX, //80, //clientX settings.clientY, //20, //clientY settings.ctrlKey, //false, //ctrlKey settings.altKey, //false, //altKey settings.shiftKey, //false, //shiftKey settings.metaKey, //false, //metaKey settings.button, //0, //button settings.relatedTarget //null //relatedTarget ); //evt.dispatched = 'mousemove'; setSpecial(evt, data); return element.dispatchEvent(evt); }; } else if (typeof document.createEventObject === 'function') { return function m3(element, initMove, data) { var evt = document.createEventObject(); var settings = createMoveInit(defaultSettings, initMove); for (var name in settings) { evt[name] = settings[name]; } //evt.dispatched = 'mousemove'; setSpecial(evt, data); return element.dispatchEvent(evt); }; } }(); function destroy() { if (element) element.removeEventListener('mousemove', onMove, false); defaultSettings = null; } return { destroy: destroy, dispatch: dispatch }; } function createMoveInit(defaultSettings, initMove) { initMove = initMove || {}; var settings = objectCreate$1(defaultSettings); for (var i = 0; i < mouseEventProps.length; i++) { if (initMove[mouseEventProps[i]] !== undefined) settings[mouseEventProps[i]] = initMove[mouseEventProps[i]]; } return settings; } function setSpecial(e, data) { console.log('data ', data); e.data = data || {}; e.dispatched = 'mousemove'; } /* http://marcgrabanski.com/simulating-mouse-click-events-in-javascript/ */ export default createDispatcher; //# sourceMappingURL=bundle.es.js.map