{"version":3,"sources":["disposable-callback-handler.ts"],"sourcesContent":["export type DisposableCallback<T extends (...args: any[]) => void> = T & { dispose: () => void; [Symbol.dispose]: () => void; };\n\n/**\n * Helper class to manage disposable callbacks.\n * Assigns a `dispose` method to each callback that can be used to remove the callback from the handler.\n */\nexport class DisposableCallbackHandler<T extends (...args: any[]) => void = (...args: any[]) => void> {\n\n\t#callbacks = new Set<DisposableCallback<T>>();\n\n\tadd(callback: T): DisposableCallback<T> {\n\t\tconst disposableCallback = Object.assign(callback as any, {\n\t\t\tdispose: () => this.dispose(disposableCallback),\n\t\t\t[Symbol.dispose]: () => this.dispose(disposableCallback),\n\t\t});\n\t\tthis.#callbacks.add(disposableCallback);\n\t\treturn disposableCallback;\n\t}\n\n\tdispose(callback: DisposableCallback<T>) {\n\t\tthis.#callbacks.delete(callback);\n\t}\n\n\ttrigger(...args: Parameters<T>) {\n\t\tthis.#callbacks.forEach(callback => callback(...args));\n\t}\n}"],"names":["DisposableCallbackHandler","Set","add","callback","disposableCallback","Object","assign","dispose","Symbol","delete","trigger","args","forEach"],"mappings":"AAMA,OAAO,MAAMA;IAEZ,CAAA,SAAU,GAAG,IAAIC,MAA6B;IAE9CC,IAAIC,QAAW,EAAyB;QACvC,IAAMC,qBAAqBC,OAAOC,MAAM,CAACH,UAAiB;YACzDI,SAAS,IAAM,IAAI,CAACA,OAAO,CAACH;YAC5B,CAACI,OAAOD,OAAO,CAAC,EAAE,IAAM,IAAI,CAACA,OAAO,CAACH;QACtC;QAEA,OADA,IAAI,CAAC,CAAA,SAAU,CAACF,GAAG,CAACE,qBACbA;IACR;IAEAG,QAAQJ,QAA+B,EAAE;QACxC,IAAI,CAAC,CAAA,SAAU,CAACM,MAAM,CAACN;IACxB;IAEAO,QAAQ,GAAGC,IAAmB,EAAE;QAC/B,IAAI,CAAC,CAAA,SAAU,CAACC,OAAO,CAACT,CAAAA,WAAYA,YAAYQ;IACjD;AACD","sourceRoot":"/lib/datex-core-js-legacy-0.3.15/utils/","file":"disposable-callback-handler.ts"}