@remotion/studio 4.0.473 → 4.0.475
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/AssetSelectorItem.js +30 -6
- package/dist/components/Canvas.js +77 -0
- package/dist/components/ColorPicker/ColorPicker.js +4 -31
- package/dist/components/CompositionSelectorItem.js +4 -4
- package/dist/components/Editor.js +4 -1
- package/dist/components/Modals.js +2 -2
- package/dist/components/NewComposition/ComboBox.js +1 -0
- package/dist/components/NewComposition/InputDragger.d.ts +1 -0
- package/dist/components/NewComposition/InputDragger.js +9 -6
- package/dist/components/PreviewToolbar.js +2 -2
- package/dist/components/SelectedOutlineOverlay.d.ts +61 -33
- package/dist/components/SelectedOutlineOverlay.js +813 -351
- package/dist/components/SelectedOutlineUvControls.d.ts +17 -0
- package/dist/components/SelectedOutlineUvControls.js +167 -0
- package/dist/components/StudioCanvasCapture.d.ts +5 -0
- package/dist/components/StudioCanvasCapture.js +40 -0
- package/dist/components/Timeline/EasingEditorModal.d.ts +11 -0
- package/dist/components/Timeline/EasingEditorModal.js +247 -0
- package/dist/components/Timeline/KeyframeSettingsModal.js +5 -4
- package/dist/components/Timeline/SequencePropsObserver.js +3 -3
- package/dist/components/Timeline/Timeline.js +10 -7
- package/dist/components/Timeline/TimelineClipboardKeybindings.d.ts +7 -7
- package/dist/components/Timeline/TimelineClipboardKeybindings.js +19 -16
- package/dist/components/Timeline/TimelineDeleteKeybindings.js +71 -40
- package/dist/components/Timeline/TimelineDragHandler.js +2 -2
- package/dist/components/Timeline/TimelineEffectItem.js +8 -9
- package/dist/components/Timeline/TimelineEffectPropItem.js +18 -18
- package/dist/components/Timeline/TimelineExpandedKeyframeRow.d.ts +1 -0
- package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +7 -2
- package/dist/components/Timeline/TimelineExpandedSection.js +5 -5
- package/dist/components/Timeline/TimelineExpandedTrackKeyframes.js +1 -1
- package/dist/components/Timeline/TimelineHeightContainer.js +2 -0
- package/dist/components/Timeline/TimelineItemStack.js +3 -56
- package/dist/components/Timeline/TimelineKeyframeControls.d.ts +7 -0
- package/dist/components/Timeline/TimelineKeyframeControls.js +265 -68
- package/dist/components/Timeline/TimelineKeyframeDiamond.js +4 -3
- package/dist/components/Timeline/TimelineKeyframeEasingLine.d.ts +9 -0
- package/dist/components/Timeline/TimelineKeyframeEasingLine.js +245 -0
- package/dist/components/Timeline/TimelineKeyframeTracksContext.d.ts +7 -0
- package/dist/components/Timeline/TimelineKeyframeTracksContext.js +17 -0
- package/dist/components/Timeline/TimelineKeyframedValue.js +1 -1
- package/dist/components/Timeline/TimelineMediaInfo.js +4 -24
- package/dist/components/Timeline/TimelineNumberField.js +15 -7
- package/dist/components/Timeline/TimelinePrimitiveFieldValue.js +4 -0
- package/dist/components/Timeline/TimelineRotationField.js +22 -34
- package/dist/components/Timeline/TimelineScaleField.js +16 -12
- package/dist/components/Timeline/TimelineScrollable.js +19 -3
- package/dist/components/Timeline/TimelineSelection.d.ts +82 -3
- package/dist/components/Timeline/TimelineSelection.js +312 -30
- package/dist/components/Timeline/TimelineSequence.js +23 -15
- package/dist/components/Timeline/TimelineSequenceItem.js +48 -73
- package/dist/components/Timeline/TimelineSequenceName.js +3 -17
- package/dist/components/Timeline/TimelineSequencePropItem.js +37 -37
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +5 -5
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +46 -44
- package/dist/components/Timeline/TimelineTimeIndicators.js +4 -2
- package/dist/components/Timeline/TimelineTransformOriginField.d.ts +11 -0
- package/dist/components/Timeline/TimelineTransformOriginField.js +138 -0
- package/dist/components/Timeline/TimelineTranslateField.js +24 -19
- package/dist/components/Timeline/TimelineUvCoordinateField.js +18 -12
- package/dist/components/Timeline/{apply-effect-response-to-code-values.d.ts → apply-effect-response-to-prop-statuses.d.ts} +1 -1
- package/dist/components/Timeline/{apply-effect-response-to-code-values.js → apply-effect-response-to-prop-statuses.js} +3 -3
- package/dist/components/Timeline/call-add-keyframe.d.ts +22 -5
- package/dist/components/Timeline/call-add-keyframe.js +71 -7
- package/dist/components/Timeline/call-delete-keyframe.d.ts +7 -7
- package/dist/components/Timeline/call-delete-keyframe.js +7 -7
- package/dist/components/Timeline/call-move-keyframe.d.ts +3 -3
- package/dist/components/Timeline/call-move-keyframe.js +3 -3
- package/dist/components/Timeline/call-update-keyframe-settings.d.ts +5 -5
- package/dist/components/Timeline/call-update-keyframe-settings.js +6 -6
- package/dist/components/Timeline/delete-selected-keyframe.d.ts +5 -5
- package/dist/components/Timeline/delete-selected-keyframe.js +5 -5
- package/dist/components/Timeline/delete-selected-timeline-item.d.ts +5 -5
- package/dist/components/Timeline/delete-selected-timeline-item.js +28 -16
- package/dist/components/Timeline/get-node-keyframes.d.ts +3 -3
- package/dist/components/Timeline/get-node-keyframes.js +4 -4
- package/dist/components/Timeline/get-timeline-easing-segments.d.ts +9 -0
- package/dist/components/Timeline/get-timeline-easing-segments.js +19 -0
- package/dist/components/Timeline/reset-selected-timeline-props.d.ts +7 -7
- package/dist/components/Timeline/reset-selected-timeline-props.js +23 -15
- package/dist/components/Timeline/save-effect-prop.d.ts +2 -2
- package/dist/components/Timeline/save-effect-prop.js +5 -5
- package/dist/components/Timeline/save-prop-queue.d.ts +3 -3
- package/dist/components/Timeline/save-prop-queue.js +3 -3
- package/dist/components/Timeline/save-sequence-prop.d.ts +3 -3
- package/dist/components/Timeline/save-sequence-prop.js +4 -4
- package/dist/components/Timeline/timeline-field-utils.d.ts +10 -0
- package/dist/components/Timeline/timeline-field-utils.js +26 -5
- package/dist/components/Timeline/timeline-rotation-utils.d.ts +2 -0
- package/dist/components/Timeline/timeline-rotation-utils.js +32 -0
- package/dist/components/Timeline/timeline-translate-utils.d.ts +1 -1
- package/dist/components/Timeline/timeline-translate-utils.js +4 -5
- package/dist/components/Timeline/transform-origin-utils.d.ts +24 -0
- package/dist/components/Timeline/transform-origin-utils.js +170 -0
- package/dist/components/Timeline/update-selected-easing.d.ts +35 -0
- package/dist/components/Timeline/update-selected-easing.js +133 -0
- package/dist/components/Timeline/use-expanded-track-keyframe-rows.d.ts +1 -0
- package/dist/components/Timeline/use-expanded-track-keyframe-rows.js +35 -7
- package/dist/components/Timeline/use-sequence-props-subscription.js +3 -3
- package/dist/components/Timeline/use-timeline-height.js +3 -3
- package/dist/components/Timeline/use-timeline-keyframe-drag.js +13 -11
- package/dist/components/canvas-capture-enabled.d.ts +1 -0
- package/dist/components/canvas-capture-enabled.js +4 -0
- package/dist/components/effect-drag-and-drop.d.ts +11 -0
- package/dist/components/effect-drag-and-drop.js +73 -0
- package/dist/components/import-assets.d.ts +15 -0
- package/dist/components/import-assets.js +63 -1
- package/dist/components/selected-outline-geometry.d.ts +20 -0
- package/dist/components/selected-outline-geometry.js +18 -0
- package/dist/components/selected-outline-uv.d.ts +46 -0
- package/dist/components/selected-outline-uv.js +240 -0
- package/dist/esm/{chunk-q0jkt0zq.js → chunk-qaqqvw4q.js} +8096 -5307
- package/dist/esm/internals.mjs +8096 -5307
- package/dist/esm/previewEntry.mjs +8106 -5317
- package/dist/esm/renderEntry.mjs +1 -1
- package/dist/helpers/colors.d.ts +0 -1
- package/dist/helpers/colors.js +1 -2
- package/dist/helpers/timeline-layout.d.ts +6 -6
- package/dist/helpers/timeline-layout.js +5 -5
- package/dist/state/modals.d.ts +2 -4
- package/package.json +11 -10
- package/dist/components/NewComposition/DeleteStaticFile.d.ts +0 -4
- package/dist/components/NewComposition/DeleteStaticFile.js +0 -44
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.TimelineKeyframeEasingLine = void 0;
|
|
37
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
38
|
+
const studio_shared_1 = require("@remotion/studio-shared");
|
|
39
|
+
const react_1 = __importStar(require("react"));
|
|
40
|
+
const remotion_1 = require("remotion");
|
|
41
|
+
const client_id_1 = require("../../helpers/client-id");
|
|
42
|
+
const colors_1 = require("../../helpers/colors");
|
|
43
|
+
const get_left_of_timeline_slider_1 = require("../../helpers/get-left-of-timeline-slider");
|
|
44
|
+
const timeline_layout_1 = require("../../helpers/timeline-layout");
|
|
45
|
+
const modals_1 = require("../../state/modals");
|
|
46
|
+
const ContextMenu_1 = require("../ContextMenu");
|
|
47
|
+
const TimelineSelection_1 = require("./TimelineSelection");
|
|
48
|
+
const TimelineWidthProvider_1 = require("./TimelineWidthProvider");
|
|
49
|
+
const update_selected_easing_1 = require("./update-selected-easing");
|
|
50
|
+
const hitTargetHeight = 12;
|
|
51
|
+
const lineHeight = 2;
|
|
52
|
+
const easingLineButton = {
|
|
53
|
+
background: 'none',
|
|
54
|
+
border: 'none',
|
|
55
|
+
height: hitTargetHeight,
|
|
56
|
+
padding: 0,
|
|
57
|
+
position: 'absolute',
|
|
58
|
+
transform: 'translateY(-50%)',
|
|
59
|
+
};
|
|
60
|
+
const easingLine = {
|
|
61
|
+
backgroundColor: 'rgba(255, 255, 255, 0.1)',
|
|
62
|
+
borderRadius: lineHeight / 2,
|
|
63
|
+
height: lineHeight,
|
|
64
|
+
left: 0,
|
|
65
|
+
position: 'absolute',
|
|
66
|
+
right: 0,
|
|
67
|
+
top: '50%',
|
|
68
|
+
transform: 'translateY(-50%)',
|
|
69
|
+
};
|
|
70
|
+
const TimelineKeyframeEasingLineUnmemoized = ({ fromFrame, toFrame, rowHeight, nodePathInfo, segmentIndex }) => {
|
|
71
|
+
const buttonRef = (0, react_1.useRef)(null);
|
|
72
|
+
const videoConfig = (0, remotion_1.useVideoConfig)();
|
|
73
|
+
const timelineWidth = (0, react_1.useContext)(TimelineWidthProvider_1.TimelineWidthContext);
|
|
74
|
+
const { selected, onSelect, selectable, selectionItem } = (0, TimelineSelection_1.useTimelineEasingSelection)({
|
|
75
|
+
nodePathInfo,
|
|
76
|
+
fromFrame,
|
|
77
|
+
toFrame,
|
|
78
|
+
segmentIndex,
|
|
79
|
+
});
|
|
80
|
+
(0, TimelineSelection_1.useTimelineMarqueeSelectableItem)(selectionItem, buttonRef);
|
|
81
|
+
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
82
|
+
const sequencesRef = (0, react_1.useContext)(remotion_1.Internals.SequenceManagerRefContext);
|
|
83
|
+
const propStatusesRef = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesRefContext);
|
|
84
|
+
const { setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
85
|
+
const { overrideIdToNodePathMappings } = (0, react_1.useContext)(remotion_1.Internals.OverrideIdsToNodePathsGettersContext);
|
|
86
|
+
const currentSelection = (0, TimelineSelection_1.useCurrentTimelineSelectionStateAsRef)();
|
|
87
|
+
const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
|
|
88
|
+
const getTargetSelections = (0, react_1.useCallback)(() => {
|
|
89
|
+
const selectedEasings = (0, update_selected_easing_1.getEasingSelections)(currentSelection.current.selectedItems);
|
|
90
|
+
return selected ? selectedEasings : [selectionItem];
|
|
91
|
+
}, [currentSelection, selected, selectionItem]);
|
|
92
|
+
const updateEasing = (0, react_1.useCallback)((easing) => {
|
|
93
|
+
if (previewServerState.type !== 'connected') {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const promise = (0, update_selected_easing_1.updateSelectedTimelineEasings)({
|
|
97
|
+
selections: getTargetSelections(),
|
|
98
|
+
sequences: sequencesRef.current,
|
|
99
|
+
overrideIdsToNodePaths: overrideIdToNodePathMappings,
|
|
100
|
+
propStatuses: propStatusesRef.current,
|
|
101
|
+
setPropStatuses,
|
|
102
|
+
clientId: previewServerState.clientId,
|
|
103
|
+
easing,
|
|
104
|
+
});
|
|
105
|
+
promise === null || promise === void 0 ? void 0 : promise.catch(() => undefined);
|
|
106
|
+
}, [
|
|
107
|
+
getTargetSelections,
|
|
108
|
+
overrideIdToNodePathMappings,
|
|
109
|
+
previewServerState,
|
|
110
|
+
propStatusesRef,
|
|
111
|
+
sequencesRef,
|
|
112
|
+
setPropStatuses,
|
|
113
|
+
]);
|
|
114
|
+
const onOpenEasingEditor = (0, react_1.useCallback)(() => {
|
|
115
|
+
if (previewServerState.type !== 'connected') {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const initialEasing = (0, update_selected_easing_1.getTimelineEasingValueForSelection)({
|
|
119
|
+
selection: selectionItem,
|
|
120
|
+
sequences: sequencesRef.current,
|
|
121
|
+
overrideIdsToNodePaths: overrideIdToNodePathMappings,
|
|
122
|
+
propStatuses: propStatusesRef.current,
|
|
123
|
+
});
|
|
124
|
+
if (initialEasing === null) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
setSelectedModal({
|
|
128
|
+
type: 'easing-editor',
|
|
129
|
+
initialEasing,
|
|
130
|
+
selections: getTargetSelections(),
|
|
131
|
+
});
|
|
132
|
+
}, [
|
|
133
|
+
getTargetSelections,
|
|
134
|
+
overrideIdToNodePathMappings,
|
|
135
|
+
previewServerState,
|
|
136
|
+
propStatusesRef,
|
|
137
|
+
selectionItem,
|
|
138
|
+
sequencesRef,
|
|
139
|
+
setSelectedModal,
|
|
140
|
+
]);
|
|
141
|
+
const contextMenuValues = (0, react_1.useMemo)(() => {
|
|
142
|
+
return [
|
|
143
|
+
{
|
|
144
|
+
type: 'item',
|
|
145
|
+
id: 'linear',
|
|
146
|
+
keyHint: null,
|
|
147
|
+
label: 'Linear',
|
|
148
|
+
leftItem: null,
|
|
149
|
+
disabled: previewServerState.type !== 'connected',
|
|
150
|
+
onClick: () => updateEasing('linear'),
|
|
151
|
+
quickSwitcherLabel: null,
|
|
152
|
+
subMenu: null,
|
|
153
|
+
value: 'linear',
|
|
154
|
+
},
|
|
155
|
+
...studio_shared_1.KEYFRAME_EASING_PRESETS.map((preset) => ({
|
|
156
|
+
type: 'item',
|
|
157
|
+
id: preset.id,
|
|
158
|
+
keyHint: null,
|
|
159
|
+
label: preset.label,
|
|
160
|
+
leftItem: null,
|
|
161
|
+
disabled: previewServerState.type !== 'connected',
|
|
162
|
+
onClick: () => updateEasing(preset.easing),
|
|
163
|
+
quickSwitcherLabel: null,
|
|
164
|
+
subMenu: null,
|
|
165
|
+
value: preset.id,
|
|
166
|
+
})),
|
|
167
|
+
{
|
|
168
|
+
type: 'divider',
|
|
169
|
+
id: 'edit-easing-divider',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'item',
|
|
173
|
+
id: 'edit-easing',
|
|
174
|
+
keyHint: null,
|
|
175
|
+
label: 'Edit...',
|
|
176
|
+
leftItem: null,
|
|
177
|
+
disabled: previewServerState.type !== 'connected',
|
|
178
|
+
onClick: onOpenEasingEditor,
|
|
179
|
+
quickSwitcherLabel: null,
|
|
180
|
+
subMenu: null,
|
|
181
|
+
value: 'edit-easing',
|
|
182
|
+
},
|
|
183
|
+
];
|
|
184
|
+
}, [onOpenEasingEditor, previewServerState.type, updateEasing]);
|
|
185
|
+
const onOpenContextMenu = (0, react_1.useCallback)((event) => {
|
|
186
|
+
if (!selectable) {
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
if (!selected) {
|
|
190
|
+
onSelect({
|
|
191
|
+
shiftKey: event.shiftKey,
|
|
192
|
+
toggleKey: event.metaKey || event.ctrlKey,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
return contextMenuValues;
|
|
196
|
+
}, [contextMenuValues, onSelect, selectable, selected]);
|
|
197
|
+
const style = (0, react_1.useMemo)(() => {
|
|
198
|
+
if (timelineWidth === null) {
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
201
|
+
const fromLeft = (0, get_left_of_timeline_slider_1.getXPositionOfItemInTimelineImperatively)(fromFrame, videoConfig.durationInFrames, timelineWidth) - timeline_layout_1.TIMELINE_PADDING;
|
|
202
|
+
const toLeft = (0, get_left_of_timeline_slider_1.getXPositionOfItemInTimelineImperatively)(toFrame, videoConfig.durationInFrames, timelineWidth) - timeline_layout_1.TIMELINE_PADDING;
|
|
203
|
+
const left = Math.min(fromLeft, toLeft);
|
|
204
|
+
const width = Math.abs(toLeft - fromLeft);
|
|
205
|
+
if (width === 0) {
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
208
|
+
return {
|
|
209
|
+
...easingLineButton,
|
|
210
|
+
left,
|
|
211
|
+
pointerEvents: selectable ? 'auto' : 'none',
|
|
212
|
+
top: rowHeight / 2,
|
|
213
|
+
width,
|
|
214
|
+
};
|
|
215
|
+
}, [
|
|
216
|
+
fromFrame,
|
|
217
|
+
rowHeight,
|
|
218
|
+
selectable,
|
|
219
|
+
timelineWidth,
|
|
220
|
+
toFrame,
|
|
221
|
+
videoConfig.durationInFrames,
|
|
222
|
+
]);
|
|
223
|
+
const lineStyle = (0, react_1.useMemo)(() => ({
|
|
224
|
+
...easingLine,
|
|
225
|
+
outline: selected ? `1px solid ${colors_1.BLUE}` : undefined,
|
|
226
|
+
}), [selected]);
|
|
227
|
+
const onPointerDown = (0, react_1.useCallback)((event) => {
|
|
228
|
+
if (!selectable || event.button !== 0) {
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
event.preventDefault();
|
|
232
|
+
event.stopPropagation();
|
|
233
|
+
onSelect({
|
|
234
|
+
shiftKey: event.shiftKey,
|
|
235
|
+
toggleKey: event.metaKey || event.ctrlKey,
|
|
236
|
+
});
|
|
237
|
+
}, [onSelect, selectable]);
|
|
238
|
+
if (style === null) {
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
241
|
+
return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
242
|
+
jsx_runtime_1.jsx("button", { ref: buttonRef, [TimelineSelection_1.TIMELINE_MARQUEE_ITEM_ATTR]: true, type: "button", style: style, title: `Easing from frame ${fromFrame} to ${toFrame}`, "aria-label": `Select easing from frame ${fromFrame} to ${toFrame}`, onPointerDown: selectable ? onPointerDown : undefined, children: jsx_runtime_1.jsx("div", { style: lineStyle }) }), jsx_runtime_1.jsx(ContextMenu_1.ContextMenuForTarget, { triggerRef: buttonRef, values: contextMenuValues, onOpen: onOpenContextMenu })
|
|
243
|
+
] }));
|
|
244
|
+
};
|
|
245
|
+
exports.TimelineKeyframeEasingLine = react_1.default.memo(TimelineKeyframeEasingLineUnmemoized);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { TrackWithHash } from '../../helpers/get-timeline-sequence-sort-key';
|
|
3
|
+
export declare const TimelineKeyframeTracksProvider: React.FC<{
|
|
4
|
+
readonly tracks: readonly TrackWithHash[];
|
|
5
|
+
readonly children: React.ReactNode;
|
|
6
|
+
}>;
|
|
7
|
+
export declare const useTimelineKeyframeTracks: () => readonly TrackWithHash[];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useTimelineKeyframeTracks = exports.TimelineKeyframeTracksProvider = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const TimelineKeyframeTracksContext = (0, react_1.createContext)([]);
|
|
7
|
+
// Keyframe diamonds need track metadata to resolve other selected rows. The
|
|
8
|
+
// selection state only stores identities, and a mounted-row registry would miss
|
|
9
|
+
// collapsed or otherwise unmounted rows.
|
|
10
|
+
const TimelineKeyframeTracksProvider = ({ tracks, children }) => {
|
|
11
|
+
return (jsx_runtime_1.jsx(TimelineKeyframeTracksContext.Provider, { value: tracks, children: children }));
|
|
12
|
+
};
|
|
13
|
+
exports.TimelineKeyframeTracksProvider = TimelineKeyframeTracksProvider;
|
|
14
|
+
const useTimelineKeyframeTracks = () => {
|
|
15
|
+
return (0, react_1.useContext)(TimelineKeyframeTracksContext);
|
|
16
|
+
};
|
|
17
|
+
exports.useTimelineKeyframeTracks = useTimelineKeyframeTracks;
|
|
@@ -27,7 +27,7 @@ const TimelineKeyframedValue = ({ field, propStatus, keyframeDisplayOffset, drag
|
|
|
27
27
|
}), [computedValue]);
|
|
28
28
|
const effectiveValue = (0, react_1.useMemo)(() => {
|
|
29
29
|
return remotion_1.Internals.getEffectiveVisualModeValue({
|
|
30
|
-
|
|
30
|
+
propStatus: fakeStatus,
|
|
31
31
|
dragOverrideValue,
|
|
32
32
|
frame: jsxFrame,
|
|
33
33
|
defaultValue: field.fieldSchema.default,
|
|
@@ -5,9 +5,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const remotion_1 = require("remotion");
|
|
7
7
|
const colors_1 = require("../../helpers/colors");
|
|
8
|
-
const use_select_asset_1 = require("../use-select-asset");
|
|
9
8
|
const timeline_asset_link_1 = require("./timeline-asset-link");
|
|
10
|
-
const TimelineSelection_1 = require("./TimelineSelection");
|
|
11
9
|
const lineStyle = {
|
|
12
10
|
whiteSpace: 'nowrap',
|
|
13
11
|
overflow: 'hidden',
|
|
@@ -18,24 +16,10 @@ const lineStyle = {
|
|
|
18
16
|
display: 'inline-block',
|
|
19
17
|
};
|
|
20
18
|
const useAssetLink = (src) => {
|
|
21
|
-
const selectAsset = (0, use_select_asset_1.useSelectAsset)();
|
|
22
|
-
const [hovered, setHovered] = (0, react_1.useState)(false);
|
|
23
19
|
const linkInfo = (0, react_1.useMemo)(() => (0, timeline_asset_link_1.getTimelineAssetLinkInfo)(src), [src]);
|
|
24
|
-
const interactive = !TimelineSelection_1.SELECTION_ENABLED && linkInfo !== null;
|
|
25
|
-
const onClick = (0, react_1.useCallback)((e) => {
|
|
26
|
-
if (!linkInfo) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
e.preventDefault();
|
|
30
|
-
e.stopPropagation();
|
|
31
|
-
(0, timeline_asset_link_1.openTimelineAssetLink)(linkInfo, selectAsset);
|
|
32
|
-
}, [linkInfo, selectAsset]);
|
|
33
|
-
const onPointerEnter = (0, react_1.useCallback)(() => setHovered(true), []);
|
|
34
|
-
const onPointerLeave = (0, react_1.useCallback)(() => setHovered(false), []);
|
|
35
20
|
const fileNameStyle = (0, react_1.useMemo)(() => ({
|
|
36
21
|
...lineStyle,
|
|
37
|
-
color:
|
|
38
|
-
cursor: interactive ? 'pointer' : undefined,
|
|
22
|
+
color: colors_1.VERY_LIGHT_TEXT,
|
|
39
23
|
textDecoration: 'none',
|
|
40
24
|
display: 'inline-block',
|
|
41
25
|
overflow: 'hidden',
|
|
@@ -43,19 +27,15 @@ const useAssetLink = (src) => {
|
|
|
43
27
|
textOverflow: 'ellipsis',
|
|
44
28
|
userSelect: 'none',
|
|
45
29
|
WebkitUserSelect: 'none',
|
|
46
|
-
}), [
|
|
30
|
+
}), []);
|
|
47
31
|
return {
|
|
48
32
|
linkInfo,
|
|
49
|
-
interactive,
|
|
50
|
-
onClick,
|
|
51
|
-
onPointerEnter,
|
|
52
|
-
onPointerLeave,
|
|
53
33
|
fileNameStyle,
|
|
54
34
|
};
|
|
55
35
|
};
|
|
56
36
|
const TimelineMediaInfo = ({ src }) => {
|
|
57
37
|
const fileName = (0, react_1.useMemo)(() => remotion_1.Internals.getAssetDisplayName(src), [src]);
|
|
58
|
-
const { linkInfo,
|
|
59
|
-
return (jsx_runtime_1.jsx("div", { style: fileNameStyle, title: linkInfo ? linkInfo.title : fileName,
|
|
38
|
+
const { linkInfo, fileNameStyle } = useAssetLink(src);
|
|
39
|
+
return (jsx_runtime_1.jsx("div", { style: fileNameStyle, title: linkInfo ? linkInfo.title : fileName, children: fileName }));
|
|
60
40
|
};
|
|
61
41
|
exports.TimelineMediaInfo = TimelineMediaInfo;
|
|
@@ -6,7 +6,7 @@ const react_1 = require("react");
|
|
|
6
6
|
const InputDragger_1 = require("../NewComposition/InputDragger");
|
|
7
7
|
const timeline_field_utils_1 = require("./timeline-field-utils");
|
|
8
8
|
const TimelineNumberField = ({ field, effectiveValue, onSave, onDragValueChange, onDragEnd, propStatus, }) => {
|
|
9
|
-
var _a, _b
|
|
9
|
+
var _a, _b;
|
|
10
10
|
const [dragValue, setDragValue] = (0, react_1.useState)(null);
|
|
11
11
|
const onValueChange = (0, react_1.useCallback)((newVal) => {
|
|
12
12
|
setDragValue(newVal);
|
|
@@ -33,17 +33,25 @@ const TimelineNumberField = ({ field, effectiveValue, onSave, onDragValueChange,
|
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
35
|
}, [onSave, propStatus]);
|
|
36
|
-
const
|
|
37
|
-
const
|
|
36
|
+
const configuredStep = field.fieldSchema.type === 'number' ? field.fieldSchema.step : undefined;
|
|
37
|
+
const step = configuredStep !== null && configuredStep !== void 0 ? configuredStep : 1;
|
|
38
|
+
const stepDecimals = (0, react_1.useMemo)(() => configuredStep === undefined ? null : (0, timeline_field_utils_1.getDecimalPlaces)(configuredStep), [configuredStep]);
|
|
38
39
|
const formatter = (0, react_1.useCallback)((v) => {
|
|
39
40
|
const num = Number(v);
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
if (stepDecimals === null) {
|
|
42
|
+
const digits = (0, timeline_field_utils_1.getDecimalPlaces)(num);
|
|
43
|
+
return digits === 0 ? String(num) : num.toFixed(digits);
|
|
44
|
+
}
|
|
45
|
+
return (0, timeline_field_utils_1.formatTimelineNumber)({
|
|
46
|
+
decimalPlaces: stepDecimals,
|
|
47
|
+
fixed: true,
|
|
48
|
+
value: num,
|
|
49
|
+
});
|
|
42
50
|
}, [stepDecimals]);
|
|
43
51
|
return (jsx_runtime_1.jsx(InputDragger_1.InputDragger, { type: "number", value: dragValue !== null && dragValue !== void 0 ? dragValue : effectiveValue, style: timeline_field_utils_1.draggerStyle, status: "ok", small: true, onValueChange: onValueChange, onValueChangeEnd: onValueChangeEnd, onTextChange: onTextChange, min: field.fieldSchema.type === 'number'
|
|
44
|
-
? ((
|
|
52
|
+
? ((_a = field.fieldSchema.min) !== null && _a !== void 0 ? _a : -Infinity)
|
|
45
53
|
: -Infinity, max: field.fieldSchema.type === 'number'
|
|
46
|
-
? ((
|
|
54
|
+
? ((_b = field.fieldSchema.max) !== null && _b !== void 0 ? _b : Infinity)
|
|
47
55
|
: Infinity, step: step, formatter: formatter, rightAlign: false }));
|
|
48
56
|
};
|
|
49
57
|
exports.TimelineNumberField = TimelineNumberField;
|
|
@@ -8,6 +8,7 @@ const TimelineEnumField_1 = require("./TimelineEnumField");
|
|
|
8
8
|
const TimelineNumberField_1 = require("./TimelineNumberField");
|
|
9
9
|
const TimelineRotationField_1 = require("./TimelineRotationField");
|
|
10
10
|
const TimelineScaleField_1 = require("./TimelineScaleField");
|
|
11
|
+
const TimelineTransformOriginField_1 = require("./TimelineTransformOriginField");
|
|
11
12
|
const TimelineTranslateField_1 = require("./TimelineTranslateField");
|
|
12
13
|
const TimelineUvCoordinateField_1 = require("./TimelineUvCoordinateField");
|
|
13
14
|
const inlineWrapper = {
|
|
@@ -30,6 +31,9 @@ const TimelinePrimitiveFieldValue = ({ field, onSave, onDragValueChange, onDragE
|
|
|
30
31
|
if (field.typeName === 'translate') {
|
|
31
32
|
return (jsx_runtime_1.jsx("span", { children: jsx_runtime_1.jsx(TimelineTranslateField_1.TimelineTranslateField, { effectiveValue: effectiveValue, field: field, onDragEnd: onDragEnd, onDragValueChange: onDragValueChange, onSave: onSave, propStatus: propStatus }) }));
|
|
32
33
|
}
|
|
34
|
+
if (field.typeName === 'transform-origin') {
|
|
35
|
+
return (jsx_runtime_1.jsx("span", { children: jsx_runtime_1.jsx(TimelineTransformOriginField_1.TimelineTransformOriginField, { effectiveValue: effectiveValue, field: field, onDragEnd: onDragEnd, onDragValueChange: onDragValueChange, onSave: onSave, propStatus: propStatus }) }));
|
|
36
|
+
}
|
|
33
37
|
if (field.typeName === 'scale') {
|
|
34
38
|
if (scaleLockNodePath === null) {
|
|
35
39
|
throw new Error('Expected scale lock node path for scale field');
|
|
@@ -5,39 +5,21 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const InputDragger_1 = require("../NewComposition/InputDragger");
|
|
7
7
|
const timeline_field_utils_1 = require("./timeline-field-utils");
|
|
8
|
-
const
|
|
9
|
-
const unitToDegrees = {
|
|
10
|
-
deg: 1,
|
|
11
|
-
rad: 180 / Math.PI,
|
|
12
|
-
turn: 360,
|
|
13
|
-
grad: 360 / 400,
|
|
14
|
-
};
|
|
15
|
-
const parseCssRotationToDegrees = (value) => {
|
|
16
|
-
const match = value.trim().match(unitPattern);
|
|
17
|
-
if (match) {
|
|
18
|
-
return (0, timeline_field_utils_1.normalizeTimelineNumber)(Number(match[1]) * unitToDegrees[match[2]]);
|
|
19
|
-
}
|
|
20
|
-
try {
|
|
21
|
-
const m = new DOMMatrix(`rotate(${value})`);
|
|
22
|
-
return (0, timeline_field_utils_1.normalizeTimelineNumber)(Math.atan2(m.b, m.a) * (180 / Math.PI));
|
|
23
|
-
}
|
|
24
|
-
catch (_a) {
|
|
25
|
-
return 0;
|
|
26
|
-
}
|
|
27
|
-
};
|
|
8
|
+
const timeline_rotation_utils_1 = require("./timeline-rotation-utils");
|
|
28
9
|
const TimelineRotationField = ({ field, effectiveValue, propStatus, onSave, onDragValueChange, onDragEnd, }) => {
|
|
29
|
-
var _a, _b
|
|
10
|
+
var _a, _b;
|
|
30
11
|
const [dragValue, setDragValue] = (0, react_1.useState)(null);
|
|
31
12
|
const isCssRotation = field.fieldSchema.type === 'rotation-css';
|
|
32
13
|
const degrees = (0, react_1.useMemo)(() => {
|
|
33
14
|
if (isCssRotation) {
|
|
34
|
-
return parseCssRotationToDegrees(String(effectiveValue !== null && effectiveValue !== void 0 ? effectiveValue : '0deg'));
|
|
15
|
+
return (0, timeline_rotation_utils_1.parseCssRotationToDegrees)(String(effectiveValue !== null && effectiveValue !== void 0 ? effectiveValue : '0deg'));
|
|
35
16
|
}
|
|
36
17
|
return typeof effectiveValue === 'number' ? effectiveValue : 0;
|
|
37
18
|
}, [effectiveValue, isCssRotation]);
|
|
38
19
|
const serializeValue = (0, react_1.useCallback)((value) => {
|
|
39
|
-
|
|
40
|
-
|
|
20
|
+
return isCssRotation
|
|
21
|
+
? (0, timeline_rotation_utils_1.serializeCssRotation)(value)
|
|
22
|
+
: (0, timeline_field_utils_1.normalizeTimelineNumber)(value);
|
|
41
23
|
}, [isCssRotation]);
|
|
42
24
|
const onValueChange = (0, react_1.useCallback)((newVal) => {
|
|
43
25
|
setDragValue(newVal);
|
|
@@ -68,23 +50,29 @@ const TimelineRotationField = ({ field, effectiveValue, propStatus, onSave, onDr
|
|
|
68
50
|
}
|
|
69
51
|
}
|
|
70
52
|
}, [propStatus, onSave, serializeValue]);
|
|
71
|
-
const
|
|
53
|
+
const configuredStep = field.fieldSchema.type === 'rotation-css' ||
|
|
72
54
|
field.fieldSchema.type === 'rotation-degrees'
|
|
73
|
-
?
|
|
74
|
-
:
|
|
55
|
+
? field.fieldSchema.step
|
|
56
|
+
: undefined;
|
|
57
|
+
const step = configuredStep !== null && configuredStep !== void 0 ? configuredStep : 1;
|
|
75
58
|
const min = field.fieldSchema.type === 'rotation-degrees'
|
|
76
|
-
? ((
|
|
59
|
+
? ((_a = field.fieldSchema.min) !== null && _a !== void 0 ? _a : -Infinity)
|
|
77
60
|
: -Infinity;
|
|
78
61
|
const max = field.fieldSchema.type === 'rotation-degrees'
|
|
79
|
-
? ((
|
|
62
|
+
? ((_b = field.fieldSchema.max) !== null && _b !== void 0 ? _b : Infinity)
|
|
80
63
|
: Infinity;
|
|
81
|
-
const
|
|
64
|
+
const decimalPlaces = (0, react_1.useMemo)(() => (0, timeline_field_utils_1.getTimelineDisplayDecimalPlaces)({
|
|
65
|
+
defaultDecimalPlaces: 1,
|
|
66
|
+
step: configuredStep,
|
|
67
|
+
}), [configuredStep]);
|
|
82
68
|
const formatter = (0, react_1.useCallback)((v) => {
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
69
|
+
const formatted = (0, timeline_field_utils_1.formatTimelineNumber)({
|
|
70
|
+
decimalPlaces,
|
|
71
|
+
fixed: false,
|
|
72
|
+
value: (0, timeline_field_utils_1.normalizeTimelineNumber)(Number(v)),
|
|
73
|
+
});
|
|
86
74
|
return `${formatted}\u00B0`;
|
|
87
|
-
}, [
|
|
75
|
+
}, [decimalPlaces]);
|
|
88
76
|
return (jsx_runtime_1.jsx(InputDragger_1.InputDragger, { type: "number", value: dragValue !== null && dragValue !== void 0 ? dragValue : degrees, style: timeline_field_utils_1.draggerStyle, status: "ok", small: true, onValueChange: onValueChange, onValueChangeEnd: onValueChangeEnd, onTextChange: onTextChange, min: min, max: max, step: step, formatter: formatter, rightAlign: false }));
|
|
89
77
|
};
|
|
90
78
|
exports.TimelineRotationField = TimelineRotationField;
|
|
@@ -24,7 +24,7 @@ const toggleStyle = {
|
|
|
24
24
|
...TimelineLayerEye_1.timelineLayerIconContainer,
|
|
25
25
|
border: 'none',
|
|
26
26
|
color: colors_1.LIGHT_COLOR,
|
|
27
|
-
cursor: '
|
|
27
|
+
cursor: 'default',
|
|
28
28
|
marginRight: 0,
|
|
29
29
|
padding: 0,
|
|
30
30
|
};
|
|
@@ -78,7 +78,7 @@ const LinkToggle = ({ linked, onToggle }) => {
|
|
|
78
78
|
return (jsx_runtime_1.jsx("button", { type: "button", style: toggleStyle, onPointerDown: onPointerDown, title: linked ? 'Unlink scale axes' : 'Link scale axes', "aria-label": linked ? 'Unlink scale axes' : 'Link scale axes', children: linked ? (jsx_runtime_1.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 640 640", style: linkIconStyle, children: jsx_runtime_1.jsx("path", { fill: "currentcolor", d: "M32 320C32 214 118 128 224 128L288 128L288 192L224 192C153.3 192 96 249.3 96 320C96 390.7 153.3 448 224 448L288 448L288 512L224 512C118 512 32 426 32 320zM608 320C608 426 522 512 416 512L352 512L352 448L416 448C486.7 448 544 390.7 544 320C544 249.3 486.7 192 416 192L352 192L352 128L416 128C522 128 608 214 608 320zM224 288L448 288L448 352L192 352L192 288L224 288z" }) })) : null }));
|
|
79
79
|
};
|
|
80
80
|
const TimelineScaleField = ({ field, propStatus, effectiveValue, onSave, onDragValueChange, onDragEnd, scaleLockNodePath, }) => {
|
|
81
|
-
var _a, _b
|
|
81
|
+
var _a, _b;
|
|
82
82
|
const [dragX, setDragX] = (0, react_1.useState)(null);
|
|
83
83
|
const [dragY, setDragY] = (0, react_1.useState)(null);
|
|
84
84
|
const dragStartRef = (0, react_1.useRef)(null);
|
|
@@ -90,21 +90,25 @@ const TimelineScaleField = ({ field, propStatus, effectiveValue, onSave, onDragV
|
|
|
90
90
|
fieldKey: field.key,
|
|
91
91
|
defaultValue: defaultLinked,
|
|
92
92
|
});
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
: 0.01;
|
|
93
|
+
const configuredStep = field.fieldSchema.type === 'scale' ? field.fieldSchema.step : undefined;
|
|
94
|
+
const step = configuredStep !== null && configuredStep !== void 0 ? configuredStep : 0.01;
|
|
96
95
|
const min = field.fieldSchema.type === 'scale'
|
|
97
|
-
? ((
|
|
96
|
+
? ((_a = field.fieldSchema.min) !== null && _a !== void 0 ? _a : -Infinity)
|
|
98
97
|
: -Infinity;
|
|
99
98
|
const max = field.fieldSchema.type === 'scale'
|
|
100
|
-
? ((
|
|
99
|
+
? ((_b = field.fieldSchema.max) !== null && _b !== void 0 ? _b : Infinity)
|
|
101
100
|
: Infinity;
|
|
102
|
-
const
|
|
101
|
+
const decimalPlaces = (0, react_1.useMemo)(() => (0, timeline_field_utils_1.getTimelineDisplayDecimalPlaces)({
|
|
102
|
+
defaultDecimalPlaces: 2,
|
|
103
|
+
step: configuredStep,
|
|
104
|
+
}), [configuredStep]);
|
|
103
105
|
const formatter = (0, react_1.useCallback)((v) => {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
106
|
+
return (0, timeline_field_utils_1.formatTimelineNumber)({
|
|
107
|
+
decimalPlaces,
|
|
108
|
+
fixed: true,
|
|
109
|
+
value: v,
|
|
110
|
+
});
|
|
111
|
+
}, [decimalPlaces]);
|
|
108
112
|
const getDragStart = (0, react_1.useCallback)(() => {
|
|
109
113
|
if (dragStartRef.current === null) {
|
|
110
114
|
dragStartRef.current = [dragX !== null && dragX !== void 0 ? dragX : codeX, dragY !== null && dragY !== void 0 ? dragY : codeY];
|
|
@@ -3,24 +3,40 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.TimelineScrollable = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
|
-
const colors_1 = require("../../helpers/colors");
|
|
7
6
|
const is_menu_item_1 = require("../Menu/is-menu-item");
|
|
8
7
|
const timeline_refs_1 = require("./timeline-refs");
|
|
8
|
+
const TimelineSelection_1 = require("./TimelineSelection");
|
|
9
9
|
const outer = {
|
|
10
10
|
width: '100%',
|
|
11
11
|
height: '100%',
|
|
12
12
|
overflowX: 'auto',
|
|
13
13
|
overflowY: 'hidden',
|
|
14
14
|
position: 'relative',
|
|
15
|
-
backgroundColor:
|
|
15
|
+
backgroundColor: TimelineSelection_1.TIMELINE_BACKGROUND,
|
|
16
|
+
};
|
|
17
|
+
const marqueeStyle = {
|
|
18
|
+
backgroundColor: 'rgba(70, 130, 255, 0.16)',
|
|
19
|
+
border: '1px solid rgba(70, 130, 255, 0.75)',
|
|
20
|
+
boxSizing: 'border-box',
|
|
21
|
+
pointerEvents: 'none',
|
|
22
|
+
position: 'fixed',
|
|
23
|
+
zIndex: 10,
|
|
16
24
|
};
|
|
17
25
|
const TimelineScrollable = ({ children }) => {
|
|
26
|
+
const { marqueeRect, onPointerDownCapture } = (0, TimelineSelection_1.useTimelineMarqueeSelection)();
|
|
18
27
|
const containerStyle = (0, react_1.useMemo)(() => {
|
|
19
28
|
return {
|
|
20
29
|
width: '100%',
|
|
21
30
|
minHeight: '100%',
|
|
22
31
|
};
|
|
23
32
|
}, []);
|
|
24
|
-
return (jsx_runtime_1.
|
|
33
|
+
return (jsx_runtime_1.jsxs("div", { ref: timeline_refs_1.scrollableRef, style: outer, className: is_menu_item_1.HORIZONTAL_SCROLLBAR_CLASSNAME, onPointerDownCapture: onPointerDownCapture, children: [
|
|
34
|
+
jsx_runtime_1.jsx("div", { style: containerStyle, children: children }), marqueeRect === null ? null : (jsx_runtime_1.jsx("div", { style: {
|
|
35
|
+
...marqueeStyle,
|
|
36
|
+
height: marqueeRect.bottom - marqueeRect.top,
|
|
37
|
+
left: marqueeRect.left,
|
|
38
|
+
top: marqueeRect.top,
|
|
39
|
+
width: marqueeRect.right - marqueeRect.left,
|
|
40
|
+
} }))] }));
|
|
25
41
|
};
|
|
26
42
|
exports.TimelineScrollable = TimelineScrollable;
|