UNPKG

koval-ui

Version:

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

1 lines 1.91 kB
{"version":3,"file":"useSound.cjs","sources":["../../../../src/internal/MediaEmbeds/useSound.ts"],"sourcesContent":["import {type ChangeEvent, type MutableRefObject, useCallback, useEffect, useState} from 'react';\n\nexport type Props = {\n embedRef: MutableRefObject<HTMLMediaElement | null>;\n mutedProp: boolean;\n};\n\nexport const useSound = ({embedRef, mutedProp}: Props) => {\n const [volume, setVolume] = useState(0);\n const handleSetVolume = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n setVolume(event.target.valueAsNumber);\n embedRef.current!.volume = event.target.valueAsNumber;\n },\n [embedRef]\n );\n\n const [muted, setMuted] = useState(mutedProp);\n\n useEffect(() => {\n setMuted(mutedProp);\n }, [mutedProp]);\n\n const handleToggleMuted = useCallback(() => {\n setMuted(!muted);\n }, [muted]);\n\n useEffect(() => {\n setVolume(Number(embedRef.current?.volume || 0));\n }, [muted, embedRef]);\n\n return {volume, handleSetVolume, muted, handleToggleMuted, setVolume};\n};\n"],"names":["useSound","embedRef","mutedProp","volume","setVolume","useState","handleSetVolume","useCallback","event","muted","setMuted","useEffect","handleToggleMuted","_a"],"mappings":"sHAOaA,EAAW,CAAC,CAAC,SAAAC,EAAU,UAAAC,KAAsB,CACtD,KAAM,CAACC,EAAQC,CAAS,EAAIC,EAAAA,SAAS,CAAC,EAChCC,EAAkBC,EAAA,YACnBC,GAAyC,CAC5BJ,EAAAI,EAAM,OAAO,aAAa,EAC3BP,EAAA,QAAS,OAASO,EAAM,OAAO,aAC5C,EACA,CAACP,CAAQ,CACb,EAEM,CAACQ,EAAOC,CAAQ,EAAIL,EAAAA,SAASH,CAAS,EAE5CS,EAAAA,UAAU,IAAM,CACZD,EAASR,CAAS,CAAA,EACnB,CAACA,CAAS,CAAC,EAER,MAAAU,EAAoBL,EAAAA,YAAY,IAAM,CACxCG,EAAS,CAACD,CAAK,CAAA,EAChB,CAACA,CAAK,CAAC,EAEVE,OAAAA,EAAAA,UAAU,IAAM,OACZP,EAAU,SAAOS,EAAAZ,EAAS,UAAT,YAAAY,EAAkB,SAAU,CAAC,CAAC,CAAA,EAChD,CAACJ,EAAOR,CAAQ,CAAC,EAEb,CAAC,OAAAE,EAAQ,gBAAAG,EAAiB,MAAAG,EAAO,kBAAAG,EAAmB,UAAAR,CAAS,CACxE"}