/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/rettime@0.11.8/build/index.mjs
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
import{LensList}from"./lens-list.mjs";const kDefaultPrevented=Symbol("kDefaultPrevented"),kPropagationStopped=Symbol("kPropagationStopped"),kImmediatePropagationStopped=Symbol("kImmediatePropagationStopped");var TypedEvent=class extends MessageEvent{#e;[kDefaultPrevented];[kPropagationStopped];[kImmediatePropagationStopped];constructor(...e){super(e[0],e[1]),this[kDefaultPrevented]=!1}get defaultPrevented(){return this[kDefaultPrevented]}preventDefault(){super.preventDefault(),this[kDefaultPrevented]=!0}stopImmediatePropagation(){super.stopImmediatePropagation(),this[kImmediatePropagationStopped]=!0}},Emitter=class{#t;#s;#n;#i;#o;#r;#l;hooks;constructor(){this.#t=new LensList,this.#s=new WeakMap,this.#n=new WeakMap,this.#i=new WeakSet,this.#o=new LensList,this.#r=new WeakMap,this.#l=new WeakMap,this.hooks={on:(e,t,s)=>{if(s?.once){const s=t,n=(...t)=>(this.#a(e,n),s(...t));t=n}if(this.#o.append(e,t),s&&this.#r.set(t,s),s?.signal){const{signal:n}=s,i=()=>{this.#a(e,t)};n.addEventListener("abort",i,{once:!0}),this.#l.set(t,(()=>{n.removeEventListener("abort",i)}))}},removeListener:(e,t)=>{this.#a(e,t)}}}#a(e,t){this.#o.delete(e,t);const s=this.#l.get(t);s&&(s(),this.#l.delete(t))}#p(e,t){this.#t.delete(e,t);const s=this.#n.get(t);s&&(s(),this.#n.delete(t))}on(e,t,s){return this.#h(e,t,s),this}once(e,t,s){return this.on(e,t,{...s||{},once:!0})}earlyOn(e,t,s){return this.#h(e,t,s,"prepend"),this}earlyOnce(e,t,s){return this.earlyOn(e,t,{...s||{},once:!0})}emit(e){if(0===this.#t.size)return!1;const t=this.listenerCount(e.type)>0,s=this.#d(e);for(const t of this.#k(e.type)){if(null!=s.event[kPropagationStopped]&&s.event[kPropagationStopped]!==this)return s.revoke(),!1;if(s.event[kImmediatePropagationStopped])break;this.#L(s.event,t)}return s.revoke(),t}async emitAsPromise(e){if(0===this.#t.size)return[];const t=[],s=this.#d(e);for(const n of this.#k(e.type)){if(null!=s.event[kPropagationStopped]&&s.event[kPropagationStopped]!==this)return s.revoke(),[];if(s.event[kImmediatePropagationStopped])break;const e=await Promise.resolve(this.#L(s.event,n));this.#u(n)||t.push(e)}return s.revoke(),Promise.allSettled(t).then((e=>e.map((e=>"fulfilled"===e.status?e.value:e.reason))))}*emitAsGenerator(e){if(0===this.#t.size)return;const t=this.#d(e);for(const s of this.#k(e.type)){if(null!=t.event[kPropagationStopped]&&t.event[kPropagationStopped]!==this)return void t.revoke();if(t.event[kImmediatePropagationStopped])break;const e=this.#L(t.event,s);this.#u(s)||(yield e)}t.revoke()}removeListener(e,t){const s=this.#s.get(t);this.#p(e,t);for(const n of this.#o.get("removeListener"))n(e,t,s)}removeAllListeners(e){if(null!=e){for(const t of this.#t.get(e)){const e=this.#n.get(t);e&&(e(),this.#n.delete(t))}this.#t.deleteAll(e)}else{for(const e of this.#t.getAll()){const t=this.#n.get(e);t&&(t(),this.#n.delete(e))}this.#t.clear();for(const[e,t]of this.#o)this.#r.get(t)?.persist||this.#a(e,t)}}listeners(e){return null==e?this.#t.getAll():this.#t.get(e)}listenerCount(e){return null==e?this.#t.size:this.listeners(e).length}#h(e,t,s,n="append"){for(const n of this.#o.get("newListener"))n(e,t,s);if("*"===e&&this.#i.add(t),"prepend"===n?this.#t.prepend(e,t):this.#t.append(e,t),s&&(this.#s.set(t,s),s.signal)){const{signal:n}=s,i=()=>{this.removeListener(e,t)};n.addEventListener("abort",i,{once:!0}),this.#n.set(t,(()=>{n.removeEventListener("abort",i)}))}}#d(e){const{stopPropagation:t}=e;return e.stopPropagation=()=>{e[kPropagationStopped]=this,t.call(e)},{event:e,revoke(){e.stopPropagation=t}}}#L(e,t){for(const t of this.#o.get("beforeEmit"))if(!1===t(e))return;const s=t.call(this,e),n=this.#s.get(t);if(n?.once){const s=this.#u(t)?"*":e.type;this.#p(s,t);for(const e of this.#o.get("removeListener"))e(s,t,n)}return s}*#k(e){const t=[];for(const[s,n]of this.#t)"*"!==s&&s!==e||t.push(n);yield*t}#u(e){return this.#i.has(e)}};export{Emitter,TypedEvent};
//# sourceMappingURL=/sm/9fc55c72b68294eaa36e1c66f445b9259c0888f6a116088c43a36dabd3356105.map