UNPKG

@hitachivantara/uikit-react-core

Version:
35 lines (34 loc) 1.09 kB
//#region src/TreeView/internals/utils/TimerBasedCleanupTracking.ts var CLEANUP_TIMER_LOOP_MILLIS = 1e3; var TimerBasedCleanupTracking = class { timeouts = /* @__PURE__ */ new Map(); cleanupTimeout = CLEANUP_TIMER_LOOP_MILLIS; constructor(timeout = CLEANUP_TIMER_LOOP_MILLIS) { this.cleanupTimeout = timeout; } register(object, unsubscribe, unregisterToken) { if (!this.timeouts) this.timeouts = /* @__PURE__ */ new Map(); const timeout = setTimeout(() => { if (typeof unsubscribe === "function") unsubscribe(); this.timeouts.delete(unregisterToken.cleanupToken); }, this.cleanupTimeout); this.timeouts.set(unregisterToken.cleanupToken, timeout); } unregister(unregisterToken) { const timeout = this.timeouts.get(unregisterToken.cleanupToken); if (timeout) { this.timeouts.delete(unregisterToken.cleanupToken); clearTimeout(timeout); } } reset() { if (this.timeouts) { this.timeouts.forEach((value, key) => { this.unregister({ cleanupToken: key }); }); this.timeouts = void 0; } } }; //#endregion export { TimerBasedCleanupTracking };