@remotion/studio 4.0.499 → 4.0.501
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Studio.js +1 -1
- package/dist/api/delete-static-file.js +8 -3
- package/dist/api/rename-static-file.js +8 -0
- package/dist/api/watch-public-folder.js +2 -1
- package/dist/api/watch-static-file.js +2 -1
- package/dist/api/write-static-file.js +8 -3
- package/dist/components/AssetSelector.js +11 -7
- package/dist/components/AssetSelectorItem.d.ts +25 -0
- package/dist/components/AssetSelectorItem.js +116 -80
- package/dist/components/Canvas.js +6 -1
- package/dist/components/CaptionInspector.d.ts +10 -0
- package/dist/components/CaptionInspector.js +24 -0
- package/dist/components/CaptionTextEditor.d.ts +9 -0
- package/dist/components/CaptionTextEditor.js +132 -0
- package/dist/components/CompositionSelector.js +2 -32
- package/dist/components/ControlButton.js +1 -0
- package/dist/components/CurrentAsset.js +3 -2
- package/dist/components/EditorContexts.d.ts +0 -1
- package/dist/components/EditorContexts.js +2 -2
- package/dist/components/ExplorerPanel.js +2 -1
- package/dist/components/ExplorerPanelRef.d.ts +2 -0
- package/dist/components/FpsCounter.js +3 -3
- package/dist/components/FullscreenToggle.js +2 -1
- package/dist/components/GlobalKeybindings.js +9 -1
- package/dist/components/InitialCompositionLoader.d.ts +1 -1
- package/dist/components/InlineAction.d.ts +2 -1
- package/dist/components/InlineAction.js +3 -2
- package/dist/components/InlineCaptionInspector.d.ts +11 -0
- package/dist/components/InlineCaptionInspector.js +108 -0
- package/dist/components/InlineDropdown.d.ts +1 -1
- package/dist/components/InlineDropdown.js +3 -2
- package/dist/components/InspectorPanel/AlignmentControls.d.ts +2 -2
- package/dist/components/InspectorPanel/AlignmentControls.js +5 -2
- package/dist/components/InspectorPanel/CompositionInspector.js +12 -9
- package/dist/components/InspectorPanel/CompositionMetadata.js +170 -57
- package/dist/components/InspectorPanel/ConnectedCompositionsSection.d.ts +2 -2
- package/dist/components/InspectorPanel/SelectedInspector.d.ts +1 -0
- package/dist/components/InspectorPanel/SelectedInspector.js +2 -2
- package/dist/components/InspectorPanel/SequenceInspectorHeader.d.ts +3 -3
- package/dist/components/InspectorPanel/SequenceSelectionInspector.d.ts +1 -0
- package/dist/components/InspectorPanel/SequenceSelectionInspector.js +10 -10
- package/dist/components/InspectorPanel/common.d.ts +17 -4
- package/dist/components/InspectorPanel/common.js +60 -6
- package/dist/components/InspectorPanel/inspector-section-collapse.d.ts +22 -0
- package/dist/components/InspectorPanel/inspector-section-collapse.js +165 -0
- package/dist/components/InspectorPanel/styles.js +7 -1
- package/dist/components/InspectorPanel/use-composition-actions.d.ts +3 -0
- package/dist/components/InspectorPanel/use-composition-actions.js +91 -5
- package/dist/components/InspectorPanel/use-track-for-selection.d.ts +1 -1
- package/dist/components/InspectorPanel.js +2 -2
- package/dist/components/InspectorSequenceSection.d.ts +2 -1
- package/dist/components/InspectorSequenceSection.js +279 -25
- package/dist/components/KeyboardShortcutsExplainer.js +4 -2
- package/dist/components/Menu/MenuItem.js +2 -1
- package/dist/components/MenuCompositionName.js +30 -7
- package/dist/components/MenuToolbar.d.ts +0 -1
- package/dist/components/MenuToolbar.js +15 -7
- package/dist/components/MobilePanel.d.ts +2 -1
- package/dist/components/MobilePanel.js +29 -25
- package/dist/components/ModalContainer.d.ts +1 -0
- package/dist/components/ModalContainer.js +2 -2
- package/dist/components/Modals.js +1 -1
- package/dist/components/NewComposition/DismissableModal.d.ts +1 -0
- package/dist/components/NewComposition/DismissableModal.js +2 -2
- package/dist/components/NewComposition/InputDragger.d.ts +7 -0
- package/dist/components/NewComposition/InputDragger.js +119 -8
- package/dist/components/OutlineToggle.d.ts +1 -3
- package/dist/components/OutlineToggle.js +2 -2
- package/dist/components/PreviewToolbar.js +10 -4
- package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.d.ts +7 -0
- package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +45 -0
- package/dist/components/QuickSwitcher/NoResults.d.ts +1 -1
- package/dist/components/QuickSwitcher/NoResults.js +1 -0
- package/dist/components/QuickSwitcher/QuickSwitcher.d.ts +10 -0
- package/dist/components/QuickSwitcher/QuickSwitcher.js +6 -2
- package/dist/components/QuickSwitcher/QuickSwitcherContent.d.ts +10 -0
- package/dist/components/QuickSwitcher/QuickSwitcherContent.js +95 -13
- package/dist/components/QuickSwitcher/QuickSwitcherResult.d.ts +4 -0
- package/dist/components/QuickSwitcher/QuickSwitcherResult.js +11 -8
- package/dist/components/QuickSwitcher/asset-search.d.ts +9 -0
- package/dist/components/QuickSwitcher/asset-search.js +42 -0
- package/dist/components/RenderQueue/ClientRenderQueueProcessor.d.ts +0 -1
- package/dist/components/RenderQueue/ClientRenderQueueProcessor.js +3 -14
- package/dist/components/RenderQueue/RenderQueueDownloadItem.js +2 -2
- package/dist/components/SelectedOutlineCropControls.d.ts +8 -0
- package/dist/components/SelectedOutlineCropControls.js +299 -0
- package/dist/components/SelectedOutlineElement.js +84 -47
- package/dist/components/SelectedOutlineOverlay.d.ts +2 -2
- package/dist/components/SelectedOutlineOverlay.js +147 -16
- package/dist/components/SequencePropsSubscriptionProvider.d.ts +2 -0
- package/dist/components/SequencePropsSubscriptionProvider.js +31 -3
- package/dist/components/ShowOutlinesProvider.js +4 -1
- package/dist/components/SidebarCollapserControls.d.ts +3 -1
- package/dist/components/SidebarCollapserControls.js +34 -29
- package/dist/components/SnappingToggle.d.ts +1 -3
- package/dist/components/SnappingToggle.js +2 -2
- package/dist/components/Timeline/Timeline.js +19 -5
- package/dist/components/Timeline/TimelineAssetField.d.ts +9 -1
- package/dist/components/Timeline/TimelineAssetField.js +53 -100
- package/dist/components/Timeline/TimelineClipboardKeybindings.d.ts +7 -3
- package/dist/components/Timeline/TimelineClipboardKeybindings.js +65 -38
- package/dist/components/Timeline/TimelineColorField.js +20 -1
- package/dist/components/Timeline/TimelineEffectPropItem.js +8 -77
- package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +8 -1
- package/dist/components/Timeline/TimelineHeightContainer.d.ts +2 -2
- package/dist/components/Timeline/TimelineKeyframeTracksContext.d.ts +3 -3
- package/dist/components/Timeline/TimelineList.d.ts +2 -2
- package/dist/components/Timeline/TimelinePrimitiveFieldValue.d.ts +7 -2
- package/dist/components/Timeline/TimelinePrimitiveFieldValue.js +10 -2
- package/dist/components/Timeline/TimelineRowChrome.d.ts +3 -0
- package/dist/components/Timeline/TimelineRowChrome.js +4 -3
- package/dist/components/Timeline/TimelineSelection.d.ts +9 -7
- package/dist/components/Timeline/TimelineSelection.js +17 -12
- package/dist/components/Timeline/TimelineSequence.js +2 -9
- package/dist/components/Timeline/TimelineSequenceItem.js +61 -15
- package/dist/components/Timeline/TimelineSequencePropItem.js +36 -85
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +0 -1
- package/dist/components/Timeline/TimelineTrack.d.ts +2 -2
- package/dist/components/Timeline/TimelineTrack.js +4 -2
- package/dist/components/Timeline/TimelineTracks.d.ts +2 -2
- package/dist/components/Timeline/border-radius-representation.d.ts +16 -0
- package/dist/components/Timeline/border-radius-representation.js +60 -0
- package/dist/components/Timeline/delete-selected-timeline-item.js +1 -6
- package/dist/components/Timeline/find-track-for-node-path-info.d.ts +1 -1
- package/dist/components/Timeline/get-sequence-context-menu-items.js +14 -12
- package/dist/components/Timeline/get-sequence-prop-reset-changes.d.ts +10 -0
- package/dist/components/Timeline/get-sequence-prop-reset-changes.js +33 -0
- package/dist/components/Timeline/reset-selected-timeline-props.js +20 -18
- package/dist/components/Timeline/save-effect-prop.d.ts +10 -0
- package/dist/components/Timeline/save-effect-prop.js +52 -1
- package/dist/components/Timeline/save-sequence-prop.d.ts +12 -1
- package/dist/components/Timeline/save-sequence-prop.js +25 -1
- package/dist/components/Timeline/should-show-track-in-timeline.d.ts +2 -2
- package/dist/components/Timeline/timeline-asset-link.js +17 -1
- package/dist/components/Timeline/timeline-field-display-utils.js +1 -0
- package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.d.ts +4 -0
- package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.js +9 -3
- package/dist/components/Timeline/use-timeline-asset-drop.js +4 -0
- package/dist/components/Timeline/use-timeline-height.d.ts +2 -2
- package/dist/components/TopPanel.js +2 -2
- package/dist/components/UndoRedoButtons.js +42 -11
- package/dist/components/composition-drop-preview.js +1 -0
- package/dist/components/handle-drop.d.ts +3 -2
- package/dist/components/handle-drop.js +2 -1
- package/dist/components/import-assets.d.ts +4 -2
- package/dist/components/import-assets.js +20 -7
- package/dist/components/menu-toolbar-height.d.ts +1 -0
- package/dist/components/menu-toolbar-height.js +4 -0
- package/dist/components/selected-outline-drag.d.ts +41 -4
- package/dist/components/selected-outline-drag.js +179 -2
- package/dist/components/selected-outline-geometry.d.ts +1 -0
- package/dist/components/selected-outline-measurement.d.ts +11 -0
- package/dist/components/selected-outline-measurement.js +64 -3
- package/dist/components/selected-outline-types.d.ts +44 -1
- package/dist/components/selected-outline-types.js +21 -1
- package/dist/components/use-element-overwrite-confirmation.d.ts +2 -0
- package/dist/components/use-element-overwrite-confirmation.js +73 -0
- package/dist/components/use-static-files.js +7 -2
- package/dist/error-overlay/react-overlay/effects/resolve-file-source.js +13 -2
- package/dist/error-overlay/remotion-overlay/Overlay.js +3 -3
- package/dist/error-overlay/remotion-overlay/ShortcutHint.js +2 -3
- package/dist/esm/{chunk-pk1zwsn1.js → chunk-n1kj09yv.js} +10618 -8002
- package/dist/esm/index.mjs +24 -8
- package/dist/esm/internals.mjs +10618 -8002
- package/dist/esm/previewEntry.mjs +40002 -37388
- package/dist/esm/renderEntry.mjs +1 -1
- package/dist/helpers/browser-studio-operations.d.ts +3 -0
- package/dist/helpers/browser-studio-operations.js +14 -0
- package/dist/helpers/calculate-timeline.d.ts +2 -2
- package/dist/helpers/calculate-timeline.js +8 -28
- package/dist/helpers/client-id.d.ts +0 -1
- package/dist/helpers/client-id.js +15 -10
- package/dist/helpers/download-blob.d.ts +1 -0
- package/dist/helpers/download-blob.js +15 -0
- package/dist/helpers/get-timeline-sequence-sort-key.d.ts +3 -10
- package/dist/helpers/get-timeline-sequence-sort-key.js +5 -13
- package/dist/helpers/inject-css.js +5 -3
- package/dist/helpers/interactivity-enabled.d.ts +1 -0
- package/dist/helpers/interactivity-enabled.js +7 -2
- package/dist/helpers/is-mac.d.ts +1 -0
- package/dist/helpers/is-mac.js +4 -0
- package/dist/helpers/open-in-editor.d.ts +5 -1
- package/dist/helpers/open-in-editor.js +39 -4
- package/dist/helpers/preview-server-events.js +46 -9
- package/dist/helpers/sort-by-nonce-history.js +97 -19
- package/dist/helpers/use-create-composition.js +8 -6
- package/dist/helpers/use-keybinding.js +2 -3
- package/dist/helpers/use-menu-structure.js +39 -1
- package/dist/hot-middleware-client/client.js +3 -3
- package/dist/icons/border-radius.d.ts +4 -0
- package/dist/icons/border-radius.js +8 -0
- package/dist/icons/caret.d.ts +1 -0
- package/dist/icons/caret.js +2 -2
- package/dist/icons/fullscreen.d.ts +4 -0
- package/dist/icons/fullscreen.js +6 -0
- package/dist/icons/pen.d.ts +5 -0
- package/dist/icons/pen.js +8 -0
- package/dist/previewEntry.js +1 -1
- package/dist/state/modals.d.ts +9 -0
- package/dist/state/timeline-sequence-hover.d.ts +17 -0
- package/dist/state/timeline-sequence-hover.js +33 -0
- package/package.json +13 -12
- package/dist/helpers/get-timeline-sequence-hash.d.ts +0 -6
- package/dist/helpers/get-timeline-sequence-hash.js +0 -33
|
@@ -1,45 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TimelineAssetField = exports.
|
|
3
|
+
exports.TimelineAssetField = exports.toFileToken = exports.AssetSelectionContext = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const no_react_1 = require("remotion/no-react");
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
maxWidth: 180,
|
|
16
|
-
};
|
|
17
|
-
const remoteAssetStyle = {
|
|
18
|
-
display: 'inline-block',
|
|
19
|
-
marginLeft: 8,
|
|
20
|
-
maxWidth: 180,
|
|
21
|
-
overflow: 'hidden',
|
|
22
|
-
textOverflow: 'ellipsis',
|
|
23
|
-
verticalAlign: 'middle',
|
|
24
|
-
whiteSpace: 'nowrap',
|
|
7
|
+
const pen_1 = require("../../icons/pen");
|
|
8
|
+
const modals_1 = require("../../state/modals");
|
|
9
|
+
const InlineAction_1 = require("../InlineAction");
|
|
10
|
+
const common_1 = require("../InspectorPanel/common");
|
|
11
|
+
const penIcon = {
|
|
12
|
+
display: 'block',
|
|
13
|
+
height: 14,
|
|
14
|
+
width: 14,
|
|
25
15
|
};
|
|
16
|
+
exports.AssetSelectionContext = (0, react_1.createContext)({
|
|
17
|
+
getSourceAction: () => null,
|
|
18
|
+
initialQuery: '',
|
|
19
|
+
sourceAction: null,
|
|
20
|
+
});
|
|
26
21
|
const toFileToken = (name) => {
|
|
27
22
|
return `${no_react_1.NoReactInternals.FILE_TOKEN}${name
|
|
28
23
|
.split('/')
|
|
29
24
|
.map(encodeURIComponent)
|
|
30
25
|
.join('/')}`;
|
|
31
26
|
};
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
27
|
+
exports.toFileToken = toFileToken;
|
|
28
|
+
const TimelineAssetField = ({ field, effectiveValue, propStatus, onSave, onDragValueChange, onDragEnd, }) => {
|
|
29
|
+
if (field.fieldSchema.type !== 'asset') {
|
|
30
|
+
throw new Error('TimelineAssetField rendered for non-asset field');
|
|
31
|
+
}
|
|
32
|
+
const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
|
|
33
|
+
const { getSourceAction, initialQuery, sourceAction } = (0, react_1.useContext)(exports.AssetSelectionContext);
|
|
34
|
+
const inlineSourceAction = (0, react_1.useMemo)(() => {
|
|
35
|
+
if (field.key !== 'src') {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
return typeof effectiveValue === 'string'
|
|
39
|
+
? getSourceAction(effectiveValue)
|
|
40
|
+
: sourceAction;
|
|
41
|
+
}, [effectiveValue, field.key, getSourceAction, sourceAction]);
|
|
42
|
+
const onSelect = (0, react_1.useCallback)((assetName, previewValue) => {
|
|
43
|
+
const sourceValue = (0, exports.toFileToken)(assetName);
|
|
43
44
|
if (sourceValue === propStatus.codeValue) {
|
|
44
45
|
return;
|
|
45
46
|
}
|
|
@@ -48,78 +49,30 @@ const TimelineStaticFileAssetField = ({ propStatus, effectiveValue, onSave, onDr
|
|
|
48
49
|
onDragEnd();
|
|
49
50
|
});
|
|
50
51
|
}, [propStatus.codeValue, onDragValueChange, onSave, onDragEnd]);
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
try {
|
|
62
|
-
if (!existing) {
|
|
63
|
-
await (0, write_static_file_1.writeStaticFile)({
|
|
64
|
-
contents: await file.arrayBuffer(),
|
|
65
|
-
filePath: file.name,
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
const fileToken = toFileToken(file.name);
|
|
69
|
-
onSelect(fileToken, toStaticFileUrl(fileToken));
|
|
70
|
-
if (!existing) {
|
|
71
|
-
(0, NotificationCenter_1.showNotification)(`Created ${file.name} in public folder`, 3000);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
catch (error) {
|
|
75
|
-
(0, NotificationCenter_1.showNotification)(`Could not upload asset: ${error instanceof Error ? error.message : String(error)}`, 4000);
|
|
76
|
-
}
|
|
77
|
-
}, [onSelect, staticFiles]);
|
|
78
|
-
const items = (0, react_1.useMemo)(() => {
|
|
79
|
-
const publicFileItems = staticFiles.map((file) => {
|
|
80
|
-
const fileToken = toFileToken(file.name);
|
|
81
|
-
return {
|
|
82
|
-
type: 'item',
|
|
83
|
-
id: fileToken,
|
|
84
|
-
value: fileToken,
|
|
85
|
-
label: file.name,
|
|
86
|
-
onClick: () => onSelect(fileToken, file.src),
|
|
87
|
-
keyHint: null,
|
|
88
|
-
leftItem: fileToken === current ? jsx_runtime_1.jsx(Checkmark_1.Checkmark, {}) : null,
|
|
89
|
-
subMenu: null,
|
|
90
|
-
quickSwitcherLabel: null,
|
|
91
|
-
};
|
|
52
|
+
const openAssetSelection = (0, react_1.useCallback)(() => {
|
|
53
|
+
setSelectedModal({
|
|
54
|
+
type: 'quick-switcher',
|
|
55
|
+
mode: 'assets',
|
|
56
|
+
invocationTimestamp: Date.now(),
|
|
57
|
+
assetSelection: {
|
|
58
|
+
initialQuery,
|
|
59
|
+
onSelected: (asset) => onSelect(asset.name, asset.src),
|
|
60
|
+
},
|
|
61
|
+
compositionSelection: null,
|
|
92
62
|
});
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
onClick: () => {
|
|
102
|
-
upload().catch(() => undefined);
|
|
103
|
-
},
|
|
104
|
-
keyHint: null,
|
|
105
|
-
leftItem: null,
|
|
106
|
-
subMenu: null,
|
|
107
|
-
quickSwitcherLabel: null,
|
|
63
|
+
}, [initialQuery, onSelect, setSelectedModal]);
|
|
64
|
+
const action = (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { onClick: openAssetSelection, disabled: window.remotion_isReadOnlyStudio, title: "Change source", renderAction: (color) => jsx_runtime_1.jsx(pen_1.PenIcon, { color: color, style: penIcon }) }));
|
|
65
|
+
if (inlineSourceAction === null) {
|
|
66
|
+
return action;
|
|
67
|
+
}
|
|
68
|
+
return (jsx_runtime_1.jsx(common_1.InspectorInlineAction, { ...inlineSourceAction, size: "compact", variant: {
|
|
69
|
+
type: 'segmented',
|
|
70
|
+
trailing: {
|
|
108
71
|
disabled: window.remotion_isReadOnlyStudio,
|
|
72
|
+
onClick: openAssetSelection,
|
|
73
|
+
renderIcon: (color) => jsx_runtime_1.jsx(pen_1.PenIcon, { color: color, style: penIcon }),
|
|
74
|
+
title: 'Change source',
|
|
109
75
|
},
|
|
110
|
-
|
|
111
|
-
}, [current, onSelect, staticFiles, upload]);
|
|
112
|
-
return (jsx_runtime_1.jsx(ComboBox_1.Combobox, { size: "small", title: current, selectedId: current, values: items, style: comboboxStyle }));
|
|
113
|
-
};
|
|
114
|
-
const TimelineAssetField = (props) => {
|
|
115
|
-
var _a;
|
|
116
|
-
if (props.field.fieldSchema.type !== 'asset') {
|
|
117
|
-
throw new Error('TimelineAssetField rendered for non-asset field');
|
|
118
|
-
}
|
|
119
|
-
if (!(0, exports.isStaticFileAssetValue)(props.effectiveValue)) {
|
|
120
|
-
const remote = String((_a = props.effectiveValue) !== null && _a !== void 0 ? _a : '');
|
|
121
|
-
return (jsx_runtime_1.jsx("span", { style: remoteAssetStyle, title: remote, children: remote }));
|
|
122
|
-
}
|
|
123
|
-
return jsx_runtime_1.jsx(TimelineStaticFileAssetField, { ...props });
|
|
76
|
+
} }));
|
|
124
77
|
};
|
|
125
78
|
exports.TimelineAssetField = TimelineAssetField;
|
|
@@ -14,16 +14,19 @@ export type PasteEffectsTarget = {
|
|
|
14
14
|
} | {
|
|
15
15
|
readonly type: 'unsupported';
|
|
16
16
|
};
|
|
17
|
-
|
|
18
|
-
readonly type: 'valid';
|
|
17
|
+
type PasteEffectPropEditTarget = {
|
|
19
18
|
readonly fileName: string;
|
|
20
19
|
readonly nodePath: SequencePropsSubscriptionKey;
|
|
21
20
|
readonly effectIndex: number;
|
|
22
21
|
readonly fieldKey: string;
|
|
23
22
|
readonly defaultValue: string | null;
|
|
24
23
|
readonly schema: InteractivitySchema;
|
|
24
|
+
};
|
|
25
|
+
export type PasteEffectPropTarget = {
|
|
26
|
+
readonly type: 'valid';
|
|
27
|
+
readonly targets: PasteEffectPropEditTarget[];
|
|
25
28
|
} | {
|
|
26
|
-
readonly type: 'none' | '
|
|
29
|
+
readonly type: 'none' | 'unsupported' | 'effect-type-mismatch' | 'prop-mismatch' | 'uncopyable';
|
|
27
30
|
};
|
|
28
31
|
export declare const getPasteEffectsTarget: (selectedItems: readonly TimelineSelection[]) => PasteEffectsTarget;
|
|
29
32
|
export declare const getSnapshotsFromSelection: ({ selection, propStatuses, }: {
|
|
@@ -72,3 +75,4 @@ export declare const getPasteEffectPropTarget: ({ selectedItems, payload, propSt
|
|
|
72
75
|
readonly overrideIdsToNodePaths: OverrideIdToNodePaths;
|
|
73
76
|
}) => PasteEffectPropTarget;
|
|
74
77
|
export declare const TimelineClipboardKeybindings: React.FC;
|
|
78
|
+
export {};
|
|
@@ -285,18 +285,8 @@ const getEasingClipboardDataFromSelection = ({ selection, sequences, overrideIds
|
|
|
285
285
|
};
|
|
286
286
|
};
|
|
287
287
|
exports.getEasingClipboardDataFromSelection = getEasingClipboardDataFromSelection;
|
|
288
|
-
const
|
|
288
|
+
const getPasteEffectPropTargetForSelection = ({ selection, payload, propStatuses, sequences, overrideIdsToNodePaths, }) => {
|
|
289
289
|
var _a;
|
|
290
|
-
if (selectedItems.length === 0) {
|
|
291
|
-
return { type: 'none' };
|
|
292
|
-
}
|
|
293
|
-
if (selectedItems.length !== 1) {
|
|
294
|
-
return { type: 'multiple' };
|
|
295
|
-
}
|
|
296
|
-
const [selection] = selectedItems;
|
|
297
|
-
if (!selection) {
|
|
298
|
-
return { type: 'none' };
|
|
299
|
-
}
|
|
300
290
|
if (selection.type !== 'sequence-effect-prop' &&
|
|
301
291
|
selection.type !== 'sequence-effect') {
|
|
302
292
|
return { type: 'none' };
|
|
@@ -348,12 +338,42 @@ const getPasteEffectPropTarget = ({ selectedItems, payload, propStatuses, sequen
|
|
|
348
338
|
}
|
|
349
339
|
return {
|
|
350
340
|
type: 'valid',
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
341
|
+
target: {
|
|
342
|
+
fileName: selection.nodePathInfo.sequenceSubscriptionKey.absolutePath,
|
|
343
|
+
nodePath: selection.nodePathInfo.sequenceSubscriptionKey,
|
|
344
|
+
effectIndex: target.effectIndex,
|
|
345
|
+
fieldKey: target.fieldKey,
|
|
346
|
+
defaultValue: getDefaultValue(fieldSchema),
|
|
347
|
+
schema: effect.schema,
|
|
348
|
+
},
|
|
349
|
+
};
|
|
350
|
+
};
|
|
351
|
+
const getPasteEffectPropTarget = ({ selectedItems, payload, propStatuses, sequences, overrideIdsToNodePaths, }) => {
|
|
352
|
+
if (selectedItems.length === 0) {
|
|
353
|
+
return { type: 'none' };
|
|
354
|
+
}
|
|
355
|
+
const targets = [];
|
|
356
|
+
for (const selection of selectedItems) {
|
|
357
|
+
const result = getPasteEffectPropTargetForSelection({
|
|
358
|
+
selection,
|
|
359
|
+
payload,
|
|
360
|
+
propStatuses,
|
|
361
|
+
sequences,
|
|
362
|
+
overrideIdsToNodePaths,
|
|
363
|
+
});
|
|
364
|
+
if (result.type !== 'valid') {
|
|
365
|
+
return result;
|
|
366
|
+
}
|
|
367
|
+
targets.push(result.target);
|
|
368
|
+
}
|
|
369
|
+
return {
|
|
370
|
+
type: 'valid',
|
|
371
|
+
targets: [
|
|
372
|
+
...new Map(targets.map((target) => [
|
|
373
|
+
`${makeTargetKey(target.nodePath)}:${target.effectIndex}:${target.fieldKey}`,
|
|
374
|
+
target,
|
|
375
|
+
])).values(),
|
|
376
|
+
],
|
|
357
377
|
};
|
|
358
378
|
};
|
|
359
379
|
exports.getPasteEffectPropTarget = getPasteEffectPropTarget;
|
|
@@ -730,11 +750,8 @@ const TimelineClipboardKeybindings = () => {
|
|
|
730
750
|
});
|
|
731
751
|
if (effectPropTarget.type !== 'valid') {
|
|
732
752
|
switch (effectPropTarget.type) {
|
|
733
|
-
case 'multiple':
|
|
734
|
-
(0, NotificationCenter_1.showNotification)('Select one target effect prop or effect to paste onto', 3000);
|
|
735
|
-
return;
|
|
736
753
|
case 'none':
|
|
737
|
-
(0, NotificationCenter_1.showNotification)('Select
|
|
754
|
+
(0, NotificationCenter_1.showNotification)('Select matching effect props or effects to paste onto', 3000);
|
|
738
755
|
return;
|
|
739
756
|
case 'unsupported':
|
|
740
757
|
(0, NotificationCenter_1.showNotification)('This sequence does not support effects', 3000);
|
|
@@ -752,26 +769,36 @@ const TimelineClipboardKeybindings = () => {
|
|
|
752
769
|
throw new Error(`Unexpected paste target: ${effectPropTarget}`);
|
|
753
770
|
}
|
|
754
771
|
}
|
|
755
|
-
return (0, save_effect_prop_1.
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
772
|
+
return (0, save_effect_prop_1.saveMultipleEffectProps)({
|
|
773
|
+
changes: effectPropTarget.targets.map((pasteTarget) => ({
|
|
774
|
+
fileName: pasteTarget.fileName,
|
|
775
|
+
nodePath: pasteTarget.nodePath,
|
|
776
|
+
effectIndex: pasteTarget.effectIndex,
|
|
777
|
+
fieldKey: pasteTarget.fieldKey,
|
|
778
|
+
...(effectPropResult.data.param.type === 'static'
|
|
779
|
+
? {
|
|
780
|
+
type: 'value',
|
|
781
|
+
value: effectPropResult.data.param.value,
|
|
782
|
+
}
|
|
783
|
+
: {
|
|
784
|
+
type: 'effect-param',
|
|
785
|
+
effectParam: effectPropResult.data.param,
|
|
786
|
+
}),
|
|
787
|
+
defaultValue: pasteTarget.defaultValue,
|
|
788
|
+
schema: pasteTarget.schema,
|
|
789
|
+
})),
|
|
771
790
|
setPropStatuses,
|
|
772
791
|
clientId,
|
|
792
|
+
undoLabel: effectPropTarget.targets.length > 1
|
|
793
|
+
? 'Paste effect prop onto selected effects'
|
|
794
|
+
: 'Paste effect prop',
|
|
795
|
+
redoLabel: effectPropTarget.targets.length > 1
|
|
796
|
+
? 'Reapply effect prop paste onto selected effects'
|
|
797
|
+
: 'Reapply effect prop paste',
|
|
773
798
|
}).then(() => {
|
|
774
|
-
(0, NotificationCenter_1.showNotification)(
|
|
799
|
+
(0, NotificationCenter_1.showNotification)(effectPropTarget.targets.length > 1
|
|
800
|
+
? 'Pasted effect prop onto selected effects'
|
|
801
|
+
: 'Pasted effect prop', 2000);
|
|
775
802
|
});
|
|
776
803
|
}
|
|
777
804
|
const result = envelope === null
|
|
@@ -12,8 +12,22 @@ const containerStyle = {
|
|
|
12
12
|
};
|
|
13
13
|
const SWATCH_WIDTH = 20;
|
|
14
14
|
const SWATCH_HEIGHT = 15;
|
|
15
|
+
const DEFAULT_SET_COLOR = '#808080';
|
|
16
|
+
const noneLabelStyle = {
|
|
17
|
+
color: colors_1.LIGHT_TEXT,
|
|
18
|
+
fontSize: 12,
|
|
19
|
+
};
|
|
20
|
+
const setButtonStyle = {
|
|
21
|
+
background: 'none',
|
|
22
|
+
border: 'none',
|
|
23
|
+
color: colors_1.BLUE,
|
|
24
|
+
cursor: 'pointer',
|
|
25
|
+
fontSize: 12,
|
|
26
|
+
margin: 0,
|
|
27
|
+
padding: 0,
|
|
28
|
+
};
|
|
15
29
|
const TimelineColorField = ({ field, effectiveValue, propStatus, onSave, onDragValueChange, onDragEnd, }) => {
|
|
16
|
-
var _a;
|
|
30
|
+
var _a, _b;
|
|
17
31
|
const currentValue = typeof effectiveValue === 'string'
|
|
18
32
|
? effectiveValue
|
|
19
33
|
: field.fieldSchema.type === 'color'
|
|
@@ -33,6 +47,11 @@ const TimelineColorField = ({ field, effectiveValue, propStatus, onSave, onDragV
|
|
|
33
47
|
marginLeft: 5,
|
|
34
48
|
};
|
|
35
49
|
}, []);
|
|
50
|
+
if (currentValue === 'none') {
|
|
51
|
+
return (jsx_runtime_1.jsxs("span", { style: containerStyle, children: [
|
|
52
|
+
jsx_runtime_1.jsx("span", { style: noneLabelStyle, children: "None" }), jsx_runtime_1.jsx("button", { type: "button", style: setButtonStyle, title: `Set ${(_b = field.description) !== null && _b !== void 0 ? _b : field.key} to gray`, onClick: () => onChangeComplete(DEFAULT_SET_COLOR), children: "Set" })
|
|
53
|
+
] }));
|
|
54
|
+
}
|
|
36
55
|
return (jsx_runtime_1.jsx("span", { style: containerStyle, children: jsx_runtime_1.jsx(ColorPicker_1.ColorPicker, { value: currentValue, status: "ok", onChange: onChange, onChangeComplete: onChangeComplete, width: SWATCH_WIDTH, height: SWATCH_HEIGHT, disabled: false, name: field.key, title: currentValue, style: swatchStyle }) }));
|
|
37
56
|
};
|
|
38
57
|
exports.TimelineColorField = TimelineColorField;
|
|
@@ -6,10 +6,10 @@ const studio_shared_1 = require("@remotion/studio-shared");
|
|
|
6
6
|
const react_1 = require("react");
|
|
7
7
|
const remotion_1 = require("remotion");
|
|
8
8
|
const client_id_1 = require("../../helpers/client-id");
|
|
9
|
+
const open_in_editor_1 = require("../../helpers/open-in-editor");
|
|
9
10
|
const call_api_1 = require("../call-api");
|
|
10
11
|
const ContextMenu_1 = require("../ContextMenu");
|
|
11
12
|
const call_add_keyframe_1 = require("./call-add-keyframe");
|
|
12
|
-
const get_animation_item_selection_for_frame_1 = require("./get-animation-item-selection-for-frame");
|
|
13
13
|
const get_timeline_keyframes_1 = require("./get-timeline-keyframes");
|
|
14
14
|
const save_effect_prop_1 = require("./save-effect-prop");
|
|
15
15
|
const save_prop_queue_1 = require("./save-prop-queue");
|
|
@@ -21,7 +21,6 @@ const TimelineLayerEye_1 = require("./TimelineLayerEye");
|
|
|
21
21
|
const TimelineRowChrome_1 = require("./TimelineRowChrome");
|
|
22
22
|
const TimelineSchemaField_1 = require("./TimelineSchemaField");
|
|
23
23
|
const TimelineSelection_1 = require("./TimelineSelection");
|
|
24
|
-
const update_selected_easing_1 = require("./update-selected-easing");
|
|
25
24
|
const fieldRowBase = {};
|
|
26
25
|
const isKeyframedStatus = (status) => {
|
|
27
26
|
return status.status === 'keyframed';
|
|
@@ -218,9 +217,6 @@ const TimelineEffectPropItem = ({ field, validatedLocation, rowDepth, nodePath,
|
|
|
218
217
|
const { propStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
|
|
219
218
|
const { getEffectDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
|
|
220
219
|
const selection = (0, TimelineSelection_1.useTimelineRowSelection)(nodePathInfo);
|
|
221
|
-
const { selectItems } = (0, TimelineSelection_1.useTimelineSelection)();
|
|
222
|
-
const setFrame = remotion_1.Internals.useTimelineSetFrame();
|
|
223
|
-
const videoConfig = (0, remotion_1.useVideoConfig)();
|
|
224
220
|
const timelinePosition = remotion_1.Internals.Timeline.useTimelinePosition();
|
|
225
221
|
const sourceFrame = timelinePosition - keyframeDisplayOffset;
|
|
226
222
|
const style = (0, react_1.useMemo)(() => {
|
|
@@ -314,82 +310,17 @@ const TimelineEffectPropItem = ({ field, validatedLocation, rowDepth, nodePath,
|
|
|
314
310
|
},
|
|
315
311
|
];
|
|
316
312
|
}, [canShowReset, onReset]);
|
|
317
|
-
const seekToDisplayFrame = (0, react_1.useCallback)((frame) => {
|
|
318
|
-
setFrame((current) => {
|
|
319
|
-
const next = { ...current, [videoConfig.id]: frame };
|
|
320
|
-
remotion_1.Internals.persistCurrentFrame(next);
|
|
321
|
-
return next;
|
|
322
|
-
});
|
|
323
|
-
}, [setFrame, videoConfig.id]);
|
|
324
313
|
const onPropertyDoubleClick = (0, react_1.useCallback)((event) => {
|
|
325
|
-
if (
|
|
326
|
-
|
|
327
|
-
}
|
|
328
|
-
const keyframeSelection = {
|
|
329
|
-
type: 'keyframe',
|
|
330
|
-
nodePathInfo,
|
|
331
|
-
frame: sourceFrame + keyframeDisplayOffset,
|
|
332
|
-
};
|
|
333
|
-
if (propStatus.status === 'static') {
|
|
334
|
-
if (!keyframable || previewServerState.type !== 'connected') {
|
|
335
|
-
return;
|
|
336
|
-
}
|
|
337
|
-
const value = remotion_1.Internals.getEffectiveVisualModeValue({
|
|
338
|
-
propStatus,
|
|
339
|
-
dragOverrideValue,
|
|
340
|
-
frame: sourceFrame,
|
|
341
|
-
defaultValue: field.fieldSchema.default,
|
|
342
|
-
shouldResortToDefaultValueIfUndefined: true,
|
|
343
|
-
});
|
|
344
|
-
event.stopPropagation();
|
|
345
|
-
(0, call_add_keyframe_1.callAddEffectKeyframe)({
|
|
346
|
-
fileName: validatedLocation.source,
|
|
347
|
-
nodePath,
|
|
348
|
-
effectIndex: field.effectIndex,
|
|
349
|
-
fieldKey: field.key,
|
|
350
|
-
sourceFrame,
|
|
351
|
-
value,
|
|
352
|
-
schema: field.effectSchema,
|
|
353
|
-
setPropStatuses,
|
|
354
|
-
clientId: previewServerState.clientId,
|
|
355
|
-
}).catch(() => undefined);
|
|
356
|
-
selectItems([keyframeSelection], { reveal: true });
|
|
357
|
-
seekToDisplayFrame(keyframeSelection.frame);
|
|
358
|
-
return;
|
|
359
|
-
}
|
|
360
|
-
const targetSelection = (0, get_animation_item_selection_for_frame_1.getAnimationItemSelectionForSourceFrame)({
|
|
361
|
-
includeEasings: (0, update_selected_easing_1.canEditEasingForInterpolationFunction)(propStatus.interpolationFunction),
|
|
362
|
-
keyframeDisplayOffset,
|
|
363
|
-
keyframes: propStatus.keyframes,
|
|
364
|
-
nodePathInfo,
|
|
365
|
-
sourceFrame,
|
|
366
|
-
});
|
|
367
|
-
if (targetSelection === null) {
|
|
314
|
+
if (!window.remotion_editorName ||
|
|
315
|
+
previewServerState.type !== 'connected') {
|
|
368
316
|
return;
|
|
369
317
|
}
|
|
370
318
|
event.stopPropagation();
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
}
|
|
375
|
-
}, [
|
|
376
|
-
dragOverrideValue,
|
|
377
|
-
field.effectIndex,
|
|
378
|
-
field.effectSchema,
|
|
379
|
-
field.fieldSchema.default,
|
|
380
|
-
field.key,
|
|
381
|
-
keyframeDisplayOffset,
|
|
382
|
-
keyframable,
|
|
383
|
-
nodePath,
|
|
384
|
-
nodePathInfo,
|
|
385
|
-
previewServerState,
|
|
386
|
-
propStatus,
|
|
387
|
-
seekToDisplayFrame,
|
|
388
|
-
selectItems,
|
|
389
|
-
setPropStatuses,
|
|
390
|
-
sourceFrame,
|
|
391
|
-
validatedLocation.source,
|
|
392
|
-
]);
|
|
319
|
+
(0, open_in_editor_1.openOriginalPositionInEditorAtProperty)({
|
|
320
|
+
originalPosition: validatedLocation,
|
|
321
|
+
property: field.key,
|
|
322
|
+
}).catch(() => undefined);
|
|
323
|
+
}, [field.key, previewServerState.type, validatedLocation]);
|
|
393
324
|
const row = (jsx_runtime_1.jsx(TimelineRowChrome_1.TimelineRowChrome, { depth: rowDepth, eye: jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEyeSpacer, {}), keyframeControls: keyframeControls, arrow: jsx_runtime_1.jsx(TimelineExpandArrowButton_1.TimelineExpandArrowSpacer, {}), style: style, selected: selection.selected, selectable: selection.selectable, selectionItem: selection.selectionItem, onSelect: selection.onSelect, onDoubleClick: onPropertyDoubleClick, showSelectedBackground: true, containsSelection: false, outerHeight: null, children: jsx_runtime_1.jsx(TimelineFieldRowContent_1.TimelineFieldRowContent, { field: field, rowDepth: rowDepth, selected: selection.selected, children: jsx_runtime_1.jsx(exports.TimelineEffectPropValue, { field: field, nodePath: nodePath, validatedLocation: validatedLocation, sourceFrame: sourceFrame }) }) }));
|
|
394
325
|
return (jsx_runtime_1.jsx(ContextMenu_1.ContextMenu, { values: contextMenuValues, onOpen: selection.selectable ? selection.onSelect : null, children: row }));
|
|
395
326
|
};
|
|
@@ -42,6 +42,13 @@ const TimelineKeyframeDiamond_1 = require("./TimelineKeyframeDiamond");
|
|
|
42
42
|
const TimelineKeyframeEasingLine_1 = require("./TimelineKeyframeEasingLine");
|
|
43
43
|
const TimelineSelection_1 = require("./TimelineSelection");
|
|
44
44
|
const TimelineWidthProvider_1 = require("./TimelineWidthProvider");
|
|
45
|
+
const rowClipper = {
|
|
46
|
+
marginLeft: -timeline_layout_1.TIMELINE_PADDING,
|
|
47
|
+
marginRight: -timeline_layout_1.TIMELINE_PADDING,
|
|
48
|
+
overflow: 'hidden',
|
|
49
|
+
paddingLeft: timeline_layout_1.TIMELINE_PADDING,
|
|
50
|
+
paddingRight: timeline_layout_1.TIMELINE_PADDING,
|
|
51
|
+
};
|
|
45
52
|
const row = {
|
|
46
53
|
position: 'relative',
|
|
47
54
|
};
|
|
@@ -54,7 +61,7 @@ const TimelineExpandedKeyframeRowUnmemoized = ({ height, keyframes, canEditEasin
|
|
|
54
61
|
const easingSegments = canEditEasing
|
|
55
62
|
? (0, get_timeline_easing_segments_1.getTimelineEasingSegments)(keyframes)
|
|
56
63
|
: [];
|
|
57
|
-
return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [showSeparator ? jsx_runtime_1.jsx("div", { style: rowSeparator }) : null, jsx_runtime_1.jsxs("div", { style: { ...row, height }, children: [rowHighlightBackground && timelineWidth !== null ? (jsx_runtime_1.jsx("div", { style: (0, TimelineSelection_1.getTimelineSelectedTrackHighlightStyle)(timelineWidth, rowHighlightBackground) })) : null, easingSegments.map((segment) => (jsx_runtime_1.jsx(TimelineKeyframeEasingLine_1.TimelineKeyframeEasingLine, { fromFrame: segment.fromFrame, toFrame: segment.toFrame, rowHeight: height, nodePathInfo: nodePathInfo, segmentIndex: segment.segmentIndex }, `${segment.segmentIndex}-${segment.fromFrame}-${segment.toFrame}`))), keyframes.map((keyframe) => (jsx_runtime_1.jsx(TimelineKeyframeDiamond_1.TimelineKeyframeDiamond, { frame: keyframe.frame, rowHeight: height, nodePathInfo: nodePathInfo }, keyframe.frame)))] })
|
|
64
|
+
return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [showSeparator ? jsx_runtime_1.jsx("div", { style: rowSeparator }) : null, jsx_runtime_1.jsx("div", { style: { ...rowClipper, height }, children: jsx_runtime_1.jsxs("div", { style: { ...row, height }, children: [rowHighlightBackground && timelineWidth !== null ? (jsx_runtime_1.jsx("div", { style: (0, TimelineSelection_1.getTimelineSelectedTrackHighlightStyle)(timelineWidth, rowHighlightBackground) })) : null, easingSegments.map((segment) => (jsx_runtime_1.jsx(TimelineKeyframeEasingLine_1.TimelineKeyframeEasingLine, { fromFrame: segment.fromFrame, toFrame: segment.toFrame, rowHeight: height, nodePathInfo: nodePathInfo, segmentIndex: segment.segmentIndex }, `${segment.segmentIndex}-${segment.fromFrame}-${segment.toFrame}`))), keyframes.map((keyframe) => (jsx_runtime_1.jsx(TimelineKeyframeDiamond_1.TimelineKeyframeDiamond, { frame: keyframe.frame, rowHeight: height, nodePathInfo: nodePathInfo }, keyframe.frame)))] }) })
|
|
58
65
|
] }));
|
|
59
66
|
};
|
|
60
67
|
exports.TimelineExpandedKeyframeRow = react_1.default.memo(TimelineExpandedKeyframeRowUnmemoized);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { TimelineTrackData } from '../../helpers/get-timeline-sequence-sort-key';
|
|
3
3
|
export declare const TimelineHeightContainer: React.NamedExoticComponent<{
|
|
4
|
-
readonly shown:
|
|
4
|
+
readonly shown: TimelineTrackData[];
|
|
5
5
|
readonly hasBeenCut: boolean;
|
|
6
6
|
readonly children: React.ReactNode;
|
|
7
7
|
}>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { TimelineTrackData } from '../../helpers/get-timeline-sequence-sort-key';
|
|
3
3
|
export declare const TimelineKeyframeTracksProvider: React.FC<{
|
|
4
|
-
readonly tracks: readonly
|
|
4
|
+
readonly tracks: readonly TimelineTrackData[];
|
|
5
5
|
readonly children: React.ReactNode;
|
|
6
6
|
}>;
|
|
7
|
-
export declare const useTimelineKeyframeTracks: () => readonly
|
|
7
|
+
export declare const useTimelineKeyframeTracks: () => readonly TimelineTrackData[];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { TimelineTrackData } from '../../helpers/get-timeline-sequence-sort-key';
|
|
3
3
|
export declare const TimelineList: React.FC<{
|
|
4
|
-
readonly timeline:
|
|
4
|
+
readonly timeline: TimelineTrackData[];
|
|
5
5
|
}>;
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { ArrayFieldSchema, CanUpdateSequencePropStatusStatic, SequencePropsSubscriptionKey, VisibleFieldSchema } from 'remotion';
|
|
3
3
|
import type { SchemaFieldInfo, TimelineFieldOnDragValueChange, TimelineFieldOnSave } from '../../helpers/timeline-layout';
|
|
4
|
+
type CaptionsFieldSchema = Extract<VisibleFieldSchema, {
|
|
5
|
+
type: 'remotion-captions';
|
|
6
|
+
}>;
|
|
7
|
+
type PrimitiveFieldSchema = Exclude<VisibleFieldSchema, ArrayFieldSchema | CaptionsFieldSchema>;
|
|
4
8
|
export type TimelinePrimitiveFieldInfo = Omit<SchemaFieldInfo, 'fieldSchema' | 'typeName'> & {
|
|
5
|
-
readonly fieldSchema:
|
|
6
|
-
readonly typeName:
|
|
9
|
+
readonly fieldSchema: PrimitiveFieldSchema;
|
|
10
|
+
readonly typeName: PrimitiveFieldSchema['type'];
|
|
7
11
|
};
|
|
8
12
|
export declare const isTimelinePrimitiveFieldInfo: (field: SchemaFieldInfo) => field is TimelinePrimitiveFieldInfo;
|
|
9
13
|
export declare const TimelinePrimitiveFieldValue: React.FC<{
|
|
@@ -15,3 +19,4 @@ export declare const TimelinePrimitiveFieldValue: React.FC<{
|
|
|
15
19
|
readonly effectiveValue: unknown;
|
|
16
20
|
readonly scaleLockNodePath: SequencePropsSubscriptionKey | null;
|
|
17
21
|
}>;
|
|
22
|
+
export {};
|
|
@@ -17,8 +17,16 @@ const TimelineUvCoordinateField_1 = require("./TimelineUvCoordinateField");
|
|
|
17
17
|
const inlineWrapper = {
|
|
18
18
|
fontSize: 12,
|
|
19
19
|
};
|
|
20
|
+
const assetInlineWrapper = {
|
|
21
|
+
...inlineWrapper,
|
|
22
|
+
display: 'flex',
|
|
23
|
+
flex: 1,
|
|
24
|
+
minWidth: 0,
|
|
25
|
+
};
|
|
20
26
|
const isTimelinePrimitiveFieldInfo = (field) => {
|
|
21
|
-
return field.typeName !== 'array' &&
|
|
27
|
+
return (field.typeName !== 'array' &&
|
|
28
|
+
field.fieldSchema.type !== 'array' &&
|
|
29
|
+
field.fieldSchema.type !== 'remotion-captions');
|
|
22
30
|
};
|
|
23
31
|
exports.isTimelinePrimitiveFieldInfo = isTimelinePrimitiveFieldInfo;
|
|
24
32
|
const TimelinePrimitiveFieldValue = ({ field, onSave, onDragValueChange, onDragEnd, propStatus, effectiveValue, scaleLockNodePath, }) => {
|
|
@@ -60,7 +68,7 @@ const TimelinePrimitiveFieldValue = ({ field, onSave, onDragValueChange, onDragE
|
|
|
60
68
|
return (jsx_runtime_1.jsx("span", { style: inlineWrapper, children: jsx_runtime_1.jsx(TimelineFontFamilyField_1.TimelineFontFamilyField, { effectiveValue: effectiveValue, field: field, onDragEnd: onDragEnd, onDragValueChange: onDragValueChange, onSave: onSave, propStatus: propStatus }) }));
|
|
61
69
|
}
|
|
62
70
|
if (field.typeName === 'asset') {
|
|
63
|
-
return (jsx_runtime_1.jsx("span", { style:
|
|
71
|
+
return (jsx_runtime_1.jsx("span", { style: assetInlineWrapper, children: jsx_runtime_1.jsx(TimelineAssetField_1.TimelineAssetField, { effectiveValue: effectiveValue, field: field, onDragEnd: onDragEnd, onDragValueChange: onDragValueChange, onSave: onSave, propStatus: propStatus }) }));
|
|
64
72
|
}
|
|
65
73
|
throw new Error(`Unsupported field type: ${field.typeName}`);
|
|
66
74
|
};
|
|
@@ -14,9 +14,12 @@ export declare const TimelineRowChrome: React.FC<{
|
|
|
14
14
|
readonly onSelect: (interaction?: TimelineSelectionInteraction) => void;
|
|
15
15
|
readonly showSelectedBackground: boolean;
|
|
16
16
|
readonly containsSelection: boolean;
|
|
17
|
+
readonly hovered?: boolean;
|
|
17
18
|
readonly outerHeight: number | null;
|
|
18
19
|
readonly onDragLeave?: (e: React.DragEvent<HTMLDivElement>) => void;
|
|
19
20
|
readonly onDragOver?: (e: React.DragEvent<HTMLDivElement>) => void;
|
|
20
21
|
readonly onDrop?: (e: React.DragEvent<HTMLDivElement>) => void;
|
|
21
22
|
readonly onDoubleClick?: (e: React.MouseEvent<HTMLDivElement>) => void;
|
|
23
|
+
readonly onPointerEnter?: () => void;
|
|
24
|
+
readonly onPointerLeave?: () => void;
|
|
22
25
|
}>;
|