@remotion/studio 4.0.523 → 4.0.525
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/ActionTooltip.d.ts +11 -0
- package/dist/components/ActionTooltip.js +153 -0
- package/dist/components/AppLaunchButton.js +2 -0
- package/dist/components/AssetSelectorModal.d.ts +6 -0
- package/dist/components/AssetSelectorModal.js +174 -0
- package/dist/components/Canvas.js +18 -3
- package/dist/components/CheckboardToggle.js +8 -10
- package/dist/components/ColorPicker/AlphaSlider.js +1 -1
- package/dist/components/ColorPicker/HueSlider.js +1 -1
- package/dist/components/ColorPicker/SaturationValueArea.js +1 -1
- package/dist/components/CompositionSelector.js +1 -0
- package/dist/components/CompositionSelectorItem.js +1 -0
- package/dist/components/EditorGuides/Guide.js +1 -1
- package/dist/components/ElementInstallConfirmation.js +35 -62
- package/dist/components/FullscreenToggle.js +5 -8
- package/dist/components/GlobalKeybindings.js +71 -0
- package/dist/components/InspectorLocationCopy.js +1 -1
- package/dist/components/InspectorOpenInEditor.d.ts +1 -0
- package/dist/components/InspectorOpenInEditor.js +18 -15
- package/dist/components/InspectorPanel/CompositionInspectorHeader.js +6 -7
- package/dist/components/InspectorPanel/CompositionMetadata.js +1 -0
- package/dist/components/InspectorPanel/ElementLibraryButton.js +1 -0
- package/dist/components/InspectorPanel/SequenceInspectorHeader.js +4 -12
- package/dist/components/InspectorSequenceSection.js +23 -14
- package/dist/components/LazySyntaxHighlightedSource.d.ts +4 -0
- package/dist/components/LazySyntaxHighlightedSource.js +43 -0
- package/dist/components/LoopToggle.js +9 -2
- package/dist/components/Menu/MenuItem.js +1 -2
- package/dist/components/MenuBuildIndicator.js +1 -1
- package/dist/components/MenuToolbar.js +6 -4
- package/dist/components/Modals.js +2 -1
- package/dist/components/MuteToggle.d.ts +1 -0
- package/dist/components/MuteToggle.js +17 -6
- package/dist/components/NewComposition/CodemodFooter.js +1 -0
- package/dist/components/NewComposition/DeleteComposition.js +42 -6
- package/dist/components/NewComposition/DeleteFolder.js +1 -0
- package/dist/components/NewComposition/DuplicateComposition.js +5 -0
- package/dist/components/NewComposition/InputDragger.js +2 -2
- package/dist/components/NewComposition/NewComposition.d.ts +1 -0
- package/dist/components/NewComposition/NewComposition.js +5 -4
- package/dist/components/NewComposition/NewFolder.js +31 -6
- package/dist/components/NewComposition/RenameComposition.js +3 -2
- package/dist/components/NewComposition/RenameFolder.js +3 -4
- package/dist/components/NewComposition/SlugPreview.d.ts +7 -0
- package/dist/components/NewComposition/SlugPreview.js +18 -0
- package/dist/components/NewComposition/duplicate-composition-api.d.ts +3 -2
- package/dist/components/NewComposition/duplicate-composition-api.js +9 -2
- package/dist/components/Notifications/NotificationCenter.d.ts +1 -0
- package/dist/components/Notifications/NotificationCenter.js +22 -1
- package/dist/components/OutlineToggle.js +17 -10
- package/dist/components/PlayPause.js +7 -1
- package/dist/components/PlaybackKeyboardShortcutsManager.d.ts +2 -0
- package/dist/components/PlaybackKeyboardShortcutsManager.js +36 -1
- package/dist/components/PlaybackRateSelector.js +2 -2
- package/dist/components/Preview.js +0 -3
- package/dist/components/PreviewToolbar.js +4 -7
- package/dist/components/PreviewToolbarOverflowButton.js +10 -3
- package/dist/components/QuickSwitcher/QuickSwitcherContent.js +1 -1
- package/dist/components/RenderButton.js +40 -4
- package/dist/components/RenderModal/WebRenderModalBasic.js +1 -1
- package/dist/components/RenderModal/render-modals.js +3 -0
- package/dist/components/RenderQueue/CaptionQueueItem.js +2 -1
- package/dist/components/RenderQueue/RenderQueueCopyToClipboard.js +2 -1
- package/dist/components/RenderQueue/RenderQueueDownloadItem.js +2 -1
- package/dist/components/RenderQueue/RenderQueueItemCancelButton.js +2 -1
- package/dist/components/RenderQueue/RenderQueueOpenInFolder.js +2 -1
- package/dist/components/RenderQueue/RenderQueueRemoveItem.js +2 -1
- package/dist/components/RenderQueue/RenderQueueRepeat.js +2 -1
- package/dist/components/RenderQueue/VideoMattingQueueItem.js +2 -1
- package/dist/components/RenderQueue/actions.d.ts +2 -1
- package/dist/components/RenderQueue/actions.js +2 -1
- package/dist/components/RulersAndGuidesToggle.js +8 -1
- package/dist/components/SegmentedButton.d.ts +1 -0
- package/dist/components/SegmentedButton.js +9 -3
- package/dist/components/SelectedOutlineElement.js +16 -6
- package/dist/components/SelectedOutlinePolygon.js +4 -2
- package/dist/components/SettingsButton.js +8 -6
- package/dist/components/SettingsContext.d.ts +8 -0
- package/dist/components/SettingsContext.js +57 -2
- package/dist/components/SettingsModal.js +4 -1
- package/dist/components/SettingsModalFooter.js +1 -1
- package/dist/components/SidebarCollapserControls.js +13 -16
- package/dist/components/SizeSelector.js +2 -2
- package/dist/components/SkillsSettings.js +35 -4
- package/dist/components/SnappingToggle.js +7 -8
- package/dist/components/Splitter/SplitterHandle.js +1 -2
- package/dist/components/StudioSettings.js +32 -18
- package/dist/components/SyntaxHighlightedSource.d.ts +5 -0
- package/dist/components/{HighlightedElementSource.js → SyntaxHighlightedSource.js} +2 -2
- package/dist/components/Tabs/vertical.d.ts +1 -1
- package/dist/components/Tabs/vertical.js +16 -2
- package/dist/components/Timeline/EasingEditorModal.js +2 -2
- package/dist/components/Timeline/Timeline.js +47 -39
- package/dist/components/Timeline/TimelineAssetField.js +148 -9
- package/dist/components/Timeline/TimelineDragHandler.js +1 -2
- package/dist/components/Timeline/TimelineEffectItem.d.ts +1 -0
- package/dist/components/Timeline/TimelineEffectItem.js +2 -2
- package/dist/components/Timeline/TimelineEffectPropItem.d.ts +1 -0
- package/dist/components/Timeline/TimelineEffectPropItem.js +2 -2
- package/dist/components/Timeline/TimelineExpandedRow.js +2 -2
- package/dist/components/Timeline/TimelineInOutDragHandler.js +1 -2
- package/dist/components/Timeline/TimelineLayerChildren.js +12 -9
- package/dist/components/Timeline/TimelineSchemaField.js +8 -1
- package/dist/components/Timeline/TimelineSelection.d.ts +3 -1
- package/dist/components/Timeline/TimelineSelection.js +32 -5
- package/dist/components/Timeline/TimelineSequence.js +6 -6
- package/dist/components/Timeline/TimelineSequenceItem.js +12 -10
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +3 -12
- package/dist/components/Timeline/TimelineTranslateField.js +25 -12
- package/dist/components/Timeline/TimelineZoomControls.js +2 -1
- package/dist/components/Timeline/get-sequence-context-menu-items.js +22 -6
- package/dist/components/Timeline/timeline-field-display-utils.js +12 -7
- package/dist/components/Timeline/timeline-translate-utils.d.ts +17 -0
- package/dist/components/Timeline/timeline-translate-utils.js +53 -12
- package/dist/components/Timeline/use-open-sequence-in-apps.d.ts +2 -0
- package/dist/components/Timeline/use-open-sequence-in-apps.js +17 -0
- package/dist/components/Timeline/use-timeline-asset-drop.js +17 -3
- package/dist/components/Timeline/use-timeline-keyframe-drag.js +4 -4
- package/dist/components/TimelineCombobox.d.ts +1 -0
- package/dist/components/TimelineCombobox.js +9 -4
- package/dist/components/TimelineInOutToggle.js +8 -15
- package/dist/components/UndoRedoButtons.js +11 -0
- package/dist/components/composition-menu-items.js +56 -2
- package/dist/components/folder-menu-items.js +44 -0
- package/dist/components/get-open-in-menu-items.js +1 -1
- package/dist/components/handle-drop.js +3 -2
- package/dist/components/import-assets.d.ts +24 -1
- package/dist/components/import-assets.js +3 -1
- package/dist/components/keyboard-shortcuts.d.ts +4 -4
- package/dist/components/keyboard-shortcuts.js +28 -9
- package/dist/error-overlay/remotion-overlay/CodeFrame.js +29 -18
- package/dist/esm/LazyModels-gfmpcy4h.mjs +11 -0
- package/dist/esm/LazyModels-m1rf06wh.mjs +11 -0
- package/dist/esm/{HighlightedElementSource-jfc66k4p.mjs → SyntaxHighlightedSource-3xks91rz.mjs} +4 -4
- package/dist/esm/{TranscriptionModal-916jqhry.mjs → TranscriptionModal-8pvrehg4.mjs} +7 -7
- package/dist/esm/{VideoMattingModal-2tm79s9b.mjs → VideoMattingModal-fefbzgka.mjs} +7 -7
- package/dist/esm/{index-xhe2m2qr.mjs → index-0x13f28h.mjs} +35 -13
- package/dist/esm/{index-sgtmgc4h.mjs → index-1089795y.mjs} +3 -3
- package/dist/esm/{index-hy4xcgty.mjs → index-41kqns5c.mjs} +5 -3
- package/dist/esm/{index-6cvm9a65.mjs → index-ggqpre9v.mjs} +2868 -2099
- package/dist/esm/{index-czwvnn9g.mjs → index-hbezgbbq.mjs} +1 -1
- package/dist/esm/{index-1x7bsdh6.mjs → index-jrw61pkj.mjs} +2 -2
- package/dist/esm/{index-jg13hf2g.mjs → index-k426ye99.mjs} +2 -1
- package/dist/esm/{index-te66vvrp.mjs → index-mww32xc8.mjs} +4 -4
- package/dist/esm/{index-x7t2y7ws.mjs → index-s848rffx.mjs} +6985 -5956
- package/dist/esm/{index-3hgr6gjx.mjs → index-tzxb8808.mjs} +1 -1
- package/dist/esm/{index-5qddp5h7.mjs → index-vsxrxfpj.mjs} +1 -1
- package/dist/esm/index.mjs +3 -3
- package/dist/esm/internals.mjs +8 -8
- package/dist/esm/previewEntry.mjs +8 -8
- package/dist/esm/renderEntry.mjs +3 -3
- package/dist/helpers/colors.d.ts +1 -0
- package/dist/helpers/colors.js +4 -3
- package/dist/helpers/get-git-menu-item.d.ts +4 -0
- package/dist/helpers/get-git-menu-item.js +8 -1
- package/dist/helpers/get-sequence-double-click-action.d.ts +3 -3
- package/dist/helpers/get-sequence-double-click-action.js +2 -2
- package/dist/helpers/inject-css.js +2 -2
- package/dist/helpers/pointer-session.d.ts +1 -0
- package/dist/helpers/pointer-session.js +10 -1
- package/dist/helpers/prism-vsc-dark-plus.d.ts +1 -0
- package/dist/helpers/prism-vsc-dark-plus.js +305 -0
- package/dist/helpers/studio-runtime-config.d.ts +1 -1
- package/dist/helpers/use-create-composition.d.ts +1 -0
- package/dist/helpers/use-create-composition.js +17 -7
- package/dist/helpers/use-keybinding.d.ts +1 -1
- package/dist/helpers/use-keyboard-shortcut-label.d.ts +2 -2
- package/dist/helpers/use-media-metadata.js +5 -1
- package/dist/helpers/use-menu-structure.js +6 -2
- package/dist/helpers/use-rename-composition.d.ts +1 -0
- package/dist/helpers/use-rename-composition.js +16 -5
- package/dist/icons/skills.js +1 -1
- package/dist/renderEntry.js +2 -2
- package/dist/state/modals.d.ts +13 -1
- package/dist/state/z-index.js +1 -3
- package/package.json +20 -20
- package/dist/components/HighlightedElementSource.d.ts +0 -5
- package/dist/esm/LazyModels-2trdm224.mjs +0 -11
- package/dist/esm/LazyModels-fjb5ckaq.mjs +0 -11
- package/dist/helpers/prism-tomorrow.d.ts +0 -1
- package/dist/helpers/prism-tomorrow.js +0 -151
- /package/dist/esm/{resolve-composition-component-location-14148845.mjs → resolve-composition-component-location-bt2d6qxq.mjs} +0 -0
|
@@ -6,6 +6,8 @@ const react_1 = require("react");
|
|
|
6
6
|
const remotion_1 = require("remotion");
|
|
7
7
|
const no_react_1 = require("remotion/no-react");
|
|
8
8
|
const write_static_file_1 = require("../../api/write-static-file");
|
|
9
|
+
const colors_1 = require("../../helpers/colors");
|
|
10
|
+
const hoverable_1 = require("../../helpers/hoverable");
|
|
9
11
|
const pen_1 = require("../../icons/pen");
|
|
10
12
|
const modals_1 = require("../../state/modals");
|
|
11
13
|
const import_assets_1 = require("../import-assets");
|
|
@@ -13,6 +15,7 @@ const InlineAction_1 = require("../InlineAction");
|
|
|
13
15
|
const common_1 = require("../InspectorPanel/common");
|
|
14
16
|
const NotificationCenter_1 = require("../Notifications/NotificationCenter");
|
|
15
17
|
const use_static_files_1 = require("../use-static-files");
|
|
18
|
+
const timeline_asset_link_1 = require("./timeline-asset-link");
|
|
16
19
|
const penIcon = {
|
|
17
20
|
display: 'block',
|
|
18
21
|
height: 14,
|
|
@@ -37,6 +40,72 @@ const assetTypeToAccept = {
|
|
|
37
40
|
video: 'video/*',
|
|
38
41
|
image: 'image/*',
|
|
39
42
|
};
|
|
43
|
+
const imageAssetField = {
|
|
44
|
+
alignItems: 'center',
|
|
45
|
+
display: 'flex',
|
|
46
|
+
flex: 1,
|
|
47
|
+
gap: 8,
|
|
48
|
+
minWidth: 0,
|
|
49
|
+
padding: '4px 12px',
|
|
50
|
+
};
|
|
51
|
+
const thumbnailButton = {
|
|
52
|
+
...(0, hoverable_1.hoverableStyle)({
|
|
53
|
+
idleBackground: colors_1.TRANSPARENT,
|
|
54
|
+
hoverBackground: colors_1.TRANSPARENT,
|
|
55
|
+
idleColor: colors_1.LIGHT_TEXT,
|
|
56
|
+
hoverColor: colors_1.WHITE,
|
|
57
|
+
}),
|
|
58
|
+
appearance: 'none',
|
|
59
|
+
border: 'none',
|
|
60
|
+
cursor: 'default',
|
|
61
|
+
flexShrink: 0,
|
|
62
|
+
height: 40,
|
|
63
|
+
margin: 0,
|
|
64
|
+
padding: 0,
|
|
65
|
+
width: 40,
|
|
66
|
+
};
|
|
67
|
+
const thumbnail = {
|
|
68
|
+
display: 'block',
|
|
69
|
+
height: '100%',
|
|
70
|
+
objectFit: 'contain',
|
|
71
|
+
width: '100%',
|
|
72
|
+
};
|
|
73
|
+
const imageAssetInfo = {
|
|
74
|
+
...(0, hoverable_1.hoverableStyle)({
|
|
75
|
+
idleBackground: colors_1.TRANSPARENT,
|
|
76
|
+
hoverBackground: colors_1.TRANSPARENT,
|
|
77
|
+
idleColor: colors_1.LIGHT_TEXT,
|
|
78
|
+
hoverColor: colors_1.WHITE,
|
|
79
|
+
}),
|
|
80
|
+
appearance: 'none',
|
|
81
|
+
border: 'none',
|
|
82
|
+
display: 'flex',
|
|
83
|
+
flex: 1,
|
|
84
|
+
flexDirection: 'column',
|
|
85
|
+
gap: 2,
|
|
86
|
+
margin: 0,
|
|
87
|
+
minWidth: 0,
|
|
88
|
+
padding: 0,
|
|
89
|
+
textAlign: 'left',
|
|
90
|
+
};
|
|
91
|
+
const imageAssetName = {
|
|
92
|
+
color: colors_1.WHITE,
|
|
93
|
+
fontFamily: 'sans-serif',
|
|
94
|
+
fontSize: 12,
|
|
95
|
+
lineHeight: '16px',
|
|
96
|
+
overflow: 'hidden',
|
|
97
|
+
textOverflow: 'ellipsis',
|
|
98
|
+
whiteSpace: 'nowrap',
|
|
99
|
+
};
|
|
100
|
+
const imageAssetSource = {
|
|
101
|
+
color: colors_1.LIGHT_TEXT,
|
|
102
|
+
fontFamily: 'sans-serif',
|
|
103
|
+
fontSize: 11,
|
|
104
|
+
lineHeight: '14px',
|
|
105
|
+
overflow: 'hidden',
|
|
106
|
+
textOverflow: 'ellipsis',
|
|
107
|
+
whiteSpace: 'nowrap',
|
|
108
|
+
};
|
|
40
109
|
exports.AssetSelectionContext = (0, react_1.createContext)({
|
|
41
110
|
getSourceAction: () => null,
|
|
42
111
|
sourceAction: null,
|
|
@@ -49,6 +118,7 @@ const toFileToken = (name) => {
|
|
|
49
118
|
};
|
|
50
119
|
exports.toFileToken = toFileToken;
|
|
51
120
|
const TimelineAssetField = ({ field, effectiveValue, propStatus, onSave, onDragValueChange, onDragEnd, }) => {
|
|
121
|
+
var _a, _b;
|
|
52
122
|
if (field.fieldSchema.type !== 'asset') {
|
|
53
123
|
throw new Error('TimelineAssetField rendered for non-asset field');
|
|
54
124
|
}
|
|
@@ -73,6 +143,15 @@ const TimelineAssetField = ({ field, effectiveValue, propStatus, onSave, onDragV
|
|
|
73
143
|
onDragEnd();
|
|
74
144
|
});
|
|
75
145
|
}, [propStatus.codeValue, onDragValueChange, onSave, onDragEnd]);
|
|
146
|
+
const onSelectUrl = (0, react_1.useCallback)((url) => {
|
|
147
|
+
if (url === propStatus.codeValue) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
onDragValueChange(url);
|
|
151
|
+
onSave(url).finally(() => {
|
|
152
|
+
onDragEnd();
|
|
153
|
+
});
|
|
154
|
+
}, [propStatus.codeValue, onDragValueChange, onDragEnd, onSave]);
|
|
76
155
|
const selectFile = (0, react_1.useCallback)(async () => {
|
|
77
156
|
const [file] = await (0, import_assets_1.pickFilesToImport)({
|
|
78
157
|
multiple: false,
|
|
@@ -103,25 +182,85 @@ const TimelineAssetField = ({ field, effectiveValue, propStatus, onSave, onDragV
|
|
|
103
182
|
}
|
|
104
183
|
}, [assetType, onSelect, staticFiles]);
|
|
105
184
|
const openAssetSelection = (0, react_1.useCallback)(() => {
|
|
185
|
+
const assetSelection = {
|
|
186
|
+
initialQuery,
|
|
187
|
+
onSelectFile: () => {
|
|
188
|
+
selectFile().catch(() => undefined);
|
|
189
|
+
},
|
|
190
|
+
onSelected: (asset) => onSelect(asset.name, asset.src),
|
|
191
|
+
};
|
|
192
|
+
if (assetType !== undefined) {
|
|
193
|
+
const linkInfo = typeof effectiveValue === 'string'
|
|
194
|
+
? (0, timeline_asset_link_1.getTimelineAssetLinkInfo)(effectiveValue)
|
|
195
|
+
: null;
|
|
196
|
+
setSelectedModal({
|
|
197
|
+
type: 'asset-selection',
|
|
198
|
+
assetType,
|
|
199
|
+
initialUrl: (linkInfo === null || linkInfo === void 0 ? void 0 : linkInfo.kind) === 'remote' ? linkInfo.href : null,
|
|
200
|
+
invocationTimestamp: Date.now(),
|
|
201
|
+
assetSelection,
|
|
202
|
+
onSelectedUrl: onSelectUrl,
|
|
203
|
+
});
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
106
206
|
setSelectedModal({
|
|
107
207
|
type: 'quick-switcher',
|
|
108
208
|
mode: 'assets',
|
|
109
209
|
invocationTimestamp: Date.now(),
|
|
110
|
-
assetSelection
|
|
111
|
-
initialQuery,
|
|
112
|
-
onSelectFile: () => {
|
|
113
|
-
selectFile().catch(() => undefined);
|
|
114
|
-
},
|
|
115
|
-
onSelected: (asset) => onSelect(asset.name, asset.src),
|
|
116
|
-
},
|
|
210
|
+
assetSelection,
|
|
117
211
|
compositionSelection: null,
|
|
118
212
|
});
|
|
119
|
-
}, [
|
|
213
|
+
}, [
|
|
214
|
+
assetType,
|
|
215
|
+
effectiveValue,
|
|
216
|
+
initialQuery,
|
|
217
|
+
onSelect,
|
|
218
|
+
onSelectUrl,
|
|
219
|
+
selectFile,
|
|
220
|
+
setSelectedModal,
|
|
221
|
+
]);
|
|
120
222
|
const action = (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, onClick: openAssetSelection, disabled: window.remotion_isReadOnlyStudio, title: "Change source", renderAction: (color) => jsx_runtime_1.jsx(pen_1.PenIcon, { color: color, style: penIcon }) }));
|
|
223
|
+
if (assetType === 'image' && typeof effectiveValue === 'string') {
|
|
224
|
+
const linkInfo = (0, timeline_asset_link_1.getTimelineAssetLinkInfo)(effectiveValue);
|
|
225
|
+
if (linkInfo !== null) {
|
|
226
|
+
let name;
|
|
227
|
+
let source;
|
|
228
|
+
let previewSrc;
|
|
229
|
+
if (linkInfo.kind === 'local') {
|
|
230
|
+
name = (_a = linkInfo.assetPath.split('/').pop()) !== null && _a !== void 0 ? _a : linkInfo.assetPath;
|
|
231
|
+
source = 'Project asset';
|
|
232
|
+
previewSrc = (0, remotion_1.staticFile)(linkInfo.assetPath);
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
previewSrc = linkInfo.href.startsWith('//')
|
|
236
|
+
? `https:${linkInfo.href}`
|
|
237
|
+
: linkInfo.href;
|
|
238
|
+
try {
|
|
239
|
+
const url = new URL(previewSrc);
|
|
240
|
+
const encodedName = url.pathname.split('/').filter(Boolean).pop();
|
|
241
|
+
name = encodedName ? decodeURIComponent(encodedName) : url.hostname;
|
|
242
|
+
source = url.hostname;
|
|
243
|
+
}
|
|
244
|
+
catch (_c) {
|
|
245
|
+
name = 'Remote image';
|
|
246
|
+
source = linkInfo.href;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
const title = (_b = inlineSourceAction === null || inlineSourceAction === void 0 ? void 0 : inlineSourceAction.title) !== null && _b !== void 0 ? _b : linkInfo.title;
|
|
250
|
+
return (jsx_runtime_1.jsxs("div", { style: imageAssetField, children: [
|
|
251
|
+
jsx_runtime_1.jsx("button", { "aria-label": `Replace ${name}`, className: `${hoverable_1.HOVERABLE_CLASS_NAME} ${hoverable_1.FOCUS_VISIBLE_ONLY_CLASS_NAME}`, disabled: window.remotion_isReadOnlyStudio, onClick: openAssetSelection, style: thumbnailButton, title: title, type: "button", children: jsx_runtime_1.jsx("img", { alt: "", src: previewSrc, style: thumbnail }) }), jsx_runtime_1.jsxs("button", { "aria-label": `Replace ${name}`, className: `${hoverable_1.HOVERABLE_CLASS_NAME} ${hoverable_1.FOCUS_VISIBLE_ONLY_CLASS_NAME}`, disabled: window.remotion_isReadOnlyStudio, onClick: openAssetSelection, style: imageAssetInfo, title: title, type: "button", children: [
|
|
252
|
+
jsx_runtime_1.jsx("span", { style: imageAssetName, children: name }), jsx_runtime_1.jsx("span", { style: imageAssetSource, children: source })
|
|
253
|
+
] }), action] }));
|
|
254
|
+
}
|
|
255
|
+
}
|
|
121
256
|
if (inlineSourceAction === null) {
|
|
122
257
|
return action;
|
|
123
258
|
}
|
|
124
259
|
return (jsx_runtime_1.jsxs("div", { style: sourceActions, children: [
|
|
125
|
-
jsx_runtime_1.jsx(common_1.InspectorQuickAction, { ...inlineSourceAction,
|
|
260
|
+
jsx_runtime_1.jsx(common_1.InspectorQuickAction, { ...inlineSourceAction, disabled: assetType === undefined
|
|
261
|
+
? inlineSourceAction.disabled
|
|
262
|
+
: window.remotion_isReadOnlyStudio, onClick: assetType === undefined
|
|
263
|
+
? inlineSourceAction.onClick
|
|
264
|
+
: openAssetSelection, size: "compact", style: standaloneSourceActionStyle }), action] }));
|
|
126
265
|
};
|
|
127
266
|
exports.TimelineAssetField = TimelineAssetField;
|
|
@@ -279,8 +279,7 @@ const TimelineDragHandlerInner = () => {
|
|
|
279
279
|
captureTarget: dragging.target,
|
|
280
280
|
onMove: onPointerMoveScrubbing,
|
|
281
281
|
onEnd: (reason, endEvent) => {
|
|
282
|
-
if ((
|
|
283
|
-
endEvent) {
|
|
282
|
+
if ((0, pointer_session_1.isPointerSessionRelease)(reason, endEvent)) {
|
|
284
283
|
onPointerUpScrubbing(endEvent);
|
|
285
284
|
}
|
|
286
285
|
else {
|
|
@@ -13,6 +13,7 @@ export declare const TimelineEffectItem: React.FC<{
|
|
|
13
13
|
readonly validatedLocation: CodePosition;
|
|
14
14
|
readonly rowDepth: number;
|
|
15
15
|
readonly labelNextToToggle: boolean;
|
|
16
|
+
readonly revealInInspector: boolean;
|
|
16
17
|
readonly getIsExpanded: GetIsExpanded;
|
|
17
18
|
readonly toggleTrack: (nodePathInfo: SequenceNodePathInfo) => void;
|
|
18
19
|
}>;
|
|
@@ -75,7 +75,7 @@ const getEffectReorderDragData = (dataTransfer) => {
|
|
|
75
75
|
const getDestinationIndex = ({ fromIndex, insertionIndex, }) => {
|
|
76
76
|
return insertionIndex > fromIndex ? insertionIndex - 1 : insertionIndex;
|
|
77
77
|
};
|
|
78
|
-
const TimelineEffectItem = ({ label, nodePathInfo, effectIndex, effectSchema, documentationLink, nodePath, validatedLocation, rowDepth, labelNextToToggle, getIsExpanded, toggleTrack, }) => {
|
|
78
|
+
const TimelineEffectItem = ({ label, nodePathInfo, effectIndex, effectSchema, documentationLink, nodePath, validatedLocation, rowDepth, labelNextToToggle, revealInInspector, getIsExpanded, toggleTrack, }) => {
|
|
79
79
|
var _a;
|
|
80
80
|
var _b;
|
|
81
81
|
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
@@ -83,7 +83,7 @@ const TimelineEffectItem = ({ label, nodePathInfo, effectIndex, effectSchema, do
|
|
|
83
83
|
const canMutateEffects = (0, browser_studio_operations_1.canUseEffectOperations)();
|
|
84
84
|
const { propStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
|
|
85
85
|
const { setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
86
|
-
const selection = (0, TimelineSelection_1.useTimelineRowSelection)(nodePathInfo);
|
|
86
|
+
const selection = (0, TimelineSelection_1.useTimelineRowSelection)(nodePathInfo, revealInInspector);
|
|
87
87
|
const containsSelection = (0, TimelineSelection_1.useTimelineRowContainsSelection)(nodePathInfo);
|
|
88
88
|
const [dropIndicator, setDropIndicator] = (0, react_1.useState)(null);
|
|
89
89
|
const effectStatus = (0, react_1.useMemo)(() => remotion_1.Internals.getEffectPropStatusesCtx({
|
|
@@ -19,5 +19,6 @@ export declare const TimelineEffectPropItem: React.FC<{
|
|
|
19
19
|
readonly nodePathInfo: SequenceNodePathInfo;
|
|
20
20
|
readonly keyframeDisplayOffset: number;
|
|
21
21
|
readonly keyframeControlsMode: TimelineKeyframeControlsMode;
|
|
22
|
+
readonly revealInInspector: boolean;
|
|
22
23
|
readonly runtimeValueStore: RuntimeValueStore | null;
|
|
23
24
|
}>;
|
|
@@ -232,7 +232,7 @@ const TimelineEffectPropValueAtCurrentFrame = ({ field, nodePath, validatedLocat
|
|
|
232
232
|
const timelinePosition = remotion_1.Internals.Timeline.useTimelinePosition();
|
|
233
233
|
return (jsx_runtime_1.jsx(exports.TimelineEffectPropValue, { field: field, nodePath: nodePath, validatedLocation: validatedLocation, sourceFrame: timelinePosition - keyframeDisplayOffset, runtimeValueStore: runtimeValueStore }));
|
|
234
234
|
};
|
|
235
|
-
const TimelineEffectPropItem = ({ field, validatedLocation, rowDepth, nodePath, nodePathInfo, keyframeDisplayOffset, keyframeControlsMode, runtimeValueStore, }) => {
|
|
235
|
+
const TimelineEffectPropItem = ({ field, validatedLocation, rowDepth, nodePath, nodePathInfo, keyframeDisplayOffset, keyframeControlsMode, revealInInspector, runtimeValueStore, }) => {
|
|
236
236
|
var _a;
|
|
237
237
|
var _b;
|
|
238
238
|
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
@@ -240,7 +240,7 @@ const TimelineEffectPropItem = ({ field, validatedLocation, rowDepth, nodePath,
|
|
|
240
240
|
const { setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
241
241
|
const { propStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
|
|
242
242
|
const { getEffectDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
|
|
243
|
-
const selection = (0, TimelineSelection_1.useTimelineRowSelection)(nodePathInfo);
|
|
243
|
+
const selection = (0, TimelineSelection_1.useTimelineRowSelection)(nodePathInfo, revealInInspector);
|
|
244
244
|
const style = (0, react_1.useMemo)(() => {
|
|
245
245
|
return field.typeName === 'text-content'
|
|
246
246
|
? fieldRowBase
|
|
@@ -40,7 +40,7 @@ const TimelineExpandedRowInner = ({ node, depth, nestedDepth, rowDepthBase, getI
|
|
|
40
40
|
if (node.effectInfo) {
|
|
41
41
|
return (
|
|
42
42
|
// A single effect
|
|
43
|
-
jsx_runtime_1.jsx(TimelineEffectItem_1.TimelineEffectItem, { label: node.label, nodePathInfo: node.nodePathInfo, effectIndex: node.effectInfo.effectIndex, effectSchema: node.effectInfo.effectSchema, documentationLink: node.effectInfo.documentationLink, nodePath: nodePath, validatedLocation: validatedLocation, rowDepth: rowDepth, labelNextToToggle: isInspector, getIsExpanded: getIsExpanded, toggleTrack: toggleTrack }));
|
|
43
|
+
jsx_runtime_1.jsx(TimelineEffectItem_1.TimelineEffectItem, { label: node.label, nodePathInfo: node.nodePathInfo, effectIndex: node.effectInfo.effectIndex, effectSchema: node.effectInfo.effectSchema, documentationLink: node.effectInfo.documentationLink, nodePath: nodePath, validatedLocation: validatedLocation, rowDepth: rowDepth, labelNextToToggle: isInspector, revealInInspector: !isInspector, getIsExpanded: getIsExpanded, toggleTrack: toggleTrack }));
|
|
44
44
|
}
|
|
45
45
|
// Group like "Effects"
|
|
46
46
|
const isExpanded = getIsExpanded(node.nodePathInfo);
|
|
@@ -50,7 +50,7 @@ const TimelineExpandedRowInner = ({ node, depth, nestedDepth, rowDepthBase, getI
|
|
|
50
50
|
}
|
|
51
51
|
if (node.field) {
|
|
52
52
|
if (node.field.kind === 'effect-field') {
|
|
53
|
-
return (jsx_runtime_1.jsx(TimelineEffectPropItem_1.TimelineEffectPropItem, { field: node.field, validatedLocation: validatedLocation, rowDepth: isInspector ? rowDepth - 1 : rowDepth, nodePath: nodePath, nodePathInfo: node.nodePathInfo, keyframeDisplayOffset: keyframeDisplayOffset, keyframeControlsMode: keyframeControlsMode, runtimeValueStore: node.runtimeValueStore }));
|
|
53
|
+
return (jsx_runtime_1.jsx(TimelineEffectPropItem_1.TimelineEffectPropItem, { field: node.field, validatedLocation: validatedLocation, rowDepth: isInspector ? rowDepth - 1 : rowDepth, nodePath: nodePath, nodePathInfo: node.nodePathInfo, keyframeDisplayOffset: keyframeDisplayOffset, keyframeControlsMode: keyframeControlsMode, revealInInspector: !isInspector, runtimeValueStore: node.runtimeValueStore }));
|
|
54
54
|
}
|
|
55
55
|
if (node.field.kind === 'sequence-field') {
|
|
56
56
|
return (jsx_runtime_1.jsx(TimelineSequencePropItem_1.TimelineSequencePropItem, { field: node.field, validatedLocation: validatedLocation, rowDepth: rowDepth, nodePath: nodePath, nodePathInfo: node.nodePathInfo, schema: schema, keyframeDisplayOffset: keyframeDisplayOffset, keyframeControlsMode: keyframeControlsMode, runtimeValue: node.runtimeValue }));
|
|
@@ -279,8 +279,7 @@ const TimelineInOutDragHandlerInner = () => {
|
|
|
279
279
|
captureTarget: inOutDragging.target,
|
|
280
280
|
onMove: onPointerMoveInOut,
|
|
281
281
|
onEnd: (reason, endEvent) => {
|
|
282
|
-
if ((
|
|
283
|
-
endEvent) {
|
|
282
|
+
if ((0, pointer_session_1.isPointerSessionRelease)(reason, endEvent)) {
|
|
284
283
|
onPointerUpInOut(endEvent);
|
|
285
284
|
}
|
|
286
285
|
else {
|
|
@@ -8,7 +8,16 @@ const hoverable_1 = require("../../helpers/hoverable");
|
|
|
8
8
|
const persist_boolean_map_1 = require("../../helpers/persist-boolean-map");
|
|
9
9
|
const timeline_node_path_key_1 = require("../../helpers/timeline-node-path-key");
|
|
10
10
|
const TimelineCollapseToggle_1 = require("./TimelineCollapseToggle");
|
|
11
|
-
|
|
11
|
+
// Reserve the same space before and after children register or unregister.
|
|
12
|
+
const toggleLayout = {
|
|
13
|
+
display: 'flex',
|
|
14
|
+
alignItems: 'center',
|
|
15
|
+
justifyContent: 'center',
|
|
16
|
+
width: 12,
|
|
17
|
+
height: 16,
|
|
18
|
+
marginRight: 0,
|
|
19
|
+
flexShrink: 0,
|
|
20
|
+
};
|
|
12
21
|
const STORAGE_KEY = 'remotion.editor.collapsedLayerChildren.v1';
|
|
13
22
|
const TimelineLayerChildrenContext = (0, react_1.createContext)(null);
|
|
14
23
|
exports.TimelineLayerChildrenProvider = TimelineLayerChildrenContext.Provider;
|
|
@@ -104,7 +113,7 @@ const TimelineLayerChildrenToggle = ({ sequence }) => {
|
|
|
104
113
|
}, [context, key]);
|
|
105
114
|
const stopPropagation = (0, react_1.useCallback)((event) => event.stopPropagation(), []);
|
|
106
115
|
if (!(context === null || context === void 0 ? void 0 : context.parents.has(sequence.id)) || key === undefined) {
|
|
107
|
-
return jsx_runtime_1.jsx(
|
|
116
|
+
return jsx_runtime_1.jsx("div", { style: toggleLayout });
|
|
108
117
|
}
|
|
109
118
|
const label = `${isCollapsed ? 'Expand' : 'Collapse'} children of ${sequence.displayName}`;
|
|
110
119
|
return (jsx_runtime_1.jsx("button", { type: "button", className: `${hoverable_1.HOVERABLE_CLASS_NAME} ${hoverable_1.FOCUS_VISIBLE_ONLY_CLASS_NAME}`, "aria-label": label, "aria-expanded": !isCollapsed, title: label, onClick: onClick, onPointerDown: stopPropagation, onDoubleClick: stopPropagation, style: {
|
|
@@ -114,16 +123,10 @@ const TimelineLayerChildrenToggle = ({ sequence }) => {
|
|
|
114
123
|
idleColor: colors_1.LIGHT_TEXT,
|
|
115
124
|
hoverColor: colors_1.WHITE,
|
|
116
125
|
}),
|
|
126
|
+
...toggleLayout,
|
|
117
127
|
border: 'none',
|
|
118
128
|
padding: 0,
|
|
119
129
|
cursor: 'default',
|
|
120
|
-
display: 'flex',
|
|
121
|
-
alignItems: 'center',
|
|
122
|
-
justifyContent: 'center',
|
|
123
|
-
width: 12,
|
|
124
|
-
height: 16,
|
|
125
|
-
marginRight: 0,
|
|
126
|
-
flexShrink: 0,
|
|
127
130
|
}, children: jsx_runtime_1.jsx(TimelineCollapseToggle_1.TimelineCollapseToggle, { collapsed: isCollapsed, color: "currentColor" }) }));
|
|
128
131
|
};
|
|
129
132
|
exports.TimelineLayerChildrenToggle = TimelineLayerChildrenToggle;
|
|
@@ -47,6 +47,8 @@ const unsupportedStatusWrapper = {
|
|
|
47
47
|
alignItems: 'center',
|
|
48
48
|
display: 'inline-flex',
|
|
49
49
|
gap: 4,
|
|
50
|
+
maxWidth: '100%',
|
|
51
|
+
minWidth: 0,
|
|
50
52
|
userSelect: 'none',
|
|
51
53
|
WebkitUserSelect: 'none',
|
|
52
54
|
};
|
|
@@ -62,7 +64,11 @@ const computedValue = {
|
|
|
62
64
|
fontFamily: 'Arial, Helvetica, sans-serif',
|
|
63
65
|
fontSize: 12,
|
|
64
66
|
lineHeight: '18px',
|
|
67
|
+
minWidth: 0,
|
|
68
|
+
overflow: 'hidden',
|
|
65
69
|
pointerEvents: 'none',
|
|
70
|
+
textOverflow: 'ellipsis',
|
|
71
|
+
whiteSpace: 'nowrap',
|
|
66
72
|
};
|
|
67
73
|
const fixLinkBase = {
|
|
68
74
|
...(0, hoverable_1.hoverableStyle)({
|
|
@@ -72,6 +78,7 @@ const fixLinkBase = {
|
|
|
72
78
|
hoverColor: colors_1.WHITE,
|
|
73
79
|
}),
|
|
74
80
|
display: 'inline-block',
|
|
81
|
+
flexShrink: 0,
|
|
75
82
|
fontSize: 10,
|
|
76
83
|
fontStyle: 'normal',
|
|
77
84
|
fontWeight: 600,
|
|
@@ -101,7 +108,7 @@ const UnsupportedStatus = ({ label, onFix, formattedValue }) => {
|
|
|
101
108
|
const stopPointerPropagation = (event) => {
|
|
102
109
|
event.stopPropagation();
|
|
103
110
|
};
|
|
104
|
-
return (jsx_runtime_1.jsxs("span", { style: unsupportedStatusWrapper, onPointerEnter: () => setHovered(true), onPointerLeave: () => setHovered(false), children: [
|
|
111
|
+
return (jsx_runtime_1.jsxs("span", { style: unsupportedStatusWrapper, onPointerEnter: () => setHovered(true), onPointerLeave: () => setHovered(false), title: formattedValue && typeof label === 'string' ? label : undefined, children: [
|
|
105
112
|
jsx_runtime_1.jsx("span", { style: formattedValue ? computedValue : unsupportedLabel, inert: formattedValue, children: label }), onFix ? (jsx_runtime_1.jsx("button", { type: "button", className: `${hoverable_1.FOCUS_VISIBLE_ONLY_CLASS_NAME} ${hoverable_1.HOVERABLE_CLASS_NAME}`, style: fixLink, title: "Fix computed Studio value", onClick: (event) => {
|
|
106
113
|
stopMousePropagation(event);
|
|
107
114
|
onFix();
|
|
@@ -91,6 +91,7 @@ export declare const extendTimelineMarqueeSelection: ({ currentSelection, marque
|
|
|
91
91
|
}) => readonly CanvasSelectionItem[];
|
|
92
92
|
type TimelineSelectionContextValue = {
|
|
93
93
|
readonly canSelect: boolean;
|
|
94
|
+
readonly inspectorRevealRequest: TimelineSelectionRevealRequest | null;
|
|
94
95
|
readonly revealRequest: TimelineSelectionRevealRequest | null;
|
|
95
96
|
readonly selectedItems: readonly TimelineSelection[];
|
|
96
97
|
readonly isSelected: (item: TimelineSelection) => boolean;
|
|
@@ -111,6 +112,7 @@ export declare const TimelineSelectionOrderProvider: React.FC<{
|
|
|
111
112
|
}>;
|
|
112
113
|
type TimelineSelectionOptions = {
|
|
113
114
|
readonly reveal?: boolean;
|
|
115
|
+
readonly revealInInspector?: boolean;
|
|
114
116
|
};
|
|
115
117
|
type TimelineSelectionRevealRequest = {
|
|
116
118
|
readonly item: TimelineSelection;
|
|
@@ -152,7 +154,7 @@ export declare const useTimelineMarqueeSelection: () => {
|
|
|
152
154
|
onPointerDownCapture: (event: React.PointerEvent<HTMLDivElement>) => void;
|
|
153
155
|
};
|
|
154
156
|
export declare const useTimelineMarqueeSelectableItem: (item: CanvasSelectionItem | null, ref: React.RefObject<Element | null>) => void;
|
|
155
|
-
export declare const useTimelineRowSelection: (nodePathInfo: SequenceNodePathInfo | null) => {
|
|
157
|
+
export declare const useTimelineRowSelection: (nodePathInfo: SequenceNodePathInfo | null, revealInInspector?: boolean) => {
|
|
156
158
|
onSelect: (interaction?: CanvasSelectionInteraction | undefined) => void;
|
|
157
159
|
selectable: boolean;
|
|
158
160
|
selectionItem: CanvasSelectionItem | null;
|
|
@@ -209,6 +209,7 @@ const extendTimelineMarqueeSelection = ({ currentSelection, marqueeSelection, })
|
|
|
209
209
|
exports.extendTimelineMarqueeSelection = extendTimelineMarqueeSelection;
|
|
210
210
|
const defaultTimelineSelectionContextValue = {
|
|
211
211
|
canSelect: false,
|
|
212
|
+
inspectorRevealRequest: null,
|
|
212
213
|
revealRequest: null,
|
|
213
214
|
selectedItems: [],
|
|
214
215
|
isSelected: () => false,
|
|
@@ -542,9 +543,12 @@ const TimelineSelectionProvider = ({ children }) => {
|
|
|
542
543
|
const marqueeSelectableItems = (0, react_1.useRef)(new Map());
|
|
543
544
|
const marqueeRegistrationCounter = (0, react_1.useRef)(0);
|
|
544
545
|
const [revealRequest, setRevealRequest] = (0, react_1.useState)(null);
|
|
546
|
+
const [inspectorRevealRequest, setInspectorRevealRequest] = (0, react_1.useState)(null);
|
|
547
|
+
const inspectorRevealTokenCounter = (0, react_1.useRef)(0);
|
|
545
548
|
(0, react_1.useEffect)(() => {
|
|
546
549
|
if (!canSelect) {
|
|
547
550
|
selectionScope.current = null;
|
|
551
|
+
setInspectorRevealRequest(null);
|
|
548
552
|
setRevealRequest(null);
|
|
549
553
|
selectionController.clear();
|
|
550
554
|
}
|
|
@@ -566,6 +570,13 @@ const TimelineSelectionProvider = ({ children }) => {
|
|
|
566
570
|
});
|
|
567
571
|
});
|
|
568
572
|
}, []);
|
|
573
|
+
const requestRevealSelectionItemInInspector = (0, react_1.useCallback)((item) => {
|
|
574
|
+
inspectorRevealTokenCounter.current += 1;
|
|
575
|
+
setInspectorRevealRequest({
|
|
576
|
+
item,
|
|
577
|
+
token: inspectorRevealTokenCounter.current,
|
|
578
|
+
});
|
|
579
|
+
}, []);
|
|
569
580
|
const expandParentsForSelectionItems = (0, react_1.useCallback)((items) => {
|
|
570
581
|
for (const item of items) {
|
|
571
582
|
if (item.type === 'guide') {
|
|
@@ -603,6 +614,12 @@ const TimelineSelectionProvider = ({ children }) => {
|
|
|
603
614
|
if (options.reveal) {
|
|
604
615
|
requestRevealSelectionItem(item);
|
|
605
616
|
}
|
|
617
|
+
if (options.revealInInspector) {
|
|
618
|
+
requestRevealSelectionItemInInspector(item);
|
|
619
|
+
}
|
|
620
|
+
else {
|
|
621
|
+
setInspectorRevealRequest(null);
|
|
622
|
+
}
|
|
606
623
|
if (selectionScope.current !== timelineSelectionScope) {
|
|
607
624
|
selectionController.clear();
|
|
608
625
|
}
|
|
@@ -611,6 +628,7 @@ const TimelineSelectionProvider = ({ children }) => {
|
|
|
611
628
|
}, [
|
|
612
629
|
canSelectItem,
|
|
613
630
|
expandParentsForSelectionItem,
|
|
631
|
+
requestRevealSelectionItemInInspector,
|
|
614
632
|
requestRevealSelectionItem,
|
|
615
633
|
selectionController,
|
|
616
634
|
timelineSelectionScope,
|
|
@@ -627,10 +645,17 @@ const TimelineSelectionProvider = ({ children }) => {
|
|
|
627
645
|
if (options.reveal && items.length === 1) {
|
|
628
646
|
requestRevealSelectionItem(items[0]);
|
|
629
647
|
}
|
|
648
|
+
if (options.revealInInspector && items.length === 1) {
|
|
649
|
+
requestRevealSelectionItemInInspector(items[0]);
|
|
650
|
+
}
|
|
651
|
+
else {
|
|
652
|
+
setInspectorRevealRequest(null);
|
|
653
|
+
}
|
|
630
654
|
selectionController.setSelectedItems(items);
|
|
631
655
|
}, [
|
|
632
656
|
canSelectItem,
|
|
633
657
|
expandParentsForSelectionItems,
|
|
658
|
+
requestRevealSelectionItemInInspector,
|
|
634
659
|
requestRevealSelectionItem,
|
|
635
660
|
selectionController,
|
|
636
661
|
timelineSelectionScope,
|
|
@@ -679,6 +704,7 @@ const TimelineSelectionProvider = ({ children }) => {
|
|
|
679
704
|
}, [canSelectItem]);
|
|
680
705
|
const clearSelection = (0, react_1.useCallback)(() => {
|
|
681
706
|
selectionScope.current = null;
|
|
707
|
+
setInspectorRevealRequest(null);
|
|
682
708
|
selectionController.clear();
|
|
683
709
|
}, [selectionController]);
|
|
684
710
|
const containsSelection = (0, react_1.useCallback)((nodePathInfo) => {
|
|
@@ -737,6 +763,7 @@ const TimelineSelectionProvider = ({ children }) => {
|
|
|
737
763
|
}, [selectionController]);
|
|
738
764
|
const value = (0, react_1.useMemo)(() => ({
|
|
739
765
|
canSelect,
|
|
766
|
+
inspectorRevealRequest,
|
|
740
767
|
revealRequest,
|
|
741
768
|
selectedItems: availableSelectedItems,
|
|
742
769
|
isSelected,
|
|
@@ -749,6 +776,7 @@ const TimelineSelectionProvider = ({ children }) => {
|
|
|
749
776
|
clearSelection,
|
|
750
777
|
}), [
|
|
751
778
|
canSelect,
|
|
779
|
+
inspectorRevealRequest,
|
|
752
780
|
revealRequest,
|
|
753
781
|
availableSelectedItems,
|
|
754
782
|
isSelected,
|
|
@@ -929,8 +957,7 @@ const useTimelineMarqueeSelection = () => {
|
|
|
929
957
|
captureTarget: target,
|
|
930
958
|
onMove: onPointerMove,
|
|
931
959
|
onEnd: (reason, endEvent) => {
|
|
932
|
-
if ((
|
|
933
|
-
endEvent) {
|
|
960
|
+
if ((0, pointer_session_1.isPointerSessionRelease)(reason, endEvent)) {
|
|
934
961
|
updateSelection(endEvent.clientX, endEvent.clientY);
|
|
935
962
|
}
|
|
936
963
|
cleanup();
|
|
@@ -960,7 +987,7 @@ const useTimelineMarqueeSelectableItem = (item, ref) => {
|
|
|
960
987
|
}, [item, ref, registerMarqueeSelectableItem]);
|
|
961
988
|
};
|
|
962
989
|
exports.useTimelineMarqueeSelectableItem = useTimelineMarqueeSelectableItem;
|
|
963
|
-
const useTimelineRowSelection = (nodePathInfo) => {
|
|
990
|
+
const useTimelineRowSelection = (nodePathInfo, revealInInspector = false) => {
|
|
964
991
|
const { canSelect, isSelected, selectItem } = (0, exports.useTimelineSelection)();
|
|
965
992
|
const selectableTimelineItemsRef = (0, react_1.useContext)(SelectableTimelineItemsContext);
|
|
966
993
|
const selectionItem = (0, react_1.useMemo)(() => (0, exports.getTimelineSelectionFromNodePathInfo)(nodePathInfo), [nodePathInfo]);
|
|
@@ -969,8 +996,8 @@ const useTimelineRowSelection = (nodePathInfo) => {
|
|
|
969
996
|
if (selectionItem === null) {
|
|
970
997
|
return;
|
|
971
998
|
}
|
|
972
|
-
selectItem(selectionItem, interaction, selectableTimelineItemsRef.current);
|
|
973
|
-
}, [selectItem, selectableTimelineItemsRef, selectionItem]);
|
|
999
|
+
selectItem(selectionItem, interaction, selectableTimelineItemsRef.current, { revealInInspector });
|
|
1000
|
+
}, [revealInInspector, selectItem, selectableTimelineItemsRef, selectionItem]);
|
|
974
1001
|
return {
|
|
975
1002
|
onSelect,
|
|
976
1003
|
selectable: canSelect && selectionItem !== null,
|
|
@@ -263,7 +263,7 @@ const TimelineSequenceInner = ({ s, connectedCompositions, windowWidth, nodePath
|
|
|
263
263
|
? Infinity
|
|
264
264
|
: naturalMediaDuration;
|
|
265
265
|
const effectiveMaxMediaDuration = s.loopDisplay ? null : maxMediaDuration;
|
|
266
|
-
const { canOpenInEditor,
|
|
266
|
+
const { canConfigureApps, canOpenInEditor, canOpenSource, codingAgentInfo, editorInfo, openInCodingAgent, openInEditor, openSource, originalLocation, } = (0, use_open_sequence_in_apps_1.useOpenSequenceInApps)(s);
|
|
267
267
|
const validatedLocation = (0, react_1.useMemo)(() => {
|
|
268
268
|
var _a;
|
|
269
269
|
if (!originalLocation ||
|
|
@@ -321,7 +321,7 @@ const TimelineSequenceInner = ({ s, connectedCompositions, windowWidth, nodePath
|
|
|
321
321
|
}
|
|
322
322
|
const action = (0, get_sequence_double_click_action_1.getSequenceDoubleClickAction)({
|
|
323
323
|
button: e.button,
|
|
324
|
-
|
|
324
|
+
canOpenSource,
|
|
325
325
|
numberOfConnectedCompositions: connectedCompositions.length,
|
|
326
326
|
sequenceWasDragged: dragAwareDoubleClick.consumePointerGestureWasDragged(),
|
|
327
327
|
});
|
|
@@ -338,12 +338,12 @@ const TimelineSequenceInner = ({ s, connectedCompositions, windowWidth, nodePath
|
|
|
338
338
|
}));
|
|
339
339
|
return;
|
|
340
340
|
}
|
|
341
|
-
|
|
341
|
+
openSource();
|
|
342
342
|
}, [
|
|
343
|
-
|
|
343
|
+
canOpenSource,
|
|
344
344
|
connectedCompositions,
|
|
345
345
|
dragAwareDoubleClick,
|
|
346
|
-
|
|
346
|
+
openSource,
|
|
347
347
|
s,
|
|
348
348
|
selectComposition,
|
|
349
349
|
sequenceFrameOffset,
|
|
@@ -354,7 +354,7 @@ const TimelineSequenceInner = ({ s, connectedCompositions, windowWidth, nodePath
|
|
|
354
354
|
}
|
|
355
355
|
performSequenceDoubleClick(e);
|
|
356
356
|
}, [dragAwareDoubleClick, performSequenceDoubleClick]);
|
|
357
|
-
const canHandleSequenceDoubleClick = connectedCompositions.length === 1 ||
|
|
357
|
+
const canHandleSequenceDoubleClick = connectedCompositions.length === 1 || canOpenSource;
|
|
358
358
|
const canDeleteFromSource = Boolean(nodePath && (validatedLocation === null || validatedLocation === void 0 ? void 0 : validatedLocation.source));
|
|
359
359
|
const deleteDisabled = !previewInteractive || !s.controls || !canDeleteFromSource;
|
|
360
360
|
const isProgrammaticallyDuplicated = ((_h = nodePathInfo === null || nodePathInfo === void 0 ? void 0 : nodePathInfo.numberOfSequencesWithThisNodePath) !== null && _h !== void 0 ? _h : 1) > 1;
|
|
@@ -204,7 +204,7 @@ const TimelineSequenceItemInner = ({ afterDropLineOffset, connectedCompositions,
|
|
|
204
204
|
const sequenceReorderWrapperRef = (0, react_1.useRef)(null);
|
|
205
205
|
const stopSequencePointerSession = (0, react_1.useRef)(null);
|
|
206
206
|
const suppressNextClick = (0, react_1.useRef)(false);
|
|
207
|
-
const { canOpenInEditor,
|
|
207
|
+
const { canConfigureApps, canOpenInEditor, canOpenSource, codingAgentInfo, editorInfo, openInCodingAgent, openInEditor, openSource, originalLocation, } = (0, use_open_sequence_in_apps_1.useOpenSequenceInApps)(sequence);
|
|
208
208
|
const validatedLocation = (0, react_1.useMemo)(() => {
|
|
209
209
|
var _a;
|
|
210
210
|
if (!originalLocation ||
|
|
@@ -477,10 +477,10 @@ const TimelineSequenceItemInner = ({ afterDropLineOffset, connectedCompositions,
|
|
|
477
477
|
updateDropTarget(currentClientY);
|
|
478
478
|
},
|
|
479
479
|
});
|
|
480
|
-
stopSequencePointerSession.current = (0, pointer_session_1.
|
|
480
|
+
stopSequencePointerSession.current = (0, pointer_session_1.startDeferredCapturedPointerSession)({
|
|
481
481
|
captureTarget: sourceElement,
|
|
482
482
|
event: e.nativeEvent,
|
|
483
|
-
onMove: (pointerEvent) => {
|
|
483
|
+
onMove: (pointerEvent, capturePointer) => {
|
|
484
484
|
currentClientY = pointerEvent.clientY;
|
|
485
485
|
if (!didDrag &&
|
|
486
486
|
Math.hypot(pointerEvent.clientX - startX, pointerEvent.clientY - startY) < SEQUENCE_REORDER_POINTER_THRESHOLD) {
|
|
@@ -488,6 +488,7 @@ const TimelineSequenceItemInner = ({ afterDropLineOffset, connectedCompositions,
|
|
|
488
488
|
}
|
|
489
489
|
if (!didDrag) {
|
|
490
490
|
didDrag = true;
|
|
491
|
+
capturePointer();
|
|
491
492
|
previousUserSelect = document.body.style.userSelect;
|
|
492
493
|
previousWebkitUserSelect = document.body.style.webkitUserSelect;
|
|
493
494
|
document.body.style.userSelect = 'none';
|
|
@@ -515,7 +516,8 @@ const TimelineSequenceItemInner = ({ afterDropLineOffset, connectedCompositions,
|
|
|
515
516
|
autoScroll.update({ clientX: startX, clientY: pointerEvent.clientY });
|
|
516
517
|
},
|
|
517
518
|
onEnd: (reason, pointerEvent) => {
|
|
518
|
-
|
|
519
|
+
const released = (0, pointer_session_1.isPointerSessionRelease)(reason, pointerEvent);
|
|
520
|
+
if (released && didDrag) {
|
|
519
521
|
updateDropTarget(pointerEvent.clientY);
|
|
520
522
|
}
|
|
521
523
|
autoScroll.stop();
|
|
@@ -531,7 +533,7 @@ const TimelineSequenceItemInner = ({ afterDropLineOffset, connectedCompositions,
|
|
|
531
533
|
setTimeout(() => {
|
|
532
534
|
suppressNextClick.current = false;
|
|
533
535
|
}, 0);
|
|
534
|
-
if (
|
|
536
|
+
if (released && activeDrop) {
|
|
535
537
|
activeDropTarget === null || activeDropTarget === void 0 ? void 0 : activeDropTarget.reorder(activeDrop);
|
|
536
538
|
}
|
|
537
539
|
},
|
|
@@ -646,7 +648,7 @@ const TimelineSequenceItemInner = ({ afterDropLineOffset, connectedCompositions,
|
|
|
646
648
|
}
|
|
647
649
|
const action = (0, get_sequence_double_click_action_1.getSequenceDoubleClickAction)({
|
|
648
650
|
button: e.button,
|
|
649
|
-
|
|
651
|
+
canOpenSource,
|
|
650
652
|
numberOfConnectedCompositions: connectedCompositions.length,
|
|
651
653
|
// The track list row reorders via native drag-and-drop, which
|
|
652
654
|
// already suppresses `dblclick` after a drag.
|
|
@@ -665,16 +667,16 @@ const TimelineSequenceItemInner = ({ afterDropLineOffset, connectedCompositions,
|
|
|
665
667
|
}));
|
|
666
668
|
return;
|
|
667
669
|
}
|
|
668
|
-
|
|
670
|
+
openSource();
|
|
669
671
|
}, [
|
|
670
|
-
|
|
672
|
+
canOpenSource,
|
|
671
673
|
connectedCompositions,
|
|
672
|
-
|
|
674
|
+
openSource,
|
|
673
675
|
selectComposition,
|
|
674
676
|
sequence,
|
|
675
677
|
sequenceFrameOffset,
|
|
676
678
|
]);
|
|
677
|
-
const canHandleSequenceDoubleClick = connectedCompositions.length === 1 ||
|
|
679
|
+
const canHandleSequenceDoubleClick = connectedCompositions.length === 1 || canOpenSource;
|
|
678
680
|
const canRenameSelectedSequence = canRenameThisSequence &&
|
|
679
681
|
selected &&
|
|
680
682
|
selectedItems.length === 1 &&
|