@remotion/studio 4.0.458 → 4.0.460
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/audio-waveform-worker.js +4 -4
- package/dist/components/AudioWaveform.js +4 -4
- package/dist/components/Checkbox.d.ts +7 -0
- package/dist/components/Checkbox.js +38 -24
- package/dist/components/Editor.js +10 -9
- package/dist/components/ExpandedTracksProvider.d.ts +9 -4
- package/dist/components/ExpandedTracksProvider.js +45 -15
- package/dist/components/MenuBuildIndicator.js +0 -1
- package/dist/components/NewComposition/ComboBox.d.ts +1 -0
- package/dist/components/NewComposition/ComboBox.js +14 -5
- package/dist/components/SequencePropsSubscriptionProvider.d.ts +3 -0
- package/dist/components/SequencePropsSubscriptionProvider.js +26 -0
- package/dist/components/Timeline/SequencePropsObserver.d.ts +1 -0
- package/dist/components/Timeline/SequencePropsObserver.js +24 -0
- package/dist/components/Timeline/SubscribeToNodePaths.d.ts +7 -0
- package/dist/components/Timeline/SubscribeToNodePaths.js +15 -0
- package/dist/components/Timeline/Timeline.js +28 -48
- package/dist/components/Timeline/TimelineBooleanField.js +1 -1
- package/dist/components/Timeline/TimelineEnumField.js +18 -10
- package/dist/components/Timeline/TimelineExpandArrowButton.d.ts +1 -0
- package/dist/components/Timeline/TimelineExpandArrowButton.js +5 -3
- package/dist/components/Timeline/TimelineExpandedRow.d.ts +6 -6
- package/dist/components/Timeline/TimelineExpandedRow.js +4 -5
- package/dist/components/Timeline/TimelineExpandedSection.d.ts +2 -2
- package/dist/components/Timeline/TimelineExpandedSection.js +20 -9
- package/dist/components/Timeline/TimelineFieldRow.d.ts +2 -3
- package/dist/components/Timeline/TimelineFieldRow.js +23 -20
- package/dist/components/Timeline/TimelineHeightContainer.d.ts +7 -0
- package/dist/components/Timeline/TimelineHeightContainer.js +18 -0
- package/dist/components/Timeline/TimelineList.js +1 -1
- package/dist/components/Timeline/TimelineListItem.d.ts +2 -0
- package/dist/components/Timeline/TimelineListItem.js +27 -13
- package/dist/components/Timeline/TimelineSchemaField.js +4 -1
- package/dist/components/Timeline/TimelineTracks.js +18 -7
- package/dist/components/Timeline/TimelineVideoInfo.js +25 -140
- package/dist/components/Timeline/sequence-props-subscription-store.d.ts +10 -13
- package/dist/components/Timeline/sequence-props-subscription-store.js +56 -123
- package/dist/components/Timeline/use-sequence-props-subscription.d.ts +6 -6
- package/dist/components/Timeline/use-sequence-props-subscription.js +25 -55
- package/dist/components/Timeline/use-timeline-height.d.ts +5 -0
- package/dist/components/Timeline/use-timeline-height.js +48 -0
- package/dist/components/draw-peaks.js +7 -0
- package/dist/esm/audio-waveform-worker.mjs +9 -14
- package/dist/esm/{chunk-261b3aa0.js → chunk-nrgs0ad5.js} +2810 -2975
- package/dist/esm/internals.mjs +2810 -2975
- package/dist/esm/previewEntry.mjs +2809 -2974
- package/dist/esm/renderEntry.mjs +1 -1
- package/dist/helpers/calculate-timeline.d.ts +3 -2
- package/dist/helpers/calculate-timeline.js +21 -2
- package/dist/helpers/get-timeline-sequence-layout.js +3 -3
- package/dist/helpers/get-timeline-sequence-sort-key.d.ts +6 -1
- package/dist/helpers/timeline-layout.d.ts +18 -9
- package/dist/helpers/timeline-layout.js +24 -16
- package/dist/icons/Checkmark.d.ts +4 -1
- package/dist/icons/Checkmark.js +1 -5
- package/dist/icons/caret.d.ts +3 -1
- package/dist/icons/caret.js +5 -2
- package/package.json +10 -9
- package/dist/components/looped-media-timeline.d.ts +0 -6
- package/dist/components/looped-media-timeline.js +0 -14
- package/dist/helpers/extract-frames.d.ts +0 -18
- package/dist/helpers/extract-frames.js +0 -87
- package/dist/helpers/frame-database.d.ts +0 -16
- package/dist/helpers/frame-database.js +0 -65
- package/dist/helpers/resize-video-frame.d.ts +0 -4
- package/dist/helpers/resize-video-frame.js +0 -39
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/// <reference lib="webworker" />
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const timeline_utils_1 = require("@remotion/timeline-utils");
|
|
4
5
|
const draw_peaks_1 = require("./components/draw-peaks");
|
|
5
6
|
const load_waveform_peaks_1 = require("./components/load-waveform-peaks");
|
|
6
|
-
const looped_media_timeline_1 = require("./components/looped-media-timeline");
|
|
7
7
|
const slice_waveform_peaks_1 = require("./components/slice-waveform-peaks");
|
|
8
8
|
let canvas = null;
|
|
9
9
|
let currentController = null;
|
|
@@ -22,7 +22,7 @@ const drawPartialWaveform = (message, peaks) => {
|
|
|
22
22
|
return;
|
|
23
23
|
}
|
|
24
24
|
const portionPeaks = (0, slice_waveform_peaks_1.sliceWaveformPeaks)({
|
|
25
|
-
durationInFrames: (0,
|
|
25
|
+
durationInFrames: (0, timeline_utils_1.shouldTileLoopDisplay)(message.loopDisplay)
|
|
26
26
|
? message.loopDisplay.durationInFrames
|
|
27
27
|
: message.durationInFrames,
|
|
28
28
|
fps: message.fps,
|
|
@@ -30,11 +30,11 @@ const drawPartialWaveform = (message, peaks) => {
|
|
|
30
30
|
playbackRate: message.playbackRate,
|
|
31
31
|
startFrom: message.startFrom,
|
|
32
32
|
});
|
|
33
|
-
if (!(0,
|
|
33
|
+
if (!(0, timeline_utils_1.shouldTileLoopDisplay)(message.loopDisplay)) {
|
|
34
34
|
(0, draw_peaks_1.drawBars)(canvas, portionPeaks, 'rgba(255, 255, 255, 0.6)', message.volume, message.width);
|
|
35
35
|
return;
|
|
36
36
|
}
|
|
37
|
-
const loopWidth = (0,
|
|
37
|
+
const loopWidth = (0, timeline_utils_1.getLoopDisplayWidth)({
|
|
38
38
|
visualizationWidth: message.width,
|
|
39
39
|
loopDisplay: message.loopDisplay,
|
|
40
40
|
});
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AudioWaveform = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const timeline_utils_1 = require("@remotion/timeline-utils");
|
|
5
6
|
const react_1 = require("react");
|
|
6
7
|
const remotion_1 = require("remotion");
|
|
7
8
|
const colors_1 = require("../helpers/colors");
|
|
@@ -9,7 +10,6 @@ const timeline_layout_1 = require("../helpers/timeline-layout");
|
|
|
9
10
|
const make_audio_waveform_worker_1 = require("../make-audio-waveform-worker");
|
|
10
11
|
const draw_peaks_1 = require("./draw-peaks");
|
|
11
12
|
const load_waveform_peaks_1 = require("./load-waveform-peaks");
|
|
12
|
-
const looped_media_timeline_1 = require("./looped-media-timeline");
|
|
13
13
|
const slice_waveform_peaks_1 = require("./slice-waveform-peaks");
|
|
14
14
|
const EMPTY_PEAKS = new Float32Array(0);
|
|
15
15
|
// Recreate the canvas after Fast Refresh because an already transferred canvas
|
|
@@ -152,7 +152,7 @@ const AudioWaveform = ({ src, startFrom, durationInFrames, visualizationWidth, v
|
|
|
152
152
|
return null;
|
|
153
153
|
}
|
|
154
154
|
return (0, slice_waveform_peaks_1.sliceWaveformPeaks)({
|
|
155
|
-
durationInFrames: (0,
|
|
155
|
+
durationInFrames: (0, timeline_utils_1.shouldTileLoopDisplay)(loopDisplay)
|
|
156
156
|
? loopDisplay.durationInFrames
|
|
157
157
|
: durationInFrames,
|
|
158
158
|
fps: vidConf.fps,
|
|
@@ -203,13 +203,13 @@ const AudioWaveform = ({ src, startFrom, durationInFrames, visualizationWidth, v
|
|
|
203
203
|
}
|
|
204
204
|
canvasElement.width = w;
|
|
205
205
|
canvasElement.height = h;
|
|
206
|
-
if ((0,
|
|
206
|
+
if ((0, timeline_utils_1.shouldTileLoopDisplay)(loopDisplay)) {
|
|
207
207
|
drawLoopedWaveform({
|
|
208
208
|
canvas: canvasElement,
|
|
209
209
|
peaks: portionPeaks !== null && portionPeaks !== void 0 ? portionPeaks : EMPTY_PEAKS,
|
|
210
210
|
volume: vol,
|
|
211
211
|
visualizationWidth,
|
|
212
|
-
loopWidth: (0,
|
|
212
|
+
loopWidth: (0, timeline_utils_1.getLoopDisplayWidth)({
|
|
213
213
|
visualizationWidth,
|
|
214
214
|
loopDisplay,
|
|
215
215
|
}),
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
declare const SIZES: {
|
|
3
|
+
readonly default: 20;
|
|
4
|
+
readonly small: 18;
|
|
5
|
+
};
|
|
6
|
+
export type CheckboxVariant = keyof typeof SIZES;
|
|
2
7
|
export declare const Checkbox: React.FC<{
|
|
3
8
|
readonly checked: boolean;
|
|
4
9
|
readonly onChange: React.ChangeEventHandler<HTMLInputElement>;
|
|
5
10
|
readonly name: string;
|
|
6
11
|
readonly rounded?: boolean;
|
|
7
12
|
readonly disabled?: boolean;
|
|
13
|
+
readonly variant?: CheckboxVariant;
|
|
8
14
|
}>;
|
|
15
|
+
export {};
|
|
@@ -5,32 +5,46 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const colors_1 = require("../helpers/colors");
|
|
7
7
|
const Checkmark_1 = require("../icons/Checkmark");
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
width: size,
|
|
12
|
-
position: 'relative',
|
|
8
|
+
const SIZES = {
|
|
9
|
+
default: 20,
|
|
10
|
+
small: 18,
|
|
13
11
|
};
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
backgroundColor: colors_1.LIGHT_TEXT,
|
|
18
|
-
borderRadius: '50%',
|
|
12
|
+
const BULLET_SIZES = {
|
|
13
|
+
default: 10,
|
|
14
|
+
small: 9,
|
|
19
15
|
};
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
alignItems: 'center',
|
|
24
|
-
position: 'absolute',
|
|
25
|
-
height: size,
|
|
26
|
-
width: size,
|
|
27
|
-
top: 0,
|
|
28
|
-
left: 0,
|
|
29
|
-
pointerEvents: 'none',
|
|
30
|
-
color: 'white',
|
|
16
|
+
const CHECKMARK_SIZES = {
|
|
17
|
+
default: 14,
|
|
18
|
+
small: 13,
|
|
31
19
|
};
|
|
32
|
-
const Checkbox = ({ checked, onChange, disabled, name, rounded }) => {
|
|
20
|
+
const Checkbox = ({ checked, onChange, disabled, name, rounded, variant = 'default' }) => {
|
|
33
21
|
const ref = (0, react_1.useRef)(null);
|
|
22
|
+
const size = SIZES[variant];
|
|
23
|
+
const bulletSize = BULLET_SIZES[variant];
|
|
24
|
+
const checkmarkSize = CHECKMARK_SIZES[variant];
|
|
25
|
+
const background = (0, react_1.useMemo)(() => ({
|
|
26
|
+
height: size,
|
|
27
|
+
width: size,
|
|
28
|
+
position: 'relative',
|
|
29
|
+
}), [size]);
|
|
30
|
+
const bullet = (0, react_1.useMemo)(() => ({
|
|
31
|
+
width: bulletSize,
|
|
32
|
+
height: bulletSize,
|
|
33
|
+
backgroundColor: colors_1.LIGHT_TEXT,
|
|
34
|
+
borderRadius: '50%',
|
|
35
|
+
}), [bulletSize]);
|
|
36
|
+
const box = (0, react_1.useMemo)(() => ({
|
|
37
|
+
display: 'flex',
|
|
38
|
+
justifyContent: 'center',
|
|
39
|
+
alignItems: 'center',
|
|
40
|
+
position: 'absolute',
|
|
41
|
+
height: size,
|
|
42
|
+
width: size,
|
|
43
|
+
top: 0,
|
|
44
|
+
left: 0,
|
|
45
|
+
pointerEvents: 'none',
|
|
46
|
+
color: 'white',
|
|
47
|
+
}), [size]);
|
|
34
48
|
const input = (0, react_1.useMemo)(() => {
|
|
35
49
|
return {
|
|
36
50
|
appearance: 'none',
|
|
@@ -43,14 +57,14 @@ const Checkbox = ({ checked, onChange, disabled, name, rounded }) => {
|
|
|
43
57
|
position: 'absolute',
|
|
44
58
|
margin: 0,
|
|
45
59
|
};
|
|
46
|
-
}, [disabled]);
|
|
60
|
+
}, [disabled, size]);
|
|
47
61
|
(0, react_1.useEffect)(() => {
|
|
48
62
|
if (ref.current) {
|
|
49
63
|
ref.current.style.setProperty('border-radius', rounded ? '50%' : '0%', 'important');
|
|
50
64
|
}
|
|
51
65
|
}, [rounded]);
|
|
52
66
|
return (jsx_runtime_1.jsxs("div", { style: background, children: [
|
|
53
|
-
jsx_runtime_1.jsx("input", { ref: ref, style: input, type: 'checkbox', checked: checked, onChange: onChange, disabled: disabled, name: name }), jsx_runtime_1.jsx("div", { style: box, children: checked ? rounded ? jsx_runtime_1.jsx("div", { style: bullet }) : jsx_runtime_1.jsx(Checkmark_1.Checkmark, {}) : null })
|
|
67
|
+
jsx_runtime_1.jsx("input", { ref: ref, style: input, type: 'checkbox', checked: checked, onChange: onChange, disabled: disabled, name: name }), jsx_runtime_1.jsx("div", { style: box, children: checked ? (rounded ? (jsx_runtime_1.jsx("div", { style: bullet })) : (jsx_runtime_1.jsx(Checkmark_1.Checkmark, { size: checkmarkSize }))) : null })
|
|
54
68
|
] }));
|
|
55
69
|
};
|
|
56
70
|
exports.Checkbox = Checkbox;
|
|
@@ -49,6 +49,7 @@ const GlobalKeybindings_1 = require("./GlobalKeybindings");
|
|
|
49
49
|
const Modals_1 = require("./Modals");
|
|
50
50
|
const NotificationCenter_1 = require("./Notifications/NotificationCenter");
|
|
51
51
|
const RenderErrorContext_1 = require("./RenderErrorContext");
|
|
52
|
+
const SequencePropsSubscriptionProvider_1 = require("./SequencePropsSubscriptionProvider");
|
|
52
53
|
const TopPanel_1 = require("./TopPanel");
|
|
53
54
|
const background = {
|
|
54
55
|
backgroundColor: colors_1.BACKGROUND,
|
|
@@ -90,14 +91,14 @@ const Editor = ({ Root, readOnlyStudio }) => {
|
|
|
90
91
|
}, []);
|
|
91
92
|
const compositionRenderErrorContextValue = (0, react_1.useMemo)(() => ({ setError: setRenderError, clearError }), [clearError]);
|
|
92
93
|
const renderErrorContextValue = (0, react_1.useMemo)(() => ({ error: renderError }), [renderError]);
|
|
93
|
-
return (jsx_runtime_1.jsx(z_index_1.HigherZIndex, { onEscape: noop_1.noop, onOutsideClick: noop_1.noop, children: jsx_runtime_1.
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
94
|
+
return (jsx_runtime_1.jsx(z_index_1.HigherZIndex, { onEscape: noop_1.noop, onOutsideClick: noop_1.noop, children: jsx_runtime_1.jsx(timeline_zoom_1.TimelineZoomContext, { children: jsx_runtime_1.jsxs(SequencePropsSubscriptionProvider_1.SequencePropsSubscriptionProvider, { children: [
|
|
95
|
+
jsx_runtime_1.jsxs(remotion_1.Internals.CurrentScaleContext.Provider, { value: value, children: [
|
|
96
|
+
jsx_runtime_1.jsx(ForceSpecificCursor_1.ForceSpecificCursor, {}), jsx_runtime_1.jsxs("div", { style: background, children: [
|
|
97
|
+
jsx_runtime_1.jsx(remotion_1.Internals.CompositionRenderErrorContext.Provider, { value: compositionRenderErrorContextValue, children: canvasMounted ? jsx_runtime_1.jsx(MemoRoot, {}) : null }), jsx_runtime_1.jsxs(remotion_1.Internals.CanUseRemotionHooksProvider, { children: [
|
|
98
|
+
jsx_runtime_1.jsx(RenderErrorContext_1.RenderErrorContext.Provider, { value: renderErrorContextValue, children: jsx_runtime_1.jsx(EditorContent_1.EditorContent, { readOnlyStudio: readOnlyStudio, children: jsx_runtime_1.jsx(TopPanel_1.TopPanel, { drawRef: canvas_ref_1.drawRef, bufferStateDelayInMilliseconds: exports.BUFFER_STATE_DELAY_IN_MILLISECONDS, onMounted: onMounted, readOnlyStudio: readOnlyStudio }) }) }), jsx_runtime_1.jsx(GlobalKeybindings_1.GlobalKeybindings, {})
|
|
99
|
+
] })
|
|
100
|
+
] })
|
|
101
|
+
] }), jsx_runtime_1.jsx(Modals_1.Modals, { readOnlyStudio: readOnlyStudio }), jsx_runtime_1.jsx(NotificationCenter_1.NotificationCenter, {})
|
|
102
|
+
] }) }) }));
|
|
102
103
|
};
|
|
103
104
|
exports.Editor = Editor;
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
type
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import type { SequenceNodePathInfo } from '../helpers/get-timeline-sequence-sort-key';
|
|
3
|
+
export type GetIsExpanded = (nodePathInfo: SequenceNodePathInfo) => boolean;
|
|
4
|
+
type ExpandedTracksGetterContextValue = {
|
|
5
|
+
readonly getIsExpanded: GetIsExpanded;
|
|
5
6
|
};
|
|
6
|
-
|
|
7
|
+
type ExpandedTracksSetterContextValue = {
|
|
8
|
+
readonly toggleTrack: (nodePathInfo: SequenceNodePathInfo) => void;
|
|
9
|
+
};
|
|
10
|
+
export declare const ExpandedTracksGetterContext: React.Context<ExpandedTracksGetterContextValue>;
|
|
11
|
+
export declare const ExpandedTracksSetterContext: React.Context<ExpandedTracksSetterContextValue>;
|
|
7
12
|
export declare const ExpandedTracksProvider: React.FC<{
|
|
8
13
|
readonly children: React.ReactNode;
|
|
9
14
|
}>;
|
|
@@ -1,26 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ExpandedTracksProvider = exports.
|
|
3
|
+
exports.ExpandedTracksProvider = exports.ExpandedTracksSetterContext = exports.ExpandedTracksGetterContext = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
const nodePathInfoToKey = (info) => JSON.stringify([info.nodePath, info.index]);
|
|
7
|
+
const LOCAL_STORAGE_KEY = 'remotion.editor.expandedTracks';
|
|
8
|
+
const loadExpandedTracks = () => {
|
|
9
|
+
if (typeof window === 'undefined') {
|
|
10
|
+
return {};
|
|
11
|
+
}
|
|
12
|
+
const item = window.localStorage.getItem(LOCAL_STORAGE_KEY);
|
|
13
|
+
if (item === null) {
|
|
14
|
+
return {};
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
const parsed = JSON.parse(item);
|
|
18
|
+
if (parsed && typeof parsed === 'object') {
|
|
19
|
+
return parsed;
|
|
20
|
+
}
|
|
21
|
+
return {};
|
|
22
|
+
}
|
|
23
|
+
catch (_a) {
|
|
24
|
+
return {};
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
exports.ExpandedTracksGetterContext = (0, react_1.createContext)({
|
|
28
|
+
getIsExpanded: () => {
|
|
29
|
+
throw new Error('ExpandedTracksGetterContext not initialized');
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
exports.ExpandedTracksSetterContext = (0, react_1.createContext)({
|
|
8
33
|
toggleTrack: () => {
|
|
9
|
-
throw new Error('
|
|
34
|
+
throw new Error('ExpandedTracksSetterContext not initialized');
|
|
10
35
|
},
|
|
11
36
|
});
|
|
12
37
|
const ExpandedTracksProvider = ({ children }) => {
|
|
13
|
-
const [expandedTracks, setExpandedTracks] = (0, react_1.useState)(
|
|
14
|
-
const toggleTrack = (0, react_1.useCallback)((
|
|
15
|
-
setExpandedTracks((prev) =>
|
|
16
|
-
|
|
17
|
-
[
|
|
18
|
-
|
|
38
|
+
const [expandedTracks, setExpandedTracks] = (0, react_1.useState)(loadExpandedTracks);
|
|
39
|
+
const toggleTrack = (0, react_1.useCallback)((nodePathInfo) => {
|
|
40
|
+
setExpandedTracks((prev) => {
|
|
41
|
+
const key = nodePathInfoToKey(nodePathInfo);
|
|
42
|
+
const next = { ...prev, [key]: !prev[key] };
|
|
43
|
+
window.localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(next));
|
|
44
|
+
return next;
|
|
45
|
+
});
|
|
19
46
|
}, []);
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
47
|
+
const getterValue = (0, react_1.useMemo)(() => ({
|
|
48
|
+
getIsExpanded: (nodePathInfo) => {
|
|
49
|
+
var _a;
|
|
50
|
+
return (_a = expandedTracks[nodePathInfoToKey(nodePathInfo)]) !== null && _a !== void 0 ? _a : false;
|
|
51
|
+
},
|
|
52
|
+
}), [expandedTracks]);
|
|
53
|
+
const setterValue = (0, react_1.useMemo)(() => ({ toggleTrack }), [toggleTrack]);
|
|
54
|
+
return (jsx_runtime_1.jsx(exports.ExpandedTracksSetterContext.Provider, { value: setterValue, children: jsx_runtime_1.jsx(exports.ExpandedTracksGetterContext.Provider, { value: getterValue, children: children }) }));
|
|
25
55
|
};
|
|
26
56
|
exports.ExpandedTracksProvider = ExpandedTracksProvider;
|
|
@@ -26,6 +26,10 @@ const container = {
|
|
|
26
26
|
borderStyle: 'solid',
|
|
27
27
|
maxWidth: '100%',
|
|
28
28
|
};
|
|
29
|
+
const smallContainer = {
|
|
30
|
+
...container,
|
|
31
|
+
padding: '3px 4px',
|
|
32
|
+
};
|
|
29
33
|
const label = {
|
|
30
34
|
flex: 1,
|
|
31
35
|
overflow: 'hidden',
|
|
@@ -33,7 +37,12 @@ const label = {
|
|
|
33
37
|
fontSize: 14,
|
|
34
38
|
textAlign: 'left',
|
|
35
39
|
};
|
|
36
|
-
const
|
|
40
|
+
const smallLabel = {
|
|
41
|
+
...label,
|
|
42
|
+
fontSize: 11,
|
|
43
|
+
lineHeight: 1,
|
|
44
|
+
};
|
|
45
|
+
const Combobox = ({ values, selectedId, style: customStyle, title, small = false }) => {
|
|
37
46
|
const [hovered, setIsHovered] = (0, react_1.useState)(false);
|
|
38
47
|
const [opened, setOpened] = (0, react_1.useState)(false);
|
|
39
48
|
const ref = (0, react_1.useRef)(null);
|
|
@@ -147,7 +156,7 @@ const Combobox = ({ values, selectedId, style: customStyle, title }) => {
|
|
|
147
156
|
const selected = values.find((v) => v.id === selectedId);
|
|
148
157
|
const style = (0, react_1.useMemo)(() => {
|
|
149
158
|
return {
|
|
150
|
-
...container,
|
|
159
|
+
...(small ? smallContainer : container),
|
|
151
160
|
...(customStyle !== null && customStyle !== void 0 ? customStyle : {}),
|
|
152
161
|
userSelect: 'none',
|
|
153
162
|
WebkitUserSelect: 'none',
|
|
@@ -161,11 +170,11 @@ const Combobox = ({ values, selectedId, style: customStyle, title }) => {
|
|
|
161
170
|
? colors_1.INPUT_BORDER_COLOR_HOVERED
|
|
162
171
|
: colors_1.INPUT_BORDER_COLOR_UNHOVERED,
|
|
163
172
|
};
|
|
164
|
-
}, [customStyle, hovered, opened]);
|
|
173
|
+
}, [customStyle, hovered, opened, small]);
|
|
165
174
|
return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
166
|
-
jsx_runtime_1.jsxs("button", { ref: ref, title: title, tabIndex: tabIndex, type: "button", style: style, className: is_menu_item_1.MENU_INITIATOR_CLASSNAME, children: [selected ? (jsx_runtime_1.jsx("div", { title: typeof selected.label === 'string' ? selected.label : undefined, style: label, children: selected === null || selected === void 0 ? void 0 : selected.label })) : null, jsx_runtime_1.jsx(layout_1.Spacing, { x: 1 }),
|
|
175
|
+
jsx_runtime_1.jsxs("button", { ref: ref, title: title, tabIndex: tabIndex, type: "button", style: style, className: is_menu_item_1.MENU_INITIATOR_CLASSNAME, children: [selected ? (jsx_runtime_1.jsx("div", { title: typeof selected.label === 'string' ? selected.label : undefined, style: small ? smallLabel : label, children: selected === null || selected === void 0 ? void 0 : selected.label })) : null, jsx_runtime_1.jsx(layout_1.Spacing, { x: small ? 0.5 : 1 }),
|
|
167
176
|
" ",
|
|
168
|
-
jsx_runtime_1.jsx(caret_1.CaretDown, {})
|
|
177
|
+
jsx_runtime_1.jsx(caret_1.CaretDown, { small: small })
|
|
169
178
|
] }), portalStyle
|
|
170
179
|
? react_dom_1.default.createPortal(jsx_runtime_1.jsx("div", { style: styles_1.fullScreenOverlay, children: jsx_runtime_1.jsx("div", { style: styles_1.outerPortal, className: "css-reset", children: jsx_runtime_1.jsx(z_index_1.HigherZIndex, { onOutsideClick: onHide, onEscape: onHide, children: jsx_runtime_1.jsx("div", { style: portalStyle, children: jsx_runtime_1.jsx(MenuContent_1.MenuContent, { onNextMenu: noop_1.noop, onPreviousMenu: noop_1.noop, values: values, onHide: onHide, leaveLeftSpace: true, preselectIndex: values.findIndex((v) => selected && v.id === selected.id), topItemCanBeUnselected: false, fixedHeight: derivedMaxHeight }) }) }) }) }), (0, portals_1.getPortal)(currentZIndex))
|
|
171
180
|
: null] }));
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SequencePropsSubscriptionProvider = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const remotion_1 = require("remotion");
|
|
7
|
+
const SequencePropsSubscriptionProvider = ({ children }) => {
|
|
8
|
+
const [overrideToNodePathMap, setOverrideIdToNodePathMap] = (0, react_1.useState)({});
|
|
9
|
+
const setOverrideIdToNodePath = (0, react_1.useCallback)((overrideId, state) => {
|
|
10
|
+
setOverrideIdToNodePathMap((prev) => {
|
|
11
|
+
const existing = prev[overrideId];
|
|
12
|
+
if (existing && existing === state) {
|
|
13
|
+
return prev;
|
|
14
|
+
}
|
|
15
|
+
return { ...prev, [overrideId]: state };
|
|
16
|
+
});
|
|
17
|
+
}, []);
|
|
18
|
+
const getters = (0, react_1.useMemo)(() => {
|
|
19
|
+
return { overrideIdToNodePathMappings: overrideToNodePathMap };
|
|
20
|
+
}, [overrideToNodePathMap]);
|
|
21
|
+
const setters = (0, react_1.useMemo)(() => {
|
|
22
|
+
return { setOverrideIdToNodePath };
|
|
23
|
+
}, [setOverrideIdToNodePath]);
|
|
24
|
+
return (jsx_runtime_1.jsx(remotion_1.Internals.OverrideIdsToNodePathsGettersContext.Provider, { value: getters, children: jsx_runtime_1.jsx(remotion_1.Internals.OverrideIdsToNodePathsSettersContext.Provider, { value: setters, children: children }) }));
|
|
25
|
+
};
|
|
26
|
+
exports.SequencePropsSubscriptionProvider = SequencePropsSubscriptionProvider;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const SequencePropsObserver: () => null;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SequencePropsObserver = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const remotion_1 = require("remotion");
|
|
6
|
+
const client_id_1 = require("../../helpers/client-id");
|
|
7
|
+
const SequencePropsObserver = () => {
|
|
8
|
+
const { subscribeToEvent } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
9
|
+
const { setCodeValues } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
10
|
+
(0, react_1.useEffect)(() => {
|
|
11
|
+
const handleEvent = (event) => {
|
|
12
|
+
if (event.type !== 'sequence-props-updated') {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
setCodeValues(event.nodePath, event.result);
|
|
16
|
+
};
|
|
17
|
+
const unsubscribe = subscribeToEvent('sequence-props-updated', handleEvent);
|
|
18
|
+
return () => {
|
|
19
|
+
unsubscribe();
|
|
20
|
+
};
|
|
21
|
+
}, [setCodeValues, subscribeToEvent]);
|
|
22
|
+
return null;
|
|
23
|
+
};
|
|
24
|
+
exports.SequencePropsObserver = SequencePropsObserver;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SubscribeToNodePaths = void 0;
|
|
4
|
+
const use_resolved_stack_1 = require("./use-resolved-stack");
|
|
5
|
+
const use_sequence_props_subscription_1 = require("./use-sequence-props-subscription");
|
|
6
|
+
const SubscribeToNodePaths = ({ overrideId, schema, stack }) => {
|
|
7
|
+
const originalLocation = (0, use_resolved_stack_1.useResolvedStack)(stack);
|
|
8
|
+
(0, use_sequence_props_subscription_1.useSequencePropsSubscription)({
|
|
9
|
+
overrideId,
|
|
10
|
+
schema,
|
|
11
|
+
originalLocation,
|
|
12
|
+
});
|
|
13
|
+
return null;
|
|
14
|
+
};
|
|
15
|
+
exports.SubscribeToNodePaths = SubscribeToNodePaths;
|
|
@@ -40,16 +40,17 @@ const remotion_1 = require("remotion");
|
|
|
40
40
|
const calculate_timeline_1 = require("../../helpers/calculate-timeline");
|
|
41
41
|
const client_id_1 = require("../../helpers/client-id");
|
|
42
42
|
const colors_1 = require("../../helpers/colors");
|
|
43
|
-
const timeline_layout_1 = require("../../helpers/timeline-layout");
|
|
44
|
-
const ExpandedTracksProvider_1 = require("../ExpandedTracksProvider");
|
|
45
43
|
const is_menu_item_1 = require("../Menu/is-menu-item");
|
|
46
44
|
const SplitterContainer_1 = require("../Splitter/SplitterContainer");
|
|
47
45
|
const SplitterElement_1 = require("../Splitter/SplitterElement");
|
|
48
46
|
const SplitterHandle_1 = require("../Splitter/SplitterHandle");
|
|
49
47
|
const is_collapsed_1 = require("./is-collapsed");
|
|
50
48
|
const MaxTimelineTracks_1 = require("./MaxTimelineTracks");
|
|
49
|
+
const SequencePropsObserver_1 = require("./SequencePropsObserver");
|
|
50
|
+
const SubscribeToNodePaths_1 = require("./SubscribeToNodePaths");
|
|
51
51
|
const timeline_refs_1 = require("./timeline-refs");
|
|
52
52
|
const TimelineDragHandler_1 = require("./TimelineDragHandler");
|
|
53
|
+
const TimelineHeightContainer_1 = require("./TimelineHeightContainer");
|
|
53
54
|
const TimelineInOutPointer_1 = require("./TimelineInOutPointer");
|
|
54
55
|
const TimelineList_1 = require("./TimelineList");
|
|
55
56
|
const TimelinePinchZoom_1 = require("./TimelinePinchZoom");
|
|
@@ -71,12 +72,10 @@ const noop = () => undefined;
|
|
|
71
72
|
const TimelineInner = () => {
|
|
72
73
|
var _a;
|
|
73
74
|
const { sequences } = (0, react_1.useContext)(remotion_1.Internals.SequenceManager);
|
|
74
|
-
const { expandedTracks } = (0, react_1.useContext)(ExpandedTracksProvider_1.ExpandedTracksContext);
|
|
75
|
-
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
76
|
-
const { dragOverrides, codeValues } = (0, react_1.useContext)(remotion_1.Internals.VisualModeOverridesContext);
|
|
77
|
-
const visualModeEnabled = Boolean(process.env.EXPERIMENTAL_VISUAL_MODE_ENABLED) &&
|
|
78
|
-
previewServerState.type === 'connected';
|
|
79
75
|
const videoConfig = remotion_1.Internals.useUnsafeVideoConfig();
|
|
76
|
+
const { overrideIdToNodePathMappings } = (0, react_1.useContext)(remotion_1.Internals.OverrideIdsToNodePathsGettersContext);
|
|
77
|
+
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
78
|
+
const previewConnected = previewServerState.type === 'connected';
|
|
80
79
|
const videoConfigIsNull = videoConfig === null;
|
|
81
80
|
const timeline = (0, react_1.useMemo)(() => {
|
|
82
81
|
if (videoConfigIsNull) {
|
|
@@ -84,52 +83,33 @@ const TimelineInner = () => {
|
|
|
84
83
|
}
|
|
85
84
|
return (0, calculate_timeline_1.calculateTimeline)({
|
|
86
85
|
sequences,
|
|
86
|
+
overrideIdsToNodePaths: overrideIdToNodePathMappings,
|
|
87
87
|
});
|
|
88
|
-
}, [sequences, videoConfigIsNull]);
|
|
88
|
+
}, [sequences, videoConfigIsNull, overrideIdToNodePathMappings]);
|
|
89
89
|
const durationInFrames = (_a = videoConfig === null || videoConfig === void 0 ? void 0 : videoConfig.durationInFrames) !== null && _a !== void 0 ? _a : 0;
|
|
90
90
|
const filtered = (0, react_1.useMemo)(() => {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
return withoutAfter.filter((t) => t.sequence.showInTimeline);
|
|
91
|
+
return timeline.filter((t) => !(0, is_collapsed_1.isTrackHidden)(t) &&
|
|
92
|
+
t.sequence.from <= durationInFrames &&
|
|
93
|
+
t.sequence.duration > 0 &&
|
|
94
|
+
t.sequence.showInTimeline);
|
|
96
95
|
}, [durationInFrames, timeline]);
|
|
97
96
|
const shown = filtered.slice(0, MaxTimelineTracks_1.MAX_TIMELINE_TRACKS);
|
|
98
97
|
const hasBeenCut = filtered.length > shown.length;
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
(
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
flex: 1,
|
|
116
|
-
minHeight: '100%',
|
|
117
|
-
overflowX: 'hidden',
|
|
118
|
-
};
|
|
119
|
-
}, [
|
|
120
|
-
hasBeenCut,
|
|
121
|
-
shown,
|
|
122
|
-
expandedTracks,
|
|
123
|
-
visualModeEnabled,
|
|
124
|
-
codeValues,
|
|
125
|
-
dragOverrides,
|
|
126
|
-
]);
|
|
127
|
-
return (jsx_runtime_1.jsx("div", { ref: timeline_refs_1.timelineVerticalScroll, style: container, className: 'css-reset ' + is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: jsx_runtime_1.jsxs(TimelineWidthProvider_1.TimelineWidthProvider, { children: [
|
|
128
|
-
jsx_runtime_1.jsx(TimelinePinchZoom_1.TimelinePinchZoom, {}), jsx_runtime_1.jsx("div", { style: inner, children: jsx_runtime_1.jsxs(SplitterContainer_1.SplitterContainer, { orientation: "vertical", defaultFlex: 0.2, id: "names-to-timeline", maxFlex: 0.5, minFlex: 0.15, children: [
|
|
129
|
-
jsx_runtime_1.jsx(SplitterElement_1.SplitterElement, { type: "flexer", sticky: jsx_runtime_1.jsx(TimelineTimeIndicators_1.TimelineTimePlaceholders, {}), children: jsx_runtime_1.jsx(TimelineList_1.TimelineList, { timeline: shown }) }), jsx_runtime_1.jsx(SplitterHandle_1.SplitterHandle, { onCollapse: noop, allowToCollapse: "none" }), jsx_runtime_1.jsx(SplitterElement_1.SplitterElement, { type: "anti-flexer", sticky: null, children: jsx_runtime_1.jsxs(TimelineScrollable_1.TimelineScrollable, { children: [
|
|
130
|
-
jsx_runtime_1.jsx(TimelineTracks_1.TimelineTracks, { timeline: shown, hasBeenCut: hasBeenCut }), jsx_runtime_1.jsx(TimelineInOutPointer_1.TimelineInOutPointer, {}), jsx_runtime_1.jsx(TimelinePlayCursorSyncer_1.TimelinePlayCursorSyncer, {}), jsx_runtime_1.jsx(TimelineDragHandler_1.TimelineDragHandler, {}), jsx_runtime_1.jsx(TimelineTimeIndicators_1.TimelineTimeIndicators, {}), jsx_runtime_1.jsx(TimelineSlider_1.TimelineSlider, {})
|
|
131
|
-
] }) })
|
|
132
|
-
] }) })
|
|
133
|
-
] }) }));
|
|
98
|
+
const visualModeEnvEnabled = Boolean(process.env.EXPERIMENTAL_VISUAL_MODE_ENABLED);
|
|
99
|
+
return (jsx_runtime_1.jsxs("div", { ref: timeline_refs_1.timelineVerticalScroll, style: container, className: 'css-reset ' + is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: [visualModeEnvEnabled
|
|
100
|
+
? sequences.map((sequence) => {
|
|
101
|
+
if (!sequence.controls || !previewConnected || !sequence.stack) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
return (jsx_runtime_1.jsx(SubscribeToNodePaths_1.SubscribeToNodePaths, { overrideId: sequence.controls.overrideId, schema: sequence.controls.schema, stack: sequence.stack }, sequence.id));
|
|
105
|
+
})
|
|
106
|
+
: null, jsx_runtime_1.jsx(SequencePropsObserver_1.SequencePropsObserver, {}), jsx_runtime_1.jsxs(TimelineWidthProvider_1.TimelineWidthProvider, { children: [
|
|
107
|
+
jsx_runtime_1.jsx(TimelinePinchZoom_1.TimelinePinchZoom, {}), jsx_runtime_1.jsx(TimelineHeightContainer_1.TimelineHeightContainer, { shown: shown, hasBeenCut: hasBeenCut, children: jsx_runtime_1.jsxs(SplitterContainer_1.SplitterContainer, { orientation: "vertical", defaultFlex: 0.2, id: "names-to-timeline", maxFlex: 0.5, minFlex: 0.15, children: [
|
|
108
|
+
jsx_runtime_1.jsx(SplitterElement_1.SplitterElement, { type: "flexer", sticky: jsx_runtime_1.jsx(TimelineTimeIndicators_1.TimelineTimePlaceholders, {}), children: jsx_runtime_1.jsx(TimelineList_1.TimelineList, { timeline: shown }) }), jsx_runtime_1.jsx(SplitterHandle_1.SplitterHandle, { onCollapse: noop, allowToCollapse: "none" }), jsx_runtime_1.jsx(SplitterElement_1.SplitterElement, { type: "anti-flexer", sticky: null, children: jsx_runtime_1.jsxs(TimelineScrollable_1.TimelineScrollable, { children: [
|
|
109
|
+
jsx_runtime_1.jsx(TimelineTracks_1.TimelineTracks, { timeline: shown, hasBeenCut: hasBeenCut }), jsx_runtime_1.jsx(TimelineInOutPointer_1.TimelineInOutPointer, {}), jsx_runtime_1.jsx(TimelinePlayCursorSyncer_1.TimelinePlayCursorSyncer, {}), jsx_runtime_1.jsx(TimelineDragHandler_1.TimelineDragHandler, {}), jsx_runtime_1.jsx(TimelineTimeIndicators_1.TimelineTimeIndicators, {}), jsx_runtime_1.jsx(TimelineSlider_1.TimelineSlider, {})
|
|
110
|
+
] }) })
|
|
111
|
+
] }) })
|
|
112
|
+
] })
|
|
113
|
+
] }));
|
|
134
114
|
};
|
|
135
115
|
exports.Timeline = react_1.default.memo(TimelineInner);
|
|
@@ -15,6 +15,6 @@ const TimelineBooleanField = ({ field, codeValue, effectiveValue, canUpdate, onS
|
|
|
15
15
|
onSave(field.key, newValue);
|
|
16
16
|
}
|
|
17
17
|
}, [canUpdate, onSave, field.key, checked, codeValue]);
|
|
18
|
-
return (jsx_runtime_1.jsx("div", { style: checkboxContainer, children: jsx_runtime_1.jsx(Checkbox_1.Checkbox, { checked: checked, onChange: onChange, name: field.key, disabled: !canUpdate }) }));
|
|
18
|
+
return (jsx_runtime_1.jsx("div", { style: checkboxContainer, children: jsx_runtime_1.jsx(Checkbox_1.Checkbox, { checked: checked, onChange: onChange, name: field.key, disabled: !canUpdate, variant: "small" }) }));
|
|
19
19
|
};
|
|
20
20
|
exports.TimelineBooleanField = TimelineBooleanField;
|
|
@@ -3,14 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.TimelineEnumField = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
|
-
const
|
|
6
|
+
const ComboBox_1 = require("../NewComposition/ComboBox");
|
|
7
|
+
const comboboxStyle = {
|
|
7
8
|
marginLeft: 8,
|
|
8
|
-
background: 'transparent',
|
|
9
|
-
color: 'white',
|
|
10
|
-
border: '1px solid rgba(255, 255, 255, 0.2)',
|
|
11
|
-
borderRadius: 3,
|
|
12
|
-
fontSize: 12,
|
|
13
|
-
padding: '1px 4px',
|
|
14
9
|
};
|
|
15
10
|
const TimelineEnumField = ({ field, codeValue, effectiveValue, canUpdate, onSave, onDragValueChange, onDragEnd, }) => {
|
|
16
11
|
const { fieldSchema } = field;
|
|
@@ -19,8 +14,7 @@ const TimelineEnumField = ({ field, codeValue, effectiveValue, canUpdate, onSave
|
|
|
19
14
|
}
|
|
20
15
|
const variantKeys = Object.keys(fieldSchema.variants);
|
|
21
16
|
const current = String(effectiveValue !== null && effectiveValue !== void 0 ? effectiveValue : fieldSchema.default);
|
|
22
|
-
const
|
|
23
|
-
const newValue = e.target.value;
|
|
17
|
+
const onSelect = (0, react_1.useCallback)((newValue) => {
|
|
24
18
|
if (!canUpdate || newValue === codeValue) {
|
|
25
19
|
return;
|
|
26
20
|
}
|
|
@@ -29,6 +23,20 @@ const TimelineEnumField = ({ field, codeValue, effectiveValue, canUpdate, onSave
|
|
|
29
23
|
onDragEnd();
|
|
30
24
|
});
|
|
31
25
|
}, [canUpdate, codeValue, field.key, onSave, onDragValueChange, onDragEnd]);
|
|
32
|
-
|
|
26
|
+
const items = (0, react_1.useMemo)(() => {
|
|
27
|
+
return variantKeys.map((key) => ({
|
|
28
|
+
type: 'item',
|
|
29
|
+
id: key,
|
|
30
|
+
value: key,
|
|
31
|
+
label: key,
|
|
32
|
+
onClick: () => onSelect(key),
|
|
33
|
+
keyHint: null,
|
|
34
|
+
leftItem: null,
|
|
35
|
+
subMenu: null,
|
|
36
|
+
quickSwitcherLabel: null,
|
|
37
|
+
disabled: !canUpdate,
|
|
38
|
+
}));
|
|
39
|
+
}, [variantKeys, onSelect, canUpdate]);
|
|
40
|
+
return (jsx_runtime_1.jsx(ComboBox_1.Combobox, { small: true, title: field.key, selectedId: current, values: items, style: comboboxStyle }));
|
|
33
41
|
};
|
|
34
42
|
exports.TimelineEnumField = TimelineEnumField;
|