@remotion/studio 4.0.503 → 4.0.505
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/install-package.d.ts +2 -1
- package/dist/api/install-package.js +6 -2
- package/dist/components/AssetSelectorItem.js +4 -16
- package/dist/components/AudioWaveform.d.ts +1 -1
- package/dist/components/AudioWaveform.js +36 -3
- package/dist/components/Canvas.js +12 -5
- package/dist/components/CheckboardToggle.js +3 -1
- package/dist/components/CompositionContextButton.d.ts +1 -1
- package/dist/components/CompositionContextButton.js +2 -2
- package/dist/components/CompositionSelector.js +2 -2
- package/dist/components/CompositionSelectorItem.js +6 -7
- package/dist/components/ContextMenu.d.ts +5 -7
- package/dist/components/ContextMenu.js +54 -21
- package/dist/components/ControlButton.d.ts +4 -2
- package/dist/components/ControlButton.js +6 -20
- package/dist/components/EditorContent.js +1 -1
- package/dist/components/EditorGuides/Guide.js +2 -2
- package/dist/components/EffectPickerModal.js +70 -9
- package/dist/components/FullscreenToggle.js +1 -2
- package/dist/components/InitialCompositionLoader.js +1 -14
- package/dist/components/InlineAction.d.ts +3 -4
- package/dist/components/InlineAction.js +16 -13
- package/dist/components/InlineDropdown.d.ts +3 -2
- package/dist/components/InlineDropdown.js +16 -5
- package/dist/components/InspectorPanel/CompositionMetadata.js +7 -6
- package/dist/components/InspectorPanel/ConnectedCompositionsSection.js +2 -2
- package/dist/components/InspectorPanel/KeyframeInspector.js +2 -3
- package/dist/components/InspectorPanel/SequenceSelectionInspector.js +1 -1
- package/dist/components/InspectorPanel/common.js +24 -34
- package/dist/components/InspectorPanel/styles.js +4 -0
- package/dist/components/InspectorSequenceSection.js +1 -1
- package/dist/components/LoopToggle.js +1 -1
- package/dist/components/Menu/MenuItem.js +16 -12
- package/dist/components/MenuBuildIndicator.d.ts +3 -1
- package/dist/components/MenuBuildIndicator.js +14 -59
- package/dist/components/MenuCompositionName.js +3 -63
- package/dist/components/MenuToolbar.js +23 -3
- package/dist/components/MobilePanel.d.ts +1 -2
- package/dist/components/MobilePanel.js +6 -10
- package/dist/components/MuteToggle.js +2 -1
- package/dist/components/NewComposition/ComboBox.d.ts +1 -0
- package/dist/components/NewComposition/ComboBox.js +2 -2
- package/dist/components/NewComposition/InputDragger.d.ts +5 -0
- package/dist/components/NewComposition/InputDragger.js +11 -6
- package/dist/components/NewComposition/MenuContent.d.ts +1 -1
- package/dist/components/NewComposition/menu-typeahead.d.ts +1 -1
- package/dist/components/Notifications/NotificationCenter.js +12 -2
- package/dist/components/OutlineToggle.js +10 -2
- package/dist/components/PlayPause.js +2 -6
- package/dist/components/PlaybackRateSelector.js +4 -9
- package/dist/components/PreviewToolbar.js +12 -8
- package/dist/components/PreviewToolbarOverflowButton.d.ts +0 -1
- package/dist/components/PreviewToolbarOverflowButton.js +2 -75
- package/dist/components/QuickSwitcher/QuickSwitcherContent.js +1 -2
- package/dist/components/RenderButton.d.ts +1 -1
- package/dist/components/RenderButton.js +55 -37
- package/dist/components/RenderModal/FrameRangeSetting.js +6 -1
- package/dist/components/RenderModal/MultiRangeSlider.js +8 -8
- package/dist/components/RenderModal/RenderModalEnvironmentVariables.js +1 -9
- package/dist/components/RenderModal/RenderModalOutputName.js +11 -2
- package/dist/components/RenderModal/ServerRenderModal.js +2 -17
- package/dist/components/RenderModal/WebRenderModal.js +3 -17
- package/dist/components/RenderModal/layout.js +7 -5
- package/dist/components/RenderModal/render-modals.js +18 -15
- package/dist/components/RenderQueue/RenderQueueRepeat.js +1 -14
- package/dist/components/SelectedOutlineElement.js +13 -22
- package/dist/components/SelectedOutlineOverlay.js +5 -1
- package/dist/components/SidebarRenderButton.js +1 -15
- package/dist/components/SizeSelector.js +4 -9
- package/dist/components/SnappingToggle.js +1 -2
- package/dist/components/Spinner.d.ts +1 -0
- package/dist/components/Spinner.js +2 -2
- package/dist/components/Splitter/SplitterContainer.d.ts +1 -0
- package/dist/components/Splitter/SplitterContainer.js +4 -1
- package/dist/components/Splitter/SplitterContext.d.ts +4 -3
- package/dist/components/Splitter/SplitterContext.js +3 -2
- package/dist/components/Splitter/SplitterElement.js +6 -1
- package/dist/components/Splitter/SplitterHandle.js +1 -0
- package/dist/components/Tabs/vertical.d.ts +1 -0
- package/dist/components/Tabs/vertical.js +8 -10
- package/dist/components/TimeValue.js +26 -8
- package/dist/components/Timeline/Timeline.js +5 -5
- package/dist/components/Timeline/TimelineClipboardKeybindings.js +3 -6
- package/dist/components/Timeline/TimelineDeleteKeybindings.js +5 -7
- package/dist/components/Timeline/TimelineDragHandler.js +3 -0
- package/dist/components/Timeline/TimelineEffectItem.js +6 -2
- package/dist/components/Timeline/TimelineEffectPropItem.js +6 -3
- package/dist/components/Timeline/TimelineExpandedKeyframeRow.d.ts +6 -6
- package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +34 -2
- package/dist/components/Timeline/TimelineHeightContainer.d.ts +1 -0
- package/dist/components/Timeline/TimelineHeightContainer.js +2 -2
- package/dist/components/Timeline/TimelineInOutDragHandler.js +3 -3
- package/dist/components/Timeline/TimelineKeyframeEasingLine.d.ts +5 -3
- package/dist/components/Timeline/TimelineKeyframeEasingLine.js +32 -30
- package/dist/components/Timeline/TimelineList.d.ts +1 -0
- package/dist/components/Timeline/TimelineList.js +2 -3
- package/dist/components/Timeline/TimelineScaleField.js +1 -1
- package/dist/components/Timeline/TimelineSelection.js +2 -3
- package/dist/components/Timeline/TimelineSequence.js +34 -28
- package/dist/components/Timeline/TimelineSequenceItem.d.ts +3 -3
- package/dist/components/Timeline/TimelineSequenceItem.js +34 -23
- package/dist/components/Timeline/TimelineSequencePropItem.d.ts +10 -2
- package/dist/components/Timeline/TimelineSequencePropItem.js +64 -12
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +2 -2
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +38 -5
- package/dist/components/Timeline/TimelineTimeIndicators.js +36 -3
- package/dist/components/Timeline/TimelineVideoInfo.d.ts +1 -1
- package/dist/components/Timeline/TimelineVideoInfo.js +36 -3
- package/dist/components/Timeline/TimelineZoomControls.d.ts +3 -1
- package/dist/components/Timeline/TimelineZoomControls.js +59 -20
- package/dist/components/Timeline/use-expanded-track-keyframe-rows.js +2 -3
- package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.d.ts +1 -1
- package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.js +7 -18
- package/dist/components/Timeline/use-timeline-asset-drop.js +3 -3
- package/dist/components/Timeline/use-timeline-height.d.ts +2 -1
- package/dist/components/Timeline/use-timeline-height.js +3 -2
- package/dist/components/TimelineCombobox.d.ts +11 -0
- package/dist/components/TimelineCombobox.js +181 -0
- package/dist/components/TimelineInOutToggle.js +3 -3
- package/dist/components/TopPanel.js +8 -8
- package/dist/components/UndoRedoButtons.js +6 -5
- package/dist/components/UpdateCheck.js +18 -5
- package/dist/components/UpdateModal/UpdateModal.js +35 -12
- package/dist/components/composition-menu-items.d.ts +2 -4
- package/dist/components/composition-menu-items.js +31 -54
- package/dist/components/import-assets.d.ts +2 -1
- package/dist/components/import-assets.js +1 -1
- package/dist/components/selected-outline-types.d.ts +1 -1
- package/dist/esm/{chunk-bj1r1hh5.js → chunk-7pgk8h5m.js} +9174 -8486
- package/dist/esm/internals.mjs +9174 -8486
- package/dist/esm/previewEntry.mjs +8991 -8303
- package/dist/esm/renderEntry.mjs +1 -1
- package/dist/helpers/hoverable.d.ts +11 -0
- package/dist/helpers/hoverable.js +70 -0
- package/dist/helpers/inject-css.js +43 -23
- package/dist/helpers/install-required-package.d.ts +3 -2
- package/dist/helpers/install-required-package.js +20 -15
- package/dist/helpers/use-is-fullscreen.d.ts +1 -0
- package/dist/helpers/use-is-fullscreen.js +25 -0
- package/dist/helpers/use-menu-structure.js +88 -59
- package/dist/icons/audio.d.ts +1 -1
- package/dist/icons/audio.js +1 -1
- package/dist/icons/canvas-zoom.d.ts +10 -0
- package/dist/icons/canvas-zoom.js +21 -0
- package/dist/icons/caret.js +1 -1
- package/dist/icons/certificate.d.ts +1 -1
- package/dist/icons/certificate.js +1 -1
- package/dist/icons/data.d.ts +1 -1
- package/dist/icons/data.js +2 -2
- package/dist/icons/effects.d.ts +5 -0
- package/dist/icons/effects.js +8 -0
- package/dist/icons/ellipsis.js +1 -1
- package/dist/icons/external-link.d.ts +5 -0
- package/dist/icons/external-link.js +10 -0
- package/dist/icons/fullscreen.js +1 -1
- package/dist/icons/gear.d.ts +1 -1
- package/dist/icons/gear.js +1 -1
- package/dist/icons/gif.d.ts +1 -1
- package/dist/icons/gif.js +1 -1
- package/dist/icons/input-props.d.ts +2 -0
- package/dist/icons/input-props.js +9 -0
- package/dist/icons/jump-to-start.js +2 -2
- package/dist/icons/magnet.d.ts +3 -1
- package/dist/icons/magnet.js +2 -2
- package/dist/icons/media-volume.d.ts +6 -2
- package/dist/icons/media-volume.js +8 -6
- package/dist/icons/minus.d.ts +3 -1
- package/dist/icons/minus.js +2 -2
- package/dist/icons/pause.js +1 -1
- package/dist/icons/play.js +1 -1
- package/dist/icons/playback-rate.d.ts +5 -0
- package/dist/icons/playback-rate.js +31 -0
- package/dist/icons/plus.js +1 -1
- package/dist/icons/redo.js +2 -2
- package/dist/icons/search.d.ts +5 -0
- package/dist/icons/search.js +10 -0
- package/dist/icons/step-back.js +2 -2
- package/dist/icons/step-forward.js +2 -2
- package/dist/icons/timelineInOutPointer.js +2 -2
- package/dist/icons/undo.js +2 -2
- package/package.json +12 -12
|
@@ -4,11 +4,12 @@ exports.PlaybackRateSelector = exports.usePlaybackRateMenuItems = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const remotion_1 = require("remotion");
|
|
7
|
+
const colors_1 = require("../helpers/colors");
|
|
7
8
|
const is_current_selected_still_1 = require("../helpers/is-current-selected-still");
|
|
8
9
|
const Checkmark_1 = require("../icons/Checkmark");
|
|
10
|
+
const playback_rate_1 = require("../icons/playback-rate");
|
|
9
11
|
const playbackrate_1 = require("../state/playbackrate");
|
|
10
|
-
const
|
|
11
|
-
const ComboBox_1 = require("./NewComposition/ComboBox");
|
|
12
|
+
const TimelineCombobox_1 = require("./TimelineCombobox");
|
|
12
13
|
const commonPlaybackRates = [
|
|
13
14
|
-4, -2, -1, -0.5, -0.25, 0.25, 0.5, 1, 1.5, 2, 4,
|
|
14
15
|
];
|
|
@@ -16,7 +17,6 @@ const getPlaybackRateLabel = (playbackRate) => {
|
|
|
16
17
|
return `${playbackRate}x`;
|
|
17
18
|
};
|
|
18
19
|
const accessibilityLabel = 'Change the playback rate';
|
|
19
|
-
const comboStyle = { width: 64 };
|
|
20
20
|
const usePlaybackRateMenuItems = ({ playbackRate, setPlaybackRate, }) => {
|
|
21
21
|
const items = (0, react_1.useMemo)(() => {
|
|
22
22
|
const divider = {
|
|
@@ -57,14 +57,9 @@ const PlaybackRateSelector = ({ playbackRate, setPlaybackRate, }) => {
|
|
|
57
57
|
playbackRate,
|
|
58
58
|
setPlaybackRate,
|
|
59
59
|
});
|
|
60
|
-
const style = (0, react_1.useMemo)(() => {
|
|
61
|
-
return {
|
|
62
|
-
padding: ControlButton_1.CONTROL_BUTTON_PADDING - 2,
|
|
63
|
-
};
|
|
64
|
-
}, []);
|
|
65
60
|
if (isStill || canvasContent === null || canvasContent.type === 'asset') {
|
|
66
61
|
return null;
|
|
67
62
|
}
|
|
68
|
-
return (jsx_runtime_1.jsx(
|
|
63
|
+
return (jsx_runtime_1.jsx(TimelineCombobox_1.TimelineCombobox, { title: accessibilityLabel, labelWidth: 30, selectedId: selectedId, values: items, renderLeftItem: (color) => (jsx_runtime_1.jsx(playback_rate_1.PlaybackRateIcon, { color: color, playbackRate: playbackRate })), unhoveredIconColor: colors_1.WHITE_ALPHA_80 }));
|
|
69
64
|
};
|
|
70
65
|
exports.PlaybackRateSelector = PlaybackRateSelector;
|
|
@@ -25,7 +25,6 @@ const PreviewToolbarOverflowButton_1 = require("./PreviewToolbarOverflowButton")
|
|
|
25
25
|
const RenderButton_1 = require("./RenderButton");
|
|
26
26
|
const SizeSelector_1 = require("./SizeSelector");
|
|
27
27
|
const SnappingToggle_1 = require("./SnappingToggle");
|
|
28
|
-
const TimelineZoomControls_1 = require("./Timeline/TimelineZoomControls");
|
|
29
28
|
const TimelineInOutToggle_1 = require("./TimelineInOutToggle");
|
|
30
29
|
const TOOLBAR_HEIGHT = 40;
|
|
31
30
|
const container = {
|
|
@@ -58,7 +57,8 @@ const padding = {
|
|
|
58
57
|
width: timeline_layout_1.TIMELINE_PADDING,
|
|
59
58
|
};
|
|
60
59
|
const toolbarControl = {
|
|
61
|
-
display: '
|
|
60
|
+
display: 'flex',
|
|
61
|
+
flexShrink: 0,
|
|
62
62
|
};
|
|
63
63
|
const PreviewToolbarControl = ({ children }) => {
|
|
64
64
|
const onPointerDown = (0, react_1.useCallback)((e) => {
|
|
@@ -80,12 +80,16 @@ const PreviewToolbar = ({ readOnlyStudio, bufferStateDelayInMilliseconds }) => {
|
|
|
80
80
|
const playPause = (jsx_runtime_1.jsx(PreviewToolbarControl, { children: jsx_runtime_1.jsx(PlayPause_1.PlayPause, { bufferStateDelayInMilliseconds: bufferStateDelayInMilliseconds, loop: loop, playbackRate: playbackRate, muted: playerMuted, hideNavigationControls: isMobileLayout }) }));
|
|
81
81
|
return (jsx_runtime_1.jsxs("div", { style: container, className: "css-reset", children: [
|
|
82
82
|
jsx_runtime_1.jsxs("div", { style: sideContainer, children: [
|
|
83
|
-
jsx_runtime_1.jsx("div", { style: padding }), jsx_runtime_1.jsx(PreviewToolbarControl, { children: jsx_runtime_1.jsx(
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
83
|
+
jsx_runtime_1.jsx("div", { style: padding }), isMobileLayout ? null : (jsx_runtime_1.jsx(PreviewToolbarControl, { children: jsx_runtime_1.jsx(SizeSelector_1.SizeSelector, {}) })), !isMobileLayout && (isStill || isVideoComposition) ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
84
|
+
jsx_runtime_1.jsx(layout_1.Spacing, { x: 2 }), jsx_runtime_1.jsx(PreviewToolbarControl, { children: jsx_runtime_1.jsx(PlaybackRateSelector_1.PlaybackRateSelector, { setPlaybackRate: setPlaybackRate, playbackRate: playbackRate }) })
|
|
85
|
+
] })) : null, isMobileLayout ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
86
|
+
jsx_runtime_1.jsx(PreviewToolbarControl, { children: jsx_runtime_1.jsx(PreviewToolbarOverflowButton_1.PreviewToolbarOverflowButton, { showFullscreen: Boolean(canvasContent && isFullscreenSupported), showPlaybackRate: isVideoComposition, showLoop: isVideoComposition, showCompositionControls: (canvasContent === null || canvasContent === void 0 ? void 0 : canvasContent.type) === 'composition', playbackRate: playbackRate, setPlaybackRate: setPlaybackRate, loop: loop, setLoop: setLoop }) }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 1.5 })
|
|
87
|
+
] })) : null, isVideoComposition && isMobileLayout ? (jsx_runtime_1.jsx(PreviewToolbarControl, { children: jsx_runtime_1.jsx(MuteToggle_1.MuteToggle, { muted: playerMuted, setMuted: setPlayerMuted }) })) : null] }), jsx_runtime_1.jsx(layout_1.Flex, {}), isVideoComposition && isMobileLayout ? (jsx_runtime_1.jsx("div", { style: centeredPlayButton, children: playPause })) : null, isVideoComposition && !isMobileLayout ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
88
|
+
jsx_runtime_1.jsx(layout_1.Spacing, { x: 2 }), playPause, jsx_runtime_1.jsx(layout_1.Spacing, { x: 2 }), jsx_runtime_1.jsx(PreviewToolbarControl, { children: jsx_runtime_1.jsx(LoopToggle_1.LoopToggle, { loop: loop, setLoop: setLoop }) }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.75 }), jsx_runtime_1.jsx(PreviewToolbarControl, { children: jsx_runtime_1.jsx(MuteToggle_1.MuteToggle, { muted: playerMuted, setMuted: setPlayerMuted }) }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 2 }), jsx_runtime_1.jsx(PreviewToolbarControl, { children: jsx_runtime_1.jsx(TimelineInOutToggle_1.TimelineInOutPointToggle, {}) }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 2 })
|
|
89
|
+
] })) : null, (canvasContent === null || canvasContent === void 0 ? void 0 : canvasContent.type) === 'composition' ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [isMobileLayout ? null : (jsx_runtime_1.jsx(PreviewToolbarControl, { children: jsx_runtime_1.jsx(CheckboardToggle_1.CheckboardToggle, {}) })), isMobileLayout ? null : jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.25 }), isMobileLayout ? null : (jsx_runtime_1.jsx(PreviewToolbarControl, { children: jsx_runtime_1.jsx(OutlineToggle_1.OutlineToggle, {}) })), readOnlyStudio || isMobileLayout ? null : (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
90
|
+
jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.25 }), jsx_runtime_1.jsx(PreviewToolbarControl, { children: jsx_runtime_1.jsx(SnappingToggle_1.SnappingToggle, {}) })
|
|
91
|
+
] }))] })) : null, jsx_runtime_1.jsx(layout_1.Spacing, { x: 1 }), canvasContent && isFullscreenSupported ? (jsx_runtime_1.jsx(PreviewToolbarControl, { children: jsx_runtime_1.jsx(FullscreenToggle_1.FullScreenToggle, { hidden: isMobileLayout }) })) : null, jsx_runtime_1.jsx(layout_1.Flex, {}), jsx_runtime_1.jsxs("div", { style: sideContainer, children: [
|
|
92
|
+
jsx_runtime_1.jsx(layout_1.Flex, {}), jsx_runtime_1.jsx(FpsCounter_1.FpsCounter, { playbackSpeed: playbackRate }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 2 }), jsx_runtime_1.jsx(PreviewToolbarControl, { children: jsx_runtime_1.jsx(RenderButton_1.RenderButton, { readOnlyStudio: readOnlyStudio, size: "compact", narrow: isMobileLayout }) }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 1.5 })
|
|
89
93
|
] }), jsx_runtime_1.jsx(PlaybackKeyboardShortcutsManager_1.PlaybackKeyboardShortcutsManager, { setPlaybackRate: setPlaybackRate }), jsx_runtime_1.jsx(PlaybackRatePersistor_1.PlaybackRatePersistor, {})
|
|
90
94
|
] }));
|
|
91
95
|
};
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.PreviewToolbarOverflowButton = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
|
-
const remotion_1 = require("remotion");
|
|
7
6
|
const colors_1 = require("../helpers/colors");
|
|
8
7
|
const use_keybinding_1 = require("../helpers/use-keybinding");
|
|
9
8
|
const Checkmark_1 = require("../icons/Checkmark");
|
|
@@ -18,8 +17,7 @@ const clickButton = (id) => {
|
|
|
18
17
|
var _a;
|
|
19
18
|
(_a = document.getElementById(id)) === null || _a === void 0 ? void 0 : _a.click();
|
|
20
19
|
};
|
|
21
|
-
const PreviewToolbarOverflowButton = ({
|
|
22
|
-
const video = remotion_1.Internals.useVideo();
|
|
20
|
+
const PreviewToolbarOverflowButton = ({ showFullscreen, showPlaybackRate, showLoop, showCompositionControls, playbackRate, setPlaybackRate, loop, setLoop, }) => {
|
|
23
21
|
const { checkerboard, setCheckerboard } = (0, react_1.useContext)(checkerboard_1.CheckerboardContext);
|
|
24
22
|
const { editorShowOutlines, setEditorShowOutlines } = (0, react_1.useContext)(editor_outlines_1.EditorShowOutlinesContext);
|
|
25
23
|
const { items: previewSizeItems, selectedId: selectedPreviewSize, zoomable, } = (0, SizeSelector_1.usePreviewSizeMenuItems)();
|
|
@@ -34,58 +32,6 @@ const PreviewToolbarOverflowButton = ({ readOnlyStudio, showFullscreen, showPlay
|
|
|
34
32
|
};
|
|
35
33
|
}, []);
|
|
36
34
|
const renderAction = (0, react_1.useCallback)((color) => jsx_runtime_1.jsx(ellipsis_1.EllipsisIcon, { fill: color, svgProps: iconStyle }), [iconStyle]);
|
|
37
|
-
const renderItems = (0, react_1.useMemo)(() => {
|
|
38
|
-
if (readOnlyStudio) {
|
|
39
|
-
return [
|
|
40
|
-
{
|
|
41
|
-
type: 'item',
|
|
42
|
-
id: 'client-render',
|
|
43
|
-
label: 'Render on web',
|
|
44
|
-
value: 'client-render',
|
|
45
|
-
onClick: () => clickButton('render-modal-button-client'),
|
|
46
|
-
keyHint: null,
|
|
47
|
-
leftItem: null,
|
|
48
|
-
subMenu: null,
|
|
49
|
-
quickSwitcherLabel: null,
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
type: 'item',
|
|
53
|
-
id: 'render-command',
|
|
54
|
-
label: 'Render via CLI',
|
|
55
|
-
value: 'render-command',
|
|
56
|
-
onClick: () => clickButton('render-modal-button-command'),
|
|
57
|
-
keyHint: null,
|
|
58
|
-
leftItem: null,
|
|
59
|
-
subMenu: null,
|
|
60
|
-
quickSwitcherLabel: null,
|
|
61
|
-
},
|
|
62
|
-
];
|
|
63
|
-
}
|
|
64
|
-
return [
|
|
65
|
-
{
|
|
66
|
-
type: 'item',
|
|
67
|
-
id: 'server-render',
|
|
68
|
-
label: 'Server-side render',
|
|
69
|
-
value: 'server-render',
|
|
70
|
-
onClick: () => clickButton('render-modal-button-server'),
|
|
71
|
-
keyHint: null,
|
|
72
|
-
leftItem: null,
|
|
73
|
-
subMenu: null,
|
|
74
|
-
quickSwitcherLabel: null,
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
type: 'item',
|
|
78
|
-
id: 'client-render',
|
|
79
|
-
label: 'Client-side render',
|
|
80
|
-
value: 'client-render',
|
|
81
|
-
onClick: () => clickButton('render-modal-button-client'),
|
|
82
|
-
keyHint: null,
|
|
83
|
-
leftItem: null,
|
|
84
|
-
subMenu: null,
|
|
85
|
-
quickSwitcherLabel: null,
|
|
86
|
-
},
|
|
87
|
-
];
|
|
88
|
-
}, [readOnlyStudio]);
|
|
89
35
|
const values = (0, react_1.useMemo)(() => {
|
|
90
36
|
const items = [];
|
|
91
37
|
if (zoomable) {
|
|
@@ -172,28 +118,10 @@ const PreviewToolbarOverflowButton = ({ readOnlyStudio, showFullscreen, showPlay
|
|
|
172
118
|
quickSwitcherLabel: null,
|
|
173
119
|
});
|
|
174
120
|
}
|
|
175
|
-
if (video) {
|
|
176
|
-
items.push({
|
|
177
|
-
type: 'item',
|
|
178
|
-
id: 'render',
|
|
179
|
-
label: 'Render',
|
|
180
|
-
value: 'render',
|
|
181
|
-
onClick: () => undefined,
|
|
182
|
-
keyHint: null,
|
|
183
|
-
leftItem: null,
|
|
184
|
-
subMenu: {
|
|
185
|
-
items: renderItems,
|
|
186
|
-
leaveLeftSpace: false,
|
|
187
|
-
preselectIndex: 0,
|
|
188
|
-
},
|
|
189
|
-
quickSwitcherLabel: null,
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
121
|
return items;
|
|
193
122
|
}, [
|
|
194
123
|
previewSizeItems,
|
|
195
124
|
playbackRateItems,
|
|
196
|
-
renderItems,
|
|
197
125
|
selectedPlaybackRate,
|
|
198
126
|
selectedPreviewSize,
|
|
199
127
|
showFullscreen,
|
|
@@ -206,12 +134,11 @@ const PreviewToolbarOverflowButton = ({ readOnlyStudio, showFullscreen, showPlay
|
|
|
206
134
|
setCheckerboard,
|
|
207
135
|
setEditorShowOutlines,
|
|
208
136
|
setLoop,
|
|
209
|
-
video,
|
|
210
137
|
zoomable,
|
|
211
138
|
]);
|
|
212
139
|
if (values.length === 0) {
|
|
213
140
|
return null;
|
|
214
141
|
}
|
|
215
|
-
return (jsx_runtime_1.jsx(InlineDropdown_1.InlineDropdown, { variant: null, renderAction: renderAction, values: values, title: "More actions", unhoveredColor: colors_1.
|
|
142
|
+
return (jsx_runtime_1.jsx(InlineDropdown_1.InlineDropdown, { variant: null, renderAction: renderAction, values: values, title: "More actions", unhoveredColor: colors_1.WHITE_ALPHA_80 }));
|
|
216
143
|
};
|
|
217
144
|
exports.PreviewToolbarOverflowButton = PreviewToolbarOverflowButton;
|
|
@@ -52,7 +52,6 @@ const modeInactive = {
|
|
|
52
52
|
const modeActive = {
|
|
53
53
|
...modeItem,
|
|
54
54
|
color: colors_1.WHITE,
|
|
55
|
-
fontWeight: 'bold',
|
|
56
55
|
};
|
|
57
56
|
const content = {
|
|
58
57
|
paddingLeft: 16,
|
|
@@ -353,7 +352,7 @@ const QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio
|
|
|
353
352
|
: 'Search compositions...';
|
|
354
353
|
const container = (0, react_1.useMemo)(() => {
|
|
355
354
|
return {
|
|
356
|
-
width: showKeyboardShortcuts ? 800 :
|
|
355
|
+
width: showKeyboardShortcuts ? 800 : 400,
|
|
357
356
|
};
|
|
358
357
|
}, [showKeyboardShortcuts]);
|
|
359
358
|
const results = (0, react_1.useMemo)(() => {
|
|
@@ -25,10 +25,9 @@ const MenuContent_1 = require("./NewComposition/MenuContent");
|
|
|
25
25
|
const splitButtonContainer = {
|
|
26
26
|
display: 'inline-flex',
|
|
27
27
|
flexDirection: 'row',
|
|
28
|
-
alignItems: '
|
|
29
|
-
borderRadius:
|
|
30
|
-
|
|
31
|
-
backgroundColor: colors_1.INPUT_BACKGROUND,
|
|
28
|
+
alignItems: 'center',
|
|
29
|
+
borderRadius: 3,
|
|
30
|
+
gap: 1,
|
|
32
31
|
overflow: 'hidden',
|
|
33
32
|
};
|
|
34
33
|
const mainButtonStyle = {
|
|
@@ -38,18 +37,14 @@ const mainButtonStyle = {
|
|
|
38
37
|
paddingBottom: 7,
|
|
39
38
|
background: colors_1.TRANSPARENT,
|
|
40
39
|
border: 'none',
|
|
40
|
+
borderRadius: '3px 0 0 3px',
|
|
41
41
|
color: colors_1.WHITE,
|
|
42
|
-
cursor: '
|
|
42
|
+
cursor: 'default',
|
|
43
43
|
display: 'flex',
|
|
44
44
|
alignItems: 'center',
|
|
45
45
|
fontSize: 14,
|
|
46
46
|
fontFamily: 'inherit',
|
|
47
47
|
};
|
|
48
|
-
const dividerStyle = {
|
|
49
|
-
width: 1,
|
|
50
|
-
backgroundColor: colors_1.BLACK_ALPHA_60,
|
|
51
|
-
alignSelf: 'stretch',
|
|
52
|
-
};
|
|
53
48
|
const dropdownTriggerStyle = {
|
|
54
49
|
paddingLeft: 6,
|
|
55
50
|
paddingRight: 6,
|
|
@@ -57,10 +52,12 @@ const dropdownTriggerStyle = {
|
|
|
57
52
|
paddingBottom: 7,
|
|
58
53
|
background: colors_1.TRANSPARENT,
|
|
59
54
|
border: 'none',
|
|
55
|
+
borderRadius: '0 3px 3px 0',
|
|
60
56
|
color: colors_1.WHITE,
|
|
61
|
-
cursor: '
|
|
57
|
+
cursor: 'default',
|
|
62
58
|
display: 'flex',
|
|
63
59
|
alignItems: 'center',
|
|
60
|
+
justifyContent: 'center',
|
|
64
61
|
};
|
|
65
62
|
const mainButtonContent = {
|
|
66
63
|
paddingLeft: 4,
|
|
@@ -75,32 +72,29 @@ const label = {
|
|
|
75
72
|
minWidth: 0,
|
|
76
73
|
overflow: 'hidden',
|
|
77
74
|
textOverflow: 'ellipsis',
|
|
75
|
+
userSelect: 'none',
|
|
76
|
+
WebkitUserSelect: 'none',
|
|
78
77
|
whiteSpace: 'nowrap',
|
|
79
78
|
};
|
|
80
|
-
const compactSplitButtonSegmentHeight =
|
|
79
|
+
const compactSplitButtonSegmentHeight = 24;
|
|
81
80
|
const compactMainButtonStyle = {
|
|
82
81
|
...mainButtonStyle,
|
|
83
82
|
boxSizing: 'border-box',
|
|
84
83
|
height: compactSplitButtonSegmentHeight,
|
|
85
|
-
|
|
86
|
-
paddingRight: 6,
|
|
87
|
-
paddingTop: 6,
|
|
88
|
-
paddingBottom: 6,
|
|
84
|
+
padding: '0 4px',
|
|
89
85
|
fontSize: 12,
|
|
90
86
|
};
|
|
91
87
|
const compactDropdownTriggerStyle = {
|
|
92
88
|
...dropdownTriggerStyle,
|
|
93
89
|
boxSizing: 'border-box',
|
|
94
90
|
height: compactSplitButtonSegmentHeight,
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
paddingTop: 6,
|
|
98
|
-
paddingBottom: 6,
|
|
91
|
+
padding: 0,
|
|
92
|
+
width: 20,
|
|
99
93
|
};
|
|
100
94
|
const compactMainButtonContent = {
|
|
101
95
|
...mainButtonContent,
|
|
102
|
-
paddingLeft:
|
|
103
|
-
paddingRight:
|
|
96
|
+
paddingLeft: 0,
|
|
97
|
+
paddingRight: 0,
|
|
104
98
|
};
|
|
105
99
|
const compactLabel = {
|
|
106
100
|
...label,
|
|
@@ -123,11 +117,12 @@ const getInitialRenderType = (readOnlyStudio) => {
|
|
|
123
117
|
}
|
|
124
118
|
return 'server-render';
|
|
125
119
|
};
|
|
126
|
-
const RenderButton = ({ readOnlyStudio, size: controlSize = 'default',
|
|
120
|
+
const RenderButton = ({ readOnlyStudio, size: controlSize = 'default', narrow = false }) => {
|
|
127
121
|
const { inFrame, outFrame } = (0, in_out_1.useTimelineInOutFramePosition)();
|
|
128
122
|
const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
|
|
129
123
|
const [preferredRenderType, setPreferredRenderType] = (0, react_1.useState)(() => getInitialRenderType(readOnlyStudio));
|
|
130
124
|
const [dropdownOpened, setDropdownOpened] = (0, react_1.useState)(false);
|
|
125
|
+
const [hovered, setHovered] = (0, react_1.useState)(false);
|
|
131
126
|
const dropdownRef = (0, react_1.useRef)(null);
|
|
132
127
|
const containerRef = (0, react_1.useRef)(null);
|
|
133
128
|
const { currentZIndex } = (0, z_index_1.useZIndex)();
|
|
@@ -191,8 +186,8 @@ const RenderButton = ({ readOnlyStudio, size: controlSize = 'default', hidden })
|
|
|
191
186
|
const iconStyle = (0, react_1.useMemo)(() => {
|
|
192
187
|
return {
|
|
193
188
|
style: {
|
|
194
|
-
height: controlSize === 'compact' ?
|
|
195
|
-
|
|
189
|
+
height: controlSize === 'compact' ? 18 : 16,
|
|
190
|
+
width: controlSize === 'compact' ? 18 : 16,
|
|
196
191
|
flexShrink: 0,
|
|
197
192
|
},
|
|
198
193
|
};
|
|
@@ -422,10 +417,9 @@ const RenderButton = ({ readOnlyStudio, size: controlSize = 'default', hidden })
|
|
|
422
417
|
const containerStyle = (0, react_1.useMemo)(() => {
|
|
423
418
|
return {
|
|
424
419
|
...splitButtonContainer,
|
|
425
|
-
|
|
426
|
-
borderRadius: controlSize === 'compact' ? 0 : 4,
|
|
420
|
+
borderRadius: controlSize === 'compact' ? 3 : 4,
|
|
427
421
|
opacity: 1,
|
|
428
|
-
cursor: '
|
|
422
|
+
cursor: 'default',
|
|
429
423
|
};
|
|
430
424
|
}, [controlSize]);
|
|
431
425
|
const renderLabel = renderType === 'server-render'
|
|
@@ -433,21 +427,45 @@ const RenderButton = ({ readOnlyStudio, size: controlSize = 'default', hidden })
|
|
|
433
427
|
: renderType === 'render-command'
|
|
434
428
|
? 'Render via CLI'
|
|
435
429
|
: 'Render on web';
|
|
430
|
+
const showRenderLabel = !narrow || renderType !== 'server-render';
|
|
431
|
+
const mainHovered = hovered && !dropdownOpened;
|
|
432
|
+
const mainForegroundColor = mainHovered ? colors_1.WHITE : colors_1.WHITE_ALPHA_80;
|
|
433
|
+
const dropdownForegroundColor = hovered || dropdownOpened ? colors_1.WHITE : colors_1.WHITE_ALPHA_80;
|
|
434
|
+
const mainSegmentBackground = (0, colors_1.getBackgroundFromHoverState)({
|
|
435
|
+
hovered: mainHovered,
|
|
436
|
+
selected: false,
|
|
437
|
+
});
|
|
438
|
+
const dropdownSegmentBackground = (0, colors_1.getBackgroundFromHoverState)({
|
|
439
|
+
hovered,
|
|
440
|
+
selected: dropdownOpened,
|
|
441
|
+
});
|
|
436
442
|
if (!video) {
|
|
437
443
|
return null;
|
|
438
444
|
}
|
|
439
445
|
return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
440
|
-
jsx_runtime_1.jsx("button", { style: { display: 'none' }, id: "render-modal-button-server", disabled: !canServerRender, onClick: () => openServerRenderModal(false), type: "button" }), ' ', jsx_runtime_1.jsx("button", { style: { display: 'none' }, id: "render-modal-button-client", onClick: openClientRenderModal, type: "button" }), jsx_runtime_1.jsx("button", { style: { display: 'none' }, id: "render-modal-button-command", onClick: () => openServerRenderModal(true), type: "button" }),
|
|
441
|
-
jsx_runtime_1.jsx("button", { type: "button",
|
|
442
|
-
|
|
443
|
-
|
|
446
|
+
jsx_runtime_1.jsx("button", { style: { display: 'none' }, id: "render-modal-button-server", disabled: !canServerRender, onClick: () => openServerRenderModal(false), type: "button" }), ' ', jsx_runtime_1.jsx("button", { style: { display: 'none' }, id: "render-modal-button-client", onClick: openClientRenderModal, type: "button" }), jsx_runtime_1.jsx("button", { style: { display: 'none' }, id: "render-modal-button-command", onClick: () => openServerRenderModal(true), type: "button" }), jsx_runtime_1.jsxs("div", { ref: containerRef, style: containerStyle, title: tooltip, onPointerEnter: () => setHovered(true), onPointerLeave: () => setHovered(false), children: [
|
|
447
|
+
jsx_runtime_1.jsx("button", { type: "button", "aria-label": renderLabel, style: {
|
|
448
|
+
...(controlSize === 'compact'
|
|
449
|
+
? compactMainButtonStyle
|
|
450
|
+
: mainButtonStyle),
|
|
451
|
+
backgroundColor: mainSegmentBackground,
|
|
452
|
+
color: mainForegroundColor,
|
|
453
|
+
}, onClick: onClick, id: "render-modal-button", children: jsx_runtime_1.jsxs(layout_1.Row, { align: "center", style: controlSize === 'compact'
|
|
444
454
|
? compactMainButtonContent
|
|
445
455
|
: mainButtonContent, children: [
|
|
446
|
-
jsx_runtime_1.jsx(render_1.ThinRenderIcon, { fill:
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
456
|
+
jsx_runtime_1.jsx(render_1.ThinRenderIcon, { fill: mainForegroundColor, svgProps: iconStyle }), showRenderLabel ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
457
|
+
jsx_runtime_1.jsx(layout_1.Spacing, { x: controlSize === 'compact' ? 0.75 : 1 }), jsx_runtime_1.jsx("span", { style: {
|
|
458
|
+
...(controlSize === 'compact' ? compactLabel : label),
|
|
459
|
+
color: mainForegroundColor,
|
|
460
|
+
}, children: renderLabel })
|
|
461
|
+
] })) : null] }) }), jsx_runtime_1.jsx("button", { ref: dropdownRef, type: "button", style: {
|
|
462
|
+
...(controlSize === 'compact'
|
|
463
|
+
? compactDropdownTriggerStyle
|
|
464
|
+
: dropdownTriggerStyle),
|
|
465
|
+
backgroundColor: dropdownSegmentBackground,
|
|
466
|
+
color: dropdownForegroundColor,
|
|
467
|
+
}, className: is_menu_item_1.MENU_INITIATOR_CLASSNAME, onPointerDown: onPointerDown, onClick: onClickDropdown, children: jsx_runtime_1.jsx(caret_1.CaretDown, { color: dropdownForegroundColor }) })
|
|
468
|
+
] }), portalStyle
|
|
451
469
|
? 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))
|
|
452
470
|
: null] }));
|
|
453
471
|
};
|
|
@@ -7,6 +7,11 @@ const InputDragger_1 = require("../NewComposition/InputDragger");
|
|
|
7
7
|
const layout_1 = require("./layout");
|
|
8
8
|
const MultiRangeSlider_1 = require("./MultiRangeSlider");
|
|
9
9
|
const INPUT_WIDTH = 40;
|
|
10
|
+
const startFrameInputContainer = {
|
|
11
|
+
display: 'flex',
|
|
12
|
+
justifyContent: 'flex-end',
|
|
13
|
+
width: INPUT_WIDTH,
|
|
14
|
+
};
|
|
10
15
|
const FrameRangeSetting = ({ startFrame, endFrame, setEndFrame, durationInFrames, setStartFrame }) => {
|
|
11
16
|
const minStartFrame = 0;
|
|
12
17
|
const maxEndFrame = durationInFrames - 1;
|
|
@@ -24,7 +29,7 @@ const FrameRangeSetting = ({ startFrame, endFrame, setEndFrame, durationInFrames
|
|
|
24
29
|
}, [onEndFrameChangedDirectly]);
|
|
25
30
|
return (jsx_runtime_1.jsxs("div", { style: layout_1.optionRow, children: [
|
|
26
31
|
jsx_runtime_1.jsx("div", { style: layout_1.label, children: "Frame range" }), jsx_runtime_1.jsxs("div", { style: layout_1.rightRow, children: [
|
|
27
|
-
jsx_runtime_1.jsx("div", { style:
|
|
32
|
+
jsx_runtime_1.jsx("div", { style: startFrameInputContainer, children: jsx_runtime_1.jsx(InputDragger_1.InputDragger, { min: minStartFrame, max: endFrame - 1, name: "Start frame", value: startFrame, step: 1, onTextChange: onStartFrameChanged, onValueChange: onStartFrameChangedDirectly, status: "ok", rightAlign: true, style: { width: INPUT_WIDTH } }) }), jsx_runtime_1.jsx(MultiRangeSlider_1.MultiRangeSlider, { min: minStartFrame, max: maxEndFrame, start: startFrame, end: endFrame, step: 1, onLeftThumbDrag: onStartFrameChangedDirectly, onRightThumbDrag: onEndFrameChangedDirectly }), ' ', jsx_runtime_1.jsx("div", { style: { width: INPUT_WIDTH }, children: jsx_runtime_1.jsx(InputDragger_1.InputDragger, { min: startFrame + 1, max: maxEndFrame, name: "End frame", value: endFrame, step: 1, onTextChange: onEndFrameChanged, onValueChange: onEndFrameChangedDirectly, status: "ok", rightAlign: true, style: { width: INPUT_WIDTH } }) })
|
|
28
33
|
] })
|
|
29
34
|
] }));
|
|
30
35
|
};
|
|
@@ -5,23 +5,23 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const colors_1 = require("../../helpers/colors");
|
|
7
7
|
const container = {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
width: 220,
|
|
8
|
+
height: 6,
|
|
9
|
+
flex: 1,
|
|
10
|
+
minWidth: 80,
|
|
11
|
+
maxWidth: 220,
|
|
13
12
|
position: 'relative',
|
|
14
|
-
backgroundColor: colors_1.
|
|
13
|
+
backgroundColor: colors_1.WHITE_ALPHA_10,
|
|
15
14
|
marginLeft: 8,
|
|
16
15
|
marginRight: 8,
|
|
17
|
-
borderRadius:
|
|
16
|
+
borderRadius: 3,
|
|
18
17
|
};
|
|
19
18
|
// blue slider
|
|
20
19
|
const sliderRange = {
|
|
21
20
|
position: 'absolute',
|
|
22
21
|
top: 0,
|
|
23
22
|
backgroundColor: colors_1.BLUE,
|
|
24
|
-
height:
|
|
23
|
+
height: 6,
|
|
24
|
+
borderRadius: 3,
|
|
25
25
|
};
|
|
26
26
|
const MultiRangeSlider = ({ min, max, start, end, step, onLeftThumbDrag, onRightThumbDrag, }) => {
|
|
27
27
|
const getPercent = (0, react_1.useCallback)((value) => Math.round(((value - min) / (max - min)) * 100), [min, max]);
|
|
@@ -3,16 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.RenderModalEnvironmentVariables = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
|
-
const colors_1 = require("../../helpers/colors");
|
|
7
6
|
const Button_1 = require("../Button");
|
|
8
7
|
const layout_1 = require("../layout");
|
|
9
8
|
const EnvInput_1 = require("./EnvInput");
|
|
10
|
-
const title = {
|
|
11
|
-
fontSize: 14,
|
|
12
|
-
fontWeight: 'bold',
|
|
13
|
-
color: colors_1.LIGHT_TEXT,
|
|
14
|
-
marginLeft: 16,
|
|
15
|
-
};
|
|
16
9
|
const container = {
|
|
17
10
|
marginTop: 20,
|
|
18
11
|
};
|
|
@@ -41,8 +34,7 @@ const RenderModalEnvironmentVariables = ({ envVariables, setEnvVariables }) => {
|
|
|
41
34
|
setEnvVariables((oldEnv) => [...oldEnv, ['', '']]);
|
|
42
35
|
}, [setEnvVariables]);
|
|
43
36
|
const usedKeys = [];
|
|
44
|
-
return (jsx_runtime_1.jsxs("div", { style: container, children: [
|
|
45
|
-
jsx_runtime_1.jsx("strong", { style: title, children: "Environment variables" }), envVariables.map((env, i) => {
|
|
37
|
+
return (jsx_runtime_1.jsxs("div", { style: container, children: [envVariables.map((env, i) => {
|
|
46
38
|
let isDuplicate = false;
|
|
47
39
|
if (usedKeys.includes(env[0].toUpperCase())) {
|
|
48
40
|
isDuplicate = true;
|
|
@@ -28,6 +28,15 @@ const openIconStyle = {
|
|
|
28
28
|
height: 12,
|
|
29
29
|
flexShrink: 0,
|
|
30
30
|
};
|
|
31
|
+
const outputNameRow = {
|
|
32
|
+
...layout_2.optionRow,
|
|
33
|
+
columnGap: 16,
|
|
34
|
+
};
|
|
35
|
+
const outputNameInputContainer = {
|
|
36
|
+
flex: 1,
|
|
37
|
+
minWidth: 0,
|
|
38
|
+
maxWidth: 280,
|
|
39
|
+
};
|
|
31
40
|
const RenderModalOutputName = ({ existence, inputStyle, outName, onValueChange, validationMessage, label: labelText, }) => {
|
|
32
41
|
const openExistingOutput = (0, react_1.useCallback)(() => {
|
|
33
42
|
(0, actions_1.openInFileExplorer)({ directory: outName }).catch((err) => {
|
|
@@ -38,8 +47,8 @@ const RenderModalOutputName = ({ existence, inputStyle, outName, onValueChange,
|
|
|
38
47
|
return jsx_runtime_1.jsx(folder_1.ExpandedFolderIconSolid, { style: openIconStyle, color: color });
|
|
39
48
|
}, []);
|
|
40
49
|
const fileManagerName = (0, get_file_manager_name_1.getFileManagerName)(window.remotion_fileSystemPlatform);
|
|
41
|
-
return (jsx_runtime_1.jsxs("div", { style:
|
|
42
|
-
jsx_runtime_1.jsx(layout_1.Column, { children: jsx_runtime_1.jsx("div", { style: layout_2.label, children: labelText }) }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsxs("div", { children: [
|
|
50
|
+
return (jsx_runtime_1.jsxs("div", { style: outputNameRow, children: [
|
|
51
|
+
jsx_runtime_1.jsx(layout_1.Column, { children: jsx_runtime_1.jsx("div", { style: layout_2.label, children: labelText }) }), jsx_runtime_1.jsx("div", { style: layout_2.rightRow, children: jsx_runtime_1.jsxs("div", { style: outputNameInputContainer, children: [
|
|
43
52
|
jsx_runtime_1.jsx(RemInput_1.RemotionInput, { status: validationMessage ? 'error' : existence ? 'warning' : 'ok', style: inputStyle, type: "text", value: outName, onChange: onValueChange, rightAlign: true }), validationMessage ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
44
53
|
jsx_runtime_1.jsx(layout_1.Spacing, { y: 1, block: true }), jsx_runtime_1.jsx(ValidationMessage_1.ValidationMessage, { align: "flex-end", message: validationMessage, type: 'error' })
|
|
45
54
|
] })) : existence ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
@@ -19,6 +19,7 @@ const file_1 = require("../../icons/file");
|
|
|
19
19
|
const frame_1 = require("../../icons/frame");
|
|
20
20
|
const gear_1 = require("../../icons/gear");
|
|
21
21
|
const gif_1 = require("../../icons/gif");
|
|
22
|
+
const input_props_1 = require("../../icons/input-props");
|
|
22
23
|
const video_1 = require("../../icons/video");
|
|
23
24
|
const modals_1 = require("../../state/modals");
|
|
24
25
|
const sidebar_1 = require("../../state/sidebar");
|
|
@@ -989,23 +990,7 @@ const RenderModal = ({ readOnlyStudio, initialFrame, initialVideoImageFormat, in
|
|
|
989
990
|
: 'Rendering...', jsx_runtime_1.jsx(ShortcutHint_1.ShortcutHint, { keyToPress: "\u21B5", cmdOrCtrl: true })
|
|
990
991
|
] })
|
|
991
992
|
] }), jsx_runtime_1.jsxs("div", { style: render_modals_1.horizontalLayout, children: [
|
|
992
|
-
jsx_runtime_1.jsxs("div", { style: render_modals_1.leftSidebar, children: [shownTabs.includes('general') ? (jsx_runtime_1.
|
|
993
|
-
jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(file_1.FileIcon, { style: render_modals_1.icon }) }),
|
|
994
|
-
"General"] })) : null, shownTabs.includes('data') ? (jsx_runtime_1.jsxs(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'data', onClick: () => setTab('data'), children: [
|
|
995
|
-
jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(data_1.DataIcon, { style: render_modals_1.icon }) }),
|
|
996
|
-
"Input Props"] })) : null, shownTabs.includes('picture') ? (jsx_runtime_1.jsxs(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'picture', onClick: () => setTab('picture'), children: [
|
|
997
|
-
jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(frame_1.PicIcon, { style: render_modals_1.icon }) }),
|
|
998
|
-
"Picture"] })) : null, shownTabs.includes('audio') ? (jsx_runtime_1.jsxs(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'audio', onClick: () => setTab('audio'), children: [
|
|
999
|
-
jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(audio_1.AudioIcon, { style: render_modals_1.icon }) }),
|
|
1000
|
-
"Audio"] })) : null, shownTabs.includes('gif') ? (jsx_runtime_1.jsxs(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'gif', onClick: () => setTab('gif'), children: [
|
|
1001
|
-
jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(gif_1.GifIcon, { style: render_modals_1.icon }) }),
|
|
1002
|
-
"GIF"] })) : null, shownTabs.includes('encoding') ? (jsx_runtime_1.jsxs(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'encoding', onClick: () => setTab('encoding'), children: [
|
|
1003
|
-
jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(video_1.FilmIcon, { style: render_modals_1.icon, color: colors_1.CURRENT_COLOR_LOWERCASE }) }),
|
|
1004
|
-
"Encoding"] })) : null, shownTabs.includes('environment') ? (jsx_runtime_1.jsxs(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'environment', onClick: () => setTab('environment'), children: [
|
|
1005
|
-
jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(data_1.DataIcon, { style: render_modals_1.icon }) }),
|
|
1006
|
-
"Environment"] })) : null, shownTabs.includes('advanced') ? (jsx_runtime_1.jsxs(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'advanced', onClick: () => setTab('advanced'), children: [
|
|
1007
|
-
jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(gear_1.GearIcon, { style: render_modals_1.icon }) }),
|
|
1008
|
-
"Other"] })) : null] }), jsx_runtime_1.jsx("div", { style: render_modals_1.optionsPanel, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: tab === 'general' ? (jsx_runtime_1.jsx(RenderModalBasic_1.RenderModalBasic, { codec: codec, resolvedComposition: resolvedComposition, frame: frame, imageFormatOptions: imageFormatOptions, outName: outName, proResProfile: proResProfile, renderMode: renderMode, setVideoCodec: setCodec, setFrame: setFrame, setOutName: setOutName, setProResProfile: setProResProfile, endFrame: endFrame, setEndFrame: setEndFrame, setStartFrame: setStartFrame, setVerboseLogging: setLogLevel, logLevel: logLevel, showOutputName: !readOnlyStudio, startFrame: startFrame, validationMessage: outnameValidation.valid ? null : outnameValidation.error.message })) : tab === 'picture' ? (jsx_runtime_1.jsx(RenderModalPicture_1.RenderModalPicture, { renderMode: renderMode, scale: scale, setScale: setScale, imageFormatOptions: imageFormatOptions, jpegQuality: jpegQuality, setJpegQuality: setJpegQuality, videoImageFormat: videoImageFormat, stillImageFormat: stillImageFormat, compositionWidth: resolvedComposition.width, compositionHeight: resolvedComposition.height })) : tab === 'audio' ? (jsx_runtime_1.jsx(RenderModalAudio_1.RenderModalAudio, { muted: muted, renderMode: renderMode, setMuted: setMuted, codec: codec, audioCodec: audioCodec, setAudioCodec: setAudioCodec, enforceAudioTrack: enforceAudioTrack, setEnforceAudioTrackState: setEnforceAudioTrackState, customTargetAudioBitrate: customTargetAudioBitrate, setCustomTargetAudioBitrateValue: setCustomTargetAudioBitrateValue, setShouldHaveCustomTargetAudioBitrate: setShouldHaveCustomTargetAudioBitrate, shouldHaveCustomTargetAudioBitrate: shouldHaveCustomTargetAudioBitrate, forSeamlessAacConcatenation: forSeamlessAacConcatenation, setForSeamlessAacConcatenation: setForSeamlessAacConcatenation, separateAudioTo: separateAudioTo, setSeparateAudioTo: setSeparateAudioTo, outName: outName, sampleRate: sampleRate, setSampleRate: setSampleRate })) : tab === 'gif' ? (jsx_runtime_1.jsx(RenderModalGif_1.RenderModalGif, { everyNthFrame: everyNthFrame, limitNumberOfGifLoops: limitNumberOfGifLoops, numberOfGifLoopsSetting: numberOfGifLoopsSetting, setEveryNthFrameSetting: setEveryNthFrameSetting, setLimitNumberOfGifLoops: setLimitNumberOfGifLoops, setNumberOfGifLoopsSetting: setNumberOfGifLoopsSetting })) : tab === 'encoding' ? (jsx_runtime_1.jsx(RenderModalEncoding_1.RenderModalEncoding, { renderMode: renderMode, codec: codec, qualityControlType: qualityControlType, setQualityControl: setQualityControl, shouldDisplayQualityControlPicker: supportsBothQualityControls, crf: crf, setCrf: setCrf, maxCrf: maxCrf, minCrf: minCrf, customTargetVideoBitrate: customTargetVideoBitrate, setCustomTargetVideoBitrateValue: setCustomTargetVideoBitrateValue, encodingBufferSize: encodingBufferSize, setEncodingBufferSize: setEncodingBufferSize, encodingMaxRate: encodingMaxRate, setEncodingMaxRate: setEncodingMaxRate, pixelFormat: pixelFormat, pixelFormatOptions: pixelFormatOptions, colorSpace: colorSpace, setColorSpace: setColorSpace, x264Preset: x264Preset, setx264Preset: setx264Preset, gopSize: gopSize, setGopSize: setGopSize, hardwareAcceleration: hardwareAcceleration, setHardwareAcceleration: setHardwareAcceleration, disallowParallelEncoding: disallowParallelEncoding, setDisallowParallelEncoding: setDisallowParallelEncoding })) : tab === 'environment' ? (jsx_runtime_1.jsx(RenderModalEnvironmentVariables_1.RenderModalEnvironmentVariables, { envVariables: envVariables, setEnvVariables: setEnvVariables })) : tab === 'data' ? (jsx_runtime_1.jsx(DataEditor_1.DataEditor, { defaultProps: inputProps, setDefaultProps: setInputProps, unresolvedComposition: unresolvedComposition, propsEditType: "input-props", canSaveDefaultProps: {
|
|
993
|
+
jsx_runtime_1.jsxs("div", { style: render_modals_1.leftSidebar, children: [shownTabs.includes('general') ? (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'general', onClick: () => setTab('general'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(file_1.FileIcon, { color: color, style: render_modals_1.icon }) })), children: "General" })) : null, shownTabs.includes('data') ? (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'data', onClick: () => setTab('data'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(input_props_1.InputPropsIcon, { color: color, style: render_modals_1.icon }) })), children: "Input Props" })) : null, shownTabs.includes('picture') ? (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'picture', onClick: () => setTab('picture'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(frame_1.PicIcon, { color: color, style: render_modals_1.icon }) })), children: "Picture" })) : null, shownTabs.includes('audio') ? (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'audio', onClick: () => setTab('audio'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(audio_1.AudioIcon, { color: color, style: render_modals_1.icon }) })), children: "Audio" })) : null, shownTabs.includes('gif') ? (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'gif', onClick: () => setTab('gif'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(gif_1.GifIcon, { color: color, style: render_modals_1.icon }) })), children: "GIF" })) : null, shownTabs.includes('encoding') ? (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'encoding', onClick: () => setTab('encoding'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(video_1.FilmIcon, { color: color, style: render_modals_1.icon }) })), children: "Encoding" })) : null, shownTabs.includes('environment') ? (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'environment', onClick: () => setTab('environment'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(data_1.DataIcon, { color: color, style: render_modals_1.icon }) })), children: "Environment" })) : null, shownTabs.includes('advanced') ? (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'advanced', onClick: () => setTab('advanced'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(gear_1.GearIcon, { color: color, style: render_modals_1.icon }) })), children: "Other" })) : null] }), jsx_runtime_1.jsx("div", { style: render_modals_1.optionsPanel, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: tab === 'general' ? (jsx_runtime_1.jsx(RenderModalBasic_1.RenderModalBasic, { codec: codec, resolvedComposition: resolvedComposition, frame: frame, imageFormatOptions: imageFormatOptions, outName: outName, proResProfile: proResProfile, renderMode: renderMode, setVideoCodec: setCodec, setFrame: setFrame, setOutName: setOutName, setProResProfile: setProResProfile, endFrame: endFrame, setEndFrame: setEndFrame, setStartFrame: setStartFrame, setVerboseLogging: setLogLevel, logLevel: logLevel, showOutputName: !readOnlyStudio, startFrame: startFrame, validationMessage: outnameValidation.valid ? null : outnameValidation.error.message })) : tab === 'picture' ? (jsx_runtime_1.jsx(RenderModalPicture_1.RenderModalPicture, { renderMode: renderMode, scale: scale, setScale: setScale, imageFormatOptions: imageFormatOptions, jpegQuality: jpegQuality, setJpegQuality: setJpegQuality, videoImageFormat: videoImageFormat, stillImageFormat: stillImageFormat, compositionWidth: resolvedComposition.width, compositionHeight: resolvedComposition.height })) : tab === 'audio' ? (jsx_runtime_1.jsx(RenderModalAudio_1.RenderModalAudio, { muted: muted, renderMode: renderMode, setMuted: setMuted, codec: codec, audioCodec: audioCodec, setAudioCodec: setAudioCodec, enforceAudioTrack: enforceAudioTrack, setEnforceAudioTrackState: setEnforceAudioTrackState, customTargetAudioBitrate: customTargetAudioBitrate, setCustomTargetAudioBitrateValue: setCustomTargetAudioBitrateValue, setShouldHaveCustomTargetAudioBitrate: setShouldHaveCustomTargetAudioBitrate, shouldHaveCustomTargetAudioBitrate: shouldHaveCustomTargetAudioBitrate, forSeamlessAacConcatenation: forSeamlessAacConcatenation, setForSeamlessAacConcatenation: setForSeamlessAacConcatenation, separateAudioTo: separateAudioTo, setSeparateAudioTo: setSeparateAudioTo, outName: outName, sampleRate: sampleRate, setSampleRate: setSampleRate })) : tab === 'gif' ? (jsx_runtime_1.jsx(RenderModalGif_1.RenderModalGif, { everyNthFrame: everyNthFrame, limitNumberOfGifLoops: limitNumberOfGifLoops, numberOfGifLoopsSetting: numberOfGifLoopsSetting, setEveryNthFrameSetting: setEveryNthFrameSetting, setLimitNumberOfGifLoops: setLimitNumberOfGifLoops, setNumberOfGifLoopsSetting: setNumberOfGifLoopsSetting })) : tab === 'encoding' ? (jsx_runtime_1.jsx(RenderModalEncoding_1.RenderModalEncoding, { renderMode: renderMode, codec: codec, qualityControlType: qualityControlType, setQualityControl: setQualityControl, shouldDisplayQualityControlPicker: supportsBothQualityControls, crf: crf, setCrf: setCrf, maxCrf: maxCrf, minCrf: minCrf, customTargetVideoBitrate: customTargetVideoBitrate, setCustomTargetVideoBitrateValue: setCustomTargetVideoBitrateValue, encodingBufferSize: encodingBufferSize, setEncodingBufferSize: setEncodingBufferSize, encodingMaxRate: encodingMaxRate, setEncodingMaxRate: setEncodingMaxRate, pixelFormat: pixelFormat, pixelFormatOptions: pixelFormatOptions, colorSpace: colorSpace, setColorSpace: setColorSpace, x264Preset: x264Preset, setx264Preset: setx264Preset, gopSize: gopSize, setGopSize: setGopSize, hardwareAcceleration: hardwareAcceleration, setHardwareAcceleration: setHardwareAcceleration, disallowParallelEncoding: disallowParallelEncoding, setDisallowParallelEncoding: setDisallowParallelEncoding })) : tab === 'environment' ? (jsx_runtime_1.jsx(RenderModalEnvironmentVariables_1.RenderModalEnvironmentVariables, { envVariables: envVariables, setEnvVariables: setEnvVariables })) : tab === 'data' ? (jsx_runtime_1.jsx(DataEditor_1.DataEditor, { defaultProps: inputProps, setDefaultProps: setInputProps, unresolvedComposition: unresolvedComposition, propsEditType: "input-props", canSaveDefaultProps: {
|
|
1009
994
|
canUpdate: false,
|
|
1010
995
|
reason: 'render dialogue',
|
|
1011
996
|
determined: false,
|