koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
1 lines • 2.04 kB
Source Map (JSON)
{"version":3,"file":"useTime.cjs","sources":["../../../../src/internal/MediaEmbeds/useTime.ts"],"sourcesContent":["import type {MutableRefObject} from 'react';\nimport {type ChangeEvent, useCallback, useEffect, useState} from 'react';\n\nimport {PlayModes} from './types.ts';\n\nexport type Props = {\n embedRef: MutableRefObject<HTMLMediaElement | null>;\n playMode: keyof typeof PlayModes;\n};\n\nexport const useTime = ({embedRef, playMode}: Props) => {\n const [currentTime, setCurrentTime] = useState(0);\n\n useEffect(() => {\n const handler = () => {\n embedRef.current?.currentTime &&\n playMode === PlayModes.play &&\n embedRef.current?.currentTime !== currentTime &&\n setCurrentTime(embedRef.current?.currentTime);\n };\n const intervalId = setInterval(handler, 1000);\n return () => {\n clearInterval(intervalId);\n };\n }, [currentTime, playMode, embedRef]);\n\n const handleSetTime = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n setCurrentTime(event.target.valueAsNumber);\n embedRef.current!.currentTime = event.target.valueAsNumber;\n },\n [embedRef]\n );\n\n return {handleSetTime, currentTime, setCurrentTime};\n};\n"],"names":["useTime","embedRef","playMode","currentTime","setCurrentTime","useState","useEffect","intervalId","_a","PlayModes","_b","_c","useCallback","event"],"mappings":"+IAUaA,EAAU,CAAC,CAAC,SAAAC,EAAU,SAAAC,KAAqB,CACpD,KAAM,CAACC,EAAaC,CAAc,EAAIC,EAAAA,SAAS,CAAC,EAEhDC,OAAAA,EAAAA,UAAU,IAAM,CAON,MAAAC,EAAa,YANH,IAAM,YAClBC,EAAAP,EAAS,UAAT,MAAAO,EAAkB,aACdN,IAAaO,EAAAA,UAAU,QACvBC,EAAAT,EAAS,UAAT,YAAAS,EAAkB,eAAgBP,GAClCC,GAAeO,EAAAV,EAAS,UAAT,YAAAU,EAAkB,WAAW,CACpD,EACwC,GAAI,EAC5C,MAAO,IAAM,CACT,cAAcJ,CAAU,CAC5B,CACD,EAAA,CAACJ,EAAaD,EAAUD,CAAQ,CAAC,EAU7B,CAAC,cARcW,EAAA,YACjBC,GAAyC,CACvBT,EAAAS,EAAM,OAAO,aAAa,EAChCZ,EAAA,QAAS,YAAcY,EAAM,OAAO,aACjD,EACA,CAACZ,CAAQ,CACb,EAEuB,YAAAE,EAAa,eAAAC,CAAc,CACtD"}