UNPKG

azure-devops-ui

Version:

React components for building web UI in Azure DevOps

1 lines 2.53 kB
class TimerManagement{constructor(e){this.disposed=!1,this.immediateIds=null,this.intervals=[],this.timeouts=[],this.parent=e||null}clearAllTimers(){for(const e of this.intervals)window.clearInterval(e);for(const t of this.timeouts)window.clearTimeout(t);this.intervals.splice(0,this.intervals.length),this.timeouts.splice(0,this.timeouts.length)}clearImmediate(e){this.immediateIds&&this.immediateIds[e]&&(window.clearTimeout(e),delete this.immediateIds[e])}clearInterval(e){window.clearInterval(e),this.removeInterval(e)}clearTimeout(e){window.clearTimeout(e),this.removeTimeout(e)}setImmediate(e){let t=0;return this.disposed||(this.immediateIds||(this.immediateIds={}),t=window.setTimeout(()=>{try{this.immediateIds&&delete this.immediateIds[t],e.apply(this.parent)}catch(e){}},0),this.immediateIds[t]=!0),t}setInterval(e,t,...i){e=window.setInterval(e,t,...i);return this.intervals.push(e),e}setTimeout(e,t,...i){let s=0;return s=window.setTimeout(()=>{this.removeTimeout(s),e(...i)},t,...i),this.timeouts.push(s),s}dispose(){if(this.disposed=!0,this.parent=null,this.clearAllTimers(),this.immediateIds)for(const e in this.immediateIds)this.immediateIds.hasOwnProperty(e)&&this.clearImmediate(parseInt(e,10));this.immediateIds=null}debounce(t,e,i){if(this.disposed)return(a=()=>{}).cancel=()=>{},a.flush=()=>null,a.pending=()=>!1,a;const r=e||0;let m=!1,o=!0,d=null,h=0,u=(new Date).getTime(),c,s,p=null;i&&(m=i.leading||!1,o=i.trailing||!0,d=i.maxWait||null);const l=e=>{p&&(this.clearTimeout(p),p=null),u=e},v=e=>{l(e),c=t.apply(null,s)},I=e=>{var t=(new Date).getTime();let i=!1;e&&(m&&t-h>=r&&(i=!0),h=t);var s=t-h;let l=r-s;var n=t-u;let a=!1;return null!==d&&(n>=d&&p?a=!0:l=Math.min(l,d-n)),s>=r||a||i?v(t):null!==p&&e||!o||(p=this.setTimeout(I,l)),c},n=()=>!!p;var a=(...e)=>(s=e,I(!0));return a.cancel=()=>{n()&&l((new Date).getTime())},a.flush=()=>(n()&&v((new Date).getTime()),c),a.pending=n,a}throttle(l,e,t){var i;if(this.disposed)return(i=()=>{}).cancel=()=>{},i.flush=()=>null,i.pending=()=>!1,i;const n=e||0;let a=!0,r=!0,m=0,o,d,h=null;t&&"boolean"==typeof t.leading&&(a=t.leading),t&&"boolean"==typeof t.trailing&&(r=t.trailing);const u=e=>{var t=(new Date).getTime(),i=t-m,s=a?n-i:n;return i>=n&&(!e||a)?(m=t,h&&(this.clearTimeout(h),h=null),o=l.apply(null,d)):null===h&&r&&(h=this.setTimeout(u,s)),o};return(...e)=>(d=e,u(!0))}removeInterval(e){e=this.intervals.indexOf(e);0<=e&&this.intervals.splice(e,1)}removeTimeout(e){e=this.timeouts.indexOf(e);0<=e&&this.timeouts.splice(e,1)}}export{TimerManagement};