@remotion/studio 4.0.505 → 4.0.507
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/copy-render-output-to-asset.d.ts +4 -0
- package/dist/api/copy-render-output-to-asset.js +11 -0
- package/dist/api/install-package.d.ts +2 -3
- package/dist/api/install-package.js +1 -3
- package/dist/api/visual-control.d.ts +3 -0
- package/dist/api/visual-control.js +3 -0
- package/dist/components/AssetSelector.js +19 -4
- package/dist/components/AssetSelectorItem.js +3 -3
- package/dist/components/Canvas.js +2 -0
- package/dist/components/CodingAgentIcon.d.ts +4 -0
- package/dist/components/CodingAgentIcon.js +17 -0
- package/dist/components/CompositionSelector.js +1 -1
- package/dist/components/CompositionSelectorItem.js +1 -1
- package/dist/components/ConfigureDefaultEditorModal.d.ts +1 -1
- package/dist/components/ConfigureDefaultEditorModal.js +117 -69
- package/dist/components/ConfigureLicenseModal.d.ts +1 -3
- package/dist/components/ConfigureLicenseModal.js +105 -89
- package/dist/components/ConfirmationDialog.js +2 -2
- package/dist/components/ContextMenu.js +10 -8
- package/dist/components/Editor.js +2 -0
- package/dist/components/EditorContexts.js +6 -5
- package/dist/components/EffectPickerModal.js +1 -1
- package/dist/components/ExpandedTracksProvider.js +10 -53
- package/dist/components/GlobalKeybindings.js +3 -2
- package/dist/components/InlineCaptionInspector.d.ts +2 -2
- package/dist/components/InlineDropdown.d.ts +2 -1
- package/dist/components/InlineDropdown.js +10 -4
- package/dist/components/InspectorLocationCopy.js +8 -8
- package/dist/components/InspectorOpenInEditor.d.ts +2 -0
- package/dist/components/InspectorOpenInEditor.js +63 -49
- package/dist/components/InspectorPanel/AlignmentControls.js +5 -2
- package/dist/components/InspectorPanel/CompositionInspector.js +15 -1
- package/dist/components/InspectorPanel/ConnectedCompositionsSection.js +1 -1
- package/dist/components/InspectorPanel/EasingInspector.js +7 -4
- package/dist/components/InspectorPanel/KeyframeInspector.js +5 -1
- package/dist/components/InspectorPanel/SequenceInspectorHeader.d.ts +3 -0
- package/dist/components/InspectorPanel/SequenceInspectorHeader.js +22 -4
- package/dist/components/InspectorPanel/SequenceSelectionInspector.js +1 -1
- package/dist/components/InspectorPanel/common.d.ts +1 -0
- package/dist/components/InspectorPanel/common.js +2 -2
- package/dist/components/InspectorPanel/use-composition-actions.js +4 -1
- package/dist/components/InspectorSequenceSection.js +4 -4
- package/dist/components/InstallPackage.js +1 -1
- package/dist/components/Menu/MenuSectionHeader.d.ts +4 -0
- package/dist/components/Menu/MenuSectionHeader.js +20 -0
- package/dist/components/Menu/SubMenu.js +13 -2
- package/dist/components/Menu/menu-tree-context.d.ts +3 -0
- package/dist/components/Menu/menu-tree-context.js +13 -0
- package/dist/components/MenuBuildIndicator.js +1 -0
- package/dist/components/MenuToolbar.js +1 -1
- package/dist/components/ModalFooter.d.ts +1 -0
- package/dist/components/ModalFooter.js +6 -2
- package/dist/components/ModalHeader.js +1 -1
- package/dist/components/Modals.js +18 -7
- package/dist/components/ModalsProvider.js +5 -6
- package/dist/components/NewComposition/CodemodFooter.js +1 -1
- package/dist/components/NewComposition/ComboBox.d.ts +6 -1
- package/dist/components/NewComposition/DismissableModal.js +1 -1
- package/dist/components/NewComposition/MenuContent.js +27 -19
- package/dist/components/NewComposition/RenameStaticFile.js +1 -1
- package/dist/components/NewComposition/menu-typeahead.js +2 -2
- package/dist/components/OverrideInputProps.js +1 -1
- package/dist/components/PlayPause.js +2 -1
- package/dist/components/PlaybackKeyboardShortcutsManager.js +7 -5
- package/dist/components/Preview.js +29 -4
- package/dist/components/PreviewToolbarOverflowButton.js +4 -2
- package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +1 -1
- package/dist/components/QuickSwitcher/QuickSwitcherContent.js +1 -1
- package/dist/components/RenderButton.d.ts +3 -3
- package/dist/components/RenderButton.js +42 -7
- package/dist/components/RenderModal/RenderStatusModal.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodEnumEditor.d.ts +1 -0
- package/dist/components/RenderModal/SchemaEditor/ZodEnumEditor.js +2 -2
- package/dist/components/RenderModal/SchemaEditor/ZodOrNullishEditor.js +3 -3
- package/dist/components/RenderModal/SchemaEditor/ZodSwitch.js +1 -1
- package/dist/components/RenderModal/ServerRenderModal.js +5 -1
- package/dist/components/RenderModal/WebRenderModal.js +3 -2
- package/dist/components/RenderQueue/RenderQueueError.js +1 -1
- package/dist/components/RenderQueue/RenderQueueItem.js +8 -2
- package/dist/components/RenderQueue/RenderQueueItemStatus.js +1 -1
- package/dist/components/RenderQueue/RenderQueueProgressMessage.js +1 -1
- package/dist/components/RenderQueue/RenderQueueRepeat.js +1 -1
- package/dist/components/RenderQueue/actions.d.ts +4 -2
- package/dist/components/RenderQueue/actions.js +4 -2
- package/dist/components/RenderQueue/index.js +3 -4
- package/dist/components/RenderQueue/use-render-output-file-drag.d.ts +8 -0
- package/dist/components/RenderQueue/use-render-output-file-drag.js +121 -0
- package/dist/components/SegmentedControl.js +0 -1
- package/dist/components/SelectedOutlineElement.d.ts +14 -17
- package/dist/components/SelectedOutlineElement.js +113 -931
- package/dist/components/SelectedOutlineKeyboardControls.d.ts +7 -0
- package/dist/components/SelectedOutlineKeyboardControls.js +261 -0
- package/dist/components/SelectedOutlineOverlay.d.ts +6 -13
- package/dist/components/SelectedOutlineOverlay.js +360 -832
- package/dist/components/SelectedOutlinePolygon.d.ts +25 -0
- package/dist/components/SelectedOutlinePolygon.js +359 -0
- package/dist/components/SelectedOutlineRenderer.d.ts +18 -0
- package/dist/components/SelectedOutlineRenderer.js +208 -0
- package/dist/components/SelectedOutlineRotationCornerHandle.d.ts +16 -0
- package/dist/components/SelectedOutlineRotationCornerHandle.js +269 -0
- package/dist/components/SelectedOutlineScaleEdgeLine.d.ts +16 -0
- package/dist/components/SelectedOutlineScaleEdgeLine.js +211 -0
- package/dist/components/SelectedOutlineSnapIndicators.d.ts +9 -0
- package/dist/components/SelectedOutlineSnapIndicators.js +29 -0
- package/dist/components/SelectedOutlineTransformOriginHandle.d.ts +9 -0
- package/dist/components/SelectedOutlineTransformOriginHandle.js +286 -0
- package/dist/components/SelectedOutlineUvControls.d.ts +3 -9
- package/dist/components/SelectedOutlineUvControls.js +57 -12
- package/dist/components/SettingsContext.d.ts +15 -0
- package/dist/components/SettingsContext.js +116 -0
- package/dist/components/SettingsModal.d.ts +7 -0
- package/dist/components/SettingsModal.js +56 -0
- package/dist/components/SettingsModalFooter.d.ts +2 -0
- package/dist/components/SettingsModalFooter.js +44 -0
- package/dist/components/ShowOutlinesProvider.js +2 -3
- package/dist/components/SidebarRenderButton.js +1 -1
- package/dist/components/SvgImportDialog.js +2 -2
- package/dist/components/TimeValue.js +1 -1
- package/dist/components/Timeline/EasingEditorModal.js +66 -22
- package/dist/components/Timeline/Timeline.js +23 -5
- package/dist/components/Timeline/TimelineAssetField.js +1 -1
- package/dist/components/Timeline/TimelineDragHandler.js +3 -3
- package/dist/components/Timeline/TimelineDuplicateCount.d.ts +4 -0
- package/dist/components/Timeline/TimelineDuplicateCount.js +28 -0
- package/dist/components/Timeline/TimelineEffectPropItem.js +5 -3
- package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +3 -23
- package/dist/components/Timeline/TimelineExpandedRow.d.ts +4 -2
- package/dist/components/Timeline/TimelineExpandedRow.js +2 -2
- package/dist/components/Timeline/TimelineExpandedTrackKeyframes.d.ts +4 -2
- package/dist/components/Timeline/TimelineExpandedTrackKeyframes.js +11 -1
- package/dist/components/Timeline/TimelineFontFamilyField.js +3 -1
- package/dist/components/Timeline/TimelineKeyframeControls.js +1 -0
- package/dist/components/Timeline/TimelineSelection.js +1 -0
- package/dist/components/Timeline/TimelineSequence.js +28 -25
- package/dist/components/Timeline/TimelineSequenceItem.js +74 -58
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +1 -1
- package/dist/components/Timeline/TimelineTrack.js +2 -1
- package/dist/components/Timeline/get-sequence-context-menu-items.d.ts +6 -3
- package/dist/components/Timeline/get-sequence-context-menu-items.js +58 -53
- package/dist/components/Timeline/reset-selected-timeline-props.js +1 -1
- package/dist/components/Timeline/should-subscribe-to-sequence-props.d.ts +1 -1
- package/dist/components/Timeline/timeline-asset-link.d.ts +2 -2
- package/dist/components/Timeline/timeline-asset-link.js +2 -2
- package/dist/components/Timeline/use-expanded-track-keyframe-rows.js +38 -2
- package/dist/components/Timeline/{use-open-sequence-in-editor.d.ts → use-open-sequence-in-apps.d.ts} +4 -1
- package/dist/components/Timeline/{use-open-sequence-in-editor.js → use-open-sequence-in-apps.js} +20 -4
- package/dist/components/Timeline/use-timeline-asset-drop.js +1 -0
- package/dist/components/Timeline/use-timeline-expanded-tree.d.ts +5 -0
- package/dist/components/Timeline/use-timeline-expanded-tree.js +50 -1
- package/dist/components/Timeline/use-timeline-height.js +20 -0
- package/dist/components/TimelineInOutToggle.js +5 -1
- package/dist/components/TopPanel.js +16 -0
- package/dist/components/UpdateCheck.js +1 -1
- package/dist/components/effect-drag-and-drop.js +1 -1
- package/dist/components/get-open-in-menu-items.d.ts +12 -0
- package/dist/components/get-open-in-menu-items.js +83 -0
- package/dist/components/handle-drop.d.ts +2 -1
- package/dist/components/handle-drop.js +12 -2
- package/dist/components/import-assets.d.ts +18 -6
- package/dist/components/import-assets.js +76 -32
- package/dist/components/selected-outline-measurement.d.ts +2 -2
- package/dist/components/selected-outline-order.d.ts +12 -0
- package/dist/components/selected-outline-order.js +251 -0
- package/dist/components/selected-outline-types.d.ts +9 -10
- package/dist/components/svg-point-to-client-point.d.ts +2 -0
- package/dist/components/svg-point-to-client-point.js +10 -0
- package/dist/components/use-auto-save-config.d.ts +8 -0
- package/dist/components/use-auto-save-config.js +74 -0
- package/dist/components/use-default-editor-info.d.ts +1 -0
- package/dist/components/use-default-editor-info.js +10 -30
- package/dist/esm/{chunk-jefhcs5z.js → chunk-fgedsvhb.js} +1 -2
- package/dist/esm/{chunk-7pgk8h5m.js → chunk-ptnd65a9.js} +14596 -12725
- package/dist/esm/internals.mjs +14595 -12724
- package/dist/esm/previewEntry.mjs +12726 -10855
- package/dist/esm/renderEntry.mjs +2 -2
- package/dist/helpers/are-sequence-node-path-infos-equal.d.ts +2 -0
- package/dist/helpers/are-sequence-node-path-infos-equal.js +27 -0
- package/dist/helpers/calculate-timeline.js +3 -3
- package/dist/helpers/client-id.d.ts +3 -1
- package/dist/helpers/client-id.js +28 -4
- package/dist/helpers/format-file-location.d.ts +1 -1
- package/dist/helpers/format-file-location.js +3 -3
- package/dist/helpers/install-required-package.d.ts +3 -3
- package/dist/helpers/install-required-package.js +1 -6
- package/dist/helpers/migrate-expanded-tracks-for-subscription-key.js +3 -3
- package/dist/helpers/open-in-editor.d.ts +1 -0
- package/dist/helpers/open-in-editor.js +5 -1
- package/dist/helpers/studio-fit-padding.d.ts +1 -1
- package/dist/helpers/studio-fit-padding.js +1 -1
- package/dist/helpers/studio-runtime-config.js +3 -0
- package/dist/helpers/timeline-layout.d.ts +2 -1
- package/dist/helpers/timeline-layout.js +5 -2
- package/dist/helpers/timeline-node-path-key.d.ts +2 -0
- package/dist/helpers/timeline-node-path-key.js +3 -1
- package/dist/helpers/use-asset-drag-events.d.ts +2 -1
- package/dist/helpers/use-asset-drag-events.js +14 -6
- package/dist/helpers/use-menu-structure.js +25 -35
- package/dist/helpers/use-runtime-values.d.ts +9 -0
- package/dist/helpers/use-runtime-values.js +76 -0
- package/dist/icons/apps.d.ts +2 -0
- package/dist/icons/apps.js +7 -0
- package/dist/icons/browse-elements.d.ts +4 -0
- package/dist/icons/browse-elements.js +10 -0
- package/dist/state/modals.d.ts +5 -6
- package/dist/state/modals.js +5 -3
- package/dist/state/timeline-sequence-hover.d.ts +9 -3
- package/dist/state/timeline-sequence-hover.js +63 -12
- package/package.json +12 -12
|
@@ -39,7 +39,7 @@ const flex = {
|
|
|
39
39
|
const MenuToolbar = ({ readOnlyStudio }) => {
|
|
40
40
|
const [selected, setSelected] = (0, react_1.useState)(null);
|
|
41
41
|
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
42
|
-
const { setSelectedModal } = (0, react_1.useContext)(modals_1.
|
|
42
|
+
const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
|
|
43
43
|
const browserStudioOperations = (0, browser_studio_operations_1.getBrowserStudioOperations)();
|
|
44
44
|
const canUndoAndRedo = !readOnlyStudio ||
|
|
45
45
|
(previewServerState.type === 'connected' &&
|
|
@@ -10,7 +10,11 @@ const content = {
|
|
|
10
10
|
fontSize: 13,
|
|
11
11
|
minWidth: 500,
|
|
12
12
|
};
|
|
13
|
-
const ModalFooterContainer = ({ children, style }) => {
|
|
14
|
-
return (jsx_runtime_1.jsx("div", { style: {
|
|
13
|
+
const ModalFooterContainer = ({ children, noBorder, style }) => {
|
|
14
|
+
return (jsx_runtime_1.jsx("div", { style: {
|
|
15
|
+
...content,
|
|
16
|
+
...style,
|
|
17
|
+
borderTop: noBorder ? undefined : colors_1.BORDER_BLACK,
|
|
18
|
+
}, children: children }));
|
|
15
19
|
};
|
|
16
20
|
exports.ModalFooterContainer = ModalFooterContainer;
|
|
@@ -24,7 +24,7 @@ const icon = {
|
|
|
24
24
|
width: 20,
|
|
25
25
|
};
|
|
26
26
|
const ModalHeader = ({ title, onClose }) => {
|
|
27
|
-
const { setSelectedModal } = (0, react_1.useContext)(modals_1.
|
|
27
|
+
const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
|
|
28
28
|
const onPress = (0, react_1.useCallback)(() => {
|
|
29
29
|
setSelectedModal(null);
|
|
30
30
|
}, [setSelectedModal]);
|
|
@@ -12,8 +12,6 @@ const studio_runtime_config_1 = require("../helpers/studio-runtime-config");
|
|
|
12
12
|
const modals_1 = require("../state/modals");
|
|
13
13
|
const z_index_1 = require("../state/z-index");
|
|
14
14
|
const AskAiModal_1 = require("./AskAiModal");
|
|
15
|
-
const ConfigureDefaultEditorModal_1 = require("./ConfigureDefaultEditorModal");
|
|
16
|
-
const ConfigureLicenseModal_1 = require("./ConfigureLicenseModal");
|
|
17
15
|
const ConfirmationDialog_1 = require("./ConfirmationDialog");
|
|
18
16
|
const EffectPickerModal_1 = require("./EffectPickerModal");
|
|
19
17
|
const InstallPackage_1 = require("./InstallPackage");
|
|
@@ -31,16 +29,29 @@ const QuickSwitcher_1 = __importDefault(require("./QuickSwitcher/QuickSwitcher")
|
|
|
31
29
|
const RenderStatusModal_1 = require("./RenderModal/RenderStatusModal");
|
|
32
30
|
const ServerRenderModal_1 = require("./RenderModal/ServerRenderModal");
|
|
33
31
|
const WebRenderModal_1 = require("./RenderModal/WebRenderModal");
|
|
32
|
+
const SettingsModal_1 = require("./SettingsModal");
|
|
34
33
|
const SvgImportDialog_1 = require("./SvgImportDialog");
|
|
35
34
|
const UpdateModal_1 = require("./UpdateModal/UpdateModal");
|
|
36
35
|
const Modals = ({ readOnlyStudio }) => {
|
|
37
36
|
var _a;
|
|
38
|
-
const
|
|
37
|
+
const modalContextType = (0, react_1.useContext)(modals_1.SelectedModalContext);
|
|
38
|
+
const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
|
|
39
39
|
const { currentZIndex } = (0, z_index_1.useZIndex)();
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
const { previewServerState, subscribeToEvent } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
41
|
+
const canRender = previewServerState.type === 'connected';
|
|
42
|
+
(0, react_1.useEffect)(() => {
|
|
43
|
+
return subscribeToEvent('license-key-install-request', (event) => {
|
|
44
|
+
if (event.type !== 'license-key-install-request') {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
setSelectedModal({
|
|
48
|
+
type: 'settings',
|
|
49
|
+
initialTab: 'license',
|
|
50
|
+
initialPublicLicenseKey: event.licenseKey,
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
}, [setSelectedModal, subscribeToEvent]);
|
|
54
|
+
return react_dom_1.default.createPortal(jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [modalContextType && modalContextType.type === 'new-comp' && (jsx_runtime_1.jsx(NewComposition_1.NewComposition, { folderName: modalContextType.folderName, parentName: modalContextType.parentName, stack: modalContextType.stack })), modalContextType && modalContextType.type === 'new-folder' && (jsx_runtime_1.jsx(NewFolder_1.NewFolder, { parentName: modalContextType.parentName, stack: modalContextType.stack })), modalContextType && modalContextType.type === 'duplicate-comp' && (jsx_runtime_1.jsx(DuplicateComposition_1.DuplicateComposition, { compositionType: modalContextType.compositionType, compositionId: modalContextType.compositionId })), modalContextType && modalContextType.type === 'delete-comp' && (jsx_runtime_1.jsx(DeleteComposition_1.DeleteComposition, { compositionId: modalContextType.compositionId })), modalContextType && modalContextType.type === 'rename-comp' && (jsx_runtime_1.jsx(RenameComposition_1.RenameComposition, { compositionId: modalContextType.compositionId })), modalContextType && modalContextType.type === 'delete-folder' && (jsx_runtime_1.jsx(DeleteFolder_1.DeleteFolder, { folderName: modalContextType.folderName, parentName: modalContextType.parentName, stack: modalContextType.stack })), modalContextType && modalContextType.type === 'rename-folder' && (jsx_runtime_1.jsx(RenameFolder_1.RenameFolder, { folderName: modalContextType.folderName, parentName: modalContextType.parentName, stack: modalContextType.stack })), modalContextType && modalContextType.type === 'rename-static-file' && (jsx_runtime_1.jsx(RenameStaticFile_1.RenameStaticFileModal, { relativePath: modalContextType.relativePath })), modalContextType && modalContextType.type === 'input-props-override' && (jsx_runtime_1.jsx(OverrideInputProps_1.OverrideInputPropsModal, {})), modalContextType && modalContextType.type === 'settings' && (jsx_runtime_1.jsx(SettingsModal_1.SettingsModal, { initialTab: modalContextType.initialTab, initialPublicLicenseKey: modalContextType.initialPublicLicenseKey }, `${modalContextType.initialTab}-${modalContextType.initialPublicLicenseKey}`)), modalContextType && modalContextType.type === 'web-render' && (jsx_runtime_1.jsx(WebRenderModal_1.WebRenderModalWithLoader, { ...modalContextType })), modalContextType &&
|
|
44
55
|
modalContextType.type === 'server-render' &&
|
|
45
56
|
(canRender || modalContextType.readOnlyStudio) ? (jsx_runtime_1.jsx(ServerRenderModal_1.RenderModalWithLoader, { readOnlyStudio: (_a = modalContextType.readOnlyStudio) !== null && _a !== void 0 ? _a : false, initialFrame: modalContextType.initialFrame, initialDarkMode: modalContextType.initialDarkMode, compositionId: modalContextType.compositionId, initialVideoImageFormat: modalContextType.initialVideoImageFormat, initialJpegQuality: modalContextType.initialJpegQuality, initialScale: modalContextType.initialScale, initialLogLevel: modalContextType.initialLogLevel, initialOffthreadVideoCacheSizeInBytes: modalContextType.initialOffthreadVideoCacheSizeInBytes, initialOffthreadVideoThreads: modalContextType.initialOffthreadVideoThreads, initialMediaCacheSizeInBytes: modalContextType.initialMediaCacheSizeInBytes, initialConcurrency: modalContextType.initialConcurrency, maxConcurrency: modalContextType.maxConcurrency, minConcurrency: modalContextType.minConcurrency, initialStillImageFormat: modalContextType.initialStillImageFormat, initialMuted: modalContextType.initialMuted, initialEnforceAudioTrack: modalContextType.initialEnforceAudioTrack, initialProResProfile: modalContextType.initialProResProfile, initialx264Preset: modalContextType.initialx264Preset, initialGopSize: modalContextType.initialGopSize, initialPixelFormat: modalContextType.initialPixelFormat, initialAudioBitrate: modalContextType.initialAudioBitrate, initialVideoBitrate: modalContextType.initialVideoBitrate, initialEveryNthFrame: modalContextType.initialEveryNthFrame, initialNumberOfGifLoops: modalContextType.initialNumberOfGifLoops, initialDelayRenderTimeout: modalContextType.initialDelayRenderTimeout, initialEnvVariables: modalContextType.initialEnvVariables, initialDisableWebSecurity: modalContextType.initialDisableWebSecurity, initialGl: modalContextType.initialOpenGlRenderer, initialHeadless: modalContextType.initialHeadless, initialIgnoreCertificateErrors: modalContextType.initialIgnoreCertificateErrors, initialEncodingBufferSize: modalContextType.initialEncodingBufferSize, initialEncodingMaxRate: modalContextType.initialEncodingMaxRate, initialUserAgent: modalContextType.initialUserAgent, initialColorSpace: modalContextType.initialColorSpace, initialMultiProcessOnLinux: modalContextType.initialMultiProcessOnLinux, initialRepro: modalContextType.initialRepro, initialBeep: modalContextType.initialBeep, initialForSeamlessAacConcatenation: modalContextType.initialForSeamlessAacConcatenation, defaultProps: modalContextType.defaultProps, inFrameMark: modalContextType.inFrameMark, outFrameMark: modalContextType.outFrameMark, defaultConfigurationAudioCodec: modalContextType.defaultConfigurationAudioCodec, defaultConfigurationVideoCodec: modalContextType.defaultConfigurationVideoCodec, renderTypeOfLastRender: modalContextType.renderTypeOfLastRender, defaultMetadata: modalContextType.defaulMetadata, initialHardwareAcceleration: modalContextType.initialHardwareAcceleration, initialSampleRate: modalContextType.initialSampleRate, initialChromeMode: modalContextType.initialChromeMode, renderDefaults: modalContextType.renderDefaults })) : null, modalContextType && modalContextType.type === 'render-progress' && (jsx_runtime_1.jsx(RenderStatusModal_1.RenderStatusModal, { jobId: modalContextType.jobId })), modalContextType && modalContextType.type === 'update' && (jsx_runtime_1.jsx(UpdateModal_1.UpdateModal, { info: modalContextType.info, knownBugs: modalContextType.knownBugs })), modalContextType && modalContextType.type === 'install-packages' && (jsx_runtime_1.jsx(InstallPackage_1.InstallPackageModal, { packageManager: modalContextType.packageManager })), modalContextType && modalContextType.type === 'quick-switcher' && (jsx_runtime_1.jsx(QuickSwitcher_1.default, { readOnlyStudio: readOnlyStudio, invocationTimestamp: modalContextType.invocationTimestamp, initialMode: modalContextType.mode, assetSelection: modalContextType.assetSelection, compositionSelection: modalContextType.compositionSelection })), modalContextType && modalContextType.type === 'add-effect' && (jsx_runtime_1.jsx(EffectPickerModal_1.EffectPickerModal, { state: modalContextType })), modalContextType && modalContextType.type === 'confirmation-dialog' && (jsx_runtime_1.jsx(ConfirmationDialog_1.ConfirmationDialog, { state: modalContextType })), modalContextType && modalContextType.type === 'svg-import-dialog' && (jsx_runtime_1.jsx(SvgImportDialog_1.SvgImportDialog, { state: modalContextType })), (0, studio_runtime_config_1.getStudioAskAIEnabled)() && jsx_runtime_1.jsx(AskAiModal_1.AskAiModal, {})] }),
|
|
46
57
|
// Modals must be above overlays opened from the editor, such as the
|
|
@@ -5,13 +5,12 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const modals_1 = require("../state/modals");
|
|
7
7
|
const ModalsProvider = ({ children }) => {
|
|
8
|
-
const [
|
|
9
|
-
const
|
|
8
|
+
const [selectedModal, setSelectedModal] = (0, react_1.useState)(null);
|
|
9
|
+
const setSelectedModalContext = (0, react_1.useMemo)(() => {
|
|
10
10
|
return {
|
|
11
|
-
|
|
12
|
-
setSelectedModal: setModalContextType,
|
|
11
|
+
setSelectedModal,
|
|
13
12
|
};
|
|
14
|
-
}, [
|
|
15
|
-
return (jsx_runtime_1.jsx(modals_1.
|
|
13
|
+
}, []);
|
|
14
|
+
return (jsx_runtime_1.jsx(modals_1.SetSelectedModalContext.Provider, { value: setSelectedModalContext, children: jsx_runtime_1.jsx(modals_1.SelectedModalContext.Provider, { value: selectedModal, children: children }) }));
|
|
16
15
|
};
|
|
17
16
|
exports.ModalsProvider = ModalsProvider;
|
|
@@ -24,7 +24,7 @@ const CodemodFooterPresentation = ({ codemodStatus, disabled, genericSubmitLabel
|
|
|
24
24
|
const CodemodFooter = ({ codemod, stack, valid, loadingNotification, successNotification, errorNotification, genericSubmitLabel, submitLabel, onSuccess, fallbackToRootFile = false, applyCodemod, }) => {
|
|
25
25
|
var _a;
|
|
26
26
|
const [submitting, setSubmitting] = (0, react_1.useState)(false);
|
|
27
|
-
const { setSelectedModal } = (0, react_1.useContext)(modals_1.
|
|
27
|
+
const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
|
|
28
28
|
const [codemodStatus, setCanApplyCodemod] = (0, react_1.useState)({
|
|
29
29
|
type: 'loading',
|
|
30
30
|
});
|
|
@@ -4,6 +4,11 @@ type DividerItem = {
|
|
|
4
4
|
type: 'divider';
|
|
5
5
|
id: string;
|
|
6
6
|
};
|
|
7
|
+
type SectionHeaderItem = {
|
|
8
|
+
type: 'section-header';
|
|
9
|
+
id: string;
|
|
10
|
+
label: string;
|
|
11
|
+
};
|
|
7
12
|
export type SubMenu = {
|
|
8
13
|
preselectIndex: number | false;
|
|
9
14
|
leaveLeftSpace: boolean;
|
|
@@ -21,7 +26,7 @@ export type SelectionItem = {
|
|
|
21
26
|
quickSwitcherLabel: string | null;
|
|
22
27
|
disabled?: boolean;
|
|
23
28
|
};
|
|
24
|
-
export type ComboboxValue = DividerItem | SelectionItem;
|
|
29
|
+
export type ComboboxValue = DividerItem | SectionHeaderItem | SelectionItem;
|
|
25
30
|
export declare const Combobox: React.FC<{
|
|
26
31
|
readonly values: ComboboxValue[];
|
|
27
32
|
readonly selectedId: string | number;
|
|
@@ -6,7 +6,7 @@ const react_1 = require("react");
|
|
|
6
6
|
const modals_1 = require("../../state/modals");
|
|
7
7
|
const ModalContainer_1 = require("../ModalContainer");
|
|
8
8
|
const DismissableModal = ({ children, panelStyle }) => {
|
|
9
|
-
const { setSelectedModal } = (0, react_1.useContext)(modals_1.
|
|
9
|
+
const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
|
|
10
10
|
const onQuit = (0, react_1.useCallback)(() => {
|
|
11
11
|
setSelectedModal(null);
|
|
12
12
|
}, [setSelectedModal]);
|
|
@@ -8,7 +8,9 @@ const mobile_layout_1 = require("../../helpers/mobile-layout");
|
|
|
8
8
|
const studio_runtime_config_1 = require("../../helpers/studio-runtime-config");
|
|
9
9
|
const use_keybinding_1 = require("../../helpers/use-keybinding");
|
|
10
10
|
const is_menu_item_1 = require("../Menu/is-menu-item");
|
|
11
|
+
const menu_tree_context_1 = require("../Menu/menu-tree-context");
|
|
11
12
|
const MenuDivider_1 = require("../Menu/MenuDivider");
|
|
13
|
+
const MenuSectionHeader_1 = require("../Menu/MenuSectionHeader");
|
|
12
14
|
const MenuSubItem_1 = require("../Menu/MenuSubItem");
|
|
13
15
|
const styles_1 = require("../Menu/styles");
|
|
14
16
|
const menu_typeahead_1 = require("./menu-typeahead");
|
|
@@ -27,6 +29,9 @@ const container = {
|
|
|
27
29
|
const MenuContent = ({ onHide, values, preselectIndex, onNextMenu, onPreviousMenu, leaveLeftSpace, topItemCanBeUnselected, fixedHeight, }) => {
|
|
28
30
|
const keybindings = (0, use_keybinding_1.useKeybinding)();
|
|
29
31
|
const containerRef = (0, react_1.useRef)(null);
|
|
32
|
+
const inheritedMenuTreeId = (0, react_1.useContext)(menu_tree_context_1.MenuTreeContext);
|
|
33
|
+
const localMenuTreeId = (0, react_1.useRef)((0, menu_tree_context_1.getNextMenuTreeId)());
|
|
34
|
+
const menuTreeId = inheritedMenuTreeId !== null && inheritedMenuTreeId !== void 0 ? inheritedMenuTreeId : localMenuTreeId.current;
|
|
30
35
|
const isMobileLayout = (0, mobile_layout_1.useMobileLayout)();
|
|
31
36
|
const [subMenuActivated, setSubMenuActivated] = (0, react_1.useState)(false);
|
|
32
37
|
const typeaheadQueryRef = (0, react_1.useRef)('');
|
|
@@ -51,7 +56,7 @@ const MenuContent = ({ onHide, values, preselectIndex, onNextMenu, onPreviousMen
|
|
|
51
56
|
}
|
|
52
57
|
}, []);
|
|
53
58
|
const isItemSelectable = (0, react_1.useCallback)((v) => {
|
|
54
|
-
return v.type
|
|
59
|
+
return v.type === 'item' && !v.disabled;
|
|
55
60
|
}, []);
|
|
56
61
|
const onArrowUp = (0, react_1.useCallback)(() => {
|
|
57
62
|
setSelectedItem((prevItem) => {
|
|
@@ -98,8 +103,8 @@ const MenuContent = ({ onHide, values, preselectIndex, onNextMenu, onPreviousMen
|
|
|
98
103
|
if (!item) {
|
|
99
104
|
throw new Error('cannot find item');
|
|
100
105
|
}
|
|
101
|
-
if (item.type
|
|
102
|
-
throw new Error('cannot
|
|
106
|
+
if (item.type !== 'item') {
|
|
107
|
+
throw new Error('cannot select non-interactive menu item');
|
|
103
108
|
}
|
|
104
109
|
if (item.disabled) {
|
|
105
110
|
return;
|
|
@@ -118,8 +123,8 @@ const MenuContent = ({ onHide, values, preselectIndex, onNextMenu, onPreviousMen
|
|
|
118
123
|
if (!item) {
|
|
119
124
|
throw new Error('cannot find item');
|
|
120
125
|
}
|
|
121
|
-
if (item.type
|
|
122
|
-
throw new Error('cannot
|
|
126
|
+
if (item.type !== 'item') {
|
|
127
|
+
throw new Error('cannot select non-interactive menu item');
|
|
123
128
|
}
|
|
124
129
|
if (!item.subMenu) {
|
|
125
130
|
return onNextMenu();
|
|
@@ -282,8 +287,8 @@ const MenuContent = ({ onHide, values, preselectIndex, onNextMenu, onPreviousMen
|
|
|
282
287
|
// Can happen if resizing the window
|
|
283
288
|
return;
|
|
284
289
|
}
|
|
285
|
-
if (item.type
|
|
286
|
-
throw new Error('should not select
|
|
290
|
+
if (item.type !== 'item') {
|
|
291
|
+
throw new Error('should not select non-interactive menu item');
|
|
287
292
|
}
|
|
288
293
|
if (!item.subMenu && subMenuActivated) {
|
|
289
294
|
setSubMenuActivated(false);
|
|
@@ -303,18 +308,21 @@ const MenuContent = ({ onHide, values, preselectIndex, onNextMenu, onPreviousMen
|
|
|
303
308
|
current.addEventListener('pointerleave', onPointerLeave);
|
|
304
309
|
return () => current.removeEventListener('pointerleave', onPointerLeave);
|
|
305
310
|
}, [onHide, subMenuActivated]);
|
|
306
|
-
return (jsx_runtime_1.jsx("div", { ref: containerRef, style: containerWithHeight, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: values.map((item) => {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
if (item.subMenu) {
|
|
313
|
-
return null;
|
|
311
|
+
return (jsx_runtime_1.jsx(menu_tree_context_1.MenuTreeContext.Provider, { value: menuTreeId, children: jsx_runtime_1.jsx("div", { ref: containerRef, "data-remotion-menu-tree-id": menuTreeId, style: containerWithHeight, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: values.map((item) => {
|
|
312
|
+
if (item.type === 'divider') {
|
|
313
|
+
return jsx_runtime_1.jsx(MenuDivider_1.MenuDivider, {}, item.id);
|
|
314
|
+
}
|
|
315
|
+
if (item.type === 'section-header') {
|
|
316
|
+
return (jsx_runtime_1.jsx(MenuSectionHeader_1.MenuSectionHeader, { children: item.label }, item.id));
|
|
314
317
|
}
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
318
|
+
const onClick = (id, e) => {
|
|
319
|
+
item.onClick(id, e);
|
|
320
|
+
if (item.subMenu) {
|
|
321
|
+
return null;
|
|
322
|
+
}
|
|
323
|
+
onHide();
|
|
324
|
+
};
|
|
325
|
+
return (jsx_runtime_1.jsx(MenuSubItem_1.MenuSubItem, { selected: item.id === selectedItem, onActionChosen: onClick, onItemSelected: onItemSelected, label: item.label, id: item.id, keyHint: item.keyHint, leaveLeftSpace: leaveLeftSpace, leftItem: item.leftItem, subMenu: item.subMenu, onQuitMenu: onHide, onNextMenu: onNextMenu, subMenuActivated: subMenuActivated, setSubMenuActivated: setSubMenuActivated, disabled: item.disabled }, item.id));
|
|
326
|
+
}) }) }));
|
|
319
327
|
};
|
|
320
328
|
exports.MenuContent = MenuContent;
|
|
@@ -23,7 +23,7 @@ const content = {
|
|
|
23
23
|
minWidth: 500,
|
|
24
24
|
};
|
|
25
25
|
const RenameStaticFileModal = ({ relativePath }) => {
|
|
26
|
-
const { setSelectedModal } = (0, react_1.useContext)(modals_1.
|
|
26
|
+
const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
|
|
27
27
|
const staticFiles = (0, use_static_files_1.useStaticFiles)();
|
|
28
28
|
const [newName, setNewName] = (0, react_1.useState)(() => (0, use_rename_static_file_1.getStaticFileBaseName)(relativePath));
|
|
29
29
|
const [submitting, setSubmitting] = (0, react_1.useState)(false);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.findTypeaheadMenuItem = void 0;
|
|
4
4
|
const getLabelToMatch = (value) => {
|
|
5
|
-
if (value.type
|
|
5
|
+
if (value.type !== 'item' || value.disabled) {
|
|
6
6
|
return null;
|
|
7
7
|
}
|
|
8
8
|
if (typeof value.label === 'string') {
|
|
@@ -19,7 +19,7 @@ const findTypeaheadMenuItem = ({ query, values, }) => {
|
|
|
19
19
|
const label = getLabelToMatch(value);
|
|
20
20
|
return label ? label.toLowerCase().startsWith(normalizedQuery) : false;
|
|
21
21
|
});
|
|
22
|
-
if (!matched || matched.type
|
|
22
|
+
if (!matched || matched.type !== 'item') {
|
|
23
23
|
return null;
|
|
24
24
|
}
|
|
25
25
|
return matched.id;
|
|
@@ -51,7 +51,7 @@ const Inner = () => {
|
|
|
51
51
|
}
|
|
52
52
|
return null;
|
|
53
53
|
});
|
|
54
|
-
const { setSelectedModal } = (0, react_1.useContext)(modals_1.
|
|
54
|
+
const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
|
|
55
55
|
const valid = (0, react_1.useMemo)(() => {
|
|
56
56
|
if (!value)
|
|
57
57
|
return true;
|
|
@@ -30,7 +30,8 @@ const PlayPause = ({ playbackRate, loop, bufferStateDelayInMilliseconds, muted,
|
|
|
30
30
|
const { inFrame, outFrame } = (0, in_out_1.useTimelineInOutFramePosition)();
|
|
31
31
|
const videoConfig = remotion_1.Internals.useUnsafeVideoConfig();
|
|
32
32
|
const [showBufferIndicator, setShowBufferState] = (0, react_1.useState)(false);
|
|
33
|
-
const {
|
|
33
|
+
const { play, pause, pauseAndReturnToPlayStart, frameBack, seek, frameForward, emitter, getCurrentFrame, } = player_1.PlayerInternals.usePlayerMethods();
|
|
34
|
+
const [playing] = remotion_1.Internals.Timeline.usePlayingState();
|
|
34
35
|
player_1.PlayerInternals.usePlayback({
|
|
35
36
|
loop,
|
|
36
37
|
playbackRate,
|
|
@@ -6,10 +6,11 @@ const react_1 = require("react");
|
|
|
6
6
|
const use_keybinding_1 = require("../helpers/use-keybinding");
|
|
7
7
|
const PlaybackKeyboardShortcutsManager = ({ setPlaybackRate }) => {
|
|
8
8
|
const keybindings = (0, use_keybinding_1.useKeybinding)();
|
|
9
|
-
const { play, pause,
|
|
9
|
+
const { play, pause, isPlaying } = player_1.PlayerInternals.usePlayerMethods();
|
|
10
10
|
const onJKey = (0, react_1.useCallback)(() => {
|
|
11
|
+
const wasPlaying = isPlaying();
|
|
11
12
|
setPlaybackRate((prevPlaybackRate) => {
|
|
12
|
-
if (!
|
|
13
|
+
if (!wasPlaying) {
|
|
13
14
|
return -1;
|
|
14
15
|
}
|
|
15
16
|
if (prevPlaybackRate > -1) {
|
|
@@ -21,14 +22,15 @@ const PlaybackKeyboardShortcutsManager = ({ setPlaybackRate }) => {
|
|
|
21
22
|
return -4;
|
|
22
23
|
});
|
|
23
24
|
play();
|
|
24
|
-
}, [
|
|
25
|
+
}, [isPlaying, play, setPlaybackRate]);
|
|
25
26
|
const onKKey = (0, react_1.useCallback)(() => {
|
|
26
27
|
setPlaybackRate(1);
|
|
27
28
|
pause();
|
|
28
29
|
}, [pause, setPlaybackRate]);
|
|
29
30
|
const onLKey = (0, react_1.useCallback)(() => {
|
|
31
|
+
const wasPlaying = isPlaying();
|
|
30
32
|
setPlaybackRate((prevPlaybackRate) => {
|
|
31
|
-
if (!
|
|
33
|
+
if (!wasPlaying) {
|
|
32
34
|
return 1;
|
|
33
35
|
}
|
|
34
36
|
if (prevPlaybackRate < 1) {
|
|
@@ -40,7 +42,7 @@ const PlaybackKeyboardShortcutsManager = ({ setPlaybackRate }) => {
|
|
|
40
42
|
return 4;
|
|
41
43
|
});
|
|
42
44
|
play();
|
|
43
|
-
}, [
|
|
45
|
+
}, [isPlaying, play, setPlaybackRate]);
|
|
44
46
|
(0, react_1.useEffect)(() => {
|
|
45
47
|
const jKey = keybindings.registerKeybinding({
|
|
46
48
|
event: 'keydown',
|
|
@@ -69,6 +69,24 @@ const VideoPreview = ({ canvasSize, contentDimensions, canvasContent, assetMetad
|
|
|
69
69
|
exports.VideoPreview = VideoPreview;
|
|
70
70
|
const CompWhenItHasDimensions = ({ contentDimensions, canvasSize, canvasContent, assetMetadata }) => {
|
|
71
71
|
const { size: previewSize } = (0, react_1.useContext)(remotion_1.Internals.PreviewSizeContext);
|
|
72
|
+
const [canvasHovered, setCanvasHovered] = (0, react_1.useState)(false);
|
|
73
|
+
const compositionContainerRef = (0, react_1.useRef)(null);
|
|
74
|
+
(0, react_1.useEffect)(() => {
|
|
75
|
+
const compositionContainer = compositionContainerRef.current;
|
|
76
|
+
if (compositionContainer === null) {
|
|
77
|
+
setCanvasHovered(false);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
const onPointerEnter = () => setCanvasHovered(true);
|
|
81
|
+
const onPointerLeave = () => setCanvasHovered(false);
|
|
82
|
+
setCanvasHovered(compositionContainer.matches(':hover'));
|
|
83
|
+
compositionContainer.addEventListener('pointerenter', onPointerEnter);
|
|
84
|
+
compositionContainer.addEventListener('pointerleave', onPointerLeave);
|
|
85
|
+
return () => {
|
|
86
|
+
compositionContainer.removeEventListener('pointerenter', onPointerEnter);
|
|
87
|
+
compositionContainer.removeEventListener('pointerleave', onPointerLeave);
|
|
88
|
+
};
|
|
89
|
+
}, [canvasContent.type]);
|
|
72
90
|
const { centerX, centerY, yCorrection, xCorrection, scale } = (0, react_1.useMemo)(() => {
|
|
73
91
|
if (contentDimensions === 'none') {
|
|
74
92
|
return {
|
|
@@ -129,8 +147,8 @@ const CompWhenItHasDimensions = ({ contentDimensions, canvasSize, canvasContent,
|
|
|
129
147
|
if (canvasContent.type === 'output-blob') {
|
|
130
148
|
return (jsx_runtime_1.jsx("div", { style: outer, children: jsx_runtime_1.jsx(RenderPreview_1.RenderPreview, { path: canvasContent.displayName, assetMetadata: assetMetadata, getBlob: canvasContent.getBlob }) }));
|
|
131
149
|
}
|
|
132
|
-
return (jsx_runtime_1.jsxs("div", { className: "remotion-studio-composition-container", style: outer, children: [
|
|
133
|
-
jsx_runtime_1.jsx(PortalContainer, { contentDimensions: contentDimensions, scale: scale, xCorrection: xCorrection, yCorrection: yCorrection }), jsx_runtime_1.jsx(SelectedOutlineOverlay_1.SelectedOutlineOverlay, { compositionHeight: contentDimensions.height, compositionWidth: contentDimensions.width, scale: scale, translationX: previewSize.translation.x, translationY: previewSize.translation.y })
|
|
150
|
+
return (jsx_runtime_1.jsxs("div", { ref: compositionContainerRef, className: "remotion-studio-composition-container", style: outer, children: [
|
|
151
|
+
jsx_runtime_1.jsx(PortalContainer, { contentDimensions: contentDimensions, scale: scale, xCorrection: xCorrection, yCorrection: yCorrection }), jsx_runtime_1.jsx(SelectedOutlineOverlay_1.SelectedOutlineOverlay, { canvasHovered: canvasHovered, compositionHeight: contentDimensions.height, compositionWidth: contentDimensions.width, scale: scale, translationX: previewSize.translation.x, translationY: previewSize.translation.y })
|
|
134
152
|
] }));
|
|
135
153
|
};
|
|
136
154
|
const PortalContainer = ({ scale, xCorrection, yCorrection, contentDimensions }) => {
|
|
@@ -154,13 +172,20 @@ const PortalContainer = ({ scale, xCorrection, yCorrection, contentDimensions })
|
|
|
154
172
|
xCorrection,
|
|
155
173
|
yCorrection,
|
|
156
174
|
]);
|
|
157
|
-
(0, react_1.
|
|
175
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
158
176
|
const { current } = portalContainer;
|
|
159
177
|
current === null || current === void 0 ? void 0 : current.appendChild(remotion_1.Internals.portalNode());
|
|
160
178
|
return () => {
|
|
161
|
-
|
|
179
|
+
const portalNode = remotion_1.Internals.portalNode();
|
|
180
|
+
if (current && portalNode.parentNode === current) {
|
|
181
|
+
current.removeChild(portalNode);
|
|
182
|
+
remotion_1.Internals.setPortalNodeCurrentScale(1);
|
|
183
|
+
}
|
|
162
184
|
};
|
|
163
185
|
}, []);
|
|
186
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
187
|
+
remotion_1.Internals.setPortalNodeCurrentScale(scale);
|
|
188
|
+
}, [scale]);
|
|
164
189
|
const onPointerDown = (0, react_1.useCallback)((event) => {
|
|
165
190
|
if (!(0, should_clear_selection_on_pointer_down_1.shouldClearSelectionOnPointerDown)(event)) {
|
|
166
191
|
return;
|
|
@@ -18,6 +18,7 @@ const clickButton = (id) => {
|
|
|
18
18
|
(_a = document.getElementById(id)) === null || _a === void 0 ? void 0 : _a.click();
|
|
19
19
|
};
|
|
20
20
|
const PreviewToolbarOverflowButton = ({ showFullscreen, showPlaybackRate, showLoop, showCompositionControls, playbackRate, setPlaybackRate, loop, setLoop, }) => {
|
|
21
|
+
const keyboardShortcutsDisabled = (0, use_keybinding_1.areKeyboardShortcutsDisabled)();
|
|
21
22
|
const { checkerboard, setCheckerboard } = (0, react_1.useContext)(checkerboard_1.CheckerboardContext);
|
|
22
23
|
const { editorShowOutlines, setEditorShowOutlines } = (0, react_1.useContext)(editor_outlines_1.EditorShowOutlinesContext);
|
|
23
24
|
const { items: previewSizeItems, selectedId: selectedPreviewSize, zoomable, } = (0, SizeSelector_1.usePreviewSizeMenuItems)();
|
|
@@ -88,7 +89,7 @@ const PreviewToolbarOverflowButton = ({ showFullscreen, showPlaybackRate, showLo
|
|
|
88
89
|
label: 'Transparency as checkerboard',
|
|
89
90
|
value: 'checkerboard',
|
|
90
91
|
onClick: () => setCheckerboard((current) => !current),
|
|
91
|
-
keyHint:
|
|
92
|
+
keyHint: keyboardShortcutsDisabled ? null : 'T',
|
|
92
93
|
leftItem: checkerboard ? jsx_runtime_1.jsx(Checkmark_1.Checkmark, {}) : null,
|
|
93
94
|
subMenu: null,
|
|
94
95
|
quickSwitcherLabel: null,
|
|
@@ -112,7 +113,7 @@ const PreviewToolbarOverflowButton = ({ showFullscreen, showPlaybackRate, showLo
|
|
|
112
113
|
label: 'Fullscreen',
|
|
113
114
|
value: 'fullscreen',
|
|
114
115
|
onClick: () => clickButton('fullscreen-toggle'),
|
|
115
|
-
keyHint:
|
|
116
|
+
keyHint: keyboardShortcutsDisabled ? null : 'F',
|
|
116
117
|
leftItem: null,
|
|
117
118
|
subMenu: null,
|
|
118
119
|
quickSwitcherLabel: null,
|
|
@@ -135,6 +136,7 @@ const PreviewToolbarOverflowButton = ({ showFullscreen, showPlaybackRate, showLo
|
|
|
135
136
|
setEditorShowOutlines,
|
|
136
137
|
setLoop,
|
|
137
138
|
zoomable,
|
|
139
|
+
keyboardShortcutsDisabled,
|
|
138
140
|
]);
|
|
139
141
|
if (values.length === 0) {
|
|
140
142
|
return null;
|
|
@@ -30,7 +30,7 @@ const shortcutLabel = {
|
|
|
30
30
|
opacity: 0.6,
|
|
31
31
|
};
|
|
32
32
|
const ExplorerQuickSwitcherTrigger = ({ mode, showShortcut, tabIndex }) => {
|
|
33
|
-
const { setSelectedModal } = (0, react_1.useContext)(modals_1.
|
|
33
|
+
const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
|
|
34
34
|
const openQuickSwitcher = (0, react_1.useCallback)(() => {
|
|
35
35
|
setSelectedModal({
|
|
36
36
|
type: 'quick-switcher',
|
|
@@ -125,7 +125,7 @@ const QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio
|
|
|
125
125
|
const closeMenu = (0, react_1.useCallback)(() => undefined, []);
|
|
126
126
|
const actions = (0, use_menu_structure_1.useMenuStructure)(closeMenu, readOnlyStudio);
|
|
127
127
|
const [docResults, setDocResults] = (0, react_1.useState)({ type: 'initial' });
|
|
128
|
-
const { setSelectedModal } = (0, react_1.useContext)(modals_1.
|
|
128
|
+
const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
|
|
129
129
|
const keybindings = (0, use_keybinding_1.useKeybinding)();
|
|
130
130
|
const mode = assetSelection !== null
|
|
131
131
|
? 'assets'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
export type RenderType = 'server-render' | 'client-render' | 'render-command';
|
|
3
|
-
export declare const RenderButton: React.
|
|
3
|
+
export declare const RenderButton: React.NamedExoticComponent<{
|
|
4
4
|
readonly readOnlyStudio: boolean;
|
|
5
|
-
readonly size?:
|
|
6
|
-
readonly narrow?: boolean;
|
|
5
|
+
readonly size?: "compact" | "default" | undefined;
|
|
6
|
+
readonly narrow?: boolean | undefined;
|
|
7
7
|
}>;
|
|
@@ -1,4 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
@@ -6,7 +39,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
39
|
exports.RenderButton = void 0;
|
|
7
40
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
41
|
const player_1 = require("@remotion/player");
|
|
9
|
-
const react_1 = require("react");
|
|
42
|
+
const react_1 = __importStar(require("react"));
|
|
10
43
|
const react_dom_1 = __importDefault(require("react-dom"));
|
|
11
44
|
const remotion_1 = require("remotion");
|
|
12
45
|
const client_id_1 = require("../helpers/client-id");
|
|
@@ -117,9 +150,9 @@ const getInitialRenderType = (readOnlyStudio) => {
|
|
|
117
150
|
}
|
|
118
151
|
return 'server-render';
|
|
119
152
|
};
|
|
120
|
-
const
|
|
153
|
+
const RenderButtonInner = ({ readOnlyStudio, size: controlSize = 'default', narrow = false }) => {
|
|
121
154
|
const { inFrame, outFrame } = (0, in_out_1.useTimelineInOutFramePosition)();
|
|
122
|
-
const { setSelectedModal } = (0, react_1.useContext)(modals_1.
|
|
155
|
+
const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
|
|
123
156
|
const [preferredRenderType, setPreferredRenderType] = (0, react_1.useState)(() => getInitialRenderType(readOnlyStudio));
|
|
124
157
|
const [dropdownOpened, setDropdownOpened] = (0, react_1.useState)(false);
|
|
125
158
|
const [hovered, setHovered] = (0, react_1.useState)(false);
|
|
@@ -193,8 +226,10 @@ const RenderButton = ({ readOnlyStudio, size: controlSize = 'default', narrow =
|
|
|
193
226
|
};
|
|
194
227
|
}, [controlSize]);
|
|
195
228
|
const video = remotion_1.Internals.useVideo();
|
|
196
|
-
const { getCurrentFrame } = player_1.PlayerInternals.
|
|
229
|
+
const { getCurrentFrame } = player_1.PlayerInternals.usePlayerMethods();
|
|
197
230
|
const { props } = (0, react_1.useContext)(remotion_1.Internals.EditorPropsContext);
|
|
231
|
+
// Read the frame when the modal opens instead of subscribing this button to
|
|
232
|
+
// every timeline position update.
|
|
198
233
|
const openServerRenderModal = (0, react_1.useCallback)((copyCommandOnly) => {
|
|
199
234
|
var _a;
|
|
200
235
|
var _b, _c;
|
|
@@ -258,7 +293,7 @@ const RenderButton = ({ readOnlyStudio, size: controlSize = 'default', narrow =
|
|
|
258
293
|
initialMediaCacheSizeInBytes: defaults.mediaCacheSizeInBytes,
|
|
259
294
|
renderDefaults: defaults,
|
|
260
295
|
});
|
|
261
|
-
}, [video, setSelectedModal,
|
|
296
|
+
}, [video, setSelectedModal, props, inFrame, outFrame, getCurrentFrame]);
|
|
262
297
|
const openClientRenderModal = (0, react_1.useCallback)(() => {
|
|
263
298
|
var _a;
|
|
264
299
|
if (!video) {
|
|
@@ -292,7 +327,7 @@ const RenderButton = ({ readOnlyStudio, size: controlSize = 'default', narrow =
|
|
|
292
327
|
initialMediaCacheSizeInBytes: defaults.mediaCacheSizeInBytes,
|
|
293
328
|
initialPageResponsiveness: 'medium',
|
|
294
329
|
});
|
|
295
|
-
}, [video, setSelectedModal,
|
|
330
|
+
}, [video, setSelectedModal, props, inFrame, outFrame, getCurrentFrame]);
|
|
296
331
|
const onClick = (0, react_1.useCallback)(() => {
|
|
297
332
|
if (renderType === 'render-command') {
|
|
298
333
|
openServerRenderModal(true);
|
|
@@ -469,4 +504,4 @@ const RenderButton = ({ readOnlyStudio, size: controlSize = 'default', narrow =
|
|
|
469
504
|
? react_dom_1.default.createPortal(jsx_runtime_1.jsx("div", { style: styles_1.fullScreenOverlay, children: jsx_runtime_1.jsx("div", { style: styles_1.outerPortal, className: "css-reset", children: jsx_runtime_1.jsx(z_index_1.HigherZIndex, { onOutsideClick: onHideDropdown, onEscape: onHideDropdown, children: jsx_runtime_1.jsx("div", { style: portalStyle, onPointerDown: onMenuPointerDown, children: jsx_runtime_1.jsx(MenuContent_1.MenuContent, { onNextMenu: () => { }, onPreviousMenu: () => { }, values: dropdownValues, onHide: onHideDropdown, leaveLeftSpace: false, preselectIndex: dropdownValues.findIndex((v) => v.id === renderType), topItemCanBeUnselected: false, fixedHeight: derivedMaxHeight }) }) }) }) }), (0, portals_1.getPortal)(currentZIndex))
|
|
470
505
|
: null] }));
|
|
471
506
|
};
|
|
472
|
-
exports.RenderButton =
|
|
507
|
+
exports.RenderButton = react_1.default.memo(RenderButtonInner);
|
|
@@ -41,7 +41,7 @@ const buttonRow = {
|
|
|
41
41
|
justifyContent: 'flex-end',
|
|
42
42
|
};
|
|
43
43
|
const RenderStatusModal = ({ jobId, }) => {
|
|
44
|
-
const { setSelectedModal } = (0, react_1.useContext)(modals_1.
|
|
44
|
+
const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
|
|
45
45
|
const { jobs, removeClientJob, cancelClientJob } = (0, react_1.useContext)(context_1.RenderQueueContext);
|
|
46
46
|
const job = jobs.find((j) => j.id === jobId);
|
|
47
47
|
if (!job) {
|
|
@@ -14,7 +14,7 @@ const ZodFieldValidation_1 = require("./ZodFieldValidation");
|
|
|
14
14
|
const container = {
|
|
15
15
|
width: '100%',
|
|
16
16
|
};
|
|
17
|
-
const ZodEnumEditor = ({ schema, jsonPath, setValue, value, onRemove }) => {
|
|
17
|
+
const ZodEnumEditor = ({ schema, jsonPath, setValue, value, onRemove, mayPad }) => {
|
|
18
18
|
const onChange = (0, react_2.useCallback)((updater, { shouldSave }) => {
|
|
19
19
|
setValue(updater, { shouldSave });
|
|
20
20
|
}, [setValue]);
|
|
@@ -38,7 +38,7 @@ const ZodEnumEditor = ({ schema, jsonPath, setValue, value, onRemove }) => {
|
|
|
38
38
|
});
|
|
39
39
|
}, [enumValues, onChange, value]);
|
|
40
40
|
const zodValidation = (0, react_1.useMemo)(() => (0, zod_schema_type_1.zodSafeParse)(schema, value), [schema, value]);
|
|
41
|
-
return (jsx_runtime_1.jsxs(Fieldset_1.Fieldset, { shouldPad:
|
|
41
|
+
return (jsx_runtime_1.jsxs(Fieldset_1.Fieldset, { shouldPad: mayPad, children: [
|
|
42
42
|
jsx_runtime_1.jsx(SchemaLabel_1.SchemaLabel, { handleClick: null, jsonPath: jsonPath, onRemove: onRemove, valid: zodValidation.success, suffix: null }), jsx_runtime_1.jsx("div", { style: isRoot ? undefined : container, children: jsx_runtime_1.jsx(ComboBox_1.Combobox, { values: comboBoxValues, selectedId: value, title: value, size: "small" }) }), jsx_runtime_1.jsx(ZodFieldValidation_1.ZodFieldValidation, { path: jsonPath, zodValidation: zodValidation })
|
|
43
43
|
] }));
|
|
44
44
|
};
|