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"],"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,EAAAA,YACdC,GAAoC,CACjCL,EAAYE,EAAAA,UAAU,IAAI,EAC1BN,EAAOS,CAAK,CAChB,EACA,CAACT,CAAM,CAAA,EAGLU,EAAcF,EAAAA,YACfC,GAAoC,CACjCL,EAAYE,EAAAA,UAAU,KAAK,EAC3BL,EAAQQ,CAAK,CACjB,EACA,CAACR,CAAO,CAAA,EAGNU,EAAmBH,EAAAA,YAAY,IAAM,CACnCL,IAAaG,EAAAA,UAAU,MACvBJ,EAAS,SAAS,MAAA,EAClBE,EAAYE,EAAAA,UAAU,KAAK,IAE3BJ,EAAS,SAAS,KAAA,EAClBE,EAAYE,EAAAA,UAAU,IAAI,EAElC,EAAG,CAACH,EAAUD,CAAQ,CAAC,EAEvB,MAAO,CAAC,WAAAK,EAAY,YAAAG,EAAa,iBAAAC,EAAkB,SAAAR,CAAA,CACvD"}