mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-23 05:58:26 +08:00
58 lines
1.3 KiB
TypeScript
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;
|
|
}
|
|
}
|