22 lines
504 B
JavaScript
22 lines
504 B
JavaScript
const map = new WeakMap();
|
|
|
|
export default function onoff(target) {
|
|
let m = map.get(target);
|
|
|
|
if (!m) {
|
|
const on = (target.addEventListener ?? target.addListener).bind(target);
|
|
const off = (target.removeEventListener ?? target.removeListener).bind(
|
|
target,
|
|
);
|
|
const once = (
|
|
target.once ??
|
|
((event, handler) =>
|
|
target.addEventListener(event, handler, { once: true }))
|
|
).bind(target);
|
|
m = { on, off, once };
|
|
map.set(target, m);
|
|
}
|
|
|
|
return m;
|
|
}
|