@remotion/studio 4.0.217 → 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.216 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);
@@ -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
  }>;
@@ -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,
@@ -23869,6 +23869,7 @@ var RenderModalAudio = ({
23869
23869
 
23870
23870
  // src/components/RenderModal/RenderModalBasic.tsx
23871
23871
  import { BrowserSafeApis as BrowserSafeApis6 } from "@remotion/renderer/client.js";
23872
+ import { NoReactAPIs } from "@remotion/renderer/pure.js";
23872
23873
  import { useCallback as useCallback112, useMemo as useMemo114 } from "react";
23873
23874
 
23874
23875
  // src/helpers/prores-labels.ts
@@ -24088,7 +24089,7 @@ var RenderModalBasic = ({
24088
24089
  const existence = useFileExistence(outName);
24089
24090
  const videoCodecOptions = useMemo114(() => {
24090
24091
  return BrowserSafeApis6.validCodecs.filter((c) => {
24091
- return BrowserSafeApis6.isAudioCodec(c) === (renderMode === "audio");
24092
+ return NoReactAPIs.isAudioCodec(c) === (renderMode === "audio");
24092
24093
  }).map((codecOption) => {
24093
24094
  return {
24094
24095
  label: humanReadableCodec(codecOption),
@@ -24696,6 +24697,7 @@ var RenderModalPicture = ({
24696
24697
 
24697
24698
  // src/components/RenderModal/get-default-codecs.ts
24698
24699
  import { BrowserSafeApis as BrowserSafeApis8 } from "@remotion/renderer/client.js";
24700
+ import { NoReactAPIs as NoReactAPIs2 } from "@remotion/renderer/pure.js";
24699
24701
  var getDefaultCodecs = ({
24700
24702
  defaultConfigurationVideoCodec,
24701
24703
  compositionDefaultVideoCodec,
@@ -24704,14 +24706,14 @@ var getDefaultCodecs = ({
24704
24706
  }) => {
24705
24707
  const userPreferredVideoCodec = compositionDefaultVideoCodec ?? defaultConfigurationVideoCodec ?? "h264";
24706
24708
  const userPreferredVideoCodecForAudioTab = userPreferredVideoCodec === "aac" ? "aac" : userPreferredVideoCodec === "mp3" ? "mp3" : userPreferredVideoCodec === "wav" ? "wav" : defaultConfigurationAudioCodec === "pcm-16" ? "wav" : defaultConfigurationAudioCodec === "mp3" ? "mp3" : "aac";
24707
- const isVideoCodecAnAudioCodec = BrowserSafeApis8.isAudioCodec(userPreferredVideoCodec);
24709
+ const isVideoCodecAnAudioCodec = NoReactAPIs2.isAudioCodec(userPreferredVideoCodec);
24708
24710
  if (isVideoCodecAnAudioCodec) {
24709
24711
  return {
24710
24712
  initialAudioCodec: userPreferredVideoCodec,
24711
24713
  initialRenderType: "audio",
24712
24714
  initialVideoCodec: userPreferredVideoCodec,
24713
24715
  initialVideoCodecForAudioTab: userPreferredVideoCodecForAudioTab,
24714
- initialVideoCodecForVideoTab: BrowserSafeApis8.isAudioCodec(defaultConfigurationVideoCodec) ? "h264" : defaultConfigurationVideoCodec
24716
+ initialVideoCodecForVideoTab: NoReactAPIs2.isAudioCodec(defaultConfigurationVideoCodec) ? "h264" : defaultConfigurationVideoCodec
24715
24717
  };
24716
24718
  }
24717
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
- }) => "hsla(0, 0%, 100%, 0.15)" | "hsla(0, 0%, 100%, 0.25)" | "rgba(255, 255, 255, 0.06)" | "transparent";
27
+ }) => "transparent" | "hsla(0, 0%, 100%, 0.15)" | "hsla(0, 0%, 100%, 0.25)" | "rgba(255, 255, 255, 0.06)";
@@ -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.217",
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.217",
22
- "@remotion/player": "4.0.217",
23
- "@remotion/media-utils": "4.0.217",
24
- "@remotion/renderer": "4.0.217",
25
- "@remotion/studio-shared": "4.0.217"
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.217"
32
+ "@remotion/zod-types": "4.0.218"
33
33
  },
34
34
  "publishConfig": {
35
35
  "access": "public"