@remotion/studio 4.0.216 → 4.0.218

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.
@@ -1,4 +1,4 @@
1
1
 
2
- > @remotion/studio@4.0.215 make /Users/jonathanburger/remotion/packages/studio
2
+ > @remotion/studio@4.0.217 make /Users/jonathanburger/remotion/packages/studio
3
3
  > bun --env-file=../.env.bundle bundle.ts
4
4
 
@@ -0,0 +1,85 @@
1
+
2
+ > @remotion/studio@4.0.217 test /Users/jonathanburger/remotion/packages/studio
3
+ > bun test src
4
+
5
+ bun test v1.1.29 (6d43b366)
6
+ 
7
+ src/test/stringify-default-props.test.ts:
8
+ ✓ Should stringify default props correctly [1.05ms]
9
+ ✓ Should stringify default props correctly [0.79ms]
10
+ 
11
+ src/test/sequenced-timeline.test.ts:
12
+ ✓ Should calculate sequences correctly [3.04ms]
13
+ 
14
+ src/test/create-zod-values.test.ts:
15
+ ✓ Should be able to create a string [2.51ms]
16
+ ✓ Should be able to create a number [0.12ms]
17
+ ✓ Should be able to create an object [0.10ms]
18
+ ✓ Should be able to create an array [0.08ms]
19
+ ✓ Should be able to create a union [0.09ms]
20
+ ✓ Zod literal [0.05ms]
21
+ ✓ Should be able to create a discriminated union [0.50ms]
22
+ ✓ Zod instanceof [0.11ms]
23
+ ✓ Zod intersection [0.19ms]
24
+ ✓ Zod tuples [0.11ms]
25
+ ✓ Zod record [0.10ms]
26
+ ✓ Zod map [0.09ms]
27
+ ✓ Zod lazy [0.05ms]
28
+ ✓ Zod set [0.12ms]
29
+ ✓ Zod function [0.14ms]
30
+ ✓ Zod undefined [0.05ms]
31
+ ✓ Zod null [0.10ms]
32
+ ✓ Zod enum [0.08ms]
33
+ ✓ Zod nativeEnum [0.11ms]
34
+ ✓ Zod optional [0.08ms]
35
+ ✓ Zod nullable [0.07ms]
36
+ ✓ Zod undefined [0.07ms]
37
+ ✓ Zod catch [0.07ms]
38
+ ✓ Zod promise [0.08ms]
39
+ ✓ Zod transform [0.11ms]
40
+ ✓ Zod branded [0.08ms]
41
+ ✓ Zod lazy [0.15ms]
42
+ ✓ Zod coerce [0.06ms]
43
+ ✓ Zod strict [0.08ms]
44
+ ✓ Should create a color [0.07ms]
45
+ ✓ Should create a textarea [0.04ms]
46
+ 
47
+ src/test/folder-tree.test.ts:
48
+ ✓ Should create a good folder tree with 1 item inside and 1 item outside [0.18ms]
49
+ ✓ Should handle nested folders well [0.14ms]
50
+ ✓ Should throw if two folders with the same name [0.10ms]
51
+ 
52
+ src/test/big-timeline.test.ts:
53
+ ✓ Should calculate timeline as expected [1.67ms]
54
+ 
55
+ src/test/smooth-zoom.test.ts:
56
+ ✓ Smoothen zoom
57
+ ✓ Unsmoothen zoom [0.03ms]
58
+ 
59
+ src/test/validate-gui-output-filename.test.ts:
60
+ ✓ Should catch dot after slash [2.26ms]
61
+ ✓ Should catch dot in front  [0.02ms]
62
+ 
63
+ src/test/timeline-sequence-layout.test.ts:
64
+ ✓ Should test timeline sequence layout without max media duration [0.10ms]
65
+ ✓ Should test timeline sequence layout with max media duration [0.04ms]
66
+ 
67
+ src/test/extract-zod-enums.test.ts:
68
+ ✓ Extract Zod enums [0.12ms]
69
+ ✓ Extract Zod enums #2 [0.40ms]
70
+ 
71
+ src/test/color-math.test.ts:
72
+ ✓ Color math [0.23ms]
73
+ 
74
+ src/test/format-time.test.ts:
75
+ ✓ Format time [0.02ms]
76
+ 
77
+ src/test/timeline.test.ts:
78
+ ✓ Should calculate timeline with no sequences [0.03ms]
79
+ ✓ Should calculate a basic timeline [0.06ms]
80
+ ✓ Should follow order of nesting [0.07ms]
81
+
82
+  51 pass
83
+  0 fail
84
+ 67 expect() calls
85
+ Ran 51 tests across 12 files. [68.00ms]
package/bundle.ts CHANGED
@@ -30,6 +30,8 @@ const internalsModule = await build({
30
30
  '@remotion/renderer',
31
31
  '@remotion/player',
32
32
  '@remotion/renderer/client',
33
+ '@remotion/renderer/pure',
34
+ '@remotion/renderer/error-handling',
33
35
  'source-map',
34
36
  'zod',
35
37
  'remotion/no-react',
@@ -40,6 +42,7 @@ const [enableFile] = internalsModule.outputs;
40
42
  const internalsText = (await enableFile.text())
41
43
  .replace(/jsxDEV/g, 'jsx')
42
44
  .replace(/@remotion\/renderer\/client/g, '@remotion/renderer/client.js')
45
+ .replace(/@remotion\/renderer\/pure/g, '@remotion/renderer/pure.js')
43
46
  .replace(/react\/jsx-dev-runtime/g, 'react/jsx-runtime');
44
47
 
45
48
  await Bun.write('dist/esm/internals.mjs', internalsText);
@@ -75,6 +75,8 @@ const InstallPackageModal = ({ packageManager }) => {
75
75
  '@remotion/three': false,
76
76
  '@remotion/transitions': false,
77
77
  '@remotion/zod-types': false,
78
+ '@remotion/captions': false,
79
+ '@remotion/openai-whisper': false,
78
80
  });
79
81
  const { previewServerState: ctx } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
80
82
  const selectedPackages = Object.keys(map).filter((pkg) => map[pkg]);
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
2
  export declare const LoopToggle: React.FC<{
3
- loop: boolean;
4
- setLoop: React.Dispatch<React.SetStateAction<boolean>>;
3
+ readonly loop: boolean;
4
+ readonly setLoop: React.Dispatch<React.SetStateAction<boolean>>;
5
5
  }>;
@@ -12,6 +12,6 @@ export declare const getInputBorderColor: ({ status, isFocused, isHovered, }: {
12
12
  status: "error" | "warning" | "ok";
13
13
  isFocused: boolean;
14
14
  isHovered: boolean;
15
- }) => "#ff3232" | "hsla(0, 0%, 100%, 0.15)" | "#f1c40f" | "rgba(0, 0, 0, 0.6)" | "rgba(255, 255, 255, 0.05)";
15
+ }) => "hsla(0, 0%, 100%, 0.15)" | "rgba(0, 0, 0, 0.6)" | "rgba(255, 255, 255, 0.05)" | "#ff3232" | "#f1c40f";
16
16
  export declare const RemotionInput: React.ForwardRefExoticComponent<Omit<Props, "ref"> & React.RefAttributes<HTMLInputElement>>;
17
17
  export {};
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RenderModalBasic = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const client_1 = require("@remotion/renderer/client");
6
+ const pure_1 = require("@remotion/renderer/pure");
6
7
  const react_1 = require("react");
7
8
  const prores_labels_1 = require("../../helpers/prores-labels");
8
9
  const use_file_existence_1 = require("../../helpers/use-file-existence");
@@ -25,7 +26,7 @@ const RenderModalBasic = ({ renderMode, imageFormatOptions, outName, codec, setV
25
26
  const videoCodecOptions = (0, react_1.useMemo)(() => {
26
27
  return client_1.BrowserSafeApis.validCodecs
27
28
  .filter((c) => {
28
- return client_1.BrowserSafeApis.isAudioCodec(c) === (renderMode === 'audio');
29
+ return pure_1.NoReactAPIs.isAudioCodec(c) === (renderMode === 'audio');
29
30
  })
30
31
  .map((codecOption) => {
31
32
  return {
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getDefaultCodecs = void 0;
4
4
  const client_1 = require("@remotion/renderer/client");
5
+ const pure_1 = require("@remotion/renderer/pure");
5
6
  const getDefaultCodecs = ({ defaultConfigurationVideoCodec, compositionDefaultVideoCodec, renderType, defaultConfigurationAudioCodec, }) => {
6
7
  var _a;
7
8
  const userPreferredVideoCodec = (_a = compositionDefaultVideoCodec !== null && compositionDefaultVideoCodec !== void 0 ? compositionDefaultVideoCodec : defaultConfigurationVideoCodec) !== null && _a !== void 0 ? _a : 'h264';
@@ -16,14 +17,14 @@ const getDefaultCodecs = ({ defaultConfigurationVideoCodec, compositionDefaultVi
16
17
  : defaultConfigurationAudioCodec === 'mp3'
17
18
  ? 'mp3'
18
19
  : 'aac';
19
- const isVideoCodecAnAudioCodec = client_1.BrowserSafeApis.isAudioCodec(userPreferredVideoCodec);
20
+ const isVideoCodecAnAudioCodec = pure_1.NoReactAPIs.isAudioCodec(userPreferredVideoCodec);
20
21
  if (isVideoCodecAnAudioCodec) {
21
22
  return {
22
23
  initialAudioCodec: userPreferredVideoCodec,
23
24
  initialRenderType: 'audio',
24
25
  initialVideoCodec: userPreferredVideoCodec,
25
26
  initialVideoCodecForAudioTab: userPreferredVideoCodecForAudioTab,
26
- initialVideoCodecForVideoTab: client_1.BrowserSafeApis.isAudioCodec(defaultConfigurationVideoCodec)
27
+ initialVideoCodecForVideoTab: pure_1.NoReactAPIs.isAudioCodec(defaultConfigurationVideoCodec)
27
28
  ? 'h264'
28
29
  : defaultConfigurationVideoCodec,
29
30
  };
@@ -6727,7 +6727,7 @@ var useMenuStructure = (closeMenu, readOnlyStudio) => {
6727
6727
  label: "YouTube",
6728
6728
  onClick: () => {
6729
6729
  closeMenu();
6730
- openExternal("https://www.youtube/@remotion_dev");
6730
+ openExternal("https://www.youtube.com/@remotion_dev");
6731
6731
  },
6732
6732
  type: "item",
6733
6733
  keyHint: null,
@@ -19782,7 +19782,9 @@ var InstallPackageModal = ({ packageManager }) => {
19782
19782
  "@remotion/tailwind": false,
19783
19783
  "@remotion/three": false,
19784
19784
  "@remotion/transitions": false,
19785
- "@remotion/zod-types": false
19785
+ "@remotion/zod-types": false,
19786
+ "@remotion/captions": false,
19787
+ "@remotion/openai-whisper": false
19786
19788
  });
19787
19789
  const { previewServerState: ctx } = useContext67(StudioServerConnectionCtx);
19788
19790
  const selectedPackages = Object.keys(map).filter((pkg) => map[pkg]);
@@ -23867,6 +23869,7 @@ var RenderModalAudio = ({
23867
23869
 
23868
23870
  // src/components/RenderModal/RenderModalBasic.tsx
23869
23871
  import { BrowserSafeApis as BrowserSafeApis6 } from "@remotion/renderer/client.js";
23872
+ import { NoReactAPIs } from "@remotion/renderer/pure.js";
23870
23873
  import { useCallback as useCallback112, useMemo as useMemo114 } from "react";
23871
23874
 
23872
23875
  // src/helpers/prores-labels.ts
@@ -24086,7 +24089,7 @@ var RenderModalBasic = ({
24086
24089
  const existence = useFileExistence(outName);
24087
24090
  const videoCodecOptions = useMemo114(() => {
24088
24091
  return BrowserSafeApis6.validCodecs.filter((c) => {
24089
- return BrowserSafeApis6.isAudioCodec(c) === (renderMode === "audio");
24092
+ return NoReactAPIs.isAudioCodec(c) === (renderMode === "audio");
24090
24093
  }).map((codecOption) => {
24091
24094
  return {
24092
24095
  label: humanReadableCodec(codecOption),
@@ -24694,6 +24697,7 @@ var RenderModalPicture = ({
24694
24697
 
24695
24698
  // src/components/RenderModal/get-default-codecs.ts
24696
24699
  import { BrowserSafeApis as BrowserSafeApis8 } from "@remotion/renderer/client.js";
24700
+ import { NoReactAPIs as NoReactAPIs2 } from "@remotion/renderer/pure.js";
24697
24701
  var getDefaultCodecs = ({
24698
24702
  defaultConfigurationVideoCodec,
24699
24703
  compositionDefaultVideoCodec,
@@ -24702,14 +24706,14 @@ var getDefaultCodecs = ({
24702
24706
  }) => {
24703
24707
  const userPreferredVideoCodec = compositionDefaultVideoCodec ?? defaultConfigurationVideoCodec ?? "h264";
24704
24708
  const userPreferredVideoCodecForAudioTab = userPreferredVideoCodec === "aac" ? "aac" : userPreferredVideoCodec === "mp3" ? "mp3" : userPreferredVideoCodec === "wav" ? "wav" : defaultConfigurationAudioCodec === "pcm-16" ? "wav" : defaultConfigurationAudioCodec === "mp3" ? "mp3" : "aac";
24705
- const isVideoCodecAnAudioCodec = BrowserSafeApis8.isAudioCodec(userPreferredVideoCodec);
24709
+ const isVideoCodecAnAudioCodec = NoReactAPIs2.isAudioCodec(userPreferredVideoCodec);
24706
24710
  if (isVideoCodecAnAudioCodec) {
24707
24711
  return {
24708
24712
  initialAudioCodec: userPreferredVideoCodec,
24709
24713
  initialRenderType: "audio",
24710
24714
  initialVideoCodec: userPreferredVideoCodec,
24711
24715
  initialVideoCodecForAudioTab: userPreferredVideoCodecForAudioTab,
24712
- initialVideoCodecForVideoTab: BrowserSafeApis8.isAudioCodec(defaultConfigurationVideoCodec) ? "h264" : defaultConfigurationVideoCodec
24716
+ initialVideoCodecForVideoTab: NoReactAPIs2.isAudioCodec(defaultConfigurationVideoCodec) ? "h264" : defaultConfigurationVideoCodec
24713
24717
  };
24714
24718
  }
24715
24719
  const suitableAudioCodecForVideoCodec = BrowserSafeApis8.defaultAudioCodecs[userPreferredVideoCodec].compressed;
@@ -1,4 +1,4 @@
1
1
  export declare const getCheckerboardBackgroundSize: (size: number) => string;
2
2
  export declare const getCheckerboardBackgroundPos: (size: number) => string;
3
- export declare const checkerboardBackgroundColor: (checkerboard: boolean) => "black" | "white";
3
+ export declare const checkerboardBackgroundColor: (checkerboard: boolean) => "white" | "black";
4
4
  export declare const checkerboardBackgroundImage: (checkerboard: boolean) => "\n linear-gradient(\n 45deg,\n rgba(0, 0, 0, 0.1) 25%,\n transparent 25%\n ),\n linear-gradient(135deg, rgba(0, 0, 0, 0.1) 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, rgba(0, 0, 0, 0.1) 75%),\n linear-gradient(135deg, transparent 75%, rgba(0, 0, 0, 0.1) 75%)\n " | undefined;
@@ -24,4 +24,4 @@ export declare const TIMELINE_TRACK_SEPARATOR = "rgba(0, 0, 0, 0.3)";
24
24
  export declare const getBackgroundFromHoverState: ({ selected, hovered, }: {
25
25
  selected: boolean;
26
26
  hovered: boolean;
27
- }) => "transparent" | "hsla(0, 0%, 100%, 0.25)" | "hsla(0, 0%, 100%, 0.15)" | "rgba(255, 255, 255, 0.06)";
27
+ }) => "transparent" | "hsla(0, 0%, 100%, 0.15)" | "hsla(0, 0%, 100%, 0.25)" | "rgba(255, 255, 255, 0.06)";
@@ -1,2 +1,2 @@
1
1
  import type { X264Preset } from '@remotion/renderer';
2
- export declare const labelx264Preset: (profile: X264Preset) => "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
2
+ export declare const labelx264Preset: (profile: X264Preset) => "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
@@ -707,7 +707,7 @@ const useMenuStructure = (closeMenu, readOnlyStudio) => {
707
707
  label: 'YouTube',
708
708
  onClick: () => {
709
709
  closeMenu();
710
- openExternal('https://www.youtube/@remotion_dev');
710
+ openExternal('https://www.youtube.com/@remotion_dev');
711
711
  },
712
712
  type: 'item',
713
713
  keyHint: null,
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/studio"
4
4
  },
5
5
  "name": "@remotion/studio",
6
- "version": "4.0.216",
6
+ "version": "4.0.218",
7
7
  "description": "APIs for interacting with the Remotion Studio",
8
8
  "main": "dist",
9
9
  "sideEffects": false,
@@ -18,18 +18,18 @@
18
18
  "memfs": "3.4.3",
19
19
  "source-map": "0.7.3",
20
20
  "open": "^8.4.2",
21
- "remotion": "4.0.216",
22
- "@remotion/player": "4.0.216",
23
- "@remotion/media-utils": "4.0.216",
24
- "@remotion/renderer": "4.0.216",
25
- "@remotion/studio-shared": "4.0.216"
21
+ "remotion": "4.0.218",
22
+ "@remotion/player": "4.0.218",
23
+ "@remotion/renderer": "4.0.218",
24
+ "@remotion/studio-shared": "4.0.218",
25
+ "@remotion/media-utils": "4.0.218"
26
26
  },
27
27
  "devDependencies": {
28
28
  "react": "18.3.1",
29
29
  "react-dom": "18.3.1",
30
30
  "@types/semver": "^7.3.4",
31
31
  "zod": "3.22.3",
32
- "@remotion/zod-types": "4.0.216"
32
+ "@remotion/zod-types": "4.0.218"
33
33
  },
34
34
  "publishConfig": {
35
35
  "access": "public"