Add dom events to TextAreaWrapper

This commit is contained in:
Alex Dima
2021-11-29 10:34:12 +01:00
parent 687521092d
commit a2cac5d927
4 changed files with 97 additions and 37 deletions

View File

@@ -149,6 +149,24 @@ export function addDisposableNonBubblingPointerOutListener(node: Element, handle
});
}
export function createEventEmitter<K extends keyof HTMLElementEventMap>(target: HTMLElement, type: K, options?: boolean | AddEventListenerOptions): Emitter<HTMLElementEventMap[K]> {
let domListener: DomListener | null = null;
const handler = (e: HTMLElementEventMap[K]) => result.fire(e);
const onFirstListenerAdd = () => {
if (!domListener) {
domListener = new DomListener(target, type, handler, options);
}
};
const onLastListenerRemove = () => {
if (domListener) {
domListener.dispose();
domListener = null;
}
};
const result = new Emitter<HTMLElementEventMap[K]>({ onFirstListenerAdd, onLastListenerRemove });
return result;
}
interface IRequestAnimationFrame {
(callback: (time: number) => void): number;
}