remotion
Version:
Make videos programmatically
39 lines (38 loc) • 1.5 kB
JavaScript
;
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;