UNPKG

remotion

Version:

Make videos programmatically

39 lines (38 loc) 1.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useSyncVolumeWithMediaTag = void 0; const react_1 = require("react"); const is_approximately_the_same_js_1 = require("./is-approximately-the-same.js"); const volume_prop_js_1 = require("./volume-prop.js"); const useSyncVolumeWithMediaTag = ({ volumePropFrame, volume, mediaVolume, mediaRef, }) => { const adjustVolume = (0, react_1.useCallback)(() => { if (!mediaRef.current) { return; } const userPreferredVolume = (0, volume_prop_js_1.evaluateVolume)({ frame: volumePropFrame, volume, mediaVolume, }); if (!(0, is_approximately_the_same_js_1.isApproximatelyTheSame)(userPreferredVolume, mediaRef.current.volume)) { mediaRef.current.volume = Math.min(userPreferredVolume, 1); } }, [mediaRef, mediaVolume, volume, volumePropFrame]); (0, react_1.useEffect)(() => { adjustVolume(); }, [adjustVolume]); (0, react_1.useEffect)(() => { const media = mediaRef.current; if (!media) { return; } const handleVolumeChange = () => { adjustVolume(); }; media.addEventListener('volumechange', handleVolumeChange); return () => { media.removeEventListener('volumechange', handleVolumeChange); }; }, [adjustVolume, mediaRef]); }; exports.useSyncVolumeWithMediaTag = useSyncVolumeWithMediaTag;