Files
2015-09-02 20:44:28 -05:00

61 lines
1.4 KiB
TypeScript

import * as util from 'ionic/util';
import {Hammer} from 'ionic/gestures/hammer';
/**
* A gesture recognizer class.
*
* TODO(mlynch): Re-enable the DOM event simulation that was causing issues (or verify hammer does this already, it might);
*/
export class Gesture {
constructor(element, opts = {}) {
util.defaults(opts, {
domEvents: true
});
this.element = element;
// Map 'x' or 'y' string to hammerjs opts
this.direction = opts.direction || 'x';
opts.direction = this.direction === 'x' ?
Hammer.DIRECTION_HORIZONTAL :
Hammer.DIRECTION_VERTICAL;
this._options = opts;
this._callbacks = {};
}
options(opts = {}) {
util.extend(this._options, opts);
}
on(type, cb) {
if(type == 'pinch' || type == 'rotate') {
this.hammertime.get('pinch').set({enable: true});
}
this.hammertime.on(type, cb);
(this._callbacks[type] || (this._callbacks[type] = [])).push(cb);
//this.element.addEventListener(type, cb);
}
listen() {
this.hammertime = Hammer(this.element, this._options);
}
unlisten() {
for (let type in this._callbacks) {
for (let i = 0; i < this._callbacks[type].length; i++) {
//this.element.removeEventListener(type, this._callbacks[type][i]);
this.hammertime.off(type, this._callbacks[type]);
}
}
this.hammertime.destroy();
this.hammertime = null;
this._callbacks = {}
}
destroy() {
this.unlisten()
}
}