{"version":3,"file":"idleManager.mjs","names":[],"sources":["../../../../package/common/idleManager/idleManager.tsx"],"sourcesContent":["import { useState, useEffect, useRef, useCallback } from 'react';\nimport type { IdleManagerProps } from './idleManager.types';\n\nconst ACTIVITY_EVENTS = ['click', 'mousemove', 'keydown', 'scroll', 'touchstart'] as const;\n\nfunction IdleManager({ children = null, idleAfterSeconds = 600, renderCondition = true }: IdleManagerProps) {\n  const [isIdleContentShown, setIsIdleContentShown] = useState(false);\n  const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n  const scheduleIdleTimeout = useCallback(() => {\n    if (timeoutRef.current !== null) clearTimeout(timeoutRef.current);\n    timeoutRef.current = setTimeout(() => {\n      setIsIdleContentShown(true);\n    }, idleAfterSeconds * 1000);\n  }, [idleAfterSeconds]);\n\n  // Only activity hides idle content again. Kept out of the effect below so that mounting, or a\n  // change of `idleAfterSeconds`, restarts the countdown without dismissing what is on screen.\n  const resetIdleTimeout = useCallback(() => {\n    setIsIdleContentShown(false);\n    scheduleIdleTimeout();\n  }, [scheduleIdleTimeout]);\n\n  useEffect(() => {\n    scheduleIdleTimeout();\n  }, [scheduleIdleTimeout]);\n\n  // Register / unregister activity listeners\n  useEffect(() => {\n    for (const event of ACTIVITY_EVENTS) {\n      document.addEventListener(event, resetIdleTimeout);\n    }\n    return () => {\n      for (const event of ACTIVITY_EVENTS) {\n        document.removeEventListener(event, resetIdleTimeout);\n      }\n      // Clear any pending timeout on unmount so it never fires after we're gone\n      if (timeoutRef.current !== null) clearTimeout(timeoutRef.current);\n    };\n  }, [resetIdleTimeout]);\n\n  return <>{renderCondition && isIdleContentShown && children}</>;\n}\n\nexport default IdleManager;\n"],"mappings":"gJAGA,IAAM,EAAkB,CAAC,QAAS,YAAa,UAAW,SAAU,YAAY,EAEhF,SAAS,EAAY,CAAE,WAAW,KAAM,mBAAmB,IAAK,kBAAkB,IAA0B,CAC1G,GAAM,CAAC,EAAoB,GAAyB,EAAS,EAAK,EAC5D,EAAa,EAA6C,IAAI,EAE9D,EAAsB,MAAkB,CACxC,EAAW,UAAY,MAAM,aAAa,EAAW,OAAO,EAChE,EAAW,QAAU,eAAiB,CACpC,EAAsB,EAAI,CAC5B,EAAG,EAAmB,GAAI,CAC5B,EAAG,CAAC,CAAgB,CAAC,EAIf,EAAmB,MAAkB,CACzC,EAAsB,EAAK,EAC3B,EAAoB,CACtB,EAAG,CAAC,CAAmB,CAAC,EAoBxB,OAlBA,MAAgB,CACd,EAAoB,CACtB,EAAG,CAAC,CAAmB,CAAC,EAGxB,MAAgB,CACd,IAAK,IAAM,KAAS,EAClB,SAAS,iBAAiB,EAAO,CAAgB,EAEnD,UAAa,CACX,IAAK,IAAM,KAAS,EAClB,SAAS,oBAAoB,EAAO,CAAgB,EAGlD,EAAW,UAAY,MAAM,aAAa,EAAW,OAAO,CAClE,CACF,EAAG,CAAC,CAAgB,CAAC,EAEd,EAAA,EAAA,CAAA,SAAG,GAAmB,GAAsB,CAAW,CAAA,CAChE"}