remotion
Version:
Render videos in React
68 lines • 2.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Composition = void 0;
const react_1 = require("react");
const CompositionManager_1 = require("./CompositionManager");
const nonce_1 = require("./nonce");
const register_root_1 = require("./register-root");
const use_lazy_component_1 = require("./use-lazy-component");
const validate_dimensions_1 = require("./validation/validate-dimensions");
const validate_duration_in_frames_1 = require("./validation/validate-duration-in-frames");
const validate_fps_1 = require("./validation/validate-fps");
const Composition = ({ width, height, fps, durationInFrames, id, defaultProps: props, ...compProps }) => {
const { registerComposition, unregisterComposition } = react_1.useContext(CompositionManager_1.CompositionManager);
const lazy = use_lazy_component_1.useLazyComponent(compProps);
const nonce = nonce_1.useNonce();
react_1.useEffect(() => {
// Ensure it's a URL safe id
if (!id) {
throw new Error('No id for composition passed.');
}
if (!id.match(/^([a-zA-Z0-9-])+$/g)) {
throw new Error(`Composition id can only contain a-z, A-Z, 0-9 and -. You passed ${id}`);
}
validate_dimensions_1.validateDimension(width, 'width');
validate_dimensions_1.validateDimension(height, 'height');
validate_duration_in_frames_1.validateDurationInFrames(durationInFrames);
validate_fps_1.validateFps(fps);
registerComposition({
durationInFrames,
fps,
height,
width,
id,
component: lazy,
props,
nonce,
});
if (register_root_1.getIsEvaluation()) {
register_root_1.addStaticComposition({
component: lazy,
durationInFrames,
fps,
height,
id,
width,
nonce,
});
}
return () => {
unregisterComposition(id);
register_root_1.removeStaticComposition(id);
};
}, [
durationInFrames,
fps,
height,
lazy,
id,
props,
registerComposition,
unregisterComposition,
width,
nonce,
]);
return null;
};
exports.Composition = Composition;
//# sourceMappingURL=Composition.js.map