Files
ionic-framework/src/gestures/ui-event-manager.ts

58 lines
1.3 KiB
TypeScript

import { PointerEvents, PointerEventsConfig } from './pointer-events';
import { Platform, EventListenerOptions } from '../platform/platform';
/**
* @hidden
*/
export class UIEventManager {
private evts: Function[] = [];
constructor(public plt: Platform) {}
pointerEvents(config: PointerEventsConfig): PointerEvents {
if (!config.element || !config.pointerDown) {
console.error('PointerEvents config is invalid');
return;
}
const eventListnerOpts: EventListenerOptions = {
capture: config.capture,
passive: config.passive,
zone: config.zone
};
const pointerEvents = new PointerEvents(
this.plt,
config.element,
config.pointerDown,
config.pointerMove,
config.pointerUp,
eventListnerOpts);
const removeFunc = () => pointerEvents.destroy();
this.evts.push(removeFunc);
return pointerEvents;
}
listen(ele: any, eventName: string, callback: any, opts: EventListenerOptions): Function {
if (ele) {
var removeFunc = this.plt.registerListener(ele, eventName, callback, opts);
this.evts.push(removeFunc);
return removeFunc;
}
}
unlistenAll() {
this.evts.forEach(unRegEvent => {
unRegEvent();
});
this.evts.length = 0;
}
destroy() {
this.unlistenAll();
this.evts = null;
}
}