@remotion/renderer
Version:
Render Remotion videos using Node.js or Bun
40 lines (39 loc) • 1.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ensureFramesInOrder = void 0;
const ensureFramesInOrder = (framesToRender) => {
let [frameToStitch] = framesToRender;
const finalFrame = framesToRender[framesToRender.length - 1];
let waiters = [];
const resolveWaiters = () => {
for (const waiter of waiters.slice(0)) {
if (frameToStitch === waiter.forFrame) {
waiter.resolve();
waiters = waiters.filter((w) => w.id !== waiter.id);
}
}
};
const waitForRightTimeOfFrameToBeInserted = (frameToBe) => {
return new Promise((resolve) => {
waiters.push({
id: String(Math.random()),
forFrame: frameToBe,
resolve,
});
resolveWaiters();
});
};
const setFrameToStitch = (f) => {
frameToStitch = f;
resolveWaiters();
};
const waitForFinish = async () => {
await waitForRightTimeOfFrameToBeInserted(finalFrame + 1);
};
return {
waitForRightTimeOfFrameToBeInserted,
setFrameToStitch,
waitForFinish,
};
};
exports.ensureFramesInOrder = ensureFramesInOrder;