@remotion/renderer 4.0.501 → 4.0.503

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 (39) hide show
  1. package/dist/assets/calculate-asset-positions.d.ts +1 -1
  2. package/dist/assets/calculate-asset-positions.js +7 -1
  3. package/dist/browser/BrowserFetcher.js +61 -48
  4. package/dist/browser/browser-download-lock.d.ts +1 -0
  5. package/dist/browser/browser-download-lock.js +161 -0
  6. package/dist/client.d.ts +42 -5
  7. package/dist/client.js +6 -1
  8. package/dist/combine-chunks.d.ts +2 -2
  9. package/dist/combine-chunks.js +1 -1
  10. package/dist/create-audio.js +1 -1
  11. package/dist/esm/client.mjs +907 -692
  12. package/dist/esm/index.mjs +430 -181
  13. package/dist/esm/pure.mjs +5 -4
  14. package/dist/frame-range.d.ts +10 -1
  15. package/dist/frame-range.js +60 -36
  16. package/dist/get-duration-from-frame-range.d.ts +2 -1
  17. package/dist/get-duration-from-frame-range.js +7 -4
  18. package/dist/get-frame-to-render.d.ts +2 -1
  19. package/dist/get-frame-to-render.js +21 -5
  20. package/dist/index.d.ts +12 -3
  21. package/dist/index.js +9 -1
  22. package/dist/options/default-editor.d.ts +28 -0
  23. package/dist/options/default-editor.js +84 -0
  24. package/dist/options/frames.d.ts +4 -4
  25. package/dist/options/frames.js +51 -8
  26. package/dist/options/index.d.ts +40 -5
  27. package/dist/options/index.js +4 -0
  28. package/dist/options/rspack.d.ts +2 -2
  29. package/dist/options/rspack.js +3 -4
  30. package/dist/options/skip-skills.d.ts +19 -0
  31. package/dist/options/skip-skills.js +29 -0
  32. package/dist/pure.d.ts +1 -1
  33. package/dist/render-frame-with-option-to-reject.js +2 -1
  34. package/dist/render-frames.d.ts +5 -1
  35. package/dist/render-frames.js +42 -7
  36. package/dist/render-media.js +11 -5
  37. package/dist/validate-selected-frames.d.ts +4 -0
  38. package/dist/validate-selected-frames.js +34 -0
  39. package/package.json +13 -13
@@ -1292,38 +1292,122 @@ var darkModeOption = {
1292
1292
  id: cliFlag18
1293
1293
  };
1294
1294
 
1295
- // src/options/delete-after.tsx
1295
+ // src/options/default-editor.tsx
1296
1296
  import { jsx as jsx17, jsxs as jsxs12, Fragment as Fragment17 } from "react/jsx-runtime";
1297
- var cliFlag19 = "delete-after";
1297
+ var defaultEditorIds = [
1298
+ "vscode",
1299
+ "cursor",
1300
+ "windsurf",
1301
+ "zed",
1302
+ "vscodium",
1303
+ "webstorm",
1304
+ "sublime-text"
1305
+ ];
1306
+ var customEditorTargetPathPlaceholder = "%TARGET_PATH%";
1307
+ var customEditorLineNumberPlaceholder = "%LINE_NUMBER%";
1308
+ var customEditorColumnNumberPlaceholder = "%COLUMN_NUMBER%";
1309
+ var cliFlag19 = "editor";
1310
+ var defaultEditor = null;
1311
+ var validateBuiltInEditor = (value, source) => {
1312
+ if (typeof value !== "string" || !defaultEditorIds.includes(value)) {
1313
+ throw new TypeError(`${source} must be one of: ${defaultEditorIds.join(", ")}. Received: ${JSON.stringify(value)}`);
1314
+ }
1315
+ return value;
1316
+ };
1317
+ var validateCustomEditor = (value, source) => {
1318
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
1319
+ throw new TypeError(`${source} must be a built-in editor ID or a custom editor object. Received: ${JSON.stringify(value)}`);
1320
+ }
1321
+ const editor = value;
1322
+ if (editor.type !== "custom") {
1323
+ throw new TypeError(`${source}: Custom editors must have type "custom".`);
1324
+ }
1325
+ if (typeof editor.name !== "string" || editor.name.trim() === "") {
1326
+ throw new TypeError(`${source}: Custom editor name must not be empty.`);
1327
+ }
1328
+ if (typeof editor.executable !== "string" || editor.executable.trim() === "") {
1329
+ throw new TypeError(`${source}: Custom editor executable must not be empty.`);
1330
+ }
1331
+ if (!Array.isArray(editor.arguments) || !editor.arguments.every((argument) => typeof argument === "string")) {
1332
+ throw new TypeError(`${source}: Custom editor arguments must be an array of strings.`);
1333
+ }
1334
+ if (!editor.arguments.some((argument) => argument.includes(customEditorTargetPathPlaceholder))) {
1335
+ throw new TypeError(`${source}: Custom editor arguments must include ${customEditorTargetPathPlaceholder}.`);
1336
+ }
1337
+ return editor;
1338
+ };
1339
+ var validateDefaultEditor = (value, source) => {
1340
+ if (value === null) {
1341
+ return null;
1342
+ }
1343
+ return typeof value === "string" ? validateBuiltInEditor(value, source) : validateCustomEditor(value, source);
1344
+ };
1345
+ var defaultEditorOption = {
1346
+ name: "Default editor",
1347
+ cliFlag: cliFlag19,
1348
+ description: () => /* @__PURE__ */ jsxs12(Fragment17, {
1349
+ children: [
1350
+ "Set the default editor for opening files from Remotion Studio. Available editors: ",
1351
+ /* @__PURE__ */ jsx17("code", {
1352
+ children: defaultEditorIds.join(", ")
1353
+ }),
1354
+ "."
1355
+ ]
1356
+ }),
1357
+ ssrName: null,
1358
+ docLink: "https://www.remotion.dev/docs/studio/open-in-editor",
1359
+ type: null,
1360
+ getValue: ({ commandLine }) => {
1361
+ const cliValue = commandLine[cliFlag19];
1362
+ if (cliValue !== undefined && cliValue !== null) {
1363
+ return {
1364
+ value: validateBuiltInEditor(cliValue, `--${cliFlag19}`),
1365
+ source: "cli"
1366
+ };
1367
+ }
1368
+ return {
1369
+ value: defaultEditor,
1370
+ source: "config"
1371
+ };
1372
+ },
1373
+ setConfig(value) {
1374
+ defaultEditor = validateDefaultEditor(value, "Config.setDefaultEditor()");
1375
+ },
1376
+ id: cliFlag19
1377
+ };
1378
+
1379
+ // src/options/delete-after.tsx
1380
+ import { jsx as jsx18, jsxs as jsxs13, Fragment as Fragment18 } from "react/jsx-runtime";
1381
+ var cliFlag20 = "delete-after";
1298
1382
  var deleteAfter = null;
1299
1383
  var deleteAfterOption = {
1300
1384
  name: "Lambda render expiration",
1301
- cliFlag: cliFlag19,
1385
+ cliFlag: cliFlag20,
1302
1386
  description: () => {
1303
- return /* @__PURE__ */ jsxs12(Fragment17, {
1387
+ return /* @__PURE__ */ jsxs13(Fragment18, {
1304
1388
  children: [
1305
1389
  "Automatically delete the render after a certain period. Accepted values are ",
1306
- /* @__PURE__ */ jsx17("code", {
1390
+ /* @__PURE__ */ jsx18("code", {
1307
1391
  children: "1-day"
1308
1392
  }),
1309
1393
  ", ",
1310
- /* @__PURE__ */ jsx17("code", {
1394
+ /* @__PURE__ */ jsx18("code", {
1311
1395
  children: "3-days"
1312
1396
  }),
1313
1397
  ", ",
1314
- /* @__PURE__ */ jsx17("code", {
1398
+ /* @__PURE__ */ jsx18("code", {
1315
1399
  children: "7-days"
1316
1400
  }),
1317
1401
  " and",
1318
1402
  " ",
1319
- /* @__PURE__ */ jsx17("code", {
1403
+ /* @__PURE__ */ jsx18("code", {
1320
1404
  children: "30-days"
1321
1405
  }),
1322
1406
  ".",
1323
- /* @__PURE__ */ jsx17("br", {}),
1407
+ /* @__PURE__ */ jsx18("br", {}),
1324
1408
  " For this to work, your bucket needs to have",
1325
1409
  " ",
1326
- /* @__PURE__ */ jsx17("a", {
1410
+ /* @__PURE__ */ jsx18("a", {
1327
1411
  href: "/docs/lambda/autodelete",
1328
1412
  children: "lifecycles enabled"
1329
1413
  }),
@@ -1335,10 +1419,10 @@ var deleteAfterOption = {
1335
1419
  docLink: "https://www.remotion.dev/docs/lambda/autodelete",
1336
1420
  type: "1-day",
1337
1421
  getValue: ({ commandLine }) => {
1338
- if (commandLine[cliFlag19] !== undefined) {
1422
+ if (commandLine[cliFlag20] !== undefined) {
1339
1423
  return {
1340
1424
  source: "cli",
1341
- value: commandLine[cliFlag19]
1425
+ value: commandLine[cliFlag20]
1342
1426
  };
1343
1427
  }
1344
1428
  if (deleteAfter !== null) {
@@ -1355,21 +1439,21 @@ var deleteAfterOption = {
1355
1439
  setConfig: (value) => {
1356
1440
  deleteAfter = value;
1357
1441
  },
1358
- id: cliFlag19
1442
+ id: cliFlag20
1359
1443
  };
1360
1444
 
1361
1445
  // src/options/disable-git-source.tsx
1362
1446
  var DEFAULT2 = false;
1363
- var cliFlag20 = "disable-git-source";
1447
+ var cliFlag21 = "disable-git-source";
1364
1448
  var disableGitSourceOption = {
1365
- cliFlag: cliFlag20,
1449
+ cliFlag: cliFlag21,
1366
1450
  description: () => `Disables the Git Source being connected to the Remotion Studio. Clicking on stack traces and certain menu items will be disabled.`,
1367
1451
  docLink: "https://remotion.dev/docs/bundle",
1368
1452
  getValue: ({ commandLine }) => {
1369
- if (commandLine[cliFlag20]) {
1453
+ if (commandLine[cliFlag21]) {
1370
1454
  return {
1371
1455
  source: "cli",
1372
- value: commandLine[cliFlag20]
1456
+ value: commandLine[cliFlag21]
1373
1457
  };
1374
1458
  }
1375
1459
  return {
@@ -1383,27 +1467,27 @@ var disableGitSourceOption = {
1383
1467
  },
1384
1468
  ssrName: "disableGitSource",
1385
1469
  type: false,
1386
- id: cliFlag20
1470
+ id: cliFlag21
1387
1471
  };
1388
1472
 
1389
1473
  // src/options/disable-web-security.tsx
1390
- import { jsx as jsx18, Fragment as Fragment18 } from "react/jsx-runtime";
1474
+ import { jsx as jsx19, Fragment as Fragment19 } from "react/jsx-runtime";
1391
1475
  var disableWebSecurity = false;
1392
- var cliFlag21 = "disable-web-security";
1476
+ var cliFlag22 = "disable-web-security";
1393
1477
  var disableWebSecurityOption = {
1394
1478
  name: "Disable web security",
1395
- cliFlag: cliFlag21,
1396
- description: () => /* @__PURE__ */ jsx18(Fragment18, {
1479
+ cliFlag: cliFlag22,
1480
+ description: () => /* @__PURE__ */ jsx19(Fragment19, {
1397
1481
  children: "This will most notably disable CORS in Chrome among other security features."
1398
1482
  }),
1399
1483
  ssrName: "disableWebSecurity",
1400
1484
  docLink: "https://www.remotion.dev/docs/chromium-flags#--disable-web-security",
1401
1485
  type: false,
1402
1486
  getValue: ({ commandLine }) => {
1403
- if (commandLine[cliFlag21] !== undefined && commandLine[cliFlag21] !== null) {
1487
+ if (commandLine[cliFlag22] !== undefined && commandLine[cliFlag22] !== null) {
1404
1488
  return {
1405
1489
  source: "cli",
1406
- value: Boolean(commandLine[cliFlag21])
1490
+ value: Boolean(commandLine[cliFlag22])
1407
1491
  };
1408
1492
  }
1409
1493
  if (disableWebSecurity) {
@@ -1420,26 +1504,26 @@ var disableWebSecurityOption = {
1420
1504
  setConfig: (value) => {
1421
1505
  disableWebSecurity = value;
1422
1506
  },
1423
- id: cliFlag21
1507
+ id: cliFlag22
1424
1508
  };
1425
1509
 
1426
1510
  // src/options/disallow-parallel-encoding.tsx
1427
- import { jsx as jsx19, Fragment as Fragment19 } from "react/jsx-runtime";
1511
+ import { jsx as jsx20, Fragment as Fragment20 } from "react/jsx-runtime";
1428
1512
  var disallowParallelEncoding = false;
1429
- var cliFlag22 = "disallow-parallel-encoding";
1513
+ var cliFlag23 = "disallow-parallel-encoding";
1430
1514
  var disallowParallelEncodingOption = {
1431
1515
  name: "Disallow parallel encoding",
1432
- cliFlag: cliFlag22,
1433
- description: () => /* @__PURE__ */ jsx19(Fragment19, {
1516
+ cliFlag: cliFlag23,
1517
+ description: () => /* @__PURE__ */ jsx20(Fragment20, {
1434
1518
  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."
1435
1519
  }),
1436
1520
  ssrName: "disallowParallelEncoding",
1437
1521
  docLink: "https://www.remotion.dev/docs/config#setdisallowparallelencoding",
1438
1522
  type: false,
1439
1523
  getValue: ({ commandLine }) => {
1440
- if (commandLine[cliFlag22] !== undefined && commandLine[cliFlag22] !== null) {
1524
+ if (commandLine[cliFlag23] !== undefined && commandLine[cliFlag23] !== null) {
1441
1525
  return {
1442
- value: commandLine[cliFlag22],
1526
+ value: commandLine[cliFlag23],
1443
1527
  source: "cli"
1444
1528
  };
1445
1529
  }
@@ -1457,21 +1541,21 @@ var disallowParallelEncodingOption = {
1457
1541
  setConfig(value) {
1458
1542
  disallowParallelEncoding = value;
1459
1543
  },
1460
- id: cliFlag22
1544
+ id: cliFlag23
1461
1545
  };
1462
1546
 
1463
1547
  // src/options/enable-lambda-insights.tsx
1464
- import { jsx as jsx20, jsxs as jsxs13, Fragment as Fragment20 } from "react/jsx-runtime";
1465
- var cliFlag23 = "enable-lambda-insights";
1548
+ import { jsx as jsx21, jsxs as jsxs14, Fragment as Fragment21 } from "react/jsx-runtime";
1549
+ var cliFlag24 = "enable-lambda-insights";
1466
1550
  var option = false;
1467
1551
  var enableLambdaInsights = {
1468
1552
  name: "Enable Lambda Insights",
1469
- cliFlag: cliFlag23,
1470
- description: () => /* @__PURE__ */ jsxs13(Fragment20, {
1553
+ cliFlag: cliFlag24,
1554
+ description: () => /* @__PURE__ */ jsxs14(Fragment21, {
1471
1555
  children: [
1472
1556
  "Enable",
1473
1557
  " ",
1474
- /* @__PURE__ */ jsx20("a", {
1558
+ /* @__PURE__ */ jsx21("a", {
1475
1559
  href: "https://remotion.dev/docs/lambda/insights",
1476
1560
  children: "Lambda Insights in AWS CloudWatch"
1477
1561
  }),
@@ -1485,9 +1569,9 @@ var enableLambdaInsights = {
1485
1569
  option = value;
1486
1570
  },
1487
1571
  getValue: ({ commandLine }) => {
1488
- if (commandLine[cliFlag23] !== undefined) {
1572
+ if (commandLine[cliFlag24] !== undefined) {
1489
1573
  return {
1490
- value: commandLine[cliFlag23],
1574
+ value: commandLine[cliFlag24],
1491
1575
  source: "cli"
1492
1576
  };
1493
1577
  }
@@ -1502,41 +1586,41 @@ var enableLambdaInsights = {
1502
1586
  source: "default"
1503
1587
  };
1504
1588
  },
1505
- id: cliFlag23
1589
+ id: cliFlag24
1506
1590
  };
1507
1591
 
1508
1592
  // src/options/enable-multiprocess-on-linux.tsx
1509
- import { jsx as jsx21, jsxs as jsxs14, Fragment as Fragment21 } from "react/jsx-runtime";
1593
+ import { jsx as jsx22, jsxs as jsxs15, Fragment as Fragment22 } from "react/jsx-runtime";
1510
1594
  var DEFAULT_VALUE2 = true;
1511
1595
  var multiProcessOnLinux = DEFAULT_VALUE2;
1512
- var cliFlag24 = "enable-multiprocess-on-linux";
1596
+ var cliFlag25 = "enable-multiprocess-on-linux";
1513
1597
  var enableMultiprocessOnLinuxOption = {
1514
1598
  name: "Enable Multiprocess on Linux",
1515
- cliFlag: cliFlag24,
1516
- description: () => /* @__PURE__ */ jsxs14(Fragment21, {
1599
+ cliFlag: cliFlag25,
1600
+ description: () => /* @__PURE__ */ jsxs15(Fragment22, {
1517
1601
  children: [
1518
1602
  "Removes the ",
1519
- /* @__PURE__ */ jsx21("code", {
1603
+ /* @__PURE__ */ jsx22("code", {
1520
1604
  children: "--single-process"
1521
1605
  }),
1522
1606
  " 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.",
1523
- /* @__PURE__ */ jsx21("br", {}),
1607
+ /* @__PURE__ */ jsx22("br", {}),
1524
1608
  "Default: ",
1525
- /* @__PURE__ */ jsx21("code", {
1609
+ /* @__PURE__ */ jsx22("code", {
1526
1610
  children: "false"
1527
1611
  }),
1528
1612
  " until v4.0.136, then ",
1529
- /* @__PURE__ */ jsx21("code", {
1613
+ /* @__PURE__ */ jsx22("code", {
1530
1614
  children: "true"
1531
1615
  }),
1532
1616
  " from v4.0.137 on because newer Chrome versions ",
1533
1617
  "don't",
1534
1618
  " allow rendering with the ",
1535
- /* @__PURE__ */ jsx21("code", {
1619
+ /* @__PURE__ */ jsx22("code", {
1536
1620
  children: "--single-process"
1537
1621
  }),
1538
1622
  " flag. ",
1539
- /* @__PURE__ */ jsx21("br", {}),
1623
+ /* @__PURE__ */ jsx22("br", {}),
1540
1624
  "This flag will be removed in Remotion v5.0."
1541
1625
  ]
1542
1626
  }),
@@ -1544,10 +1628,10 @@ var enableMultiprocessOnLinuxOption = {
1544
1628
  docLink: "https://www.remotion.dev/docs/chromium-flags",
1545
1629
  type: false,
1546
1630
  getValue: ({ commandLine }) => {
1547
- if (commandLine[cliFlag24] !== undefined) {
1631
+ if (commandLine[cliFlag25] !== undefined) {
1548
1632
  return {
1549
1633
  source: "cli",
1550
- value: commandLine[cliFlag24]
1634
+ value: commandLine[cliFlag25]
1551
1635
  };
1552
1636
  }
1553
1637
  if (multiProcessOnLinux !== false) {
@@ -1564,23 +1648,23 @@ var enableMultiprocessOnLinuxOption = {
1564
1648
  setConfig: (value) => {
1565
1649
  multiProcessOnLinux = value;
1566
1650
  },
1567
- id: cliFlag24
1651
+ id: cliFlag25
1568
1652
  };
1569
1653
 
1570
1654
  // src/options/encoding-buffer-size.tsx
1571
- import { jsx as jsx22, jsxs as jsxs15, Fragment as Fragment22 } from "react/jsx-runtime";
1655
+ import { jsx as jsx23, jsxs as jsxs16, Fragment as Fragment23 } from "react/jsx-runtime";
1572
1656
  var encodingBufferSize = null;
1573
1657
  var setEncodingBufferSize = (bitrate) => {
1574
1658
  encodingBufferSize = bitrate;
1575
1659
  };
1576
- var cliFlag25 = "buffer-size";
1660
+ var cliFlag26 = "buffer-size";
1577
1661
  var encodingBufferSizeOption = {
1578
1662
  name: "FFmpeg -bufsize flag",
1579
- cliFlag: cliFlag25,
1580
- description: () => /* @__PURE__ */ jsxs15(Fragment22, {
1663
+ cliFlag: cliFlag26,
1664
+ description: () => /* @__PURE__ */ jsxs16(Fragment23, {
1581
1665
  children: [
1582
1666
  "The value for the ",
1583
- /* @__PURE__ */ jsx22("code", {
1667
+ /* @__PURE__ */ jsx23("code", {
1584
1668
  children: "-bufsize"
1585
1669
  }),
1586
1670
  " flag of FFmpeg. Should be used in conjunction with the encoding max rate flag."
@@ -1590,9 +1674,9 @@ var encodingBufferSizeOption = {
1590
1674
  docLink: "https://www.remotion.dev/docs/renderer/render-media#encodingbuffersize",
1591
1675
  type: "",
1592
1676
  getValue: ({ commandLine }) => {
1593
- if (commandLine[cliFlag25] !== undefined) {
1677
+ if (commandLine[cliFlag26] !== undefined) {
1594
1678
  return {
1595
- value: commandLine[cliFlag25],
1679
+ value: commandLine[cliFlag26],
1596
1680
  source: "cli"
1597
1681
  };
1598
1682
  }
@@ -1608,20 +1692,20 @@ var encodingBufferSizeOption = {
1608
1692
  };
1609
1693
  },
1610
1694
  setConfig: setEncodingBufferSize,
1611
- id: cliFlag25
1695
+ id: cliFlag26
1612
1696
  };
1613
1697
 
1614
1698
  // src/options/encoding-max-rate.tsx
1615
- import { jsx as jsx23, jsxs as jsxs16, Fragment as Fragment23 } from "react/jsx-runtime";
1699
+ import { jsx as jsx24, jsxs as jsxs17, Fragment as Fragment24 } from "react/jsx-runtime";
1616
1700
  var encodingMaxRate = null;
1617
- var cliFlag26 = "max-rate";
1701
+ var cliFlag27 = "max-rate";
1618
1702
  var encodingMaxRateOption = {
1619
1703
  name: "FFmpeg -maxrate flag",
1620
- cliFlag: cliFlag26,
1621
- description: () => /* @__PURE__ */ jsxs16(Fragment23, {
1704
+ cliFlag: cliFlag27,
1705
+ description: () => /* @__PURE__ */ jsxs17(Fragment24, {
1622
1706
  children: [
1623
1707
  "The value for the ",
1624
- /* @__PURE__ */ jsx23("code", {
1708
+ /* @__PURE__ */ jsx24("code", {
1625
1709
  children: "-maxrate"
1626
1710
  }),
1627
1711
  " flag of FFmpeg. Should be used in conjunction with the encoding buffer size flag."
@@ -1631,9 +1715,9 @@ var encodingMaxRateOption = {
1631
1715
  docLink: "https://www.remotion.dev/docs/renderer/render-media#encodingmaxrate",
1632
1716
  type: "",
1633
1717
  getValue: ({ commandLine }) => {
1634
- if (commandLine[cliFlag26] !== undefined) {
1718
+ if (commandLine[cliFlag27] !== undefined) {
1635
1719
  return {
1636
- value: commandLine[cliFlag26],
1720
+ value: commandLine[cliFlag27],
1637
1721
  source: "cli"
1638
1722
  };
1639
1723
  }
@@ -1651,25 +1735,25 @@ var encodingMaxRateOption = {
1651
1735
  setConfig: (newMaxRate) => {
1652
1736
  encodingMaxRate = newMaxRate;
1653
1737
  },
1654
- id: cliFlag26
1738
+ id: cliFlag27
1655
1739
  };
1656
1740
 
1657
1741
  // src/options/enforce-audio.tsx
1658
- import { jsx as jsx24, Fragment as Fragment24 } from "react/jsx-runtime";
1742
+ import { jsx as jsx25, Fragment as Fragment25 } from "react/jsx-runtime";
1659
1743
  var DEFAULT_ENFORCE_AUDIO_TRACK = false;
1660
1744
  var enforceAudioTrackState = DEFAULT_ENFORCE_AUDIO_TRACK;
1661
- var cliFlag27 = "enforce-audio-track";
1745
+ var cliFlag28 = "enforce-audio-track";
1662
1746
  var enforceAudioOption = {
1663
1747
  name: "Enforce Audio Track",
1664
- cliFlag: cliFlag27,
1665
- description: () => /* @__PURE__ */ jsx24(Fragment24, {
1748
+ cliFlag: cliFlag28,
1749
+ description: () => /* @__PURE__ */ jsx25(Fragment25, {
1666
1750
  children: "Render a silent audio track if there would be none otherwise."
1667
1751
  }),
1668
1752
  ssrName: "enforceAudioTrack",
1669
1753
  docLink: "https://www.remotion.dev/docs/config#setenforceaudiotrack-",
1670
1754
  type: false,
1671
1755
  getValue: ({ commandLine }) => {
1672
- if (commandLine[cliFlag27]) {
1756
+ if (commandLine[cliFlag28]) {
1673
1757
  return {
1674
1758
  source: "cli",
1675
1759
  value: true
@@ -1689,20 +1773,20 @@ var enforceAudioOption = {
1689
1773
  setConfig: (value) => {
1690
1774
  enforceAudioTrackState = value;
1691
1775
  },
1692
- id: cliFlag27
1776
+ id: cliFlag28
1693
1777
  };
1694
1778
 
1695
1779
  // src/options/env-file.tsx
1696
- import { jsx as jsx25, jsxs as jsxs17, Fragment as Fragment25 } from "react/jsx-runtime";
1697
- var cliFlag28 = "env-file";
1780
+ import { jsx as jsx26, jsxs as jsxs18, Fragment as Fragment26 } from "react/jsx-runtime";
1781
+ var cliFlag29 = "env-file";
1698
1782
  var envFileLocation = null;
1699
1783
  var envFileOption = {
1700
1784
  name: "Env File",
1701
- cliFlag: cliFlag28,
1702
- description: () => /* @__PURE__ */ jsxs17(Fragment25, {
1785
+ cliFlag: cliFlag29,
1786
+ description: () => /* @__PURE__ */ jsxs18(Fragment26, {
1703
1787
  children: [
1704
1788
  "Specify a location for a dotenv file. Default ",
1705
- /* @__PURE__ */ jsx25("code", {
1789
+ /* @__PURE__ */ jsx26("code", {
1706
1790
  children: ".env"
1707
1791
  }),
1708
1792
  "."
@@ -1711,10 +1795,10 @@ var envFileOption = {
1711
1795
  ssrName: null,
1712
1796
  docLink: "https://www.remotion.dev/docs/cli/render#--env-file",
1713
1797
  getValue: ({ commandLine }) => {
1714
- if (commandLine[cliFlag28] !== undefined) {
1798
+ if (commandLine[cliFlag29] !== undefined) {
1715
1799
  return {
1716
1800
  source: "cli",
1717
- value: commandLine[cliFlag28]
1801
+ value: commandLine[cliFlag29]
1718
1802
  };
1719
1803
  }
1720
1804
  if (envFileLocation !== null) {
@@ -1732,30 +1816,30 @@ var envFileOption = {
1732
1816
  envFileLocation = value;
1733
1817
  },
1734
1818
  type: "",
1735
- id: cliFlag28
1819
+ id: cliFlag29
1736
1820
  };
1737
1821
 
1738
1822
  // src/options/every-nth-frame.tsx
1739
- import { jsx as jsx26, jsxs as jsxs18, Fragment as Fragment26 } from "react/jsx-runtime";
1823
+ import { jsx as jsx27, jsxs as jsxs19, Fragment as Fragment27 } from "react/jsx-runtime";
1740
1824
  var DEFAULT_EVERY_NTH_FRAME = 1;
1741
1825
  var everyNthFrame = DEFAULT_EVERY_NTH_FRAME;
1742
- var cliFlag29 = "every-nth-frame";
1826
+ var cliFlag30 = "every-nth-frame";
1743
1827
  var everyNthFrameOption = {
1744
1828
  name: "Every nth frame",
1745
- cliFlag: cliFlag29,
1746
- description: () => /* @__PURE__ */ jsxs18(Fragment26, {
1829
+ cliFlag: cliFlag30,
1830
+ description: () => /* @__PURE__ */ jsxs19(Fragment27, {
1747
1831
  children: [
1748
1832
  "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 ",
1749
- /* @__PURE__ */ jsx26("code", {
1833
+ /* @__PURE__ */ jsx27("code", {
1750
1834
  children: "fps"
1751
1835
  }),
1752
1836
  " is 30, and",
1753
1837
  " ",
1754
- /* @__PURE__ */ jsx26("code", {
1838
+ /* @__PURE__ */ jsx27("code", {
1755
1839
  children: "everyNthFrame"
1756
1840
  }),
1757
1841
  " is 2, the FPS of the GIF is ",
1758
- /* @__PURE__ */ jsx26("code", {
1842
+ /* @__PURE__ */ jsx27("code", {
1759
1843
  children: "15"
1760
1844
  }),
1761
1845
  "."
@@ -1765,10 +1849,10 @@ var everyNthFrameOption = {
1765
1849
  docLink: "https://www.remotion.dev/docs/config#seteverynthframe",
1766
1850
  type: DEFAULT_EVERY_NTH_FRAME,
1767
1851
  getValue: ({ commandLine }) => {
1768
- if (commandLine[cliFlag29] !== undefined) {
1852
+ if (commandLine[cliFlag30] !== undefined) {
1769
1853
  return {
1770
1854
  source: "cli",
1771
- value: commandLine[cliFlag29]
1855
+ value: commandLine[cliFlag30]
1772
1856
  };
1773
1857
  }
1774
1858
  if (everyNthFrame !== DEFAULT_EVERY_NTH_FRAME) {
@@ -1785,26 +1869,26 @@ var everyNthFrameOption = {
1785
1869
  setConfig: (value) => {
1786
1870
  everyNthFrame = value;
1787
1871
  },
1788
- id: cliFlag29
1872
+ id: cliFlag30
1789
1873
  };
1790
1874
 
1791
1875
  // src/options/folder-expiry.tsx
1792
- import { jsx as jsx27, jsxs as jsxs19, Fragment as Fragment27 } from "react/jsx-runtime";
1876
+ import { jsx as jsx28, jsxs as jsxs20, Fragment as Fragment28 } from "react/jsx-runtime";
1793
1877
  var enableFolderExpiry = null;
1794
- var cliFlag30 = "enable-folder-expiry";
1878
+ var cliFlag31 = "enable-folder-expiry";
1795
1879
  var folderExpiryOption = {
1796
1880
  name: "Lambda render expiration",
1797
- cliFlag: cliFlag30,
1881
+ cliFlag: cliFlag31,
1798
1882
  description: () => {
1799
- return /* @__PURE__ */ jsxs19(Fragment27, {
1883
+ return /* @__PURE__ */ jsxs20(Fragment28, {
1800
1884
  children: [
1801
1885
  "When deploying sites, enable or disable S3 Lifecycle policies which allow for renders to auto-delete after a certain time. Default is",
1802
1886
  " ",
1803
- /* @__PURE__ */ jsx27("code", {
1887
+ /* @__PURE__ */ jsx28("code", {
1804
1888
  children: "null"
1805
1889
  }),
1806
1890
  ", which does not change any lifecycle policies of the S3 bucket. See: ",
1807
- /* @__PURE__ */ jsx27("a", {
1891
+ /* @__PURE__ */ jsx28("a", {
1808
1892
  href: "/docs/lambda/autodelete",
1809
1893
  children: "Lambda autodelete"
1810
1894
  }),
@@ -1816,10 +1900,10 @@ var folderExpiryOption = {
1816
1900
  docLink: "https://www.remotion.dev/docs/lambda/autodelete",
1817
1901
  type: false,
1818
1902
  getValue: ({ commandLine }) => {
1819
- if (commandLine[cliFlag30] !== undefined) {
1903
+ if (commandLine[cliFlag31] !== undefined) {
1820
1904
  return {
1821
1905
  source: "cli",
1822
- value: commandLine[cliFlag30]
1906
+ value: commandLine[cliFlag31]
1823
1907
  };
1824
1908
  }
1825
1909
  if (enableFolderExpiry !== null) {
@@ -1836,28 +1920,28 @@ var folderExpiryOption = {
1836
1920
  setConfig: (value) => {
1837
1921
  enableFolderExpiry = value;
1838
1922
  },
1839
- id: cliFlag30
1923
+ id: cliFlag31
1840
1924
  };
1841
1925
 
1842
1926
  // src/options/for-seamless-aac-concatenation.tsx
1843
- import { jsx as jsx28, jsxs as jsxs20, Fragment as Fragment28 } from "react/jsx-runtime";
1927
+ import { jsx as jsx29, jsxs as jsxs21, Fragment as Fragment29 } from "react/jsx-runtime";
1844
1928
  var DEFAULT3 = false;
1845
1929
  var forSeamlessAacConcatenation = DEFAULT3;
1846
- var cliFlag31 = "for-seamless-aac-concatenation";
1930
+ var cliFlag32 = "for-seamless-aac-concatenation";
1847
1931
  var forSeamlessAacConcatenationOption = {
1848
1932
  name: "For seamless AAC concatenation",
1849
- cliFlag: cliFlag31,
1850
- description: () => /* @__PURE__ */ jsxs20(Fragment28, {
1933
+ cliFlag: cliFlag32,
1934
+ description: () => /* @__PURE__ */ jsxs21(Fragment29, {
1851
1935
  children: [
1852
1936
  "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.",
1853
- /* @__PURE__ */ jsx28("br", {}),
1854
- /* @__PURE__ */ jsx28("br", {}),
1937
+ /* @__PURE__ */ jsx29("br", {}),
1938
+ /* @__PURE__ */ jsx29("br", {}),
1855
1939
  " This option is used internally. There is currently no documentation yet for to concatenate the audio chunks."
1856
1940
  ]
1857
1941
  }),
1858
1942
  docLink: "https://remotion.dev/docs/renderer",
1859
1943
  getValue: ({ commandLine }) => {
1860
- if (commandLine[cliFlag31]) {
1944
+ if (commandLine[cliFlag32]) {
1861
1945
  return {
1862
1946
  source: "cli",
1863
1947
  value: true
@@ -1879,26 +1963,26 @@ var forSeamlessAacConcatenationOption = {
1879
1963
  },
1880
1964
  ssrName: "forSeamlessAacConcatenation",
1881
1965
  type: false,
1882
- id: cliFlag31
1966
+ id: cliFlag32
1883
1967
  };
1884
1968
 
1885
1969
  // src/options/force-new-studio.tsx
1886
- import { jsx as jsx29, Fragment as Fragment29 } from "react/jsx-runtime";
1970
+ import { jsx as jsx30, Fragment as Fragment30 } from "react/jsx-runtime";
1887
1971
  var forceNewEnabled = false;
1888
- var cliFlag32 = "force-new";
1972
+ var cliFlag33 = "force-new";
1889
1973
  var forceNewStudioOption = {
1890
1974
  name: "Force New Studio",
1891
- cliFlag: cliFlag32,
1892
- description: () => /* @__PURE__ */ jsx29(Fragment29, {
1975
+ cliFlag: cliFlag33,
1976
+ description: () => /* @__PURE__ */ jsx30(Fragment30, {
1893
1977
  children: "Forces starting a new Studio instance even if one is already running on the same port for the same project."
1894
1978
  }),
1895
1979
  ssrName: null,
1896
1980
  docLink: "https://www.remotion.dev/docs/config#setforcenewstudioenabled",
1897
1981
  type: false,
1898
1982
  getValue: ({ commandLine }) => {
1899
- if (commandLine[cliFlag32] !== undefined && commandLine[cliFlag32] !== null) {
1983
+ if (commandLine[cliFlag33] !== undefined && commandLine[cliFlag33] !== null) {
1900
1984
  return {
1901
- value: commandLine[cliFlag32],
1985
+ value: commandLine[cliFlag33],
1902
1986
  source: "cli"
1903
1987
  };
1904
1988
  }
@@ -1910,10 +1994,49 @@ var forceNewStudioOption = {
1910
1994
  setConfig(value) {
1911
1995
  forceNewEnabled = value;
1912
1996
  },
1913
- id: cliFlag32
1997
+ id: cliFlag33
1914
1998
  };
1915
1999
 
1916
2000
  // src/frame-range.ts
2001
+ var isMultipleFrameRanges = (frameRange) => {
2002
+ return Array.isArray(frameRange) && Array.isArray(frameRange[0]);
2003
+ };
2004
+ var validateFrameRangeTuple = (frameRange) => {
2005
+ if (frameRange.length !== 2) {
2006
+ throw new TypeError("Frame range must be a tuple, got an array with length " + frameRange.length);
2007
+ }
2008
+ const [first, second] = frameRange;
2009
+ if (typeof first !== "number") {
2010
+ throw new Error(`The first value of frame range must be a number, but got ${typeof first} (${JSON.stringify(first)})`);
2011
+ }
2012
+ if (!Number.isFinite(first)) {
2013
+ throw new TypeError("The first value of frame range must be finite, but got " + first);
2014
+ }
2015
+ if (!Number.isInteger(first)) {
2016
+ throw new Error(`The first value of frame range must be an integer, but got a float (${first})`);
2017
+ }
2018
+ if (first < 0) {
2019
+ throw new Error(`The first value of frame range must be non-negative, but got ${first}`);
2020
+ }
2021
+ if (second === null) {
2022
+ return;
2023
+ }
2024
+ if (typeof second !== "number") {
2025
+ throw new Error(`The second value of frame range must be a number or null, but got ${typeof second} (${JSON.stringify(second)})`);
2026
+ }
2027
+ if (!Number.isFinite(second)) {
2028
+ throw new TypeError("The second value of frame range must be finite, but got " + second);
2029
+ }
2030
+ if (!Number.isInteger(second)) {
2031
+ throw new Error(`The second value of frame range must be an integer, but got a float (${second})`);
2032
+ }
2033
+ if (second < 0) {
2034
+ throw new Error(`The second value of frame range must be non-negative, but got ${second}`);
2035
+ }
2036
+ if (second < first) {
2037
+ throw new Error("The second value of frame range must be not smaller than the first one, but got " + frameRange.join("-"));
2038
+ }
2039
+ };
1917
2040
  var validateFrameRange = (frameRange) => {
1918
2041
  if (frameRange === null) {
1919
2042
  return;
@@ -1930,50 +2053,69 @@ var validateFrameRange = (frameRange) => {
1930
2053
  }
1931
2054
  return;
1932
2055
  }
1933
- if (Array.isArray(frameRange)) {
1934
- if (frameRange.length !== 2) {
1935
- throw new TypeError("Frame range must be a tuple, got an array with length " + frameRange.length);
1936
- }
1937
- const [first, second] = frameRange;
1938
- if (typeof first !== "number") {
1939
- throw new Error(`The first value of frame range must be a number, but got ${typeof first} (${JSON.stringify(first)})`);
1940
- }
1941
- if (!Number.isFinite(first)) {
1942
- throw new TypeError("The first value of frame range must be finite, but got " + first);
1943
- }
1944
- if (!Number.isInteger(first)) {
1945
- throw new Error(`The first value of frame range must be an integer, but got a float (${first})`);
1946
- }
1947
- if (first < 0) {
1948
- throw new Error(`The first value of frame range must be non-negative, but got ${first}`);
1949
- }
1950
- if (second === null) {
1951
- return;
2056
+ if (isMultipleFrameRanges(frameRange)) {
2057
+ if (frameRange.length === 0) {
2058
+ throw new TypeError("Multiple frame ranges must not be empty.");
2059
+ }
2060
+ for (let index = 0;index < frameRange.length; index++) {
2061
+ const range = frameRange[index];
2062
+ validateFrameRangeTuple(range);
2063
+ if (range[1] === null && index !== frameRange.length - 1) {
2064
+ throw new Error("An open-ended frame range must be the last range.");
2065
+ }
2066
+ const previous = frameRange[index - 1];
2067
+ if (previous && previous[1] !== null && range[0] <= previous[1]) {
2068
+ throw new Error(`Frame ranges must be ordered and non-overlapping, but got ${previous.join("-")} followed by ${range.join("-")}.`);
2069
+ }
1952
2070
  }
1953
- if (typeof second !== "number") {
1954
- throw new Error(`The second value of frame range must be a number or null, but got ${typeof second} (${JSON.stringify(second)})`);
2071
+ return;
2072
+ }
2073
+ if (Array.isArray(frameRange)) {
2074
+ validateFrameRangeTuple(frameRange);
2075
+ return;
2076
+ }
2077
+ throw new TypeError("Frame range must be a number or a tuple of numbers, but got object of type " + typeof frameRange);
2078
+ };
2079
+
2080
+ // src/validate-selected-frames.ts
2081
+ var validateSelectedFrames = ({
2082
+ frames,
2083
+ durationInFrames
2084
+ }) => {
2085
+ if (!Array.isArray(frames)) {
2086
+ throw new TypeError("The `frames` option must be an array of frame numbers.");
2087
+ }
2088
+ if (frames.length === 0) {
2089
+ throw new TypeError("The `frames` option must contain at least one frame.");
2090
+ }
2091
+ for (const frame of frames) {
2092
+ if (typeof frame !== "number") {
2093
+ throw new TypeError(`The \`frames\` option must contain only numbers, but got ${typeof frame}.`);
1955
2094
  }
1956
- if (!Number.isFinite(second)) {
1957
- throw new TypeError("The second value of frame range must be finite, but got " + second);
2095
+ if (!Number.isFinite(frame)) {
2096
+ throw new TypeError(`The \`frames\` option must contain only finite numbers, but got ${frame}.`);
1958
2097
  }
1959
- if (!Number.isInteger(second)) {
1960
- throw new Error(`The second value of frame range must be an integer, but got a float (${second})`);
2098
+ if (!Number.isInteger(frame)) {
2099
+ throw new TypeError(`The \`frames\` option must contain only integers, but got ${frame}.`);
1961
2100
  }
1962
- if (second < 0) {
1963
- throw new Error(`The second value of frame range must be non-negative, but got ${second}`);
2101
+ if (frame < 0) {
2102
+ throw new TypeError(`The \`frames\` option must contain only non-negative numbers, but got ${frame}.`);
1964
2103
  }
1965
- if (second < first) {
1966
- throw new Error("The second value of frame range must be not smaller than the first one, but got " + frameRange.join("-"));
2104
+ if (durationInFrames !== null && frame >= durationInFrames) {
2105
+ throw new RangeError(`Frame ${frame} is out of range, must be between 0 and ${durationInFrames - 1}.`);
1967
2106
  }
1968
- return;
1969
2107
  }
1970
- throw new TypeError("Frame range must be a number or a tuple of numbers, but got object of type " + typeof frameRange);
2108
+ const uniqueFrames = new Set(frames);
2109
+ if (uniqueFrames.size !== frames.length) {
2110
+ throw new TypeError("The `frames` option must not contain duplicate frames.");
2111
+ }
2112
+ return [...frames].sort((a, b) => a - b);
1971
2113
  };
1972
2114
 
1973
2115
  // src/options/frames.tsx
1974
- import { jsx as jsx30, jsxs as jsxs21, Fragment as Fragment30 } from "react/jsx-runtime";
1975
- var cliFlag33 = "frames";
1976
- var frameRange = null;
2116
+ import { jsx as jsx31, jsxs as jsxs22, Fragment as Fragment31 } from "react/jsx-runtime";
2117
+ var cliFlag34 = "frames";
2118
+ var frameSelection = null;
1977
2119
  var parseFrameRangeFromCli = (newFrameRange) => {
1978
2120
  if (typeof newFrameRange === "number") {
1979
2121
  if (newFrameRange < 0) {
@@ -1985,6 +2127,35 @@ var parseFrameRangeFromCli = (newFrameRange) => {
1985
2127
  if (newFrameRange.trim() === "") {
1986
2128
  throw new Error("--frames flag must be a single number, or 2 numbers separated by `-`");
1987
2129
  }
2130
+ if (newFrameRange.includes(",")) {
2131
+ const selectors = newFrameRange.split(",").map((selector) => selector.trim());
2132
+ if (selectors.some((selector) => selector === "")) {
2133
+ throw new TypeError("--frames must contain a frame or frame range between commas.");
2134
+ }
2135
+ const onlyFrames = selectors.every((selector) => !selector.includes("-"));
2136
+ if (onlyFrames) {
2137
+ const frames = validateSelectedFrames({
2138
+ frames: selectors.map((frame) => Number(frame)),
2139
+ durationInFrames: null
2140
+ });
2141
+ return { type: "frames", frames };
2142
+ }
2143
+ const ranges = selectors.map((selector) => {
2144
+ if (!selector.includes("-")) {
2145
+ const frame = Number(selector);
2146
+ return [frame, frame];
2147
+ }
2148
+ const rangeParts = selector.split("-");
2149
+ if (rangeParts.length !== 2 || rangeParts[0] === "") {
2150
+ throw new Error(`Invalid frame selector "${selector}". Use a frame number, a range such as 0-9, or an open-ended range such as 100-.`);
2151
+ }
2152
+ const start = Number(rangeParts[0]);
2153
+ const end = rangeParts[1] === "" ? null : Number(rangeParts[1]);
2154
+ return [start, end];
2155
+ });
2156
+ validateFrameRange(ranges);
2157
+ return ranges;
2158
+ }
1988
2159
  const parts = newFrameRange.split("-");
1989
2160
  if (parts.length > 2 || parts.length <= 0) {
1990
2161
  throw new Error(`--frames flag must be a number or 2 numbers separated by '-', instead got ${parts.length} numbers`);
@@ -1992,7 +2163,7 @@ var parseFrameRangeFromCli = (newFrameRange) => {
1992
2163
  if (parts.length === 1) {
1993
2164
  const value = Number(parts[0]);
1994
2165
  if (isNaN(value)) {
1995
- throw new Error("--frames flag must be a single number, or 2 numbers separated by `-`");
2166
+ throw new Error("--frames flag must be a frame number, range, or comma-separated selection");
1996
2167
  }
1997
2168
  return value;
1998
2169
  }
@@ -2000,7 +2171,7 @@ var parseFrameRangeFromCli = (newFrameRange) => {
2000
2171
  if (secondPart === "" && firstPart !== "") {
2001
2172
  const start = Number(firstPart);
2002
2173
  if (isNaN(start)) {
2003
- throw new Error("--frames flag must be a single number, or 2 numbers separated by `-`");
2174
+ throw new Error("--frames flag must be a frame number, range, or comma-separated selection");
2004
2175
  }
2005
2176
  return [start, null];
2006
2177
  }
@@ -2008,7 +2179,7 @@ var parseFrameRangeFromCli = (newFrameRange) => {
2008
2179
  const [first, second] = parsed;
2009
2180
  for (const value of parsed) {
2010
2181
  if (isNaN(value)) {
2011
- throw new Error("--frames flag must be a single number, or 2 numbers separated by `-`");
2182
+ throw new Error("--frames flag must be a frame number, range, or comma-separated selection");
2012
2183
  }
2013
2184
  }
2014
2185
  if (second < first) {
@@ -2020,16 +2191,16 @@ var parseFrameRangeFromCli = (newFrameRange) => {
2020
2191
  };
2021
2192
  var framesOption = {
2022
2193
  name: "Frame Range",
2023
- cliFlag: cliFlag33,
2024
- description: () => /* @__PURE__ */ jsxs21(Fragment30, {
2194
+ cliFlag: cliFlag34,
2195
+ description: () => /* @__PURE__ */ jsxs22(Fragment31, {
2025
2196
  children: [
2026
2197
  "Render a subset of a video. Pass a single number to render a still, or a range (e.g. ",
2027
- /* @__PURE__ */ jsx30("code", {
2198
+ /* @__PURE__ */ jsx31("code", {
2028
2199
  children: "0-9"
2029
2200
  }),
2030
2201
  ") to render a subset of frames. Pass",
2031
2202
  " ",
2032
- /* @__PURE__ */ jsx30("code", {
2203
+ /* @__PURE__ */ jsx31("code", {
2033
2204
  children: "100-"
2034
2205
  }),
2035
2206
  " to render from frame 100 to the end."
@@ -2039,9 +2210,16 @@ var framesOption = {
2039
2210
  docLink: "https://www.remotion.dev/docs/config#setframerange",
2040
2211
  type: null,
2041
2212
  getValue: ({ commandLine }) => {
2042
- if (commandLine[cliFlag33] !== undefined) {
2043
- const value = parseFrameRangeFromCli(commandLine[cliFlag33]);
2044
- validateFrameRange(value);
2213
+ if (commandLine[cliFlag34] !== undefined) {
2214
+ const value = parseFrameRangeFromCli(commandLine[cliFlag34]);
2215
+ if (typeof value === "object" && !Array.isArray(value)) {
2216
+ validateSelectedFrames({
2217
+ frames: value.frames,
2218
+ durationInFrames: null
2219
+ });
2220
+ } else {
2221
+ validateFrameRange(value);
2222
+ }
2045
2223
  return {
2046
2224
  source: "cli",
2047
2225
  value
@@ -2049,21 +2227,23 @@ var framesOption = {
2049
2227
  }
2050
2228
  return {
2051
2229
  source: "config",
2052
- value: frameRange
2230
+ value: frameSelection
2053
2231
  };
2054
2232
  },
2055
2233
  setConfig: (value) => {
2056
- if (value !== null) {
2234
+ if (value !== null && typeof value === "object" && !Array.isArray(value)) {
2235
+ validateSelectedFrames({ frames: value.frames, durationInFrames: null });
2236
+ } else if (value !== null) {
2057
2237
  validateFrameRange(value);
2058
2238
  }
2059
- frameRange = value;
2239
+ frameSelection = value;
2060
2240
  },
2061
- id: cliFlag33
2241
+ id: cliFlag34
2062
2242
  };
2063
2243
 
2064
2244
  // src/options/gl.tsx
2065
2245
  import { NoReactInternals as NoReactInternals2 } from "remotion/no-react";
2066
- import { jsx as jsx31, jsxs as jsxs22, Fragment as Fragment31 } from "react/jsx-runtime";
2246
+ import { jsx as jsx32, jsxs as jsxs23, Fragment as Fragment32 } from "react/jsx-runtime";
2067
2247
  var validOpenGlRenderers = [
2068
2248
  "swangle",
2069
2249
  "angle",
@@ -2078,42 +2258,42 @@ var getDefaultOpenGlRenderer = (enableV5BreakingChanges) => {
2078
2258
  var DEFAULT_OPENGL_RENDERER = getDefaultOpenGlRenderer(NoReactInternals2.ENABLE_V5_BREAKING_CHANGES);
2079
2259
  var openGlRenderer = DEFAULT_OPENGL_RENDERER;
2080
2260
  var AngleChangelog = () => {
2081
- return /* @__PURE__ */ jsxs22("details", {
2261
+ return /* @__PURE__ */ jsxs23("details", {
2082
2262
  style: { fontSize: "0.9em", marginBottom: "1em" },
2083
2263
  children: [
2084
- /* @__PURE__ */ jsx31("summary", {
2264
+ /* @__PURE__ */ jsx32("summary", {
2085
2265
  children: "Changelog"
2086
2266
  }),
2087
- /* @__PURE__ */ jsxs22("ul", {
2267
+ /* @__PURE__ */ jsxs23("ul", {
2088
2268
  children: [
2089
- /* @__PURE__ */ jsxs22("li", {
2269
+ /* @__PURE__ */ jsxs23("li", {
2090
2270
  children: [
2091
2271
  "From Remotion v2.6.7 until v3.0.7, the default for Remotion Lambda was",
2092
2272
  " ",
2093
- /* @__PURE__ */ jsx31("code", {
2273
+ /* @__PURE__ */ jsx32("code", {
2094
2274
  children: "swiftshader"
2095
2275
  }),
2096
2276
  ", but from v3.0.8 the default is",
2097
2277
  " ",
2098
- /* @__PURE__ */ jsx31("code", {
2278
+ /* @__PURE__ */ jsx32("code", {
2099
2279
  children: "swangle"
2100
2280
  }),
2101
2281
  " (Swiftshader on Angle) since Chrome 101 added support for it."
2102
2282
  ]
2103
2283
  }),
2104
- /* @__PURE__ */ jsxs22("li", {
2284
+ /* @__PURE__ */ jsxs23("li", {
2105
2285
  children: [
2106
2286
  "From Remotion v2.4.3 until v2.6.6, the default was ",
2107
- /* @__PURE__ */ jsx31("code", {
2287
+ /* @__PURE__ */ jsx32("code", {
2108
2288
  children: "angle"
2109
2289
  }),
2110
2290
  ", however it turns out to have a small memory leak that could crash long Remotion renders."
2111
2291
  ]
2112
2292
  }),
2113
- NoReactInternals2.ENABLE_V5_BREAKING_CHANGES ? /* @__PURE__ */ jsxs22("li", {
2293
+ NoReactInternals2.ENABLE_V5_BREAKING_CHANGES ? /* @__PURE__ */ jsxs23("li", {
2114
2294
  children: [
2115
2295
  "From Remotion v5.0, the default is ",
2116
- /* @__PURE__ */ jsx31("code", {
2296
+ /* @__PURE__ */ jsx32("code", {
2117
2297
  children: "angle"
2118
2298
  }),
2119
2299
  ". If no compatible GPU is available, Chromium automatically falls back to SwiftShader."
@@ -2124,65 +2304,65 @@ var AngleChangelog = () => {
2124
2304
  ]
2125
2305
  });
2126
2306
  };
2127
- var cliFlag34 = "gl";
2307
+ var cliFlag35 = "gl";
2128
2308
  var glOption = {
2129
- cliFlag: cliFlag34,
2309
+ cliFlag: cliFlag35,
2130
2310
  docLink: "https://www.remotion.dev/docs/chromium-flags#--gl",
2131
2311
  name: "OpenGL renderer",
2132
2312
  type: "angle",
2133
2313
  ssrName: "gl",
2134
2314
  description: () => {
2135
- return /* @__PURE__ */ jsxs22(Fragment31, {
2315
+ return /* @__PURE__ */ jsxs23(Fragment32, {
2136
2316
  children: [
2137
- /* @__PURE__ */ jsx31(AngleChangelog, {}),
2138
- /* @__PURE__ */ jsxs22("p", {
2317
+ /* @__PURE__ */ jsx32(AngleChangelog, {}),
2318
+ /* @__PURE__ */ jsxs23("p", {
2139
2319
  children: [
2140
2320
  "Select the OpenGL renderer backend for Chromium. ",
2141
- /* @__PURE__ */ jsx31("br", {}),
2321
+ /* @__PURE__ */ jsx32("br", {}),
2142
2322
  "Accepted values:"
2143
2323
  ]
2144
2324
  }),
2145
- /* @__PURE__ */ jsxs22("ul", {
2325
+ /* @__PURE__ */ jsxs23("ul", {
2146
2326
  children: [
2147
- /* @__PURE__ */ jsx31("li", {
2148
- children: /* @__PURE__ */ jsx31("code", {
2327
+ /* @__PURE__ */ jsx32("li", {
2328
+ children: /* @__PURE__ */ jsx32("code", {
2149
2329
  children: '"angle"'
2150
2330
  })
2151
2331
  }),
2152
- /* @__PURE__ */ jsx31("li", {
2153
- children: /* @__PURE__ */ jsx31("code", {
2332
+ /* @__PURE__ */ jsx32("li", {
2333
+ children: /* @__PURE__ */ jsx32("code", {
2154
2334
  children: '"egl"'
2155
2335
  })
2156
2336
  }),
2157
- /* @__PURE__ */ jsx31("li", {
2158
- children: /* @__PURE__ */ jsx31("code", {
2337
+ /* @__PURE__ */ jsx32("li", {
2338
+ children: /* @__PURE__ */ jsx32("code", {
2159
2339
  children: '"swiftshader"'
2160
2340
  })
2161
2341
  }),
2162
- /* @__PURE__ */ jsx31("li", {
2163
- children: /* @__PURE__ */ jsx31("code", {
2342
+ /* @__PURE__ */ jsx32("li", {
2343
+ children: /* @__PURE__ */ jsx32("code", {
2164
2344
  children: '"swangle"'
2165
2345
  })
2166
2346
  }),
2167
- /* @__PURE__ */ jsxs22("li", {
2347
+ /* @__PURE__ */ jsxs23("li", {
2168
2348
  children: [
2169
- /* @__PURE__ */ jsx31("code", {
2349
+ /* @__PURE__ */ jsx32("code", {
2170
2350
  children: '"vulkan"'
2171
2351
  }),
2172
2352
  " (",
2173
- /* @__PURE__ */ jsx31("em", {
2353
+ /* @__PURE__ */ jsx32("em", {
2174
2354
  children: "from Remotion v4.0.41"
2175
2355
  }),
2176
2356
  ")"
2177
2357
  ]
2178
2358
  }),
2179
- /* @__PURE__ */ jsxs22("li", {
2359
+ /* @__PURE__ */ jsxs23("li", {
2180
2360
  children: [
2181
- /* @__PURE__ */ jsx31("code", {
2361
+ /* @__PURE__ */ jsx32("code", {
2182
2362
  children: '"angle-egl"'
2183
2363
  }),
2184
2364
  " (",
2185
- /* @__PURE__ */ jsx31("em", {
2365
+ /* @__PURE__ */ jsx32("em", {
2186
2366
  children: "from Remotion v4.0.51"
2187
2367
  }),
2188
2368
  ")"
@@ -2190,16 +2370,16 @@ var glOption = {
2190
2370
  })
2191
2371
  ]
2192
2372
  }),
2193
- /* @__PURE__ */ jsxs22("p", {
2373
+ /* @__PURE__ */ jsxs23("p", {
2194
2374
  children: [
2195
2375
  "The default is",
2196
2376
  " ",
2197
- /* @__PURE__ */ jsx31("code", {
2377
+ /* @__PURE__ */ jsx32("code", {
2198
2378
  children: DEFAULT_OPENGL_RENDERER === null ? "null" : `"${DEFAULT_OPENGL_RENDERER}"`
2199
2379
  }),
2200
2380
  DEFAULT_OPENGL_RENDERER === null ? ", letting Chrome decide" : ", with automatic fallback to SwiftShader if no compatible GPU is available",
2201
2381
  ", except on Lambda where the default is ",
2202
- /* @__PURE__ */ jsx31("code", {
2382
+ /* @__PURE__ */ jsx32("code", {
2203
2383
  children: '"swangle"'
2204
2384
  })
2205
2385
  ]
@@ -2208,10 +2388,10 @@ var glOption = {
2208
2388
  });
2209
2389
  },
2210
2390
  getValue: ({ commandLine }) => {
2211
- if (commandLine[cliFlag34]) {
2212
- validateOpenGlRenderer(commandLine[cliFlag34]);
2391
+ if (commandLine[cliFlag35]) {
2392
+ validateOpenGlRenderer(commandLine[cliFlag35]);
2213
2393
  return {
2214
- value: commandLine[cliFlag34],
2394
+ value: commandLine[cliFlag35],
2215
2395
  source: "cli"
2216
2396
  };
2217
2397
  }
@@ -2230,7 +2410,7 @@ var glOption = {
2230
2410
  validateOpenGlRenderer(value);
2231
2411
  openGlRenderer = value;
2232
2412
  },
2233
- id: cliFlag34
2413
+ id: cliFlag35
2234
2414
  };
2235
2415
  var validateOpenGlRenderer = (option2) => {
2236
2416
  if (option2 === null) {
@@ -2243,7 +2423,7 @@ var validateOpenGlRenderer = (option2) => {
2243
2423
  };
2244
2424
 
2245
2425
  // src/options/gop-size.tsx
2246
- import { jsx as jsx32, jsxs as jsxs23, Fragment as Fragment32 } from "react/jsx-runtime";
2426
+ import { jsx as jsx33, jsxs as jsxs24, Fragment as Fragment33 } from "react/jsx-runtime";
2247
2427
  var gopSize = null;
2248
2428
  var validateGopSize = (value) => {
2249
2429
  if (value === null) {
@@ -2253,14 +2433,14 @@ var validateGopSize = (value) => {
2253
2433
  throw new TypeError("The GOP size must be an integer greater than 0 or null.");
2254
2434
  }
2255
2435
  };
2256
- var cliFlag35 = "gop";
2436
+ var cliFlag36 = "gop";
2257
2437
  var gopSizeOption = {
2258
2438
  name: "GOP size",
2259
- cliFlag: cliFlag35,
2260
- description: () => /* @__PURE__ */ jsxs23(Fragment32, {
2439
+ cliFlag: cliFlag36,
2440
+ description: () => /* @__PURE__ */ jsxs24(Fragment33, {
2261
2441
  children: [
2262
2442
  "Set the maximum number of frames between two keyframes. This maps to FFmpeg's ",
2263
- /* @__PURE__ */ jsx32("code", {
2443
+ /* @__PURE__ */ jsx33("code", {
2264
2444
  children: "-g"
2265
2445
  }),
2266
2446
  " option. Default: Let the encoder decide."
@@ -2270,7 +2450,7 @@ var gopSizeOption = {
2270
2450
  docLink: "https://www.remotion.dev/docs/config#setgopsize",
2271
2451
  type: null,
2272
2452
  getValue: ({ commandLine }) => {
2273
- const value = commandLine[cliFlag35];
2453
+ const value = commandLine[cliFlag36];
2274
2454
  if (value !== undefined) {
2275
2455
  validateGopSize(value);
2276
2456
  return { value, source: "cli" };
@@ -2281,7 +2461,7 @@ var gopSizeOption = {
2281
2461
  validateGopSize(value);
2282
2462
  gopSize = value;
2283
2463
  },
2284
- id: cliFlag35
2464
+ id: cliFlag36
2285
2465
  };
2286
2466
 
2287
2467
  // src/options/hardware-acceleration.tsx
@@ -2290,11 +2470,11 @@ var hardwareAccelerationOptions = [
2290
2470
  "if-possible",
2291
2471
  "required"
2292
2472
  ];
2293
- var cliFlag36 = "hardware-acceleration";
2473
+ var cliFlag37 = "hardware-acceleration";
2294
2474
  var currentValue = null;
2295
2475
  var hardwareAccelerationOption = {
2296
2476
  name: "Hardware Acceleration",
2297
- cliFlag: cliFlag36,
2477
+ cliFlag: cliFlag37,
2298
2478
  description: () => `
2299
2479
  One of
2300
2480
  ${new Intl.ListFormat("en", { type: "disjunction" }).format(hardwareAccelerationOptions.map((a) => JSON.stringify(a)))}
@@ -2306,10 +2486,10 @@ var hardwareAccelerationOption = {
2306
2486
  docLink: "https://www.remotion.dev/docs/encoding",
2307
2487
  type: "disable",
2308
2488
  getValue: ({ commandLine }) => {
2309
- if (commandLine[cliFlag36] !== undefined) {
2310
- const value = commandLine[cliFlag36];
2489
+ if (commandLine[cliFlag37] !== undefined) {
2490
+ const value = commandLine[cliFlag37];
2311
2491
  if (!hardwareAccelerationOptions.includes(value)) {
2312
- throw new Error(`Invalid value for --${cliFlag36}: ${value}`);
2492
+ throw new Error(`Invalid value for --${cliFlag37}: ${value}`);
2313
2493
  }
2314
2494
  return {
2315
2495
  source: "cli",
@@ -2329,26 +2509,26 @@ var hardwareAccelerationOption = {
2329
2509
  },
2330
2510
  setConfig: (value) => {
2331
2511
  if (!hardwareAccelerationOptions.includes(value)) {
2332
- throw new Error(`Invalid value for --${cliFlag36}: ${value}`);
2512
+ throw new Error(`Invalid value for --${cliFlag37}: ${value}`);
2333
2513
  }
2334
2514
  currentValue = value;
2335
2515
  },
2336
- id: cliFlag36
2516
+ id: cliFlag37
2337
2517
  };
2338
2518
 
2339
2519
  // src/options/headless.tsx
2340
- import { jsx as jsx33, jsxs as jsxs24, Fragment as Fragment33 } from "react/jsx-runtime";
2520
+ import { jsx as jsx34, jsxs as jsxs25, Fragment as Fragment34 } from "react/jsx-runtime";
2341
2521
  var DEFAULT4 = true;
2342
2522
  var headlessMode = DEFAULT4;
2343
- var cliFlag37 = "disable-headless";
2523
+ var cliFlag38 = "disable-headless";
2344
2524
  var headlessOption = {
2345
2525
  name: "Disable Headless Mode",
2346
- cliFlag: cliFlag37,
2347
- description: () => /* @__PURE__ */ jsxs24(Fragment33, {
2526
+ cliFlag: cliFlag38,
2527
+ description: () => /* @__PURE__ */ jsxs25(Fragment34, {
2348
2528
  children: [
2349
2529
  "If disabled, the render will open an actual Chrome window where you can see the render happen. This requires",
2350
2530
  " ",
2351
- /* @__PURE__ */ jsx33("a", {
2531
+ /* @__PURE__ */ jsx34("a", {
2352
2532
  href: "/docs/miscellaneous/chrome-headless-shell",
2353
2533
  children: "Chrome for Testing"
2354
2534
  }),
@@ -2360,10 +2540,10 @@ var headlessOption = {
2360
2540
  docLink: "https://www.remotion.dev/docs/chromium-flags#--disable-headless",
2361
2541
  type: false,
2362
2542
  getValue: ({ commandLine }) => {
2363
- if (commandLine[cliFlag37] !== undefined && commandLine[cliFlag37] !== null) {
2543
+ if (commandLine[cliFlag38] !== undefined && commandLine[cliFlag38] !== null) {
2364
2544
  return {
2365
2545
  source: "cli",
2366
- value: !commandLine[cliFlag37]
2546
+ value: !commandLine[cliFlag38]
2367
2547
  };
2368
2548
  }
2369
2549
  if (headlessMode !== DEFAULT4) {
@@ -2380,27 +2560,27 @@ var headlessOption = {
2380
2560
  setConfig: (value) => {
2381
2561
  headlessMode = value;
2382
2562
  },
2383
- id: cliFlag37
2563
+ id: cliFlag38
2384
2564
  };
2385
2565
 
2386
2566
  // src/options/ignore-certificate-errors.tsx
2387
- import { jsx as jsx34, Fragment as Fragment34 } from "react/jsx-runtime";
2567
+ import { jsx as jsx35, Fragment as Fragment35 } from "react/jsx-runtime";
2388
2568
  var ignoreCertificateErrors = false;
2389
- var cliFlag38 = "ignore-certificate-errors";
2569
+ var cliFlag39 = "ignore-certificate-errors";
2390
2570
  var ignoreCertificateErrorsOption = {
2391
2571
  name: "Ignore certificate errors",
2392
- cliFlag: cliFlag38,
2393
- description: () => /* @__PURE__ */ jsx34(Fragment34, {
2572
+ cliFlag: cliFlag39,
2573
+ description: () => /* @__PURE__ */ jsx35(Fragment35, {
2394
2574
  children: "Results in invalid SSL certificates in Chrome, such as self-signed ones, being ignored."
2395
2575
  }),
2396
2576
  ssrName: "ignoreCertificateErrors",
2397
2577
  docLink: "https://www.remotion.dev/docs/chromium-flags#--ignore-certificate-errors",
2398
2578
  type: false,
2399
2579
  getValue: ({ commandLine }) => {
2400
- if (commandLine[cliFlag38] !== undefined && commandLine[cliFlag38] !== null) {
2580
+ if (commandLine[cliFlag39] !== undefined && commandLine[cliFlag39] !== null) {
2401
2581
  return {
2402
2582
  source: "cli",
2403
- value: Boolean(commandLine[cliFlag38])
2583
+ value: Boolean(commandLine[cliFlag39])
2404
2584
  };
2405
2585
  }
2406
2586
  if (ignoreCertificateErrors) {
@@ -2417,23 +2597,23 @@ var ignoreCertificateErrorsOption = {
2417
2597
  setConfig: (value) => {
2418
2598
  ignoreCertificateErrors = value;
2419
2599
  },
2420
- id: cliFlag38
2600
+ id: cliFlag39
2421
2601
  };
2422
2602
 
2423
2603
  // src/options/image-sequence.tsx
2424
- import { jsx as jsx35, jsxs as jsxs25, Fragment as Fragment35 } from "react/jsx-runtime";
2425
- var cliFlag39 = "sequence";
2604
+ import { jsx as jsx36, jsxs as jsxs26, Fragment as Fragment36 } from "react/jsx-runtime";
2605
+ var cliFlag40 = "sequence";
2426
2606
  var imageSequence = false;
2427
2607
  var imageSequenceOption = {
2428
2608
  name: "Image Sequence",
2429
- cliFlag: cliFlag39,
2430
- description: () => /* @__PURE__ */ jsxs25(Fragment35, {
2609
+ cliFlag: cliFlag40,
2610
+ description: () => /* @__PURE__ */ jsxs26(Fragment36, {
2431
2611
  children: [
2432
2612
  "Pass this flag to output an image sequence instead of a video. The default image format is JPEG. See",
2433
2613
  " ",
2434
- /* @__PURE__ */ jsx35("a", {
2614
+ /* @__PURE__ */ jsx36("a", {
2435
2615
  href: "/docs/config#setimagesequence",
2436
- children: /* @__PURE__ */ jsx35("code", {
2616
+ children: /* @__PURE__ */ jsx36("code", {
2437
2617
  children: "setImageSequence()"
2438
2618
  })
2439
2619
  }),
@@ -2444,10 +2624,10 @@ var imageSequenceOption = {
2444
2624
  ssrName: null,
2445
2625
  docLink: "https://www.remotion.dev/docs/config#setimagesequence",
2446
2626
  getValue: ({ commandLine }) => {
2447
- if (commandLine[cliFlag39] !== undefined && commandLine[cliFlag39] !== null) {
2627
+ if (commandLine[cliFlag40] !== undefined && commandLine[cliFlag40] !== null) {
2448
2628
  return {
2449
2629
  source: "cli",
2450
- value: Boolean(commandLine[cliFlag39])
2630
+ value: Boolean(commandLine[cliFlag40])
2451
2631
  };
2452
2632
  }
2453
2633
  return {
@@ -2459,25 +2639,25 @@ var imageSequenceOption = {
2459
2639
  imageSequence = value;
2460
2640
  },
2461
2641
  type: false,
2462
- id: cliFlag39
2642
+ id: cliFlag40
2463
2643
  };
2464
2644
 
2465
2645
  // src/options/image-sequence-pattern.tsx
2466
- import { jsx as jsx36, jsxs as jsxs26, Fragment as Fragment36 } from "react/jsx-runtime";
2467
- var cliFlag40 = "image-sequence-pattern";
2646
+ import { jsx as jsx37, jsxs as jsxs27, Fragment as Fragment37 } from "react/jsx-runtime";
2647
+ var cliFlag41 = "image-sequence-pattern";
2468
2648
  var currentImageSequencePattern = null;
2469
2649
  var imageSequencePatternOption = {
2470
2650
  name: "Image Sequence Pattern",
2471
- cliFlag: cliFlag40,
2651
+ cliFlag: cliFlag41,
2472
2652
  ssrName: "imageSequencePattern",
2473
- description: () => /* @__PURE__ */ jsxs26(Fragment36, {
2653
+ description: () => /* @__PURE__ */ jsxs27(Fragment37, {
2474
2654
  children: [
2475
2655
  "Pattern for naming image sequence files. Supports ",
2476
- /* @__PURE__ */ jsx36("code", {
2656
+ /* @__PURE__ */ jsx37("code", {
2477
2657
  children: "[frame]"
2478
2658
  }),
2479
2659
  " for the zero-padded frame number and ",
2480
- /* @__PURE__ */ jsx36("code", {
2660
+ /* @__PURE__ */ jsx37("code", {
2481
2661
  children: "[ext]"
2482
2662
  }),
2483
2663
  " for the file extension."
@@ -2493,7 +2673,7 @@ var imageSequencePatternOption = {
2493
2673
  };
2494
2674
  }
2495
2675
  return {
2496
- value: commandLine[cliFlag40],
2676
+ value: commandLine[cliFlag41],
2497
2677
  source: "cli"
2498
2678
  };
2499
2679
  },
@@ -2503,25 +2683,25 @@ var imageSequencePatternOption = {
2503
2683
  reset: () => {
2504
2684
  currentImageSequencePattern = null;
2505
2685
  },
2506
- id: cliFlag40
2686
+ id: cliFlag41
2507
2687
  };
2508
2688
 
2509
2689
  // src/options/interactivity.tsx
2510
- import { jsx as jsx37, Fragment as Fragment37 } from "react/jsx-runtime";
2690
+ import { jsx as jsx38, Fragment as Fragment38 } from "react/jsx-runtime";
2511
2691
  var interactivityEnabled = true;
2512
- var cliFlag41 = "disable-interactivity";
2692
+ var cliFlag42 = "disable-interactivity";
2513
2693
  var interactivityOption = {
2514
2694
  name: "Disable or enable Studio interactivity",
2515
- cliFlag: cliFlag41,
2516
- description: () => /* @__PURE__ */ jsx37(Fragment37, {
2695
+ cliFlag: cliFlag42,
2696
+ description: () => /* @__PURE__ */ jsx38(Fragment38, {
2517
2697
  children: "Enable or disable interactive editing in the Remotion Studio. When disabled, the Studio keeps previewing and source navigation available, but disables preview outlines, the sequence inspector, visual controls, timeline selection and timeline editing gestures."
2518
2698
  }),
2519
2699
  ssrName: null,
2520
2700
  docLink: "https://www.remotion.dev/docs/config#setinteractivityenabled",
2521
2701
  type: false,
2522
2702
  getValue: ({ commandLine }) => {
2523
- if (commandLine[cliFlag41] !== undefined && commandLine[cliFlag41] !== null) {
2524
- interactivityEnabled = commandLine[cliFlag41] === false;
2703
+ if (commandLine[cliFlag42] !== undefined && commandLine[cliFlag42] !== null) {
2704
+ interactivityEnabled = commandLine[cliFlag42] === false;
2525
2705
  return {
2526
2706
  value: interactivityEnabled,
2527
2707
  source: "cli"
@@ -2535,26 +2715,26 @@ var interactivityOption = {
2535
2715
  setConfig(value) {
2536
2716
  interactivityEnabled = value;
2537
2717
  },
2538
- id: cliFlag41
2718
+ id: cliFlag42
2539
2719
  };
2540
2720
 
2541
2721
  // src/options/ipv4.tsx
2542
- import { jsx as jsx38, Fragment as Fragment38 } from "react/jsx-runtime";
2722
+ import { jsx as jsx39, Fragment as Fragment39 } from "react/jsx-runtime";
2543
2723
  var forceIPv4 = false;
2544
- var cliFlag42 = "ipv4";
2724
+ var cliFlag43 = "ipv4";
2545
2725
  var ipv4Option = {
2546
2726
  name: "IPv4",
2547
- cliFlag: cliFlag42,
2548
- description: () => /* @__PURE__ */ jsx38(Fragment38, {
2727
+ cliFlag: cliFlag43,
2728
+ description: () => /* @__PURE__ */ jsx39(Fragment39, {
2549
2729
  children: "Forces Remotion to bind to an IPv4 interface for the Studio server."
2550
2730
  }),
2551
2731
  ssrName: null,
2552
2732
  docLink: "https://www.remotion.dev/docs/cli/studio",
2553
2733
  type: false,
2554
2734
  getValue: ({ commandLine }) => {
2555
- if (commandLine[cliFlag42] !== undefined && commandLine[cliFlag42] !== null) {
2735
+ if (commandLine[cliFlag43] !== undefined && commandLine[cliFlag43] !== null) {
2556
2736
  return {
2557
- value: commandLine[cliFlag42],
2737
+ value: commandLine[cliFlag43],
2558
2738
  source: "cli"
2559
2739
  };
2560
2740
  }
@@ -2566,25 +2746,25 @@ var ipv4Option = {
2566
2746
  setConfig(value) {
2567
2747
  forceIPv4 = value;
2568
2748
  },
2569
- id: cliFlag42
2749
+ id: cliFlag43
2570
2750
  };
2571
2751
 
2572
2752
  // src/options/is-production.tsx
2573
- import { jsx as jsx39, jsxs as jsxs27, Fragment as Fragment39 } from "react/jsx-runtime";
2574
- var cliFlag43 = "is-production";
2753
+ import { jsx as jsx40, jsxs as jsxs28, Fragment as Fragment40 } from "react/jsx-runtime";
2754
+ var cliFlag44 = "is-production";
2575
2755
  var currentIsProductionKey = null;
2576
2756
  var isProductionOption = {
2577
2757
  name: "Is Production",
2578
- cliFlag: cliFlag43,
2579
- description: () => /* @__PURE__ */ jsxs27(Fragment39, {
2758
+ cliFlag: cliFlag44,
2759
+ description: () => /* @__PURE__ */ jsxs28(Fragment40, {
2580
2760
  children: [
2581
2761
  "Pass ",
2582
- /* @__PURE__ */ jsx39("code", {
2762
+ /* @__PURE__ */ jsx40("code", {
2583
2763
  children: "false"
2584
2764
  }),
2585
2765
  " if this a development render to not count it as a billable render on remotion.pro. Only can be used in conjuction with",
2586
2766
  " ",
2587
- /* @__PURE__ */ jsx39("code", {
2767
+ /* @__PURE__ */ jsx40("code", {
2588
2768
  children: "licenseKey"
2589
2769
  }),
2590
2770
  "."
@@ -2593,10 +2773,10 @@ var isProductionOption = {
2593
2773
  ssrName: "isProduction",
2594
2774
  docLink: "https://www.remotion.dev/docs/licensing",
2595
2775
  getValue: ({ commandLine }) => {
2596
- if (commandLine[cliFlag43] !== undefined && commandLine[cliFlag43] !== null) {
2776
+ if (commandLine[cliFlag44] !== undefined && commandLine[cliFlag44] !== null) {
2597
2777
  return {
2598
2778
  source: "cli",
2599
- value: commandLine[cliFlag43]
2779
+ value: commandLine[cliFlag44]
2600
2780
  };
2601
2781
  }
2602
2782
  if (currentIsProductionKey !== null) {
@@ -2614,11 +2794,11 @@ var isProductionOption = {
2614
2794
  currentIsProductionKey = value;
2615
2795
  },
2616
2796
  type: false,
2617
- id: cliFlag43
2797
+ id: cliFlag44
2618
2798
  };
2619
2799
 
2620
2800
  // src/options/jpeg-quality.tsx
2621
- import { jsx as jsx40, Fragment as Fragment40 } from "react/jsx-runtime";
2801
+ import { jsx as jsx41, Fragment as Fragment41 } from "react/jsx-runtime";
2622
2802
  var defaultValue = DEFAULT_JPEG_QUALITY;
2623
2803
  var quality = defaultValue;
2624
2804
  var setJpegQuality = (q) => {
@@ -2629,11 +2809,11 @@ var setJpegQuality = (q) => {
2629
2809
  }
2630
2810
  quality = q;
2631
2811
  };
2632
- var cliFlag44 = "jpeg-quality";
2812
+ var cliFlag45 = "jpeg-quality";
2633
2813
  var jpegQualityOption = {
2634
2814
  name: "JPEG Quality",
2635
- cliFlag: cliFlag44,
2636
- description: () => /* @__PURE__ */ jsx40(Fragment40, {
2815
+ cliFlag: cliFlag45,
2816
+ description: () => /* @__PURE__ */ jsx41(Fragment41, {
2637
2817
  children: "Sets the quality of the generated JPEG images. Must be an integer between 0 and 100. Default: 80."
2638
2818
  }),
2639
2819
  ssrName: "jpegQuality",
@@ -2641,11 +2821,11 @@ var jpegQualityOption = {
2641
2821
  type: 0,
2642
2822
  setConfig: setJpegQuality,
2643
2823
  getValue: ({ commandLine }) => {
2644
- if (commandLine[cliFlag44] !== undefined) {
2645
- validateJpegQuality(commandLine[cliFlag44]);
2824
+ if (commandLine[cliFlag45] !== undefined) {
2825
+ validateJpegQuality(commandLine[cliFlag45]);
2646
2826
  return {
2647
2827
  source: "cli",
2648
- value: commandLine[cliFlag44]
2828
+ value: commandLine[cliFlag45]
2649
2829
  };
2650
2830
  }
2651
2831
  if (quality !== defaultValue) {
@@ -2659,25 +2839,25 @@ var jpegQualityOption = {
2659
2839
  value: defaultValue
2660
2840
  };
2661
2841
  },
2662
- id: cliFlag44
2842
+ id: cliFlag45
2663
2843
  };
2664
2844
 
2665
2845
  // src/options/keyboard-shortcuts.tsx
2666
- import { jsx as jsx41, Fragment as Fragment41 } from "react/jsx-runtime";
2846
+ import { jsx as jsx42, Fragment as Fragment42 } from "react/jsx-runtime";
2667
2847
  var keyboardShortcutsEnabled = true;
2668
- var cliFlag45 = "disable-keyboard-shortcuts";
2848
+ var cliFlag46 = "disable-keyboard-shortcuts";
2669
2849
  var keyboardShortcutsOption = {
2670
2850
  name: "Disable or Enable keyboard shortcuts",
2671
- cliFlag: cliFlag45,
2672
- description: () => /* @__PURE__ */ jsx41(Fragment41, {
2851
+ cliFlag: cliFlag46,
2852
+ description: () => /* @__PURE__ */ jsx42(Fragment42, {
2673
2853
  children: "Enable or disable keyboard shortcuts in the Remotion Studio."
2674
2854
  }),
2675
2855
  ssrName: null,
2676
2856
  docLink: "https://www.remotion.dev/docs/config#setkeyboardshortcutsenabled",
2677
2857
  type: false,
2678
2858
  getValue: ({ commandLine }) => {
2679
- if (commandLine[cliFlag45] !== undefined && commandLine[cliFlag45] !== null) {
2680
- keyboardShortcutsEnabled = commandLine[cliFlag45] === false;
2859
+ if (commandLine[cliFlag46] !== undefined && commandLine[cliFlag46] !== null) {
2860
+ keyboardShortcutsEnabled = commandLine[cliFlag46] === false;
2681
2861
  return {
2682
2862
  value: keyboardShortcutsEnabled,
2683
2863
  source: "cli"
@@ -2691,42 +2871,42 @@ var keyboardShortcutsOption = {
2691
2871
  setConfig(value) {
2692
2872
  keyboardShortcutsEnabled = value;
2693
2873
  },
2694
- id: cliFlag45
2874
+ id: cliFlag46
2695
2875
  };
2696
2876
 
2697
2877
  // src/options/latency-hint.tsx
2698
- import { jsx as jsx42, jsxs as jsxs28, Fragment as Fragment42 } from "react/jsx-runtime";
2699
- var cliFlag46 = "audio-latency-hint";
2878
+ import { jsx as jsx43, jsxs as jsxs29, Fragment as Fragment43 } from "react/jsx-runtime";
2879
+ var cliFlag47 = "audio-latency-hint";
2700
2880
  var value = null;
2701
2881
  var audioLatencyHintOption = {
2702
2882
  name: "Audio Latency Hint",
2703
- cliFlag: cliFlag46,
2704
- description: () => /* @__PURE__ */ jsxs28(Fragment42, {
2883
+ cliFlag: cliFlag47,
2884
+ description: () => /* @__PURE__ */ jsxs29(Fragment43, {
2705
2885
  children: [
2706
2886
  "Sets the",
2707
2887
  " ",
2708
- /* @__PURE__ */ jsx42("a", {
2888
+ /* @__PURE__ */ jsx43("a", {
2709
2889
  href: "https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/AudioContext",
2710
2890
  children: "audio latency"
2711
2891
  }),
2712
2892
  " ",
2713
2893
  "hint for the global ",
2714
- /* @__PURE__ */ jsx42("code", {
2894
+ /* @__PURE__ */ jsx43("code", {
2715
2895
  children: "AudioContext"
2716
2896
  }),
2717
2897
  " context that Remotion uses to play audio.",
2718
- /* @__PURE__ */ jsx42("br", {}),
2898
+ /* @__PURE__ */ jsx43("br", {}),
2719
2899
  "Possible values: ",
2720
- /* @__PURE__ */ jsx42("code", {
2900
+ /* @__PURE__ */ jsx43("code", {
2721
2901
  children: "interactive"
2722
2902
  }),
2723
2903
  ", ",
2724
- /* @__PURE__ */ jsx42("code", {
2904
+ /* @__PURE__ */ jsx43("code", {
2725
2905
  children: "balanced"
2726
2906
  }),
2727
2907
  ",",
2728
2908
  " ",
2729
- /* @__PURE__ */ jsx42("code", {
2909
+ /* @__PURE__ */ jsx43("code", {
2730
2910
  children: "playback"
2731
2911
  })
2732
2912
  ]
@@ -2735,7 +2915,7 @@ var audioLatencyHintOption = {
2735
2915
  docLink: "https://www.remotion.dev/docs/renderer/render-media",
2736
2916
  type: "playback",
2737
2917
  getValue: ({ commandLine }) => {
2738
- const val = commandLine[cliFlag46];
2918
+ const val = commandLine[cliFlag47];
2739
2919
  if (typeof val !== "undefined") {
2740
2920
  return { value: val, source: "cli" };
2741
2921
  }
@@ -2747,21 +2927,21 @@ var audioLatencyHintOption = {
2747
2927
  setConfig: (profile) => {
2748
2928
  value = profile;
2749
2929
  },
2750
- id: cliFlag46
2930
+ id: cliFlag47
2751
2931
  };
2752
2932
 
2753
2933
  // src/options/license-key.tsx
2754
- import { jsx as jsx43, jsxs as jsxs29, Fragment as Fragment43 } from "react/jsx-runtime";
2934
+ import { jsx as jsx44, jsxs as jsxs30, Fragment as Fragment44 } from "react/jsx-runtime";
2755
2935
  var currentLicenseKey = null;
2756
- var cliFlag47 = "license-key";
2936
+ var cliFlag48 = "license-key";
2757
2937
  var licenseKeyOption = {
2758
2938
  name: "License key",
2759
- cliFlag: cliFlag47,
2760
- description: () => /* @__PURE__ */ jsxs29(Fragment43, {
2939
+ cliFlag: cliFlag48,
2940
+ description: () => /* @__PURE__ */ jsxs30(Fragment44, {
2761
2941
  children: [
2762
2942
  "License key for sending a usage event using",
2763
2943
  " ",
2764
- /* @__PURE__ */ jsx43("code", {
2944
+ /* @__PURE__ */ jsx44("code", {
2765
2945
  children: "@remotion/licensing"
2766
2946
  }),
2767
2947
  "."
@@ -2771,10 +2951,10 @@ var licenseKeyOption = {
2771
2951
  docLink: "https://www.remotion.dev/docs/licensing",
2772
2952
  type: null,
2773
2953
  getValue: ({ commandLine }) => {
2774
- if (commandLine[cliFlag47] !== undefined) {
2954
+ if (commandLine[cliFlag48] !== undefined) {
2775
2955
  return {
2776
2956
  source: "cli",
2777
- value: commandLine[cliFlag47]
2957
+ value: commandLine[cliFlag48]
2778
2958
  };
2779
2959
  }
2780
2960
  return {
@@ -2785,47 +2965,47 @@ var licenseKeyOption = {
2785
2965
  setConfig: (value2) => {
2786
2966
  currentLicenseKey = value2;
2787
2967
  },
2788
- id: cliFlag47
2968
+ id: cliFlag48
2789
2969
  };
2790
2970
 
2791
2971
  // src/options/log-level.tsx
2792
- import { jsx as jsx44, jsxs as jsxs30, Fragment as Fragment44 } from "react/jsx-runtime";
2972
+ import { jsx as jsx45, jsxs as jsxs31, Fragment as Fragment45 } from "react/jsx-runtime";
2793
2973
  var logLevel = "info";
2794
- var cliFlag48 = "log";
2974
+ var cliFlag49 = "log";
2795
2975
  var logLevelOption = {
2796
- cliFlag: cliFlag48,
2976
+ cliFlag: cliFlag49,
2797
2977
  name: "Log Level",
2798
2978
  ssrName: "logLevel",
2799
- description: () => /* @__PURE__ */ jsxs30(Fragment44, {
2979
+ description: () => /* @__PURE__ */ jsxs31(Fragment45, {
2800
2980
  children: [
2801
2981
  "One of ",
2802
- /* @__PURE__ */ jsx44("code", {
2982
+ /* @__PURE__ */ jsx45("code", {
2803
2983
  children: "trace"
2804
2984
  }),
2805
2985
  ", ",
2806
- /* @__PURE__ */ jsx44("code", {
2986
+ /* @__PURE__ */ jsx45("code", {
2807
2987
  children: "verbose"
2808
2988
  }),
2809
2989
  ", ",
2810
- /* @__PURE__ */ jsx44("code", {
2990
+ /* @__PURE__ */ jsx45("code", {
2811
2991
  children: "info"
2812
2992
  }),
2813
2993
  ",",
2814
2994
  " ",
2815
- /* @__PURE__ */ jsx44("code", {
2995
+ /* @__PURE__ */ jsx45("code", {
2816
2996
  children: "warn"
2817
2997
  }),
2818
2998
  ", ",
2819
- /* @__PURE__ */ jsx44("code", {
2999
+ /* @__PURE__ */ jsx45("code", {
2820
3000
  children: "error"
2821
3001
  }),
2822
3002
  ".",
2823
- /* @__PURE__ */ jsx44("br", {}),
3003
+ /* @__PURE__ */ jsx45("br", {}),
2824
3004
  " Determines how much info is being logged to the console.",
2825
- /* @__PURE__ */ jsx44("br", {}),
2826
- /* @__PURE__ */ jsx44("br", {}),
3005
+ /* @__PURE__ */ jsx45("br", {}),
3006
+ /* @__PURE__ */ jsx45("br", {}),
2827
3007
  " Default ",
2828
- /* @__PURE__ */ jsx44("code", {
3008
+ /* @__PURE__ */ jsx45("code", {
2829
3009
  children: "info"
2830
3010
  }),
2831
3011
  "."
@@ -2833,11 +3013,11 @@ var logLevelOption = {
2833
3013
  }),
2834
3014
  docLink: "https://www.remotion.dev/docs/troubleshooting/debug-failed-render",
2835
3015
  getValue: ({ commandLine }) => {
2836
- if (commandLine[cliFlag48]) {
2837
- if (!isValidLogLevel(commandLine[cliFlag48])) {
3016
+ if (commandLine[cliFlag49]) {
3017
+ if (!isValidLogLevel(commandLine[cliFlag49])) {
2838
3018
  throw new Error(`Invalid \`--log\` value passed. Accepted values: ${logLevels.map((l) => `'${l}'`).join(", ")}.`);
2839
3019
  }
2840
- return { value: commandLine[cliFlag48], source: "cli" };
3020
+ return { value: commandLine[cliFlag49], source: "cli" };
2841
3021
  }
2842
3022
  if (logLevel !== "info") {
2843
3023
  return { value: logLevel, source: "config" };
@@ -2848,23 +3028,23 @@ var logLevelOption = {
2848
3028
  logLevel = newLogLevel;
2849
3029
  },
2850
3030
  type: "error",
2851
- id: cliFlag48
3031
+ id: cliFlag49
2852
3032
  };
2853
3033
 
2854
3034
  // src/options/metadata.tsx
2855
- import { jsx as jsx45, jsxs as jsxs31, Fragment as Fragment45 } from "react/jsx-runtime";
3035
+ import { jsx as jsx46, jsxs as jsxs32, Fragment as Fragment46 } from "react/jsx-runtime";
2856
3036
  var metadata = {};
2857
- var cliFlag49 = "metadata";
3037
+ var cliFlag50 = "metadata";
2858
3038
  var metadataOption = {
2859
3039
  name: "Metadata",
2860
- cliFlag: cliFlag49,
3040
+ cliFlag: cliFlag50,
2861
3041
  description: (mode) => {
2862
3042
  if (mode === "ssr") {
2863
- return /* @__PURE__ */ jsxs31(Fragment45, {
3043
+ return /* @__PURE__ */ jsxs32(Fragment46, {
2864
3044
  children: [
2865
3045
  "An object containing metadata to be embedded in the video. See",
2866
3046
  " ",
2867
- /* @__PURE__ */ jsx45("a", {
3047
+ /* @__PURE__ */ jsx46("a", {
2868
3048
  href: "/docs/metadata",
2869
3049
  children: "here"
2870
3050
  }),
@@ -2872,18 +3052,18 @@ var metadataOption = {
2872
3052
  ]
2873
3053
  });
2874
3054
  }
2875
- return /* @__PURE__ */ jsxs31(Fragment45, {
3055
+ return /* @__PURE__ */ jsxs32(Fragment46, {
2876
3056
  children: [
2877
3057
  "Metadata to be embedded in the video. See",
2878
3058
  " ",
2879
- /* @__PURE__ */ jsx45("a", {
3059
+ /* @__PURE__ */ jsx46("a", {
2880
3060
  href: "/docs/metadata",
2881
3061
  children: "here"
2882
3062
  }),
2883
3063
  " for which metadata is accepted.",
2884
- /* @__PURE__ */ jsx45("br", {}),
3064
+ /* @__PURE__ */ jsx46("br", {}),
2885
3065
  "The parameter must be in the format of ",
2886
- /* @__PURE__ */ jsx45("code", {
3066
+ /* @__PURE__ */ jsx46("code", {
2887
3067
  children: "--metadata key=value"
2888
3068
  }),
2889
3069
  " ",
@@ -2894,8 +3074,8 @@ var metadataOption = {
2894
3074
  docLink: "https://www.remotion.dev/docs/metadata",
2895
3075
  type: {},
2896
3076
  getValue: ({ commandLine }) => {
2897
- if (commandLine[cliFlag49] !== undefined) {
2898
- const val = commandLine[cliFlag49];
3077
+ if (commandLine[cliFlag50] !== undefined) {
3078
+ const val = commandLine[cliFlag50];
2899
3079
  const array = typeof val === "string" ? [val] : val;
2900
3080
  const keyValues = array.map((a) => {
2901
3081
  if (!a.includes("=")) {
@@ -2922,28 +3102,28 @@ var metadataOption = {
2922
3102
  metadata = newMetadata;
2923
3103
  },
2924
3104
  ssrName: "metadata",
2925
- id: cliFlag49
3105
+ id: cliFlag50
2926
3106
  };
2927
3107
 
2928
3108
  // src/options/mute.tsx
2929
- import { jsx as jsx46, Fragment as Fragment46 } from "react/jsx-runtime";
3109
+ import { jsx as jsx47, Fragment as Fragment47 } from "react/jsx-runtime";
2930
3110
  var DEFAULT_MUTED_STATE = false;
2931
3111
  var mutedState = DEFAULT_MUTED_STATE;
2932
- var cliFlag50 = "muted";
3112
+ var cliFlag51 = "muted";
2933
3113
  var mutedOption = {
2934
3114
  name: "Muted",
2935
- cliFlag: cliFlag50,
2936
- description: () => /* @__PURE__ */ jsx46(Fragment46, {
3115
+ cliFlag: cliFlag51,
3116
+ description: () => /* @__PURE__ */ jsx47(Fragment47, {
2937
3117
  children: "The Audio of the video will be omitted."
2938
3118
  }),
2939
3119
  ssrName: "muted",
2940
3120
  docLink: "https://www.remotion.dev/docs/audio/muting",
2941
3121
  type: false,
2942
3122
  getValue: ({ commandLine }) => {
2943
- if (commandLine[cliFlag50] !== null) {
3123
+ if (commandLine[cliFlag51] !== null) {
2944
3124
  return {
2945
3125
  source: "cli",
2946
- value: commandLine[cliFlag50]
3126
+ value: commandLine[cliFlag51]
2947
3127
  };
2948
3128
  }
2949
3129
  if (mutedState !== DEFAULT_MUTED_STATE) {
@@ -2963,17 +3143,17 @@ var mutedOption = {
2963
3143
  reset: () => {
2964
3144
  mutedState = DEFAULT_MUTED_STATE;
2965
3145
  },
2966
- id: cliFlag50
3146
+ id: cliFlag51
2967
3147
  };
2968
3148
 
2969
3149
  // src/options/no-open.tsx
2970
- import { jsx as jsx47, Fragment as Fragment47 } from "react/jsx-runtime";
3150
+ import { jsx as jsx48, Fragment as Fragment48 } from "react/jsx-runtime";
2971
3151
  var shouldOpenBrowser = true;
2972
- var cliFlag51 = "no-open";
3152
+ var cliFlag52 = "no-open";
2973
3153
  var noOpenOption = {
2974
3154
  name: "Disable browser auto-open",
2975
- cliFlag: cliFlag51,
2976
- description: () => /* @__PURE__ */ jsx47(Fragment47, {
3155
+ cliFlag: cliFlag52,
3156
+ description: () => /* @__PURE__ */ jsx48(Fragment48, {
2977
3157
  children: "If specified, Remotion will not open a browser window when starting the Studio."
2978
3158
  }),
2979
3159
  ssrName: null,
@@ -2995,54 +3175,54 @@ var noOpenOption = {
2995
3175
  reset: () => {
2996
3176
  shouldOpenBrowser = true;
2997
3177
  },
2998
- id: cliFlag51
3178
+ id: cliFlag52
2999
3179
  };
3000
3180
 
3001
3181
  // src/options/number-of-gif-loops.tsx
3002
- import { jsx as jsx48, jsxs as jsxs32, Fragment as Fragment48 } from "react/jsx-runtime";
3182
+ import { jsx as jsx49, jsxs as jsxs33, Fragment as Fragment49 } from "react/jsx-runtime";
3003
3183
  var currentLoop = null;
3004
3184
  var validate = (newLoop) => {
3005
3185
  if (newLoop !== null && typeof newLoop !== "number") {
3006
3186
  throw new Error("--number-of-gif-loops flag must be a number.");
3007
3187
  }
3008
3188
  };
3009
- var cliFlag52 = "number-of-gif-loops";
3189
+ var cliFlag53 = "number-of-gif-loops";
3010
3190
  var numberOfGifLoopsOption = {
3011
3191
  name: "Number of GIF loops",
3012
- cliFlag: cliFlag52,
3192
+ cliFlag: cliFlag53,
3013
3193
  description: () => {
3014
- return /* @__PURE__ */ jsxs32(Fragment48, {
3194
+ return /* @__PURE__ */ jsxs33(Fragment49, {
3015
3195
  children: [
3016
3196
  "Allows you to set the number of loops as follows:",
3017
- /* @__PURE__ */ jsxs32("ul", {
3197
+ /* @__PURE__ */ jsxs33("ul", {
3018
3198
  children: [
3019
- /* @__PURE__ */ jsxs32("li", {
3199
+ /* @__PURE__ */ jsxs33("li", {
3020
3200
  children: [
3021
- /* @__PURE__ */ jsx48("code", {
3201
+ /* @__PURE__ */ jsx49("code", {
3022
3202
  children: "null"
3023
3203
  }),
3024
3204
  " (or omitting in the CLI) plays the GIF indefinitely."
3025
3205
  ]
3026
3206
  }),
3027
- /* @__PURE__ */ jsxs32("li", {
3207
+ /* @__PURE__ */ jsxs33("li", {
3028
3208
  children: [
3029
- /* @__PURE__ */ jsx48("code", {
3209
+ /* @__PURE__ */ jsx49("code", {
3030
3210
  children: "0"
3031
3211
  }),
3032
3212
  " disables looping"
3033
3213
  ]
3034
3214
  }),
3035
- /* @__PURE__ */ jsxs32("li", {
3215
+ /* @__PURE__ */ jsxs33("li", {
3036
3216
  children: [
3037
- /* @__PURE__ */ jsx48("code", {
3217
+ /* @__PURE__ */ jsx49("code", {
3038
3218
  children: "1"
3039
3219
  }),
3040
3220
  " loops the GIF once (plays twice in total)"
3041
3221
  ]
3042
3222
  }),
3043
- /* @__PURE__ */ jsxs32("li", {
3223
+ /* @__PURE__ */ jsxs33("li", {
3044
3224
  children: [
3045
- /* @__PURE__ */ jsx48("code", {
3225
+ /* @__PURE__ */ jsx49("code", {
3046
3226
  children: "2"
3047
3227
  }),
3048
3228
  " loops the GIF twice (plays three times in total) and so on."
@@ -3057,10 +3237,10 @@ var numberOfGifLoopsOption = {
3057
3237
  docLink: "https://www.remotion.dev/docs/render-as-gif#changing-the-number-of-loops",
3058
3238
  type: 0,
3059
3239
  getValue: ({ commandLine }) => {
3060
- if (commandLine[cliFlag52] !== undefined) {
3061
- validate(commandLine[cliFlag52]);
3240
+ if (commandLine[cliFlag53] !== undefined) {
3241
+ validate(commandLine[cliFlag53]);
3062
3242
  return {
3063
- value: commandLine[cliFlag52],
3243
+ value: commandLine[cliFlag53],
3064
3244
  source: "cli"
3065
3245
  };
3066
3246
  }
@@ -3079,21 +3259,21 @@ var numberOfGifLoopsOption = {
3079
3259
  validate(newLoop);
3080
3260
  currentLoop = newLoop;
3081
3261
  },
3082
- id: cliFlag52
3262
+ id: cliFlag53
3083
3263
  };
3084
3264
 
3085
3265
  // src/options/number-of-shared-audio-tags.tsx
3086
- import { jsx as jsx49, jsxs as jsxs33, Fragment as Fragment49 } from "react/jsx-runtime";
3266
+ import { jsx as jsx50, jsxs as jsxs34, Fragment as Fragment50 } from "react/jsx-runtime";
3087
3267
  var numberOfSharedAudioTags = 0;
3088
- var cliFlag53 = "number-of-shared-audio-tags";
3268
+ var cliFlag54 = "number-of-shared-audio-tags";
3089
3269
  var numberOfSharedAudioTagsOption = {
3090
3270
  name: "Number of shared audio tags",
3091
- cliFlag: cliFlag53,
3092
- description: () => /* @__PURE__ */ jsxs33(Fragment49, {
3271
+ cliFlag: cliFlag54,
3272
+ description: () => /* @__PURE__ */ jsxs34(Fragment50, {
3093
3273
  children: [
3094
3274
  "Set number of shared audio tags. See",
3095
3275
  " ",
3096
- /* @__PURE__ */ jsx49("a", {
3276
+ /* @__PURE__ */ jsx50("a", {
3097
3277
  href: "https://www.remotion.dev/docs/player/autoplay#using-the-numberofsharedaudiotags-prop",
3098
3278
  children: "Using the numberOfSharedAudioTags prop"
3099
3279
  }),
@@ -3105,9 +3285,9 @@ var numberOfSharedAudioTagsOption = {
3105
3285
  docLink: "https://www.remotion.dev/docs/config#setnumberofsharedaudiotags",
3106
3286
  type: 0,
3107
3287
  getValue: ({ commandLine }) => {
3108
- if (commandLine[cliFlag53] !== undefined) {
3288
+ if (commandLine[cliFlag54] !== undefined) {
3109
3289
  return {
3110
- value: commandLine[cliFlag53],
3290
+ value: commandLine[cliFlag54],
3111
3291
  source: "cli"
3112
3292
  };
3113
3293
  }
@@ -3119,39 +3299,39 @@ var numberOfSharedAudioTagsOption = {
3119
3299
  setConfig(value2) {
3120
3300
  numberOfSharedAudioTags = value2;
3121
3301
  },
3122
- id: cliFlag53
3302
+ id: cliFlag54
3123
3303
  };
3124
3304
 
3125
3305
  // src/options/offthreadvideo-cache-size.tsx
3126
- import { jsx as jsx50, jsxs as jsxs34, Fragment as Fragment50 } from "react/jsx-runtime";
3306
+ import { jsx as jsx51, jsxs as jsxs35, Fragment as Fragment51 } from "react/jsx-runtime";
3127
3307
  var offthreadVideoCacheSizeInBytes = null;
3128
- var cliFlag54 = "offthreadvideo-cache-size-in-bytes";
3308
+ var cliFlag55 = "offthreadvideo-cache-size-in-bytes";
3129
3309
  var offthreadVideoCacheSizeInBytesOption = {
3130
3310
  name: "OffthreadVideo cache size",
3131
- cliFlag: cliFlag54,
3132
- description: () => /* @__PURE__ */ jsxs34(Fragment50, {
3311
+ cliFlag: cliFlag55,
3312
+ description: () => /* @__PURE__ */ jsxs35(Fragment51, {
3133
3313
  children: [
3134
3314
  "From v4.0, Remotion has a cache for",
3135
3315
  " ",
3136
- /* @__PURE__ */ jsx50("a", {
3316
+ /* @__PURE__ */ jsx51("a", {
3137
3317
  href: "https://remotion.dev/docs/offthreadvideo",
3138
- children: /* @__PURE__ */ jsx50("code", {
3318
+ children: /* @__PURE__ */ jsx51("code", {
3139
3319
  children: "<OffthreadVideo>"
3140
3320
  })
3141
3321
  }),
3142
3322
  " ",
3143
3323
  "frames. The default is ",
3144
- /* @__PURE__ */ jsx50("code", {
3324
+ /* @__PURE__ */ jsx51("code", {
3145
3325
  children: "null"
3146
3326
  }),
3147
3327
  ", corresponding to half of the system memory available when the render starts.",
3148
- /* @__PURE__ */ jsx50("br", {}),
3328
+ /* @__PURE__ */ jsx51("br", {}),
3149
3329
  " 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.",
3150
- /* @__PURE__ */ jsx50("br", {}),
3330
+ /* @__PURE__ */ jsx51("br", {}),
3151
3331
  "The used value will be printed when running in verbose mode.",
3152
- /* @__PURE__ */ jsx50("br", {}),
3332
+ /* @__PURE__ */ jsx51("br", {}),
3153
3333
  "Default: ",
3154
- /* @__PURE__ */ jsx50("code", {
3334
+ /* @__PURE__ */ jsx51("code", {
3155
3335
  children: "null"
3156
3336
  })
3157
3337
  ]
@@ -3160,10 +3340,10 @@ var offthreadVideoCacheSizeInBytesOption = {
3160
3340
  docLink: "https://www.remotion.dev/docs/offthreadvideo",
3161
3341
  type: 0,
3162
3342
  getValue: ({ commandLine }) => {
3163
- if (commandLine[cliFlag54] !== undefined) {
3343
+ if (commandLine[cliFlag55] !== undefined) {
3164
3344
  return {
3165
3345
  source: "cli",
3166
- value: commandLine[cliFlag54]
3346
+ value: commandLine[cliFlag55]
3167
3347
  };
3168
3348
  }
3169
3349
  if (offthreadVideoCacheSizeInBytes !== null) {
@@ -3180,22 +3360,22 @@ var offthreadVideoCacheSizeInBytesOption = {
3180
3360
  setConfig: (size) => {
3181
3361
  offthreadVideoCacheSizeInBytes = size ?? null;
3182
3362
  },
3183
- id: cliFlag54
3363
+ id: cliFlag55
3184
3364
  };
3185
3365
 
3186
3366
  // src/options/offthreadvideo-threads.tsx
3187
- import { jsx as jsx51, jsxs as jsxs35, Fragment as Fragment51 } from "react/jsx-runtime";
3367
+ import { jsx as jsx52, jsxs as jsxs36, Fragment as Fragment52 } from "react/jsx-runtime";
3188
3368
  var value2 = null;
3189
- var cliFlag55 = "offthreadvideo-video-threads";
3369
+ var cliFlag56 = "offthreadvideo-video-threads";
3190
3370
  var offthreadVideoThreadsOption = {
3191
3371
  name: "OffthreadVideo threads",
3192
- cliFlag: cliFlag55,
3193
- description: () => /* @__PURE__ */ jsxs35(Fragment51, {
3372
+ cliFlag: cliFlag56,
3373
+ description: () => /* @__PURE__ */ jsxs36(Fragment52, {
3194
3374
  children: [
3195
3375
  "The number of threads that",
3196
- /* @__PURE__ */ jsx51("a", {
3376
+ /* @__PURE__ */ jsx52("a", {
3197
3377
  href: "https://remotion.dev/docs/offthreadvideo",
3198
- children: /* @__PURE__ */ jsx51("code", {
3378
+ children: /* @__PURE__ */ jsx52("code", {
3199
3379
  children: "<OffthreadVideo>"
3200
3380
  })
3201
3381
  }),
@@ -3210,10 +3390,10 @@ var offthreadVideoThreadsOption = {
3210
3390
  docLink: "https://www.remotion.dev/docs/offthreadvideo",
3211
3391
  type: 0,
3212
3392
  getValue: ({ commandLine }) => {
3213
- if (commandLine[cliFlag55] !== undefined) {
3393
+ if (commandLine[cliFlag56] !== undefined) {
3214
3394
  return {
3215
3395
  source: "cli",
3216
- value: commandLine[cliFlag55]
3396
+ value: commandLine[cliFlag56]
3217
3397
  };
3218
3398
  }
3219
3399
  if (value2 !== null) {
@@ -3230,21 +3410,21 @@ var offthreadVideoThreadsOption = {
3230
3410
  setConfig: (size) => {
3231
3411
  value2 = size ?? null;
3232
3412
  },
3233
- id: cliFlag55
3413
+ id: cliFlag56
3234
3414
  };
3235
3415
  var DEFAULT_RENDER_FRAMES_OFFTHREAD_VIDEO_THREADS = 2;
3236
3416
 
3237
3417
  // src/options/on-browser-download.tsx
3238
- import { jsx as jsx52, jsxs as jsxs36, Fragment as Fragment52 } from "react/jsx-runtime";
3239
- var cliFlag56 = "on-browser-download";
3418
+ import { jsx as jsx53, jsxs as jsxs37, Fragment as Fragment53 } from "react/jsx-runtime";
3419
+ var cliFlag57 = "on-browser-download";
3240
3420
  var onBrowserDownloadOption = {
3241
3421
  name: "Browser download callback function",
3242
- cliFlag: cliFlag56,
3243
- description: () => /* @__PURE__ */ jsxs36(Fragment52, {
3422
+ cliFlag: cliFlag57,
3423
+ description: () => /* @__PURE__ */ jsxs37(Fragment53, {
3244
3424
  children: [
3245
3425
  "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.",
3246
3426
  " ",
3247
- /* @__PURE__ */ jsx52("a", {
3427
+ /* @__PURE__ */ jsx53("a", {
3248
3428
  href: "/docs/renderer/ensure-browser#onbrowserdownload",
3249
3429
  children: "See here for how to use this option."
3250
3430
  })
@@ -3259,26 +3439,26 @@ var onBrowserDownloadOption = {
3259
3439
  setConfig: () => {
3260
3440
  throw new Error("does not support config file");
3261
3441
  },
3262
- id: cliFlag56
3442
+ id: cliFlag57
3263
3443
  };
3264
3444
 
3265
3445
  // src/options/out-dir.tsx
3266
- import { jsx as jsx53, jsxs as jsxs37, Fragment as Fragment53 } from "react/jsx-runtime";
3267
- var cliFlag57 = "out-dir";
3446
+ import { jsx as jsx54, jsxs as jsxs38, Fragment as Fragment54 } from "react/jsx-runtime";
3447
+ var cliFlag58 = "out-dir";
3268
3448
  var currentOutDir = null;
3269
3449
  var outDirOption = {
3270
3450
  name: "Output Directory",
3271
- cliFlag: cliFlag57,
3451
+ cliFlag: cliFlag58,
3272
3452
  description: () => {
3273
- return /* @__PURE__ */ jsxs37(Fragment53, {
3453
+ return /* @__PURE__ */ jsxs38(Fragment54, {
3274
3454
  children: [
3275
3455
  "Define the location of the resulting bundle. By default it is a folder called ",
3276
- /* @__PURE__ */ jsx53("code", {
3456
+ /* @__PURE__ */ jsx54("code", {
3277
3457
  children: "build"
3278
3458
  }),
3279
3459
  ", adjacent to the",
3280
3460
  " ",
3281
- /* @__PURE__ */ jsx53("a", {
3461
+ /* @__PURE__ */ jsx54("a", {
3282
3462
  href: "/docs/terminology/remotion-root",
3283
3463
  children: "Remotion Root"
3284
3464
  }),
@@ -3289,10 +3469,10 @@ var outDirOption = {
3289
3469
  ssrName: "outDir",
3290
3470
  docLink: "https://www.remotion.dev/docs/cli/bundle#--out-dir",
3291
3471
  getValue: ({ commandLine }) => {
3292
- if (commandLine[cliFlag57] !== undefined) {
3472
+ if (commandLine[cliFlag58] !== undefined) {
3293
3473
  return {
3294
3474
  source: "cli",
3295
- value: commandLine[cliFlag57]
3475
+ value: commandLine[cliFlag58]
3296
3476
  };
3297
3477
  }
3298
3478
  if (currentOutDir !== null) {
@@ -3310,7 +3490,7 @@ var outDirOption = {
3310
3490
  currentOutDir = value3;
3311
3491
  },
3312
3492
  type: "",
3313
- id: cliFlag57
3493
+ id: cliFlag58
3314
3494
  };
3315
3495
 
3316
3496
  // src/validate.ts
@@ -3320,21 +3500,21 @@ var validateDimension = NoReactInternals3.validateDimension;
3320
3500
  var validateDurationInFrames = NoReactInternals3.validateDurationInFrames;
3321
3501
 
3322
3502
  // src/options/override-duration.tsx
3323
- import { jsx as jsx54, Fragment as Fragment54 } from "react/jsx-runtime";
3503
+ import { jsx as jsx55, Fragment as Fragment55 } from "react/jsx-runtime";
3324
3504
  var currentDuration = null;
3325
- var cliFlag58 = "duration";
3505
+ var cliFlag59 = "duration";
3326
3506
  var overrideDurationOption = {
3327
3507
  name: "Override Duration",
3328
- cliFlag: cliFlag58,
3329
- description: () => /* @__PURE__ */ jsx54(Fragment54, {
3508
+ cliFlag: cliFlag59,
3509
+ description: () => /* @__PURE__ */ jsx55(Fragment55, {
3330
3510
  children: "Overrides the duration in frames of the composition."
3331
3511
  }),
3332
3512
  ssrName: null,
3333
3513
  docLink: "https://www.remotion.dev/docs/config#overrideduration",
3334
3514
  type: null,
3335
3515
  getValue: ({ commandLine }) => {
3336
- if (commandLine[cliFlag58] !== undefined) {
3337
- const value3 = commandLine[cliFlag58];
3516
+ if (commandLine[cliFlag59] !== undefined) {
3517
+ const value3 = commandLine[cliFlag59];
3338
3518
  validateDurationInFrames(value3, {
3339
3519
  component: "in --duration flag",
3340
3520
  allowFloats: false
@@ -3365,25 +3545,25 @@ var overrideDurationOption = {
3365
3545
  reset: () => {
3366
3546
  currentDuration = null;
3367
3547
  },
3368
- id: cliFlag58
3548
+ id: cliFlag59
3369
3549
  };
3370
3550
 
3371
3551
  // src/options/override-fps.tsx
3372
- import { jsx as jsx55, Fragment as Fragment55 } from "react/jsx-runtime";
3552
+ import { jsx as jsx56, Fragment as Fragment56 } from "react/jsx-runtime";
3373
3553
  var currentFps = null;
3374
- var cliFlag59 = "fps";
3554
+ var cliFlag60 = "fps";
3375
3555
  var overrideFpsOption = {
3376
3556
  name: "Override FPS",
3377
- cliFlag: cliFlag59,
3378
- description: () => /* @__PURE__ */ jsx55(Fragment55, {
3557
+ cliFlag: cliFlag60,
3558
+ description: () => /* @__PURE__ */ jsx56(Fragment56, {
3379
3559
  children: "Overrides the frames per second of the composition."
3380
3560
  }),
3381
3561
  ssrName: null,
3382
3562
  docLink: "https://www.remotion.dev/docs/config#overridefps",
3383
3563
  type: null,
3384
3564
  getValue: ({ commandLine }) => {
3385
- if (commandLine[cliFlag59] !== undefined) {
3386
- const value3 = commandLine[cliFlag59];
3565
+ if (commandLine[cliFlag60] !== undefined) {
3566
+ const value3 = commandLine[cliFlag60];
3387
3567
  validateFps(value3, "in --fps flag", false);
3388
3568
  return {
3389
3569
  source: "cli",
@@ -3408,25 +3588,25 @@ var overrideFpsOption = {
3408
3588
  reset: () => {
3409
3589
  currentFps = null;
3410
3590
  },
3411
- id: cliFlag59
3591
+ id: cliFlag60
3412
3592
  };
3413
3593
 
3414
3594
  // src/options/override-height.tsx
3415
- import { jsx as jsx56, Fragment as Fragment56 } from "react/jsx-runtime";
3595
+ import { jsx as jsx57, Fragment as Fragment57 } from "react/jsx-runtime";
3416
3596
  var currentHeight = null;
3417
- var cliFlag60 = "height";
3597
+ var cliFlag61 = "height";
3418
3598
  var overrideHeightOption = {
3419
3599
  name: "Override Height",
3420
- cliFlag: cliFlag60,
3421
- description: () => /* @__PURE__ */ jsx56(Fragment56, {
3600
+ cliFlag: cliFlag61,
3601
+ description: () => /* @__PURE__ */ jsx57(Fragment57, {
3422
3602
  children: "Overrides the height of the composition."
3423
3603
  }),
3424
3604
  ssrName: null,
3425
3605
  docLink: "https://www.remotion.dev/docs/config#overrideheight",
3426
3606
  type: null,
3427
3607
  getValue: ({ commandLine }) => {
3428
- if (commandLine[cliFlag60] !== undefined) {
3429
- const value3 = commandLine[cliFlag60];
3608
+ if (commandLine[cliFlag61] !== undefined) {
3609
+ const value3 = commandLine[cliFlag61];
3430
3610
  validateDimension(value3, "height", "in --height flag");
3431
3611
  return {
3432
3612
  source: "cli",
@@ -3451,25 +3631,25 @@ var overrideHeightOption = {
3451
3631
  reset: () => {
3452
3632
  currentHeight = null;
3453
3633
  },
3454
- id: cliFlag60
3634
+ id: cliFlag61
3455
3635
  };
3456
3636
 
3457
3637
  // src/options/override-width.tsx
3458
- import { jsx as jsx57, Fragment as Fragment57 } from "react/jsx-runtime";
3638
+ import { jsx as jsx58, Fragment as Fragment58 } from "react/jsx-runtime";
3459
3639
  var currentWidth = null;
3460
- var cliFlag61 = "width";
3640
+ var cliFlag62 = "width";
3461
3641
  var overrideWidthOption = {
3462
3642
  name: "Override Width",
3463
- cliFlag: cliFlag61,
3464
- description: () => /* @__PURE__ */ jsx57(Fragment57, {
3643
+ cliFlag: cliFlag62,
3644
+ description: () => /* @__PURE__ */ jsx58(Fragment58, {
3465
3645
  children: "Overrides the width of the composition."
3466
3646
  }),
3467
3647
  ssrName: null,
3468
3648
  docLink: "https://www.remotion.dev/docs/config#overridewidth",
3469
3649
  type: null,
3470
3650
  getValue: ({ commandLine }) => {
3471
- if (commandLine[cliFlag61] !== undefined) {
3472
- const value3 = commandLine[cliFlag61];
3651
+ if (commandLine[cliFlag62] !== undefined) {
3652
+ const value3 = commandLine[cliFlag62];
3473
3653
  validateDimension(value3, "width", "in --width flag");
3474
3654
  return {
3475
3655
  source: "cli",
@@ -3494,13 +3674,13 @@ var overrideWidthOption = {
3494
3674
  reset: () => {
3495
3675
  currentWidth = null;
3496
3676
  },
3497
- id: cliFlag61
3677
+ id: cliFlag62
3498
3678
  };
3499
3679
 
3500
3680
  // src/options/overwrite.tsx
3501
- import { jsx as jsx58, jsxs as jsxs38, Fragment as Fragment58 } from "react/jsx-runtime";
3681
+ import { jsx as jsx59, jsxs as jsxs39, Fragment as Fragment59 } from "react/jsx-runtime";
3502
3682
  var shouldOverwrite = null;
3503
- var cliFlag62 = "overwrite";
3683
+ var cliFlag63 = "overwrite";
3504
3684
  var validate2 = (value3) => {
3505
3685
  if (typeof value3 !== "boolean") {
3506
3686
  throw new Error(`overwriteExisting must be a boolean but got ${typeof value3} (${value3})`);
@@ -3508,15 +3688,15 @@ var validate2 = (value3) => {
3508
3688
  };
3509
3689
  var overwriteOption = {
3510
3690
  name: "Overwrite output",
3511
- cliFlag: cliFlag62,
3512
- description: () => /* @__PURE__ */ jsxs38(Fragment58, {
3691
+ cliFlag: cliFlag63,
3692
+ description: () => /* @__PURE__ */ jsxs39(Fragment59, {
3513
3693
  children: [
3514
3694
  "If set to ",
3515
- /* @__PURE__ */ jsx58("code", {
3695
+ /* @__PURE__ */ jsx59("code", {
3516
3696
  children: "false"
3517
3697
  }),
3518
3698
  ", will prevent rendering to a path that already exists. Default is ",
3519
- /* @__PURE__ */ jsx58("code", {
3699
+ /* @__PURE__ */ jsx59("code", {
3520
3700
  children: "true"
3521
3701
  }),
3522
3702
  "."
@@ -3526,11 +3706,11 @@ var overwriteOption = {
3526
3706
  docLink: "https://www.remotion.dev/docs/config#setoverwriteoutput",
3527
3707
  type: false,
3528
3708
  getValue: ({ commandLine }, defaultValue2) => {
3529
- if (commandLine[cliFlag62] !== undefined && commandLine[cliFlag62] !== null) {
3530
- validate2(commandLine[cliFlag62]);
3709
+ if (commandLine[cliFlag63] !== undefined && commandLine[cliFlag63] !== null) {
3710
+ validate2(commandLine[cliFlag63]);
3531
3711
  return {
3532
3712
  source: "cli",
3533
- value: commandLine[cliFlag62]
3713
+ value: commandLine[cliFlag63]
3534
3714
  };
3535
3715
  }
3536
3716
  if (shouldOverwrite !== null) {
@@ -3551,36 +3731,36 @@ var overwriteOption = {
3551
3731
  reset: () => {
3552
3732
  shouldOverwrite = null;
3553
3733
  },
3554
- id: cliFlag62
3734
+ id: cliFlag63
3555
3735
  };
3556
3736
 
3557
3737
  // src/options/package-manager.tsx
3558
- import { jsx as jsx59, jsxs as jsxs39, Fragment as Fragment59 } from "react/jsx-runtime";
3559
- var cliFlag63 = "package-manager";
3738
+ import { jsx as jsx60, jsxs as jsxs40, Fragment as Fragment60 } from "react/jsx-runtime";
3739
+ var cliFlag64 = "package-manager";
3560
3740
  var currentPackageManager = null;
3561
3741
  var packageManagerOption = {
3562
3742
  name: "Package Manager",
3563
- cliFlag: cliFlag63,
3743
+ cliFlag: cliFlag64,
3564
3744
  description: () => {
3565
- return /* @__PURE__ */ jsxs39(Fragment59, {
3745
+ return /* @__PURE__ */ jsxs40(Fragment60, {
3566
3746
  children: [
3567
3747
  "Forces a specific package manager to be used. By default, Remotion will auto-detect the package manager based on your lockfile.",
3568
- /* @__PURE__ */ jsx59("br", {}),
3748
+ /* @__PURE__ */ jsx60("br", {}),
3569
3749
  "Acceptable values are ",
3570
- /* @__PURE__ */ jsx59("code", {
3750
+ /* @__PURE__ */ jsx60("code", {
3571
3751
  children: "npm"
3572
3752
  }),
3573
3753
  ", ",
3574
- /* @__PURE__ */ jsx59("code", {
3754
+ /* @__PURE__ */ jsx60("code", {
3575
3755
  children: "yarn"
3576
3756
  }),
3577
3757
  ",",
3578
3758
  " ",
3579
- /* @__PURE__ */ jsx59("code", {
3759
+ /* @__PURE__ */ jsx60("code", {
3580
3760
  children: "pnpm"
3581
3761
  }),
3582
3762
  " and ",
3583
- /* @__PURE__ */ jsx59("code", {
3763
+ /* @__PURE__ */ jsx60("code", {
3584
3764
  children: "bun"
3585
3765
  }),
3586
3766
  "."
@@ -3590,10 +3770,10 @@ var packageManagerOption = {
3590
3770
  ssrName: "packageManager",
3591
3771
  docLink: "https://www.remotion.dev/docs/cli/upgrade#--package-manager",
3592
3772
  getValue: ({ commandLine }) => {
3593
- if (commandLine[cliFlag63] !== undefined) {
3773
+ if (commandLine[cliFlag64] !== undefined) {
3594
3774
  return {
3595
3775
  source: "cli",
3596
- value: commandLine[cliFlag63]
3776
+ value: commandLine[cliFlag64]
3597
3777
  };
3598
3778
  }
3599
3779
  if (currentPackageManager !== null) {
@@ -3611,7 +3791,7 @@ var packageManagerOption = {
3611
3791
  currentPackageManager = value3;
3612
3792
  },
3613
3793
  type: "",
3614
- id: cliFlag63
3794
+ id: cliFlag64
3615
3795
  };
3616
3796
 
3617
3797
  // src/pixel-format.ts
@@ -3634,17 +3814,17 @@ var validPixelFormatsForCodec = (codec) => {
3634
3814
  };
3635
3815
 
3636
3816
  // src/options/pixel-format.tsx
3637
- import { jsx as jsx60, jsxs as jsxs40, Fragment as Fragment60 } from "react/jsx-runtime";
3817
+ import { jsx as jsx61, jsxs as jsxs41, Fragment as Fragment61 } from "react/jsx-runtime";
3638
3818
  var currentPixelFormat = DEFAULT_PIXEL_FORMAT;
3639
- var cliFlag64 = "pixel-format";
3819
+ var cliFlag65 = "pixel-format";
3640
3820
  var pixelFormatOption = {
3641
3821
  name: "Pixel format",
3642
- cliFlag: cliFlag64,
3643
- description: () => /* @__PURE__ */ jsxs40(Fragment60, {
3822
+ cliFlag: cliFlag65,
3823
+ description: () => /* @__PURE__ */ jsxs41(Fragment61, {
3644
3824
  children: [
3645
3825
  "Sets the pixel format in FFmpeg. See",
3646
3826
  " ",
3647
- /* @__PURE__ */ jsx60("a", {
3827
+ /* @__PURE__ */ jsx61("a", {
3648
3828
  href: "https://trac.ffmpeg.org/wiki/Chroma%20Subsampling",
3649
3829
  children: "the FFmpeg docs for an explanation"
3650
3830
  }),
@@ -3663,10 +3843,10 @@ var pixelFormatOption = {
3663
3843
  value: options.uiPixelFormat
3664
3844
  };
3665
3845
  }
3666
- if (commandLine[cliFlag64] !== undefined) {
3846
+ if (commandLine[cliFlag65] !== undefined) {
3667
3847
  return {
3668
3848
  source: "from --pixel-format flag",
3669
- value: commandLine[cliFlag64]
3849
+ value: commandLine[cliFlag65]
3670
3850
  };
3671
3851
  }
3672
3852
  if (options && options.compositionDefaultPixelFormat !== null) {
@@ -3692,26 +3872,26 @@ var pixelFormatOption = {
3692
3872
  }
3693
3873
  currentPixelFormat = value3;
3694
3874
  },
3695
- id: cliFlag64
3875
+ id: cliFlag65
3696
3876
  };
3697
3877
 
3698
3878
  // src/options/port.tsx
3699
- import { jsx as jsx61, Fragment as Fragment61 } from "react/jsx-runtime";
3700
- var cliFlag65 = "port";
3879
+ import { jsx as jsx62, Fragment as Fragment62 } from "react/jsx-runtime";
3880
+ var cliFlag66 = "port";
3701
3881
  var currentPort = null;
3702
3882
  var portOption = {
3703
3883
  name: "Port",
3704
- cliFlag: cliFlag65,
3705
- description: () => /* @__PURE__ */ jsx61(Fragment61, {
3884
+ cliFlag: cliFlag66,
3885
+ description: () => /* @__PURE__ */ jsx62(Fragment62, {
3706
3886
  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."
3707
3887
  }),
3708
3888
  ssrName: null,
3709
3889
  docLink: "https://www.remotion.dev/docs/config#setstudioport",
3710
3890
  getValue: ({ commandLine }) => {
3711
- if (commandLine[cliFlag65] !== undefined) {
3891
+ if (commandLine[cliFlag66] !== undefined) {
3712
3892
  return {
3713
3893
  source: "cli",
3714
- value: commandLine[cliFlag65]
3894
+ value: commandLine[cliFlag66]
3715
3895
  };
3716
3896
  }
3717
3897
  if (currentPort !== null) {
@@ -3729,25 +3909,25 @@ var portOption = {
3729
3909
  currentPort = value3;
3730
3910
  },
3731
3911
  type: 0,
3732
- id: cliFlag65
3912
+ id: cliFlag66
3733
3913
  };
3734
3914
 
3735
3915
  // src/options/prefer-lossless.tsx
3736
- import { jsx as jsx62, jsxs as jsxs41, Fragment as Fragment62 } from "react/jsx-runtime";
3737
- var cliFlag66 = "prefer-lossless";
3916
+ import { jsx as jsx63, jsxs as jsxs42, Fragment as Fragment63 } from "react/jsx-runtime";
3917
+ var cliFlag67 = "prefer-lossless";
3738
3918
  var input = false;
3739
3919
  var preferLosslessAudioOption = {
3740
3920
  name: "Prefer lossless",
3741
- cliFlag: cliFlag66,
3742
- description: () => /* @__PURE__ */ jsxs41(Fragment62, {
3921
+ cliFlag: cliFlag67,
3922
+ description: () => /* @__PURE__ */ jsxs42(Fragment63, {
3743
3923
  children: [
3744
3924
  "Uses a lossless audio codec, if one is available for the codec. If you set",
3745
- /* @__PURE__ */ jsx62("code", {
3925
+ /* @__PURE__ */ jsx63("code", {
3746
3926
  children: "audioCodec"
3747
3927
  }),
3748
3928
  ", it takes priority over",
3749
3929
  " ",
3750
- /* @__PURE__ */ jsx62("code", {
3930
+ /* @__PURE__ */ jsx63("code", {
3751
3931
  children: "preferLossless"
3752
3932
  }),
3753
3933
  "."
@@ -3757,7 +3937,7 @@ var preferLosslessAudioOption = {
3757
3937
  type: false,
3758
3938
  ssrName: "preferLossless",
3759
3939
  getValue: ({ commandLine }) => {
3760
- if (commandLine[cliFlag66]) {
3940
+ if (commandLine[cliFlag67]) {
3761
3941
  return { value: true, source: "cli" };
3762
3942
  }
3763
3943
  if (input === true) {
@@ -3768,20 +3948,20 @@ var preferLosslessAudioOption = {
3768
3948
  setConfig: (val) => {
3769
3949
  input = val;
3770
3950
  },
3771
- id: cliFlag66
3951
+ id: cliFlag67
3772
3952
  };
3773
3953
 
3774
3954
  // src/options/preview-sample-rate.tsx
3775
- import { jsx as jsx63, jsxs as jsxs42, Fragment as Fragment63 } from "react/jsx-runtime";
3776
- var cliFlag67 = "preview-sample-rate";
3955
+ import { jsx as jsx64, jsxs as jsxs43, Fragment as Fragment64 } from "react/jsx-runtime";
3956
+ var cliFlag68 = "preview-sample-rate";
3777
3957
  var currentPreviewSampleRate = null;
3778
3958
  var previewSampleRateOption = {
3779
3959
  name: "Preview Sample Rate",
3780
- cliFlag: cliFlag67,
3781
- description: () => /* @__PURE__ */ jsxs42(Fragment63, {
3960
+ cliFlag: cliFlag68,
3961
+ description: () => /* @__PURE__ */ jsxs43(Fragment64, {
3782
3962
  children: [
3783
3963
  "Controls the sample rate used for audio playback during preview. When unset, Remotion uses ",
3784
- /* @__PURE__ */ jsx63("code", {
3964
+ /* @__PURE__ */ jsx64("code", {
3785
3965
  children: "48000"
3786
3966
  }),
3787
3967
  " Hz."
@@ -3791,8 +3971,8 @@ var previewSampleRateOption = {
3791
3971
  docLink: "https://www.remotion.dev/docs/config#setpreviewsamplerate",
3792
3972
  type: null,
3793
3973
  getValue: ({ commandLine }) => {
3794
- if (commandLine[cliFlag67] !== undefined) {
3795
- return { value: commandLine[cliFlag67], source: "cli" };
3974
+ if (commandLine[cliFlag68] !== undefined) {
3975
+ return { value: commandLine[cliFlag68], source: "cli" };
3796
3976
  }
3797
3977
  if (currentPreviewSampleRate !== null) {
3798
3978
  return { value: currentPreviewSampleRate, source: "config file" };
@@ -3802,19 +3982,19 @@ var previewSampleRateOption = {
3802
3982
  setConfig: (value3) => {
3803
3983
  currentPreviewSampleRate = value3;
3804
3984
  },
3805
- id: cliFlag67
3985
+ id: cliFlag68
3806
3986
  };
3807
3987
 
3808
3988
  // src/options/props.tsx
3809
- import { jsx as jsx64, jsxs as jsxs43, Fragment as Fragment64 } from "react/jsx-runtime";
3810
- var cliFlag68 = "props";
3989
+ import { jsx as jsx65, jsxs as jsxs44, Fragment as Fragment65 } from "react/jsx-runtime";
3990
+ var cliFlag69 = "props";
3811
3991
  var propsOption = {
3812
3992
  name: "Input Props",
3813
- cliFlag: cliFlag68,
3814
- description: () => /* @__PURE__ */ jsxs43(Fragment64, {
3993
+ cliFlag: cliFlag69,
3994
+ description: () => /* @__PURE__ */ jsxs44(Fragment65, {
3815
3995
  children: [
3816
3996
  "Input Props to pass to the selected composition of your video. Must be a serialized JSON string (",
3817
- /* @__PURE__ */ jsxs43("code", {
3997
+ /* @__PURE__ */ jsxs44("code", {
3818
3998
  children: [
3819
3999
  "--props='",
3820
4000
  "{",
@@ -3824,7 +4004,7 @@ var propsOption = {
3824
4004
  ]
3825
4005
  }),
3826
4006
  ") or a path to a JSON file (",
3827
- /* @__PURE__ */ jsx64("code", {
4007
+ /* @__PURE__ */ jsx65("code", {
3828
4008
  children: "./path/to/props.json"
3829
4009
  }),
3830
4010
  ")."
@@ -3833,10 +4013,10 @@ var propsOption = {
3833
4013
  ssrName: null,
3834
4014
  docLink: "https://www.remotion.dev/docs/passing-props#passing-input-props-in-the-cli",
3835
4015
  getValue: ({ commandLine }) => {
3836
- if (commandLine[cliFlag68] !== undefined) {
4016
+ if (commandLine[cliFlag69] !== undefined) {
3837
4017
  return {
3838
4018
  source: "cli",
3839
- value: commandLine[cliFlag68]
4019
+ value: commandLine[cliFlag69]
3840
4020
  };
3841
4021
  }
3842
4022
  return {
@@ -3848,11 +4028,11 @@ var propsOption = {
3848
4028
  throw new Error("setProps is not supported. Pass --props via the CLI instead.");
3849
4029
  },
3850
4030
  type: "",
3851
- id: cliFlag68
4031
+ id: cliFlag69
3852
4032
  };
3853
4033
 
3854
4034
  // src/options/prores-profile.tsx
3855
- import { jsx as jsx65, jsxs as jsxs44, Fragment as Fragment65 } from "react/jsx-runtime";
4035
+ import { jsx as jsx66, jsxs as jsxs45, Fragment as Fragment66 } from "react/jsx-runtime";
3856
4036
  var validProResProfiles = [
3857
4037
  "4444-xq",
3858
4038
  "4444",
@@ -3862,14 +4042,14 @@ var validProResProfiles = [
3862
4042
  "proxy"
3863
4043
  ];
3864
4044
  var proResProfile;
3865
- var cliFlag69 = "prores-profile";
4045
+ var cliFlag70 = "prores-profile";
3866
4046
  var proResProfileOption = {
3867
4047
  name: "ProRes profile",
3868
- cliFlag: cliFlag69,
3869
- description: () => /* @__PURE__ */ jsxs44(Fragment65, {
4048
+ cliFlag: cliFlag70,
4049
+ description: () => /* @__PURE__ */ jsxs45(Fragment66, {
3870
4050
  children: [
3871
4051
  "Set the ProRes profile. This option is only valid if the codec has been set to ",
3872
- /* @__PURE__ */ jsx65("code", {
4052
+ /* @__PURE__ */ jsx66("code", {
3873
4053
  children: "prores"
3874
4054
  }),
3875
4055
  ". Possible values:",
@@ -3877,12 +4057,12 @@ var proResProfileOption = {
3877
4057
  validProResProfiles.map((p) => `"${p}"`).join(", "),
3878
4058
  ". Default:",
3879
4059
  " ",
3880
- /* @__PURE__ */ jsx65("code", {
4060
+ /* @__PURE__ */ jsx66("code", {
3881
4061
  children: '"hq"'
3882
4062
  }),
3883
4063
  ". See",
3884
4064
  " ",
3885
- /* @__PURE__ */ jsx65("a", {
4065
+ /* @__PURE__ */ jsx66("a", {
3886
4066
  href: "https://video.stackexchange.com/a/14715",
3887
4067
  children: "here"
3888
4068
  }),
@@ -3899,10 +4079,10 @@ var proResProfileOption = {
3899
4079
  value: options.uiProResProfile
3900
4080
  };
3901
4081
  }
3902
- if (commandLine[cliFlag69] !== undefined) {
4082
+ if (commandLine[cliFlag70] !== undefined) {
3903
4083
  return {
3904
4084
  source: "from --prores-profile flag",
3905
- value: String(commandLine[cliFlag69])
4085
+ value: String(commandLine[cliFlag70])
3906
4086
  };
3907
4087
  }
3908
4088
  if (options && options.compositionDefaultProResProfile !== null) {
@@ -3925,24 +4105,24 @@ var proResProfileOption = {
3925
4105
  setConfig: (value3) => {
3926
4106
  proResProfile = value3;
3927
4107
  },
3928
- id: cliFlag69
4108
+ id: cliFlag70
3929
4109
  };
3930
4110
 
3931
4111
  // src/options/public-dir.tsx
3932
- import { jsx as jsx66, jsxs as jsxs45, Fragment as Fragment66 } from "react/jsx-runtime";
3933
- var cliFlag70 = "public-dir";
4112
+ import { jsx as jsx67, jsxs as jsxs46, Fragment as Fragment67 } from "react/jsx-runtime";
4113
+ var cliFlag71 = "public-dir";
3934
4114
  var currentPublicDir = null;
3935
4115
  var publicDirOption = {
3936
4116
  name: "Public Directory",
3937
- cliFlag: cliFlag70,
4117
+ cliFlag: cliFlag71,
3938
4118
  description: () => {
3939
- return /* @__PURE__ */ jsxs45(Fragment66, {
4119
+ return /* @__PURE__ */ jsxs46(Fragment67, {
3940
4120
  children: [
3941
4121
  "Define the location of the",
3942
4122
  " ",
3943
- /* @__PURE__ */ jsx66("a", {
4123
+ /* @__PURE__ */ jsx67("a", {
3944
4124
  href: "/docs/terminology/public-dir",
3945
- children: /* @__PURE__ */ jsx66("code", {
4125
+ children: /* @__PURE__ */ jsx67("code", {
3946
4126
  children: "public/ directory"
3947
4127
  })
3948
4128
  }),
@@ -3953,10 +4133,10 @@ var publicDirOption = {
3953
4133
  ssrName: "publicDir",
3954
4134
  docLink: "https://www.remotion.dev/docs/terminology/public-dir",
3955
4135
  getValue: ({ commandLine }) => {
3956
- if (commandLine[cliFlag70] !== undefined) {
4136
+ if (commandLine[cliFlag71] !== undefined) {
3957
4137
  return {
3958
4138
  source: "cli",
3959
- value: commandLine[cliFlag70]
4139
+ value: commandLine[cliFlag71]
3960
4140
  };
3961
4141
  }
3962
4142
  if (currentPublicDir !== null) {
@@ -3974,20 +4154,20 @@ var publicDirOption = {
3974
4154
  currentPublicDir = value3;
3975
4155
  },
3976
4156
  type: "",
3977
- id: cliFlag70
4157
+ id: cliFlag71
3978
4158
  };
3979
4159
 
3980
4160
  // src/options/public-license-key.tsx
3981
- import { jsx as jsx67, jsxs as jsxs46, Fragment as Fragment67 } from "react/jsx-runtime";
3982
- var cliFlag71 = "public-license-key";
4161
+ import { jsx as jsx68, jsxs as jsxs47, Fragment as Fragment68 } from "react/jsx-runtime";
4162
+ var cliFlag72 = "public-license-key";
3983
4163
  var currentPublicLicenseKey = null;
3984
4164
  var publicLicenseKeyOption = {
3985
4165
  name: "Public License Key",
3986
- cliFlag: cliFlag71,
3987
- description: () => /* @__PURE__ */ jsxs46(Fragment67, {
4166
+ cliFlag: cliFlag72,
4167
+ description: () => /* @__PURE__ */ jsxs47(Fragment68, {
3988
4168
  children: [
3989
4169
  "The public license key for your company license, obtained from the License keys page on ",
3990
- /* @__PURE__ */ jsx67("a", {
4170
+ /* @__PURE__ */ jsx68("a", {
3991
4171
  href: "https://remotion.pro/dashboard",
3992
4172
  children: "remotion.pro"
3993
4173
  }),
@@ -3997,10 +4177,10 @@ var publicLicenseKeyOption = {
3997
4177
  ssrName: "publicLicenseKey",
3998
4178
  docLink: "https://www.remotion.dev/docs/licensing",
3999
4179
  getValue: ({ commandLine }) => {
4000
- if (commandLine[cliFlag71] !== undefined) {
4180
+ if (commandLine[cliFlag72] !== undefined) {
4001
4181
  return {
4002
4182
  source: "cli",
4003
- value: commandLine[cliFlag71]
4183
+ value: commandLine[cliFlag72]
4004
4184
  };
4005
4185
  }
4006
4186
  if (currentPublicLicenseKey !== null) {
@@ -4021,25 +4201,25 @@ var publicLicenseKeyOption = {
4021
4201
  currentPublicLicenseKey = value3;
4022
4202
  },
4023
4203
  type: null,
4024
- id: cliFlag71
4204
+ id: cliFlag72
4025
4205
  };
4026
4206
 
4027
4207
  // src/options/public-path.tsx
4028
- import { jsx as jsx68, jsxs as jsxs47, Fragment as Fragment68 } from "react/jsx-runtime";
4029
- var cliFlag72 = "public-path";
4208
+ import { jsx as jsx69, jsxs as jsxs48, Fragment as Fragment69 } from "react/jsx-runtime";
4209
+ var cliFlag73 = "public-path";
4030
4210
  var currentPublicPath = null;
4031
4211
  var publicPathOption = {
4032
4212
  name: "Public Path",
4033
- cliFlag: cliFlag72,
4213
+ cliFlag: cliFlag73,
4034
4214
  description: () => {
4035
- return /* @__PURE__ */ jsxs47(Fragment68, {
4215
+ return /* @__PURE__ */ jsxs48(Fragment69, {
4036
4216
  children: [
4037
4217
  "The path of the URL where the bundle is going to be hosted. By default it is ",
4038
- /* @__PURE__ */ jsx68("code", {
4218
+ /* @__PURE__ */ jsx69("code", {
4039
4219
  children: "./"
4040
4220
  }),
4041
4221
  ", making the bundle relocatable. Set an absolute path such as ",
4042
- /* @__PURE__ */ jsx68("code", {
4222
+ /* @__PURE__ */ jsx69("code", {
4043
4223
  children: "/sites/my-site/"
4044
4224
  }),
4045
4225
  " to host the bundle at a fixed location."
@@ -4049,10 +4229,10 @@ var publicPathOption = {
4049
4229
  ssrName: "publicPath",
4050
4230
  docLink: "https://www.remotion.dev/docs/renderer",
4051
4231
  getValue: ({ commandLine }) => {
4052
- if (commandLine[cliFlag72] !== undefined) {
4232
+ if (commandLine[cliFlag73] !== undefined) {
4053
4233
  return {
4054
4234
  source: "cli",
4055
- value: commandLine[cliFlag72]
4235
+ value: commandLine[cliFlag73]
4056
4236
  };
4057
4237
  }
4058
4238
  if (currentPublicPath !== null) {
@@ -4070,29 +4250,29 @@ var publicPathOption = {
4070
4250
  currentPublicPath = value3;
4071
4251
  },
4072
4252
  type: "",
4073
- id: cliFlag72
4253
+ id: cliFlag73
4074
4254
  };
4075
4255
 
4076
4256
  // src/options/repro.tsx
4077
- import { jsx as jsx69, Fragment as Fragment69 } from "react/jsx-runtime";
4257
+ import { jsx as jsx70, Fragment as Fragment70 } from "react/jsx-runtime";
4078
4258
  var enableRepro = false;
4079
4259
  var setRepro = (should) => {
4080
4260
  enableRepro = should;
4081
4261
  };
4082
- var cliFlag73 = "repro";
4262
+ var cliFlag74 = "repro";
4083
4263
  var reproOption = {
4084
4264
  name: "Create reproduction",
4085
- cliFlag: cliFlag73,
4086
- description: () => /* @__PURE__ */ jsx69(Fragment69, {
4265
+ cliFlag: cliFlag74,
4266
+ description: () => /* @__PURE__ */ jsx70(Fragment70, {
4087
4267
  children: "Create a ZIP that you can submit to Remotion if asked for a reproduction."
4088
4268
  }),
4089
4269
  ssrName: "repro",
4090
4270
  docLink: "https://www.remotion.dev/docs/render-media#repro",
4091
4271
  type: false,
4092
4272
  getValue: ({ commandLine }) => {
4093
- if (commandLine[cliFlag73] !== undefined && commandLine[cliFlag73] !== null) {
4273
+ if (commandLine[cliFlag74] !== undefined && commandLine[cliFlag74] !== null) {
4094
4274
  return {
4095
- value: commandLine[cliFlag73],
4275
+ value: commandLine[cliFlag74],
4096
4276
  source: "cli"
4097
4277
  };
4098
4278
  }
@@ -4108,27 +4288,26 @@ var reproOption = {
4108
4288
  };
4109
4289
  },
4110
4290
  setConfig: setRepro,
4111
- id: cliFlag73
4291
+ id: cliFlag74
4112
4292
  };
4113
4293
 
4114
4294
  // src/options/rspack.tsx
4115
- import { jsx as jsx70, Fragment as Fragment70 } from "react/jsx-runtime";
4295
+ import { jsx as jsx71, Fragment as Fragment71 } from "react/jsx-runtime";
4116
4296
  var rspackEnabled = false;
4117
- var cliFlag74 = "experimental-rspack";
4297
+ var cliFlag75 = "rspack";
4118
4298
  var rspackOption = {
4119
- name: "Experimental Rspack",
4120
- cliFlag: cliFlag74,
4121
- description: () => /* @__PURE__ */ jsx70(Fragment70, {
4299
+ name: "Rspack",
4300
+ cliFlag: cliFlag75,
4301
+ description: () => /* @__PURE__ */ jsx71(Fragment71, {
4122
4302
  children: "Uses Rspack instead of Webpack as the bundler for the Studio or bundle."
4123
4303
  }),
4124
4304
  ssrName: null,
4125
4305
  docLink: null,
4126
4306
  type: false,
4127
4307
  getValue: ({ commandLine }) => {
4128
- if (commandLine[cliFlag74] !== undefined) {
4129
- rspackEnabled = true;
4308
+ if (commandLine[cliFlag75] !== undefined && commandLine[cliFlag75] !== null) {
4130
4309
  return {
4131
- value: commandLine[cliFlag74],
4310
+ value: commandLine[cliFlag75],
4132
4311
  source: "cli"
4133
4312
  };
4134
4313
  }
@@ -4140,21 +4319,21 @@ var rspackOption = {
4140
4319
  setConfig(value3) {
4141
4320
  rspackEnabled = value3;
4142
4321
  },
4143
- id: cliFlag74
4322
+ id: cliFlag75
4144
4323
  };
4145
4324
 
4146
4325
  // src/options/runs.tsx
4147
- import { jsx as jsx71, jsxs as jsxs48, Fragment as Fragment71 } from "react/jsx-runtime";
4326
+ import { jsx as jsx72, jsxs as jsxs49, Fragment as Fragment72 } from "react/jsx-runtime";
4148
4327
  var DEFAULT_RUNS = 3;
4149
4328
  var currentRuns = DEFAULT_RUNS;
4150
- var cliFlag75 = "runs";
4329
+ var cliFlag76 = "runs";
4151
4330
  var runsOption = {
4152
4331
  name: "Benchmark runs",
4153
- cliFlag: cliFlag75,
4154
- description: () => /* @__PURE__ */ jsxs48(Fragment71, {
4332
+ cliFlag: cliFlag76,
4333
+ description: () => /* @__PURE__ */ jsxs49(Fragment72, {
4155
4334
  children: [
4156
4335
  "Specify how many times the video should be rendered during a benchmark. Default ",
4157
- /* @__PURE__ */ jsx71("code", {
4336
+ /* @__PURE__ */ jsx72("code", {
4158
4337
  children: DEFAULT_RUNS
4159
4338
  }),
4160
4339
  "."
@@ -4164,10 +4343,10 @@ var runsOption = {
4164
4343
  docLink: "https://www.remotion.dev/docs/cli/benchmark#--runs",
4165
4344
  type: DEFAULT_RUNS,
4166
4345
  getValue: ({ commandLine }) => {
4167
- if (commandLine[cliFlag75] !== undefined) {
4168
- const value3 = Number(commandLine[cliFlag75]);
4346
+ if (commandLine[cliFlag76] !== undefined) {
4347
+ const value3 = Number(commandLine[cliFlag76]);
4169
4348
  if (isNaN(value3) || value3 < 1) {
4170
- throw new Error(`--runs must be a positive number, but got ${commandLine[cliFlag75]}`);
4349
+ throw new Error(`--runs must be a positive number, but got ${commandLine[cliFlag76]}`);
4171
4350
  }
4172
4351
  return { value: value3, source: "cli" };
4173
4352
  }
@@ -4182,21 +4361,21 @@ var runsOption = {
4182
4361
  }
4183
4362
  currentRuns = value3;
4184
4363
  },
4185
- id: cliFlag75
4364
+ id: cliFlag76
4186
4365
  };
4187
4366
 
4188
4367
  // src/options/sample-rate.tsx
4189
- import { jsx as jsx72, jsxs as jsxs49, Fragment as Fragment72 } from "react/jsx-runtime";
4190
- var cliFlag76 = "sample-rate";
4368
+ import { jsx as jsx73, jsxs as jsxs50, Fragment as Fragment73 } from "react/jsx-runtime";
4369
+ var cliFlag77 = "sample-rate";
4191
4370
  var currentSampleRate = 48000;
4192
4371
  var sampleRateOption = {
4193
4372
  name: "Sample Rate",
4194
- cliFlag: cliFlag76,
4195
- description: () => /* @__PURE__ */ jsxs49(Fragment72, {
4373
+ cliFlag: cliFlag77,
4374
+ description: () => /* @__PURE__ */ jsxs50(Fragment73, {
4196
4375
  children: [
4197
4376
  "Controls the sample rate of the output audio. The default is",
4198
4377
  " ",
4199
- /* @__PURE__ */ jsx72("code", {
4378
+ /* @__PURE__ */ jsx73("code", {
4200
4379
  children: "48000"
4201
4380
  }),
4202
4381
  " Hz. Match this to your source audio to avoid resampling artifacts."
@@ -4206,8 +4385,8 @@ var sampleRateOption = {
4206
4385
  docLink: "https://www.remotion.dev/docs/sample-rate",
4207
4386
  type: 48000,
4208
4387
  getValue: ({ commandLine }, compositionSampleRate) => {
4209
- if (commandLine[cliFlag76] !== undefined) {
4210
- return { value: commandLine[cliFlag76], source: "cli" };
4388
+ if (commandLine[cliFlag77] !== undefined) {
4389
+ return { value: commandLine[cliFlag77], source: "cli" };
4211
4390
  }
4212
4391
  if (currentSampleRate !== 48000) {
4213
4392
  return { value: currentSampleRate, source: "config file" };
@@ -4223,13 +4402,13 @@ var sampleRateOption = {
4223
4402
  setConfig: (value3) => {
4224
4403
  currentSampleRate = value3;
4225
4404
  },
4226
- id: cliFlag76
4405
+ id: cliFlag77
4227
4406
  };
4228
4407
 
4229
4408
  // src/options/scale.tsx
4230
- import { jsx as jsx73, jsxs as jsxs50, Fragment as Fragment73 } from "react/jsx-runtime";
4409
+ import { jsx as jsx74, jsxs as jsxs51, Fragment as Fragment74 } from "react/jsx-runtime";
4231
4410
  var currentScale = 1;
4232
- var cliFlag77 = "scale";
4411
+ var cliFlag78 = "scale";
4233
4412
  var validateScale = (value3) => {
4234
4413
  if (typeof value3 !== "number") {
4235
4414
  throw new Error("scale must be a number.");
@@ -4237,15 +4416,15 @@ var validateScale = (value3) => {
4237
4416
  };
4238
4417
  var scaleOption = {
4239
4418
  name: "Scale",
4240
- cliFlag: cliFlag77,
4241
- description: () => /* @__PURE__ */ jsxs50(Fragment73, {
4419
+ cliFlag: cliFlag78,
4420
+ description: () => /* @__PURE__ */ jsxs51(Fragment74, {
4242
4421
  children: [
4243
4422
  "Scales the output dimensions by a factor. For example, a 1280x720px frame will become a 1920x1080px frame with a scale factor of ",
4244
- /* @__PURE__ */ jsx73("code", {
4423
+ /* @__PURE__ */ jsx74("code", {
4245
4424
  children: "1.5"
4246
4425
  }),
4247
4426
  ". See ",
4248
- /* @__PURE__ */ jsx73("a", {
4427
+ /* @__PURE__ */ jsx74("a", {
4249
4428
  href: "https://www.remotion.dev/docs/scaling",
4250
4429
  children: "Scaling"
4251
4430
  }),
@@ -4256,11 +4435,11 @@ var scaleOption = {
4256
4435
  docLink: "https://www.remotion.dev/docs/scaling",
4257
4436
  type: 0,
4258
4437
  getValue: ({ commandLine }) => {
4259
- if (commandLine[cliFlag77] !== undefined) {
4260
- validateScale(commandLine[cliFlag77]);
4438
+ if (commandLine[cliFlag78] !== undefined) {
4439
+ validateScale(commandLine[cliFlag78]);
4261
4440
  return {
4262
4441
  source: "cli",
4263
- value: commandLine[cliFlag77]
4442
+ value: commandLine[cliFlag78]
4264
4443
  };
4265
4444
  }
4266
4445
  if (currentScale !== null) {
@@ -4277,13 +4456,43 @@ var scaleOption = {
4277
4456
  setConfig: (scale) => {
4278
4457
  currentScale = scale;
4279
4458
  },
4280
- id: cliFlag77
4459
+ id: cliFlag78
4460
+ };
4461
+
4462
+ // src/options/skip-skills.tsx
4463
+ import { jsx as jsx75, Fragment as Fragment75 } from "react/jsx-runtime";
4464
+ var cliFlag79 = "skip-skills";
4465
+ var skipSkillsOption = {
4466
+ name: "Skip Skills",
4467
+ cliFlag: cliFlag79,
4468
+ description: () => /* @__PURE__ */ jsx75(Fragment75, {
4469
+ children: "Do not update installed Remotion Agent Skills while upgrading Remotion."
4470
+ }),
4471
+ ssrName: null,
4472
+ docLink: "https://www.remotion.dev/docs/cli/upgrade#--skip-skills",
4473
+ getValue: ({ commandLine }) => {
4474
+ if (commandLine[cliFlag79]) {
4475
+ return {
4476
+ source: "cli",
4477
+ value: true
4478
+ };
4479
+ }
4480
+ return {
4481
+ source: "default",
4482
+ value: false
4483
+ };
4484
+ },
4485
+ setConfig: () => {
4486
+ throw new Error("Cannot skip updating skills via config file");
4487
+ },
4488
+ type: false,
4489
+ id: cliFlag79
4281
4490
  };
4282
4491
 
4283
4492
  // src/options/still-frame.tsx
4284
4493
  import { NoReactInternals as NoReactInternals4 } from "remotion/no-react";
4285
- import { jsx as jsx74, jsxs as jsxs51, Fragment as Fragment74 } from "react/jsx-runtime";
4286
- var cliFlag78 = "frame";
4494
+ import { jsx as jsx76, jsxs as jsxs52, Fragment as Fragment76 } from "react/jsx-runtime";
4495
+ var cliFlag80 = "frame";
4287
4496
  var currentFrame = null;
4288
4497
  var validate3 = (frame) => {
4289
4498
  NoReactInternals4.validateFrame({
@@ -4294,17 +4503,17 @@ var validate3 = (frame) => {
4294
4503
  };
4295
4504
  var stillFrameOption = {
4296
4505
  name: "Frame",
4297
- cliFlag: cliFlag78,
4298
- description: () => /* @__PURE__ */ jsxs51(Fragment74, {
4506
+ cliFlag: cliFlag80,
4507
+ description: () => /* @__PURE__ */ jsxs52(Fragment76, {
4299
4508
  children: [
4300
4509
  "Which frame should be rendered when rendering a still. Default",
4301
4510
  " ",
4302
- /* @__PURE__ */ jsx74("code", {
4511
+ /* @__PURE__ */ jsx76("code", {
4303
4512
  children: "0"
4304
4513
  }),
4305
4514
  ". From v3.2.27, negative values are allowed, with",
4306
4515
  " ",
4307
- /* @__PURE__ */ jsx74("code", {
4516
+ /* @__PURE__ */ jsx76("code", {
4308
4517
  children: "-1"
4309
4518
  }),
4310
4519
  " being the last frame."
@@ -4313,8 +4522,8 @@ var stillFrameOption = {
4313
4522
  ssrName: "frame",
4314
4523
  docLink: "https://www.remotion.dev/docs/cli/still#--frame",
4315
4524
  getValue: ({ commandLine }) => {
4316
- if (commandLine[cliFlag78] !== undefined) {
4317
- const frame = Number(commandLine[cliFlag78]);
4525
+ if (commandLine[cliFlag80] !== undefined) {
4526
+ const frame = Number(commandLine[cliFlag80]);
4318
4527
  validate3(frame);
4319
4528
  return {
4320
4529
  source: "cli",
@@ -4339,24 +4548,24 @@ var stillFrameOption = {
4339
4548
  currentFrame = value3;
4340
4549
  },
4341
4550
  type: 0,
4342
- id: cliFlag78
4551
+ id: cliFlag80
4343
4552
  };
4344
4553
 
4345
4554
  // src/options/still-image-format.tsx
4346
- import { jsx as jsx75, jsxs as jsxs52, Fragment as Fragment75 } from "react/jsx-runtime";
4555
+ import { jsx as jsx77, jsxs as jsxs53, Fragment as Fragment77 } from "react/jsx-runtime";
4347
4556
  var currentStillImageFormat = null;
4348
- var cliFlag79 = "image-format";
4557
+ var cliFlag81 = "image-format";
4349
4558
  var stillImageFormatOption = {
4350
4559
  name: "Still Image Format",
4351
- cliFlag: cliFlag79,
4352
- description: () => /* @__PURE__ */ jsxs52(Fragment75, {
4560
+ cliFlag: cliFlag81,
4561
+ description: () => /* @__PURE__ */ jsxs53(Fragment77, {
4353
4562
  children: [
4354
4563
  "The image format to use when rendering a still. Must be one of",
4355
4564
  " ",
4356
4565
  validStillImageFormats.map((f) => `"${f}"`).join(", "),
4357
4566
  ". Default:",
4358
4567
  " ",
4359
- /* @__PURE__ */ jsx75("code", {
4568
+ /* @__PURE__ */ jsx77("code", {
4360
4569
  children: '"png"'
4361
4570
  }),
4362
4571
  "."
@@ -4366,8 +4575,8 @@ var stillImageFormatOption = {
4366
4575
  docLink: "https://www.remotion.dev/docs/renderer/render-still#imageformat",
4367
4576
  type: null,
4368
4577
  getValue: ({ commandLine }) => {
4369
- if (commandLine[cliFlag79] !== undefined) {
4370
- const value3 = commandLine[cliFlag79];
4578
+ if (commandLine[cliFlag81] !== undefined) {
4579
+ const value3 = commandLine[cliFlag81];
4371
4580
  if (!validStillImageFormats.includes(value3)) {
4372
4581
  throw new Error(`Invalid still image format: ${value3}. Must be one of: ${validStillImageFormats.join(", ")}`);
4373
4582
  }
@@ -4405,16 +4614,16 @@ var stillImageFormatOption = {
4405
4614
 
4406
4615
  // src/options/throw-if-site-exists.tsx
4407
4616
  var DEFAULT5 = false;
4408
- var cliFlag80 = "throw-if-site-exists";
4617
+ var cliFlag82 = "throw-if-site-exists";
4409
4618
  var throwIfSiteExistsOption = {
4410
- cliFlag: cliFlag80,
4619
+ cliFlag: cliFlag82,
4411
4620
  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.`,
4412
4621
  docLink: "https://remotion.dev/docs/lambda/deploy-site",
4413
4622
  getValue: ({ commandLine }) => {
4414
- if (commandLine[cliFlag80]) {
4623
+ if (commandLine[cliFlag82]) {
4415
4624
  return {
4416
4625
  source: "cli",
4417
- value: commandLine[cliFlag80]
4626
+ value: commandLine[cliFlag82]
4418
4627
  };
4419
4628
  }
4420
4629
  return {
@@ -4428,41 +4637,41 @@ var throwIfSiteExistsOption = {
4428
4637
  },
4429
4638
  ssrName: "throwIfSiteExists",
4430
4639
  type: false,
4431
- id: cliFlag80
4640
+ id: cliFlag82
4432
4641
  };
4433
4642
 
4434
4643
  // src/options/timeout.tsx
4435
- import { jsx as jsx76, jsxs as jsxs53, Fragment as Fragment76 } from "react/jsx-runtime";
4644
+ import { jsx as jsx78, jsxs as jsxs54, Fragment as Fragment78 } from "react/jsx-runtime";
4436
4645
  var currentTimeout = DEFAULT_TIMEOUT;
4437
4646
  var validate4 = (value3) => {
4438
4647
  if (typeof value3 !== "number") {
4439
4648
  throw new Error("--timeout flag / setDelayRenderTimeoutInMilliseconds() must be a number, but got " + JSON.stringify(value3));
4440
4649
  }
4441
4650
  };
4442
- var cliFlag81 = "timeout";
4651
+ var cliFlag83 = "timeout";
4443
4652
  var delayRenderTimeoutInMillisecondsOption = {
4444
4653
  name: "delayRender() timeout",
4445
- cliFlag: cliFlag81,
4446
- description: () => /* @__PURE__ */ jsxs53(Fragment76, {
4654
+ cliFlag: cliFlag83,
4655
+ description: () => /* @__PURE__ */ jsxs54(Fragment78, {
4447
4656
  children: [
4448
4657
  "A number describing how long the render may take to resolve all",
4449
4658
  " ",
4450
- /* @__PURE__ */ jsx76("a", {
4659
+ /* @__PURE__ */ jsx78("a", {
4451
4660
  href: "https://remotion.dev/docs/delay-render",
4452
- children: /* @__PURE__ */ jsx76("code", {
4661
+ children: /* @__PURE__ */ jsx78("code", {
4453
4662
  children: "delayRender()"
4454
4663
  })
4455
4664
  }),
4456
4665
  " ",
4457
4666
  "calls",
4458
4667
  " ",
4459
- /* @__PURE__ */ jsx76("a", {
4668
+ /* @__PURE__ */ jsx78("a", {
4460
4669
  style: { fontSize: "inherit" },
4461
4670
  href: "https://remotion.dev/docs/timeout",
4462
4671
  children: "before it times out"
4463
4672
  }),
4464
4673
  ". Default: ",
4465
- /* @__PURE__ */ jsx76("code", {
4674
+ /* @__PURE__ */ jsx78("code", {
4466
4675
  children: "30000"
4467
4676
  })
4468
4677
  ]
@@ -4471,10 +4680,10 @@ var delayRenderTimeoutInMillisecondsOption = {
4471
4680
  docLink: "https://www.remotion.dev/docs/timeout",
4472
4681
  type: 0,
4473
4682
  getValue: ({ commandLine }) => {
4474
- if (commandLine[cliFlag81] !== undefined) {
4683
+ if (commandLine[cliFlag83] !== undefined) {
4475
4684
  return {
4476
4685
  source: "cli",
4477
- value: commandLine[cliFlag81]
4686
+ value: commandLine[cliFlag83]
4478
4687
  };
4479
4688
  }
4480
4689
  if (currentTimeout !== null) {
@@ -4493,27 +4702,27 @@ var delayRenderTimeoutInMillisecondsOption = {
4493
4702
  validate4(value3);
4494
4703
  currentTimeout = value3;
4495
4704
  },
4496
- id: cliFlag81
4705
+ id: cliFlag83
4497
4706
  };
4498
4707
 
4499
4708
  // src/options/user-agent.tsx
4500
- import { jsx as jsx77, Fragment as Fragment77 } from "react/jsx-runtime";
4709
+ import { jsx as jsx79, Fragment as Fragment79 } from "react/jsx-runtime";
4501
4710
  var userAgent = null;
4502
- var cliFlag82 = "user-agent";
4711
+ var cliFlag84 = "user-agent";
4503
4712
  var userAgentOption = {
4504
4713
  name: "User agent",
4505
- cliFlag: cliFlag82,
4506
- description: () => /* @__PURE__ */ jsx77(Fragment77, {
4714
+ cliFlag: cliFlag84,
4715
+ description: () => /* @__PURE__ */ jsx79(Fragment79, {
4507
4716
  children: "Lets you set a custom user agent that the headless Chrome browser assumes."
4508
4717
  }),
4509
4718
  ssrName: "userAgent",
4510
4719
  docLink: "https://www.remotion.dev/docs/chromium-flags#--user-agent",
4511
4720
  type: null,
4512
4721
  getValue: ({ commandLine }) => {
4513
- if (commandLine[cliFlag82] !== undefined) {
4722
+ if (commandLine[cliFlag84] !== undefined) {
4514
4723
  return {
4515
4724
  source: "cli",
4516
- value: commandLine[cliFlag82]
4725
+ value: commandLine[cliFlag84]
4517
4726
  };
4518
4727
  }
4519
4728
  if (userAgent !== null) {
@@ -4530,25 +4739,25 @@ var userAgentOption = {
4530
4739
  setConfig: (value3) => {
4531
4740
  userAgent = value3;
4532
4741
  },
4533
- id: cliFlag82
4742
+ id: cliFlag84
4534
4743
  };
4535
4744
 
4536
4745
  // src/options/version-flag.tsx
4537
- import { jsx as jsx78, Fragment as Fragment78 } from "react/jsx-runtime";
4538
- var cliFlag83 = "version";
4746
+ import { jsx as jsx80, Fragment as Fragment80 } from "react/jsx-runtime";
4747
+ var cliFlag85 = "version";
4539
4748
  var versionFlagOption = {
4540
4749
  name: "Version",
4541
- cliFlag: cliFlag83,
4542
- description: () => /* @__PURE__ */ jsx78(Fragment78, {
4750
+ cliFlag: cliFlag85,
4751
+ description: () => /* @__PURE__ */ jsx80(Fragment80, {
4543
4752
  children: "Install a specific version. Also enables downgrading to an older version."
4544
4753
  }),
4545
4754
  ssrName: null,
4546
4755
  docLink: "https://www.remotion.dev/docs/cli/upgrade#--version",
4547
4756
  getValue: ({ commandLine }) => {
4548
- if (commandLine[cliFlag83] !== undefined) {
4757
+ if (commandLine[cliFlag85] !== undefined) {
4549
4758
  return {
4550
4759
  source: "cli",
4551
- value: String(commandLine[cliFlag83])
4760
+ value: String(commandLine[cliFlag85])
4552
4761
  };
4553
4762
  }
4554
4763
  return {
@@ -4560,30 +4769,30 @@ var versionFlagOption = {
4560
4769
  throw new Error("Cannot set version via config file");
4561
4770
  },
4562
4771
  type: "",
4563
- id: cliFlag83
4772
+ id: cliFlag85
4564
4773
  };
4565
4774
 
4566
4775
  // src/options/video-bitrate.tsx
4567
- import { jsx as jsx79, jsxs as jsxs54, Fragment as Fragment79 } from "react/jsx-runtime";
4776
+ import { jsx as jsx81, jsxs as jsxs55, Fragment as Fragment81 } from "react/jsx-runtime";
4568
4777
  var videoBitrate = null;
4569
- var cliFlag84 = "video-bitrate";
4778
+ var cliFlag86 = "video-bitrate";
4570
4779
  var videoBitrateOption = {
4571
4780
  name: "Video Bitrate",
4572
- cliFlag: cliFlag84,
4573
- description: () => /* @__PURE__ */ jsxs54(Fragment79, {
4781
+ cliFlag: cliFlag86,
4782
+ description: () => /* @__PURE__ */ jsxs55(Fragment81, {
4574
4783
  children: [
4575
4784
  "Specify the target bitrate for the generated video. The syntax for FFmpeg",
4576
4785
  "'",
4577
4786
  "s",
4578
- /* @__PURE__ */ jsx79("code", {
4787
+ /* @__PURE__ */ jsx81("code", {
4579
4788
  children: "-b:v"
4580
4789
  }),
4581
4790
  " parameter should be used. FFmpeg may encode the video in a way that will not result in the exact video bitrate specified. Example values: ",
4582
- /* @__PURE__ */ jsx79("code", {
4791
+ /* @__PURE__ */ jsx81("code", {
4583
4792
  children: "512K"
4584
4793
  }),
4585
4794
  " for 512 kbps, ",
4586
- /* @__PURE__ */ jsx79("code", {
4795
+ /* @__PURE__ */ jsx81("code", {
4587
4796
  children: "1M"
4588
4797
  }),
4589
4798
  " for 1 Mbps."
@@ -4593,10 +4802,10 @@ var videoBitrateOption = {
4593
4802
  docLink: "https://www.remotion.dev/docs/renderer/render-media#videobitrate",
4594
4803
  type: "",
4595
4804
  getValue: ({ commandLine }) => {
4596
- if (commandLine[cliFlag84] !== undefined) {
4805
+ if (commandLine[cliFlag86] !== undefined) {
4597
4806
  return {
4598
4807
  source: "cli",
4599
- value: commandLine[cliFlag84]
4808
+ value: commandLine[cliFlag86]
4600
4809
  };
4601
4810
  }
4602
4811
  if (videoBitrate !== null) {
@@ -4613,33 +4822,33 @@ var videoBitrateOption = {
4613
4822
  setConfig: (bitrate) => {
4614
4823
  videoBitrate = bitrate;
4615
4824
  },
4616
- id: cliFlag84
4825
+ id: cliFlag86
4617
4826
  };
4618
4827
 
4619
4828
  // src/options/video-cache-size.tsx
4620
- import { jsx as jsx80, jsxs as jsxs55, Fragment as Fragment80 } from "react/jsx-runtime";
4829
+ import { jsx as jsx82, jsxs as jsxs56, Fragment as Fragment82 } from "react/jsx-runtime";
4621
4830
  var mediaCacheSizeInBytes = null;
4622
- var cliFlag85 = "media-cache-size-in-bytes";
4831
+ var cliFlag87 = "media-cache-size-in-bytes";
4623
4832
  var mediaCacheSizeInBytesOption = {
4624
4833
  name: "@remotion/media cache size",
4625
- cliFlag: cliFlag85,
4626
- description: () => /* @__PURE__ */ jsxs55(Fragment80, {
4834
+ cliFlag: cliFlag87,
4835
+ description: () => /* @__PURE__ */ jsxs56(Fragment82, {
4627
4836
  children: [
4628
4837
  "Specify the maximum size of the cache that ",
4629
- /* @__PURE__ */ jsx80("code", {
4838
+ /* @__PURE__ */ jsx82("code", {
4630
4839
  children: "<Video>"
4631
4840
  }),
4632
4841
  " and",
4633
4842
  " ",
4634
- /* @__PURE__ */ jsx80("code", {
4843
+ /* @__PURE__ */ jsx82("code", {
4635
4844
  children: "<Audio>"
4636
4845
  }),
4637
4846
  " from ",
4638
- /* @__PURE__ */ jsx80("code", {
4847
+ /* @__PURE__ */ jsx82("code", {
4639
4848
  children: "@remotion/media"
4640
4849
  }),
4641
4850
  " may use combined, in bytes. ",
4642
- /* @__PURE__ */ jsx80("br", {}),
4851
+ /* @__PURE__ */ jsx82("br", {}),
4643
4852
  "The default is half of the available system memory when the render starts."
4644
4853
  ]
4645
4854
  }),
@@ -4647,10 +4856,10 @@ var mediaCacheSizeInBytesOption = {
4647
4856
  docLink: "https://www.remotion.dev/docs/media/video#setting-the-cache-size",
4648
4857
  type: 0,
4649
4858
  getValue: ({ commandLine }) => {
4650
- if (commandLine[cliFlag85] !== undefined) {
4859
+ if (commandLine[cliFlag87] !== undefined) {
4651
4860
  return {
4652
4861
  source: "cli",
4653
- value: commandLine[cliFlag85]
4862
+ value: commandLine[cliFlag87]
4654
4863
  };
4655
4864
  }
4656
4865
  if (mediaCacheSizeInBytes !== null) {
@@ -4667,7 +4876,7 @@ var mediaCacheSizeInBytesOption = {
4667
4876
  setConfig: (size) => {
4668
4877
  mediaCacheSizeInBytes = size ?? null;
4669
4878
  },
4670
- id: cliFlag85
4879
+ id: cliFlag87
4671
4880
  };
4672
4881
 
4673
4882
  // src/path-normalize.ts
@@ -4786,7 +4995,7 @@ var getExtensionOfFilename = (filename) => {
4786
4995
  };
4787
4996
 
4788
4997
  // src/options/video-codec.tsx
4789
- import { jsx as jsx81, Fragment as Fragment81 } from "react/jsx-runtime";
4998
+ import { jsx as jsx83, Fragment as Fragment83 } from "react/jsx-runtime";
4790
4999
  var codec;
4791
5000
  var setCodec = (newCodec) => {
4792
5001
  if (newCodec === undefined) {
@@ -4810,11 +5019,11 @@ var deriveCodecsFromFilename = (extension) => {
4810
5019
  possible: makeFileExtensionMap()[extension] ?? []
4811
5020
  };
4812
5021
  };
4813
- var cliFlag86 = "codec";
5022
+ var cliFlag88 = "codec";
4814
5023
  var videoCodecOption = {
4815
5024
  name: "Codec",
4816
- cliFlag: cliFlag86,
4817
- description: () => /* @__PURE__ */ jsx81(Fragment81, {
5025
+ cliFlag: cliFlag88,
5026
+ description: () => /* @__PURE__ */ jsx83(Fragment83, {
4818
5027
  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."
4819
5028
  }),
4820
5029
  ssrName: "codec",
@@ -4837,7 +5046,7 @@ var videoCodecOption = {
4837
5046
  if (derivedDownloadCodecs.possible.length > 0 && derivedOutNameCodecs.possible.length > 0 && derivedDownloadCodecs.possible.join("") !== derivedOutNameCodecs.possible.join("")) {
4838
5047
  throw new TypeError(`The download name is ${downloadName} but the output name is ${outName}. The file extensions must match`);
4839
5048
  }
4840
- const cliArgument = commandLine[cliFlag86];
5049
+ const cliArgument = commandLine[cliFlag88];
4841
5050
  if (cliArgument) {
4842
5051
  if (derivedDownloadCodecs.possible.length > 0 && derivedDownloadCodecs.possible.indexOf(cliArgument) === -1) {
4843
5052
  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.`);
@@ -4886,24 +5095,24 @@ var videoCodecOption = {
4886
5095
  reset: () => {
4887
5096
  codec = undefined;
4888
5097
  },
4889
- id: cliFlag86
5098
+ id: cliFlag88
4890
5099
  };
4891
5100
 
4892
5101
  // src/options/video-image-format.tsx
4893
- import { jsx as jsx82, jsxs as jsxs56, Fragment as Fragment82 } from "react/jsx-runtime";
5102
+ import { jsx as jsx84, jsxs as jsxs57, Fragment as Fragment84 } from "react/jsx-runtime";
4894
5103
  var currentVideoImageFormat = null;
4895
- var cliFlag87 = "image-format";
5104
+ var cliFlag89 = "image-format";
4896
5105
  var videoImageFormatOption = {
4897
5106
  name: "Video Image Format",
4898
- cliFlag: cliFlag87,
4899
- description: () => /* @__PURE__ */ jsxs56(Fragment82, {
5107
+ cliFlag: cliFlag89,
5108
+ description: () => /* @__PURE__ */ jsxs57(Fragment84, {
4900
5109
  children: [
4901
5110
  "The image format to use when rendering frames for a video. Must be one of",
4902
5111
  " ",
4903
5112
  validVideoImageFormats.map((f) => `"${f}"`).join(", "),
4904
5113
  ". Default:",
4905
5114
  " ",
4906
- /* @__PURE__ */ jsx82("code", {
5115
+ /* @__PURE__ */ jsx84("code", {
4907
5116
  children: '"jpeg"'
4908
5117
  }),
4909
5118
  ". JPEG is faster, but does not support transparency."
@@ -4919,8 +5128,8 @@ var videoImageFormatOption = {
4919
5128
  value: options.uiVideoImageFormat
4920
5129
  };
4921
5130
  }
4922
- if (commandLine[cliFlag87] !== undefined) {
4923
- const value3 = commandLine[cliFlag87];
5131
+ if (commandLine[cliFlag89] !== undefined) {
5132
+ const value3 = commandLine[cliFlag89];
4924
5133
  if (!validVideoImageFormats.includes(value3)) {
4925
5134
  throw new Error(`Invalid video image format: ${value3}. Must be one of: ${validVideoImageFormats.join(", ")}`);
4926
5135
  }
@@ -4984,12 +5193,12 @@ var videoImageFormatOption = {
4984
5193
  };
4985
5194
 
4986
5195
  // src/options/webhook-custom-data.tsx
4987
- import { jsxs as jsxs57, Fragment as Fragment83 } from "react/jsx-runtime";
4988
- var cliFlag88 = "webhook-custom-data";
5196
+ import { jsxs as jsxs58, Fragment as Fragment85 } from "react/jsx-runtime";
5197
+ var cliFlag90 = "webhook-custom-data";
4989
5198
  var webhookCustomDataOption = {
4990
5199
  name: "Webhook custom data",
4991
- cliFlag: cliFlag88,
4992
- description: (type) => /* @__PURE__ */ jsxs57(Fragment83, {
5200
+ cliFlag: cliFlag90,
5201
+ description: (type) => /* @__PURE__ */ jsxs58(Fragment85, {
4993
5202
  children: [
4994
5203
  "Pass up to 1,024 bytes of a JSON-serializable object to the webhook. This data will be included in the webhook payload.",
4995
5204
  " ",
@@ -5005,24 +5214,24 @@ var webhookCustomDataOption = {
5005
5214
  setConfig: () => {
5006
5215
  throw new Error("Not implemented");
5007
5216
  },
5008
- id: cliFlag88
5217
+ id: cliFlag90
5009
5218
  };
5010
5219
 
5011
5220
  // src/options/webpack-poll.tsx
5012
- import { jsx as jsx83, Fragment as Fragment84 } from "react/jsx-runtime";
5013
- var cliFlag89 = "webpack-poll";
5221
+ import { jsx as jsx85, Fragment as Fragment86 } from "react/jsx-runtime";
5222
+ var cliFlag91 = "webpack-poll";
5014
5223
  var webpackPolling = null;
5015
5224
  var webpackPollOption = {
5016
5225
  name: "Webpack Polling",
5017
- cliFlag: cliFlag89,
5018
- description: () => /* @__PURE__ */ jsx83(Fragment84, {
5226
+ cliFlag: cliFlag91,
5227
+ description: () => /* @__PURE__ */ jsx85(Fragment86, {
5019
5228
  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."
5020
5229
  }),
5021
5230
  ssrName: null,
5022
5231
  docLink: "https://www.remotion.dev/docs/config#setwebpackpollinginmilliseconds",
5023
5232
  getValue: ({ commandLine }) => {
5024
- if (commandLine[cliFlag89] !== undefined) {
5025
- const val = commandLine[cliFlag89];
5233
+ if (commandLine[cliFlag91] !== undefined) {
5234
+ const val = commandLine[cliFlag91];
5026
5235
  if (typeof val !== "number") {
5027
5236
  throw new TypeError(`Webpack polling must be a number, got ${JSON.stringify(val)}`);
5028
5237
  }
@@ -5049,11 +5258,11 @@ var webpackPollOption = {
5049
5258
  webpackPolling = value3;
5050
5259
  },
5051
5260
  type: 0,
5052
- id: cliFlag89
5261
+ id: cliFlag91
5053
5262
  };
5054
5263
 
5055
5264
  // src/options/x264-preset.tsx
5056
- import { jsx as jsx84, jsxs as jsxs58, Fragment as Fragment85 } from "react/jsx-runtime";
5265
+ import { jsx as jsx86, jsxs as jsxs59, Fragment as Fragment87 } from "react/jsx-runtime";
5057
5266
  var x264PresetOptions = [
5058
5267
  "ultrafast",
5059
5268
  "superfast",
@@ -5067,63 +5276,63 @@ var x264PresetOptions = [
5067
5276
  "placebo"
5068
5277
  ];
5069
5278
  var preset = null;
5070
- var cliFlag90 = "x264-preset";
5279
+ var cliFlag92 = "x264-preset";
5071
5280
  var DEFAULT_PRESET = "medium";
5072
5281
  var x264Option = {
5073
5282
  name: "x264 Preset",
5074
- cliFlag: cliFlag90,
5075
- description: () => /* @__PURE__ */ jsxs58(Fragment85, {
5283
+ cliFlag: cliFlag92,
5284
+ description: () => /* @__PURE__ */ jsxs59(Fragment87, {
5076
5285
  children: [
5077
5286
  "Sets a x264 preset profile. Only applies to videos rendered with",
5078
5287
  " ",
5079
- /* @__PURE__ */ jsx84("code", {
5288
+ /* @__PURE__ */ jsx86("code", {
5080
5289
  children: "h264"
5081
5290
  }),
5082
5291
  " codec.",
5083
- /* @__PURE__ */ jsx84("br", {}),
5292
+ /* @__PURE__ */ jsx86("br", {}),
5084
5293
  "Possible values: ",
5085
- /* @__PURE__ */ jsx84("code", {
5294
+ /* @__PURE__ */ jsx86("code", {
5086
5295
  children: "superfast"
5087
5296
  }),
5088
5297
  ", ",
5089
- /* @__PURE__ */ jsx84("code", {
5298
+ /* @__PURE__ */ jsx86("code", {
5090
5299
  children: "veryfast"
5091
5300
  }),
5092
5301
  ",",
5093
5302
  " ",
5094
- /* @__PURE__ */ jsx84("code", {
5303
+ /* @__PURE__ */ jsx86("code", {
5095
5304
  children: "faster"
5096
5305
  }),
5097
5306
  ", ",
5098
- /* @__PURE__ */ jsx84("code", {
5307
+ /* @__PURE__ */ jsx86("code", {
5099
5308
  children: "fast"
5100
5309
  }),
5101
5310
  ", ",
5102
- /* @__PURE__ */ jsx84("code", {
5311
+ /* @__PURE__ */ jsx86("code", {
5103
5312
  children: "medium"
5104
5313
  }),
5105
5314
  ",",
5106
5315
  " ",
5107
- /* @__PURE__ */ jsx84("code", {
5316
+ /* @__PURE__ */ jsx86("code", {
5108
5317
  children: "slow"
5109
5318
  }),
5110
5319
  ", ",
5111
- /* @__PURE__ */ jsx84("code", {
5320
+ /* @__PURE__ */ jsx86("code", {
5112
5321
  children: "slower"
5113
5322
  }),
5114
5323
  ", ",
5115
- /* @__PURE__ */ jsx84("code", {
5324
+ /* @__PURE__ */ jsx86("code", {
5116
5325
  children: "veryslow"
5117
5326
  }),
5118
5327
  ",",
5119
5328
  " ",
5120
- /* @__PURE__ */ jsx84("code", {
5329
+ /* @__PURE__ */ jsx86("code", {
5121
5330
  children: "placebo"
5122
5331
  }),
5123
5332
  ".",
5124
- /* @__PURE__ */ jsx84("br", {}),
5333
+ /* @__PURE__ */ jsx86("br", {}),
5125
5334
  "Default: ",
5126
- /* @__PURE__ */ jsx84("code", {
5335
+ /* @__PURE__ */ jsx86("code", {
5127
5336
  children: DEFAULT_PRESET
5128
5337
  })
5129
5338
  ]
@@ -5132,7 +5341,7 @@ var x264Option = {
5132
5341
  docLink: "https://www.remotion.dev/docs/renderer/render-media",
5133
5342
  type: "fast",
5134
5343
  getValue: ({ commandLine }) => {
5135
- const value3 = commandLine[cliFlag90];
5344
+ const value3 = commandLine[cliFlag92];
5136
5345
  if (typeof value3 !== "undefined") {
5137
5346
  return { value: value3, source: "cli" };
5138
5347
  }
@@ -5144,7 +5353,7 @@ var x264Option = {
5144
5353
  setConfig: (profile) => {
5145
5354
  preset = profile;
5146
5355
  },
5147
- id: cliFlag90
5356
+ id: cliFlag92
5148
5357
  };
5149
5358
 
5150
5359
  // src/options/index.tsx
@@ -5209,6 +5418,7 @@ var allOptions = {
5209
5418
  imageSequencePatternOption,
5210
5419
  mediaCacheSizeInBytesOption,
5211
5420
  darkModeOption,
5421
+ defaultEditorOption,
5212
5422
  publicLicenseKeyOption,
5213
5423
  isProductionOption,
5214
5424
  askAIOption,
@@ -5228,6 +5438,7 @@ var allOptions = {
5228
5438
  rspackOption,
5229
5439
  outDirOption,
5230
5440
  packageManagerOption,
5441
+ skipSkillsOption,
5231
5442
  sampleRateOption,
5232
5443
  webpackPollOption,
5233
5444
  stillFrameOption,
@@ -5480,5 +5691,9 @@ var BrowserSafeApis = {
5480
5691
  validChromeModeOptions
5481
5692
  };
5482
5693
  export {
5694
+ defaultEditorIds,
5695
+ customEditorTargetPathPlaceholder,
5696
+ customEditorLineNumberPlaceholder,
5697
+ customEditorColumnNumberPlaceholder,
5483
5698
  BrowserSafeApis
5484
5699
  };