EmbyCrackedClient/web/modules/themes/windows/eventbinder.js

1 line
2.5 KiB
JavaScript
Raw Normal View History

2025-06-25 11:46:04 +08:00
let supportsCaptureOption=!1;try{let opts=Object.defineProperty({},"capture",{get:function(){return supportsCaptureOption=!0}});window.addEventListener("load",null,opts),window.remove("load",null,opts)}catch(e){}function _getRegistry(context){return context.__eventRegistry||(context.__eventRegistry={registrations:[],boundHandlers:[]}),context.__eventRegistry}function _registerCore(withBind,context,eventTarget,eventName,eventHandler,capture,passive,once){for(;unregister(context,eventTarget,eventName,eventHandler););var registry=_getRegistry(context),capture={eventTarget:eventTarget,eventName:eventName,eventHandler:eventHandler,boundHandler:null,options:{capture:capture,passive:passive,once:once}};if(withBind){let boundHandler=registry.boundHandlers.findIndex(e=>e.eventHandler===eventHandler)?.boundHandler;boundHandler||(boundHandler=eventHandler.bind(context),passive={eventHandler:eventHandler,boundHandler:boundHandler},registry.boundHandlers.push(passive)),capture.boundHandler=boundHandler}once=capture.boundHandler||capture.eventHandler;supportsCaptureOption?capture.eventTarget.addEventListener(capture.eventName,once,capture.options):capture.eventTarget.addEventListener(capture.eventName,once,!!capture.options.capture),registry.registrations.push(capture)}function unregister(context,eventTarget,eventName,eventHandler){var registration,handler,context=_getRegistry(context),registrationIndex=context.registrations.findIndex(e=>e.eventTarget===eventTarget&&e.eventName===eventName&&e.eventHandler===eventHandler);return!(registrationIndex<0||(handler=(registration=context.registrations[registrationIndex]).boundHandler||registration.eventHandler,supportsCaptureOption?registration.eventTarget.removeEventListener(registration.eventName,handler,registration.options):registration.eventTarget.removeEventListener(registration.eventName,handler,!!registration.options.capture),context.registrations.splice(registrationIndex,1),0))}function register(context,eventTarget,eventName,eventHandler,capture,passive,once){_registerCore(!1,context,eventTarget,eventName,eventHandler,capture,passive,once)}function registerBound(context,eventTarget,eventName,eventHandler,capture,passive,once){_registerCore(!0,context,eventTarget,eventName,eventHandler,capture,passive,once)}function unregisterAll(context){_getRegistry(context).registrations.forEach(registration=>unregister(context,registration.eventTarget,registration.eventName,registration.eventHandler))}let eventBinder={register:register,registerBound:registerBound,unregister:unregister,unregisterAll:unregisterAll};export default eventBinder;