UNPKG

@stimulus-library/mixins

Version:

A library of useful controllers for Stimulus

21 lines (20 loc) 680 B
import { useMixin } from "./use_mixin"; export function useTimeout(controller, handler, timeout) { let controllerDisconnect; let timeoutHandle = null; handler = handler.bind(controller); const newHandler = () => { handler(); timeoutHandle = null; Object.assign(controller, { disconnect: controllerDisconnect }); }; const setup = () => timeoutHandle = setTimeout(newHandler, timeout); const teardown = () => { if (timeoutHandle !== null) { clearTimeout(timeoutHandle); timeoutHandle = null; } }; controllerDisconnect = useMixin(controller, setup, teardown); return teardown; }