From 5f2ccef47bb1d8656433b529573212273b82bf83 Mon Sep 17 00:00:00 2001 From: sealice <15445553+sealice@users.noreply.github.com> Date: Mon, 4 Jan 2021 10:02:11 +0800 Subject: [PATCH 1/2] Add new features of emitter.off. Fixes #123 If emitter.off provides only the event, remove all listeners for that event. --- src/index.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/index.ts b/src/index.ts index ae85607..394a5ed 100644 --- a/src/index.ts +++ b/src/index.ts @@ -18,7 +18,7 @@ export interface Emitter { on(type: EventType, handler: Handler): void; on(type: '*', handler: WildcardHandler): void; - off(type: EventType, handler: Handler): void; + off(type: EventType, handler?: Handler): void; off(type: '*', handler: WildcardHandler): void; emit(type: EventType, event?: T): void; @@ -60,10 +60,14 @@ export default function mitt(all?: EventHandlerMap): Emitter { * @param {Function} handler Handler function to remove * @memberOf mitt */ - off(type: EventType, handler: Handler) { + off(type: EventType, handler?: Handler) { const handlers = all.get(type); if (handlers) { + if(handler){ handlers.splice(handlers.indexOf(handler) >>> 0, 1); + } else { + all.delete(type); + } } }, From ec9122bba89372f521da8c2ae4febb40ded3c570 Mon Sep 17 00:00:00 2001 From: sealice <15445553+sealice@users.noreply.github.com> Date: Mon, 11 Jan 2021 20:20:51 +0800 Subject: [PATCH 2/2] Fix the format and update the off API --- README.md | 1 + src/index.ts | 12 +++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 08a21bf..9bc0436 100644 --- a/README.md +++ b/README.md @@ -132,6 +132,7 @@ Register an event handler for the given type. ### off Remove an event handler for the given type. +If omit the `handler`, all event handlers of the given type are deleted. #### Parameters diff --git a/src/index.ts b/src/index.ts index 394a5ed..946802a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -56,6 +56,7 @@ export default function mitt(all?: EventHandlerMap): Emitter { /** * Remove an event handler for the given type. + * If omit the `handler`, all event handlers of the given type are deleted. * @param {string|symbol} type Type of event to unregister `handler` from, or `"*"` * @param {Function} handler Handler function to remove * @memberOf mitt @@ -63,11 +64,12 @@ export default function mitt(all?: EventHandlerMap): Emitter { off(type: EventType, handler?: Handler) { const handlers = all.get(type); if (handlers) { - if(handler){ - handlers.splice(handlers.indexOf(handler) >>> 0, 1); - } else { - all.delete(type); - } + if (handler) { + handlers.splice(handlers.indexOf(handler) >>> 0, 1); + } + else { + all.delete(type); + } } },