@remotion/renderer 4.0.424 → 4.0.426

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