koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
1 lines • 1.97 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","PlayModes","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,CAOZ,MAAMC,EAAa,YANH,IAAM,CAClBN,EAAS,SAAS,aACdC,IAAaM,EAAAA,UAAU,MACvBP,EAAS,SAAS,cAAgBE,GAClCC,EAAeH,EAAS,SAAS,WAAW,CACpD,EACwC,GAAI,EAC5C,MAAO,IAAM,CACT,cAAcM,CAAU,CAC5B,CACJ,EAAG,CAACJ,EAAaD,EAAUD,CAAQ,CAAC,EAU7B,CAAC,cARcQ,EAAAA,YACjBC,GAAyC,CACtCN,EAAeM,EAAM,OAAO,aAAa,EACzCT,EAAS,QAAS,YAAcS,EAAM,OAAO,aACjD,EACA,CAACT,CAAQ,CAAA,EAGU,YAAAE,EAAa,eAAAC,CAAA,CACxC"}