@remotion/studio 4.0.397 → 4.0.398

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.
@@ -34,7 +34,7 @@ import { Internals as Internals65 } from "remotion";
34
34
 
35
35
  // src/components/Editor.tsx
36
36
  import { PlayerInternals as PlayerInternals19 } from "@remotion/player";
37
- import React176, { useCallback as useCallback134, useEffect as useEffect79, useMemo as useMemo135 } from "react";
37
+ import React177, { useCallback as useCallback135, useEffect as useEffect80, useMemo as useMemo136 } from "react";
38
38
  import { Internals as Internals61 } from "remotion";
39
39
 
40
40
  // src/helpers/colors.ts
@@ -7279,10 +7279,10 @@ var MenuBuildIndicator = () => {
7279
7279
  };
7280
7280
 
7281
7281
  // src/components/SidebarCollapserControls.tsx
7282
- import { useCallback as useCallback91, useContext as useContext57, useEffect as useEffect59 } from "react";
7282
+ import { useCallback as useCallback91, useContext as useContext57, useEffect as useEffect60 } from "react";
7283
7283
 
7284
7284
  // src/components/TopPanel.tsx
7285
- import { useCallback as useCallback90, useContext as useContext56, useEffect as useEffect58, useMemo as useMemo96 } from "react";
7285
+ import { useCallback as useCallback90, useContext as useContext56, useEffect as useEffect59, useMemo as useMemo96 } from "react";
7286
7286
 
7287
7287
  // src/helpers/use-breakpoint.ts
7288
7288
  import { useEffect as useEffect23, useState as useState29 } from "react";
@@ -10612,7 +10612,7 @@ import {
10612
10612
  createRef as createRef10,
10613
10613
  useCallback as useCallback81,
10614
10614
  useContext as useContext46,
10615
- useEffect as useEffect49,
10615
+ useEffect as useEffect50,
10616
10616
  useImperativeHandle as useImperativeHandle13,
10617
10617
  useMemo as useMemo90,
10618
10618
  useState as useState56
@@ -11192,7 +11192,7 @@ var GlobalPropsEditorUpdateButton = ({ compositionId, currentDefaultProps }) =>
11192
11192
  import React95, {
11193
11193
  useCallback as useCallback69,
11194
11194
  useContext as useContext36,
11195
- useEffect as useEffect44,
11195
+ useEffect as useEffect45,
11196
11196
  useMemo as useMemo80,
11197
11197
  useState as useState51
11198
11198
  } from "react";
@@ -11587,7 +11587,7 @@ var RenderModalJSONPropsEditor = ({
11587
11587
  };
11588
11588
 
11589
11589
  // src/components/RenderModal/SchemaEditor/SchemaEditor.tsx
11590
- import { useCallback as useCallback67, useEffect as useEffect43, useMemo as useMemo78, useState as useState50 } from "react";
11590
+ import { useCallback as useCallback67, useEffect as useEffect44, useMemo as useMemo78, useState as useState50 } from "react";
11591
11591
  import { Internals as Internals30 } from "remotion";
11592
11592
 
11593
11593
  // src/components/RenderModal/SchemaEditor/SchemaErrorMessages.tsx
@@ -12966,7 +12966,7 @@ var ZodArrayEditor = ({
12966
12966
  import { useCallback as useCallback54 } from "react";
12967
12967
 
12968
12968
  // src/components/Checkbox.tsx
12969
- import { useMemo as useMemo67 } from "react";
12969
+ import { useEffect as useEffect41, useMemo as useMemo67, useRef as useRef26 } from "react";
12970
12970
  import { jsx as jsx117, jsxs as jsxs54 } from "react/jsx-runtime";
12971
12971
  var size2 = 20;
12972
12972
  var background = {
@@ -12974,6 +12974,12 @@ var background = {
12974
12974
  width: size2,
12975
12975
  position: "relative"
12976
12976
  };
12977
+ var bullet = {
12978
+ width: 10,
12979
+ height: 10,
12980
+ backgroundColor: LIGHT_TEXT,
12981
+ borderRadius: "50%"
12982
+ };
12977
12983
  var box = {
12978
12984
  display: "flex",
12979
12985
  justifyContent: "center",
@@ -12986,7 +12992,8 @@ var box = {
12986
12992
  pointerEvents: "none",
12987
12993
  color: "white"
12988
12994
  };
12989
- var Checkbox = ({ checked, onChange, disabled, name }) => {
12995
+ var Checkbox = ({ checked, onChange, disabled, name, rounded }) => {
12996
+ const ref = useRef26(null);
12990
12997
  const input2 = useMemo67(() => {
12991
12998
  return {
12992
12999
  appearance: "none",
@@ -13000,10 +13007,16 @@ var Checkbox = ({ checked, onChange, disabled, name }) => {
13000
13007
  margin: 0
13001
13008
  };
13002
13009
  }, [disabled]);
13010
+ useEffect41(() => {
13011
+ if (ref.current) {
13012
+ ref.current.style.setProperty("border-radius", rounded ? "50%" : "0%", "important");
13013
+ }
13014
+ }, [rounded]);
13003
13015
  return /* @__PURE__ */ jsxs54("div", {
13004
13016
  style: background,
13005
13017
  children: [
13006
13018
  /* @__PURE__ */ jsx117("input", {
13019
+ ref,
13007
13020
  style: input2,
13008
13021
  type: "checkbox",
13009
13022
  checked,
@@ -13013,7 +13026,9 @@ var Checkbox = ({ checked, onChange, disabled, name }) => {
13013
13026
  }),
13014
13027
  /* @__PURE__ */ jsx117("div", {
13015
13028
  style: box,
13016
- children: checked ? /* @__PURE__ */ jsx117(Checkmark, {}) : null
13029
+ children: checked ? rounded ? /* @__PURE__ */ jsx117("div", {
13030
+ style: bullet
13031
+ }) : /* @__PURE__ */ jsx117(Checkmark, {}) : null
13017
13032
  })
13018
13033
  ]
13019
13034
  });
@@ -13092,7 +13107,7 @@ var colorWithNewOpacity = (color, opacity, zodTypes) => {
13092
13107
  };
13093
13108
 
13094
13109
  // src/components/NewComposition/InputDragger.tsx
13095
- import React80, { useCallback as useCallback55, useEffect as useEffect41, useMemo as useMemo68, useRef as useRef26, useState as useState45 } from "react";
13110
+ import React80, { useCallback as useCallback55, useEffect as useEffect42, useMemo as useMemo68, useRef as useRef27, useState as useState45 } from "react";
13096
13111
  import { interpolate as interpolate2 } from "remotion";
13097
13112
  import { jsx as jsx119 } from "react/jsx-runtime";
13098
13113
  var isInt = (num) => {
@@ -13111,7 +13126,7 @@ var InputDraggerForwardRefFn = ({
13111
13126
  ...props
13112
13127
  }, ref) => {
13113
13128
  const [inputFallback, setInputFallback] = useState45(false);
13114
- const fallbackRef = useRef26(null);
13129
+ const fallbackRef = useRef27(null);
13115
13130
  const style8 = useMemo68(() => {
13116
13131
  return {
13117
13132
  ...inputBaseStyle,
@@ -13195,7 +13210,7 @@ var InputDraggerForwardRefFn = ({
13195
13210
  once: true
13196
13211
  });
13197
13212
  }, [_step, _min, _max, value, onValueChange]);
13198
- useEffect41(() => {
13213
+ useEffect42(() => {
13199
13214
  if (inputFallback) {
13200
13215
  fallbackRef.current?.select();
13201
13216
  }
@@ -13246,10 +13261,10 @@ var InputDragger = React80.forwardRef(InputDraggerForwardRefFn);
13246
13261
  // src/components/NewComposition/RemInputTypeColor.tsx
13247
13262
  import {
13248
13263
  forwardRef as forwardRef4,
13249
- useEffect as useEffect42,
13264
+ useEffect as useEffect43,
13250
13265
  useImperativeHandle as useImperativeHandle12,
13251
13266
  useMemo as useMemo69,
13252
- useRef as useRef27,
13267
+ useRef as useRef28,
13253
13268
  useState as useState46
13254
13269
  } from "react";
13255
13270
  import { jsx as jsx120 } from "react/jsx-runtime";
@@ -13261,7 +13276,7 @@ var inputBaseStyle3 = {
13261
13276
  var RemInputTypeColorForwardRef = ({ status, ...props }, ref) => {
13262
13277
  const [isFocused, setIsFocused] = useState46(false);
13263
13278
  const [isHovered, setIsHovered] = useState46(false);
13264
- const inputRef = useRef27(null);
13279
+ const inputRef = useRef28(null);
13265
13280
  const { tabIndex } = useZIndex();
13266
13281
  const style8 = useMemo69(() => {
13267
13282
  return {
@@ -13274,7 +13289,7 @@ var RemInputTypeColorForwardRef = ({ status, ...props }, ref) => {
13274
13289
  useImperativeHandle12(ref, () => {
13275
13290
  return inputRef.current;
13276
13291
  }, []);
13277
- useEffect42(() => {
13292
+ useEffect43(() => {
13278
13293
  if (!inputRef.current) {
13279
13294
  return;
13280
13295
  }
@@ -15297,7 +15312,7 @@ var SchemaEditor = ({
15297
15312
  childResetRevision: revision
15298
15313
  };
15299
15314
  }, [revision]);
15300
- useEffect43(() => {
15315
+ useEffect44(() => {
15301
15316
  const bumpRevision = () => {
15302
15317
  setRevision((old) => old + 1);
15303
15318
  };
@@ -15313,7 +15328,7 @@ var SchemaEditor = ({
15313
15328
  const hasChanged = useMemo78(() => {
15314
15329
  return !deepEqual(savedDefaultProps, unsavedDefaultProps);
15315
15330
  }, [savedDefaultProps, unsavedDefaultProps]);
15316
- useEffect43(() => {
15331
+ useEffect44(() => {
15317
15332
  setUnsavedProps(hasChanged);
15318
15333
  }, [hasChanged]);
15319
15334
  const onQuickSave = useCallback67(() => {
@@ -15323,7 +15338,7 @@ var SchemaEditor = ({
15323
15338
  });
15324
15339
  }
15325
15340
  }, [hasChanged, onSave, showSaveButton, unsavedDefaultProps]);
15326
- useEffect43(() => {
15341
+ useEffect44(() => {
15327
15342
  const save = keybindings.registerKeybinding({
15328
15343
  event: "keydown",
15329
15344
  key: "s",
@@ -15664,11 +15679,11 @@ var DataEditor = ({
15664
15679
  }));
15665
15680
  }
15666
15681
  }, [readOnlyStudio, unresolvedComposition.id]);
15667
- useEffect44(() => {
15682
+ useEffect45(() => {
15668
15683
  checkIfCanSaveDefaultProps();
15669
15684
  }, [checkIfCanSaveDefaultProps]);
15670
15685
  const { previewServerState, subscribeToEvent } = useContext36(StudioServerConnectionCtx);
15671
- useEffect44(() => {
15686
+ useEffect45(() => {
15672
15687
  const unsub = subscribeToEvent("root-file-changed", checkIfCanSaveDefaultProps);
15673
15688
  return () => {
15674
15689
  unsub();
@@ -15858,14 +15873,14 @@ var DataEditor = ({
15858
15873
  };
15859
15874
 
15860
15875
  // src/components/RenderQueue/index.tsx
15861
- import React105, { useContext as useContext42, useEffect as useEffect46, useMemo as useMemo87 } from "react";
15876
+ import React105, { useContext as useContext42, useEffect as useEffect47, useMemo as useMemo87 } from "react";
15862
15877
  import { Internals as Internals33 } from "remotion";
15863
15878
 
15864
15879
  // src/components/RenderQueue/RenderQueueItem.tsx
15865
15880
  import {
15866
15881
  useCallback as useCallback78,
15867
15882
  useContext as useContext41,
15868
- useEffect as useEffect45,
15883
+ useEffect as useEffect46,
15869
15884
  useMemo as useMemo86,
15870
15885
  useState as useState52
15871
15886
  } from "react";
@@ -16502,7 +16517,7 @@ var RenderQueueItem = ({ job, selected }) => {
16502
16517
  });
16503
16518
  pushUrl(`/outputs/${job.outName}`);
16504
16519
  }, [job, scrollCurrentIntoView, selected, setCanvasContent]);
16505
- useEffect45(() => {
16520
+ useEffect46(() => {
16506
16521
  if (selected) {
16507
16522
  scrollCurrentIntoView();
16508
16523
  }
@@ -16594,7 +16609,7 @@ var RenderQueue = () => {
16594
16609
  const previousJobCount = React105.useRef(jobs.length);
16595
16610
  const jobCount = jobs.length;
16596
16611
  const divRef = React105.useRef(null);
16597
- useEffect46(() => {
16612
+ useEffect47(() => {
16598
16613
  if (!divRef.current) {
16599
16614
  return;
16600
16615
  }
@@ -16735,7 +16750,7 @@ var RendersTab = ({ selected, onClick }) => {
16735
16750
  import React108, { useContext as useContext45 } from "react";
16736
16751
 
16737
16752
  // src/components/VisualControls/VisualControlHandle.tsx
16738
- import { useCallback as useCallback80, useContext as useContext44, useEffect as useEffect48, useState as useState55 } from "react";
16753
+ import { useCallback as useCallback80, useContext as useContext44, useEffect as useEffect49, useState as useState55 } from "react";
16739
16754
  import { Internals as Internals35 } from "remotion";
16740
16755
  import { NoReactInternals as NoReactInternals12 } from "remotion/no-react";
16741
16756
 
@@ -16808,7 +16823,7 @@ var VisualControlHandleHeader = ({ originalFileName }) => {
16808
16823
  };
16809
16824
 
16810
16825
  // src/components/VisualControls/get-original-stack-trace.ts
16811
- import { useEffect as useEffect47, useState as useState54 } from "react";
16826
+ import { useEffect as useEffect48, useState as useState54 } from "react";
16812
16827
 
16813
16828
  // src/components/Timeline/TimelineStack/get-stack.ts
16814
16829
  import { SourceMapConsumer as SourceMapConsumer2 } from "source-map";
@@ -16898,7 +16913,7 @@ var getOriginalLocationFromStack = async (stack2, type) => {
16898
16913
  // src/components/VisualControls/get-original-stack-trace.ts
16899
16914
  var useOriginalFileName = (stack2) => {
16900
16915
  const [originalFileName, setOriginalFileName] = useState54({ type: "loading" });
16901
- useEffect47(() => {
16916
+ useEffect48(() => {
16902
16917
  if (!stack2) {
16903
16918
  return;
16904
16919
  }
@@ -16990,7 +17005,7 @@ var VisualControlHandle = ({ value, keyName }) => {
16990
17005
  keyName,
16991
17006
  zodTypes
16992
17007
  ]);
16993
- useEffect48(() => {
17008
+ useEffect49(() => {
16994
17009
  setSaving(false);
16995
17010
  }, [fastRefreshes]);
16996
17011
  return /* @__PURE__ */ jsxs75(Fragment21, {
@@ -17143,7 +17158,7 @@ var OptionsPanel = ({ readOnlyStudio }) => {
17143
17158
  resetUnsaved(e.detail.resetUnsaved);
17144
17159
  }
17145
17160
  }, [resetUnsaved]);
17146
- useEffect49(() => {
17161
+ useEffect50(() => {
17147
17162
  window.addEventListener(Internals36.PROPS_UPDATED_EXTERNALLY, reset);
17148
17163
  return () => {
17149
17164
  window.removeEventListener(Internals36.PROPS_UPDATED_EXTERNALLY, reset);
@@ -17196,7 +17211,7 @@ var OptionsPanel = ({ readOnlyStudio }) => {
17196
17211
  };
17197
17212
 
17198
17213
  // src/components/PreviewToolbar.tsx
17199
- import { useContext as useContext53, useEffect as useEffect56, useRef as useRef30, useState as useState60 } from "react";
17214
+ import { useContext as useContext53, useEffect as useEffect57, useRef as useRef31, useState as useState60 } from "react";
17200
17215
  import { Internals as Internals44 } from "remotion";
17201
17216
 
17202
17217
  // src/helpers/should-show-render-button.ts
@@ -17256,10 +17271,10 @@ var CheckboardToggle = () => {
17256
17271
 
17257
17272
  // src/components/FpsCounter.tsx
17258
17273
  import {
17259
- useEffect as useEffect50,
17274
+ useEffect as useEffect51,
17260
17275
  useLayoutEffect,
17261
17276
  useMemo as useMemo91,
17262
- useRef as useRef28,
17277
+ useRef as useRef29,
17263
17278
  useState as useState57
17264
17279
  } from "react";
17265
17280
  import { Internals as Internals37 } from "remotion";
@@ -17280,9 +17295,9 @@ var FpsCounter = ({ playbackSpeed }) => {
17280
17295
  const frame2 = Internals37.Timeline.useTimelinePosition();
17281
17296
  const [marker, rerender] = useState57({});
17282
17297
  const [fps, setFps] = useState57(0);
17283
- const previousUpdates = useRef28([]);
17284
- const fpsRef = useRef28(0);
17285
- const playingRef = useRef28(playing);
17298
+ const previousUpdates = useRef29([]);
17299
+ const fpsRef = useRef29(0);
17300
+ const playingRef = useRef29(playing);
17286
17301
  useLayoutEffect(() => {
17287
17302
  fpsRef.current = 0;
17288
17303
  previousUpdates.current = [];
@@ -17300,7 +17315,7 @@ var FpsCounter = ({ playbackSpeed }) => {
17300
17315
  if (previousUpdates.current.length === 2)
17301
17316
  setFps(fpsRef.current);
17302
17317
  }, [frame2]);
17303
- useEffect50(() => {
17318
+ useEffect51(() => {
17304
17319
  if (playing) {
17305
17320
  const t = setTimeout(() => {
17306
17321
  rerender({});
@@ -17338,7 +17353,7 @@ var FpsCounter = ({ playbackSpeed }) => {
17338
17353
  };
17339
17354
 
17340
17355
  // src/components/FullscreenToggle.tsx
17341
- import { useCallback as useCallback83, useContext as useContext48, useEffect as useEffect51 } from "react";
17356
+ import { useCallback as useCallback83, useContext as useContext48, useEffect as useEffect52 } from "react";
17342
17357
  import { Internals as Internals38 } from "remotion";
17343
17358
  import { NoReactInternals as NoReactInternals14 } from "remotion/no-react";
17344
17359
  import { jsx as jsx163 } from "react/jsx-runtime";
@@ -17360,7 +17375,7 @@ var FullScreenToggle = () => {
17360
17375
  }
17361
17376
  }));
17362
17377
  }, [setSize]);
17363
- useEffect51(() => {
17378
+ useEffect52(() => {
17364
17379
  const f = keybindings.registerKeybinding({
17365
17380
  event: "keydown",
17366
17381
  key: "f",
@@ -17474,7 +17489,7 @@ var MuteToggle = ({ muted, setMuted }) => {
17474
17489
 
17475
17490
  // src/components/PlayPause.tsx
17476
17491
  import { PlayerInternals as PlayerInternals12 } from "@remotion/player";
17477
- import { useCallback as useCallback86, useEffect as useEffect52, useState as useState58 } from "react";
17492
+ import { useCallback as useCallback86, useEffect as useEffect53, useState as useState58 } from "react";
17478
17493
  import { Internals as Internals39 } from "remotion";
17479
17494
 
17480
17495
  // src/icons/jump-to-start.tsx
@@ -17597,7 +17612,7 @@ var PlayPause = ({ playbackRate, loop, bufferStateDelayInMilliseconds }) => {
17597
17612
  }
17598
17613
  });
17599
17614
  const isStill = useIsStill();
17600
- useEffect52(() => {
17615
+ useEffect53(() => {
17601
17616
  if (isStill) {
17602
17617
  pause();
17603
17618
  }
@@ -17679,7 +17694,7 @@ var PlayPause = ({ playbackRate, loop, bufferStateDelayInMilliseconds }) => {
17679
17694
  seek(outFrame ?? getCurrentDuration() - 1);
17680
17695
  }, [seek, outFrame]);
17681
17696
  const keybindings = useKeybinding();
17682
- useEffect52(() => {
17697
+ useEffect53(() => {
17683
17698
  const arrowLeft = keybindings.registerKeybinding({
17684
17699
  event: "keydown",
17685
17700
  key: "ArrowLeft",
@@ -17751,7 +17766,7 @@ var PlayPause = ({ playbackRate, loop, bufferStateDelayInMilliseconds }) => {
17751
17766
  onEnter,
17752
17767
  onSpace
17753
17768
  ]);
17754
- useEffect52(() => {
17769
+ useEffect53(() => {
17755
17770
  let timeout = null;
17756
17771
  let stopped = false;
17757
17772
  const onBuffer = () => {
@@ -17833,7 +17848,7 @@ var PlayPause = ({ playbackRate, loop, bufferStateDelayInMilliseconds }) => {
17833
17848
 
17834
17849
  // src/components/PlaybackKeyboardShortcutsManager.tsx
17835
17850
  import { PlayerInternals as PlayerInternals13 } from "@remotion/player";
17836
- import { useCallback as useCallback87, useEffect as useEffect53 } from "react";
17851
+ import { useCallback as useCallback87, useEffect as useEffect54 } from "react";
17837
17852
  var PlaybackKeyboardShortcutsManager = ({ setPlaybackRate }) => {
17838
17853
  const keybindings = useKeybinding();
17839
17854
  const { play, pause, playing } = PlayerInternals13.usePlayer();
@@ -17871,7 +17886,7 @@ var PlaybackKeyboardShortcutsManager = ({ setPlaybackRate }) => {
17871
17886
  });
17872
17887
  play();
17873
17888
  }, [play, playing, setPlaybackRate]);
17874
- useEffect53(() => {
17889
+ useEffect54(() => {
17875
17890
  const jKey = keybindings.registerKeybinding({
17876
17891
  event: "keydown",
17877
17892
  key: "j",
@@ -17909,7 +17924,7 @@ var PlaybackKeyboardShortcutsManager = ({ setPlaybackRate }) => {
17909
17924
  };
17910
17925
 
17911
17926
  // src/components/PlaybackRatePersistor.tsx
17912
- import { useContext as useContext49, useEffect as useEffect54 } from "react";
17927
+ import { useContext as useContext49, useEffect as useEffect55 } from "react";
17913
17928
  import { Internals as Internals40 } from "remotion";
17914
17929
 
17915
17930
  // src/state/playbackrate.ts
@@ -17931,10 +17946,10 @@ var loadPlaybackRate = () => {
17931
17946
  // src/components/PlaybackRatePersistor.tsx
17932
17947
  var PlaybackRatePersistor = () => {
17933
17948
  const { setPlaybackRate, playbackRate } = useContext49(Internals40.TimelineContext);
17934
- useEffect54(() => {
17949
+ useEffect55(() => {
17935
17950
  setPlaybackRate(loadPlaybackRate());
17936
17951
  }, [setPlaybackRate]);
17937
- useEffect54(() => {
17952
+ useEffect55(() => {
17938
17953
  persistPlaybackRate(playbackRate);
17939
17954
  }, [playbackRate]);
17940
17955
  return null;
@@ -18016,9 +18031,9 @@ import { PlayerInternals as PlayerInternals14 } from "@remotion/player";
18016
18031
  import {
18017
18032
  useCallback as useCallback88,
18018
18033
  useContext as useContext51,
18019
- useEffect as useEffect55,
18034
+ useEffect as useEffect56,
18020
18035
  useMemo as useMemo93,
18021
- useRef as useRef29,
18036
+ useRef as useRef30,
18022
18037
  useState as useState59
18023
18038
  } from "react";
18024
18039
  import ReactDOM8 from "react-dom";
@@ -18094,8 +18109,8 @@ var RenderButton = ({
18094
18109
  const { setSelectedModal } = useContext51(ModalsContext);
18095
18110
  const [renderType, setRenderType] = useState59(() => getInitialRenderType(readOnlyStudio));
18096
18111
  const [dropdownOpened, setDropdownOpened] = useState59(false);
18097
- const dropdownRef = useRef29(null);
18098
- const containerRef = useRef29(null);
18112
+ const dropdownRef = useRef30(null);
18113
+ const containerRef = useRef30(null);
18099
18114
  const { currentZIndex } = useZIndex();
18100
18115
  const size4 = PlayerInternals14.useElementSize(dropdownRef, {
18101
18116
  triggerOnWindowResize: true,
@@ -18190,7 +18205,8 @@ var RenderButton = ({
18190
18205
  defaultProps: props[video.id] ?? video.defaultProps,
18191
18206
  inFrameMark: inFrame,
18192
18207
  outFrameMark: outFrame,
18193
- initialLogLevel: defaults.logLevel
18208
+ initialLogLevel: defaults.logLevel,
18209
+ initialLicenseKey: defaults.publicLicenseKey
18194
18210
  });
18195
18211
  }, [video, setSelectedModal, getCurrentFrame2, props, inFrame, outFrame]);
18196
18212
  const onClick = useCallback88(() => {
@@ -18241,7 +18257,7 @@ var RenderButton = ({
18241
18257
  }
18242
18258
  ];
18243
18259
  }, [handleRenderTypeChange]);
18244
- useEffect55(() => {
18260
+ useEffect56(() => {
18245
18261
  const { current } = dropdownRef;
18246
18262
  if (!current) {
18247
18263
  return;
@@ -18587,14 +18603,14 @@ var PreviewToolbar = ({ readOnlyStudio, bufferStateDelayInMilliseconds }) => {
18587
18603
  const { mediaMuted } = useContext53(Internals44.MediaVolumeContext);
18588
18604
  const { setMediaMuted } = useContext53(Internals44.SetMediaVolumeContext);
18589
18605
  const isVideoComposition = useIsVideoComposition();
18590
- const previewToolbarRef = useRef30(null);
18591
- const leftScrollIndicatorRef = useRef30(null);
18592
- const rightScrollIndicatorRef = useRef30(null);
18606
+ const previewToolbarRef = useRef31(null);
18607
+ const leftScrollIndicatorRef = useRef31(null);
18608
+ const rightScrollIndicatorRef = useRef31(null);
18593
18609
  const isStill = useIsStill();
18594
18610
  const [loop, setLoop] = useState60(loadLoopOption());
18595
18611
  const isFullscreenSupported = checkFullscreenSupport();
18596
18612
  const isMobileLayout = useMobileLayout();
18597
- useEffect56(() => {
18613
+ useEffect57(() => {
18598
18614
  if (isMobileLayout && previewToolbarRef.current) {
18599
18615
  const updateScrollableIndicatorProps = (target) => {
18600
18616
  const boundingBox = target.getBoundingClientRect();
@@ -18745,7 +18761,7 @@ var PreviewToolbar = ({ readOnlyStudio, bufferStateDelayInMilliseconds }) => {
18745
18761
  };
18746
18762
 
18747
18763
  // src/components/Splitter/SplitterContainer.tsx
18748
- import { useMemo as useMemo94, useRef as useRef31, useState as useState61 } from "react";
18764
+ import { useMemo as useMemo94, useRef as useRef32, useState as useState61 } from "react";
18749
18765
 
18750
18766
  // src/state/timeline.ts
18751
18767
  var localStorageKey4 = (id) => `remotion.editor.timelineFlex.${id}`;
@@ -18800,8 +18816,8 @@ var containerColumn = {
18800
18816
  var SplitterContainer = ({ orientation, children, defaultFlex, maxFlex, minFlex, id }) => {
18801
18817
  const [initialTimelineFlex, persistFlex] = useTimelineFlex(id);
18802
18818
  const [flexValue, setFlexValue] = useState61(initialTimelineFlex ?? defaultFlex);
18803
- const ref = useRef31(null);
18804
- const isDragging = useRef31(false);
18819
+ const ref = useRef32(null);
18820
+ const isDragging = useRef32(false);
18805
18821
  const value = useMemo94(() => {
18806
18822
  return {
18807
18823
  flexValue,
@@ -18874,7 +18890,7 @@ var SplitterElement = ({ children, type, sticky }) => {
18874
18890
 
18875
18891
  // src/components/Splitter/SplitterHandle.tsx
18876
18892
  import { PlayerInternals as PlayerInternals15 } from "@remotion/player";
18877
- import { useContext as useContext55, useEffect as useEffect57, useRef as useRef32, useState as useState62 } from "react";
18893
+ import { useContext as useContext55, useEffect as useEffect58, useRef as useRef33, useState as useState62 } from "react";
18878
18894
  import { jsx as jsx180 } from "react/jsx-runtime";
18879
18895
  var SPLITTER_HANDLE_SIZE = 3;
18880
18896
  var containerRow2 = {
@@ -18889,8 +18905,8 @@ var SplitterHandle = ({ allowToCollapse, onCollapse }) => {
18889
18905
  throw new Error("Cannot find splitter context");
18890
18906
  }
18891
18907
  const [lastPointerUp, setLastPointerUp] = useState62(() => Date.now());
18892
- const ref = useRef32(null);
18893
- useEffect57(() => {
18908
+ const ref = useRef33(null);
18909
+ useEffect58(() => {
18894
18910
  if (context.isDragging.current) {
18895
18911
  return;
18896
18912
  }
@@ -18973,7 +18989,7 @@ var SplitterHandle = ({ allowToCollapse, onCollapse }) => {
18973
18989
  }
18974
18990
  };
18975
18991
  }, [allowToCollapse, context, context.flexValue, lastPointerUp, onCollapse]);
18976
- useEffect57(() => {
18992
+ useEffect58(() => {
18977
18993
  const { current } = ref;
18978
18994
  if (!current) {
18979
18995
  return;
@@ -19060,7 +19076,7 @@ var TopPanel = ({ readOnlyStudio, onMounted, drawRef: drawRef2, bufferStateDelay
19060
19076
  }
19061
19077
  return "expanded";
19062
19078
  }, [sidebarCollapsedStateRight]);
19063
- useEffect58(() => {
19079
+ useEffect59(() => {
19064
19080
  onMounted();
19065
19081
  }, [onMounted]);
19066
19082
  const canvasContainerStyle = useMemo96(() => ({
@@ -19230,7 +19246,7 @@ var SidebarCollapserControls = () => {
19230
19246
  toggleLeft,
19231
19247
  toggleRight
19232
19248
  ]);
19233
- useEffect59(() => {
19249
+ useEffect60(() => {
19234
19250
  const left3 = keybindings.registerKeybinding({
19235
19251
  event: "keydown",
19236
19252
  key: "b",
@@ -19308,7 +19324,7 @@ var SidebarCollapserControls = () => {
19308
19324
  import {
19309
19325
  useCallback as useCallback92,
19310
19326
  useContext as useContext58,
19311
- useEffect as useEffect60,
19327
+ useEffect as useEffect61,
19312
19328
  useMemo as useMemo97,
19313
19329
  useState as useState63
19314
19330
  } from "react";
@@ -19360,7 +19376,7 @@ var UpdateCheck = () => {
19360
19376
  });
19361
19377
  return controller;
19362
19378
  }, []);
19363
- useEffect60(() => {
19379
+ useEffect61(() => {
19364
19380
  const abortUpdate = checkForUpdates();
19365
19381
  const abortBugs = checkForBugs();
19366
19382
  return () => {
@@ -19725,9 +19741,9 @@ import { PlayerInternals as PlayerInternals16 } from "@remotion/player";
19725
19741
  import {
19726
19742
  useCallback as useCallback94,
19727
19743
  useContext as useContext61,
19728
- useEffect as useEffect61,
19744
+ useEffect as useEffect62,
19729
19745
  useMemo as useMemo100,
19730
- useRef as useRef33,
19746
+ useRef as useRef34,
19731
19747
  useState as useState65
19732
19748
  } from "react";
19733
19749
  import { Internals as Internals46, useVideoConfig as useVideoConfig4 } from "remotion";
@@ -19891,7 +19907,7 @@ var Inner2 = () => {
19891
19907
  dragging: false
19892
19908
  });
19893
19909
  const { playing, play, pause, seek } = PlayerInternals16.usePlayer();
19894
- const scroller = useRef33(null);
19910
+ const scroller = useRef34(null);
19895
19911
  const stopInterval = () => {
19896
19912
  if (scroller.current) {
19897
19913
  clearInterval(scroller.current);
@@ -20156,7 +20172,7 @@ var Inner2 = () => {
20156
20172
  videoConfig,
20157
20173
  width
20158
20174
  ]);
20159
- useEffect61(() => {
20175
+ useEffect62(() => {
20160
20176
  if (!dragging.dragging) {
20161
20177
  return;
20162
20178
  }
@@ -20167,7 +20183,7 @@ var Inner2 = () => {
20167
20183
  window.removeEventListener("pointerup", onPointerUpScrubbing);
20168
20184
  };
20169
20185
  }, [dragging.dragging, onPointerMoveScrubbing, onPointerUpScrubbing]);
20170
- useEffect61(() => {
20186
+ useEffect62(() => {
20171
20187
  if (inOutDragging.dragging === false) {
20172
20188
  return;
20173
20189
  }
@@ -20258,7 +20274,7 @@ var Inner2 = () => {
20258
20274
 
20259
20275
  // src/components/Timeline/TimelineList.tsx
20260
20276
  import { PlayerInternals as PlayerInternals18 } from "@remotion/player";
20261
- import { useRef as useRef36 } from "react";
20277
+ import { useRef as useRef37 } from "react";
20262
20278
 
20263
20279
  // src/components/Timeline/TimelineListItem.tsx
20264
20280
  import { useCallback as useCallback97, useContext as useContext63, useMemo as useMemo102 } from "react";
@@ -20343,7 +20359,7 @@ import { SOURCE_MAP_ENDPOINT } from "@remotion/studio-shared";
20343
20359
  import {
20344
20360
  useCallback as useCallback96,
20345
20361
  useContext as useContext62,
20346
- useEffect as useEffect62,
20362
+ useEffect as useEffect63,
20347
20363
  useMemo as useMemo101,
20348
20364
  useState as useState66
20349
20365
  } from "react";
@@ -20432,7 +20448,7 @@ var TimelineStack = ({ isCompact, sequence }) => {
20432
20448
  window.open(getGitRefUrl(window.remotion_gitSource, originalLocation), "_blank");
20433
20449
  }
20434
20450
  }, [canOpenInEditor, canOpenInGitHub, openEditor, originalLocation]);
20435
- useEffect62(() => {
20451
+ useEffect63(() => {
20436
20452
  if (!sequence.stack) {
20437
20453
  return;
20438
20454
  }
@@ -20580,16 +20596,16 @@ var TimelineListItem = ({ nestedDepth, sequence, isCompact }) => {
20580
20596
  };
20581
20597
 
20582
20598
  // src/components/Timeline/TimelineTimeIndicators.tsx
20583
- import { useContext as useContext64, useEffect as useEffect64, useMemo as useMemo103, useRef as useRef35 } from "react";
20599
+ import { useContext as useContext64, useEffect as useEffect65, useMemo as useMemo103, useRef as useRef36 } from "react";
20584
20600
  import { Internals as Internals49 } from "remotion";
20585
20601
 
20586
20602
  // src/components/TimeValue.tsx
20587
20603
  import { PlayerInternals as PlayerInternals17 } from "@remotion/player";
20588
20604
  import {
20589
20605
  useCallback as useCallback98,
20590
- useEffect as useEffect63,
20606
+ useEffect as useEffect64,
20591
20607
  useImperativeHandle as useImperativeHandle14,
20592
- useRef as useRef34
20608
+ useRef as useRef35
20593
20609
  } from "react";
20594
20610
  import { Internals as Internals48, useCurrentFrame } from "remotion";
20595
20611
  import { jsx as jsx191, jsxs as jsxs92 } from "react/jsx-runtime";
@@ -20624,7 +20640,7 @@ var TimeValue = () => {
20624
20640
  const isStill = useIsStill();
20625
20641
  const { seek, play, pause, toggle } = PlayerInternals17.usePlayer();
20626
20642
  const keybindings = useKeybinding();
20627
- const ref = useRef34(null);
20643
+ const ref = useRef35(null);
20628
20644
  const onTextChange = useCallback98((newVal) => {
20629
20645
  seek(parseInt(newVal, 10));
20630
20646
  }, [seek]);
@@ -20640,7 +20656,7 @@ var TimeValue = () => {
20640
20656
  pause,
20641
20657
  toggle
20642
20658
  }), [seek, play, pause, toggle]);
20643
- useEffect63(() => {
20659
+ useEffect64(() => {
20644
20660
  const gKey = keybindings.registerKeybinding({
20645
20661
  event: "keypress",
20646
20662
  key: "g",
@@ -20752,8 +20768,8 @@ var TimelineTimeIndicators = () => {
20752
20768
  });
20753
20769
  };
20754
20770
  var Inner3 = ({ windowWidth, durationInFrames, fps }) => {
20755
- const ref = useRef35(null);
20756
- useEffect64(() => {
20771
+ const ref = useRef36(null);
20772
+ useEffect65(() => {
20757
20773
  const currentRef = ref.current;
20758
20774
  if (!currentRef) {
20759
20775
  return;
@@ -20835,7 +20851,7 @@ var container41 = {
20835
20851
  background: BACKGROUND
20836
20852
  };
20837
20853
  var TimelineList = ({ timeline }) => {
20838
- const ref = useRef36(null);
20854
+ const ref = useRef37(null);
20839
20855
  const size4 = PlayerInternals18.useElementSize(ref, {
20840
20856
  shouldApplyCssTransforms: false,
20841
20857
  triggerOnWindowResize: false
@@ -20860,7 +20876,7 @@ var TimelineList = ({ timeline }) => {
20860
20876
  };
20861
20877
 
20862
20878
  // src/components/Timeline/TimelinePlayCursorSyncer.tsx
20863
- import { useContext as useContext65, useEffect as useEffect65 } from "react";
20879
+ import { useContext as useContext65, useEffect as useEffect66 } from "react";
20864
20880
  import { Internals as Internals50 } from "remotion";
20865
20881
  var lastTimelinePositionWhileScrolling = null;
20866
20882
  var TimelinePlayCursorSyncer = () => {
@@ -20878,7 +20894,7 @@ var TimelinePlayCursorSyncer = () => {
20878
20894
  setCurrentFps(video.fps);
20879
20895
  }
20880
20896
  const playing = timelineContext.playing ?? false;
20881
- useEffect65(() => {
20897
+ useEffect66(() => {
20882
20898
  if (!video) {
20883
20899
  return;
20884
20900
  }
@@ -20891,7 +20907,7 @@ var TimelinePlayCursorSyncer = () => {
20891
20907
  frame: timelinePosition
20892
20908
  });
20893
20909
  }, [playing, timelineContext, timelinePosition, video]);
20894
- useEffect65(() => {
20910
+ useEffect66(() => {
20895
20911
  const { current } = scrollableRef;
20896
20912
  if (!current) {
20897
20913
  return;
@@ -34263,7 +34279,7 @@ var readAscii = (slice, length) => {
34263
34279
  */
34264
34280
 
34265
34281
  // src/helpers/use-max-media-duration.ts
34266
- import { useEffect as useEffect66, useState as useState67 } from "react";
34282
+ import { useEffect as useEffect67, useState as useState67 } from "react";
34267
34283
  var cache = new Map;
34268
34284
  var getSrc = (s) => {
34269
34285
  if (s.type === "video") {
@@ -34277,7 +34293,7 @@ var getSrc = (s) => {
34277
34293
  var useMaxMediaDuration = (s, fps) => {
34278
34294
  const src = getSrc(s);
34279
34295
  const [maxMediaDuration, setMaxMediaDuration] = useState67(src ? cache.get(src) ?? null : Infinity);
34280
- useEffect66(() => {
34296
+ useEffect67(() => {
34281
34297
  if (!src) {
34282
34298
  return;
34283
34299
  }
@@ -34307,7 +34323,7 @@ var useMaxMediaDuration = (s, fps) => {
34307
34323
 
34308
34324
  // src/components/AudioWaveform.tsx
34309
34325
  import { getAudioData, getWaveformPortion } from "@remotion/media-utils";
34310
- import { useEffect as useEffect67, useMemo as useMemo106, useRef as useRef37, useState as useState68 } from "react";
34326
+ import { useEffect as useEffect68, useMemo as useMemo106, useRef as useRef38, useState as useState68 } from "react";
34311
34327
  import { Internals as Internals51 } from "remotion";
34312
34328
 
34313
34329
  // src/components/AudioWaveformBar.tsx
@@ -34366,20 +34382,20 @@ var AudioWaveform = ({
34366
34382
  }) => {
34367
34383
  const [metadata, setMetadata] = useState68(null);
34368
34384
  const [error, setError] = useState68(null);
34369
- const mountState = useRef37({ isMounted: true });
34385
+ const mountState = useRef38({ isMounted: true });
34370
34386
  const vidConf = Internals51.useUnsafeVideoConfig();
34371
34387
  if (vidConf === null) {
34372
34388
  throw new Error("Expected video config");
34373
34389
  }
34374
- const canvas = useRef37(null);
34375
- useEffect67(() => {
34390
+ const canvas = useRef38(null);
34391
+ useEffect68(() => {
34376
34392
  const { current } = mountState;
34377
34393
  current.isMounted = true;
34378
34394
  return () => {
34379
34395
  current.isMounted = false;
34380
34396
  };
34381
34397
  }, []);
34382
- useEffect67(() => {
34398
+ useEffect68(() => {
34383
34399
  if (!canvas.current) {
34384
34400
  return;
34385
34401
  }
@@ -34406,7 +34422,7 @@ var AudioWaveform = ({
34406
34422
  context.strokeStyle = LIGHT_TRANSPARENT;
34407
34423
  context.stroke();
34408
34424
  }, [visualizationWidth, metadata, startFrom, volume, doesVolumeChange]);
34409
- useEffect67(() => {
34425
+ useEffect68(() => {
34410
34426
  setError(null);
34411
34427
  getAudioData(src).then((data) => {
34412
34428
  if (mountState.current.isMounted) {
@@ -34581,7 +34597,7 @@ var TimelineSequenceFrame = ({ roundedFrame, premounted, postmounted }) => {
34581
34597
  };
34582
34598
 
34583
34599
  // src/components/Timeline/TimelineVideoInfo.tsx
34584
- import { useEffect as useEffect68, useRef as useRef38, useState as useState69 } from "react";
34600
+ import { useEffect as useEffect69, useRef as useRef39, useState as useState69 } from "react";
34585
34601
  import { useVideoConfig as useVideoConfig5 } from "remotion";
34586
34602
 
34587
34603
  // src/helpers/extract-frames.ts
@@ -34896,15 +34912,15 @@ var fillFrameWhereItFits = ({
34896
34912
  };
34897
34913
  var TimelineVideoInfo = ({ src, visualizationWidth, startFrom, durationInFrames }) => {
34898
34914
  const { fps } = useVideoConfig5();
34899
- const ref = useRef38(null);
34915
+ const ref = useRef39(null);
34900
34916
  const [error, setError] = useState69(null);
34901
- const aspectRatio = useRef38(getAspectRatioFromCache(src));
34902
- useEffect68(() => {
34917
+ const aspectRatio = useRef39(getAspectRatioFromCache(src));
34918
+ useEffect69(() => {
34903
34919
  return () => {
34904
34920
  clearFramesForSrc(src);
34905
34921
  };
34906
34922
  }, [src]);
34907
- useEffect68(() => {
34923
+ useEffect69(() => {
34908
34924
  if (error) {
34909
34925
  return;
34910
34926
  }
@@ -35357,13 +35373,13 @@ var EditorContent = ({ readOnlyStudio, children }) => {
35357
35373
  };
35358
35374
 
35359
35375
  // src/components/GlobalKeybindings.tsx
35360
- import { useContext as useContext69, useEffect as useEffect69 } from "react";
35376
+ import { useContext as useContext69, useEffect as useEffect70 } from "react";
35361
35377
  var GlobalKeybindings = () => {
35362
35378
  const keybindings = useKeybinding();
35363
35379
  const { setSelectedModal } = useContext69(ModalsContext);
35364
35380
  const { setCheckerboard } = useContext69(CheckerboardContext);
35365
35381
  const { navigateToNextComposition, navigateToPreviousComposition } = useCompositionNavigation();
35366
- useEffect69(() => {
35382
+ useEffect70(() => {
35367
35383
  const nKey = keybindings.registerKeybinding({
35368
35384
  event: "keypress",
35369
35385
  key: "n",
@@ -35469,7 +35485,7 @@ import { useContext as useContext83 } from "react";
35469
35485
 
35470
35486
  // src/components/InstallPackage.tsx
35471
35487
  import { apiDocs, descriptions, installableMap } from "@remotion/studio-shared";
35472
- import React145, { useCallback as useCallback100, useContext as useContext71, useEffect as useEffect70 } from "react";
35488
+ import React145, { useCallback as useCallback100, useContext as useContext71, useEffect as useEffect71 } from "react";
35473
35489
  import { VERSION as VERSION2 } from "remotion";
35474
35490
 
35475
35491
  // src/api/install-package.ts
@@ -35603,7 +35619,7 @@ var InstallPackageModal = ({ packageManager }) => {
35603
35619
  const canSelectPackages = state.type === "idle" && ctx.type === "connected";
35604
35620
  const disabled = !(canSelectPackages || state.type === "done") || selectedPackages.length === 0;
35605
35621
  const { registerKeybinding } = useKeybinding();
35606
- useEffect70(() => {
35622
+ useEffect71(() => {
35607
35623
  if (disabled) {
35608
35624
  return;
35609
35625
  }
@@ -35727,7 +35743,7 @@ var InstallPackageModal = ({ packageManager }) => {
35727
35743
  import { useCallback as useCallback102, useContext as useContext74, useMemo as useMemo112 } from "react";
35728
35744
 
35729
35745
  // src/components/RenderModal/ResolveCompositionBeforeModal.tsx
35730
- import React146, { useContext as useContext72, useEffect as useEffect71, useMemo as useMemo111 } from "react";
35746
+ import React146, { useContext as useContext72, useEffect as useEffect72, useMemo as useMemo111 } from "react";
35731
35747
  import { Internals as Internals55 } from "remotion";
35732
35748
  import { jsx as jsx210, jsxs as jsxs103 } from "react/jsx-runtime";
35733
35749
  var loaderContainer2 = {
@@ -35751,7 +35767,7 @@ var ResolveCompositionBeforeModal = ({ compositionId, children }) => {
35751
35767
  const resolved = Internals55.useResolvedVideoConfig(compositionId);
35752
35768
  const unresolvedContext = useContext72(Internals55.CompositionManager);
35753
35769
  const unresolved = unresolvedContext.compositions.find((c) => compositionId === c.id);
35754
- useEffect71(() => {
35770
+ useEffect72(() => {
35755
35771
  const { current } = Internals55.resolveCompositionsRef;
35756
35772
  if (!current) {
35757
35773
  throw new Error("No ref to trigger composition calc");
@@ -35809,7 +35825,7 @@ var ResolveCompositionBeforeModal = ({ compositionId, children }) => {
35809
35825
  };
35810
35826
 
35811
35827
  // src/components/NewComposition/CodemodFooter.tsx
35812
- import { useCallback as useCallback101, useContext as useContext73, useEffect as useEffect72, useState as useState70 } from "react";
35828
+ import { useCallback as useCallback101, useContext as useContext73, useEffect as useEffect73, useState as useState70 } from "react";
35813
35829
 
35814
35830
  // src/components/NewComposition/DiffPreview.tsx
35815
35831
  import { jsx as jsx211, jsxs as jsxs104 } from "react/jsx-runtime";
@@ -35874,7 +35890,7 @@ var CodemodFooter = ({
35874
35890
  type: "loading"
35875
35891
  });
35876
35892
  const [projectInfo, setProjectInfo] = useState70(null);
35877
- useEffect72(() => {
35893
+ useEffect73(() => {
35878
35894
  const controller = new AbortController;
35879
35895
  getProjectInfo(controller.signal).then((info) => {
35880
35896
  setProjectInfo(info.projectInfo);
@@ -35920,7 +35936,7 @@ var CodemodFooter = ({
35920
35936
  });
35921
35937
  }
35922
35938
  }, [codemod]);
35923
- useEffect72(() => {
35939
+ useEffect73(() => {
35924
35940
  const abortController = new AbortController;
35925
35941
  let aborted = false;
35926
35942
  getCanApplyCodemod(abortController.signal).then(() => {
@@ -35938,7 +35954,7 @@ var CodemodFooter = ({
35938
35954
  }, [codemodStatus, getCanApplyCodemod, setSelectedModal]);
35939
35955
  const disabled = !valid || submitting || projectInfo === null || codemodStatus.type !== "success";
35940
35956
  const { registerKeybinding } = useKeybinding();
35941
- useEffect72(() => {
35957
+ useEffect73(() => {
35942
35958
  if (disabled) {
35943
35959
  return;
35944
35960
  }
@@ -36760,9 +36776,9 @@ var OverrideInputPropsModal = () => {
36760
36776
  import {
36761
36777
  useCallback as useCallback107,
36762
36778
  useContext as useContext78,
36763
- useEffect as useEffect74,
36779
+ useEffect as useEffect75,
36764
36780
  useMemo as useMemo117,
36765
- useRef as useRef40,
36781
+ useRef as useRef41,
36766
36782
  useState as useState75
36767
36783
  } from "react";
36768
36784
  import { Internals as Internals60 } from "remotion";
@@ -37556,7 +37572,7 @@ var QuickSwitcherNoResults = ({ query, mode }) => {
37556
37572
  };
37557
37573
 
37558
37574
  // src/components/QuickSwitcher/QuickSwitcherResult.tsx
37559
- import { useEffect as useEffect73, useMemo as useMemo116, useRef as useRef39, useState as useState74 } from "react";
37575
+ import { useEffect as useEffect74, useMemo as useMemo116, useRef as useRef40, useState as useState74 } from "react";
37560
37576
  import { jsx as jsx221, jsxs as jsxs113, Fragment as Fragment34 } from "react/jsx-runtime";
37561
37577
  var container49 = {
37562
37578
  paddingLeft: 16,
@@ -37586,9 +37602,9 @@ var labelContainer = {
37586
37602
  };
37587
37603
  var QuickSwitcherResult = ({ result, selected }) => {
37588
37604
  const [hovered, setIsHovered] = useState74(false);
37589
- const ref = useRef39(null);
37605
+ const ref = useRef40(null);
37590
37606
  const keybindings = useKeybinding();
37591
- useEffect73(() => {
37607
+ useEffect74(() => {
37592
37608
  const { current } = ref;
37593
37609
  if (!current) {
37594
37610
  return;
@@ -37602,7 +37618,7 @@ var QuickSwitcherResult = ({ result, selected }) => {
37602
37618
  current.removeEventListener("mouseleave", onMouseLeave);
37603
37619
  };
37604
37620
  }, []);
37605
- useEffect73(() => {
37621
+ useEffect74(() => {
37606
37622
  if (!selected) {
37607
37623
  return;
37608
37624
  }
@@ -37619,7 +37635,7 @@ var QuickSwitcherResult = ({ result, selected }) => {
37619
37635
  binding.unregister();
37620
37636
  };
37621
37637
  }, [keybindings, result.onSelected, selected]);
37622
- useEffect73(() => {
37638
+ useEffect74(() => {
37623
37639
  if (selected) {
37624
37640
  ref.current?.scrollIntoView({
37625
37641
  block: "nearest",
@@ -37833,13 +37849,13 @@ var QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio }
37833
37849
  selectedIndex: 0
37834
37850
  };
37835
37851
  });
37836
- useEffect74(() => {
37852
+ useEffect75(() => {
37837
37853
  setState({
37838
37854
  query: mapModeToQuery(initialMode),
37839
37855
  selectedIndex: 0
37840
37856
  });
37841
37857
  }, [initialMode, invocationTimestamp]);
37842
- const inputRef = useRef40(null);
37858
+ const inputRef = useRef41(null);
37843
37859
  const selectComposition = useSelectComposition();
37844
37860
  const closeMenu = useCallback107(() => {
37845
37861
  return;
@@ -37907,7 +37923,7 @@ var QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio }
37907
37923
  };
37908
37924
  });
37909
37925
  }, []);
37910
- useEffect74(() => {
37926
+ useEffect75(() => {
37911
37927
  const binding = keybindings.registerKeybinding({
37912
37928
  key: "ArrowUp",
37913
37929
  callback: onArrowUp,
@@ -37921,7 +37937,7 @@ var QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio }
37921
37937
  binding.unregister();
37922
37938
  };
37923
37939
  }, [keybindings, onArrowDown, onArrowUp]);
37924
- useEffect74(() => {
37940
+ useEffect75(() => {
37925
37941
  if (mode !== "docs") {
37926
37942
  return;
37927
37943
  }
@@ -37946,7 +37962,7 @@ var QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio }
37946
37962
  cancelled = true;
37947
37963
  };
37948
37964
  }, [actualQuery, mode]);
37949
- useEffect74(() => {
37965
+ useEffect75(() => {
37950
37966
  const binding = keybindings.registerKeybinding({
37951
37967
  key: "ArrowDown",
37952
37968
  callback: onArrowDown,
@@ -38438,10 +38454,10 @@ import { getDefaultOutLocation } from "@remotion/studio-shared";
38438
38454
  import {
38439
38455
  useCallback as useCallback127,
38440
38456
  useContext as useContext81,
38441
- useEffect as useEffect77,
38457
+ useEffect as useEffect78,
38442
38458
  useMemo as useMemo128,
38443
38459
  useReducer as useReducer2,
38444
- useRef as useRef42,
38460
+ useRef as useRef43,
38445
38461
  useState as useState81
38446
38462
  } from "react";
38447
38463
 
@@ -38608,7 +38624,7 @@ import { useCallback as useCallback112 } from "react";
38608
38624
  import { BrowserSafeApis } from "@remotion/renderer/client";
38609
38625
 
38610
38626
  // src/components/RenderModal/CliCopyButton.tsx
38611
- import { useCallback as useCallback111, useEffect as useEffect75, useMemo as useMemo121, useState as useState78 } from "react";
38627
+ import { useCallback as useCallback111, useEffect as useEffect76, useMemo as useMemo121, useState as useState78 } from "react";
38612
38628
  import { jsx as jsx233 } from "react/jsx-runtime";
38613
38629
  var svgStyle2 = {
38614
38630
  width: 16,
@@ -38659,7 +38675,7 @@ var CliCopyButton = ({
38659
38675
  const onPointerLeave = useCallback111(() => {
38660
38676
  setHovered(false);
38661
38677
  }, []);
38662
- useEffect75(() => {
38678
+ useEffect76(() => {
38663
38679
  if (!copied) {
38664
38680
  return;
38665
38681
  }
@@ -39981,14 +39997,14 @@ import { BrowserSafeApis as BrowserSafeApis4 } from "@remotion/renderer/client";
39981
39997
  import { useCallback as useCallback119, useMemo as useMemo123 } from "react";
39982
39998
 
39983
39999
  // src/helpers/use-file-existence.ts
39984
- import { useContext as useContext80, useEffect as useEffect76, useRef as useRef41, useState as useState80 } from "react";
40000
+ import { useContext as useContext80, useEffect as useEffect77, useRef as useRef42, useState as useState80 } from "react";
39985
40001
  var useFileExistence = (outName) => {
39986
40002
  const [exists, setExists] = useState80(false);
39987
40003
  const { previewServerState: state, subscribeToEvent } = useContext80(StudioServerConnectionCtx);
39988
40004
  const clientId = state.type === "connected" ? state.clientId : undefined;
39989
- const currentOutName = useRef41("");
40005
+ const currentOutName = useRef42("");
39990
40006
  currentOutName.current = outName;
39991
- useEffect76(() => {
40007
+ useEffect77(() => {
39992
40008
  if (!clientId) {
39993
40009
  return;
39994
40010
  }
@@ -40004,7 +40020,7 @@ var useFileExistence = (outName) => {
40004
40020
  unsubscribeFromFileExistenceWatcher({ file: outName, clientId });
40005
40021
  };
40006
40022
  }, [clientId, outName]);
40007
- useEffect76(() => {
40023
+ useEffect77(() => {
40008
40024
  const listener = (event) => {
40009
40025
  if (event.type !== "watched-file-deleted") {
40010
40026
  return;
@@ -40021,7 +40037,7 @@ var useFileExistence = (outName) => {
40021
40037
  unsub();
40022
40038
  };
40023
40039
  }, [outName, subscribeToEvent]);
40024
- useEffect76(() => {
40040
+ useEffect77(() => {
40025
40041
  const listener = (event) => {
40026
40042
  if (event.type !== "watched-file-undeleted") {
40027
40043
  return;
@@ -41575,7 +41591,7 @@ var RenderModal = ({
41575
41591
  resolved: { result: resolvedComposition },
41576
41592
  unresolved: unresolvedComposition
41577
41593
  } = context;
41578
- const isMounted = useRef42(true);
41594
+ const isMounted = useRef43(true);
41579
41595
  const [isVideo] = useState81(() => {
41580
41596
  return typeof resolvedComposition.durationInFrames === "undefined" ? true : resolvedComposition.durationInFrames > 1;
41581
41597
  });
@@ -42073,7 +42089,7 @@ var RenderModal = ({
42073
42089
  offthreadVideoThreads,
42074
42090
  mediaCacheSizeInBytes
42075
42091
  ]);
42076
- useEffect77(() => {
42092
+ useEffect78(() => {
42077
42093
  return () => {
42078
42094
  isMounted.current = false;
42079
42095
  };
@@ -42242,7 +42258,7 @@ var RenderModal = ({
42242
42258
  onClickVideo();
42243
42259
  }
42244
42260
  }, [renderMode, onClickStill, onClickSequence, onClickVideo]);
42245
- useEffect77(() => {
42261
+ useEffect78(() => {
42246
42262
  if (renderDisabled) {
42247
42263
  return;
42248
42264
  }
@@ -42551,11 +42567,86 @@ var RenderModalWithLoader = (props) => {
42551
42567
  // src/components/RenderModal/WebRenderModal.tsx
42552
42568
  import { getDefaultOutLocation as getDefaultOutLocation2 } from "@remotion/studio-shared";
42553
42569
  import { renderMediaOnWeb, renderStillOnWeb } from "@remotion/web-renderer";
42554
- import { useCallback as useCallback130, useContext as useContext82, useMemo as useMemo132, useState as useState82 } from "react";
42570
+ import { useCallback as useCallback131, useContext as useContext82, useMemo as useMemo133, useState as useState82 } from "react";
42571
+
42572
+ // src/icons/certificate.tsx
42573
+ import { jsx as jsx257 } from "react/jsx-runtime";
42574
+ var CertificateIcon = (props) => /* @__PURE__ */ jsx257("svg", {
42575
+ xmlns: "http://www.w3.org/2000/svg",
42576
+ viewBox: "0 0 576 512",
42577
+ ...props,
42578
+ children: /* @__PURE__ */ jsx257("path", {
42579
+ fill: "currentcolor",
42580
+ d: "M192 32l128 0 0 96c0 35.3 28.7 64 64 64l96 0 0 256c0 17.7-14.3 32-32 32l-192 0 0 32 192 0c35.3 0 64-28.7 64-64l0-261.5c0-17-6.7-33.3-18.7-45.3L370.7 18.7C358.7 6.7 342.5 0 325.5 0L192 0c-35.3 0-64 28.7-64 64l0 80c10.9 0 21.6 1 32 2.9L160 64c0-17.7 14.3-32 32-32zM352 45.3L466.7 160 384 160c-17.7 0-32-14.3-32-32l0-82.7zM32 320a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zM176 438.7l0 66.3-40.1-22.9c-4.9-2.8-11-2.8-15.9 0L80 505 80 438.7c14.8 6 31 9.3 48 9.3s33.2-3.3 48-9.3zm32-18.8c29.3-23.5 48-59.5 48-99.9 0-70.7-57.3-128-128-128S0 249.3 0 320c0 40.4 18.7 76.5 48 99.9l0 101.8c0 12.3 10 22.3 22.3 22.3 3.9 0 7.7-1 11.1-2.9l46.6-26.6 46.6 26.6c3.4 1.9 7.2 2.9 11.1 2.9 12.3 0 22.3-10 22.3-22.3l0-101.8zM128 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm0-80a56 56 0 1 0 0 112 56 56 0 1 0 0-112z"
42581
+ })
42582
+ });
42583
+
42584
+ // src/components/RenderModal/WebRendererExperimentalBadge.tsx
42585
+ import { jsx as jsx258, jsxs as jsxs135 } from "react/jsx-runtime";
42586
+ var row8 = {
42587
+ display: "flex",
42588
+ flexDirection: "row",
42589
+ alignItems: "center",
42590
+ justifyContent: "center"
42591
+ };
42592
+ var text3 = {
42593
+ fontSize: 14,
42594
+ fontFamily: "sans-serif",
42595
+ color: LIGHT_TEXT
42596
+ };
42597
+ var icon7 = {
42598
+ width: 14,
42599
+ height: 14,
42600
+ flexShrink: 0,
42601
+ fill: WARNING_COLOR,
42602
+ marginRight: 8
42603
+ };
42604
+ var link3 = {
42605
+ color: "inherit",
42606
+ textDecoration: "underline",
42607
+ fontSize: 14
42608
+ };
42609
+ var WebRendererExperimentalBadge = () => {
42610
+ return /* @__PURE__ */ jsxs135("div", {
42611
+ style: row8,
42612
+ children: [
42613
+ /* @__PURE__ */ jsx258(WarningTriangle, {
42614
+ type: "warning",
42615
+ style: icon7
42616
+ }),
42617
+ /* @__PURE__ */ jsxs135("div", {
42618
+ style: text3,
42619
+ children: [
42620
+ "The Remotion Web Renderer is experimental.",
42621
+ " ",
42622
+ /* @__PURE__ */ jsx258("a", {
42623
+ href: "https://github.com/remotion-dev/remotion/issues/5913",
42624
+ target: "_blank",
42625
+ rel: "noopener noreferrer",
42626
+ style: link3,
42627
+ children: "Track progress on GitHub"
42628
+ }),
42629
+ " ",
42630
+ "and discuss in the",
42631
+ " ",
42632
+ /* @__PURE__ */ jsx258("a", {
42633
+ href: "https://remotion.dev/discord",
42634
+ target: "_blank",
42635
+ rel: "noopener noreferrer",
42636
+ style: link3,
42637
+ children: "#web-renderer"
42638
+ }),
42639
+ " ",
42640
+ "channel on Discord."
42641
+ ]
42642
+ })
42643
+ ]
42644
+ });
42645
+ };
42555
42646
 
42556
42647
  // src/components/RenderModal/WebRenderModalAdvanced.tsx
42557
42648
  import { useCallback as useCallback128, useMemo as useMemo129 } from "react";
42558
- import { jsx as jsx257, jsxs as jsxs135 } from "react/jsx-runtime";
42649
+ import { jsx as jsx259, jsxs as jsxs136 } from "react/jsx-runtime";
42559
42650
  var tabContainer = {
42560
42651
  flex: 1
42561
42652
  };
@@ -42592,7 +42683,7 @@ var WebRenderModalAdvanced = ({
42592
42683
  {
42593
42684
  label: "No Preference",
42594
42685
  onClick: () => setHardwareAcceleration("no-preference"),
42595
- leftItem: hardwareAcceleration === "no-preference" ? /* @__PURE__ */ jsx257(Checkmark, {}) : null,
42686
+ leftItem: hardwareAcceleration === "no-preference" ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
42596
42687
  id: "no-preference",
42597
42688
  keyHint: null,
42598
42689
  quickSwitcherLabel: null,
@@ -42603,7 +42694,7 @@ var WebRenderModalAdvanced = ({
42603
42694
  {
42604
42695
  label: "Prefer Hardware",
42605
42696
  onClick: () => setHardwareAcceleration("prefer-hardware"),
42606
- leftItem: hardwareAcceleration === "prefer-hardware" ? /* @__PURE__ */ jsx257(Checkmark, {}) : null,
42697
+ leftItem: hardwareAcceleration === "prefer-hardware" ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
42607
42698
  id: "prefer-hardware",
42608
42699
  keyHint: null,
42609
42700
  quickSwitcherLabel: null,
@@ -42614,7 +42705,7 @@ var WebRenderModalAdvanced = ({
42614
42705
  {
42615
42706
  label: "Prefer Software",
42616
42707
  onClick: () => setHardwareAcceleration("prefer-software"),
42617
- leftItem: hardwareAcceleration === "prefer-software" ? /* @__PURE__ */ jsx257(Checkmark, {}) : null,
42708
+ leftItem: hardwareAcceleration === "prefer-software" ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
42618
42709
  id: "prefer-software",
42619
42710
  keyHint: null,
42620
42711
  quickSwitcherLabel: null,
@@ -42624,10 +42715,10 @@ var WebRenderModalAdvanced = ({
42624
42715
  }
42625
42716
  ];
42626
42717
  }, [hardwareAcceleration, setHardwareAcceleration]);
42627
- return /* @__PURE__ */ jsxs135("div", {
42718
+ return /* @__PURE__ */ jsxs136("div", {
42628
42719
  style: tabContainer,
42629
42720
  children: [
42630
- /* @__PURE__ */ jsx257(NumberSetting, {
42721
+ /* @__PURE__ */ jsx259(NumberSetting, {
42631
42722
  name: "Delay Render Timeout",
42632
42723
  formatter: (v) => `${v}ms`,
42633
42724
  min: 0,
@@ -42637,24 +42728,24 @@ var WebRenderModalAdvanced = ({
42637
42728
  onValueChanged: setDelayRenderTimeout,
42638
42729
  hint: "delayRenderTimeoutInMillisecondsOption"
42639
42730
  }),
42640
- /* @__PURE__ */ jsxs135("div", {
42731
+ /* @__PURE__ */ jsxs136("div", {
42641
42732
  style: optionRow,
42642
42733
  children: [
42643
- /* @__PURE__ */ jsxs135("div", {
42734
+ /* @__PURE__ */ jsxs136("div", {
42644
42735
  style: label5,
42645
42736
  children: [
42646
42737
  "Custom @remotion/media cache size ",
42647
- /* @__PURE__ */ jsx257(Spacing, {
42738
+ /* @__PURE__ */ jsx259(Spacing, {
42648
42739
  x: 0.5
42649
42740
  }),
42650
- /* @__PURE__ */ jsx257(OptionExplainerBubble, {
42741
+ /* @__PURE__ */ jsx259(OptionExplainerBubble, {
42651
42742
  id: "mediaCacheSizeInBytesOption"
42652
42743
  })
42653
42744
  ]
42654
42745
  }),
42655
- /* @__PURE__ */ jsx257("div", {
42746
+ /* @__PURE__ */ jsx259("div", {
42656
42747
  style: rightRow,
42657
- children: /* @__PURE__ */ jsx257(Checkbox, {
42748
+ children: /* @__PURE__ */ jsx259(Checkbox, {
42658
42749
  checked: mediaCacheSizeInBytes !== null,
42659
42750
  onChange: toggleCustomMediaCacheSizeInBytes,
42660
42751
  name: "media-cache-size"
@@ -42662,7 +42753,7 @@ var WebRenderModalAdvanced = ({
42662
42753
  })
42663
42754
  ]
42664
42755
  }),
42665
- mediaCacheSizeInBytes === null ? null : /* @__PURE__ */ jsx257(NumberSetting, {
42756
+ mediaCacheSizeInBytes === null ? null : /* @__PURE__ */ jsx259(NumberSetting, {
42666
42757
  name: "@remotion/media cache size",
42667
42758
  formatter: (w) => `${w} bytes`,
42668
42759
  min: 0,
@@ -42671,16 +42762,16 @@ var WebRenderModalAdvanced = ({
42671
42762
  value: mediaCacheSizeInBytes,
42672
42763
  onValueChanged: changeMediaCacheSizeInBytes
42673
42764
  }),
42674
- renderMode === "video" ? /* @__PURE__ */ jsxs135("div", {
42765
+ renderMode === "video" ? /* @__PURE__ */ jsxs136("div", {
42675
42766
  style: optionRow,
42676
42767
  children: [
42677
- /* @__PURE__ */ jsx257("div", {
42768
+ /* @__PURE__ */ jsx259("div", {
42678
42769
  style: label5,
42679
42770
  children: "Hardware Acceleration"
42680
42771
  }),
42681
- /* @__PURE__ */ jsx257("div", {
42772
+ /* @__PURE__ */ jsx259("div", {
42682
42773
  style: rightRow,
42683
- children: /* @__PURE__ */ jsx257(Combobox, {
42774
+ children: /* @__PURE__ */ jsx259(Combobox, {
42684
42775
  values: hardwareAccelerationOptions,
42685
42776
  selectedId: hardwareAcceleration,
42686
42777
  title: "Hardware Acceleration"
@@ -42693,16 +42784,16 @@ var WebRenderModalAdvanced = ({
42693
42784
  };
42694
42785
 
42695
42786
  // src/components/RenderModal/WebRenderModalAudio.tsx
42696
- import { jsx as jsx258 } from "react/jsx-runtime";
42787
+ import { jsx as jsx260 } from "react/jsx-runtime";
42697
42788
  var container60 = {
42698
42789
  flex: 1,
42699
42790
  overflowY: "auto"
42700
42791
  };
42701
42792
  var WebRenderModalAudio = ({ muted, setMuted }) => {
42702
- return /* @__PURE__ */ jsx258("div", {
42793
+ return /* @__PURE__ */ jsx260("div", {
42703
42794
  style: container60,
42704
42795
  className: VERTICAL_SCROLLBAR_CLASSNAME,
42705
- children: /* @__PURE__ */ jsx258(MutedSetting, {
42796
+ children: /* @__PURE__ */ jsx260(MutedSetting, {
42706
42797
  enforceAudioTrack: false,
42707
42798
  muted,
42708
42799
  setMuted
@@ -42712,7 +42803,7 @@ var WebRenderModalAudio = ({ muted, setMuted }) => {
42712
42803
 
42713
42804
  // src/components/RenderModal/WebRenderModalBasic.tsx
42714
42805
  import { useMemo as useMemo130 } from "react";
42715
- import { jsx as jsx259, jsxs as jsxs136, Fragment as Fragment45 } from "react/jsx-runtime";
42806
+ import { jsx as jsx261, jsxs as jsxs137, Fragment as Fragment45 } from "react/jsx-runtime";
42716
42807
  var tabContainer2 = {
42717
42808
  flex: 1
42718
42809
  };
@@ -42765,7 +42856,7 @@ var WebRenderModalBasic = ({
42765
42856
  return {
42766
42857
  label: humanReadableLogLevel(level),
42767
42858
  onClick: () => setLogLevel(level),
42768
- leftItem: logLevel === level ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
42859
+ leftItem: logLevel === level ? /* @__PURE__ */ jsx261(Checkmark, {}) : null,
42769
42860
  id: level,
42770
42861
  keyHint: null,
42771
42862
  quickSwitcherLabel: null,
@@ -42780,7 +42871,7 @@ var WebRenderModalBasic = ({
42780
42871
  {
42781
42872
  label: "MP4",
42782
42873
  onClick: () => setContainerFormat("mp4"),
42783
- leftItem: container61 === "mp4" ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
42874
+ leftItem: container61 === "mp4" ? /* @__PURE__ */ jsx261(Checkmark, {}) : null,
42784
42875
  id: "mp4",
42785
42876
  keyHint: null,
42786
42877
  quickSwitcherLabel: null,
@@ -42791,7 +42882,7 @@ var WebRenderModalBasic = ({
42791
42882
  {
42792
42883
  label: "WebM",
42793
42884
  onClick: () => setContainerFormat("webm"),
42794
- leftItem: container61 === "webm" ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
42885
+ leftItem: container61 === "webm" ? /* @__PURE__ */ jsx261(Checkmark, {}) : null,
42795
42886
  id: "webm",
42796
42887
  keyHint: null,
42797
42888
  quickSwitcherLabel: null,
@@ -42806,7 +42897,7 @@ var WebRenderModalBasic = ({
42806
42897
  {
42807
42898
  label: "H.264",
42808
42899
  onClick: () => setCodec("h264"),
42809
- leftItem: codec === "h264" ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
42900
+ leftItem: codec === "h264" ? /* @__PURE__ */ jsx261(Checkmark, {}) : null,
42810
42901
  id: "h264",
42811
42902
  keyHint: null,
42812
42903
  quickSwitcherLabel: null,
@@ -42817,7 +42908,7 @@ var WebRenderModalBasic = ({
42817
42908
  {
42818
42909
  label: "H.265",
42819
42910
  onClick: () => setCodec("h265"),
42820
- leftItem: codec === "h265" ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
42911
+ leftItem: codec === "h265" ? /* @__PURE__ */ jsx261(Checkmark, {}) : null,
42821
42912
  id: "h265",
42822
42913
  keyHint: null,
42823
42914
  quickSwitcherLabel: null,
@@ -42828,7 +42919,7 @@ var WebRenderModalBasic = ({
42828
42919
  {
42829
42920
  label: "VP8",
42830
42921
  onClick: () => setCodec("vp8"),
42831
- leftItem: codec === "vp8" ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
42922
+ leftItem: codec === "vp8" ? /* @__PURE__ */ jsx261(Checkmark, {}) : null,
42832
42923
  id: "vp8",
42833
42924
  keyHint: null,
42834
42925
  quickSwitcherLabel: null,
@@ -42839,7 +42930,7 @@ var WebRenderModalBasic = ({
42839
42930
  {
42840
42931
  label: "VP9",
42841
42932
  onClick: () => setCodec("vp9"),
42842
- leftItem: codec === "vp9" ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
42933
+ leftItem: codec === "vp9" ? /* @__PURE__ */ jsx261(Checkmark, {}) : null,
42843
42934
  id: "vp9",
42844
42935
  keyHint: null,
42845
42936
  quickSwitcherLabel: null,
@@ -42850,7 +42941,7 @@ var WebRenderModalBasic = ({
42850
42941
  {
42851
42942
  label: "AV1",
42852
42943
  onClick: () => setCodec("av1"),
42853
- leftItem: codec === "av1" ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
42944
+ leftItem: codec === "av1" ? /* @__PURE__ */ jsx261(Checkmark, {}) : null,
42854
42945
  id: "av1",
42855
42946
  keyHint: null,
42856
42947
  quickSwitcherLabel: null,
@@ -42860,38 +42951,38 @@ var WebRenderModalBasic = ({
42860
42951
  }
42861
42952
  ];
42862
42953
  }, [codec, setCodec]);
42863
- return /* @__PURE__ */ jsxs136("div", {
42954
+ return /* @__PURE__ */ jsxs137("div", {
42864
42955
  style: tabContainer2,
42865
42956
  children: [
42866
- renderMode === "still" ? /* @__PURE__ */ jsxs136(Fragment45, {
42957
+ renderMode === "still" ? /* @__PURE__ */ jsxs137(Fragment45, {
42867
42958
  children: [
42868
- /* @__PURE__ */ jsxs136("div", {
42959
+ /* @__PURE__ */ jsxs137("div", {
42869
42960
  style: optionRow,
42870
42961
  children: [
42871
- /* @__PURE__ */ jsx259("div", {
42962
+ /* @__PURE__ */ jsx261("div", {
42872
42963
  style: label5,
42873
42964
  children: "Format"
42874
42965
  }),
42875
- /* @__PURE__ */ jsx259("div", {
42966
+ /* @__PURE__ */ jsx261("div", {
42876
42967
  style: rightRow,
42877
- children: /* @__PURE__ */ jsx259(SegmentedControl, {
42968
+ children: /* @__PURE__ */ jsx261(SegmentedControl, {
42878
42969
  items: imageFormatOptions,
42879
42970
  needsWrapping: true
42880
42971
  })
42881
42972
  })
42882
42973
  ]
42883
42974
  }),
42884
- resolvedComposition.durationInFrames > 1 ? /* @__PURE__ */ jsxs136("div", {
42975
+ resolvedComposition.durationInFrames > 1 ? /* @__PURE__ */ jsxs137("div", {
42885
42976
  style: optionRow,
42886
42977
  children: [
42887
- /* @__PURE__ */ jsx259("div", {
42978
+ /* @__PURE__ */ jsx261("div", {
42888
42979
  style: label5,
42889
42980
  children: "Frame"
42890
42981
  }),
42891
- /* @__PURE__ */ jsx259("div", {
42982
+ /* @__PURE__ */ jsx261("div", {
42892
42983
  style: rightRow,
42893
- children: /* @__PURE__ */ jsx259(RightAlignInput, {
42894
- children: /* @__PURE__ */ jsx259(InputDragger, {
42984
+ children: /* @__PURE__ */ jsx261(RightAlignInput, {
42985
+ children: /* @__PURE__ */ jsx261(InputDragger, {
42895
42986
  value: frame2,
42896
42987
  onTextChange: onFrameChanged,
42897
42988
  placeholder: `0-${resolvedComposition.durationInFrames - 1}`,
@@ -42908,18 +42999,18 @@ var WebRenderModalBasic = ({
42908
42999
  ]
42909
43000
  }) : null
42910
43001
  ]
42911
- }) : /* @__PURE__ */ jsxs136(Fragment45, {
43002
+ }) : /* @__PURE__ */ jsxs137(Fragment45, {
42912
43003
  children: [
42913
- /* @__PURE__ */ jsxs136("div", {
43004
+ /* @__PURE__ */ jsxs137("div", {
42914
43005
  style: optionRow,
42915
43006
  children: [
42916
- /* @__PURE__ */ jsx259("div", {
43007
+ /* @__PURE__ */ jsx261("div", {
42917
43008
  style: label5,
42918
43009
  children: "Container"
42919
43010
  }),
42920
- /* @__PURE__ */ jsx259("div", {
43011
+ /* @__PURE__ */ jsx261("div", {
42921
43012
  style: rightRow,
42922
- children: /* @__PURE__ */ jsx259(Combobox, {
43013
+ children: /* @__PURE__ */ jsx261(Combobox, {
42923
43014
  values: containerOptions,
42924
43015
  selectedId: container61,
42925
43016
  title: "Container"
@@ -42927,24 +43018,24 @@ var WebRenderModalBasic = ({
42927
43018
  })
42928
43019
  ]
42929
43020
  }),
42930
- /* @__PURE__ */ jsxs136("div", {
43021
+ /* @__PURE__ */ jsxs137("div", {
42931
43022
  style: optionRow,
42932
43023
  children: [
42933
- /* @__PURE__ */ jsxs136("div", {
43024
+ /* @__PURE__ */ jsxs137("div", {
42934
43025
  style: label5,
42935
43026
  children: [
42936
43027
  "Codec",
42937
- /* @__PURE__ */ jsx259(Spacing, {
43028
+ /* @__PURE__ */ jsx261(Spacing, {
42938
43029
  x: 0.5
42939
43030
  }),
42940
- /* @__PURE__ */ jsx259(OptionExplainerBubble, {
43031
+ /* @__PURE__ */ jsx261(OptionExplainerBubble, {
42941
43032
  id: "videoCodecOption"
42942
43033
  })
42943
43034
  ]
42944
43035
  }),
42945
- /* @__PURE__ */ jsx259("div", {
43036
+ /* @__PURE__ */ jsx261("div", {
42946
43037
  style: rightRow,
42947
- children: /* @__PURE__ */ jsx259(Combobox, {
43038
+ children: /* @__PURE__ */ jsx261(Combobox, {
42948
43039
  values: codecOptions,
42949
43040
  selectedId: codec,
42950
43041
  title: "Codec"
@@ -42952,7 +43043,7 @@ var WebRenderModalBasic = ({
42952
43043
  })
42953
43044
  ]
42954
43045
  }),
42955
- /* @__PURE__ */ jsx259(FrameRangeSetting, {
43046
+ /* @__PURE__ */ jsx261(FrameRangeSetting, {
42956
43047
  durationInFrames: resolvedComposition.durationInFrames,
42957
43048
  startFrame: startFrame ?? 0,
42958
43049
  endFrame: endFrame ?? resolvedComposition.durationInFrames - 1,
@@ -42961,7 +43052,7 @@ var WebRenderModalBasic = ({
42961
43052
  })
42962
43053
  ]
42963
43054
  }),
42964
- /* @__PURE__ */ jsx259(RenderModalOutputName, {
43055
+ /* @__PURE__ */ jsx261(RenderModalOutputName, {
42965
43056
  existence: false,
42966
43057
  inputStyle: input,
42967
43058
  outName,
@@ -42969,24 +43060,24 @@ var WebRenderModalBasic = ({
42969
43060
  validationMessage,
42970
43061
  label: "Download name"
42971
43062
  }),
42972
- /* @__PURE__ */ jsxs136("div", {
43063
+ /* @__PURE__ */ jsxs137("div", {
42973
43064
  style: optionRow,
42974
43065
  children: [
42975
- /* @__PURE__ */ jsxs136("div", {
43066
+ /* @__PURE__ */ jsxs137("div", {
42976
43067
  style: label5,
42977
43068
  children: [
42978
43069
  "Log Level ",
42979
- /* @__PURE__ */ jsx259(Spacing, {
43070
+ /* @__PURE__ */ jsx261(Spacing, {
42980
43071
  x: 0.5
42981
43072
  }),
42982
- /* @__PURE__ */ jsx259(OptionExplainerBubble, {
43073
+ /* @__PURE__ */ jsx261(OptionExplainerBubble, {
42983
43074
  id: "logLevelOption"
42984
43075
  })
42985
43076
  ]
42986
43077
  }),
42987
- /* @__PURE__ */ jsx259("div", {
43078
+ /* @__PURE__ */ jsx261("div", {
42988
43079
  style: rightRow,
42989
- children: /* @__PURE__ */ jsx259(Combobox, {
43080
+ children: /* @__PURE__ */ jsx261(Combobox, {
42990
43081
  values: logLevelOptions,
42991
43082
  selectedId: logLevel,
42992
43083
  title: "Log Level"
@@ -42998,12 +43089,286 @@ var WebRenderModalBasic = ({
42998
43089
  });
42999
43090
  };
43000
43091
 
43001
- // src/components/RenderModal/WebRenderModalPicture.tsx
43092
+ // src/components/RenderModal/WebRenderModalLicense.tsx
43002
43093
  import { useCallback as useCallback129, useMemo as useMemo131 } from "react";
43003
- import { jsx as jsx260, jsxs as jsxs137 } from "react/jsx-runtime";
43094
+ import { jsx as jsx262, jsxs as jsxs138, Fragment as Fragment46 } from "react/jsx-runtime";
43095
+ var row9 = {
43096
+ display: "flex",
43097
+ flexDirection: "row",
43098
+ paddingLeft: 16,
43099
+ paddingRight: 16
43100
+ };
43004
43101
  var tabContainer3 = {
43005
43102
  flex: 1
43006
43103
  };
43104
+ var descriptionStyle = {
43105
+ color: LIGHT_TEXT,
43106
+ fontSize: 14,
43107
+ fontFamily: "sans-serif",
43108
+ paddingLeft: 16,
43109
+ paddingRight: 16,
43110
+ paddingTop: 16,
43111
+ paddingBottom: 8,
43112
+ lineHeight: 1.5
43113
+ };
43114
+ var paddedDescriptionStyle = {
43115
+ color: LIGHT_TEXT,
43116
+ fontSize: 14,
43117
+ fontFamily: "sans-serif",
43118
+ padding: 9,
43119
+ border: "1px solid " + INPUT_BORDER_COLOR_UNHOVERED,
43120
+ borderRadius: 8,
43121
+ lineHeight: 1.5,
43122
+ marginLeft: 16,
43123
+ marginRight: 16
43124
+ };
43125
+ var descriptionLink = {
43126
+ color: "white",
43127
+ fontSize: 14
43128
+ };
43129
+ var checkboxLabel = {
43130
+ fontSize: 14,
43131
+ lineHeight: "40px",
43132
+ color: LIGHT_TEXT,
43133
+ flex: 1,
43134
+ fontFamily: "sans-serif",
43135
+ cursor: "pointer",
43136
+ userSelect: "none"
43137
+ };
43138
+ var inputStyle2 = {
43139
+ minWidth: 250
43140
+ };
43141
+ var justifyCenter = {
43142
+ display: "flex",
43143
+ alignItems: "center",
43144
+ gap: 10,
43145
+ flex: 1
43146
+ };
43147
+ var codeStyle = {
43148
+ fontSize: 14,
43149
+ fontFamily: "monospace",
43150
+ color: BLUE
43151
+ };
43152
+ var codeLine = {
43153
+ fontSize: 14,
43154
+ fontFamily: "monospace",
43155
+ color: LIGHT_TEXT,
43156
+ backgroundColor: INPUT_BACKGROUND,
43157
+ padding: 6,
43158
+ borderRadius: 3,
43159
+ marginTop: 6,
43160
+ overflowX: "auto",
43161
+ maxWidth: "100%"
43162
+ };
43163
+ var codeLineSmall = {
43164
+ ...codeLine,
43165
+ fontSize: 11
43166
+ };
43167
+ var LICENSE_KEY_LENGTH = 55;
43168
+ var LICENSE_KEY_PREFIX = "rm_pub_";
43169
+ var validateLicenseKey = (key5) => {
43170
+ if (key5.length === 0) {
43171
+ return { valid: false, message: null };
43172
+ }
43173
+ if (!key5.startsWith(LICENSE_KEY_PREFIX)) {
43174
+ return {
43175
+ valid: false,
43176
+ message: `License key must start with "${LICENSE_KEY_PREFIX}"`
43177
+ };
43178
+ }
43179
+ const afterPrefix = key5.slice(LICENSE_KEY_PREFIX.length);
43180
+ if (!/^[a-zA-Z0-9]*$/.test(afterPrefix)) {
43181
+ return {
43182
+ valid: false,
43183
+ message: "License key must contain only alphanumeric characters after the prefix"
43184
+ };
43185
+ }
43186
+ if (key5.length !== LICENSE_KEY_LENGTH) {
43187
+ return {
43188
+ valid: false,
43189
+ message: `License key must be ${LICENSE_KEY_LENGTH} characters long`
43190
+ };
43191
+ }
43192
+ return { valid: true, message: null };
43193
+ };
43194
+ var WebRenderModalLicense = ({
43195
+ licenseKey,
43196
+ setLicenseKey,
43197
+ initialPublicLicenseKey
43198
+ }) => {
43199
+ const onFreeLicenseChange = useCallback129(() => {
43200
+ setLicenseKey("free-license");
43201
+ }, [setLicenseKey]);
43202
+ const onCompanyLicenseChange = useCallback129(() => {
43203
+ setLicenseKey(initialPublicLicenseKey ?? "");
43204
+ }, [initialPublicLicenseKey, setLicenseKey]);
43205
+ const onLicenseKeyChange = useCallback129((e) => {
43206
+ setLicenseKey(e.target.value);
43207
+ }, [setLicenseKey]);
43208
+ const licenseValidation = useMemo131(() => {
43209
+ if (licenseKey === null || licenseKey === "free-license") {
43210
+ return { valid: true, message: null };
43211
+ }
43212
+ return validateLicenseKey(licenseKey);
43213
+ }, [licenseKey]);
43214
+ return /* @__PURE__ */ jsxs138("div", {
43215
+ style: tabContainer3,
43216
+ children: [
43217
+ /* @__PURE__ */ jsxs138("div", {
43218
+ style: descriptionStyle,
43219
+ children: [
43220
+ "Remotion is free if you are an individual or company with a headcount of 3 or less. See",
43221
+ " ",
43222
+ /* @__PURE__ */ jsx262("a", {
43223
+ style: descriptionLink,
43224
+ href: "https://remotion.dev/license",
43225
+ children: "LICENSE.md"
43226
+ }),
43227
+ "."
43228
+ ]
43229
+ }),
43230
+ /* @__PURE__ */ jsx262("div", {
43231
+ style: row9,
43232
+ children: /* @__PURE__ */ jsxs138("div", {
43233
+ style: justifyCenter,
43234
+ children: [
43235
+ /* @__PURE__ */ jsx262(Checkbox, {
43236
+ checked: licenseKey === "free-license",
43237
+ onChange: onFreeLicenseChange,
43238
+ name: "free-license",
43239
+ rounded: true
43240
+ }),
43241
+ /* @__PURE__ */ jsxs138("div", {
43242
+ style: checkboxLabel,
43243
+ onClick: onFreeLicenseChange,
43244
+ children: [
43245
+ "I am eligible for the Free License, ",
43246
+ "don't",
43247
+ " print a warning"
43248
+ ]
43249
+ })
43250
+ ]
43251
+ })
43252
+ }),
43253
+ licenseKey === "free-license" ? /* @__PURE__ */ jsxs138("div", {
43254
+ style: paddedDescriptionStyle,
43255
+ children: [
43256
+ "Enjoy Remotion! Add the following to",
43257
+ " ",
43258
+ /* @__PURE__ */ jsx262("code", {
43259
+ style: codeStyle,
43260
+ children: "remotion.config.ts"
43261
+ }),
43262
+ " to persist this setting:",
43263
+ /* @__PURE__ */ jsx262("div", {
43264
+ style: codeLine,
43265
+ children: "Config.setPublicLicenseKey('free-license');"
43266
+ })
43267
+ ]
43268
+ }) : null,
43269
+ /* @__PURE__ */ jsx262("div", {
43270
+ style: row9,
43271
+ children: /* @__PURE__ */ jsxs138("div", {
43272
+ style: justifyCenter,
43273
+ children: [
43274
+ /* @__PURE__ */ jsx262(Checkbox, {
43275
+ checked: licenseKey !== "free-license" && licenseKey !== null,
43276
+ onChange: onCompanyLicenseChange,
43277
+ name: "company-license",
43278
+ rounded: true
43279
+ }),
43280
+ /* @__PURE__ */ jsx262("div", {
43281
+ style: checkboxLabel,
43282
+ onClick: onCompanyLicenseChange,
43283
+ children: "I have a Company License"
43284
+ })
43285
+ ]
43286
+ })
43287
+ }),
43288
+ licenseKey !== "free-license" && licenseKey !== null ? /* @__PURE__ */ jsxs138("div", {
43289
+ style: paddedDescriptionStyle,
43290
+ children: [
43291
+ "Add your public license from",
43292
+ " ",
43293
+ /* @__PURE__ */ jsx262("a", {
43294
+ href: "https://remotion.pro/dashboard",
43295
+ target: "_blank",
43296
+ style: descriptionLink,
43297
+ children: "remotion.pro"
43298
+ }),
43299
+ " ",
43300
+ "key below.",
43301
+ /* @__PURE__ */ jsx262(Spacing, {
43302
+ y: 1,
43303
+ block: true
43304
+ }),
43305
+ /* @__PURE__ */ jsx262(RemotionInput, {
43306
+ value: licenseKey,
43307
+ onChange: onLicenseKeyChange,
43308
+ placeholder: "remotion.pro public license key (starts with rm_pub_)",
43309
+ status: licenseValidation.valid || licenseKey.length === 0 ? "ok" : "error",
43310
+ rightAlign: false,
43311
+ style: inputStyle2,
43312
+ autoFocus: true
43313
+ }),
43314
+ licenseValidation.message ? /* @__PURE__ */ jsxs138(Fragment46, {
43315
+ children: [
43316
+ /* @__PURE__ */ jsx262(Spacing, {
43317
+ y: 1,
43318
+ block: true
43319
+ }),
43320
+ /* @__PURE__ */ jsx262(ValidationMessage, {
43321
+ message: licenseValidation.message,
43322
+ align: "flex-start",
43323
+ type: "error"
43324
+ })
43325
+ ]
43326
+ }) : null,
43327
+ licenseValidation.valid && licenseKey.length > 0 ? /* @__PURE__ */ jsxs138(Fragment46, {
43328
+ children: [
43329
+ /* @__PURE__ */ jsx262(Spacing, {
43330
+ y: 1,
43331
+ block: true
43332
+ }),
43333
+ "Add the following to",
43334
+ " ",
43335
+ /* @__PURE__ */ jsx262("code", {
43336
+ style: codeStyle,
43337
+ children: "remotion.config.ts"
43338
+ }),
43339
+ " to persist this setting:",
43340
+ /* @__PURE__ */ jsx262("div", {
43341
+ style: codeLineSmall,
43342
+ children: "Config.setPublicLicenseKey('" + licenseKey + "');"
43343
+ })
43344
+ ]
43345
+ }) : null
43346
+ ]
43347
+ }) : null,
43348
+ licenseKey === null ? /* @__PURE__ */ jsxs138("div", {
43349
+ style: descriptionStyle,
43350
+ children: [
43351
+ "If you are not eligible for the free license, you need to obtain a",
43352
+ " ",
43353
+ /* @__PURE__ */ jsx262("a", {
43354
+ style: descriptionLink,
43355
+ target: "_blank",
43356
+ href: "https://remotion.pro/license",
43357
+ children: "Company License"
43358
+ }),
43359
+ "."
43360
+ ]
43361
+ }) : null
43362
+ ]
43363
+ });
43364
+ };
43365
+
43366
+ // src/components/RenderModal/WebRenderModalPicture.tsx
43367
+ import { useCallback as useCallback130, useMemo as useMemo132 } from "react";
43368
+ import { jsx as jsx263, jsxs as jsxs139 } from "react/jsx-runtime";
43369
+ var tabContainer4 = {
43370
+ flex: 1
43371
+ };
43007
43372
  var WebRenderModalPicture = ({
43008
43373
  renderMode,
43009
43374
  videoBitrate,
@@ -43013,12 +43378,12 @@ var WebRenderModalPicture = ({
43013
43378
  transparent,
43014
43379
  setTransparent
43015
43380
  }) => {
43016
- const qualityOptions = useMemo131(() => {
43381
+ const qualityOptions = useMemo132(() => {
43017
43382
  return [
43018
43383
  {
43019
43384
  label: "Very Low",
43020
43385
  onClick: () => setVideoBitrate("very-low"),
43021
- leftItem: videoBitrate === "very-low" ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
43386
+ leftItem: videoBitrate === "very-low" ? /* @__PURE__ */ jsx263(Checkmark, {}) : null,
43022
43387
  id: "very-low",
43023
43388
  keyHint: null,
43024
43389
  quickSwitcherLabel: null,
@@ -43029,7 +43394,7 @@ var WebRenderModalPicture = ({
43029
43394
  {
43030
43395
  label: "Low",
43031
43396
  onClick: () => setVideoBitrate("low"),
43032
- leftItem: videoBitrate === "low" ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
43397
+ leftItem: videoBitrate === "low" ? /* @__PURE__ */ jsx263(Checkmark, {}) : null,
43033
43398
  id: "low",
43034
43399
  keyHint: null,
43035
43400
  quickSwitcherLabel: null,
@@ -43040,7 +43405,7 @@ var WebRenderModalPicture = ({
43040
43405
  {
43041
43406
  label: "Medium",
43042
43407
  onClick: () => setVideoBitrate("medium"),
43043
- leftItem: videoBitrate === "medium" ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
43408
+ leftItem: videoBitrate === "medium" ? /* @__PURE__ */ jsx263(Checkmark, {}) : null,
43044
43409
  id: "medium",
43045
43410
  keyHint: null,
43046
43411
  quickSwitcherLabel: null,
@@ -43051,7 +43416,7 @@ var WebRenderModalPicture = ({
43051
43416
  {
43052
43417
  label: "High",
43053
43418
  onClick: () => setVideoBitrate("high"),
43054
- leftItem: videoBitrate === "high" ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
43419
+ leftItem: videoBitrate === "high" ? /* @__PURE__ */ jsx263(Checkmark, {}) : null,
43055
43420
  id: "high",
43056
43421
  keyHint: null,
43057
43422
  quickSwitcherLabel: null,
@@ -43062,7 +43427,7 @@ var WebRenderModalPicture = ({
43062
43427
  {
43063
43428
  label: "Very High",
43064
43429
  onClick: () => setVideoBitrate("very-high"),
43065
- leftItem: videoBitrate === "very-high" ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
43430
+ leftItem: videoBitrate === "very-high" ? /* @__PURE__ */ jsx263(Checkmark, {}) : null,
43066
43431
  id: "very-high",
43067
43432
  keyHint: null,
43068
43433
  quickSwitcherLabel: null,
@@ -43072,25 +43437,25 @@ var WebRenderModalPicture = ({
43072
43437
  }
43073
43438
  ];
43074
43439
  }, [videoBitrate, setVideoBitrate]);
43075
- const onTransparentChanged = useCallback129((e) => {
43440
+ const onTransparentChanged = useCallback130((e) => {
43076
43441
  setTransparent(e.target.checked);
43077
43442
  }, [setTransparent]);
43078
43443
  if (renderMode !== "video") {
43079
43444
  return null;
43080
43445
  }
43081
- return /* @__PURE__ */ jsxs137("div", {
43082
- style: tabContainer3,
43446
+ return /* @__PURE__ */ jsxs139("div", {
43447
+ style: tabContainer4,
43083
43448
  children: [
43084
- /* @__PURE__ */ jsxs137("div", {
43449
+ /* @__PURE__ */ jsxs139("div", {
43085
43450
  style: optionRow,
43086
43451
  children: [
43087
- /* @__PURE__ */ jsx260("div", {
43452
+ /* @__PURE__ */ jsx263("div", {
43088
43453
  style: label5,
43089
43454
  children: "Quality"
43090
43455
  }),
43091
- /* @__PURE__ */ jsx260("div", {
43456
+ /* @__PURE__ */ jsx263("div", {
43092
43457
  style: rightRow,
43093
- children: /* @__PURE__ */ jsx260(Combobox, {
43458
+ children: /* @__PURE__ */ jsx263(Combobox, {
43094
43459
  values: qualityOptions,
43095
43460
  selectedId: videoBitrate,
43096
43461
  title: "Quality"
@@ -43098,7 +43463,7 @@ var WebRenderModalPicture = ({
43098
43463
  })
43099
43464
  ]
43100
43465
  }),
43101
- /* @__PURE__ */ jsx260(NumberSetting, {
43466
+ /* @__PURE__ */ jsx263(NumberSetting, {
43102
43467
  name: "Keyframe Interval",
43103
43468
  formatter: (v) => `${v}s`,
43104
43469
  min: 1,
@@ -43107,16 +43472,16 @@ var WebRenderModalPicture = ({
43107
43472
  value: keyframeIntervalInSeconds,
43108
43473
  onValueChanged: setKeyframeIntervalInSeconds
43109
43474
  }),
43110
- /* @__PURE__ */ jsxs137("div", {
43475
+ /* @__PURE__ */ jsxs139("div", {
43111
43476
  style: optionRow,
43112
43477
  children: [
43113
- /* @__PURE__ */ jsx260("div", {
43478
+ /* @__PURE__ */ jsx263("div", {
43114
43479
  style: label5,
43115
43480
  children: "Transparent"
43116
43481
  }),
43117
- /* @__PURE__ */ jsx260("div", {
43482
+ /* @__PURE__ */ jsx263("div", {
43118
43483
  style: rightRow,
43119
- children: /* @__PURE__ */ jsx260(Checkbox, {
43484
+ children: /* @__PURE__ */ jsx263(Checkbox, {
43120
43485
  checked: transparent,
43121
43486
  onChange: onTransparentChanged,
43122
43487
  name: "transparent"
@@ -43129,7 +43494,7 @@ var WebRenderModalPicture = ({
43129
43494
  };
43130
43495
 
43131
43496
  // src/components/RenderModal/WebRenderModal.tsx
43132
- import { jsx as jsx261, jsxs as jsxs138 } from "react/jsx-runtime";
43497
+ import { jsx as jsx264, jsxs as jsxs140 } from "react/jsx-runtime";
43133
43498
  var invalidCharacters2 = ["?", "*", "+", ":", "%"];
43134
43499
  var isValidStillExtension2 = (extension, stillImageFormat) => {
43135
43500
  if (stillImageFormat === "jpeg" && extension === "jpg") {
@@ -43178,7 +43543,8 @@ var WebRenderModal = ({
43178
43543
  defaultProps,
43179
43544
  inFrameMark,
43180
43545
  outFrameMark,
43181
- initialLogLevel
43546
+ initialLogLevel,
43547
+ initialLicenseKey
43182
43548
  }) => {
43183
43549
  const context = useContext82(ResolvedCompositionContext);
43184
43550
  if (!context) {
@@ -43210,19 +43576,20 @@ var WebRenderModal = ({
43210
43576
  const [renderProgress, setRenderProgress] = useState82(null);
43211
43577
  const [transparent, setTransparent] = useState82(false);
43212
43578
  const [muted, setMuted] = useState82(false);
43213
- const finalEndFrame = useMemo132(() => {
43579
+ const [licenseKey, setLicenseKey] = useState82(initialLicenseKey);
43580
+ const finalEndFrame = useMemo133(() => {
43214
43581
  if (endFrame === null) {
43215
43582
  return resolvedComposition.durationInFrames - 1;
43216
43583
  }
43217
43584
  return Math.max(0, Math.min(resolvedComposition.durationInFrames - 1, endFrame));
43218
43585
  }, [endFrame, resolvedComposition.durationInFrames]);
43219
- const finalStartFrame = useMemo132(() => {
43586
+ const finalStartFrame = useMemo133(() => {
43220
43587
  if (startFrame === null) {
43221
43588
  return 0;
43222
43589
  }
43223
43590
  return Math.max(0, Math.min(finalEndFrame, startFrame));
43224
43591
  }, [finalEndFrame, startFrame]);
43225
- const frameRange = useMemo132(() => {
43592
+ const frameRange = useMemo133(() => {
43226
43593
  if (startFrame === null && endFrame === null) {
43227
43594
  return null;
43228
43595
  }
@@ -43238,21 +43605,21 @@ var WebRenderModal = ({
43238
43605
  });
43239
43606
  });
43240
43607
  const [outName, setOutName] = useState82(() => initialOutName);
43241
- const setStillFormat = useCallback130((format) => {
43608
+ const setStillFormat = useCallback131((format) => {
43242
43609
  setImageFormat(format);
43243
43610
  setOutName((prev) => {
43244
43611
  const newFileName = getStringBeforeSuffix(prev) + "." + format;
43245
43612
  return newFileName;
43246
43613
  });
43247
43614
  }, []);
43248
- const setContainerFormat = useCallback130((newContainer) => {
43615
+ const setContainerFormat = useCallback131((newContainer) => {
43249
43616
  setContainer(newContainer);
43250
43617
  setOutName((prev) => {
43251
43618
  const newFileName = getStringBeforeSuffix(prev) + "." + newContainer;
43252
43619
  return newFileName;
43253
43620
  });
43254
43621
  }, []);
43255
- const onRenderModeChange = useCallback130((newMode) => {
43622
+ const onRenderModeChange = useCallback131((newMode) => {
43256
43623
  setRenderMode(newMode);
43257
43624
  if (newMode === "video") {
43258
43625
  setOutName((prev) => {
@@ -43266,7 +43633,7 @@ var WebRenderModal = ({
43266
43633
  });
43267
43634
  }
43268
43635
  }, [container61, imageFormat]);
43269
- const renderTabOptions = useMemo132(() => {
43636
+ const renderTabOptions = useMemo133(() => {
43270
43637
  const options = [
43271
43638
  {
43272
43639
  label: "Still",
@@ -43289,10 +43656,10 @@ var WebRenderModal = ({
43289
43656
  }
43290
43657
  return options;
43291
43658
  }, [renderMode, resolvedComposition.durationInFrames, onRenderModeChange]);
43292
- const onFrameSetDirectly = useCallback130((newFrame) => {
43659
+ const onFrameSetDirectly = useCallback131((newFrame) => {
43293
43660
  setFrame(newFrame);
43294
43661
  }, [setFrame]);
43295
- const onFrameChanged = useCallback130((e) => {
43662
+ const onFrameChanged = useCallback131((e) => {
43296
43663
  setFrame((q) => {
43297
43664
  const newFrame = parseFloat(e);
43298
43665
  if (Number.isNaN(newFrame)) {
@@ -43301,10 +43668,10 @@ var WebRenderModal = ({
43301
43668
  return newFrame;
43302
43669
  });
43303
43670
  }, [setFrame]);
43304
- const onOutNameChange = useCallback130((e) => {
43671
+ const onOutNameChange = useCallback131((e) => {
43305
43672
  setOutName(e.target.value);
43306
43673
  }, []);
43307
- const outnameValidation = useMemo132(() => {
43674
+ const outnameValidation = useMemo133(() => {
43308
43675
  if (renderMode === "still") {
43309
43676
  return validateOutnameForStill({
43310
43677
  outName,
@@ -43343,7 +43710,7 @@ var WebRenderModal = ({
43343
43710
  return { valid: false, error: err };
43344
43711
  }
43345
43712
  }, [outName, imageFormat, renderMode, container61]);
43346
- const onRenderStill = useCallback130(async () => {
43713
+ const onRenderStill = useCallback131(async () => {
43347
43714
  const { blob } = await renderStillOnWeb({
43348
43715
  composition: {
43349
43716
  component: unresolvedComposition.component,
@@ -43360,7 +43727,8 @@ var WebRenderModal = ({
43360
43727
  inputProps,
43361
43728
  delayRenderTimeoutInMilliseconds: delayRenderTimeout,
43362
43729
  mediaCacheSizeInBytes,
43363
- logLevel
43730
+ logLevel,
43731
+ licenseKey: licenseKey ?? undefined
43364
43732
  });
43365
43733
  const url = URL.createObjectURL(blob);
43366
43734
  const a = document.createElement("a");
@@ -43384,9 +43752,10 @@ var WebRenderModal = ({
43384
43752
  outName,
43385
43753
  resolvedComposition.defaultProps,
43386
43754
  unresolvedComposition.calculateMetadata,
43387
- resolvedComposition.id
43755
+ resolvedComposition.id,
43756
+ licenseKey
43388
43757
  ]);
43389
- const onRenderVideo = useCallback130(async () => {
43758
+ const onRenderVideo = useCallback131(async () => {
43390
43759
  setRenderProgress({ renderedFrames: 0, encodedFrames: 0 });
43391
43760
  const { getBlob } = await renderMediaOnWeb({
43392
43761
  composition: {
@@ -43403,7 +43772,7 @@ var WebRenderModal = ({
43403
43772
  delayRenderTimeoutInMilliseconds: delayRenderTimeout,
43404
43773
  mediaCacheSizeInBytes,
43405
43774
  logLevel,
43406
- codec,
43775
+ videoCodec: codec,
43407
43776
  container: container61,
43408
43777
  videoBitrate,
43409
43778
  hardwareAcceleration,
@@ -43414,7 +43783,8 @@ var WebRenderModal = ({
43414
43783
  },
43415
43784
  transparent,
43416
43785
  muted,
43417
- outputTarget: "web-fs"
43786
+ outputTarget: "web-fs",
43787
+ licenseKey: licenseKey ?? undefined
43418
43788
  });
43419
43789
  setRenderProgress(null);
43420
43790
  const blob = await getBlob();
@@ -43446,39 +43816,40 @@ var WebRenderModal = ({
43446
43816
  muted,
43447
43817
  resolvedComposition.defaultProps,
43448
43818
  resolvedComposition.id,
43449
- unresolvedComposition.calculateMetadata
43819
+ unresolvedComposition.calculateMetadata,
43820
+ licenseKey
43450
43821
  ]);
43451
- const onRender = useCallback130(async () => {
43822
+ const onRender = useCallback131(async () => {
43452
43823
  if (renderMode === "still") {
43453
43824
  await onRenderStill();
43454
43825
  } else {
43455
43826
  await onRenderVideo();
43456
43827
  }
43457
43828
  }, [renderMode, onRenderStill, onRenderVideo]);
43458
- return /* @__PURE__ */ jsxs138("div", {
43829
+ return /* @__PURE__ */ jsxs140("div", {
43459
43830
  style: outerModalStyle,
43460
43831
  children: [
43461
- /* @__PURE__ */ jsx261(ModalHeader, {
43832
+ /* @__PURE__ */ jsx264(ModalHeader, {
43462
43833
  title: `Render ${resolvedComposition.id}`
43463
43834
  }),
43464
- /* @__PURE__ */ jsxs138("div", {
43835
+ /* @__PURE__ */ jsxs140("div", {
43465
43836
  style: container59,
43466
43837
  children: [
43467
- /* @__PURE__ */ jsx261(SegmentedControl, {
43838
+ /* @__PURE__ */ jsx264(SegmentedControl, {
43468
43839
  items: renderTabOptions,
43469
43840
  needsWrapping: false
43470
43841
  }),
43471
- /* @__PURE__ */ jsx261("div", {
43842
+ /* @__PURE__ */ jsx264("div", {
43472
43843
  style: flexer
43473
43844
  }),
43474
- /* @__PURE__ */ jsxs138(Button, {
43845
+ /* @__PURE__ */ jsxs140(Button, {
43475
43846
  autoFocus: true,
43476
43847
  onClick: onRender,
43477
43848
  style: buttonStyle7,
43478
43849
  disabled: !outnameValidation.valid,
43479
43850
  children: [
43480
43851
  renderProgress ? `Rendering... ${renderProgress.renderedFrames}/${finalEndFrame}` : `Render ${renderMode}`,
43481
- /* @__PURE__ */ jsx261(ShortcutHint, {
43852
+ /* @__PURE__ */ jsx264(ShortcutHint, {
43482
43853
  keyToPress: "↵",
43483
43854
  cmdOrCtrl: true
43484
43855
  })
@@ -43486,88 +43857,106 @@ var WebRenderModal = ({
43486
43857
  })
43487
43858
  ]
43488
43859
  }),
43489
- /* @__PURE__ */ jsxs138("div", {
43860
+ /* @__PURE__ */ jsx264("div", {
43861
+ style: container59,
43862
+ children: /* @__PURE__ */ jsx264(WebRendererExperimentalBadge, {})
43863
+ }),
43864
+ /* @__PURE__ */ jsxs140("div", {
43490
43865
  style: horizontalLayout,
43491
43866
  children: [
43492
- /* @__PURE__ */ jsxs138("div", {
43867
+ /* @__PURE__ */ jsxs140("div", {
43493
43868
  style: leftSidebar,
43494
43869
  children: [
43495
- /* @__PURE__ */ jsxs138(VerticalTab, {
43870
+ /* @__PURE__ */ jsxs140(VerticalTab, {
43496
43871
  style: horizontalTab,
43497
43872
  selected: tab === "general",
43498
43873
  onClick: () => setTab("general"),
43499
43874
  children: [
43500
- /* @__PURE__ */ jsx261("div", {
43875
+ /* @__PURE__ */ jsx264("div", {
43501
43876
  style: iconContainer,
43502
- children: /* @__PURE__ */ jsx261(FileIcon, {
43877
+ children: /* @__PURE__ */ jsx264(FileIcon, {
43503
43878
  style: icon6
43504
43879
  })
43505
43880
  }),
43506
43881
  "General"
43507
43882
  ]
43508
43883
  }),
43509
- /* @__PURE__ */ jsxs138(VerticalTab, {
43884
+ /* @__PURE__ */ jsxs140(VerticalTab, {
43510
43885
  style: horizontalTab,
43511
43886
  selected: tab === "data",
43512
43887
  onClick: () => setTab("data"),
43513
43888
  children: [
43514
- /* @__PURE__ */ jsx261("div", {
43889
+ /* @__PURE__ */ jsx264("div", {
43515
43890
  style: iconContainer,
43516
- children: /* @__PURE__ */ jsx261(DataIcon, {
43891
+ children: /* @__PURE__ */ jsx264(DataIcon, {
43517
43892
  style: icon6
43518
43893
  })
43519
43894
  }),
43520
43895
  "Input Props"
43521
43896
  ]
43522
43897
  }),
43523
- renderMode === "video" ? /* @__PURE__ */ jsxs138(VerticalTab, {
43898
+ renderMode === "video" ? /* @__PURE__ */ jsxs140(VerticalTab, {
43524
43899
  style: horizontalTab,
43525
43900
  selected: tab === "picture",
43526
43901
  onClick: () => setTab("picture"),
43527
43902
  children: [
43528
- /* @__PURE__ */ jsx261("div", {
43903
+ /* @__PURE__ */ jsx264("div", {
43529
43904
  style: iconContainer,
43530
- children: /* @__PURE__ */ jsx261(PicIcon, {
43905
+ children: /* @__PURE__ */ jsx264(PicIcon, {
43531
43906
  style: icon6
43532
43907
  })
43533
43908
  }),
43534
43909
  "Picture"
43535
43910
  ]
43536
43911
  }) : null,
43537
- renderMode === "video" ? /* @__PURE__ */ jsxs138(VerticalTab, {
43912
+ renderMode === "video" ? /* @__PURE__ */ jsxs140(VerticalTab, {
43538
43913
  style: horizontalTab,
43539
43914
  selected: tab === "audio",
43540
43915
  onClick: () => setTab("audio"),
43541
43916
  children: [
43542
- /* @__PURE__ */ jsx261("div", {
43917
+ /* @__PURE__ */ jsx264("div", {
43543
43918
  style: iconContainer,
43544
- children: /* @__PURE__ */ jsx261(AudioIcon, {
43919
+ children: /* @__PURE__ */ jsx264(AudioIcon, {
43545
43920
  style: icon6
43546
43921
  })
43547
43922
  }),
43548
43923
  "Audio"
43549
43924
  ]
43550
43925
  }) : null,
43551
- /* @__PURE__ */ jsxs138(VerticalTab, {
43926
+ /* @__PURE__ */ jsxs140(VerticalTab, {
43552
43927
  style: horizontalTab,
43553
43928
  selected: tab === "advanced",
43554
43929
  onClick: () => setTab("advanced"),
43555
43930
  children: [
43556
- /* @__PURE__ */ jsx261("div", {
43931
+ /* @__PURE__ */ jsx264("div", {
43557
43932
  style: iconContainer,
43558
- children: /* @__PURE__ */ jsx261(FileIcon, {
43933
+ children: /* @__PURE__ */ jsx264(GearIcon, {
43559
43934
  style: icon6
43560
43935
  })
43561
43936
  }),
43562
- "Advanced"
43937
+ "Other"
43938
+ ]
43939
+ }),
43940
+ /* @__PURE__ */ jsxs140(VerticalTab, {
43941
+ style: horizontalTab,
43942
+ selected: tab === "license",
43943
+ onClick: () => setTab("license"),
43944
+ children: [
43945
+ /* @__PURE__ */ jsx264("div", {
43946
+ style: iconContainer,
43947
+ children: /* @__PURE__ */ jsx264(CertificateIcon, {
43948
+ style: icon6
43949
+ })
43950
+ }),
43951
+ "License"
43563
43952
  ]
43564
43953
  })
43565
43954
  ]
43566
43955
  }),
43567
- /* @__PURE__ */ jsx261("div", {
43956
+ /* @__PURE__ */ jsx264("div", {
43568
43957
  style: optionsPanel,
43569
43958
  className: VERTICAL_SCROLLBAR_CLASSNAME,
43570
- children: tab === "general" ? /* @__PURE__ */ jsx261(WebRenderModalBasic, {
43959
+ children: tab === "general" ? /* @__PURE__ */ jsx264(WebRenderModalBasic, {
43571
43960
  renderMode,
43572
43961
  resolvedComposition,
43573
43962
  imageFormat,
@@ -43588,7 +43977,7 @@ var WebRenderModal = ({
43588
43977
  validationMessage: outnameValidation.valid ? null : outnameValidation.error.message,
43589
43978
  logLevel,
43590
43979
  setLogLevel
43591
- }) : tab === "data" ? /* @__PURE__ */ jsx261(DataEditor, {
43980
+ }) : tab === "data" ? /* @__PURE__ */ jsx264(DataEditor, {
43592
43981
  defaultProps: inputProps,
43593
43982
  setDefaultProps: setInputProps,
43594
43983
  unresolvedComposition,
@@ -43597,7 +43986,7 @@ var WebRenderModal = ({
43597
43986
  saving,
43598
43987
  setSaving,
43599
43988
  readOnlyStudio: false
43600
- }) : tab === "picture" ? /* @__PURE__ */ jsx261(WebRenderModalPicture, {
43989
+ }) : tab === "picture" ? /* @__PURE__ */ jsx264(WebRenderModalPicture, {
43601
43990
  renderMode,
43602
43991
  videoBitrate,
43603
43992
  setVideoBitrate,
@@ -43605,10 +43994,10 @@ var WebRenderModal = ({
43605
43994
  setKeyframeIntervalInSeconds,
43606
43995
  transparent,
43607
43996
  setTransparent
43608
- }) : tab === "audio" ? /* @__PURE__ */ jsx261(WebRenderModalAudio, {
43997
+ }) : tab === "audio" ? /* @__PURE__ */ jsx264(WebRenderModalAudio, {
43609
43998
  muted,
43610
43999
  setMuted
43611
- }) : /* @__PURE__ */ jsx261(WebRenderModalAdvanced, {
44000
+ }) : tab === "advanced" ? /* @__PURE__ */ jsx264(WebRenderModalAdvanced, {
43612
44001
  renderMode,
43613
44002
  delayRenderTimeout,
43614
44003
  setDelayRenderTimeout,
@@ -43616,6 +44005,10 @@ var WebRenderModal = ({
43616
44005
  setMediaCacheSizeInBytes,
43617
44006
  hardwareAcceleration,
43618
44007
  setHardwareAcceleration
44008
+ }) : /* @__PURE__ */ jsx264(WebRenderModalLicense, {
44009
+ licenseKey,
44010
+ setLicenseKey,
44011
+ initialPublicLicenseKey: initialLicenseKey
43619
44012
  })
43620
44013
  })
43621
44014
  ]
@@ -43624,10 +44017,10 @@ var WebRenderModal = ({
43624
44017
  });
43625
44018
  };
43626
44019
  var WebRenderModalWithLoader = (props) => {
43627
- return /* @__PURE__ */ jsx261(DismissableModal, {
43628
- children: /* @__PURE__ */ jsx261(ResolveCompositionBeforeModal, {
44020
+ return /* @__PURE__ */ jsx264(DismissableModal, {
44021
+ children: /* @__PURE__ */ jsx264(ResolveCompositionBeforeModal, {
43629
44022
  compositionId: props.compositionId,
43630
- children: /* @__PURE__ */ jsx261(WebRenderModal, {
44023
+ children: /* @__PURE__ */ jsx264(WebRenderModal, {
43631
44024
  ...props
43632
44025
  })
43633
44026
  })
@@ -43635,11 +44028,11 @@ var WebRenderModalWithLoader = (props) => {
43635
44028
  };
43636
44029
 
43637
44030
  // src/components/UpdateModal/UpdateModal.tsx
43638
- import { useCallback as useCallback133, useMemo as useMemo134 } from "react";
44031
+ import { useCallback as useCallback134, useMemo as useMemo135 } from "react";
43639
44032
 
43640
44033
  // src/components/CopyButton.tsx
43641
- import { useCallback as useCallback131, useEffect as useEffect78, useState as useState83 } from "react";
43642
- import { jsx as jsx262, jsxs as jsxs139 } from "react/jsx-runtime";
44034
+ import { useCallback as useCallback132, useEffect as useEffect79, useState as useState83 } from "react";
44035
+ import { jsx as jsx265, jsxs as jsxs141 } from "react/jsx-runtime";
43643
44036
  var iconStyle8 = {
43644
44037
  width: 16,
43645
44038
  height: 16,
@@ -43649,7 +44042,7 @@ var buttonContainerStyle = {
43649
44042
  display: "flex",
43650
44043
  minWidth: "114px"
43651
44044
  };
43652
- var copyIcon = /* @__PURE__ */ jsx262("svg", {
44045
+ var copyIcon = /* @__PURE__ */ jsx265("svg", {
43653
44046
  "aria-hidden": "true",
43654
44047
  focusable: "false",
43655
44048
  "data-prefix": "far",
@@ -43659,7 +44052,7 @@ var copyIcon = /* @__PURE__ */ jsx262("svg", {
43659
44052
  xmlns: "http://www.w3.org/2000/svg",
43660
44053
  viewBox: "0 0 384 512",
43661
44054
  style: iconStyle8,
43662
- children: /* @__PURE__ */ jsx262("path", {
44055
+ children: /* @__PURE__ */ jsx265("path", {
43663
44056
  fill: "currentColor",
43664
44057
  d: "M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm144 418c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h42v36c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-36h42c3.3 0 6 2.7 6 6z"
43665
44058
  })
@@ -43669,30 +44062,30 @@ var labelStyle5 = {
43669
44062
  };
43670
44063
  var CopyButton = ({ textToCopy, label: label11, labelWhenCopied }) => {
43671
44064
  const [copied, setCopied] = useState83(false);
43672
- const onClick = useCallback131(() => {
44065
+ const onClick = useCallback132(() => {
43673
44066
  copyText(textToCopy).then(() => {
43674
44067
  setCopied(Date.now());
43675
44068
  }).catch((err) => {
43676
44069
  showNotification(`Could not copy: ${err.message}`, 2000);
43677
44070
  });
43678
44071
  }, [textToCopy]);
43679
- useEffect78(() => {
44072
+ useEffect79(() => {
43680
44073
  if (!copied) {
43681
44074
  return;
43682
44075
  }
43683
44076
  const to = setTimeout(() => setCopied(false), 2000);
43684
44077
  return () => clearTimeout(to);
43685
44078
  }, [copied]);
43686
- return /* @__PURE__ */ jsxs139(Button, {
44079
+ return /* @__PURE__ */ jsxs141(Button, {
43687
44080
  onClick,
43688
44081
  buttonContainerStyle,
43689
44082
  children: [
43690
44083
  copyIcon,
43691
- /* @__PURE__ */ jsx262(Spacing, {
44084
+ /* @__PURE__ */ jsx265(Spacing, {
43692
44085
  x: 1.5
43693
44086
  }),
43694
44087
  " ",
43695
- /* @__PURE__ */ jsx262("span", {
44088
+ /* @__PURE__ */ jsx265("span", {
43696
44089
  style: labelStyle5,
43697
44090
  children: copied ? labelWhenCopied : label11
43698
44091
  })
@@ -43701,8 +44094,8 @@ var CopyButton = ({ textToCopy, label: label11, labelWhenCopied }) => {
43701
44094
  };
43702
44095
 
43703
44096
  // src/components/UpdateModal/OpenIssueButton.tsx
43704
- import { useCallback as useCallback132, useMemo as useMemo133, useState as useState84 } from "react";
43705
- import { jsx as jsx263 } from "react/jsx-runtime";
44097
+ import { useCallback as useCallback133, useMemo as useMemo134, useState as useState84 } from "react";
44098
+ import { jsx as jsx266 } from "react/jsx-runtime";
43706
44099
  var svgStyle3 = {
43707
44100
  width: "11px",
43708
44101
  height: "11px"
@@ -43715,30 +44108,30 @@ var buttonStyle8 = {
43715
44108
  justifyContent: "center",
43716
44109
  alignItems: "center"
43717
44110
  };
43718
- var OpenIssueButton = ({ link: link3 }) => {
44111
+ var OpenIssueButton = ({ link: link4 }) => {
43719
44112
  const [hovered, setHovered] = useState84(false);
43720
44113
  const buttonTooltip = `Open GitHub issue in new Tab`;
43721
- const handleClick = useCallback132(() => {
43722
- window.open(link3, "_blank");
43723
- }, [link3]);
43724
- const svgFillColor = useMemo133(() => {
44114
+ const handleClick = useCallback133(() => {
44115
+ window.open(link4, "_blank");
44116
+ }, [link4]);
44117
+ const svgFillColor = useMemo134(() => {
43725
44118
  return hovered ? "white" : LIGHT_TEXT;
43726
44119
  }, [hovered]);
43727
- const openInEditorSvg = /* @__PURE__ */ jsx263("svg", {
44120
+ const openInEditorSvg = /* @__PURE__ */ jsx266("svg", {
43728
44121
  viewBox: "0 0 512 512",
43729
44122
  style: svgStyle3,
43730
- children: /* @__PURE__ */ jsx263("path", {
44123
+ children: /* @__PURE__ */ jsx266("path", {
43731
44124
  fill: svgFillColor,
43732
44125
  d: "M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z"
43733
44126
  })
43734
44127
  });
43735
- const onPointerEnter = useCallback132(() => {
44128
+ const onPointerEnter = useCallback133(() => {
43736
44129
  setHovered(true);
43737
44130
  }, []);
43738
- const onPointerLeave = useCallback132(() => {
44131
+ const onPointerLeave = useCallback133(() => {
43739
44132
  setHovered(false);
43740
44133
  }, []);
43741
- return /* @__PURE__ */ jsx263("button", {
44134
+ return /* @__PURE__ */ jsx266("button", {
43742
44135
  title: buttonTooltip,
43743
44136
  type: "button",
43744
44137
  onPointerEnter,
@@ -43750,52 +44143,52 @@ var OpenIssueButton = ({ link: link3 }) => {
43750
44143
  };
43751
44144
 
43752
44145
  // src/components/KnownBugs.tsx
43753
- import { jsx as jsx264, jsxs as jsxs140 } from "react/jsx-runtime";
44146
+ import { jsx as jsx267, jsxs as jsxs142 } from "react/jsx-runtime";
43754
44147
  var container61 = {
43755
44148
  display: "flex",
43756
44149
  flexDirection: "row",
43757
44150
  alignItems: "center"
43758
44151
  };
43759
- var text3 = {
44152
+ var text4 = {
43760
44153
  fontSize: 14,
43761
44154
  flex: 1
43762
44155
  };
43763
44156
  var KnownBugs = ({ bugs }) => {
43764
44157
  const bugElements = bugs.map((bug) => {
43765
- return /* @__PURE__ */ jsxs140("div", {
44158
+ return /* @__PURE__ */ jsxs142("div", {
43766
44159
  style: container61,
43767
44160
  children: [
43768
- /* @__PURE__ */ jsxs140("div", {
43769
- style: text3,
44161
+ /* @__PURE__ */ jsxs142("div", {
44162
+ style: text4,
43770
44163
  children: [
43771
44164
  "\uD83E\uDEB2 ",
43772
44165
  bug.title
43773
44166
  ]
43774
44167
  }),
43775
- /* @__PURE__ */ jsx264(OpenIssueButton, {
44168
+ /* @__PURE__ */ jsx267(OpenIssueButton, {
43776
44169
  link: bug.link
43777
44170
  })
43778
44171
  ]
43779
44172
  }, bug.description + bug.link);
43780
44173
  });
43781
- return /* @__PURE__ */ jsx264("div", {
44174
+ return /* @__PURE__ */ jsx267("div", {
43782
44175
  children: bugElements
43783
44176
  });
43784
44177
  };
43785
44178
 
43786
44179
  // src/components/UpdateModal/UpdateModal.tsx
43787
- import { jsx as jsx265, jsxs as jsxs141, Fragment as Fragment46 } from "react/jsx-runtime";
44180
+ import { jsx as jsx268, jsxs as jsxs143, Fragment as Fragment47 } from "react/jsx-runtime";
43788
44181
  var container62 = {
43789
44182
  padding: 20,
43790
44183
  paddingTop: 0
43791
44184
  };
43792
- var text4 = {
44185
+ var text5 = {
43793
44186
  fontSize: 14
43794
44187
  };
43795
44188
  var title7 = {
43796
44189
  paddingTop: 12,
43797
44190
  paddingBottom: 8,
43798
- ...text4
44191
+ ...text5
43799
44192
  };
43800
44193
  var code = {
43801
44194
  background: SELECTED_BACKGROUND,
@@ -43804,11 +44197,11 @@ var code = {
43804
44197
  marginTop: 10,
43805
44198
  marginBottom: 10
43806
44199
  };
43807
- var link3 = {
44200
+ var link4 = {
43808
44201
  fontWeight: "bold",
43809
44202
  color: BLUE,
43810
44203
  textDecoration: "none",
43811
- ...text4
44204
+ ...text5
43812
44205
  };
43813
44206
  var commands = {
43814
44207
  npm: "npx remotion upgrade",
@@ -43818,26 +44211,26 @@ var commands = {
43818
44211
  unknown: "npx remotion upgrade"
43819
44212
  };
43820
44213
  var UpdateModal = ({ info, knownBugs }) => {
43821
- const hasKnownBugs = useMemo134(() => {
44214
+ const hasKnownBugs = useMemo135(() => {
43822
44215
  return knownBugs && knownBugs?.length > 0;
43823
44216
  }, [knownBugs]);
43824
44217
  const command = commands[info.packageManager];
43825
- const onClick = useCallback133(() => {
44218
+ const onClick = useCallback134(() => {
43826
44219
  copyText(command).catch((err) => {
43827
44220
  showNotification(`Could not copy: ${err.message}`, 2000);
43828
44221
  });
43829
44222
  }, [command]);
43830
- return /* @__PURE__ */ jsxs141(DismissableModal, {
44223
+ return /* @__PURE__ */ jsxs143(DismissableModal, {
43831
44224
  children: [
43832
- /* @__PURE__ */ jsx265(ModalHeader, {
44225
+ /* @__PURE__ */ jsx268(ModalHeader, {
43833
44226
  title: "Update available"
43834
44227
  }),
43835
- /* @__PURE__ */ jsxs141("div", {
44228
+ /* @__PURE__ */ jsxs143("div", {
43836
44229
  style: container62,
43837
44230
  children: [
43838
- hasKnownBugs ? /* @__PURE__ */ jsxs141(Fragment46, {
44231
+ hasKnownBugs ? /* @__PURE__ */ jsxs143(Fragment47, {
43839
44232
  children: [
43840
- /* @__PURE__ */ jsxs141("div", {
44233
+ /* @__PURE__ */ jsxs143("div", {
43841
44234
  style: title7,
43842
44235
  children: [
43843
44236
  "The currently installed version ",
@@ -43845,43 +44238,43 @@ var UpdateModal = ({ info, knownBugs }) => {
43845
44238
  " has the following known bugs:"
43846
44239
  ]
43847
44240
  }),
43848
- /* @__PURE__ */ jsx265(KnownBugs, {
44241
+ /* @__PURE__ */ jsx268(KnownBugs, {
43849
44242
  bugs: knownBugs
43850
44243
  }),
43851
- /* @__PURE__ */ jsx265("div", {
44244
+ /* @__PURE__ */ jsx268("div", {
43852
44245
  style: { height: "20px" }
43853
44246
  }),
43854
- /* @__PURE__ */ jsx265("div", {
43855
- style: text4,
44247
+ /* @__PURE__ */ jsx268("div", {
44248
+ style: text5,
43856
44249
  children: "To upgrade, run the following command:"
43857
44250
  })
43858
44251
  ]
43859
- }) : /* @__PURE__ */ jsx265("div", {
44252
+ }) : /* @__PURE__ */ jsx268("div", {
43860
44253
  style: title7,
43861
44254
  children: "A new update for Remotion is available! Run the following command:"
43862
44255
  }),
43863
- /* @__PURE__ */ jsxs141(Row, {
44256
+ /* @__PURE__ */ jsxs143(Row, {
43864
44257
  align: "center",
43865
44258
  children: [
43866
- /* @__PURE__ */ jsx265(Flex, {
43867
- children: /* @__PURE__ */ jsx265("pre", {
44259
+ /* @__PURE__ */ jsx268(Flex, {
44260
+ children: /* @__PURE__ */ jsx268("pre", {
43868
44261
  onClick,
43869
44262
  style: code,
43870
44263
  children: command
43871
44264
  })
43872
44265
  }),
43873
- /* @__PURE__ */ jsx265(Spacing, {
44266
+ /* @__PURE__ */ jsx268(Spacing, {
43874
44267
  x: 1
43875
44268
  }),
43876
- /* @__PURE__ */ jsx265(CopyButton, {
44269
+ /* @__PURE__ */ jsx268(CopyButton, {
43877
44270
  textToCopy: command,
43878
44271
  label: "Copy",
43879
44272
  labelWhenCopied: "Copied!"
43880
44273
  })
43881
44274
  ]
43882
44275
  }),
43883
- /* @__PURE__ */ jsxs141("div", {
43884
- style: text4,
44276
+ /* @__PURE__ */ jsxs143("div", {
44277
+ style: text5,
43885
44278
  children: [
43886
44279
  "This will upgrade Remotion from ",
43887
44280
  info.currentVersion,
@@ -43891,13 +44284,13 @@ var UpdateModal = ({ info, knownBugs }) => {
43891
44284
  "."
43892
44285
  ]
43893
44286
  }),
43894
- /* @__PURE__ */ jsxs141("div", {
43895
- style: text4,
44287
+ /* @__PURE__ */ jsxs143("div", {
44288
+ style: text5,
43896
44289
  children: [
43897
44290
  "Read the",
43898
44291
  " ",
43899
- /* @__PURE__ */ jsx265("a", {
43900
- style: link3,
44292
+ /* @__PURE__ */ jsx268("a", {
44293
+ style: link4,
43901
44294
  target: "_blank",
43902
44295
  href: "https://github.com/remotion-dev/remotion/releases",
43903
44296
  children: "Release notes"
@@ -43915,33 +44308,34 @@ var UpdateModal = ({ info, knownBugs }) => {
43915
44308
  };
43916
44309
 
43917
44310
  // src/components/Modals.tsx
43918
- import { jsx as jsx266, jsxs as jsxs142, Fragment as Fragment47 } from "react/jsx-runtime";
44311
+ import { jsx as jsx269, jsxs as jsxs144, Fragment as Fragment48 } from "react/jsx-runtime";
43919
44312
  var Modals = ({ readOnlyStudio }) => {
43920
44313
  const { selectedModal: modalContextType } = useContext83(ModalsContext);
43921
44314
  const canRender = useContext83(StudioServerConnectionCtx).previewServerState.type === "connected";
43922
- return /* @__PURE__ */ jsxs142(Fragment47, {
44315
+ return /* @__PURE__ */ jsxs144(Fragment48, {
43923
44316
  children: [
43924
- modalContextType && modalContextType.type === "duplicate-comp" && /* @__PURE__ */ jsx266(DuplicateComposition, {
44317
+ modalContextType && modalContextType.type === "duplicate-comp" && /* @__PURE__ */ jsx269(DuplicateComposition, {
43925
44318
  compositionType: modalContextType.compositionType,
43926
44319
  compositionId: modalContextType.compositionId
43927
44320
  }),
43928
- modalContextType && modalContextType.type === "delete-comp" && /* @__PURE__ */ jsx266(DeleteComposition, {
44321
+ modalContextType && modalContextType.type === "delete-comp" && /* @__PURE__ */ jsx269(DeleteComposition, {
43929
44322
  compositionId: modalContextType.compositionId
43930
44323
  }),
43931
- modalContextType && modalContextType.type === "rename-comp" && /* @__PURE__ */ jsx266(RenameComposition, {
44324
+ modalContextType && modalContextType.type === "rename-comp" && /* @__PURE__ */ jsx269(RenameComposition, {
43932
44325
  compositionId: modalContextType.compositionId
43933
44326
  }),
43934
- modalContextType && modalContextType.type === "input-props-override" && /* @__PURE__ */ jsx266(OverrideInputPropsModal, {}),
43935
- modalContextType && modalContextType.type === "web-render" && /* @__PURE__ */ jsx266(WebRenderModalWithLoader, {
44327
+ modalContextType && modalContextType.type === "input-props-override" && /* @__PURE__ */ jsx269(OverrideInputPropsModal, {}),
44328
+ modalContextType && modalContextType.type === "web-render" && /* @__PURE__ */ jsx269(WebRenderModalWithLoader, {
43936
44329
  type: "web-render",
43937
44330
  initialFrame: modalContextType.initialFrame,
43938
44331
  compositionId: modalContextType.compositionId,
43939
44332
  defaultProps: modalContextType.defaultProps,
43940
44333
  inFrameMark: modalContextType.inFrameMark,
43941
44334
  outFrameMark: modalContextType.outFrameMark,
43942
- initialLogLevel: modalContextType.initialLogLevel
44335
+ initialLogLevel: modalContextType.initialLogLevel,
44336
+ initialLicenseKey: modalContextType.initialLicenseKey
43943
44337
  }),
43944
- modalContextType && canRender && modalContextType.type === "server-render" && /* @__PURE__ */ jsx266(RenderModalWithLoader, {
44338
+ modalContextType && canRender && modalContextType.type === "server-render" && /* @__PURE__ */ jsx269(RenderModalWithLoader, {
43945
44339
  initialFrame: modalContextType.initialFrame,
43946
44340
  initialDarkMode: modalContextType.initialDarkMode,
43947
44341
  compositionId: modalContextType.compositionId,
@@ -43990,28 +44384,28 @@ var Modals = ({ readOnlyStudio }) => {
43990
44384
  initialChromeMode: modalContextType.initialChromeMode,
43991
44385
  renderDefaults: modalContextType.renderDefaults
43992
44386
  }),
43993
- modalContextType && canRender && modalContextType.type === "render-progress" && /* @__PURE__ */ jsx266(RenderStatusModal, {
44387
+ modalContextType && canRender && modalContextType.type === "render-progress" && /* @__PURE__ */ jsx269(RenderStatusModal, {
43994
44388
  jobId: modalContextType.jobId
43995
44389
  }),
43996
- modalContextType && modalContextType.type === "update" && /* @__PURE__ */ jsx266(UpdateModal, {
44390
+ modalContextType && modalContextType.type === "update" && /* @__PURE__ */ jsx269(UpdateModal, {
43997
44391
  info: modalContextType.info,
43998
44392
  knownBugs: modalContextType.knownBugs
43999
44393
  }),
44000
- modalContextType && modalContextType.type === "install-packages" && /* @__PURE__ */ jsx266(InstallPackageModal, {
44394
+ modalContextType && modalContextType.type === "install-packages" && /* @__PURE__ */ jsx269(InstallPackageModal, {
44001
44395
  packageManager: modalContextType.packageManager
44002
44396
  }),
44003
- modalContextType && modalContextType.type === "quick-switcher" && /* @__PURE__ */ jsx266(QuickSwitcher_default, {
44397
+ modalContextType && modalContextType.type === "quick-switcher" && /* @__PURE__ */ jsx269(QuickSwitcher_default, {
44004
44398
  readOnlyStudio,
44005
44399
  invocationTimestamp: modalContextType.invocationTimestamp,
44006
44400
  initialMode: modalContextType.mode
44007
44401
  }),
44008
- /* @__PURE__ */ jsx266(AskAiModal, {})
44402
+ /* @__PURE__ */ jsx269(AskAiModal, {})
44009
44403
  ]
44010
44404
  });
44011
44405
  };
44012
44406
 
44013
44407
  // src/components/Editor.tsx
44014
- import { jsx as jsx267, jsxs as jsxs143 } from "react/jsx-runtime";
44408
+ import { jsx as jsx270, jsxs as jsxs145 } from "react/jsx-runtime";
44015
44409
  var background2 = {
44016
44410
  backgroundColor: BACKGROUND,
44017
44411
  display: "flex",
@@ -44027,7 +44421,7 @@ var Editor = ({ Root, readOnlyStudio }) => {
44027
44421
  triggerOnWindowResize: false,
44028
44422
  shouldApplyCssTransforms: true
44029
44423
  });
44030
- useEffect79(() => {
44424
+ useEffect80(() => {
44031
44425
  if (readOnlyStudio) {
44032
44426
  return;
44033
44427
  }
@@ -44041,11 +44435,11 @@ var Editor = ({ Root, readOnlyStudio }) => {
44041
44435
  window.removeEventListener("beforeunload", listenToChanges);
44042
44436
  };
44043
44437
  }, [readOnlyStudio]);
44044
- const [canvasMounted, setCanvasMounted] = React176.useState(false);
44045
- const onMounted = useCallback134(() => {
44438
+ const [canvasMounted, setCanvasMounted] = React177.useState(false);
44439
+ const onMounted = useCallback135(() => {
44046
44440
  setCanvasMounted(true);
44047
44441
  }, []);
44048
- const value = useMemo135(() => {
44442
+ const value = useMemo136(() => {
44049
44443
  if (!size4) {
44050
44444
  return null;
44051
44445
  }
@@ -44054,41 +44448,41 @@ var Editor = ({ Root, readOnlyStudio }) => {
44054
44448
  canvasSize: size4
44055
44449
  };
44056
44450
  }, [size4]);
44057
- const MemoRoot = useMemo135(() => {
44058
- return React176.memo(Root);
44451
+ const MemoRoot = useMemo136(() => {
44452
+ return React177.memo(Root);
44059
44453
  }, [Root]);
44060
- return /* @__PURE__ */ jsx267(HigherZIndex, {
44454
+ return /* @__PURE__ */ jsx270(HigherZIndex, {
44061
44455
  onEscape: noop,
44062
44456
  onOutsideClick: noop,
44063
- children: /* @__PURE__ */ jsxs143(TimelineZoomContext, {
44457
+ children: /* @__PURE__ */ jsxs145(TimelineZoomContext, {
44064
44458
  children: [
44065
- /* @__PURE__ */ jsx267(Internals61.CurrentScaleContext.Provider, {
44459
+ /* @__PURE__ */ jsx270(Internals61.CurrentScaleContext.Provider, {
44066
44460
  value,
44067
- children: /* @__PURE__ */ jsxs143("div", {
44461
+ children: /* @__PURE__ */ jsxs145("div", {
44068
44462
  style: background2,
44069
44463
  children: [
44070
- canvasMounted ? /* @__PURE__ */ jsx267(MemoRoot, {}) : null,
44071
- /* @__PURE__ */ jsxs143(Internals61.CanUseRemotionHooksProvider, {
44464
+ canvasMounted ? /* @__PURE__ */ jsx270(MemoRoot, {}) : null,
44465
+ /* @__PURE__ */ jsxs145(Internals61.CanUseRemotionHooksProvider, {
44072
44466
  children: [
44073
- /* @__PURE__ */ jsx267(EditorContent, {
44467
+ /* @__PURE__ */ jsx270(EditorContent, {
44074
44468
  readOnlyStudio,
44075
- children: /* @__PURE__ */ jsx267(TopPanel, {
44469
+ children: /* @__PURE__ */ jsx270(TopPanel, {
44076
44470
  drawRef,
44077
44471
  bufferStateDelayInMilliseconds: BUFFER_STATE_DELAY_IN_MILLISECONDS,
44078
44472
  onMounted,
44079
44473
  readOnlyStudio
44080
44474
  })
44081
44475
  }),
44082
- /* @__PURE__ */ jsx267(GlobalKeybindings, {})
44476
+ /* @__PURE__ */ jsx270(GlobalKeybindings, {})
44083
44477
  ]
44084
44478
  })
44085
44479
  ]
44086
44480
  })
44087
44481
  }),
44088
- /* @__PURE__ */ jsx267(Modals, {
44482
+ /* @__PURE__ */ jsx270(Modals, {
44089
44483
  readOnlyStudio
44090
44484
  }),
44091
- /* @__PURE__ */ jsx267(NotificationCenter, {})
44485
+ /* @__PURE__ */ jsx270(NotificationCenter, {})
44092
44486
  ]
44093
44487
  })
44094
44488
  });
@@ -44098,9 +44492,9 @@ var Editor = ({ Root, readOnlyStudio }) => {
44098
44492
  import { PlayerInternals as PlayerInternals20 } from "@remotion/player";
44099
44493
 
44100
44494
  // src/state/preview-size.tsx
44101
- import { useCallback as useCallback135, useContext as useContext84, useMemo as useMemo136, useState as useState85 } from "react";
44495
+ import { useCallback as useCallback136, useContext as useContext84, useMemo as useMemo137, useState as useState85 } from "react";
44102
44496
  import { Internals as Internals62 } from "remotion";
44103
- import { jsx as jsx268 } from "react/jsx-runtime";
44497
+ import { jsx as jsx271 } from "react/jsx-runtime";
44104
44498
  var key5 = "remotion.previewSize";
44105
44499
  var persistPreviewSizeOption = (option) => {
44106
44500
  localStorage.setItem(key5, JSON.stringify(option));
@@ -44127,14 +44521,14 @@ var PreviewSizeProvider = ({ children }) => {
44127
44521
  };
44128
44522
  });
44129
44523
  const { editorZoomGestures } = useContext84(EditorZoomGesturesContext);
44130
- const setSize = useCallback135((newValue) => {
44524
+ const setSize = useCallback136((newValue) => {
44131
44525
  setSizeState((prevState) => {
44132
44526
  const newVal = newValue(prevState);
44133
44527
  persistPreviewSizeOption(newVal);
44134
44528
  return newVal;
44135
44529
  });
44136
44530
  }, []);
44137
- const previewSizeCtx = useMemo136(() => {
44531
+ const previewSizeCtx = useMemo137(() => {
44138
44532
  return {
44139
44533
  size: editorZoomGestures ? size4 : {
44140
44534
  size: size4.size,
@@ -44148,58 +44542,58 @@ var PreviewSizeProvider = ({ children }) => {
44148
44542
  setTranslation
44149
44543
  };
44150
44544
  }, [editorZoomGestures, size4, setSize, translation]);
44151
- return /* @__PURE__ */ jsx268(Internals62.PreviewSizeContext.Provider, {
44545
+ return /* @__PURE__ */ jsx271(Internals62.PreviewSizeContext.Provider, {
44152
44546
  value: previewSizeCtx,
44153
44547
  children
44154
44548
  });
44155
44549
  };
44156
44550
 
44157
44551
  // src/components/CheckerboardProvider.tsx
44158
- import { useCallback as useCallback136, useMemo as useMemo137, useState as useState86 } from "react";
44159
- import { jsx as jsx269 } from "react/jsx-runtime";
44552
+ import { useCallback as useCallback137, useMemo as useMemo138, useState as useState86 } from "react";
44553
+ import { jsx as jsx272 } from "react/jsx-runtime";
44160
44554
  var CheckerboardProvider = ({ children }) => {
44161
44555
  const [checkerboard, setCheckerboardState] = useState86(() => loadCheckerboardOption());
44162
- const setCheckerboard = useCallback136((newValue) => {
44556
+ const setCheckerboard = useCallback137((newValue) => {
44163
44557
  setCheckerboardState((prevState) => {
44164
44558
  const newVal = newValue(prevState);
44165
44559
  persistCheckerboardOption(newVal);
44166
44560
  return newVal;
44167
44561
  });
44168
44562
  }, []);
44169
- const checkerboardCtx = useMemo137(() => {
44563
+ const checkerboardCtx = useMemo138(() => {
44170
44564
  return {
44171
44565
  checkerboard,
44172
44566
  setCheckerboard
44173
44567
  };
44174
44568
  }, [checkerboard, setCheckerboard]);
44175
- return /* @__PURE__ */ jsx269(CheckerboardContext.Provider, {
44569
+ return /* @__PURE__ */ jsx272(CheckerboardContext.Provider, {
44176
44570
  value: checkerboardCtx,
44177
44571
  children
44178
44572
  });
44179
44573
  };
44180
44574
 
44181
44575
  // src/components/MediaVolumeProvider.tsx
44182
- import { useMemo as useMemo138, useState as useState87 } from "react";
44576
+ import { useMemo as useMemo139, useState as useState87 } from "react";
44183
44577
  import { Internals as Internals63 } from "remotion";
44184
- import { jsx as jsx270 } from "react/jsx-runtime";
44578
+ import { jsx as jsx273 } from "react/jsx-runtime";
44185
44579
  var MediaVolumeProvider = ({ children }) => {
44186
44580
  const [mediaMuted, setMediaMuted] = useState87(() => loadMuteOption());
44187
44581
  const [mediaVolume, setMediaVolume] = useState87(1);
44188
- const mediaVolumeContextValue = useMemo138(() => {
44582
+ const mediaVolumeContextValue = useMemo139(() => {
44189
44583
  return {
44190
44584
  mediaMuted,
44191
44585
  mediaVolume
44192
44586
  };
44193
44587
  }, [mediaMuted, mediaVolume]);
44194
- const setMediaVolumeContextValue = useMemo138(() => {
44588
+ const setMediaVolumeContextValue = useMemo139(() => {
44195
44589
  return {
44196
44590
  setMediaMuted,
44197
44591
  setMediaVolume
44198
44592
  };
44199
44593
  }, []);
44200
- return /* @__PURE__ */ jsx270(Internals63.MediaVolumeContext.Provider, {
44594
+ return /* @__PURE__ */ jsx273(Internals63.MediaVolumeContext.Provider, {
44201
44595
  value: mediaVolumeContextValue,
44202
- children: /* @__PURE__ */ jsx270(Internals63.SetMediaVolumeContext.Provider, {
44596
+ children: /* @__PURE__ */ jsx273(Internals63.SetMediaVolumeContext.Provider, {
44203
44597
  value: setMediaVolumeContextValue,
44204
44598
  children
44205
44599
  })
@@ -44207,24 +44601,24 @@ var MediaVolumeProvider = ({ children }) => {
44207
44601
  };
44208
44602
 
44209
44603
  // src/components/ModalsProvider.tsx
44210
- import { useMemo as useMemo139, useState as useState88 } from "react";
44211
- import { jsx as jsx271 } from "react/jsx-runtime";
44604
+ import { useMemo as useMemo140, useState as useState88 } from "react";
44605
+ import { jsx as jsx274 } from "react/jsx-runtime";
44212
44606
  var ModalsProvider = ({ children }) => {
44213
44607
  const [modalContextType, setModalContextType] = useState88(null);
44214
- const modalsContext = useMemo139(() => {
44608
+ const modalsContext = useMemo140(() => {
44215
44609
  return {
44216
44610
  selectedModal: modalContextType,
44217
44611
  setSelectedModal: setModalContextType
44218
44612
  };
44219
44613
  }, [modalContextType]);
44220
- return /* @__PURE__ */ jsx271(ModalsContext.Provider, {
44614
+ return /* @__PURE__ */ jsx274(ModalsContext.Provider, {
44221
44615
  value: modalsContext,
44222
44616
  children
44223
44617
  });
44224
44618
  };
44225
44619
 
44226
44620
  // src/components/SetTimelineInOutProvider.tsx
44227
- import { useEffect as useEffect80, useMemo as useMemo140, useState as useState89 } from "react";
44621
+ import { useEffect as useEffect81, useMemo as useMemo141, useState as useState89 } from "react";
44228
44622
 
44229
44623
  // src/state/marks.ts
44230
44624
  var localStorageKey5 = () => `remotion.editor.marksv2`;
@@ -44240,20 +44634,20 @@ var loadMarks = () => {
44240
44634
  };
44241
44635
 
44242
44636
  // src/components/SetTimelineInOutProvider.tsx
44243
- import { jsx as jsx272 } from "react/jsx-runtime";
44637
+ import { jsx as jsx275 } from "react/jsx-runtime";
44244
44638
  var SetTimelineInOutProvider = ({ children }) => {
44245
44639
  const [inAndOutFrames, setInAndOutFrames] = useState89(() => loadMarks());
44246
- const setTimelineInOutContextValue = useMemo140(() => {
44640
+ const setTimelineInOutContextValue = useMemo141(() => {
44247
44641
  return {
44248
44642
  setInAndOutFrames
44249
44643
  };
44250
44644
  }, []);
44251
- useEffect80(() => {
44645
+ useEffect81(() => {
44252
44646
  persistMarks(inAndOutFrames);
44253
44647
  }, [inAndOutFrames]);
44254
- return /* @__PURE__ */ jsx272(TimelineInOutContext.Provider, {
44648
+ return /* @__PURE__ */ jsx275(TimelineInOutContext.Provider, {
44255
44649
  value: inAndOutFrames,
44256
- children: /* @__PURE__ */ jsx272(SetTimelineInOutContext.Provider, {
44650
+ children: /* @__PURE__ */ jsx275(SetTimelineInOutContext.Provider, {
44257
44651
  value: setTimelineInOutContextValue,
44258
44652
  children
44259
44653
  })
@@ -44261,23 +44655,23 @@ var SetTimelineInOutProvider = ({ children }) => {
44261
44655
  };
44262
44656
 
44263
44657
  // src/components/ShowGuidesProvider.tsx
44264
- import { useCallback as useCallback137, useMemo as useMemo141, useRef as useRef43, useState as useState90 } from "react";
44265
- import { jsx as jsx273 } from "react/jsx-runtime";
44658
+ import { useCallback as useCallback138, useMemo as useMemo142, useRef as useRef44, useState as useState90 } from "react";
44659
+ import { jsx as jsx276 } from "react/jsx-runtime";
44266
44660
  var ShowGuidesProvider = ({ children }) => {
44267
44661
  const [guidesList, setGuidesList] = useState90(() => loadGuidesList());
44268
44662
  const [selectedGuideId, setSelectedGuideId] = useState90(null);
44269
44663
  const [hoveredGuideId, setHoveredGuideId] = useState90(null);
44270
44664
  const [editorShowGuides, setEditorShowGuidesState] = useState90(() => loadEditorShowGuidesOption());
44271
- const shouldCreateGuideRef = useRef43(false);
44272
- const shouldDeleteGuideRef = useRef43(false);
44273
- const setEditorShowGuides = useCallback137((newValue) => {
44665
+ const shouldCreateGuideRef = useRef44(false);
44666
+ const shouldDeleteGuideRef = useRef44(false);
44667
+ const setEditorShowGuides = useCallback138((newValue) => {
44274
44668
  setEditorShowGuidesState((prevState) => {
44275
44669
  const newVal = newValue(prevState);
44276
44670
  persistEditorShowGuidesOption(newVal);
44277
44671
  return newVal;
44278
44672
  });
44279
44673
  }, []);
44280
- const editorShowGuidesCtx = useMemo141(() => {
44674
+ const editorShowGuidesCtx = useMemo142(() => {
44281
44675
  return {
44282
44676
  editorShowGuides,
44283
44677
  setEditorShowGuides,
@@ -44297,82 +44691,82 @@ var ShowGuidesProvider = ({ children }) => {
44297
44691
  selectedGuideId,
44298
44692
  hoveredGuideId
44299
44693
  ]);
44300
- return /* @__PURE__ */ jsx273(EditorShowGuidesContext.Provider, {
44694
+ return /* @__PURE__ */ jsx276(EditorShowGuidesContext.Provider, {
44301
44695
  value: editorShowGuidesCtx,
44302
44696
  children
44303
44697
  });
44304
44698
  };
44305
44699
 
44306
44700
  // src/components/ShowRulersProvider.tsx
44307
- import { useCallback as useCallback138, useMemo as useMemo142, useState as useState91 } from "react";
44308
- import { jsx as jsx274 } from "react/jsx-runtime";
44701
+ import { useCallback as useCallback139, useMemo as useMemo143, useState as useState91 } from "react";
44702
+ import { jsx as jsx277 } from "react/jsx-runtime";
44309
44703
  var ShowRulersProvider = ({ children }) => {
44310
44704
  const [editorShowRulers, setEditorShowRulersState] = useState91(() => loadEditorShowRulersOption());
44311
- const setEditorShowRulers = useCallback138((newValue) => {
44705
+ const setEditorShowRulers = useCallback139((newValue) => {
44312
44706
  setEditorShowRulersState((prevState) => {
44313
44707
  const newVal = newValue(prevState);
44314
44708
  persistEditorShowRulersOption(newVal);
44315
44709
  return newVal;
44316
44710
  });
44317
44711
  }, []);
44318
- const editorShowRulersCtx = useMemo142(() => {
44712
+ const editorShowRulersCtx = useMemo143(() => {
44319
44713
  return {
44320
44714
  editorShowRulers,
44321
44715
  setEditorShowRulers
44322
44716
  };
44323
44717
  }, [editorShowRulers, setEditorShowRulers]);
44324
- return /* @__PURE__ */ jsx274(EditorShowRulersContext.Provider, {
44718
+ return /* @__PURE__ */ jsx277(EditorShowRulersContext.Provider, {
44325
44719
  value: editorShowRulersCtx,
44326
44720
  children
44327
44721
  });
44328
44722
  };
44329
44723
 
44330
44724
  // src/components/ZoomGesturesProvider.tsx
44331
- import { useCallback as useCallback139, useMemo as useMemo143, useState as useState92 } from "react";
44332
- import { jsx as jsx275 } from "react/jsx-runtime";
44725
+ import { useCallback as useCallback140, useMemo as useMemo144, useState as useState92 } from "react";
44726
+ import { jsx as jsx278 } from "react/jsx-runtime";
44333
44727
  var ZoomGesturesProvider = ({ children }) => {
44334
44728
  const [editorZoomGestures, setEditorZoomGesturesState] = useState92(() => loadEditorZoomGesturesOption());
44335
- const setEditorZoomGestures = useCallback139((newValue) => {
44729
+ const setEditorZoomGestures = useCallback140((newValue) => {
44336
44730
  setEditorZoomGesturesState((prevState) => {
44337
44731
  const newVal = newValue(prevState);
44338
44732
  persistEditorZoomGesturesOption(newVal);
44339
44733
  return newVal;
44340
44734
  });
44341
44735
  }, []);
44342
- const editorZoomGesturesCtx = useMemo143(() => {
44736
+ const editorZoomGesturesCtx = useMemo144(() => {
44343
44737
  return {
44344
44738
  editorZoomGestures,
44345
44739
  setEditorZoomGestures
44346
44740
  };
44347
44741
  }, [editorZoomGestures, setEditorZoomGestures]);
44348
- return /* @__PURE__ */ jsx275(EditorZoomGesturesContext.Provider, {
44742
+ return /* @__PURE__ */ jsx278(EditorZoomGesturesContext.Provider, {
44349
44743
  value: editorZoomGesturesCtx,
44350
44744
  children
44351
44745
  });
44352
44746
  };
44353
44747
 
44354
44748
  // src/components/EditorContexts.tsx
44355
- import { jsx as jsx276 } from "react/jsx-runtime";
44749
+ import { jsx as jsx279 } from "react/jsx-runtime";
44356
44750
  var EditorContexts = ({ children, readOnlyStudio }) => {
44357
- return /* @__PURE__ */ jsx276(ZodProvider, {
44358
- children: /* @__PURE__ */ jsx276(VisualControlsProvider, {
44359
- children: /* @__PURE__ */ jsx276(PreviewServerConnection, {
44751
+ return /* @__PURE__ */ jsx279(ZodProvider, {
44752
+ children: /* @__PURE__ */ jsx279(VisualControlsProvider, {
44753
+ children: /* @__PURE__ */ jsx279(PreviewServerConnection, {
44360
44754
  readOnlyStudio,
44361
- children: /* @__PURE__ */ jsx276(RenderQueueContextProvider, {
44362
- children: /* @__PURE__ */ jsx276(KeybindingContextProvider, {
44363
- children: /* @__PURE__ */ jsx276(CheckerboardProvider, {
44364
- children: /* @__PURE__ */ jsx276(ZoomGesturesProvider, {
44365
- children: /* @__PURE__ */ jsx276(ShowRulersProvider, {
44366
- children: /* @__PURE__ */ jsx276(ShowGuidesProvider, {
44367
- children: /* @__PURE__ */ jsx276(PreviewSizeProvider, {
44368
- children: /* @__PURE__ */ jsx276(ModalsProvider, {
44369
- children: /* @__PURE__ */ jsx276(MediaVolumeProvider, {
44370
- children: /* @__PURE__ */ jsx276(PlayerInternals20.PlayerEmitterProvider, {
44755
+ children: /* @__PURE__ */ jsx279(RenderQueueContextProvider, {
44756
+ children: /* @__PURE__ */ jsx279(KeybindingContextProvider, {
44757
+ children: /* @__PURE__ */ jsx279(CheckerboardProvider, {
44758
+ children: /* @__PURE__ */ jsx279(ZoomGesturesProvider, {
44759
+ children: /* @__PURE__ */ jsx279(ShowRulersProvider, {
44760
+ children: /* @__PURE__ */ jsx279(ShowGuidesProvider, {
44761
+ children: /* @__PURE__ */ jsx279(PreviewSizeProvider, {
44762
+ children: /* @__PURE__ */ jsx279(ModalsProvider, {
44763
+ children: /* @__PURE__ */ jsx279(MediaVolumeProvider, {
44764
+ children: /* @__PURE__ */ jsx279(PlayerInternals20.PlayerEmitterProvider, {
44371
44765
  currentPlaybackRate: null,
44372
- children: /* @__PURE__ */ jsx276(SidebarContextProvider, {
44373
- children: /* @__PURE__ */ jsx276(FolderContextProvider, {
44374
- children: /* @__PURE__ */ jsx276(HighestZIndexProvider, {
44375
- children: /* @__PURE__ */ jsx276(SetTimelineInOutProvider, {
44766
+ children: /* @__PURE__ */ jsx279(SidebarContextProvider, {
44767
+ children: /* @__PURE__ */ jsx279(FolderContextProvider, {
44768
+ children: /* @__PURE__ */ jsx279(HighestZIndexProvider, {
44769
+ children: /* @__PURE__ */ jsx279(SetTimelineInOutProvider, {
44376
44770
  children
44377
44771
  })
44378
44772
  })
@@ -44395,7 +44789,7 @@ var EditorContexts = ({ children, readOnlyStudio }) => {
44395
44789
 
44396
44790
  // src/components/Notifications/ServerDisconnected.tsx
44397
44791
  import { useContext as useContext85 } from "react";
44398
- import { jsx as jsx277, jsxs as jsxs144 } from "react/jsx-runtime";
44792
+ import { jsx as jsx280, jsxs as jsxs146 } from "react/jsx-runtime";
44399
44793
  var container63 = {
44400
44794
  position: "fixed",
44401
44795
  justifyContent: "flex-end",
@@ -44440,26 +44834,26 @@ var ServerDisconnected = () => {
44440
44834
  }
44441
44835
  const base64Favicon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAARiSURBVHgB7d1NThRBFAfw/2tGgru5gXMD8QZ4AmVjAi6kN0TiAm8gnkBcGARNumcx4E48Ae0JaE9gewLHlQSZelaNgyHGL/RVd1X3+y10RQL58+rVx1QBKKWUUkoppZRSSimllFJKKVUjQs32stEiJcktZiwxzKL9Fvqzb6S0/44JVBKbtwa9aj29U6JjagtkJzsYzBEyBi9d5utsQIULCcxvelgo03R5jBarJZCXw/17E+bt82r4Hy4gtuEQekUbK8h7IHvDV5vMZht+VAlRfmYw3EhXKrSA10Ce2X7RIzpGDVzlgM1wPb2bI2JeA9nN99/b/waoV+XCmTAex1g13gLZyUZrdjjJ0CAbTB5bMN4C2ctHxwxaRABiCsZLIG6KmxC/R2BiCCaBBwn4NgJk10B2GOWj3Wz/IQLlpUL28oOjyy4AG1AZppuhVYt4hWRZ1o8gDGc6rL4YHjxCQMQDOcNCEI38bxnmLTc9d30PARAPZAITZP/4A1ctx3bjcw0NEw8koeQ64tRnu25qeggTb+q2/BmRcyv9K7yw3MTOsmiFuLMOtICblJzS5+Mm+opoIBOgFYHMuL5yVHcoooFQuwJxag9FNJCIG/rv1BqKaCDfzshbqbZQxAJxK3SJI9qATUPJstdef0axQGJbof+jwRc6eQ2PxAIx4DZXx3duSrybv3oCTyR7yACdYR762sIXDKQbFfId4ZGPJi8YCA3QLf05YvF+IhYIEV1Dx9hNu8XdbLQFQV6OcDuFaFNyKiwWiJ19DNBN/VN8XoMQrRABDFqCEJ32CiBisT08rRAZAwjRQAKjgcgQO+rVQARMb3gJ0UAkML+DEA1EwAQkdkNMcnOx1Zcxf8V9ol7y88GSm4tdDKRy1xsgSIes/0BM4ndN5HZ7OzZkMePperqSQ5jkkFWhO6r76WrYJ4b2N+YTumF60QeeSG6/d2DI4rHvW1eCPaT9Q9YZw/sVOMlZVoUWM8zpg/Su97dVJGdZFVrKhbFR05MdYoFcwWmF1rF9kbG8UeP7KaI3qBp628QTHrueUccwdZHw/ZDWNHY7tU1u1B2GIxqIYSO2Dd0Ud79wnq/eaOpBgR4EMVDW/oijINu87d7U6hYaJBrInA0k0iu4bvVtZ1KrBRrm4Vr06GNkF3cO7RCVhvK4pmiFOISkjOStk1lVrBQIiPh5SAyN3fWKWeMuEBjxCmEkh3bVvokAzd5idL2iQqDEA1nASXmK+XFIfeTCo5gFAudllvo8G20TUeNVElMQ58QrxLHD1jbB3GumSnhsz7qHE9BhTEGc87aOm16KJHi7rfqj8yfI53E1j/l9eK8L651stJUQeXx/iuzU1QztZLGIsRp+xvtOh3Qo3/qCedumEC6qZetpJztwz7O6UAa4FNsP7ELTfXbWbskUdjgq9M9VCJoFcwvTlfyPDd9t3XNJjA+2IZcGpmxi+7tpjW3OupurJziZhtKWPzWhlFJKKaWUUkoppZRSSiml/uwrgZ/Bfwo/wccAAAAASUVORK5CYII=";
44442
44836
  fav.setAttribute("href", base64Favicon);
44443
- return /* @__PURE__ */ jsx277("div", {
44837
+ return /* @__PURE__ */ jsx280("div", {
44444
44838
  style: container63,
44445
44839
  className: "css-reset",
44446
- children: /* @__PURE__ */ jsxs144("div", {
44840
+ children: /* @__PURE__ */ jsxs146("div", {
44447
44841
  style: message,
44448
44842
  children: [
44449
44843
  "The studio server has disconnected. ",
44450
- /* @__PURE__ */ jsx277("br", {}),
44451
- window.remotion_studioServerCommand ? /* @__PURE__ */ jsxs144("span", {
44844
+ /* @__PURE__ */ jsx280("br", {}),
44845
+ window.remotion_studioServerCommand ? /* @__PURE__ */ jsxs146("span", {
44452
44846
  children: [
44453
44847
  "Run",
44454
44848
  " ",
44455
- /* @__PURE__ */ jsx277("code", {
44849
+ /* @__PURE__ */ jsx280("code", {
44456
44850
  style: inlineCode,
44457
44851
  children: window.remotion_studioServerCommand
44458
44852
  }),
44459
44853
  " ",
44460
44854
  "to run it again."
44461
44855
  ]
44462
- }) : /* @__PURE__ */ jsx277("span", {
44856
+ }) : /* @__PURE__ */ jsx280("span", {
44463
44857
  children: "Fast refresh will not work."
44464
44858
  })
44465
44859
  ]
@@ -44556,7 +44950,6 @@ var makeDefaultGlobalCSS = () => {
44556
44950
  inset -1px -1px #555,
44557
44951
  inset 1px -1px #555,
44558
44952
  inset -1px 1px #555;
44559
- border-radius: 0 !important;
44560
44953
  }
44561
44954
 
44562
44955
  input[type='color'].__remotion_color_picker::-webkit-color-swatch-wrapper {
@@ -44625,7 +45018,7 @@ var injectCSS = () => {
44625
45018
  };
44626
45019
 
44627
45020
  // src/Studio.tsx
44628
- import { jsx as jsx278, jsxs as jsxs145 } from "react/jsx-runtime";
45021
+ import { jsx as jsx281, jsxs as jsxs147 } from "react/jsx-runtime";
44629
45022
  var getServerDisconnectedDomElement = () => {
44630
45023
  return document.getElementById("server-disconnected-overlay");
44631
45024
  };
@@ -44633,27 +45026,27 @@ var Studio = ({ rootComponent, readOnly }) => {
44633
45026
  useLayoutEffect2(() => {
44634
45027
  injectCSS();
44635
45028
  }, []);
44636
- return /* @__PURE__ */ jsx278(Internals65.CompositionManagerProvider, {
45029
+ return /* @__PURE__ */ jsx281(Internals65.CompositionManagerProvider, {
44637
45030
  onlyRenderComposition: null,
44638
45031
  currentCompositionMetadata: null,
44639
45032
  initialCompositions: [],
44640
45033
  initialCanvasContent: null,
44641
- children: /* @__PURE__ */ jsx278(Internals65.RemotionRootContexts, {
45034
+ children: /* @__PURE__ */ jsx281(Internals65.RemotionRootContexts, {
44642
45035
  frameState: null,
44643
45036
  audioEnabled: window.remotion_audioEnabled,
44644
45037
  videoEnabled: window.remotion_videoEnabled,
44645
45038
  logLevel: window.remotion_logLevel,
44646
45039
  numberOfAudioTags: window.remotion_numberOfAudioTags,
44647
45040
  audioLatencyHint: window.remotion_audioLatencyHint ?? "interactive",
44648
- children: /* @__PURE__ */ jsx278(Internals65.ResolveCompositionConfigInStudio, {
44649
- children: /* @__PURE__ */ jsxs145(EditorContexts, {
45041
+ children: /* @__PURE__ */ jsx281(Internals65.ResolveCompositionConfigInStudio, {
45042
+ children: /* @__PURE__ */ jsxs147(EditorContexts, {
44650
45043
  readOnlyStudio: readOnly,
44651
45044
  children: [
44652
- /* @__PURE__ */ jsx278(Editor, {
45045
+ /* @__PURE__ */ jsx281(Editor, {
44653
45046
  readOnlyStudio: readOnly,
44654
45047
  Root: rootComponent
44655
45048
  }),
44656
- readOnly ? null : createPortal(/* @__PURE__ */ jsx278(ServerDisconnected, {}), getServerDisconnectedDomElement())
45049
+ readOnly ? null : createPortal(/* @__PURE__ */ jsx281(ServerDisconnected, {}), getServerDisconnectedDomElement())
44657
45050
  ]
44658
45051
  })
44659
45052
  })
@@ -44662,9 +45055,9 @@ var Studio = ({ rootComponent, readOnly }) => {
44662
45055
  };
44663
45056
 
44664
45057
  // src/components/NoRegisterRoot.tsx
44665
- import { useEffect as useEffect81, useState as useState93 } from "react";
45058
+ import { useEffect as useEffect82, useState as useState93 } from "react";
44666
45059
  import { AbsoluteFill as AbsoluteFill6 } from "remotion";
44667
- import { jsx as jsx279, jsxs as jsxs146 } from "react/jsx-runtime";
45060
+ import { jsx as jsx282, jsxs as jsxs148 } from "react/jsx-runtime";
44668
45061
  var label11 = {
44669
45062
  fontSize: 13,
44670
45063
  color: "white",
@@ -44677,14 +45070,14 @@ var container64 = {
44677
45070
  textAlign: "center",
44678
45071
  lineHeight: 1.5
44679
45072
  };
44680
- var link4 = {
45073
+ var link5 = {
44681
45074
  color: "white",
44682
45075
  textDecoration: "none",
44683
45076
  borderBottom: "1px solid"
44684
45077
  };
44685
45078
  var NoRegisterRoot = () => {
44686
45079
  const [show, setShow] = useState93(() => false);
44687
- useEffect81(() => {
45080
+ useEffect82(() => {
44688
45081
  const timeout = setTimeout(() => {
44689
45082
  setShow(true);
44690
45083
  }, 2000);
@@ -44695,21 +45088,21 @@ var NoRegisterRoot = () => {
44695
45088
  if (!show) {
44696
45089
  return null;
44697
45090
  }
44698
- return /* @__PURE__ */ jsxs146(AbsoluteFill6, {
45091
+ return /* @__PURE__ */ jsxs148(AbsoluteFill6, {
44699
45092
  style: container64,
44700
45093
  children: [
44701
- /* @__PURE__ */ jsx279("div", {
45094
+ /* @__PURE__ */ jsx282("div", {
44702
45095
  style: label11,
44703
45096
  children: "Waiting for registerRoot() to get called."
44704
45097
  }),
44705
- /* @__PURE__ */ jsxs146("div", {
45098
+ /* @__PURE__ */ jsxs148("div", {
44706
45099
  style: label11,
44707
45100
  children: [
44708
45101
  "Learn more:",
44709
45102
  " ",
44710
- /* @__PURE__ */ jsx279("a", {
45103
+ /* @__PURE__ */ jsx282("a", {
44711
45104
  target: "_blank",
44712
- style: link4,
45105
+ style: link5,
44713
45106
  href: "https://www.remotion.dev/docs/register-root",
44714
45107
  children: "remotion.dev/docs/register-root"
44715
45108
  })
@@ -44721,12 +45114,12 @@ var NoRegisterRoot = () => {
44721
45114
 
44722
45115
  // src/error-overlay/remotion-overlay/index.tsx
44723
45116
  import ReactDOM9 from "react-dom/client";
44724
- import { jsx as jsx280 } from "react/jsx-runtime";
45117
+ import { jsx as jsx283 } from "react/jsx-runtime";
44725
45118
  var mountRemotionOverlay = () => {
44726
45119
  if (ReactDOM9.createRoot) {
44727
- ReactDOM9.createRoot(document.getElementById("remotion-error-overlay")).render(/* @__PURE__ */ jsx280(Overlay, {}));
45120
+ ReactDOM9.createRoot(document.getElementById("remotion-error-overlay")).render(/* @__PURE__ */ jsx283(Overlay, {}));
44728
45121
  } else {
44729
- ReactDOM9.render(/* @__PURE__ */ jsx280(Overlay, {}), document.getElementById("remotion-error-overlay"));
45122
+ ReactDOM9.render(/* @__PURE__ */ jsx283(Overlay, {}), document.getElementById("remotion-error-overlay"));
44730
45123
  }
44731
45124
  };
44732
45125
 
@@ -45031,7 +45424,7 @@ var enableHotMiddleware = () => {
45031
45424
  };
45032
45425
 
45033
45426
  // src/previewEntry.tsx
45034
- import { jsx as jsx281 } from "react/jsx-runtime";
45427
+ import { jsx as jsx284 } from "react/jsx-runtime";
45035
45428
  Internals66.CSSUtils.injectCSS(Internals66.CSSUtils.makeDefaultPreviewCSS(null, "#1f2428"));
45036
45429
  var root = null;
45037
45430
  var getRootForElement = () => {
@@ -45051,10 +45444,10 @@ var renderToDOM = (content7) => {
45051
45444
  }
45052
45445
  getRootForElement().render(content7);
45053
45446
  };
45054
- renderToDOM(/* @__PURE__ */ jsx281(NoRegisterRoot, {}));
45447
+ renderToDOM(/* @__PURE__ */ jsx284(NoRegisterRoot, {}));
45055
45448
  Internals66.waitForRoot((NewRoot) => {
45056
45449
  Internals66.enableSequenceStackTraces();
45057
- renderToDOM(/* @__PURE__ */ jsx281(Studio, {
45450
+ renderToDOM(/* @__PURE__ */ jsx284(Studio, {
45058
45451
  readOnly: false,
45059
45452
  rootComponent: NewRoot
45060
45453
  }));