@remotion/studio 4.0.431 → 4.0.433
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.
- package/dist/Studio.d.ts +1 -0
- package/dist/Studio.js +4 -6
- package/dist/components/AssetSelectorItem.js +6 -8
- package/dist/components/CompositionSelector.js +16 -9
- package/dist/components/CurrentComposition.js +2 -5
- package/dist/components/EditorContent.js +4 -5
- package/dist/components/NewComposition/InputDragger.d.ts +1 -0
- package/dist/components/NewComposition/InputDragger.js +27 -8
- package/dist/components/OptionsPanel.js +1 -1
- package/dist/components/PlaybackRatePersistor.js +1 -1
- package/dist/components/PreviewToolbar.js +4 -2
- package/dist/components/RenderModal/WebRenderModal.d.ts +1 -1
- package/dist/components/RenderModal/WebRenderModal.js +55 -26
- package/dist/components/RenderModal/WebRenderModalAudio.d.ts +2 -0
- package/dist/components/RenderModal/WebRenderModalAudio.js +13 -5
- package/dist/components/RenderModal/WebRenderModalBasic.js +42 -35
- package/dist/components/RenderQueue/ClientRenderQueueProcessor.js +3 -3
- package/dist/components/RenderQueue/client-side-render-types.d.ts +1 -1
- package/dist/components/RendersTab.js +1 -9
- package/dist/components/Timeline/TimelineBooleanField.d.ts +9 -0
- package/dist/components/Timeline/TimelineBooleanField.js +20 -0
- package/dist/components/Timeline/TimelineEmptyState.d.ts +2 -0
- package/dist/components/Timeline/TimelineEmptyState.js +15 -0
- package/dist/components/Timeline/TimelineExpandedSection.d.ts +5 -0
- package/dist/components/Timeline/TimelineExpandedSection.js +54 -152
- package/dist/components/Timeline/TimelineFieldRow.d.ts +11 -0
- package/dist/components/Timeline/TimelineFieldRow.js +83 -0
- package/dist/components/Timeline/TimelineListItem.d.ts +1 -0
- package/dist/components/Timeline/TimelineListItem.js +12 -23
- package/dist/components/Timeline/TimelineNumberField.d.ts +11 -0
- package/dist/components/Timeline/TimelineNumberField.js +53 -0
- package/dist/components/Timeline/TimelinePlayCursorSyncer.js +1 -1
- package/dist/components/Timeline/TimelineRotationField.d.ts +11 -0
- package/dist/components/Timeline/TimelineRotationField.js +64 -0
- package/dist/components/Timeline/TimelineSchemaField.d.ts +3 -4
- package/dist/components/Timeline/TimelineSchemaField.js +20 -77
- package/dist/components/Timeline/TimelineTranslateField.d.ts +11 -0
- package/dist/components/Timeline/TimelineTranslateField.js +115 -0
- package/dist/components/Timeline/timeline-field-utils.d.ts +2 -0
- package/dist/components/Timeline/timeline-field-utils.js +12 -0
- package/dist/components/Timeline/use-resolved-stack.d.ts +2 -0
- package/dist/components/Timeline/use-resolved-stack.js +54 -0
- package/dist/components/Timeline/use-sequence-props-subscription.d.ts +4 -0
- package/dist/components/Timeline/use-sequence-props-subscription.js +150 -0
- package/dist/error-overlay/react-overlay/utils/get-source-map.d.ts +5 -0
- package/dist/esm/{chunk-3msfwcwh.js → chunk-bd1bkakk.js} +3001 -2433
- package/dist/esm/internals.mjs +3001 -2433
- package/dist/esm/previewEntry.mjs +3011 -2442
- package/dist/esm/renderEntry.mjs +5 -4
- package/dist/helpers/calculate-timeline.js +17 -11
- package/dist/helpers/get-timeline-sequence-layout.js +3 -3
- package/dist/helpers/get-timeline-sequence-sort-key.d.ts +1 -1
- package/dist/helpers/get-timeline-sequence-sort-key.js +6 -3
- package/dist/helpers/inject-css.js +6 -1
- package/dist/helpers/sort-by-nonce-history.d.ts +5 -0
- package/dist/helpers/sort-by-nonce-history.js +73 -0
- package/dist/helpers/timeline-layout.d.ts +2 -2
- package/dist/helpers/timeline-layout.js +10 -4
- package/dist/internals.d.ts +1 -0
- package/dist/previewEntry.js +1 -1
- package/dist/renderEntry.js +3 -3
- package/package.json +10 -10
package/dist/esm/renderEntry.mjs
CHANGED
|
@@ -164,8 +164,8 @@ var renderContent = (Root) => {
|
|
|
164
164
|
videoEnabled: window.remotion_videoEnabled,
|
|
165
165
|
logLevel: window.remotion_logLevel,
|
|
166
166
|
numberOfAudioTags: 0,
|
|
167
|
-
nonceContextSeed: 0,
|
|
168
167
|
audioLatencyHint: window.remotion_audioLatencyHint ?? "interactive",
|
|
168
|
+
visualModeEnabled: false,
|
|
169
169
|
children: /* @__PURE__ */ jsxs(Internals.RenderAssetManagerProvider, {
|
|
170
170
|
collectAssets: null,
|
|
171
171
|
children: [
|
|
@@ -192,7 +192,7 @@ var renderContent = (Root) => {
|
|
|
192
192
|
logLevel: window.remotion_logLevel,
|
|
193
193
|
numberOfAudioTags: 0,
|
|
194
194
|
audioLatencyHint: window.remotion_audioLatencyHint ?? "interactive",
|
|
195
|
-
|
|
195
|
+
visualModeEnabled: false,
|
|
196
196
|
children: /* @__PURE__ */ jsx(Internals.RenderAssetManagerProvider, {
|
|
197
197
|
collectAssets: null,
|
|
198
198
|
children: /* @__PURE__ */ jsx(Root, {})
|
|
@@ -208,13 +208,14 @@ var renderContent = (Root) => {
|
|
|
208
208
|
renderToDOM(/* @__PURE__ */ jsx("div", {
|
|
209
209
|
children: /* @__PURE__ */ jsx(DelayedSpinner, {})
|
|
210
210
|
}));
|
|
211
|
-
import("./chunk-
|
|
211
|
+
import("./chunk-bd1bkakk.js").then(({ StudioInternals }) => {
|
|
212
212
|
window.remotion_isStudio = true;
|
|
213
213
|
window.remotion_isReadOnlyStudio = true;
|
|
214
214
|
window.remotion_inputProps = "{}";
|
|
215
215
|
renderToDOM(/* @__PURE__ */ jsx(StudioInternals.Studio, {
|
|
216
216
|
readOnly: true,
|
|
217
|
-
rootComponent: Root
|
|
217
|
+
rootComponent: Root,
|
|
218
|
+
visualModeEnabled: false
|
|
218
219
|
}));
|
|
219
220
|
}).catch((err) => {
|
|
220
221
|
renderToDOM(/* @__PURE__ */ jsxs("div", {
|
|
@@ -5,9 +5,11 @@ const get_sequence_visible_range_1 = require("./get-sequence-visible-range");
|
|
|
5
5
|
const get_timeline_nestedness_1 = require("./get-timeline-nestedness");
|
|
6
6
|
const get_timeline_sequence_hash_1 = require("./get-timeline-sequence-hash");
|
|
7
7
|
const get_timeline_sequence_sort_key_1 = require("./get-timeline-sequence-sort-key");
|
|
8
|
+
const sort_by_nonce_history_1 = require("./sort-by-nonce-history");
|
|
8
9
|
const calculateTimeline = ({ sequences, sequenceDuration, }) => {
|
|
10
|
+
const sortedSequences = (0, sort_by_nonce_history_1.sortItemsByNonceHistory)(sequences);
|
|
9
11
|
const tracks = [];
|
|
10
|
-
if (
|
|
12
|
+
if (sortedSequences.length === 0) {
|
|
11
13
|
return [
|
|
12
14
|
{
|
|
13
15
|
sequence: {
|
|
@@ -19,7 +21,7 @@ const calculateTimeline = ({ sequences, sequenceDuration, }) => {
|
|
|
19
21
|
type: 'sequence',
|
|
20
22
|
rootId: '-',
|
|
21
23
|
showInTimeline: true,
|
|
22
|
-
nonce: 0,
|
|
24
|
+
nonce: [[0, 0]],
|
|
23
25
|
loopDisplay: undefined,
|
|
24
26
|
stack: null,
|
|
25
27
|
premountDisplay: null,
|
|
@@ -34,26 +36,26 @@ const calculateTimeline = ({ sequences, sequenceDuration, }) => {
|
|
|
34
36
|
const sameHashes = {};
|
|
35
37
|
const hashesUsedInRoot = {};
|
|
36
38
|
const cache = {};
|
|
37
|
-
for (let i = 0; i <
|
|
38
|
-
const sequence =
|
|
39
|
+
for (let i = 0; i < sortedSequences.length; i++) {
|
|
40
|
+
const sequence = sortedSequences[i];
|
|
39
41
|
if (!hashesUsedInRoot[sequence.rootId]) {
|
|
40
42
|
hashesUsedInRoot[sequence.rootId] = [];
|
|
41
43
|
}
|
|
42
|
-
const actualHash = (0, get_timeline_sequence_hash_1.getTimelineSequenceHash)(sequence,
|
|
44
|
+
const actualHash = (0, get_timeline_sequence_hash_1.getTimelineSequenceHash)(sequence, sortedSequences, hashesUsedInRoot, cache);
|
|
43
45
|
if (!sameHashes[actualHash]) {
|
|
44
46
|
sameHashes[actualHash] = [];
|
|
45
47
|
}
|
|
46
48
|
sameHashes[actualHash].push(sequence.id);
|
|
47
|
-
const cascadedStart = (0, get_sequence_visible_range_1.getCascadedStart)(sequence,
|
|
48
|
-
const visibleStart = (0, get_sequence_visible_range_1.getTimelineVisibleStart)(sequence,
|
|
49
|
-
const visibleDuration = (0, get_sequence_visible_range_1.getTimelineVisibleDuration)(sequence,
|
|
49
|
+
const cascadedStart = (0, get_sequence_visible_range_1.getCascadedStart)(sequence, sortedSequences);
|
|
50
|
+
const visibleStart = (0, get_sequence_visible_range_1.getTimelineVisibleStart)(sequence, sortedSequences);
|
|
51
|
+
const visibleDuration = (0, get_sequence_visible_range_1.getTimelineVisibleDuration)(sequence, sortedSequences);
|
|
50
52
|
tracks.push({
|
|
51
53
|
sequence: {
|
|
52
54
|
...sequence,
|
|
53
55
|
from: visibleStart,
|
|
54
56
|
duration: visibleDuration,
|
|
55
57
|
},
|
|
56
|
-
depth: (0, get_timeline_nestedness_1.getTimelineNestedLevel)(sequence,
|
|
58
|
+
depth: (0, get_timeline_nestedness_1.getTimelineNestedLevel)(sequence, sortedSequences, 0),
|
|
57
59
|
hash: actualHash,
|
|
58
60
|
cascadedStart,
|
|
59
61
|
cascadedDuration: sequence.duration,
|
|
@@ -66,9 +68,13 @@ const calculateTimeline = ({ sequences, sequenceDuration, }) => {
|
|
|
66
68
|
uniqueTracks.push(cleanTrack);
|
|
67
69
|
}
|
|
68
70
|
}
|
|
71
|
+
const nonceRanks = new Map();
|
|
72
|
+
for (let i = 0; i < tracks.length; i++) {
|
|
73
|
+
nonceRanks.set(tracks[i].sequence.id, i);
|
|
74
|
+
}
|
|
69
75
|
return uniqueTracks.sort((a, b) => {
|
|
70
|
-
const sortKeyA = (0, get_timeline_sequence_sort_key_1.getTimelineSequenceSequenceSortKey)(a, tracks, sameHashes);
|
|
71
|
-
const sortKeyB = (0, get_timeline_sequence_sort_key_1.getTimelineSequenceSequenceSortKey)(b, tracks, sameHashes);
|
|
76
|
+
const sortKeyA = (0, get_timeline_sequence_sort_key_1.getTimelineSequenceSequenceSortKey)(a, tracks, sameHashes, nonceRanks);
|
|
77
|
+
const sortKeyB = (0, get_timeline_sequence_sort_key_1.getTimelineSequenceSequenceSortKey)(b, tracks, sameHashes, nonceRanks);
|
|
72
78
|
return sortKeyA.localeCompare(sortKeyB);
|
|
73
79
|
});
|
|
74
80
|
};
|
|
@@ -13,10 +13,10 @@ const getWidthOfTrack = ({ durationInFrames, lastFrame, windowWidth, spatialDura
|
|
|
13
13
|
const getTimelineSequenceLayout = ({ durationInFrames, startFrom, maxMediaDuration, startFromMedia, video, windowWidth, premountDisplay, postmountDisplay, }) => {
|
|
14
14
|
var _a;
|
|
15
15
|
const maxMediaSequenceDuration = (maxMediaDuration !== null && maxMediaDuration !== void 0 ? maxMediaDuration : Infinity) - startFromMedia;
|
|
16
|
-
const lastFrame = (_a = video.durationInFrames) !== null && _a !== void 0 ? _a : 1;
|
|
17
|
-
const spatialDuration = Math.min(maxMediaSequenceDuration, durationInFrames, lastFrame - startFrom);
|
|
16
|
+
const lastFrame = ((_a = video.durationInFrames) !== null && _a !== void 0 ? _a : 1) - 1;
|
|
17
|
+
const spatialDuration = Math.min(maxMediaSequenceDuration, durationInFrames - 1, lastFrame - startFrom);
|
|
18
18
|
// Unclipped spatial duration: without the lastFrame - startFrom constraint
|
|
19
|
-
const naturalSpatialDuration = Math.min(maxMediaSequenceDuration, durationInFrames);
|
|
19
|
+
const naturalSpatialDuration = Math.min(maxMediaSequenceDuration, durationInFrames - 1);
|
|
20
20
|
const marginLeft = lastFrame === 0
|
|
21
21
|
? 0
|
|
22
22
|
: (startFrom / lastFrame) * (windowWidth - timeline_layout_1.TIMELINE_PADDING * 2);
|
|
@@ -13,5 +13,5 @@ export type TrackWithHashAndOriginalTimings = TrackWithHash & {
|
|
|
13
13
|
};
|
|
14
14
|
export declare const getTimelineSequenceSequenceSortKey: (track: TrackWithHash, tracks: TrackWithHash[], sameHashes?: {
|
|
15
15
|
[hash: string]: string[];
|
|
16
|
-
}) => string;
|
|
16
|
+
}, nonceRanks?: Map<string, number>) => string;
|
|
17
17
|
export {};
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getTimelineSequenceSequenceSortKey = void 0;
|
|
4
|
-
const getTimelineSequenceSequenceSortKey = (track, tracks, sameHashes = {}) => {
|
|
4
|
+
const getTimelineSequenceSequenceSortKey = (track, tracks, sameHashes = {}, nonceRanks = new Map()) => {
|
|
5
|
+
var _a;
|
|
5
6
|
const firstSequenceWithSameHash = tracks.find((t) => sameHashes[track.hash].includes(t.sequence.id));
|
|
6
|
-
const
|
|
7
|
+
const sequenceId = firstSequenceWithSameHash.sequence.id;
|
|
8
|
+
const rank = (_a = nonceRanks.get(sequenceId)) !== null && _a !== void 0 ? _a : 0;
|
|
9
|
+
const id = String(rank).padStart(6, '0');
|
|
7
10
|
if (!track.sequence.parent) {
|
|
8
11
|
return id;
|
|
9
12
|
}
|
|
@@ -19,6 +22,6 @@ const getTimelineSequenceSequenceSortKey = (track, tracks, sameHashes = {}) => {
|
|
|
19
22
|
if (!firstParentWithSameHash) {
|
|
20
23
|
throw new Error('could not find parent: ' + track.sequence.parent);
|
|
21
24
|
}
|
|
22
|
-
return `${(0, exports.getTimelineSequenceSequenceSortKey)(firstParentWithSameHash, tracks, sameHashes)}-${id}`;
|
|
25
|
+
return `${(0, exports.getTimelineSequenceSequenceSortKey)(firstParentWithSameHash, tracks, sameHashes, nonceRanks)}-${id}`;
|
|
23
26
|
};
|
|
24
27
|
exports.getTimelineSequenceSequenceSortKey = getTimelineSequenceSequenceSortKey;
|
|
@@ -11,6 +11,7 @@ const makeDefaultGlobalCSS = () => {
|
|
|
11
11
|
return `
|
|
12
12
|
html {
|
|
13
13
|
--remotion-cli-internals-blue: #0b84f3;
|
|
14
|
+
--remotion-cli-internals-blue-hovered: #4da3f7;
|
|
14
15
|
overscroll-behavior-y: none;
|
|
15
16
|
overscroll-behavior-x: none;
|
|
16
17
|
}
|
|
@@ -83,7 +84,7 @@ const makeDefaultGlobalCSS = () => {
|
|
|
83
84
|
|
|
84
85
|
input:focus,
|
|
85
86
|
textarea:focus,
|
|
86
|
-
button:focus,
|
|
87
|
+
button:focus:not(.__remotion_input_dragger),
|
|
87
88
|
a:focus {
|
|
88
89
|
outline: none;
|
|
89
90
|
box-shadow:
|
|
@@ -143,6 +144,10 @@ const makeDefaultGlobalCSS = () => {
|
|
|
143
144
|
position: relative;
|
|
144
145
|
}
|
|
145
146
|
|
|
147
|
+
.__remotion_input_dragger:hover span {
|
|
148
|
+
color: var(--remotion-cli-internals-blue-hovered) !important;
|
|
149
|
+
}
|
|
150
|
+
|
|
146
151
|
.${scroll_to_default_props_path_1.DEFAULT_PROPS_PATH_ACTIVE_CLASSNAME} span {
|
|
147
152
|
color: var(--remotion-cli-internals-blue) !important;
|
|
148
153
|
transition: color 0.2s ease-in-out;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sortItemsByNonceHistory = exports.compareNonceHistories = void 0;
|
|
4
|
+
const getSharedEpochOrder = (a, b) => {
|
|
5
|
+
const aMap = new Map(a);
|
|
6
|
+
const bMap = new Map(b);
|
|
7
|
+
const allEpochs = [...new Set([...aMap.keys(), ...bMap.keys()])].sort((x, y) => y - x);
|
|
8
|
+
for (const epoch of allEpochs) {
|
|
9
|
+
const aNonce = aMap.get(epoch);
|
|
10
|
+
const bNonce = bMap.get(epoch);
|
|
11
|
+
if (aNonce !== undefined && bNonce !== undefined) {
|
|
12
|
+
return aNonce - bNonce;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return null;
|
|
16
|
+
};
|
|
17
|
+
const compareNonceHistories = (a, b) => {
|
|
18
|
+
const shared = getSharedEpochOrder(a, b);
|
|
19
|
+
if (shared !== null) {
|
|
20
|
+
return shared;
|
|
21
|
+
}
|
|
22
|
+
// No shared epoch — items from a lower latest epoch come first
|
|
23
|
+
const aLatestEpoch = a[a.length - 1][0];
|
|
24
|
+
const bLatestEpoch = b[b.length - 1][0];
|
|
25
|
+
return aLatestEpoch - bLatestEpoch;
|
|
26
|
+
};
|
|
27
|
+
exports.compareNonceHistories = compareNonceHistories;
|
|
28
|
+
const sortItemsByNonceHistory = (items) => {
|
|
29
|
+
const n = items.length;
|
|
30
|
+
if (n <= 1) {
|
|
31
|
+
return items.slice();
|
|
32
|
+
}
|
|
33
|
+
// Build a pairwise ordering matrix from shared epochs.
|
|
34
|
+
// order[i][j] < 0 means i before j, > 0 means j before i, null means no direct relationship.
|
|
35
|
+
const order = Array.from({ length: n }, () => Array(n).fill(null));
|
|
36
|
+
for (let i = 0; i < n; i++) {
|
|
37
|
+
for (let j = i + 1; j < n; j++) {
|
|
38
|
+
const cmp = getSharedEpochOrder(items[i].nonce, items[j].nonce);
|
|
39
|
+
order[i][j] = cmp;
|
|
40
|
+
order[j][i] = cmp !== null ? -cmp : null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Compute transitive closure: if i < j and j < k, then i < k.
|
|
44
|
+
for (let k = 0; k < n; k++) {
|
|
45
|
+
for (let i = 0; i < n; i++) {
|
|
46
|
+
for (let j = 0; j < n; j++) {
|
|
47
|
+
if (order[i][j] === null &&
|
|
48
|
+
order[i][k] !== null &&
|
|
49
|
+
order[k][j] !== null &&
|
|
50
|
+
order[i][k] < 0 &&
|
|
51
|
+
order[k][j] < 0) {
|
|
52
|
+
order[i][j] = -1;
|
|
53
|
+
order[j][i] = 1;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Sort using transitive order, falling back to lower latest epoch first.
|
|
59
|
+
const indexMap = new Map(items.map((item, i) => [item, i]));
|
|
60
|
+
const result = items.slice();
|
|
61
|
+
result.sort((a, b) => {
|
|
62
|
+
const ai = indexMap.get(a);
|
|
63
|
+
const bi = indexMap.get(b);
|
|
64
|
+
const transitiveOrder = order[ai][bi];
|
|
65
|
+
if (transitiveOrder !== null) {
|
|
66
|
+
return transitiveOrder;
|
|
67
|
+
}
|
|
68
|
+
// No transitive relationship — lower latest epoch first
|
|
69
|
+
return a.nonce[a.nonce.length - 1][0] - b.nonce[b.nonce.length - 1][0];
|
|
70
|
+
});
|
|
71
|
+
return result;
|
|
72
|
+
};
|
|
73
|
+
exports.sortItemsByNonceHistory = sortItemsByNonceHistory;
|
|
@@ -3,8 +3,8 @@ export declare const TIMELINE_PADDING = 16;
|
|
|
3
3
|
export declare const TIMELINE_BORDER = 1;
|
|
4
4
|
export declare const TIMELINE_ITEM_BORDER_BOTTOM = 1;
|
|
5
5
|
export declare const TIMELINE_TRACK_EXPANDED_HEIGHT = 100;
|
|
6
|
-
export declare const SCHEMA_FIELD_ROW_HEIGHT =
|
|
7
|
-
export declare const UNSUPPORTED_FIELD_ROW_HEIGHT =
|
|
6
|
+
export declare const SCHEMA_FIELD_ROW_HEIGHT = 22;
|
|
7
|
+
export declare const UNSUPPORTED_FIELD_ROW_HEIGHT = 22;
|
|
8
8
|
export type SchemaFieldInfo = {
|
|
9
9
|
key: string;
|
|
10
10
|
description: string | undefined;
|
|
@@ -5,9 +5,14 @@ exports.TIMELINE_PADDING = 16;
|
|
|
5
5
|
exports.TIMELINE_BORDER = 1;
|
|
6
6
|
exports.TIMELINE_ITEM_BORDER_BOTTOM = 1;
|
|
7
7
|
exports.TIMELINE_TRACK_EXPANDED_HEIGHT = 100;
|
|
8
|
-
exports.SCHEMA_FIELD_ROW_HEIGHT =
|
|
9
|
-
exports.UNSUPPORTED_FIELD_ROW_HEIGHT =
|
|
10
|
-
const SUPPORTED_SCHEMA_TYPES = new Set([
|
|
8
|
+
exports.SCHEMA_FIELD_ROW_HEIGHT = 22;
|
|
9
|
+
exports.UNSUPPORTED_FIELD_ROW_HEIGHT = 22;
|
|
10
|
+
const SUPPORTED_SCHEMA_TYPES = new Set([
|
|
11
|
+
'number',
|
|
12
|
+
'boolean',
|
|
13
|
+
'rotation',
|
|
14
|
+
'translate',
|
|
15
|
+
]);
|
|
11
16
|
const getSchemaFields = (controls) => {
|
|
12
17
|
if (!controls) {
|
|
13
18
|
return null;
|
|
@@ -34,7 +39,8 @@ const getExpandedTrackHeight = (controls) => {
|
|
|
34
39
|
if (!fields || fields.length === 0) {
|
|
35
40
|
return exports.TIMELINE_TRACK_EXPANDED_HEIGHT;
|
|
36
41
|
}
|
|
37
|
-
|
|
42
|
+
const separators = Math.max(0, fields.length - 1);
|
|
43
|
+
return fields.reduce((sum, f) => sum + f.rowHeight, 0) + separators;
|
|
38
44
|
};
|
|
39
45
|
exports.getExpandedTrackHeight = getExpandedTrackHeight;
|
|
40
46
|
const getTimelineLayerHeight = (type) => {
|
package/dist/internals.d.ts
CHANGED
package/dist/previewEntry.js
CHANGED
|
@@ -44,5 +44,5 @@ const renderToDOM = (content) => {
|
|
|
44
44
|
};
|
|
45
45
|
renderToDOM(jsx_runtime_1.jsx(NoRegisterRoot_1.NoRegisterRoot, {}));
|
|
46
46
|
remotion_1.Internals.waitForRoot((NewRoot) => {
|
|
47
|
-
renderToDOM(jsx_runtime_1.jsx(Studio_1.Studio, { readOnly: false, rootComponent: NewRoot }));
|
|
47
|
+
renderToDOM(jsx_runtime_1.jsx(Studio_1.Studio, { readOnly: false, rootComponent: NewRoot, visualModeEnabled: Boolean(process.env.EXPERIMENTAL_VISUAL_MODE_ENABLED) }));
|
|
48
48
|
});
|
package/dist/renderEntry.js
CHANGED
|
@@ -185,13 +185,13 @@ const renderContent = (Root) => {
|
|
|
185
185
|
defaultVideoImageFormat: bundleMode.compositionDefaultVideoImageFormat,
|
|
186
186
|
defaultPixelFormat: bundleMode.compositionDefaultPixelFormat,
|
|
187
187
|
defaultProResProfile: bundleMode.compositionDefaultProResProfile,
|
|
188
|
-
}, initialCompositions: [], children: jsx_runtime_1.jsx(remotion_1.Internals.RemotionRootContexts, { frameState: null, audioEnabled: window.remotion_audioEnabled, videoEnabled: window.remotion_videoEnabled, logLevel: window.remotion_logLevel, numberOfAudioTags: 0,
|
|
188
|
+
}, initialCompositions: [], children: jsx_runtime_1.jsx(remotion_1.Internals.RemotionRootContexts, { frameState: null, audioEnabled: window.remotion_audioEnabled, videoEnabled: window.remotion_videoEnabled, logLevel: window.remotion_logLevel, numberOfAudioTags: 0, audioLatencyHint: (_a = window.remotion_audioLatencyHint) !== null && _a !== void 0 ? _a : 'interactive', visualModeEnabled: false, children: jsx_runtime_1.jsxs(remotion_1.Internals.RenderAssetManagerProvider, { collectAssets: null, children: [
|
|
189
189
|
jsx_runtime_1.jsx(Root, {}), jsx_runtime_1.jsx(GetVideoComposition, { state: bundleMode })
|
|
190
190
|
] }) }) }));
|
|
191
191
|
renderToDOM(markup);
|
|
192
192
|
}
|
|
193
193
|
if (bundleMode.type === 'evaluation') {
|
|
194
|
-
const markup = (jsx_runtime_1.jsx(remotion_1.Internals.CompositionManagerProvider, { initialCanvasContent: null, onlyRenderComposition: null, currentCompositionMetadata: null, initialCompositions: [], children: jsx_runtime_1.jsx(remotion_1.Internals.RemotionRootContexts, { frameState: null, audioEnabled: window.remotion_audioEnabled, videoEnabled: window.remotion_videoEnabled, logLevel: window.remotion_logLevel, numberOfAudioTags: 0, audioLatencyHint: (_b = window.remotion_audioLatencyHint) !== null && _b !== void 0 ? _b : 'interactive',
|
|
194
|
+
const markup = (jsx_runtime_1.jsx(remotion_1.Internals.CompositionManagerProvider, { initialCanvasContent: null, onlyRenderComposition: null, currentCompositionMetadata: null, initialCompositions: [], children: jsx_runtime_1.jsx(remotion_1.Internals.RemotionRootContexts, { frameState: null, audioEnabled: window.remotion_audioEnabled, videoEnabled: window.remotion_videoEnabled, logLevel: window.remotion_logLevel, numberOfAudioTags: 0, audioLatencyHint: (_b = window.remotion_audioLatencyHint) !== null && _b !== void 0 ? _b : 'interactive', visualModeEnabled: false, children: jsx_runtime_1.jsx(remotion_1.Internals.RenderAssetManagerProvider, { collectAssets: null, children: jsx_runtime_1.jsx(Root, {}) }) }) }));
|
|
195
195
|
renderToDOM(markup);
|
|
196
196
|
}
|
|
197
197
|
if (bundleMode.type === 'index') {
|
|
@@ -203,7 +203,7 @@ const renderContent = (Root) => {
|
|
|
203
203
|
window.remotion_isStudio = true;
|
|
204
204
|
window.remotion_isReadOnlyStudio = true;
|
|
205
205
|
window.remotion_inputProps = '{}';
|
|
206
|
-
renderToDOM(jsx_runtime_1.jsx(StudioInternals.Studio, { readOnly: true, rootComponent: Root }));
|
|
206
|
+
renderToDOM(jsx_runtime_1.jsx(StudioInternals.Studio, { readOnly: true, rootComponent: Root, visualModeEnabled: false }));
|
|
207
207
|
})
|
|
208
208
|
.catch((err) => {
|
|
209
209
|
renderToDOM(jsx_runtime_1.jsxs("div", { children: ["Failed to load Remotion Studio: ", err.message] }));
|
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.
|
|
6
|
+
"version": "4.0.433",
|
|
7
7
|
"description": "APIs for interacting with the Remotion Studio",
|
|
8
8
|
"main": "dist",
|
|
9
9
|
"sideEffects": false,
|
|
@@ -26,14 +26,14 @@
|
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"semver": "7.5.3",
|
|
29
|
-
"remotion": "4.0.
|
|
30
|
-
"@remotion/player": "4.0.
|
|
31
|
-
"@remotion/media-utils": "4.0.
|
|
32
|
-
"@remotion/renderer": "4.0.
|
|
33
|
-
"@remotion/web-renderer": "4.0.
|
|
34
|
-
"@remotion/studio-shared": "4.0.
|
|
35
|
-
"@remotion/zod-types": "4.0.
|
|
36
|
-
"mediabunny": "1.
|
|
29
|
+
"remotion": "4.0.433",
|
|
30
|
+
"@remotion/player": "4.0.433",
|
|
31
|
+
"@remotion/media-utils": "4.0.433",
|
|
32
|
+
"@remotion/renderer": "4.0.433",
|
|
33
|
+
"@remotion/web-renderer": "4.0.433",
|
|
34
|
+
"@remotion/studio-shared": "4.0.433",
|
|
35
|
+
"@remotion/zod-types": "4.0.433",
|
|
36
|
+
"mediabunny": "1.37.0",
|
|
37
37
|
"memfs": "3.4.3",
|
|
38
38
|
"source-map": "0.7.3",
|
|
39
39
|
"open": "^8.4.2",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"react": "19.2.3",
|
|
44
44
|
"react-dom": "19.2.3",
|
|
45
45
|
"@types/semver": "^7.3.4",
|
|
46
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
46
|
+
"@remotion/eslint-config-internal": "4.0.433",
|
|
47
47
|
"eslint": "9.19.0",
|
|
48
48
|
"@typescript/native-preview": "7.0.0-dev.20260217.1"
|
|
49
49
|
},
|