{"version":3,"sources":["persistent-listeners.ts"],"sourcesContent":["import { IterableWeakMap } from \"./iterable-weak-map.ts\";\n\nconst originalAddEventListener = EventTarget.prototype.addEventListener\nconst originalRemoveEventListener = EventTarget.prototype.removeEventListener\n\nexport function overrideEventTargetPrototype() {\n\tEventTarget.prototype.addEventListener = function (event, handler, options) {\n\t\taddPersistentListener(this??globalThis, event, handler, options)\n\t}\n\tEventTarget.prototype.removeEventListener = function (event, handler, options) {\n\t\tremovePersistentListener(this??globalThis, event, handler, options)\n\t}\n\tEventTarget.prototype.addEventListenerOnce = originalAddEventListener\n\tEventTarget.prototype.removeEventListenerOnce = originalRemoveEventListener\n}\n\n/**\n * Adds a event listener that gets reconstructed after document.write is called\n */\nexport function addPersistentListener(target: EventTarget, event: string, handler: EventListenerOrEventListenerObject|null, options?: boolean | AddEventListenerOptions) {\n\toriginalAddEventListener.call(target, event, handler, options)\n\tlisteners.set(target, {event, handler, options});\n}\n\nexport function removePersistentListener(target: EventTarget, event: string, handler: EventListenerOrEventListenerObject|null, options?: boolean | AddEventListenerOptions) {\n\toriginalRemoveEventListener.call(target, event, handler, options)\n\tfor (const [possibleTarget] of listeners) {\n\t\tif (target === possibleTarget) listeners.delete(possibleTarget);\n\t}\n}\n\nexport function recreatePersistentListeners() {\n\tfor (const [target, {event, handler, options}] of listeners) {\n\t\t// console.debug(\"recreated a persistent event listener for '\" + event + \"'\")\n\t\toriginalAddEventListener.call(target, event, handler, options)\n\t}\n}\n\nconst listeners = new IterableWeakMap<EventTarget, {event: string, handler: EventListenerOrEventListenerObject|null, options?: boolean | AddEventListenerOptions}>()\n"],"names":["IterableWeakMap","originalAddEventListener","EventTarget","prototype","addEventListener","originalRemoveEventListener","removeEventListener","overrideEventTargetPrototype","event","handler","options","addPersistentListener","globalThis","removePersistentListener","addEventListenerOnce","removeEventListenerOnce","target","call","listeners","set","possibleTarget","delete","recreatePersistentListeners"],"mappings":"AAAA,SAASA,eAAe,QAAQ,yBAAyB;AAEzD,IAAMC,2BAA2BC,YAAYC,SAAS,CAACC,gBAAgB,EACjEC,8BAA8BH,YAAYC,SAAS,CAACG,mBAAmB;AAE7E,OAAO,SAASC;IACfL,YAAYC,SAAS,CAACC,gBAAgB,GAAG,SAAUI,KAAK,EAAEC,OAAO,EAAEC,OAAO;QACzEC,sBAAsB,IAAI,IAAEC,YAAYJ,OAAOC,SAASC;IACzD,GACAR,YAAYC,SAAS,CAACG,mBAAmB,GAAG,SAAUE,KAAK,EAAEC,OAAO,EAAEC,OAAO;QAC5EG,yBAAyB,IAAI,IAAED,YAAYJ,OAAOC,SAASC;IAC5D,GACAR,YAAYC,SAAS,CAACW,oBAAoB,GAAGb,0BAC7CC,YAAYC,SAAS,CAACY,uBAAuB,GAAGV;AACjD;AAKA,OAAO,SAASM,sBAAsBK,MAAmB,EAAER,KAAa,EAAEC,OAAgD,EAAEC,OAA2C;IACtKT,yBAAyBgB,IAAI,CAACD,QAAQR,OAAOC,SAASC,UACtDQ,UAAUC,GAAG,CAACH,QAAQ;QAACR;QAAOC;QAASC;IAAO;AAC/C;AAEA,OAAO,SAASG,yBAAyBG,MAAmB,EAAER,KAAa,EAAEC,OAAgD,EAAEC,OAA2C;IAEzK,KAAK,IAAM,CAACU,eAAe,KAD3Bf,4BAA4BY,IAAI,CAACD,QAAQR,OAAOC,SAASC,UAC1BQ,WAC1BF,WAAWI,kBAAgBF,UAAUG,MAAM,CAACD;AAElD;AAEA,OAAO,SAASE;IACf,KAAK,IAAM,CAACN,QAAQ,EAACR,KAAK,EAAEC,OAAO,EAAEC,OAAO,EAAC,CAAC,IAAIQ,UAEjDjB,yBAAyBgB,IAAI,CAACD,QAAQR,OAAOC,SAASC;AAExD;AAEA,IAAMQ,YAAY,IAAIlB","sourceRoot":"/lib/datex-core-js-legacy-0.3.15/utils/","file":"persistent-listeners.ts"}