@remotion/studio 4.0.521 → 4.0.522
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/components/CanvasIfSizeIsAvailable.js +7 -0
- package/dist/components/CopyButton.js +7 -14
- package/dist/components/Editor.js +6 -5
- package/dist/components/EditorContent.js +1 -1
- package/dist/components/ElementInstallConfirmation.js +3 -1
- package/dist/components/FixComputedValueModal.js +20 -10
- package/dist/components/InspectorLocationCopy.js +10 -5
- package/dist/components/MenuBuildIndicator.js +7 -2
- package/dist/components/MenuCompositionName.js +62 -6
- package/dist/components/RenderModal/CliCopyButton.js +13 -27
- package/dist/components/RenderQueue/RenderQueueCopyToClipboard.js +7 -4
- package/dist/components/SidebarCollapserControls.js +11 -5
- package/dist/components/SkillsSettings.js +9 -5
- package/dist/components/Splitter/SplitterContainer.js +63 -10
- package/dist/components/Splitter/SplitterContext.d.ts +3 -0
- package/dist/components/Splitter/SplitterContext.js +5 -1
- package/dist/components/Splitter/SplitterElement.js +11 -2
- package/dist/components/Splitter/SplitterHandle.d.ts +1 -0
- package/dist/components/Splitter/SplitterHandle.js +55 -25
- package/dist/components/Timeline/SubscribeToNodePaths.d.ts +2 -1
- package/dist/components/Timeline/SubscribeToNodePaths.js +2 -1
- package/dist/components/Timeline/Timeline.js +15 -4
- package/dist/components/Timeline/TimelineDragHandler.js +9 -4
- package/dist/components/Timeline/TimelinePinchZoom.js +6 -30
- package/dist/components/Timeline/TimelinePlayCursorSyncer.js +1 -7
- package/dist/components/Timeline/TimelineSequence.js +77 -12
- package/dist/components/Timeline/TimelineSequenceItem.js +12 -1
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +13 -3
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +168 -121
- package/dist/components/Timeline/TimelineSlider.js +1 -4
- package/dist/components/Timeline/TimelineWidthProvider.js +2 -5
- package/dist/components/Timeline/TimelineZoomControls.js +20 -20
- package/dist/components/Timeline/get-sequence-split-menu-item.d.ts +11 -0
- package/dist/components/Timeline/get-sequence-split-menu-item.js +55 -0
- package/dist/components/Timeline/use-sequence-props-subscription.d.ts +3 -2
- package/dist/components/Timeline/use-sequence-props-subscription.js +4 -10
- package/dist/components/TopPanel.js +3 -19
- package/dist/components/UpdatesSettings.js +9 -5
- package/dist/components/ZoomPersistor.js +6 -3
- package/dist/components/composition-menu-items.js +1 -1
- package/dist/esm/{chunk-emw4k5b0.js → chunk-3netyjd9.js} +4917 -4651
- package/dist/esm/internals.mjs +4917 -4651
- package/dist/esm/previewEntry.mjs +4895 -4629
- package/dist/esm/renderEntry.mjs +1 -1
- package/dist/helpers/copy-text.js +1 -2
- package/dist/helpers/use-copy-feedback.d.ts +4 -0
- package/dist/helpers/use-copy-feedback.js +19 -0
- package/dist/icons/copy.d.ts +5 -0
- package/dist/icons/copy.js +12 -0
- package/dist/state/canvas-ref.d.ts +1 -0
- package/dist/state/canvas-ref.js +2 -1
- package/dist/state/sidebar.d.ts +3 -0
- package/dist/state/sidebar.js +6 -1
- package/dist/state/timeline-zoom.d.ts +1 -1
- package/dist/state/timeline-zoom.js +3 -3
- package/dist/visual-controls/VisualControls.js +4 -0
- package/package.json +15 -15
- package/dist/esm/chunk-vkrvnx2h.js +0 -99378
- package/dist/helpers/use-max-media-duration.d.ts +0 -2
- package/dist/helpers/use-max-media-duration.js +0 -61
package/dist/esm/renderEntry.mjs
CHANGED
|
@@ -215,7 +215,7 @@ var renderContent = (Root) => {
|
|
|
215
215
|
renderToDOM(/* @__PURE__ */ jsx("div", {
|
|
216
216
|
children: /* @__PURE__ */ jsx(DelayedSpinner, {})
|
|
217
217
|
}));
|
|
218
|
-
import("./chunk-
|
|
218
|
+
import("./chunk-3netyjd9.js").then(({ StudioInternals }) => {
|
|
219
219
|
window.remotion_isStudio = true;
|
|
220
220
|
window.remotion_isReadOnlyStudio = true;
|
|
221
221
|
window.remotion_inputProps = "{}";
|
|
@@ -8,8 +8,7 @@ const copyText = (cmd) => {
|
|
|
8
8
|
.query({ name: permissionName })
|
|
9
9
|
.then((result) => {
|
|
10
10
|
if (result.state === 'granted' || result.state === 'prompt') {
|
|
11
|
-
navigator.clipboard.writeText(cmd);
|
|
12
|
-
resolve();
|
|
11
|
+
navigator.clipboard.writeText(cmd).then(resolve).catch(reject);
|
|
13
12
|
}
|
|
14
13
|
else {
|
|
15
14
|
reject(new Error('Permission to copy not granted'));
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useCopyFeedback = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const useCopyFeedback = () => {
|
|
6
|
+
const [copyCount, setCopyCount] = (0, react_1.useState)(0);
|
|
7
|
+
(0, react_1.useEffect)(() => {
|
|
8
|
+
if (copyCount === 0) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
const timeout = setTimeout(() => setCopyCount(0), 2000);
|
|
12
|
+
return () => clearTimeout(timeout);
|
|
13
|
+
}, [copyCount]);
|
|
14
|
+
const markCopied = (0, react_1.useCallback)(() => {
|
|
15
|
+
setCopyCount((currentCopyCount) => currentCopyCount + 1);
|
|
16
|
+
}, []);
|
|
17
|
+
return { copied: copyCount > 0, markCopied };
|
|
18
|
+
};
|
|
19
|
+
exports.useCopyFeedback = useCopyFeedback;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CopyIcon = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const clipboard_1 = require("./clipboard");
|
|
6
|
+
const CopyIcon = ({ copied, color, style, ...props }) => {
|
|
7
|
+
if (copied) {
|
|
8
|
+
return (jsx_runtime_1.jsx("svg", { viewBox: "0 0 512 512", style: style, ...props, children: jsx_runtime_1.jsx("path", { fill: color, d: "M435.848 83.466L172.804 346.51l-96.652-96.652c-4.686-4.686-12.284-4.686-16.971 0l-28.284 28.284c-4.686 4.686-4.686 12.284 0 16.971l133.421 133.421c4.686 4.686 12.284 4.686 16.971 0l299.813-299.813c4.686-4.686 4.686-12.284 0-16.971l-28.284-28.284c-4.686-4.686-12.284-4.686-16.97 0z" }) }));
|
|
9
|
+
}
|
|
10
|
+
return jsx_runtime_1.jsx(clipboard_1.ClipboardIcon, { color: color, style: style, ...props });
|
|
11
|
+
};
|
|
12
|
+
exports.CopyIcon = CopyIcon;
|
package/dist/state/canvas-ref.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.drawRef = exports.canvasRef = void 0;
|
|
3
|
+
exports.RefreshCanvasSizeContext = exports.drawRef = exports.canvasRef = void 0;
|
|
4
4
|
const react_1 = require("react");
|
|
5
5
|
exports.canvasRef = (0, react_1.createRef)();
|
|
6
6
|
exports.drawRef = (0, react_1.createRef)();
|
|
7
|
+
exports.RefreshCanvasSizeContext = (0, react_1.createContext)(null);
|
package/dist/state/sidebar.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ import React from 'react';
|
|
|
2
2
|
export type SidebarCollapsedState = 'collapsed' | 'expanded' | 'responsive';
|
|
3
3
|
type RightSidebarCollapsedState = Exclude<SidebarCollapsedState, 'responsive'>;
|
|
4
4
|
type Context = {
|
|
5
|
+
sidebarCollapsedDuringDrag: Sidebars | null;
|
|
6
|
+
setSidebarCollapsedDuringDrag: (side: Sidebars | null) => void;
|
|
5
7
|
sidebarCollapsedStateLeft: SidebarCollapsedState;
|
|
6
8
|
setSidebarCollapsedState: (options: {
|
|
7
9
|
left: null | React.SetStateAction<SidebarCollapsedState>;
|
|
@@ -9,6 +11,7 @@ type Context = {
|
|
|
9
11
|
}) => void;
|
|
10
12
|
sidebarCollapsedStateRight: RightSidebarCollapsedState;
|
|
11
13
|
};
|
|
14
|
+
type Sidebars = 'left' | 'right';
|
|
12
15
|
export declare const SidebarContext: React.Context<Context>;
|
|
13
16
|
export declare const SidebarContextProvider: React.FC<{
|
|
14
17
|
readonly children: React.ReactNode;
|
package/dist/state/sidebar.js
CHANGED
|
@@ -37,6 +37,8 @@ const saveCollapsedState = (type, sidebar) => {
|
|
|
37
37
|
window.localStorage.setItem(storageKey(sidebar), type);
|
|
38
38
|
};
|
|
39
39
|
exports.SidebarContext = (0, react_1.createContext)({
|
|
40
|
+
sidebarCollapsedDuringDrag: null,
|
|
41
|
+
setSidebarCollapsedDuringDrag: () => undefined,
|
|
40
42
|
sidebarCollapsedStateLeft: 'collapsed',
|
|
41
43
|
setSidebarCollapsedState: () => {
|
|
42
44
|
throw new Error('sidebar collapsed state');
|
|
@@ -49,8 +51,11 @@ const SidebarContextProvider = ({ children }) => {
|
|
|
49
51
|
left: getSavedCollapsedStateLeft(isMobileLayout),
|
|
50
52
|
right: getSavedCollapsedStateRight(isMobileLayout),
|
|
51
53
|
}));
|
|
54
|
+
const [sidebarCollapsedDuringDrag, setSidebarCollapsedDuringDrag] = (0, react_1.useState)(null);
|
|
52
55
|
const value = (0, react_1.useMemo)(() => {
|
|
53
56
|
return {
|
|
57
|
+
sidebarCollapsedDuringDrag,
|
|
58
|
+
setSidebarCollapsedDuringDrag,
|
|
54
59
|
sidebarCollapsedStateLeft: sidebarCollapsedState.left,
|
|
55
60
|
sidebarCollapsedStateRight: sidebarCollapsedState.right,
|
|
56
61
|
setSidebarCollapsedState: (options) => {
|
|
@@ -71,7 +76,7 @@ const SidebarContextProvider = ({ children }) => {
|
|
|
71
76
|
});
|
|
72
77
|
},
|
|
73
78
|
};
|
|
74
|
-
}, [sidebarCollapsedState]);
|
|
79
|
+
}, [sidebarCollapsedState, sidebarCollapsedDuringDrag]);
|
|
75
80
|
return (jsx_runtime_1.jsx(exports.SidebarContext.Provider, { value: value, children: children }));
|
|
76
81
|
};
|
|
77
82
|
exports.SidebarContextProvider = SidebarContextProvider;
|
|
@@ -5,7 +5,7 @@ export type TimelineSetZoomOptions = {
|
|
|
5
5
|
};
|
|
6
6
|
export declare const TimelineZoomCtx: React.Context<{
|
|
7
7
|
zoom: Record<string, number>;
|
|
8
|
-
setZoom: (
|
|
8
|
+
setZoom: (videoId: string, prev: (prevZoom: number) => number, options?: TimelineSetZoomOptions | undefined) => void;
|
|
9
9
|
}>;
|
|
10
10
|
export declare const TimelineZoomContext: React.FC<{
|
|
11
11
|
readonly children: React.ReactNode;
|
|
@@ -17,7 +17,7 @@ exports.TimelineZoomCtx = (0, react_1.createContext)({
|
|
|
17
17
|
});
|
|
18
18
|
const TimelineZoomContext = ({ children }) => {
|
|
19
19
|
const [zoom, setZoomState] = (0, react_1.useState)(() => (0, ZoomPersistor_1.getZoomFromLocalStorage)());
|
|
20
|
-
const setZoom = (0, react_1.useCallback)((
|
|
20
|
+
const setZoom = (0, react_1.useCallback)((videoId, callback, options) => {
|
|
21
21
|
var _a, _b;
|
|
22
22
|
// Capture the old geometry before committing the new timeline width.
|
|
23
23
|
const preserveTimelineCursor = (0, timeline_scroll_logic_1.prepareToPreserveTimelineCursor)({
|
|
@@ -35,14 +35,14 @@ const TimelineZoomContext = ({ children }) => {
|
|
|
35
35
|
const previousZoom = (0, get_timeline_max_zoom_1.getTimelineZoom)({
|
|
36
36
|
durationInFrames,
|
|
37
37
|
timelineViewportWidth,
|
|
38
|
-
zoom: (_c = prevZoomMap[
|
|
38
|
+
zoom: (_c = prevZoomMap[videoId]) !== null && _c !== void 0 ? _c : null,
|
|
39
39
|
});
|
|
40
40
|
const newZoom = (0, get_timeline_max_zoom_1.clampTimelineZoom)({
|
|
41
41
|
zoom: callback(previousZoom),
|
|
42
42
|
durationInFrames,
|
|
43
43
|
timelineViewportWidth,
|
|
44
44
|
});
|
|
45
|
-
return { ...prevZoomMap, [
|
|
45
|
+
return { ...prevZoomMap, [videoId]: newZoom };
|
|
46
46
|
});
|
|
47
47
|
});
|
|
48
48
|
// The new scroll range exists now, so the browser will not clamp the offset
|
|
@@ -107,6 +107,10 @@ const VisualControlsProvider = ({ children }) => {
|
|
|
107
107
|
globalVisualControl: visualControl,
|
|
108
108
|
};
|
|
109
109
|
}, [visualControl]);
|
|
110
|
+
(0, react_1.useEffect)(() => {
|
|
111
|
+
// Controls may have rendered before the imperative API or Zod was ready.
|
|
112
|
+
visual_control_store_1.visualControlStore.emitChange();
|
|
113
|
+
}, [visualControl]);
|
|
110
114
|
(0, react_1.useEffect)(() => {
|
|
111
115
|
const callback = () => {
|
|
112
116
|
if (imperativeHandles.current) {
|
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.522",
|
|
7
7
|
"description": "APIs for interacting with the Remotion Studio",
|
|
8
8
|
"main": "dist",
|
|
9
9
|
"scripts": {
|
|
@@ -25,20 +25,20 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@tanstack/react-virtual": "3.14.9",
|
|
28
|
-
"@remotion/canvas": "4.0.
|
|
29
|
-
"@remotion/studio-protocol": "4.0.
|
|
30
|
-
"@remotion/studio-codemods": "4.0.
|
|
28
|
+
"@remotion/canvas": "4.0.522",
|
|
29
|
+
"@remotion/studio-protocol": "4.0.522",
|
|
30
|
+
"@remotion/studio-codemods": "4.0.522",
|
|
31
31
|
"semver": "7.5.3",
|
|
32
|
-
"remotion": "4.0.
|
|
33
|
-
"@remotion/captions": "4.0.
|
|
34
|
-
"@remotion/media": "4.0.
|
|
35
|
-
"@remotion/player": "4.0.
|
|
36
|
-
"@remotion/media-utils": "4.0.
|
|
37
|
-
"@remotion/renderer": "4.0.
|
|
38
|
-
"@remotion/web-renderer": "4.0.
|
|
39
|
-
"@remotion/studio-shared": "4.0.
|
|
40
|
-
"@remotion/timeline-utils": "4.0.
|
|
41
|
-
"@remotion/zod-types": "4.0.
|
|
32
|
+
"remotion": "4.0.522",
|
|
33
|
+
"@remotion/captions": "4.0.522",
|
|
34
|
+
"@remotion/media": "4.0.522",
|
|
35
|
+
"@remotion/player": "4.0.522",
|
|
36
|
+
"@remotion/media-utils": "4.0.522",
|
|
37
|
+
"@remotion/renderer": "4.0.522",
|
|
38
|
+
"@remotion/web-renderer": "4.0.522",
|
|
39
|
+
"@remotion/studio-shared": "4.0.522",
|
|
40
|
+
"@remotion/timeline-utils": "4.0.522",
|
|
41
|
+
"@remotion/zod-types": "4.0.522",
|
|
42
42
|
"@jridgewell/trace-mapping": "0.3.31",
|
|
43
43
|
"mediabunny": "1.55.5",
|
|
44
44
|
"memfs": "3.4.3",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"react-dom": "19.2.3",
|
|
52
52
|
"@testing-library/react": "16.1.0",
|
|
53
53
|
"@types/semver": "7.5.3",
|
|
54
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
54
|
+
"@remotion/eslint-config-internal": "4.0.522",
|
|
55
55
|
"eslint": "9.19.0",
|
|
56
56
|
"@typescript/native-preview": "7.0.0-dev.20260217.1"
|
|
57
57
|
},
|