{"version":3,"file":"mitt2.mjs","sources":["../../../../../packages/utils/mitt.ts"],"sourcesContent":["/**\n * copy to https://github.com/developit/mitt\n * Expand clear method\n */\n\nexport type EventType = string | symbol\n\n// An event handler can take an optional event argument\n// and should not return a value\nexport type Handler<T = any> = (event?: T) => void\nexport type WildcardHandler = (type: EventType, event?: any) => void\n\n// An array of all currently registered event handlers for a type\nexport type EventHandlerList = Array<Handler>\nexport type WildCardEventHandlerList = Array<WildcardHandler>\n\n// A map of event types and their corresponding event handlers.\nexport type EventHandlerMap = Map<EventType, EventHandlerList | WildCardEventHandlerList>\n\nexport interface Emitter {\n  all: EventHandlerMap\n\n  on<T = any>(type: EventType, handler: Handler<T>): void\n  on(type: '*', handler: WildcardHandler): void\n\n  off<T = any>(type: EventType, handler: Handler<T>): void\n  off(type: '*', handler: WildcardHandler): void\n\n  emit<T = any>(type: EventType, event?: T): void\n  emit(type: '*', event?: any): void\n  clear(): void\n}\n\n/**\n * Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nexport function mitt(all?: EventHandlerMap): Emitter {\n  all = all || new Map()\n\n  return {\n    /**\n     * A Map of event names to registered handler functions.\n     */\n    all,\n\n    /**\n     * Register an event handler for the given type.\n     * @param {string|symbol} type Type of event to listen for, or `\"*\"` for all events\n     * @param {Function} handler Function to call in response to given event\n     * @memberOf mitt\n     */\n    on<T = any>(type: EventType, handler: Handler<T>) {\n      const handlers = all?.get(type)\n      const added = handlers && handlers.push(handler)\n      if (!added) {\n        all?.set(type, [handler])\n      }\n    },\n\n    /**\n     * Remove an event handler for the given type.\n     * @param {string|symbol} type Type of event to unregister `handler` from, or `\"*\"`\n     * @param {Function} handler Handler function to remove\n     * @memberOf mitt\n     */\n    off<T = any>(type: EventType, handler: Handler<T>) {\n      const handlers = all?.get(type)\n      if (handlers) {\n        handlers.splice(handlers.indexOf(handler) >>> 0, 1)\n      }\n    },\n\n    /**\n     * Invoke all handlers for the given type.\n     * If present, `\"*\"` handlers are invoked after type-matched handlers.\n     *\n     * Note: Manually firing \"*\" handlers is not supported.\n     *\n     * @param {string|symbol} type The event type to invoke\n     * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n     * @memberOf mitt\n     */\n    emit<T = any>(type: EventType, evt: T) {\n      ;((all?.get(type) || []) as EventHandlerList).slice().forEach((handler) => {\n        handler(evt)\n      })\n      ;((all?.get('*') || []) as WildCardEventHandlerList).slice().forEach((handler) => {\n        handler(type, evt)\n      })\n    },\n\n    /**\n     * Clear all\n     */\n    clear() {\n      this.all.clear()\n    },\n  }\n}\n"],"names":[],"mappings":"AAAO,SAAS,IAAI,CAAC,GAAG,EAAE;AAC1B,EAAE,GAAG,GAAG,GAAG,oBAAoB,IAAI,GAAG,EAAE,CAAC;AACzC,EAAE,OAAO;AACT,IAAI,GAAG;AACP,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE;AACtB,MAAM,MAAM,QAAQ,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,MAAM,MAAM,KAAK,GAAG,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvD,MAAM,IAAI,CAAC,KAAK,EAAE;AAClB,QAAQ,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAClC,OAAO;AACP,KAAK;AACL,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE;AACvB,MAAM,MAAM,QAAQ,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,MAAM,IAAI,QAAQ,EAAE;AACpB,QAAQ,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5D,OAAO;AACP,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;AACpB,MAAM,CAAC;AACP,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK;AAC1D,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC;AACrB,OAAO,CAAC,CAAC;AACT,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK;AACzD,QAAQ,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC3B,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AACvB,KAAK;AACL,GAAG,CAAC;AACJ;;;;"}