@remotion/studio 4.0.447 → 4.0.448

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.
@@ -2420,7 +2420,7 @@ var getErrorRecord = async (error) => {
2420
2420
  };
2421
2421
  };
2422
2422
  var crashWithFrames = (crash) => (error) => {
2423
- const didHookOrderChange = error.message.startsWith("Rendered fewer hooks") || error.message.startsWith("Rendered more hooks");
2423
+ const didHookOrderChange = error.message.startsWith("Rendered fewer hooks") || error.message.startsWith("Rendered more hooks") || error.message.startsWith("Should have a queue");
2424
2424
  const key = "remotion.lastCrashBecauseOfHooks";
2425
2425
  const previousCrashWasBecauseOfHooks = window.localStorage.getItem(key);
2426
2426
  const justRefreshedBecauseOfHooks = previousCrashWasBecauseOfHooks ? Date.now() - Number(previousCrashWasBecauseOfHooks) < 5000 : false;
@@ -2740,7 +2740,7 @@ import { Internals as Internals70 } from "remotion";
2740
2740
 
2741
2741
  // src/components/Editor.tsx
2742
2742
  import { PlayerInternals as PlayerInternals19 } from "@remotion/player";
2743
- import React189, { useCallback as useCallback150, useMemo as useMemo150, useState as useState100 } from "react";
2743
+ import React189, { useCallback as useCallback150, useMemo as useMemo151, useState as useState100 } from "react";
2744
2744
  import { Internals as Internals65 } from "remotion";
2745
2745
 
2746
2746
  // src/helpers/noop.ts
@@ -5361,6 +5361,7 @@ var SidebarRenderButton = ({ composition, visible }) => {
5361
5361
  renderTypeOfLastRender: null,
5362
5362
  defaulMetadata: defaults.metadata,
5363
5363
  initialHardwareAcceleration: defaults.hardwareAcceleration,
5364
+ initialSampleRate: defaults.sampleRate,
5364
5365
  initialChromeMode: defaults.chromeMode,
5365
5366
  initialMediaCacheSizeInBytes: defaults.mediaCacheSizeInBytes,
5366
5367
  renderDefaults: defaults,
@@ -6184,7 +6185,8 @@ var addVideoRenderJob = ({
6184
6185
  metadata,
6185
6186
  hardwareAcceleration,
6186
6187
  chromeMode,
6187
- mediaCacheSizeInBytes
6188
+ mediaCacheSizeInBytes,
6189
+ sampleRate
6188
6190
  }) => {
6189
6191
  return callApi("/api/render", {
6190
6192
  compositionId,
@@ -6231,7 +6233,8 @@ var addVideoRenderJob = ({
6231
6233
  metadata,
6232
6234
  hardwareAcceleration,
6233
6235
  chromeMode,
6234
- mediaCacheSizeInBytes
6236
+ mediaCacheSizeInBytes,
6237
+ sampleRate
6235
6238
  });
6236
6239
  };
6237
6240
  var unsubscribeFromFileExistenceWatcher = ({
@@ -17516,6 +17519,7 @@ var makeRetryPayload = (job) => {
17516
17519
  defaulMetadata: job.metadata,
17517
17520
  renderTypeOfLastRender: "still",
17518
17521
  initialHardwareAcceleration: defaults.hardwareAcceleration,
17522
+ initialSampleRate: defaults.sampleRate,
17519
17523
  initialChromeMode: job.chromeMode,
17520
17524
  initialMediaCacheSizeInBytes: job.mediaCacheSizeInBytes,
17521
17525
  renderDefaults: defaults,
@@ -17569,6 +17573,7 @@ var makeRetryPayload = (job) => {
17569
17573
  defaulMetadata: job.metadata,
17570
17574
  renderTypeOfLastRender: "sequence",
17571
17575
  initialHardwareAcceleration: defaults.hardwareAcceleration,
17576
+ initialSampleRate: defaults.sampleRate,
17572
17577
  initialChromeMode: job.chromeMode,
17573
17578
  initialMediaCacheSizeInBytes: job.mediaCacheSizeInBytes,
17574
17579
  renderDefaults: defaults,
@@ -17622,6 +17627,7 @@ var makeRetryPayload = (job) => {
17622
17627
  defaulMetadata: job.metadata,
17623
17628
  renderTypeOfLastRender: "video",
17624
17629
  initialHardwareAcceleration: job.hardwareAcceleration,
17630
+ initialSampleRate: job.sampleRate,
17625
17631
  initialChromeMode: job.chromeMode,
17626
17632
  initialMediaCacheSizeInBytes: job.mediaCacheSizeInBytes,
17627
17633
  renderDefaults: defaults,
@@ -19477,6 +19483,7 @@ var RenderButton = ({
19477
19483
  renderTypeOfLastRender: null,
19478
19484
  defaulMetadata: defaults.metadata,
19479
19485
  initialHardwareAcceleration: defaults.hardwareAcceleration,
19486
+ initialSampleRate: defaults.sampleRate,
19480
19487
  initialChromeMode: defaults.chromeMode,
19481
19488
  initialMediaCacheSizeInBytes: defaults.mediaCacheSizeInBytes,
19482
19489
  renderDefaults: defaults
@@ -28436,7 +28443,7 @@ import {
28436
28443
  useCallback as useCallback142,
28437
28444
  useContext as useContext94,
28438
28445
  useEffect as useEffect84,
28439
- useMemo as useMemo142,
28446
+ useMemo as useMemo143,
28440
28447
  useReducer as useReducer2,
28441
28448
  useRef as useRef49,
28442
28449
  useState as useState93
@@ -28586,6 +28593,7 @@ var makeReadOnlyStudioRenderCommand = ({
28586
28593
  beepOnFinish,
28587
28594
  repro,
28588
28595
  metadata,
28596
+ sampleRate,
28589
28597
  envVariables,
28590
28598
  inputProps
28591
28599
  }) => {
@@ -28673,6 +28681,9 @@ var makeReadOnlyStudioRenderCommand = ({
28673
28681
  if (audioCodec !== defaultAudioCodec) {
28674
28682
  addFlagWithValue(flags, getRenderMediaFlag("audioCodec"), audioCodec);
28675
28683
  }
28684
+ addValueFlagsIfChanged(flags, [
28685
+ renderMediaValueFlag("sampleRate", sampleRate, renderDefaults.sampleRate)
28686
+ ]);
28676
28687
  }
28677
28688
  addTrueBooleanFlagsIfChanged(flags, [
28678
28689
  renderMediaBooleanFlag("disallowParallelEncoding", disallowParallelEncoding, false),
@@ -30345,7 +30356,7 @@ var RenderModalAdvanced = ({
30345
30356
 
30346
30357
  // src/components/RenderModal/RenderModalAudio.tsx
30347
30358
  import { BrowserSafeApis as BrowserSafeApis8 } from "@remotion/renderer/client";
30348
- import { useCallback as useCallback135 } from "react";
30359
+ import { useCallback as useCallback135, useMemo as useMemo138 } from "react";
30349
30360
 
30350
30361
  // src/components/RenderModal/EnforceAudioTrackSetting.tsx
30351
30362
  import { useCallback as useCallback132 } from "react";
@@ -30640,6 +30651,7 @@ var container56 = {
30640
30651
  flex: 1,
30641
30652
  overflowY: "auto"
30642
30653
  };
30654
+ var commonSampleRates = [8000, 16000, 22050, 44100, 48000, 96000];
30643
30655
  var RenderModalAudio = ({
30644
30656
  muted,
30645
30657
  setMuted,
@@ -30657,7 +30669,9 @@ var RenderModalAudio = ({
30657
30669
  setForSeamlessAacConcatenation,
30658
30670
  separateAudioTo,
30659
30671
  setSeparateAudioTo,
30660
- outName
30672
+ outName,
30673
+ sampleRate,
30674
+ setSampleRate
30661
30675
  }) => {
30662
30676
  const onShouldHaveTargetAudioBitrateChanged = useCallback135((e) => {
30663
30677
  setShouldHaveCustomTargetAudioBitrate(e.target.checked);
@@ -30668,6 +30682,20 @@ var RenderModalAudio = ({
30668
30682
  const onSeamlessAacConcatenationChanges = useCallback135((e) => {
30669
30683
  setForSeamlessAacConcatenation(e.target.checked);
30670
30684
  }, [setForSeamlessAacConcatenation]);
30685
+ const sampleRateOptions = useMemo138(() => {
30686
+ return commonSampleRates.map((rate) => ({
30687
+ label: rate === 48000 ? `${rate} Hz (default)` : `${rate} Hz`,
30688
+ onClick: () => setSampleRate(rate),
30689
+ key: String(rate),
30690
+ leftItem: sampleRate === rate ? /* @__PURE__ */ jsx266(Checkmark, {}) : null,
30691
+ id: String(rate),
30692
+ keyHint: null,
30693
+ quickSwitcherLabel: null,
30694
+ subMenu: null,
30695
+ type: "item",
30696
+ value: String(rate)
30697
+ }));
30698
+ }, [sampleRate, setSampleRate]);
30671
30699
  const audioCodecOptions = useCallback135((currentCodec) => {
30672
30700
  return BrowserSafeApis8.supportedAudioCodecs[currentCodec].map((audioCodecOption) => {
30673
30701
  return {
@@ -30808,6 +30836,31 @@ var RenderModalAudio = ({
30808
30836
  })
30809
30837
  })
30810
30838
  ]
30839
+ }) : null,
30840
+ renderMode !== "still" && !muted ? /* @__PURE__ */ jsxs136("div", {
30841
+ style: optionRow,
30842
+ children: [
30843
+ /* @__PURE__ */ jsxs136("div", {
30844
+ style: label6,
30845
+ children: [
30846
+ "Sample Rate ",
30847
+ /* @__PURE__ */ jsx266(Spacing, {
30848
+ x: 0.5
30849
+ }),
30850
+ /* @__PURE__ */ jsx266(OptionExplainerBubble, {
30851
+ id: "sampleRateOption"
30852
+ })
30853
+ ]
30854
+ }),
30855
+ /* @__PURE__ */ jsx266("div", {
30856
+ style: rightRow,
30857
+ children: /* @__PURE__ */ jsx266(Combobox, {
30858
+ values: sampleRateOptions,
30859
+ selectedId: String(sampleRate),
30860
+ title: "Sample Rate"
30861
+ })
30862
+ })
30863
+ ]
30811
30864
  }) : null
30812
30865
  ]
30813
30866
  });
@@ -30816,7 +30869,7 @@ var RenderModalAudio = ({
30816
30869
  // src/components/RenderModal/RenderModalBasic.tsx
30817
30870
  import { BrowserSafeApis as BrowserSafeApis9 } from "@remotion/renderer/client";
30818
30871
  import { NoReactAPIs as NoReactAPIs2 } from "@remotion/renderer/pure";
30819
- import { useCallback as useCallback138, useMemo as useMemo139 } from "react";
30872
+ import { useCallback as useCallback138, useMemo as useMemo140 } from "react";
30820
30873
 
30821
30874
  // src/helpers/prores-labels.ts
30822
30875
  var labelProResProfile = (profile) => {
@@ -30845,7 +30898,7 @@ var labelProResProfile = (profile) => {
30845
30898
  import { useCallback as useCallback137 } from "react";
30846
30899
 
30847
30900
  // src/components/RenderModal/MultiRangeSlider.tsx
30848
- import { useCallback as useCallback136, useMemo as useMemo138 } from "react";
30901
+ import { useCallback as useCallback136, useMemo as useMemo139 } from "react";
30849
30902
  import { jsx as jsx267, jsxs as jsxs137 } from "react/jsx-runtime";
30850
30903
  var container57 = {
30851
30904
  borderColor: "black",
@@ -30875,7 +30928,7 @@ var MultiRangeSlider = ({
30875
30928
  onRightThumbDrag
30876
30929
  }) => {
30877
30930
  const getPercent = useCallback136((value) => Math.round((value - min) / (max - min) * 100), [min, max]);
30878
- const rangeStyle = useMemo138(() => {
30931
+ const rangeStyle = useMemo139(() => {
30879
30932
  const minPercent = getPercent(start);
30880
30933
  const maxPercent = getPercent(end);
30881
30934
  return {
@@ -31082,7 +31135,7 @@ var RenderModalBasic = ({
31082
31135
  showOutputName
31083
31136
  }) => {
31084
31137
  const existence = useFileExistence(outName);
31085
- const videoCodecOptions = useMemo139(() => {
31138
+ const videoCodecOptions = useMemo140(() => {
31086
31139
  return BrowserSafeApis9.validCodecs.filter((c) => {
31087
31140
  return NoReactAPIs2.isAudioCodec(c) === (renderMode === "audio");
31088
31141
  }).map((codecOption) => {
@@ -31100,7 +31153,7 @@ var RenderModalBasic = ({
31100
31153
  };
31101
31154
  });
31102
31155
  }, [renderMode, setCodec, codec]);
31103
- const proResProfileOptions = useMemo139(() => {
31156
+ const proResProfileOptions = useMemo140(() => {
31104
31157
  return BrowserSafeApis9.proResProfileOptions.map((option) => {
31105
31158
  return {
31106
31159
  label: labelProResProfile(option),
@@ -31132,7 +31185,7 @@ var RenderModalBasic = ({
31132
31185
  const onValueChange = useCallback138((e) => {
31133
31186
  setOutName(e.target.value);
31134
31187
  }, [setOutName]);
31135
- const logLevelOptions = useMemo139(() => {
31188
+ const logLevelOptions = useMemo140(() => {
31136
31189
  return ["trace", "verbose", "info", "warn", "error"].map((level) => {
31137
31190
  return {
31138
31191
  label: humanReadableLogLevel(level),
@@ -31386,7 +31439,7 @@ var RenderModalGif = ({
31386
31439
 
31387
31440
  // src/components/RenderModal/RenderModalPicture.tsx
31388
31441
  import { BrowserSafeApis as BrowserSafeApis10 } from "@remotion/renderer/client";
31389
- import { useCallback as useCallback141, useMemo as useMemo141 } from "react";
31442
+ import { useCallback as useCallback141, useMemo as useMemo142 } from "react";
31390
31443
 
31391
31444
  // src/components/RenderModal/JpegQualitySetting.tsx
31392
31445
  import { jsx as jsx272 } from "react/jsx-runtime";
@@ -31405,7 +31458,7 @@ var JpegQualitySetting = ({ jpegQuality, setJpegQuality }) => {
31405
31458
  };
31406
31459
 
31407
31460
  // src/components/RenderModal/ScaleSetting.tsx
31408
- import { useMemo as useMemo140 } from "react";
31461
+ import { useMemo as useMemo141 } from "react";
31409
31462
  import { jsx as jsx273, jsxs as jsxs142, Fragment as Fragment46 } from "react/jsx-runtime";
31410
31463
  var MIN_SCALE = 0.1;
31411
31464
  var MAX_SCALE = 10;
@@ -31419,7 +31472,7 @@ var outputDimensionsStyle = {
31419
31472
  marginTop: -10
31420
31473
  };
31421
31474
  var ScaleSetting = ({ scale, setScale, compositionWidth, compositionHeight }) => {
31422
- const outputDimensions = useMemo140(() => {
31475
+ const outputDimensions = useMemo141(() => {
31423
31476
  const outputWidth = Math.round(compositionWidth * scale);
31424
31477
  const outputHeight = Math.round(compositionHeight * scale);
31425
31478
  return `${outputWidth}×${outputHeight}`;
@@ -31488,7 +31541,7 @@ var RenderModalPicture = ({
31488
31541
  compositionWidth,
31489
31542
  compositionHeight
31490
31543
  }) => {
31491
- const colorSpaceOptions = useMemo141(() => {
31544
+ const colorSpaceOptions = useMemo142(() => {
31492
31545
  return BrowserSafeApis10.validColorSpaces.map((option) => {
31493
31546
  return {
31494
31547
  label: option,
@@ -31504,7 +31557,7 @@ var RenderModalPicture = ({
31504
31557
  };
31505
31558
  });
31506
31559
  }, [colorSpace, setColorSpace]);
31507
- const qualityControlOptions = useMemo141(() => {
31560
+ const qualityControlOptions = useMemo142(() => {
31508
31561
  return qualityControlModes.map((option) => {
31509
31562
  return {
31510
31563
  label: option === "crf" ? "CRF" : "Bitrate",
@@ -31826,6 +31879,7 @@ var RenderModal = ({
31826
31879
  initialForSeamlessAacConcatenation,
31827
31880
  renderTypeOfLastRender,
31828
31881
  initialHardwareAcceleration,
31882
+ initialSampleRate,
31829
31883
  defaultMetadata,
31830
31884
  initialChromeMode,
31831
31885
  renderDefaults
@@ -31883,6 +31937,7 @@ var RenderModal = ({
31883
31937
  const [repro, setRepro] = useState93(() => initialRepro);
31884
31938
  const [enforceAudioTrackState, setEnforceAudioTrackState] = useState93(() => initialEnforceAudioTrack);
31885
31939
  const [forSeamlessAacConcatenation, setForSeamlessAacConcatenation] = useState93(() => initialForSeamlessAacConcatenation);
31940
+ const [sampleRate, setSampleRate] = useState93(() => initialSampleRate);
31886
31941
  const [renderMode, setRenderModeState] = useState93(initialRenderType);
31887
31942
  const [jpegQuality, setJpegQuality] = useState93(() => initialJpegQuality);
31888
31943
  const [scale, setScale] = useState93(() => initialScale);
@@ -31897,7 +31952,7 @@ var RenderModal = ({
31897
31952
  const [openGlOption, setOpenGlOption] = useState93(() => initialGl ?? "default");
31898
31953
  const [colorSpace, setColorSpace] = useState93(() => initialColorSpace);
31899
31954
  const [userAgent, setUserAgent] = useState93(() => initialUserAgent === null ? null : initialUserAgent.trim() === "" ? null : initialUserAgent);
31900
- const chromiumOptions = useMemo142(() => {
31955
+ const chromiumOptions = useMemo143(() => {
31901
31956
  return {
31902
31957
  headless,
31903
31958
  disableWebSecurity,
@@ -31939,19 +31994,19 @@ var RenderModal = ({
31939
31994
  const [offthreadVideoCacheSizeInBytes, setOffthreadVideoCacheSizeInBytes] = useState93(initialOffthreadVideoCacheSizeInBytes);
31940
31995
  const [mediaCacheSizeInBytes, setMediaCacheSizeInBytes] = useState93(initialMediaCacheSizeInBytes);
31941
31996
  const [offthreadVideoThreads, setOffthreadVideoThreads] = useState93(() => initialOffthreadVideoThreads);
31942
- const codec = useMemo142(() => {
31997
+ const codec = useMemo143(() => {
31943
31998
  if (renderMode === "audio") {
31944
31999
  return videoCodecForAudioTab;
31945
32000
  }
31946
32001
  return videoCodecForVideoTab;
31947
32002
  }, [videoCodecForAudioTab, renderMode, videoCodecForVideoTab]);
31948
- const numberOfGifLoops = useMemo142(() => {
32003
+ const numberOfGifLoops = useMemo143(() => {
31949
32004
  if (codec === "gif" && limitNumberOfGifLoops) {
31950
32005
  return numberOfGifLoopsSetting;
31951
32006
  }
31952
32007
  return null;
31953
32008
  }, [codec, limitNumberOfGifLoops, numberOfGifLoopsSetting]);
31954
- const audioBitrate = useMemo142(() => {
32009
+ const audioBitrate = useMemo143(() => {
31955
32010
  if (shouldHaveCustomTargetAudioBitrate) {
31956
32011
  return customTargetAudioBitrate;
31957
32012
  }
@@ -31959,10 +32014,10 @@ var RenderModal = ({
31959
32014
  }, [customTargetAudioBitrate, shouldHaveCustomTargetAudioBitrate]);
31960
32015
  const supportsCrf = BrowserSafeApis11.codecSupportsCrf(codec);
31961
32016
  const supportsVideoBitrate = BrowserSafeApis11.codecSupportsVideoBitrate(codec);
31962
- const supportsBothQualityControls = useMemo142(() => {
32017
+ const supportsBothQualityControls = useMemo143(() => {
31963
32018
  return supportsCrf && supportsVideoBitrate && hardwareAcceleration !== "if-possible" && hardwareAcceleration !== "required";
31964
32019
  }, [hardwareAcceleration, supportsCrf, supportsVideoBitrate]);
31965
- const qualityControlType = useMemo142(() => {
32020
+ const qualityControlType = useMemo143(() => {
31966
32021
  if (hardwareAcceleration === "if-possible" || hardwareAcceleration === "required") {
31967
32022
  if (supportsVideoBitrate) {
31968
32023
  return "bitrate";
@@ -31986,7 +32041,7 @@ var RenderModal = ({
31986
32041
  supportsCrf,
31987
32042
  supportsVideoBitrate
31988
32043
  ]);
31989
- const videoBitrate = useMemo142(() => {
32044
+ const videoBitrate = useMemo143(() => {
31990
32045
  if (qualityControlType === "bitrate") {
31991
32046
  return customTargetVideoBitrate;
31992
32047
  }
@@ -31998,13 +32053,13 @@ var RenderModal = ({
31998
32053
  return;
31999
32054
  dispatch(payload);
32000
32055
  }, []);
32001
- const muted = useMemo142(() => {
32056
+ const muted = useMemo143(() => {
32002
32057
  if (renderMode === "video") {
32003
32058
  return mutedState;
32004
32059
  }
32005
32060
  return false;
32006
32061
  }, [mutedState, renderMode]);
32007
- const enforceAudioTrack = useMemo142(() => {
32062
+ const enforceAudioTrack = useMemo143(() => {
32008
32063
  if (renderMode === "video") {
32009
32064
  return enforceAudioTrackState;
32010
32065
  }
@@ -32013,13 +32068,13 @@ var RenderModal = ({
32013
32068
  }
32014
32069
  return false;
32015
32070
  }, [enforceAudioTrackState, renderMode]);
32016
- const proResProfile = useMemo142(() => {
32071
+ const proResProfile = useMemo143(() => {
32017
32072
  if (renderMode === "video" && codec === "prores") {
32018
32073
  return proResProfileSetting;
32019
32074
  }
32020
32075
  return null;
32021
32076
  }, [codec, proResProfileSetting, renderMode]);
32022
- const x264Preset = useMemo142(() => {
32077
+ const x264Preset = useMemo143(() => {
32023
32078
  if (renderMode === "video" && codec === "h264") {
32024
32079
  return x264PresetSetting;
32025
32080
  }
@@ -32030,19 +32085,19 @@ var RenderModal = ({
32030
32085
  _setInputProps(updater);
32031
32086
  }, []);
32032
32087
  const [metadata] = useState93(() => defaultMetadata);
32033
- const endFrame = useMemo142(() => {
32088
+ const endFrame = useMemo143(() => {
32034
32089
  if (endFrameOrNull === null) {
32035
32090
  return resolvedComposition.durationInFrames - 1;
32036
32091
  }
32037
32092
  return Math.max(0, Math.min(resolvedComposition.durationInFrames - 1, endFrameOrNull));
32038
32093
  }, [resolvedComposition.durationInFrames, endFrameOrNull]);
32039
- const startFrame = useMemo142(() => {
32094
+ const startFrame = useMemo143(() => {
32040
32095
  if (startFrameOrNull === null) {
32041
32096
  return 0;
32042
32097
  }
32043
32098
  return Math.max(0, Math.min(endFrame - 1, startFrameOrNull));
32044
32099
  }, [endFrame, startFrameOrNull]);
32045
- const frame2 = useMemo142(() => {
32100
+ const frame2 = useMemo143(() => {
32046
32101
  const parsed = Math.floor(unclampedFrame);
32047
32102
  return Math.max(0, Math.min(resolvedComposition.durationInFrames - 1, parsed));
32048
32103
  }, [resolvedComposition.durationInFrames, unclampedFrame]);
@@ -32163,17 +32218,17 @@ var RenderModal = ({
32163
32218
  mediaCacheSizeInBytes
32164
32219
  ]);
32165
32220
  const [everyNthFrameSetting, setEveryNthFrameSetting] = useState93(() => initialEveryNthFrame);
32166
- const everyNthFrame = useMemo142(() => {
32221
+ const everyNthFrame = useMemo143(() => {
32167
32222
  if (codec === "gif") {
32168
32223
  return everyNthFrameSetting;
32169
32224
  }
32170
32225
  return 1;
32171
32226
  }, [codec, everyNthFrameSetting]);
32172
32227
  const audioCodec = deriveFinalAudioCodec(codec, userSelectedAudioCodec);
32173
- const availablePixelFormats = useMemo142(() => {
32228
+ const availablePixelFormats = useMemo143(() => {
32174
32229
  return BrowserSafeApis11.validPixelFormatsForCodec(codec);
32175
32230
  }, [codec]);
32176
- const pixelFormat = useMemo142(() => {
32231
+ const pixelFormat = useMemo143(() => {
32177
32232
  if (availablePixelFormats.includes(userPreferredPixelFormat)) {
32178
32233
  return userPreferredPixelFormat;
32179
32234
  }
@@ -32224,7 +32279,8 @@ var RenderModal = ({
32224
32279
  hardwareAcceleration,
32225
32280
  chromeMode,
32226
32281
  offthreadVideoThreads,
32227
- mediaCacheSizeInBytes
32282
+ mediaCacheSizeInBytes,
32283
+ sampleRate
32228
32284
  }).then(() => {
32229
32285
  dispatchIfMounted({ type: "succeed" });
32230
32286
  setSelectedModal(null);
@@ -32276,7 +32332,8 @@ var RenderModal = ({
32276
32332
  hardwareAcceleration,
32277
32333
  chromeMode,
32278
32334
  offthreadVideoThreads,
32279
- mediaCacheSizeInBytes
32335
+ mediaCacheSizeInBytes,
32336
+ sampleRate
32280
32337
  ]);
32281
32338
  const onClickSequence = useCallback142(() => {
32282
32339
  setSidebarCollapsedState({ left: null, right: "expanded" });
@@ -32344,7 +32401,7 @@ var RenderModal = ({
32344
32401
  isMounted.current = false;
32345
32402
  };
32346
32403
  }, []);
32347
- const imageFormatOptions = useMemo142(() => {
32404
+ const imageFormatOptions = useMemo143(() => {
32348
32405
  if (renderMode === "still") {
32349
32406
  return [
32350
32407
  {
@@ -32440,7 +32497,7 @@ var RenderModal = ({
32440
32497
  stillImageFormat,
32441
32498
  videoCodecForVideoTab
32442
32499
  ]);
32443
- const renderTabOptions = useMemo142(() => {
32500
+ const renderTabOptions = useMemo143(() => {
32444
32501
  if (resolvedComposition?.durationInFrames < 2) {
32445
32502
  return [
32446
32503
  {
@@ -32498,7 +32555,7 @@ var RenderModal = ({
32498
32555
  });
32499
32556
  const { tab, setTab, shownTabs } = useRenderModalSections(renderMode, codec);
32500
32557
  const { registerKeybinding } = useKeybinding();
32501
- const readOnlyRenderCommand = useMemo142(() => {
32558
+ const readOnlyRenderCommand = useMemo143(() => {
32502
32559
  if (!readOnlyStudio) {
32503
32560
  return null;
32504
32561
  }
@@ -32554,6 +32611,7 @@ var RenderModal = ({
32554
32611
  beepOnFinish,
32555
32612
  repro,
32556
32613
  metadata,
32614
+ sampleRate,
32557
32615
  envVariables: envVariablesArrayToObject(envVariables),
32558
32616
  inputProps
32559
32617
  });
@@ -32603,6 +32661,7 @@ var RenderModal = ({
32603
32661
  resolvedComposition.durationInFrames,
32604
32662
  resolvedComposition.id,
32605
32663
  scale,
32664
+ sampleRate,
32606
32665
  separateAudioTo,
32607
32666
  sequenceImageFormat,
32608
32667
  startFrame,
@@ -32669,7 +32728,7 @@ var RenderModal = ({
32669
32728
  enter.unregister();
32670
32729
  };
32671
32730
  }, [registerKeybinding, renderDisabled, trigger]);
32672
- const pixelFormatOptions = useMemo142(() => {
32731
+ const pixelFormatOptions = useMemo143(() => {
32673
32732
  return availablePixelFormats.map((option) => {
32674
32733
  return {
32675
32734
  label: option,
@@ -32879,7 +32938,9 @@ var RenderModal = ({
32879
32938
  setForSeamlessAacConcatenation,
32880
32939
  separateAudioTo,
32881
32940
  setSeparateAudioTo,
32882
- outName
32941
+ outName,
32942
+ sampleRate,
32943
+ setSampleRate
32883
32944
  }) : tab === "gif" ? /* @__PURE__ */ jsx275(RenderModalGif, {
32884
32945
  everyNthFrame,
32885
32946
  limitNumberOfGifLoops,
@@ -32966,7 +33027,7 @@ import {
32966
33027
  getDefaultVideoCodecForContainer,
32967
33028
  isAudioOnlyContainer
32968
33029
  } from "@remotion/web-renderer";
32969
- import { useCallback as useCallback146, useContext as useContext95, useMemo as useMemo147, useState as useState97 } from "react";
33030
+ import { useCallback as useCallback146, useContext as useContext95, useMemo as useMemo148, useState as useState97 } from "react";
32970
33031
 
32971
33032
  // src/icons/certificate.tsx
32972
33033
  import { jsx as jsx276 } from "react/jsx-runtime";
@@ -33128,7 +33189,7 @@ var WebRendererExperimentalBadge = () => {
33128
33189
  };
33129
33190
 
33130
33191
  // src/components/RenderModal/WebRenderModalAdvanced.tsx
33131
- import { useCallback as useCallback143, useMemo as useMemo143 } from "react";
33192
+ import { useCallback as useCallback143, useMemo as useMemo144 } from "react";
33132
33193
  import { jsx as jsx278, jsxs as jsxs146 } from "react/jsx-runtime";
33133
33194
  var tabContainer = {
33134
33195
  flex: 1
@@ -33166,7 +33227,7 @@ var WebRenderModalAdvanced = ({
33166
33227
  return cb;
33167
33228
  });
33168
33229
  }, [setMediaCacheSizeInBytes]);
33169
- const hardwareAccelerationOptions = useMemo143(() => {
33230
+ const hardwareAccelerationOptions = useMemo144(() => {
33170
33231
  return [
33171
33232
  {
33172
33233
  label: "No Preference",
@@ -33298,7 +33359,7 @@ var WebRenderModalAdvanced = ({
33298
33359
 
33299
33360
  // src/components/RenderModal/WebRenderModalAudio.tsx
33300
33361
  import { getSupportedAudioCodecsForContainer as getSupportedAudioCodecsForContainer2 } from "@remotion/web-renderer";
33301
- import { useMemo as useMemo144 } from "react";
33362
+ import { useMemo as useMemo145 } from "react";
33302
33363
 
33303
33364
  // src/components/RenderModal/quality-options.tsx
33304
33365
  import { jsx as jsx279 } from "react/jsx-runtime";
@@ -33371,8 +33432,8 @@ var WebRenderModalAudio = ({
33371
33432
  encodableCodecs,
33372
33433
  effectiveAudioCodec
33373
33434
  }) => {
33374
- const containerSupported = useMemo144(() => getSupportedAudioCodecsForContainer2(videoContainer), [videoContainer]);
33375
- const audioCodecOptions = useMemo144(() => {
33435
+ const containerSupported = useMemo145(() => getSupportedAudioCodecsForContainer2(videoContainer), [videoContainer]);
33436
+ const audioCodecOptions = useMemo145(() => {
33376
33437
  return containerSupported.map((codec) => {
33377
33438
  const isEncodable = encodableCodecs.includes(codec);
33378
33439
  return {
@@ -33389,7 +33450,7 @@ var WebRenderModalAudio = ({
33389
33450
  };
33390
33451
  });
33391
33452
  }, [containerSupported, encodableCodecs, audioCodec, setAudioCodec]);
33392
- const audioBitrateOptions = useMemo144(() => getQualityOptions(audioBitrate, setAudioBitrate), [audioBitrate, setAudioBitrate]);
33453
+ const audioBitrateOptions = useMemo145(() => getQualityOptions(audioBitrate, setAudioBitrate), [audioBitrate, setAudioBitrate]);
33393
33454
  const isAudioOnly = renderMode === "audio";
33394
33455
  const showAudioSettings = isAudioOnly || !muted;
33395
33456
  const showAudioCodecSetting = !isAudioOnly || containerSupported.length > 1;
@@ -33466,7 +33527,7 @@ var WebRenderModalAudio = ({
33466
33527
  };
33467
33528
 
33468
33529
  // src/components/RenderModal/WebRenderModalBasic.tsx
33469
- import { useMemo as useMemo145 } from "react";
33530
+ import { useMemo as useMemo146 } from "react";
33470
33531
  import { jsx as jsx281, jsxs as jsxs148, Fragment as Fragment49 } from "react/jsx-runtime";
33471
33532
  var tabContainer2 = {
33472
33533
  flex: 1
@@ -33520,7 +33581,7 @@ var WebRenderModalBasic = ({
33520
33581
  logLevel,
33521
33582
  setLogLevel
33522
33583
  }) => {
33523
- const imageFormatOptions = useMemo145(() => {
33584
+ const imageFormatOptions = useMemo146(() => {
33524
33585
  return [
33525
33586
  {
33526
33587
  label: "PNG",
@@ -33542,7 +33603,7 @@ var WebRenderModalBasic = ({
33542
33603
  }
33543
33604
  ];
33544
33605
  }, [imageFormat, setStillFormat]);
33545
- const logLevelOptions = useMemo145(() => {
33606
+ const logLevelOptions = useMemo146(() => {
33546
33607
  return ["trace", "verbose", "info", "warn", "error"].map((level) => {
33547
33608
  return {
33548
33609
  label: humanReadableLogLevel(level),
@@ -33557,7 +33618,7 @@ var WebRenderModalBasic = ({
33557
33618
  };
33558
33619
  });
33559
33620
  }, [logLevel, setLogLevel]);
33560
- const containerOptions = useMemo145(() => {
33621
+ const containerOptions = useMemo146(() => {
33561
33622
  const containers = renderMode === "audio" ? audioContainers : videoContainers;
33562
33623
  return containers.map((c) => ({
33563
33624
  label: containerLabels[c],
@@ -33571,7 +33632,7 @@ var WebRenderModalBasic = ({
33571
33632
  value: c
33572
33633
  }));
33573
33634
  }, [container62, setContainerFormat, renderMode]);
33574
- const codecOptions = useMemo145(() => {
33635
+ const codecOptions = useMemo146(() => {
33575
33636
  return encodableVideoCodecs.map((c) => ({
33576
33637
  label: codecLabels[c],
33577
33638
  onClick: () => setCodec(c),
@@ -34161,7 +34222,7 @@ var WebRenderModalLicense = ({
34161
34222
  };
34162
34223
 
34163
34224
  // src/components/RenderModal/WebRenderModalPicture.tsx
34164
- import { useCallback as useCallback145, useMemo as useMemo146 } from "react";
34225
+ import { useCallback as useCallback145, useMemo as useMemo147 } from "react";
34165
34226
  import { jsx as jsx285, jsxs as jsxs151, Fragment as Fragment51 } from "react/jsx-runtime";
34166
34227
  var tabContainer4 = {
34167
34228
  flex: 1
@@ -34179,7 +34240,7 @@ var WebRenderModalPicture = ({
34179
34240
  compositionWidth,
34180
34241
  compositionHeight
34181
34242
  }) => {
34182
- const qualityOptions = useMemo146(() => getQualityOptions(videoBitrate, setVideoBitrate), [videoBitrate, setVideoBitrate]);
34243
+ const qualityOptions = useMemo147(() => getQualityOptions(videoBitrate, setVideoBitrate), [videoBitrate, setVideoBitrate]);
34183
34244
  const onTransparentChanged = useCallback145((e) => {
34184
34245
  setTransparent(e.target.checked);
34185
34246
  }, [setTransparent]);
@@ -34352,25 +34413,25 @@ var WebRenderModal = ({
34352
34413
  const [allowHtmlInCanvas, setAllowHtmlInCanvas] = useState97(initialAllowHtmlInCanvas ?? false);
34353
34414
  const encodableAudioCodecs = useEncodableAudioCodecs(container62);
34354
34415
  const encodableVideoCodecs = useEncodableVideoCodecs(container62);
34355
- const effectiveAudioCodec = useMemo147(() => {
34416
+ const effectiveAudioCodec = useMemo148(() => {
34356
34417
  if (encodableAudioCodecs.includes(audioCodec)) {
34357
34418
  return audioCodec;
34358
34419
  }
34359
34420
  return encodableAudioCodecs[0] ?? audioCodec;
34360
34421
  }, [audioCodec, encodableAudioCodecs]);
34361
- const effectiveVideoCodec = useMemo147(() => {
34422
+ const effectiveVideoCodec = useMemo148(() => {
34362
34423
  if (encodableVideoCodecs.includes(codec)) {
34363
34424
  return codec;
34364
34425
  }
34365
34426
  return encodableVideoCodecs[0] ?? codec;
34366
34427
  }, [codec, encodableVideoCodecs]);
34367
- const finalEndFrame = useMemo147(() => {
34428
+ const finalEndFrame = useMemo148(() => {
34368
34429
  if (endFrame === null) {
34369
34430
  return resolvedComposition.durationInFrames - 1;
34370
34431
  }
34371
34432
  return Math.max(0, Math.min(resolvedComposition.durationInFrames - 1, endFrame));
34372
34433
  }, [endFrame, resolvedComposition.durationInFrames]);
34373
- const finalStartFrame = useMemo147(() => {
34434
+ const finalStartFrame = useMemo148(() => {
34374
34435
  if (startFrame === null) {
34375
34436
  return 0;
34376
34437
  }
@@ -34435,7 +34496,7 @@ var WebRenderModal = ({
34435
34496
  setTab((prev) => prev === "audio" ? "general" : prev);
34436
34497
  }
34437
34498
  }, [container62, imageFormat, updateOutNameExtension]);
34438
- const renderTabOptions = useMemo147(() => {
34499
+ const renderTabOptions = useMemo148(() => {
34439
34500
  const options = [
34440
34501
  {
34441
34502
  label: "Still",
@@ -34481,7 +34542,7 @@ var WebRenderModal = ({
34481
34542
  const onOutNameChange = useCallback146((e) => {
34482
34543
  setOutName(e.target.value);
34483
34544
  }, []);
34484
- const outnameValidation = useMemo147(() => {
34545
+ const outnameValidation = useMemo148(() => {
34485
34546
  if (renderMode === "still") {
34486
34547
  return validateOutnameForStill({
34487
34548
  outName,
@@ -34829,7 +34890,7 @@ var WebRenderModalWithLoader = (props) => {
34829
34890
  };
34830
34891
 
34831
34892
  // src/components/UpdateModal/UpdateModal.tsx
34832
- import { useCallback as useCallback149, useMemo as useMemo149 } from "react";
34893
+ import { useCallback as useCallback149, useMemo as useMemo150 } from "react";
34833
34894
 
34834
34895
  // src/components/CopyButton.tsx
34835
34896
  import { useCallback as useCallback147, useEffect as useEffect88, useState as useState98 } from "react";
@@ -34895,7 +34956,7 @@ var CopyButton = ({ textToCopy, label: label13, labelWhenCopied }) => {
34895
34956
  };
34896
34957
 
34897
34958
  // src/components/UpdateModal/OpenIssueButton.tsx
34898
- import { useCallback as useCallback148, useMemo as useMemo148, useState as useState99 } from "react";
34959
+ import { useCallback as useCallback148, useMemo as useMemo149, useState as useState99 } from "react";
34899
34960
  import { jsx as jsx288 } from "react/jsx-runtime";
34900
34961
  var svgStyle2 = {
34901
34962
  width: "11px",
@@ -34915,7 +34976,7 @@ var OpenIssueButton = ({ link: link5 }) => {
34915
34976
  const handleClick = useCallback148(() => {
34916
34977
  window.open(link5, "_blank");
34917
34978
  }, [link5]);
34918
- const svgFillColor = useMemo148(() => {
34979
+ const svgFillColor = useMemo149(() => {
34919
34980
  return hovered ? "white" : LIGHT_TEXT;
34920
34981
  }, [hovered]);
34921
34982
  const openInEditorSvg = /* @__PURE__ */ jsx288("svg", {
@@ -35012,7 +35073,7 @@ var commands = {
35012
35073
  unknown: "npx remotion upgrade"
35013
35074
  };
35014
35075
  var UpdateModal = ({ info, knownBugs }) => {
35015
- const hasKnownBugs = useMemo149(() => {
35076
+ const hasKnownBugs = useMemo150(() => {
35016
35077
  return knownBugs && knownBugs?.length > 0;
35017
35078
  }, [knownBugs]);
35018
35079
  const command = commands[info.packageManager];
@@ -35176,6 +35237,7 @@ var Modals = ({ readOnlyStudio }) => {
35176
35237
  renderTypeOfLastRender: modalContextType.renderTypeOfLastRender,
35177
35238
  defaultMetadata: modalContextType.defaulMetadata,
35178
35239
  initialHardwareAcceleration: modalContextType.initialHardwareAcceleration,
35240
+ initialSampleRate: modalContextType.initialSampleRate,
35179
35241
  initialChromeMode: modalContextType.initialChromeMode,
35180
35242
  renderDefaults: modalContextType.renderDefaults
35181
35243
  }) : null,
@@ -35220,7 +35282,7 @@ var Editor = ({ Root, readOnlyStudio }) => {
35220
35282
  const onMounted = useCallback150(() => {
35221
35283
  setCanvasMounted(true);
35222
35284
  }, []);
35223
- const value = useMemo150(() => {
35285
+ const value = useMemo151(() => {
35224
35286
  if (!size4) {
35225
35287
  return null;
35226
35288
  }
@@ -35229,15 +35291,15 @@ var Editor = ({ Root, readOnlyStudio }) => {
35229
35291
  canvasSize: size4
35230
35292
  };
35231
35293
  }, [size4]);
35232
- const MemoRoot = useMemo150(() => {
35294
+ const MemoRoot = useMemo151(() => {
35233
35295
  return React189.memo(Root);
35234
35296
  }, [Root]);
35235
35297
  const [renderError, setRenderError] = useState100(null);
35236
35298
  const clearError = useCallback150(() => {
35237
35299
  setRenderError(null);
35238
35300
  }, []);
35239
- const compositionRenderErrorContextValue = useMemo150(() => ({ setError: setRenderError, clearError }), [clearError]);
35240
- const renderErrorContextValue = useMemo150(() => ({ error: renderError }), [renderError]);
35301
+ const compositionRenderErrorContextValue = useMemo151(() => ({ setError: setRenderError, clearError }), [clearError]);
35302
+ const renderErrorContextValue = useMemo151(() => ({ error: renderError }), [renderError]);
35241
35303
  return /* @__PURE__ */ jsx292(HigherZIndex, {
35242
35304
  onEscape: noop,
35243
35305
  onOutsideClick: noop,
@@ -35288,7 +35350,7 @@ var Editor = ({ Root, readOnlyStudio }) => {
35288
35350
  import { PlayerInternals as PlayerInternals20 } from "@remotion/player";
35289
35351
 
35290
35352
  // src/state/preview-size.tsx
35291
- import { useCallback as useCallback151, useContext as useContext97, useMemo as useMemo151, useState as useState101 } from "react";
35353
+ import { useCallback as useCallback151, useContext as useContext97, useMemo as useMemo152, useState as useState101 } from "react";
35292
35354
  import { Internals as Internals66 } from "remotion";
35293
35355
  import { jsx as jsx293 } from "react/jsx-runtime";
35294
35356
  var key5 = "remotion.previewSize";
@@ -35324,7 +35386,7 @@ var PreviewSizeProvider = ({ children }) => {
35324
35386
  return newVal;
35325
35387
  });
35326
35388
  }, []);
35327
- const previewSizeCtx = useMemo151(() => {
35389
+ const previewSizeCtx = useMemo152(() => {
35328
35390
  return {
35329
35391
  size: editorZoomGestures ? size4 : {
35330
35392
  size: size4.size,
@@ -35345,7 +35407,7 @@ var PreviewSizeProvider = ({ children }) => {
35345
35407
  };
35346
35408
 
35347
35409
  // src/components/CheckerboardProvider.tsx
35348
- import { useCallback as useCallback152, useMemo as useMemo152, useState as useState102 } from "react";
35410
+ import { useCallback as useCallback152, useMemo as useMemo153, useState as useState102 } from "react";
35349
35411
  import { jsx as jsx294 } from "react/jsx-runtime";
35350
35412
  var CheckerboardProvider = ({ children }) => {
35351
35413
  const [checkerboard, setCheckerboardState] = useState102(() => loadCheckerboardOption());
@@ -35356,7 +35418,7 @@ var CheckerboardProvider = ({ children }) => {
35356
35418
  return newVal;
35357
35419
  });
35358
35420
  }, []);
35359
- const checkerboardCtx = useMemo152(() => {
35421
+ const checkerboardCtx = useMemo153(() => {
35360
35422
  return {
35361
35423
  checkerboard,
35362
35424
  setCheckerboard
@@ -35369,19 +35431,19 @@ var CheckerboardProvider = ({ children }) => {
35369
35431
  };
35370
35432
 
35371
35433
  // src/components/MediaVolumeProvider.tsx
35372
- import { useMemo as useMemo153, useState as useState103 } from "react";
35434
+ import { useMemo as useMemo154, useState as useState103 } from "react";
35373
35435
  import { Internals as Internals67 } from "remotion";
35374
35436
  import { jsx as jsx295 } from "react/jsx-runtime";
35375
35437
  var MediaVolumeProvider = ({ children }) => {
35376
35438
  const [mediaMuted, setMediaMuted] = useState103(() => loadMuteOption());
35377
35439
  const [mediaVolume, setMediaVolume] = useState103(1);
35378
- const mediaVolumeContextValue = useMemo153(() => {
35440
+ const mediaVolumeContextValue = useMemo154(() => {
35379
35441
  return {
35380
35442
  mediaMuted,
35381
35443
  mediaVolume
35382
35444
  };
35383
35445
  }, [mediaMuted, mediaVolume]);
35384
- const setMediaVolumeContextValue = useMemo153(() => {
35446
+ const setMediaVolumeContextValue = useMemo154(() => {
35385
35447
  return {
35386
35448
  setMediaMuted,
35387
35449
  setMediaVolume
@@ -35397,11 +35459,11 @@ var MediaVolumeProvider = ({ children }) => {
35397
35459
  };
35398
35460
 
35399
35461
  // src/components/ModalsProvider.tsx
35400
- import { useMemo as useMemo154, useState as useState104 } from "react";
35462
+ import { useMemo as useMemo155, useState as useState104 } from "react";
35401
35463
  import { jsx as jsx296 } from "react/jsx-runtime";
35402
35464
  var ModalsProvider = ({ children }) => {
35403
35465
  const [modalContextType, setModalContextType] = useState104(null);
35404
- const modalsContext = useMemo154(() => {
35466
+ const modalsContext = useMemo155(() => {
35405
35467
  return {
35406
35468
  selectedModal: modalContextType,
35407
35469
  setSelectedModal: setModalContextType
@@ -35414,7 +35476,7 @@ var ModalsProvider = ({ children }) => {
35414
35476
  };
35415
35477
 
35416
35478
  // src/components/SetTimelineInOutProvider.tsx
35417
- import { useEffect as useEffect89, useMemo as useMemo155, useState as useState105 } from "react";
35479
+ import { useEffect as useEffect89, useMemo as useMemo156, useState as useState105 } from "react";
35418
35480
 
35419
35481
  // src/state/marks.ts
35420
35482
  var localStorageKey5 = () => `remotion.editor.marksv2`;
@@ -35433,7 +35495,7 @@ var loadMarks = () => {
35433
35495
  import { jsx as jsx297 } from "react/jsx-runtime";
35434
35496
  var SetTimelineInOutProvider = ({ children }) => {
35435
35497
  const [inAndOutFrames, setInAndOutFrames] = useState105(() => loadMarks());
35436
- const setTimelineInOutContextValue = useMemo155(() => {
35498
+ const setTimelineInOutContextValue = useMemo156(() => {
35437
35499
  return {
35438
35500
  setInAndOutFrames
35439
35501
  };
@@ -35451,7 +35513,7 @@ var SetTimelineInOutProvider = ({ children }) => {
35451
35513
  };
35452
35514
 
35453
35515
  // src/components/ShowGuidesProvider.tsx
35454
- import { useCallback as useCallback153, useMemo as useMemo156, useRef as useRef52, useState as useState106 } from "react";
35516
+ import { useCallback as useCallback153, useMemo as useMemo157, useRef as useRef52, useState as useState106 } from "react";
35455
35517
  import { jsx as jsx298 } from "react/jsx-runtime";
35456
35518
  var ShowGuidesProvider = ({ children }) => {
35457
35519
  const [guidesList, setGuidesList] = useState106(() => loadGuidesList());
@@ -35467,7 +35529,7 @@ var ShowGuidesProvider = ({ children }) => {
35467
35529
  return newVal;
35468
35530
  });
35469
35531
  }, []);
35470
- const editorShowGuidesCtx = useMemo156(() => {
35532
+ const editorShowGuidesCtx = useMemo157(() => {
35471
35533
  return {
35472
35534
  editorShowGuides,
35473
35535
  setEditorShowGuides,
@@ -35494,7 +35556,7 @@ var ShowGuidesProvider = ({ children }) => {
35494
35556
  };
35495
35557
 
35496
35558
  // src/components/ShowRulersProvider.tsx
35497
- import { useCallback as useCallback154, useMemo as useMemo157, useState as useState107 } from "react";
35559
+ import { useCallback as useCallback154, useMemo as useMemo158, useState as useState107 } from "react";
35498
35560
  import { jsx as jsx299 } from "react/jsx-runtime";
35499
35561
  var ShowRulersProvider = ({ children }) => {
35500
35562
  const [editorShowRulers, setEditorShowRulersState] = useState107(() => loadEditorShowRulersOption());
@@ -35505,7 +35567,7 @@ var ShowRulersProvider = ({ children }) => {
35505
35567
  return newVal;
35506
35568
  });
35507
35569
  }, []);
35508
- const editorShowRulersCtx = useMemo157(() => {
35570
+ const editorShowRulersCtx = useMemo158(() => {
35509
35571
  return {
35510
35572
  editorShowRulers,
35511
35573
  setEditorShowRulers
@@ -35537,7 +35599,7 @@ var VisualControlsUndoSync = () => {
35537
35599
  };
35538
35600
 
35539
35601
  // src/components/ZoomGesturesProvider.tsx
35540
- import { useCallback as useCallback155, useMemo as useMemo158, useState as useState108 } from "react";
35602
+ import { useCallback as useCallback155, useMemo as useMemo159, useState as useState108 } from "react";
35541
35603
  import { jsx as jsx300 } from "react/jsx-runtime";
35542
35604
  var ZoomGesturesProvider = ({ children }) => {
35543
35605
  const [editorZoomGestures, setEditorZoomGesturesState] = useState108(() => loadEditorZoomGesturesOption());
@@ -35548,7 +35610,7 @@ var ZoomGesturesProvider = ({ children }) => {
35548
35610
  return newVal;
35549
35611
  });
35550
35612
  }, []);
35551
- const editorZoomGesturesCtx = useMemo158(() => {
35613
+ const editorZoomGesturesCtx = useMemo159(() => {
35552
35614
  return {
35553
35615
  editorZoomGestures,
35554
35616
  setEditorZoomGestures
@@ -35685,7 +35747,7 @@ var ServerDisconnected = () => {
35685
35747
  };
35686
35748
 
35687
35749
  // src/FastRefreshProvider.tsx
35688
- import { useCallback as useCallback156, useEffect as useEffect91, useMemo as useMemo159, useState as useState109 } from "react";
35750
+ import { useCallback as useCallback156, useEffect as useEffect91, useMemo as useMemo160, useState as useState109 } from "react";
35689
35751
  import { jsx as jsx303 } from "react/jsx-runtime";
35690
35752
  var FastRefreshProvider = ({ children }) => {
35691
35753
  const [fastRefreshes, setFastRefreshes] = useState109(0);
@@ -35704,7 +35766,7 @@ var FastRefreshProvider = ({ children }) => {
35704
35766
  }
35705
35767
  }
35706
35768
  }, []);
35707
- const value = useMemo159(() => ({ fastRefreshes, manualRefreshes, increaseManualRefreshes }), [fastRefreshes, manualRefreshes, increaseManualRefreshes]);
35769
+ const value = useMemo160(() => ({ fastRefreshes, manualRefreshes, increaseManualRefreshes }), [fastRefreshes, manualRefreshes, increaseManualRefreshes]);
35708
35770
  return /* @__PURE__ */ jsx303(FastRefreshContext.Provider, {
35709
35771
  value,
35710
35772
  children
@@ -35879,7 +35941,7 @@ import {
35879
35941
  useContext as useContext100,
35880
35942
  useEffect as useEffect92,
35881
35943
  useImperativeHandle as useImperativeHandle15,
35882
- useMemo as useMemo160,
35944
+ useMemo as useMemo161,
35883
35945
  useState as useState110
35884
35946
  } from "react";
35885
35947
  import { getInputProps as getInputProps2, Internals as Internals69 } from "remotion";
@@ -35889,20 +35951,20 @@ var ResolveCompositionConfigInStudio = ({ children }) => {
35889
35951
  const { compositions, canvasContent, currentCompositionMetadata } = useContext100(Internals69.CompositionManager);
35890
35952
  const { fastRefreshes, manualRefreshes } = useContext100(FastRefreshContext);
35891
35953
  if (manualRefreshes) {}
35892
- const selectedComposition = useMemo160(() => {
35954
+ const selectedComposition = useMemo161(() => {
35893
35955
  return compositions.find((c) => canvasContent && canvasContent.type === "composition" && canvasContent.compositionId === c.id);
35894
35956
  }, [canvasContent, compositions]);
35895
35957
  const renderModalComposition = compositions.find((c) => c.id === currentRenderModalComposition);
35896
35958
  const { props: allEditorProps } = useContext100(Internals69.EditorPropsContext);
35897
35959
  const env = Internals69.getRemotionEnvironment();
35898
- const inputProps = useMemo160(() => {
35960
+ const inputProps = useMemo161(() => {
35899
35961
  return typeof window === "undefined" || env.isPlayer ? {} : getInputProps2() ?? {};
35900
35962
  }, [env.isPlayer]);
35901
35963
  const [resolvedConfigs, setResolvedConfigs] = useState110({});
35902
- const selectedEditorProps = useMemo160(() => {
35964
+ const selectedEditorProps = useMemo161(() => {
35903
35965
  return selectedComposition ? allEditorProps[selectedComposition.id] ?? {} : {};
35904
35966
  }, [allEditorProps, selectedComposition]);
35905
- const renderModalProps = useMemo160(() => {
35967
+ const renderModalProps = useMemo161(() => {
35906
35968
  return renderModalComposition ? allEditorProps[renderModalComposition.id] ?? {} : {};
35907
35969
  }, [allEditorProps, renderModalComposition]);
35908
35970
  const hasResolution = Boolean(currentCompositionMetadata);
@@ -36039,13 +36101,13 @@ var ResolveCompositionConfigInStudio = ({ children }) => {
36039
36101
  inputProps
36040
36102
  ]);
36041
36103
  const isTheSame = selectedComposition?.id === renderModalComposition?.id;
36042
- const currentDefaultProps = useMemo160(() => {
36104
+ const currentDefaultProps = useMemo161(() => {
36043
36105
  return {
36044
36106
  ...selectedComposition?.defaultProps ?? {},
36045
36107
  ...selectedEditorProps ?? {}
36046
36108
  };
36047
36109
  }, [selectedComposition?.defaultProps, selectedEditorProps]);
36048
- const originalProps = useMemo160(() => {
36110
+ const originalProps = useMemo161(() => {
36049
36111
  return {
36050
36112
  ...currentDefaultProps,
36051
36113
  ...inputProps ?? {}
@@ -36114,7 +36176,7 @@ var ResolveCompositionConfigInStudio = ({ children }) => {
36114
36176
  renderModalComposition,
36115
36177
  renderModalProps
36116
36178
  ]);
36117
- const resolvedConfigsIncludingStaticOnes = useMemo160(() => {
36179
+ const resolvedConfigsIncludingStaticOnes = useMemo161(() => {
36118
36180
  const staticComps = compositions.filter((c) => {
36119
36181
  return c.calculateMetadata === null;
36120
36182
  });