@remotion/studio
Version:
APIs for interacting with the Remotion Studio
73 lines (72 loc) • 3.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CurrentCompositionKeybindings = exports.TitleUpdater = void 0;
const react_1 = require("react");
const remotion_1 = require("remotion");
const client_id_1 = require("../helpers/client-id");
const document_title_1 = require("../helpers/document-title");
const show_browser_rendering_1 = require("../helpers/show-browser-rendering");
const use_keybinding_1 = require("../helpers/use-keybinding");
const NotificationCenter_1 = require("./Notifications/NotificationCenter");
const context_1 = require("./RenderQueue/context");
const TitleUpdater = () => {
const renderQueue = (0, react_1.useContext)(context_1.RenderQueueContext);
const { canvasContent } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
const { jobs } = renderQueue;
(0, react_1.useEffect)(() => {
if (!canvasContent) {
(0, document_title_1.setCurrentCanvasContentId)(null);
return;
}
if (canvasContent.type === 'composition') {
(0, document_title_1.setCurrentCanvasContentId)(canvasContent.compositionId);
return;
}
if (canvasContent.type === 'output') {
(0, document_title_1.setCurrentCanvasContentId)(canvasContent.path);
return;
}
if (canvasContent.type === 'output-blob') {
(0, document_title_1.setCurrentCanvasContentId)(canvasContent.displayName);
return;
}
(0, document_title_1.setCurrentCanvasContentId)(canvasContent.asset);
}, [canvasContent]);
(0, react_1.useEffect)(() => {
(0, document_title_1.setRenderJobs)(jobs);
}, [jobs]);
return null;
};
exports.TitleUpdater = TitleUpdater;
const CurrentCompositionKeybindings = ({ readOnlyStudio }) => {
const keybindings = (0, use_keybinding_1.useKeybinding)();
const video = remotion_1.Internals.useVideo();
const { type } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx).previewServerState;
const openRenderModal = (0, react_1.useCallback)(() => {
if (!video) {
return;
}
if (type !== 'connected' && !show_browser_rendering_1.SHOW_BROWSER_RENDERING && !readOnlyStudio) {
(0, NotificationCenter_1.showNotification)('Studio server is offline', 2000);
return;
}
const renderButton = document.getElementById('render-modal-button');
renderButton.click();
}, [readOnlyStudio, type, video]);
(0, react_1.useEffect)(() => {
const binding = keybindings.registerKeybinding({
event: 'keydown',
key: 'r',
commandCtrlKey: false,
callback: openRenderModal,
preventDefault: true,
triggerIfInputFieldFocused: false,
keepRegisteredWhenNotHighestContext: false,
});
return () => {
binding.unregister();
};
}, [keybindings, openRenderModal]);
return null;
};
exports.CurrentCompositionKeybindings = CurrentCompositionKeybindings;