@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.
@@ -29,7 +29,7 @@ import { Internals as Internals65 } from "remotion";
29
29
 
30
30
  // src/components/Editor.tsx
31
31
  import { PlayerInternals as PlayerInternals19 } from "@remotion/player";
32
- import React175, { useCallback as useCallback133, useEffect as useEffect79, useMemo as useMemo135 } from "react";
32
+ import React176, { useCallback as useCallback134, useEffect as useEffect80, useMemo as useMemo136 } from "react";
33
33
  import { Internals as Internals61 } from "remotion";
34
34
 
35
35
  // src/helpers/colors.ts
@@ -7274,10 +7274,10 @@ var MenuBuildIndicator = () => {
7274
7274
  };
7275
7275
 
7276
7276
  // src/components/SidebarCollapserControls.tsx
7277
- import { useCallback as useCallback90, useContext as useContext57, useEffect as useEffect59 } from "react";
7277
+ import { useCallback as useCallback90, useContext as useContext57, useEffect as useEffect60 } from "react";
7278
7278
 
7279
7279
  // src/components/TopPanel.tsx
7280
- import { useCallback as useCallback89, useContext as useContext56, useEffect as useEffect58, useMemo as useMemo96 } from "react";
7280
+ import { useCallback as useCallback89, useContext as useContext56, useEffect as useEffect59, useMemo as useMemo96 } from "react";
7281
7281
 
7282
7282
  // src/helpers/use-breakpoint.ts
7283
7283
  import { useEffect as useEffect23, useState as useState29 } from "react";
@@ -10332,7 +10332,7 @@ import {
10332
10332
  createRef as createRef9,
10333
10333
  useCallback as useCallback80,
10334
10334
  useContext as useContext46,
10335
- useEffect as useEffect49,
10335
+ useEffect as useEffect50,
10336
10336
  useImperativeHandle as useImperativeHandle12,
10337
10337
  useMemo as useMemo90,
10338
10338
  useState as useState55
@@ -10912,7 +10912,7 @@ var GlobalPropsEditorUpdateButton = ({ compositionId, currentDefaultProps }) =>
10912
10912
  import React94, {
10913
10913
  useCallback as useCallback68,
10914
10914
  useContext as useContext36,
10915
- useEffect as useEffect44,
10915
+ useEffect as useEffect45,
10916
10916
  useMemo as useMemo80,
10917
10917
  useState as useState50
10918
10918
  } from "react";
@@ -11307,7 +11307,7 @@ var RenderModalJSONPropsEditor = ({
11307
11307
  };
11308
11308
 
11309
11309
  // src/components/RenderModal/SchemaEditor/SchemaEditor.tsx
11310
- import { useCallback as useCallback66, useEffect as useEffect43, useMemo as useMemo78, useState as useState49 } from "react";
11310
+ import { useCallback as useCallback66, useEffect as useEffect44, useMemo as useMemo78, useState as useState49 } from "react";
11311
11311
  import { Internals as Internals30 } from "remotion";
11312
11312
 
11313
11313
  // src/components/RenderModal/SchemaEditor/SchemaErrorMessages.tsx
@@ -12686,7 +12686,7 @@ var ZodArrayEditor = ({
12686
12686
  import { useCallback as useCallback53 } from "react";
12687
12687
 
12688
12688
  // src/components/Checkbox.tsx
12689
- import { useMemo as useMemo67 } from "react";
12689
+ import { useEffect as useEffect41, useMemo as useMemo67, useRef as useRef26 } from "react";
12690
12690
  import { jsx as jsx116, jsxs as jsxs54 } from "react/jsx-runtime";
12691
12691
  var size2 = 20;
12692
12692
  var background = {
@@ -12694,6 +12694,12 @@ var background = {
12694
12694
  width: size2,
12695
12695
  position: "relative"
12696
12696
  };
12697
+ var bullet = {
12698
+ width: 10,
12699
+ height: 10,
12700
+ backgroundColor: LIGHT_TEXT,
12701
+ borderRadius: "50%"
12702
+ };
12697
12703
  var box = {
12698
12704
  display: "flex",
12699
12705
  justifyContent: "center",
@@ -12706,7 +12712,8 @@ var box = {
12706
12712
  pointerEvents: "none",
12707
12713
  color: "white"
12708
12714
  };
12709
- var Checkbox = ({ checked, onChange, disabled, name }) => {
12715
+ var Checkbox = ({ checked, onChange, disabled, name, rounded }) => {
12716
+ const ref = useRef26(null);
12710
12717
  const input2 = useMemo67(() => {
12711
12718
  return {
12712
12719
  appearance: "none",
@@ -12720,10 +12727,16 @@ var Checkbox = ({ checked, onChange, disabled, name }) => {
12720
12727
  margin: 0
12721
12728
  };
12722
12729
  }, [disabled]);
12730
+ useEffect41(() => {
12731
+ if (ref.current) {
12732
+ ref.current.style.setProperty("border-radius", rounded ? "50%" : "0%", "important");
12733
+ }
12734
+ }, [rounded]);
12723
12735
  return /* @__PURE__ */ jsxs54("div", {
12724
12736
  style: background,
12725
12737
  children: [
12726
12738
  /* @__PURE__ */ jsx116("input", {
12739
+ ref,
12727
12740
  style: input2,
12728
12741
  type: "checkbox",
12729
12742
  checked,
@@ -12733,7 +12746,9 @@ var Checkbox = ({ checked, onChange, disabled, name }) => {
12733
12746
  }),
12734
12747
  /* @__PURE__ */ jsx116("div", {
12735
12748
  style: box,
12736
- children: checked ? /* @__PURE__ */ jsx116(Checkmark, {}) : null
12749
+ children: checked ? rounded ? /* @__PURE__ */ jsx116("div", {
12750
+ style: bullet
12751
+ }) : /* @__PURE__ */ jsx116(Checkmark, {}) : null
12737
12752
  })
12738
12753
  ]
12739
12754
  });
@@ -12812,7 +12827,7 @@ var colorWithNewOpacity = (color, opacity, zodTypes) => {
12812
12827
  };
12813
12828
 
12814
12829
  // src/components/NewComposition/InputDragger.tsx
12815
- import React79, { useCallback as useCallback54, useEffect as useEffect41, useMemo as useMemo68, useRef as useRef26, useState as useState44 } from "react";
12830
+ import React79, { useCallback as useCallback54, useEffect as useEffect42, useMemo as useMemo68, useRef as useRef27, useState as useState44 } from "react";
12816
12831
  import { interpolate as interpolate2 } from "remotion";
12817
12832
  import { jsx as jsx118 } from "react/jsx-runtime";
12818
12833
  var isInt = (num) => {
@@ -12831,7 +12846,7 @@ var InputDraggerForwardRefFn = ({
12831
12846
  ...props
12832
12847
  }, ref) => {
12833
12848
  const [inputFallback, setInputFallback] = useState44(false);
12834
- const fallbackRef = useRef26(null);
12849
+ const fallbackRef = useRef27(null);
12835
12850
  const style8 = useMemo68(() => {
12836
12851
  return {
12837
12852
  ...inputBaseStyle,
@@ -12915,7 +12930,7 @@ var InputDraggerForwardRefFn = ({
12915
12930
  once: true
12916
12931
  });
12917
12932
  }, [_step, _min, _max, value, onValueChange]);
12918
- useEffect41(() => {
12933
+ useEffect42(() => {
12919
12934
  if (inputFallback) {
12920
12935
  fallbackRef.current?.select();
12921
12936
  }
@@ -12966,10 +12981,10 @@ var InputDragger = React79.forwardRef(InputDraggerForwardRefFn);
12966
12981
  // src/components/NewComposition/RemInputTypeColor.tsx
12967
12982
  import {
12968
12983
  forwardRef as forwardRef4,
12969
- useEffect as useEffect42,
12984
+ useEffect as useEffect43,
12970
12985
  useImperativeHandle as useImperativeHandle11,
12971
12986
  useMemo as useMemo69,
12972
- useRef as useRef27,
12987
+ useRef as useRef28,
12973
12988
  useState as useState45
12974
12989
  } from "react";
12975
12990
  import { jsx as jsx119 } from "react/jsx-runtime";
@@ -12981,7 +12996,7 @@ var inputBaseStyle3 = {
12981
12996
  var RemInputTypeColorForwardRef = ({ status, ...props }, ref) => {
12982
12997
  const [isFocused, setIsFocused] = useState45(false);
12983
12998
  const [isHovered, setIsHovered] = useState45(false);
12984
- const inputRef = useRef27(null);
12999
+ const inputRef = useRef28(null);
12985
13000
  const { tabIndex } = useZIndex();
12986
13001
  const style8 = useMemo69(() => {
12987
13002
  return {
@@ -12994,7 +13009,7 @@ var RemInputTypeColorForwardRef = ({ status, ...props }, ref) => {
12994
13009
  useImperativeHandle11(ref, () => {
12995
13010
  return inputRef.current;
12996
13011
  }, []);
12997
- useEffect42(() => {
13012
+ useEffect43(() => {
12998
13013
  if (!inputRef.current) {
12999
13014
  return;
13000
13015
  }
@@ -15017,7 +15032,7 @@ var SchemaEditor = ({
15017
15032
  childResetRevision: revision
15018
15033
  };
15019
15034
  }, [revision]);
15020
- useEffect43(() => {
15035
+ useEffect44(() => {
15021
15036
  const bumpRevision = () => {
15022
15037
  setRevision((old) => old + 1);
15023
15038
  };
@@ -15033,7 +15048,7 @@ var SchemaEditor = ({
15033
15048
  const hasChanged = useMemo78(() => {
15034
15049
  return !deepEqual(savedDefaultProps, unsavedDefaultProps);
15035
15050
  }, [savedDefaultProps, unsavedDefaultProps]);
15036
- useEffect43(() => {
15051
+ useEffect44(() => {
15037
15052
  setUnsavedProps(hasChanged);
15038
15053
  }, [hasChanged]);
15039
15054
  const onQuickSave = useCallback66(() => {
@@ -15043,7 +15058,7 @@ var SchemaEditor = ({
15043
15058
  });
15044
15059
  }
15045
15060
  }, [hasChanged, onSave, showSaveButton, unsavedDefaultProps]);
15046
- useEffect43(() => {
15061
+ useEffect44(() => {
15047
15062
  const save = keybindings.registerKeybinding({
15048
15063
  event: "keydown",
15049
15064
  key: "s",
@@ -15384,11 +15399,11 @@ var DataEditor = ({
15384
15399
  }));
15385
15400
  }
15386
15401
  }, [readOnlyStudio, unresolvedComposition.id]);
15387
- useEffect44(() => {
15402
+ useEffect45(() => {
15388
15403
  checkIfCanSaveDefaultProps();
15389
15404
  }, [checkIfCanSaveDefaultProps]);
15390
15405
  const { previewServerState, subscribeToEvent } = useContext36(StudioServerConnectionCtx);
15391
- useEffect44(() => {
15406
+ useEffect45(() => {
15392
15407
  const unsub = subscribeToEvent("root-file-changed", checkIfCanSaveDefaultProps);
15393
15408
  return () => {
15394
15409
  unsub();
@@ -15578,14 +15593,14 @@ var DataEditor = ({
15578
15593
  };
15579
15594
 
15580
15595
  // src/components/RenderQueue/index.tsx
15581
- import React104, { useContext as useContext42, useEffect as useEffect46, useMemo as useMemo87 } from "react";
15596
+ import React104, { useContext as useContext42, useEffect as useEffect47, useMemo as useMemo87 } from "react";
15582
15597
  import { Internals as Internals33 } from "remotion";
15583
15598
 
15584
15599
  // src/components/RenderQueue/RenderQueueItem.tsx
15585
15600
  import {
15586
15601
  useCallback as useCallback77,
15587
15602
  useContext as useContext41,
15588
- useEffect as useEffect45,
15603
+ useEffect as useEffect46,
15589
15604
  useMemo as useMemo86,
15590
15605
  useState as useState51
15591
15606
  } from "react";
@@ -16222,7 +16237,7 @@ var RenderQueueItem = ({ job, selected }) => {
16222
16237
  });
16223
16238
  pushUrl(`/outputs/${job.outName}`);
16224
16239
  }, [job, scrollCurrentIntoView, selected, setCanvasContent]);
16225
- useEffect45(() => {
16240
+ useEffect46(() => {
16226
16241
  if (selected) {
16227
16242
  scrollCurrentIntoView();
16228
16243
  }
@@ -16314,7 +16329,7 @@ var RenderQueue = () => {
16314
16329
  const previousJobCount = React104.useRef(jobs.length);
16315
16330
  const jobCount = jobs.length;
16316
16331
  const divRef = React104.useRef(null);
16317
- useEffect46(() => {
16332
+ useEffect47(() => {
16318
16333
  if (!divRef.current) {
16319
16334
  return;
16320
16335
  }
@@ -16455,7 +16470,7 @@ var RendersTab = ({ selected, onClick }) => {
16455
16470
  import React107, { useContext as useContext45 } from "react";
16456
16471
 
16457
16472
  // src/components/VisualControls/VisualControlHandle.tsx
16458
- import { useCallback as useCallback79, useContext as useContext44, useEffect as useEffect48, useState as useState54 } from "react";
16473
+ import { useCallback as useCallback79, useContext as useContext44, useEffect as useEffect49, useState as useState54 } from "react";
16459
16474
  import { Internals as Internals35 } from "remotion";
16460
16475
  import { NoReactInternals as NoReactInternals12 } from "remotion/no-react";
16461
16476
 
@@ -16528,7 +16543,7 @@ var VisualControlHandleHeader = ({ originalFileName }) => {
16528
16543
  };
16529
16544
 
16530
16545
  // src/components/VisualControls/get-original-stack-trace.ts
16531
- import { useEffect as useEffect47, useState as useState53 } from "react";
16546
+ import { useEffect as useEffect48, useState as useState53 } from "react";
16532
16547
 
16533
16548
  // src/components/Timeline/TimelineStack/get-stack.ts
16534
16549
  import { SourceMapConsumer as SourceMapConsumer2 } from "source-map";
@@ -16618,7 +16633,7 @@ var getOriginalLocationFromStack = async (stack2, type) => {
16618
16633
  // src/components/VisualControls/get-original-stack-trace.ts
16619
16634
  var useOriginalFileName = (stack2) => {
16620
16635
  const [originalFileName, setOriginalFileName] = useState53({ type: "loading" });
16621
- useEffect47(() => {
16636
+ useEffect48(() => {
16622
16637
  if (!stack2) {
16623
16638
  return;
16624
16639
  }
@@ -16710,7 +16725,7 @@ var VisualControlHandle = ({ value, keyName }) => {
16710
16725
  keyName,
16711
16726
  zodTypes
16712
16727
  ]);
16713
- useEffect48(() => {
16728
+ useEffect49(() => {
16714
16729
  setSaving(false);
16715
16730
  }, [fastRefreshes]);
16716
16731
  return /* @__PURE__ */ jsxs75(Fragment21, {
@@ -16863,7 +16878,7 @@ var OptionsPanel = ({ readOnlyStudio }) => {
16863
16878
  resetUnsaved(e.detail.resetUnsaved);
16864
16879
  }
16865
16880
  }, [resetUnsaved]);
16866
- useEffect49(() => {
16881
+ useEffect50(() => {
16867
16882
  window.addEventListener(Internals36.PROPS_UPDATED_EXTERNALLY, reset);
16868
16883
  return () => {
16869
16884
  window.removeEventListener(Internals36.PROPS_UPDATED_EXTERNALLY, reset);
@@ -16916,7 +16931,7 @@ var OptionsPanel = ({ readOnlyStudio }) => {
16916
16931
  };
16917
16932
 
16918
16933
  // src/components/PreviewToolbar.tsx
16919
- import { useContext as useContext53, useEffect as useEffect56, useRef as useRef30, useState as useState59 } from "react";
16934
+ import { useContext as useContext53, useEffect as useEffect57, useRef as useRef31, useState as useState59 } from "react";
16920
16935
  import { Internals as Internals44 } from "remotion";
16921
16936
 
16922
16937
  // src/helpers/should-show-render-button.ts
@@ -16976,10 +16991,10 @@ var CheckboardToggle = () => {
16976
16991
 
16977
16992
  // src/components/FpsCounter.tsx
16978
16993
  import {
16979
- useEffect as useEffect50,
16994
+ useEffect as useEffect51,
16980
16995
  useLayoutEffect,
16981
16996
  useMemo as useMemo91,
16982
- useRef as useRef28,
16997
+ useRef as useRef29,
16983
16998
  useState as useState56
16984
16999
  } from "react";
16985
17000
  import { Internals as Internals37 } from "remotion";
@@ -17000,9 +17015,9 @@ var FpsCounter = ({ playbackSpeed }) => {
17000
17015
  const frame2 = Internals37.Timeline.useTimelinePosition();
17001
17016
  const [marker, rerender] = useState56({});
17002
17017
  const [fps, setFps] = useState56(0);
17003
- const previousUpdates = useRef28([]);
17004
- const fpsRef = useRef28(0);
17005
- const playingRef = useRef28(playing);
17018
+ const previousUpdates = useRef29([]);
17019
+ const fpsRef = useRef29(0);
17020
+ const playingRef = useRef29(playing);
17006
17021
  useLayoutEffect(() => {
17007
17022
  fpsRef.current = 0;
17008
17023
  previousUpdates.current = [];
@@ -17020,7 +17035,7 @@ var FpsCounter = ({ playbackSpeed }) => {
17020
17035
  if (previousUpdates.current.length === 2)
17021
17036
  setFps(fpsRef.current);
17022
17037
  }, [frame2]);
17023
- useEffect50(() => {
17038
+ useEffect51(() => {
17024
17039
  if (playing) {
17025
17040
  const t = setTimeout(() => {
17026
17041
  rerender({});
@@ -17058,7 +17073,7 @@ var FpsCounter = ({ playbackSpeed }) => {
17058
17073
  };
17059
17074
 
17060
17075
  // src/components/FullscreenToggle.tsx
17061
- import { useCallback as useCallback82, useContext as useContext48, useEffect as useEffect51 } from "react";
17076
+ import { useCallback as useCallback82, useContext as useContext48, useEffect as useEffect52 } from "react";
17062
17077
  import { Internals as Internals38 } from "remotion";
17063
17078
  import { NoReactInternals as NoReactInternals14 } from "remotion/no-react";
17064
17079
  import { jsx as jsx162 } from "react/jsx-runtime";
@@ -17080,7 +17095,7 @@ var FullScreenToggle = () => {
17080
17095
  }
17081
17096
  }));
17082
17097
  }, [setSize]);
17083
- useEffect51(() => {
17098
+ useEffect52(() => {
17084
17099
  const f = keybindings.registerKeybinding({
17085
17100
  event: "keydown",
17086
17101
  key: "f",
@@ -17194,7 +17209,7 @@ var MuteToggle = ({ muted, setMuted }) => {
17194
17209
 
17195
17210
  // src/components/PlayPause.tsx
17196
17211
  import { PlayerInternals as PlayerInternals12 } from "@remotion/player";
17197
- import { useCallback as useCallback85, useEffect as useEffect52, useState as useState57 } from "react";
17212
+ import { useCallback as useCallback85, useEffect as useEffect53, useState as useState57 } from "react";
17198
17213
  import { Internals as Internals39 } from "remotion";
17199
17214
 
17200
17215
  // src/icons/jump-to-start.tsx
@@ -17317,7 +17332,7 @@ var PlayPause = ({ playbackRate, loop, bufferStateDelayInMilliseconds }) => {
17317
17332
  }
17318
17333
  });
17319
17334
  const isStill = useIsStill();
17320
- useEffect52(() => {
17335
+ useEffect53(() => {
17321
17336
  if (isStill) {
17322
17337
  pause();
17323
17338
  }
@@ -17399,7 +17414,7 @@ var PlayPause = ({ playbackRate, loop, bufferStateDelayInMilliseconds }) => {
17399
17414
  seek(outFrame ?? getCurrentDuration() - 1);
17400
17415
  }, [seek, outFrame]);
17401
17416
  const keybindings = useKeybinding();
17402
- useEffect52(() => {
17417
+ useEffect53(() => {
17403
17418
  const arrowLeft = keybindings.registerKeybinding({
17404
17419
  event: "keydown",
17405
17420
  key: "ArrowLeft",
@@ -17471,7 +17486,7 @@ var PlayPause = ({ playbackRate, loop, bufferStateDelayInMilliseconds }) => {
17471
17486
  onEnter,
17472
17487
  onSpace
17473
17488
  ]);
17474
- useEffect52(() => {
17489
+ useEffect53(() => {
17475
17490
  let timeout = null;
17476
17491
  let stopped = false;
17477
17492
  const onBuffer = () => {
@@ -17553,7 +17568,7 @@ var PlayPause = ({ playbackRate, loop, bufferStateDelayInMilliseconds }) => {
17553
17568
 
17554
17569
  // src/components/PlaybackKeyboardShortcutsManager.tsx
17555
17570
  import { PlayerInternals as PlayerInternals13 } from "@remotion/player";
17556
- import { useCallback as useCallback86, useEffect as useEffect53 } from "react";
17571
+ import { useCallback as useCallback86, useEffect as useEffect54 } from "react";
17557
17572
  var PlaybackKeyboardShortcutsManager = ({ setPlaybackRate }) => {
17558
17573
  const keybindings = useKeybinding();
17559
17574
  const { play, pause, playing } = PlayerInternals13.usePlayer();
@@ -17591,7 +17606,7 @@ var PlaybackKeyboardShortcutsManager = ({ setPlaybackRate }) => {
17591
17606
  });
17592
17607
  play();
17593
17608
  }, [play, playing, setPlaybackRate]);
17594
- useEffect53(() => {
17609
+ useEffect54(() => {
17595
17610
  const jKey = keybindings.registerKeybinding({
17596
17611
  event: "keydown",
17597
17612
  key: "j",
@@ -17629,7 +17644,7 @@ var PlaybackKeyboardShortcutsManager = ({ setPlaybackRate }) => {
17629
17644
  };
17630
17645
 
17631
17646
  // src/components/PlaybackRatePersistor.tsx
17632
- import { useContext as useContext49, useEffect as useEffect54 } from "react";
17647
+ import { useContext as useContext49, useEffect as useEffect55 } from "react";
17633
17648
  import { Internals as Internals40 } from "remotion";
17634
17649
 
17635
17650
  // src/state/playbackrate.ts
@@ -17651,10 +17666,10 @@ var loadPlaybackRate = () => {
17651
17666
  // src/components/PlaybackRatePersistor.tsx
17652
17667
  var PlaybackRatePersistor = () => {
17653
17668
  const { setPlaybackRate, playbackRate } = useContext49(Internals40.TimelineContext);
17654
- useEffect54(() => {
17669
+ useEffect55(() => {
17655
17670
  setPlaybackRate(loadPlaybackRate());
17656
17671
  }, [setPlaybackRate]);
17657
- useEffect54(() => {
17672
+ useEffect55(() => {
17658
17673
  persistPlaybackRate(playbackRate);
17659
17674
  }, [playbackRate]);
17660
17675
  return null;
@@ -17736,9 +17751,9 @@ import { PlayerInternals as PlayerInternals14 } from "@remotion/player";
17736
17751
  import {
17737
17752
  useCallback as useCallback87,
17738
17753
  useContext as useContext51,
17739
- useEffect as useEffect55,
17754
+ useEffect as useEffect56,
17740
17755
  useMemo as useMemo93,
17741
- useRef as useRef29,
17756
+ useRef as useRef30,
17742
17757
  useState as useState58
17743
17758
  } from "react";
17744
17759
  import ReactDOM8 from "react-dom";
@@ -17814,8 +17829,8 @@ var RenderButton = ({
17814
17829
  const { setSelectedModal } = useContext51(ModalsContext);
17815
17830
  const [renderType, setRenderType] = useState58(() => getInitialRenderType(readOnlyStudio));
17816
17831
  const [dropdownOpened, setDropdownOpened] = useState58(false);
17817
- const dropdownRef = useRef29(null);
17818
- const containerRef = useRef29(null);
17832
+ const dropdownRef = useRef30(null);
17833
+ const containerRef = useRef30(null);
17819
17834
  const { currentZIndex } = useZIndex();
17820
17835
  const size4 = PlayerInternals14.useElementSize(dropdownRef, {
17821
17836
  triggerOnWindowResize: true,
@@ -17910,7 +17925,8 @@ var RenderButton = ({
17910
17925
  defaultProps: props[video.id] ?? video.defaultProps,
17911
17926
  inFrameMark: inFrame,
17912
17927
  outFrameMark: outFrame,
17913
- initialLogLevel: defaults.logLevel
17928
+ initialLogLevel: defaults.logLevel,
17929
+ initialLicenseKey: defaults.publicLicenseKey
17914
17930
  });
17915
17931
  }, [video, setSelectedModal, getCurrentFrame2, props, inFrame, outFrame]);
17916
17932
  const onClick = useCallback87(() => {
@@ -17961,7 +17977,7 @@ var RenderButton = ({
17961
17977
  }
17962
17978
  ];
17963
17979
  }, [handleRenderTypeChange]);
17964
- useEffect55(() => {
17980
+ useEffect56(() => {
17965
17981
  const { current } = dropdownRef;
17966
17982
  if (!current) {
17967
17983
  return;
@@ -18307,14 +18323,14 @@ var PreviewToolbar = ({ readOnlyStudio, bufferStateDelayInMilliseconds }) => {
18307
18323
  const { mediaMuted } = useContext53(Internals44.MediaVolumeContext);
18308
18324
  const { setMediaMuted } = useContext53(Internals44.SetMediaVolumeContext);
18309
18325
  const isVideoComposition = useIsVideoComposition();
18310
- const previewToolbarRef = useRef30(null);
18311
- const leftScrollIndicatorRef = useRef30(null);
18312
- const rightScrollIndicatorRef = useRef30(null);
18326
+ const previewToolbarRef = useRef31(null);
18327
+ const leftScrollIndicatorRef = useRef31(null);
18328
+ const rightScrollIndicatorRef = useRef31(null);
18313
18329
  const isStill = useIsStill();
18314
18330
  const [loop, setLoop] = useState59(loadLoopOption());
18315
18331
  const isFullscreenSupported = checkFullscreenSupport();
18316
18332
  const isMobileLayout = useMobileLayout();
18317
- useEffect56(() => {
18333
+ useEffect57(() => {
18318
18334
  if (isMobileLayout && previewToolbarRef.current) {
18319
18335
  const updateScrollableIndicatorProps = (target) => {
18320
18336
  const boundingBox = target.getBoundingClientRect();
@@ -18465,7 +18481,7 @@ var PreviewToolbar = ({ readOnlyStudio, bufferStateDelayInMilliseconds }) => {
18465
18481
  };
18466
18482
 
18467
18483
  // src/components/Splitter/SplitterContainer.tsx
18468
- import { useMemo as useMemo94, useRef as useRef31, useState as useState60 } from "react";
18484
+ import { useMemo as useMemo94, useRef as useRef32, useState as useState60 } from "react";
18469
18485
 
18470
18486
  // src/state/timeline.ts
18471
18487
  var localStorageKey4 = (id) => `remotion.editor.timelineFlex.${id}`;
@@ -18520,8 +18536,8 @@ var containerColumn = {
18520
18536
  var SplitterContainer = ({ orientation, children, defaultFlex, maxFlex, minFlex, id }) => {
18521
18537
  const [initialTimelineFlex, persistFlex] = useTimelineFlex(id);
18522
18538
  const [flexValue, setFlexValue] = useState60(initialTimelineFlex ?? defaultFlex);
18523
- const ref = useRef31(null);
18524
- const isDragging = useRef31(false);
18539
+ const ref = useRef32(null);
18540
+ const isDragging = useRef32(false);
18525
18541
  const value = useMemo94(() => {
18526
18542
  return {
18527
18543
  flexValue,
@@ -18594,7 +18610,7 @@ var SplitterElement = ({ children, type, sticky }) => {
18594
18610
 
18595
18611
  // src/components/Splitter/SplitterHandle.tsx
18596
18612
  import { PlayerInternals as PlayerInternals15 } from "@remotion/player";
18597
- import { useContext as useContext55, useEffect as useEffect57, useRef as useRef32, useState as useState61 } from "react";
18613
+ import { useContext as useContext55, useEffect as useEffect58, useRef as useRef33, useState as useState61 } from "react";
18598
18614
  import { jsx as jsx179 } from "react/jsx-runtime";
18599
18615
  var SPLITTER_HANDLE_SIZE = 3;
18600
18616
  var containerRow2 = {
@@ -18609,8 +18625,8 @@ var SplitterHandle = ({ allowToCollapse, onCollapse }) => {
18609
18625
  throw new Error("Cannot find splitter context");
18610
18626
  }
18611
18627
  const [lastPointerUp, setLastPointerUp] = useState61(() => Date.now());
18612
- const ref = useRef32(null);
18613
- useEffect57(() => {
18628
+ const ref = useRef33(null);
18629
+ useEffect58(() => {
18614
18630
  if (context.isDragging.current) {
18615
18631
  return;
18616
18632
  }
@@ -18693,7 +18709,7 @@ var SplitterHandle = ({ allowToCollapse, onCollapse }) => {
18693
18709
  }
18694
18710
  };
18695
18711
  }, [allowToCollapse, context, context.flexValue, lastPointerUp, onCollapse]);
18696
- useEffect57(() => {
18712
+ useEffect58(() => {
18697
18713
  const { current } = ref;
18698
18714
  if (!current) {
18699
18715
  return;
@@ -18780,7 +18796,7 @@ var TopPanel = ({ readOnlyStudio, onMounted, drawRef: drawRef2, bufferStateDelay
18780
18796
  }
18781
18797
  return "expanded";
18782
18798
  }, [sidebarCollapsedStateRight]);
18783
- useEffect58(() => {
18799
+ useEffect59(() => {
18784
18800
  onMounted();
18785
18801
  }, [onMounted]);
18786
18802
  const canvasContainerStyle = useMemo96(() => ({
@@ -18950,7 +18966,7 @@ var SidebarCollapserControls = () => {
18950
18966
  toggleLeft,
18951
18967
  toggleRight
18952
18968
  ]);
18953
- useEffect59(() => {
18969
+ useEffect60(() => {
18954
18970
  const left3 = keybindings.registerKeybinding({
18955
18971
  event: "keydown",
18956
18972
  key: "b",
@@ -19028,7 +19044,7 @@ var SidebarCollapserControls = () => {
19028
19044
  import {
19029
19045
  useCallback as useCallback91,
19030
19046
  useContext as useContext58,
19031
- useEffect as useEffect60,
19047
+ useEffect as useEffect61,
19032
19048
  useMemo as useMemo97,
19033
19049
  useState as useState62
19034
19050
  } from "react";
@@ -19080,7 +19096,7 @@ var UpdateCheck = () => {
19080
19096
  });
19081
19097
  return controller;
19082
19098
  }, []);
19083
- useEffect60(() => {
19099
+ useEffect61(() => {
19084
19100
  const abortUpdate = checkForUpdates();
19085
19101
  const abortBugs = checkForBugs();
19086
19102
  return () => {
@@ -19445,9 +19461,9 @@ import { PlayerInternals as PlayerInternals16 } from "@remotion/player";
19445
19461
  import {
19446
19462
  useCallback as useCallback93,
19447
19463
  useContext as useContext61,
19448
- useEffect as useEffect61,
19464
+ useEffect as useEffect62,
19449
19465
  useMemo as useMemo100,
19450
- useRef as useRef33,
19466
+ useRef as useRef34,
19451
19467
  useState as useState64
19452
19468
  } from "react";
19453
19469
  import { Internals as Internals46, useVideoConfig as useVideoConfig4 } from "remotion";
@@ -19611,7 +19627,7 @@ var Inner2 = () => {
19611
19627
  dragging: false
19612
19628
  });
19613
19629
  const { playing, play, pause, seek } = PlayerInternals16.usePlayer();
19614
- const scroller = useRef33(null);
19630
+ const scroller = useRef34(null);
19615
19631
  const stopInterval = () => {
19616
19632
  if (scroller.current) {
19617
19633
  clearInterval(scroller.current);
@@ -19876,7 +19892,7 @@ var Inner2 = () => {
19876
19892
  videoConfig,
19877
19893
  width
19878
19894
  ]);
19879
- useEffect61(() => {
19895
+ useEffect62(() => {
19880
19896
  if (!dragging.dragging) {
19881
19897
  return;
19882
19898
  }
@@ -19887,7 +19903,7 @@ var Inner2 = () => {
19887
19903
  window.removeEventListener("pointerup", onPointerUpScrubbing);
19888
19904
  };
19889
19905
  }, [dragging.dragging, onPointerMoveScrubbing, onPointerUpScrubbing]);
19890
- useEffect61(() => {
19906
+ useEffect62(() => {
19891
19907
  if (inOutDragging.dragging === false) {
19892
19908
  return;
19893
19909
  }
@@ -19978,7 +19994,7 @@ var Inner2 = () => {
19978
19994
 
19979
19995
  // src/components/Timeline/TimelineList.tsx
19980
19996
  import { PlayerInternals as PlayerInternals18 } from "@remotion/player";
19981
- import { useRef as useRef36 } from "react";
19997
+ import { useRef as useRef37 } from "react";
19982
19998
 
19983
19999
  // src/components/Timeline/TimelineListItem.tsx
19984
20000
  import { useCallback as useCallback96, useContext as useContext63, useMemo as useMemo102 } from "react";
@@ -20063,7 +20079,7 @@ import { SOURCE_MAP_ENDPOINT } from "@remotion/studio-shared";
20063
20079
  import {
20064
20080
  useCallback as useCallback95,
20065
20081
  useContext as useContext62,
20066
- useEffect as useEffect62,
20082
+ useEffect as useEffect63,
20067
20083
  useMemo as useMemo101,
20068
20084
  useState as useState65
20069
20085
  } from "react";
@@ -20152,7 +20168,7 @@ var TimelineStack = ({ isCompact, sequence }) => {
20152
20168
  window.open(getGitRefUrl(window.remotion_gitSource, originalLocation), "_blank");
20153
20169
  }
20154
20170
  }, [canOpenInEditor, canOpenInGitHub, openEditor, originalLocation]);
20155
- useEffect62(() => {
20171
+ useEffect63(() => {
20156
20172
  if (!sequence.stack) {
20157
20173
  return;
20158
20174
  }
@@ -20300,16 +20316,16 @@ var TimelineListItem = ({ nestedDepth, sequence, isCompact }) => {
20300
20316
  };
20301
20317
 
20302
20318
  // src/components/Timeline/TimelineTimeIndicators.tsx
20303
- import { useContext as useContext64, useEffect as useEffect64, useMemo as useMemo103, useRef as useRef35 } from "react";
20319
+ import { useContext as useContext64, useEffect as useEffect65, useMemo as useMemo103, useRef as useRef36 } from "react";
20304
20320
  import { Internals as Internals49 } from "remotion";
20305
20321
 
20306
20322
  // src/components/TimeValue.tsx
20307
20323
  import { PlayerInternals as PlayerInternals17 } from "@remotion/player";
20308
20324
  import {
20309
20325
  useCallback as useCallback97,
20310
- useEffect as useEffect63,
20326
+ useEffect as useEffect64,
20311
20327
  useImperativeHandle as useImperativeHandle13,
20312
- useRef as useRef34
20328
+ useRef as useRef35
20313
20329
  } from "react";
20314
20330
  import { Internals as Internals48, useCurrentFrame } from "remotion";
20315
20331
  import { jsx as jsx190, jsxs as jsxs92 } from "react/jsx-runtime";
@@ -20344,7 +20360,7 @@ var TimeValue = () => {
20344
20360
  const isStill = useIsStill();
20345
20361
  const { seek, play, pause, toggle } = PlayerInternals17.usePlayer();
20346
20362
  const keybindings = useKeybinding();
20347
- const ref = useRef34(null);
20363
+ const ref = useRef35(null);
20348
20364
  const onTextChange = useCallback97((newVal) => {
20349
20365
  seek(parseInt(newVal, 10));
20350
20366
  }, [seek]);
@@ -20360,7 +20376,7 @@ var TimeValue = () => {
20360
20376
  pause,
20361
20377
  toggle
20362
20378
  }), [seek, play, pause, toggle]);
20363
- useEffect63(() => {
20379
+ useEffect64(() => {
20364
20380
  const gKey = keybindings.registerKeybinding({
20365
20381
  event: "keypress",
20366
20382
  key: "g",
@@ -20472,8 +20488,8 @@ var TimelineTimeIndicators = () => {
20472
20488
  });
20473
20489
  };
20474
20490
  var Inner3 = ({ windowWidth, durationInFrames, fps }) => {
20475
- const ref = useRef35(null);
20476
- useEffect64(() => {
20491
+ const ref = useRef36(null);
20492
+ useEffect65(() => {
20477
20493
  const currentRef = ref.current;
20478
20494
  if (!currentRef) {
20479
20495
  return;
@@ -20555,7 +20571,7 @@ var container41 = {
20555
20571
  background: BACKGROUND
20556
20572
  };
20557
20573
  var TimelineList = ({ timeline }) => {
20558
- const ref = useRef36(null);
20574
+ const ref = useRef37(null);
20559
20575
  const size4 = PlayerInternals18.useElementSize(ref, {
20560
20576
  shouldApplyCssTransforms: false,
20561
20577
  triggerOnWindowResize: false
@@ -20580,7 +20596,7 @@ var TimelineList = ({ timeline }) => {
20580
20596
  };
20581
20597
 
20582
20598
  // src/components/Timeline/TimelinePlayCursorSyncer.tsx
20583
- import { useContext as useContext65, useEffect as useEffect65 } from "react";
20599
+ import { useContext as useContext65, useEffect as useEffect66 } from "react";
20584
20600
  import { Internals as Internals50 } from "remotion";
20585
20601
  var lastTimelinePositionWhileScrolling = null;
20586
20602
  var TimelinePlayCursorSyncer = () => {
@@ -20598,7 +20614,7 @@ var TimelinePlayCursorSyncer = () => {
20598
20614
  setCurrentFps(video.fps);
20599
20615
  }
20600
20616
  const playing = timelineContext.playing ?? false;
20601
- useEffect65(() => {
20617
+ useEffect66(() => {
20602
20618
  if (!video) {
20603
20619
  return;
20604
20620
  }
@@ -20611,7 +20627,7 @@ var TimelinePlayCursorSyncer = () => {
20611
20627
  frame: timelinePosition
20612
20628
  });
20613
20629
  }, [playing, timelineContext, timelinePosition, video]);
20614
- useEffect65(() => {
20630
+ useEffect66(() => {
20615
20631
  const { current } = scrollableRef;
20616
20632
  if (!current) {
20617
20633
  return;
@@ -20749,7 +20765,7 @@ var getTimelineSequenceLayout = ({
20749
20765
  // src/helpers/use-max-media-duration.ts
20750
20766
  import { getVideoMetadata as getVideoMetadata2 } from "@remotion/media-utils";
20751
20767
 
20752
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/misc.js
20768
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/misc.js
20753
20769
  /*!
20754
20770
  * Copyright (c) 2025-present, Vanilagy and contributors
20755
20771
  *
@@ -21179,7 +21195,7 @@ var isNumber = (x) => {
21179
21195
  return typeof x === "number" && !Number.isNaN(x);
21180
21196
  };
21181
21197
 
21182
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/metadata.js
21198
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/metadata.js
21183
21199
  /*!
21184
21200
  * Copyright (c) 2025-present, Vanilagy and contributors
21185
21201
  *
@@ -21230,7 +21246,7 @@ var DEFAULT_TRACK_DISPOSITION = {
21230
21246
  visuallyImpaired: false
21231
21247
  };
21232
21248
 
21233
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/codec.js
21249
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/codec.js
21234
21250
  /*!
21235
21251
  * Copyright (c) 2025-present, Vanilagy and contributors
21236
21252
  *
@@ -21504,7 +21520,7 @@ var parsePcmCodec = (codec) => {
21504
21520
  return { dataType, sampleSize, littleEndian, silentValue };
21505
21521
  };
21506
21522
 
21507
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/codec-data.js
21523
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/codec-data.js
21508
21524
  /*!
21509
21525
  * Copyright (c) 2025-present, Vanilagy and contributors
21510
21526
  *
@@ -22921,7 +22937,7 @@ var readVorbisComments = (bytes, metadataTags) => {
22921
22937
  }
22922
22938
  };
22923
22939
 
22924
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/demuxer.js
22940
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/demuxer.js
22925
22941
  /*!
22926
22942
  * Copyright (c) 2025-present, Vanilagy and contributors
22927
22943
  *
@@ -22936,7 +22952,7 @@ class Demuxer {
22936
22952
  }
22937
22953
  }
22938
22954
 
22939
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/custom-coder.js
22955
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/custom-coder.js
22940
22956
  /*!
22941
22957
  * Copyright (c) 2025-present, Vanilagy and contributors
22942
22958
  *
@@ -22947,7 +22963,7 @@ class Demuxer {
22947
22963
  var customVideoDecoders = [];
22948
22964
  var customAudioDecoders = [];
22949
22965
 
22950
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/packet.js
22966
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/packet.js
22951
22967
  /*!
22952
22968
  * Copyright (c) 2025-present, Vanilagy and contributors
22953
22969
  *
@@ -23079,7 +23095,7 @@ class EncodedPacket {
23079
23095
  }
23080
23096
  }
23081
23097
 
23082
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/sample.js
23098
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/sample.js
23083
23099
  /*!
23084
23100
  * Copyright (c) 2025-present, Vanilagy and contributors
23085
23101
  *
@@ -23755,7 +23771,7 @@ var getPlaneConfigs = (format) => {
23755
23771
  };
23756
23772
  var AUDIO_SAMPLE_FORMATS = new Set(["f32", "f32-planar", "s16", "s16-planar", "s32", "s32-planar", "u8", "u8-planar"]);
23757
23773
 
23758
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/media-sink.js
23774
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/media-sink.js
23759
23775
  /*!
23760
23776
  * Copyright (c) 2025-present, Vanilagy and contributors
23761
23777
  *
@@ -24709,7 +24725,7 @@ class VideoSampleSink extends BaseMediaSampleSink {
24709
24725
  }
24710
24726
  }
24711
24727
 
24712
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/input-track.js
24728
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/input-track.js
24713
24729
  /*!
24714
24730
  * Copyright (c) 2025-present, Vanilagy and contributors
24715
24731
  *
@@ -24918,7 +24934,7 @@ class InputAudioTrack extends InputTrack {
24918
24934
  }
24919
24935
  }
24920
24936
 
24921
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/isobmff/isobmff-misc.js
24937
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/isobmff/isobmff-misc.js
24922
24938
  /*!
24923
24939
  * Copyright (c) 2025-present, Vanilagy and contributors
24924
24940
  *
@@ -24936,7 +24952,7 @@ var buildIsobmffMimeType = (info) => {
24936
24952
  return string;
24937
24953
  };
24938
24954
 
24939
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/isobmff/isobmff-reader.js
24955
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/isobmff/isobmff-reader.js
24940
24956
  /*!
24941
24957
  * Copyright (c) 2025-present, Vanilagy and contributors
24942
24958
  *
@@ -25012,7 +25028,7 @@ var readDataBox = (slice) => {
25012
25028
  }
25013
25029
  };
25014
25030
 
25015
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/isobmff/isobmff-demuxer.js
25031
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/isobmff/isobmff-demuxer.js
25016
25032
  /*!
25017
25033
  * Copyright (c) 2025-present, Vanilagy and contributors
25018
25034
  *
@@ -27290,7 +27306,7 @@ var sampleTableIsEmpty = (sampleTable) => {
27290
27306
  return sampleTable.sampleSizes.length === 0;
27291
27307
  };
27292
27308
 
27293
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/matroska/ebml.js
27309
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/matroska/ebml.js
27294
27310
  /*!
27295
27311
  * Copyright (c) 2025-present, Vanilagy and contributors
27296
27312
  *
@@ -27605,7 +27621,7 @@ function assertDefinedSize(size4) {
27605
27621
  }
27606
27622
  }
27607
27623
 
27608
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/matroska/matroska-misc.js
27624
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/matroska/matroska-misc.js
27609
27625
  /*!
27610
27626
  * Copyright (c) 2025-present, Vanilagy and contributors
27611
27627
  *
@@ -27623,7 +27639,7 @@ var buildMatroskaMimeType = (info) => {
27623
27639
  return string;
27624
27640
  };
27625
27641
 
27626
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/matroska/matroska-demuxer.js
27642
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/matroska/matroska-demuxer.js
27627
27643
  /*!
27628
27644
  * Copyright (c) 2025-present, Vanilagy and contributors
27629
27645
  *
@@ -29502,7 +29518,7 @@ class MatroskaAudioTrackBacking extends MatroskaTrackBacking {
29502
29518
  }
29503
29519
  }
29504
29520
 
29505
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/shared/mp3-misc.js
29521
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/shared/mp3-misc.js
29506
29522
  /*!
29507
29523
  * Copyright (c) 2025-present, Vanilagy and contributors
29508
29524
  *
@@ -29744,7 +29760,7 @@ var decodeSynchsafe = (synchsafed) => {
29744
29760
  return unsynchsafed;
29745
29761
  };
29746
29762
 
29747
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/id3.js
29763
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/id3.js
29748
29764
  /*!
29749
29765
  * Copyright (c) 2025-present, Vanilagy and contributors
29750
29766
  *
@@ -30444,7 +30460,7 @@ class Id3V2Reader {
30444
30460
  }
30445
30461
  }
30446
30462
 
30447
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/mp3/mp3-reader.js
30463
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/mp3/mp3-reader.js
30448
30464
  /*!
30449
30465
  * Copyright (c) 2025-present, Vanilagy and contributors
30450
30466
  *
@@ -30470,7 +30486,7 @@ var readNextFrameHeader = async (reader, startPos, until) => {
30470
30486
  return null;
30471
30487
  };
30472
30488
 
30473
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/mp3/mp3-demuxer.js
30489
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/mp3/mp3-demuxer.js
30474
30490
  /*!
30475
30491
  * Copyright (c) 2025-present, Vanilagy and contributors
30476
30492
  *
@@ -30735,7 +30751,7 @@ class Mp3AudioTrackBacking {
30735
30751
  }
30736
30752
  }
30737
30753
 
30738
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/ogg/ogg-misc.js
30754
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/ogg/ogg-misc.js
30739
30755
  /*!
30740
30756
  * Copyright (c) 2025-present, Vanilagy and contributors
30741
30757
  *
@@ -30806,7 +30822,7 @@ var buildOggMimeType = (info) => {
30806
30822
  return string;
30807
30823
  };
30808
30824
 
30809
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/ogg/ogg-reader.js
30825
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/ogg/ogg-reader.js
30810
30826
  /*!
30811
30827
  * Copyright (c) 2025-present, Vanilagy and contributors
30812
30828
  *
@@ -30870,7 +30886,7 @@ var findNextPageHeader = (slice, until) => {
30870
30886
  return false;
30871
30887
  };
30872
30888
 
30873
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/ogg/ogg-demuxer.js
30889
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/ogg/ogg-demuxer.js
30874
30890
  /*!
30875
30891
  * Copyright (c) 2025-present, Vanilagy and contributors
30876
30892
  *
@@ -31530,7 +31546,7 @@ var findPreviousPacketEndPosition = (pageList, startPage, startSegmentIndex) =>
31530
31546
  return { page: previousPage, segmentIndex: previousPage.lacingValues.length - 1 };
31531
31547
  };
31532
31548
 
31533
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/wave/wave-demuxer.js
31549
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/wave/wave-demuxer.js
31534
31550
  /*!
31535
31551
  * Copyright (c) 2025-present, Vanilagy and contributors
31536
31552
  *
@@ -31951,7 +31967,7 @@ class WaveAudioTrackBacking {
31951
31967
  }
31952
31968
  }
31953
31969
 
31954
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/adts/adts-reader.js
31970
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/adts/adts-reader.js
31955
31971
  /*!
31956
31972
  * Copyright (c) 2025-present, Vanilagy and contributors
31957
31973
  *
@@ -32012,7 +32028,7 @@ var readFrameHeader2 = (slice) => {
32012
32028
  };
32013
32029
  };
32014
32030
 
32015
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/adts/adts-demuxer.js
32031
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/adts/adts-demuxer.js
32016
32032
  /*!
32017
32033
  * Copyright (c) 2025-present, Vanilagy and contributors
32018
32034
  *
@@ -32233,7 +32249,7 @@ class AdtsAudioTrackBacking {
32233
32249
  }
32234
32250
  }
32235
32251
 
32236
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/flac/flac-misc.js
32252
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/flac/flac-misc.js
32237
32253
  /*!
32238
32254
  * Copyright (c) 2025-present, Vanilagy and contributors
32239
32255
  *
@@ -32368,7 +32384,7 @@ var calculateCrc8 = (data) => {
32368
32384
  return crc;
32369
32385
  };
32370
32386
 
32371
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/flac/flac-demuxer.js
32387
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/flac/flac-demuxer.js
32372
32388
  /*!
32373
32389
  * Copyright (c) 2025-present, Vanilagy and contributors
32374
32390
  *
@@ -32792,7 +32808,7 @@ class FlacAudioTrackBacking {
32792
32808
  }
32793
32809
  }
32794
32810
 
32795
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/input-format.js
32811
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/input-format.js
32796
32812
  /*!
32797
32813
  * Copyright (c) 2025-present, Vanilagy and contributors
32798
32814
  *
@@ -33114,7 +33130,7 @@ var ADTS = /* @__PURE__ */ new AdtsInputFormat;
33114
33130
  var FLAC = /* @__PURE__ */ new FlacInputFormat;
33115
33131
  var ALL_FORMATS = [MP4, QTFF, MATROSKA, WEBM, WAVE, OGG, FLAC, MP3, ADTS];
33116
33132
 
33117
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/source.js
33133
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/source.js
33118
33134
  var nodeAlias = (() => ({}));
33119
33135
  /*!
33120
33136
  * Copyright (c) 2025-present, Vanilagy and contributors
@@ -33648,7 +33664,7 @@ class ReadOrchestrator {
33648
33664
  }
33649
33665
  }
33650
33666
 
33651
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/input.js
33667
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/input.js
33652
33668
  /*!
33653
33669
  * Copyright (c) 2025-present, Vanilagy and contributors
33654
33670
  *
@@ -33755,7 +33771,7 @@ class InputDisposedError extends Error {
33755
33771
  }
33756
33772
  }
33757
33773
 
33758
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/reader.js
33774
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/reader.js
33759
33775
  /*!
33760
33776
  * Copyright (c) 2025-present, Vanilagy and contributors
33761
33777
  *
@@ -33973,7 +33989,7 @@ var readAscii = (slice, length) => {
33973
33989
  }
33974
33990
  return str;
33975
33991
  };
33976
- // ../../node_modules/.bun/mediabunny@1.27.2/node_modules/mediabunny/dist/modules/src/index.js
33992
+ // ../../node_modules/.bun/mediabunny@1.27.3/node_modules/mediabunny/dist/modules/src/index.js
33977
33993
  /*!
33978
33994
  * Copyright (c) 2025-present, Vanilagy and contributors
33979
33995
  *
@@ -33983,7 +33999,7 @@ var readAscii = (slice, length) => {
33983
33999
  */
33984
34000
 
33985
34001
  // src/helpers/use-max-media-duration.ts
33986
- import { useEffect as useEffect66, useState as useState66 } from "react";
34002
+ import { useEffect as useEffect67, useState as useState66 } from "react";
33987
34003
  var cache = new Map;
33988
34004
  var getSrc = (s) => {
33989
34005
  if (s.type === "video") {
@@ -33997,7 +34013,7 @@ var getSrc = (s) => {
33997
34013
  var useMaxMediaDuration = (s, fps) => {
33998
34014
  const src = getSrc(s);
33999
34015
  const [maxMediaDuration, setMaxMediaDuration] = useState66(src ? cache.get(src) ?? null : Infinity);
34000
- useEffect66(() => {
34016
+ useEffect67(() => {
34001
34017
  if (!src) {
34002
34018
  return;
34003
34019
  }
@@ -34027,7 +34043,7 @@ var useMaxMediaDuration = (s, fps) => {
34027
34043
 
34028
34044
  // src/components/AudioWaveform.tsx
34029
34045
  import { getAudioData, getWaveformPortion } from "@remotion/media-utils";
34030
- import { useEffect as useEffect67, useMemo as useMemo106, useRef as useRef37, useState as useState67 } from "react";
34046
+ import { useEffect as useEffect68, useMemo as useMemo106, useRef as useRef38, useState as useState67 } from "react";
34031
34047
  import { Internals as Internals51 } from "remotion";
34032
34048
 
34033
34049
  // src/components/AudioWaveformBar.tsx
@@ -34086,20 +34102,20 @@ var AudioWaveform = ({
34086
34102
  }) => {
34087
34103
  const [metadata, setMetadata] = useState67(null);
34088
34104
  const [error, setError] = useState67(null);
34089
- const mountState = useRef37({ isMounted: true });
34105
+ const mountState = useRef38({ isMounted: true });
34090
34106
  const vidConf = Internals51.useUnsafeVideoConfig();
34091
34107
  if (vidConf === null) {
34092
34108
  throw new Error("Expected video config");
34093
34109
  }
34094
- const canvas = useRef37(null);
34095
- useEffect67(() => {
34110
+ const canvas = useRef38(null);
34111
+ useEffect68(() => {
34096
34112
  const { current } = mountState;
34097
34113
  current.isMounted = true;
34098
34114
  return () => {
34099
34115
  current.isMounted = false;
34100
34116
  };
34101
34117
  }, []);
34102
- useEffect67(() => {
34118
+ useEffect68(() => {
34103
34119
  if (!canvas.current) {
34104
34120
  return;
34105
34121
  }
@@ -34126,7 +34142,7 @@ var AudioWaveform = ({
34126
34142
  context.strokeStyle = LIGHT_TRANSPARENT;
34127
34143
  context.stroke();
34128
34144
  }, [visualizationWidth, metadata, startFrom, volume, doesVolumeChange]);
34129
- useEffect67(() => {
34145
+ useEffect68(() => {
34130
34146
  setError(null);
34131
34147
  getAudioData(src).then((data) => {
34132
34148
  if (mountState.current.isMounted) {
@@ -34301,7 +34317,7 @@ var TimelineSequenceFrame = ({ roundedFrame, premounted, postmounted }) => {
34301
34317
  };
34302
34318
 
34303
34319
  // src/components/Timeline/TimelineVideoInfo.tsx
34304
- import { useEffect as useEffect68, useRef as useRef38, useState as useState68 } from "react";
34320
+ import { useEffect as useEffect69, useRef as useRef39, useState as useState68 } from "react";
34305
34321
  import { useVideoConfig as useVideoConfig5 } from "remotion";
34306
34322
 
34307
34323
  // src/helpers/extract-frames.ts
@@ -34616,15 +34632,15 @@ var fillFrameWhereItFits = ({
34616
34632
  };
34617
34633
  var TimelineVideoInfo = ({ src, visualizationWidth, startFrom, durationInFrames }) => {
34618
34634
  const { fps } = useVideoConfig5();
34619
- const ref = useRef38(null);
34635
+ const ref = useRef39(null);
34620
34636
  const [error, setError] = useState68(null);
34621
- const aspectRatio = useRef38(getAspectRatioFromCache(src));
34622
- useEffect68(() => {
34637
+ const aspectRatio = useRef39(getAspectRatioFromCache(src));
34638
+ useEffect69(() => {
34623
34639
  return () => {
34624
34640
  clearFramesForSrc(src);
34625
34641
  };
34626
34642
  }, [src]);
34627
- useEffect68(() => {
34643
+ useEffect69(() => {
34628
34644
  if (error) {
34629
34645
  return;
34630
34646
  }
@@ -35077,13 +35093,13 @@ var EditorContent = ({ readOnlyStudio, children }) => {
35077
35093
  };
35078
35094
 
35079
35095
  // src/components/GlobalKeybindings.tsx
35080
- import { useContext as useContext69, useEffect as useEffect69 } from "react";
35096
+ import { useContext as useContext69, useEffect as useEffect70 } from "react";
35081
35097
  var GlobalKeybindings = () => {
35082
35098
  const keybindings = useKeybinding();
35083
35099
  const { setSelectedModal } = useContext69(ModalsContext);
35084
35100
  const { setCheckerboard } = useContext69(CheckerboardContext);
35085
35101
  const { navigateToNextComposition, navigateToPreviousComposition } = useCompositionNavigation();
35086
- useEffect69(() => {
35102
+ useEffect70(() => {
35087
35103
  const nKey = keybindings.registerKeybinding({
35088
35104
  event: "keypress",
35089
35105
  key: "n",
@@ -35189,7 +35205,7 @@ import { useContext as useContext83 } from "react";
35189
35205
 
35190
35206
  // src/components/InstallPackage.tsx
35191
35207
  import { apiDocs, descriptions, installableMap } from "@remotion/studio-shared";
35192
- import React144, { useCallback as useCallback99, useContext as useContext71, useEffect as useEffect70 } from "react";
35208
+ import React144, { useCallback as useCallback99, useContext as useContext71, useEffect as useEffect71 } from "react";
35193
35209
  import { VERSION as VERSION2 } from "remotion";
35194
35210
 
35195
35211
  // src/api/install-package.ts
@@ -35323,7 +35339,7 @@ var InstallPackageModal = ({ packageManager }) => {
35323
35339
  const canSelectPackages = state.type === "idle" && ctx.type === "connected";
35324
35340
  const disabled = !(canSelectPackages || state.type === "done") || selectedPackages.length === 0;
35325
35341
  const { registerKeybinding } = useKeybinding();
35326
- useEffect70(() => {
35342
+ useEffect71(() => {
35327
35343
  if (disabled) {
35328
35344
  return;
35329
35345
  }
@@ -35447,7 +35463,7 @@ var InstallPackageModal = ({ packageManager }) => {
35447
35463
  import { useCallback as useCallback101, useContext as useContext74, useMemo as useMemo112 } from "react";
35448
35464
 
35449
35465
  // src/components/RenderModal/ResolveCompositionBeforeModal.tsx
35450
- import React145, { useContext as useContext72, useEffect as useEffect71, useMemo as useMemo111 } from "react";
35466
+ import React145, { useContext as useContext72, useEffect as useEffect72, useMemo as useMemo111 } from "react";
35451
35467
  import { Internals as Internals55 } from "remotion";
35452
35468
  import { jsx as jsx209, jsxs as jsxs103 } from "react/jsx-runtime";
35453
35469
  var loaderContainer2 = {
@@ -35471,7 +35487,7 @@ var ResolveCompositionBeforeModal = ({ compositionId, children }) => {
35471
35487
  const resolved = Internals55.useResolvedVideoConfig(compositionId);
35472
35488
  const unresolvedContext = useContext72(Internals55.CompositionManager);
35473
35489
  const unresolved = unresolvedContext.compositions.find((c) => compositionId === c.id);
35474
- useEffect71(() => {
35490
+ useEffect72(() => {
35475
35491
  const { current } = Internals55.resolveCompositionsRef;
35476
35492
  if (!current) {
35477
35493
  throw new Error("No ref to trigger composition calc");
@@ -35529,7 +35545,7 @@ var ResolveCompositionBeforeModal = ({ compositionId, children }) => {
35529
35545
  };
35530
35546
 
35531
35547
  // src/components/NewComposition/CodemodFooter.tsx
35532
- import { useCallback as useCallback100, useContext as useContext73, useEffect as useEffect72, useState as useState69 } from "react";
35548
+ import { useCallback as useCallback100, useContext as useContext73, useEffect as useEffect73, useState as useState69 } from "react";
35533
35549
 
35534
35550
  // src/components/NewComposition/DiffPreview.tsx
35535
35551
  import { jsx as jsx210, jsxs as jsxs104 } from "react/jsx-runtime";
@@ -35594,7 +35610,7 @@ var CodemodFooter = ({
35594
35610
  type: "loading"
35595
35611
  });
35596
35612
  const [projectInfo, setProjectInfo] = useState69(null);
35597
- useEffect72(() => {
35613
+ useEffect73(() => {
35598
35614
  const controller = new AbortController;
35599
35615
  getProjectInfo(controller.signal).then((info) => {
35600
35616
  setProjectInfo(info.projectInfo);
@@ -35640,7 +35656,7 @@ var CodemodFooter = ({
35640
35656
  });
35641
35657
  }
35642
35658
  }, [codemod]);
35643
- useEffect72(() => {
35659
+ useEffect73(() => {
35644
35660
  const abortController = new AbortController;
35645
35661
  let aborted = false;
35646
35662
  getCanApplyCodemod(abortController.signal).then(() => {
@@ -35658,7 +35674,7 @@ var CodemodFooter = ({
35658
35674
  }, [codemodStatus, getCanApplyCodemod, setSelectedModal]);
35659
35675
  const disabled = !valid || submitting || projectInfo === null || codemodStatus.type !== "success";
35660
35676
  const { registerKeybinding } = useKeybinding();
35661
- useEffect72(() => {
35677
+ useEffect73(() => {
35662
35678
  if (disabled) {
35663
35679
  return;
35664
35680
  }
@@ -36480,9 +36496,9 @@ var OverrideInputPropsModal = () => {
36480
36496
  import {
36481
36497
  useCallback as useCallback106,
36482
36498
  useContext as useContext78,
36483
- useEffect as useEffect74,
36499
+ useEffect as useEffect75,
36484
36500
  useMemo as useMemo117,
36485
- useRef as useRef40,
36501
+ useRef as useRef41,
36486
36502
  useState as useState74
36487
36503
  } from "react";
36488
36504
  import { Internals as Internals60 } from "remotion";
@@ -37276,7 +37292,7 @@ var QuickSwitcherNoResults = ({ query, mode }) => {
37276
37292
  };
37277
37293
 
37278
37294
  // src/components/QuickSwitcher/QuickSwitcherResult.tsx
37279
- import { useEffect as useEffect73, useMemo as useMemo116, useRef as useRef39, useState as useState73 } from "react";
37295
+ import { useEffect as useEffect74, useMemo as useMemo116, useRef as useRef40, useState as useState73 } from "react";
37280
37296
  import { jsx as jsx220, jsxs as jsxs113, Fragment as Fragment34 } from "react/jsx-runtime";
37281
37297
  var container49 = {
37282
37298
  paddingLeft: 16,
@@ -37306,9 +37322,9 @@ var labelContainer = {
37306
37322
  };
37307
37323
  var QuickSwitcherResult = ({ result, selected }) => {
37308
37324
  const [hovered, setIsHovered] = useState73(false);
37309
- const ref = useRef39(null);
37325
+ const ref = useRef40(null);
37310
37326
  const keybindings = useKeybinding();
37311
- useEffect73(() => {
37327
+ useEffect74(() => {
37312
37328
  const { current } = ref;
37313
37329
  if (!current) {
37314
37330
  return;
@@ -37322,7 +37338,7 @@ var QuickSwitcherResult = ({ result, selected }) => {
37322
37338
  current.removeEventListener("mouseleave", onMouseLeave);
37323
37339
  };
37324
37340
  }, []);
37325
- useEffect73(() => {
37341
+ useEffect74(() => {
37326
37342
  if (!selected) {
37327
37343
  return;
37328
37344
  }
@@ -37339,7 +37355,7 @@ var QuickSwitcherResult = ({ result, selected }) => {
37339
37355
  binding.unregister();
37340
37356
  };
37341
37357
  }, [keybindings, result.onSelected, selected]);
37342
- useEffect73(() => {
37358
+ useEffect74(() => {
37343
37359
  if (selected) {
37344
37360
  ref.current?.scrollIntoView({
37345
37361
  block: "nearest",
@@ -37553,13 +37569,13 @@ var QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio }
37553
37569
  selectedIndex: 0
37554
37570
  };
37555
37571
  });
37556
- useEffect74(() => {
37572
+ useEffect75(() => {
37557
37573
  setState({
37558
37574
  query: mapModeToQuery(initialMode),
37559
37575
  selectedIndex: 0
37560
37576
  });
37561
37577
  }, [initialMode, invocationTimestamp]);
37562
- const inputRef = useRef40(null);
37578
+ const inputRef = useRef41(null);
37563
37579
  const selectComposition = useSelectComposition();
37564
37580
  const closeMenu = useCallback106(() => {
37565
37581
  return;
@@ -37627,7 +37643,7 @@ var QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio }
37627
37643
  };
37628
37644
  });
37629
37645
  }, []);
37630
- useEffect74(() => {
37646
+ useEffect75(() => {
37631
37647
  const binding = keybindings.registerKeybinding({
37632
37648
  key: "ArrowUp",
37633
37649
  callback: onArrowUp,
@@ -37641,7 +37657,7 @@ var QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio }
37641
37657
  binding.unregister();
37642
37658
  };
37643
37659
  }, [keybindings, onArrowDown, onArrowUp]);
37644
- useEffect74(() => {
37660
+ useEffect75(() => {
37645
37661
  if (mode !== "docs") {
37646
37662
  return;
37647
37663
  }
@@ -37666,7 +37682,7 @@ var QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio }
37666
37682
  cancelled = true;
37667
37683
  };
37668
37684
  }, [actualQuery, mode]);
37669
- useEffect74(() => {
37685
+ useEffect75(() => {
37670
37686
  const binding = keybindings.registerKeybinding({
37671
37687
  key: "ArrowDown",
37672
37688
  callback: onArrowDown,
@@ -38158,10 +38174,10 @@ import { getDefaultOutLocation } from "@remotion/studio-shared";
38158
38174
  import {
38159
38175
  useCallback as useCallback126,
38160
38176
  useContext as useContext81,
38161
- useEffect as useEffect77,
38177
+ useEffect as useEffect78,
38162
38178
  useMemo as useMemo128,
38163
38179
  useReducer as useReducer2,
38164
- useRef as useRef42,
38180
+ useRef as useRef43,
38165
38181
  useState as useState80
38166
38182
  } from "react";
38167
38183
 
@@ -38328,7 +38344,7 @@ import { useCallback as useCallback111 } from "react";
38328
38344
  import { BrowserSafeApis } from "@remotion/renderer/client";
38329
38345
 
38330
38346
  // src/components/RenderModal/CliCopyButton.tsx
38331
- import { useCallback as useCallback110, useEffect as useEffect75, useMemo as useMemo121, useState as useState77 } from "react";
38347
+ import { useCallback as useCallback110, useEffect as useEffect76, useMemo as useMemo121, useState as useState77 } from "react";
38332
38348
  import { jsx as jsx232 } from "react/jsx-runtime";
38333
38349
  var svgStyle2 = {
38334
38350
  width: 16,
@@ -38379,7 +38395,7 @@ var CliCopyButton = ({
38379
38395
  const onPointerLeave = useCallback110(() => {
38380
38396
  setHovered(false);
38381
38397
  }, []);
38382
- useEffect75(() => {
38398
+ useEffect76(() => {
38383
38399
  if (!copied) {
38384
38400
  return;
38385
38401
  }
@@ -39701,14 +39717,14 @@ import { BrowserSafeApis as BrowserSafeApis4 } from "@remotion/renderer/client";
39701
39717
  import { useCallback as useCallback118, useMemo as useMemo123 } from "react";
39702
39718
 
39703
39719
  // src/helpers/use-file-existence.ts
39704
- import { useContext as useContext80, useEffect as useEffect76, useRef as useRef41, useState as useState79 } from "react";
39720
+ import { useContext as useContext80, useEffect as useEffect77, useRef as useRef42, useState as useState79 } from "react";
39705
39721
  var useFileExistence = (outName) => {
39706
39722
  const [exists, setExists] = useState79(false);
39707
39723
  const { previewServerState: state, subscribeToEvent } = useContext80(StudioServerConnectionCtx);
39708
39724
  const clientId = state.type === "connected" ? state.clientId : undefined;
39709
- const currentOutName = useRef41("");
39725
+ const currentOutName = useRef42("");
39710
39726
  currentOutName.current = outName;
39711
- useEffect76(() => {
39727
+ useEffect77(() => {
39712
39728
  if (!clientId) {
39713
39729
  return;
39714
39730
  }
@@ -39724,7 +39740,7 @@ var useFileExistence = (outName) => {
39724
39740
  unsubscribeFromFileExistenceWatcher({ file: outName, clientId });
39725
39741
  };
39726
39742
  }, [clientId, outName]);
39727
- useEffect76(() => {
39743
+ useEffect77(() => {
39728
39744
  const listener = (event) => {
39729
39745
  if (event.type !== "watched-file-deleted") {
39730
39746
  return;
@@ -39741,7 +39757,7 @@ var useFileExistence = (outName) => {
39741
39757
  unsub();
39742
39758
  };
39743
39759
  }, [outName, subscribeToEvent]);
39744
- useEffect76(() => {
39760
+ useEffect77(() => {
39745
39761
  const listener = (event) => {
39746
39762
  if (event.type !== "watched-file-undeleted") {
39747
39763
  return;
@@ -41295,7 +41311,7 @@ var RenderModal = ({
41295
41311
  resolved: { result: resolvedComposition },
41296
41312
  unresolved: unresolvedComposition
41297
41313
  } = context;
41298
- const isMounted = useRef42(true);
41314
+ const isMounted = useRef43(true);
41299
41315
  const [isVideo] = useState80(() => {
41300
41316
  return typeof resolvedComposition.durationInFrames === "undefined" ? true : resolvedComposition.durationInFrames > 1;
41301
41317
  });
@@ -41793,7 +41809,7 @@ var RenderModal = ({
41793
41809
  offthreadVideoThreads,
41794
41810
  mediaCacheSizeInBytes
41795
41811
  ]);
41796
- useEffect77(() => {
41812
+ useEffect78(() => {
41797
41813
  return () => {
41798
41814
  isMounted.current = false;
41799
41815
  };
@@ -41962,7 +41978,7 @@ var RenderModal = ({
41962
41978
  onClickVideo();
41963
41979
  }
41964
41980
  }, [renderMode, onClickStill, onClickSequence, onClickVideo]);
41965
- useEffect77(() => {
41981
+ useEffect78(() => {
41966
41982
  if (renderDisabled) {
41967
41983
  return;
41968
41984
  }
@@ -42271,11 +42287,86 @@ var RenderModalWithLoader = (props) => {
42271
42287
  // src/components/RenderModal/WebRenderModal.tsx
42272
42288
  import { getDefaultOutLocation as getDefaultOutLocation2 } from "@remotion/studio-shared";
42273
42289
  import { renderMediaOnWeb, renderStillOnWeb } from "@remotion/web-renderer";
42274
- import { useCallback as useCallback129, useContext as useContext82, useMemo as useMemo132, useState as useState81 } from "react";
42290
+ import { useCallback as useCallback130, useContext as useContext82, useMemo as useMemo133, useState as useState81 } from "react";
42291
+
42292
+ // src/icons/certificate.tsx
42293
+ import { jsx as jsx256 } from "react/jsx-runtime";
42294
+ var CertificateIcon = (props) => /* @__PURE__ */ jsx256("svg", {
42295
+ xmlns: "http://www.w3.org/2000/svg",
42296
+ viewBox: "0 0 576 512",
42297
+ ...props,
42298
+ children: /* @__PURE__ */ jsx256("path", {
42299
+ fill: "currentcolor",
42300
+ 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"
42301
+ })
42302
+ });
42303
+
42304
+ // src/components/RenderModal/WebRendererExperimentalBadge.tsx
42305
+ import { jsx as jsx257, jsxs as jsxs135 } from "react/jsx-runtime";
42306
+ var row8 = {
42307
+ display: "flex",
42308
+ flexDirection: "row",
42309
+ alignItems: "center",
42310
+ justifyContent: "center"
42311
+ };
42312
+ var text3 = {
42313
+ fontSize: 14,
42314
+ fontFamily: "sans-serif",
42315
+ color: LIGHT_TEXT
42316
+ };
42317
+ var icon7 = {
42318
+ width: 14,
42319
+ height: 14,
42320
+ flexShrink: 0,
42321
+ fill: WARNING_COLOR,
42322
+ marginRight: 8
42323
+ };
42324
+ var link3 = {
42325
+ color: "inherit",
42326
+ textDecoration: "underline",
42327
+ fontSize: 14
42328
+ };
42329
+ var WebRendererExperimentalBadge = () => {
42330
+ return /* @__PURE__ */ jsxs135("div", {
42331
+ style: row8,
42332
+ children: [
42333
+ /* @__PURE__ */ jsx257(WarningTriangle, {
42334
+ type: "warning",
42335
+ style: icon7
42336
+ }),
42337
+ /* @__PURE__ */ jsxs135("div", {
42338
+ style: text3,
42339
+ children: [
42340
+ "The Remotion Web Renderer is experimental.",
42341
+ " ",
42342
+ /* @__PURE__ */ jsx257("a", {
42343
+ href: "https://github.com/remotion-dev/remotion/issues/5913",
42344
+ target: "_blank",
42345
+ rel: "noopener noreferrer",
42346
+ style: link3,
42347
+ children: "Track progress on GitHub"
42348
+ }),
42349
+ " ",
42350
+ "and discuss in the",
42351
+ " ",
42352
+ /* @__PURE__ */ jsx257("a", {
42353
+ href: "https://remotion.dev/discord",
42354
+ target: "_blank",
42355
+ rel: "noopener noreferrer",
42356
+ style: link3,
42357
+ children: "#web-renderer"
42358
+ }),
42359
+ " ",
42360
+ "channel on Discord."
42361
+ ]
42362
+ })
42363
+ ]
42364
+ });
42365
+ };
42275
42366
 
42276
42367
  // src/components/RenderModal/WebRenderModalAdvanced.tsx
42277
42368
  import { useCallback as useCallback127, useMemo as useMemo129 } from "react";
42278
- import { jsx as jsx256, jsxs as jsxs135 } from "react/jsx-runtime";
42369
+ import { jsx as jsx258, jsxs as jsxs136 } from "react/jsx-runtime";
42279
42370
  var tabContainer = {
42280
42371
  flex: 1
42281
42372
  };
@@ -42312,7 +42403,7 @@ var WebRenderModalAdvanced = ({
42312
42403
  {
42313
42404
  label: "No Preference",
42314
42405
  onClick: () => setHardwareAcceleration("no-preference"),
42315
- leftItem: hardwareAcceleration === "no-preference" ? /* @__PURE__ */ jsx256(Checkmark, {}) : null,
42406
+ leftItem: hardwareAcceleration === "no-preference" ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42316
42407
  id: "no-preference",
42317
42408
  keyHint: null,
42318
42409
  quickSwitcherLabel: null,
@@ -42323,7 +42414,7 @@ var WebRenderModalAdvanced = ({
42323
42414
  {
42324
42415
  label: "Prefer Hardware",
42325
42416
  onClick: () => setHardwareAcceleration("prefer-hardware"),
42326
- leftItem: hardwareAcceleration === "prefer-hardware" ? /* @__PURE__ */ jsx256(Checkmark, {}) : null,
42417
+ leftItem: hardwareAcceleration === "prefer-hardware" ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42327
42418
  id: "prefer-hardware",
42328
42419
  keyHint: null,
42329
42420
  quickSwitcherLabel: null,
@@ -42334,7 +42425,7 @@ var WebRenderModalAdvanced = ({
42334
42425
  {
42335
42426
  label: "Prefer Software",
42336
42427
  onClick: () => setHardwareAcceleration("prefer-software"),
42337
- leftItem: hardwareAcceleration === "prefer-software" ? /* @__PURE__ */ jsx256(Checkmark, {}) : null,
42428
+ leftItem: hardwareAcceleration === "prefer-software" ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42338
42429
  id: "prefer-software",
42339
42430
  keyHint: null,
42340
42431
  quickSwitcherLabel: null,
@@ -42344,10 +42435,10 @@ var WebRenderModalAdvanced = ({
42344
42435
  }
42345
42436
  ];
42346
42437
  }, [hardwareAcceleration, setHardwareAcceleration]);
42347
- return /* @__PURE__ */ jsxs135("div", {
42438
+ return /* @__PURE__ */ jsxs136("div", {
42348
42439
  style: tabContainer,
42349
42440
  children: [
42350
- /* @__PURE__ */ jsx256(NumberSetting, {
42441
+ /* @__PURE__ */ jsx258(NumberSetting, {
42351
42442
  name: "Delay Render Timeout",
42352
42443
  formatter: (v) => `${v}ms`,
42353
42444
  min: 0,
@@ -42357,24 +42448,24 @@ var WebRenderModalAdvanced = ({
42357
42448
  onValueChanged: setDelayRenderTimeout,
42358
42449
  hint: "delayRenderTimeoutInMillisecondsOption"
42359
42450
  }),
42360
- /* @__PURE__ */ jsxs135("div", {
42451
+ /* @__PURE__ */ jsxs136("div", {
42361
42452
  style: optionRow,
42362
42453
  children: [
42363
- /* @__PURE__ */ jsxs135("div", {
42454
+ /* @__PURE__ */ jsxs136("div", {
42364
42455
  style: label5,
42365
42456
  children: [
42366
42457
  "Custom @remotion/media cache size ",
42367
- /* @__PURE__ */ jsx256(Spacing, {
42458
+ /* @__PURE__ */ jsx258(Spacing, {
42368
42459
  x: 0.5
42369
42460
  }),
42370
- /* @__PURE__ */ jsx256(OptionExplainerBubble, {
42461
+ /* @__PURE__ */ jsx258(OptionExplainerBubble, {
42371
42462
  id: "mediaCacheSizeInBytesOption"
42372
42463
  })
42373
42464
  ]
42374
42465
  }),
42375
- /* @__PURE__ */ jsx256("div", {
42466
+ /* @__PURE__ */ jsx258("div", {
42376
42467
  style: rightRow,
42377
- children: /* @__PURE__ */ jsx256(Checkbox, {
42468
+ children: /* @__PURE__ */ jsx258(Checkbox, {
42378
42469
  checked: mediaCacheSizeInBytes !== null,
42379
42470
  onChange: toggleCustomMediaCacheSizeInBytes,
42380
42471
  name: "media-cache-size"
@@ -42382,7 +42473,7 @@ var WebRenderModalAdvanced = ({
42382
42473
  })
42383
42474
  ]
42384
42475
  }),
42385
- mediaCacheSizeInBytes === null ? null : /* @__PURE__ */ jsx256(NumberSetting, {
42476
+ mediaCacheSizeInBytes === null ? null : /* @__PURE__ */ jsx258(NumberSetting, {
42386
42477
  name: "@remotion/media cache size",
42387
42478
  formatter: (w) => `${w} bytes`,
42388
42479
  min: 0,
@@ -42391,16 +42482,16 @@ var WebRenderModalAdvanced = ({
42391
42482
  value: mediaCacheSizeInBytes,
42392
42483
  onValueChanged: changeMediaCacheSizeInBytes
42393
42484
  }),
42394
- renderMode === "video" ? /* @__PURE__ */ jsxs135("div", {
42485
+ renderMode === "video" ? /* @__PURE__ */ jsxs136("div", {
42395
42486
  style: optionRow,
42396
42487
  children: [
42397
- /* @__PURE__ */ jsx256("div", {
42488
+ /* @__PURE__ */ jsx258("div", {
42398
42489
  style: label5,
42399
42490
  children: "Hardware Acceleration"
42400
42491
  }),
42401
- /* @__PURE__ */ jsx256("div", {
42492
+ /* @__PURE__ */ jsx258("div", {
42402
42493
  style: rightRow,
42403
- children: /* @__PURE__ */ jsx256(Combobox, {
42494
+ children: /* @__PURE__ */ jsx258(Combobox, {
42404
42495
  values: hardwareAccelerationOptions,
42405
42496
  selectedId: hardwareAcceleration,
42406
42497
  title: "Hardware Acceleration"
@@ -42413,16 +42504,16 @@ var WebRenderModalAdvanced = ({
42413
42504
  };
42414
42505
 
42415
42506
  // src/components/RenderModal/WebRenderModalAudio.tsx
42416
- import { jsx as jsx257 } from "react/jsx-runtime";
42507
+ import { jsx as jsx259 } from "react/jsx-runtime";
42417
42508
  var container60 = {
42418
42509
  flex: 1,
42419
42510
  overflowY: "auto"
42420
42511
  };
42421
42512
  var WebRenderModalAudio = ({ muted, setMuted }) => {
42422
- return /* @__PURE__ */ jsx257("div", {
42513
+ return /* @__PURE__ */ jsx259("div", {
42423
42514
  style: container60,
42424
42515
  className: VERTICAL_SCROLLBAR_CLASSNAME,
42425
- children: /* @__PURE__ */ jsx257(MutedSetting, {
42516
+ children: /* @__PURE__ */ jsx259(MutedSetting, {
42426
42517
  enforceAudioTrack: false,
42427
42518
  muted,
42428
42519
  setMuted
@@ -42432,7 +42523,7 @@ var WebRenderModalAudio = ({ muted, setMuted }) => {
42432
42523
 
42433
42524
  // src/components/RenderModal/WebRenderModalBasic.tsx
42434
42525
  import { useMemo as useMemo130 } from "react";
42435
- import { jsx as jsx258, jsxs as jsxs136, Fragment as Fragment45 } from "react/jsx-runtime";
42526
+ import { jsx as jsx260, jsxs as jsxs137, Fragment as Fragment45 } from "react/jsx-runtime";
42436
42527
  var tabContainer2 = {
42437
42528
  flex: 1
42438
42529
  };
@@ -42485,7 +42576,7 @@ var WebRenderModalBasic = ({
42485
42576
  return {
42486
42577
  label: humanReadableLogLevel(level),
42487
42578
  onClick: () => setLogLevel(level),
42488
- leftItem: logLevel === level ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42579
+ leftItem: logLevel === level ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
42489
42580
  id: level,
42490
42581
  keyHint: null,
42491
42582
  quickSwitcherLabel: null,
@@ -42500,7 +42591,7 @@ var WebRenderModalBasic = ({
42500
42591
  {
42501
42592
  label: "MP4",
42502
42593
  onClick: () => setContainerFormat("mp4"),
42503
- leftItem: container61 === "mp4" ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42594
+ leftItem: container61 === "mp4" ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
42504
42595
  id: "mp4",
42505
42596
  keyHint: null,
42506
42597
  quickSwitcherLabel: null,
@@ -42511,7 +42602,7 @@ var WebRenderModalBasic = ({
42511
42602
  {
42512
42603
  label: "WebM",
42513
42604
  onClick: () => setContainerFormat("webm"),
42514
- leftItem: container61 === "webm" ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42605
+ leftItem: container61 === "webm" ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
42515
42606
  id: "webm",
42516
42607
  keyHint: null,
42517
42608
  quickSwitcherLabel: null,
@@ -42526,7 +42617,7 @@ var WebRenderModalBasic = ({
42526
42617
  {
42527
42618
  label: "H.264",
42528
42619
  onClick: () => setCodec("h264"),
42529
- leftItem: codec === "h264" ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42620
+ leftItem: codec === "h264" ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
42530
42621
  id: "h264",
42531
42622
  keyHint: null,
42532
42623
  quickSwitcherLabel: null,
@@ -42537,7 +42628,7 @@ var WebRenderModalBasic = ({
42537
42628
  {
42538
42629
  label: "H.265",
42539
42630
  onClick: () => setCodec("h265"),
42540
- leftItem: codec === "h265" ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42631
+ leftItem: codec === "h265" ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
42541
42632
  id: "h265",
42542
42633
  keyHint: null,
42543
42634
  quickSwitcherLabel: null,
@@ -42548,7 +42639,7 @@ var WebRenderModalBasic = ({
42548
42639
  {
42549
42640
  label: "VP8",
42550
42641
  onClick: () => setCodec("vp8"),
42551
- leftItem: codec === "vp8" ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42642
+ leftItem: codec === "vp8" ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
42552
42643
  id: "vp8",
42553
42644
  keyHint: null,
42554
42645
  quickSwitcherLabel: null,
@@ -42559,7 +42650,7 @@ var WebRenderModalBasic = ({
42559
42650
  {
42560
42651
  label: "VP9",
42561
42652
  onClick: () => setCodec("vp9"),
42562
- leftItem: codec === "vp9" ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42653
+ leftItem: codec === "vp9" ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
42563
42654
  id: "vp9",
42564
42655
  keyHint: null,
42565
42656
  quickSwitcherLabel: null,
@@ -42570,7 +42661,7 @@ var WebRenderModalBasic = ({
42570
42661
  {
42571
42662
  label: "AV1",
42572
42663
  onClick: () => setCodec("av1"),
42573
- leftItem: codec === "av1" ? /* @__PURE__ */ jsx258(Checkmark, {}) : null,
42664
+ leftItem: codec === "av1" ? /* @__PURE__ */ jsx260(Checkmark, {}) : null,
42574
42665
  id: "av1",
42575
42666
  keyHint: null,
42576
42667
  quickSwitcherLabel: null,
@@ -42580,38 +42671,38 @@ var WebRenderModalBasic = ({
42580
42671
  }
42581
42672
  ];
42582
42673
  }, [codec, setCodec]);
42583
- return /* @__PURE__ */ jsxs136("div", {
42674
+ return /* @__PURE__ */ jsxs137("div", {
42584
42675
  style: tabContainer2,
42585
42676
  children: [
42586
- renderMode === "still" ? /* @__PURE__ */ jsxs136(Fragment45, {
42677
+ renderMode === "still" ? /* @__PURE__ */ jsxs137(Fragment45, {
42587
42678
  children: [
42588
- /* @__PURE__ */ jsxs136("div", {
42679
+ /* @__PURE__ */ jsxs137("div", {
42589
42680
  style: optionRow,
42590
42681
  children: [
42591
- /* @__PURE__ */ jsx258("div", {
42682
+ /* @__PURE__ */ jsx260("div", {
42592
42683
  style: label5,
42593
42684
  children: "Format"
42594
42685
  }),
42595
- /* @__PURE__ */ jsx258("div", {
42686
+ /* @__PURE__ */ jsx260("div", {
42596
42687
  style: rightRow,
42597
- children: /* @__PURE__ */ jsx258(SegmentedControl, {
42688
+ children: /* @__PURE__ */ jsx260(SegmentedControl, {
42598
42689
  items: imageFormatOptions,
42599
42690
  needsWrapping: true
42600
42691
  })
42601
42692
  })
42602
42693
  ]
42603
42694
  }),
42604
- resolvedComposition.durationInFrames > 1 ? /* @__PURE__ */ jsxs136("div", {
42695
+ resolvedComposition.durationInFrames > 1 ? /* @__PURE__ */ jsxs137("div", {
42605
42696
  style: optionRow,
42606
42697
  children: [
42607
- /* @__PURE__ */ jsx258("div", {
42698
+ /* @__PURE__ */ jsx260("div", {
42608
42699
  style: label5,
42609
42700
  children: "Frame"
42610
42701
  }),
42611
- /* @__PURE__ */ jsx258("div", {
42702
+ /* @__PURE__ */ jsx260("div", {
42612
42703
  style: rightRow,
42613
- children: /* @__PURE__ */ jsx258(RightAlignInput, {
42614
- children: /* @__PURE__ */ jsx258(InputDragger, {
42704
+ children: /* @__PURE__ */ jsx260(RightAlignInput, {
42705
+ children: /* @__PURE__ */ jsx260(InputDragger, {
42615
42706
  value: frame2,
42616
42707
  onTextChange: onFrameChanged,
42617
42708
  placeholder: `0-${resolvedComposition.durationInFrames - 1}`,
@@ -42628,18 +42719,18 @@ var WebRenderModalBasic = ({
42628
42719
  ]
42629
42720
  }) : null
42630
42721
  ]
42631
- }) : /* @__PURE__ */ jsxs136(Fragment45, {
42722
+ }) : /* @__PURE__ */ jsxs137(Fragment45, {
42632
42723
  children: [
42633
- /* @__PURE__ */ jsxs136("div", {
42724
+ /* @__PURE__ */ jsxs137("div", {
42634
42725
  style: optionRow,
42635
42726
  children: [
42636
- /* @__PURE__ */ jsx258("div", {
42727
+ /* @__PURE__ */ jsx260("div", {
42637
42728
  style: label5,
42638
42729
  children: "Container"
42639
42730
  }),
42640
- /* @__PURE__ */ jsx258("div", {
42731
+ /* @__PURE__ */ jsx260("div", {
42641
42732
  style: rightRow,
42642
- children: /* @__PURE__ */ jsx258(Combobox, {
42733
+ children: /* @__PURE__ */ jsx260(Combobox, {
42643
42734
  values: containerOptions,
42644
42735
  selectedId: container61,
42645
42736
  title: "Container"
@@ -42647,24 +42738,24 @@ var WebRenderModalBasic = ({
42647
42738
  })
42648
42739
  ]
42649
42740
  }),
42650
- /* @__PURE__ */ jsxs136("div", {
42741
+ /* @__PURE__ */ jsxs137("div", {
42651
42742
  style: optionRow,
42652
42743
  children: [
42653
- /* @__PURE__ */ jsxs136("div", {
42744
+ /* @__PURE__ */ jsxs137("div", {
42654
42745
  style: label5,
42655
42746
  children: [
42656
42747
  "Codec",
42657
- /* @__PURE__ */ jsx258(Spacing, {
42748
+ /* @__PURE__ */ jsx260(Spacing, {
42658
42749
  x: 0.5
42659
42750
  }),
42660
- /* @__PURE__ */ jsx258(OptionExplainerBubble, {
42751
+ /* @__PURE__ */ jsx260(OptionExplainerBubble, {
42661
42752
  id: "videoCodecOption"
42662
42753
  })
42663
42754
  ]
42664
42755
  }),
42665
- /* @__PURE__ */ jsx258("div", {
42756
+ /* @__PURE__ */ jsx260("div", {
42666
42757
  style: rightRow,
42667
- children: /* @__PURE__ */ jsx258(Combobox, {
42758
+ children: /* @__PURE__ */ jsx260(Combobox, {
42668
42759
  values: codecOptions,
42669
42760
  selectedId: codec,
42670
42761
  title: "Codec"
@@ -42672,7 +42763,7 @@ var WebRenderModalBasic = ({
42672
42763
  })
42673
42764
  ]
42674
42765
  }),
42675
- /* @__PURE__ */ jsx258(FrameRangeSetting, {
42766
+ /* @__PURE__ */ jsx260(FrameRangeSetting, {
42676
42767
  durationInFrames: resolvedComposition.durationInFrames,
42677
42768
  startFrame: startFrame ?? 0,
42678
42769
  endFrame: endFrame ?? resolvedComposition.durationInFrames - 1,
@@ -42681,7 +42772,7 @@ var WebRenderModalBasic = ({
42681
42772
  })
42682
42773
  ]
42683
42774
  }),
42684
- /* @__PURE__ */ jsx258(RenderModalOutputName, {
42775
+ /* @__PURE__ */ jsx260(RenderModalOutputName, {
42685
42776
  existence: false,
42686
42777
  inputStyle: input,
42687
42778
  outName,
@@ -42689,24 +42780,24 @@ var WebRenderModalBasic = ({
42689
42780
  validationMessage,
42690
42781
  label: "Download name"
42691
42782
  }),
42692
- /* @__PURE__ */ jsxs136("div", {
42783
+ /* @__PURE__ */ jsxs137("div", {
42693
42784
  style: optionRow,
42694
42785
  children: [
42695
- /* @__PURE__ */ jsxs136("div", {
42786
+ /* @__PURE__ */ jsxs137("div", {
42696
42787
  style: label5,
42697
42788
  children: [
42698
42789
  "Log Level ",
42699
- /* @__PURE__ */ jsx258(Spacing, {
42790
+ /* @__PURE__ */ jsx260(Spacing, {
42700
42791
  x: 0.5
42701
42792
  }),
42702
- /* @__PURE__ */ jsx258(OptionExplainerBubble, {
42793
+ /* @__PURE__ */ jsx260(OptionExplainerBubble, {
42703
42794
  id: "logLevelOption"
42704
42795
  })
42705
42796
  ]
42706
42797
  }),
42707
- /* @__PURE__ */ jsx258("div", {
42798
+ /* @__PURE__ */ jsx260("div", {
42708
42799
  style: rightRow,
42709
- children: /* @__PURE__ */ jsx258(Combobox, {
42800
+ children: /* @__PURE__ */ jsx260(Combobox, {
42710
42801
  values: logLevelOptions,
42711
42802
  selectedId: logLevel,
42712
42803
  title: "Log Level"
@@ -42718,12 +42809,286 @@ var WebRenderModalBasic = ({
42718
42809
  });
42719
42810
  };
42720
42811
 
42721
- // src/components/RenderModal/WebRenderModalPicture.tsx
42812
+ // src/components/RenderModal/WebRenderModalLicense.tsx
42722
42813
  import { useCallback as useCallback128, useMemo as useMemo131 } from "react";
42723
- import { jsx as jsx259, jsxs as jsxs137 } from "react/jsx-runtime";
42814
+ import { jsx as jsx261, jsxs as jsxs138, Fragment as Fragment46 } from "react/jsx-runtime";
42815
+ var row9 = {
42816
+ display: "flex",
42817
+ flexDirection: "row",
42818
+ paddingLeft: 16,
42819
+ paddingRight: 16
42820
+ };
42724
42821
  var tabContainer3 = {
42725
42822
  flex: 1
42726
42823
  };
42824
+ var descriptionStyle = {
42825
+ color: LIGHT_TEXT,
42826
+ fontSize: 14,
42827
+ fontFamily: "sans-serif",
42828
+ paddingLeft: 16,
42829
+ paddingRight: 16,
42830
+ paddingTop: 16,
42831
+ paddingBottom: 8,
42832
+ lineHeight: 1.5
42833
+ };
42834
+ var paddedDescriptionStyle = {
42835
+ color: LIGHT_TEXT,
42836
+ fontSize: 14,
42837
+ fontFamily: "sans-serif",
42838
+ padding: 9,
42839
+ border: "1px solid " + INPUT_BORDER_COLOR_UNHOVERED,
42840
+ borderRadius: 8,
42841
+ lineHeight: 1.5,
42842
+ marginLeft: 16,
42843
+ marginRight: 16
42844
+ };
42845
+ var descriptionLink = {
42846
+ color: "white",
42847
+ fontSize: 14
42848
+ };
42849
+ var checkboxLabel = {
42850
+ fontSize: 14,
42851
+ lineHeight: "40px",
42852
+ color: LIGHT_TEXT,
42853
+ flex: 1,
42854
+ fontFamily: "sans-serif",
42855
+ cursor: "pointer",
42856
+ userSelect: "none"
42857
+ };
42858
+ var inputStyle2 = {
42859
+ minWidth: 250
42860
+ };
42861
+ var justifyCenter = {
42862
+ display: "flex",
42863
+ alignItems: "center",
42864
+ gap: 10,
42865
+ flex: 1
42866
+ };
42867
+ var codeStyle = {
42868
+ fontSize: 14,
42869
+ fontFamily: "monospace",
42870
+ color: BLUE
42871
+ };
42872
+ var codeLine = {
42873
+ fontSize: 14,
42874
+ fontFamily: "monospace",
42875
+ color: LIGHT_TEXT,
42876
+ backgroundColor: INPUT_BACKGROUND,
42877
+ padding: 6,
42878
+ borderRadius: 3,
42879
+ marginTop: 6,
42880
+ overflowX: "auto",
42881
+ maxWidth: "100%"
42882
+ };
42883
+ var codeLineSmall = {
42884
+ ...codeLine,
42885
+ fontSize: 11
42886
+ };
42887
+ var LICENSE_KEY_LENGTH = 55;
42888
+ var LICENSE_KEY_PREFIX = "rm_pub_";
42889
+ var validateLicenseKey = (key5) => {
42890
+ if (key5.length === 0) {
42891
+ return { valid: false, message: null };
42892
+ }
42893
+ if (!key5.startsWith(LICENSE_KEY_PREFIX)) {
42894
+ return {
42895
+ valid: false,
42896
+ message: `License key must start with "${LICENSE_KEY_PREFIX}"`
42897
+ };
42898
+ }
42899
+ const afterPrefix = key5.slice(LICENSE_KEY_PREFIX.length);
42900
+ if (!/^[a-zA-Z0-9]*$/.test(afterPrefix)) {
42901
+ return {
42902
+ valid: false,
42903
+ message: "License key must contain only alphanumeric characters after the prefix"
42904
+ };
42905
+ }
42906
+ if (key5.length !== LICENSE_KEY_LENGTH) {
42907
+ return {
42908
+ valid: false,
42909
+ message: `License key must be ${LICENSE_KEY_LENGTH} characters long`
42910
+ };
42911
+ }
42912
+ return { valid: true, message: null };
42913
+ };
42914
+ var WebRenderModalLicense = ({
42915
+ licenseKey,
42916
+ setLicenseKey,
42917
+ initialPublicLicenseKey
42918
+ }) => {
42919
+ const onFreeLicenseChange = useCallback128(() => {
42920
+ setLicenseKey("free-license");
42921
+ }, [setLicenseKey]);
42922
+ const onCompanyLicenseChange = useCallback128(() => {
42923
+ setLicenseKey(initialPublicLicenseKey ?? "");
42924
+ }, [initialPublicLicenseKey, setLicenseKey]);
42925
+ const onLicenseKeyChange = useCallback128((e) => {
42926
+ setLicenseKey(e.target.value);
42927
+ }, [setLicenseKey]);
42928
+ const licenseValidation = useMemo131(() => {
42929
+ if (licenseKey === null || licenseKey === "free-license") {
42930
+ return { valid: true, message: null };
42931
+ }
42932
+ return validateLicenseKey(licenseKey);
42933
+ }, [licenseKey]);
42934
+ return /* @__PURE__ */ jsxs138("div", {
42935
+ style: tabContainer3,
42936
+ children: [
42937
+ /* @__PURE__ */ jsxs138("div", {
42938
+ style: descriptionStyle,
42939
+ children: [
42940
+ "Remotion is free if you are an individual or company with a headcount of 3 or less. See",
42941
+ " ",
42942
+ /* @__PURE__ */ jsx261("a", {
42943
+ style: descriptionLink,
42944
+ href: "https://remotion.dev/license",
42945
+ children: "LICENSE.md"
42946
+ }),
42947
+ "."
42948
+ ]
42949
+ }),
42950
+ /* @__PURE__ */ jsx261("div", {
42951
+ style: row9,
42952
+ children: /* @__PURE__ */ jsxs138("div", {
42953
+ style: justifyCenter,
42954
+ children: [
42955
+ /* @__PURE__ */ jsx261(Checkbox, {
42956
+ checked: licenseKey === "free-license",
42957
+ onChange: onFreeLicenseChange,
42958
+ name: "free-license",
42959
+ rounded: true
42960
+ }),
42961
+ /* @__PURE__ */ jsxs138("div", {
42962
+ style: checkboxLabel,
42963
+ onClick: onFreeLicenseChange,
42964
+ children: [
42965
+ "I am eligible for the Free License, ",
42966
+ "don't",
42967
+ " print a warning"
42968
+ ]
42969
+ })
42970
+ ]
42971
+ })
42972
+ }),
42973
+ licenseKey === "free-license" ? /* @__PURE__ */ jsxs138("div", {
42974
+ style: paddedDescriptionStyle,
42975
+ children: [
42976
+ "Enjoy Remotion! Add the following to",
42977
+ " ",
42978
+ /* @__PURE__ */ jsx261("code", {
42979
+ style: codeStyle,
42980
+ children: "remotion.config.ts"
42981
+ }),
42982
+ " to persist this setting:",
42983
+ /* @__PURE__ */ jsx261("div", {
42984
+ style: codeLine,
42985
+ children: "Config.setPublicLicenseKey('free-license');"
42986
+ })
42987
+ ]
42988
+ }) : null,
42989
+ /* @__PURE__ */ jsx261("div", {
42990
+ style: row9,
42991
+ children: /* @__PURE__ */ jsxs138("div", {
42992
+ style: justifyCenter,
42993
+ children: [
42994
+ /* @__PURE__ */ jsx261(Checkbox, {
42995
+ checked: licenseKey !== "free-license" && licenseKey !== null,
42996
+ onChange: onCompanyLicenseChange,
42997
+ name: "company-license",
42998
+ rounded: true
42999
+ }),
43000
+ /* @__PURE__ */ jsx261("div", {
43001
+ style: checkboxLabel,
43002
+ onClick: onCompanyLicenseChange,
43003
+ children: "I have a Company License"
43004
+ })
43005
+ ]
43006
+ })
43007
+ }),
43008
+ licenseKey !== "free-license" && licenseKey !== null ? /* @__PURE__ */ jsxs138("div", {
43009
+ style: paddedDescriptionStyle,
43010
+ children: [
43011
+ "Add your public license from",
43012
+ " ",
43013
+ /* @__PURE__ */ jsx261("a", {
43014
+ href: "https://remotion.pro/dashboard",
43015
+ target: "_blank",
43016
+ style: descriptionLink,
43017
+ children: "remotion.pro"
43018
+ }),
43019
+ " ",
43020
+ "key below.",
43021
+ /* @__PURE__ */ jsx261(Spacing, {
43022
+ y: 1,
43023
+ block: true
43024
+ }),
43025
+ /* @__PURE__ */ jsx261(RemotionInput, {
43026
+ value: licenseKey,
43027
+ onChange: onLicenseKeyChange,
43028
+ placeholder: "remotion.pro public license key (starts with rm_pub_)",
43029
+ status: licenseValidation.valid || licenseKey.length === 0 ? "ok" : "error",
43030
+ rightAlign: false,
43031
+ style: inputStyle2,
43032
+ autoFocus: true
43033
+ }),
43034
+ licenseValidation.message ? /* @__PURE__ */ jsxs138(Fragment46, {
43035
+ children: [
43036
+ /* @__PURE__ */ jsx261(Spacing, {
43037
+ y: 1,
43038
+ block: true
43039
+ }),
43040
+ /* @__PURE__ */ jsx261(ValidationMessage, {
43041
+ message: licenseValidation.message,
43042
+ align: "flex-start",
43043
+ type: "error"
43044
+ })
43045
+ ]
43046
+ }) : null,
43047
+ licenseValidation.valid && licenseKey.length > 0 ? /* @__PURE__ */ jsxs138(Fragment46, {
43048
+ children: [
43049
+ /* @__PURE__ */ jsx261(Spacing, {
43050
+ y: 1,
43051
+ block: true
43052
+ }),
43053
+ "Add the following to",
43054
+ " ",
43055
+ /* @__PURE__ */ jsx261("code", {
43056
+ style: codeStyle,
43057
+ children: "remotion.config.ts"
43058
+ }),
43059
+ " to persist this setting:",
43060
+ /* @__PURE__ */ jsx261("div", {
43061
+ style: codeLineSmall,
43062
+ children: "Config.setPublicLicenseKey('" + licenseKey + "');"
43063
+ })
43064
+ ]
43065
+ }) : null
43066
+ ]
43067
+ }) : null,
43068
+ licenseKey === null ? /* @__PURE__ */ jsxs138("div", {
43069
+ style: descriptionStyle,
43070
+ children: [
43071
+ "If you are not eligible for the free license, you need to obtain a",
43072
+ " ",
43073
+ /* @__PURE__ */ jsx261("a", {
43074
+ style: descriptionLink,
43075
+ target: "_blank",
43076
+ href: "https://remotion.pro/license",
43077
+ children: "Company License"
43078
+ }),
43079
+ "."
43080
+ ]
43081
+ }) : null
43082
+ ]
43083
+ });
43084
+ };
43085
+
43086
+ // src/components/RenderModal/WebRenderModalPicture.tsx
43087
+ import { useCallback as useCallback129, useMemo as useMemo132 } from "react";
43088
+ import { jsx as jsx262, jsxs as jsxs139 } from "react/jsx-runtime";
43089
+ var tabContainer4 = {
43090
+ flex: 1
43091
+ };
42727
43092
  var WebRenderModalPicture = ({
42728
43093
  renderMode,
42729
43094
  videoBitrate,
@@ -42733,12 +43098,12 @@ var WebRenderModalPicture = ({
42733
43098
  transparent,
42734
43099
  setTransparent
42735
43100
  }) => {
42736
- const qualityOptions = useMemo131(() => {
43101
+ const qualityOptions = useMemo132(() => {
42737
43102
  return [
42738
43103
  {
42739
43104
  label: "Very Low",
42740
43105
  onClick: () => setVideoBitrate("very-low"),
42741
- leftItem: videoBitrate === "very-low" ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
43106
+ leftItem: videoBitrate === "very-low" ? /* @__PURE__ */ jsx262(Checkmark, {}) : null,
42742
43107
  id: "very-low",
42743
43108
  keyHint: null,
42744
43109
  quickSwitcherLabel: null,
@@ -42749,7 +43114,7 @@ var WebRenderModalPicture = ({
42749
43114
  {
42750
43115
  label: "Low",
42751
43116
  onClick: () => setVideoBitrate("low"),
42752
- leftItem: videoBitrate === "low" ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
43117
+ leftItem: videoBitrate === "low" ? /* @__PURE__ */ jsx262(Checkmark, {}) : null,
42753
43118
  id: "low",
42754
43119
  keyHint: null,
42755
43120
  quickSwitcherLabel: null,
@@ -42760,7 +43125,7 @@ var WebRenderModalPicture = ({
42760
43125
  {
42761
43126
  label: "Medium",
42762
43127
  onClick: () => setVideoBitrate("medium"),
42763
- leftItem: videoBitrate === "medium" ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
43128
+ leftItem: videoBitrate === "medium" ? /* @__PURE__ */ jsx262(Checkmark, {}) : null,
42764
43129
  id: "medium",
42765
43130
  keyHint: null,
42766
43131
  quickSwitcherLabel: null,
@@ -42771,7 +43136,7 @@ var WebRenderModalPicture = ({
42771
43136
  {
42772
43137
  label: "High",
42773
43138
  onClick: () => setVideoBitrate("high"),
42774
- leftItem: videoBitrate === "high" ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
43139
+ leftItem: videoBitrate === "high" ? /* @__PURE__ */ jsx262(Checkmark, {}) : null,
42775
43140
  id: "high",
42776
43141
  keyHint: null,
42777
43142
  quickSwitcherLabel: null,
@@ -42782,7 +43147,7 @@ var WebRenderModalPicture = ({
42782
43147
  {
42783
43148
  label: "Very High",
42784
43149
  onClick: () => setVideoBitrate("very-high"),
42785
- leftItem: videoBitrate === "very-high" ? /* @__PURE__ */ jsx259(Checkmark, {}) : null,
43150
+ leftItem: videoBitrate === "very-high" ? /* @__PURE__ */ jsx262(Checkmark, {}) : null,
42786
43151
  id: "very-high",
42787
43152
  keyHint: null,
42788
43153
  quickSwitcherLabel: null,
@@ -42792,25 +43157,25 @@ var WebRenderModalPicture = ({
42792
43157
  }
42793
43158
  ];
42794
43159
  }, [videoBitrate, setVideoBitrate]);
42795
- const onTransparentChanged = useCallback128((e) => {
43160
+ const onTransparentChanged = useCallback129((e) => {
42796
43161
  setTransparent(e.target.checked);
42797
43162
  }, [setTransparent]);
42798
43163
  if (renderMode !== "video") {
42799
43164
  return null;
42800
43165
  }
42801
- return /* @__PURE__ */ jsxs137("div", {
42802
- style: tabContainer3,
43166
+ return /* @__PURE__ */ jsxs139("div", {
43167
+ style: tabContainer4,
42803
43168
  children: [
42804
- /* @__PURE__ */ jsxs137("div", {
43169
+ /* @__PURE__ */ jsxs139("div", {
42805
43170
  style: optionRow,
42806
43171
  children: [
42807
- /* @__PURE__ */ jsx259("div", {
43172
+ /* @__PURE__ */ jsx262("div", {
42808
43173
  style: label5,
42809
43174
  children: "Quality"
42810
43175
  }),
42811
- /* @__PURE__ */ jsx259("div", {
43176
+ /* @__PURE__ */ jsx262("div", {
42812
43177
  style: rightRow,
42813
- children: /* @__PURE__ */ jsx259(Combobox, {
43178
+ children: /* @__PURE__ */ jsx262(Combobox, {
42814
43179
  values: qualityOptions,
42815
43180
  selectedId: videoBitrate,
42816
43181
  title: "Quality"
@@ -42818,7 +43183,7 @@ var WebRenderModalPicture = ({
42818
43183
  })
42819
43184
  ]
42820
43185
  }),
42821
- /* @__PURE__ */ jsx259(NumberSetting, {
43186
+ /* @__PURE__ */ jsx262(NumberSetting, {
42822
43187
  name: "Keyframe Interval",
42823
43188
  formatter: (v) => `${v}s`,
42824
43189
  min: 1,
@@ -42827,16 +43192,16 @@ var WebRenderModalPicture = ({
42827
43192
  value: keyframeIntervalInSeconds,
42828
43193
  onValueChanged: setKeyframeIntervalInSeconds
42829
43194
  }),
42830
- /* @__PURE__ */ jsxs137("div", {
43195
+ /* @__PURE__ */ jsxs139("div", {
42831
43196
  style: optionRow,
42832
43197
  children: [
42833
- /* @__PURE__ */ jsx259("div", {
43198
+ /* @__PURE__ */ jsx262("div", {
42834
43199
  style: label5,
42835
43200
  children: "Transparent"
42836
43201
  }),
42837
- /* @__PURE__ */ jsx259("div", {
43202
+ /* @__PURE__ */ jsx262("div", {
42838
43203
  style: rightRow,
42839
- children: /* @__PURE__ */ jsx259(Checkbox, {
43204
+ children: /* @__PURE__ */ jsx262(Checkbox, {
42840
43205
  checked: transparent,
42841
43206
  onChange: onTransparentChanged,
42842
43207
  name: "transparent"
@@ -42849,7 +43214,7 @@ var WebRenderModalPicture = ({
42849
43214
  };
42850
43215
 
42851
43216
  // src/components/RenderModal/WebRenderModal.tsx
42852
- import { jsx as jsx260, jsxs as jsxs138 } from "react/jsx-runtime";
43217
+ import { jsx as jsx263, jsxs as jsxs140 } from "react/jsx-runtime";
42853
43218
  var invalidCharacters2 = ["?", "*", "+", ":", "%"];
42854
43219
  var isValidStillExtension2 = (extension, stillImageFormat) => {
42855
43220
  if (stillImageFormat === "jpeg" && extension === "jpg") {
@@ -42898,7 +43263,8 @@ var WebRenderModal = ({
42898
43263
  defaultProps,
42899
43264
  inFrameMark,
42900
43265
  outFrameMark,
42901
- initialLogLevel
43266
+ initialLogLevel,
43267
+ initialLicenseKey
42902
43268
  }) => {
42903
43269
  const context = useContext82(ResolvedCompositionContext);
42904
43270
  if (!context) {
@@ -42930,19 +43296,20 @@ var WebRenderModal = ({
42930
43296
  const [renderProgress, setRenderProgress] = useState81(null);
42931
43297
  const [transparent, setTransparent] = useState81(false);
42932
43298
  const [muted, setMuted] = useState81(false);
42933
- const finalEndFrame = useMemo132(() => {
43299
+ const [licenseKey, setLicenseKey] = useState81(initialLicenseKey);
43300
+ const finalEndFrame = useMemo133(() => {
42934
43301
  if (endFrame === null) {
42935
43302
  return resolvedComposition.durationInFrames - 1;
42936
43303
  }
42937
43304
  return Math.max(0, Math.min(resolvedComposition.durationInFrames - 1, endFrame));
42938
43305
  }, [endFrame, resolvedComposition.durationInFrames]);
42939
- const finalStartFrame = useMemo132(() => {
43306
+ const finalStartFrame = useMemo133(() => {
42940
43307
  if (startFrame === null) {
42941
43308
  return 0;
42942
43309
  }
42943
43310
  return Math.max(0, Math.min(finalEndFrame, startFrame));
42944
43311
  }, [finalEndFrame, startFrame]);
42945
- const frameRange = useMemo132(() => {
43312
+ const frameRange = useMemo133(() => {
42946
43313
  if (startFrame === null && endFrame === null) {
42947
43314
  return null;
42948
43315
  }
@@ -42958,21 +43325,21 @@ var WebRenderModal = ({
42958
43325
  });
42959
43326
  });
42960
43327
  const [outName, setOutName] = useState81(() => initialOutName);
42961
- const setStillFormat = useCallback129((format) => {
43328
+ const setStillFormat = useCallback130((format) => {
42962
43329
  setImageFormat(format);
42963
43330
  setOutName((prev) => {
42964
43331
  const newFileName = getStringBeforeSuffix(prev) + "." + format;
42965
43332
  return newFileName;
42966
43333
  });
42967
43334
  }, []);
42968
- const setContainerFormat = useCallback129((newContainer) => {
43335
+ const setContainerFormat = useCallback130((newContainer) => {
42969
43336
  setContainer(newContainer);
42970
43337
  setOutName((prev) => {
42971
43338
  const newFileName = getStringBeforeSuffix(prev) + "." + newContainer;
42972
43339
  return newFileName;
42973
43340
  });
42974
43341
  }, []);
42975
- const onRenderModeChange = useCallback129((newMode) => {
43342
+ const onRenderModeChange = useCallback130((newMode) => {
42976
43343
  setRenderMode(newMode);
42977
43344
  if (newMode === "video") {
42978
43345
  setOutName((prev) => {
@@ -42986,7 +43353,7 @@ var WebRenderModal = ({
42986
43353
  });
42987
43354
  }
42988
43355
  }, [container61, imageFormat]);
42989
- const renderTabOptions = useMemo132(() => {
43356
+ const renderTabOptions = useMemo133(() => {
42990
43357
  const options = [
42991
43358
  {
42992
43359
  label: "Still",
@@ -43009,10 +43376,10 @@ var WebRenderModal = ({
43009
43376
  }
43010
43377
  return options;
43011
43378
  }, [renderMode, resolvedComposition.durationInFrames, onRenderModeChange]);
43012
- const onFrameSetDirectly = useCallback129((newFrame) => {
43379
+ const onFrameSetDirectly = useCallback130((newFrame) => {
43013
43380
  setFrame(newFrame);
43014
43381
  }, [setFrame]);
43015
- const onFrameChanged = useCallback129((e) => {
43382
+ const onFrameChanged = useCallback130((e) => {
43016
43383
  setFrame((q) => {
43017
43384
  const newFrame = parseFloat(e);
43018
43385
  if (Number.isNaN(newFrame)) {
@@ -43021,10 +43388,10 @@ var WebRenderModal = ({
43021
43388
  return newFrame;
43022
43389
  });
43023
43390
  }, [setFrame]);
43024
- const onOutNameChange = useCallback129((e) => {
43391
+ const onOutNameChange = useCallback130((e) => {
43025
43392
  setOutName(e.target.value);
43026
43393
  }, []);
43027
- const outnameValidation = useMemo132(() => {
43394
+ const outnameValidation = useMemo133(() => {
43028
43395
  if (renderMode === "still") {
43029
43396
  return validateOutnameForStill({
43030
43397
  outName,
@@ -43063,7 +43430,7 @@ var WebRenderModal = ({
43063
43430
  return { valid: false, error: err };
43064
43431
  }
43065
43432
  }, [outName, imageFormat, renderMode, container61]);
43066
- const onRenderStill = useCallback129(async () => {
43433
+ const onRenderStill = useCallback130(async () => {
43067
43434
  const { blob } = await renderStillOnWeb({
43068
43435
  composition: {
43069
43436
  component: unresolvedComposition.component,
@@ -43080,7 +43447,8 @@ var WebRenderModal = ({
43080
43447
  inputProps,
43081
43448
  delayRenderTimeoutInMilliseconds: delayRenderTimeout,
43082
43449
  mediaCacheSizeInBytes,
43083
- logLevel
43450
+ logLevel,
43451
+ licenseKey: licenseKey ?? undefined
43084
43452
  });
43085
43453
  const url = URL.createObjectURL(blob);
43086
43454
  const a = document.createElement("a");
@@ -43104,9 +43472,10 @@ var WebRenderModal = ({
43104
43472
  outName,
43105
43473
  resolvedComposition.defaultProps,
43106
43474
  unresolvedComposition.calculateMetadata,
43107
- resolvedComposition.id
43475
+ resolvedComposition.id,
43476
+ licenseKey
43108
43477
  ]);
43109
- const onRenderVideo = useCallback129(async () => {
43478
+ const onRenderVideo = useCallback130(async () => {
43110
43479
  setRenderProgress({ renderedFrames: 0, encodedFrames: 0 });
43111
43480
  const { getBlob } = await renderMediaOnWeb({
43112
43481
  composition: {
@@ -43123,7 +43492,7 @@ var WebRenderModal = ({
43123
43492
  delayRenderTimeoutInMilliseconds: delayRenderTimeout,
43124
43493
  mediaCacheSizeInBytes,
43125
43494
  logLevel,
43126
- codec,
43495
+ videoCodec: codec,
43127
43496
  container: container61,
43128
43497
  videoBitrate,
43129
43498
  hardwareAcceleration,
@@ -43134,7 +43503,8 @@ var WebRenderModal = ({
43134
43503
  },
43135
43504
  transparent,
43136
43505
  muted,
43137
- outputTarget: "web-fs"
43506
+ outputTarget: "web-fs",
43507
+ licenseKey: licenseKey ?? undefined
43138
43508
  });
43139
43509
  setRenderProgress(null);
43140
43510
  const blob = await getBlob();
@@ -43166,39 +43536,40 @@ var WebRenderModal = ({
43166
43536
  muted,
43167
43537
  resolvedComposition.defaultProps,
43168
43538
  resolvedComposition.id,
43169
- unresolvedComposition.calculateMetadata
43539
+ unresolvedComposition.calculateMetadata,
43540
+ licenseKey
43170
43541
  ]);
43171
- const onRender = useCallback129(async () => {
43542
+ const onRender = useCallback130(async () => {
43172
43543
  if (renderMode === "still") {
43173
43544
  await onRenderStill();
43174
43545
  } else {
43175
43546
  await onRenderVideo();
43176
43547
  }
43177
43548
  }, [renderMode, onRenderStill, onRenderVideo]);
43178
- return /* @__PURE__ */ jsxs138("div", {
43549
+ return /* @__PURE__ */ jsxs140("div", {
43179
43550
  style: outerModalStyle,
43180
43551
  children: [
43181
- /* @__PURE__ */ jsx260(ModalHeader, {
43552
+ /* @__PURE__ */ jsx263(ModalHeader, {
43182
43553
  title: `Render ${resolvedComposition.id}`
43183
43554
  }),
43184
- /* @__PURE__ */ jsxs138("div", {
43555
+ /* @__PURE__ */ jsxs140("div", {
43185
43556
  style: container59,
43186
43557
  children: [
43187
- /* @__PURE__ */ jsx260(SegmentedControl, {
43558
+ /* @__PURE__ */ jsx263(SegmentedControl, {
43188
43559
  items: renderTabOptions,
43189
43560
  needsWrapping: false
43190
43561
  }),
43191
- /* @__PURE__ */ jsx260("div", {
43562
+ /* @__PURE__ */ jsx263("div", {
43192
43563
  style: flexer
43193
43564
  }),
43194
- /* @__PURE__ */ jsxs138(Button, {
43565
+ /* @__PURE__ */ jsxs140(Button, {
43195
43566
  autoFocus: true,
43196
43567
  onClick: onRender,
43197
43568
  style: buttonStyle7,
43198
43569
  disabled: !outnameValidation.valid,
43199
43570
  children: [
43200
43571
  renderProgress ? `Rendering... ${renderProgress.renderedFrames}/${finalEndFrame}` : `Render ${renderMode}`,
43201
- /* @__PURE__ */ jsx260(ShortcutHint, {
43572
+ /* @__PURE__ */ jsx263(ShortcutHint, {
43202
43573
  keyToPress: "↵",
43203
43574
  cmdOrCtrl: true
43204
43575
  })
@@ -43206,88 +43577,106 @@ var WebRenderModal = ({
43206
43577
  })
43207
43578
  ]
43208
43579
  }),
43209
- /* @__PURE__ */ jsxs138("div", {
43580
+ /* @__PURE__ */ jsx263("div", {
43581
+ style: container59,
43582
+ children: /* @__PURE__ */ jsx263(WebRendererExperimentalBadge, {})
43583
+ }),
43584
+ /* @__PURE__ */ jsxs140("div", {
43210
43585
  style: horizontalLayout,
43211
43586
  children: [
43212
- /* @__PURE__ */ jsxs138("div", {
43587
+ /* @__PURE__ */ jsxs140("div", {
43213
43588
  style: leftSidebar,
43214
43589
  children: [
43215
- /* @__PURE__ */ jsxs138(VerticalTab, {
43590
+ /* @__PURE__ */ jsxs140(VerticalTab, {
43216
43591
  style: horizontalTab,
43217
43592
  selected: tab === "general",
43218
43593
  onClick: () => setTab("general"),
43219
43594
  children: [
43220
- /* @__PURE__ */ jsx260("div", {
43595
+ /* @__PURE__ */ jsx263("div", {
43221
43596
  style: iconContainer,
43222
- children: /* @__PURE__ */ jsx260(FileIcon, {
43597
+ children: /* @__PURE__ */ jsx263(FileIcon, {
43223
43598
  style: icon6
43224
43599
  })
43225
43600
  }),
43226
43601
  "General"
43227
43602
  ]
43228
43603
  }),
43229
- /* @__PURE__ */ jsxs138(VerticalTab, {
43604
+ /* @__PURE__ */ jsxs140(VerticalTab, {
43230
43605
  style: horizontalTab,
43231
43606
  selected: tab === "data",
43232
43607
  onClick: () => setTab("data"),
43233
43608
  children: [
43234
- /* @__PURE__ */ jsx260("div", {
43609
+ /* @__PURE__ */ jsx263("div", {
43235
43610
  style: iconContainer,
43236
- children: /* @__PURE__ */ jsx260(DataIcon, {
43611
+ children: /* @__PURE__ */ jsx263(DataIcon, {
43237
43612
  style: icon6
43238
43613
  })
43239
43614
  }),
43240
43615
  "Input Props"
43241
43616
  ]
43242
43617
  }),
43243
- renderMode === "video" ? /* @__PURE__ */ jsxs138(VerticalTab, {
43618
+ renderMode === "video" ? /* @__PURE__ */ jsxs140(VerticalTab, {
43244
43619
  style: horizontalTab,
43245
43620
  selected: tab === "picture",
43246
43621
  onClick: () => setTab("picture"),
43247
43622
  children: [
43248
- /* @__PURE__ */ jsx260("div", {
43623
+ /* @__PURE__ */ jsx263("div", {
43249
43624
  style: iconContainer,
43250
- children: /* @__PURE__ */ jsx260(PicIcon, {
43625
+ children: /* @__PURE__ */ jsx263(PicIcon, {
43251
43626
  style: icon6
43252
43627
  })
43253
43628
  }),
43254
43629
  "Picture"
43255
43630
  ]
43256
43631
  }) : null,
43257
- renderMode === "video" ? /* @__PURE__ */ jsxs138(VerticalTab, {
43632
+ renderMode === "video" ? /* @__PURE__ */ jsxs140(VerticalTab, {
43258
43633
  style: horizontalTab,
43259
43634
  selected: tab === "audio",
43260
43635
  onClick: () => setTab("audio"),
43261
43636
  children: [
43262
- /* @__PURE__ */ jsx260("div", {
43637
+ /* @__PURE__ */ jsx263("div", {
43263
43638
  style: iconContainer,
43264
- children: /* @__PURE__ */ jsx260(AudioIcon, {
43639
+ children: /* @__PURE__ */ jsx263(AudioIcon, {
43265
43640
  style: icon6
43266
43641
  })
43267
43642
  }),
43268
43643
  "Audio"
43269
43644
  ]
43270
43645
  }) : null,
43271
- /* @__PURE__ */ jsxs138(VerticalTab, {
43646
+ /* @__PURE__ */ jsxs140(VerticalTab, {
43272
43647
  style: horizontalTab,
43273
43648
  selected: tab === "advanced",
43274
43649
  onClick: () => setTab("advanced"),
43275
43650
  children: [
43276
- /* @__PURE__ */ jsx260("div", {
43651
+ /* @__PURE__ */ jsx263("div", {
43652
+ style: iconContainer,
43653
+ children: /* @__PURE__ */ jsx263(GearIcon, {
43654
+ style: icon6
43655
+ })
43656
+ }),
43657
+ "Other"
43658
+ ]
43659
+ }),
43660
+ /* @__PURE__ */ jsxs140(VerticalTab, {
43661
+ style: horizontalTab,
43662
+ selected: tab === "license",
43663
+ onClick: () => setTab("license"),
43664
+ children: [
43665
+ /* @__PURE__ */ jsx263("div", {
43277
43666
  style: iconContainer,
43278
- children: /* @__PURE__ */ jsx260(FileIcon, {
43667
+ children: /* @__PURE__ */ jsx263(CertificateIcon, {
43279
43668
  style: icon6
43280
43669
  })
43281
43670
  }),
43282
- "Advanced"
43671
+ "License"
43283
43672
  ]
43284
43673
  })
43285
43674
  ]
43286
43675
  }),
43287
- /* @__PURE__ */ jsx260("div", {
43676
+ /* @__PURE__ */ jsx263("div", {
43288
43677
  style: optionsPanel,
43289
43678
  className: VERTICAL_SCROLLBAR_CLASSNAME,
43290
- children: tab === "general" ? /* @__PURE__ */ jsx260(WebRenderModalBasic, {
43679
+ children: tab === "general" ? /* @__PURE__ */ jsx263(WebRenderModalBasic, {
43291
43680
  renderMode,
43292
43681
  resolvedComposition,
43293
43682
  imageFormat,
@@ -43308,7 +43697,7 @@ var WebRenderModal = ({
43308
43697
  validationMessage: outnameValidation.valid ? null : outnameValidation.error.message,
43309
43698
  logLevel,
43310
43699
  setLogLevel
43311
- }) : tab === "data" ? /* @__PURE__ */ jsx260(DataEditor, {
43700
+ }) : tab === "data" ? /* @__PURE__ */ jsx263(DataEditor, {
43312
43701
  defaultProps: inputProps,
43313
43702
  setDefaultProps: setInputProps,
43314
43703
  unresolvedComposition,
@@ -43317,7 +43706,7 @@ var WebRenderModal = ({
43317
43706
  saving,
43318
43707
  setSaving,
43319
43708
  readOnlyStudio: false
43320
- }) : tab === "picture" ? /* @__PURE__ */ jsx260(WebRenderModalPicture, {
43709
+ }) : tab === "picture" ? /* @__PURE__ */ jsx263(WebRenderModalPicture, {
43321
43710
  renderMode,
43322
43711
  videoBitrate,
43323
43712
  setVideoBitrate,
@@ -43325,10 +43714,10 @@ var WebRenderModal = ({
43325
43714
  setKeyframeIntervalInSeconds,
43326
43715
  transparent,
43327
43716
  setTransparent
43328
- }) : tab === "audio" ? /* @__PURE__ */ jsx260(WebRenderModalAudio, {
43717
+ }) : tab === "audio" ? /* @__PURE__ */ jsx263(WebRenderModalAudio, {
43329
43718
  muted,
43330
43719
  setMuted
43331
- }) : /* @__PURE__ */ jsx260(WebRenderModalAdvanced, {
43720
+ }) : tab === "advanced" ? /* @__PURE__ */ jsx263(WebRenderModalAdvanced, {
43332
43721
  renderMode,
43333
43722
  delayRenderTimeout,
43334
43723
  setDelayRenderTimeout,
@@ -43336,6 +43725,10 @@ var WebRenderModal = ({
43336
43725
  setMediaCacheSizeInBytes,
43337
43726
  hardwareAcceleration,
43338
43727
  setHardwareAcceleration
43728
+ }) : /* @__PURE__ */ jsx263(WebRenderModalLicense, {
43729
+ licenseKey,
43730
+ setLicenseKey,
43731
+ initialPublicLicenseKey: initialLicenseKey
43339
43732
  })
43340
43733
  })
43341
43734
  ]
@@ -43344,10 +43737,10 @@ var WebRenderModal = ({
43344
43737
  });
43345
43738
  };
43346
43739
  var WebRenderModalWithLoader = (props) => {
43347
- return /* @__PURE__ */ jsx260(DismissableModal, {
43348
- children: /* @__PURE__ */ jsx260(ResolveCompositionBeforeModal, {
43740
+ return /* @__PURE__ */ jsx263(DismissableModal, {
43741
+ children: /* @__PURE__ */ jsx263(ResolveCompositionBeforeModal, {
43349
43742
  compositionId: props.compositionId,
43350
- children: /* @__PURE__ */ jsx260(WebRenderModal, {
43743
+ children: /* @__PURE__ */ jsx263(WebRenderModal, {
43351
43744
  ...props
43352
43745
  })
43353
43746
  })
@@ -43355,11 +43748,11 @@ var WebRenderModalWithLoader = (props) => {
43355
43748
  };
43356
43749
 
43357
43750
  // src/components/UpdateModal/UpdateModal.tsx
43358
- import { useCallback as useCallback132, useMemo as useMemo134 } from "react";
43751
+ import { useCallback as useCallback133, useMemo as useMemo135 } from "react";
43359
43752
 
43360
43753
  // src/components/CopyButton.tsx
43361
- import { useCallback as useCallback130, useEffect as useEffect78, useState as useState82 } from "react";
43362
- import { jsx as jsx261, jsxs as jsxs139 } from "react/jsx-runtime";
43754
+ import { useCallback as useCallback131, useEffect as useEffect79, useState as useState82 } from "react";
43755
+ import { jsx as jsx264, jsxs as jsxs141 } from "react/jsx-runtime";
43363
43756
  var iconStyle8 = {
43364
43757
  width: 16,
43365
43758
  height: 16,
@@ -43369,7 +43762,7 @@ var buttonContainerStyle = {
43369
43762
  display: "flex",
43370
43763
  minWidth: "114px"
43371
43764
  };
43372
- var copyIcon = /* @__PURE__ */ jsx261("svg", {
43765
+ var copyIcon = /* @__PURE__ */ jsx264("svg", {
43373
43766
  "aria-hidden": "true",
43374
43767
  focusable: "false",
43375
43768
  "data-prefix": "far",
@@ -43379,7 +43772,7 @@ var copyIcon = /* @__PURE__ */ jsx261("svg", {
43379
43772
  xmlns: "http://www.w3.org/2000/svg",
43380
43773
  viewBox: "0 0 384 512",
43381
43774
  style: iconStyle8,
43382
- children: /* @__PURE__ */ jsx261("path", {
43775
+ children: /* @__PURE__ */ jsx264("path", {
43383
43776
  fill: "currentColor",
43384
43777
  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"
43385
43778
  })
@@ -43389,30 +43782,30 @@ var labelStyle5 = {
43389
43782
  };
43390
43783
  var CopyButton = ({ textToCopy, label: label11, labelWhenCopied }) => {
43391
43784
  const [copied, setCopied] = useState82(false);
43392
- const onClick = useCallback130(() => {
43785
+ const onClick = useCallback131(() => {
43393
43786
  copyText(textToCopy).then(() => {
43394
43787
  setCopied(Date.now());
43395
43788
  }).catch((err) => {
43396
43789
  showNotification(`Could not copy: ${err.message}`, 2000);
43397
43790
  });
43398
43791
  }, [textToCopy]);
43399
- useEffect78(() => {
43792
+ useEffect79(() => {
43400
43793
  if (!copied) {
43401
43794
  return;
43402
43795
  }
43403
43796
  const to = setTimeout(() => setCopied(false), 2000);
43404
43797
  return () => clearTimeout(to);
43405
43798
  }, [copied]);
43406
- return /* @__PURE__ */ jsxs139(Button, {
43799
+ return /* @__PURE__ */ jsxs141(Button, {
43407
43800
  onClick,
43408
43801
  buttonContainerStyle,
43409
43802
  children: [
43410
43803
  copyIcon,
43411
- /* @__PURE__ */ jsx261(Spacing, {
43804
+ /* @__PURE__ */ jsx264(Spacing, {
43412
43805
  x: 1.5
43413
43806
  }),
43414
43807
  " ",
43415
- /* @__PURE__ */ jsx261("span", {
43808
+ /* @__PURE__ */ jsx264("span", {
43416
43809
  style: labelStyle5,
43417
43810
  children: copied ? labelWhenCopied : label11
43418
43811
  })
@@ -43421,8 +43814,8 @@ var CopyButton = ({ textToCopy, label: label11, labelWhenCopied }) => {
43421
43814
  };
43422
43815
 
43423
43816
  // src/components/UpdateModal/OpenIssueButton.tsx
43424
- import { useCallback as useCallback131, useMemo as useMemo133, useState as useState83 } from "react";
43425
- import { jsx as jsx262 } from "react/jsx-runtime";
43817
+ import { useCallback as useCallback132, useMemo as useMemo134, useState as useState83 } from "react";
43818
+ import { jsx as jsx265 } from "react/jsx-runtime";
43426
43819
  var svgStyle3 = {
43427
43820
  width: "11px",
43428
43821
  height: "11px"
@@ -43435,30 +43828,30 @@ var buttonStyle8 = {
43435
43828
  justifyContent: "center",
43436
43829
  alignItems: "center"
43437
43830
  };
43438
- var OpenIssueButton = ({ link: link3 }) => {
43831
+ var OpenIssueButton = ({ link: link4 }) => {
43439
43832
  const [hovered, setHovered] = useState83(false);
43440
43833
  const buttonTooltip = `Open GitHub issue in new Tab`;
43441
- const handleClick = useCallback131(() => {
43442
- window.open(link3, "_blank");
43443
- }, [link3]);
43444
- const svgFillColor = useMemo133(() => {
43834
+ const handleClick = useCallback132(() => {
43835
+ window.open(link4, "_blank");
43836
+ }, [link4]);
43837
+ const svgFillColor = useMemo134(() => {
43445
43838
  return hovered ? "white" : LIGHT_TEXT;
43446
43839
  }, [hovered]);
43447
- const openInEditorSvg = /* @__PURE__ */ jsx262("svg", {
43840
+ const openInEditorSvg = /* @__PURE__ */ jsx265("svg", {
43448
43841
  viewBox: "0 0 512 512",
43449
43842
  style: svgStyle3,
43450
- children: /* @__PURE__ */ jsx262("path", {
43843
+ children: /* @__PURE__ */ jsx265("path", {
43451
43844
  fill: svgFillColor,
43452
43845
  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"
43453
43846
  })
43454
43847
  });
43455
- const onPointerEnter = useCallback131(() => {
43848
+ const onPointerEnter = useCallback132(() => {
43456
43849
  setHovered(true);
43457
43850
  }, []);
43458
- const onPointerLeave = useCallback131(() => {
43851
+ const onPointerLeave = useCallback132(() => {
43459
43852
  setHovered(false);
43460
43853
  }, []);
43461
- return /* @__PURE__ */ jsx262("button", {
43854
+ return /* @__PURE__ */ jsx265("button", {
43462
43855
  title: buttonTooltip,
43463
43856
  type: "button",
43464
43857
  onPointerEnter,
@@ -43470,52 +43863,52 @@ var OpenIssueButton = ({ link: link3 }) => {
43470
43863
  };
43471
43864
 
43472
43865
  // src/components/KnownBugs.tsx
43473
- import { jsx as jsx263, jsxs as jsxs140 } from "react/jsx-runtime";
43866
+ import { jsx as jsx266, jsxs as jsxs142 } from "react/jsx-runtime";
43474
43867
  var container61 = {
43475
43868
  display: "flex",
43476
43869
  flexDirection: "row",
43477
43870
  alignItems: "center"
43478
43871
  };
43479
- var text3 = {
43872
+ var text4 = {
43480
43873
  fontSize: 14,
43481
43874
  flex: 1
43482
43875
  };
43483
43876
  var KnownBugs = ({ bugs }) => {
43484
43877
  const bugElements = bugs.map((bug) => {
43485
- return /* @__PURE__ */ jsxs140("div", {
43878
+ return /* @__PURE__ */ jsxs142("div", {
43486
43879
  style: container61,
43487
43880
  children: [
43488
- /* @__PURE__ */ jsxs140("div", {
43489
- style: text3,
43881
+ /* @__PURE__ */ jsxs142("div", {
43882
+ style: text4,
43490
43883
  children: [
43491
43884
  "\uD83E\uDEB2 ",
43492
43885
  bug.title
43493
43886
  ]
43494
43887
  }),
43495
- /* @__PURE__ */ jsx263(OpenIssueButton, {
43888
+ /* @__PURE__ */ jsx266(OpenIssueButton, {
43496
43889
  link: bug.link
43497
43890
  })
43498
43891
  ]
43499
43892
  }, bug.description + bug.link);
43500
43893
  });
43501
- return /* @__PURE__ */ jsx263("div", {
43894
+ return /* @__PURE__ */ jsx266("div", {
43502
43895
  children: bugElements
43503
43896
  });
43504
43897
  };
43505
43898
 
43506
43899
  // src/components/UpdateModal/UpdateModal.tsx
43507
- import { jsx as jsx264, jsxs as jsxs141, Fragment as Fragment46 } from "react/jsx-runtime";
43900
+ import { jsx as jsx267, jsxs as jsxs143, Fragment as Fragment47 } from "react/jsx-runtime";
43508
43901
  var container62 = {
43509
43902
  padding: 20,
43510
43903
  paddingTop: 0
43511
43904
  };
43512
- var text4 = {
43905
+ var text5 = {
43513
43906
  fontSize: 14
43514
43907
  };
43515
43908
  var title7 = {
43516
43909
  paddingTop: 12,
43517
43910
  paddingBottom: 8,
43518
- ...text4
43911
+ ...text5
43519
43912
  };
43520
43913
  var code = {
43521
43914
  background: SELECTED_BACKGROUND,
@@ -43524,11 +43917,11 @@ var code = {
43524
43917
  marginTop: 10,
43525
43918
  marginBottom: 10
43526
43919
  };
43527
- var link3 = {
43920
+ var link4 = {
43528
43921
  fontWeight: "bold",
43529
43922
  color: BLUE,
43530
43923
  textDecoration: "none",
43531
- ...text4
43924
+ ...text5
43532
43925
  };
43533
43926
  var commands = {
43534
43927
  npm: "npx remotion upgrade",
@@ -43538,26 +43931,26 @@ var commands = {
43538
43931
  unknown: "npx remotion upgrade"
43539
43932
  };
43540
43933
  var UpdateModal = ({ info, knownBugs }) => {
43541
- const hasKnownBugs = useMemo134(() => {
43934
+ const hasKnownBugs = useMemo135(() => {
43542
43935
  return knownBugs && knownBugs?.length > 0;
43543
43936
  }, [knownBugs]);
43544
43937
  const command = commands[info.packageManager];
43545
- const onClick = useCallback132(() => {
43938
+ const onClick = useCallback133(() => {
43546
43939
  copyText(command).catch((err) => {
43547
43940
  showNotification(`Could not copy: ${err.message}`, 2000);
43548
43941
  });
43549
43942
  }, [command]);
43550
- return /* @__PURE__ */ jsxs141(DismissableModal, {
43943
+ return /* @__PURE__ */ jsxs143(DismissableModal, {
43551
43944
  children: [
43552
- /* @__PURE__ */ jsx264(ModalHeader, {
43945
+ /* @__PURE__ */ jsx267(ModalHeader, {
43553
43946
  title: "Update available"
43554
43947
  }),
43555
- /* @__PURE__ */ jsxs141("div", {
43948
+ /* @__PURE__ */ jsxs143("div", {
43556
43949
  style: container62,
43557
43950
  children: [
43558
- hasKnownBugs ? /* @__PURE__ */ jsxs141(Fragment46, {
43951
+ hasKnownBugs ? /* @__PURE__ */ jsxs143(Fragment47, {
43559
43952
  children: [
43560
- /* @__PURE__ */ jsxs141("div", {
43953
+ /* @__PURE__ */ jsxs143("div", {
43561
43954
  style: title7,
43562
43955
  children: [
43563
43956
  "The currently installed version ",
@@ -43565,43 +43958,43 @@ var UpdateModal = ({ info, knownBugs }) => {
43565
43958
  " has the following known bugs:"
43566
43959
  ]
43567
43960
  }),
43568
- /* @__PURE__ */ jsx264(KnownBugs, {
43961
+ /* @__PURE__ */ jsx267(KnownBugs, {
43569
43962
  bugs: knownBugs
43570
43963
  }),
43571
- /* @__PURE__ */ jsx264("div", {
43964
+ /* @__PURE__ */ jsx267("div", {
43572
43965
  style: { height: "20px" }
43573
43966
  }),
43574
- /* @__PURE__ */ jsx264("div", {
43575
- style: text4,
43967
+ /* @__PURE__ */ jsx267("div", {
43968
+ style: text5,
43576
43969
  children: "To upgrade, run the following command:"
43577
43970
  })
43578
43971
  ]
43579
- }) : /* @__PURE__ */ jsx264("div", {
43972
+ }) : /* @__PURE__ */ jsx267("div", {
43580
43973
  style: title7,
43581
43974
  children: "A new update for Remotion is available! Run the following command:"
43582
43975
  }),
43583
- /* @__PURE__ */ jsxs141(Row, {
43976
+ /* @__PURE__ */ jsxs143(Row, {
43584
43977
  align: "center",
43585
43978
  children: [
43586
- /* @__PURE__ */ jsx264(Flex, {
43587
- children: /* @__PURE__ */ jsx264("pre", {
43979
+ /* @__PURE__ */ jsx267(Flex, {
43980
+ children: /* @__PURE__ */ jsx267("pre", {
43588
43981
  onClick,
43589
43982
  style: code,
43590
43983
  children: command
43591
43984
  })
43592
43985
  }),
43593
- /* @__PURE__ */ jsx264(Spacing, {
43986
+ /* @__PURE__ */ jsx267(Spacing, {
43594
43987
  x: 1
43595
43988
  }),
43596
- /* @__PURE__ */ jsx264(CopyButton, {
43989
+ /* @__PURE__ */ jsx267(CopyButton, {
43597
43990
  textToCopy: command,
43598
43991
  label: "Copy",
43599
43992
  labelWhenCopied: "Copied!"
43600
43993
  })
43601
43994
  ]
43602
43995
  }),
43603
- /* @__PURE__ */ jsxs141("div", {
43604
- style: text4,
43996
+ /* @__PURE__ */ jsxs143("div", {
43997
+ style: text5,
43605
43998
  children: [
43606
43999
  "This will upgrade Remotion from ",
43607
44000
  info.currentVersion,
@@ -43611,13 +44004,13 @@ var UpdateModal = ({ info, knownBugs }) => {
43611
44004
  "."
43612
44005
  ]
43613
44006
  }),
43614
- /* @__PURE__ */ jsxs141("div", {
43615
- style: text4,
44007
+ /* @__PURE__ */ jsxs143("div", {
44008
+ style: text5,
43616
44009
  children: [
43617
44010
  "Read the",
43618
44011
  " ",
43619
- /* @__PURE__ */ jsx264("a", {
43620
- style: link3,
44012
+ /* @__PURE__ */ jsx267("a", {
44013
+ style: link4,
43621
44014
  target: "_blank",
43622
44015
  href: "https://github.com/remotion-dev/remotion/releases",
43623
44016
  children: "Release notes"
@@ -43635,33 +44028,34 @@ var UpdateModal = ({ info, knownBugs }) => {
43635
44028
  };
43636
44029
 
43637
44030
  // src/components/Modals.tsx
43638
- import { jsx as jsx265, jsxs as jsxs142, Fragment as Fragment47 } from "react/jsx-runtime";
44031
+ import { jsx as jsx268, jsxs as jsxs144, Fragment as Fragment48 } from "react/jsx-runtime";
43639
44032
  var Modals = ({ readOnlyStudio }) => {
43640
44033
  const { selectedModal: modalContextType } = useContext83(ModalsContext);
43641
44034
  const canRender = useContext83(StudioServerConnectionCtx).previewServerState.type === "connected";
43642
- return /* @__PURE__ */ jsxs142(Fragment47, {
44035
+ return /* @__PURE__ */ jsxs144(Fragment48, {
43643
44036
  children: [
43644
- modalContextType && modalContextType.type === "duplicate-comp" && /* @__PURE__ */ jsx265(DuplicateComposition, {
44037
+ modalContextType && modalContextType.type === "duplicate-comp" && /* @__PURE__ */ jsx268(DuplicateComposition, {
43645
44038
  compositionType: modalContextType.compositionType,
43646
44039
  compositionId: modalContextType.compositionId
43647
44040
  }),
43648
- modalContextType && modalContextType.type === "delete-comp" && /* @__PURE__ */ jsx265(DeleteComposition, {
44041
+ modalContextType && modalContextType.type === "delete-comp" && /* @__PURE__ */ jsx268(DeleteComposition, {
43649
44042
  compositionId: modalContextType.compositionId
43650
44043
  }),
43651
- modalContextType && modalContextType.type === "rename-comp" && /* @__PURE__ */ jsx265(RenameComposition, {
44044
+ modalContextType && modalContextType.type === "rename-comp" && /* @__PURE__ */ jsx268(RenameComposition, {
43652
44045
  compositionId: modalContextType.compositionId
43653
44046
  }),
43654
- modalContextType && modalContextType.type === "input-props-override" && /* @__PURE__ */ jsx265(OverrideInputPropsModal, {}),
43655
- modalContextType && modalContextType.type === "web-render" && /* @__PURE__ */ jsx265(WebRenderModalWithLoader, {
44047
+ modalContextType && modalContextType.type === "input-props-override" && /* @__PURE__ */ jsx268(OverrideInputPropsModal, {}),
44048
+ modalContextType && modalContextType.type === "web-render" && /* @__PURE__ */ jsx268(WebRenderModalWithLoader, {
43656
44049
  type: "web-render",
43657
44050
  initialFrame: modalContextType.initialFrame,
43658
44051
  compositionId: modalContextType.compositionId,
43659
44052
  defaultProps: modalContextType.defaultProps,
43660
44053
  inFrameMark: modalContextType.inFrameMark,
43661
44054
  outFrameMark: modalContextType.outFrameMark,
43662
- initialLogLevel: modalContextType.initialLogLevel
44055
+ initialLogLevel: modalContextType.initialLogLevel,
44056
+ initialLicenseKey: modalContextType.initialLicenseKey
43663
44057
  }),
43664
- modalContextType && canRender && modalContextType.type === "server-render" && /* @__PURE__ */ jsx265(RenderModalWithLoader, {
44058
+ modalContextType && canRender && modalContextType.type === "server-render" && /* @__PURE__ */ jsx268(RenderModalWithLoader, {
43665
44059
  initialFrame: modalContextType.initialFrame,
43666
44060
  initialDarkMode: modalContextType.initialDarkMode,
43667
44061
  compositionId: modalContextType.compositionId,
@@ -43710,28 +44104,28 @@ var Modals = ({ readOnlyStudio }) => {
43710
44104
  initialChromeMode: modalContextType.initialChromeMode,
43711
44105
  renderDefaults: modalContextType.renderDefaults
43712
44106
  }),
43713
- modalContextType && canRender && modalContextType.type === "render-progress" && /* @__PURE__ */ jsx265(RenderStatusModal, {
44107
+ modalContextType && canRender && modalContextType.type === "render-progress" && /* @__PURE__ */ jsx268(RenderStatusModal, {
43714
44108
  jobId: modalContextType.jobId
43715
44109
  }),
43716
- modalContextType && modalContextType.type === "update" && /* @__PURE__ */ jsx265(UpdateModal, {
44110
+ modalContextType && modalContextType.type === "update" && /* @__PURE__ */ jsx268(UpdateModal, {
43717
44111
  info: modalContextType.info,
43718
44112
  knownBugs: modalContextType.knownBugs
43719
44113
  }),
43720
- modalContextType && modalContextType.type === "install-packages" && /* @__PURE__ */ jsx265(InstallPackageModal, {
44114
+ modalContextType && modalContextType.type === "install-packages" && /* @__PURE__ */ jsx268(InstallPackageModal, {
43721
44115
  packageManager: modalContextType.packageManager
43722
44116
  }),
43723
- modalContextType && modalContextType.type === "quick-switcher" && /* @__PURE__ */ jsx265(QuickSwitcher_default, {
44117
+ modalContextType && modalContextType.type === "quick-switcher" && /* @__PURE__ */ jsx268(QuickSwitcher_default, {
43724
44118
  readOnlyStudio,
43725
44119
  invocationTimestamp: modalContextType.invocationTimestamp,
43726
44120
  initialMode: modalContextType.mode
43727
44121
  }),
43728
- /* @__PURE__ */ jsx265(AskAiModal, {})
44122
+ /* @__PURE__ */ jsx268(AskAiModal, {})
43729
44123
  ]
43730
44124
  });
43731
44125
  };
43732
44126
 
43733
44127
  // src/components/Editor.tsx
43734
- import { jsx as jsx266, jsxs as jsxs143 } from "react/jsx-runtime";
44128
+ import { jsx as jsx269, jsxs as jsxs145 } from "react/jsx-runtime";
43735
44129
  var background2 = {
43736
44130
  backgroundColor: BACKGROUND,
43737
44131
  display: "flex",
@@ -43747,7 +44141,7 @@ var Editor = ({ Root, readOnlyStudio }) => {
43747
44141
  triggerOnWindowResize: false,
43748
44142
  shouldApplyCssTransforms: true
43749
44143
  });
43750
- useEffect79(() => {
44144
+ useEffect80(() => {
43751
44145
  if (readOnlyStudio) {
43752
44146
  return;
43753
44147
  }
@@ -43761,11 +44155,11 @@ var Editor = ({ Root, readOnlyStudio }) => {
43761
44155
  window.removeEventListener("beforeunload", listenToChanges);
43762
44156
  };
43763
44157
  }, [readOnlyStudio]);
43764
- const [canvasMounted, setCanvasMounted] = React175.useState(false);
43765
- const onMounted = useCallback133(() => {
44158
+ const [canvasMounted, setCanvasMounted] = React176.useState(false);
44159
+ const onMounted = useCallback134(() => {
43766
44160
  setCanvasMounted(true);
43767
44161
  }, []);
43768
- const value = useMemo135(() => {
44162
+ const value = useMemo136(() => {
43769
44163
  if (!size4) {
43770
44164
  return null;
43771
44165
  }
@@ -43774,41 +44168,41 @@ var Editor = ({ Root, readOnlyStudio }) => {
43774
44168
  canvasSize: size4
43775
44169
  };
43776
44170
  }, [size4]);
43777
- const MemoRoot = useMemo135(() => {
43778
- return React175.memo(Root);
44171
+ const MemoRoot = useMemo136(() => {
44172
+ return React176.memo(Root);
43779
44173
  }, [Root]);
43780
- return /* @__PURE__ */ jsx266(HigherZIndex, {
44174
+ return /* @__PURE__ */ jsx269(HigherZIndex, {
43781
44175
  onEscape: noop,
43782
44176
  onOutsideClick: noop,
43783
- children: /* @__PURE__ */ jsxs143(TimelineZoomContext, {
44177
+ children: /* @__PURE__ */ jsxs145(TimelineZoomContext, {
43784
44178
  children: [
43785
- /* @__PURE__ */ jsx266(Internals61.CurrentScaleContext.Provider, {
44179
+ /* @__PURE__ */ jsx269(Internals61.CurrentScaleContext.Provider, {
43786
44180
  value,
43787
- children: /* @__PURE__ */ jsxs143("div", {
44181
+ children: /* @__PURE__ */ jsxs145("div", {
43788
44182
  style: background2,
43789
44183
  children: [
43790
- canvasMounted ? /* @__PURE__ */ jsx266(MemoRoot, {}) : null,
43791
- /* @__PURE__ */ jsxs143(Internals61.CanUseRemotionHooksProvider, {
44184
+ canvasMounted ? /* @__PURE__ */ jsx269(MemoRoot, {}) : null,
44185
+ /* @__PURE__ */ jsxs145(Internals61.CanUseRemotionHooksProvider, {
43792
44186
  children: [
43793
- /* @__PURE__ */ jsx266(EditorContent, {
44187
+ /* @__PURE__ */ jsx269(EditorContent, {
43794
44188
  readOnlyStudio,
43795
- children: /* @__PURE__ */ jsx266(TopPanel, {
44189
+ children: /* @__PURE__ */ jsx269(TopPanel, {
43796
44190
  drawRef,
43797
44191
  bufferStateDelayInMilliseconds: BUFFER_STATE_DELAY_IN_MILLISECONDS,
43798
44192
  onMounted,
43799
44193
  readOnlyStudio
43800
44194
  })
43801
44195
  }),
43802
- /* @__PURE__ */ jsx266(GlobalKeybindings, {})
44196
+ /* @__PURE__ */ jsx269(GlobalKeybindings, {})
43803
44197
  ]
43804
44198
  })
43805
44199
  ]
43806
44200
  })
43807
44201
  }),
43808
- /* @__PURE__ */ jsx266(Modals, {
44202
+ /* @__PURE__ */ jsx269(Modals, {
43809
44203
  readOnlyStudio
43810
44204
  }),
43811
- /* @__PURE__ */ jsx266(NotificationCenter, {})
44205
+ /* @__PURE__ */ jsx269(NotificationCenter, {})
43812
44206
  ]
43813
44207
  })
43814
44208
  });
@@ -43818,9 +44212,9 @@ var Editor = ({ Root, readOnlyStudio }) => {
43818
44212
  import { PlayerInternals as PlayerInternals20 } from "@remotion/player";
43819
44213
 
43820
44214
  // src/state/preview-size.tsx
43821
- import { useCallback as useCallback134, useContext as useContext84, useMemo as useMemo136, useState as useState84 } from "react";
44215
+ import { useCallback as useCallback135, useContext as useContext84, useMemo as useMemo137, useState as useState84 } from "react";
43822
44216
  import { Internals as Internals62 } from "remotion";
43823
- import { jsx as jsx267 } from "react/jsx-runtime";
44217
+ import { jsx as jsx270 } from "react/jsx-runtime";
43824
44218
  var key5 = "remotion.previewSize";
43825
44219
  var persistPreviewSizeOption = (option) => {
43826
44220
  localStorage.setItem(key5, JSON.stringify(option));
@@ -43847,14 +44241,14 @@ var PreviewSizeProvider = ({ children }) => {
43847
44241
  };
43848
44242
  });
43849
44243
  const { editorZoomGestures } = useContext84(EditorZoomGesturesContext);
43850
- const setSize = useCallback134((newValue) => {
44244
+ const setSize = useCallback135((newValue) => {
43851
44245
  setSizeState((prevState) => {
43852
44246
  const newVal = newValue(prevState);
43853
44247
  persistPreviewSizeOption(newVal);
43854
44248
  return newVal;
43855
44249
  });
43856
44250
  }, []);
43857
- const previewSizeCtx = useMemo136(() => {
44251
+ const previewSizeCtx = useMemo137(() => {
43858
44252
  return {
43859
44253
  size: editorZoomGestures ? size4 : {
43860
44254
  size: size4.size,
@@ -43868,58 +44262,58 @@ var PreviewSizeProvider = ({ children }) => {
43868
44262
  setTranslation
43869
44263
  };
43870
44264
  }, [editorZoomGestures, size4, setSize, translation]);
43871
- return /* @__PURE__ */ jsx267(Internals62.PreviewSizeContext.Provider, {
44265
+ return /* @__PURE__ */ jsx270(Internals62.PreviewSizeContext.Provider, {
43872
44266
  value: previewSizeCtx,
43873
44267
  children
43874
44268
  });
43875
44269
  };
43876
44270
 
43877
44271
  // src/components/CheckerboardProvider.tsx
43878
- import { useCallback as useCallback135, useMemo as useMemo137, useState as useState85 } from "react";
43879
- import { jsx as jsx268 } from "react/jsx-runtime";
44272
+ import { useCallback as useCallback136, useMemo as useMemo138, useState as useState85 } from "react";
44273
+ import { jsx as jsx271 } from "react/jsx-runtime";
43880
44274
  var CheckerboardProvider = ({ children }) => {
43881
44275
  const [checkerboard, setCheckerboardState] = useState85(() => loadCheckerboardOption());
43882
- const setCheckerboard = useCallback135((newValue) => {
44276
+ const setCheckerboard = useCallback136((newValue) => {
43883
44277
  setCheckerboardState((prevState) => {
43884
44278
  const newVal = newValue(prevState);
43885
44279
  persistCheckerboardOption(newVal);
43886
44280
  return newVal;
43887
44281
  });
43888
44282
  }, []);
43889
- const checkerboardCtx = useMemo137(() => {
44283
+ const checkerboardCtx = useMemo138(() => {
43890
44284
  return {
43891
44285
  checkerboard,
43892
44286
  setCheckerboard
43893
44287
  };
43894
44288
  }, [checkerboard, setCheckerboard]);
43895
- return /* @__PURE__ */ jsx268(CheckerboardContext.Provider, {
44289
+ return /* @__PURE__ */ jsx271(CheckerboardContext.Provider, {
43896
44290
  value: checkerboardCtx,
43897
44291
  children
43898
44292
  });
43899
44293
  };
43900
44294
 
43901
44295
  // src/components/MediaVolumeProvider.tsx
43902
- import { useMemo as useMemo138, useState as useState86 } from "react";
44296
+ import { useMemo as useMemo139, useState as useState86 } from "react";
43903
44297
  import { Internals as Internals63 } from "remotion";
43904
- import { jsx as jsx269 } from "react/jsx-runtime";
44298
+ import { jsx as jsx272 } from "react/jsx-runtime";
43905
44299
  var MediaVolumeProvider = ({ children }) => {
43906
44300
  const [mediaMuted, setMediaMuted] = useState86(() => loadMuteOption());
43907
44301
  const [mediaVolume, setMediaVolume] = useState86(1);
43908
- const mediaVolumeContextValue = useMemo138(() => {
44302
+ const mediaVolumeContextValue = useMemo139(() => {
43909
44303
  return {
43910
44304
  mediaMuted,
43911
44305
  mediaVolume
43912
44306
  };
43913
44307
  }, [mediaMuted, mediaVolume]);
43914
- const setMediaVolumeContextValue = useMemo138(() => {
44308
+ const setMediaVolumeContextValue = useMemo139(() => {
43915
44309
  return {
43916
44310
  setMediaMuted,
43917
44311
  setMediaVolume
43918
44312
  };
43919
44313
  }, []);
43920
- return /* @__PURE__ */ jsx269(Internals63.MediaVolumeContext.Provider, {
44314
+ return /* @__PURE__ */ jsx272(Internals63.MediaVolumeContext.Provider, {
43921
44315
  value: mediaVolumeContextValue,
43922
- children: /* @__PURE__ */ jsx269(Internals63.SetMediaVolumeContext.Provider, {
44316
+ children: /* @__PURE__ */ jsx272(Internals63.SetMediaVolumeContext.Provider, {
43923
44317
  value: setMediaVolumeContextValue,
43924
44318
  children
43925
44319
  })
@@ -43927,24 +44321,24 @@ var MediaVolumeProvider = ({ children }) => {
43927
44321
  };
43928
44322
 
43929
44323
  // src/components/ModalsProvider.tsx
43930
- import { useMemo as useMemo139, useState as useState87 } from "react";
43931
- import { jsx as jsx270 } from "react/jsx-runtime";
44324
+ import { useMemo as useMemo140, useState as useState87 } from "react";
44325
+ import { jsx as jsx273 } from "react/jsx-runtime";
43932
44326
  var ModalsProvider = ({ children }) => {
43933
44327
  const [modalContextType, setModalContextType] = useState87(null);
43934
- const modalsContext = useMemo139(() => {
44328
+ const modalsContext = useMemo140(() => {
43935
44329
  return {
43936
44330
  selectedModal: modalContextType,
43937
44331
  setSelectedModal: setModalContextType
43938
44332
  };
43939
44333
  }, [modalContextType]);
43940
- return /* @__PURE__ */ jsx270(ModalsContext.Provider, {
44334
+ return /* @__PURE__ */ jsx273(ModalsContext.Provider, {
43941
44335
  value: modalsContext,
43942
44336
  children
43943
44337
  });
43944
44338
  };
43945
44339
 
43946
44340
  // src/components/SetTimelineInOutProvider.tsx
43947
- import { useEffect as useEffect80, useMemo as useMemo140, useState as useState88 } from "react";
44341
+ import { useEffect as useEffect81, useMemo as useMemo141, useState as useState88 } from "react";
43948
44342
 
43949
44343
  // src/state/marks.ts
43950
44344
  var localStorageKey5 = () => `remotion.editor.marksv2`;
@@ -43960,20 +44354,20 @@ var loadMarks = () => {
43960
44354
  };
43961
44355
 
43962
44356
  // src/components/SetTimelineInOutProvider.tsx
43963
- import { jsx as jsx271 } from "react/jsx-runtime";
44357
+ import { jsx as jsx274 } from "react/jsx-runtime";
43964
44358
  var SetTimelineInOutProvider = ({ children }) => {
43965
44359
  const [inAndOutFrames, setInAndOutFrames] = useState88(() => loadMarks());
43966
- const setTimelineInOutContextValue = useMemo140(() => {
44360
+ const setTimelineInOutContextValue = useMemo141(() => {
43967
44361
  return {
43968
44362
  setInAndOutFrames
43969
44363
  };
43970
44364
  }, []);
43971
- useEffect80(() => {
44365
+ useEffect81(() => {
43972
44366
  persistMarks(inAndOutFrames);
43973
44367
  }, [inAndOutFrames]);
43974
- return /* @__PURE__ */ jsx271(TimelineInOutContext.Provider, {
44368
+ return /* @__PURE__ */ jsx274(TimelineInOutContext.Provider, {
43975
44369
  value: inAndOutFrames,
43976
- children: /* @__PURE__ */ jsx271(SetTimelineInOutContext.Provider, {
44370
+ children: /* @__PURE__ */ jsx274(SetTimelineInOutContext.Provider, {
43977
44371
  value: setTimelineInOutContextValue,
43978
44372
  children
43979
44373
  })
@@ -43981,23 +44375,23 @@ var SetTimelineInOutProvider = ({ children }) => {
43981
44375
  };
43982
44376
 
43983
44377
  // src/components/ShowGuidesProvider.tsx
43984
- import { useCallback as useCallback136, useMemo as useMemo141, useRef as useRef43, useState as useState89 } from "react";
43985
- import { jsx as jsx272 } from "react/jsx-runtime";
44378
+ import { useCallback as useCallback137, useMemo as useMemo142, useRef as useRef44, useState as useState89 } from "react";
44379
+ import { jsx as jsx275 } from "react/jsx-runtime";
43986
44380
  var ShowGuidesProvider = ({ children }) => {
43987
44381
  const [guidesList, setGuidesList] = useState89(() => loadGuidesList());
43988
44382
  const [selectedGuideId, setSelectedGuideId] = useState89(null);
43989
44383
  const [hoveredGuideId, setHoveredGuideId] = useState89(null);
43990
44384
  const [editorShowGuides, setEditorShowGuidesState] = useState89(() => loadEditorShowGuidesOption());
43991
- const shouldCreateGuideRef = useRef43(false);
43992
- const shouldDeleteGuideRef = useRef43(false);
43993
- const setEditorShowGuides = useCallback136((newValue) => {
44385
+ const shouldCreateGuideRef = useRef44(false);
44386
+ const shouldDeleteGuideRef = useRef44(false);
44387
+ const setEditorShowGuides = useCallback137((newValue) => {
43994
44388
  setEditorShowGuidesState((prevState) => {
43995
44389
  const newVal = newValue(prevState);
43996
44390
  persistEditorShowGuidesOption(newVal);
43997
44391
  return newVal;
43998
44392
  });
43999
44393
  }, []);
44000
- const editorShowGuidesCtx = useMemo141(() => {
44394
+ const editorShowGuidesCtx = useMemo142(() => {
44001
44395
  return {
44002
44396
  editorShowGuides,
44003
44397
  setEditorShowGuides,
@@ -44017,82 +44411,82 @@ var ShowGuidesProvider = ({ children }) => {
44017
44411
  selectedGuideId,
44018
44412
  hoveredGuideId
44019
44413
  ]);
44020
- return /* @__PURE__ */ jsx272(EditorShowGuidesContext.Provider, {
44414
+ return /* @__PURE__ */ jsx275(EditorShowGuidesContext.Provider, {
44021
44415
  value: editorShowGuidesCtx,
44022
44416
  children
44023
44417
  });
44024
44418
  };
44025
44419
 
44026
44420
  // src/components/ShowRulersProvider.tsx
44027
- import { useCallback as useCallback137, useMemo as useMemo142, useState as useState90 } from "react";
44028
- import { jsx as jsx273 } from "react/jsx-runtime";
44421
+ import { useCallback as useCallback138, useMemo as useMemo143, useState as useState90 } from "react";
44422
+ import { jsx as jsx276 } from "react/jsx-runtime";
44029
44423
  var ShowRulersProvider = ({ children }) => {
44030
44424
  const [editorShowRulers, setEditorShowRulersState] = useState90(() => loadEditorShowRulersOption());
44031
- const setEditorShowRulers = useCallback137((newValue) => {
44425
+ const setEditorShowRulers = useCallback138((newValue) => {
44032
44426
  setEditorShowRulersState((prevState) => {
44033
44427
  const newVal = newValue(prevState);
44034
44428
  persistEditorShowRulersOption(newVal);
44035
44429
  return newVal;
44036
44430
  });
44037
44431
  }, []);
44038
- const editorShowRulersCtx = useMemo142(() => {
44432
+ const editorShowRulersCtx = useMemo143(() => {
44039
44433
  return {
44040
44434
  editorShowRulers,
44041
44435
  setEditorShowRulers
44042
44436
  };
44043
44437
  }, [editorShowRulers, setEditorShowRulers]);
44044
- return /* @__PURE__ */ jsx273(EditorShowRulersContext.Provider, {
44438
+ return /* @__PURE__ */ jsx276(EditorShowRulersContext.Provider, {
44045
44439
  value: editorShowRulersCtx,
44046
44440
  children
44047
44441
  });
44048
44442
  };
44049
44443
 
44050
44444
  // src/components/ZoomGesturesProvider.tsx
44051
- import { useCallback as useCallback138, useMemo as useMemo143, useState as useState91 } from "react";
44052
- import { jsx as jsx274 } from "react/jsx-runtime";
44445
+ import { useCallback as useCallback139, useMemo as useMemo144, useState as useState91 } from "react";
44446
+ import { jsx as jsx277 } from "react/jsx-runtime";
44053
44447
  var ZoomGesturesProvider = ({ children }) => {
44054
44448
  const [editorZoomGestures, setEditorZoomGesturesState] = useState91(() => loadEditorZoomGesturesOption());
44055
- const setEditorZoomGestures = useCallback138((newValue) => {
44449
+ const setEditorZoomGestures = useCallback139((newValue) => {
44056
44450
  setEditorZoomGesturesState((prevState) => {
44057
44451
  const newVal = newValue(prevState);
44058
44452
  persistEditorZoomGesturesOption(newVal);
44059
44453
  return newVal;
44060
44454
  });
44061
44455
  }, []);
44062
- const editorZoomGesturesCtx = useMemo143(() => {
44456
+ const editorZoomGesturesCtx = useMemo144(() => {
44063
44457
  return {
44064
44458
  editorZoomGestures,
44065
44459
  setEditorZoomGestures
44066
44460
  };
44067
44461
  }, [editorZoomGestures, setEditorZoomGestures]);
44068
- return /* @__PURE__ */ jsx274(EditorZoomGesturesContext.Provider, {
44462
+ return /* @__PURE__ */ jsx277(EditorZoomGesturesContext.Provider, {
44069
44463
  value: editorZoomGesturesCtx,
44070
44464
  children
44071
44465
  });
44072
44466
  };
44073
44467
 
44074
44468
  // src/components/EditorContexts.tsx
44075
- import { jsx as jsx275 } from "react/jsx-runtime";
44469
+ import { jsx as jsx278 } from "react/jsx-runtime";
44076
44470
  var EditorContexts = ({ children, readOnlyStudio }) => {
44077
- return /* @__PURE__ */ jsx275(ZodProvider, {
44078
- children: /* @__PURE__ */ jsx275(VisualControlsProvider, {
44079
- children: /* @__PURE__ */ jsx275(PreviewServerConnection, {
44471
+ return /* @__PURE__ */ jsx278(ZodProvider, {
44472
+ children: /* @__PURE__ */ jsx278(VisualControlsProvider, {
44473
+ children: /* @__PURE__ */ jsx278(PreviewServerConnection, {
44080
44474
  readOnlyStudio,
44081
- children: /* @__PURE__ */ jsx275(RenderQueueContextProvider, {
44082
- children: /* @__PURE__ */ jsx275(KeybindingContextProvider, {
44083
- children: /* @__PURE__ */ jsx275(CheckerboardProvider, {
44084
- children: /* @__PURE__ */ jsx275(ZoomGesturesProvider, {
44085
- children: /* @__PURE__ */ jsx275(ShowRulersProvider, {
44086
- children: /* @__PURE__ */ jsx275(ShowGuidesProvider, {
44087
- children: /* @__PURE__ */ jsx275(PreviewSizeProvider, {
44088
- children: /* @__PURE__ */ jsx275(ModalsProvider, {
44089
- children: /* @__PURE__ */ jsx275(MediaVolumeProvider, {
44090
- children: /* @__PURE__ */ jsx275(PlayerInternals20.PlayerEmitterProvider, {
44475
+ children: /* @__PURE__ */ jsx278(RenderQueueContextProvider, {
44476
+ children: /* @__PURE__ */ jsx278(KeybindingContextProvider, {
44477
+ children: /* @__PURE__ */ jsx278(CheckerboardProvider, {
44478
+ children: /* @__PURE__ */ jsx278(ZoomGesturesProvider, {
44479
+ children: /* @__PURE__ */ jsx278(ShowRulersProvider, {
44480
+ children: /* @__PURE__ */ jsx278(ShowGuidesProvider, {
44481
+ children: /* @__PURE__ */ jsx278(PreviewSizeProvider, {
44482
+ children: /* @__PURE__ */ jsx278(ModalsProvider, {
44483
+ children: /* @__PURE__ */ jsx278(MediaVolumeProvider, {
44484
+ children: /* @__PURE__ */ jsx278(PlayerInternals20.PlayerEmitterProvider, {
44091
44485
  currentPlaybackRate: null,
44092
- children: /* @__PURE__ */ jsx275(SidebarContextProvider, {
44093
- children: /* @__PURE__ */ jsx275(FolderContextProvider, {
44094
- children: /* @__PURE__ */ jsx275(HighestZIndexProvider, {
44095
- children: /* @__PURE__ */ jsx275(SetTimelineInOutProvider, {
44486
+ children: /* @__PURE__ */ jsx278(SidebarContextProvider, {
44487
+ children: /* @__PURE__ */ jsx278(FolderContextProvider, {
44488
+ children: /* @__PURE__ */ jsx278(HighestZIndexProvider, {
44489
+ children: /* @__PURE__ */ jsx278(SetTimelineInOutProvider, {
44096
44490
  children
44097
44491
  })
44098
44492
  })
@@ -44115,7 +44509,7 @@ var EditorContexts = ({ children, readOnlyStudio }) => {
44115
44509
 
44116
44510
  // src/components/Notifications/ServerDisconnected.tsx
44117
44511
  import { useContext as useContext85 } from "react";
44118
- import { jsx as jsx276, jsxs as jsxs144 } from "react/jsx-runtime";
44512
+ import { jsx as jsx279, jsxs as jsxs146 } from "react/jsx-runtime";
44119
44513
  var container63 = {
44120
44514
  position: "fixed",
44121
44515
  justifyContent: "flex-end",
@@ -44160,26 +44554,26 @@ var ServerDisconnected = () => {
44160
44554
  }
44161
44555
  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=";
44162
44556
  fav.setAttribute("href", base64Favicon);
44163
- return /* @__PURE__ */ jsx276("div", {
44557
+ return /* @__PURE__ */ jsx279("div", {
44164
44558
  style: container63,
44165
44559
  className: "css-reset",
44166
- children: /* @__PURE__ */ jsxs144("div", {
44560
+ children: /* @__PURE__ */ jsxs146("div", {
44167
44561
  style: message,
44168
44562
  children: [
44169
44563
  "The studio server has disconnected. ",
44170
- /* @__PURE__ */ jsx276("br", {}),
44171
- window.remotion_studioServerCommand ? /* @__PURE__ */ jsxs144("span", {
44564
+ /* @__PURE__ */ jsx279("br", {}),
44565
+ window.remotion_studioServerCommand ? /* @__PURE__ */ jsxs146("span", {
44172
44566
  children: [
44173
44567
  "Run",
44174
44568
  " ",
44175
- /* @__PURE__ */ jsx276("code", {
44569
+ /* @__PURE__ */ jsx279("code", {
44176
44570
  style: inlineCode,
44177
44571
  children: window.remotion_studioServerCommand
44178
44572
  }),
44179
44573
  " ",
44180
44574
  "to run it again."
44181
44575
  ]
44182
- }) : /* @__PURE__ */ jsx276("span", {
44576
+ }) : /* @__PURE__ */ jsx279("span", {
44183
44577
  children: "Fast refresh will not work."
44184
44578
  })
44185
44579
  ]
@@ -44276,7 +44670,6 @@ var makeDefaultGlobalCSS = () => {
44276
44670
  inset -1px -1px #555,
44277
44671
  inset 1px -1px #555,
44278
44672
  inset -1px 1px #555;
44279
- border-radius: 0 !important;
44280
44673
  }
44281
44674
 
44282
44675
  input[type='color'].__remotion_color_picker::-webkit-color-swatch-wrapper {
@@ -44345,7 +44738,7 @@ var injectCSS = () => {
44345
44738
  };
44346
44739
 
44347
44740
  // src/Studio.tsx
44348
- import { jsx as jsx277, jsxs as jsxs145 } from "react/jsx-runtime";
44741
+ import { jsx as jsx280, jsxs as jsxs147 } from "react/jsx-runtime";
44349
44742
  var getServerDisconnectedDomElement = () => {
44350
44743
  return document.getElementById("server-disconnected-overlay");
44351
44744
  };
@@ -44353,27 +44746,27 @@ var Studio = ({ rootComponent, readOnly }) => {
44353
44746
  useLayoutEffect2(() => {
44354
44747
  injectCSS();
44355
44748
  }, []);
44356
- return /* @__PURE__ */ jsx277(Internals65.CompositionManagerProvider, {
44749
+ return /* @__PURE__ */ jsx280(Internals65.CompositionManagerProvider, {
44357
44750
  onlyRenderComposition: null,
44358
44751
  currentCompositionMetadata: null,
44359
44752
  initialCompositions: [],
44360
44753
  initialCanvasContent: null,
44361
- children: /* @__PURE__ */ jsx277(Internals65.RemotionRootContexts, {
44754
+ children: /* @__PURE__ */ jsx280(Internals65.RemotionRootContexts, {
44362
44755
  frameState: null,
44363
44756
  audioEnabled: window.remotion_audioEnabled,
44364
44757
  videoEnabled: window.remotion_videoEnabled,
44365
44758
  logLevel: window.remotion_logLevel,
44366
44759
  numberOfAudioTags: window.remotion_numberOfAudioTags,
44367
44760
  audioLatencyHint: window.remotion_audioLatencyHint ?? "interactive",
44368
- children: /* @__PURE__ */ jsx277(Internals65.ResolveCompositionConfigInStudio, {
44369
- children: /* @__PURE__ */ jsxs145(EditorContexts, {
44761
+ children: /* @__PURE__ */ jsx280(Internals65.ResolveCompositionConfigInStudio, {
44762
+ children: /* @__PURE__ */ jsxs147(EditorContexts, {
44370
44763
  readOnlyStudio: readOnly,
44371
44764
  children: [
44372
- /* @__PURE__ */ jsx277(Editor, {
44765
+ /* @__PURE__ */ jsx280(Editor, {
44373
44766
  readOnlyStudio: readOnly,
44374
44767
  Root: rootComponent
44375
44768
  }),
44376
- readOnly ? null : createPortal(/* @__PURE__ */ jsx277(ServerDisconnected, {}), getServerDisconnectedDomElement())
44769
+ readOnly ? null : createPortal(/* @__PURE__ */ jsx280(ServerDisconnected, {}), getServerDisconnectedDomElement())
44377
44770
  ]
44378
44771
  })
44379
44772
  })