Buckets:
| 'use client'; | |
| import useLazyRef from "../useLazyRef/useLazyRef.js"; | |
| import useOnMount from "../useOnMount/useOnMount.js"; | |
| export class Timeout { | |
| static create() { | |
| return new Timeout(); | |
| } | |
| currentId = null; | |
| /** | |
| * Executes `fn` after `delay`, clearing any previously scheduled call. | |
| */ | |
| start(delay, fn) { | |
| this.clear(); | |
| this.currentId = setTimeout(() => { | |
| this.currentId = null; | |
| fn(); | |
| }, delay); | |
| } | |
| clear = () => { | |
| if (this.currentId !== null) { | |
| clearTimeout(this.currentId); | |
| this.currentId = null; | |
| } | |
| }; | |
| disposeEffect = () => { | |
| return this.clear; | |
| }; | |
| } | |
| export default function useTimeout() { | |
| const timeout = useLazyRef(Timeout.create).current; | |
| useOnMount(timeout.disposeEffect); | |
| return timeout; | |
| } |
Xet Storage Details
- Size:
- 776 Bytes
- Xet hash:
- e38dd09a21295d44fc3422b9113c5905618947f64171012ef00178314fd99cdf
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.