Skip to content

Commit

Permalink
fix(MouseHandler): Add option to preventDefault on events
Browse files Browse the repository at this point in the history
  • Loading branch information
jourdain committed Jan 1, 2018
1 parent 0ccfc79 commit 59f609c
Showing 1 changed file with 17 additions and 13 deletions.
30 changes: 17 additions & 13 deletions src/Interaction/Core/MouseHandler/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import Hammer from 'hammerjs';
import merge from 'mout/src/object/merge';
import Monologue from 'monologue.js';

// Module dependencies and constants
Expand Down Expand Up @@ -40,12 +39,14 @@ function getRelative(el, event) {
};
}

function broadcast(ctx, topic, event) {
function broadcast(ctx, topic, event, preventDefault = true) {
if (!ctx.mouseEnabled) {
return;
}

event.preventDefault();
if (preventDefault) {
event.preventDefault();
}

event.button = 0;
event.topic = topic;
Expand All @@ -59,14 +60,15 @@ export default class MouseHandler {

constructor(domElement, options) {
var defaultOptions = {
preventDefault: true,
pan: {
threshold: 0,
},
pinch: {
threshold: 0,
},
};
var optionsWithDefault = merge(defaultOptions, options);
const optionsWithDefault = Object.assign(defaultOptions, options);

this.Modifier = Modifier;

Expand Down Expand Up @@ -105,7 +107,9 @@ export default class MouseHandler {
this.inRightClickHandling = true;
}

e.preventDefault();
if (optionsWithDefault.preventDefault) {
e.preventDefault();
}

const event = {
srcEvent: e,
Expand Down Expand Up @@ -186,41 +190,41 @@ export default class MouseHandler {

// Listen to hammer events
this.hammer.on('tap', (e) => {
broadcast(this, 'click', e);
broadcast(this, 'click', e, optionsWithDefault.preventDefault);
});

this.hammer.on('doubletap', (e) => {
broadcast(this, 'dblclick', e);
broadcast(this, 'dblclick', e, optionsWithDefault.preventDefault);
});

this.hammer.on('pan', (e) => {
broadcast(this, 'drag', e);
broadcast(this, 'drag', e, optionsWithDefault.preventDefault);
});

this.hammer.on('panstart', (e) => {
e.isFirst = true;
broadcast(this, 'drag', e);
broadcast(this, 'drag', e, optionsWithDefault.preventDefault);
});

this.hammer.on('panend', (e) => {
e.isFinal = true;
broadcast(this, 'drag', e);
broadcast(this, 'drag', e, optionsWithDefault.preventDefault);
});

this.hammer.on('pinch', (e) => {
broadcast(this, 'zoom', e);
broadcast(this, 'zoom', e, optionsWithDefault.preventDefault);
});

this.hammer.on('pinchstart', (e) => {
console.log('zoom start');
e.isFirst = true;
broadcast(this, 'zoom', e);
broadcast(this, 'zoom', e, optionsWithDefault.preventDefault);
});

this.hammer.on('pinchend', (e) => {
e.isFinal = true;
console.log('zoom end');
broadcast(this, 'zoom', e);
broadcast(this, 'zoom', e, optionsWithDefault.preventDefault);
});

this.hammer.get('pinch').set({
Expand Down

0 comments on commit 59f609c

Please sign in to comment.