@remotion/renderer 4.0.425 → 4.0.427

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.
Files changed (49) hide show
  1. package/dist/client.d.ts +289 -0
  2. package/dist/esm/client.mjs +1426 -619
  3. package/dist/esm/index.mjs +12 -7
  4. package/dist/index.d.ts +3 -1
  5. package/dist/options/browser.d.ts +19 -0
  6. package/dist/options/browser.js +30 -0
  7. package/dist/options/bundle-cache.d.ts +16 -0
  8. package/dist/options/bundle-cache.js +34 -0
  9. package/dist/options/concurrency.js +22 -1
  10. package/dist/options/config.d.ts +19 -0
  11. package/dist/options/config.js +29 -0
  12. package/dist/options/env-file.d.ts +19 -0
  13. package/dist/options/env-file.js +38 -0
  14. package/dist/options/experimental-client-side-rendering.js +2 -3
  15. package/dist/options/frames.d.ts +17 -0
  16. package/dist/options/frames.js +83 -0
  17. package/dist/options/image-sequence.d.ts +16 -0
  18. package/dist/options/image-sequence.js +30 -0
  19. package/dist/options/index.d.ts +289 -0
  20. package/dist/options/index.js +32 -0
  21. package/dist/options/no-open.d.ts +19 -0
  22. package/dist/options/no-open.js +30 -0
  23. package/dist/options/out-dir.d.ts +19 -0
  24. package/dist/options/out-dir.js +41 -0
  25. package/dist/options/package-manager.d.ts +19 -0
  26. package/dist/options/package-manager.js +47 -0
  27. package/dist/options/port.d.ts +19 -0
  28. package/dist/options/port.js +36 -0
  29. package/dist/options/props.d.ts +19 -0
  30. package/dist/options/props.js +33 -0
  31. package/dist/options/rspack.d.ts +16 -0
  32. package/dist/options/rspack.js +31 -0
  33. package/dist/options/runs.d.ts +16 -0
  34. package/dist/options/runs.js +37 -0
  35. package/dist/options/still-frame.d.ts +19 -0
  36. package/dist/options/still-frame.js +51 -0
  37. package/dist/options/version-flag.d.ts +19 -0
  38. package/dist/options/version-flag.js +29 -0
  39. package/dist/options/webpack-poll.d.ts +19 -0
  40. package/dist/options/webpack-poll.js +43 -0
  41. package/dist/prespawn-ffmpeg.d.ts +1 -0
  42. package/dist/prespawn-ffmpeg.js +4 -3
  43. package/dist/render-frames.d.ts +43 -3
  44. package/dist/render-media.d.ts +4 -2
  45. package/dist/render-media.js +4 -2
  46. package/dist/render-still.d.ts +1 -0
  47. package/dist/render-still.js +5 -1
  48. package/dist/select-composition.d.ts +25 -3
  49. package/package.json +13 -13
@@ -1,5 +1,5 @@
1
1
  // src/client.ts
2
- import { NoReactInternals as NoReactInternals3 } from "remotion/no-react";
2
+ import { NoReactInternals as NoReactInternals4 } from "remotion/no-react";
3
3
 
4
4
  // src/browser/TimeoutSettings.ts
5
5
  var DEFAULT_TIMEOUT = 30000;
@@ -699,24 +699,61 @@ var binariesDirectoryOption = {
699
699
  id: cliFlag7
700
700
  };
701
701
 
702
+ // src/options/browser.tsx
703
+ import { jsx as jsx6, jsxs as jsxs4, Fragment as Fragment6 } from "react/jsx-runtime";
704
+ var cliFlag8 = "browser";
705
+ var browserOption = {
706
+ name: "Browser",
707
+ cliFlag: cliFlag8,
708
+ description: () => /* @__PURE__ */ jsxs4(Fragment6, {
709
+ children: [
710
+ "Specify the browser which should be used for opening a tab. The default browser will be used by default. Pass an absolute path or",
711
+ " ",
712
+ /* @__PURE__ */ jsx6("code", {
713
+ children: '"chrome"'
714
+ }),
715
+ " to use Chrome. If Chrome is selected as the browser and you are on macOS, Remotion will try to reuse an existing tab."
716
+ ]
717
+ }),
718
+ ssrName: null,
719
+ docLink: "https://www.remotion.dev/docs/cli/studio#--browser",
720
+ getValue: ({ commandLine }) => {
721
+ if (commandLine[cliFlag8] !== undefined) {
722
+ return {
723
+ source: "cli",
724
+ value: commandLine[cliFlag8]
725
+ };
726
+ }
727
+ return {
728
+ source: "default",
729
+ value: null
730
+ };
731
+ },
732
+ setConfig: () => {
733
+ throw new Error("setBrowser is not supported. Pass --browser via the CLI instead.");
734
+ },
735
+ type: "",
736
+ id: cliFlag8
737
+ };
738
+
702
739
  // src/options/browser-executable.tsx
703
- import { jsx as jsx6, Fragment as Fragment6 } from "react/jsx-runtime";
740
+ import { jsx as jsx7, Fragment as Fragment7 } from "react/jsx-runtime";
704
741
  var currentBrowserExecutablePath = null;
705
- var cliFlag8 = "browser-executable";
742
+ var cliFlag9 = "browser-executable";
706
743
  var browserExecutableOption = {
707
744
  name: "Browser executable",
708
- cliFlag: cliFlag8,
709
- description: () => /* @__PURE__ */ jsx6(Fragment6, {
745
+ cliFlag: cliFlag9,
746
+ description: () => /* @__PURE__ */ jsx7(Fragment7, {
710
747
  children: "Set a custom Chrome or Chromium executable path. By default Remotion will try to find an existing version of Chrome on your system and if not found, it will download one. This flag is useful if you don't have Chrome installed in a standard location and you want to prevent downloading an additional browser or need support for the H264 codec."
711
748
  }),
712
749
  ssrName: "browserExecutable",
713
750
  docLink: "https://www.remotion.dev/docs/config#setbrowserexecutable",
714
751
  type: null,
715
752
  getValue: ({ commandLine }) => {
716
- if (commandLine[cliFlag8] !== undefined) {
753
+ if (commandLine[cliFlag9] !== undefined) {
717
754
  return {
718
755
  source: "cli",
719
- value: commandLine[cliFlag8]
756
+ value: commandLine[cliFlag9]
720
757
  };
721
758
  }
722
759
  if (currentBrowserExecutablePath !== null) {
@@ -733,43 +770,84 @@ var browserExecutableOption = {
733
770
  setConfig: (value) => {
734
771
  currentBrowserExecutablePath = value;
735
772
  },
736
- id: cliFlag8
773
+ id: cliFlag9
774
+ };
775
+
776
+ // src/options/bundle-cache.tsx
777
+ import { jsx as jsx8, jsxs as jsxs5, Fragment as Fragment8 } from "react/jsx-runtime";
778
+ var cliFlag10 = "bundle-cache";
779
+ var cachingEnabled = true;
780
+ var bundleCacheOption = {
781
+ name: "Webpack Bundle Caching",
782
+ cliFlag: cliFlag10,
783
+ description: () => /* @__PURE__ */ jsxs5(Fragment8, {
784
+ children: [
785
+ "Enable or disable Webpack caching. This flag is enabled by default, use",
786
+ " ",
787
+ /* @__PURE__ */ jsx8("code", {
788
+ children: "--bundle-cache=false"
789
+ }),
790
+ " to disable caching."
791
+ ]
792
+ }),
793
+ ssrName: null,
794
+ docLink: "https://www.remotion.dev/docs/config#setcachingenabled",
795
+ getValue: ({ commandLine }) => {
796
+ if (commandLine[cliFlag10] !== undefined && commandLine[cliFlag10] !== null) {
797
+ return {
798
+ source: "cli",
799
+ value: Boolean(commandLine[cliFlag10])
800
+ };
801
+ }
802
+ return {
803
+ source: cachingEnabled ? "default" : "config",
804
+ value: cachingEnabled
805
+ };
806
+ },
807
+ setConfig: (value) => {
808
+ if (typeof value !== "boolean") {
809
+ throw new TypeError(`Value for "${cliFlag10}" must be a boolean, but got ${typeof value}.`);
810
+ }
811
+ cachingEnabled = value;
812
+ },
813
+ type: true,
814
+ id: cliFlag10
737
815
  };
738
816
 
739
817
  // src/options/chrome-mode.tsx
740
- import { jsx as jsx7, jsxs as jsxs4, Fragment as Fragment7 } from "react/jsx-runtime";
818
+ import { jsx as jsx9, jsxs as jsxs6, Fragment as Fragment9 } from "react/jsx-runtime";
741
819
  var validChromeModeOptions = [
742
820
  "headless-shell",
743
821
  "chrome-for-testing"
744
822
  ];
745
- var cliFlag9 = "chrome-mode";
823
+ var cliFlag11 = "chrome-mode";
746
824
  var configSelection = null;
747
825
  var chromeModeOption = {
748
- cliFlag: cliFlag9,
826
+ cliFlag: cliFlag11,
749
827
  name: "Chrome Mode",
750
828
  ssrName: "chromeMode",
751
829
  description: () => {
752
- return /* @__PURE__ */ jsxs4(Fragment7, {
830
+ return /* @__PURE__ */ jsxs6(Fragment9, {
753
831
  children: [
754
832
  "One of",
755
833
  " ",
756
- validChromeModeOptions.map((option, i) => /* @__PURE__ */ jsxs4("code", {
834
+ validChromeModeOptions.map((option, i) => /* @__PURE__ */ jsxs6("code", {
757
835
  children: [
758
836
  option,
759
837
  i === validChromeModeOptions.length - 1 ? "" : ", "
760
838
  ]
761
839
  }, option)),
762
840
  ". Default ",
763
- /* @__PURE__ */ jsx7("code", {
841
+ /* @__PURE__ */ jsx9("code", {
764
842
  children: "headless-shell"
765
843
  }),
766
844
  ".",
767
845
  " ",
768
- /* @__PURE__ */ jsxs4("a", {
846
+ /* @__PURE__ */ jsxs6("a", {
769
847
  href: "https://remotion.dev/docs/miscellaneous/chrome-headless-shell",
770
848
  children: [
771
849
  "Use ",
772
- /* @__PURE__ */ jsx7("code", {
850
+ /* @__PURE__ */ jsx9("code", {
773
851
  children: "chrome-for-testing"
774
852
  }),
775
853
  " to take advantage of GPU drivers on Linux."
@@ -780,12 +858,12 @@ var chromeModeOption = {
780
858
  },
781
859
  docLink: "https://www.remotion.dev/chrome-for-testing",
782
860
  getValue: ({ commandLine }) => {
783
- if (commandLine[cliFlag9]) {
784
- if (!validChromeModeOptions.includes(commandLine[cliFlag9])) {
785
- throw new Error(`Invalid \`--${cliFlag9}\` value passed. Accepted values: ${validChromeModeOptions.map((l) => `'${l}'`).join(", ")}.`);
861
+ if (commandLine[cliFlag11]) {
862
+ if (!validChromeModeOptions.includes(commandLine[cliFlag11])) {
863
+ throw new Error(`Invalid \`--${cliFlag11}\` value passed. Accepted values: ${validChromeModeOptions.map((l) => `'${l}'`).join(", ")}.`);
786
864
  }
787
865
  return {
788
- value: commandLine[cliFlag9],
866
+ value: commandLine[cliFlag11],
789
867
  source: "cli"
790
868
  };
791
869
  }
@@ -804,26 +882,26 @@ var chromeModeOption = {
804
882
  configSelection = newChromeMode;
805
883
  },
806
884
  type: "headless-shell",
807
- id: cliFlag9
885
+ id: cliFlag11
808
886
  };
809
887
 
810
888
  // src/options/color-space.tsx
811
889
  import { NoReactInternals } from "remotion/no-react";
812
- import { jsx as jsx8, jsxs as jsxs5, Fragment as Fragment8 } from "react/jsx-runtime";
890
+ import { jsx as jsx10, jsxs as jsxs7, Fragment as Fragment10 } from "react/jsx-runtime";
813
891
  var validV4ColorSpaces = ["default", "bt601", "bt709", "bt2020-ncl"];
814
892
  var validV5ColorSpaces = ["bt601", "bt709", "bt2020-ncl"];
815
893
  var validColorSpaces = NoReactInternals.ENABLE_V5_BREAKING_CHANGES ? validV5ColorSpaces : validV4ColorSpaces;
816
894
  var DEFAULT_COLOR_SPACE = NoReactInternals.ENABLE_V5_BREAKING_CHANGES ? "bt709" : "default";
817
895
  var colorSpace = DEFAULT_COLOR_SPACE;
818
- var cliFlag10 = "color-space";
896
+ var cliFlag12 = "color-space";
819
897
  var colorSpaceOption = {
820
898
  name: "Color space",
821
899
  cliFlag: "color-space",
822
- description: () => /* @__PURE__ */ jsxs5(Fragment8, {
900
+ description: () => /* @__PURE__ */ jsxs7(Fragment10, {
823
901
  children: [
824
902
  "Color space to use for the video. Acceptable values:",
825
903
  " ",
826
- /* @__PURE__ */ jsxs5("code", {
904
+ /* @__PURE__ */ jsxs7("code", {
827
905
  children: [
828
906
  '"',
829
907
  DEFAULT_COLOR_SPACE,
@@ -832,16 +910,16 @@ var colorSpaceOption = {
832
910
  }),
833
911
  "(default since 5.0),",
834
912
  " ",
835
- NoReactInternals.ENABLE_V5_BREAKING_CHANGES ? /* @__PURE__ */ jsxs5("code", {
913
+ NoReactInternals.ENABLE_V5_BREAKING_CHANGES ? /* @__PURE__ */ jsxs7("code", {
836
914
  children: [
837
915
  '"',
838
916
  "bt601",
839
917
  '"',
840
918
  ", "
841
919
  ]
842
- }) : /* @__PURE__ */ jsxs5(Fragment8, {
920
+ }) : /* @__PURE__ */ jsxs7(Fragment10, {
843
921
  children: [
844
- /* @__PURE__ */ jsxs5("code", {
922
+ /* @__PURE__ */ jsxs7("code", {
845
923
  children: [
846
924
  '"',
847
925
  "bt601",
@@ -851,7 +929,7 @@ var colorSpaceOption = {
851
929
  " ",
852
930
  "(same as",
853
931
  " ",
854
- /* @__PURE__ */ jsxs5("code", {
932
+ /* @__PURE__ */ jsxs7("code", {
855
933
  children: [
856
934
  '"',
857
935
  "default",
@@ -860,7 +938,7 @@ var colorSpaceOption = {
860
938
  }),
861
939
  ", since v4.0.424),",
862
940
  " ",
863
- /* @__PURE__ */ jsxs5("code", {
941
+ /* @__PURE__ */ jsxs7("code", {
864
942
  children: [
865
943
  '"',
866
944
  "bt709",
@@ -872,7 +950,7 @@ var colorSpaceOption = {
872
950
  " "
873
951
  ]
874
952
  }),
875
- /* @__PURE__ */ jsxs5("code", {
953
+ /* @__PURE__ */ jsxs7("code", {
876
954
  children: [
877
955
  '"',
878
956
  "bt2020-ncl",
@@ -882,7 +960,7 @@ var colorSpaceOption = {
882
960
  " ",
883
961
  "(since v4.0.88),",
884
962
  " ",
885
- /* @__PURE__ */ jsxs5("code", {
963
+ /* @__PURE__ */ jsxs7("code", {
886
964
  children: [
887
965
  '"',
888
966
  "bt2020-cl",
@@ -891,10 +969,10 @@ var colorSpaceOption = {
891
969
  }),
892
970
  " ",
893
971
  "(since v4.0.88), .",
894
- /* @__PURE__ */ jsx8("br", {}),
972
+ /* @__PURE__ */ jsx10("br", {}),
895
973
  "For best color accuracy, it is recommended to also use",
896
974
  " ",
897
- /* @__PURE__ */ jsxs5("code", {
975
+ /* @__PURE__ */ jsxs7("code", {
898
976
  children: [
899
977
  '"',
900
978
  "png",
@@ -903,7 +981,7 @@ var colorSpaceOption = {
903
981
  }),
904
982
  " ",
905
983
  "as the image format to have accurate color transformations throughout.",
906
- /* @__PURE__ */ jsx8("br", {}),
984
+ /* @__PURE__ */ jsx10("br", {}),
907
985
  "Only since v4.0.83, colorspace conversion is actually performed, previously it would only tag the metadata of the video."
908
986
  ]
909
987
  }),
@@ -911,10 +989,10 @@ var colorSpaceOption = {
911
989
  ssrName: "colorSpace",
912
990
  type: DEFAULT_COLOR_SPACE,
913
991
  getValue: ({ commandLine }) => {
914
- if (commandLine[cliFlag10] !== undefined) {
992
+ if (commandLine[cliFlag12] !== undefined) {
915
993
  return {
916
994
  source: "cli",
917
- value: commandLine[cliFlag10]
995
+ value: commandLine[cliFlag12]
918
996
  };
919
997
  }
920
998
  if (colorSpace !== DEFAULT_COLOR_SPACE) {
@@ -931,24 +1009,39 @@ var colorSpaceOption = {
931
1009
  setConfig: (value) => {
932
1010
  colorSpace = value ?? DEFAULT_COLOR_SPACE;
933
1011
  },
934
- id: cliFlag10
1012
+ id: cliFlag12
935
1013
  };
936
1014
 
937
1015
  // src/options/concurrency.tsx
938
- import { jsx as jsx9, jsxs as jsxs6, Fragment as Fragment9 } from "react/jsx-runtime";
1016
+ import { jsx as jsx11, jsxs as jsxs8, Fragment as Fragment11 } from "react/jsx-runtime";
939
1017
  var currentConcurrency = null;
940
- var cliFlag11 = "concurrency";
1018
+ var cliFlag13 = "concurrency";
1019
+ var validateConcurrencyValue = (value, setting) => {
1020
+ if (typeof value === "undefined" || value === null) {
1021
+ return;
1022
+ }
1023
+ if (typeof value !== "number" && typeof value !== "string") {
1024
+ throw new Error(setting + " must a number or a string but is " + value);
1025
+ }
1026
+ if (typeof value === "number") {
1027
+ if (value % 1 !== 0) {
1028
+ throw new Error(setting + " must be an integer, but is " + value);
1029
+ }
1030
+ } else if (!/^\d+(\.\d+)?%$/.test(value)) {
1031
+ throw new Error(`${setting} must be a number or percentage, but is ${JSON.stringify(value)}`);
1032
+ }
1033
+ };
941
1034
  var concurrencyOption = {
942
1035
  name: "Concurrency",
943
- cliFlag: cliFlag11,
944
- description: () => /* @__PURE__ */ jsxs6(Fragment9, {
1036
+ cliFlag: cliFlag13,
1037
+ description: () => /* @__PURE__ */ jsxs8(Fragment11, {
945
1038
  children: [
946
1039
  "How many CPU threads to use. Minimum 1. The maximum is the amount of threads you have (In Node.JS ",
947
- /* @__PURE__ */ jsx9("code", {
1040
+ /* @__PURE__ */ jsx11("code", {
948
1041
  children: "os.cpus().length"
949
1042
  }),
950
1043
  "). You can also provide a percentage value (e.g. ",
951
- /* @__PURE__ */ jsx9("code", {
1044
+ /* @__PURE__ */ jsx11("code", {
952
1045
  children: "50%"
953
1046
  }),
954
1047
  ")."
@@ -958,10 +1051,12 @@ var concurrencyOption = {
958
1051
  docLink: "https://www.remotion.dev/docs/config#setconcurrency",
959
1052
  type: null,
960
1053
  getValue: ({ commandLine }) => {
961
- if (commandLine[cliFlag11] !== undefined) {
1054
+ if (commandLine[cliFlag13] !== undefined) {
1055
+ const value = commandLine[cliFlag13];
1056
+ validateConcurrencyValue(value, "concurrency");
962
1057
  return {
963
1058
  source: "cli",
964
- value: commandLine[cliFlag11]
1059
+ value
965
1060
  };
966
1061
  }
967
1062
  if (currentConcurrency !== null) {
@@ -976,35 +1071,66 @@ var concurrencyOption = {
976
1071
  };
977
1072
  },
978
1073
  setConfig: (value) => {
1074
+ validateConcurrencyValue(value, "Config.setConcurrency");
979
1075
  currentConcurrency = value;
980
1076
  },
981
- id: cliFlag11
1077
+ id: cliFlag13
1078
+ };
1079
+
1080
+ // src/options/config.tsx
1081
+ import { jsx as jsx12, Fragment as Fragment12 } from "react/jsx-runtime";
1082
+ var cliFlag14 = "config";
1083
+ var configOption = {
1084
+ name: "Config file",
1085
+ cliFlag: cliFlag14,
1086
+ description: () => /* @__PURE__ */ jsx12(Fragment12, {
1087
+ children: "Specify a location for the Remotion config file."
1088
+ }),
1089
+ ssrName: null,
1090
+ docLink: "https://www.remotion.dev/docs/config",
1091
+ getValue: ({ commandLine }) => {
1092
+ if (commandLine[cliFlag14] !== undefined) {
1093
+ return {
1094
+ source: "cli",
1095
+ value: commandLine[cliFlag14]
1096
+ };
1097
+ }
1098
+ return {
1099
+ source: "default",
1100
+ value: null
1101
+ };
1102
+ },
1103
+ setConfig: () => {
1104
+ throw new Error("setConfig is not supported. Pass --config via the CLI instead.");
1105
+ },
1106
+ type: "",
1107
+ id: cliFlag14
982
1108
  };
983
1109
 
984
1110
  // src/options/crf.tsx
985
- import { jsx as jsx10, Fragment as Fragment10 } from "react/jsx-runtime";
1111
+ import { jsx as jsx13, Fragment as Fragment13 } from "react/jsx-runtime";
986
1112
  var currentCrf;
987
1113
  var validateCrf = (newCrf) => {
988
1114
  if (typeof newCrf !== "number" && newCrf !== undefined) {
989
1115
  throw new TypeError("The CRF must be a number or undefined.");
990
1116
  }
991
1117
  };
992
- var cliFlag12 = "crf";
1118
+ var cliFlag15 = "crf";
993
1119
  var crfOption = {
994
1120
  name: "CRF",
995
- cliFlag: cliFlag12,
996
- description: () => /* @__PURE__ */ jsx10(Fragment10, {
1121
+ cliFlag: cliFlag15,
1122
+ description: () => /* @__PURE__ */ jsx13(Fragment13, {
997
1123
  children: "No matter which codec you end up using, there's always a tradeoff between file size and video quality. You can control it by setting the CRF (Constant Rate Factor). The lower the number, the better the quality, the higher the number, the smaller the file is – of course at the cost of quality."
998
1124
  }),
999
1125
  ssrName: "crf",
1000
1126
  docLink: "https://www.remotion.dev/docs/encoding/#controlling-quality-using-the-crf-setting",
1001
1127
  type: 0,
1002
1128
  getValue: ({ commandLine }) => {
1003
- if (commandLine[cliFlag12] !== undefined) {
1004
- validateCrf(commandLine[cliFlag12]);
1129
+ if (commandLine[cliFlag15] !== undefined) {
1130
+ validateCrf(commandLine[cliFlag15]);
1005
1131
  return {
1006
1132
  source: "cli",
1007
- value: commandLine[cliFlag12]
1133
+ value: commandLine[cliFlag15]
1008
1134
  };
1009
1135
  }
1010
1136
  if (currentCrf !== null) {
@@ -1022,21 +1148,21 @@ var crfOption = {
1022
1148
  validateCrf(crf);
1023
1149
  currentCrf = crf;
1024
1150
  },
1025
- id: cliFlag12
1151
+ id: cliFlag15
1026
1152
  };
1027
1153
 
1028
1154
  // src/options/cross-site-isolation.tsx
1029
- import { jsx as jsx11, jsxs as jsxs7, Fragment as Fragment11 } from "react/jsx-runtime";
1155
+ import { jsx as jsx14, jsxs as jsxs9, Fragment as Fragment14 } from "react/jsx-runtime";
1030
1156
  var enableCrossSiteIsolation = false;
1031
- var cliFlag13 = "cross-site-isolation";
1157
+ var cliFlag16 = "cross-site-isolation";
1032
1158
  var enableCrossSiteIsolationOption = {
1033
1159
  name: "Enable Cross-Site Isolation",
1034
- cliFlag: cliFlag13,
1035
- description: () => /* @__PURE__ */ jsxs7(Fragment11, {
1160
+ cliFlag: cliFlag16,
1161
+ description: () => /* @__PURE__ */ jsxs9(Fragment14, {
1036
1162
  children: [
1037
1163
  "Enable Cross-Site Isolation in the Studio (sets Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy HTTP headers, required for",
1038
1164
  " ",
1039
- /* @__PURE__ */ jsx11("code", {
1165
+ /* @__PURE__ */ jsx14("code", {
1040
1166
  children: "@remotion/whisper-web"
1041
1167
  }),
1042
1168
  ")."
@@ -1046,9 +1172,9 @@ var enableCrossSiteIsolationOption = {
1046
1172
  docLink: "https://www.remotion.dev/docs/config#setenablecrosssiteisolation",
1047
1173
  type: false,
1048
1174
  getValue: ({ commandLine }) => {
1049
- if (commandLine[cliFlag13] !== undefined) {
1175
+ if (commandLine[cliFlag16] !== undefined) {
1050
1176
  return {
1051
- value: commandLine[cliFlag13],
1177
+ value: commandLine[cliFlag16],
1052
1178
  source: "cli"
1053
1179
  };
1054
1180
  }
@@ -1060,22 +1186,22 @@ var enableCrossSiteIsolationOption = {
1060
1186
  setConfig(value) {
1061
1187
  enableCrossSiteIsolation = value;
1062
1188
  },
1063
- id: cliFlag13
1189
+ id: cliFlag16
1064
1190
  };
1065
1191
 
1066
1192
  // src/options/dark-mode.tsx
1067
- import { jsx as jsx12, jsxs as jsxs8, Fragment as Fragment12 } from "react/jsx-runtime";
1193
+ import { jsx as jsx15, jsxs as jsxs10, Fragment as Fragment15 } from "react/jsx-runtime";
1068
1194
  var DEFAULT_VALUE = false;
1069
1195
  var darkMode = DEFAULT_VALUE;
1070
- var cliFlag14 = "dark-mode";
1196
+ var cliFlag17 = "dark-mode";
1071
1197
  var darkModeOption = {
1072
1198
  name: "Dark Mode",
1073
- cliFlag: cliFlag14,
1074
- description: () => /* @__PURE__ */ jsxs8(Fragment12, {
1199
+ cliFlag: cliFlag17,
1200
+ description: () => /* @__PURE__ */ jsxs10(Fragment15, {
1075
1201
  children: [
1076
1202
  "Whether Chromium should pretend to be in dark mode by emulating the media feature 'prefers-color-scheme: dark'. Default is",
1077
1203
  " ",
1078
- /* @__PURE__ */ jsx12("code", {
1204
+ /* @__PURE__ */ jsx15("code", {
1079
1205
  children: String(DEFAULT_VALUE)
1080
1206
  }),
1081
1207
  "."
@@ -1085,10 +1211,10 @@ var darkModeOption = {
1085
1211
  docLink: "https://www.remotion.dev/docs/chromium-flags#--dark-mode",
1086
1212
  type: false,
1087
1213
  getValue: ({ commandLine }) => {
1088
- if (commandLine[cliFlag14] !== undefined) {
1214
+ if (commandLine[cliFlag17] !== undefined) {
1089
1215
  return {
1090
1216
  source: "cli",
1091
- value: commandLine[cliFlag14]
1217
+ value: commandLine[cliFlag17]
1092
1218
  };
1093
1219
  }
1094
1220
  if (darkMode !== DEFAULT_VALUE) {
@@ -1105,41 +1231,41 @@ var darkModeOption = {
1105
1231
  setConfig: (value) => {
1106
1232
  darkMode = value;
1107
1233
  },
1108
- id: cliFlag14
1234
+ id: cliFlag17
1109
1235
  };
1110
1236
 
1111
1237
  // src/options/delete-after.tsx
1112
- import { jsx as jsx13, jsxs as jsxs9, Fragment as Fragment13 } from "react/jsx-runtime";
1113
- var cliFlag15 = "delete-after";
1238
+ import { jsx as jsx16, jsxs as jsxs11, Fragment as Fragment16 } from "react/jsx-runtime";
1239
+ var cliFlag18 = "delete-after";
1114
1240
  var deleteAfter = null;
1115
1241
  var deleteAfterOption = {
1116
1242
  name: "Lambda render expiration",
1117
- cliFlag: cliFlag15,
1243
+ cliFlag: cliFlag18,
1118
1244
  description: () => {
1119
- return /* @__PURE__ */ jsxs9(Fragment13, {
1245
+ return /* @__PURE__ */ jsxs11(Fragment16, {
1120
1246
  children: [
1121
1247
  "Automatically delete the render after a certain period. Accepted values are ",
1122
- /* @__PURE__ */ jsx13("code", {
1248
+ /* @__PURE__ */ jsx16("code", {
1123
1249
  children: "1-day"
1124
1250
  }),
1125
1251
  ", ",
1126
- /* @__PURE__ */ jsx13("code", {
1252
+ /* @__PURE__ */ jsx16("code", {
1127
1253
  children: "3-days"
1128
1254
  }),
1129
1255
  ", ",
1130
- /* @__PURE__ */ jsx13("code", {
1256
+ /* @__PURE__ */ jsx16("code", {
1131
1257
  children: "7-days"
1132
1258
  }),
1133
1259
  " and",
1134
1260
  " ",
1135
- /* @__PURE__ */ jsx13("code", {
1261
+ /* @__PURE__ */ jsx16("code", {
1136
1262
  children: "30-days"
1137
1263
  }),
1138
1264
  ".",
1139
- /* @__PURE__ */ jsx13("br", {}),
1265
+ /* @__PURE__ */ jsx16("br", {}),
1140
1266
  " For this to work, your bucket needs to have",
1141
1267
  " ",
1142
- /* @__PURE__ */ jsx13("a", {
1268
+ /* @__PURE__ */ jsx16("a", {
1143
1269
  href: "/docs/lambda/autodelete",
1144
1270
  children: "lifecycles enabled"
1145
1271
  }),
@@ -1151,10 +1277,10 @@ var deleteAfterOption = {
1151
1277
  docLink: "https://www.remotion.dev/docs/lambda/autodelete",
1152
1278
  type: "1-day",
1153
1279
  getValue: ({ commandLine }) => {
1154
- if (commandLine[cliFlag15] !== undefined) {
1280
+ if (commandLine[cliFlag18] !== undefined) {
1155
1281
  return {
1156
1282
  source: "cli",
1157
- value: commandLine[cliFlag15]
1283
+ value: commandLine[cliFlag18]
1158
1284
  };
1159
1285
  }
1160
1286
  if (deleteAfter !== null) {
@@ -1171,21 +1297,21 @@ var deleteAfterOption = {
1171
1297
  setConfig: (value) => {
1172
1298
  deleteAfter = value;
1173
1299
  },
1174
- id: cliFlag15
1300
+ id: cliFlag18
1175
1301
  };
1176
1302
 
1177
1303
  // src/options/disable-git-source.tsx
1178
1304
  var DEFAULT2 = false;
1179
- var cliFlag16 = "disable-git-source";
1305
+ var cliFlag19 = "disable-git-source";
1180
1306
  var disableGitSourceOption = {
1181
- cliFlag: cliFlag16,
1307
+ cliFlag: cliFlag19,
1182
1308
  description: () => `Disables the Git Source being connected to the Remotion Studio. Clicking on stack traces and certain menu items will be disabled.`,
1183
1309
  docLink: "https://remotion.dev/docs/bundle",
1184
1310
  getValue: ({ commandLine }) => {
1185
- if (commandLine[cliFlag16]) {
1311
+ if (commandLine[cliFlag19]) {
1186
1312
  return {
1187
1313
  source: "cli",
1188
- value: commandLine[cliFlag16]
1314
+ value: commandLine[cliFlag19]
1189
1315
  };
1190
1316
  }
1191
1317
  return {
@@ -1199,27 +1325,27 @@ var disableGitSourceOption = {
1199
1325
  },
1200
1326
  ssrName: "disableGitSource",
1201
1327
  type: false,
1202
- id: cliFlag16
1328
+ id: cliFlag19
1203
1329
  };
1204
1330
 
1205
1331
  // src/options/disable-web-security.tsx
1206
- import { jsx as jsx14, Fragment as Fragment14 } from "react/jsx-runtime";
1332
+ import { jsx as jsx17, Fragment as Fragment17 } from "react/jsx-runtime";
1207
1333
  var disableWebSecurity = false;
1208
- var cliFlag17 = "disable-web-security";
1334
+ var cliFlag20 = "disable-web-security";
1209
1335
  var disableWebSecurityOption = {
1210
1336
  name: "Disable web security",
1211
- cliFlag: cliFlag17,
1212
- description: () => /* @__PURE__ */ jsx14(Fragment14, {
1337
+ cliFlag: cliFlag20,
1338
+ description: () => /* @__PURE__ */ jsx17(Fragment17, {
1213
1339
  children: "This will most notably disable CORS in Chrome among other security features."
1214
1340
  }),
1215
1341
  ssrName: "disableWebSecurity",
1216
1342
  docLink: "https://www.remotion.dev/docs/chromium-flags#--disable-web-security",
1217
1343
  type: false,
1218
1344
  getValue: ({ commandLine }) => {
1219
- if (commandLine[cliFlag17] !== undefined) {
1345
+ if (commandLine[cliFlag20] !== undefined) {
1220
1346
  return {
1221
1347
  source: "cli",
1222
- value: Boolean(commandLine[cliFlag17])
1348
+ value: Boolean(commandLine[cliFlag20])
1223
1349
  };
1224
1350
  }
1225
1351
  if (disableWebSecurity) {
@@ -1236,26 +1362,26 @@ var disableWebSecurityOption = {
1236
1362
  setConfig: (value) => {
1237
1363
  disableWebSecurity = value;
1238
1364
  },
1239
- id: cliFlag17
1365
+ id: cliFlag20
1240
1366
  };
1241
1367
 
1242
1368
  // src/options/disallow-parallel-encoding.tsx
1243
- import { jsx as jsx15, Fragment as Fragment15 } from "react/jsx-runtime";
1369
+ import { jsx as jsx18, Fragment as Fragment18 } from "react/jsx-runtime";
1244
1370
  var disallowParallelEncoding = false;
1245
- var cliFlag18 = "disallow-parallel-encoding";
1371
+ var cliFlag21 = "disallow-parallel-encoding";
1246
1372
  var disallowParallelEncodingOption = {
1247
1373
  name: "Disallow parallel encoding",
1248
- cliFlag: cliFlag18,
1249
- description: () => /* @__PURE__ */ jsx15(Fragment15, {
1374
+ cliFlag: cliFlag21,
1375
+ description: () => /* @__PURE__ */ jsx18(Fragment18, {
1250
1376
  children: "Disallows the renderer from doing rendering frames and encoding at the same time. This makes the rendering process more memory-efficient, but possibly slower."
1251
1377
  }),
1252
1378
  ssrName: "disallowParallelEncoding",
1253
1379
  docLink: "https://www.remotion.dev/docs/config#setdisallowparallelencoding",
1254
1380
  type: false,
1255
1381
  getValue: ({ commandLine }) => {
1256
- if (commandLine[cliFlag18] !== undefined) {
1382
+ if (commandLine[cliFlag21] !== undefined) {
1257
1383
  return {
1258
- value: commandLine[cliFlag18],
1384
+ value: commandLine[cliFlag21],
1259
1385
  source: "cli"
1260
1386
  };
1261
1387
  }
@@ -1273,21 +1399,21 @@ var disallowParallelEncodingOption = {
1273
1399
  setConfig(value) {
1274
1400
  disallowParallelEncoding = value;
1275
1401
  },
1276
- id: cliFlag18
1402
+ id: cliFlag21
1277
1403
  };
1278
1404
 
1279
1405
  // src/options/enable-lambda-insights.tsx
1280
- import { jsx as jsx16, jsxs as jsxs10, Fragment as Fragment16 } from "react/jsx-runtime";
1281
- var cliFlag19 = "enable-lambda-insights";
1406
+ import { jsx as jsx19, jsxs as jsxs12, Fragment as Fragment19 } from "react/jsx-runtime";
1407
+ var cliFlag22 = "enable-lambda-insights";
1282
1408
  var option = false;
1283
1409
  var enableLambdaInsights = {
1284
1410
  name: "Enable Lambda Insights",
1285
- cliFlag: cliFlag19,
1286
- description: () => /* @__PURE__ */ jsxs10(Fragment16, {
1411
+ cliFlag: cliFlag22,
1412
+ description: () => /* @__PURE__ */ jsxs12(Fragment19, {
1287
1413
  children: [
1288
1414
  "Enable",
1289
1415
  " ",
1290
- /* @__PURE__ */ jsx16("a", {
1416
+ /* @__PURE__ */ jsx19("a", {
1291
1417
  href: "https://remotion.dev/docs/lambda/insights",
1292
1418
  children: "Lambda Insights in AWS CloudWatch"
1293
1419
  }),
@@ -1301,9 +1427,9 @@ var enableLambdaInsights = {
1301
1427
  option = value;
1302
1428
  },
1303
1429
  getValue: ({ commandLine }) => {
1304
- if (commandLine[cliFlag19] !== undefined) {
1430
+ if (commandLine[cliFlag22] !== undefined) {
1305
1431
  return {
1306
- value: commandLine[cliFlag19],
1432
+ value: commandLine[cliFlag22],
1307
1433
  source: "cli"
1308
1434
  };
1309
1435
  }
@@ -1318,41 +1444,41 @@ var enableLambdaInsights = {
1318
1444
  source: "default"
1319
1445
  };
1320
1446
  },
1321
- id: cliFlag19
1447
+ id: cliFlag22
1322
1448
  };
1323
1449
 
1324
1450
  // src/options/enable-multiprocess-on-linux.tsx
1325
- import { jsx as jsx17, jsxs as jsxs11, Fragment as Fragment17 } from "react/jsx-runtime";
1451
+ import { jsx as jsx20, jsxs as jsxs13, Fragment as Fragment20 } from "react/jsx-runtime";
1326
1452
  var DEFAULT_VALUE2 = true;
1327
1453
  var multiProcessOnLinux = DEFAULT_VALUE2;
1328
- var cliFlag20 = "enable-multiprocess-on-linux";
1454
+ var cliFlag23 = "enable-multiprocess-on-linux";
1329
1455
  var enableMultiprocessOnLinuxOption = {
1330
1456
  name: "Enable Multiprocess on Linux",
1331
- cliFlag: cliFlag20,
1332
- description: () => /* @__PURE__ */ jsxs11(Fragment17, {
1457
+ cliFlag: cliFlag23,
1458
+ description: () => /* @__PURE__ */ jsxs13(Fragment20, {
1333
1459
  children: [
1334
1460
  "Removes the ",
1335
- /* @__PURE__ */ jsx17("code", {
1461
+ /* @__PURE__ */ jsx20("code", {
1336
1462
  children: "--single-process"
1337
1463
  }),
1338
1464
  " flag that gets passed to Chromium on Linux by default. This will make the render faster because multiple processes can be used, but may cause issues with some Linux distributions or if window server libraries are missing.",
1339
- /* @__PURE__ */ jsx17("br", {}),
1465
+ /* @__PURE__ */ jsx20("br", {}),
1340
1466
  "Default: ",
1341
- /* @__PURE__ */ jsx17("code", {
1467
+ /* @__PURE__ */ jsx20("code", {
1342
1468
  children: "false"
1343
1469
  }),
1344
1470
  " until v4.0.136, then ",
1345
- /* @__PURE__ */ jsx17("code", {
1471
+ /* @__PURE__ */ jsx20("code", {
1346
1472
  children: "true"
1347
1473
  }),
1348
1474
  " from v4.0.137 on because newer Chrome versions ",
1349
1475
  "don't",
1350
1476
  " allow rendering with the ",
1351
- /* @__PURE__ */ jsx17("code", {
1477
+ /* @__PURE__ */ jsx20("code", {
1352
1478
  children: "--single-process"
1353
1479
  }),
1354
1480
  " flag. ",
1355
- /* @__PURE__ */ jsx17("br", {}),
1481
+ /* @__PURE__ */ jsx20("br", {}),
1356
1482
  "This flag will be removed in Remotion v5.0."
1357
1483
  ]
1358
1484
  }),
@@ -1360,10 +1486,10 @@ var enableMultiprocessOnLinuxOption = {
1360
1486
  docLink: "https://www.remotion.dev/docs/chromium-flags",
1361
1487
  type: false,
1362
1488
  getValue: ({ commandLine }) => {
1363
- if (commandLine[cliFlag20] !== undefined) {
1489
+ if (commandLine[cliFlag23] !== undefined) {
1364
1490
  return {
1365
1491
  source: "cli",
1366
- value: commandLine[cliFlag20]
1492
+ value: commandLine[cliFlag23]
1367
1493
  };
1368
1494
  }
1369
1495
  if (multiProcessOnLinux !== false) {
@@ -1380,23 +1506,23 @@ var enableMultiprocessOnLinuxOption = {
1380
1506
  setConfig: (value) => {
1381
1507
  multiProcessOnLinux = value;
1382
1508
  },
1383
- id: cliFlag20
1509
+ id: cliFlag23
1384
1510
  };
1385
1511
 
1386
1512
  // src/options/encoding-buffer-size.tsx
1387
- import { jsx as jsx18, jsxs as jsxs12, Fragment as Fragment18 } from "react/jsx-runtime";
1513
+ import { jsx as jsx21, jsxs as jsxs14, Fragment as Fragment21 } from "react/jsx-runtime";
1388
1514
  var encodingBufferSize = null;
1389
1515
  var setEncodingBufferSize = (bitrate) => {
1390
1516
  encodingBufferSize = bitrate;
1391
1517
  };
1392
- var cliFlag21 = "buffer-size";
1518
+ var cliFlag24 = "buffer-size";
1393
1519
  var encodingBufferSizeOption = {
1394
1520
  name: "FFmpeg -bufsize flag",
1395
- cliFlag: cliFlag21,
1396
- description: () => /* @__PURE__ */ jsxs12(Fragment18, {
1521
+ cliFlag: cliFlag24,
1522
+ description: () => /* @__PURE__ */ jsxs14(Fragment21, {
1397
1523
  children: [
1398
1524
  "The value for the ",
1399
- /* @__PURE__ */ jsx18("code", {
1525
+ /* @__PURE__ */ jsx21("code", {
1400
1526
  children: "-bufsize"
1401
1527
  }),
1402
1528
  " flag of FFmpeg. Should be used in conjunction with the encoding max rate flag."
@@ -1406,9 +1532,9 @@ var encodingBufferSizeOption = {
1406
1532
  docLink: "https://www.remotion.dev/docs/renderer/render-media#encodingbuffersize",
1407
1533
  type: "",
1408
1534
  getValue: ({ commandLine }) => {
1409
- if (commandLine[cliFlag21] !== undefined) {
1535
+ if (commandLine[cliFlag24] !== undefined) {
1410
1536
  return {
1411
- value: commandLine[cliFlag21],
1537
+ value: commandLine[cliFlag24],
1412
1538
  source: "cli"
1413
1539
  };
1414
1540
  }
@@ -1424,20 +1550,20 @@ var encodingBufferSizeOption = {
1424
1550
  };
1425
1551
  },
1426
1552
  setConfig: setEncodingBufferSize,
1427
- id: cliFlag21
1553
+ id: cliFlag24
1428
1554
  };
1429
1555
 
1430
1556
  // src/options/encoding-max-rate.tsx
1431
- import { jsx as jsx19, jsxs as jsxs13, Fragment as Fragment19 } from "react/jsx-runtime";
1557
+ import { jsx as jsx22, jsxs as jsxs15, Fragment as Fragment22 } from "react/jsx-runtime";
1432
1558
  var encodingMaxRate = null;
1433
- var cliFlag22 = "max-rate";
1559
+ var cliFlag25 = "max-rate";
1434
1560
  var encodingMaxRateOption = {
1435
1561
  name: "FFmpeg -maxrate flag",
1436
- cliFlag: cliFlag22,
1437
- description: () => /* @__PURE__ */ jsxs13(Fragment19, {
1562
+ cliFlag: cliFlag25,
1563
+ description: () => /* @__PURE__ */ jsxs15(Fragment22, {
1438
1564
  children: [
1439
1565
  "The value for the ",
1440
- /* @__PURE__ */ jsx19("code", {
1566
+ /* @__PURE__ */ jsx22("code", {
1441
1567
  children: "-maxrate"
1442
1568
  }),
1443
1569
  " flag of FFmpeg. Should be used in conjunction with the encoding buffer size flag."
@@ -1447,9 +1573,9 @@ var encodingMaxRateOption = {
1447
1573
  docLink: "https://www.remotion.dev/docs/renderer/render-media#encodingmaxrate",
1448
1574
  type: "",
1449
1575
  getValue: ({ commandLine }) => {
1450
- if (commandLine[cliFlag22] !== undefined) {
1576
+ if (commandLine[cliFlag25] !== undefined) {
1451
1577
  return {
1452
- value: commandLine[cliFlag22],
1578
+ value: commandLine[cliFlag25],
1453
1579
  source: "cli"
1454
1580
  };
1455
1581
  }
@@ -1467,25 +1593,25 @@ var encodingMaxRateOption = {
1467
1593
  setConfig: (newMaxRate) => {
1468
1594
  encodingMaxRate = newMaxRate;
1469
1595
  },
1470
- id: cliFlag22
1596
+ id: cliFlag25
1471
1597
  };
1472
1598
 
1473
1599
  // src/options/enforce-audio.tsx
1474
- import { jsx as jsx20, Fragment as Fragment20 } from "react/jsx-runtime";
1600
+ import { jsx as jsx23, Fragment as Fragment23 } from "react/jsx-runtime";
1475
1601
  var DEFAULT_ENFORCE_AUDIO_TRACK = false;
1476
1602
  var enforceAudioTrackState = DEFAULT_ENFORCE_AUDIO_TRACK;
1477
- var cliFlag23 = "enforce-audio-track";
1603
+ var cliFlag26 = "enforce-audio-track";
1478
1604
  var enforceAudioOption = {
1479
1605
  name: "Enforce Audio Track",
1480
- cliFlag: cliFlag23,
1481
- description: () => /* @__PURE__ */ jsx20(Fragment20, {
1606
+ cliFlag: cliFlag26,
1607
+ description: () => /* @__PURE__ */ jsx23(Fragment23, {
1482
1608
  children: "Render a silent audio track if there would be none otherwise."
1483
1609
  }),
1484
1610
  ssrName: "enforceAudioTrack",
1485
1611
  docLink: "https://www.remotion.dev/docs/config#setenforceaudiotrack-",
1486
1612
  type: false,
1487
1613
  getValue: ({ commandLine }) => {
1488
- if (commandLine[cliFlag23]) {
1614
+ if (commandLine[cliFlag26]) {
1489
1615
  return {
1490
1616
  source: "cli",
1491
1617
  value: true
@@ -1505,30 +1631,73 @@ var enforceAudioOption = {
1505
1631
  setConfig: (value) => {
1506
1632
  enforceAudioTrackState = value;
1507
1633
  },
1508
- id: cliFlag23
1634
+ id: cliFlag26
1635
+ };
1636
+
1637
+ // src/options/env-file.tsx
1638
+ import { jsx as jsx24, jsxs as jsxs16, Fragment as Fragment24 } from "react/jsx-runtime";
1639
+ var cliFlag27 = "env-file";
1640
+ var envFileLocation = null;
1641
+ var envFileOption = {
1642
+ name: "Env File",
1643
+ cliFlag: cliFlag27,
1644
+ description: () => /* @__PURE__ */ jsxs16(Fragment24, {
1645
+ children: [
1646
+ "Specify a location for a dotenv file. Default ",
1647
+ /* @__PURE__ */ jsx24("code", {
1648
+ children: ".env"
1649
+ }),
1650
+ "."
1651
+ ]
1652
+ }),
1653
+ ssrName: null,
1654
+ docLink: "https://www.remotion.dev/docs/cli/render#--env-file",
1655
+ getValue: ({ commandLine }) => {
1656
+ if (commandLine[cliFlag27] !== undefined) {
1657
+ return {
1658
+ source: "cli",
1659
+ value: commandLine[cliFlag27]
1660
+ };
1661
+ }
1662
+ if (envFileLocation !== null) {
1663
+ return {
1664
+ source: "config",
1665
+ value: envFileLocation
1666
+ };
1667
+ }
1668
+ return {
1669
+ source: "default",
1670
+ value: null
1671
+ };
1672
+ },
1673
+ setConfig: (value) => {
1674
+ envFileLocation = value;
1675
+ },
1676
+ type: "",
1677
+ id: cliFlag27
1509
1678
  };
1510
1679
 
1511
1680
  // src/options/every-nth-frame.tsx
1512
- import { jsx as jsx21, jsxs as jsxs14, Fragment as Fragment21 } from "react/jsx-runtime";
1681
+ import { jsx as jsx25, jsxs as jsxs17, Fragment as Fragment25 } from "react/jsx-runtime";
1513
1682
  var DEFAULT_EVERY_NTH_FRAME = 1;
1514
1683
  var everyNthFrame = DEFAULT_EVERY_NTH_FRAME;
1515
- var cliFlag24 = "every-nth-frame";
1684
+ var cliFlag28 = "every-nth-frame";
1516
1685
  var everyNthFrameOption = {
1517
1686
  name: "Every nth frame",
1518
- cliFlag: cliFlag24,
1519
- description: () => /* @__PURE__ */ jsxs14(Fragment21, {
1687
+ cliFlag: cliFlag28,
1688
+ description: () => /* @__PURE__ */ jsxs17(Fragment25, {
1520
1689
  children: [
1521
1690
  "This option may only be set when rendering GIFs. It determines how many frames are rendered, while the other ones get skipped in order to lower the FPS of the GIF. For example, if the ",
1522
- /* @__PURE__ */ jsx21("code", {
1691
+ /* @__PURE__ */ jsx25("code", {
1523
1692
  children: "fps"
1524
1693
  }),
1525
1694
  " is 30, and",
1526
1695
  " ",
1527
- /* @__PURE__ */ jsx21("code", {
1696
+ /* @__PURE__ */ jsx25("code", {
1528
1697
  children: "everyNthFrame"
1529
1698
  }),
1530
1699
  " is 2, the FPS of the GIF is ",
1531
- /* @__PURE__ */ jsx21("code", {
1700
+ /* @__PURE__ */ jsx25("code", {
1532
1701
  children: "15"
1533
1702
  }),
1534
1703
  "."
@@ -1538,10 +1707,10 @@ var everyNthFrameOption = {
1538
1707
  docLink: "https://www.remotion.dev/docs/config#seteverynthframe",
1539
1708
  type: DEFAULT_EVERY_NTH_FRAME,
1540
1709
  getValue: ({ commandLine }) => {
1541
- if (commandLine[cliFlag24] !== undefined) {
1710
+ if (commandLine[cliFlag28] !== undefined) {
1542
1711
  return {
1543
1712
  source: "cli",
1544
- value: commandLine[cliFlag24]
1713
+ value: commandLine[cliFlag28]
1545
1714
  };
1546
1715
  }
1547
1716
  if (everyNthFrame !== DEFAULT_EVERY_NTH_FRAME) {
@@ -1558,27 +1727,26 @@ var everyNthFrameOption = {
1558
1727
  setConfig: (value) => {
1559
1728
  everyNthFrame = value;
1560
1729
  },
1561
- id: cliFlag24
1730
+ id: cliFlag28
1562
1731
  };
1563
1732
 
1564
1733
  // src/options/experimental-client-side-rendering.tsx
1565
- import { jsx as jsx22, Fragment as Fragment22 } from "react/jsx-runtime";
1734
+ import { jsx as jsx26, Fragment as Fragment26 } from "react/jsx-runtime";
1566
1735
  var experimentalClientSideRenderingEnabled = false;
1567
- var cliFlag25 = "enable-experimental-client-side-rendering";
1736
+ var cliFlag29 = "enable-experimental-client-side-rendering";
1568
1737
  var experimentalClientSideRenderingOption = {
1569
1738
  name: "Enable Experimental Client-Side Rendering",
1570
- cliFlag: cliFlag25,
1571
- description: () => /* @__PURE__ */ jsx22(Fragment22, {
1739
+ cliFlag: cliFlag29,
1740
+ description: () => /* @__PURE__ */ jsx26(Fragment26, {
1572
1741
  children: "Enable WIP client-side rendering in the Remotion Studio. See https://www.remotion.dev/docs/client-side-rendering/ for notes."
1573
1742
  }),
1574
1743
  ssrName: null,
1575
1744
  docLink: "https://www.remotion.dev/docs/client-side-rendering",
1576
1745
  type: false,
1577
1746
  getValue: ({ commandLine }) => {
1578
- if (commandLine[cliFlag25] !== undefined) {
1579
- experimentalClientSideRenderingEnabled = true;
1747
+ if (commandLine[cliFlag29] !== null) {
1580
1748
  return {
1581
- value: experimentalClientSideRenderingEnabled,
1749
+ value: commandLine[cliFlag29],
1582
1750
  source: "cli"
1583
1751
  };
1584
1752
  }
@@ -1590,26 +1758,26 @@ var experimentalClientSideRenderingOption = {
1590
1758
  setConfig(value) {
1591
1759
  experimentalClientSideRenderingEnabled = value;
1592
1760
  },
1593
- id: cliFlag25
1761
+ id: cliFlag29
1594
1762
  };
1595
1763
 
1596
1764
  // src/options/folder-expiry.tsx
1597
- import { jsx as jsx23, jsxs as jsxs15, Fragment as Fragment23 } from "react/jsx-runtime";
1765
+ import { jsx as jsx27, jsxs as jsxs18, Fragment as Fragment27 } from "react/jsx-runtime";
1598
1766
  var enableFolderExpiry = null;
1599
- var cliFlag26 = "enable-folder-expiry";
1767
+ var cliFlag30 = "enable-folder-expiry";
1600
1768
  var folderExpiryOption = {
1601
1769
  name: "Lambda render expiration",
1602
- cliFlag: cliFlag26,
1770
+ cliFlag: cliFlag30,
1603
1771
  description: () => {
1604
- return /* @__PURE__ */ jsxs15(Fragment23, {
1772
+ return /* @__PURE__ */ jsxs18(Fragment27, {
1605
1773
  children: [
1606
1774
  "When deploying sites, enable or disable S3 Lifecycle policies which allow for renders to auto-delete after a certain time. Default is",
1607
1775
  " ",
1608
- /* @__PURE__ */ jsx23("code", {
1776
+ /* @__PURE__ */ jsx27("code", {
1609
1777
  children: "null"
1610
1778
  }),
1611
1779
  ", which does not change any lifecycle policies of the S3 bucket. See: ",
1612
- /* @__PURE__ */ jsx23("a", {
1780
+ /* @__PURE__ */ jsx27("a", {
1613
1781
  href: "/docs/lambda/autodelete",
1614
1782
  children: "Lambda autodelete"
1615
1783
  }),
@@ -1621,10 +1789,10 @@ var folderExpiryOption = {
1621
1789
  docLink: "https://www.remotion.dev/docs/lambda/autodelete",
1622
1790
  type: false,
1623
1791
  getValue: ({ commandLine }) => {
1624
- if (commandLine[cliFlag26] !== undefined) {
1792
+ if (commandLine[cliFlag30] !== undefined) {
1625
1793
  return {
1626
1794
  source: "cli",
1627
- value: commandLine[cliFlag26]
1795
+ value: commandLine[cliFlag30]
1628
1796
  };
1629
1797
  }
1630
1798
  if (enableFolderExpiry !== null) {
@@ -1641,28 +1809,28 @@ var folderExpiryOption = {
1641
1809
  setConfig: (value) => {
1642
1810
  enableFolderExpiry = value;
1643
1811
  },
1644
- id: cliFlag26
1812
+ id: cliFlag30
1645
1813
  };
1646
1814
 
1647
1815
  // src/options/for-seamless-aac-concatenation.tsx
1648
- import { jsx as jsx24, jsxs as jsxs16, Fragment as Fragment24 } from "react/jsx-runtime";
1816
+ import { jsx as jsx28, jsxs as jsxs19, Fragment as Fragment28 } from "react/jsx-runtime";
1649
1817
  var DEFAULT3 = false;
1650
1818
  var forSeamlessAacConcatenation = DEFAULT3;
1651
- var cliFlag27 = "for-seamless-aac-concatenation";
1819
+ var cliFlag31 = "for-seamless-aac-concatenation";
1652
1820
  var forSeamlessAacConcatenationOption = {
1653
1821
  name: "For seamless AAC concatenation",
1654
- cliFlag: cliFlag27,
1655
- description: () => /* @__PURE__ */ jsxs16(Fragment24, {
1822
+ cliFlag: cliFlag31,
1823
+ description: () => /* @__PURE__ */ jsxs19(Fragment28, {
1656
1824
  children: [
1657
1825
  "If enabled, the audio is trimmed to the nearest AAC frame, which is required for seamless concatenation of AAC files. This is a requirement if you later want to combine multiple video snippets seamlessly.",
1658
- /* @__PURE__ */ jsx24("br", {}),
1659
- /* @__PURE__ */ jsx24("br", {}),
1826
+ /* @__PURE__ */ jsx28("br", {}),
1827
+ /* @__PURE__ */ jsx28("br", {}),
1660
1828
  " This option is used internally. There is currently no documentation yet for to concatenate the audio chunks."
1661
1829
  ]
1662
1830
  }),
1663
1831
  docLink: "https://remotion.dev/docs/renderer",
1664
1832
  getValue: ({ commandLine }) => {
1665
- if (commandLine[cliFlag27]) {
1833
+ if (commandLine[cliFlag31]) {
1666
1834
  return {
1667
1835
  source: "cli",
1668
1836
  value: true
@@ -1684,26 +1852,26 @@ var forSeamlessAacConcatenationOption = {
1684
1852
  },
1685
1853
  ssrName: "forSeamlessAacConcatenation",
1686
1854
  type: false,
1687
- id: cliFlag27
1855
+ id: cliFlag31
1688
1856
  };
1689
1857
 
1690
1858
  // src/options/force-new-studio.tsx
1691
- import { jsx as jsx25, Fragment as Fragment25 } from "react/jsx-runtime";
1859
+ import { jsx as jsx29, Fragment as Fragment29 } from "react/jsx-runtime";
1692
1860
  var forceNewEnabled = false;
1693
- var cliFlag28 = "force-new";
1861
+ var cliFlag32 = "force-new";
1694
1862
  var forceNewStudioOption = {
1695
1863
  name: "Force New Studio",
1696
- cliFlag: cliFlag28,
1697
- description: () => /* @__PURE__ */ jsx25(Fragment25, {
1864
+ cliFlag: cliFlag32,
1865
+ description: () => /* @__PURE__ */ jsx29(Fragment29, {
1698
1866
  children: "Forces starting a new Studio instance even if one is already running on the same port for the same project."
1699
1867
  }),
1700
1868
  ssrName: null,
1701
1869
  docLink: "https://www.remotion.dev/docs/config#setforcenewstudioenabled",
1702
1870
  type: false,
1703
1871
  getValue: ({ commandLine }) => {
1704
- if (commandLine[cliFlag28] !== undefined) {
1872
+ if (commandLine[cliFlag32] !== undefined) {
1705
1873
  return {
1706
- value: commandLine[cliFlag28],
1874
+ value: commandLine[cliFlag32],
1707
1875
  source: "cli"
1708
1876
  };
1709
1877
  }
@@ -1715,49 +1883,197 @@ var forceNewStudioOption = {
1715
1883
  setConfig(value) {
1716
1884
  forceNewEnabled = value;
1717
1885
  },
1718
- id: cliFlag28
1886
+ id: cliFlag32
1719
1887
  };
1720
1888
 
1721
- // src/options/gl.tsx
1722
- import { jsx as jsx26, jsxs as jsxs17, Fragment as Fragment26 } from "react/jsx-runtime";
1723
- var validOpenGlRenderers = [
1724
- "swangle",
1725
- "angle",
1726
- "egl",
1727
- "swiftshader",
1728
- "vulkan",
1729
- "angle-egl"
1730
- ];
1731
- var DEFAULT_OPENGL_RENDERER = null;
1732
- var openGlRenderer = DEFAULT_OPENGL_RENDERER;
1733
- var AngleChangelog = () => {
1734
- return /* @__PURE__ */ jsxs17("details", {
1735
- style: { fontSize: "0.9em", marginBottom: "1em" },
1736
- children: [
1737
- /* @__PURE__ */ jsx26("summary", {
1738
- children: "Changelog"
1889
+ // src/frame-range.ts
1890
+ var validateFrameRange = (frameRange) => {
1891
+ if (frameRange === null) {
1892
+ return;
1893
+ }
1894
+ if (typeof frameRange === "number") {
1895
+ if (frameRange < 0) {
1896
+ throw new TypeError("Frame must be a non-negative number, got " + frameRange);
1897
+ }
1898
+ if (!Number.isFinite(frameRange)) {
1899
+ throw new TypeError("Frame must be a finite number, got " + frameRange);
1900
+ }
1901
+ if (!Number.isInteger(frameRange)) {
1902
+ throw new Error(`Frame must be an integer, but got a float (${frameRange})`);
1903
+ }
1904
+ return;
1905
+ }
1906
+ if (Array.isArray(frameRange)) {
1907
+ if (frameRange.length !== 2) {
1908
+ throw new TypeError("Frame range must be a tuple, got an array with length " + frameRange.length);
1909
+ }
1910
+ const [first, second] = frameRange;
1911
+ if (typeof first !== "number") {
1912
+ throw new Error(`The first value of frame range must be a number, but got ${typeof first} (${JSON.stringify(first)})`);
1913
+ }
1914
+ if (!Number.isFinite(first)) {
1915
+ throw new TypeError("The first value of frame range must be finite, but got " + first);
1916
+ }
1917
+ if (!Number.isInteger(first)) {
1918
+ throw new Error(`The first value of frame range must be an integer, but got a float (${first})`);
1919
+ }
1920
+ if (first < 0) {
1921
+ throw new Error(`The first value of frame range must be non-negative, but got ${first}`);
1922
+ }
1923
+ if (second === null) {
1924
+ return;
1925
+ }
1926
+ if (typeof second !== "number") {
1927
+ throw new Error(`The second value of frame range must be a number or null, but got ${typeof second} (${JSON.stringify(second)})`);
1928
+ }
1929
+ if (!Number.isFinite(second)) {
1930
+ throw new TypeError("The second value of frame range must be finite, but got " + second);
1931
+ }
1932
+ if (!Number.isInteger(second)) {
1933
+ throw new Error(`The second value of frame range must be an integer, but got a float (${second})`);
1934
+ }
1935
+ if (second < 0) {
1936
+ throw new Error(`The second value of frame range must be non-negative, but got ${second}`);
1937
+ }
1938
+ if (second < first) {
1939
+ throw new Error("The second value of frame range must be not smaller than the first one, but got " + frameRange.join("-"));
1940
+ }
1941
+ return;
1942
+ }
1943
+ throw new TypeError("Frame range must be a number or a tuple of numbers, but got object of type " + typeof frameRange);
1944
+ };
1945
+
1946
+ // src/options/frames.tsx
1947
+ import { jsx as jsx30, jsxs as jsxs20, Fragment as Fragment30 } from "react/jsx-runtime";
1948
+ var cliFlag33 = "frames";
1949
+ var frameRange = null;
1950
+ var parseFrameRangeFromCli = (newFrameRange) => {
1951
+ if (typeof newFrameRange === "number") {
1952
+ if (newFrameRange < 0) {
1953
+ return [0, Math.abs(newFrameRange)];
1954
+ }
1955
+ return newFrameRange;
1956
+ }
1957
+ if (typeof newFrameRange === "string") {
1958
+ if (newFrameRange.trim() === "") {
1959
+ throw new Error("--frames flag must be a single number, or 2 numbers separated by `-`");
1960
+ }
1961
+ const parts = newFrameRange.split("-");
1962
+ if (parts.length > 2 || parts.length <= 0) {
1963
+ throw new Error(`--frames flag must be a number or 2 numbers separated by '-', instead got ${parts.length} numbers`);
1964
+ }
1965
+ if (parts.length === 1) {
1966
+ const value = Number(parts[0]);
1967
+ if (isNaN(value)) {
1968
+ throw new Error("--frames flag must be a single number, or 2 numbers separated by `-`");
1969
+ }
1970
+ return value;
1971
+ }
1972
+ const [firstPart, secondPart] = parts;
1973
+ if (secondPart === "" && firstPart !== "") {
1974
+ const start = Number(firstPart);
1975
+ if (isNaN(start)) {
1976
+ throw new Error("--frames flag must be a single number, or 2 numbers separated by `-`");
1977
+ }
1978
+ return [start, null];
1979
+ }
1980
+ const parsed = parts.map((f) => Number(f));
1981
+ const [first, second] = parsed;
1982
+ for (const value of parsed) {
1983
+ if (isNaN(value)) {
1984
+ throw new Error("--frames flag must be a single number, or 2 numbers separated by `-`");
1985
+ }
1986
+ }
1987
+ if (second < first) {
1988
+ throw new Error("The second number of the --frames flag number should be greater or equal than first number");
1989
+ }
1990
+ return [first, second];
1991
+ }
1992
+ throw new Error("--frames flag must be a single number, or 2 numbers separated by `-`");
1993
+ };
1994
+ var framesOption = {
1995
+ name: "Frame Range",
1996
+ cliFlag: cliFlag33,
1997
+ description: () => /* @__PURE__ */ jsxs20(Fragment30, {
1998
+ children: [
1999
+ "Render a subset of a video. Pass a single number to render a still, or a range (e.g. ",
2000
+ /* @__PURE__ */ jsx30("code", {
2001
+ children: "0-9"
2002
+ }),
2003
+ ") to render a subset of frames. Pass",
2004
+ " ",
2005
+ /* @__PURE__ */ jsx30("code", {
2006
+ children: "100-"
2007
+ }),
2008
+ " to render from frame 100 to the end."
2009
+ ]
2010
+ }),
2011
+ ssrName: "frameRange",
2012
+ docLink: "https://www.remotion.dev/docs/config#setframerange",
2013
+ type: null,
2014
+ getValue: ({ commandLine }) => {
2015
+ if (commandLine[cliFlag33] !== undefined) {
2016
+ const value = parseFrameRangeFromCli(commandLine[cliFlag33]);
2017
+ validateFrameRange(value);
2018
+ return {
2019
+ source: "cli",
2020
+ value
2021
+ };
2022
+ }
2023
+ return {
2024
+ source: "config",
2025
+ value: frameRange
2026
+ };
2027
+ },
2028
+ setConfig: (value) => {
2029
+ if (value !== null) {
2030
+ validateFrameRange(value);
2031
+ }
2032
+ frameRange = value;
2033
+ },
2034
+ id: cliFlag33
2035
+ };
2036
+
2037
+ // src/options/gl.tsx
2038
+ import { jsx as jsx31, jsxs as jsxs21, Fragment as Fragment31 } from "react/jsx-runtime";
2039
+ var validOpenGlRenderers = [
2040
+ "swangle",
2041
+ "angle",
2042
+ "egl",
2043
+ "swiftshader",
2044
+ "vulkan",
2045
+ "angle-egl"
2046
+ ];
2047
+ var DEFAULT_OPENGL_RENDERER = null;
2048
+ var openGlRenderer = DEFAULT_OPENGL_RENDERER;
2049
+ var AngleChangelog = () => {
2050
+ return /* @__PURE__ */ jsxs21("details", {
2051
+ style: { fontSize: "0.9em", marginBottom: "1em" },
2052
+ children: [
2053
+ /* @__PURE__ */ jsx31("summary", {
2054
+ children: "Changelog"
1739
2055
  }),
1740
- /* @__PURE__ */ jsxs17("ul", {
2056
+ /* @__PURE__ */ jsxs21("ul", {
1741
2057
  children: [
1742
- /* @__PURE__ */ jsxs17("li", {
2058
+ /* @__PURE__ */ jsxs21("li", {
1743
2059
  children: [
1744
2060
  "From Remotion v2.6.7 until v3.0.7, the default for Remotion Lambda was",
1745
2061
  " ",
1746
- /* @__PURE__ */ jsx26("code", {
2062
+ /* @__PURE__ */ jsx31("code", {
1747
2063
  children: "swiftshader"
1748
2064
  }),
1749
2065
  ", but from v3.0.8 the default is",
1750
2066
  " ",
1751
- /* @__PURE__ */ jsx26("code", {
2067
+ /* @__PURE__ */ jsx31("code", {
1752
2068
  children: "swangle"
1753
2069
  }),
1754
2070
  " (Swiftshader on Angle) since Chrome 101 added support for it."
1755
2071
  ]
1756
2072
  }),
1757
- /* @__PURE__ */ jsxs17("li", {
2073
+ /* @__PURE__ */ jsxs21("li", {
1758
2074
  children: [
1759
2075
  "From Remotion v2.4.3 until v2.6.6, the default was ",
1760
- /* @__PURE__ */ jsx26("code", {
2076
+ /* @__PURE__ */ jsx31("code", {
1761
2077
  children: "angle"
1762
2078
  }),
1763
2079
  ", however it turns out to have a small memory leak that could crash long Remotion renders."
@@ -1768,65 +2084,65 @@ var AngleChangelog = () => {
1768
2084
  ]
1769
2085
  });
1770
2086
  };
1771
- var cliFlag29 = "gl";
2087
+ var cliFlag34 = "gl";
1772
2088
  var glOption = {
1773
- cliFlag: cliFlag29,
2089
+ cliFlag: cliFlag34,
1774
2090
  docLink: "https://www.remotion.dev/docs/chromium-flags#--gl",
1775
2091
  name: "OpenGL renderer",
1776
2092
  type: "angle",
1777
2093
  ssrName: "gl",
1778
2094
  description: () => {
1779
- return /* @__PURE__ */ jsxs17(Fragment26, {
2095
+ return /* @__PURE__ */ jsxs21(Fragment31, {
1780
2096
  children: [
1781
- /* @__PURE__ */ jsx26(AngleChangelog, {}),
1782
- /* @__PURE__ */ jsxs17("p", {
2097
+ /* @__PURE__ */ jsx31(AngleChangelog, {}),
2098
+ /* @__PURE__ */ jsxs21("p", {
1783
2099
  children: [
1784
2100
  "Select the OpenGL renderer backend for Chromium. ",
1785
- /* @__PURE__ */ jsx26("br", {}),
2101
+ /* @__PURE__ */ jsx31("br", {}),
1786
2102
  "Accepted values:"
1787
2103
  ]
1788
2104
  }),
1789
- /* @__PURE__ */ jsxs17("ul", {
2105
+ /* @__PURE__ */ jsxs21("ul", {
1790
2106
  children: [
1791
- /* @__PURE__ */ jsx26("li", {
1792
- children: /* @__PURE__ */ jsx26("code", {
2107
+ /* @__PURE__ */ jsx31("li", {
2108
+ children: /* @__PURE__ */ jsx31("code", {
1793
2109
  children: '"angle"'
1794
2110
  })
1795
2111
  }),
1796
- /* @__PURE__ */ jsx26("li", {
1797
- children: /* @__PURE__ */ jsx26("code", {
2112
+ /* @__PURE__ */ jsx31("li", {
2113
+ children: /* @__PURE__ */ jsx31("code", {
1798
2114
  children: '"egl"'
1799
2115
  })
1800
2116
  }),
1801
- /* @__PURE__ */ jsx26("li", {
1802
- children: /* @__PURE__ */ jsx26("code", {
2117
+ /* @__PURE__ */ jsx31("li", {
2118
+ children: /* @__PURE__ */ jsx31("code", {
1803
2119
  children: '"swiftshader"'
1804
2120
  })
1805
2121
  }),
1806
- /* @__PURE__ */ jsx26("li", {
1807
- children: /* @__PURE__ */ jsx26("code", {
2122
+ /* @__PURE__ */ jsx31("li", {
2123
+ children: /* @__PURE__ */ jsx31("code", {
1808
2124
  children: '"swangle"'
1809
2125
  })
1810
2126
  }),
1811
- /* @__PURE__ */ jsxs17("li", {
2127
+ /* @__PURE__ */ jsxs21("li", {
1812
2128
  children: [
1813
- /* @__PURE__ */ jsx26("code", {
2129
+ /* @__PURE__ */ jsx31("code", {
1814
2130
  children: '"vulkan"'
1815
2131
  }),
1816
2132
  " (",
1817
- /* @__PURE__ */ jsx26("em", {
2133
+ /* @__PURE__ */ jsx31("em", {
1818
2134
  children: "from Remotion v4.0.41"
1819
2135
  }),
1820
2136
  ")"
1821
2137
  ]
1822
2138
  }),
1823
- /* @__PURE__ */ jsxs17("li", {
2139
+ /* @__PURE__ */ jsxs21("li", {
1824
2140
  children: [
1825
- /* @__PURE__ */ jsx26("code", {
2141
+ /* @__PURE__ */ jsx31("code", {
1826
2142
  children: '"angle-egl"'
1827
2143
  }),
1828
2144
  " (",
1829
- /* @__PURE__ */ jsx26("em", {
2145
+ /* @__PURE__ */ jsx31("em", {
1830
2146
  children: "from Remotion v4.0.51"
1831
2147
  }),
1832
2148
  ")"
@@ -1834,14 +2150,14 @@ var glOption = {
1834
2150
  })
1835
2151
  ]
1836
2152
  }),
1837
- /* @__PURE__ */ jsxs17("p", {
2153
+ /* @__PURE__ */ jsxs21("p", {
1838
2154
  children: [
1839
2155
  "The default is ",
1840
- /* @__PURE__ */ jsx26("code", {
2156
+ /* @__PURE__ */ jsx31("code", {
1841
2157
  children: "null"
1842
2158
  }),
1843
2159
  ", letting Chrome decide, except on Lambda where the default is ",
1844
- /* @__PURE__ */ jsx26("code", {
2160
+ /* @__PURE__ */ jsx31("code", {
1845
2161
  children: '"swangle"'
1846
2162
  })
1847
2163
  ]
@@ -1850,10 +2166,10 @@ var glOption = {
1850
2166
  });
1851
2167
  },
1852
2168
  getValue: ({ commandLine }) => {
1853
- if (commandLine[cliFlag29]) {
1854
- validateOpenGlRenderer(commandLine[cliFlag29]);
2169
+ if (commandLine[cliFlag34]) {
2170
+ validateOpenGlRenderer(commandLine[cliFlag34]);
1855
2171
  return {
1856
- value: commandLine[cliFlag29],
2172
+ value: commandLine[cliFlag34],
1857
2173
  source: "cli"
1858
2174
  };
1859
2175
  }
@@ -1872,7 +2188,7 @@ var glOption = {
1872
2188
  validateOpenGlRenderer(value);
1873
2189
  openGlRenderer = value;
1874
2190
  },
1875
- id: cliFlag29
2191
+ id: cliFlag34
1876
2192
  };
1877
2193
  var validateOpenGlRenderer = (option2) => {
1878
2194
  if (option2 === null) {
@@ -1890,11 +2206,11 @@ var hardwareAccelerationOptions = [
1890
2206
  "if-possible",
1891
2207
  "required"
1892
2208
  ];
1893
- var cliFlag30 = "hardware-acceleration";
2209
+ var cliFlag35 = "hardware-acceleration";
1894
2210
  var currentValue = null;
1895
2211
  var hardwareAccelerationOption = {
1896
2212
  name: "Hardware Acceleration",
1897
- cliFlag: cliFlag30,
2213
+ cliFlag: cliFlag35,
1898
2214
  description: () => `
1899
2215
  One of
1900
2216
  ${new Intl.ListFormat("en", { type: "disjunction" }).format(hardwareAccelerationOptions.map((a) => JSON.stringify(a)))}
@@ -1906,10 +2222,10 @@ var hardwareAccelerationOption = {
1906
2222
  docLink: "https://www.remotion.dev/docs/encoding",
1907
2223
  type: "disable",
1908
2224
  getValue: ({ commandLine }) => {
1909
- if (commandLine[cliFlag30] !== undefined) {
1910
- const value = commandLine[cliFlag30];
2225
+ if (commandLine[cliFlag35] !== undefined) {
2226
+ const value = commandLine[cliFlag35];
1911
2227
  if (!hardwareAccelerationOptions.includes(value)) {
1912
- throw new Error(`Invalid value for --${cliFlag30}: ${value}`);
2228
+ throw new Error(`Invalid value for --${cliFlag35}: ${value}`);
1913
2229
  }
1914
2230
  return {
1915
2231
  source: "cli",
@@ -1929,32 +2245,32 @@ var hardwareAccelerationOption = {
1929
2245
  },
1930
2246
  setConfig: (value) => {
1931
2247
  if (!hardwareAccelerationOptions.includes(value)) {
1932
- throw new Error(`Invalid value for --${cliFlag30}: ${value}`);
2248
+ throw new Error(`Invalid value for --${cliFlag35}: ${value}`);
1933
2249
  }
1934
2250
  currentValue = value;
1935
2251
  },
1936
- id: cliFlag30
2252
+ id: cliFlag35
1937
2253
  };
1938
2254
 
1939
2255
  // src/options/headless.tsx
1940
- import { jsx as jsx27, jsxs as jsxs18, Fragment as Fragment27 } from "react/jsx-runtime";
2256
+ import { jsx as jsx32, jsxs as jsxs22, Fragment as Fragment32 } from "react/jsx-runtime";
1941
2257
  var DEFAULT4 = true;
1942
2258
  var headlessMode = DEFAULT4;
1943
- var cliFlag31 = "disable-headless";
2259
+ var cliFlag36 = "disable-headless";
1944
2260
  var headlessOption = {
1945
2261
  name: "Disable Headless Mode",
1946
- cliFlag: cliFlag31,
1947
- description: () => /* @__PURE__ */ jsxs18(Fragment27, {
2262
+ cliFlag: cliFlag36,
2263
+ description: () => /* @__PURE__ */ jsxs22(Fragment32, {
1948
2264
  children: [
1949
2265
  "Deprecated - will be removed in 5.0.0. With the migration to",
1950
2266
  " ",
1951
- /* @__PURE__ */ jsx27("a", {
2267
+ /* @__PURE__ */ jsx32("a", {
1952
2268
  href: "/docs/miscellaneous/chrome-headless-shell",
1953
2269
  children: "Chrome Headless Shell"
1954
2270
  }),
1955
2271
  ", this option is not functional anymore.",
1956
- /* @__PURE__ */ jsx27("br", {}),
1957
- /* @__PURE__ */ jsx27("br", {}),
2272
+ /* @__PURE__ */ jsx32("br", {}),
2273
+ /* @__PURE__ */ jsx32("br", {}),
1958
2274
  " If disabled, the render will open an actual Chrome window where you can see the render happen. The default is headless mode."
1959
2275
  ]
1960
2276
  }),
@@ -1962,10 +2278,10 @@ var headlessOption = {
1962
2278
  docLink: "https://www.remotion.dev/docs/chromium-flags#--disable-headless",
1963
2279
  type: false,
1964
2280
  getValue: ({ commandLine }) => {
1965
- if (commandLine[cliFlag31] !== undefined) {
2281
+ if (commandLine[cliFlag36] !== undefined) {
1966
2282
  return {
1967
2283
  source: "cli",
1968
- value: !commandLine[cliFlag31]
2284
+ value: !commandLine[cliFlag36]
1969
2285
  };
1970
2286
  }
1971
2287
  if (headlessMode !== DEFAULT4) {
@@ -1982,27 +2298,27 @@ var headlessOption = {
1982
2298
  setConfig: (value) => {
1983
2299
  headlessMode = value;
1984
2300
  },
1985
- id: cliFlag31
2301
+ id: cliFlag36
1986
2302
  };
1987
2303
 
1988
2304
  // src/options/ignore-certificate-errors.tsx
1989
- import { jsx as jsx28, Fragment as Fragment28 } from "react/jsx-runtime";
2305
+ import { jsx as jsx33, Fragment as Fragment33 } from "react/jsx-runtime";
1990
2306
  var ignoreCertificateErrors = false;
1991
- var cliFlag32 = "ignore-certificate-errors";
2307
+ var cliFlag37 = "ignore-certificate-errors";
1992
2308
  var ignoreCertificateErrorsOption = {
1993
2309
  name: "Ignore certificate errors",
1994
- cliFlag: cliFlag32,
1995
- description: () => /* @__PURE__ */ jsx28(Fragment28, {
2310
+ cliFlag: cliFlag37,
2311
+ description: () => /* @__PURE__ */ jsx33(Fragment33, {
1996
2312
  children: "Results in invalid SSL certificates in Chrome, such as self-signed ones, being ignored."
1997
2313
  }),
1998
2314
  ssrName: "ignoreCertificateErrors",
1999
2315
  docLink: "https://www.remotion.dev/docs/chromium-flags#--ignore-certificate-errors",
2000
2316
  type: false,
2001
2317
  getValue: ({ commandLine }) => {
2002
- if (commandLine[cliFlag32] !== undefined) {
2318
+ if (commandLine[cliFlag37] !== undefined) {
2003
2319
  return {
2004
2320
  source: "cli",
2005
- value: Boolean(commandLine[cliFlag32])
2321
+ value: Boolean(commandLine[cliFlag37])
2006
2322
  };
2007
2323
  }
2008
2324
  if (ignoreCertificateErrors) {
@@ -2019,25 +2335,67 @@ var ignoreCertificateErrorsOption = {
2019
2335
  setConfig: (value) => {
2020
2336
  ignoreCertificateErrors = value;
2021
2337
  },
2022
- id: cliFlag32
2338
+ id: cliFlag37
2339
+ };
2340
+
2341
+ // src/options/image-sequence.tsx
2342
+ import { jsx as jsx34, jsxs as jsxs23, Fragment as Fragment34 } from "react/jsx-runtime";
2343
+ var cliFlag38 = "sequence";
2344
+ var imageSequence = false;
2345
+ var imageSequenceOption = {
2346
+ name: "Image Sequence",
2347
+ cliFlag: cliFlag38,
2348
+ description: () => /* @__PURE__ */ jsxs23(Fragment34, {
2349
+ children: [
2350
+ "Pass this flag to output an image sequence instead of a video. The default image format is JPEG. See",
2351
+ " ",
2352
+ /* @__PURE__ */ jsx34("a", {
2353
+ href: "/docs/config#setimagesequence",
2354
+ children: /* @__PURE__ */ jsx34("code", {
2355
+ children: "setImageSequence()"
2356
+ })
2357
+ }),
2358
+ " ",
2359
+ "for more details."
2360
+ ]
2361
+ }),
2362
+ ssrName: null,
2363
+ docLink: "https://www.remotion.dev/docs/config#setimagesequence",
2364
+ getValue: ({ commandLine }) => {
2365
+ if (commandLine[cliFlag38] !== undefined) {
2366
+ return {
2367
+ source: "cli",
2368
+ value: Boolean(commandLine[cliFlag38])
2369
+ };
2370
+ }
2371
+ return {
2372
+ source: imageSequence ? "config" : "default",
2373
+ value: imageSequence
2374
+ };
2375
+ },
2376
+ setConfig: (value) => {
2377
+ imageSequence = value;
2378
+ },
2379
+ type: false,
2380
+ id: cliFlag38
2023
2381
  };
2024
2382
 
2025
2383
  // src/options/image-sequence-pattern.tsx
2026
- import { jsx as jsx29, jsxs as jsxs19, Fragment as Fragment29 } from "react/jsx-runtime";
2027
- var cliFlag33 = "image-sequence-pattern";
2384
+ import { jsx as jsx35, jsxs as jsxs24, Fragment as Fragment35 } from "react/jsx-runtime";
2385
+ var cliFlag39 = "image-sequence-pattern";
2028
2386
  var currentImageSequencePattern = null;
2029
2387
  var imageSequencePatternOption = {
2030
2388
  name: "Image Sequence Pattern",
2031
- cliFlag: cliFlag33,
2389
+ cliFlag: cliFlag39,
2032
2390
  ssrName: "imageSequencePattern",
2033
- description: () => /* @__PURE__ */ jsxs19(Fragment29, {
2391
+ description: () => /* @__PURE__ */ jsxs24(Fragment35, {
2034
2392
  children: [
2035
2393
  "Pattern for naming image sequence files. Supports ",
2036
- /* @__PURE__ */ jsx29("code", {
2394
+ /* @__PURE__ */ jsx35("code", {
2037
2395
  children: "[frame]"
2038
2396
  }),
2039
2397
  " for the zero-padded frame number and ",
2040
- /* @__PURE__ */ jsx29("code", {
2398
+ /* @__PURE__ */ jsx35("code", {
2041
2399
  children: "[ext]"
2042
2400
  }),
2043
2401
  " for the file extension."
@@ -2053,33 +2411,33 @@ var imageSequencePatternOption = {
2053
2411
  };
2054
2412
  }
2055
2413
  return {
2056
- value: commandLine[cliFlag33],
2414
+ value: commandLine[cliFlag39],
2057
2415
  source: "cli"
2058
2416
  };
2059
2417
  },
2060
2418
  setConfig: (pattern) => {
2061
2419
  currentImageSequencePattern = pattern;
2062
2420
  },
2063
- id: cliFlag33
2421
+ id: cliFlag39
2064
2422
  };
2065
2423
 
2066
2424
  // src/options/ipv4.tsx
2067
- import { jsx as jsx30, Fragment as Fragment30 } from "react/jsx-runtime";
2425
+ import { jsx as jsx36, Fragment as Fragment36 } from "react/jsx-runtime";
2068
2426
  var forceIPv4 = false;
2069
- var cliFlag34 = "ipv4";
2427
+ var cliFlag40 = "ipv4";
2070
2428
  var ipv4Option = {
2071
2429
  name: "IPv4",
2072
- cliFlag: cliFlag34,
2073
- description: () => /* @__PURE__ */ jsx30(Fragment30, {
2430
+ cliFlag: cliFlag40,
2431
+ description: () => /* @__PURE__ */ jsx36(Fragment36, {
2074
2432
  children: "Forces Remotion to bind to an IPv4 interface for the Studio server."
2075
2433
  }),
2076
2434
  ssrName: null,
2077
2435
  docLink: "https://www.remotion.dev/docs/cli/studio",
2078
2436
  type: false,
2079
2437
  getValue: ({ commandLine }) => {
2080
- if (commandLine[cliFlag34] !== undefined) {
2438
+ if (commandLine[cliFlag40] !== undefined) {
2081
2439
  return {
2082
- value: commandLine[cliFlag34],
2440
+ value: commandLine[cliFlag40],
2083
2441
  source: "cli"
2084
2442
  };
2085
2443
  }
@@ -2091,25 +2449,25 @@ var ipv4Option = {
2091
2449
  setConfig(value) {
2092
2450
  forceIPv4 = value;
2093
2451
  },
2094
- id: cliFlag34
2452
+ id: cliFlag40
2095
2453
  };
2096
2454
 
2097
2455
  // src/options/is-production.tsx
2098
- import { jsx as jsx31, jsxs as jsxs20, Fragment as Fragment31 } from "react/jsx-runtime";
2099
- var cliFlag35 = "is-production";
2456
+ import { jsx as jsx37, jsxs as jsxs25, Fragment as Fragment37 } from "react/jsx-runtime";
2457
+ var cliFlag41 = "is-production";
2100
2458
  var currentIsProductionKey = null;
2101
2459
  var isProductionOption = {
2102
2460
  name: "Is Production",
2103
- cliFlag: cliFlag35,
2104
- description: () => /* @__PURE__ */ jsxs20(Fragment31, {
2461
+ cliFlag: cliFlag41,
2462
+ description: () => /* @__PURE__ */ jsxs25(Fragment37, {
2105
2463
  children: [
2106
2464
  "Pass ",
2107
- /* @__PURE__ */ jsx31("code", {
2465
+ /* @__PURE__ */ jsx37("code", {
2108
2466
  children: "false"
2109
2467
  }),
2110
2468
  " if this a development render to not count it as a billable render on remotion.pro. Only can be used in conjuction with",
2111
2469
  " ",
2112
- /* @__PURE__ */ jsx31("code", {
2470
+ /* @__PURE__ */ jsx37("code", {
2113
2471
  children: "licenseKey"
2114
2472
  }),
2115
2473
  "."
@@ -2118,10 +2476,10 @@ var isProductionOption = {
2118
2476
  ssrName: "isProduction",
2119
2477
  docLink: "https://www.remotion.dev/docs/licensing",
2120
2478
  getValue: ({ commandLine }) => {
2121
- if (commandLine[cliFlag35] !== undefined) {
2479
+ if (commandLine[cliFlag41] !== undefined) {
2122
2480
  return {
2123
2481
  source: "cli",
2124
- value: commandLine[cliFlag35]
2482
+ value: commandLine[cliFlag41]
2125
2483
  };
2126
2484
  }
2127
2485
  if (currentIsProductionKey !== null) {
@@ -2139,11 +2497,11 @@ var isProductionOption = {
2139
2497
  currentIsProductionKey = value;
2140
2498
  },
2141
2499
  type: false,
2142
- id: cliFlag35
2500
+ id: cliFlag41
2143
2501
  };
2144
2502
 
2145
2503
  // src/options/jpeg-quality.tsx
2146
- import { jsx as jsx32, Fragment as Fragment32 } from "react/jsx-runtime";
2504
+ import { jsx as jsx38, Fragment as Fragment38 } from "react/jsx-runtime";
2147
2505
  var defaultValue = DEFAULT_JPEG_QUALITY;
2148
2506
  var quality = defaultValue;
2149
2507
  var setJpegQuality = (q) => {
@@ -2154,11 +2512,11 @@ var setJpegQuality = (q) => {
2154
2512
  }
2155
2513
  quality = q;
2156
2514
  };
2157
- var cliFlag36 = "jpeg-quality";
2515
+ var cliFlag42 = "jpeg-quality";
2158
2516
  var jpegQualityOption = {
2159
2517
  name: "JPEG Quality",
2160
- cliFlag: cliFlag36,
2161
- description: () => /* @__PURE__ */ jsx32(Fragment32, {
2518
+ cliFlag: cliFlag42,
2519
+ description: () => /* @__PURE__ */ jsx38(Fragment38, {
2162
2520
  children: "Sets the quality of the generated JPEG images. Must be an integer between 0 and 100. Default: 80."
2163
2521
  }),
2164
2522
  ssrName: "jpegQuality",
@@ -2166,11 +2524,11 @@ var jpegQualityOption = {
2166
2524
  type: 0,
2167
2525
  setConfig: setJpegQuality,
2168
2526
  getValue: ({ commandLine }) => {
2169
- if (commandLine[cliFlag36] !== undefined) {
2170
- validateJpegQuality(commandLine[cliFlag36]);
2527
+ if (commandLine[cliFlag42] !== undefined) {
2528
+ validateJpegQuality(commandLine[cliFlag42]);
2171
2529
  return {
2172
2530
  source: "cli",
2173
- value: commandLine[cliFlag36]
2531
+ value: commandLine[cliFlag42]
2174
2532
  };
2175
2533
  }
2176
2534
  if (quality !== defaultValue) {
@@ -2184,25 +2542,25 @@ var jpegQualityOption = {
2184
2542
  value: defaultValue
2185
2543
  };
2186
2544
  },
2187
- id: cliFlag36
2545
+ id: cliFlag42
2188
2546
  };
2189
2547
 
2190
2548
  // src/options/keyboard-shortcuts.tsx
2191
- import { jsx as jsx33, Fragment as Fragment33 } from "react/jsx-runtime";
2549
+ import { jsx as jsx39, Fragment as Fragment39 } from "react/jsx-runtime";
2192
2550
  var keyboardShortcutsEnabled = true;
2193
- var cliFlag37 = "disable-keyboard-shortcuts";
2551
+ var cliFlag43 = "disable-keyboard-shortcuts";
2194
2552
  var keyboardShortcutsOption = {
2195
2553
  name: "Disable or Enable keyboard shortcuts",
2196
- cliFlag: cliFlag37,
2197
- description: () => /* @__PURE__ */ jsx33(Fragment33, {
2554
+ cliFlag: cliFlag43,
2555
+ description: () => /* @__PURE__ */ jsx39(Fragment39, {
2198
2556
  children: "Enable or disable keyboard shortcuts in the Remotion Studio."
2199
2557
  }),
2200
2558
  ssrName: null,
2201
2559
  docLink: "https://www.remotion.dev/docs/config#setkeyboardshortcutsenabled",
2202
2560
  type: false,
2203
2561
  getValue: ({ commandLine }) => {
2204
- if (commandLine[cliFlag37] !== undefined) {
2205
- keyboardShortcutsEnabled = commandLine[cliFlag37] === false;
2562
+ if (commandLine[cliFlag43] !== undefined) {
2563
+ keyboardShortcutsEnabled = commandLine[cliFlag43] === false;
2206
2564
  return {
2207
2565
  value: keyboardShortcutsEnabled,
2208
2566
  source: "cli"
@@ -2216,42 +2574,42 @@ var keyboardShortcutsOption = {
2216
2574
  setConfig(value) {
2217
2575
  keyboardShortcutsEnabled = value;
2218
2576
  },
2219
- id: cliFlag37
2577
+ id: cliFlag43
2220
2578
  };
2221
2579
 
2222
2580
  // src/options/latency-hint.tsx
2223
- import { jsx as jsx34, jsxs as jsxs21, Fragment as Fragment34 } from "react/jsx-runtime";
2224
- var cliFlag38 = "audio-latency-hint";
2581
+ import { jsx as jsx40, jsxs as jsxs26, Fragment as Fragment40 } from "react/jsx-runtime";
2582
+ var cliFlag44 = "audio-latency-hint";
2225
2583
  var value = null;
2226
2584
  var audioLatencyHintOption = {
2227
2585
  name: "Audio Latency Hint",
2228
- cliFlag: cliFlag38,
2229
- description: () => /* @__PURE__ */ jsxs21(Fragment34, {
2586
+ cliFlag: cliFlag44,
2587
+ description: () => /* @__PURE__ */ jsxs26(Fragment40, {
2230
2588
  children: [
2231
2589
  "Sets the",
2232
2590
  " ",
2233
- /* @__PURE__ */ jsx34("a", {
2591
+ /* @__PURE__ */ jsx40("a", {
2234
2592
  href: "https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/AudioContext",
2235
2593
  children: "audio latency"
2236
2594
  }),
2237
2595
  " ",
2238
2596
  "hint for the global ",
2239
- /* @__PURE__ */ jsx34("code", {
2597
+ /* @__PURE__ */ jsx40("code", {
2240
2598
  children: "AudioContext"
2241
2599
  }),
2242
2600
  " context that Remotion uses to play audio.",
2243
- /* @__PURE__ */ jsx34("br", {}),
2601
+ /* @__PURE__ */ jsx40("br", {}),
2244
2602
  "Possible values: ",
2245
- /* @__PURE__ */ jsx34("code", {
2603
+ /* @__PURE__ */ jsx40("code", {
2246
2604
  children: "interactive"
2247
2605
  }),
2248
2606
  ", ",
2249
- /* @__PURE__ */ jsx34("code", {
2607
+ /* @__PURE__ */ jsx40("code", {
2250
2608
  children: "balanced"
2251
2609
  }),
2252
2610
  ",",
2253
2611
  " ",
2254
- /* @__PURE__ */ jsx34("code", {
2612
+ /* @__PURE__ */ jsx40("code", {
2255
2613
  children: "playback"
2256
2614
  })
2257
2615
  ]
@@ -2260,7 +2618,7 @@ var audioLatencyHintOption = {
2260
2618
  docLink: "https://www.remotion.dev/docs/renderer/render-media",
2261
2619
  type: "interactive",
2262
2620
  getValue: ({ commandLine }) => {
2263
- const val = commandLine[cliFlag38];
2621
+ const val = commandLine[cliFlag44];
2264
2622
  if (typeof val !== "undefined") {
2265
2623
  return { value: val, source: "cli" };
2266
2624
  }
@@ -2272,21 +2630,21 @@ var audioLatencyHintOption = {
2272
2630
  setConfig: (profile) => {
2273
2631
  value = profile;
2274
2632
  },
2275
- id: cliFlag38
2633
+ id: cliFlag44
2276
2634
  };
2277
2635
 
2278
2636
  // src/options/license-key.tsx
2279
- import { jsx as jsx35, jsxs as jsxs22, Fragment as Fragment35 } from "react/jsx-runtime";
2637
+ import { jsx as jsx41, jsxs as jsxs27, Fragment as Fragment41 } from "react/jsx-runtime";
2280
2638
  var currentLicenseKey = null;
2281
- var cliFlag39 = "license-key";
2639
+ var cliFlag45 = "license-key";
2282
2640
  var licenseKeyOption = {
2283
2641
  name: "License key",
2284
- cliFlag: cliFlag39,
2285
- description: () => /* @__PURE__ */ jsxs22(Fragment35, {
2642
+ cliFlag: cliFlag45,
2643
+ description: () => /* @__PURE__ */ jsxs27(Fragment41, {
2286
2644
  children: [
2287
2645
  "License key for sending a usage event using",
2288
2646
  " ",
2289
- /* @__PURE__ */ jsx35("code", {
2647
+ /* @__PURE__ */ jsx41("code", {
2290
2648
  children: "@remotion/licensing"
2291
2649
  }),
2292
2650
  "."
@@ -2296,10 +2654,10 @@ var licenseKeyOption = {
2296
2654
  docLink: "https://www.remotion.dev/docs/licensing",
2297
2655
  type: null,
2298
2656
  getValue: ({ commandLine }) => {
2299
- if (commandLine[cliFlag39] !== undefined) {
2657
+ if (commandLine[cliFlag45] !== undefined) {
2300
2658
  return {
2301
2659
  source: "cli",
2302
- value: commandLine[cliFlag39]
2660
+ value: commandLine[cliFlag45]
2303
2661
  };
2304
2662
  }
2305
2663
  return {
@@ -2310,47 +2668,47 @@ var licenseKeyOption = {
2310
2668
  setConfig: (value2) => {
2311
2669
  currentLicenseKey = value2;
2312
2670
  },
2313
- id: cliFlag39
2671
+ id: cliFlag45
2314
2672
  };
2315
2673
 
2316
2674
  // src/options/log-level.tsx
2317
- import { jsx as jsx36, jsxs as jsxs23, Fragment as Fragment36 } from "react/jsx-runtime";
2675
+ import { jsx as jsx42, jsxs as jsxs28, Fragment as Fragment42 } from "react/jsx-runtime";
2318
2676
  var logLevel = "info";
2319
- var cliFlag40 = "log";
2677
+ var cliFlag46 = "log";
2320
2678
  var logLevelOption = {
2321
- cliFlag: cliFlag40,
2679
+ cliFlag: cliFlag46,
2322
2680
  name: "Log Level",
2323
2681
  ssrName: "logLevel",
2324
- description: () => /* @__PURE__ */ jsxs23(Fragment36, {
2682
+ description: () => /* @__PURE__ */ jsxs28(Fragment42, {
2325
2683
  children: [
2326
2684
  "One of ",
2327
- /* @__PURE__ */ jsx36("code", {
2685
+ /* @__PURE__ */ jsx42("code", {
2328
2686
  children: "trace"
2329
2687
  }),
2330
2688
  ", ",
2331
- /* @__PURE__ */ jsx36("code", {
2689
+ /* @__PURE__ */ jsx42("code", {
2332
2690
  children: "verbose"
2333
2691
  }),
2334
2692
  ", ",
2335
- /* @__PURE__ */ jsx36("code", {
2693
+ /* @__PURE__ */ jsx42("code", {
2336
2694
  children: "info"
2337
2695
  }),
2338
2696
  ",",
2339
2697
  " ",
2340
- /* @__PURE__ */ jsx36("code", {
2698
+ /* @__PURE__ */ jsx42("code", {
2341
2699
  children: "warn"
2342
2700
  }),
2343
2701
  ", ",
2344
- /* @__PURE__ */ jsx36("code", {
2702
+ /* @__PURE__ */ jsx42("code", {
2345
2703
  children: "error"
2346
2704
  }),
2347
2705
  ".",
2348
- /* @__PURE__ */ jsx36("br", {}),
2706
+ /* @__PURE__ */ jsx42("br", {}),
2349
2707
  " Determines how much info is being logged to the console.",
2350
- /* @__PURE__ */ jsx36("br", {}),
2351
- /* @__PURE__ */ jsx36("br", {}),
2708
+ /* @__PURE__ */ jsx42("br", {}),
2709
+ /* @__PURE__ */ jsx42("br", {}),
2352
2710
  " Default ",
2353
- /* @__PURE__ */ jsx36("code", {
2711
+ /* @__PURE__ */ jsx42("code", {
2354
2712
  children: "info"
2355
2713
  }),
2356
2714
  "."
@@ -2358,11 +2716,11 @@ var logLevelOption = {
2358
2716
  }),
2359
2717
  docLink: "https://www.remotion.dev/docs/troubleshooting/debug-failed-render",
2360
2718
  getValue: ({ commandLine }) => {
2361
- if (commandLine[cliFlag40]) {
2362
- if (!isValidLogLevel(commandLine[cliFlag40])) {
2719
+ if (commandLine[cliFlag46]) {
2720
+ if (!isValidLogLevel(commandLine[cliFlag46])) {
2363
2721
  throw new Error(`Invalid \`--log\` value passed. Accepted values: ${logLevels.map((l) => `'${l}'`).join(", ")}.`);
2364
2722
  }
2365
- return { value: commandLine[cliFlag40], source: "cli" };
2723
+ return { value: commandLine[cliFlag46], source: "cli" };
2366
2724
  }
2367
2725
  if (logLevel !== "info") {
2368
2726
  return { value: logLevel, source: "config" };
@@ -2373,23 +2731,23 @@ var logLevelOption = {
2373
2731
  logLevel = newLogLevel;
2374
2732
  },
2375
2733
  type: "error",
2376
- id: cliFlag40
2734
+ id: cliFlag46
2377
2735
  };
2378
2736
 
2379
2737
  // src/options/metadata.tsx
2380
- import { jsx as jsx37, jsxs as jsxs24, Fragment as Fragment37 } from "react/jsx-runtime";
2738
+ import { jsx as jsx43, jsxs as jsxs29, Fragment as Fragment43 } from "react/jsx-runtime";
2381
2739
  var metadata = {};
2382
- var cliFlag41 = "metadata";
2740
+ var cliFlag47 = "metadata";
2383
2741
  var metadataOption = {
2384
2742
  name: "Metadata",
2385
- cliFlag: cliFlag41,
2743
+ cliFlag: cliFlag47,
2386
2744
  description: (mode) => {
2387
2745
  if (mode === "ssr") {
2388
- return /* @__PURE__ */ jsxs24(Fragment37, {
2746
+ return /* @__PURE__ */ jsxs29(Fragment43, {
2389
2747
  children: [
2390
2748
  "An object containing metadata to be embedded in the video. See",
2391
2749
  " ",
2392
- /* @__PURE__ */ jsx37("a", {
2750
+ /* @__PURE__ */ jsx43("a", {
2393
2751
  href: "/docs/metadata",
2394
2752
  children: "here"
2395
2753
  }),
@@ -2397,18 +2755,18 @@ var metadataOption = {
2397
2755
  ]
2398
2756
  });
2399
2757
  }
2400
- return /* @__PURE__ */ jsxs24(Fragment37, {
2758
+ return /* @__PURE__ */ jsxs29(Fragment43, {
2401
2759
  children: [
2402
2760
  "Metadata to be embedded in the video. See",
2403
2761
  " ",
2404
- /* @__PURE__ */ jsx37("a", {
2762
+ /* @__PURE__ */ jsx43("a", {
2405
2763
  href: "/docs/metadata",
2406
2764
  children: "here"
2407
2765
  }),
2408
2766
  " for which metadata is accepted.",
2409
- /* @__PURE__ */ jsx37("br", {}),
2767
+ /* @__PURE__ */ jsx43("br", {}),
2410
2768
  "The parameter must be in the format of ",
2411
- /* @__PURE__ */ jsx37("code", {
2769
+ /* @__PURE__ */ jsx43("code", {
2412
2770
  children: "--metadata key=value"
2413
2771
  }),
2414
2772
  " ",
@@ -2419,8 +2777,8 @@ var metadataOption = {
2419
2777
  docLink: "https://www.remotion.dev/docs/metadata",
2420
2778
  type: {},
2421
2779
  getValue: ({ commandLine }) => {
2422
- if (commandLine[cliFlag41] !== undefined) {
2423
- const val = commandLine[cliFlag41];
2780
+ if (commandLine[cliFlag47] !== undefined) {
2781
+ const val = commandLine[cliFlag47];
2424
2782
  const array = typeof val === "string" ? [val] : val;
2425
2783
  const keyValues = array.map((a) => {
2426
2784
  if (!a.includes("=")) {
@@ -2447,28 +2805,28 @@ var metadataOption = {
2447
2805
  metadata = newMetadata;
2448
2806
  },
2449
2807
  ssrName: "metadata",
2450
- id: cliFlag41
2808
+ id: cliFlag47
2451
2809
  };
2452
2810
 
2453
2811
  // src/options/mute.tsx
2454
- import { jsx as jsx38, Fragment as Fragment38 } from "react/jsx-runtime";
2812
+ import { jsx as jsx44, Fragment as Fragment44 } from "react/jsx-runtime";
2455
2813
  var DEFAULT_MUTED_STATE = false;
2456
2814
  var mutedState = DEFAULT_MUTED_STATE;
2457
- var cliFlag42 = "muted";
2815
+ var cliFlag48 = "muted";
2458
2816
  var mutedOption = {
2459
2817
  name: "Muted",
2460
- cliFlag: cliFlag42,
2461
- description: () => /* @__PURE__ */ jsx38(Fragment38, {
2818
+ cliFlag: cliFlag48,
2819
+ description: () => /* @__PURE__ */ jsx44(Fragment44, {
2462
2820
  children: "The Audio of the video will be omitted."
2463
2821
  }),
2464
2822
  ssrName: "muted",
2465
2823
  docLink: "https://www.remotion.dev/docs/audio/muting",
2466
2824
  type: false,
2467
2825
  getValue: ({ commandLine }) => {
2468
- if (commandLine[cliFlag42] !== null) {
2826
+ if (commandLine[cliFlag48] !== null) {
2469
2827
  return {
2470
2828
  source: "cli",
2471
- value: commandLine[cliFlag42]
2829
+ value: commandLine[cliFlag48]
2472
2830
  };
2473
2831
  }
2474
2832
  if (mutedState !== DEFAULT_MUTED_STATE) {
@@ -2485,54 +2843,83 @@ var mutedOption = {
2485
2843
  setConfig: () => {
2486
2844
  mutedState = true;
2487
2845
  },
2488
- id: cliFlag42
2846
+ id: cliFlag48
2847
+ };
2848
+
2849
+ // src/options/no-open.tsx
2850
+ import { jsx as jsx45, Fragment as Fragment45 } from "react/jsx-runtime";
2851
+ var shouldOpenBrowser = true;
2852
+ var cliFlag49 = "no-open";
2853
+ var noOpenOption = {
2854
+ name: "Disable browser auto-open",
2855
+ cliFlag: cliFlag49,
2856
+ description: () => /* @__PURE__ */ jsx45(Fragment45, {
2857
+ children: "If specified, Remotion will not open a browser window when starting the Studio."
2858
+ }),
2859
+ ssrName: null,
2860
+ docLink: "https://www.remotion.dev/docs/cli/studio#--no-open",
2861
+ type: false,
2862
+ getValue: ({ commandLine }) => {
2863
+ const cliValue = commandLine.open;
2864
+ if (cliValue === false) {
2865
+ return { value: true, source: "cli" };
2866
+ }
2867
+ if (!shouldOpenBrowser) {
2868
+ return { value: true, source: "config" };
2869
+ }
2870
+ return { value: false, source: "default" };
2871
+ },
2872
+ setConfig: (shouldOpen) => {
2873
+ shouldOpenBrowser = shouldOpen;
2874
+ },
2875
+ id: cliFlag49
2489
2876
  };
2490
2877
 
2491
2878
  // src/options/number-of-gif-loops.tsx
2492
- import { jsx as jsx39, jsxs as jsxs25, Fragment as Fragment39 } from "react/jsx-runtime";
2879
+ import { jsx as jsx46, jsxs as jsxs30, Fragment as Fragment46 } from "react/jsx-runtime";
2493
2880
  var currentLoop = null;
2494
2881
  var validate = (newLoop) => {
2495
2882
  if (newLoop !== null && typeof newLoop !== "number") {
2496
2883
  throw new Error("--number-of-gif-loops flag must be a number.");
2497
2884
  }
2498
2885
  };
2499
- var cliFlag43 = "number-of-gif-loops";
2886
+ var cliFlag50 = "number-of-gif-loops";
2500
2887
  var numberOfGifLoopsOption = {
2501
2888
  name: "Number of GIF loops",
2502
- cliFlag: cliFlag43,
2889
+ cliFlag: cliFlag50,
2503
2890
  description: () => {
2504
- return /* @__PURE__ */ jsxs25(Fragment39, {
2891
+ return /* @__PURE__ */ jsxs30(Fragment46, {
2505
2892
  children: [
2506
2893
  "Allows you to set the number of loops as follows:",
2507
- /* @__PURE__ */ jsxs25("ul", {
2894
+ /* @__PURE__ */ jsxs30("ul", {
2508
2895
  children: [
2509
- /* @__PURE__ */ jsxs25("li", {
2896
+ /* @__PURE__ */ jsxs30("li", {
2510
2897
  children: [
2511
- /* @__PURE__ */ jsx39("code", {
2898
+ /* @__PURE__ */ jsx46("code", {
2512
2899
  children: "null"
2513
2900
  }),
2514
2901
  " (or omitting in the CLI) plays the GIF indefinitely."
2515
2902
  ]
2516
2903
  }),
2517
- /* @__PURE__ */ jsxs25("li", {
2904
+ /* @__PURE__ */ jsxs30("li", {
2518
2905
  children: [
2519
- /* @__PURE__ */ jsx39("code", {
2906
+ /* @__PURE__ */ jsx46("code", {
2520
2907
  children: "0"
2521
2908
  }),
2522
2909
  " disables looping"
2523
2910
  ]
2524
2911
  }),
2525
- /* @__PURE__ */ jsxs25("li", {
2912
+ /* @__PURE__ */ jsxs30("li", {
2526
2913
  children: [
2527
- /* @__PURE__ */ jsx39("code", {
2914
+ /* @__PURE__ */ jsx46("code", {
2528
2915
  children: "1"
2529
2916
  }),
2530
2917
  " loops the GIF once (plays twice in total)"
2531
2918
  ]
2532
2919
  }),
2533
- /* @__PURE__ */ jsxs25("li", {
2920
+ /* @__PURE__ */ jsxs30("li", {
2534
2921
  children: [
2535
- /* @__PURE__ */ jsx39("code", {
2922
+ /* @__PURE__ */ jsx46("code", {
2536
2923
  children: "2"
2537
2924
  }),
2538
2925
  " loops the GIF twice (plays three times in total) and so on."
@@ -2547,10 +2934,10 @@ var numberOfGifLoopsOption = {
2547
2934
  docLink: "https://www.remotion.dev/docs/render-as-gif#changing-the-number-of-loops",
2548
2935
  type: 0,
2549
2936
  getValue: ({ commandLine }) => {
2550
- if (commandLine[cliFlag43] !== undefined) {
2551
- validate(commandLine[cliFlag43]);
2937
+ if (commandLine[cliFlag50] !== undefined) {
2938
+ validate(commandLine[cliFlag50]);
2552
2939
  return {
2553
- value: commandLine[cliFlag43],
2940
+ value: commandLine[cliFlag50],
2554
2941
  source: "cli"
2555
2942
  };
2556
2943
  }
@@ -2569,21 +2956,21 @@ var numberOfGifLoopsOption = {
2569
2956
  validate(newLoop);
2570
2957
  currentLoop = newLoop;
2571
2958
  },
2572
- id: cliFlag43
2959
+ id: cliFlag50
2573
2960
  };
2574
2961
 
2575
2962
  // src/options/number-of-shared-audio-tags.tsx
2576
- import { jsx as jsx40, jsxs as jsxs26, Fragment as Fragment40 } from "react/jsx-runtime";
2963
+ import { jsx as jsx47, jsxs as jsxs31, Fragment as Fragment47 } from "react/jsx-runtime";
2577
2964
  var numberOfSharedAudioTags = 0;
2578
- var cliFlag44 = "number-of-shared-audio-tags";
2965
+ var cliFlag51 = "number-of-shared-audio-tags";
2579
2966
  var numberOfSharedAudioTagsOption = {
2580
2967
  name: "Number of shared audio tags",
2581
- cliFlag: cliFlag44,
2582
- description: () => /* @__PURE__ */ jsxs26(Fragment40, {
2968
+ cliFlag: cliFlag51,
2969
+ description: () => /* @__PURE__ */ jsxs31(Fragment47, {
2583
2970
  children: [
2584
2971
  "Set number of shared audio tags. See",
2585
2972
  " ",
2586
- /* @__PURE__ */ jsx40("a", {
2973
+ /* @__PURE__ */ jsx47("a", {
2587
2974
  href: "https://www.remotion.dev/docs/player/autoplay#using-the-numberofsharedaudiotags-prop",
2588
2975
  children: "Using the numberOfSharedAudioTags prop"
2589
2976
  }),
@@ -2595,9 +2982,9 @@ var numberOfSharedAudioTagsOption = {
2595
2982
  docLink: "https://www.remotion.dev/docs/config#setnumberofsharedaudiotags",
2596
2983
  type: 0,
2597
2984
  getValue: ({ commandLine }) => {
2598
- if (commandLine[cliFlag44] !== undefined) {
2985
+ if (commandLine[cliFlag51] !== undefined) {
2599
2986
  return {
2600
- value: commandLine[cliFlag44],
2987
+ value: commandLine[cliFlag51],
2601
2988
  source: "cli"
2602
2989
  };
2603
2990
  }
@@ -2609,39 +2996,39 @@ var numberOfSharedAudioTagsOption = {
2609
2996
  setConfig(value2) {
2610
2997
  numberOfSharedAudioTags = value2;
2611
2998
  },
2612
- id: cliFlag44
2999
+ id: cliFlag51
2613
3000
  };
2614
3001
 
2615
3002
  // src/options/offthreadvideo-cache-size.tsx
2616
- import { jsx as jsx41, jsxs as jsxs27, Fragment as Fragment41 } from "react/jsx-runtime";
3003
+ import { jsx as jsx48, jsxs as jsxs32, Fragment as Fragment48 } from "react/jsx-runtime";
2617
3004
  var offthreadVideoCacheSizeInBytes = null;
2618
- var cliFlag45 = "offthreadvideo-cache-size-in-bytes";
3005
+ var cliFlag52 = "offthreadvideo-cache-size-in-bytes";
2619
3006
  var offthreadVideoCacheSizeInBytesOption = {
2620
3007
  name: "OffthreadVideo cache size",
2621
- cliFlag: cliFlag45,
2622
- description: () => /* @__PURE__ */ jsxs27(Fragment41, {
3008
+ cliFlag: cliFlag52,
3009
+ description: () => /* @__PURE__ */ jsxs32(Fragment48, {
2623
3010
  children: [
2624
3011
  "From v4.0, Remotion has a cache for",
2625
3012
  " ",
2626
- /* @__PURE__ */ jsx41("a", {
3013
+ /* @__PURE__ */ jsx48("a", {
2627
3014
  href: "https://remotion.dev/docs/offthreadvideo",
2628
- children: /* @__PURE__ */ jsx41("code", {
3015
+ children: /* @__PURE__ */ jsx48("code", {
2629
3016
  children: "<OffthreadVideo>"
2630
3017
  })
2631
3018
  }),
2632
3019
  " ",
2633
3020
  "frames. The default is ",
2634
- /* @__PURE__ */ jsx41("code", {
3021
+ /* @__PURE__ */ jsx48("code", {
2635
3022
  children: "null"
2636
3023
  }),
2637
3024
  ", corresponding to half of the system memory available when the render starts.",
2638
- /* @__PURE__ */ jsx41("br", {}),
3025
+ /* @__PURE__ */ jsx48("br", {}),
2639
3026
  " This option allows to override the size of the cache. The higher it is, the faster the render will be, but the more memory will be used.",
2640
- /* @__PURE__ */ jsx41("br", {}),
3027
+ /* @__PURE__ */ jsx48("br", {}),
2641
3028
  "The used value will be printed when running in verbose mode.",
2642
- /* @__PURE__ */ jsx41("br", {}),
3029
+ /* @__PURE__ */ jsx48("br", {}),
2643
3030
  "Default: ",
2644
- /* @__PURE__ */ jsx41("code", {
3031
+ /* @__PURE__ */ jsx48("code", {
2645
3032
  children: "null"
2646
3033
  })
2647
3034
  ]
@@ -2650,10 +3037,10 @@ var offthreadVideoCacheSizeInBytesOption = {
2650
3037
  docLink: "https://www.remotion.dev/docs/offthreadvideo",
2651
3038
  type: 0,
2652
3039
  getValue: ({ commandLine }) => {
2653
- if (commandLine[cliFlag45] !== undefined) {
3040
+ if (commandLine[cliFlag52] !== undefined) {
2654
3041
  return {
2655
3042
  source: "cli",
2656
- value: commandLine[cliFlag45]
3043
+ value: commandLine[cliFlag52]
2657
3044
  };
2658
3045
  }
2659
3046
  if (offthreadVideoCacheSizeInBytes !== null) {
@@ -2670,22 +3057,22 @@ var offthreadVideoCacheSizeInBytesOption = {
2670
3057
  setConfig: (size) => {
2671
3058
  offthreadVideoCacheSizeInBytes = size ?? null;
2672
3059
  },
2673
- id: cliFlag45
3060
+ id: cliFlag52
2674
3061
  };
2675
3062
 
2676
3063
  // src/options/offthreadvideo-threads.tsx
2677
- import { jsx as jsx42, jsxs as jsxs28, Fragment as Fragment42 } from "react/jsx-runtime";
3064
+ import { jsx as jsx49, jsxs as jsxs33, Fragment as Fragment49 } from "react/jsx-runtime";
2678
3065
  var value2 = null;
2679
- var cliFlag46 = "offthreadvideo-video-threads";
3066
+ var cliFlag53 = "offthreadvideo-video-threads";
2680
3067
  var offthreadVideoThreadsOption = {
2681
3068
  name: "OffthreadVideo threads",
2682
- cliFlag: cliFlag46,
2683
- description: () => /* @__PURE__ */ jsxs28(Fragment42, {
3069
+ cliFlag: cliFlag53,
3070
+ description: () => /* @__PURE__ */ jsxs33(Fragment49, {
2684
3071
  children: [
2685
3072
  "The number of threads that",
2686
- /* @__PURE__ */ jsx42("a", {
3073
+ /* @__PURE__ */ jsx49("a", {
2687
3074
  href: "https://remotion.dev/docs/offthreadvideo",
2688
- children: /* @__PURE__ */ jsx42("code", {
3075
+ children: /* @__PURE__ */ jsx49("code", {
2689
3076
  children: "<OffthreadVideo>"
2690
3077
  })
2691
3078
  }),
@@ -2700,10 +3087,10 @@ var offthreadVideoThreadsOption = {
2700
3087
  docLink: "https://www.remotion.dev/docs/offthreadvideo",
2701
3088
  type: 0,
2702
3089
  getValue: ({ commandLine }) => {
2703
- if (commandLine[cliFlag46] !== undefined) {
3090
+ if (commandLine[cliFlag53] !== undefined) {
2704
3091
  return {
2705
3092
  source: "cli",
2706
- value: commandLine[cliFlag46]
3093
+ value: commandLine[cliFlag53]
2707
3094
  };
2708
3095
  }
2709
3096
  if (value2 !== null) {
@@ -2720,21 +3107,21 @@ var offthreadVideoThreadsOption = {
2720
3107
  setConfig: (size) => {
2721
3108
  value2 = size ?? null;
2722
3109
  },
2723
- id: cliFlag46
3110
+ id: cliFlag53
2724
3111
  };
2725
3112
  var DEFAULT_RENDER_FRAMES_OFFTHREAD_VIDEO_THREADS = 2;
2726
3113
 
2727
3114
  // src/options/on-browser-download.tsx
2728
- import { jsx as jsx43, jsxs as jsxs29, Fragment as Fragment43 } from "react/jsx-runtime";
2729
- var cliFlag47 = "on-browser-download";
3115
+ import { jsx as jsx50, jsxs as jsxs34, Fragment as Fragment50 } from "react/jsx-runtime";
3116
+ var cliFlag54 = "on-browser-download";
2730
3117
  var onBrowserDownloadOption = {
2731
3118
  name: "Browser download callback function",
2732
- cliFlag: cliFlag47,
2733
- description: () => /* @__PURE__ */ jsxs29(Fragment43, {
3119
+ cliFlag: cliFlag54,
3120
+ description: () => /* @__PURE__ */ jsxs34(Fragment50, {
2734
3121
  children: [
2735
3122
  "Gets called when no compatible local browser is detected on the system and this API needs to download a browser. Return a callback to observe progress.",
2736
3123
  " ",
2737
- /* @__PURE__ */ jsx43("a", {
3124
+ /* @__PURE__ */ jsx50("a", {
2738
3125
  href: "/docs/renderer/ensure-browser#onbrowserdownload",
2739
3126
  children: "See here for how to use this option."
2740
3127
  })
@@ -2749,7 +3136,58 @@ var onBrowserDownloadOption = {
2749
3136
  setConfig: () => {
2750
3137
  throw new Error("does not support config file");
2751
3138
  },
2752
- id: cliFlag47
3139
+ id: cliFlag54
3140
+ };
3141
+
3142
+ // src/options/out-dir.tsx
3143
+ import { jsx as jsx51, jsxs as jsxs35, Fragment as Fragment51 } from "react/jsx-runtime";
3144
+ var cliFlag55 = "out-dir";
3145
+ var currentOutDir = null;
3146
+ var outDirOption = {
3147
+ name: "Output Directory",
3148
+ cliFlag: cliFlag55,
3149
+ description: () => {
3150
+ return /* @__PURE__ */ jsxs35(Fragment51, {
3151
+ children: [
3152
+ "Define the location of the resulting bundle. By default it is a folder called ",
3153
+ /* @__PURE__ */ jsx51("code", {
3154
+ children: "build"
3155
+ }),
3156
+ ", adjacent to the",
3157
+ " ",
3158
+ /* @__PURE__ */ jsx51("a", {
3159
+ href: "/docs/terminology/remotion-root",
3160
+ children: "Remotion Root"
3161
+ }),
3162
+ "."
3163
+ ]
3164
+ });
3165
+ },
3166
+ ssrName: "outDir",
3167
+ docLink: "https://www.remotion.dev/docs/cli/bundle#--out-dir",
3168
+ getValue: ({ commandLine }) => {
3169
+ if (commandLine[cliFlag55] !== undefined) {
3170
+ return {
3171
+ source: "cli",
3172
+ value: commandLine[cliFlag55]
3173
+ };
3174
+ }
3175
+ if (currentOutDir !== null) {
3176
+ return {
3177
+ source: "config",
3178
+ value: currentOutDir
3179
+ };
3180
+ }
3181
+ return {
3182
+ source: "default",
3183
+ value: null
3184
+ };
3185
+ },
3186
+ setConfig: (value3) => {
3187
+ currentOutDir = value3;
3188
+ },
3189
+ type: "",
3190
+ id: cliFlag55
2753
3191
  };
2754
3192
 
2755
3193
  // src/validate.ts
@@ -2759,21 +3197,21 @@ var validateDimension = NoReactInternals2.validateDimension;
2759
3197
  var validateDurationInFrames = NoReactInternals2.validateDurationInFrames;
2760
3198
 
2761
3199
  // src/options/override-duration.tsx
2762
- import { jsx as jsx44, Fragment as Fragment44 } from "react/jsx-runtime";
3200
+ import { jsx as jsx52, Fragment as Fragment52 } from "react/jsx-runtime";
2763
3201
  var currentDuration = null;
2764
- var cliFlag48 = "duration";
3202
+ var cliFlag56 = "duration";
2765
3203
  var overrideDurationOption = {
2766
3204
  name: "Override Duration",
2767
- cliFlag: cliFlag48,
2768
- description: () => /* @__PURE__ */ jsx44(Fragment44, {
3205
+ cliFlag: cliFlag56,
3206
+ description: () => /* @__PURE__ */ jsx52(Fragment52, {
2769
3207
  children: "Overrides the duration in frames of the composition."
2770
3208
  }),
2771
3209
  ssrName: null,
2772
3210
  docLink: "https://www.remotion.dev/docs/config#overrideduration",
2773
3211
  type: null,
2774
3212
  getValue: ({ commandLine }) => {
2775
- if (commandLine[cliFlag48] !== undefined) {
2776
- const value3 = commandLine[cliFlag48];
3213
+ if (commandLine[cliFlag56] !== undefined) {
3214
+ const value3 = commandLine[cliFlag56];
2777
3215
  validateDurationInFrames(value3, {
2778
3216
  component: "in --duration flag",
2779
3217
  allowFloats: false
@@ -2801,25 +3239,25 @@ var overrideDurationOption = {
2801
3239
  });
2802
3240
  currentDuration = duration;
2803
3241
  },
2804
- id: cliFlag48
3242
+ id: cliFlag56
2805
3243
  };
2806
3244
 
2807
3245
  // src/options/override-fps.tsx
2808
- import { jsx as jsx45, Fragment as Fragment45 } from "react/jsx-runtime";
3246
+ import { jsx as jsx53, Fragment as Fragment53 } from "react/jsx-runtime";
2809
3247
  var currentFps = null;
2810
- var cliFlag49 = "fps";
3248
+ var cliFlag57 = "fps";
2811
3249
  var overrideFpsOption = {
2812
3250
  name: "Override FPS",
2813
- cliFlag: cliFlag49,
2814
- description: () => /* @__PURE__ */ jsx45(Fragment45, {
3251
+ cliFlag: cliFlag57,
3252
+ description: () => /* @__PURE__ */ jsx53(Fragment53, {
2815
3253
  children: "Overrides the frames per second of the composition."
2816
3254
  }),
2817
3255
  ssrName: null,
2818
3256
  docLink: "https://www.remotion.dev/docs/config#overridefps",
2819
3257
  type: null,
2820
3258
  getValue: ({ commandLine }) => {
2821
- if (commandLine[cliFlag49] !== undefined) {
2822
- const value3 = commandLine[cliFlag49];
3259
+ if (commandLine[cliFlag57] !== undefined) {
3260
+ const value3 = commandLine[cliFlag57];
2823
3261
  validateFps(value3, "in --fps flag", false);
2824
3262
  return {
2825
3263
  source: "cli",
@@ -2841,25 +3279,25 @@ var overrideFpsOption = {
2841
3279
  validateFps(fps, "in Config.overrideFps()", false);
2842
3280
  currentFps = fps;
2843
3281
  },
2844
- id: cliFlag49
3282
+ id: cliFlag57
2845
3283
  };
2846
3284
 
2847
3285
  // src/options/override-height.tsx
2848
- import { jsx as jsx46, Fragment as Fragment46 } from "react/jsx-runtime";
3286
+ import { jsx as jsx54, Fragment as Fragment54 } from "react/jsx-runtime";
2849
3287
  var currentHeight = null;
2850
- var cliFlag50 = "height";
3288
+ var cliFlag58 = "height";
2851
3289
  var overrideHeightOption = {
2852
3290
  name: "Override Height",
2853
- cliFlag: cliFlag50,
2854
- description: () => /* @__PURE__ */ jsx46(Fragment46, {
3291
+ cliFlag: cliFlag58,
3292
+ description: () => /* @__PURE__ */ jsx54(Fragment54, {
2855
3293
  children: "Overrides the height of the composition."
2856
3294
  }),
2857
3295
  ssrName: null,
2858
3296
  docLink: "https://www.remotion.dev/docs/config#overrideheight",
2859
3297
  type: null,
2860
3298
  getValue: ({ commandLine }) => {
2861
- if (commandLine[cliFlag50] !== undefined) {
2862
- const value3 = commandLine[cliFlag50];
3299
+ if (commandLine[cliFlag58] !== undefined) {
3300
+ const value3 = commandLine[cliFlag58];
2863
3301
  validateDimension(value3, "height", "in --height flag");
2864
3302
  return {
2865
3303
  source: "cli",
@@ -2881,25 +3319,25 @@ var overrideHeightOption = {
2881
3319
  validateDimension(height, "height", "in Config.overrideHeight()");
2882
3320
  currentHeight = height;
2883
3321
  },
2884
- id: cliFlag50
3322
+ id: cliFlag58
2885
3323
  };
2886
3324
 
2887
3325
  // src/options/override-width.tsx
2888
- import { jsx as jsx47, Fragment as Fragment47 } from "react/jsx-runtime";
3326
+ import { jsx as jsx55, Fragment as Fragment55 } from "react/jsx-runtime";
2889
3327
  var currentWidth = null;
2890
- var cliFlag51 = "width";
3328
+ var cliFlag59 = "width";
2891
3329
  var overrideWidthOption = {
2892
3330
  name: "Override Width",
2893
- cliFlag: cliFlag51,
2894
- description: () => /* @__PURE__ */ jsx47(Fragment47, {
3331
+ cliFlag: cliFlag59,
3332
+ description: () => /* @__PURE__ */ jsx55(Fragment55, {
2895
3333
  children: "Overrides the width of the composition."
2896
3334
  }),
2897
3335
  ssrName: null,
2898
3336
  docLink: "https://www.remotion.dev/docs/config#overridewidth",
2899
3337
  type: null,
2900
3338
  getValue: ({ commandLine }) => {
2901
- if (commandLine[cliFlag51] !== undefined) {
2902
- const value3 = commandLine[cliFlag51];
3339
+ if (commandLine[cliFlag59] !== undefined) {
3340
+ const value3 = commandLine[cliFlag59];
2903
3341
  validateDimension(value3, "width", "in --width flag");
2904
3342
  return {
2905
3343
  source: "cli",
@@ -2921,13 +3359,13 @@ var overrideWidthOption = {
2921
3359
  validateDimension(width, "width", "in Config.overrideWidth()");
2922
3360
  currentWidth = width;
2923
3361
  },
2924
- id: cliFlag51
3362
+ id: cliFlag59
2925
3363
  };
2926
3364
 
2927
3365
  // src/options/overwrite.tsx
2928
- import { jsx as jsx48, jsxs as jsxs30, Fragment as Fragment48 } from "react/jsx-runtime";
3366
+ import { jsx as jsx56, jsxs as jsxs36, Fragment as Fragment56 } from "react/jsx-runtime";
2929
3367
  var shouldOverwrite = null;
2930
- var cliFlag52 = "overwrite";
3368
+ var cliFlag60 = "overwrite";
2931
3369
  var validate2 = (value3) => {
2932
3370
  if (typeof value3 !== "boolean") {
2933
3371
  throw new Error(`overwriteExisting must be a boolean but got ${typeof value3} (${value3})`);
@@ -2935,15 +3373,15 @@ var validate2 = (value3) => {
2935
3373
  };
2936
3374
  var overwriteOption = {
2937
3375
  name: "Overwrite output",
2938
- cliFlag: cliFlag52,
2939
- description: () => /* @__PURE__ */ jsxs30(Fragment48, {
3376
+ cliFlag: cliFlag60,
3377
+ description: () => /* @__PURE__ */ jsxs36(Fragment56, {
2940
3378
  children: [
2941
3379
  "If set to ",
2942
- /* @__PURE__ */ jsx48("code", {
3380
+ /* @__PURE__ */ jsx56("code", {
2943
3381
  children: "false"
2944
3382
  }),
2945
3383
  ", will prevent rendering to a path that already exists. Default is ",
2946
- /* @__PURE__ */ jsx48("code", {
3384
+ /* @__PURE__ */ jsx56("code", {
2947
3385
  children: "true"
2948
3386
  }),
2949
3387
  "."
@@ -2953,29 +3391,89 @@ var overwriteOption = {
2953
3391
  docLink: "https://www.remotion.dev/docs/config#setoverwriteoutput",
2954
3392
  type: false,
2955
3393
  getValue: ({ commandLine }, defaultValue2) => {
2956
- if (commandLine[cliFlag52] !== undefined) {
2957
- validate2(commandLine[cliFlag52]);
3394
+ if (commandLine[cliFlag60] !== undefined) {
3395
+ validate2(commandLine[cliFlag60]);
3396
+ return {
3397
+ source: "cli",
3398
+ value: commandLine[cliFlag60]
3399
+ };
3400
+ }
3401
+ if (shouldOverwrite !== null) {
3402
+ return {
3403
+ source: "config",
3404
+ value: shouldOverwrite
3405
+ };
3406
+ }
3407
+ return {
3408
+ source: "default",
3409
+ value: defaultValue2
3410
+ };
3411
+ },
3412
+ setConfig: (value3) => {
3413
+ validate2(value3);
3414
+ shouldOverwrite = value3;
3415
+ },
3416
+ id: cliFlag60
3417
+ };
3418
+
3419
+ // src/options/package-manager.tsx
3420
+ import { jsx as jsx57, jsxs as jsxs37, Fragment as Fragment57 } from "react/jsx-runtime";
3421
+ var cliFlag61 = "package-manager";
3422
+ var currentPackageManager = null;
3423
+ var packageManagerOption = {
3424
+ name: "Package Manager",
3425
+ cliFlag: cliFlag61,
3426
+ description: () => {
3427
+ return /* @__PURE__ */ jsxs37(Fragment57, {
3428
+ children: [
3429
+ "Forces a specific package manager to be used. By default, Remotion will auto-detect the package manager based on your lockfile.",
3430
+ /* @__PURE__ */ jsx57("br", {}),
3431
+ "Acceptable values are ",
3432
+ /* @__PURE__ */ jsx57("code", {
3433
+ children: "npm"
3434
+ }),
3435
+ ", ",
3436
+ /* @__PURE__ */ jsx57("code", {
3437
+ children: "yarn"
3438
+ }),
3439
+ ",",
3440
+ " ",
3441
+ /* @__PURE__ */ jsx57("code", {
3442
+ children: "pnpm"
3443
+ }),
3444
+ " and ",
3445
+ /* @__PURE__ */ jsx57("code", {
3446
+ children: "bun"
3447
+ }),
3448
+ "."
3449
+ ]
3450
+ });
3451
+ },
3452
+ ssrName: "packageManager",
3453
+ docLink: "https://www.remotion.dev/docs/cli/upgrade#--package-manager",
3454
+ getValue: ({ commandLine }) => {
3455
+ if (commandLine[cliFlag61] !== undefined) {
2958
3456
  return {
2959
3457
  source: "cli",
2960
- value: commandLine[cliFlag52]
3458
+ value: commandLine[cliFlag61]
2961
3459
  };
2962
3460
  }
2963
- if (shouldOverwrite !== null) {
3461
+ if (currentPackageManager !== null) {
2964
3462
  return {
2965
3463
  source: "config",
2966
- value: shouldOverwrite
3464
+ value: currentPackageManager
2967
3465
  };
2968
3466
  }
2969
3467
  return {
2970
3468
  source: "default",
2971
- value: defaultValue2
3469
+ value: null
2972
3470
  };
2973
3471
  },
2974
3472
  setConfig: (value3) => {
2975
- validate2(value3);
2976
- shouldOverwrite = value3;
3473
+ currentPackageManager = value3;
2977
3474
  },
2978
- id: cliFlag52
3475
+ type: "",
3476
+ id: cliFlag61
2979
3477
  };
2980
3478
 
2981
3479
  // src/pixel-format.ts
@@ -2998,17 +3496,17 @@ var validPixelFormatsForCodec = (codec) => {
2998
3496
  };
2999
3497
 
3000
3498
  // src/options/pixel-format.tsx
3001
- import { jsx as jsx49, jsxs as jsxs31, Fragment as Fragment49 } from "react/jsx-runtime";
3499
+ import { jsx as jsx58, jsxs as jsxs38, Fragment as Fragment58 } from "react/jsx-runtime";
3002
3500
  var currentPixelFormat = DEFAULT_PIXEL_FORMAT;
3003
- var cliFlag53 = "pixel-format";
3501
+ var cliFlag62 = "pixel-format";
3004
3502
  var pixelFormatOption = {
3005
3503
  name: "Pixel format",
3006
- cliFlag: cliFlag53,
3007
- description: () => /* @__PURE__ */ jsxs31(Fragment49, {
3504
+ cliFlag: cliFlag62,
3505
+ description: () => /* @__PURE__ */ jsxs38(Fragment58, {
3008
3506
  children: [
3009
3507
  "Sets the pixel format in FFmpeg. See",
3010
3508
  " ",
3011
- /* @__PURE__ */ jsx49("a", {
3509
+ /* @__PURE__ */ jsx58("a", {
3012
3510
  href: "https://trac.ffmpeg.org/wiki/Chroma%20Subsampling",
3013
3511
  children: "the FFmpeg docs for an explanation"
3014
3512
  }),
@@ -3021,10 +3519,10 @@ var pixelFormatOption = {
3021
3519
  docLink: "https://www.remotion.dev/docs/config#setpixelformat",
3022
3520
  type: DEFAULT_PIXEL_FORMAT,
3023
3521
  getValue: ({ commandLine }) => {
3024
- if (commandLine[cliFlag53] !== undefined) {
3522
+ if (commandLine[cliFlag62] !== undefined) {
3025
3523
  return {
3026
3524
  source: "cli",
3027
- value: commandLine[cliFlag53]
3525
+ value: commandLine[cliFlag62]
3028
3526
  };
3029
3527
  }
3030
3528
  if (currentPixelFormat !== DEFAULT_PIXEL_FORMAT) {
@@ -3044,25 +3542,62 @@ var pixelFormatOption = {
3044
3542
  }
3045
3543
  currentPixelFormat = value3;
3046
3544
  },
3047
- id: cliFlag53
3545
+ id: cliFlag62
3546
+ };
3547
+
3548
+ // src/options/port.tsx
3549
+ import { jsx as jsx59, Fragment as Fragment59 } from "react/jsx-runtime";
3550
+ var cliFlag63 = "port";
3551
+ var currentPort = null;
3552
+ var portOption = {
3553
+ name: "Port",
3554
+ cliFlag: cliFlag63,
3555
+ description: () => /* @__PURE__ */ jsx59(Fragment59, {
3556
+ children: "Set a custom HTTP server port for the Studio or the render process. If not defined, Remotion will try to find a free port."
3557
+ }),
3558
+ ssrName: null,
3559
+ docLink: "https://www.remotion.dev/docs/config#setstudioport",
3560
+ getValue: ({ commandLine }) => {
3561
+ if (commandLine[cliFlag63] !== undefined) {
3562
+ return {
3563
+ source: "cli",
3564
+ value: commandLine[cliFlag63]
3565
+ };
3566
+ }
3567
+ if (currentPort !== null) {
3568
+ return {
3569
+ source: "config",
3570
+ value: currentPort
3571
+ };
3572
+ }
3573
+ return {
3574
+ source: "default",
3575
+ value: null
3576
+ };
3577
+ },
3578
+ setConfig: (value3) => {
3579
+ currentPort = value3;
3580
+ },
3581
+ type: 0,
3582
+ id: cliFlag63
3048
3583
  };
3049
3584
 
3050
3585
  // src/options/prefer-lossless.tsx
3051
- import { jsx as jsx50, jsxs as jsxs32, Fragment as Fragment50 } from "react/jsx-runtime";
3052
- var cliFlag54 = "prefer-lossless";
3586
+ import { jsx as jsx60, jsxs as jsxs39, Fragment as Fragment60 } from "react/jsx-runtime";
3587
+ var cliFlag64 = "prefer-lossless";
3053
3588
  var input = false;
3054
3589
  var preferLosslessAudioOption = {
3055
3590
  name: "Prefer lossless",
3056
- cliFlag: cliFlag54,
3057
- description: () => /* @__PURE__ */ jsxs32(Fragment50, {
3591
+ cliFlag: cliFlag64,
3592
+ description: () => /* @__PURE__ */ jsxs39(Fragment60, {
3058
3593
  children: [
3059
3594
  "Uses a lossless audio codec, if one is available for the codec. If you set",
3060
- /* @__PURE__ */ jsx50("code", {
3595
+ /* @__PURE__ */ jsx60("code", {
3061
3596
  children: "audioCodec"
3062
3597
  }),
3063
3598
  ", it takes priority over",
3064
3599
  " ",
3065
- /* @__PURE__ */ jsx50("code", {
3600
+ /* @__PURE__ */ jsx60("code", {
3066
3601
  children: "preferLossless"
3067
3602
  }),
3068
3603
  "."
@@ -3072,7 +3607,7 @@ var preferLosslessAudioOption = {
3072
3607
  type: false,
3073
3608
  ssrName: "preferLossless",
3074
3609
  getValue: ({ commandLine }) => {
3075
- if (commandLine[cliFlag54]) {
3610
+ if (commandLine[cliFlag64]) {
3076
3611
  return { value: true, source: "cli" };
3077
3612
  }
3078
3613
  if (input === true) {
@@ -3083,11 +3618,57 @@ var preferLosslessAudioOption = {
3083
3618
  setConfig: (val) => {
3084
3619
  input = val;
3085
3620
  },
3086
- id: cliFlag54
3621
+ id: cliFlag64
3622
+ };
3623
+
3624
+ // src/options/props.tsx
3625
+ import { jsx as jsx61, jsxs as jsxs40, Fragment as Fragment61 } from "react/jsx-runtime";
3626
+ var cliFlag65 = "props";
3627
+ var propsOption = {
3628
+ name: "Input Props",
3629
+ cliFlag: cliFlag65,
3630
+ description: () => /* @__PURE__ */ jsxs40(Fragment61, {
3631
+ children: [
3632
+ "Input Props to pass to the selected composition of your video. Must be a serialized JSON string (",
3633
+ /* @__PURE__ */ jsxs40("code", {
3634
+ children: [
3635
+ "--props='",
3636
+ "{",
3637
+ '"hello": "world"',
3638
+ "}",
3639
+ "'"
3640
+ ]
3641
+ }),
3642
+ ") or a path to a JSON file (",
3643
+ /* @__PURE__ */ jsx61("code", {
3644
+ children: "./path/to/props.json"
3645
+ }),
3646
+ ")."
3647
+ ]
3648
+ }),
3649
+ ssrName: null,
3650
+ docLink: "https://www.remotion.dev/docs/passing-props#passing-input-props-in-the-cli",
3651
+ getValue: ({ commandLine }) => {
3652
+ if (commandLine[cliFlag65] !== undefined) {
3653
+ return {
3654
+ source: "cli",
3655
+ value: commandLine[cliFlag65]
3656
+ };
3657
+ }
3658
+ return {
3659
+ source: "default",
3660
+ value: null
3661
+ };
3662
+ },
3663
+ setConfig: () => {
3664
+ throw new Error("setProps is not supported. Pass --props via the CLI instead.");
3665
+ },
3666
+ type: "",
3667
+ id: cliFlag65
3087
3668
  };
3088
3669
 
3089
3670
  // src/options/prores-profile.tsx
3090
- import { jsx as jsx51, jsxs as jsxs33, Fragment as Fragment51 } from "react/jsx-runtime";
3671
+ import { jsx as jsx62, jsxs as jsxs41, Fragment as Fragment62 } from "react/jsx-runtime";
3091
3672
  var validProResProfiles = [
3092
3673
  "4444-xq",
3093
3674
  "4444",
@@ -3097,14 +3678,14 @@ var validProResProfiles = [
3097
3678
  "proxy"
3098
3679
  ];
3099
3680
  var proResProfile;
3100
- var cliFlag55 = "prores-profile";
3681
+ var cliFlag66 = "prores-profile";
3101
3682
  var proResProfileOption = {
3102
3683
  name: "ProRes profile",
3103
- cliFlag: cliFlag55,
3104
- description: () => /* @__PURE__ */ jsxs33(Fragment51, {
3684
+ cliFlag: cliFlag66,
3685
+ description: () => /* @__PURE__ */ jsxs41(Fragment62, {
3105
3686
  children: [
3106
3687
  "Set the ProRes profile. This option is only valid if the codec has been set to ",
3107
- /* @__PURE__ */ jsx51("code", {
3688
+ /* @__PURE__ */ jsx62("code", {
3108
3689
  children: "prores"
3109
3690
  }),
3110
3691
  ". Possible values:",
@@ -3112,12 +3693,12 @@ var proResProfileOption = {
3112
3693
  validProResProfiles.map((p) => `"${p}"`).join(", "),
3113
3694
  ". Default:",
3114
3695
  " ",
3115
- /* @__PURE__ */ jsx51("code", {
3696
+ /* @__PURE__ */ jsx62("code", {
3116
3697
  children: '"hq"'
3117
3698
  }),
3118
3699
  ". See",
3119
3700
  " ",
3120
- /* @__PURE__ */ jsx51("a", {
3701
+ /* @__PURE__ */ jsx62("a", {
3121
3702
  href: "https://video.stackexchange.com/a/14715",
3122
3703
  children: "here"
3123
3704
  }),
@@ -3128,10 +3709,10 @@ var proResProfileOption = {
3128
3709
  docLink: "https://www.remotion.dev/docs/config#setproresprofile",
3129
3710
  type: undefined,
3130
3711
  getValue: ({ commandLine }) => {
3131
- if (commandLine[cliFlag55] !== undefined) {
3712
+ if (commandLine[cliFlag66] !== undefined) {
3132
3713
  return {
3133
3714
  source: "cli",
3134
- value: String(commandLine[cliFlag55])
3715
+ value: String(commandLine[cliFlag66])
3135
3716
  };
3136
3717
  }
3137
3718
  if (proResProfile !== undefined) {
@@ -3148,24 +3729,24 @@ var proResProfileOption = {
3148
3729
  setConfig: (value3) => {
3149
3730
  proResProfile = value3;
3150
3731
  },
3151
- id: cliFlag55
3732
+ id: cliFlag66
3152
3733
  };
3153
3734
 
3154
3735
  // src/options/public-dir.tsx
3155
- import { jsx as jsx52, jsxs as jsxs34, Fragment as Fragment52 } from "react/jsx-runtime";
3156
- var cliFlag56 = "public-dir";
3736
+ import { jsx as jsx63, jsxs as jsxs42, Fragment as Fragment63 } from "react/jsx-runtime";
3737
+ var cliFlag67 = "public-dir";
3157
3738
  var currentPublicDir = null;
3158
3739
  var publicDirOption = {
3159
3740
  name: "Public Directory",
3160
- cliFlag: cliFlag56,
3741
+ cliFlag: cliFlag67,
3161
3742
  description: () => {
3162
- return /* @__PURE__ */ jsxs34(Fragment52, {
3743
+ return /* @__PURE__ */ jsxs42(Fragment63, {
3163
3744
  children: [
3164
3745
  "Define the location of the",
3165
3746
  " ",
3166
- /* @__PURE__ */ jsx52("a", {
3747
+ /* @__PURE__ */ jsx63("a", {
3167
3748
  href: "/docs/terminology/public-dir",
3168
- children: /* @__PURE__ */ jsx52("code", {
3749
+ children: /* @__PURE__ */ jsx63("code", {
3169
3750
  children: "public/ directory"
3170
3751
  })
3171
3752
  }),
@@ -3176,10 +3757,10 @@ var publicDirOption = {
3176
3757
  ssrName: "publicDir",
3177
3758
  docLink: "https://www.remotion.dev/docs/terminology/public-dir",
3178
3759
  getValue: ({ commandLine }) => {
3179
- if (commandLine[cliFlag56] !== undefined) {
3760
+ if (commandLine[cliFlag67] !== undefined) {
3180
3761
  return {
3181
3762
  source: "cli",
3182
- value: commandLine[cliFlag56]
3763
+ value: commandLine[cliFlag67]
3183
3764
  };
3184
3765
  }
3185
3766
  if (currentPublicDir !== null) {
@@ -3197,20 +3778,20 @@ var publicDirOption = {
3197
3778
  currentPublicDir = value3;
3198
3779
  },
3199
3780
  type: "",
3200
- id: cliFlag56
3781
+ id: cliFlag67
3201
3782
  };
3202
3783
 
3203
3784
  // src/options/public-license-key.tsx
3204
- import { jsx as jsx53, jsxs as jsxs35, Fragment as Fragment53 } from "react/jsx-runtime";
3205
- var cliFlag57 = "public-license-key";
3785
+ import { jsx as jsx64, jsxs as jsxs43, Fragment as Fragment64 } from "react/jsx-runtime";
3786
+ var cliFlag68 = "public-license-key";
3206
3787
  var currentPublicLicenseKey = null;
3207
3788
  var publicLicenseKeyOption = {
3208
3789
  name: "Public License Key",
3209
- cliFlag: cliFlag57,
3210
- description: () => /* @__PURE__ */ jsxs35(Fragment53, {
3790
+ cliFlag: cliFlag68,
3791
+ description: () => /* @__PURE__ */ jsxs43(Fragment64, {
3211
3792
  children: [
3212
3793
  'The public license key for your company license, obtained from the "Usage" tab on ',
3213
- /* @__PURE__ */ jsx53("a", {
3794
+ /* @__PURE__ */ jsx64("a", {
3214
3795
  href: "https://remotion.pro/dashboard",
3215
3796
  children: "remotion.pro"
3216
3797
  }),
@@ -3220,10 +3801,10 @@ var publicLicenseKeyOption = {
3220
3801
  ssrName: "publicLicenseKey",
3221
3802
  docLink: "https://www.remotion.dev/docs/licensing",
3222
3803
  getValue: ({ commandLine }) => {
3223
- if (commandLine[cliFlag57] !== undefined) {
3804
+ if (commandLine[cliFlag68] !== undefined) {
3224
3805
  return {
3225
3806
  source: "cli",
3226
- value: commandLine[cliFlag57]
3807
+ value: commandLine[cliFlag68]
3227
3808
  };
3228
3809
  }
3229
3810
  if (currentPublicLicenseKey !== null) {
@@ -3244,29 +3825,29 @@ var publicLicenseKeyOption = {
3244
3825
  currentPublicLicenseKey = value3;
3245
3826
  },
3246
3827
  type: null,
3247
- id: cliFlag57
3828
+ id: cliFlag68
3248
3829
  };
3249
3830
 
3250
3831
  // src/options/public-path.tsx
3251
- import { jsx as jsx54, jsxs as jsxs36, Fragment as Fragment54 } from "react/jsx-runtime";
3252
- var cliFlag58 = "public-path";
3832
+ import { jsx as jsx65, jsxs as jsxs44, Fragment as Fragment65 } from "react/jsx-runtime";
3833
+ var cliFlag69 = "public-path";
3253
3834
  var currentPublicPath = null;
3254
3835
  var publicPathOption = {
3255
3836
  name: "Public Path",
3256
- cliFlag: cliFlag58,
3837
+ cliFlag: cliFlag69,
3257
3838
  description: () => {
3258
- return /* @__PURE__ */ jsxs36(Fragment54, {
3839
+ return /* @__PURE__ */ jsxs44(Fragment65, {
3259
3840
  children: [
3260
3841
  "The path of the URL where the bundle is going to be hosted. By default it is ",
3261
- /* @__PURE__ */ jsx54("code", {
3842
+ /* @__PURE__ */ jsx65("code", {
3262
3843
  children: "/"
3263
3844
  }),
3264
3845
  ", meaning that the bundle is going to be hosted at the root of the domain (e.g. ",
3265
- /* @__PURE__ */ jsx54("code", {
3846
+ /* @__PURE__ */ jsx65("code", {
3266
3847
  children: "https://localhost:3000/"
3267
3848
  }),
3268
3849
  "). If you are deploying to a subdirectory (e.g. ",
3269
- /* @__PURE__ */ jsx54("code", {
3850
+ /* @__PURE__ */ jsx65("code", {
3270
3851
  children: "/sites/my-site/"
3271
3852
  }),
3272
3853
  "), you should set this to the subdirectory."
@@ -3276,10 +3857,10 @@ var publicPathOption = {
3276
3857
  ssrName: "publicPath",
3277
3858
  docLink: "https://www.remotion.dev/docs/renderer",
3278
3859
  getValue: ({ commandLine }) => {
3279
- if (commandLine[cliFlag58] !== undefined) {
3860
+ if (commandLine[cliFlag69] !== undefined) {
3280
3861
  return {
3281
3862
  source: "cli",
3282
- value: commandLine[cliFlag58]
3863
+ value: commandLine[cliFlag69]
3283
3864
  };
3284
3865
  }
3285
3866
  if (currentPublicPath !== null) {
@@ -3297,29 +3878,29 @@ var publicPathOption = {
3297
3878
  currentPublicPath = value3;
3298
3879
  },
3299
3880
  type: "",
3300
- id: cliFlag58
3881
+ id: cliFlag69
3301
3882
  };
3302
3883
 
3303
3884
  // src/options/repro.tsx
3304
- import { jsx as jsx55, Fragment as Fragment55 } from "react/jsx-runtime";
3885
+ import { jsx as jsx66, Fragment as Fragment66 } from "react/jsx-runtime";
3305
3886
  var enableRepro = false;
3306
3887
  var setRepro = (should) => {
3307
3888
  enableRepro = should;
3308
3889
  };
3309
- var cliFlag59 = "repro";
3890
+ var cliFlag70 = "repro";
3310
3891
  var reproOption = {
3311
3892
  name: "Create reproduction",
3312
- cliFlag: cliFlag59,
3313
- description: () => /* @__PURE__ */ jsx55(Fragment55, {
3893
+ cliFlag: cliFlag70,
3894
+ description: () => /* @__PURE__ */ jsx66(Fragment66, {
3314
3895
  children: "Create a ZIP that you can submit to Remotion if asked for a reproduction."
3315
3896
  }),
3316
3897
  ssrName: "repro",
3317
3898
  docLink: "https://www.remotion.dev/docs/render-media#repro",
3318
3899
  type: false,
3319
3900
  getValue: ({ commandLine }) => {
3320
- if (commandLine[cliFlag59] !== undefined) {
3901
+ if (commandLine[cliFlag70] !== undefined) {
3321
3902
  return {
3322
- value: commandLine[cliFlag59],
3903
+ value: commandLine[cliFlag70],
3323
3904
  source: "cli"
3324
3905
  };
3325
3906
  }
@@ -3335,13 +3916,87 @@ var reproOption = {
3335
3916
  };
3336
3917
  },
3337
3918
  setConfig: setRepro,
3338
- id: cliFlag59
3919
+ id: cliFlag70
3920
+ };
3921
+
3922
+ // src/options/rspack.tsx
3923
+ import { jsx as jsx67, Fragment as Fragment67 } from "react/jsx-runtime";
3924
+ var rspackEnabled = false;
3925
+ var cliFlag71 = "experimental-rspack";
3926
+ var rspackOption = {
3927
+ name: "Experimental Rspack",
3928
+ cliFlag: cliFlag71,
3929
+ description: () => /* @__PURE__ */ jsx67(Fragment67, {
3930
+ children: "Uses Rspack instead of Webpack as the bundler for the Studio or bundle."
3931
+ }),
3932
+ ssrName: null,
3933
+ docLink: null,
3934
+ type: false,
3935
+ getValue: ({ commandLine }) => {
3936
+ if (commandLine[cliFlag71] !== undefined) {
3937
+ rspackEnabled = true;
3938
+ return {
3939
+ value: commandLine[cliFlag71],
3940
+ source: "cli"
3941
+ };
3942
+ }
3943
+ return {
3944
+ value: rspackEnabled,
3945
+ source: "config"
3946
+ };
3947
+ },
3948
+ setConfig(value3) {
3949
+ rspackEnabled = value3;
3950
+ },
3951
+ id: cliFlag71
3952
+ };
3953
+
3954
+ // src/options/runs.tsx
3955
+ import { jsx as jsx68, jsxs as jsxs45, Fragment as Fragment68 } from "react/jsx-runtime";
3956
+ var DEFAULT_RUNS = 3;
3957
+ var currentRuns = DEFAULT_RUNS;
3958
+ var cliFlag72 = "runs";
3959
+ var runsOption = {
3960
+ name: "Benchmark runs",
3961
+ cliFlag: cliFlag72,
3962
+ description: () => /* @__PURE__ */ jsxs45(Fragment68, {
3963
+ children: [
3964
+ "Specify how many times the video should be rendered during a benchmark. Default ",
3965
+ /* @__PURE__ */ jsx68("code", {
3966
+ children: DEFAULT_RUNS
3967
+ }),
3968
+ "."
3969
+ ]
3970
+ }),
3971
+ ssrName: null,
3972
+ docLink: "https://www.remotion.dev/docs/cli/benchmark#--runs",
3973
+ type: DEFAULT_RUNS,
3974
+ getValue: ({ commandLine }) => {
3975
+ if (commandLine[cliFlag72] !== undefined) {
3976
+ const value3 = Number(commandLine[cliFlag72]);
3977
+ if (isNaN(value3) || value3 < 1) {
3978
+ throw new Error(`--runs must be a positive number, but got ${commandLine[cliFlag72]}`);
3979
+ }
3980
+ return { value: value3, source: "cli" };
3981
+ }
3982
+ if (currentRuns !== DEFAULT_RUNS) {
3983
+ return { value: currentRuns, source: "config" };
3984
+ }
3985
+ return { value: DEFAULT_RUNS, source: "default" };
3986
+ },
3987
+ setConfig: (value3) => {
3988
+ if (typeof value3 !== "number" || isNaN(value3) || value3 < 1) {
3989
+ throw new Error(`Runs must be a positive number, but got ${value3}`);
3990
+ }
3991
+ currentRuns = value3;
3992
+ },
3993
+ id: cliFlag72
3339
3994
  };
3340
3995
 
3341
3996
  // src/options/scale.tsx
3342
- import { jsx as jsx56, jsxs as jsxs37, Fragment as Fragment56 } from "react/jsx-runtime";
3997
+ import { jsx as jsx69, jsxs as jsxs46, Fragment as Fragment69 } from "react/jsx-runtime";
3343
3998
  var currentScale = 1;
3344
- var cliFlag60 = "scale";
3999
+ var cliFlag73 = "scale";
3345
4000
  var validateScale = (value3) => {
3346
4001
  if (typeof value3 !== "number") {
3347
4002
  throw new Error("scale must be a number.");
@@ -3349,15 +4004,15 @@ var validateScale = (value3) => {
3349
4004
  };
3350
4005
  var scaleOption = {
3351
4006
  name: "Scale",
3352
- cliFlag: cliFlag60,
3353
- description: () => /* @__PURE__ */ jsxs37(Fragment56, {
4007
+ cliFlag: cliFlag73,
4008
+ description: () => /* @__PURE__ */ jsxs46(Fragment69, {
3354
4009
  children: [
3355
4010
  "Scales the output dimensions by a factor. For example, a 1280x720px frame will become a 1920x1080px frame with a scale factor of ",
3356
- /* @__PURE__ */ jsx56("code", {
4011
+ /* @__PURE__ */ jsx69("code", {
3357
4012
  children: "1.5"
3358
4013
  }),
3359
4014
  ". See ",
3360
- /* @__PURE__ */ jsx56("a", {
4015
+ /* @__PURE__ */ jsx69("a", {
3361
4016
  href: "https://www.remotion.dev/docs/scaling",
3362
4017
  children: "Scaling"
3363
4018
  }),
@@ -3368,11 +4023,11 @@ var scaleOption = {
3368
4023
  docLink: "https://www.remotion.dev/docs/scaling",
3369
4024
  type: 0,
3370
4025
  getValue: ({ commandLine }) => {
3371
- if (commandLine[cliFlag60] !== undefined) {
3372
- validateScale(commandLine[cliFlag60]);
4026
+ if (commandLine[cliFlag73] !== undefined) {
4027
+ validateScale(commandLine[cliFlag73]);
3373
4028
  return {
3374
4029
  source: "cli",
3375
- value: commandLine[cliFlag60]
4030
+ value: commandLine[cliFlag73]
3376
4031
  };
3377
4032
  }
3378
4033
  if (currentScale !== null) {
@@ -3389,24 +4044,86 @@ var scaleOption = {
3389
4044
  setConfig: (scale) => {
3390
4045
  currentScale = scale;
3391
4046
  },
3392
- id: cliFlag60
4047
+ id: cliFlag73
4048
+ };
4049
+
4050
+ // src/options/still-frame.tsx
4051
+ import { NoReactInternals as NoReactInternals3 } from "remotion/no-react";
4052
+ import { jsx as jsx70, jsxs as jsxs47, Fragment as Fragment70 } from "react/jsx-runtime";
4053
+ var cliFlag74 = "frame";
4054
+ var currentFrame = null;
4055
+ var validate3 = (frame) => {
4056
+ NoReactInternals3.validateFrame({
4057
+ frame,
4058
+ durationInFrames: Infinity,
4059
+ allowFloats: false
4060
+ });
4061
+ };
4062
+ var stillFrameOption = {
4063
+ name: "Frame",
4064
+ cliFlag: cliFlag74,
4065
+ description: () => /* @__PURE__ */ jsxs47(Fragment70, {
4066
+ children: [
4067
+ "Which frame should be rendered when rendering a still. Default",
4068
+ " ",
4069
+ /* @__PURE__ */ jsx70("code", {
4070
+ children: "0"
4071
+ }),
4072
+ ". From v3.2.27, negative values are allowed, with",
4073
+ " ",
4074
+ /* @__PURE__ */ jsx70("code", {
4075
+ children: "-1"
4076
+ }),
4077
+ " being the last frame."
4078
+ ]
4079
+ }),
4080
+ ssrName: "frame",
4081
+ docLink: "https://www.remotion.dev/docs/cli/still#--frame",
4082
+ getValue: ({ commandLine }) => {
4083
+ if (commandLine[cliFlag74] !== undefined) {
4084
+ const frame = Number(commandLine[cliFlag74]);
4085
+ validate3(frame);
4086
+ return {
4087
+ source: "cli",
4088
+ value: frame
4089
+ };
4090
+ }
4091
+ if (currentFrame !== null) {
4092
+ return {
4093
+ source: "config",
4094
+ value: currentFrame
4095
+ };
4096
+ }
4097
+ return {
4098
+ source: "default",
4099
+ value: null
4100
+ };
4101
+ },
4102
+ setConfig: (value3) => {
4103
+ if (value3 !== null) {
4104
+ validate3(value3);
4105
+ }
4106
+ currentFrame = value3;
4107
+ },
4108
+ type: 0,
4109
+ id: cliFlag74
3393
4110
  };
3394
4111
 
3395
4112
  // src/options/still-image-format.tsx
3396
- import { jsx as jsx57, jsxs as jsxs38, Fragment as Fragment57 } from "react/jsx-runtime";
4113
+ import { jsx as jsx71, jsxs as jsxs48, Fragment as Fragment71 } from "react/jsx-runtime";
3397
4114
  var currentStillImageFormat = null;
3398
- var cliFlag61 = "image-format";
4115
+ var cliFlag75 = "image-format";
3399
4116
  var stillImageFormatOption = {
3400
4117
  name: "Still Image Format",
3401
- cliFlag: cliFlag61,
3402
- description: () => /* @__PURE__ */ jsxs38(Fragment57, {
4118
+ cliFlag: cliFlag75,
4119
+ description: () => /* @__PURE__ */ jsxs48(Fragment71, {
3403
4120
  children: [
3404
4121
  "The image format to use when rendering a still. Must be one of",
3405
4122
  " ",
3406
4123
  validStillImageFormats.map((f) => `"${f}"`).join(", "),
3407
4124
  ". Default:",
3408
4125
  " ",
3409
- /* @__PURE__ */ jsx57("code", {
4126
+ /* @__PURE__ */ jsx71("code", {
3410
4127
  children: '"png"'
3411
4128
  }),
3412
4129
  "."
@@ -3416,8 +4133,8 @@ var stillImageFormatOption = {
3416
4133
  docLink: "https://www.remotion.dev/docs/renderer/render-still#imageformat",
3417
4134
  type: null,
3418
4135
  getValue: ({ commandLine }) => {
3419
- if (commandLine[cliFlag61] !== undefined) {
3420
- const value3 = commandLine[cliFlag61];
4136
+ if (commandLine[cliFlag75] !== undefined) {
4137
+ const value3 = commandLine[cliFlag75];
3421
4138
  if (!validStillImageFormats.includes(value3)) {
3422
4139
  throw new Error(`Invalid still image format: ${value3}. Must be one of: ${validStillImageFormats.join(", ")}`);
3423
4140
  }
@@ -3455,16 +4172,16 @@ var stillImageFormatOption = {
3455
4172
 
3456
4173
  // src/options/throw-if-site-exists.tsx
3457
4174
  var DEFAULT5 = false;
3458
- var cliFlag62 = "throw-if-site-exists";
4175
+ var cliFlag76 = "throw-if-site-exists";
3459
4176
  var throwIfSiteExistsOption = {
3460
- cliFlag: cliFlag62,
4177
+ cliFlag: cliFlag76,
3461
4178
  description: () => `Prevents accidential update of an existing site. If there are any files in the subfolder where the site should be placed, the function will throw.`,
3462
4179
  docLink: "https://remotion.dev/docs/lambda/deploy-site",
3463
4180
  getValue: ({ commandLine }) => {
3464
- if (commandLine[cliFlag62]) {
4181
+ if (commandLine[cliFlag76]) {
3465
4182
  return {
3466
4183
  source: "cli",
3467
- value: commandLine[cliFlag62]
4184
+ value: commandLine[cliFlag76]
3468
4185
  };
3469
4186
  }
3470
4187
  return {
@@ -3478,41 +4195,41 @@ var throwIfSiteExistsOption = {
3478
4195
  },
3479
4196
  ssrName: "throwIfSiteExists",
3480
4197
  type: false,
3481
- id: cliFlag62
4198
+ id: cliFlag76
3482
4199
  };
3483
4200
 
3484
4201
  // src/options/timeout.tsx
3485
- import { jsx as jsx58, jsxs as jsxs39, Fragment as Fragment58 } from "react/jsx-runtime";
4202
+ import { jsx as jsx72, jsxs as jsxs49, Fragment as Fragment72 } from "react/jsx-runtime";
3486
4203
  var currentTimeout = DEFAULT_TIMEOUT;
3487
- var validate3 = (value3) => {
4204
+ var validate4 = (value3) => {
3488
4205
  if (typeof value3 !== "number") {
3489
4206
  throw new Error("--timeout flag / setDelayRenderTimeoutInMilliseconds() must be a number, but got " + JSON.stringify(value3));
3490
4207
  }
3491
4208
  };
3492
- var cliFlag63 = "timeout";
4209
+ var cliFlag77 = "timeout";
3493
4210
  var delayRenderTimeoutInMillisecondsOption = {
3494
4211
  name: "delayRender() timeout",
3495
- cliFlag: cliFlag63,
3496
- description: () => /* @__PURE__ */ jsxs39(Fragment58, {
4212
+ cliFlag: cliFlag77,
4213
+ description: () => /* @__PURE__ */ jsxs49(Fragment72, {
3497
4214
  children: [
3498
4215
  "A number describing how long the render may take to resolve all",
3499
4216
  " ",
3500
- /* @__PURE__ */ jsx58("a", {
4217
+ /* @__PURE__ */ jsx72("a", {
3501
4218
  href: "https://remotion.dev/docs/delay-render",
3502
- children: /* @__PURE__ */ jsx58("code", {
4219
+ children: /* @__PURE__ */ jsx72("code", {
3503
4220
  children: "delayRender()"
3504
4221
  })
3505
4222
  }),
3506
4223
  " ",
3507
4224
  "calls",
3508
4225
  " ",
3509
- /* @__PURE__ */ jsx58("a", {
4226
+ /* @__PURE__ */ jsx72("a", {
3510
4227
  style: { fontSize: "inherit" },
3511
4228
  href: "https://remotion.dev/docs/timeout",
3512
4229
  children: "before it times out"
3513
4230
  }),
3514
4231
  ". Default: ",
3515
- /* @__PURE__ */ jsx58("code", {
4232
+ /* @__PURE__ */ jsx72("code", {
3516
4233
  children: "30000"
3517
4234
  })
3518
4235
  ]
@@ -3521,14 +4238,14 @@ var delayRenderTimeoutInMillisecondsOption = {
3521
4238
  docLink: "https://www.remotion.dev/docs/timeout",
3522
4239
  type: 0,
3523
4240
  getValue: ({ commandLine }) => {
3524
- if (commandLine[cliFlag63] !== undefined) {
4241
+ if (commandLine[cliFlag77] !== undefined) {
3525
4242
  return {
3526
4243
  source: "cli",
3527
- value: commandLine[cliFlag63]
4244
+ value: commandLine[cliFlag77]
3528
4245
  };
3529
4246
  }
3530
4247
  if (currentTimeout !== null) {
3531
- validate3(currentTimeout);
4248
+ validate4(currentTimeout);
3532
4249
  return {
3533
4250
  source: "config",
3534
4251
  value: currentTimeout
@@ -3540,30 +4257,30 @@ var delayRenderTimeoutInMillisecondsOption = {
3540
4257
  };
3541
4258
  },
3542
4259
  setConfig: (value3) => {
3543
- validate3(value3);
4260
+ validate4(value3);
3544
4261
  currentTimeout = value3;
3545
4262
  },
3546
- id: cliFlag63
4263
+ id: cliFlag77
3547
4264
  };
3548
4265
 
3549
4266
  // src/options/user-agent.tsx
3550
- import { jsx as jsx59, Fragment as Fragment59 } from "react/jsx-runtime";
4267
+ import { jsx as jsx73, Fragment as Fragment73 } from "react/jsx-runtime";
3551
4268
  var userAgent = null;
3552
- var cliFlag64 = "user-agent";
4269
+ var cliFlag78 = "user-agent";
3553
4270
  var userAgentOption = {
3554
4271
  name: "User agent",
3555
- cliFlag: cliFlag64,
3556
- description: () => /* @__PURE__ */ jsx59(Fragment59, {
4272
+ cliFlag: cliFlag78,
4273
+ description: () => /* @__PURE__ */ jsx73(Fragment73, {
3557
4274
  children: "Lets you set a custom user agent that the headless Chrome browser assumes."
3558
4275
  }),
3559
4276
  ssrName: "userAgent",
3560
4277
  docLink: "https://www.remotion.dev/docs/chromium-flags#--user-agent",
3561
4278
  type: null,
3562
4279
  getValue: ({ commandLine }) => {
3563
- if (commandLine[cliFlag64] !== undefined) {
4280
+ if (commandLine[cliFlag78] !== undefined) {
3564
4281
  return {
3565
4282
  source: "cli",
3566
- value: commandLine[cliFlag64]
4283
+ value: commandLine[cliFlag78]
3567
4284
  };
3568
4285
  }
3569
4286
  if (userAgent !== null) {
@@ -3580,30 +4297,60 @@ var userAgentOption = {
3580
4297
  setConfig: (value3) => {
3581
4298
  userAgent = value3;
3582
4299
  },
3583
- id: cliFlag64
4300
+ id: cliFlag78
4301
+ };
4302
+
4303
+ // src/options/version-flag.tsx
4304
+ import { jsx as jsx74, Fragment as Fragment74 } from "react/jsx-runtime";
4305
+ var cliFlag79 = "version";
4306
+ var versionFlagOption = {
4307
+ name: "Version",
4308
+ cliFlag: cliFlag79,
4309
+ description: () => /* @__PURE__ */ jsx74(Fragment74, {
4310
+ children: "Install a specific version. Also enables downgrading to an older version."
4311
+ }),
4312
+ ssrName: null,
4313
+ docLink: "https://www.remotion.dev/docs/cli/upgrade#--version",
4314
+ getValue: ({ commandLine }) => {
4315
+ if (commandLine[cliFlag79] !== undefined) {
4316
+ return {
4317
+ source: "cli",
4318
+ value: String(commandLine[cliFlag79])
4319
+ };
4320
+ }
4321
+ return {
4322
+ source: "default",
4323
+ value: null
4324
+ };
4325
+ },
4326
+ setConfig: () => {
4327
+ throw new Error("Cannot set version via config file");
4328
+ },
4329
+ type: "",
4330
+ id: cliFlag79
3584
4331
  };
3585
4332
 
3586
4333
  // src/options/video-bitrate.tsx
3587
- import { jsx as jsx60, jsxs as jsxs40, Fragment as Fragment60 } from "react/jsx-runtime";
4334
+ import { jsx as jsx75, jsxs as jsxs50, Fragment as Fragment75 } from "react/jsx-runtime";
3588
4335
  var videoBitrate = null;
3589
- var cliFlag65 = "video-bitrate";
4336
+ var cliFlag80 = "video-bitrate";
3590
4337
  var videoBitrateOption = {
3591
4338
  name: "Video Bitrate",
3592
- cliFlag: cliFlag65,
3593
- description: () => /* @__PURE__ */ jsxs40(Fragment60, {
4339
+ cliFlag: cliFlag80,
4340
+ description: () => /* @__PURE__ */ jsxs50(Fragment75, {
3594
4341
  children: [
3595
4342
  "Specify the target bitrate for the generated video. The syntax for FFmpeg",
3596
4343
  "'",
3597
4344
  "s",
3598
- /* @__PURE__ */ jsx60("code", {
4345
+ /* @__PURE__ */ jsx75("code", {
3599
4346
  children: "-b:v"
3600
4347
  }),
3601
4348
  " parameter should be used. FFmpeg may encode the video in a way that will not result in the exact video bitrate specified. Example values: ",
3602
- /* @__PURE__ */ jsx60("code", {
4349
+ /* @__PURE__ */ jsx75("code", {
3603
4350
  children: "512K"
3604
4351
  }),
3605
4352
  " for 512 kbps, ",
3606
- /* @__PURE__ */ jsx60("code", {
4353
+ /* @__PURE__ */ jsx75("code", {
3607
4354
  children: "1M"
3608
4355
  }),
3609
4356
  " for 1 Mbps."
@@ -3613,10 +4360,10 @@ var videoBitrateOption = {
3613
4360
  docLink: "https://www.remotion.dev/docs/renderer/render-media#videobitrate",
3614
4361
  type: "",
3615
4362
  getValue: ({ commandLine }) => {
3616
- if (commandLine[cliFlag65] !== undefined) {
4363
+ if (commandLine[cliFlag80] !== undefined) {
3617
4364
  return {
3618
4365
  source: "cli",
3619
- value: commandLine[cliFlag65]
4366
+ value: commandLine[cliFlag80]
3620
4367
  };
3621
4368
  }
3622
4369
  if (videoBitrate !== null) {
@@ -3633,33 +4380,33 @@ var videoBitrateOption = {
3633
4380
  setConfig: (bitrate) => {
3634
4381
  videoBitrate = bitrate;
3635
4382
  },
3636
- id: cliFlag65
4383
+ id: cliFlag80
3637
4384
  };
3638
4385
 
3639
4386
  // src/options/video-cache-size.tsx
3640
- import { jsx as jsx61, jsxs as jsxs41, Fragment as Fragment61 } from "react/jsx-runtime";
4387
+ import { jsx as jsx76, jsxs as jsxs51, Fragment as Fragment76 } from "react/jsx-runtime";
3641
4388
  var mediaCacheSizeInBytes = null;
3642
- var cliFlag66 = "media-cache-size-in-bytes";
4389
+ var cliFlag81 = "media-cache-size-in-bytes";
3643
4390
  var mediaCacheSizeInBytesOption = {
3644
4391
  name: "@remotion/media cache size",
3645
- cliFlag: cliFlag66,
3646
- description: () => /* @__PURE__ */ jsxs41(Fragment61, {
4392
+ cliFlag: cliFlag81,
4393
+ description: () => /* @__PURE__ */ jsxs51(Fragment76, {
3647
4394
  children: [
3648
4395
  "Specify the maximum size of the cache that ",
3649
- /* @__PURE__ */ jsx61("code", {
4396
+ /* @__PURE__ */ jsx76("code", {
3650
4397
  children: "<Video>"
3651
4398
  }),
3652
4399
  " and",
3653
4400
  " ",
3654
- /* @__PURE__ */ jsx61("code", {
4401
+ /* @__PURE__ */ jsx76("code", {
3655
4402
  children: "<Audio>"
3656
4403
  }),
3657
4404
  " from ",
3658
- /* @__PURE__ */ jsx61("code", {
4405
+ /* @__PURE__ */ jsx76("code", {
3659
4406
  children: "@remotion/media"
3660
4407
  }),
3661
4408
  " may use combined, in bytes. ",
3662
- /* @__PURE__ */ jsx61("br", {}),
4409
+ /* @__PURE__ */ jsx76("br", {}),
3663
4410
  "The default is half of the available system memory when the render starts."
3664
4411
  ]
3665
4412
  }),
@@ -3667,10 +4414,10 @@ var mediaCacheSizeInBytesOption = {
3667
4414
  docLink: "https://www.remotion.dev/docs/media/video#setting-the-cache-size",
3668
4415
  type: 0,
3669
4416
  getValue: ({ commandLine }) => {
3670
- if (commandLine[cliFlag66] !== undefined) {
4417
+ if (commandLine[cliFlag81] !== undefined) {
3671
4418
  return {
3672
4419
  source: "cli",
3673
- value: commandLine[cliFlag66]
4420
+ value: commandLine[cliFlag81]
3674
4421
  };
3675
4422
  }
3676
4423
  if (mediaCacheSizeInBytes !== null) {
@@ -3687,7 +4434,7 @@ var mediaCacheSizeInBytesOption = {
3687
4434
  setConfig: (size) => {
3688
4435
  mediaCacheSizeInBytes = size ?? null;
3689
4436
  },
3690
- id: cliFlag66
4437
+ id: cliFlag81
3691
4438
  };
3692
4439
 
3693
4440
  // src/path-normalize.ts
@@ -3806,7 +4553,7 @@ var getExtensionOfFilename = (filename) => {
3806
4553
  };
3807
4554
 
3808
4555
  // src/options/video-codec.tsx
3809
- import { jsx as jsx62, Fragment as Fragment62 } from "react/jsx-runtime";
4556
+ import { jsx as jsx77, Fragment as Fragment77 } from "react/jsx-runtime";
3810
4557
  var codec;
3811
4558
  var setCodec = (newCodec) => {
3812
4559
  if (newCodec === undefined) {
@@ -3830,11 +4577,11 @@ var deriveCodecsFromFilename = (extension) => {
3830
4577
  possible: makeFileExtensionMap()[extension] ?? []
3831
4578
  };
3832
4579
  };
3833
- var cliFlag67 = "codec";
4580
+ var cliFlag82 = "codec";
3834
4581
  var videoCodecOption = {
3835
4582
  name: "Codec",
3836
- cliFlag: cliFlag67,
3837
- description: () => /* @__PURE__ */ jsx62(Fragment62, {
4583
+ cliFlag: cliFlag82,
4584
+ description: () => /* @__PURE__ */ jsx77(Fragment77, {
3838
4585
  children: "H264 works well in most cases, but sometimes it's worth going for a different codec. WebM achieves higher compression but is slower to render. WebM, GIF and ProRes support transparency."
3839
4586
  }),
3840
4587
  ssrName: "codec",
@@ -3857,7 +4604,7 @@ var videoCodecOption = {
3857
4604
  if (derivedDownloadCodecs.possible.length > 0 && derivedOutNameCodecs.possible.length > 0 && derivedDownloadCodecs.possible.join("") !== derivedOutNameCodecs.possible.join("")) {
3858
4605
  throw new TypeError(`The download name is ${downloadName} but the output name is ${outName}. The file extensions must match`);
3859
4606
  }
3860
- const cliArgument = commandLine[cliFlag67];
4607
+ const cliArgument = commandLine[cliFlag82];
3861
4608
  if (cliArgument) {
3862
4609
  if (derivedDownloadCodecs.possible.length > 0 && derivedDownloadCodecs.possible.indexOf(cliArgument) === -1) {
3863
4610
  throw new TypeError(`The download name is ${downloadName} but --codec=${cliArgument} was passed. The download name implies a codec of ${derivedDownloadCodecs.possible.join(" or ")} which does not align with the --codec flag.`);
@@ -3903,24 +4650,24 @@ var videoCodecOption = {
3903
4650
  return { value: DEFAULT_CODEC, source: "default" };
3904
4651
  },
3905
4652
  setConfig: setCodec,
3906
- id: cliFlag67
4653
+ id: cliFlag82
3907
4654
  };
3908
4655
 
3909
4656
  // src/options/video-image-format.tsx
3910
- import { jsx as jsx63, jsxs as jsxs42, Fragment as Fragment63 } from "react/jsx-runtime";
4657
+ import { jsx as jsx78, jsxs as jsxs52, Fragment as Fragment78 } from "react/jsx-runtime";
3911
4658
  var currentVideoImageFormat = null;
3912
- var cliFlag68 = "image-format";
4659
+ var cliFlag83 = "image-format";
3913
4660
  var videoImageFormatOption = {
3914
4661
  name: "Video Image Format",
3915
- cliFlag: cliFlag68,
3916
- description: () => /* @__PURE__ */ jsxs42(Fragment63, {
4662
+ cliFlag: cliFlag83,
4663
+ description: () => /* @__PURE__ */ jsxs52(Fragment78, {
3917
4664
  children: [
3918
4665
  "The image format to use when rendering frames for a video. Must be one of",
3919
4666
  " ",
3920
4667
  validVideoImageFormats.map((f) => `"${f}"`).join(", "),
3921
4668
  ". Default:",
3922
4669
  " ",
3923
- /* @__PURE__ */ jsx63("code", {
4670
+ /* @__PURE__ */ jsx78("code", {
3924
4671
  children: '"jpeg"'
3925
4672
  }),
3926
4673
  ". JPEG is faster, but does not support transparency."
@@ -3930,8 +4677,8 @@ var videoImageFormatOption = {
3930
4677
  docLink: "https://www.remotion.dev/docs/renderer/render-media#imageformat",
3931
4678
  type: null,
3932
4679
  getValue: ({ commandLine }) => {
3933
- if (commandLine[cliFlag68] !== undefined) {
3934
- const value3 = commandLine[cliFlag68];
4680
+ if (commandLine[cliFlag83] !== undefined) {
4681
+ const value3 = commandLine[cliFlag83];
3935
4682
  if (!validVideoImageFormats.includes(value3)) {
3936
4683
  throw new Error(`Invalid video image format: ${value3}. Must be one of: ${validVideoImageFormats.join(", ")}`);
3937
4684
  }
@@ -3968,12 +4715,12 @@ var videoImageFormatOption = {
3968
4715
  };
3969
4716
 
3970
4717
  // src/options/webhook-custom-data.tsx
3971
- import { jsxs as jsxs43, Fragment as Fragment64 } from "react/jsx-runtime";
3972
- var cliFlag69 = "webhook-custom-data";
4718
+ import { jsxs as jsxs53, Fragment as Fragment79 } from "react/jsx-runtime";
4719
+ var cliFlag84 = "webhook-custom-data";
3973
4720
  var webhookCustomDataOption = {
3974
4721
  name: "Webhook custom data",
3975
- cliFlag: cliFlag69,
3976
- description: (type) => /* @__PURE__ */ jsxs43(Fragment64, {
4722
+ cliFlag: cliFlag84,
4723
+ description: (type) => /* @__PURE__ */ jsxs53(Fragment79, {
3977
4724
  children: [
3978
4725
  "Pass up to 1,024 bytes of a JSON-serializable object to the webhook. This data will be included in the webhook payload.",
3979
4726
  " ",
@@ -3989,11 +4736,55 @@ var webhookCustomDataOption = {
3989
4736
  setConfig: () => {
3990
4737
  throw new Error("Not implemented");
3991
4738
  },
3992
- id: cliFlag69
4739
+ id: cliFlag84
4740
+ };
4741
+
4742
+ // src/options/webpack-poll.tsx
4743
+ import { jsx as jsx79, Fragment as Fragment80 } from "react/jsx-runtime";
4744
+ var cliFlag85 = "webpack-poll";
4745
+ var webpackPolling = null;
4746
+ var webpackPollOption = {
4747
+ name: "Webpack Polling",
4748
+ cliFlag: cliFlag85,
4749
+ description: () => /* @__PURE__ */ jsx79(Fragment80, {
4750
+ children: "Enables Webpack polling instead of the file system event listeners for hot reloading. This is useful if you are inside a virtual machine or have a remote file system. Pass a value in milliseconds."
4751
+ }),
4752
+ ssrName: null,
4753
+ docLink: "https://www.remotion.dev/docs/config#setwebpackpollinginmilliseconds",
4754
+ getValue: ({ commandLine }) => {
4755
+ if (commandLine[cliFlag85] !== undefined) {
4756
+ const val = commandLine[cliFlag85];
4757
+ if (typeof val !== "number") {
4758
+ throw new TypeError(`Webpack polling must be a number, got ${JSON.stringify(val)}`);
4759
+ }
4760
+ return {
4761
+ source: "cli",
4762
+ value: val
4763
+ };
4764
+ }
4765
+ if (webpackPolling !== null) {
4766
+ return {
4767
+ source: "config",
4768
+ value: webpackPolling
4769
+ };
4770
+ }
4771
+ return {
4772
+ source: "default",
4773
+ value: null
4774
+ };
4775
+ },
4776
+ setConfig: (value3) => {
4777
+ if (typeof value3 !== "number" && value3 !== null) {
4778
+ throw new TypeError(`Polling must be a number or null, got ${JSON.stringify(value3)} instead.`);
4779
+ }
4780
+ webpackPolling = value3;
4781
+ },
4782
+ type: 0,
4783
+ id: cliFlag85
3993
4784
  };
3994
4785
 
3995
4786
  // src/options/x264-preset.tsx
3996
- import { jsx as jsx64, jsxs as jsxs44, Fragment as Fragment65 } from "react/jsx-runtime";
4787
+ import { jsx as jsx80, jsxs as jsxs54, Fragment as Fragment81 } from "react/jsx-runtime";
3997
4788
  var x264PresetOptions = [
3998
4789
  "ultrafast",
3999
4790
  "superfast",
@@ -4007,63 +4798,63 @@ var x264PresetOptions = [
4007
4798
  "placebo"
4008
4799
  ];
4009
4800
  var preset = null;
4010
- var cliFlag70 = "x264-preset";
4801
+ var cliFlag86 = "x264-preset";
4011
4802
  var DEFAULT_PRESET = "medium";
4012
4803
  var x264Option = {
4013
4804
  name: "x264 Preset",
4014
- cliFlag: cliFlag70,
4015
- description: () => /* @__PURE__ */ jsxs44(Fragment65, {
4805
+ cliFlag: cliFlag86,
4806
+ description: () => /* @__PURE__ */ jsxs54(Fragment81, {
4016
4807
  children: [
4017
4808
  "Sets a x264 preset profile. Only applies to videos rendered with",
4018
4809
  " ",
4019
- /* @__PURE__ */ jsx64("code", {
4810
+ /* @__PURE__ */ jsx80("code", {
4020
4811
  children: "h264"
4021
4812
  }),
4022
4813
  " codec.",
4023
- /* @__PURE__ */ jsx64("br", {}),
4814
+ /* @__PURE__ */ jsx80("br", {}),
4024
4815
  "Possible values: ",
4025
- /* @__PURE__ */ jsx64("code", {
4816
+ /* @__PURE__ */ jsx80("code", {
4026
4817
  children: "superfast"
4027
4818
  }),
4028
4819
  ", ",
4029
- /* @__PURE__ */ jsx64("code", {
4820
+ /* @__PURE__ */ jsx80("code", {
4030
4821
  children: "veryfast"
4031
4822
  }),
4032
4823
  ",",
4033
4824
  " ",
4034
- /* @__PURE__ */ jsx64("code", {
4825
+ /* @__PURE__ */ jsx80("code", {
4035
4826
  children: "faster"
4036
4827
  }),
4037
4828
  ", ",
4038
- /* @__PURE__ */ jsx64("code", {
4829
+ /* @__PURE__ */ jsx80("code", {
4039
4830
  children: "fast"
4040
4831
  }),
4041
4832
  ", ",
4042
- /* @__PURE__ */ jsx64("code", {
4833
+ /* @__PURE__ */ jsx80("code", {
4043
4834
  children: "medium"
4044
4835
  }),
4045
4836
  ",",
4046
4837
  " ",
4047
- /* @__PURE__ */ jsx64("code", {
4838
+ /* @__PURE__ */ jsx80("code", {
4048
4839
  children: "slow"
4049
4840
  }),
4050
4841
  ", ",
4051
- /* @__PURE__ */ jsx64("code", {
4842
+ /* @__PURE__ */ jsx80("code", {
4052
4843
  children: "slower"
4053
4844
  }),
4054
4845
  ", ",
4055
- /* @__PURE__ */ jsx64("code", {
4846
+ /* @__PURE__ */ jsx80("code", {
4056
4847
  children: "veryslow"
4057
4848
  }),
4058
4849
  ",",
4059
4850
  " ",
4060
- /* @__PURE__ */ jsx64("code", {
4851
+ /* @__PURE__ */ jsx80("code", {
4061
4852
  children: "placebo"
4062
4853
  }),
4063
4854
  ".",
4064
- /* @__PURE__ */ jsx64("br", {}),
4855
+ /* @__PURE__ */ jsx80("br", {}),
4065
4856
  "Default: ",
4066
- /* @__PURE__ */ jsx64("code", {
4857
+ /* @__PURE__ */ jsx80("code", {
4067
4858
  children: DEFAULT_PRESET
4068
4859
  })
4069
4860
  ]
@@ -4072,7 +4863,7 @@ var x264Option = {
4072
4863
  docLink: "https://www.remotion.dev/docs/renderer/render-media",
4073
4864
  type: "fast",
4074
4865
  getValue: ({ commandLine }) => {
4075
- const value3 = commandLine[cliFlag70];
4866
+ const value3 = commandLine[cliFlag86];
4076
4867
  if (typeof value3 !== "undefined") {
4077
4868
  return { value: value3, source: "cli" };
4078
4869
  }
@@ -4084,7 +4875,7 @@ var x264Option = {
4084
4875
  setConfig: (profile) => {
4085
4876
  preset = profile;
4086
4877
  },
4087
- id: cliFlag70
4878
+ id: cliFlag86
4088
4879
  };
4089
4880
 
4090
4881
  // src/options/index.tsx
@@ -4117,6 +4908,8 @@ var allOptions = {
4117
4908
  beepOnFinishOption,
4118
4909
  numberOfGifLoopsOption,
4119
4910
  reproOption,
4911
+ runsOption,
4912
+ noOpenOption,
4120
4913
  pixelFormatOption,
4121
4914
  preferLosslessOption: preferLosslessAudioOption,
4122
4915
  proResProfileOption,
@@ -4149,6 +4942,7 @@ var allOptions = {
4149
4942
  askAIOption,
4150
4943
  experimentalClientSideRenderingOption,
4151
4944
  keyboardShortcutsOption,
4945
+ framesOption,
4152
4946
  forceNewStudioOption,
4153
4947
  numberOfSharedAudioTagsOption,
4154
4948
  ipv4Option,
@@ -4158,7 +4952,20 @@ var allOptions = {
4158
4952
  overrideHeightOption,
4159
4953
  overrideWidthOption,
4160
4954
  overrideFpsOption,
4161
- overrideDurationOption
4955
+ overrideDurationOption,
4956
+ rspackOption,
4957
+ outDirOption,
4958
+ packageManagerOption,
4959
+ webpackPollOption,
4960
+ stillFrameOption,
4961
+ imageSequenceOption,
4962
+ versionFlagOption,
4963
+ bundleCacheOption,
4964
+ envFileOption,
4965
+ portOption,
4966
+ propsOption,
4967
+ configOption,
4968
+ browserOption
4162
4969
  };
4163
4970
 
4164
4971
  // src/options/options-map.ts
@@ -4365,7 +5172,7 @@ var BrowserSafeApis = {
4365
5172
  validAudioCodecs,
4366
5173
  getDefaultCrfForCodec,
4367
5174
  getValidCrfRanges,
4368
- proResProfileOptions: NoReactInternals3.proResProfileOptions,
5175
+ proResProfileOptions: NoReactInternals4.proResProfileOptions,
4369
5176
  x264PresetOptions,
4370
5177
  hardwareAccelerationOptions,
4371
5178
  validPixelFormats,