@remotion/studio 4.0.397 → 4.0.399

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.
@@ -10,7 +10,7 @@ import { Internals as Internals65 } from "remotion";
10
10
 
11
11
  // src/components/Editor.tsx
12
12
  import { PlayerInternals as PlayerInternals19 } from "@remotion/player";
13
- import React175, { useCallback as useCallback133, useEffect as useEffect79, useMemo as useMemo135 } from "react";
13
+ import React176, { useCallback as useCallback134, useEffect as useEffect80, useMemo as useMemo136 } from "react";
14
14
  import { Internals as Internals61 } from "remotion";
15
15
 
16
16
  // src/helpers/colors.ts
@@ -7255,10 +7255,10 @@ var MenuBuildIndicator = () => {
7255
7255
  };
7256
7256
 
7257
7257
  // src/components/SidebarCollapserControls.tsx
7258
- import { useCallback as useCallback90, useContext as useContext57, useEffect as useEffect59 } from "react";
7258
+ import { useCallback as useCallback90, useContext as useContext57, useEffect as useEffect60 } from "react";
7259
7259
 
7260
7260
  // src/components/TopPanel.tsx
7261
- import { useCallback as useCallback89, useContext as useContext56, useEffect as useEffect58, useMemo as useMemo96 } from "react";
7261
+ import { useCallback as useCallback89, useContext as useContext56, useEffect as useEffect59, useMemo as useMemo96 } from "react";
7262
7262
 
7263
7263
  // src/helpers/use-breakpoint.ts
7264
7264
  import { useEffect as useEffect23, useState as useState29 } from "react";
@@ -10313,7 +10313,7 @@ import {
10313
10313
  createRef as createRef9,
10314
10314
  useCallback as useCallback80,
10315
10315
  useContext as useContext46,
10316
- useEffect as useEffect49,
10316
+ useEffect as useEffect50,
10317
10317
  useImperativeHandle as useImperativeHandle12,
10318
10318
  useMemo as useMemo90,
10319
10319
  useState as useState55
@@ -10893,7 +10893,7 @@ var GlobalPropsEditorUpdateButton = ({ compositionId, currentDefaultProps }) =>
10893
10893
  import React94, {
10894
10894
  useCallback as useCallback68,
10895
10895
  useContext as useContext36,
10896
- useEffect as useEffect44,
10896
+ useEffect as useEffect45,
10897
10897
  useMemo as useMemo80,
10898
10898
  useState as useState50
10899
10899
  } from "react";
@@ -11288,7 +11288,7 @@ var RenderModalJSONPropsEditor = ({
11288
11288
  };
11289
11289
 
11290
11290
  // src/components/RenderModal/SchemaEditor/SchemaEditor.tsx
11291
- import { useCallback as useCallback66, useEffect as useEffect43, useMemo as useMemo78, useState as useState49 } from "react";
11291
+ import { useCallback as useCallback66, useEffect as useEffect44, useMemo as useMemo78, useState as useState49 } from "react";
11292
11292
  import { Internals as Internals30 } from "remotion";
11293
11293
 
11294
11294
  // src/components/RenderModal/SchemaEditor/SchemaErrorMessages.tsx
@@ -12667,7 +12667,7 @@ var ZodArrayEditor = ({
12667
12667
  import { useCallback as useCallback53 } from "react";
12668
12668
 
12669
12669
  // src/components/Checkbox.tsx
12670
- import { useMemo as useMemo67 } from "react";
12670
+ import { useEffect as useEffect41, useMemo as useMemo67, useRef as useRef26 } from "react";
12671
12671
  import { jsx as jsx116, jsxs as jsxs54 } from "react/jsx-runtime";
12672
12672
  var size2 = 20;
12673
12673
  var background = {
@@ -12675,6 +12675,12 @@ var background = {
12675
12675
  width: size2,
12676
12676
  position: "relative"
12677
12677
  };
12678
+ var bullet = {
12679
+ width: 10,
12680
+ height: 10,
12681
+ backgroundColor: LIGHT_TEXT,
12682
+ borderRadius: "50%"
12683
+ };
12678
12684
  var box = {
12679
12685
  display: "flex",
12680
12686
  justifyContent: "center",
@@ -12687,7 +12693,8 @@ var box = {
12687
12693
  pointerEvents: "none",
12688
12694
  color: "white"
12689
12695
  };
12690
- var Checkbox = ({ checked, onChange, disabled, name }) => {
12696
+ var Checkbox = ({ checked, onChange, disabled, name, rounded }) => {
12697
+ const ref = useRef26(null);
12691
12698
  const input2 = useMemo67(() => {
12692
12699
  return {
12693
12700
  appearance: "none",
@@ -12701,10 +12708,16 @@ var Checkbox = ({ checked, onChange, disabled, name }) => {
12701
12708
  margin: 0
12702
12709
  };
12703
12710
  }, [disabled]);
12711
+ useEffect41(() => {
12712
+ if (ref.current) {
12713
+ ref.current.style.setProperty("border-radius", rounded ? "50%" : "0%", "important");
12714
+ }
12715
+ }, [rounded]);
12704
12716
  return /* @__PURE__ */ jsxs54("div", {
12705
12717
  style: background,
12706
12718
  children: [
12707
12719
  /* @__PURE__ */ jsx116("input", {
12720
+ ref,
12708
12721
  style: input2,
12709
12722
  type: "checkbox",
12710
12723
  checked,
@@ -12714,7 +12727,9 @@ var Checkbox = ({ checked, onChange, disabled, name }) => {
12714
12727
  }),
12715
12728
  /* @__PURE__ */ jsx116("div", {
12716
12729
  style: box,
12717
- children: checked ? /* @__PURE__ */ jsx116(Checkmark, {}) : null
12730
+ children: checked ? rounded ? /* @__PURE__ */ jsx116("div", {
12731
+ style: bullet
12732
+ }) : /* @__PURE__ */ jsx116(Checkmark, {}) : null
12718
12733
  })
12719
12734
  ]
12720
12735
  });
@@ -12793,7 +12808,7 @@ var colorWithNewOpacity = (color, opacity, zodTypes) => {
12793
12808
  };
12794
12809
 
12795
12810
  // src/components/NewComposition/InputDragger.tsx
12796
- import React79, { useCallback as useCallback54, useEffect as useEffect41, useMemo as useMemo68, useRef as useRef26, useState as useState44 } from "react";
12811
+ import React79, { useCallback as useCallback54, useEffect as useEffect42, useMemo as useMemo68, useRef as useRef27, useState as useState44 } from "react";
12797
12812
  import { interpolate as interpolate2 } from "remotion";
12798
12813
  import { jsx as jsx118 } from "react/jsx-runtime";
12799
12814
  var isInt = (num) => {
@@ -12812,7 +12827,7 @@ var InputDraggerForwardRefFn = ({
12812
12827
  ...props
12813
12828
  }, ref) => {
12814
12829
  const [inputFallback, setInputFallback] = useState44(false);
12815
- const fallbackRef = useRef26(null);
12830
+ const fallbackRef = useRef27(null);
12816
12831
  const style8 = useMemo68(() => {
12817
12832
  return {
12818
12833
  ...inputBaseStyle,
@@ -12896,7 +12911,7 @@ var InputDraggerForwardRefFn = ({
12896
12911
  once: true
12897
12912
  });
12898
12913
  }, [_step, _min, _max, value, onValueChange]);
12899
- useEffect41(() => {
12914
+ useEffect42(() => {
12900
12915
  if (inputFallback) {
12901
12916
  fallbackRef.current?.select();
12902
12917
  }
@@ -12947,10 +12962,10 @@ var InputDragger = React79.forwardRef(InputDraggerForwardRefFn);
12947
12962
  // src/components/NewComposition/RemInputTypeColor.tsx
12948
12963
  import {
12949
12964
  forwardRef as forwardRef4,
12950
- useEffect as useEffect42,
12965
+ useEffect as useEffect43,
12951
12966
  useImperativeHandle as useImperativeHandle11,
12952
12967
  useMemo as useMemo69,
12953
- useRef as useRef27,
12968
+ useRef as useRef28,
12954
12969
  useState as useState45
12955
12970
  } from "react";
12956
12971
  import { jsx as jsx119 } from "react/jsx-runtime";
@@ -12962,7 +12977,7 @@ var inputBaseStyle3 = {
12962
12977
  var RemInputTypeColorForwardRef = ({ status, ...props }, ref) => {
12963
12978
  const [isFocused, setIsFocused] = useState45(false);
12964
12979
  const [isHovered, setIsHovered] = useState45(false);
12965
- const inputRef = useRef27(null);
12980
+ const inputRef = useRef28(null);
12966
12981
  const { tabIndex } = useZIndex();
12967
12982
  const style8 = useMemo69(() => {
12968
12983
  return {
@@ -12975,7 +12990,7 @@ var RemInputTypeColorForwardRef = ({ status, ...props }, ref) => {
12975
12990
  useImperativeHandle11(ref, () => {
12976
12991
  return inputRef.current;
12977
12992
  }, []);
12978
- useEffect42(() => {
12993
+ useEffect43(() => {
12979
12994
  if (!inputRef.current) {
12980
12995
  return;
12981
12996
  }
@@ -14998,7 +15013,7 @@ var SchemaEditor = ({
14998
15013
  childResetRevision: revision
14999
15014
  };
15000
15015
  }, [revision]);
15001
- useEffect43(() => {
15016
+ useEffect44(() => {
15002
15017
  const bumpRevision = () => {
15003
15018
  setRevision((old) => old + 1);
15004
15019
  };
@@ -15014,7 +15029,7 @@ var SchemaEditor = ({
15014
15029
  const hasChanged = useMemo78(() => {
15015
15030
  return !deepEqual(savedDefaultProps, unsavedDefaultProps);
15016
15031
  }, [savedDefaultProps, unsavedDefaultProps]);
15017
- useEffect43(() => {
15032
+ useEffect44(() => {
15018
15033
  setUnsavedProps(hasChanged);
15019
15034
  }, [hasChanged]);
15020
15035
  const onQuickSave = useCallback66(() => {
@@ -15024,7 +15039,7 @@ var SchemaEditor = ({
15024
15039
  });
15025
15040
  }
15026
15041
  }, [hasChanged, onSave, showSaveButton, unsavedDefaultProps]);
15027
- useEffect43(() => {
15042
+ useEffect44(() => {
15028
15043
  const save = keybindings.registerKeybinding({
15029
15044
  event: "keydown",
15030
15045
  key: "s",
@@ -15365,11 +15380,11 @@ var DataEditor = ({
15365
15380
  }));
15366
15381
  }
15367
15382
  }, [readOnlyStudio, unresolvedComposition.id]);
15368
- useEffect44(() => {
15383
+ useEffect45(() => {
15369
15384
  checkIfCanSaveDefaultProps();
15370
15385
  }, [checkIfCanSaveDefaultProps]);
15371
15386
  const { previewServerState, subscribeToEvent } = useContext36(StudioServerConnectionCtx);
15372
- useEffect44(() => {
15387
+ useEffect45(() => {
15373
15388
  const unsub = subscribeToEvent("root-file-changed", checkIfCanSaveDefaultProps);
15374
15389
  return () => {
15375
15390
  unsub();
@@ -15559,14 +15574,14 @@ var DataEditor = ({
15559
15574
  };
15560
15575
 
15561
15576
  // src/components/RenderQueue/index.tsx
15562
- import React104, { useContext as useContext42, useEffect as useEffect46, useMemo as useMemo87 } from "react";
15577
+ import React104, { useContext as useContext42, useEffect as useEffect47, useMemo as useMemo87 } from "react";
15563
15578
  import { Internals as Internals33 } from "remotion";
15564
15579
 
15565
15580
  // src/components/RenderQueue/RenderQueueItem.tsx
15566
15581
  import {
15567
15582
  useCallback as useCallback77,
15568
15583
  useContext as useContext41,
15569
- useEffect as useEffect45,
15584
+ useEffect as useEffect46,
15570
15585
  useMemo as useMemo86,
15571
15586
  useState as useState51
15572
15587
  } from "react";
@@ -16203,7 +16218,7 @@ var RenderQueueItem = ({ job, selected }) => {
16203
16218
  });
16204
16219
  pushUrl(`/outputs/${job.outName}`);
16205
16220
  }, [job, scrollCurrentIntoView, selected, setCanvasContent]);
16206
- useEffect45(() => {
16221
+ useEffect46(() => {
16207
16222
  if (selected) {
16208
16223
  scrollCurrentIntoView();
16209
16224
  }
@@ -16295,7 +16310,7 @@ var RenderQueue = () => {
16295
16310
  const previousJobCount = React104.useRef(jobs.length);
16296
16311
  const jobCount = jobs.length;
16297
16312
  const divRef = React104.useRef(null);
16298
- useEffect46(() => {
16313
+ useEffect47(() => {
16299
16314
  if (!divRef.current) {
16300
16315
  return;
16301
16316
  }
@@ -16436,7 +16451,7 @@ var RendersTab = ({ selected, onClick }) => {
16436
16451
  import React107, { useContext as useContext45 } from "react";
16437
16452
 
16438
16453
  // src/components/VisualControls/VisualControlHandle.tsx
16439
- import { useCallback as useCallback79, useContext as useContext44, useEffect as useEffect48, useState as useState54 } from "react";
16454
+ import { useCallback as useCallback79, useContext as useContext44, useEffect as useEffect49, useState as useState54 } from "react";
16440
16455
  import { Internals as Internals35 } from "remotion";
16441
16456
  import { NoReactInternals as NoReactInternals12 } from "remotion/no-react";
16442
16457
 
@@ -16509,7 +16524,7 @@ var VisualControlHandleHeader = ({ originalFileName }) => {
16509
16524
  };
16510
16525
 
16511
16526
  // src/components/VisualControls/get-original-stack-trace.ts
16512
- import { useEffect as useEffect47, useState as useState53 } from "react";
16527
+ import { useEffect as useEffect48, useState as useState53 } from "react";
16513
16528
 
16514
16529
  // src/components/Timeline/TimelineStack/get-stack.ts
16515
16530
  import { SourceMapConsumer as SourceMapConsumer2 } from "source-map";
@@ -16599,7 +16614,7 @@ var getOriginalLocationFromStack = async (stack2, type) => {
16599
16614
  // src/components/VisualControls/get-original-stack-trace.ts
16600
16615
  var useOriginalFileName = (stack2) => {
16601
16616
  const [originalFileName, setOriginalFileName] = useState53({ type: "loading" });
16602
- useEffect47(() => {
16617
+ useEffect48(() => {
16603
16618
  if (!stack2) {
16604
16619
  return;
16605
16620
  }
@@ -16691,7 +16706,7 @@ var VisualControlHandle = ({ value, keyName }) => {
16691
16706
  keyName,
16692
16707
  zodTypes
16693
16708
  ]);
16694
- useEffect48(() => {
16709
+ useEffect49(() => {
16695
16710
  setSaving(false);
16696
16711
  }, [fastRefreshes]);
16697
16712
  return /* @__PURE__ */ jsxs75(Fragment21, {
@@ -16844,7 +16859,7 @@ var OptionsPanel = ({ readOnlyStudio }) => {
16844
16859
  resetUnsaved(e.detail.resetUnsaved);
16845
16860
  }
16846
16861
  }, [resetUnsaved]);
16847
- useEffect49(() => {
16862
+ useEffect50(() => {
16848
16863
  window.addEventListener(Internals36.PROPS_UPDATED_EXTERNALLY, reset);
16849
16864
  return () => {
16850
16865
  window.removeEventListener(Internals36.PROPS_UPDATED_EXTERNALLY, reset);
@@ -16897,7 +16912,7 @@ var OptionsPanel = ({ readOnlyStudio }) => {
16897
16912
  };
16898
16913
 
16899
16914
  // src/components/PreviewToolbar.tsx
16900
- import { useContext as useContext53, useEffect as useEffect56, useRef as useRef30, useState as useState59 } from "react";
16915
+ import { useContext as useContext53, useEffect as useEffect57, useRef as useRef31, useState as useState59 } from "react";
16901
16916
  import { Internals as Internals44 } from "remotion";
16902
16917
 
16903
16918
  // src/helpers/should-show-render-button.ts
@@ -16957,10 +16972,10 @@ var CheckboardToggle = () => {
16957
16972
 
16958
16973
  // src/components/FpsCounter.tsx
16959
16974
  import {
16960
- useEffect as useEffect50,
16975
+ useEffect as useEffect51,
16961
16976
  useLayoutEffect,
16962
16977
  useMemo as useMemo91,
16963
- useRef as useRef28,
16978
+ useRef as useRef29,
16964
16979
  useState as useState56
16965
16980
  } from "react";
16966
16981
  import { Internals as Internals37 } from "remotion";
@@ -16981,9 +16996,9 @@ var FpsCounter = ({ playbackSpeed }) => {
16981
16996
  const frame2 = Internals37.Timeline.useTimelinePosition();
16982
16997
  const [marker, rerender] = useState56({});
16983
16998
  const [fps, setFps] = useState56(0);
16984
- const previousUpdates = useRef28([]);
16985
- const fpsRef = useRef28(0);
16986
- const playingRef = useRef28(playing);
16999
+ const previousUpdates = useRef29([]);
17000
+ const fpsRef = useRef29(0);
17001
+ const playingRef = useRef29(playing);
16987
17002
  useLayoutEffect(() => {
16988
17003
  fpsRef.current = 0;
16989
17004
  previousUpdates.current = [];
@@ -17001,7 +17016,7 @@ var FpsCounter = ({ playbackSpeed }) => {
17001
17016
  if (previousUpdates.current.length === 2)
17002
17017
  setFps(fpsRef.current);
17003
17018
  }, [frame2]);
17004
- useEffect50(() => {
17019
+ useEffect51(() => {
17005
17020
  if (playing) {
17006
17021
  const t = setTimeout(() => {
17007
17022
  rerender({});
@@ -17039,7 +17054,7 @@ var FpsCounter = ({ playbackSpeed }) => {
17039
17054
  };
17040
17055
 
17041
17056
  // src/components/FullscreenToggle.tsx
17042
- import { useCallback as useCallback82, useContext as useContext48, useEffect as useEffect51 } from "react";
17057
+ import { useCallback as useCallback82, useContext as useContext48, useEffect as useEffect52 } from "react";
17043
17058
  import { Internals as Internals38 } from "remotion";
17044
17059
  import { NoReactInternals as NoReactInternals14 } from "remotion/no-react";
17045
17060
  import { jsx as jsx162 } from "react/jsx-runtime";
@@ -17061,7 +17076,7 @@ var FullScreenToggle = () => {
17061
17076
  }
17062
17077
  }));
17063
17078
  }, [setSize]);
17064
- useEffect51(() => {
17079
+ useEffect52(() => {
17065
17080
  const f = keybindings.registerKeybinding({
17066
17081
  event: "keydown",
17067
17082
  key: "f",
@@ -17175,7 +17190,7 @@ var MuteToggle = ({ muted, setMuted }) => {
17175
17190
 
17176
17191
  // src/components/PlayPause.tsx
17177
17192
  import { PlayerInternals as PlayerInternals12 } from "@remotion/player";
17178
- import { useCallback as useCallback85, useEffect as useEffect52, useState as useState57 } from "react";
17193
+ import { useCallback as useCallback85, useEffect as useEffect53, useState as useState57 } from "react";
17179
17194
  import { Internals as Internals39 } from "remotion";
17180
17195
 
17181
17196
  // src/icons/jump-to-start.tsx
@@ -17298,7 +17313,7 @@ var PlayPause = ({ playbackRate, loop, bufferStateDelayInMilliseconds }) => {
17298
17313
  }
17299
17314
  });
17300
17315
  const isStill = useIsStill();
17301
- useEffect52(() => {
17316
+ useEffect53(() => {
17302
17317
  if (isStill) {
17303
17318
  pause();
17304
17319
  }
@@ -17380,7 +17395,7 @@ var PlayPause = ({ playbackRate, loop, bufferStateDelayInMilliseconds }) => {
17380
17395
  seek(outFrame ?? getCurrentDuration() - 1);
17381
17396
  }, [seek, outFrame]);
17382
17397
  const keybindings = useKeybinding();
17383
- useEffect52(() => {
17398
+ useEffect53(() => {
17384
17399
  const arrowLeft = keybindings.registerKeybinding({
17385
17400
  event: "keydown",
17386
17401
  key: "ArrowLeft",
@@ -17452,7 +17467,7 @@ var PlayPause = ({ playbackRate, loop, bufferStateDelayInMilliseconds }) => {
17452
17467
  onEnter,
17453
17468
  onSpace
17454
17469
  ]);
17455
- useEffect52(() => {
17470
+ useEffect53(() => {
17456
17471
  let timeout = null;
17457
17472
  let stopped = false;
17458
17473
  const onBuffer = () => {
@@ -17534,7 +17549,7 @@ var PlayPause = ({ playbackRate, loop, bufferStateDelayInMilliseconds }) => {
17534
17549
 
17535
17550
  // src/components/PlaybackKeyboardShortcutsManager.tsx
17536
17551
  import { PlayerInternals as PlayerInternals13 } from "@remotion/player";
17537
- import { useCallback as useCallback86, useEffect as useEffect53 } from "react";
17552
+ import { useCallback as useCallback86, useEffect as useEffect54 } from "react";
17538
17553
  var PlaybackKeyboardShortcutsManager = ({ setPlaybackRate }) => {
17539
17554
  const keybindings = useKeybinding();
17540
17555
  const { play, pause, playing } = PlayerInternals13.usePlayer();
@@ -17572,7 +17587,7 @@ var PlaybackKeyboardShortcutsManager = ({ setPlaybackRate }) => {
17572
17587
  });
17573
17588
  play();
17574
17589
  }, [play, playing, setPlaybackRate]);
17575
- useEffect53(() => {
17590
+ useEffect54(() => {
17576
17591
  const jKey = keybindings.registerKeybinding({
17577
17592
  event: "keydown",
17578
17593
  key: "j",
@@ -17610,7 +17625,7 @@ var PlaybackKeyboardShortcutsManager = ({ setPlaybackRate }) => {
17610
17625
  };
17611
17626
 
17612
17627
  // src/components/PlaybackRatePersistor.tsx
17613
- import { useContext as useContext49, useEffect as useEffect54 } from "react";
17628
+ import { useContext as useContext49, useEffect as useEffect55 } from "react";
17614
17629
  import { Internals as Internals40 } from "remotion";
17615
17630
 
17616
17631
  // src/state/playbackrate.ts
@@ -17632,10 +17647,10 @@ var loadPlaybackRate = () => {
17632
17647
  // src/components/PlaybackRatePersistor.tsx
17633
17648
  var PlaybackRatePersistor = () => {
17634
17649
  const { setPlaybackRate, playbackRate } = useContext49(Internals40.TimelineContext);
17635
- useEffect54(() => {
17650
+ useEffect55(() => {
17636
17651
  setPlaybackRate(loadPlaybackRate());
17637
17652
  }, [setPlaybackRate]);
17638
- useEffect54(() => {
17653
+ useEffect55(() => {
17639
17654
  persistPlaybackRate(playbackRate);
17640
17655
  }, [playbackRate]);
17641
17656
  return null;
@@ -17717,9 +17732,9 @@ import { PlayerInternals as PlayerInternals14 } from "@remotion/player";
17717
17732
  import {
17718
17733
  useCallback as useCallback87,
17719
17734
  useContext as useContext51,
17720
- useEffect as useEffect55,
17735
+ useEffect as useEffect56,
17721
17736
  useMemo as useMemo93,
17722
- useRef as useRef29,
17737
+ useRef as useRef30,
17723
17738
  useState as useState58
17724
17739
  } from "react";
17725
17740
  import ReactDOM8 from "react-dom";
@@ -17795,8 +17810,8 @@ var RenderButton = ({
17795
17810
  const { setSelectedModal } = useContext51(ModalsContext);
17796
17811
  const [renderType, setRenderType] = useState58(() => getInitialRenderType(readOnlyStudio));
17797
17812
  const [dropdownOpened, setDropdownOpened] = useState58(false);
17798
- const dropdownRef = useRef29(null);
17799
- const containerRef = useRef29(null);
17813
+ const dropdownRef = useRef30(null);
17814
+ const containerRef = useRef30(null);
17800
17815
  const { currentZIndex } = useZIndex();
17801
17816
  const size4 = PlayerInternals14.useElementSize(dropdownRef, {
17802
17817
  triggerOnWindowResize: true,
@@ -17891,7 +17906,8 @@ var RenderButton = ({
17891
17906
  defaultProps: props[video.id] ?? video.defaultProps,
17892
17907
  inFrameMark: inFrame,
17893
17908
  outFrameMark: outFrame,
17894
- initialLogLevel: defaults.logLevel
17909
+ initialLogLevel: defaults.logLevel,
17910
+ initialLicenseKey: defaults.publicLicenseKey
17895
17911
  });
17896
17912
  }, [video, setSelectedModal, getCurrentFrame2, props, inFrame, outFrame]);
17897
17913
  const onClick = useCallback87(() => {
@@ -17942,7 +17958,7 @@ var RenderButton = ({
17942
17958
  }
17943
17959
  ];
17944
17960
  }, [handleRenderTypeChange]);
17945
- useEffect55(() => {
17961
+ useEffect56(() => {
17946
17962
  const { current } = dropdownRef;
17947
17963
  if (!current) {
17948
17964
  return;
@@ -18288,14 +18304,14 @@ var PreviewToolbar = ({ readOnlyStudio, bufferStateDelayInMilliseconds }) => {
18288
18304
  const { mediaMuted } = useContext53(Internals44.MediaVolumeContext);
18289
18305
  const { setMediaMuted } = useContext53(Internals44.SetMediaVolumeContext);
18290
18306
  const isVideoComposition = useIsVideoComposition();
18291
- const previewToolbarRef = useRef30(null);
18292
- const leftScrollIndicatorRef = useRef30(null);
18293
- const rightScrollIndicatorRef = useRef30(null);
18307
+ const previewToolbarRef = useRef31(null);
18308
+ const leftScrollIndicatorRef = useRef31(null);
18309
+ const rightScrollIndicatorRef = useRef31(null);
18294
18310
  const isStill = useIsStill();
18295
18311
  const [loop, setLoop] = useState59(loadLoopOption());
18296
18312
  const isFullscreenSupported = checkFullscreenSupport();
18297
18313
  const isMobileLayout = useMobileLayout();
18298
- useEffect56(() => {
18314
+ useEffect57(() => {
18299
18315
  if (isMobileLayout && previewToolbarRef.current) {
18300
18316
  const updateScrollableIndicatorProps = (target) => {
18301
18317
  const boundingBox = target.getBoundingClientRect();
@@ -18446,7 +18462,7 @@ var PreviewToolbar = ({ readOnlyStudio, bufferStateDelayInMilliseconds }) => {
18446
18462
  };
18447
18463
 
18448
18464
  // src/components/Splitter/SplitterContainer.tsx
18449
- import { useMemo as useMemo94, useRef as useRef31, useState as useState60 } from "react";
18465
+ import { useMemo as useMemo94, useRef as useRef32, useState as useState60 } from "react";
18450
18466
 
18451
18467
  // src/state/timeline.ts
18452
18468
  var localStorageKey4 = (id) => `remotion.editor.timelineFlex.${id}`;
@@ -18501,8 +18517,8 @@ var containerColumn = {
18501
18517
  var SplitterContainer = ({ orientation, children, defaultFlex, maxFlex, minFlex, id }) => {
18502
18518
  const [initialTimelineFlex, persistFlex] = useTimelineFlex(id);
18503
18519
  const [flexValue, setFlexValue] = useState60(initialTimelineFlex ?? defaultFlex);
18504
- const ref = useRef31(null);
18505
- const isDragging = useRef31(false);
18520
+ const ref = useRef32(null);
18521
+ const isDragging = useRef32(false);
18506
18522
  const value = useMemo94(() => {
18507
18523
  return {
18508
18524
  flexValue,
@@ -18575,7 +18591,7 @@ var SplitterElement = ({ children, type, sticky }) => {
18575
18591
 
18576
18592
  // src/components/Splitter/SplitterHandle.tsx
18577
18593
  import { PlayerInternals as PlayerInternals15 } from "@remotion/player";
18578
- import { useContext as useContext55, useEffect as useEffect57, useRef as useRef32, useState as useState61 } from "react";
18594
+ import { useContext as useContext55, useEffect as useEffect58, useRef as useRef33, useState as useState61 } from "react";
18579
18595
  import { jsx as jsx179 } from "react/jsx-runtime";
18580
18596
  var SPLITTER_HANDLE_SIZE = 3;
18581
18597
  var containerRow2 = {
@@ -18590,8 +18606,8 @@ var SplitterHandle = ({ allowToCollapse, onCollapse }) => {
18590
18606
  throw new Error("Cannot find splitter context");
18591
18607
  }
18592
18608
  const [lastPointerUp, setLastPointerUp] = useState61(() => Date.now());
18593
- const ref = useRef32(null);
18594
- useEffect57(() => {
18609
+ const ref = useRef33(null);
18610
+ useEffect58(() => {
18595
18611
  if (context.isDragging.current) {
18596
18612
  return;
18597
18613
  }
@@ -18674,7 +18690,7 @@ var SplitterHandle = ({ allowToCollapse, onCollapse }) => {
18674
18690
  }
18675
18691
  };
18676
18692
  }, [allowToCollapse, context, context.flexValue, lastPointerUp, onCollapse]);
18677
- useEffect57(() => {
18693
+ useEffect58(() => {
18678
18694
  const { current } = ref;
18679
18695
  if (!current) {
18680
18696
  return;
@@ -18761,7 +18777,7 @@ var TopPanel = ({ readOnlyStudio, onMounted, drawRef: drawRef2, bufferStateDelay
18761
18777
  }
18762
18778
  return "expanded";
18763
18779
  }, [sidebarCollapsedStateRight]);
18764
- useEffect58(() => {
18780
+ useEffect59(() => {
18765
18781
  onMounted();
18766
18782
  }, [onMounted]);
18767
18783
  const canvasContainerStyle = useMemo96(() => ({
@@ -18931,7 +18947,7 @@ var SidebarCollapserControls = () => {
18931
18947
  toggleLeft,
18932
18948
  toggleRight
18933
18949
  ]);
18934
- useEffect59(() => {
18950
+ useEffect60(() => {
18935
18951
  const left3 = keybindings.registerKeybinding({
18936
18952
  event: "keydown",
18937
18953
  key: "b",
@@ -19009,7 +19025,7 @@ var SidebarCollapserControls = () => {
19009
19025
  import {
19010
19026
  useCallback as useCallback91,
19011
19027
  useContext as useContext58,
19012
- useEffect as useEffect60,
19028
+ useEffect as useEffect61,
19013
19029
  useMemo as useMemo97,
19014
19030
  useState as useState62
19015
19031
  } from "react";
@@ -19061,7 +19077,7 @@ var UpdateCheck = () => {
19061
19077
  });
19062
19078
  return controller;
19063
19079
  }, []);
19064
- useEffect60(() => {
19080
+ useEffect61(() => {
19065
19081
  const abortUpdate = checkForUpdates();
19066
19082
  const abortBugs = checkForBugs();
19067
19083
  return () => {
@@ -19426,9 +19442,9 @@ import { PlayerInternals as PlayerInternals16 } from "@remotion/player";
19426
19442
  import {
19427
19443
  useCallback as useCallback93,
19428
19444
  useContext as useContext61,
19429
- useEffect as useEffect61,
19445
+ useEffect as useEffect62,
19430
19446
  useMemo as useMemo100,
19431
- useRef as useRef33,
19447
+ useRef as useRef34,
19432
19448
  useState as useState64
19433
19449
  } from "react";
19434
19450
  import { Internals as Internals46, useVideoConfig as useVideoConfig4 } from "remotion";
@@ -19592,7 +19608,7 @@ var Inner2 = () => {
19592
19608
  dragging: false
19593
19609
  });
19594
19610
  const { playing, play, pause, seek } = PlayerInternals16.usePlayer();
19595
- const scroller = useRef33(null);
19611
+ const scroller = useRef34(null);
19596
19612
  const stopInterval = () => {
19597
19613
  if (scroller.current) {
19598
19614
  clearInterval(scroller.current);
@@ -19857,7 +19873,7 @@ var Inner2 = () => {
19857
19873
  videoConfig,
19858
19874
  width
19859
19875
  ]);
19860
- useEffect61(() => {
19876
+ useEffect62(() => {
19861
19877
  if (!dragging.dragging) {
19862
19878
  return;
19863
19879
  }
@@ -19868,7 +19884,7 @@ var Inner2 = () => {
19868
19884
  window.removeEventListener("pointerup", onPointerUpScrubbing);
19869
19885
  };
19870
19886
  }, [dragging.dragging, onPointerMoveScrubbing, onPointerUpScrubbing]);
19871
- useEffect61(() => {
19887
+ useEffect62(() => {
19872
19888
  if (inOutDragging.dragging === false) {
19873
19889
  return;
19874
19890
  }
@@ -19959,7 +19975,7 @@ var Inner2 = () => {
19959
19975
 
19960
19976
  // src/components/Timeline/TimelineList.tsx
19961
19977
  import { PlayerInternals as PlayerInternals18 } from "@remotion/player";
19962
- import { useRef as useRef36 } from "react";
19978
+ import { useRef as useRef37 } from "react";
19963
19979
 
19964
19980
  // src/components/Timeline/TimelineListItem.tsx
19965
19981
  import { useCallback as useCallback96, useContext as useContext63, useMemo as useMemo102 } from "react";
@@ -20044,7 +20060,7 @@ import { SOURCE_MAP_ENDPOINT } from "@remotion/studio-shared";
20044
20060
  import {
20045
20061
  useCallback as useCallback95,
20046
20062
  useContext as useContext62,
20047
- useEffect as useEffect62,
20063
+ useEffect as useEffect63,
20048
20064
  useMemo as useMemo101,
20049
20065
  useState as useState65
20050
20066
  } from "react";
@@ -20133,7 +20149,7 @@ var TimelineStack = ({ isCompact, sequence }) => {
20133
20149
  window.open(getGitRefUrl(window.remotion_gitSource, originalLocation), "_blank");
20134
20150
  }
20135
20151
  }, [canOpenInEditor, canOpenInGitHub, openEditor, originalLocation]);
20136
- useEffect62(() => {
20152
+ useEffect63(() => {
20137
20153
  if (!sequence.stack) {
20138
20154
  return;
20139
20155
  }
@@ -20281,16 +20297,16 @@ var TimelineListItem = ({ nestedDepth, sequence, isCompact }) => {
20281
20297
  };
20282
20298
 
20283
20299
  // src/components/Timeline/TimelineTimeIndicators.tsx
20284
- import { useContext as useContext64, useEffect as useEffect64, useMemo as useMemo103, useRef as useRef35 } from "react";
20300
+ import { useContext as useContext64, useEffect as useEffect65, useMemo as useMemo103, useRef as useRef36 } from "react";
20285
20301
  import { Internals as Internals49 } from "remotion";
20286
20302
 
20287
20303
  // src/components/TimeValue.tsx
20288
20304
  import { PlayerInternals as PlayerInternals17 } from "@remotion/player";
20289
20305
  import {
20290
20306
  useCallback as useCallback97,
20291
- useEffect as useEffect63,
20307
+ useEffect as useEffect64,
20292
20308
  useImperativeHandle as useImperativeHandle13,
20293
- useRef as useRef34
20309
+ useRef as useRef35
20294
20310
  } from "react";
20295
20311
  import { Internals as Internals48, useCurrentFrame } from "remotion";
20296
20312
  import { jsx as jsx190, jsxs as jsxs92 } from "react/jsx-runtime";
@@ -20325,7 +20341,7 @@ var TimeValue = () => {
20325
20341
  const isStill = useIsStill();
20326
20342
  const { seek, play, pause, toggle } = PlayerInternals17.usePlayer();
20327
20343
  const keybindings = useKeybinding();
20328
- const ref = useRef34(null);
20344
+ const ref = useRef35(null);
20329
20345
  const onTextChange = useCallback97((newVal) => {
20330
20346
  seek(parseInt(newVal, 10));
20331
20347
  }, [seek]);
@@ -20341,7 +20357,7 @@ var TimeValue = () => {
20341
20357
  pause,
20342
20358
  toggle
20343
20359
  }), [seek, play, pause, toggle]);
20344
- useEffect63(() => {
20360
+ useEffect64(() => {
20345
20361
  const gKey = keybindings.registerKeybinding({
20346
20362
  event: "keypress",
20347
20363
  key: "g",
@@ -20453,8 +20469,8 @@ var TimelineTimeIndicators = () => {
20453
20469
  });
20454
20470
  };
20455
20471
  var Inner3 = ({ windowWidth, durationInFrames, fps }) => {
20456
- const ref = useRef35(null);
20457
- useEffect64(() => {
20472
+ const ref = useRef36(null);
20473
+ useEffect65(() => {
20458
20474
  const currentRef = ref.current;
20459
20475
  if (!currentRef) {
20460
20476
  return;
@@ -20536,7 +20552,7 @@ var container41 = {
20536
20552
  background: BACKGROUND
20537
20553
  };
20538
20554
  var TimelineList = ({ timeline }) => {
20539
- const ref = useRef36(null);
20555
+ const ref = useRef37(null);
20540
20556
  const size4 = PlayerInternals18.useElementSize(ref, {
20541
20557
  shouldApplyCssTransforms: false,
20542
20558
  triggerOnWindowResize: false
@@ -20561,7 +20577,7 @@ var TimelineList = ({ timeline }) => {
20561
20577
  };
20562
20578
 
20563
20579
  // src/components/Timeline/TimelinePlayCursorSyncer.tsx
20564
- import { useContext as useContext65, useEffect as useEffect65 } from "react";
20580
+ import { useContext as useContext65, useEffect as useEffect66 } from "react";
20565
20581
  import { Internals as Internals50 } from "remotion";
20566
20582
  var lastTimelinePositionWhileScrolling = null;
20567
20583
  var TimelinePlayCursorSyncer = () => {
@@ -20579,7 +20595,7 @@ var TimelinePlayCursorSyncer = () => {
20579
20595
  setCurrentFps(video.fps);
20580
20596
  }
20581
20597
  const playing = timelineContext.playing ?? false;
20582
- useEffect65(() => {
20598
+ useEffect66(() => {
20583
20599
  if (!video) {
20584
20600
  return;
20585
20601
  }
@@ -20592,7 +20608,7 @@ var TimelinePlayCursorSyncer = () => {
20592
20608
  frame: timelinePosition
20593
20609
  });
20594
20610
  }, [playing, timelineContext, timelinePosition, video]);
20595
- useEffect65(() => {
20611
+ useEffect66(() => {
20596
20612
  const { current } = scrollableRef;
20597
20613
  if (!current) {
20598
20614
  return;
@@ -20730,7 +20746,7 @@ var getTimelineSequenceLayout = ({
20730
20746
  // src/helpers/use-max-media-duration.ts
20731
20747
  import { getVideoMetadata as getVideoMetadata2 } from "@remotion/media-utils";
20732
20748
 
20733
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/misc.js
20749
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/misc.js
20734
20750
  /*!
20735
20751
  * Copyright (c) 2025-present, Vanilagy and contributors
20736
20752
  *
@@ -21160,7 +21176,7 @@ var isNumber = (x) => {
21160
21176
  return typeof x === "number" && !Number.isNaN(x);
21161
21177
  };
21162
21178
 
21163
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/metadata.js
21179
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/metadata.js
21164
21180
  /*!
21165
21181
  * Copyright (c) 2025-present, Vanilagy and contributors
21166
21182
  *
@@ -21211,7 +21227,7 @@ var DEFAULT_TRACK_DISPOSITION = {
21211
21227
  visuallyImpaired: false
21212
21228
  };
21213
21229
 
21214
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/codec.js
21230
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/codec.js
21215
21231
  /*!
21216
21232
  * Copyright (c) 2025-present, Vanilagy and contributors
21217
21233
  *
@@ -21485,7 +21501,7 @@ var parsePcmCodec = (codec) => {
21485
21501
  return { dataType, sampleSize, littleEndian, silentValue };
21486
21502
  };
21487
21503
 
21488
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/codec-data.js
21504
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/codec-data.js
21489
21505
  /*!
21490
21506
  * Copyright (c) 2025-present, Vanilagy and contributors
21491
21507
  *
@@ -22902,7 +22918,7 @@ var readVorbisComments = (bytes, metadataTags) => {
22902
22918
  }
22903
22919
  };
22904
22920
 
22905
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/demuxer.js
22921
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/demuxer.js
22906
22922
  /*!
22907
22923
  * Copyright (c) 2025-present, Vanilagy and contributors
22908
22924
  *
@@ -22917,7 +22933,7 @@ class Demuxer {
22917
22933
  }
22918
22934
  }
22919
22935
 
22920
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/custom-coder.js
22936
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/custom-coder.js
22921
22937
  /*!
22922
22938
  * Copyright (c) 2025-present, Vanilagy and contributors
22923
22939
  *
@@ -22928,7 +22944,7 @@ class Demuxer {
22928
22944
  var customVideoDecoders = [];
22929
22945
  var customAudioDecoders = [];
22930
22946
 
22931
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/packet.js
22947
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/packet.js
22932
22948
  /*!
22933
22949
  * Copyright (c) 2025-present, Vanilagy and contributors
22934
22950
  *
@@ -23060,7 +23076,7 @@ class EncodedPacket {
23060
23076
  }
23061
23077
  }
23062
23078
 
23063
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/sample.js
23079
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/sample.js
23064
23080
  /*!
23065
23081
  * Copyright (c) 2025-present, Vanilagy and contributors
23066
23082
  *
@@ -23736,7 +23752,7 @@ var getPlaneConfigs = (format) => {
23736
23752
  };
23737
23753
  var AUDIO_SAMPLE_FORMATS = new Set(["f32", "f32-planar", "s16", "s16-planar", "s32", "s32-planar", "u8", "u8-planar"]);
23738
23754
 
23739
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/media-sink.js
23755
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/media-sink.js
23740
23756
  /*!
23741
23757
  * Copyright (c) 2025-present, Vanilagy and contributors
23742
23758
  *
@@ -24690,7 +24706,7 @@ class VideoSampleSink extends BaseMediaSampleSink {
24690
24706
  }
24691
24707
  }
24692
24708
 
24693
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/input-track.js
24709
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/input-track.js
24694
24710
  /*!
24695
24711
  * Copyright (c) 2025-present, Vanilagy and contributors
24696
24712
  *
@@ -24899,7 +24915,7 @@ class InputAudioTrack extends InputTrack {
24899
24915
  }
24900
24916
  }
24901
24917
 
24902
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/isobmff/isobmff-misc.js
24918
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/isobmff/isobmff-misc.js
24903
24919
  /*!
24904
24920
  * Copyright (c) 2025-present, Vanilagy and contributors
24905
24921
  *
@@ -24917,7 +24933,7 @@ var buildIsobmffMimeType = (info) => {
24917
24933
  return string;
24918
24934
  };
24919
24935
 
24920
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/isobmff/isobmff-reader.js
24936
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/isobmff/isobmff-reader.js
24921
24937
  /*!
24922
24938
  * Copyright (c) 2025-present, Vanilagy and contributors
24923
24939
  *
@@ -24993,7 +25009,7 @@ var readDataBox = (slice) => {
24993
25009
  }
24994
25010
  };
24995
25011
 
24996
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/isobmff/isobmff-demuxer.js
25012
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/isobmff/isobmff-demuxer.js
24997
25013
  /*!
24998
25014
  * Copyright (c) 2025-present, Vanilagy and contributors
24999
25015
  *
@@ -27271,7 +27287,7 @@ var sampleTableIsEmpty = (sampleTable) => {
27271
27287
  return sampleTable.sampleSizes.length === 0;
27272
27288
  };
27273
27289
 
27274
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/matroska/ebml.js
27290
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/matroska/ebml.js
27275
27291
  /*!
27276
27292
  * Copyright (c) 2025-present, Vanilagy and contributors
27277
27293
  *
@@ -27586,7 +27602,7 @@ function assertDefinedSize(size4) {
27586
27602
  }
27587
27603
  }
27588
27604
 
27589
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/matroska/matroska-misc.js
27605
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/matroska/matroska-misc.js
27590
27606
  /*!
27591
27607
  * Copyright (c) 2025-present, Vanilagy and contributors
27592
27608
  *
@@ -27604,7 +27620,7 @@ var buildMatroskaMimeType = (info) => {
27604
27620
  return string;
27605
27621
  };
27606
27622
 
27607
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/matroska/matroska-demuxer.js
27623
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/matroska/matroska-demuxer.js
27608
27624
  /*!
27609
27625
  * Copyright (c) 2025-present, Vanilagy and contributors
27610
27626
  *
@@ -29483,7 +29499,7 @@ class MatroskaAudioTrackBacking extends MatroskaTrackBacking {
29483
29499
  }
29484
29500
  }
29485
29501
 
29486
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/shared/mp3-misc.js
29502
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/shared/mp3-misc.js
29487
29503
  /*!
29488
29504
  * Copyright (c) 2025-present, Vanilagy and contributors
29489
29505
  *
@@ -29725,7 +29741,7 @@ var decodeSynchsafe = (synchsafed) => {
29725
29741
  return unsynchsafed;
29726
29742
  };
29727
29743
 
29728
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/id3.js
29744
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/id3.js
29729
29745
  /*!
29730
29746
  * Copyright (c) 2025-present, Vanilagy and contributors
29731
29747
  *
@@ -30425,7 +30441,7 @@ class Id3V2Reader {
30425
30441
  }
30426
30442
  }
30427
30443
 
30428
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/mp3/mp3-reader.js
30444
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/mp3/mp3-reader.js
30429
30445
  /*!
30430
30446
  * Copyright (c) 2025-present, Vanilagy and contributors
30431
30447
  *
@@ -30451,7 +30467,7 @@ var readNextFrameHeader = async (reader, startPos, until) => {
30451
30467
  return null;
30452
30468
  };
30453
30469
 
30454
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/mp3/mp3-demuxer.js
30470
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/mp3/mp3-demuxer.js
30455
30471
  /*!
30456
30472
  * Copyright (c) 2025-present, Vanilagy and contributors
30457
30473
  *
@@ -30716,7 +30732,7 @@ class Mp3AudioTrackBacking {
30716
30732
  }
30717
30733
  }
30718
30734
 
30719
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/ogg/ogg-misc.js
30735
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/ogg/ogg-misc.js
30720
30736
  /*!
30721
30737
  * Copyright (c) 2025-present, Vanilagy and contributors
30722
30738
  *
@@ -30787,7 +30803,7 @@ var buildOggMimeType = (info) => {
30787
30803
  return string;
30788
30804
  };
30789
30805
 
30790
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/ogg/ogg-reader.js
30806
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/ogg/ogg-reader.js
30791
30807
  /*!
30792
30808
  * Copyright (c) 2025-present, Vanilagy and contributors
30793
30809
  *
@@ -30851,7 +30867,7 @@ var findNextPageHeader = (slice, until) => {
30851
30867
  return false;
30852
30868
  };
30853
30869
 
30854
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/ogg/ogg-demuxer.js
30870
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/ogg/ogg-demuxer.js
30855
30871
  /*!
30856
30872
  * Copyright (c) 2025-present, Vanilagy and contributors
30857
30873
  *
@@ -31511,7 +31527,7 @@ var findPreviousPacketEndPosition = (pageList, startPage, startSegmentIndex) =>
31511
31527
  return { page: previousPage, segmentIndex: previousPage.lacingValues.length - 1 };
31512
31528
  };
31513
31529
 
31514
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/wave/wave-demuxer.js
31530
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/wave/wave-demuxer.js
31515
31531
  /*!
31516
31532
  * Copyright (c) 2025-present, Vanilagy and contributors
31517
31533
  *
@@ -31932,7 +31948,7 @@ class WaveAudioTrackBacking {
31932
31948
  }
31933
31949
  }
31934
31950
 
31935
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/adts/adts-reader.js
31951
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/adts/adts-reader.js
31936
31952
  /*!
31937
31953
  * Copyright (c) 2025-present, Vanilagy and contributors
31938
31954
  *
@@ -31993,7 +32009,7 @@ var readFrameHeader2 = (slice) => {
31993
32009
  };
31994
32010
  };
31995
32011
 
31996
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/adts/adts-demuxer.js
32012
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/adts/adts-demuxer.js
31997
32013
  /*!
31998
32014
  * Copyright (c) 2025-present, Vanilagy and contributors
31999
32015
  *
@@ -32214,7 +32230,7 @@ class AdtsAudioTrackBacking {
32214
32230
  }
32215
32231
  }
32216
32232
 
32217
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/flac/flac-misc.js
32233
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/flac/flac-misc.js
32218
32234
  /*!
32219
32235
  * Copyright (c) 2025-present, Vanilagy and contributors
32220
32236
  *
@@ -32349,7 +32365,7 @@ var calculateCrc8 = (data) => {
32349
32365
  return crc;
32350
32366
  };
32351
32367
 
32352
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/flac/flac-demuxer.js
32368
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/flac/flac-demuxer.js
32353
32369
  /*!
32354
32370
  * Copyright (c) 2025-present, Vanilagy and contributors
32355
32371
  *
@@ -32773,7 +32789,7 @@ class FlacAudioTrackBacking {
32773
32789
  }
32774
32790
  }
32775
32791
 
32776
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/input-format.js
32792
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/input-format.js
32777
32793
  /*!
32778
32794
  * Copyright (c) 2025-present, Vanilagy and contributors
32779
32795
  *
@@ -33095,7 +33111,7 @@ var ADTS = /* @__PURE__ */ new AdtsInputFormat;
33095
33111
  var FLAC = /* @__PURE__ */ new FlacInputFormat;
33096
33112
  var ALL_FORMATS = [MP4, QTFF, MATROSKA, WEBM, WAVE, OGG, FLAC, MP3, ADTS];
33097
33113
 
33098
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/source.js
33114
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/source.js
33099
33115
  var nodeAlias = (() => ({}));
33100
33116
  /*!
33101
33117
  * Copyright (c) 2025-present, Vanilagy and contributors
@@ -33629,7 +33645,7 @@ class ReadOrchestrator {
33629
33645
  }
33630
33646
  }
33631
33647
 
33632
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/input.js
33648
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/input.js
33633
33649
  /*!
33634
33650
  * Copyright (c) 2025-present, Vanilagy and contributors
33635
33651
  *
@@ -33736,7 +33752,7 @@ class InputDisposedError extends Error {
33736
33752
  }
33737
33753
  }
33738
33754
 
33739
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/reader.js
33755
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/reader.js
33740
33756
  /*!
33741
33757
  * Copyright (c) 2025-present, Vanilagy and contributors
33742
33758
  *
@@ -33954,7 +33970,7 @@ var readAscii = (slice, length) => {
33954
33970
  }
33955
33971
  return str;
33956
33972
  };
33957
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/index.js
33973
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/index.js
33958
33974
  /*!
33959
33975
  * Copyright (c) 2025-present, Vanilagy and contributors
33960
33976
  *
@@ -33964,7 +33980,7 @@ var readAscii = (slice, length) => {
33964
33980
  */
33965
33981
 
33966
33982
  // src/helpers/use-max-media-duration.ts
33967
- import { useEffect as useEffect66, useState as useState66 } from "react";
33983
+ import { useEffect as useEffect67, useState as useState66 } from "react";
33968
33984
  var cache = new Map;
33969
33985
  var getSrc = (s) => {
33970
33986
  if (s.type === "video") {
@@ -33978,7 +33994,7 @@ var getSrc = (s) => {
33978
33994
  var useMaxMediaDuration = (s, fps) => {
33979
33995
  const src = getSrc(s);
33980
33996
  const [maxMediaDuration, setMaxMediaDuration] = useState66(src ? cache.get(src) ?? null : Infinity);
33981
- useEffect66(() => {
33997
+ useEffect67(() => {
33982
33998
  if (!src) {
33983
33999
  return;
33984
34000
  }
@@ -34008,7 +34024,7 @@ var useMaxMediaDuration = (s, fps) => {
34008
34024
 
34009
34025
  // src/components/AudioWaveform.tsx
34010
34026
  import { getAudioData, getWaveformPortion } from "@remotion/media-utils";
34011
- import { useEffect as useEffect67, useMemo as useMemo106, useRef as useRef37, useState as useState67 } from "react";
34027
+ import { useEffect as useEffect68, useMemo as useMemo106, useRef as useRef38, useState as useState67 } from "react";
34012
34028
  import { Internals as Internals51 } from "remotion";
34013
34029
 
34014
34030
  // src/components/AudioWaveformBar.tsx
@@ -34067,20 +34083,20 @@ var AudioWaveform = ({
34067
34083
  }) => {
34068
34084
  const [metadata, setMetadata] = useState67(null);
34069
34085
  const [error, setError] = useState67(null);
34070
- const mountState = useRef37({ isMounted: true });
34086
+ const mountState = useRef38({ isMounted: true });
34071
34087
  const vidConf = Internals51.useUnsafeVideoConfig();
34072
34088
  if (vidConf === null) {
34073
34089
  throw new Error("Expected video config");
34074
34090
  }
34075
- const canvas = useRef37(null);
34076
- useEffect67(() => {
34091
+ const canvas = useRef38(null);
34092
+ useEffect68(() => {
34077
34093
  const { current } = mountState;
34078
34094
  current.isMounted = true;
34079
34095
  return () => {
34080
34096
  current.isMounted = false;
34081
34097
  };
34082
34098
  }, []);
34083
- useEffect67(() => {
34099
+ useEffect68(() => {
34084
34100
  if (!canvas.current) {
34085
34101
  return;
34086
34102
  }
@@ -34107,7 +34123,7 @@ var AudioWaveform = ({
34107
34123
  context.strokeStyle = LIGHT_TRANSPARENT;
34108
34124
  context.stroke();
34109
34125
  }, [visualizationWidth, metadata, startFrom, volume, doesVolumeChange]);
34110
- useEffect67(() => {
34126
+ useEffect68(() => {
34111
34127
  setError(null);
34112
34128
  getAudioData(src).then((data) => {
34113
34129
  if (mountState.current.isMounted) {
@@ -34282,7 +34298,7 @@ var TimelineSequenceFrame = ({ roundedFrame, premounted, postmounted }) => {
34282
34298
  };
34283
34299
 
34284
34300
  // src/components/Timeline/TimelineVideoInfo.tsx
34285
- import { useEffect as useEffect68, useRef as useRef38, useState as useState68 } from "react";
34301
+ import { useEffect as useEffect69, useRef as useRef39, useState as useState68 } from "react";
34286
34302
  import { useVideoConfig as useVideoConfig5 } from "remotion";
34287
34303
 
34288
34304
  // src/helpers/extract-frames.ts
@@ -34597,15 +34613,15 @@ var fillFrameWhereItFits = ({
34597
34613
  };
34598
34614
  var TimelineVideoInfo = ({ src, visualizationWidth, startFrom, durationInFrames }) => {
34599
34615
  const { fps } = useVideoConfig5();
34600
- const ref = useRef38(null);
34616
+ const ref = useRef39(null);
34601
34617
  const [error, setError] = useState68(null);
34602
- const aspectRatio = useRef38(getAspectRatioFromCache(src));
34603
- useEffect68(() => {
34618
+ const aspectRatio = useRef39(getAspectRatioFromCache(src));
34619
+ useEffect69(() => {
34604
34620
  return () => {
34605
34621
  clearFramesForSrc(src);
34606
34622
  };
34607
34623
  }, [src]);
34608
- useEffect68(() => {
34624
+ useEffect69(() => {
34609
34625
  if (error) {
34610
34626
  return;
34611
34627
  }
@@ -35058,13 +35074,13 @@ var EditorContent = ({ readOnlyStudio, children }) => {
35058
35074
  };
35059
35075
 
35060
35076
  // src/components/GlobalKeybindings.tsx
35061
- import { useContext as useContext69, useEffect as useEffect69 } from "react";
35077
+ import { useContext as useContext69, useEffect as useEffect70 } from "react";
35062
35078
  var GlobalKeybindings = () => {
35063
35079
  const keybindings = useKeybinding();
35064
35080
  const { setSelectedModal } = useContext69(ModalsContext);
35065
35081
  const { setCheckerboard } = useContext69(CheckerboardContext);
35066
35082
  const { navigateToNextComposition, navigateToPreviousComposition } = useCompositionNavigation();
35067
- useEffect69(() => {
35083
+ useEffect70(() => {
35068
35084
  const nKey = keybindings.registerKeybinding({
35069
35085
  event: "keypress",
35070
35086
  key: "n",
@@ -35170,7 +35186,7 @@ import { useContext as useContext83 } from "react";
35170
35186
 
35171
35187
  // src/components/InstallPackage.tsx
35172
35188
  import { apiDocs, descriptions, installableMap } from "@remotion/studio-shared";
35173
- import React144, { useCallback as useCallback99, useContext as useContext71, useEffect as useEffect70 } from "react";
35189
+ import React144, { useCallback as useCallback99, useContext as useContext71, useEffect as useEffect71 } from "react";
35174
35190
  import { VERSION as VERSION2 } from "remotion";
35175
35191
 
35176
35192
  // src/api/install-package.ts
@@ -35304,7 +35320,7 @@ var InstallPackageModal = ({ packageManager }) => {
35304
35320
  const canSelectPackages = state.type === "idle" && ctx.type === "connected";
35305
35321
  const disabled = !(canSelectPackages || state.type === "done") || selectedPackages.length === 0;
35306
35322
  const { registerKeybinding } = useKeybinding();
35307
- useEffect70(() => {
35323
+ useEffect71(() => {
35308
35324
  if (disabled) {
35309
35325
  return;
35310
35326
  }
@@ -35428,7 +35444,7 @@ var InstallPackageModal = ({ packageManager }) => {
35428
35444
  import { useCallback as useCallback101, useContext as useContext74, useMemo as useMemo112 } from "react";
35429
35445
 
35430
35446
  // src/components/RenderModal/ResolveCompositionBeforeModal.tsx
35431
- import React145, { useContext as useContext72, useEffect as useEffect71, useMemo as useMemo111 } from "react";
35447
+ import React145, { useContext as useContext72, useEffect as useEffect72, useMemo as useMemo111 } from "react";
35432
35448
  import { Internals as Internals55 } from "remotion";
35433
35449
  import { jsx as jsx209, jsxs as jsxs103 } from "react/jsx-runtime";
35434
35450
  var loaderContainer2 = {
@@ -35452,7 +35468,7 @@ var ResolveCompositionBeforeModal = ({ compositionId, children }) => {
35452
35468
  const resolved = Internals55.useResolvedVideoConfig(compositionId);
35453
35469
  const unresolvedContext = useContext72(Internals55.CompositionManager);
35454
35470
  const unresolved = unresolvedContext.compositions.find((c) => compositionId === c.id);
35455
- useEffect71(() => {
35471
+ useEffect72(() => {
35456
35472
  const { current } = Internals55.resolveCompositionsRef;
35457
35473
  if (!current) {
35458
35474
  throw new Error("No ref to trigger composition calc");
@@ -35510,7 +35526,7 @@ var ResolveCompositionBeforeModal = ({ compositionId, children }) => {
35510
35526
  };
35511
35527
 
35512
35528
  // src/components/NewComposition/CodemodFooter.tsx
35513
- import { useCallback as useCallback100, useContext as useContext73, useEffect as useEffect72, useState as useState69 } from "react";
35529
+ import { useCallback as useCallback100, useContext as useContext73, useEffect as useEffect73, useState as useState69 } from "react";
35514
35530
 
35515
35531
  // src/components/NewComposition/DiffPreview.tsx
35516
35532
  import { jsx as jsx210, jsxs as jsxs104 } from "react/jsx-runtime";
@@ -35575,7 +35591,7 @@ var CodemodFooter = ({
35575
35591
  type: "loading"
35576
35592
  });
35577
35593
  const [projectInfo, setProjectInfo] = useState69(null);
35578
- useEffect72(() => {
35594
+ useEffect73(() => {
35579
35595
  const controller = new AbortController;
35580
35596
  getProjectInfo(controller.signal).then((info) => {
35581
35597
  setProjectInfo(info.projectInfo);
@@ -35621,7 +35637,7 @@ var CodemodFooter = ({
35621
35637
  });
35622
35638
  }
35623
35639
  }, [codemod]);
35624
- useEffect72(() => {
35640
+ useEffect73(() => {
35625
35641
  const abortController = new AbortController;
35626
35642
  let aborted = false;
35627
35643
  getCanApplyCodemod(abortController.signal).then(() => {
@@ -35639,7 +35655,7 @@ var CodemodFooter = ({
35639
35655
  }, [codemodStatus, getCanApplyCodemod, setSelectedModal]);
35640
35656
  const disabled = !valid || submitting || projectInfo === null || codemodStatus.type !== "success";
35641
35657
  const { registerKeybinding } = useKeybinding();
35642
- useEffect72(() => {
35658
+ useEffect73(() => {
35643
35659
  if (disabled) {
35644
35660
  return;
35645
35661
  }
@@ -36461,9 +36477,9 @@ var OverrideInputPropsModal = () => {
36461
36477
  import {
36462
36478
  useCallback as useCallback106,
36463
36479
  useContext as useContext78,
36464
- useEffect as useEffect74,
36480
+ useEffect as useEffect75,
36465
36481
  useMemo as useMemo117,
36466
- useRef as useRef40,
36482
+ useRef as useRef41,
36467
36483
  useState as useState74
36468
36484
  } from "react";
36469
36485
  import { Internals as Internals60 } from "remotion";
@@ -37257,7 +37273,7 @@ var QuickSwitcherNoResults = ({ query, mode }) => {
37257
37273
  };
37258
37274
 
37259
37275
  // src/components/QuickSwitcher/QuickSwitcherResult.tsx
37260
- import { useEffect as useEffect73, useMemo as useMemo116, useRef as useRef39, useState as useState73 } from "react";
37276
+ import { useEffect as useEffect74, useMemo as useMemo116, useRef as useRef40, useState as useState73 } from "react";
37261
37277
  import { jsx as jsx220, jsxs as jsxs113, Fragment as Fragment34 } from "react/jsx-runtime";
37262
37278
  var container49 = {
37263
37279
  paddingLeft: 16,
@@ -37287,9 +37303,9 @@ var labelContainer = {
37287
37303
  };
37288
37304
  var QuickSwitcherResult = ({ result, selected }) => {
37289
37305
  const [hovered, setIsHovered] = useState73(false);
37290
- const ref = useRef39(null);
37306
+ const ref = useRef40(null);
37291
37307
  const keybindings = useKeybinding();
37292
- useEffect73(() => {
37308
+ useEffect74(() => {
37293
37309
  const { current } = ref;
37294
37310
  if (!current) {
37295
37311
  return;
@@ -37303,7 +37319,7 @@ var QuickSwitcherResult = ({ result, selected }) => {
37303
37319
  current.removeEventListener("mouseleave", onMouseLeave);
37304
37320
  };
37305
37321
  }, []);
37306
- useEffect73(() => {
37322
+ useEffect74(() => {
37307
37323
  if (!selected) {
37308
37324
  return;
37309
37325
  }
@@ -37320,7 +37336,7 @@ var QuickSwitcherResult = ({ result, selected }) => {
37320
37336
  binding.unregister();
37321
37337
  };
37322
37338
  }, [keybindings, result.onSelected, selected]);
37323
- useEffect73(() => {
37339
+ useEffect74(() => {
37324
37340
  if (selected) {
37325
37341
  ref.current?.scrollIntoView({
37326
37342
  block: "nearest",
@@ -37534,13 +37550,13 @@ var QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio }
37534
37550
  selectedIndex: 0
37535
37551
  };
37536
37552
  });
37537
- useEffect74(() => {
37553
+ useEffect75(() => {
37538
37554
  setState({
37539
37555
  query: mapModeToQuery(initialMode),
37540
37556
  selectedIndex: 0
37541
37557
  });
37542
37558
  }, [initialMode, invocationTimestamp]);
37543
- const inputRef = useRef40(null);
37559
+ const inputRef = useRef41(null);
37544
37560
  const selectComposition = useSelectComposition();
37545
37561
  const closeMenu = useCallback106(() => {
37546
37562
  return;
@@ -37608,7 +37624,7 @@ var QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio }
37608
37624
  };
37609
37625
  });
37610
37626
  }, []);
37611
- useEffect74(() => {
37627
+ useEffect75(() => {
37612
37628
  const binding = keybindings.registerKeybinding({
37613
37629
  key: "ArrowUp",
37614
37630
  callback: onArrowUp,
@@ -37622,7 +37638,7 @@ var QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio }
37622
37638
  binding.unregister();
37623
37639
  };
37624
37640
  }, [keybindings, onArrowDown, onArrowUp]);
37625
- useEffect74(() => {
37641
+ useEffect75(() => {
37626
37642
  if (mode !== "docs") {
37627
37643
  return;
37628
37644
  }
@@ -37647,7 +37663,7 @@ var QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio }
37647
37663
  cancelled = true;
37648
37664
  };
37649
37665
  }, [actualQuery, mode]);
37650
- useEffect74(() => {
37666
+ useEffect75(() => {
37651
37667
  const binding = keybindings.registerKeybinding({
37652
37668
  key: "ArrowDown",
37653
37669
  callback: onArrowDown,
@@ -38139,10 +38155,10 @@ import { getDefaultOutLocation } from "@remotion/studio-shared";
38139
38155
  import {
38140
38156
  useCallback as useCallback126,
38141
38157
  useContext as useContext81,
38142
- useEffect as useEffect77,
38158
+ useEffect as useEffect78,
38143
38159
  useMemo as useMemo128,
38144
38160
  useReducer as useReducer2,
38145
- useRef as useRef42,
38161
+ useRef as useRef43,
38146
38162
  useState as useState80
38147
38163
  } from "react";
38148
38164
 
@@ -38309,7 +38325,7 @@ import { useCallback as useCallback111 } from "react";
38309
38325
  import { BrowserSafeApis } from "@remotion/renderer/client";
38310
38326
 
38311
38327
  // src/components/RenderModal/CliCopyButton.tsx
38312
- import { useCallback as useCallback110, useEffect as useEffect75, useMemo as useMemo121, useState as useState77 } from "react";
38328
+ import { useCallback as useCallback110, useEffect as useEffect76, useMemo as useMemo121, useState as useState77 } from "react";
38313
38329
  import { jsx as jsx232 } from "react/jsx-runtime";
38314
38330
  var svgStyle2 = {
38315
38331
  width: 16,
@@ -38360,7 +38376,7 @@ var CliCopyButton = ({
38360
38376
  const onPointerLeave = useCallback110(() => {
38361
38377
  setHovered(false);
38362
38378
  }, []);
38363
- useEffect75(() => {
38379
+ useEffect76(() => {
38364
38380
  if (!copied) {
38365
38381
  return;
38366
38382
  }
@@ -39682,14 +39698,14 @@ import { BrowserSafeApis as BrowserSafeApis4 } from "@remotion/renderer/client";
39682
39698
  import { useCallback as useCallback118, useMemo as useMemo123 } from "react";
39683
39699
 
39684
39700
  // src/helpers/use-file-existence.ts
39685
- import { useContext as useContext80, useEffect as useEffect76, useRef as useRef41, useState as useState79 } from "react";
39701
+ import { useContext as useContext80, useEffect as useEffect77, useRef as useRef42, useState as useState79 } from "react";
39686
39702
  var useFileExistence = (outName) => {
39687
39703
  const [exists, setExists] = useState79(false);
39688
39704
  const { previewServerState: state, subscribeToEvent } = useContext80(StudioServerConnectionCtx);
39689
39705
  const clientId = state.type === "connected" ? state.clientId : undefined;
39690
- const currentOutName = useRef41("");
39706
+ const currentOutName = useRef42("");
39691
39707
  currentOutName.current = outName;
39692
- useEffect76(() => {
39708
+ useEffect77(() => {
39693
39709
  if (!clientId) {
39694
39710
  return;
39695
39711
  }
@@ -39705,7 +39721,7 @@ var useFileExistence = (outName) => {
39705
39721
  unsubscribeFromFileExistenceWatcher({ file: outName, clientId });
39706
39722
  };
39707
39723
  }, [clientId, outName]);
39708
- useEffect76(() => {
39724
+ useEffect77(() => {
39709
39725
  const listener = (event) => {
39710
39726
  if (event.type !== "watched-file-deleted") {
39711
39727
  return;
@@ -39722,7 +39738,7 @@ var useFileExistence = (outName) => {
39722
39738
  unsub();
39723
39739
  };
39724
39740
  }, [outName, subscribeToEvent]);
39725
- useEffect76(() => {
39741
+ useEffect77(() => {
39726
39742
  const listener = (event) => {
39727
39743
  if (event.type !== "watched-file-undeleted") {
39728
39744
  return;
@@ -41276,7 +41292,7 @@ var RenderModal = ({
41276
41292
  resolved: { result: resolvedComposition },
41277
41293
  unresolved: unresolvedComposition
41278
41294
  } = context;
41279
- const isMounted = useRef42(true);
41295
+ const isMounted = useRef43(true);
41280
41296
  const [isVideo] = useState80(() => {
41281
41297
  return typeof resolvedComposition.durationInFrames === "undefined" ? true : resolvedComposition.durationInFrames > 1;
41282
41298
  });
@@ -41774,7 +41790,7 @@ var RenderModal = ({
41774
41790
  offthreadVideoThreads,
41775
41791
  mediaCacheSizeInBytes
41776
41792
  ]);
41777
- useEffect77(() => {
41793
+ useEffect78(() => {
41778
41794
  return () => {
41779
41795
  isMounted.current = false;
41780
41796
  };
@@ -41943,7 +41959,7 @@ var RenderModal = ({
41943
41959
  onClickVideo();
41944
41960
  }
41945
41961
  }, [renderMode, onClickStill, onClickSequence, onClickVideo]);
41946
- useEffect77(() => {
41962
+ useEffect78(() => {
41947
41963
  if (renderDisabled) {
41948
41964
  return;
41949
41965
  }
@@ -42252,11 +42268,86 @@ var RenderModalWithLoader = (props) => {
42252
42268
  // src/components/RenderModal/WebRenderModal.tsx
42253
42269
  import { getDefaultOutLocation as getDefaultOutLocation2 } from "@remotion/studio-shared";
42254
42270
  import { renderMediaOnWeb, renderStillOnWeb } from "@remotion/web-renderer";
42255
- import { useCallback as useCallback129, useContext as useContext82, useMemo as useMemo132, useState as useState81 } from "react";
42271
+ import { useCallback as useCallback130, useContext as useContext82, useMemo as useMemo133, useState as useState81 } from "react";
42272
+
42273
+ // src/icons/certificate.tsx
42274
+ import { jsx as jsx256 } from "react/jsx-runtime";
42275
+ var CertificateIcon = (props) => /* @__PURE__ */ jsx256("svg", {
42276
+ xmlns: "http://www.w3.org/2000/svg",
42277
+ viewBox: "0 0 576 512",
42278
+ ...props,
42279
+ children: /* @__PURE__ */ jsx256("path", {
42280
+ fill: "currentcolor",
42281
+ 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"
42282
+ })
42283
+ });
42284
+
42285
+ // src/components/RenderModal/WebRendererExperimentalBadge.tsx
42286
+ import { jsx as jsx257, jsxs as jsxs135 } from "react/jsx-runtime";
42287
+ var row8 = {
42288
+ display: "flex",
42289
+ flexDirection: "row",
42290
+ alignItems: "center",
42291
+ justifyContent: "center"
42292
+ };
42293
+ var text3 = {
42294
+ fontSize: 14,
42295
+ fontFamily: "sans-serif",
42296
+ color: LIGHT_TEXT
42297
+ };
42298
+ var icon7 = {
42299
+ width: 14,
42300
+ height: 14,
42301
+ flexShrink: 0,
42302
+ fill: WARNING_COLOR,
42303
+ marginRight: 8
42304
+ };
42305
+ var link3 = {
42306
+ color: "inherit",
42307
+ textDecoration: "underline",
42308
+ fontSize: 14
42309
+ };
42310
+ var WebRendererExperimentalBadge = () => {
42311
+ return /* @__PURE__ */ jsxs135("div", {
42312
+ style: row8,
42313
+ children: [
42314
+ /* @__PURE__ */ jsx257(WarningTriangle, {
42315
+ type: "warning",
42316
+ style: icon7
42317
+ }),
42318
+ /* @__PURE__ */ jsxs135("div", {
42319
+ style: text3,
42320
+ children: [
42321
+ "The Remotion Web Renderer is experimental.",
42322
+ " ",
42323
+ /* @__PURE__ */ jsx257("a", {
42324
+ href: "https://github.com/remotion-dev/remotion/issues/5913",
42325
+ target: "_blank",
42326
+ rel: "noopener noreferrer",
42327
+ style: link3,
42328
+ children: "Track progress on GitHub"
42329
+ }),
42330
+ " ",
42331
+ "and discuss in the",
42332
+ " ",
42333
+ /* @__PURE__ */ jsx257("a", {
42334
+ href: "https://remotion.dev/discord",
42335
+ target: "_blank",
42336
+ rel: "noopener noreferrer",
42337
+ style: link3,
42338
+ children: "#web-renderer"
42339
+ }),
42340
+ " ",
42341
+ "channel on Discord."
42342
+ ]
42343
+ })
42344
+ ]
42345
+ });
42346
+ };
42256
42347
 
42257
42348
  // src/components/RenderModal/WebRenderModalAdvanced.tsx
42258
42349
  import { useCallback as useCallback127, useMemo as useMemo129 } from "react";
42259
- import { jsx as jsx256, jsxs as jsxs135 } from "react/jsx-runtime";
42350
+ import { jsx as jsx258, jsxs as jsxs136 } from "react/jsx-runtime";
42260
42351
  var tabContainer = {
42261
42352
  flex: 1
42262
42353
  };
@@ -42293,7 +42384,7 @@ var WebRenderModalAdvanced = ({
42293
42384
  {
42294
42385
  label: "No Preference",
42295
42386
  onClick: () => setHardwareAcceleration("no-preference"),
42296
- leftItem: hardwareAcceleration === "no-preference" ? /* @__PURE__ */ jsx256(Checkmark, {}) : null,
42387
+ leftItem: hardwareAcceleration === "no-preference" ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42297
42388
  id: "no-preference",
42298
42389
  keyHint: null,
42299
42390
  quickSwitcherLabel: null,
@@ -42304,7 +42395,7 @@ var WebRenderModalAdvanced = ({
42304
42395
  {
42305
42396
  label: "Prefer Hardware",
42306
42397
  onClick: () => setHardwareAcceleration("prefer-hardware"),
42307
- leftItem: hardwareAcceleration === "prefer-hardware" ? /* @__PURE__ */ jsx256(Checkmark, {}) : null,
42398
+ leftItem: hardwareAcceleration === "prefer-hardware" ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42308
42399
  id: "prefer-hardware",
42309
42400
  keyHint: null,
42310
42401
  quickSwitcherLabel: null,
@@ -42315,7 +42406,7 @@ var WebRenderModalAdvanced = ({
42315
42406
  {
42316
42407
  label: "Prefer Software",
42317
42408
  onClick: () => setHardwareAcceleration("prefer-software"),
42318
- leftItem: hardwareAcceleration === "prefer-software" ? /* @__PURE__ */ jsx256(Checkmark, {}) : null,
42409
+ leftItem: hardwareAcceleration === "prefer-software" ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42319
42410
  id: "prefer-software",
42320
42411
  keyHint: null,
42321
42412
  quickSwitcherLabel: null,
@@ -42325,10 +42416,10 @@ var WebRenderModalAdvanced = ({
42325
42416
  }
42326
42417
  ];
42327
42418
  }, [hardwareAcceleration, setHardwareAcceleration]);
42328
- return /* @__PURE__ */ jsxs135("div", {
42419
+ return /* @__PURE__ */ jsxs136("div", {
42329
42420
  style: tabContainer,
42330
42421
  children: [
42331
- /* @__PURE__ */ jsx256(NumberSetting, {
42422
+ /* @__PURE__ */ jsx258(NumberSetting, {
42332
42423
  name: "Delay Render Timeout",
42333
42424
  formatter: (v) => `${v}ms`,
42334
42425
  min: 0,
@@ -42338,24 +42429,24 @@ var WebRenderModalAdvanced = ({
42338
42429
  onValueChanged: setDelayRenderTimeout,
42339
42430
  hint: "delayRenderTimeoutInMillisecondsOption"
42340
42431
  }),
42341
- /* @__PURE__ */ jsxs135("div", {
42432
+ /* @__PURE__ */ jsxs136("div", {
42342
42433
  style: optionRow,
42343
42434
  children: [
42344
- /* @__PURE__ */ jsxs135("div", {
42435
+ /* @__PURE__ */ jsxs136("div", {
42345
42436
  style: label5,
42346
42437
  children: [
42347
42438
  "Custom @remotion/media cache size ",
42348
- /* @__PURE__ */ jsx256(Spacing, {
42439
+ /* @__PURE__ */ jsx258(Spacing, {
42349
42440
  x: 0.5
42350
42441
  }),
42351
- /* @__PURE__ */ jsx256(OptionExplainerBubble, {
42442
+ /* @__PURE__ */ jsx258(OptionExplainerBubble, {
42352
42443
  id: "mediaCacheSizeInBytesOption"
42353
42444
  })
42354
42445
  ]
42355
42446
  }),
42356
- /* @__PURE__ */ jsx256("div", {
42447
+ /* @__PURE__ */ jsx258("div", {
42357
42448
  style: rightRow,
42358
- children: /* @__PURE__ */ jsx256(Checkbox, {
42449
+ children: /* @__PURE__ */ jsx258(Checkbox, {
42359
42450
  checked: mediaCacheSizeInBytes !== null,
42360
42451
  onChange: toggleCustomMediaCacheSizeInBytes,
42361
42452
  name: "media-cache-size"
@@ -42363,7 +42454,7 @@ var WebRenderModalAdvanced = ({
42363
42454
  })
42364
42455
  ]
42365
42456
  }),
42366
- mediaCacheSizeInBytes === null ? null : /* @__PURE__ */ jsx256(NumberSetting, {
42457
+ mediaCacheSizeInBytes === null ? null : /* @__PURE__ */ jsx258(NumberSetting, {
42367
42458
  name: "@remotion/media cache size",
42368
42459
  formatter: (w) => `${w} bytes`,
42369
42460
  min: 0,
@@ -42372,16 +42463,16 @@ var WebRenderModalAdvanced = ({
42372
42463
  value: mediaCacheSizeInBytes,
42373
42464
  onValueChanged: changeMediaCacheSizeInBytes
42374
42465
  }),
42375
- renderMode === "video" ? /* @__PURE__ */ jsxs135("div", {
42466
+ renderMode === "video" ? /* @__PURE__ */ jsxs136("div", {
42376
42467
  style: optionRow,
42377
42468
  children: [
42378
- /* @__PURE__ */ jsx256("div", {
42469
+ /* @__PURE__ */ jsx258("div", {
42379
42470
  style: label5,
42380
42471
  children: "Hardware Acceleration"
42381
42472
  }),
42382
- /* @__PURE__ */ jsx256("div", {
42473
+ /* @__PURE__ */ jsx258("div", {
42383
42474
  style: rightRow,
42384
- children: /* @__PURE__ */ jsx256(Combobox, {
42475
+ children: /* @__PURE__ */ jsx258(Combobox, {
42385
42476
  values: hardwareAccelerationOptions,
42386
42477
  selectedId: hardwareAcceleration,
42387
42478
  title: "Hardware Acceleration"
@@ -42394,16 +42485,16 @@ var WebRenderModalAdvanced = ({
42394
42485
  };
42395
42486
 
42396
42487
  // src/components/RenderModal/WebRenderModalAudio.tsx
42397
- import { jsx as jsx257 } from "react/jsx-runtime";
42488
+ import { jsx as jsx259 } from "react/jsx-runtime";
42398
42489
  var container60 = {
42399
42490
  flex: 1,
42400
42491
  overflowY: "auto"
42401
42492
  };
42402
42493
  var WebRenderModalAudio = ({ muted, setMuted }) => {
42403
- return /* @__PURE__ */ jsx257("div", {
42494
+ return /* @__PURE__ */ jsx259("div", {
42404
42495
  style: container60,
42405
42496
  className: VERTICAL_SCROLLBAR_CLASSNAME,
42406
- children: /* @__PURE__ */ jsx257(MutedSetting, {
42497
+ children: /* @__PURE__ */ jsx259(MutedSetting, {
42407
42498
  enforceAudioTrack: false,
42408
42499
  muted,
42409
42500
  setMuted
@@ -42413,7 +42504,7 @@ var WebRenderModalAudio = ({ muted, setMuted }) => {
42413
42504
 
42414
42505
  // src/components/RenderModal/WebRenderModalBasic.tsx
42415
42506
  import { useMemo as useMemo130 } from "react";
42416
- import { jsx as jsx258, jsxs as jsxs136, Fragment as Fragment45 } from "react/jsx-runtime";
42507
+ import { jsx as jsx260, jsxs as jsxs137, Fragment as Fragment45 } from "react/jsx-runtime";
42417
42508
  var tabContainer2 = {
42418
42509
  flex: 1
42419
42510
  };
@@ -42466,7 +42557,7 @@ var WebRenderModalBasic = ({
42466
42557
  return {
42467
42558
  label: humanReadableLogLevel(level),
42468
42559
  onClick: () => setLogLevel(level),
42469
- leftItem: logLevel === level ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42560
+ leftItem: logLevel === level ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
42470
42561
  id: level,
42471
42562
  keyHint: null,
42472
42563
  quickSwitcherLabel: null,
@@ -42481,7 +42572,7 @@ var WebRenderModalBasic = ({
42481
42572
  {
42482
42573
  label: "MP4",
42483
42574
  onClick: () => setContainerFormat("mp4"),
42484
- leftItem: container61 === "mp4" ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42575
+ leftItem: container61 === "mp4" ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
42485
42576
  id: "mp4",
42486
42577
  keyHint: null,
42487
42578
  quickSwitcherLabel: null,
@@ -42492,7 +42583,7 @@ var WebRenderModalBasic = ({
42492
42583
  {
42493
42584
  label: "WebM",
42494
42585
  onClick: () => setContainerFormat("webm"),
42495
- leftItem: container61 === "webm" ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42586
+ leftItem: container61 === "webm" ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
42496
42587
  id: "webm",
42497
42588
  keyHint: null,
42498
42589
  quickSwitcherLabel: null,
@@ -42507,7 +42598,7 @@ var WebRenderModalBasic = ({
42507
42598
  {
42508
42599
  label: "H.264",
42509
42600
  onClick: () => setCodec("h264"),
42510
- leftItem: codec === "h264" ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42601
+ leftItem: codec === "h264" ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
42511
42602
  id: "h264",
42512
42603
  keyHint: null,
42513
42604
  quickSwitcherLabel: null,
@@ -42518,7 +42609,7 @@ var WebRenderModalBasic = ({
42518
42609
  {
42519
42610
  label: "H.265",
42520
42611
  onClick: () => setCodec("h265"),
42521
- leftItem: codec === "h265" ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42612
+ leftItem: codec === "h265" ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
42522
42613
  id: "h265",
42523
42614
  keyHint: null,
42524
42615
  quickSwitcherLabel: null,
@@ -42529,7 +42620,7 @@ var WebRenderModalBasic = ({
42529
42620
  {
42530
42621
  label: "VP8",
42531
42622
  onClick: () => setCodec("vp8"),
42532
- leftItem: codec === "vp8" ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42623
+ leftItem: codec === "vp8" ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
42533
42624
  id: "vp8",
42534
42625
  keyHint: null,
42535
42626
  quickSwitcherLabel: null,
@@ -42540,7 +42631,7 @@ var WebRenderModalBasic = ({
42540
42631
  {
42541
42632
  label: "VP9",
42542
42633
  onClick: () => setCodec("vp9"),
42543
- leftItem: codec === "vp9" ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42634
+ leftItem: codec === "vp9" ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
42544
42635
  id: "vp9",
42545
42636
  keyHint: null,
42546
42637
  quickSwitcherLabel: null,
@@ -42551,7 +42642,7 @@ var WebRenderModalBasic = ({
42551
42642
  {
42552
42643
  label: "AV1",
42553
42644
  onClick: () => setCodec("av1"),
42554
- leftItem: codec === "av1" ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42645
+ leftItem: codec === "av1" ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
42555
42646
  id: "av1",
42556
42647
  keyHint: null,
42557
42648
  quickSwitcherLabel: null,
@@ -42561,38 +42652,38 @@ var WebRenderModalBasic = ({
42561
42652
  }
42562
42653
  ];
42563
42654
  }, [codec, setCodec]);
42564
- return /* @__PURE__ */ jsxs136("div", {
42655
+ return /* @__PURE__ */ jsxs137("div", {
42565
42656
  style: tabContainer2,
42566
42657
  children: [
42567
- renderMode === "still" ? /* @__PURE__ */ jsxs136(Fragment45, {
42658
+ renderMode === "still" ? /* @__PURE__ */ jsxs137(Fragment45, {
42568
42659
  children: [
42569
- /* @__PURE__ */ jsxs136("div", {
42660
+ /* @__PURE__ */ jsxs137("div", {
42570
42661
  style: optionRow,
42571
42662
  children: [
42572
- /* @__PURE__ */ jsx258("div", {
42663
+ /* @__PURE__ */ jsx260("div", {
42573
42664
  style: label5,
42574
42665
  children: "Format"
42575
42666
  }),
42576
- /* @__PURE__ */ jsx258("div", {
42667
+ /* @__PURE__ */ jsx260("div", {
42577
42668
  style: rightRow,
42578
- children: /* @__PURE__ */ jsx258(SegmentedControl, {
42669
+ children: /* @__PURE__ */ jsx260(SegmentedControl, {
42579
42670
  items: imageFormatOptions,
42580
42671
  needsWrapping: true
42581
42672
  })
42582
42673
  })
42583
42674
  ]
42584
42675
  }),
42585
- resolvedComposition.durationInFrames > 1 ? /* @__PURE__ */ jsxs136("div", {
42676
+ resolvedComposition.durationInFrames > 1 ? /* @__PURE__ */ jsxs137("div", {
42586
42677
  style: optionRow,
42587
42678
  children: [
42588
- /* @__PURE__ */ jsx258("div", {
42679
+ /* @__PURE__ */ jsx260("div", {
42589
42680
  style: label5,
42590
42681
  children: "Frame"
42591
42682
  }),
42592
- /* @__PURE__ */ jsx258("div", {
42683
+ /* @__PURE__ */ jsx260("div", {
42593
42684
  style: rightRow,
42594
- children: /* @__PURE__ */ jsx258(RightAlignInput, {
42595
- children: /* @__PURE__ */ jsx258(InputDragger, {
42685
+ children: /* @__PURE__ */ jsx260(RightAlignInput, {
42686
+ children: /* @__PURE__ */ jsx260(InputDragger, {
42596
42687
  value: frame2,
42597
42688
  onTextChange: onFrameChanged,
42598
42689
  placeholder: `0-${resolvedComposition.durationInFrames - 1}`,
@@ -42609,18 +42700,18 @@ var WebRenderModalBasic = ({
42609
42700
  ]
42610
42701
  }) : null
42611
42702
  ]
42612
- }) : /* @__PURE__ */ jsxs136(Fragment45, {
42703
+ }) : /* @__PURE__ */ jsxs137(Fragment45, {
42613
42704
  children: [
42614
- /* @__PURE__ */ jsxs136("div", {
42705
+ /* @__PURE__ */ jsxs137("div", {
42615
42706
  style: optionRow,
42616
42707
  children: [
42617
- /* @__PURE__ */ jsx258("div", {
42708
+ /* @__PURE__ */ jsx260("div", {
42618
42709
  style: label5,
42619
42710
  children: "Container"
42620
42711
  }),
42621
- /* @__PURE__ */ jsx258("div", {
42712
+ /* @__PURE__ */ jsx260("div", {
42622
42713
  style: rightRow,
42623
- children: /* @__PURE__ */ jsx258(Combobox, {
42714
+ children: /* @__PURE__ */ jsx260(Combobox, {
42624
42715
  values: containerOptions,
42625
42716
  selectedId: container61,
42626
42717
  title: "Container"
@@ -42628,24 +42719,24 @@ var WebRenderModalBasic = ({
42628
42719
  })
42629
42720
  ]
42630
42721
  }),
42631
- /* @__PURE__ */ jsxs136("div", {
42722
+ /* @__PURE__ */ jsxs137("div", {
42632
42723
  style: optionRow,
42633
42724
  children: [
42634
- /* @__PURE__ */ jsxs136("div", {
42725
+ /* @__PURE__ */ jsxs137("div", {
42635
42726
  style: label5,
42636
42727
  children: [
42637
42728
  "Codec",
42638
- /* @__PURE__ */ jsx258(Spacing, {
42729
+ /* @__PURE__ */ jsx260(Spacing, {
42639
42730
  x: 0.5
42640
42731
  }),
42641
- /* @__PURE__ */ jsx258(OptionExplainerBubble, {
42732
+ /* @__PURE__ */ jsx260(OptionExplainerBubble, {
42642
42733
  id: "videoCodecOption"
42643
42734
  })
42644
42735
  ]
42645
42736
  }),
42646
- /* @__PURE__ */ jsx258("div", {
42737
+ /* @__PURE__ */ jsx260("div", {
42647
42738
  style: rightRow,
42648
- children: /* @__PURE__ */ jsx258(Combobox, {
42739
+ children: /* @__PURE__ */ jsx260(Combobox, {
42649
42740
  values: codecOptions,
42650
42741
  selectedId: codec,
42651
42742
  title: "Codec"
@@ -42653,7 +42744,7 @@ var WebRenderModalBasic = ({
42653
42744
  })
42654
42745
  ]
42655
42746
  }),
42656
- /* @__PURE__ */ jsx258(FrameRangeSetting, {
42747
+ /* @__PURE__ */ jsx260(FrameRangeSetting, {
42657
42748
  durationInFrames: resolvedComposition.durationInFrames,
42658
42749
  startFrame: startFrame ?? 0,
42659
42750
  endFrame: endFrame ?? resolvedComposition.durationInFrames - 1,
@@ -42662,7 +42753,7 @@ var WebRenderModalBasic = ({
42662
42753
  })
42663
42754
  ]
42664
42755
  }),
42665
- /* @__PURE__ */ jsx258(RenderModalOutputName, {
42756
+ /* @__PURE__ */ jsx260(RenderModalOutputName, {
42666
42757
  existence: false,
42667
42758
  inputStyle: input,
42668
42759
  outName,
@@ -42670,24 +42761,24 @@ var WebRenderModalBasic = ({
42670
42761
  validationMessage,
42671
42762
  label: "Download name"
42672
42763
  }),
42673
- /* @__PURE__ */ jsxs136("div", {
42764
+ /* @__PURE__ */ jsxs137("div", {
42674
42765
  style: optionRow,
42675
42766
  children: [
42676
- /* @__PURE__ */ jsxs136("div", {
42767
+ /* @__PURE__ */ jsxs137("div", {
42677
42768
  style: label5,
42678
42769
  children: [
42679
42770
  "Log Level ",
42680
- /* @__PURE__ */ jsx258(Spacing, {
42771
+ /* @__PURE__ */ jsx260(Spacing, {
42681
42772
  x: 0.5
42682
42773
  }),
42683
- /* @__PURE__ */ jsx258(OptionExplainerBubble, {
42774
+ /* @__PURE__ */ jsx260(OptionExplainerBubble, {
42684
42775
  id: "logLevelOption"
42685
42776
  })
42686
42777
  ]
42687
42778
  }),
42688
- /* @__PURE__ */ jsx258("div", {
42779
+ /* @__PURE__ */ jsx260("div", {
42689
42780
  style: rightRow,
42690
- children: /* @__PURE__ */ jsx258(Combobox, {
42781
+ children: /* @__PURE__ */ jsx260(Combobox, {
42691
42782
  values: logLevelOptions,
42692
42783
  selectedId: logLevel,
42693
42784
  title: "Log Level"
@@ -42699,12 +42790,286 @@ var WebRenderModalBasic = ({
42699
42790
  });
42700
42791
  };
42701
42792
 
42702
- // src/components/RenderModal/WebRenderModalPicture.tsx
42793
+ // src/components/RenderModal/WebRenderModalLicense.tsx
42703
42794
  import { useCallback as useCallback128, useMemo as useMemo131 } from "react";
42704
- import { jsx as jsx259, jsxs as jsxs137 } from "react/jsx-runtime";
42795
+ import { jsx as jsx261, jsxs as jsxs138, Fragment as Fragment46 } from "react/jsx-runtime";
42796
+ var row9 = {
42797
+ display: "flex",
42798
+ flexDirection: "row",
42799
+ paddingLeft: 16,
42800
+ paddingRight: 16
42801
+ };
42705
42802
  var tabContainer3 = {
42706
42803
  flex: 1
42707
42804
  };
42805
+ var descriptionStyle = {
42806
+ color: LIGHT_TEXT,
42807
+ fontSize: 14,
42808
+ fontFamily: "sans-serif",
42809
+ paddingLeft: 16,
42810
+ paddingRight: 16,
42811
+ paddingTop: 16,
42812
+ paddingBottom: 8,
42813
+ lineHeight: 1.5
42814
+ };
42815
+ var paddedDescriptionStyle = {
42816
+ color: LIGHT_TEXT,
42817
+ fontSize: 14,
42818
+ fontFamily: "sans-serif",
42819
+ padding: 9,
42820
+ border: "1px solid " + INPUT_BORDER_COLOR_UNHOVERED,
42821
+ borderRadius: 8,
42822
+ lineHeight: 1.5,
42823
+ marginLeft: 16,
42824
+ marginRight: 16
42825
+ };
42826
+ var descriptionLink = {
42827
+ color: "white",
42828
+ fontSize: 14
42829
+ };
42830
+ var checkboxLabel = {
42831
+ fontSize: 14,
42832
+ lineHeight: "40px",
42833
+ color: LIGHT_TEXT,
42834
+ flex: 1,
42835
+ fontFamily: "sans-serif",
42836
+ cursor: "pointer",
42837
+ userSelect: "none"
42838
+ };
42839
+ var inputStyle2 = {
42840
+ minWidth: 250
42841
+ };
42842
+ var justifyCenter = {
42843
+ display: "flex",
42844
+ alignItems: "center",
42845
+ gap: 10,
42846
+ flex: 1
42847
+ };
42848
+ var codeStyle = {
42849
+ fontSize: 14,
42850
+ fontFamily: "monospace",
42851
+ color: BLUE
42852
+ };
42853
+ var codeLine = {
42854
+ fontSize: 14,
42855
+ fontFamily: "monospace",
42856
+ color: LIGHT_TEXT,
42857
+ backgroundColor: INPUT_BACKGROUND,
42858
+ padding: 6,
42859
+ borderRadius: 3,
42860
+ marginTop: 6,
42861
+ overflowX: "auto",
42862
+ maxWidth: "100%"
42863
+ };
42864
+ var codeLineSmall = {
42865
+ ...codeLine,
42866
+ fontSize: 11
42867
+ };
42868
+ var LICENSE_KEY_LENGTH = 55;
42869
+ var LICENSE_KEY_PREFIX = "rm_pub_";
42870
+ var validateLicenseKey = (key5) => {
42871
+ if (key5.length === 0) {
42872
+ return { valid: false, message: null };
42873
+ }
42874
+ if (!key5.startsWith(LICENSE_KEY_PREFIX)) {
42875
+ return {
42876
+ valid: false,
42877
+ message: `License key must start with "${LICENSE_KEY_PREFIX}"`
42878
+ };
42879
+ }
42880
+ const afterPrefix = key5.slice(LICENSE_KEY_PREFIX.length);
42881
+ if (!/^[a-zA-Z0-9]*$/.test(afterPrefix)) {
42882
+ return {
42883
+ valid: false,
42884
+ message: "License key must contain only alphanumeric characters after the prefix"
42885
+ };
42886
+ }
42887
+ if (key5.length !== LICENSE_KEY_LENGTH) {
42888
+ return {
42889
+ valid: false,
42890
+ message: `License key must be ${LICENSE_KEY_LENGTH} characters long`
42891
+ };
42892
+ }
42893
+ return { valid: true, message: null };
42894
+ };
42895
+ var WebRenderModalLicense = ({
42896
+ licenseKey,
42897
+ setLicenseKey,
42898
+ initialPublicLicenseKey
42899
+ }) => {
42900
+ const onFreeLicenseChange = useCallback128(() => {
42901
+ setLicenseKey("free-license");
42902
+ }, [setLicenseKey]);
42903
+ const onCompanyLicenseChange = useCallback128(() => {
42904
+ setLicenseKey(initialPublicLicenseKey ?? "");
42905
+ }, [initialPublicLicenseKey, setLicenseKey]);
42906
+ const onLicenseKeyChange = useCallback128((e) => {
42907
+ setLicenseKey(e.target.value);
42908
+ }, [setLicenseKey]);
42909
+ const licenseValidation = useMemo131(() => {
42910
+ if (licenseKey === null || licenseKey === "free-license") {
42911
+ return { valid: true, message: null };
42912
+ }
42913
+ return validateLicenseKey(licenseKey);
42914
+ }, [licenseKey]);
42915
+ return /* @__PURE__ */ jsxs138("div", {
42916
+ style: tabContainer3,
42917
+ children: [
42918
+ /* @__PURE__ */ jsxs138("div", {
42919
+ style: descriptionStyle,
42920
+ children: [
42921
+ "Remotion is free if you are an individual or company with a headcount of 3 or less. See",
42922
+ " ",
42923
+ /* @__PURE__ */ jsx261("a", {
42924
+ style: descriptionLink,
42925
+ href: "https://remotion.dev/license",
42926
+ children: "LICENSE.md"
42927
+ }),
42928
+ "."
42929
+ ]
42930
+ }),
42931
+ /* @__PURE__ */ jsx261("div", {
42932
+ style: row9,
42933
+ children: /* @__PURE__ */ jsxs138("div", {
42934
+ style: justifyCenter,
42935
+ children: [
42936
+ /* @__PURE__ */ jsx261(Checkbox, {
42937
+ checked: licenseKey === "free-license",
42938
+ onChange: onFreeLicenseChange,
42939
+ name: "free-license",
42940
+ rounded: true
42941
+ }),
42942
+ /* @__PURE__ */ jsxs138("div", {
42943
+ style: checkboxLabel,
42944
+ onClick: onFreeLicenseChange,
42945
+ children: [
42946
+ "I am eligible for the Free License, ",
42947
+ "don't",
42948
+ " print a warning"
42949
+ ]
42950
+ })
42951
+ ]
42952
+ })
42953
+ }),
42954
+ licenseKey === "free-license" ? /* @__PURE__ */ jsxs138("div", {
42955
+ style: paddedDescriptionStyle,
42956
+ children: [
42957
+ "Enjoy Remotion! Add the following to",
42958
+ " ",
42959
+ /* @__PURE__ */ jsx261("code", {
42960
+ style: codeStyle,
42961
+ children: "remotion.config.ts"
42962
+ }),
42963
+ " to persist this setting:",
42964
+ /* @__PURE__ */ jsx261("div", {
42965
+ style: codeLine,
42966
+ children: "Config.setPublicLicenseKey('free-license');"
42967
+ })
42968
+ ]
42969
+ }) : null,
42970
+ /* @__PURE__ */ jsx261("div", {
42971
+ style: row9,
42972
+ children: /* @__PURE__ */ jsxs138("div", {
42973
+ style: justifyCenter,
42974
+ children: [
42975
+ /* @__PURE__ */ jsx261(Checkbox, {
42976
+ checked: licenseKey !== "free-license" && licenseKey !== null,
42977
+ onChange: onCompanyLicenseChange,
42978
+ name: "company-license",
42979
+ rounded: true
42980
+ }),
42981
+ /* @__PURE__ */ jsx261("div", {
42982
+ style: checkboxLabel,
42983
+ onClick: onCompanyLicenseChange,
42984
+ children: "I have a Company License"
42985
+ })
42986
+ ]
42987
+ })
42988
+ }),
42989
+ licenseKey !== "free-license" && licenseKey !== null ? /* @__PURE__ */ jsxs138("div", {
42990
+ style: paddedDescriptionStyle,
42991
+ children: [
42992
+ "Add your public license from",
42993
+ " ",
42994
+ /* @__PURE__ */ jsx261("a", {
42995
+ href: "https://remotion.pro/dashboard",
42996
+ target: "_blank",
42997
+ style: descriptionLink,
42998
+ children: "remotion.pro"
42999
+ }),
43000
+ " ",
43001
+ "key below.",
43002
+ /* @__PURE__ */ jsx261(Spacing, {
43003
+ y: 1,
43004
+ block: true
43005
+ }),
43006
+ /* @__PURE__ */ jsx261(RemotionInput, {
43007
+ value: licenseKey,
43008
+ onChange: onLicenseKeyChange,
43009
+ placeholder: "remotion.pro public license key (starts with rm_pub_)",
43010
+ status: licenseValidation.valid || licenseKey.length === 0 ? "ok" : "error",
43011
+ rightAlign: false,
43012
+ style: inputStyle2,
43013
+ autoFocus: true
43014
+ }),
43015
+ licenseValidation.message ? /* @__PURE__ */ jsxs138(Fragment46, {
43016
+ children: [
43017
+ /* @__PURE__ */ jsx261(Spacing, {
43018
+ y: 1,
43019
+ block: true
43020
+ }),
43021
+ /* @__PURE__ */ jsx261(ValidationMessage, {
43022
+ message: licenseValidation.message,
43023
+ align: "flex-start",
43024
+ type: "error"
43025
+ })
43026
+ ]
43027
+ }) : null,
43028
+ licenseValidation.valid && licenseKey.length > 0 ? /* @__PURE__ */ jsxs138(Fragment46, {
43029
+ children: [
43030
+ /* @__PURE__ */ jsx261(Spacing, {
43031
+ y: 1,
43032
+ block: true
43033
+ }),
43034
+ "Add the following to",
43035
+ " ",
43036
+ /* @__PURE__ */ jsx261("code", {
43037
+ style: codeStyle,
43038
+ children: "remotion.config.ts"
43039
+ }),
43040
+ " to persist this setting:",
43041
+ /* @__PURE__ */ jsx261("div", {
43042
+ style: codeLineSmall,
43043
+ children: "Config.setPublicLicenseKey('" + licenseKey + "');"
43044
+ })
43045
+ ]
43046
+ }) : null
43047
+ ]
43048
+ }) : null,
43049
+ licenseKey === null ? /* @__PURE__ */ jsxs138("div", {
43050
+ style: descriptionStyle,
43051
+ children: [
43052
+ "If you are not eligible for the free license, you need to obtain a",
43053
+ " ",
43054
+ /* @__PURE__ */ jsx261("a", {
43055
+ style: descriptionLink,
43056
+ target: "_blank",
43057
+ href: "https://remotion.pro/license",
43058
+ children: "Company License"
43059
+ }),
43060
+ "."
43061
+ ]
43062
+ }) : null
43063
+ ]
43064
+ });
43065
+ };
43066
+
43067
+ // src/components/RenderModal/WebRenderModalPicture.tsx
43068
+ import { useCallback as useCallback129, useMemo as useMemo132 } from "react";
43069
+ import { jsx as jsx262, jsxs as jsxs139 } from "react/jsx-runtime";
43070
+ var tabContainer4 = {
43071
+ flex: 1
43072
+ };
42708
43073
  var WebRenderModalPicture = ({
42709
43074
  renderMode,
42710
43075
  videoBitrate,
@@ -42714,12 +43079,12 @@ var WebRenderModalPicture = ({
42714
43079
  transparent,
42715
43080
  setTransparent
42716
43081
  }) => {
42717
- const qualityOptions = useMemo131(() => {
43082
+ const qualityOptions = useMemo132(() => {
42718
43083
  return [
42719
43084
  {
42720
43085
  label: "Very Low",
42721
43086
  onClick: () => setVideoBitrate("very-low"),
42722
- leftItem: videoBitrate === "very-low" ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
43087
+ leftItem: videoBitrate === "very-low" ? /* @__PURE__ */ jsx262(Checkmark, {}) : null,
42723
43088
  id: "very-low",
42724
43089
  keyHint: null,
42725
43090
  quickSwitcherLabel: null,
@@ -42730,7 +43095,7 @@ var WebRenderModalPicture = ({
42730
43095
  {
42731
43096
  label: "Low",
42732
43097
  onClick: () => setVideoBitrate("low"),
42733
- leftItem: videoBitrate === "low" ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
43098
+ leftItem: videoBitrate === "low" ? /* @__PURE__ */ jsx262(Checkmark, {}) : null,
42734
43099
  id: "low",
42735
43100
  keyHint: null,
42736
43101
  quickSwitcherLabel: null,
@@ -42741,7 +43106,7 @@ var WebRenderModalPicture = ({
42741
43106
  {
42742
43107
  label: "Medium",
42743
43108
  onClick: () => setVideoBitrate("medium"),
42744
- leftItem: videoBitrate === "medium" ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
43109
+ leftItem: videoBitrate === "medium" ? /* @__PURE__ */ jsx262(Checkmark, {}) : null,
42745
43110
  id: "medium",
42746
43111
  keyHint: null,
42747
43112
  quickSwitcherLabel: null,
@@ -42752,7 +43117,7 @@ var WebRenderModalPicture = ({
42752
43117
  {
42753
43118
  label: "High",
42754
43119
  onClick: () => setVideoBitrate("high"),
42755
- leftItem: videoBitrate === "high" ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
43120
+ leftItem: videoBitrate === "high" ? /* @__PURE__ */ jsx262(Checkmark, {}) : null,
42756
43121
  id: "high",
42757
43122
  keyHint: null,
42758
43123
  quickSwitcherLabel: null,
@@ -42763,7 +43128,7 @@ var WebRenderModalPicture = ({
42763
43128
  {
42764
43129
  label: "Very High",
42765
43130
  onClick: () => setVideoBitrate("very-high"),
42766
- leftItem: videoBitrate === "very-high" ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
43131
+ leftItem: videoBitrate === "very-high" ? /* @__PURE__ */ jsx262(Checkmark, {}) : null,
42767
43132
  id: "very-high",
42768
43133
  keyHint: null,
42769
43134
  quickSwitcherLabel: null,
@@ -42773,25 +43138,25 @@ var WebRenderModalPicture = ({
42773
43138
  }
42774
43139
  ];
42775
43140
  }, [videoBitrate, setVideoBitrate]);
42776
- const onTransparentChanged = useCallback128((e) => {
43141
+ const onTransparentChanged = useCallback129((e) => {
42777
43142
  setTransparent(e.target.checked);
42778
43143
  }, [setTransparent]);
42779
43144
  if (renderMode !== "video") {
42780
43145
  return null;
42781
43146
  }
42782
- return /* @__PURE__ */ jsxs137("div", {
42783
- style: tabContainer3,
43147
+ return /* @__PURE__ */ jsxs139("div", {
43148
+ style: tabContainer4,
42784
43149
  children: [
42785
- /* @__PURE__ */ jsxs137("div", {
43150
+ /* @__PURE__ */ jsxs139("div", {
42786
43151
  style: optionRow,
42787
43152
  children: [
42788
- /* @__PURE__ */ jsx259("div", {
43153
+ /* @__PURE__ */ jsx262("div", {
42789
43154
  style: label5,
42790
43155
  children: "Quality"
42791
43156
  }),
42792
- /* @__PURE__ */ jsx259("div", {
43157
+ /* @__PURE__ */ jsx262("div", {
42793
43158
  style: rightRow,
42794
- children: /* @__PURE__ */ jsx259(Combobox, {
43159
+ children: /* @__PURE__ */ jsx262(Combobox, {
42795
43160
  values: qualityOptions,
42796
43161
  selectedId: videoBitrate,
42797
43162
  title: "Quality"
@@ -42799,7 +43164,7 @@ var WebRenderModalPicture = ({
42799
43164
  })
42800
43165
  ]
42801
43166
  }),
42802
- /* @__PURE__ */ jsx259(NumberSetting, {
43167
+ /* @__PURE__ */ jsx262(NumberSetting, {
42803
43168
  name: "Keyframe Interval",
42804
43169
  formatter: (v) => `${v}s`,
42805
43170
  min: 1,
@@ -42808,16 +43173,16 @@ var WebRenderModalPicture = ({
42808
43173
  value: keyframeIntervalInSeconds,
42809
43174
  onValueChanged: setKeyframeIntervalInSeconds
42810
43175
  }),
42811
- /* @__PURE__ */ jsxs137("div", {
43176
+ /* @__PURE__ */ jsxs139("div", {
42812
43177
  style: optionRow,
42813
43178
  children: [
42814
- /* @__PURE__ */ jsx259("div", {
43179
+ /* @__PURE__ */ jsx262("div", {
42815
43180
  style: label5,
42816
43181
  children: "Transparent"
42817
43182
  }),
42818
- /* @__PURE__ */ jsx259("div", {
43183
+ /* @__PURE__ */ jsx262("div", {
42819
43184
  style: rightRow,
42820
- children: /* @__PURE__ */ jsx259(Checkbox, {
43185
+ children: /* @__PURE__ */ jsx262(Checkbox, {
42821
43186
  checked: transparent,
42822
43187
  onChange: onTransparentChanged,
42823
43188
  name: "transparent"
@@ -42830,7 +43195,7 @@ var WebRenderModalPicture = ({
42830
43195
  };
42831
43196
 
42832
43197
  // src/components/RenderModal/WebRenderModal.tsx
42833
- import { jsx as jsx260, jsxs as jsxs138 } from "react/jsx-runtime";
43198
+ import { jsx as jsx263, jsxs as jsxs140 } from "react/jsx-runtime";
42834
43199
  var invalidCharacters2 = ["?", "*", "+", ":", "%"];
42835
43200
  var isValidStillExtension2 = (extension, stillImageFormat) => {
42836
43201
  if (stillImageFormat === "jpeg" && extension === "jpg") {
@@ -42879,7 +43244,8 @@ var WebRenderModal = ({
42879
43244
  defaultProps,
42880
43245
  inFrameMark,
42881
43246
  outFrameMark,
42882
- initialLogLevel
43247
+ initialLogLevel,
43248
+ initialLicenseKey
42883
43249
  }) => {
42884
43250
  const context = useContext82(ResolvedCompositionContext);
42885
43251
  if (!context) {
@@ -42911,19 +43277,20 @@ var WebRenderModal = ({
42911
43277
  const [renderProgress, setRenderProgress] = useState81(null);
42912
43278
  const [transparent, setTransparent] = useState81(false);
42913
43279
  const [muted, setMuted] = useState81(false);
42914
- const finalEndFrame = useMemo132(() => {
43280
+ const [licenseKey, setLicenseKey] = useState81(initialLicenseKey);
43281
+ const finalEndFrame = useMemo133(() => {
42915
43282
  if (endFrame === null) {
42916
43283
  return resolvedComposition.durationInFrames - 1;
42917
43284
  }
42918
43285
  return Math.max(0, Math.min(resolvedComposition.durationInFrames - 1, endFrame));
42919
43286
  }, [endFrame, resolvedComposition.durationInFrames]);
42920
- const finalStartFrame = useMemo132(() => {
43287
+ const finalStartFrame = useMemo133(() => {
42921
43288
  if (startFrame === null) {
42922
43289
  return 0;
42923
43290
  }
42924
43291
  return Math.max(0, Math.min(finalEndFrame, startFrame));
42925
43292
  }, [finalEndFrame, startFrame]);
42926
- const frameRange = useMemo132(() => {
43293
+ const frameRange = useMemo133(() => {
42927
43294
  if (startFrame === null && endFrame === null) {
42928
43295
  return null;
42929
43296
  }
@@ -42939,21 +43306,21 @@ var WebRenderModal = ({
42939
43306
  });
42940
43307
  });
42941
43308
  const [outName, setOutName] = useState81(() => initialOutName);
42942
- const setStillFormat = useCallback129((format) => {
43309
+ const setStillFormat = useCallback130((format) => {
42943
43310
  setImageFormat(format);
42944
43311
  setOutName((prev) => {
42945
43312
  const newFileName = getStringBeforeSuffix(prev) + "." + format;
42946
43313
  return newFileName;
42947
43314
  });
42948
43315
  }, []);
42949
- const setContainerFormat = useCallback129((newContainer) => {
43316
+ const setContainerFormat = useCallback130((newContainer) => {
42950
43317
  setContainer(newContainer);
42951
43318
  setOutName((prev) => {
42952
43319
  const newFileName = getStringBeforeSuffix(prev) + "." + newContainer;
42953
43320
  return newFileName;
42954
43321
  });
42955
43322
  }, []);
42956
- const onRenderModeChange = useCallback129((newMode) => {
43323
+ const onRenderModeChange = useCallback130((newMode) => {
42957
43324
  setRenderMode(newMode);
42958
43325
  if (newMode === "video") {
42959
43326
  setOutName((prev) => {
@@ -42967,7 +43334,7 @@ var WebRenderModal = ({
42967
43334
  });
42968
43335
  }
42969
43336
  }, [container61, imageFormat]);
42970
- const renderTabOptions = useMemo132(() => {
43337
+ const renderTabOptions = useMemo133(() => {
42971
43338
  const options = [
42972
43339
  {
42973
43340
  label: "Still",
@@ -42990,10 +43357,10 @@ var WebRenderModal = ({
42990
43357
  }
42991
43358
  return options;
42992
43359
  }, [renderMode, resolvedComposition.durationInFrames, onRenderModeChange]);
42993
- const onFrameSetDirectly = useCallback129((newFrame) => {
43360
+ const onFrameSetDirectly = useCallback130((newFrame) => {
42994
43361
  setFrame(newFrame);
42995
43362
  }, [setFrame]);
42996
- const onFrameChanged = useCallback129((e) => {
43363
+ const onFrameChanged = useCallback130((e) => {
42997
43364
  setFrame((q) => {
42998
43365
  const newFrame = parseFloat(e);
42999
43366
  if (Number.isNaN(newFrame)) {
@@ -43002,10 +43369,10 @@ var WebRenderModal = ({
43002
43369
  return newFrame;
43003
43370
  });
43004
43371
  }, [setFrame]);
43005
- const onOutNameChange = useCallback129((e) => {
43372
+ const onOutNameChange = useCallback130((e) => {
43006
43373
  setOutName(e.target.value);
43007
43374
  }, []);
43008
- const outnameValidation = useMemo132(() => {
43375
+ const outnameValidation = useMemo133(() => {
43009
43376
  if (renderMode === "still") {
43010
43377
  return validateOutnameForStill({
43011
43378
  outName,
@@ -43044,7 +43411,7 @@ var WebRenderModal = ({
43044
43411
  return { valid: false, error: err };
43045
43412
  }
43046
43413
  }, [outName, imageFormat, renderMode, container61]);
43047
- const onRenderStill = useCallback129(async () => {
43414
+ const onRenderStill = useCallback130(async () => {
43048
43415
  const { blob } = await renderStillOnWeb({
43049
43416
  composition: {
43050
43417
  component: unresolvedComposition.component,
@@ -43061,7 +43428,8 @@ var WebRenderModal = ({
43061
43428
  inputProps,
43062
43429
  delayRenderTimeoutInMilliseconds: delayRenderTimeout,
43063
43430
  mediaCacheSizeInBytes,
43064
- logLevel
43431
+ logLevel,
43432
+ licenseKey: licenseKey ?? undefined
43065
43433
  });
43066
43434
  const url = URL.createObjectURL(blob);
43067
43435
  const a = document.createElement("a");
@@ -43085,9 +43453,10 @@ var WebRenderModal = ({
43085
43453
  outName,
43086
43454
  resolvedComposition.defaultProps,
43087
43455
  unresolvedComposition.calculateMetadata,
43088
- resolvedComposition.id
43456
+ resolvedComposition.id,
43457
+ licenseKey
43089
43458
  ]);
43090
- const onRenderVideo = useCallback129(async () => {
43459
+ const onRenderVideo = useCallback130(async () => {
43091
43460
  setRenderProgress({ renderedFrames: 0, encodedFrames: 0 });
43092
43461
  const { getBlob } = await renderMediaOnWeb({
43093
43462
  composition: {
@@ -43104,7 +43473,7 @@ var WebRenderModal = ({
43104
43473
  delayRenderTimeoutInMilliseconds: delayRenderTimeout,
43105
43474
  mediaCacheSizeInBytes,
43106
43475
  logLevel,
43107
- codec,
43476
+ videoCodec: codec,
43108
43477
  container: container61,
43109
43478
  videoBitrate,
43110
43479
  hardwareAcceleration,
@@ -43115,7 +43484,8 @@ var WebRenderModal = ({
43115
43484
  },
43116
43485
  transparent,
43117
43486
  muted,
43118
- outputTarget: "web-fs"
43487
+ outputTarget: "web-fs",
43488
+ licenseKey: licenseKey ?? undefined
43119
43489
  });
43120
43490
  setRenderProgress(null);
43121
43491
  const blob = await getBlob();
@@ -43147,39 +43517,40 @@ var WebRenderModal = ({
43147
43517
  muted,
43148
43518
  resolvedComposition.defaultProps,
43149
43519
  resolvedComposition.id,
43150
- unresolvedComposition.calculateMetadata
43520
+ unresolvedComposition.calculateMetadata,
43521
+ licenseKey
43151
43522
  ]);
43152
- const onRender = useCallback129(async () => {
43523
+ const onRender = useCallback130(async () => {
43153
43524
  if (renderMode === "still") {
43154
43525
  await onRenderStill();
43155
43526
  } else {
43156
43527
  await onRenderVideo();
43157
43528
  }
43158
43529
  }, [renderMode, onRenderStill, onRenderVideo]);
43159
- return /* @__PURE__ */ jsxs138("div", {
43530
+ return /* @__PURE__ */ jsxs140("div", {
43160
43531
  style: outerModalStyle,
43161
43532
  children: [
43162
- /* @__PURE__ */ jsx260(ModalHeader, {
43533
+ /* @__PURE__ */ jsx263(ModalHeader, {
43163
43534
  title: `Render ${resolvedComposition.id}`
43164
43535
  }),
43165
- /* @__PURE__ */ jsxs138("div", {
43536
+ /* @__PURE__ */ jsxs140("div", {
43166
43537
  style: container59,
43167
43538
  children: [
43168
- /* @__PURE__ */ jsx260(SegmentedControl, {
43539
+ /* @__PURE__ */ jsx263(SegmentedControl, {
43169
43540
  items: renderTabOptions,
43170
43541
  needsWrapping: false
43171
43542
  }),
43172
- /* @__PURE__ */ jsx260("div", {
43543
+ /* @__PURE__ */ jsx263("div", {
43173
43544
  style: flexer
43174
43545
  }),
43175
- /* @__PURE__ */ jsxs138(Button, {
43546
+ /* @__PURE__ */ jsxs140(Button, {
43176
43547
  autoFocus: true,
43177
43548
  onClick: onRender,
43178
43549
  style: buttonStyle7,
43179
43550
  disabled: !outnameValidation.valid,
43180
43551
  children: [
43181
43552
  renderProgress ? `Rendering... ${renderProgress.renderedFrames}/${finalEndFrame}` : `Render ${renderMode}`,
43182
- /* @__PURE__ */ jsx260(ShortcutHint, {
43553
+ /* @__PURE__ */ jsx263(ShortcutHint, {
43183
43554
  keyToPress: "↵",
43184
43555
  cmdOrCtrl: true
43185
43556
  })
@@ -43187,88 +43558,106 @@ var WebRenderModal = ({
43187
43558
  })
43188
43559
  ]
43189
43560
  }),
43190
- /* @__PURE__ */ jsxs138("div", {
43561
+ /* @__PURE__ */ jsx263("div", {
43562
+ style: container59,
43563
+ children: /* @__PURE__ */ jsx263(WebRendererExperimentalBadge, {})
43564
+ }),
43565
+ /* @__PURE__ */ jsxs140("div", {
43191
43566
  style: horizontalLayout,
43192
43567
  children: [
43193
- /* @__PURE__ */ jsxs138("div", {
43568
+ /* @__PURE__ */ jsxs140("div", {
43194
43569
  style: leftSidebar,
43195
43570
  children: [
43196
- /* @__PURE__ */ jsxs138(VerticalTab, {
43571
+ /* @__PURE__ */ jsxs140(VerticalTab, {
43197
43572
  style: horizontalTab,
43198
43573
  selected: tab === "general",
43199
43574
  onClick: () => setTab("general"),
43200
43575
  children: [
43201
- /* @__PURE__ */ jsx260("div", {
43576
+ /* @__PURE__ */ jsx263("div", {
43202
43577
  style: iconContainer,
43203
- children: /* @__PURE__ */ jsx260(FileIcon, {
43578
+ children: /* @__PURE__ */ jsx263(FileIcon, {
43204
43579
  style: icon6
43205
43580
  })
43206
43581
  }),
43207
43582
  "General"
43208
43583
  ]
43209
43584
  }),
43210
- /* @__PURE__ */ jsxs138(VerticalTab, {
43585
+ /* @__PURE__ */ jsxs140(VerticalTab, {
43211
43586
  style: horizontalTab,
43212
43587
  selected: tab === "data",
43213
43588
  onClick: () => setTab("data"),
43214
43589
  children: [
43215
- /* @__PURE__ */ jsx260("div", {
43590
+ /* @__PURE__ */ jsx263("div", {
43216
43591
  style: iconContainer,
43217
- children: /* @__PURE__ */ jsx260(DataIcon, {
43592
+ children: /* @__PURE__ */ jsx263(DataIcon, {
43218
43593
  style: icon6
43219
43594
  })
43220
43595
  }),
43221
43596
  "Input Props"
43222
43597
  ]
43223
43598
  }),
43224
- renderMode === "video" ? /* @__PURE__ */ jsxs138(VerticalTab, {
43599
+ renderMode === "video" ? /* @__PURE__ */ jsxs140(VerticalTab, {
43225
43600
  style: horizontalTab,
43226
43601
  selected: tab === "picture",
43227
43602
  onClick: () => setTab("picture"),
43228
43603
  children: [
43229
- /* @__PURE__ */ jsx260("div", {
43604
+ /* @__PURE__ */ jsx263("div", {
43230
43605
  style: iconContainer,
43231
- children: /* @__PURE__ */ jsx260(PicIcon, {
43606
+ children: /* @__PURE__ */ jsx263(PicIcon, {
43232
43607
  style: icon6
43233
43608
  })
43234
43609
  }),
43235
43610
  "Picture"
43236
43611
  ]
43237
43612
  }) : null,
43238
- renderMode === "video" ? /* @__PURE__ */ jsxs138(VerticalTab, {
43613
+ renderMode === "video" ? /* @__PURE__ */ jsxs140(VerticalTab, {
43239
43614
  style: horizontalTab,
43240
43615
  selected: tab === "audio",
43241
43616
  onClick: () => setTab("audio"),
43242
43617
  children: [
43243
- /* @__PURE__ */ jsx260("div", {
43618
+ /* @__PURE__ */ jsx263("div", {
43244
43619
  style: iconContainer,
43245
- children: /* @__PURE__ */ jsx260(AudioIcon, {
43620
+ children: /* @__PURE__ */ jsx263(AudioIcon, {
43246
43621
  style: icon6
43247
43622
  })
43248
43623
  }),
43249
43624
  "Audio"
43250
43625
  ]
43251
43626
  }) : null,
43252
- /* @__PURE__ */ jsxs138(VerticalTab, {
43627
+ /* @__PURE__ */ jsxs140(VerticalTab, {
43253
43628
  style: horizontalTab,
43254
43629
  selected: tab === "advanced",
43255
43630
  onClick: () => setTab("advanced"),
43256
43631
  children: [
43257
- /* @__PURE__ */ jsx260("div", {
43632
+ /* @__PURE__ */ jsx263("div", {
43633
+ style: iconContainer,
43634
+ children: /* @__PURE__ */ jsx263(GearIcon, {
43635
+ style: icon6
43636
+ })
43637
+ }),
43638
+ "Other"
43639
+ ]
43640
+ }),
43641
+ /* @__PURE__ */ jsxs140(VerticalTab, {
43642
+ style: horizontalTab,
43643
+ selected: tab === "license",
43644
+ onClick: () => setTab("license"),
43645
+ children: [
43646
+ /* @__PURE__ */ jsx263("div", {
43258
43647
  style: iconContainer,
43259
- children: /* @__PURE__ */ jsx260(FileIcon, {
43648
+ children: /* @__PURE__ */ jsx263(CertificateIcon, {
43260
43649
  style: icon6
43261
43650
  })
43262
43651
  }),
43263
- "Advanced"
43652
+ "License"
43264
43653
  ]
43265
43654
  })
43266
43655
  ]
43267
43656
  }),
43268
- /* @__PURE__ */ jsx260("div", {
43657
+ /* @__PURE__ */ jsx263("div", {
43269
43658
  style: optionsPanel,
43270
43659
  className: VERTICAL_SCROLLBAR_CLASSNAME,
43271
- children: tab === "general" ? /* @__PURE__ */ jsx260(WebRenderModalBasic, {
43660
+ children: tab === "general" ? /* @__PURE__ */ jsx263(WebRenderModalBasic, {
43272
43661
  renderMode,
43273
43662
  resolvedComposition,
43274
43663
  imageFormat,
@@ -43289,7 +43678,7 @@ var WebRenderModal = ({
43289
43678
  validationMessage: outnameValidation.valid ? null : outnameValidation.error.message,
43290
43679
  logLevel,
43291
43680
  setLogLevel
43292
- }) : tab === "data" ? /* @__PURE__ */ jsx260(DataEditor, {
43681
+ }) : tab === "data" ? /* @__PURE__ */ jsx263(DataEditor, {
43293
43682
  defaultProps: inputProps,
43294
43683
  setDefaultProps: setInputProps,
43295
43684
  unresolvedComposition,
@@ -43298,7 +43687,7 @@ var WebRenderModal = ({
43298
43687
  saving,
43299
43688
  setSaving,
43300
43689
  readOnlyStudio: false
43301
- }) : tab === "picture" ? /* @__PURE__ */ jsx260(WebRenderModalPicture, {
43690
+ }) : tab === "picture" ? /* @__PURE__ */ jsx263(WebRenderModalPicture, {
43302
43691
  renderMode,
43303
43692
  videoBitrate,
43304
43693
  setVideoBitrate,
@@ -43306,10 +43695,10 @@ var WebRenderModal = ({
43306
43695
  setKeyframeIntervalInSeconds,
43307
43696
  transparent,
43308
43697
  setTransparent
43309
- }) : tab === "audio" ? /* @__PURE__ */ jsx260(WebRenderModalAudio, {
43698
+ }) : tab === "audio" ? /* @__PURE__ */ jsx263(WebRenderModalAudio, {
43310
43699
  muted,
43311
43700
  setMuted
43312
- }) : /* @__PURE__ */ jsx260(WebRenderModalAdvanced, {
43701
+ }) : tab === "advanced" ? /* @__PURE__ */ jsx263(WebRenderModalAdvanced, {
43313
43702
  renderMode,
43314
43703
  delayRenderTimeout,
43315
43704
  setDelayRenderTimeout,
@@ -43317,6 +43706,10 @@ var WebRenderModal = ({
43317
43706
  setMediaCacheSizeInBytes,
43318
43707
  hardwareAcceleration,
43319
43708
  setHardwareAcceleration
43709
+ }) : /* @__PURE__ */ jsx263(WebRenderModalLicense, {
43710
+ licenseKey,
43711
+ setLicenseKey,
43712
+ initialPublicLicenseKey: initialLicenseKey
43320
43713
  })
43321
43714
  })
43322
43715
  ]
@@ -43325,10 +43718,10 @@ var WebRenderModal = ({
43325
43718
  });
43326
43719
  };
43327
43720
  var WebRenderModalWithLoader = (props) => {
43328
- return /* @__PURE__ */ jsx260(DismissableModal, {
43329
- children: /* @__PURE__ */ jsx260(ResolveCompositionBeforeModal, {
43721
+ return /* @__PURE__ */ jsx263(DismissableModal, {
43722
+ children: /* @__PURE__ */ jsx263(ResolveCompositionBeforeModal, {
43330
43723
  compositionId: props.compositionId,
43331
- children: /* @__PURE__ */ jsx260(WebRenderModal, {
43724
+ children: /* @__PURE__ */ jsx263(WebRenderModal, {
43332
43725
  ...props
43333
43726
  })
43334
43727
  })
@@ -43336,11 +43729,11 @@ var WebRenderModalWithLoader = (props) => {
43336
43729
  };
43337
43730
 
43338
43731
  // src/components/UpdateModal/UpdateModal.tsx
43339
- import { useCallback as useCallback132, useMemo as useMemo134 } from "react";
43732
+ import { useCallback as useCallback133, useMemo as useMemo135 } from "react";
43340
43733
 
43341
43734
  // src/components/CopyButton.tsx
43342
- import { useCallback as useCallback130, useEffect as useEffect78, useState as useState82 } from "react";
43343
- import { jsx as jsx261, jsxs as jsxs139 } from "react/jsx-runtime";
43735
+ import { useCallback as useCallback131, useEffect as useEffect79, useState as useState82 } from "react";
43736
+ import { jsx as jsx264, jsxs as jsxs141 } from "react/jsx-runtime";
43344
43737
  var iconStyle8 = {
43345
43738
  width: 16,
43346
43739
  height: 16,
@@ -43350,7 +43743,7 @@ var buttonContainerStyle = {
43350
43743
  display: "flex",
43351
43744
  minWidth: "114px"
43352
43745
  };
43353
- var copyIcon = /* @__PURE__ */ jsx261("svg", {
43746
+ var copyIcon = /* @__PURE__ */ jsx264("svg", {
43354
43747
  "aria-hidden": "true",
43355
43748
  focusable: "false",
43356
43749
  "data-prefix": "far",
@@ -43360,7 +43753,7 @@ var copyIcon = /* @__PURE__ */ jsx261("svg", {
43360
43753
  xmlns: "http://www.w3.org/2000/svg",
43361
43754
  viewBox: "0 0 384 512",
43362
43755
  style: iconStyle8,
43363
- children: /* @__PURE__ */ jsx261("path", {
43756
+ children: /* @__PURE__ */ jsx264("path", {
43364
43757
  fill: "currentColor",
43365
43758
  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"
43366
43759
  })
@@ -43370,30 +43763,30 @@ var labelStyle5 = {
43370
43763
  };
43371
43764
  var CopyButton = ({ textToCopy, label: label11, labelWhenCopied }) => {
43372
43765
  const [copied, setCopied] = useState82(false);
43373
- const onClick = useCallback130(() => {
43766
+ const onClick = useCallback131(() => {
43374
43767
  copyText(textToCopy).then(() => {
43375
43768
  setCopied(Date.now());
43376
43769
  }).catch((err) => {
43377
43770
  showNotification(`Could not copy: ${err.message}`, 2000);
43378
43771
  });
43379
43772
  }, [textToCopy]);
43380
- useEffect78(() => {
43773
+ useEffect79(() => {
43381
43774
  if (!copied) {
43382
43775
  return;
43383
43776
  }
43384
43777
  const to = setTimeout(() => setCopied(false), 2000);
43385
43778
  return () => clearTimeout(to);
43386
43779
  }, [copied]);
43387
- return /* @__PURE__ */ jsxs139(Button, {
43780
+ return /* @__PURE__ */ jsxs141(Button, {
43388
43781
  onClick,
43389
43782
  buttonContainerStyle,
43390
43783
  children: [
43391
43784
  copyIcon,
43392
- /* @__PURE__ */ jsx261(Spacing, {
43785
+ /* @__PURE__ */ jsx264(Spacing, {
43393
43786
  x: 1.5
43394
43787
  }),
43395
43788
  " ",
43396
- /* @__PURE__ */ jsx261("span", {
43789
+ /* @__PURE__ */ jsx264("span", {
43397
43790
  style: labelStyle5,
43398
43791
  children: copied ? labelWhenCopied : label11
43399
43792
  })
@@ -43402,8 +43795,8 @@ var CopyButton = ({ textToCopy, label: label11, labelWhenCopied }) => {
43402
43795
  };
43403
43796
 
43404
43797
  // src/components/UpdateModal/OpenIssueButton.tsx
43405
- import { useCallback as useCallback131, useMemo as useMemo133, useState as useState83 } from "react";
43406
- import { jsx as jsx262 } from "react/jsx-runtime";
43798
+ import { useCallback as useCallback132, useMemo as useMemo134, useState as useState83 } from "react";
43799
+ import { jsx as jsx265 } from "react/jsx-runtime";
43407
43800
  var svgStyle3 = {
43408
43801
  width: "11px",
43409
43802
  height: "11px"
@@ -43416,30 +43809,30 @@ var buttonStyle8 = {
43416
43809
  justifyContent: "center",
43417
43810
  alignItems: "center"
43418
43811
  };
43419
- var OpenIssueButton = ({ link: link3 }) => {
43812
+ var OpenIssueButton = ({ link: link4 }) => {
43420
43813
  const [hovered, setHovered] = useState83(false);
43421
43814
  const buttonTooltip = `Open GitHub issue in new Tab`;
43422
- const handleClick = useCallback131(() => {
43423
- window.open(link3, "_blank");
43424
- }, [link3]);
43425
- const svgFillColor = useMemo133(() => {
43815
+ const handleClick = useCallback132(() => {
43816
+ window.open(link4, "_blank");
43817
+ }, [link4]);
43818
+ const svgFillColor = useMemo134(() => {
43426
43819
  return hovered ? "white" : LIGHT_TEXT;
43427
43820
  }, [hovered]);
43428
- const openInEditorSvg = /* @__PURE__ */ jsx262("svg", {
43821
+ const openInEditorSvg = /* @__PURE__ */ jsx265("svg", {
43429
43822
  viewBox: "0 0 512 512",
43430
43823
  style: svgStyle3,
43431
- children: /* @__PURE__ */ jsx262("path", {
43824
+ children: /* @__PURE__ */ jsx265("path", {
43432
43825
  fill: svgFillColor,
43433
43826
  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"
43434
43827
  })
43435
43828
  });
43436
- const onPointerEnter = useCallback131(() => {
43829
+ const onPointerEnter = useCallback132(() => {
43437
43830
  setHovered(true);
43438
43831
  }, []);
43439
- const onPointerLeave = useCallback131(() => {
43832
+ const onPointerLeave = useCallback132(() => {
43440
43833
  setHovered(false);
43441
43834
  }, []);
43442
- return /* @__PURE__ */ jsx262("button", {
43835
+ return /* @__PURE__ */ jsx265("button", {
43443
43836
  title: buttonTooltip,
43444
43837
  type: "button",
43445
43838
  onPointerEnter,
@@ -43451,52 +43844,52 @@ var OpenIssueButton = ({ link: link3 }) => {
43451
43844
  };
43452
43845
 
43453
43846
  // src/components/KnownBugs.tsx
43454
- import { jsx as jsx263, jsxs as jsxs140 } from "react/jsx-runtime";
43847
+ import { jsx as jsx266, jsxs as jsxs142 } from "react/jsx-runtime";
43455
43848
  var container61 = {
43456
43849
  display: "flex",
43457
43850
  flexDirection: "row",
43458
43851
  alignItems: "center"
43459
43852
  };
43460
- var text3 = {
43853
+ var text4 = {
43461
43854
  fontSize: 14,
43462
43855
  flex: 1
43463
43856
  };
43464
43857
  var KnownBugs = ({ bugs }) => {
43465
43858
  const bugElements = bugs.map((bug) => {
43466
- return /* @__PURE__ */ jsxs140("div", {
43859
+ return /* @__PURE__ */ jsxs142("div", {
43467
43860
  style: container61,
43468
43861
  children: [
43469
- /* @__PURE__ */ jsxs140("div", {
43470
- style: text3,
43862
+ /* @__PURE__ */ jsxs142("div", {
43863
+ style: text4,
43471
43864
  children: [
43472
43865
  "\uD83E\uDEB2 ",
43473
43866
  bug.title
43474
43867
  ]
43475
43868
  }),
43476
- /* @__PURE__ */ jsx263(OpenIssueButton, {
43869
+ /* @__PURE__ */ jsx266(OpenIssueButton, {
43477
43870
  link: bug.link
43478
43871
  })
43479
43872
  ]
43480
43873
  }, bug.description + bug.link);
43481
43874
  });
43482
- return /* @__PURE__ */ jsx263("div", {
43875
+ return /* @__PURE__ */ jsx266("div", {
43483
43876
  children: bugElements
43484
43877
  });
43485
43878
  };
43486
43879
 
43487
43880
  // src/components/UpdateModal/UpdateModal.tsx
43488
- import { jsx as jsx264, jsxs as jsxs141, Fragment as Fragment46 } from "react/jsx-runtime";
43881
+ import { jsx as jsx267, jsxs as jsxs143, Fragment as Fragment47 } from "react/jsx-runtime";
43489
43882
  var container62 = {
43490
43883
  padding: 20,
43491
43884
  paddingTop: 0
43492
43885
  };
43493
- var text4 = {
43886
+ var text5 = {
43494
43887
  fontSize: 14
43495
43888
  };
43496
43889
  var title7 = {
43497
43890
  paddingTop: 12,
43498
43891
  paddingBottom: 8,
43499
- ...text4
43892
+ ...text5
43500
43893
  };
43501
43894
  var code = {
43502
43895
  background: SELECTED_BACKGROUND,
@@ -43505,11 +43898,11 @@ var code = {
43505
43898
  marginTop: 10,
43506
43899
  marginBottom: 10
43507
43900
  };
43508
- var link3 = {
43901
+ var link4 = {
43509
43902
  fontWeight: "bold",
43510
43903
  color: BLUE,
43511
43904
  textDecoration: "none",
43512
- ...text4
43905
+ ...text5
43513
43906
  };
43514
43907
  var commands = {
43515
43908
  npm: "npx remotion upgrade",
@@ -43519,26 +43912,26 @@ var commands = {
43519
43912
  unknown: "npx remotion upgrade"
43520
43913
  };
43521
43914
  var UpdateModal = ({ info, knownBugs }) => {
43522
- const hasKnownBugs = useMemo134(() => {
43915
+ const hasKnownBugs = useMemo135(() => {
43523
43916
  return knownBugs && knownBugs?.length > 0;
43524
43917
  }, [knownBugs]);
43525
43918
  const command = commands[info.packageManager];
43526
- const onClick = useCallback132(() => {
43919
+ const onClick = useCallback133(() => {
43527
43920
  copyText(command).catch((err) => {
43528
43921
  showNotification(`Could not copy: ${err.message}`, 2000);
43529
43922
  });
43530
43923
  }, [command]);
43531
- return /* @__PURE__ */ jsxs141(DismissableModal, {
43924
+ return /* @__PURE__ */ jsxs143(DismissableModal, {
43532
43925
  children: [
43533
- /* @__PURE__ */ jsx264(ModalHeader, {
43926
+ /* @__PURE__ */ jsx267(ModalHeader, {
43534
43927
  title: "Update available"
43535
43928
  }),
43536
- /* @__PURE__ */ jsxs141("div", {
43929
+ /* @__PURE__ */ jsxs143("div", {
43537
43930
  style: container62,
43538
43931
  children: [
43539
- hasKnownBugs ? /* @__PURE__ */ jsxs141(Fragment46, {
43932
+ hasKnownBugs ? /* @__PURE__ */ jsxs143(Fragment47, {
43540
43933
  children: [
43541
- /* @__PURE__ */ jsxs141("div", {
43934
+ /* @__PURE__ */ jsxs143("div", {
43542
43935
  style: title7,
43543
43936
  children: [
43544
43937
  "The currently installed version ",
@@ -43546,43 +43939,43 @@ var UpdateModal = ({ info, knownBugs }) => {
43546
43939
  " has the following known bugs:"
43547
43940
  ]
43548
43941
  }),
43549
- /* @__PURE__ */ jsx264(KnownBugs, {
43942
+ /* @__PURE__ */ jsx267(KnownBugs, {
43550
43943
  bugs: knownBugs
43551
43944
  }),
43552
- /* @__PURE__ */ jsx264("div", {
43945
+ /* @__PURE__ */ jsx267("div", {
43553
43946
  style: { height: "20px" }
43554
43947
  }),
43555
- /* @__PURE__ */ jsx264("div", {
43556
- style: text4,
43948
+ /* @__PURE__ */ jsx267("div", {
43949
+ style: text5,
43557
43950
  children: "To upgrade, run the following command:"
43558
43951
  })
43559
43952
  ]
43560
- }) : /* @__PURE__ */ jsx264("div", {
43953
+ }) : /* @__PURE__ */ jsx267("div", {
43561
43954
  style: title7,
43562
43955
  children: "A new update for Remotion is available! Run the following command:"
43563
43956
  }),
43564
- /* @__PURE__ */ jsxs141(Row, {
43957
+ /* @__PURE__ */ jsxs143(Row, {
43565
43958
  align: "center",
43566
43959
  children: [
43567
- /* @__PURE__ */ jsx264(Flex, {
43568
- children: /* @__PURE__ */ jsx264("pre", {
43960
+ /* @__PURE__ */ jsx267(Flex, {
43961
+ children: /* @__PURE__ */ jsx267("pre", {
43569
43962
  onClick,
43570
43963
  style: code,
43571
43964
  children: command
43572
43965
  })
43573
43966
  }),
43574
- /* @__PURE__ */ jsx264(Spacing, {
43967
+ /* @__PURE__ */ jsx267(Spacing, {
43575
43968
  x: 1
43576
43969
  }),
43577
- /* @__PURE__ */ jsx264(CopyButton, {
43970
+ /* @__PURE__ */ jsx267(CopyButton, {
43578
43971
  textToCopy: command,
43579
43972
  label: "Copy",
43580
43973
  labelWhenCopied: "Copied!"
43581
43974
  })
43582
43975
  ]
43583
43976
  }),
43584
- /* @__PURE__ */ jsxs141("div", {
43585
- style: text4,
43977
+ /* @__PURE__ */ jsxs143("div", {
43978
+ style: text5,
43586
43979
  children: [
43587
43980
  "This will upgrade Remotion from ",
43588
43981
  info.currentVersion,
@@ -43592,13 +43985,13 @@ var UpdateModal = ({ info, knownBugs }) => {
43592
43985
  "."
43593
43986
  ]
43594
43987
  }),
43595
- /* @__PURE__ */ jsxs141("div", {
43596
- style: text4,
43988
+ /* @__PURE__ */ jsxs143("div", {
43989
+ style: text5,
43597
43990
  children: [
43598
43991
  "Read the",
43599
43992
  " ",
43600
- /* @__PURE__ */ jsx264("a", {
43601
- style: link3,
43993
+ /* @__PURE__ */ jsx267("a", {
43994
+ style: link4,
43602
43995
  target: "_blank",
43603
43996
  href: "https://github.com/remotion-dev/remotion/releases",
43604
43997
  children: "Release notes"
@@ -43616,33 +44009,34 @@ var UpdateModal = ({ info, knownBugs }) => {
43616
44009
  };
43617
44010
 
43618
44011
  // src/components/Modals.tsx
43619
- import { jsx as jsx265, jsxs as jsxs142, Fragment as Fragment47 } from "react/jsx-runtime";
44012
+ import { jsx as jsx268, jsxs as jsxs144, Fragment as Fragment48 } from "react/jsx-runtime";
43620
44013
  var Modals = ({ readOnlyStudio }) => {
43621
44014
  const { selectedModal: modalContextType } = useContext83(ModalsContext);
43622
44015
  const canRender = useContext83(StudioServerConnectionCtx).previewServerState.type === "connected";
43623
- return /* @__PURE__ */ jsxs142(Fragment47, {
44016
+ return /* @__PURE__ */ jsxs144(Fragment48, {
43624
44017
  children: [
43625
- modalContextType && modalContextType.type === "duplicate-comp" && /* @__PURE__ */ jsx265(DuplicateComposition, {
44018
+ modalContextType && modalContextType.type === "duplicate-comp" && /* @__PURE__ */ jsx268(DuplicateComposition, {
43626
44019
  compositionType: modalContextType.compositionType,
43627
44020
  compositionId: modalContextType.compositionId
43628
44021
  }),
43629
- modalContextType && modalContextType.type === "delete-comp" && /* @__PURE__ */ jsx265(DeleteComposition, {
44022
+ modalContextType && modalContextType.type === "delete-comp" && /* @__PURE__ */ jsx268(DeleteComposition, {
43630
44023
  compositionId: modalContextType.compositionId
43631
44024
  }),
43632
- modalContextType && modalContextType.type === "rename-comp" && /* @__PURE__ */ jsx265(RenameComposition, {
44025
+ modalContextType && modalContextType.type === "rename-comp" && /* @__PURE__ */ jsx268(RenameComposition, {
43633
44026
  compositionId: modalContextType.compositionId
43634
44027
  }),
43635
- modalContextType && modalContextType.type === "input-props-override" && /* @__PURE__ */ jsx265(OverrideInputPropsModal, {}),
43636
- modalContextType && modalContextType.type === "web-render" && /* @__PURE__ */ jsx265(WebRenderModalWithLoader, {
44028
+ modalContextType && modalContextType.type === "input-props-override" && /* @__PURE__ */ jsx268(OverrideInputPropsModal, {}),
44029
+ modalContextType && modalContextType.type === "web-render" && /* @__PURE__ */ jsx268(WebRenderModalWithLoader, {
43637
44030
  type: "web-render",
43638
44031
  initialFrame: modalContextType.initialFrame,
43639
44032
  compositionId: modalContextType.compositionId,
43640
44033
  defaultProps: modalContextType.defaultProps,
43641
44034
  inFrameMark: modalContextType.inFrameMark,
43642
44035
  outFrameMark: modalContextType.outFrameMark,
43643
- initialLogLevel: modalContextType.initialLogLevel
44036
+ initialLogLevel: modalContextType.initialLogLevel,
44037
+ initialLicenseKey: modalContextType.initialLicenseKey
43644
44038
  }),
43645
- modalContextType && canRender && modalContextType.type === "server-render" && /* @__PURE__ */ jsx265(RenderModalWithLoader, {
44039
+ modalContextType && canRender && modalContextType.type === "server-render" && /* @__PURE__ */ jsx268(RenderModalWithLoader, {
43646
44040
  initialFrame: modalContextType.initialFrame,
43647
44041
  initialDarkMode: modalContextType.initialDarkMode,
43648
44042
  compositionId: modalContextType.compositionId,
@@ -43691,28 +44085,28 @@ var Modals = ({ readOnlyStudio }) => {
43691
44085
  initialChromeMode: modalContextType.initialChromeMode,
43692
44086
  renderDefaults: modalContextType.renderDefaults
43693
44087
  }),
43694
- modalContextType && canRender && modalContextType.type === "render-progress" && /* @__PURE__ */ jsx265(RenderStatusModal, {
44088
+ modalContextType && canRender && modalContextType.type === "render-progress" && /* @__PURE__ */ jsx268(RenderStatusModal, {
43695
44089
  jobId: modalContextType.jobId
43696
44090
  }),
43697
- modalContextType && modalContextType.type === "update" && /* @__PURE__ */ jsx265(UpdateModal, {
44091
+ modalContextType && modalContextType.type === "update" && /* @__PURE__ */ jsx268(UpdateModal, {
43698
44092
  info: modalContextType.info,
43699
44093
  knownBugs: modalContextType.knownBugs
43700
44094
  }),
43701
- modalContextType && modalContextType.type === "install-packages" && /* @__PURE__ */ jsx265(InstallPackageModal, {
44095
+ modalContextType && modalContextType.type === "install-packages" && /* @__PURE__ */ jsx268(InstallPackageModal, {
43702
44096
  packageManager: modalContextType.packageManager
43703
44097
  }),
43704
- modalContextType && modalContextType.type === "quick-switcher" && /* @__PURE__ */ jsx265(QuickSwitcher_default, {
44098
+ modalContextType && modalContextType.type === "quick-switcher" && /* @__PURE__ */ jsx268(QuickSwitcher_default, {
43705
44099
  readOnlyStudio,
43706
44100
  invocationTimestamp: modalContextType.invocationTimestamp,
43707
44101
  initialMode: modalContextType.mode
43708
44102
  }),
43709
- /* @__PURE__ */ jsx265(AskAiModal, {})
44103
+ /* @__PURE__ */ jsx268(AskAiModal, {})
43710
44104
  ]
43711
44105
  });
43712
44106
  };
43713
44107
 
43714
44108
  // src/components/Editor.tsx
43715
- import { jsx as jsx266, jsxs as jsxs143 } from "react/jsx-runtime";
44109
+ import { jsx as jsx269, jsxs as jsxs145 } from "react/jsx-runtime";
43716
44110
  var background2 = {
43717
44111
  backgroundColor: BACKGROUND,
43718
44112
  display: "flex",
@@ -43728,7 +44122,7 @@ var Editor = ({ Root, readOnlyStudio }) => {
43728
44122
  triggerOnWindowResize: false,
43729
44123
  shouldApplyCssTransforms: true
43730
44124
  });
43731
- useEffect79(() => {
44125
+ useEffect80(() => {
43732
44126
  if (readOnlyStudio) {
43733
44127
  return;
43734
44128
  }
@@ -43742,11 +44136,11 @@ var Editor = ({ Root, readOnlyStudio }) => {
43742
44136
  window.removeEventListener("beforeunload", listenToChanges);
43743
44137
  };
43744
44138
  }, [readOnlyStudio]);
43745
- const [canvasMounted, setCanvasMounted] = React175.useState(false);
43746
- const onMounted = useCallback133(() => {
44139
+ const [canvasMounted, setCanvasMounted] = React176.useState(false);
44140
+ const onMounted = useCallback134(() => {
43747
44141
  setCanvasMounted(true);
43748
44142
  }, []);
43749
- const value = useMemo135(() => {
44143
+ const value = useMemo136(() => {
43750
44144
  if (!size4) {
43751
44145
  return null;
43752
44146
  }
@@ -43755,41 +44149,41 @@ var Editor = ({ Root, readOnlyStudio }) => {
43755
44149
  canvasSize: size4
43756
44150
  };
43757
44151
  }, [size4]);
43758
- const MemoRoot = useMemo135(() => {
43759
- return React175.memo(Root);
44152
+ const MemoRoot = useMemo136(() => {
44153
+ return React176.memo(Root);
43760
44154
  }, [Root]);
43761
- return /* @__PURE__ */ jsx266(HigherZIndex, {
44155
+ return /* @__PURE__ */ jsx269(HigherZIndex, {
43762
44156
  onEscape: noop,
43763
44157
  onOutsideClick: noop,
43764
- children: /* @__PURE__ */ jsxs143(TimelineZoomContext, {
44158
+ children: /* @__PURE__ */ jsxs145(TimelineZoomContext, {
43765
44159
  children: [
43766
- /* @__PURE__ */ jsx266(Internals61.CurrentScaleContext.Provider, {
44160
+ /* @__PURE__ */ jsx269(Internals61.CurrentScaleContext.Provider, {
43767
44161
  value,
43768
- children: /* @__PURE__ */ jsxs143("div", {
44162
+ children: /* @__PURE__ */ jsxs145("div", {
43769
44163
  style: background2,
43770
44164
  children: [
43771
- canvasMounted ? /* @__PURE__ */ jsx266(MemoRoot, {}) : null,
43772
- /* @__PURE__ */ jsxs143(Internals61.CanUseRemotionHooksProvider, {
44165
+ canvasMounted ? /* @__PURE__ */ jsx269(MemoRoot, {}) : null,
44166
+ /* @__PURE__ */ jsxs145(Internals61.CanUseRemotionHooksProvider, {
43773
44167
  children: [
43774
- /* @__PURE__ */ jsx266(EditorContent, {
44168
+ /* @__PURE__ */ jsx269(EditorContent, {
43775
44169
  readOnlyStudio,
43776
- children: /* @__PURE__ */ jsx266(TopPanel, {
44170
+ children: /* @__PURE__ */ jsx269(TopPanel, {
43777
44171
  drawRef,
43778
44172
  bufferStateDelayInMilliseconds: BUFFER_STATE_DELAY_IN_MILLISECONDS,
43779
44173
  onMounted,
43780
44174
  readOnlyStudio
43781
44175
  })
43782
44176
  }),
43783
- /* @__PURE__ */ jsx266(GlobalKeybindings, {})
44177
+ /* @__PURE__ */ jsx269(GlobalKeybindings, {})
43784
44178
  ]
43785
44179
  })
43786
44180
  ]
43787
44181
  })
43788
44182
  }),
43789
- /* @__PURE__ */ jsx266(Modals, {
44183
+ /* @__PURE__ */ jsx269(Modals, {
43790
44184
  readOnlyStudio
43791
44185
  }),
43792
- /* @__PURE__ */ jsx266(NotificationCenter, {})
44186
+ /* @__PURE__ */ jsx269(NotificationCenter, {})
43793
44187
  ]
43794
44188
  })
43795
44189
  });
@@ -43799,9 +44193,9 @@ var Editor = ({ Root, readOnlyStudio }) => {
43799
44193
  import { PlayerInternals as PlayerInternals20 } from "@remotion/player";
43800
44194
 
43801
44195
  // src/state/preview-size.tsx
43802
- import { useCallback as useCallback134, useContext as useContext84, useMemo as useMemo136, useState as useState84 } from "react";
44196
+ import { useCallback as useCallback135, useContext as useContext84, useMemo as useMemo137, useState as useState84 } from "react";
43803
44197
  import { Internals as Internals62 } from "remotion";
43804
- import { jsx as jsx267 } from "react/jsx-runtime";
44198
+ import { jsx as jsx270 } from "react/jsx-runtime";
43805
44199
  var key5 = "remotion.previewSize";
43806
44200
  var persistPreviewSizeOption = (option) => {
43807
44201
  localStorage.setItem(key5, JSON.stringify(option));
@@ -43828,14 +44222,14 @@ var PreviewSizeProvider = ({ children }) => {
43828
44222
  };
43829
44223
  });
43830
44224
  const { editorZoomGestures } = useContext84(EditorZoomGesturesContext);
43831
- const setSize = useCallback134((newValue) => {
44225
+ const setSize = useCallback135((newValue) => {
43832
44226
  setSizeState((prevState) => {
43833
44227
  const newVal = newValue(prevState);
43834
44228
  persistPreviewSizeOption(newVal);
43835
44229
  return newVal;
43836
44230
  });
43837
44231
  }, []);
43838
- const previewSizeCtx = useMemo136(() => {
44232
+ const previewSizeCtx = useMemo137(() => {
43839
44233
  return {
43840
44234
  size: editorZoomGestures ? size4 : {
43841
44235
  size: size4.size,
@@ -43849,58 +44243,58 @@ var PreviewSizeProvider = ({ children }) => {
43849
44243
  setTranslation
43850
44244
  };
43851
44245
  }, [editorZoomGestures, size4, setSize, translation]);
43852
- return /* @__PURE__ */ jsx267(Internals62.PreviewSizeContext.Provider, {
44246
+ return /* @__PURE__ */ jsx270(Internals62.PreviewSizeContext.Provider, {
43853
44247
  value: previewSizeCtx,
43854
44248
  children
43855
44249
  });
43856
44250
  };
43857
44251
 
43858
44252
  // src/components/CheckerboardProvider.tsx
43859
- import { useCallback as useCallback135, useMemo as useMemo137, useState as useState85 } from "react";
43860
- import { jsx as jsx268 } from "react/jsx-runtime";
44253
+ import { useCallback as useCallback136, useMemo as useMemo138, useState as useState85 } from "react";
44254
+ import { jsx as jsx271 } from "react/jsx-runtime";
43861
44255
  var CheckerboardProvider = ({ children }) => {
43862
44256
  const [checkerboard, setCheckerboardState] = useState85(() => loadCheckerboardOption());
43863
- const setCheckerboard = useCallback135((newValue) => {
44257
+ const setCheckerboard = useCallback136((newValue) => {
43864
44258
  setCheckerboardState((prevState) => {
43865
44259
  const newVal = newValue(prevState);
43866
44260
  persistCheckerboardOption(newVal);
43867
44261
  return newVal;
43868
44262
  });
43869
44263
  }, []);
43870
- const checkerboardCtx = useMemo137(() => {
44264
+ const checkerboardCtx = useMemo138(() => {
43871
44265
  return {
43872
44266
  checkerboard,
43873
44267
  setCheckerboard
43874
44268
  };
43875
44269
  }, [checkerboard, setCheckerboard]);
43876
- return /* @__PURE__ */ jsx268(CheckerboardContext.Provider, {
44270
+ return /* @__PURE__ */ jsx271(CheckerboardContext.Provider, {
43877
44271
  value: checkerboardCtx,
43878
44272
  children
43879
44273
  });
43880
44274
  };
43881
44275
 
43882
44276
  // src/components/MediaVolumeProvider.tsx
43883
- import { useMemo as useMemo138, useState as useState86 } from "react";
44277
+ import { useMemo as useMemo139, useState as useState86 } from "react";
43884
44278
  import { Internals as Internals63 } from "remotion";
43885
- import { jsx as jsx269 } from "react/jsx-runtime";
44279
+ import { jsx as jsx272 } from "react/jsx-runtime";
43886
44280
  var MediaVolumeProvider = ({ children }) => {
43887
44281
  const [mediaMuted, setMediaMuted] = useState86(() => loadMuteOption());
43888
44282
  const [mediaVolume, setMediaVolume] = useState86(1);
43889
- const mediaVolumeContextValue = useMemo138(() => {
44283
+ const mediaVolumeContextValue = useMemo139(() => {
43890
44284
  return {
43891
44285
  mediaMuted,
43892
44286
  mediaVolume
43893
44287
  };
43894
44288
  }, [mediaMuted, mediaVolume]);
43895
- const setMediaVolumeContextValue = useMemo138(() => {
44289
+ const setMediaVolumeContextValue = useMemo139(() => {
43896
44290
  return {
43897
44291
  setMediaMuted,
43898
44292
  setMediaVolume
43899
44293
  };
43900
44294
  }, []);
43901
- return /* @__PURE__ */ jsx269(Internals63.MediaVolumeContext.Provider, {
44295
+ return /* @__PURE__ */ jsx272(Internals63.MediaVolumeContext.Provider, {
43902
44296
  value: mediaVolumeContextValue,
43903
- children: /* @__PURE__ */ jsx269(Internals63.SetMediaVolumeContext.Provider, {
44297
+ children: /* @__PURE__ */ jsx272(Internals63.SetMediaVolumeContext.Provider, {
43904
44298
  value: setMediaVolumeContextValue,
43905
44299
  children
43906
44300
  })
@@ -43908,24 +44302,24 @@ var MediaVolumeProvider = ({ children }) => {
43908
44302
  };
43909
44303
 
43910
44304
  // src/components/ModalsProvider.tsx
43911
- import { useMemo as useMemo139, useState as useState87 } from "react";
43912
- import { jsx as jsx270 } from "react/jsx-runtime";
44305
+ import { useMemo as useMemo140, useState as useState87 } from "react";
44306
+ import { jsx as jsx273 } from "react/jsx-runtime";
43913
44307
  var ModalsProvider = ({ children }) => {
43914
44308
  const [modalContextType, setModalContextType] = useState87(null);
43915
- const modalsContext = useMemo139(() => {
44309
+ const modalsContext = useMemo140(() => {
43916
44310
  return {
43917
44311
  selectedModal: modalContextType,
43918
44312
  setSelectedModal: setModalContextType
43919
44313
  };
43920
44314
  }, [modalContextType]);
43921
- return /* @__PURE__ */ jsx270(ModalsContext.Provider, {
44315
+ return /* @__PURE__ */ jsx273(ModalsContext.Provider, {
43922
44316
  value: modalsContext,
43923
44317
  children
43924
44318
  });
43925
44319
  };
43926
44320
 
43927
44321
  // src/components/SetTimelineInOutProvider.tsx
43928
- import { useEffect as useEffect80, useMemo as useMemo140, useState as useState88 } from "react";
44322
+ import { useEffect as useEffect81, useMemo as useMemo141, useState as useState88 } from "react";
43929
44323
 
43930
44324
  // src/state/marks.ts
43931
44325
  var localStorageKey5 = () => `remotion.editor.marksv2`;
@@ -43941,20 +44335,20 @@ var loadMarks = () => {
43941
44335
  };
43942
44336
 
43943
44337
  // src/components/SetTimelineInOutProvider.tsx
43944
- import { jsx as jsx271 } from "react/jsx-runtime";
44338
+ import { jsx as jsx274 } from "react/jsx-runtime";
43945
44339
  var SetTimelineInOutProvider = ({ children }) => {
43946
44340
  const [inAndOutFrames, setInAndOutFrames] = useState88(() => loadMarks());
43947
- const setTimelineInOutContextValue = useMemo140(() => {
44341
+ const setTimelineInOutContextValue = useMemo141(() => {
43948
44342
  return {
43949
44343
  setInAndOutFrames
43950
44344
  };
43951
44345
  }, []);
43952
- useEffect80(() => {
44346
+ useEffect81(() => {
43953
44347
  persistMarks(inAndOutFrames);
43954
44348
  }, [inAndOutFrames]);
43955
- return /* @__PURE__ */ jsx271(TimelineInOutContext.Provider, {
44349
+ return /* @__PURE__ */ jsx274(TimelineInOutContext.Provider, {
43956
44350
  value: inAndOutFrames,
43957
- children: /* @__PURE__ */ jsx271(SetTimelineInOutContext.Provider, {
44351
+ children: /* @__PURE__ */ jsx274(SetTimelineInOutContext.Provider, {
43958
44352
  value: setTimelineInOutContextValue,
43959
44353
  children
43960
44354
  })
@@ -43962,23 +44356,23 @@ var SetTimelineInOutProvider = ({ children }) => {
43962
44356
  };
43963
44357
 
43964
44358
  // src/components/ShowGuidesProvider.tsx
43965
- import { useCallback as useCallback136, useMemo as useMemo141, useRef as useRef43, useState as useState89 } from "react";
43966
- import { jsx as jsx272 } from "react/jsx-runtime";
44359
+ import { useCallback as useCallback137, useMemo as useMemo142, useRef as useRef44, useState as useState89 } from "react";
44360
+ import { jsx as jsx275 } from "react/jsx-runtime";
43967
44361
  var ShowGuidesProvider = ({ children }) => {
43968
44362
  const [guidesList, setGuidesList] = useState89(() => loadGuidesList());
43969
44363
  const [selectedGuideId, setSelectedGuideId] = useState89(null);
43970
44364
  const [hoveredGuideId, setHoveredGuideId] = useState89(null);
43971
44365
  const [editorShowGuides, setEditorShowGuidesState] = useState89(() => loadEditorShowGuidesOption());
43972
- const shouldCreateGuideRef = useRef43(false);
43973
- const shouldDeleteGuideRef = useRef43(false);
43974
- const setEditorShowGuides = useCallback136((newValue) => {
44366
+ const shouldCreateGuideRef = useRef44(false);
44367
+ const shouldDeleteGuideRef = useRef44(false);
44368
+ const setEditorShowGuides = useCallback137((newValue) => {
43975
44369
  setEditorShowGuidesState((prevState) => {
43976
44370
  const newVal = newValue(prevState);
43977
44371
  persistEditorShowGuidesOption(newVal);
43978
44372
  return newVal;
43979
44373
  });
43980
44374
  }, []);
43981
- const editorShowGuidesCtx = useMemo141(() => {
44375
+ const editorShowGuidesCtx = useMemo142(() => {
43982
44376
  return {
43983
44377
  editorShowGuides,
43984
44378
  setEditorShowGuides,
@@ -43998,82 +44392,82 @@ var ShowGuidesProvider = ({ children }) => {
43998
44392
  selectedGuideId,
43999
44393
  hoveredGuideId
44000
44394
  ]);
44001
- return /* @__PURE__ */ jsx272(EditorShowGuidesContext.Provider, {
44395
+ return /* @__PURE__ */ jsx275(EditorShowGuidesContext.Provider, {
44002
44396
  value: editorShowGuidesCtx,
44003
44397
  children
44004
44398
  });
44005
44399
  };
44006
44400
 
44007
44401
  // src/components/ShowRulersProvider.tsx
44008
- import { useCallback as useCallback137, useMemo as useMemo142, useState as useState90 } from "react";
44009
- import { jsx as jsx273 } from "react/jsx-runtime";
44402
+ import { useCallback as useCallback138, useMemo as useMemo143, useState as useState90 } from "react";
44403
+ import { jsx as jsx276 } from "react/jsx-runtime";
44010
44404
  var ShowRulersProvider = ({ children }) => {
44011
44405
  const [editorShowRulers, setEditorShowRulersState] = useState90(() => loadEditorShowRulersOption());
44012
- const setEditorShowRulers = useCallback137((newValue) => {
44406
+ const setEditorShowRulers = useCallback138((newValue) => {
44013
44407
  setEditorShowRulersState((prevState) => {
44014
44408
  const newVal = newValue(prevState);
44015
44409
  persistEditorShowRulersOption(newVal);
44016
44410
  return newVal;
44017
44411
  });
44018
44412
  }, []);
44019
- const editorShowRulersCtx = useMemo142(() => {
44413
+ const editorShowRulersCtx = useMemo143(() => {
44020
44414
  return {
44021
44415
  editorShowRulers,
44022
44416
  setEditorShowRulers
44023
44417
  };
44024
44418
  }, [editorShowRulers, setEditorShowRulers]);
44025
- return /* @__PURE__ */ jsx273(EditorShowRulersContext.Provider, {
44419
+ return /* @__PURE__ */ jsx276(EditorShowRulersContext.Provider, {
44026
44420
  value: editorShowRulersCtx,
44027
44421
  children
44028
44422
  });
44029
44423
  };
44030
44424
 
44031
44425
  // src/components/ZoomGesturesProvider.tsx
44032
- import { useCallback as useCallback138, useMemo as useMemo143, useState as useState91 } from "react";
44033
- import { jsx as jsx274 } from "react/jsx-runtime";
44426
+ import { useCallback as useCallback139, useMemo as useMemo144, useState as useState91 } from "react";
44427
+ import { jsx as jsx277 } from "react/jsx-runtime";
44034
44428
  var ZoomGesturesProvider = ({ children }) => {
44035
44429
  const [editorZoomGestures, setEditorZoomGesturesState] = useState91(() => loadEditorZoomGesturesOption());
44036
- const setEditorZoomGestures = useCallback138((newValue) => {
44430
+ const setEditorZoomGestures = useCallback139((newValue) => {
44037
44431
  setEditorZoomGesturesState((prevState) => {
44038
44432
  const newVal = newValue(prevState);
44039
44433
  persistEditorZoomGesturesOption(newVal);
44040
44434
  return newVal;
44041
44435
  });
44042
44436
  }, []);
44043
- const editorZoomGesturesCtx = useMemo143(() => {
44437
+ const editorZoomGesturesCtx = useMemo144(() => {
44044
44438
  return {
44045
44439
  editorZoomGestures,
44046
44440
  setEditorZoomGestures
44047
44441
  };
44048
44442
  }, [editorZoomGestures, setEditorZoomGestures]);
44049
- return /* @__PURE__ */ jsx274(EditorZoomGesturesContext.Provider, {
44443
+ return /* @__PURE__ */ jsx277(EditorZoomGesturesContext.Provider, {
44050
44444
  value: editorZoomGesturesCtx,
44051
44445
  children
44052
44446
  });
44053
44447
  };
44054
44448
 
44055
44449
  // src/components/EditorContexts.tsx
44056
- import { jsx as jsx275 } from "react/jsx-runtime";
44450
+ import { jsx as jsx278 } from "react/jsx-runtime";
44057
44451
  var EditorContexts = ({ children, readOnlyStudio }) => {
44058
- return /* @__PURE__ */ jsx275(ZodProvider, {
44059
- children: /* @__PURE__ */ jsx275(VisualControlsProvider, {
44060
- children: /* @__PURE__ */ jsx275(PreviewServerConnection, {
44452
+ return /* @__PURE__ */ jsx278(ZodProvider, {
44453
+ children: /* @__PURE__ */ jsx278(VisualControlsProvider, {
44454
+ children: /* @__PURE__ */ jsx278(PreviewServerConnection, {
44061
44455
  readOnlyStudio,
44062
- children: /* @__PURE__ */ jsx275(RenderQueueContextProvider, {
44063
- children: /* @__PURE__ */ jsx275(KeybindingContextProvider, {
44064
- children: /* @__PURE__ */ jsx275(CheckerboardProvider, {
44065
- children: /* @__PURE__ */ jsx275(ZoomGesturesProvider, {
44066
- children: /* @__PURE__ */ jsx275(ShowRulersProvider, {
44067
- children: /* @__PURE__ */ jsx275(ShowGuidesProvider, {
44068
- children: /* @__PURE__ */ jsx275(PreviewSizeProvider, {
44069
- children: /* @__PURE__ */ jsx275(ModalsProvider, {
44070
- children: /* @__PURE__ */ jsx275(MediaVolumeProvider, {
44071
- children: /* @__PURE__ */ jsx275(PlayerInternals20.PlayerEmitterProvider, {
44456
+ children: /* @__PURE__ */ jsx278(RenderQueueContextProvider, {
44457
+ children: /* @__PURE__ */ jsx278(KeybindingContextProvider, {
44458
+ children: /* @__PURE__ */ jsx278(CheckerboardProvider, {
44459
+ children: /* @__PURE__ */ jsx278(ZoomGesturesProvider, {
44460
+ children: /* @__PURE__ */ jsx278(ShowRulersProvider, {
44461
+ children: /* @__PURE__ */ jsx278(ShowGuidesProvider, {
44462
+ children: /* @__PURE__ */ jsx278(PreviewSizeProvider, {
44463
+ children: /* @__PURE__ */ jsx278(ModalsProvider, {
44464
+ children: /* @__PURE__ */ jsx278(MediaVolumeProvider, {
44465
+ children: /* @__PURE__ */ jsx278(PlayerInternals20.PlayerEmitterProvider, {
44072
44466
  currentPlaybackRate: null,
44073
- children: /* @__PURE__ */ jsx275(SidebarContextProvider, {
44074
- children: /* @__PURE__ */ jsx275(FolderContextProvider, {
44075
- children: /* @__PURE__ */ jsx275(HighestZIndexProvider, {
44076
- children: /* @__PURE__ */ jsx275(SetTimelineInOutProvider, {
44467
+ children: /* @__PURE__ */ jsx278(SidebarContextProvider, {
44468
+ children: /* @__PURE__ */ jsx278(FolderContextProvider, {
44469
+ children: /* @__PURE__ */ jsx278(HighestZIndexProvider, {
44470
+ children: /* @__PURE__ */ jsx278(SetTimelineInOutProvider, {
44077
44471
  children
44078
44472
  })
44079
44473
  })
@@ -44096,7 +44490,7 @@ var EditorContexts = ({ children, readOnlyStudio }) => {
44096
44490
 
44097
44491
  // src/components/Notifications/ServerDisconnected.tsx
44098
44492
  import { useContext as useContext85 } from "react";
44099
- import { jsx as jsx276, jsxs as jsxs144 } from "react/jsx-runtime";
44493
+ import { jsx as jsx279, jsxs as jsxs146 } from "react/jsx-runtime";
44100
44494
  var container63 = {
44101
44495
  position: "fixed",
44102
44496
  justifyContent: "flex-end",
@@ -44141,26 +44535,26 @@ var ServerDisconnected = () => {
44141
44535
  }
44142
44536
  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=";
44143
44537
  fav.setAttribute("href", base64Favicon);
44144
- return /* @__PURE__ */ jsx276("div", {
44538
+ return /* @__PURE__ */ jsx279("div", {
44145
44539
  style: container63,
44146
44540
  className: "css-reset",
44147
- children: /* @__PURE__ */ jsxs144("div", {
44541
+ children: /* @__PURE__ */ jsxs146("div", {
44148
44542
  style: message,
44149
44543
  children: [
44150
44544
  "The studio server has disconnected. ",
44151
- /* @__PURE__ */ jsx276("br", {}),
44152
- window.remotion_studioServerCommand ? /* @__PURE__ */ jsxs144("span", {
44545
+ /* @__PURE__ */ jsx279("br", {}),
44546
+ window.remotion_studioServerCommand ? /* @__PURE__ */ jsxs146("span", {
44153
44547
  children: [
44154
44548
  "Run",
44155
44549
  " ",
44156
- /* @__PURE__ */ jsx276("code", {
44550
+ /* @__PURE__ */ jsx279("code", {
44157
44551
  style: inlineCode,
44158
44552
  children: window.remotion_studioServerCommand
44159
44553
  }),
44160
44554
  " ",
44161
44555
  "to run it again."
44162
44556
  ]
44163
- }) : /* @__PURE__ */ jsx276("span", {
44557
+ }) : /* @__PURE__ */ jsx279("span", {
44164
44558
  children: "Fast refresh will not work."
44165
44559
  })
44166
44560
  ]
@@ -44257,7 +44651,6 @@ var makeDefaultGlobalCSS = () => {
44257
44651
  inset -1px -1px #555,
44258
44652
  inset 1px -1px #555,
44259
44653
  inset -1px 1px #555;
44260
- border-radius: 0 !important;
44261
44654
  }
44262
44655
 
44263
44656
  input[type='color'].__remotion_color_picker::-webkit-color-swatch-wrapper {
@@ -44326,7 +44719,7 @@ var injectCSS = () => {
44326
44719
  };
44327
44720
 
44328
44721
  // src/Studio.tsx
44329
- import { jsx as jsx277, jsxs as jsxs145 } from "react/jsx-runtime";
44722
+ import { jsx as jsx280, jsxs as jsxs147 } from "react/jsx-runtime";
44330
44723
  var getServerDisconnectedDomElement = () => {
44331
44724
  return document.getElementById("server-disconnected-overlay");
44332
44725
  };
@@ -44334,27 +44727,27 @@ var Studio = ({ rootComponent, readOnly }) => {
44334
44727
  useLayoutEffect2(() => {
44335
44728
  injectCSS();
44336
44729
  }, []);
44337
- return /* @__PURE__ */ jsx277(Internals65.CompositionManagerProvider, {
44730
+ return /* @__PURE__ */ jsx280(Internals65.CompositionManagerProvider, {
44338
44731
  onlyRenderComposition: null,
44339
44732
  currentCompositionMetadata: null,
44340
44733
  initialCompositions: [],
44341
44734
  initialCanvasContent: null,
44342
- children: /* @__PURE__ */ jsx277(Internals65.RemotionRootContexts, {
44735
+ children: /* @__PURE__ */ jsx280(Internals65.RemotionRootContexts, {
44343
44736
  frameState: null,
44344
44737
  audioEnabled: window.remotion_audioEnabled,
44345
44738
  videoEnabled: window.remotion_videoEnabled,
44346
44739
  logLevel: window.remotion_logLevel,
44347
44740
  numberOfAudioTags: window.remotion_numberOfAudioTags,
44348
44741
  audioLatencyHint: window.remotion_audioLatencyHint ?? "interactive",
44349
- children: /* @__PURE__ */ jsx277(Internals65.ResolveCompositionConfigInStudio, {
44350
- children: /* @__PURE__ */ jsxs145(EditorContexts, {
44742
+ children: /* @__PURE__ */ jsx280(Internals65.ResolveCompositionConfigInStudio, {
44743
+ children: /* @__PURE__ */ jsxs147(EditorContexts, {
44351
44744
  readOnlyStudio: readOnly,
44352
44745
  children: [
44353
- /* @__PURE__ */ jsx277(Editor, {
44746
+ /* @__PURE__ */ jsx280(Editor, {
44354
44747
  readOnlyStudio: readOnly,
44355
44748
  Root: rootComponent
44356
44749
  }),
44357
- readOnly ? null : createPortal(/* @__PURE__ */ jsx277(ServerDisconnected, {}), getServerDisconnectedDomElement())
44750
+ readOnly ? null : createPortal(/* @__PURE__ */ jsx280(ServerDisconnected, {}), getServerDisconnectedDomElement())
44358
44751
  ]
44359
44752
  })
44360
44753
  })