remotion
Version:
Make videos programmatically
64 lines (63 loc) • 2.94 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSingleChildComponent = exports.getStackForControls = exports.setStackForControls = exports.resolveComponentIdentity = exports.setComponentIdentityResolver = exports.getSequenceComponent = exports.setSequenceComponent = exports.addSequenceStackTraces = exports.getComponentsToAddStacksTo = exports.REMOTION_INTERNAL_STACK_PROP = void 0;
const react_1 = __importDefault(require("react"));
const componentsToAddStacksTo = [];
let sequenceComponent = null;
const stacksByControls = new WeakMap();
// Studio installs a resolver that maps refreshed component implementations to
// the stable family object maintained by React Refresh.
let componentIdentityResolver = null;
exports.REMOTION_INTERNAL_STACK_PROP = '_remotionInternalStack';
const getComponentsToAddStacksTo = () => componentsToAddStacksTo;
exports.getComponentsToAddStacksTo = getComponentsToAddStacksTo;
const addSequenceStackTraces = (component) => {
componentsToAddStacksTo.push(component);
};
exports.addSequenceStackTraces = addSequenceStackTraces;
const setSequenceComponent = (component) => {
sequenceComponent = component;
};
exports.setSequenceComponent = setSequenceComponent;
const getSequenceComponent = () => sequenceComponent;
exports.getSequenceComponent = getSequenceComponent;
const setComponentIdentityResolver = (resolver) => {
componentIdentityResolver = resolver;
};
exports.setComponentIdentityResolver = setComponentIdentityResolver;
const resolveComponentIdentity = (component) => {
var _a;
return (_a = componentIdentityResolver === null || componentIdentityResolver === void 0 ? void 0 : componentIdentityResolver(component)) !== null && _a !== void 0 ? _a : component;
};
exports.resolveComponentIdentity = resolveComponentIdentity;
const setStackForControls = (controls, stack) => {
if (stack === undefined) {
stacksByControls.delete(controls);
return;
}
stacksByControls.set(controls, stack);
};
exports.setStackForControls = setStackForControls;
const getStackForControls = (controls) => {
var _a;
return (_a = stacksByControls.get(controls)) !== null && _a !== void 0 ? _a : null;
};
exports.getStackForControls = getStackForControls;
const getSingleChildComponent = (children) => {
const mountedChildren = react_1.default.Children.toArray(children);
if (mountedChildren.length !== 1) {
return null;
}
const child = mountedChildren[0];
if (!react_1.default.isValidElement(child)) {
return null;
}
if (typeof child.type !== 'function' && typeof child.type !== 'object') {
return null;
}
return (0, exports.resolveComponentIdentity)(child.type);
};
exports.getSingleChildComponent = getSingleChildComponent;