remotion
Version:
Make videos programmatically
41 lines (40 loc) • 1.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useVideo = void 0;
const react_1 = require("react");
const CompositionManagerContext_js_1 = require("./CompositionManagerContext.js");
const ResolveCompositionConfig_js_1 = require("./ResolveCompositionConfig.js");
const useVideo = () => {
var _a;
const { canvasContent, compositions, currentCompositionMetadata } = (0, react_1.useContext)(CompositionManagerContext_js_1.CompositionManager);
const selected = compositions.find((c) => {
return ((canvasContent === null || canvasContent === void 0 ? void 0 : canvasContent.type) === 'composition' &&
c.id === canvasContent.compositionId);
});
const resolved = (0, ResolveCompositionConfig_js_1.useResolvedVideoConfig)((_a = selected === null || selected === void 0 ? void 0 : selected.id) !== null && _a !== void 0 ? _a : null);
return (0, react_1.useMemo)(() => {
var _a;
if (!resolved) {
return null;
}
if (resolved.type === 'error') {
return null;
}
if (resolved.type === 'loading') {
return null;
}
if (!selected) {
return null;
}
return {
...resolved.result,
defaultProps: (_a = selected.defaultProps) !== null && _a !== void 0 ? _a : {},
id: selected.id,
// We override the selected metadata with the metadata that was passed to renderMedia(),
// and don't allow it to be changed during render anymore
...(currentCompositionMetadata !== null && currentCompositionMetadata !== void 0 ? currentCompositionMetadata : {}),
component: selected.component,
};
}, [currentCompositionMetadata, resolved, selected]);
};
exports.useVideo = useVideo;