dom-mousemove-dispatcher
Version:
Fire a mousemove on the DOM
143 lines (120 loc) • 4.5 kB
JavaScript
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