@remotion/cli 4.0.42 → 4.0.44
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/editor/components/AssetSelector.js +19 -3
- package/dist/editor/components/AssetSelectorItem.d.ts +6 -4
- package/dist/editor/components/AssetSelectorItem.js +48 -23
- package/dist/editor/components/Canvas.d.ts +4 -1
- package/dist/editor/components/Canvas.js +72 -30
- package/dist/editor/components/CanvasOrLoading.js +9 -1
- package/dist/editor/components/CheckboardToggle.js +5 -0
- package/dist/editor/components/CompositionSelector.js +8 -6
- package/dist/editor/components/CompositionSelectorItem.d.ts +1 -1
- package/dist/editor/components/CopyButton.js +1 -1
- package/dist/editor/components/CurrentCompositionSideEffects.js +11 -4
- package/dist/editor/components/EditorContent.js +4 -1
- package/dist/editor/components/ExplorerPanel.js +0 -13
- package/dist/editor/components/FilePreview.d.ts +8 -0
- package/dist/editor/components/FilePreview.js +33 -0
- package/dist/editor/components/FramePersistor.d.ts +0 -1
- package/dist/editor/components/FramePersistor.js +1 -5
- package/dist/editor/components/InitialCompositionLoader.js +61 -18
- package/dist/editor/components/JSONViewer.d.ts +4 -0
- package/dist/editor/components/JSONViewer.js +26 -0
- package/dist/editor/components/KnownBugs.js +5 -1
- package/dist/editor/components/LoopToggle.js +3 -1
- package/dist/editor/components/Modals.js +1 -1
- package/dist/editor/components/MuteToggle.js +3 -1
- package/dist/editor/components/OptionsPanel.js +7 -7
- package/dist/editor/components/PlayPause.js +2 -1
- package/dist/editor/components/PlaybackRateSelector.js +3 -1
- package/dist/editor/components/Preview.d.ts +7 -0
- package/dist/editor/components/Preview.js +156 -30
- package/dist/editor/components/RenderPreview.d.ts +4 -0
- package/dist/editor/components/RenderPreview.js +30 -0
- package/dist/editor/components/RenderQueue/index.js +40 -2
- package/dist/editor/components/RendersTab.js +9 -1
- package/dist/editor/components/SizeSelector.js +15 -0
- package/dist/editor/components/StaticFilePreview.d.ts +4 -0
- package/dist/editor/components/StaticFilePreview.js +47 -0
- package/dist/editor/components/TextViewer.d.ts +4 -0
- package/dist/editor/components/TextViewer.js +26 -0
- package/dist/editor/components/Timeline/TimelineZoomControls.js +3 -1
- package/dist/editor/components/TimelineInOutToggle.js +2 -1
- package/dist/editor/components/UpdateCheck.d.ts +6 -0
- package/dist/editor/components/UpdateCheck.js +36 -5
- package/dist/editor/components/UpdateModal/UpdateModal.d.ts +2 -1
- package/dist/editor/components/UpdateModal/UpdateModal.js +27 -11
- package/dist/editor/components/ZoomPersistor.d.ts +2 -0
- package/dist/editor/components/ZoomPersistor.js +29 -7
- package/dist/editor/helpers/create-folder-tree.d.ts +4 -3
- package/dist/editor/helpers/create-folder-tree.js +6 -3
- package/dist/editor/helpers/document-title.d.ts +1 -1
- package/dist/editor/helpers/document-title.js +14 -8
- package/dist/editor/helpers/is-current-selected-still.d.ts +3 -3
- package/dist/editor/helpers/is-current-selected-still.js +1 -15
- package/dist/editor/helpers/persist-open-folders.d.ts +4 -2
- package/dist/editor/helpers/persist-open-folders.js +7 -5
- package/dist/editor/state/folders.d.ts +4 -2
- package/dist/editor/state/folders.js +13 -6
- package/dist/editor/state/modals.d.ts +2 -1
- package/dist/index.js +10 -1
- package/package.json +8 -8
|
@@ -30,6 +30,8 @@ const remotion_1 = require("remotion");
|
|
|
30
30
|
const event_source_1 = require("../../event-source");
|
|
31
31
|
const colors_1 = require("../helpers/colors");
|
|
32
32
|
const create_folder_tree_1 = require("../helpers/create-folder-tree");
|
|
33
|
+
const persist_open_folders_1 = require("../helpers/persist-open-folders");
|
|
34
|
+
const folders_1 = require("../state/folders");
|
|
33
35
|
const z_index_1 = require("../state/z-index");
|
|
34
36
|
const AssetSelectorItem_1 = require("./AssetSelectorItem");
|
|
35
37
|
const styles_1 = require("./Menu/styles");
|
|
@@ -60,6 +62,7 @@ const list = {
|
|
|
60
62
|
};
|
|
61
63
|
const AssetSelector = () => {
|
|
62
64
|
const { tabIndex } = (0, z_index_1.useZIndex)();
|
|
65
|
+
const { assetFoldersExpanded, setAssetFoldersExpanded } = (0, react_1.useContext)(folders_1.FolderContext);
|
|
63
66
|
const [{ publicFolderExists, staticFiles }, setState] = react_1.default.useState(() => {
|
|
64
67
|
return {
|
|
65
68
|
staticFiles: (0, remotion_1.getStaticFiles)(),
|
|
@@ -67,8 +70,8 @@ const AssetSelector = () => {
|
|
|
67
70
|
};
|
|
68
71
|
});
|
|
69
72
|
const assetTree = (0, react_1.useMemo)(() => {
|
|
70
|
-
return (0, create_folder_tree_1.buildAssetFolderStructure)(staticFiles);
|
|
71
|
-
}, [staticFiles]);
|
|
73
|
+
return (0, create_folder_tree_1.buildAssetFolderStructure)(staticFiles, null, assetFoldersExpanded);
|
|
74
|
+
}, [assetFoldersExpanded, staticFiles]);
|
|
72
75
|
(0, react_1.useEffect)(() => {
|
|
73
76
|
const onUpdate = () => {
|
|
74
77
|
setState({
|
|
@@ -81,6 +84,19 @@ const AssetSelector = () => {
|
|
|
81
84
|
unsub();
|
|
82
85
|
};
|
|
83
86
|
}, []);
|
|
84
|
-
|
|
87
|
+
const toggleFolder = (0, react_1.useCallback)((folderName, parentName) => {
|
|
88
|
+
setAssetFoldersExpanded((p) => {
|
|
89
|
+
var _a;
|
|
90
|
+
const key = [parentName, folderName].filter(Boolean).join('/');
|
|
91
|
+
const prev = (_a = p[key]) !== null && _a !== void 0 ? _a : false;
|
|
92
|
+
const foldersExpandedState = {
|
|
93
|
+
...p,
|
|
94
|
+
[key]: !prev,
|
|
95
|
+
};
|
|
96
|
+
(0, persist_open_folders_1.persistExpandedFolders)('assets', foldersExpandedState);
|
|
97
|
+
return foldersExpandedState;
|
|
98
|
+
});
|
|
99
|
+
}, [setAssetFoldersExpanded]);
|
|
100
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: container, children: staticFiles.length === 0 ? (publicFolderExists ? ((0, jsx_runtime_1.jsx)("div", { style: emptyState, children: (0, jsx_runtime_1.jsxs)("div", { style: label, children: ["To add assets, place a file in the", ' ', (0, jsx_runtime_1.jsx)("code", { style: styles_1.inlineCodeSnippet, children: "public" }), " folder of your project."] }) })) : ((0, jsx_runtime_1.jsx)("div", { style: emptyState, children: (0, jsx_runtime_1.jsxs)("div", { style: label, children: ["To add assets, create a folder called", ' ', (0, jsx_runtime_1.jsx)("code", { style: styles_1.inlineCodeSnippet, children: "public" }), " in the root of your project and place a file in it."] }) }))) : ((0, jsx_runtime_1.jsx)("div", { className: "__remotion-vertical-scrollbar", style: list, children: (0, jsx_runtime_1.jsx)(AssetSelectorItem_1.AssetFolderTree, { item: assetTree, level: 0, parentFolder: null, name: null, tabIndex: tabIndex, toggleFolder: toggleFolder }) })) }));
|
|
85
101
|
};
|
|
86
102
|
exports.AssetSelector = AssetSelector;
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type
|
|
3
|
-
import type { AssetFolder,
|
|
2
|
+
import { type StaticFile } from 'remotion';
|
|
3
|
+
import type { AssetFolder, AssetStructure } from '../helpers/create-folder-tree';
|
|
4
4
|
export declare const AssetFolderItem: React.FC<{
|
|
5
5
|
item: AssetFolder;
|
|
6
6
|
tabIndex: number;
|
|
7
7
|
level: number;
|
|
8
8
|
parentFolder: string;
|
|
9
|
+
toggleFolder: (folderName: string, parentName: string | null) => void;
|
|
9
10
|
}>;
|
|
10
|
-
export declare const
|
|
11
|
-
item:
|
|
11
|
+
export declare const AssetFolderTree: React.FC<{
|
|
12
|
+
item: AssetStructure;
|
|
12
13
|
name: string | null;
|
|
13
14
|
parentFolder: string | null;
|
|
14
15
|
level: number;
|
|
15
16
|
tabIndex: number;
|
|
17
|
+
toggleFolder: (folderName: string, parentName: string | null) => void;
|
|
16
18
|
}>;
|
|
17
19
|
export declare const AssetSelectorItem: React.FC<{
|
|
18
20
|
item: StaticFile | AssetFolder;
|
|
@@ -23,9 +23,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.AssetSelectorItem = exports.
|
|
26
|
+
exports.AssetSelectorItem = exports.AssetFolderTree = exports.AssetFolderItem = void 0;
|
|
27
27
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
28
28
|
const react_1 = __importStar(require("react"));
|
|
29
|
+
const remotion_1 = require("remotion");
|
|
29
30
|
const truthy_1 = require("../../truthy");
|
|
30
31
|
const colors_1 = require("../helpers/colors");
|
|
31
32
|
const copy_text_1 = require("../helpers/copy-text");
|
|
@@ -58,6 +59,7 @@ const itemStyle = {
|
|
|
58
59
|
textAlign: 'left',
|
|
59
60
|
backgroundColor: colors_1.BACKGROUND,
|
|
60
61
|
height: ASSET_ITEM_HEIGHT,
|
|
62
|
+
userSelect: 'none',
|
|
61
63
|
};
|
|
62
64
|
const labelStyle = {
|
|
63
65
|
textAlign: 'left',
|
|
@@ -72,9 +74,8 @@ const revealIconStyle = {
|
|
|
72
74
|
height: 12,
|
|
73
75
|
color: 'currentColor',
|
|
74
76
|
};
|
|
75
|
-
const AssetFolderItem = ({ tabIndex, item, level, parentFolder }) => {
|
|
77
|
+
const AssetFolderItem = ({ tabIndex, item, level, parentFolder, toggleFolder }) => {
|
|
76
78
|
const [hovered, setHovered] = (0, react_1.useState)(false);
|
|
77
|
-
const [expanded, setExpanded] = (0, react_1.useState)(false);
|
|
78
79
|
const onPointerEnter = (0, react_1.useCallback)(() => {
|
|
79
80
|
setHovered(true);
|
|
80
81
|
}, []);
|
|
@@ -91,56 +92,78 @@ const AssetFolderItem = ({ tabIndex, item, level, parentFolder }) => {
|
|
|
91
92
|
const label = (0, react_1.useMemo)(() => {
|
|
92
93
|
return {
|
|
93
94
|
...labelStyle,
|
|
94
|
-
color: colors_1.LIGHT_TEXT,
|
|
95
|
+
color: hovered ? 'white' : colors_1.LIGHT_TEXT,
|
|
95
96
|
};
|
|
96
|
-
}, []);
|
|
97
|
+
}, [hovered]);
|
|
97
98
|
const onClick = (0, react_1.useCallback)(() => {
|
|
98
|
-
|
|
99
|
-
}, []);
|
|
100
|
-
const Icon = expanded ? folder_1.ExpandedFolderIcon : folder_1.CollapsedFolderIcon;
|
|
101
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { style: folderStyle, onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, tabIndex: tabIndex, title: item.name, onClick: onClick, children: (0, jsx_runtime_1.jsxs)(layout_1.Row, { children: [(0, jsx_runtime_1.jsx)(Icon, { style: iconStyle, color: colors_1.LIGHT_TEXT }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 1 }), (0, jsx_runtime_1.jsx)("div", { style: label, children: item.name })] }) }), expanded ? ((0, jsx_runtime_1.jsx)(exports.
|
|
99
|
+
toggleFolder(item.name, parentFolder);
|
|
100
|
+
}, [item.name, parentFolder, toggleFolder]);
|
|
101
|
+
const Icon = item.expanded ? folder_1.ExpandedFolderIcon : folder_1.CollapsedFolderIcon;
|
|
102
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { style: folderStyle, onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, tabIndex: tabIndex, title: item.name, onClick: onClick, children: (0, jsx_runtime_1.jsxs)(layout_1.Row, { children: [(0, jsx_runtime_1.jsx)(Icon, { style: iconStyle, color: hovered ? 'white' : colors_1.LIGHT_TEXT }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 1 }), (0, jsx_runtime_1.jsx)("div", { style: label, children: item.name })] }) }), item.expanded ? ((0, jsx_runtime_1.jsx)(exports.AssetFolderTree, { item: item.items, name: item.name, level: level, parentFolder: parentFolder, tabIndex: tabIndex, toggleFolder: toggleFolder }, item.name)) : null] }));
|
|
102
103
|
};
|
|
103
104
|
exports.AssetFolderItem = AssetFolderItem;
|
|
104
|
-
const
|
|
105
|
+
const AssetFolderTree = ({ item, level, name, parentFolder, toggleFolder, tabIndex }) => {
|
|
105
106
|
const combinedParents = (0, react_1.useMemo)(() => {
|
|
106
107
|
return [parentFolder, name].filter(truthy_1.truthy).join('/');
|
|
107
108
|
}, [name, parentFolder]);
|
|
108
109
|
return ((0, jsx_runtime_1.jsxs)("div", { children: [item.folders.map((folder) => {
|
|
109
|
-
return ((0, jsx_runtime_1.jsx)(exports.AssetFolderItem, { item: folder, tabIndex: tabIndex, level: level + 1, parentFolder: combinedParents }, folder.name));
|
|
110
|
+
return ((0, jsx_runtime_1.jsx)(exports.AssetFolderItem, { item: folder, tabIndex: tabIndex, level: level + 1, parentFolder: combinedParents, toggleFolder: toggleFolder }, folder.name));
|
|
110
111
|
}), item.files.map((file) => {
|
|
111
112
|
return ((0, jsx_runtime_1.jsx)(exports.AssetSelectorItem, { item: file, tabIndex: tabIndex, level: level, parentFolder: combinedParents }, file.src));
|
|
112
113
|
})] }));
|
|
113
114
|
};
|
|
114
|
-
exports.
|
|
115
|
+
exports.AssetFolderTree = AssetFolderTree;
|
|
115
116
|
const AssetSelectorItem = ({ item, tabIndex, level, parentFolder }) => {
|
|
116
117
|
const [hovered, setHovered] = (0, react_1.useState)(false);
|
|
117
118
|
const onPointerEnter = (0, react_1.useCallback)(() => {
|
|
118
119
|
setHovered(true);
|
|
119
120
|
}, []);
|
|
121
|
+
const { canvasContent, setCanvasContent } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
|
|
122
|
+
const selected = (0, react_1.useMemo)(() => {
|
|
123
|
+
if (canvasContent && canvasContent.type === 'asset') {
|
|
124
|
+
const nameWOParent = canvasContent.asset.split('/').pop();
|
|
125
|
+
return nameWOParent === item.name;
|
|
126
|
+
}
|
|
127
|
+
return false;
|
|
128
|
+
}, [canvasContent, item.name]);
|
|
120
129
|
const onPointerLeave = (0, react_1.useCallback)(() => {
|
|
121
130
|
setHovered(false);
|
|
122
131
|
}, []);
|
|
132
|
+
const onClick = (0, react_1.useCallback)(() => {
|
|
133
|
+
const relativePath = parentFolder
|
|
134
|
+
? parentFolder + '/' + item.name
|
|
135
|
+
: item.name;
|
|
136
|
+
setCanvasContent({ type: 'asset', asset: relativePath });
|
|
137
|
+
window.history.pushState({}, 'Studio', `/assets/${relativePath}`);
|
|
138
|
+
}, [item.name, parentFolder, setCanvasContent]);
|
|
123
139
|
const style = (0, react_1.useMemo)(() => {
|
|
124
140
|
return {
|
|
125
141
|
...itemStyle,
|
|
126
|
-
color: colors_1.LIGHT_TEXT,
|
|
127
|
-
backgroundColor: hovered
|
|
142
|
+
color: hovered || selected ? 'white' : colors_1.LIGHT_TEXT,
|
|
143
|
+
backgroundColor: hovered
|
|
144
|
+
? selected
|
|
145
|
+
? colors_1.SELECTED_BACKGROUND
|
|
146
|
+
: colors_1.CLEAR_HOVER
|
|
147
|
+
: selected
|
|
148
|
+
? colors_1.SELECTED_BACKGROUND
|
|
149
|
+
: 'transparent',
|
|
128
150
|
paddingLeft: 12 + level * 8,
|
|
129
151
|
};
|
|
130
|
-
}, [hovered, level]);
|
|
152
|
+
}, [hovered, level, selected]);
|
|
131
153
|
const label = (0, react_1.useMemo)(() => {
|
|
132
154
|
return {
|
|
133
155
|
...labelStyle,
|
|
134
|
-
color: colors_1.LIGHT_TEXT,
|
|
156
|
+
color: hovered || selected ? 'white' : colors_1.LIGHT_TEXT,
|
|
135
157
|
};
|
|
136
|
-
}, []);
|
|
158
|
+
}, [hovered, selected]);
|
|
137
159
|
const renderFileExplorerAction = (0, react_1.useCallback)((color) => {
|
|
138
160
|
return (0, jsx_runtime_1.jsx)(folder_1.ExpandedFolderIcon, { style: revealIconStyle, color: color });
|
|
139
161
|
}, []);
|
|
140
162
|
const renderCopyAction = (0, react_1.useCallback)((color) => {
|
|
141
163
|
return (0, jsx_runtime_1.jsx)(clipboard_1.ClipboardIcon, { style: revealIconStyle, color: color });
|
|
142
164
|
}, []);
|
|
143
|
-
const revealInExplorer = react_1.default.useCallback(() => {
|
|
165
|
+
const revealInExplorer = react_1.default.useCallback((e) => {
|
|
166
|
+
e.stopPropagation();
|
|
144
167
|
(0, actions_1.openInFileExplorer)({
|
|
145
168
|
directory: window.remotion_publicFolderExists +
|
|
146
169
|
'/' +
|
|
@@ -151,12 +174,14 @@ const AssetSelectorItem = ({ item, tabIndex, level, parentFolder }) => {
|
|
|
151
174
|
(0, NotificationCenter_1.sendErrorNotification)(`Could not open file: ${err.message}`);
|
|
152
175
|
});
|
|
153
176
|
}, [item.name, parentFolder]);
|
|
154
|
-
const copyToClipboard = (0, react_1.useCallback)(() => {
|
|
155
|
-
|
|
177
|
+
const copyToClipboard = (0, react_1.useCallback)((e) => {
|
|
178
|
+
e.stopPropagation();
|
|
179
|
+
const content = `staticFile("${[parentFolder, item.name].join('/')}")`;
|
|
180
|
+
(0, copy_text_1.copyText)(content)
|
|
156
181
|
.then(() => {
|
|
157
182
|
var _a;
|
|
158
183
|
(_a = NotificationCenter_1.notificationCenter.current) === null || _a === void 0 ? void 0 : _a.addNotification({
|
|
159
|
-
content: `Copied '
|
|
184
|
+
content: `Copied '${content}' to clipboard`,
|
|
160
185
|
created: Date.now(),
|
|
161
186
|
duration: 1000,
|
|
162
187
|
id: String(Math.random()),
|
|
@@ -165,7 +190,7 @@ const AssetSelectorItem = ({ item, tabIndex, level, parentFolder }) => {
|
|
|
165
190
|
.catch((err) => {
|
|
166
191
|
(0, NotificationCenter_1.sendErrorNotification)(`Could not copy: ${err.message}`);
|
|
167
192
|
});
|
|
168
|
-
}, [item.name]);
|
|
169
|
-
return ((0, jsx_runtime_1.jsx)(layout_1.Row, { align: "center", children: (0, jsx_runtime_1.jsxs)("div", { style: style, onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, tabIndex: tabIndex, title: item.name, children: [(0, jsx_runtime_1.jsx)(file_1.FileIcon, { style: iconStyle, color: colors_1.LIGHT_TEXT }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 1 }), (0, jsx_runtime_1.jsx)("div", { style: label, children: item.name }), hovered ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 0.5 }), (0, jsx_runtime_1.jsx)(InlineAction_1.InlineAction, { title: "Copy staticFile() name", renderAction: renderCopyAction, onClick: copyToClipboard }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 0.5 }), (0, jsx_runtime_1.jsx)(InlineAction_1.InlineAction, { title: "Open in Explorer", renderAction: renderFileExplorerAction, onClick: revealInExplorer })] })) : null] }) }));
|
|
193
|
+
}, [item.name, parentFolder]);
|
|
194
|
+
return ((0, jsx_runtime_1.jsx)(layout_1.Row, { align: "center", children: (0, jsx_runtime_1.jsxs)("div", { style: style, onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, onClick: onClick, tabIndex: tabIndex, title: item.name, children: [(0, jsx_runtime_1.jsx)(file_1.FileIcon, { style: iconStyle, color: colors_1.LIGHT_TEXT }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 1 }), (0, jsx_runtime_1.jsx)("div", { style: label, children: item.name }), hovered ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 0.5 }), (0, jsx_runtime_1.jsx)(InlineAction_1.InlineAction, { title: "Copy staticFile() name", renderAction: renderCopyAction, onClick: copyToClipboard }), (0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 0.5 }), (0, jsx_runtime_1.jsx)(InlineAction_1.InlineAction, { title: "Open in Explorer", renderAction: renderFileExplorerAction, onClick: revealInExplorer })] })) : null] }) }));
|
|
170
195
|
};
|
|
171
196
|
exports.AssetSelectorItem = AssetSelectorItem;
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Canvas = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const media_utils_1 = require("@remotion/media-utils");
|
|
5
6
|
const player_1 = require("@remotion/player");
|
|
6
7
|
const react_1 = require("react");
|
|
8
|
+
const remotion_1 = require("remotion");
|
|
7
9
|
const smooth_zoom_1 = require("../../smooth-zoom");
|
|
8
10
|
const colors_1 = require("../helpers/colors");
|
|
9
11
|
const get_effective_translation_1 = require("../helpers/get-effective-translation");
|
|
10
|
-
const is_current_selected_still_1 = require("../helpers/is-current-selected-still");
|
|
11
12
|
const use_keybinding_1 = require("../helpers/use-keybinding");
|
|
12
13
|
const canvas_ref_1 = require("../state/canvas-ref");
|
|
13
14
|
const editor_zoom_gestures_1 = require("../state/editor-zoom-gestures");
|
|
@@ -28,11 +29,21 @@ const resetZoom = {
|
|
|
28
29
|
right: layout_1.SPACING_UNIT * 2,
|
|
29
30
|
};
|
|
30
31
|
const ZOOM_PX_FACTOR = 0.003;
|
|
31
|
-
const Canvas = () => {
|
|
32
|
-
const dimensions = (0, is_current_selected_still_1.useDimensions)();
|
|
32
|
+
const Canvas = ({ canvasContent }) => {
|
|
33
33
|
const { setSize, size: previewSize } = (0, react_1.useContext)(preview_size_1.PreviewSizeContext);
|
|
34
34
|
const { editorZoomGestures } = (0, react_1.useContext)(editor_zoom_gestures_1.EditorZoomGesturesContext);
|
|
35
35
|
const keybindings = (0, use_keybinding_1.useKeybinding)();
|
|
36
|
+
const config = remotion_1.Internals.useUnsafeVideoConfig();
|
|
37
|
+
const [assetResolution, setAssetResolution] = (0, react_1.useState)(null);
|
|
38
|
+
const contentDimensions = (0, react_1.useMemo)(() => {
|
|
39
|
+
if (canvasContent.type === 'asset') {
|
|
40
|
+
return assetResolution;
|
|
41
|
+
}
|
|
42
|
+
if (config) {
|
|
43
|
+
return { width: config.width, height: config.height };
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}, [assetResolution, config, canvasContent]);
|
|
36
47
|
const size = player_1.PlayerInternals.useElementSize(canvas_ref_1.canvasRef, {
|
|
37
48
|
triggerOnWindowResize: false,
|
|
38
49
|
shouldApplyCssTransforms: true,
|
|
@@ -45,7 +56,7 @@ const Canvas = () => {
|
|
|
45
56
|
if (!size) {
|
|
46
57
|
return;
|
|
47
58
|
}
|
|
48
|
-
if (!
|
|
59
|
+
if (!contentDimensions || contentDimensions === 'none') {
|
|
49
60
|
return;
|
|
50
61
|
}
|
|
51
62
|
const wantsToZoom = e.ctrlKey || e.metaKey;
|
|
@@ -56,8 +67,8 @@ const Canvas = () => {
|
|
|
56
67
|
setSize((prevSize) => {
|
|
57
68
|
const scale = player_1.PlayerInternals.calculateScale({
|
|
58
69
|
canvasSize: size,
|
|
59
|
-
compositionHeight:
|
|
60
|
-
compositionWidth:
|
|
70
|
+
compositionHeight: contentDimensions.height,
|
|
71
|
+
compositionWidth: contentDimensions.width,
|
|
61
72
|
previewSize: prevSize.size,
|
|
62
73
|
});
|
|
63
74
|
// Zoom in/out
|
|
@@ -70,18 +81,18 @@ const Canvas = () => {
|
|
|
70
81
|
size,
|
|
71
82
|
clientX: e.clientX,
|
|
72
83
|
clientY: e.clientY,
|
|
73
|
-
compositionWidth:
|
|
74
|
-
compositionHeight:
|
|
84
|
+
compositionWidth: contentDimensions.width,
|
|
85
|
+
compositionHeight: contentDimensions.height,
|
|
75
86
|
scale,
|
|
76
87
|
translation: prevSize.translation,
|
|
77
88
|
});
|
|
78
89
|
const zoomDifference = unsmoothened - oldSize;
|
|
79
|
-
const uvCoordinatesX = centerX /
|
|
80
|
-
const uvCoordinatesY = centerY /
|
|
81
|
-
const correctionLeft = -uvCoordinatesX * (zoomDifference *
|
|
82
|
-
(1 - uvCoordinatesX) * zoomDifference *
|
|
83
|
-
const correctionTop = -uvCoordinatesY * (zoomDifference *
|
|
84
|
-
(1 - uvCoordinatesY) * zoomDifference *
|
|
90
|
+
const uvCoordinatesX = centerX / contentDimensions.width;
|
|
91
|
+
const uvCoordinatesY = centerY / contentDimensions.height;
|
|
92
|
+
const correctionLeft = -uvCoordinatesX * (zoomDifference * contentDimensions.width) +
|
|
93
|
+
(1 - uvCoordinatesX) * zoomDifference * contentDimensions.width;
|
|
94
|
+
const correctionTop = -uvCoordinatesY * (zoomDifference * contentDimensions.height) +
|
|
95
|
+
(1 - uvCoordinatesY) * zoomDifference * contentDimensions.height;
|
|
85
96
|
return {
|
|
86
97
|
translation: (0, get_effective_translation_1.getEffectiveTranslation)({
|
|
87
98
|
translation: {
|
|
@@ -89,8 +100,8 @@ const Canvas = () => {
|
|
|
89
100
|
y: prevSize.translation.y - correctionTop / 2,
|
|
90
101
|
},
|
|
91
102
|
canvasSize: size,
|
|
92
|
-
compositionHeight:
|
|
93
|
-
compositionWidth:
|
|
103
|
+
compositionHeight: contentDimensions.height,
|
|
104
|
+
compositionWidth: contentDimensions.width,
|
|
94
105
|
scale,
|
|
95
106
|
}),
|
|
96
107
|
size: unsmoothened,
|
|
@@ -99,8 +110,8 @@ const Canvas = () => {
|
|
|
99
110
|
const effectiveTranslation = (0, get_effective_translation_1.getEffectiveTranslation)({
|
|
100
111
|
translation: prevSize.translation,
|
|
101
112
|
canvasSize: size,
|
|
102
|
-
compositionHeight:
|
|
103
|
-
compositionWidth:
|
|
113
|
+
compositionHeight: contentDimensions.height,
|
|
114
|
+
compositionWidth: contentDimensions.width,
|
|
104
115
|
scale,
|
|
105
116
|
});
|
|
106
117
|
// Pan
|
|
@@ -112,13 +123,13 @@ const Canvas = () => {
|
|
|
112
123
|
y: effectiveTranslation.y + e.deltaY,
|
|
113
124
|
},
|
|
114
125
|
canvasSize: size,
|
|
115
|
-
compositionHeight:
|
|
116
|
-
compositionWidth:
|
|
126
|
+
compositionHeight: contentDimensions.height,
|
|
127
|
+
compositionWidth: contentDimensions.width,
|
|
117
128
|
scale,
|
|
118
129
|
}),
|
|
119
130
|
};
|
|
120
131
|
});
|
|
121
|
-
}, [editorZoomGestures,
|
|
132
|
+
}, [editorZoomGestures, contentDimensions, isFit, setSize, size]);
|
|
122
133
|
(0, react_1.useEffect)(() => {
|
|
123
134
|
const { current } = canvas_ref_1.canvasRef;
|
|
124
135
|
if (!current) {
|
|
@@ -143,7 +154,7 @@ const Canvas = () => {
|
|
|
143
154
|
});
|
|
144
155
|
}, [setSize]);
|
|
145
156
|
const onZoomIn = (0, react_1.useCallback)(() => {
|
|
146
|
-
if (!
|
|
157
|
+
if (!contentDimensions || contentDimensions === 'none') {
|
|
147
158
|
return;
|
|
148
159
|
}
|
|
149
160
|
if (!size) {
|
|
@@ -152,8 +163,8 @@ const Canvas = () => {
|
|
|
152
163
|
setSize((prevSize) => {
|
|
153
164
|
const scale = player_1.PlayerInternals.calculateScale({
|
|
154
165
|
canvasSize: size,
|
|
155
|
-
compositionHeight:
|
|
156
|
-
compositionWidth:
|
|
166
|
+
compositionHeight: contentDimensions.height,
|
|
167
|
+
compositionWidth: contentDimensions.width,
|
|
157
168
|
previewSize: prevSize.size,
|
|
158
169
|
});
|
|
159
170
|
return {
|
|
@@ -164,9 +175,9 @@ const Canvas = () => {
|
|
|
164
175
|
size: Math.min(smooth_zoom_1.MAX_ZOOM, scale * 2),
|
|
165
176
|
};
|
|
166
177
|
});
|
|
167
|
-
}, [
|
|
178
|
+
}, [contentDimensions, setSize, size]);
|
|
168
179
|
const onZoomOut = (0, react_1.useCallback)(() => {
|
|
169
|
-
if (!
|
|
180
|
+
if (!contentDimensions || contentDimensions === 'none') {
|
|
170
181
|
return;
|
|
171
182
|
}
|
|
172
183
|
if (!size) {
|
|
@@ -175,8 +186,8 @@ const Canvas = () => {
|
|
|
175
186
|
setSize((prevSize) => {
|
|
176
187
|
const scale = player_1.PlayerInternals.calculateScale({
|
|
177
188
|
canvasSize: size,
|
|
178
|
-
compositionHeight:
|
|
179
|
-
compositionWidth:
|
|
189
|
+
compositionHeight: contentDimensions.height,
|
|
190
|
+
compositionWidth: contentDimensions.width,
|
|
180
191
|
previewSize: prevSize.size,
|
|
181
192
|
});
|
|
182
193
|
return {
|
|
@@ -187,7 +198,7 @@ const Canvas = () => {
|
|
|
187
198
|
size: Math.max(smooth_zoom_1.MIN_ZOOM, scale / 2),
|
|
188
199
|
};
|
|
189
200
|
});
|
|
190
|
-
}, [
|
|
201
|
+
}, [contentDimensions, setSize, size]);
|
|
191
202
|
(0, react_1.useEffect)(() => {
|
|
192
203
|
const resetBinding = keybindings.registerKeybinding({
|
|
193
204
|
event: 'keydown',
|
|
@@ -219,6 +230,37 @@ const Canvas = () => {
|
|
|
219
230
|
zoomOut.unregister();
|
|
220
231
|
};
|
|
221
232
|
}, [keybindings, onReset, onZoomIn, onZoomOut]);
|
|
222
|
-
|
|
233
|
+
const fetchMetadata = (0, react_1.useCallback)(async () => {
|
|
234
|
+
if (canvasContent.type !== 'asset') {
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
setAssetResolution(null);
|
|
238
|
+
const assetSrc = (0, remotion_1.staticFile)(canvasContent.asset);
|
|
239
|
+
const fileType = (0, Preview_1.getPreviewFileType)(canvasContent.asset);
|
|
240
|
+
if (fileType === 'video') {
|
|
241
|
+
try {
|
|
242
|
+
await (0, media_utils_1.getVideoMetadata)(assetSrc).then((data) => {
|
|
243
|
+
setAssetResolution({ width: data.width, height: data.height });
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
catch (_a) {
|
|
247
|
+
setAssetResolution('none');
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
else if (fileType === 'image') {
|
|
251
|
+
const img = new Image();
|
|
252
|
+
img.onload = () => {
|
|
253
|
+
setAssetResolution({ width: img.width, height: img.height });
|
|
254
|
+
};
|
|
255
|
+
img.src = assetSrc;
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
setAssetResolution('none');
|
|
259
|
+
}
|
|
260
|
+
}, [canvasContent]);
|
|
261
|
+
(0, react_1.useEffect)(() => {
|
|
262
|
+
fetchMetadata();
|
|
263
|
+
}, [fetchMetadata]);
|
|
264
|
+
return ((0, jsx_runtime_1.jsxs)("div", { ref: canvas_ref_1.canvasRef, style: container, children: [size ? ((0, jsx_runtime_1.jsx)(Preview_1.VideoPreview, { canvasContent: canvasContent, contentDimensions: contentDimensions, canvasSize: size })) : null, isFit ? null : ((0, jsx_runtime_1.jsx)("div", { style: resetZoom, className: "css-reset", children: (0, jsx_runtime_1.jsx)(ResetZoomButton_1.ResetZoomButton, { onClick: onReset }) }))] }));
|
|
223
265
|
};
|
|
224
266
|
exports.Canvas = Canvas;
|
|
@@ -28,6 +28,7 @@ const CanvasOrLoading = () => {
|
|
|
28
28
|
const resolved = remotion_1.Internals.useResolvedVideoConfig(null);
|
|
29
29
|
const [takesALongTime, setTakesALongTime] = (0, react_1.useState)(false);
|
|
30
30
|
const { setZoom } = (0, react_1.useContext)(timeline_zoom_1.TimelineZoomCtx);
|
|
31
|
+
const { canvasContent } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
|
|
31
32
|
(0, react_1.useEffect)(() => {
|
|
32
33
|
const timeout = setTimeout(() => {
|
|
33
34
|
setTakesALongTime(true);
|
|
@@ -56,6 +57,13 @@ const CanvasOrLoading = () => {
|
|
|
56
57
|
transition: 'opacity 0.3s',
|
|
57
58
|
};
|
|
58
59
|
}, [takesALongTime]);
|
|
60
|
+
if (!canvasContent) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
const content = ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ZoomPersistor_1.ZoomPersistor, {}), (0, jsx_runtime_1.jsx)(Canvas_1.Canvas, { canvasContent: canvasContent })] }));
|
|
64
|
+
if (canvasContent.type === 'asset') {
|
|
65
|
+
return content;
|
|
66
|
+
}
|
|
59
67
|
if (!resolved) {
|
|
60
68
|
return null;
|
|
61
69
|
}
|
|
@@ -65,7 +73,7 @@ const CanvasOrLoading = () => {
|
|
|
65
73
|
if (resolved.type === 'error') {
|
|
66
74
|
return (0, jsx_runtime_1.jsx)(exports.ErrorLoading, { error: resolved.error });
|
|
67
75
|
}
|
|
68
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(FramePersistor_1.FramePersistor, {}),
|
|
76
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(FramePersistor_1.FramePersistor, {}), " ", content] }));
|
|
69
77
|
};
|
|
70
78
|
exports.CanvasOrLoading = CanvasOrLoading;
|
|
71
79
|
const loaderLabel = {
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CheckboardToggle = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
|
+
const remotion_1 = require("remotion");
|
|
6
7
|
const truthy_1 = require("../../truthy");
|
|
7
8
|
const colors_1 = require("../helpers/colors");
|
|
8
9
|
const use_keybinding_1 = require("../helpers/use-keybinding");
|
|
@@ -16,11 +17,15 @@ const accessibilityLabel = [
|
|
|
16
17
|
.join(' ');
|
|
17
18
|
const CheckboardToggle = () => {
|
|
18
19
|
const { checkerboard, setCheckerboard } = (0, react_1.useContext)(checkerboard_1.CheckerboardContext);
|
|
20
|
+
const { canvasContent } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
|
|
19
21
|
const onClick = (0, react_1.useCallback)(() => {
|
|
20
22
|
setCheckerboard((c) => {
|
|
21
23
|
return !c;
|
|
22
24
|
});
|
|
23
25
|
}, [setCheckerboard]);
|
|
26
|
+
if ((canvasContent === null || canvasContent === void 0 ? void 0 : canvasContent.type) === 'asset') {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
24
29
|
return ((0, jsx_runtime_1.jsx)(ControlButton_1.ControlButton, { title: accessibilityLabel, "aria-label": accessibilityLabel, onClick: onClick, children: (0, jsx_runtime_1.jsx)("svg", { "aria-hidden": "true", focusable: "false", "data-prefix": "fas", "data-icon": "game-board-alt", className: "svg-inline--fa fa-game-board-alt fa-w-16", role: "img", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", style: { width: 16, height: 16 }, children: (0, jsx_runtime_1.jsx)("path", { fill: checkerboard ? colors_1.BLUE : 'white', d: "M480 0H32A32 32 0 0 0 0 32v448a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zm-32 256H256v192H64V256h192V64h192z" }) }) }));
|
|
25
30
|
};
|
|
26
31
|
exports.CheckboardToggle = CheckboardToggle;
|
|
@@ -33,8 +33,8 @@ const getKeysToExpand = (initialFolderName, parentFolderName, initial = []) => {
|
|
|
33
33
|
exports.getKeysToExpand = getKeysToExpand;
|
|
34
34
|
exports.compositionSelectorRef = (0, react_1.createRef)();
|
|
35
35
|
const CompositionSelector = () => {
|
|
36
|
-
const { compositions,
|
|
37
|
-
const [foldersExpanded, setFoldersExpanded] = (0, react_1.useState)((0, persist_open_folders_1.loadExpandedFolders)());
|
|
36
|
+
const { compositions, canvasContent, folders } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
|
|
37
|
+
const [foldersExpanded, setFoldersExpanded] = (0, react_1.useState)((0, persist_open_folders_1.loadExpandedFolders)('compositions'));
|
|
38
38
|
const { tabIndex } = (0, z_index_1.useZIndex)();
|
|
39
39
|
const selectComposition = (0, InitialCompositionLoader_1.useSelectComposition)();
|
|
40
40
|
const toggleFolder = (0, react_1.useCallback)((folderName, parentName) => {
|
|
@@ -46,7 +46,7 @@ const CompositionSelector = () => {
|
|
|
46
46
|
...p,
|
|
47
47
|
[key]: !prev,
|
|
48
48
|
};
|
|
49
|
-
(0, persist_open_folders_1.persistExpandedFolders)(foldersExpandedState);
|
|
49
|
+
(0, persist_open_folders_1.persistExpandedFolders)('compositions', foldersExpandedState);
|
|
50
50
|
return foldersExpandedState;
|
|
51
51
|
});
|
|
52
52
|
}, []);
|
|
@@ -81,7 +81,7 @@ const CompositionSelector = () => {
|
|
|
81
81
|
currentFolder = (_b = parentFolder === null || parentFolder === void 0 ? void 0 : parentFolder.name) !== null && _b !== void 0 ? _b : null;
|
|
82
82
|
currentParentName = (_c = parentFolder === null || parentFolder === void 0 ? void 0 : parentFolder.parent) !== null && _c !== void 0 ? _c : null;
|
|
83
83
|
}
|
|
84
|
-
(0, persist_open_folders_1.persistExpandedFolders)(foldersExpandedState);
|
|
84
|
+
(0, persist_open_folders_1.persistExpandedFolders)('compositions', foldersExpandedState);
|
|
85
85
|
return foldersExpandedState;
|
|
86
86
|
});
|
|
87
87
|
},
|
|
@@ -90,8 +90,10 @@ const CompositionSelector = () => {
|
|
|
90
90
|
const items = (0, react_1.useMemo)(() => {
|
|
91
91
|
return (0, create_folder_tree_1.createFolderTree)(compositions, folders, foldersExpanded);
|
|
92
92
|
}, [compositions, folders, foldersExpanded]);
|
|
93
|
-
return ((0, jsx_runtime_1.jsxs)("div", { style: container, children: [(0, jsx_runtime_1.jsx)(CurrentComposition_1.CurrentComposition, {}), (0, jsx_runtime_1.jsx)("div", { className: "__remotion-vertical-scrollbar", style: list, children: items.map((c) => {
|
|
94
|
-
return ((0, jsx_runtime_1.jsx)(CompositionSelectorItem_1.CompositionSelectorItem, { level: 0, currentComposition:
|
|
93
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: container, children: [canvasContent && canvasContent.type === 'composition' ? ((0, jsx_runtime_1.jsx)(CurrentComposition_1.CurrentComposition, {})) : null, (0, jsx_runtime_1.jsx)("div", { className: "__remotion-vertical-scrollbar", style: list, children: items.map((c) => {
|
|
94
|
+
return ((0, jsx_runtime_1.jsx)(CompositionSelectorItem_1.CompositionSelectorItem, { level: 0, currentComposition: canvasContent && canvasContent.type === 'composition'
|
|
95
|
+
? canvasContent.compositionId
|
|
96
|
+
: null, selectComposition: selectComposition, toggleFolder: toggleFolder, tabIndex: tabIndex, item: c }, c.key + c.type));
|
|
95
97
|
}) })] }));
|
|
96
98
|
};
|
|
97
99
|
exports.CompositionSelector = CompositionSelector;
|
|
@@ -38,6 +38,6 @@ const CopyButton = ({ textToCopy, label, labelWhenCopied }) => {
|
|
|
38
38
|
const to = setTimeout(() => setCopied(false), 2000);
|
|
39
39
|
return () => clearTimeout(to);
|
|
40
40
|
}, [copied]);
|
|
41
|
-
return ((0, jsx_runtime_1.jsxs)(Button_1.Button, { onClick: onClick,
|
|
41
|
+
return ((0, jsx_runtime_1.jsxs)(Button_1.Button, { onClick: onClick, buttonContainerStyle: buttonContainerStyle, children: [copyIcon, (0, jsx_runtime_1.jsx)(layout_1.Spacing, { x: 1.5 }), ' ', (0, jsx_runtime_1.jsx)("span", { style: labelStyle, children: copied ? labelWhenCopied : label })] }));
|
|
42
42
|
};
|
|
43
43
|
exports.CopyButton = CopyButton;
|
|
@@ -9,13 +9,20 @@ const use_keybinding_1 = require("../helpers/use-keybinding");
|
|
|
9
9
|
const NotificationCenter_1 = require("./Notifications/NotificationCenter");
|
|
10
10
|
const context_1 = require("./RenderQueue/context");
|
|
11
11
|
const TitleUpdater = () => {
|
|
12
|
-
const video = remotion_1.Internals.useVideo();
|
|
13
12
|
const renderQueue = (0, react_1.useContext)(context_1.RenderQueueContext);
|
|
13
|
+
const { canvasContent } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
|
|
14
14
|
const { jobs } = renderQueue;
|
|
15
15
|
(0, react_1.useEffect)(() => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
if (!canvasContent) {
|
|
17
|
+
(0, document_title_1.setCurrentCanvasContentId)(null);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (canvasContent.type === 'composition') {
|
|
21
|
+
(0, document_title_1.setCurrentCanvasContentId)(canvasContent.compositionId);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
(0, document_title_1.setCurrentCanvasContentId)(canvasContent.asset);
|
|
25
|
+
}, [canvasContent]);
|
|
19
26
|
(0, react_1.useEffect)(() => {
|
|
20
27
|
(0, document_title_1.setRenderJobs)(jobs);
|
|
21
28
|
}, [jobs]);
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.EditorContent = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const remotion_1 = require("remotion");
|
|
5
7
|
const is_current_selected_still_1 = require("../helpers/is-current-selected-still");
|
|
6
8
|
const SplitterContainer_1 = require("./Splitter/SplitterContainer");
|
|
7
9
|
const SplitterElement_1 = require("./Splitter/SplitterElement");
|
|
@@ -11,7 +13,8 @@ const TopPanel_1 = require("./TopPanel");
|
|
|
11
13
|
const noop = () => undefined;
|
|
12
14
|
const EditorContent = () => {
|
|
13
15
|
const isStill = (0, is_current_selected_still_1.useIsStill)();
|
|
14
|
-
|
|
16
|
+
const { canvasContent } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
|
|
17
|
+
if (canvasContent === null || isStill || canvasContent.type === 'asset') {
|
|
15
18
|
return (0, jsx_runtime_1.jsx)(TopPanel_1.TopPanel, {});
|
|
16
19
|
}
|
|
17
20
|
return ((0, jsx_runtime_1.jsxs)(SplitterContainer_1.SplitterContainer, { orientation: "horizontal", id: "top-to-bottom", maxFlex: 0.9, minFlex: 0.2, defaultFlex: 0.75, children: [(0, jsx_runtime_1.jsx)(SplitterElement_1.SplitterElement, { type: "flexer", children: (0, jsx_runtime_1.jsx)(TopPanel_1.TopPanel, {}) }), (0, jsx_runtime_1.jsx)(SplitterHandle_1.SplitterHandle, { allowToCollapse: "none", onCollapse: noop }), (0, jsx_runtime_1.jsx)(SplitterElement_1.SplitterElement, { type: "anti-flexer", children: (0, jsx_runtime_1.jsx)(Timeline_1.Timeline, {}) })] }));
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ExplorerPanel = exports.optionsSidebarTabs = exports.persistSelectedOptionsSidebarPanel = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
|
-
const remotion_1 = require("remotion");
|
|
7
6
|
const colors_1 = require("../helpers/colors");
|
|
8
7
|
const AssetSelector_1 = require("./AssetSelector");
|
|
9
8
|
const CompositionSelector_1 = require("./CompositionSelector");
|
|
@@ -50,18 +49,6 @@ const ExplorerPanel = () => {
|
|
|
50
49
|
},
|
|
51
50
|
};
|
|
52
51
|
}, []);
|
|
53
|
-
const { compositions, currentComposition } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
|
|
54
|
-
const composition = (0, react_1.useMemo)(() => {
|
|
55
|
-
for (const comp of compositions) {
|
|
56
|
-
if (comp.id === currentComposition) {
|
|
57
|
-
return comp;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return null;
|
|
61
|
-
}, [compositions, currentComposition]);
|
|
62
|
-
if (composition === null) {
|
|
63
|
-
return null;
|
|
64
|
-
}
|
|
65
52
|
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 === 'compositions', onClick: onCompositionsSelected, children: "Compositions" }), (0, jsx_runtime_1.jsx)(Tabs_1.Tab, { selected: panel === 'assets', onClick: onAssetsSelected, children: "Assets" })] }) }), panel === 'compositions' ? (0, jsx_runtime_1.jsx)(CompositionSelector_1.CompositionSelector, {}) : (0, jsx_runtime_1.jsx)(AssetSelector_1.AssetSelector, {})] }));
|
|
66
53
|
};
|
|
67
54
|
exports.ExplorerPanel = ExplorerPanel;
|