in packages/shared/src/event-emitter.ts [62:89]
off(events, callback?, context?) {
let event; let calls; let node; let tail; let cb; let
ctx;
if (!(calls = this.callbacks)) {
return this;
}
if (!(events || callback || context)) {
delete this.callbacks;
return this;
}
events = events ? events.split(Events.eventSplitter) : Object.keys(calls);
while ((event = events.shift())) {
node = calls[event];
delete calls[event];
if (!node || !(callback || context)) {
continue;
}
tail = node.tail;
while ((node = node.next) !== tail) {
cb = node.callback;
ctx = node.context;
if ((callback && cb !== callback) || (context && ctx !== context)) {
this.on(event, cb, ctx);
}
}
}
return this;
}