this.offsetY = 0;
this.panX = 0;
this.panY = 0;
+ this.panInited = false;
+
+ this.touchAction = 'compute';
+ this.elementId = 'main';
+ this.panElementId = 'fluidbook';
this.zoomAtPinchStart = 0;
+ this.options = {
+ domEvents: false,
+ touchAction: 'compute'
+ };
+
this.triggerOffset = this.fluidbook.mobilefirst.enabled ? 0.1 : 0.05;
this.draggingFromOutside = false;
- this.init();
+ if (this.fluidbook.input.hasTouch) {
+ this.init();
+ }
}
FluidbookTouch.prototype = {
var pinchEnabled = true;
var doubletapEnabled = true;
var panEnabled = true;
- var touchAction = 'compute';
- var elementId = 'main';
- var panElementId = 'fluidbook';
+
if (this.fluidbook.mobilefirst.enabled) {
- touchAction = 'auto';
- elementId = 'scroll';
- panElementId = 'scroll';
+ this.touchAction = 'auto';
+ this.elementId = 'scroll';
+ this.panElementId = 'scroll';
}
var $this = this;
return;
}
- var options = {
+ this.options = {
domEvents: this.fluidbook.mobilefirst.enabled,
touchAction: touchAction
};
- Hammer.defaults.domEvents = options.domEvents;
- Hammer.defaults.touchAction = options.touchAction;
- var hm = new Hammer.Manager(document.getElementById(elementId), options);
- this.hm = hm;
+ this.initHammerManager();
if (doubletapEnabled) {
hm.add(new Hammer.Tap({event: 'doubletap', taps: 2, interval: 500}));
}
if (panEnabled) {
- var hmf = new Hammer.Manager(document.getElementById(panElementId), options);
- hmf.add(new Hammer.Pan({threshold: 0}));
- hmf.on('pan', function (event) {
+ this.initPan(panElementId);
+ }
+ },
- });
- hmf.on('panstart', function (event) {
- console.log(event);
- if ($this.drag(event, 'start')) {
- event.preventDefault();
- }
- });
- hmf.on('panmove', function (event) {
- if ($this.drag(event, 'move')) {
- event.preventDefault();
- }
- });
- hmf.on('panend', function (event) {
- var prevent = $this.drag(event, 'end');
- $this.startX = $this.startY = -1;
- $this.panX = $this.panY = 0;
- if (prevent) {
- event.preventDefault();
- }
- });
+ initHammerManager: function () {
+ if (this.hm !== undefined && this.hm !== null) {
+ return;
+ }
+
+ Hammer.defaults.domEvents = this.options.domEvents;
+ Hammer.defaults.touchAction = this.options.touchAction;
+
+ this.hm = new Hammer.Manager(document.getElementById(this.elementId), this.options);
+ },
+
+ initPan(panElementId) {
+ if (this.panInited) {
+ return;
+ }
+ var $this=this;
+
+ this.panInited = true;
+ if (panElementId === undefined) {
+ panElementId = 'fluidbook';
}
+
+ this.initHammerManager();
+
+ var hmf = new Hammer.Manager(document.getElementById(panElementId), this.options);
+ hmf.add(new Hammer.Pan({threshold: 0}));
+ hmf.on('pan', function (event) {
+
+ });
+ hmf.on('panstart', function (event) {
+ if ($this.drag(event, 'start')) {
+ event.preventDefault();
+ }
+ });
+ hmf.on('panmove', function (event) {
+ if ($this.drag(event, 'move')) {
+ event.preventDefault();
+ }
+ });
+ hmf.on('panend', function (event) {
+ var prevent = $this.drag(event, 'end');
+ $this.startX = $this.startY = -1;
+ $this.panX = $this.panY = 0;
+ if (prevent) {
+ event.preventDefault();
+ }
+ });
},
pinchZoom: function (s, end) {
if (type === 'end') {
e.deltaX += e.velocityX * 200;
e.deltaY += e.velocityY * 200;
- this.dragZoom(e, true);
+ this.dragZoom(e, this.fluidbook.input.usingTouch);
} else {
- this.dragZoom(e, true);
+ this.dragZoom(e, this.fluidbook.input.usingTouch);
}
return true;
}
},
dragZoom: function (e, inertia) {
+
e.dx = e.deltaX - this.panX;
e.dy = e.deltaY - this.panY;
}
+ if(this.fluidbook.input.usingMouse){
+ return false;
+ }
+
if (this.fluidbook.mobilefirst.enabled && this.fluidbook.mobilefirst.isScrolling) {
return false;
}
this.startY = -1;
this.offsetX = 0;
this.offsetY = 0;
- }, setZoomOriginFromEvent: function (event) {
+ },
+
+ setZoomOriginFromEvent: function (event) {
var cx = event.pageX;
var cy = event.pageY;