remotion
Version:
Make videos programmatically
38 lines (37 loc) • 1.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useSequenceRegistration = void 0;
const react_1 = require("react");
const SequenceManager_js_1 = require("./SequenceManager.js");
const useSequenceRegistration = ({ getSequence, id, }) => {
const { registerSequence, unregisterSequence, updateSequence } = (0, react_1.useContext)(SequenceManager_js_1.SequenceManager);
const getSequenceRef = (0, react_1.useRef)(getSequence);
getSequenceRef.current = getSequence;
const lastRegisteredGetterRef = (0, react_1.useRef)(null);
const registrationEnabled = getSequence !== null;
(0, react_1.useEffect)(() => {
if (!registrationEnabled) {
return;
}
const currentGetter = getSequenceRef.current;
if (currentGetter === null) {
throw new Error('Expected a sequence registration getter');
}
registerSequence(currentGetter());
lastRegisteredGetterRef.current = currentGetter;
return () => {
lastRegisteredGetterRef.current = null;
unregisterSequence(id);
};
}, [id, registerSequence, registrationEnabled, unregisterSequence]);
(0, react_1.useEffect)(() => {
if (getSequence === null ||
updateSequence === null ||
lastRegisteredGetterRef.current === getSequence) {
return;
}
updateSequence(getSequence());
lastRegisteredGetterRef.current = getSequence;
}, [getSequence, updateSequence]);
};
exports.useSequenceRegistration = useSequenceRegistration;