@remotion/studio 4.0.175 → 4.0.176

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.
@@ -1,4 +1,4 @@
1
1
 
2
- > @remotion/studio@4.0.174 build /Users/jonathanburger/remotion/packages/studio
2
+ > @remotion/studio@4.0.175 build /Users/jonathanburger/remotion/packages/studio
3
3
  > bun --env-file=../.env.bundle bundle.ts
4
4
 
@@ -0,0 +1,85 @@
1
+
2
+ > @remotion/studio@4.0.163 test /Users/jonathanburger/remotion/packages/studio
3
+ > bun test src
4
+
5
+ bun test v1.1.9-canary.1 (4df387d5)
6
+ 
7
+ src/test/stringify-default-props.test.ts:
8
+ ✓ Should stringify default props correctly [2.87ms]
9
+ ✓ Should stringify default props correctly [4.96ms]
10
+ 
11
+ src/test/sequenced-timeline.test.ts:
12
+ ✓ Should calculate sequences correctly [9.98ms]
13
+ 
14
+ src/test/create-zod-values.test.ts:
15
+ ✓ Should be able to create a string [5.47ms]
16
+ ✓ Should be able to create a number [0.33ms]
17
+ ✓ Should be able to create an object [0.25ms]
18
+ ✓ Should be able to create an array [0.22ms]
19
+ ✓ Should be able to create a union [0.32ms]
20
+ ✓ Zod literal [0.20ms]
21
+ ✓ Should be able to create a discriminated union [1.18ms]
22
+ ✓ Zod instanceof [0.47ms]
23
+ ✓ Zod intersection [0.81ms]
24
+ ✓ Zod tuples [0.40ms]
25
+ ✓ Zod record [0.11ms]
26
+ ✓ Zod map [0.09ms]
27
+ ✓ Zod lazy [0.08ms]
28
+ ✓ Zod set [0.10ms]
29
+ ✓ Zod function [0.17ms]
30
+ ✓ Zod undefined [0.07ms]
31
+ ✓ Zod null [0.07ms]
32
+ ✓ Zod enum [0.20ms]
33
+ ✓ Zod nativeEnum [0.32ms]
34
+ ✓ Zod optional [0.34ms]
35
+ ✓ Zod nullable [0.38ms]
36
+ ✓ Zod undefined [0.24ms]
37
+ ✓ Zod catch [0.28ms]
38
+ ✓ Zod promise [0.34ms]
39
+ ✓ Zod transform [0.34ms]
40
+ ✓ Zod branded [0.35ms]
41
+ ✓ Zod lazy [1.06ms]
42
+ ✓ Zod coerce [0.16ms]
43
+ ✓ Zod strict [0.14ms]
44
+ ✓ Should create a color [0.10ms]
45
+ ✓ Should create a textarea [0.05ms]
46
+ 
47
+ src/test/folder-tree.test.ts:
48
+ ✓ Should create a good folder tree with 1 item inside and 1 item outside [0.89ms]
49
+ ✓ Should handle nested folders well [0.39ms]
50
+ ✓ Should throw if two folders with the same name [0.24ms]
51
+ 
52
+ src/test/big-timeline.test.ts:
53
+ ✓ Should calculate timeline as expected [2.52ms]
54
+ 
55
+ src/test/smooth-zoom.test.ts:
56
+ ✓ Smoothen zoom [0.07ms]
57
+ ✓ Unsmoothen zoom [0.09ms]
58
+ 
59
+ src/test/validate-gui-output-filename.test.ts:
60
+ ✓ Should catch dot after slash [0.47ms]
61
+ ✓ Should catch dot in front  [0.03ms]
62
+ 
63
+ src/test/timeline-sequence-layout.test.ts:
64
+ ✓ Should test timeline sequence layout without max media duration [0.22ms]
65
+ ✓ Should test timeline sequence layout with max media duration [0.05ms]
66
+ 
67
+ src/test/extract-zod-enums.test.ts:
68
+ ✓ Extract Zod enums [0.12ms]
69
+ ✓ Extract Zod enums #2 [0.44ms]
70
+ 
71
+ src/test/color-math.test.ts:
72
+ ✓ Color math [0.88ms]
73
+ 
74
+ src/test/format-time.test.ts:
75
+ ✓ Format time [0.20ms]
76
+ 
77
+ src/test/timeline.test.ts:
78
+ ✓ Should calculate timeline with no sequences [0.06ms]
79
+ ✓ Should calculate a basic timeline [0.09ms]
80
+ ✓ Should follow order of nesting [0.12ms]
81
+
82
+  51 pass
83
+  0 fail
84
+ 67 expect() calls
85
+ Ran 51 tests across 12 files. [192.00ms]
@@ -37,6 +37,7 @@ const EditorContent_1 = require("./EditorContent");
37
37
  const GlobalKeybindings_1 = require("./GlobalKeybindings");
38
38
  const Modals_1 = require("./Modals");
39
39
  const NotificationCenter_1 = require("./Notifications/NotificationCenter");
40
+ const TopPanel_1 = require("./TopPanel");
40
41
  const background = {
41
42
  backgroundColor: colors_1.BACKGROUND,
42
43
  display: 'flex',
@@ -85,6 +86,6 @@ const Editor = ({ Root, readOnlyStudio }) => {
85
86
  const MemoRoot = (0, react_1.useMemo)(() => {
86
87
  return react_1.default.memo(Root);
87
88
  }, [Root]);
88
- return ((0, jsx_runtime_1.jsx)(z_index_1.HigherZIndex, { onEscape: noop_1.noop, onOutsideClick: noop_1.noop, children: (0, jsx_runtime_1.jsxs)(timeline_zoom_1.TimelineZoomContext, { children: [(0, jsx_runtime_1.jsx)(remotion_1.Internals.CurrentScaleContext.Provider, { value: value, children: (0, jsx_runtime_1.jsxs)("div", { style: background, children: [canvasMounted ? (0, jsx_runtime_1.jsx)(MemoRoot, {}) : null, (0, jsx_runtime_1.jsxs)(remotion_1.Internals.CanUseRemotionHooksProvider, { children: [(0, jsx_runtime_1.jsx)(EditorContent_1.EditorContent, { drawRef: canvas_ref_1.drawRef, size: size, onMounted: onMounted, readOnlyStudio: readOnlyStudio, bufferStateDelayInMilliseconds: exports.BUFFER_STATE_DELAY_IN_MILLISECONDS }), (0, jsx_runtime_1.jsx)(GlobalKeybindings_1.GlobalKeybindings, {})] })] }) }), (0, jsx_runtime_1.jsx)(Modals_1.Modals, { readOnlyStudio: readOnlyStudio }), (0, jsx_runtime_1.jsx)(NotificationCenter_1.NotificationCenter, {})] }) }));
89
+ return ((0, jsx_runtime_1.jsx)(z_index_1.HigherZIndex, { onEscape: noop_1.noop, onOutsideClick: noop_1.noop, children: (0, jsx_runtime_1.jsxs)(timeline_zoom_1.TimelineZoomContext, { children: [(0, jsx_runtime_1.jsx)(remotion_1.Internals.CurrentScaleContext.Provider, { value: value, children: (0, jsx_runtime_1.jsxs)("div", { style: background, children: [canvasMounted ? (0, jsx_runtime_1.jsx)(MemoRoot, {}) : null, (0, jsx_runtime_1.jsxs)(remotion_1.Internals.CanUseRemotionHooksProvider, { children: [(0, jsx_runtime_1.jsx)(EditorContent_1.EditorContent, { readOnlyStudio: readOnlyStudio, children: (0, jsx_runtime_1.jsx)(TopPanel_1.TopPanel, { size: size, drawRef: canvas_ref_1.drawRef, bufferStateDelayInMilliseconds: exports.BUFFER_STATE_DELAY_IN_MILLISECONDS, onMounted: onMounted, readOnlyStudio: readOnlyStudio }) }), (0, jsx_runtime_1.jsx)(GlobalKeybindings_1.GlobalKeybindings, {})] })] }) }), (0, jsx_runtime_1.jsx)(Modals_1.Modals, { readOnlyStudio: readOnlyStudio }), (0, jsx_runtime_1.jsx)(NotificationCenter_1.NotificationCenter, {})] }) }));
89
90
  };
90
91
  exports.Editor = Editor;
@@ -1,9 +1,5 @@
1
- import type { Size } from '@remotion/player';
2
1
  import React from 'react';
3
2
  export declare const EditorContent: React.FC<{
4
3
  readonly readOnlyStudio: boolean;
5
- readonly onMounted: () => void;
6
- readonly drawRef: React.RefObject<HTMLDivElement>;
7
- readonly size: Size | null;
8
- readonly bufferStateDelayInMilliseconds: number;
4
+ readonly children: React.ReactNode;
9
5
  }>;
@@ -11,7 +11,6 @@ const SplitterContainer_1 = require("./Splitter/SplitterContainer");
11
11
  const SplitterElement_1 = require("./Splitter/SplitterElement");
12
12
  const SplitterHandle_1 = require("./Splitter/SplitterHandle");
13
13
  const Timeline_1 = require("./Timeline/Timeline");
14
- const TopPanel_1 = require("./TopPanel");
15
14
  const noop = () => undefined;
16
15
  const container = {
17
16
  display: 'flex',
@@ -19,11 +18,11 @@ const container = {
19
18
  flex: 1,
20
19
  height: 0,
21
20
  };
22
- const EditorContent = ({ readOnlyStudio, onMounted, size, drawRef, bufferStateDelayInMilliseconds, }) => {
21
+ const EditorContent = ({ readOnlyStudio, children }) => {
23
22
  const isStill = (0, is_current_selected_still_1.useIsStill)();
24
23
  const { canvasContent } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
25
24
  // Preventing multiple renders so the update check doesn't get rendered twice and needs to be aborted
26
25
  const onlyTopPanel = canvasContent === null || isStill || canvasContent.type !== 'composition';
27
- return ((0, jsx_runtime_1.jsxs)("div", { style: container, children: [(0, jsx_runtime_1.jsx)(InitialCompositionLoader_1.InitialCompositionLoader, {}), (0, jsx_runtime_1.jsx)(MenuToolbar_1.MenuToolbar, { readOnlyStudio: readOnlyStudio }), onlyTopPanel ? ((0, jsx_runtime_1.jsx)("div", { style: SplitterContainer_1.containerColumn, children: (0, jsx_runtime_1.jsx)(TopPanel_1.TopPanel, { size: size, drawRef: drawRef, bufferStateDelayInMilliseconds: bufferStateDelayInMilliseconds, onMounted: onMounted, readOnlyStudio: readOnlyStudio }) })) : ((0, jsx_runtime_1.jsxs)(SplitterContainer_1.SplitterContainer, { orientation: "horizontal", id: "top-to-bottom", maxFlex: 0.9, minFlex: 0.2, defaultFlex: 0.75, children: [(0, jsx_runtime_1.jsx)(SplitterElement_1.SplitterElement, { sticky: null, type: "flexer", children: (0, jsx_runtime_1.jsx)(TopPanel_1.TopPanel, { size: size, drawRef: drawRef, bufferStateDelayInMilliseconds: bufferStateDelayInMilliseconds, onMounted: onMounted, readOnlyStudio: readOnlyStudio }) }), (0, jsx_runtime_1.jsx)(SplitterHandle_1.SplitterHandle, { allowToCollapse: "none", onCollapse: noop }), (0, jsx_runtime_1.jsx)(SplitterElement_1.SplitterElement, { sticky: null, type: "anti-flexer", children: (0, jsx_runtime_1.jsx)(Timeline_1.Timeline, {}) })] }))] }));
26
+ return ((0, jsx_runtime_1.jsxs)("div", { style: container, children: [(0, jsx_runtime_1.jsx)(InitialCompositionLoader_1.InitialCompositionLoader, {}), (0, jsx_runtime_1.jsx)(MenuToolbar_1.MenuToolbar, { readOnlyStudio: readOnlyStudio }), (0, jsx_runtime_1.jsxs)(SplitterContainer_1.SplitterContainer, { orientation: "horizontal", id: "top-to-bottom", maxFlex: 0.9, minFlex: 0.2, defaultFlex: 0.75, children: [(0, jsx_runtime_1.jsx)(SplitterElement_1.SplitterElement, { sticky: null, type: "flexer", children: children }), onlyTopPanel ? null : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(SplitterHandle_1.SplitterHandle, { allowToCollapse: "none", onCollapse: noop }), (0, jsx_runtime_1.jsx)(SplitterElement_1.SplitterElement, { sticky: null, type: "anti-flexer", children: (0, jsx_runtime_1.jsx)(Timeline_1.Timeline, {}) })] }))] })] }));
28
27
  };
29
28
  exports.EditorContent = EditorContent;
@@ -19836,7 +19836,8 @@ var Timeline = () => {
19836
19836
  // src/components/EditorContent.tsx
19837
19837
  import {
19838
19838
  jsx as jsx188,
19839
- jsxs as jsxs93
19839
+ jsxs as jsxs93,
19840
+ Fragment as Fragment27
19840
19841
  } from "react/jsx-runtime";
19841
19842
  var noop8 = () => {
19842
19843
  return;
@@ -19847,13 +19848,7 @@ var container41 = {
19847
19848
  flex: 1,
19848
19849
  height: 0
19849
19850
  };
19850
- var EditorContent = ({
19851
- readOnlyStudio,
19852
- onMounted,
19853
- size: size4,
19854
- drawRef: drawRef2,
19855
- bufferStateDelayInMilliseconds
19856
- }) => {
19851
+ var EditorContent = ({ readOnlyStudio, children }) => {
19857
19852
  const isStill = useIsStill();
19858
19853
  const { canvasContent } = useContext63(Internals51.CompositionManager);
19859
19854
  const onlyTopPanel = canvasContent === null || isStill || canvasContent.type !== "composition";
@@ -19864,16 +19859,7 @@ var EditorContent = ({
19864
19859
  jsx188(MenuToolbar, {
19865
19860
  readOnlyStudio
19866
19861
  }),
19867
- onlyTopPanel ? jsx188("div", {
19868
- style: containerColumn,
19869
- children: jsx188(TopPanel, {
19870
- size: size4,
19871
- drawRef: drawRef2,
19872
- bufferStateDelayInMilliseconds,
19873
- onMounted,
19874
- readOnlyStudio
19875
- })
19876
- }) : jsxs93(SplitterContainer, {
19862
+ jsxs93(SplitterContainer, {
19877
19863
  orientation: "horizontal",
19878
19864
  id: "top-to-bottom",
19879
19865
  maxFlex: 0.9,
@@ -19883,22 +19869,20 @@ var EditorContent = ({
19883
19869
  jsx188(SplitterElement, {
19884
19870
  sticky: null,
19885
19871
  type: "flexer",
19886
- children: jsx188(TopPanel, {
19887
- size: size4,
19888
- drawRef: drawRef2,
19889
- bufferStateDelayInMilliseconds,
19890
- onMounted,
19891
- readOnlyStudio
19892
- })
19893
- }),
19894
- jsx188(SplitterHandle, {
19895
- allowToCollapse: "none",
19896
- onCollapse: noop8
19872
+ children
19897
19873
  }),
19898
- jsx188(SplitterElement, {
19899
- sticky: null,
19900
- type: "anti-flexer",
19901
- children: jsx188(Timeline, {})
19874
+ onlyTopPanel ? null : jsxs93(Fragment27, {
19875
+ children: [
19876
+ jsx188(SplitterHandle, {
19877
+ allowToCollapse: "none",
19878
+ onCollapse: noop8
19879
+ }),
19880
+ jsx188(SplitterElement, {
19881
+ sticky: null,
19882
+ type: "anti-flexer",
19883
+ children: jsx188(Timeline, {})
19884
+ })
19885
+ ]
19902
19886
  })
19903
19887
  ]
19904
19888
  })
@@ -20364,7 +20348,7 @@ var DismissableModal = ({ children }) => {
20364
20348
  import {
20365
20349
  jsx as jsx195,
20366
20350
  jsxs as jsxs98,
20367
- Fragment as Fragment27
20351
+ Fragment as Fragment28
20368
20352
  } from "react/jsx-runtime";
20369
20353
  var content2 = {
20370
20354
  padding: 16,
@@ -20387,7 +20371,7 @@ var DeleteCompositionLoaded = ({ compositionId }) => {
20387
20371
  const onSubmit = useCallback93((e) => {
20388
20372
  e.preventDefault();
20389
20373
  }, []);
20390
- return jsxs98(Fragment27, {
20374
+ return jsxs98(Fragment28, {
20391
20375
  children: [
20392
20376
  jsx195(NewCompHeader, {
20393
20377
  title: "Delete composition"
@@ -20492,7 +20476,7 @@ import {useCallback as useCallback94} from "react";
20492
20476
  import {
20493
20477
  jsx as jsx196,
20494
20478
  jsxs as jsxs99,
20495
- Fragment as Fragment28
20479
+ Fragment as Fragment29
20496
20480
  } from "react/jsx-runtime";
20497
20481
  var NewCompDuration = ({ durationInFrames, setDurationInFrames }) => {
20498
20482
  const onDurationInFramesChanged = useCallback94((newValue) => {
@@ -20526,7 +20510,7 @@ var NewCompDuration = ({ durationInFrames, setDurationInFrames }) => {
20526
20510
  onValueChange: onDurationChangedDirectly,
20527
20511
  rightAlign: false
20528
20512
  }),
20529
- compDurationErrMessage ? jsxs99(Fragment28, {
20513
+ compDurationErrMessage ? jsxs99(Fragment29, {
20530
20514
  children: [
20531
20515
  jsx196(Spacing, {
20532
20516
  y: 1,
@@ -20549,7 +20533,7 @@ var NewCompDuration = ({ durationInFrames, setDurationInFrames }) => {
20549
20533
  import {
20550
20534
  jsx as jsx197,
20551
20535
  jsxs as jsxs100,
20552
- Fragment as Fragment29
20536
+ Fragment as Fragment30
20553
20537
  } from "react/jsx-runtime";
20554
20538
  var content3 = {
20555
20539
  padding: 12,
@@ -20700,7 +20684,7 @@ var DuplicateCompositionLoaded = ({ initialType }) => {
20700
20684
  const onSubmit = useCallback95((e) => {
20701
20685
  e.preventDefault();
20702
20686
  }, []);
20703
- return jsxs100(Fragment29, {
20687
+ return jsxs100(Fragment30, {
20704
20688
  children: [
20705
20689
  jsx197(NewCompHeader, {
20706
20690
  title: `Duplicate ${resolved.result.id}`
@@ -20749,7 +20733,7 @@ var DuplicateCompositionLoaded = ({ initialType }) => {
20749
20733
  status: "ok",
20750
20734
  rightAlign: true
20751
20735
  }),
20752
- compNameErrMessage ? jsxs100(Fragment29, {
20736
+ compNameErrMessage ? jsxs100(Fragment30, {
20753
20737
  children: [
20754
20738
  jsx197(Spacing, {
20755
20739
  y: 1,
@@ -20767,7 +20751,7 @@ var DuplicateCompositionLoaded = ({ initialType }) => {
20767
20751
  })
20768
20752
  ]
20769
20753
  }),
20770
- hadDimensionsDefined ? jsxs100(Fragment29, {
20754
+ hadDimensionsDefined ? jsxs100(Fragment30, {
20771
20755
  children: [
20772
20756
  jsxs100("div", {
20773
20757
  style: optionRow,
@@ -20794,7 +20778,7 @@ var DuplicateCompositionLoaded = ({ initialType }) => {
20794
20778
  onValueChange: onWidthDirectlyChanged,
20795
20779
  rightAlign: false
20796
20780
  }),
20797
- compWidthErrMessage ? jsxs100(Fragment29, {
20781
+ compWidthErrMessage ? jsxs100(Fragment30, {
20798
20782
  children: [
20799
20783
  jsx197(Spacing, {
20800
20784
  y: 1,
@@ -20836,7 +20820,7 @@ var DuplicateCompositionLoaded = ({ initialType }) => {
20836
20820
  onValueChange: onHeightDirectlyChanged,
20837
20821
  rightAlign: false
20838
20822
  }),
20839
- compHeightErrMessage ? jsxs100(Fragment29, {
20823
+ compHeightErrMessage ? jsxs100(Fragment30, {
20840
20824
  children: [
20841
20825
  jsx197(Spacing, {
20842
20826
  y: 1,
@@ -20921,7 +20905,7 @@ import {Internals as Internals55} from "remotion";
20921
20905
  import {
20922
20906
  jsx as jsx198,
20923
20907
  jsxs as jsxs101,
20924
- Fragment as Fragment30
20908
+ Fragment as Fragment31
20925
20909
  } from "react/jsx-runtime";
20926
20910
  var content4 = {
20927
20911
  padding: 12,
@@ -20955,7 +20939,7 @@ var RenameCompositionLoaded = () => {
20955
20939
  const onSubmit = useCallback96((e) => {
20956
20940
  e.preventDefault();
20957
20941
  }, []);
20958
- return jsxs101(Fragment30, {
20942
+ return jsxs101(Fragment31, {
20959
20943
  children: [
20960
20944
  jsx198(NewCompHeader, {
20961
20945
  title: `Rename ${resolved.result.id}`
@@ -20985,7 +20969,7 @@ var RenameCompositionLoaded = () => {
20985
20969
  status: "ok",
20986
20970
  rightAlign: true
20987
20971
  }),
20988
- compNameErrMessage ? jsxs101(Fragment30, {
20972
+ compNameErrMessage ? jsxs101(Fragment31, {
20989
20973
  children: [
20990
20974
  jsx198(Spacing, {
20991
20975
  y: 1,
@@ -21781,7 +21765,7 @@ import {useEffect as useEffect65, useMemo as useMemo105, useRef as useRef34, use
21781
21765
  import {
21782
21766
  jsx as jsx202,
21783
21767
  jsxs as jsxs104,
21784
- Fragment as Fragment31
21768
+ Fragment as Fragment32
21785
21769
  } from "react/jsx-runtime";
21786
21770
  var container45 = {
21787
21771
  paddingLeft: 16,
@@ -21885,7 +21869,7 @@ var QuickSwitcherResult = ({ result, selected }) => {
21885
21869
  }),
21886
21870
  jsx202("div", {
21887
21871
  style: labelContainer,
21888
- children: result.type === "search-result" ? jsxs104(Fragment31, {
21872
+ children: result.type === "search-result" ? jsxs104(Fragment32, {
21889
21873
  children: [
21890
21874
  jsx202("div", {
21891
21875
  dangerouslySetInnerHTML: {
@@ -22006,7 +21990,7 @@ var waitForElm = function(selector) {
22006
21990
  import {
22007
21991
  jsx as jsx203,
22008
21992
  jsxs as jsxs105,
22009
- Fragment as Fragment32
21993
+ Fragment as Fragment33
22010
21994
  } from "react/jsx-runtime";
22011
21995
  var input2 = {
22012
21996
  width: "100%"
@@ -22298,7 +22282,7 @@ var QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio }
22298
22282
  placeholder: "Search compositions...",
22299
22283
  rightAlign: false
22300
22284
  }),
22301
- showKeyboardShortcuts ? jsxs105(Fragment32, {
22285
+ showKeyboardShortcuts ? jsxs105(Fragment33, {
22302
22286
  children: [
22303
22287
  jsx203(Spacing, {
22304
22288
  x: 2
@@ -22769,7 +22753,7 @@ var OptionExplainerBubble = ({ id }) => {
22769
22753
  import {
22770
22754
  jsx as jsx214,
22771
22755
  jsxs as jsxs107,
22772
- Fragment as Fragment33
22756
+ Fragment as Fragment34
22773
22757
  } from "react/jsx-runtime";
22774
22758
  var NumberSetting = ({ name, value, step, hint, onValueChanged, max, min, formatter }) => {
22775
22759
  const onTextChanged = useCallback100((e) => {
@@ -22791,7 +22775,7 @@ var NumberSetting = ({ name, value, step, hint, onValueChanged, max, min, format
22791
22775
  style: label5,
22792
22776
  children: [
22793
22777
  name,
22794
- hint ? jsxs107(Fragment33, {
22778
+ hint ? jsxs107(Fragment34, {
22795
22779
  children: [
22796
22780
  jsx214(Spacing, {
22797
22781
  x: 0.5
@@ -22951,7 +22935,7 @@ var InlineEyeButton = ({ onClick, enabled }) => {
22951
22935
  import {
22952
22936
  jsx as jsx217,
22953
22937
  jsxs as jsxs108,
22954
- Fragment as Fragment34
22938
+ Fragment as Fragment35
22955
22939
  } from "react/jsx-runtime";
22956
22940
  var input3 = {
22957
22941
  flex: 1,
@@ -22999,7 +22983,7 @@ var EnvInput = ({
22999
22983
  setValueWarningEligible(true);
23000
22984
  }, []);
23001
22985
  const isNodeEnvKey = envKey.trim() === "NODE_ENV";
23002
- return jsxs108(Fragment34, {
22986
+ return jsxs108(Fragment35, {
23003
22987
  children: [
23004
22988
  jsxs108(Row, {
23005
22989
  align: "center",
@@ -23793,7 +23777,7 @@ var useFileExistence = (outName) => {
23793
23777
  import {
23794
23778
  jsx as jsx223,
23795
23779
  jsxs as jsxs113,
23796
- Fragment as Fragment35
23780
+ Fragment as Fragment36
23797
23781
  } from "react/jsx-runtime";
23798
23782
  var RenderModalOutputName = ({
23799
23783
  existence,
@@ -23824,7 +23808,7 @@ var RenderModalOutputName = ({
23824
23808
  onChange: onValueChange,
23825
23809
  rightAlign: true
23826
23810
  }),
23827
- validationMessage ? jsxs113(Fragment35, {
23811
+ validationMessage ? jsxs113(Fragment36, {
23828
23812
  children: [
23829
23813
  jsx223(Spacing, {
23830
23814
  y: 1,
@@ -23836,7 +23820,7 @@ var RenderModalOutputName = ({
23836
23820
  type: "error"
23837
23821
  })
23838
23822
  ]
23839
- }) : existence ? jsxs113(Fragment35, {
23823
+ }) : existence ? jsxs113(Fragment36, {
23840
23824
  children: [
23841
23825
  jsx223(Spacing, {
23842
23826
  y: 1,
@@ -23869,7 +23853,7 @@ var getStringBeforeSuffix = (fileName) => {
23869
23853
  import {
23870
23854
  jsx as jsx224,
23871
23855
  jsxs as jsxs114,
23872
- Fragment as Fragment36
23856
+ Fragment as Fragment37
23873
23857
  } from "react/jsx-runtime";
23874
23858
  var SeparateAudioOptionInput = ({ separateAudioTo, setSeparateAudioTo, audioCodec }) => {
23875
23859
  const existence = useFileExistence(separateAudioTo);
@@ -23902,7 +23886,7 @@ var SeparateAudioOption = ({ separateAudioTo, setSeparateAudioTo, audioCodec, ou
23902
23886
  setSeparateAudioTo(null);
23903
23887
  }
23904
23888
  }, [audioCodec, outName, setSeparateAudioTo]);
23905
- return jsxs114(Fragment36, {
23889
+ return jsxs114(Fragment37, {
23906
23890
  children: [
23907
23891
  jsxs114("div", {
23908
23892
  style: optionRow,
@@ -23959,7 +23943,7 @@ var humanReadableAudioCodec = (audioCodec) => {
23959
23943
  import {
23960
23944
  jsx as jsx225,
23961
23945
  jsxs as jsxs115,
23962
- Fragment as Fragment37
23946
+ Fragment as Fragment38
23963
23947
  } from "react/jsx-runtime";
23964
23948
  var container49 = {
23965
23949
  flex: 1,
@@ -24013,7 +23997,7 @@ var RenderModalAudio = ({
24013
23997
  style: container49,
24014
23998
  className: VERTICAL_SCROLLBAR_CLASSNAME,
24015
23999
  children: [
24016
- renderMode === "video" ? jsxs115(Fragment37, {
24000
+ renderMode === "video" ? jsxs115(Fragment38, {
24017
24001
  children: [
24018
24002
  jsx225(MutedSetting, {
24019
24003
  enforceAudioTrack,
@@ -24048,7 +24032,7 @@ var RenderModalAudio = ({
24048
24032
  })
24049
24033
  ]
24050
24034
  }) : null,
24051
- (renderMode === "video" || renderMode === "audio") && !muted && jsxs115(Fragment37, {
24035
+ (renderMode === "video" || renderMode === "audio") && !muted && jsxs115(Fragment38, {
24052
24036
  children: [
24053
24037
  jsx225(EnforceAudioTrackSetting, {
24054
24038
  muted,
@@ -24684,7 +24668,7 @@ var ScaleSetting = ({ scale, setScale }) => {
24684
24668
  import {
24685
24669
  jsx as jsx233,
24686
24670
  jsxs as jsxs121,
24687
- Fragment as Fragment38
24671
+ Fragment as Fragment39
24688
24672
  } from "react/jsx-runtime";
24689
24673
  var qualityControlModes = ["crf", "bitrate"];
24690
24674
  var container53 = {
@@ -24840,7 +24824,7 @@ var RenderModalPicture = ({
24840
24824
  })
24841
24825
  ]
24842
24826
  }) : null,
24843
- renderMode === "video" ? jsxs121(Fragment38, {
24827
+ renderMode === "video" ? jsxs121(Fragment39, {
24844
24828
  children: [
24845
24829
  jsxs121("div", {
24846
24830
  style: optionRow,
@@ -26371,7 +26355,7 @@ var GuiRenderStatus = ({ job }) => {
26371
26355
  import {
26372
26356
  jsx as jsx237,
26373
26357
  jsxs as jsxs124,
26374
- Fragment as Fragment39
26358
+ Fragment as Fragment40
26375
26359
  } from "react/jsx-runtime";
26376
26360
  var container55 = {
26377
26361
  padding: 20,
@@ -26434,7 +26418,7 @@ var RenderStatusModal = ({ jobId }) => {
26434
26418
  jsxs124("div", {
26435
26419
  style: container55,
26436
26420
  children: [
26437
- job.status === "failed" ? jsxs124(Fragment39, {
26421
+ job.status === "failed" ? jsxs124(Fragment40, {
26438
26422
  children: [
26439
26423
  jsx237("p", {
26440
26424
  children: "The render failed because of the following error:"
@@ -26643,7 +26627,7 @@ var KnownBugs = ({ bugs }) => {
26643
26627
  import {
26644
26628
  jsx as jsx241,
26645
26629
  jsxs as jsxs127,
26646
- Fragment as Fragment40
26630
+ Fragment as Fragment41
26647
26631
  } from "react/jsx-runtime";
26648
26632
  var container57 = {
26649
26633
  padding: 20,
@@ -26695,7 +26679,7 @@ var UpdateModal = ({ info, knownBugs }) => {
26695
26679
  jsxs127("div", {
26696
26680
  style: container57,
26697
26681
  children: [
26698
- hasKnownBugs ? jsxs127(Fragment40, {
26682
+ hasKnownBugs ? jsxs127(Fragment41, {
26699
26683
  children: [
26700
26684
  jsxs127("div", {
26701
26685
  style: title7,
@@ -26778,12 +26762,12 @@ var UpdateModal = ({ info, knownBugs }) => {
26778
26762
  import {
26779
26763
  jsx as jsx242,
26780
26764
  jsxs as jsxs128,
26781
- Fragment as Fragment41
26765
+ Fragment as Fragment42
26782
26766
  } from "react/jsx-runtime";
26783
26767
  var Modals = ({ readOnlyStudio }) => {
26784
26768
  const { selectedModal: modalContextType } = useContext76(ModalsContext);
26785
26769
  const canRender = useContext76(StudioServerConnectionCtx).previewServerState.type === "connected";
26786
- return jsxs128(Fragment41, {
26770
+ return jsxs128(Fragment42, {
26787
26771
  children: [
26788
26772
  modalContextType && modalContextType.type === "duplicate-comp" && jsx242(DuplicateComposition, {
26789
26773
  compositionType: modalContextType.compositionType,
@@ -26917,11 +26901,14 @@ var Editor = ({ Root, readOnlyStudio }) => {
26917
26901
  jsxs129(Internals57.CanUseRemotionHooksProvider, {
26918
26902
  children: [
26919
26903
  jsx243(EditorContent, {
26920
- drawRef,
26921
- size: size4,
26922
- onMounted,
26923
26904
  readOnlyStudio,
26924
- bufferStateDelayInMilliseconds: BUFFER_STATE_DELAY_IN_MILLISECONDS
26905
+ children: jsx243(TopPanel, {
26906
+ size: size4,
26907
+ drawRef,
26908
+ bufferStateDelayInMilliseconds: BUFFER_STATE_DELAY_IN_MILLISECONDS,
26909
+ onMounted,
26910
+ readOnlyStudio
26911
+ })
26925
26912
  }),
26926
26913
  jsx243(GlobalKeybindings, {})
26927
26914
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/studio",
3
- "version": "4.0.175",
3
+ "version": "4.0.176",
4
4
  "description": "Remotion Editor",
5
5
  "main": "dist",
6
6
  "sideEffects": false,
@@ -18,11 +18,11 @@
18
18
  "memfs": "3.4.3",
19
19
  "source-map": "0.7.3",
20
20
  "open": "^8.4.2",
21
- "remotion": "4.0.175",
22
- "@remotion/media-utils": "4.0.175",
23
- "@remotion/player": "4.0.175",
24
- "@remotion/renderer": "4.0.175",
25
- "@remotion/studio-shared": "4.0.175"
21
+ "remotion": "4.0.176",
22
+ "@remotion/player": "4.0.176",
23
+ "@remotion/media-utils": "4.0.176",
24
+ "@remotion/renderer": "4.0.176",
25
+ "@remotion/studio-shared": "4.0.176"
26
26
  },
27
27
  "devDependencies": {
28
28
  "react": "18.3.1",
@@ -39,7 +39,7 @@
39
39
  "@types/semver": "^7.3.4",
40
40
  "prettier-plugin-organize-imports": "3.2.4",
41
41
  "zod": "3.22.3",
42
- "@remotion/zod-types": "4.0.175"
42
+ "@remotion/zod-types": "4.0.176"
43
43
  },
44
44
  "publishConfig": {
45
45
  "access": "public"