@remotion/cli 3.3.80 → 3.3.82

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 (106) hide show
  1. package/dist/cloudrun-command.d.ts +1 -0
  2. package/dist/cloudrun-command.js +27 -0
  3. package/dist/codemods/update-default-props.js +57 -11
  4. package/dist/config/jpeg-quality.d.ts +2 -0
  5. package/dist/config/jpeg-quality.js +17 -0
  6. package/dist/editor/components/CheckerboardContext.d.ts +0 -0
  7. package/dist/editor/components/CheckerboardContext.js +1 -0
  8. package/dist/editor/components/CheckerboardProvider.d.ts +4 -0
  9. package/dist/editor/components/CheckerboardProvider.js +24 -0
  10. package/dist/editor/components/CurrentCompositionSideEffects.js +0 -1
  11. package/dist/editor/components/InlineAction.js +1 -0
  12. package/dist/editor/components/MediaVolumeProvider.d.ts +4 -0
  13. package/dist/editor/components/MediaVolumeProvider.js +25 -0
  14. package/dist/editor/components/Modals.js +1 -1
  15. package/dist/editor/components/ModalsProvider.d.ts +4 -0
  16. package/dist/editor/components/ModalsProvider.js +17 -0
  17. package/dist/editor/components/NewComposition/RemTextarea.js +4 -2
  18. package/dist/editor/components/PlayerEmitterContext.d.ts +4 -0
  19. package/dist/editor/components/PlayerEmitterContext.js +11 -0
  20. package/dist/editor/components/RenderButton.js +2 -2
  21. package/dist/editor/components/RenderModal/EnvInput.d.ts +1 -0
  22. package/dist/editor/components/RenderModal/EnvInput.js +22 -2
  23. package/dist/editor/components/RenderModal/InfoTooltip.js +2 -1
  24. package/dist/editor/components/RenderModal/InlineEyeIcon.js +3 -27
  25. package/dist/editor/components/RenderModal/InlineRemoveButton.js +0 -2
  26. package/dist/editor/components/RenderModal/JpegQualitySetting.d.ts +2 -2
  27. package/dist/editor/components/RenderModal/JpegQualitySetting.js +4 -4
  28. package/dist/editor/components/RenderModal/RenderModal.d.ts +1 -1
  29. package/dist/editor/components/RenderModal/RenderModal.js +50 -15
  30. package/dist/editor/components/RenderModal/RenderModalAdvanced.js +6 -1
  31. package/dist/editor/components/RenderModal/RenderModalAudio.js +4 -1
  32. package/dist/editor/components/RenderModal/RenderModalBasic.js +4 -1
  33. package/dist/editor/components/RenderModal/RenderModalData.d.ts +1 -2
  34. package/dist/editor/components/RenderModal/RenderModalData.js +28 -6
  35. package/dist/editor/components/RenderModal/RenderModalEnvironmentVariables.js +8 -5
  36. package/dist/editor/components/RenderModal/RenderModalGif.js +4 -1
  37. package/dist/editor/components/RenderModal/RenderModalInput.js +1 -1
  38. package/dist/editor/components/RenderModal/RenderModalJSONInputPropsEditor.d.ts +2 -0
  39. package/dist/editor/components/RenderModal/RenderModalJSONInputPropsEditor.js +14 -3
  40. package/dist/editor/components/RenderModal/RenderModalPicture.d.ts +3 -3
  41. package/dist/editor/components/RenderModal/RenderModalPicture.js +5 -2
  42. package/dist/editor/components/RenderModal/RenderStatusModal.js +2 -1
  43. package/dist/editor/components/RenderModal/SchemaEditor/SchemaEditor.js +41 -5
  44. package/dist/editor/components/RenderModal/SchemaEditor/SchemaEmptyStateGraphic.d.ts +2 -0
  45. package/dist/editor/components/RenderModal/SchemaEditor/SchemaEmptyStateGraphic.js +15 -0
  46. package/dist/editor/components/RenderModal/SchemaEditor/SchemaLabel.js +1 -4
  47. package/dist/editor/components/RenderModal/SchemaEditor/ZodArrayEditor.js +12 -3
  48. package/dist/editor/components/RenderModal/SchemaEditor/ZodDateEditor.js +2 -1
  49. package/dist/editor/components/RenderModal/SchemaEditor/ZodEnumEditor.d.ts +14 -0
  50. package/dist/editor/components/RenderModal/SchemaEditor/ZodEnumEditor.js +68 -0
  51. package/dist/editor/components/RenderModal/SchemaEditor/ZodErrorMessages.js +1 -1
  52. package/dist/editor/components/RenderModal/SchemaEditor/ZodNonEditableValue.js +6 -2
  53. package/dist/editor/components/RenderModal/SchemaEditor/ZodObjectEditor.js +4 -1
  54. package/dist/editor/components/RenderModal/SchemaEditor/ZodOrNullEditor.d.ts +15 -0
  55. package/dist/editor/components/RenderModal/SchemaEditor/ZodOrNullEditor.js +45 -0
  56. package/dist/editor/components/RenderModal/SchemaEditor/ZodOrNullishEditor.d.ts +15 -0
  57. package/dist/editor/components/RenderModal/SchemaEditor/ZodOrNullishEditor.js +45 -0
  58. package/dist/editor/components/RenderModal/SchemaEditor/ZodSwitch.js +10 -1
  59. package/dist/editor/components/RenderModal/SchemaEditor/ZodUnionEditor.d.ts +14 -0
  60. package/dist/editor/components/RenderModal/SchemaEditor/ZodUnionEditor.js +45 -0
  61. package/dist/editor/components/RenderModal/SchemaEditor/create-zod-values.d.ts +2 -0
  62. package/dist/editor/components/RenderModal/SchemaEditor/create-zod-values.js +150 -0
  63. package/dist/editor/components/RenderModal/SchemaEditor/schema-serialization.d.ts +2 -0
  64. package/dist/editor/components/RenderModal/SchemaEditor/schema-serialization.js +21 -0
  65. package/dist/editor/components/RenderModal/layout.js +0 -1
  66. package/dist/editor/components/RenderModal/out-name-checker.js +2 -1
  67. package/dist/editor/components/RenderQueue/actions.d.ts +5 -4
  68. package/dist/editor/components/RenderQueue/actions.js +11 -5
  69. package/dist/editor/components/RenderQueue/context.d.ts +0 -1
  70. package/dist/editor/components/RenderQueue/context.js +1 -8
  71. package/dist/editor/components/RenderQueue/index.js +1 -0
  72. package/dist/editor/components/RenderToolbarIcon.d.ts +1 -1
  73. package/dist/editor/components/RenderToolbarIcon.js +6 -6
  74. package/dist/editor/components/RendersTab.js +1 -1
  75. package/dist/editor/components/RightPanel.d.ts +6 -0
  76. package/dist/editor/components/RightPanel.js +42 -4
  77. package/dist/editor/components/SetTimelineInOutProvider.d.ts +4 -0
  78. package/dist/editor/components/SetTimelineInOutProvider.js +19 -0
  79. package/dist/editor/components/SidebarCollapserControls.d.ts +2 -0
  80. package/dist/editor/components/SidebarCollapserControls.js +51 -0
  81. package/dist/editor/components/Tabs/index.js +1 -1
  82. package/dist/editor/components/ZoomGesturesProvider.d.ts +4 -0
  83. package/dist/editor/components/ZoomGesturesProvider.js +24 -0
  84. package/dist/editor/helpers/convert-env-variables.js +2 -2
  85. package/dist/editor/helpers/use-breakpoint.d.ts +1 -0
  86. package/dist/editor/helpers/use-breakpoint.js +17 -0
  87. package/dist/editor/icons/render.d.ts +3 -0
  88. package/dist/editor/icons/render.js +6 -2
  89. package/dist/preview-server/api-routes.js +2 -0
  90. package/dist/preview-server/api-types.d.ts +2 -1
  91. package/dist/preview-server/render-queue/job.d.ts +13 -4
  92. package/dist/preview-server/render-queue/make-retry-payload.js +2 -2
  93. package/dist/preview-server/render-queue/process-still.js +1 -1
  94. package/dist/preview-server/render-queue/process-video.js +1 -1
  95. package/dist/preview-server/render-queue/queue.js +1 -0
  96. package/dist/preview-server/routes/add-render.js +2 -2
  97. package/dist/preview-server/routes/can-update-default-props.d.ts +0 -0
  98. package/dist/preview-server/routes/can-update-default-props.js +1 -0
  99. package/dist/preview-server/routes/update-default-props.js +3 -1
  100. package/dist/render-flows/render.d.ts +2 -2
  101. package/dist/render-flows/render.js +4 -8
  102. package/dist/render-flows/still.d.ts +2 -2
  103. package/dist/render-flows/still.js +2 -5
  104. package/package.json +6 -6
  105. package/dist/editor/icons/save.d.ts +0 -2
  106. package/dist/editor/icons/save.js +0 -8
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createZodValues = void 0;
4
+ const remotion_1 = require("remotion");
5
+ const createZodValues = (schema) => {
6
+ if (!schema) {
7
+ throw new Error('Invalid zod schema');
8
+ }
9
+ const def = schema._def;
10
+ const typeName = def.typeName;
11
+ switch (typeName) {
12
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodString:
13
+ return '';
14
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodNumber:
15
+ return 0;
16
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodBigInt:
17
+ return BigInt(0);
18
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodBoolean:
19
+ return false;
20
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodNaN:
21
+ return NaN;
22
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodDate:
23
+ return new Date();
24
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodSymbol:
25
+ return Symbol('remotion');
26
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodUndefined:
27
+ return undefined;
28
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodNull:
29
+ return null;
30
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodAny:
31
+ throw new Error('Cannot create a value for type z.any()');
32
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodUnknown:
33
+ throw new Error('Cannot create a value for type z.unknown()');
34
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodNever:
35
+ throw new Error('Cannot create a value for type z.never()');
36
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodVoid:
37
+ return undefined;
38
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodObject: {
39
+ const shape = def.shape();
40
+ const keys = Object.keys(shape);
41
+ const returnValue = keys.reduce((existing, key) => {
42
+ existing[key] = (0, exports.createZodValues)(shape[key]);
43
+ return existing;
44
+ }, {});
45
+ return returnValue;
46
+ }
47
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodArray: {
48
+ return [(0, exports.createZodValues)(def.type)];
49
+ }
50
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodUnion: {
51
+ const firstOptions = def.options[0];
52
+ return firstOptions ? (0, exports.createZodValues)(firstOptions) : undefined;
53
+ }
54
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodDiscriminatedUnion: {
55
+ const options = def.options[0];
56
+ return (0, exports.createZodValues)(options);
57
+ }
58
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodLiteral: {
59
+ return def.value;
60
+ }
61
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodEffects: {
62
+ return (0, exports.createZodValues)(def.schema);
63
+ }
64
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodIntersection: {
65
+ const { left, right } = def;
66
+ const leftValue = (0, exports.createZodValues)(left);
67
+ if (typeof leftValue !== 'object') {
68
+ throw new Error('Cannot create value for type z.intersection: Left side is not an object');
69
+ }
70
+ const rightValue = (0, exports.createZodValues)(right);
71
+ if (typeof rightValue !== 'object') {
72
+ throw new Error('Cannot create value for type z.intersection: Right side is not an object');
73
+ }
74
+ return { ...leftValue, ...rightValue };
75
+ }
76
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodTuple: {
77
+ const items = def.items.map((item) => (0, exports.createZodValues)(item));
78
+ return items;
79
+ }
80
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodRecord: {
81
+ const values = (0, exports.createZodValues)(def.valueType);
82
+ return { key: values };
83
+ }
84
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodMap: {
85
+ const defType = def;
86
+ const values = (0, exports.createZodValues)(defType.valueType);
87
+ const key = (0, exports.createZodValues)(defType.keyType);
88
+ return new Map([[key, values]]);
89
+ }
90
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodLazy: {
91
+ const defType = def;
92
+ const type = defType.getter();
93
+ return (0, exports.createZodValues)(type);
94
+ }
95
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodSet: {
96
+ const defType = def;
97
+ const values = (0, exports.createZodValues)(defType.valueType);
98
+ return new Set([values]);
99
+ }
100
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodFunction: {
101
+ throw new Error('Cannot create a value for type function');
102
+ }
103
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodEnum: {
104
+ const { values } = def;
105
+ return values[0];
106
+ }
107
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodNativeEnum: {
108
+ return 0;
109
+ }
110
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodOptional: {
111
+ const defType = def;
112
+ const value = (0, exports.createZodValues)(defType.innerType);
113
+ return value;
114
+ }
115
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodNullable: {
116
+ const defType = def;
117
+ const value = (0, exports.createZodValues)(defType.innerType);
118
+ return value;
119
+ }
120
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodDefault: {
121
+ const defType = def;
122
+ return defType.defaultValue();
123
+ }
124
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodCatch: {
125
+ const defType = def;
126
+ const value = (0, exports.createZodValues)(defType.innerType);
127
+ return value;
128
+ }
129
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodPromise: {
130
+ const defType = def;
131
+ const value = (0, exports.createZodValues)(defType.type);
132
+ return Promise.resolve(value);
133
+ }
134
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodBranded: {
135
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
136
+ const defType = def;
137
+ const value = (0, exports.createZodValues)(defType.type);
138
+ return value;
139
+ }
140
+ case remotion_1.z.ZodFirstPartyTypeKind.ZodPipeline: {
141
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
142
+ const defType = def;
143
+ const value = (0, exports.createZodValues)(defType.out);
144
+ return value;
145
+ }
146
+ default:
147
+ throw new Error('Not implemented: ' + typeName);
148
+ }
149
+ };
150
+ exports.createZodValues = createZodValues;
@@ -0,0 +1,2 @@
1
+ export declare const serializeJSONWithSchema: (data: unknown, indent: number | undefined) => string;
2
+ export declare const deserializeJSONWithSchema: (data: string) => any;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deserializeJSONWithSchema = exports.serializeJSONWithSchema = void 0;
4
+ const serializeJSONWithSchema = (data, indent) => {
5
+ return JSON.stringify(data, function (key, value) {
6
+ if (this[key] instanceof Date) {
7
+ return `remotion-date:${this[key].toISOString()}`;
8
+ }
9
+ return value;
10
+ }, indent);
11
+ };
12
+ exports.serializeJSONWithSchema = serializeJSONWithSchema;
13
+ const deserializeJSONWithSchema = (data) => {
14
+ return JSON.parse(data, (_, value) => {
15
+ if (typeof value === 'string' && value.startsWith('remotion-date:')) {
16
+ return new Date(value.replace('remotion-date:', ''));
17
+ }
18
+ return value;
19
+ });
20
+ };
21
+ exports.deserializeJSONWithSchema = deserializeJSONWithSchema;
@@ -5,7 +5,6 @@ const colors_1 = require("../../helpers/colors");
5
5
  exports.optionRow = {
6
6
  display: 'flex',
7
7
  flexDirection: 'row',
8
- alignItems: 'center',
9
8
  minHeight: 40,
10
9
  paddingLeft: 16,
11
10
  paddingRight: 16,
@@ -29,7 +29,8 @@ const isValidOutName = ({ outName, codec, audioCodec, renderMode, stillImageForm
29
29
  const extension = outName.substring(outName.lastIndexOf('.') + 1);
30
30
  const prefix = outName.substring(0, outName.lastIndexOf('.'));
31
31
  const map = client_1.BrowserSafeApis.defaultFileExtensionMap[codec];
32
- if (!(audioCodec in map.forAudioCodec)) {
32
+ if (client_1.BrowserSafeApis.supportedAudioCodecs[codec].length > 0 &&
33
+ !(audioCodec in map.forAudioCodec)) {
33
34
  throw new Error(`Audio codec ${audioCodec} is not supported for codec ${codec}`);
34
35
  }
35
36
  const hasDotAfterSlash = () => {
@@ -3,11 +3,11 @@ import type { ApiRoutes } from '../../../preview-server/api-types';
3
3
  import type { RenderJob } from '../../../preview-server/render-queue/job';
4
4
  import type { RequiredChromiumOptions } from '../../../required-chromium-options';
5
5
  export declare const callApi: <Endpoint extends keyof ApiRoutes>(endpoint: Endpoint, body: ApiRoutes[Endpoint]["Request"]) => Promise<ApiRoutes[Endpoint]["Response"]>;
6
- export declare const addStillRenderJob: ({ compositionId, outName, imageFormat, quality, frame, scale, verbose, chromiumOptions, delayRenderTimeout, envVariables, inputProps, }: {
6
+ export declare const addStillRenderJob: ({ compositionId, outName, imageFormat, jpegQuality, frame, scale, verbose, chromiumOptions, delayRenderTimeout, envVariables, inputProps, }: {
7
7
  compositionId: string;
8
8
  outName: string;
9
9
  imageFormat: StillImageFormat;
10
- quality: number | null;
10
+ jpegQuality: number | null;
11
11
  frame: number;
12
12
  scale: number;
13
13
  verbose: boolean;
@@ -16,11 +16,11 @@ export declare const addStillRenderJob: ({ compositionId, outName, imageFormat,
16
16
  envVariables: Record<string, string>;
17
17
  inputProps: unknown;
18
18
  }) => Promise<undefined>;
19
- export declare const addVideoRenderJob: ({ compositionId, outName, imageFormat, quality, scale, verbose, codec, concurrency, crf, startFrame, endFrame, muted, enforceAudioTrack, proResProfile, pixelFormat, audioBitrate, videoBitrate, everyNthFrame, numberOfGifLoops, delayRenderTimeout, audioCodec, disallowParallelEncoding, chromiumOptions, envVariables, inputProps, }: {
19
+ export declare const addVideoRenderJob: ({ compositionId, outName, imageFormat, jpegQuality, scale, verbose, codec, concurrency, crf, startFrame, endFrame, muted, enforceAudioTrack, proResProfile, pixelFormat, audioBitrate, videoBitrate, everyNthFrame, numberOfGifLoops, delayRenderTimeout, audioCodec, disallowParallelEncoding, chromiumOptions, envVariables, inputProps, }: {
20
20
  compositionId: string;
21
21
  outName: string;
22
22
  imageFormat: VideoImageFormat;
23
- quality: number | null;
23
+ jpegQuality: number | null;
24
24
  scale: number;
25
25
  verbose: boolean;
26
26
  codec: Codec;
@@ -57,3 +57,4 @@ export declare const openInFileExplorer: ({ directory }: {
57
57
  export declare const removeRenderJob: (job: RenderJob) => Promise<undefined>;
58
58
  export declare const cancelRenderJob: (job: RenderJob) => Promise<import("../../../preview-server/render-queue/job").CancelRenderResponse>;
59
59
  export declare const updateDefaultProps: (compositionId: string, defaultProps: unknown) => Promise<void>;
60
+ export declare const canUpdateDefaultProps: (compositionId: string) => Promise<import("../../../preview-server/render-queue/job").CanUpdateDefaultPropsResponse>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateDefaultProps = exports.cancelRenderJob = exports.removeRenderJob = exports.openInFileExplorer = exports.subscribeToFileExistenceWatcher = exports.unsubscribeFromFileExistenceWatcher = exports.addVideoRenderJob = exports.addStillRenderJob = exports.callApi = void 0;
3
+ exports.canUpdateDefaultProps = exports.updateDefaultProps = exports.cancelRenderJob = exports.removeRenderJob = exports.openInFileExplorer = exports.subscribeToFileExistenceWatcher = exports.unsubscribeFromFileExistenceWatcher = exports.addVideoRenderJob = exports.addStillRenderJob = exports.callApi = void 0;
4
4
  const date_serialization_1 = require("../RenderModal/SchemaEditor/date-serialization");
5
5
  const callApi = (endpoint, body) => {
6
6
  return new Promise((resolve, reject) => {
@@ -26,13 +26,13 @@ const callApi = (endpoint, body) => {
26
26
  });
27
27
  };
28
28
  exports.callApi = callApi;
29
- const addStillRenderJob = ({ compositionId, outName, imageFormat, quality, frame, scale, verbose, chromiumOptions, delayRenderTimeout, envVariables, inputProps, }) => {
29
+ const addStillRenderJob = ({ compositionId, outName, imageFormat, jpegQuality, frame, scale, verbose, chromiumOptions, delayRenderTimeout, envVariables, inputProps, }) => {
30
30
  return (0, exports.callApi)('/api/render', {
31
31
  compositionId,
32
32
  type: 'still',
33
33
  outName,
34
34
  imageFormat,
35
- quality,
35
+ jpegQuality,
36
36
  frame,
37
37
  scale,
38
38
  verbose,
@@ -43,13 +43,13 @@ const addStillRenderJob = ({ compositionId, outName, imageFormat, quality, frame
43
43
  });
44
44
  };
45
45
  exports.addStillRenderJob = addStillRenderJob;
46
- const addVideoRenderJob = ({ compositionId, outName, imageFormat, quality, scale, verbose, codec, concurrency, crf, startFrame, endFrame, muted, enforceAudioTrack, proResProfile, pixelFormat, audioBitrate, videoBitrate, everyNthFrame, numberOfGifLoops, delayRenderTimeout, audioCodec, disallowParallelEncoding, chromiumOptions, envVariables, inputProps, }) => {
46
+ const addVideoRenderJob = ({ compositionId, outName, imageFormat, jpegQuality, scale, verbose, codec, concurrency, crf, startFrame, endFrame, muted, enforceAudioTrack, proResProfile, pixelFormat, audioBitrate, videoBitrate, everyNthFrame, numberOfGifLoops, delayRenderTimeout, audioCodec, disallowParallelEncoding, chromiumOptions, envVariables, inputProps, }) => {
47
47
  return (0, exports.callApi)('/api/render', {
48
48
  compositionId,
49
49
  type: 'video',
50
50
  outName,
51
51
  imageFormat,
52
- quality,
52
+ jpegQuality,
53
53
  scale,
54
54
  verbose,
55
55
  codec,
@@ -112,3 +112,9 @@ const updateDefaultProps = (compositionId, defaultProps) => {
112
112
  });
113
113
  };
114
114
  exports.updateDefaultProps = updateDefaultProps;
115
+ const canUpdateDefaultProps = (compositionId) => {
116
+ return (0, exports.callApi)('/api/can-update-default-props', {
117
+ compositionId,
118
+ });
119
+ };
120
+ exports.canUpdateDefaultProps = canUpdateDefaultProps;
@@ -9,7 +9,6 @@ declare type RenderQueueContextType = {
9
9
  jobs: RenderJob[];
10
10
  };
11
11
  export declare const RenderQueueContext: React.Context<RenderQueueContextType>;
12
- export declare const useShouldRenderLeftSidebarTabs: () => boolean;
13
12
  export declare const renderJobsRef: React.RefObject<{
14
13
  updateRenderJobs: (jobs: RenderJob[]) => void;
15
14
  }>;
@@ -23,19 +23,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.RenderQueueContextProvider = exports.renderJobsRef = exports.useShouldRenderLeftSidebarTabs = exports.RenderQueueContext = void 0;
26
+ exports.RenderQueueContextProvider = exports.renderJobsRef = exports.RenderQueueContext = void 0;
27
27
  const jsx_runtime_1 = require("react/jsx-runtime");
28
28
  const react_1 = __importStar(require("react"));
29
- const client_id_1 = require("../../helpers/client-id");
30
29
  exports.RenderQueueContext = react_1.default.createContext({
31
30
  jobs: [],
32
31
  });
33
- const useShouldRenderLeftSidebarTabs = () => {
34
- const context = (0, react_1.useContext)(exports.RenderQueueContext);
35
- const previewServer = (0, react_1.useContext)(client_id_1.PreviewServerConnectionCtx);
36
- return context.jobs.length > 0 && previewServer.type === 'connected';
37
- };
38
- exports.useShouldRenderLeftSidebarTabs = useShouldRenderLeftSidebarTabs;
39
32
  exports.renderJobsRef = (0, react_1.createRef)();
40
33
  const RenderQueueContextProvider = ({ children }) => {
41
34
  const [jobs, setJobs] = (0, react_1.useState)(window.remotion_initialRenderQueue);
@@ -9,6 +9,7 @@ const RenderQueueItem_1 = require("./RenderQueueItem");
9
9
  const separatorStyle = {
10
10
  borderBottom: `1px solid ${colors_1.BORDER_COLOR}`,
11
11
  };
12
+ // TODO: Handle state where preview server is disconnected
12
13
  const RenderQueue = () => {
13
14
  const { jobs } = (0, react_1.useContext)(context_1.RenderQueueContext);
14
15
  return ((0, jsx_runtime_1.jsx)("div", { children: jobs.map((j, index) => {
@@ -1,2 +1,2 @@
1
1
  import React from 'react';
2
- export declare const RenderStillButton: React.FC;
2
+ export declare const RenderButton: React.FC;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RenderStillButton = void 0;
3
+ exports.RenderButton = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const remotion_1 = require("remotion");
@@ -10,18 +10,18 @@ const client_id_1 = require("../helpers/client-id");
10
10
  const render_1 = require("../icons/render");
11
11
  const modals_1 = require("../state/modals");
12
12
  const ControlButton_1 = require("./ControlButton");
13
- const RenderStillButton = () => {
13
+ const RenderButton = () => {
14
14
  const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
15
15
  const { type } = (0, react_1.useContext)(client_id_1.PreviewServerConnectionCtx);
16
16
  const iconStyle = (0, react_1.useMemo)(() => {
17
17
  return {
18
18
  style: {
19
- height: 15,
19
+ height: 18,
20
20
  },
21
21
  };
22
22
  }, []);
23
23
  const tooltip = type === 'connected'
24
- ? 'Export the current frame as a still image'
24
+ ? 'Export the current composition'
25
25
  : 'Connect to the preview server to render';
26
26
  const video = remotion_1.Internals.useVideo();
27
27
  const frame = (0, remotion_1.useCurrentFrame)();
@@ -50,7 +50,7 @@ const RenderStillButton = () => {
50
50
  defaultExtension: isVideo ? 'mp4' : 'png',
51
51
  type: 'asset',
52
52
  }),
53
- initialQuality: defaults.quality,
53
+ initialJpegQuality: defaults.jpegQuality,
54
54
  initialScale: (_b = (_a = window.remotion_renderDefaults) === null || _a === void 0 ? void 0 : _a.scale) !== null && _b !== void 0 ? _b : 1,
55
55
  initialVerbose: defaults.logLevel === 'verbose',
56
56
  initialVideoCodecForAudioTab: initialAudioCodec,
@@ -81,4 +81,4 @@ const RenderStillButton = () => {
81
81
  }
82
82
  return ((0, jsx_runtime_1.jsx)(ControlButton_1.ControlButton, { id: "render-modal-button", disabled: type !== 'connected', title: tooltip, "aria-label": tooltip, onClick: onClick, children: (0, jsx_runtime_1.jsx)(render_1.RenderIcon, { svgProps: iconStyle }) }));
83
83
  };
84
- exports.RenderStillButton = RenderStillButton;
84
+ exports.RenderButton = RenderButton;
@@ -10,7 +10,7 @@ const Tabs_1 = require("./Tabs");
10
10
  const row = {
11
11
  display: 'flex',
12
12
  flexDirection: 'row',
13
- fontSize: 13,
13
+ fontSize: 14,
14
14
  justifyContent: 'center',
15
15
  color: 'inherit',
16
16
  alignItems: 'center',
@@ -1,2 +1,8 @@
1
1
  import React from 'react';
2
+ declare type SidebarPanel = 'input-props' | 'renders';
3
+ export declare const persistSelectedPanel: (panel: SidebarPanel) => void;
4
+ export declare const rightSidebarTabs: React.RefObject<{
5
+ selectRendersPanel: () => void;
6
+ }>;
2
7
  export declare const RightPanel: React.FC<{}>;
8
+ export {};
@@ -1,15 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RightPanel = void 0;
3
+ exports.RightPanel = exports.rightSidebarTabs = exports.persistSelectedPanel = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const remotion_1 = require("remotion");
7
+ const colors_1 = require("../helpers/colors");
7
8
  const RenderModalData_1 = require("./RenderModal/RenderModalData");
9
+ const RenderQueue_1 = require("./RenderQueue");
10
+ const RendersTab_1 = require("./RendersTab");
11
+ const Tabs_1 = require("./Tabs");
8
12
  const container = {
9
13
  height: '100%',
10
14
  width: '100%',
11
15
  position: 'absolute',
12
- overflow: 'auto',
16
+ display: 'flex',
17
+ flexDirection: 'column',
13
18
  };
14
19
  const PropsEditor = ({ composition }) => {
15
20
  var _a;
@@ -23,9 +28,42 @@ const PropsEditor = ({ composition }) => {
23
28
  newProps: newProps,
24
29
  });
25
30
  }, [composition.defaultProps, composition.id, updateProps]);
26
- return ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(RenderModalData_1.RenderModalData, { composition: composition, inputProps: (_a = props[composition.id]) !== null && _a !== void 0 ? _a : composition.defaultProps, setInputProps: setInputProps, compact: true, updateButton: true, showSaveButton: true }) }));
31
+ return ((0, jsx_runtime_1.jsx)(RenderModalData_1.RenderModalData, { composition: composition, inputProps: (_a = props[composition.id]) !== null && _a !== void 0 ? _a : composition.defaultProps, setInputProps: setInputProps, compact: true, mayShowSaveButton: true }));
27
32
  };
33
+ const localStorageKey = 'remotion.sidebarPanel';
34
+ const getSelectedPanel = () => {
35
+ const panel = localStorage.getItem(localStorageKey);
36
+ if (panel === 'renders') {
37
+ return 'renders';
38
+ }
39
+ return 'input-props';
40
+ };
41
+ const tabsContainer = {
42
+ borderBottom: `1px solid ${colors_1.BORDER_COLOR}`,
43
+ };
44
+ const persistSelectedPanel = (panel) => {
45
+ localStorage.setItem(localStorageKey, panel);
46
+ };
47
+ exports.persistSelectedPanel = persistSelectedPanel;
48
+ exports.rightSidebarTabs = (0, react_1.createRef)();
28
49
  const RightPanel = () => {
50
+ const [panel, setPanel] = (0, react_1.useState)(() => getSelectedPanel());
51
+ const onCompositionsSelected = (0, react_1.useCallback)(() => {
52
+ setPanel('input-props');
53
+ (0, exports.persistSelectedPanel)('input-props');
54
+ }, []);
55
+ const onRendersSelected = (0, react_1.useCallback)(() => {
56
+ setPanel('renders');
57
+ (0, exports.persistSelectedPanel)('renders');
58
+ }, []);
59
+ (0, react_1.useImperativeHandle)(exports.rightSidebarTabs, () => {
60
+ return {
61
+ selectRendersPanel: () => {
62
+ setPanel('renders');
63
+ (0, exports.persistSelectedPanel)('renders');
64
+ },
65
+ };
66
+ }, []);
29
67
  const { compositions, currentComposition } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
30
68
  const composition = (0, react_1.useMemo)(() => {
31
69
  for (const comp of compositions) {
@@ -38,6 +76,6 @@ const RightPanel = () => {
38
76
  if (composition === null) {
39
77
  return null;
40
78
  }
41
- return ((0, jsx_runtime_1.jsx)("div", { style: container, children: (0, jsx_runtime_1.jsx)(PropsEditor, { composition: composition }) }));
79
+ return ((0, jsx_runtime_1.jsxs)("div", { style: container, className: "css-reset", children: [(0, jsx_runtime_1.jsx)("div", { style: tabsContainer, children: (0, jsx_runtime_1.jsxs)(Tabs_1.Tabs, { children: [(0, jsx_runtime_1.jsx)(Tabs_1.Tab, { selected: panel === 'input-props', onClick: onCompositionsSelected, children: "Default Props" }), (0, jsx_runtime_1.jsx)(RendersTab_1.RendersTab, { onClick: onRendersSelected, selected: panel === 'renders' })] }) }), panel === 'renders' ? ((0, jsx_runtime_1.jsx)(RenderQueue_1.RenderQueue, {})) : ((0, jsx_runtime_1.jsx)(PropsEditor, { composition: composition }))] }));
42
80
  };
43
81
  exports.RightPanel = RightPanel;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export declare const SetTimelineInOutProvider: React.FC<{
3
+ children: React.ReactNode;
4
+ }>;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SetTimelineInOutProvider = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const in_out_1 = require("../state/in-out");
7
+ const SetTimelineInOutProvider = ({ children }) => {
8
+ const [inAndOutFrames, setInAndOutFrames] = (0, react_1.useState)({
9
+ inFrame: null,
10
+ outFrame: null,
11
+ });
12
+ const setTimelineInOutContextValue = (0, react_1.useMemo)(() => {
13
+ return {
14
+ setInAndOutFrames,
15
+ };
16
+ }, []);
17
+ return ((0, jsx_runtime_1.jsx)(in_out_1.TimelineInOutContext.Provider, { value: inAndOutFrames, children: (0, jsx_runtime_1.jsx)(in_out_1.SetTimelineInOutContext.Provider, { value: setTimelineInOutContextValue, children: children }) }));
18
+ };
19
+ exports.SetTimelineInOutProvider = SetTimelineInOutProvider;
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const SidebarCollapserControls: React.FC<{}>;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SidebarCollapserControls = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const sidebar_1 = require("../state/sidebar");
7
+ const InlineAction_1 = require("./InlineAction");
8
+ const layout_1 = require("./layout");
9
+ const TopPanel_1 = require("./TopPanel");
10
+ const style = {
11
+ width: 16,
12
+ height: 16,
13
+ border: '1px solid white',
14
+ borderRadius: 3,
15
+ position: 'relative',
16
+ };
17
+ const SidebarCollapserControls = () => {
18
+ const { setSidebarCollapsedStateLeft, setSidebarCollapsedStateRight, sidebarCollapsedStateRight, } = (0, react_1.useContext)(sidebar_1.SidebarContext);
19
+ const leftSidebarStatus = (0, TopPanel_1.useResponsiveSidebarStatus)();
20
+ const leftIcon = (0, react_1.useMemo)(() => {
21
+ return {
22
+ width: '35%',
23
+ height: '100%',
24
+ borderRight: '1px solid white',
25
+ background: leftSidebarStatus === 'expanded' ? 'white' : 'transparent',
26
+ };
27
+ }, [leftSidebarStatus]);
28
+ const rightIcon = (0, react_1.useMemo)(() => {
29
+ return {
30
+ width: '35%',
31
+ height: '100%',
32
+ right: 0,
33
+ position: 'absolute',
34
+ borderLeft: '1px solid white',
35
+ background: sidebarCollapsedStateRight === 'expanded' ? 'white' : 'transparent',
36
+ };
37
+ }, [sidebarCollapsedStateRight]);
38
+ const toggleLeft = (0, react_1.useCallback)(() => {
39
+ setSidebarCollapsedStateLeft((s) => {
40
+ if (s === 'responsive') {
41
+ return leftSidebarStatus === 'collapsed' ? 'expanded' : 'collapsed';
42
+ }
43
+ return s === 'collapsed' ? 'expanded' : 'collapsed';
44
+ });
45
+ }, [leftSidebarStatus, setSidebarCollapsedStateLeft]);
46
+ const toggleRight = (0, react_1.useCallback)(() => {
47
+ setSidebarCollapsedStateRight((s) => s === 'collapsed' ? 'expanded' : 'collapsed');
48
+ }, [setSidebarCollapsedStateRight]);
49
+ return ((0, jsx_runtime_1.jsxs)(layout_1.Row, { children: [(0, jsx_runtime_1.jsx)(InlineAction_1.InlineAction, { onClick: toggleLeft, children: (0, jsx_runtime_1.jsx)("div", { style: style, children: (0, jsx_runtime_1.jsx)("div", { style: leftIcon }) }) }), (0, jsx_runtime_1.jsx)(InlineAction_1.InlineAction, { onClick: toggleRight, children: (0, jsx_runtime_1.jsx)("div", { style: style, children: (0, jsx_runtime_1.jsx)("div", { style: rightIcon }) }) })] }));
50
+ };
51
+ exports.SidebarCollapserControls = SidebarCollapserControls;
@@ -23,7 +23,7 @@ const selectorButton = {
23
23
  border: 'none',
24
24
  flex: 1,
25
25
  padding: 8,
26
- fontSize: 13,
26
+ fontSize: 14,
27
27
  };
28
28
  const Tab = ({ children, onClick, style, selected }) => {
29
29
  const [hovered, setHovered] = (0, react_1.useState)(false);
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export declare const ZoomGesturesProvider: React.FC<{
3
+ children: React.ReactNode;
4
+ }>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZoomGesturesProvider = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const editor_zoom_gestures_1 = require("../state/editor-zoom-gestures");
7
+ const ZoomGesturesProvider = ({ children }) => {
8
+ const [editorZoomGestures, setEditorZoomGesturesState] = (0, react_1.useState)(() => (0, editor_zoom_gestures_1.loadEditorZoomGesturesOption)());
9
+ const setEditorZoomGestures = (0, react_1.useCallback)((newValue) => {
10
+ setEditorZoomGesturesState((prevState) => {
11
+ const newVal = newValue(prevState);
12
+ (0, editor_zoom_gestures_1.persistEditorZoomGesturesOption)(newVal);
13
+ return newVal;
14
+ });
15
+ }, []);
16
+ const editorZoomGesturesCtx = (0, react_1.useMemo)(() => {
17
+ return {
18
+ editorZoomGestures,
19
+ setEditorZoomGestures,
20
+ };
21
+ }, [editorZoomGestures, setEditorZoomGestures]);
22
+ return ((0, jsx_runtime_1.jsx)(editor_zoom_gestures_1.EditorZoomGesturesContext.Provider, { value: editorZoomGesturesCtx, children: children }));
23
+ };
24
+ exports.ZoomGesturesProvider = ZoomGesturesProvider;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.envVariablesArrayToObject = exports.envVariablesObjectToArray = void 0;
4
4
  const envVariablesObjectToArray = (envVariables) => {
5
5
  return Object.entries(envVariables).map(([key, one]) => [
6
- key.trim(),
6
+ key.trim().toUpperCase(),
7
7
  one.trim(),
8
8
  ]);
9
9
  };
@@ -13,7 +13,7 @@ const envVariablesArrayToObject = (envVariables) => {
13
13
  .map(([key, val]) => [key.trim(), val.trim()])
14
14
  .filter(([key, val]) => key && val)
15
15
  .reduce((acc, [key, value]) => {
16
- acc[key] = value;
16
+ acc[key.toUpperCase()] = value;
17
17
  return acc;
18
18
  }, {});
19
19
  };
@@ -0,0 +1 @@
1
+ export declare function useBreakpoint(breakpoint: number): boolean;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useBreakpoint = void 0;
4
+ const react_1 = require("react");
5
+ function useBreakpoint(breakpoint) {
6
+ const [compactUI, setCompactUI] = (0, react_1.useState)(window.innerWidth < breakpoint);
7
+ (0, react_1.useEffect)(() => {
8
+ function handleResize() {
9
+ setCompactUI(window.innerWidth < breakpoint);
10
+ }
11
+ window.addEventListener('resize', handleResize);
12
+ handleResize();
13
+ return () => window.removeEventListener('resize', handleResize);
14
+ }, [breakpoint]);
15
+ return compactUI;
16
+ }
17
+ exports.useBreakpoint = useBreakpoint;
@@ -3,3 +3,6 @@ import React from 'react';
3
3
  export declare const RenderIcon: React.FC<{
4
4
  svgProps: SVGProps<SVGSVGElement>;
5
5
  }>;
6
+ export declare const ThinRenderIcon: React.FC<{
7
+ svgProps: SVGProps<SVGSVGElement>;
8
+ }>;