UNPKG

koval-ui

Version:

React components collection with minimalistic design. Supports theming, layout, and input validation.

1 lines 2.24 kB
{"version":3,"file":"usePlay.cjs","sources":["../../../../src/internal/MediaEmbeds/usePlay.ts"],"sourcesContent":["import type {SyntheticEvent, MutableRefObject} from 'react';\nimport {useCallback, useState} from 'react';\n\nimport {PlayModes} from './types.ts';\n\nexport type Props<TElement> = {\n onPlay: (event: SyntheticEvent<TElement>) => void;\n onPause: (event: SyntheticEvent<TElement>) => void;\n embedRef: MutableRefObject<TElement | null>;\n};\n\nexport const usePlay = <TElement extends HTMLMediaElement>({\n onPlay,\n onPause,\n embedRef,\n}: Props<TElement>) => {\n const [playMode, setPlayMode] = useState<PlayModes>(PlayModes.pristine);\n\n const handlePlay = useCallback(\n (event: SyntheticEvent<TElement>) => {\n setPlayMode(PlayModes.play);\n onPlay(event);\n },\n [onPlay]\n );\n\n const handlePause = useCallback(\n (event: SyntheticEvent<TElement>) => {\n setPlayMode(PlayModes.pause);\n onPause(event);\n },\n [onPause]\n );\n\n const handleTogglePlay = useCallback(() => {\n if (playMode === PlayModes.play) {\n embedRef.current?.pause();\n setPlayMode(PlayModes.pause);\n } else {\n embedRef.current?.play();\n setPlayMode(PlayModes.play);\n }\n }, [playMode, embedRef]);\n\n return {handlePlay, handlePause, handleTogglePlay, playMode};\n};\n"],"names":["usePlay","onPlay","onPause","embedRef","playMode","setPlayMode","useState","PlayModes","handlePlay","useCallback","event","handlePause","handleTogglePlay","_a","_b"],"mappings":"+IAWaA,EAAU,CAAoC,CACvD,OAAAC,EACA,QAAAC,EACA,SAAAC,CACJ,IAAuB,CACnB,KAAM,CAACC,EAAUC,CAAW,EAAIC,EAAAA,SAAoBC,EAAAA,UAAU,QAAQ,EAEhEC,EAAaC,EAAA,YACdC,GAAoC,CACjCL,EAAYE,YAAU,IAAI,EAC1BN,EAAOS,CAAK,CAChB,EACA,CAACT,CAAM,CACX,EAEMU,EAAcF,EAAA,YACfC,GAAoC,CACjCL,EAAYE,YAAU,KAAK,EAC3BL,EAAQQ,CAAK,CACjB,EACA,CAACR,CAAO,CACZ,EAEMU,EAAmBH,EAAAA,YAAY,IAAM,SACnCL,IAAaG,YAAU,OACvBM,EAAAV,EAAS,UAAT,MAAAU,EAAkB,QAClBR,EAAYE,YAAU,KAAK,KAE3BO,EAAAX,EAAS,UAAT,MAAAW,EAAkB,OAClBT,EAAYE,YAAU,IAAI,EAC9B,EACD,CAACH,EAAUD,CAAQ,CAAC,EAEvB,MAAO,CAAC,WAAAK,EAAY,YAAAG,EAAa,iBAAAC,EAAkB,SAAAR,CAAQ,CAC/D"}