@remotion/studio 4.0.503 → 4.0.505
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/api/install-package.d.ts +2 -1
- package/dist/api/install-package.js +6 -2
- package/dist/components/AssetSelectorItem.js +4 -16
- package/dist/components/AudioWaveform.d.ts +1 -1
- package/dist/components/AudioWaveform.js +36 -3
- package/dist/components/Canvas.js +12 -5
- package/dist/components/CheckboardToggle.js +3 -1
- package/dist/components/CompositionContextButton.d.ts +1 -1
- package/dist/components/CompositionContextButton.js +2 -2
- package/dist/components/CompositionSelector.js +2 -2
- package/dist/components/CompositionSelectorItem.js +6 -7
- package/dist/components/ContextMenu.d.ts +5 -7
- package/dist/components/ContextMenu.js +54 -21
- package/dist/components/ControlButton.d.ts +4 -2
- package/dist/components/ControlButton.js +6 -20
- package/dist/components/EditorContent.js +1 -1
- package/dist/components/EditorGuides/Guide.js +2 -2
- package/dist/components/EffectPickerModal.js +70 -9
- package/dist/components/FullscreenToggle.js +1 -2
- package/dist/components/InitialCompositionLoader.js +1 -14
- package/dist/components/InlineAction.d.ts +3 -4
- package/dist/components/InlineAction.js +16 -13
- package/dist/components/InlineDropdown.d.ts +3 -2
- package/dist/components/InlineDropdown.js +16 -5
- package/dist/components/InspectorPanel/CompositionMetadata.js +7 -6
- package/dist/components/InspectorPanel/ConnectedCompositionsSection.js +2 -2
- package/dist/components/InspectorPanel/KeyframeInspector.js +2 -3
- package/dist/components/InspectorPanel/SequenceSelectionInspector.js +1 -1
- package/dist/components/InspectorPanel/common.js +24 -34
- package/dist/components/InspectorPanel/styles.js +4 -0
- package/dist/components/InspectorSequenceSection.js +1 -1
- package/dist/components/LoopToggle.js +1 -1
- package/dist/components/Menu/MenuItem.js +16 -12
- package/dist/components/MenuBuildIndicator.d.ts +3 -1
- package/dist/components/MenuBuildIndicator.js +14 -59
- package/dist/components/MenuCompositionName.js +3 -63
- package/dist/components/MenuToolbar.js +23 -3
- package/dist/components/MobilePanel.d.ts +1 -2
- package/dist/components/MobilePanel.js +6 -10
- package/dist/components/MuteToggle.js +2 -1
- package/dist/components/NewComposition/ComboBox.d.ts +1 -0
- package/dist/components/NewComposition/ComboBox.js +2 -2
- package/dist/components/NewComposition/InputDragger.d.ts +5 -0
- package/dist/components/NewComposition/InputDragger.js +11 -6
- package/dist/components/NewComposition/MenuContent.d.ts +1 -1
- package/dist/components/NewComposition/menu-typeahead.d.ts +1 -1
- package/dist/components/Notifications/NotificationCenter.js +12 -2
- package/dist/components/OutlineToggle.js +10 -2
- package/dist/components/PlayPause.js +2 -6
- package/dist/components/PlaybackRateSelector.js +4 -9
- package/dist/components/PreviewToolbar.js +12 -8
- package/dist/components/PreviewToolbarOverflowButton.d.ts +0 -1
- package/dist/components/PreviewToolbarOverflowButton.js +2 -75
- package/dist/components/QuickSwitcher/QuickSwitcherContent.js +1 -2
- package/dist/components/RenderButton.d.ts +1 -1
- package/dist/components/RenderButton.js +55 -37
- package/dist/components/RenderModal/FrameRangeSetting.js +6 -1
- package/dist/components/RenderModal/MultiRangeSlider.js +8 -8
- package/dist/components/RenderModal/RenderModalEnvironmentVariables.js +1 -9
- package/dist/components/RenderModal/RenderModalOutputName.js +11 -2
- package/dist/components/RenderModal/ServerRenderModal.js +2 -17
- package/dist/components/RenderModal/WebRenderModal.js +3 -17
- package/dist/components/RenderModal/layout.js +7 -5
- package/dist/components/RenderModal/render-modals.js +18 -15
- package/dist/components/RenderQueue/RenderQueueRepeat.js +1 -14
- package/dist/components/SelectedOutlineElement.js +13 -22
- package/dist/components/SelectedOutlineOverlay.js +5 -1
- package/dist/components/SidebarRenderButton.js +1 -15
- package/dist/components/SizeSelector.js +4 -9
- package/dist/components/SnappingToggle.js +1 -2
- package/dist/components/Spinner.d.ts +1 -0
- package/dist/components/Spinner.js +2 -2
- package/dist/components/Splitter/SplitterContainer.d.ts +1 -0
- package/dist/components/Splitter/SplitterContainer.js +4 -1
- package/dist/components/Splitter/SplitterContext.d.ts +4 -3
- package/dist/components/Splitter/SplitterContext.js +3 -2
- package/dist/components/Splitter/SplitterElement.js +6 -1
- package/dist/components/Splitter/SplitterHandle.js +1 -0
- package/dist/components/Tabs/vertical.d.ts +1 -0
- package/dist/components/Tabs/vertical.js +8 -10
- package/dist/components/TimeValue.js +26 -8
- package/dist/components/Timeline/Timeline.js +5 -5
- package/dist/components/Timeline/TimelineClipboardKeybindings.js +3 -6
- package/dist/components/Timeline/TimelineDeleteKeybindings.js +5 -7
- package/dist/components/Timeline/TimelineDragHandler.js +3 -0
- package/dist/components/Timeline/TimelineEffectItem.js +6 -2
- package/dist/components/Timeline/TimelineEffectPropItem.js +6 -3
- package/dist/components/Timeline/TimelineExpandedKeyframeRow.d.ts +6 -6
- package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +34 -2
- package/dist/components/Timeline/TimelineHeightContainer.d.ts +1 -0
- package/dist/components/Timeline/TimelineHeightContainer.js +2 -2
- package/dist/components/Timeline/TimelineInOutDragHandler.js +3 -3
- package/dist/components/Timeline/TimelineKeyframeEasingLine.d.ts +5 -3
- package/dist/components/Timeline/TimelineKeyframeEasingLine.js +32 -30
- package/dist/components/Timeline/TimelineList.d.ts +1 -0
- package/dist/components/Timeline/TimelineList.js +2 -3
- package/dist/components/Timeline/TimelineScaleField.js +1 -1
- package/dist/components/Timeline/TimelineSelection.js +2 -3
- package/dist/components/Timeline/TimelineSequence.js +34 -28
- package/dist/components/Timeline/TimelineSequenceItem.d.ts +3 -3
- package/dist/components/Timeline/TimelineSequenceItem.js +34 -23
- package/dist/components/Timeline/TimelineSequencePropItem.d.ts +10 -2
- package/dist/components/Timeline/TimelineSequencePropItem.js +64 -12
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +2 -2
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +38 -5
- package/dist/components/Timeline/TimelineTimeIndicators.js +36 -3
- package/dist/components/Timeline/TimelineVideoInfo.d.ts +1 -1
- package/dist/components/Timeline/TimelineVideoInfo.js +36 -3
- package/dist/components/Timeline/TimelineZoomControls.d.ts +3 -1
- package/dist/components/Timeline/TimelineZoomControls.js +59 -20
- package/dist/components/Timeline/use-expanded-track-keyframe-rows.js +2 -3
- package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.d.ts +1 -1
- package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.js +7 -18
- package/dist/components/Timeline/use-timeline-asset-drop.js +3 -3
- package/dist/components/Timeline/use-timeline-height.d.ts +2 -1
- package/dist/components/Timeline/use-timeline-height.js +3 -2
- package/dist/components/TimelineCombobox.d.ts +11 -0
- package/dist/components/TimelineCombobox.js +181 -0
- package/dist/components/TimelineInOutToggle.js +3 -3
- package/dist/components/TopPanel.js +8 -8
- package/dist/components/UndoRedoButtons.js +6 -5
- package/dist/components/UpdateCheck.js +18 -5
- package/dist/components/UpdateModal/UpdateModal.js +35 -12
- package/dist/components/composition-menu-items.d.ts +2 -4
- package/dist/components/composition-menu-items.js +31 -54
- package/dist/components/import-assets.d.ts +2 -1
- package/dist/components/import-assets.js +1 -1
- package/dist/components/selected-outline-types.d.ts +1 -1
- package/dist/esm/{chunk-bj1r1hh5.js → chunk-7pgk8h5m.js} +9174 -8486
- package/dist/esm/internals.mjs +9174 -8486
- package/dist/esm/previewEntry.mjs +8991 -8303
- package/dist/esm/renderEntry.mjs +1 -1
- package/dist/helpers/hoverable.d.ts +11 -0
- package/dist/helpers/hoverable.js +70 -0
- package/dist/helpers/inject-css.js +43 -23
- package/dist/helpers/install-required-package.d.ts +3 -2
- package/dist/helpers/install-required-package.js +20 -15
- package/dist/helpers/use-is-fullscreen.d.ts +1 -0
- package/dist/helpers/use-is-fullscreen.js +25 -0
- package/dist/helpers/use-menu-structure.js +88 -59
- package/dist/icons/audio.d.ts +1 -1
- package/dist/icons/audio.js +1 -1
- package/dist/icons/canvas-zoom.d.ts +10 -0
- package/dist/icons/canvas-zoom.js +21 -0
- package/dist/icons/caret.js +1 -1
- package/dist/icons/certificate.d.ts +1 -1
- package/dist/icons/certificate.js +1 -1
- package/dist/icons/data.d.ts +1 -1
- package/dist/icons/data.js +2 -2
- package/dist/icons/effects.d.ts +5 -0
- package/dist/icons/effects.js +8 -0
- package/dist/icons/ellipsis.js +1 -1
- package/dist/icons/external-link.d.ts +5 -0
- package/dist/icons/external-link.js +10 -0
- package/dist/icons/fullscreen.js +1 -1
- package/dist/icons/gear.d.ts +1 -1
- package/dist/icons/gear.js +1 -1
- package/dist/icons/gif.d.ts +1 -1
- package/dist/icons/gif.js +1 -1
- package/dist/icons/input-props.d.ts +2 -0
- package/dist/icons/input-props.js +9 -0
- package/dist/icons/jump-to-start.js +2 -2
- package/dist/icons/magnet.d.ts +3 -1
- package/dist/icons/magnet.js +2 -2
- package/dist/icons/media-volume.d.ts +6 -2
- package/dist/icons/media-volume.js +8 -6
- package/dist/icons/minus.d.ts +3 -1
- package/dist/icons/minus.js +2 -2
- package/dist/icons/pause.js +1 -1
- package/dist/icons/play.js +1 -1
- package/dist/icons/playback-rate.d.ts +5 -0
- package/dist/icons/playback-rate.js +31 -0
- package/dist/icons/plus.js +1 -1
- package/dist/icons/redo.js +2 -2
- package/dist/icons/search.d.ts +5 -0
- package/dist/icons/search.js +10 -0
- package/dist/icons/step-back.js +2 -2
- package/dist/icons/step-forward.js +2 -2
- package/dist/icons/timelineInOutPointer.js +2 -2
- package/dist/icons/undo.js +2 -2
- package/package.json +12 -12
|
@@ -6,6 +6,8 @@ const studio_shared_1 = require("@remotion/studio-shared");
|
|
|
6
6
|
const react_1 = require("react");
|
|
7
7
|
const colors_1 = require("../helpers/colors");
|
|
8
8
|
const use_keybinding_1 = require("../helpers/use-keybinding");
|
|
9
|
+
const effects_1 = require("../icons/effects");
|
|
10
|
+
const external_link_1 = require("../icons/external-link");
|
|
9
11
|
const modals_1 = require("../state/modals");
|
|
10
12
|
const ContextMenu_1 = require("./ContextMenu");
|
|
11
13
|
const effect_drag_and_drop_1 = require("./effect-drag-and-drop");
|
|
@@ -16,13 +18,54 @@ const DismissableModal_1 = require("./NewComposition/DismissableModal");
|
|
|
16
18
|
const RemInput_1 = require("./NewComposition/RemInput");
|
|
17
19
|
const shared_1 = require("./QuickSwitcher/shared");
|
|
18
20
|
const container = {
|
|
19
|
-
width:
|
|
21
|
+
width: 400,
|
|
22
|
+
};
|
|
23
|
+
const panelStyle = {
|
|
24
|
+
borderRadius: 6,
|
|
25
|
+
overflow: 'hidden',
|
|
20
26
|
};
|
|
21
27
|
const content = {
|
|
22
28
|
padding: '12px 16px 10px',
|
|
23
29
|
};
|
|
24
30
|
const inputStyle = {
|
|
25
31
|
width: '100%',
|
|
32
|
+
borderRadius: 4,
|
|
33
|
+
};
|
|
34
|
+
const aboutEffectsRow = {
|
|
35
|
+
display: 'flex',
|
|
36
|
+
justifyContent: 'flex-end',
|
|
37
|
+
marginBottom: 8,
|
|
38
|
+
};
|
|
39
|
+
const aboutEffectsLink = {
|
|
40
|
+
alignItems: 'center',
|
|
41
|
+
color: colors_1.LIGHT_TEXT,
|
|
42
|
+
cursor: 'default',
|
|
43
|
+
display: 'inline-flex',
|
|
44
|
+
fontFamily: 'sans-serif',
|
|
45
|
+
fontSize: 12,
|
|
46
|
+
gap: 4,
|
|
47
|
+
lineHeight: '14px',
|
|
48
|
+
minWidth: 0,
|
|
49
|
+
textDecoration: 'none',
|
|
50
|
+
};
|
|
51
|
+
const aboutEffectsLinkHovered = {
|
|
52
|
+
...aboutEffectsLink,
|
|
53
|
+
color: colors_1.WHITE,
|
|
54
|
+
};
|
|
55
|
+
const aboutEffectsLabel = {
|
|
56
|
+
color: 'inherit',
|
|
57
|
+
fontFamily: 'sans-serif',
|
|
58
|
+
fontSize: 12,
|
|
59
|
+
lineHeight: '14px',
|
|
60
|
+
minWidth: 0,
|
|
61
|
+
overflow: 'hidden',
|
|
62
|
+
textOverflow: 'ellipsis',
|
|
63
|
+
whiteSpace: 'nowrap',
|
|
64
|
+
};
|
|
65
|
+
const aboutEffectsIcon = {
|
|
66
|
+
flexShrink: 0,
|
|
67
|
+
height: 12,
|
|
68
|
+
width: 12,
|
|
26
69
|
};
|
|
27
70
|
const resultList = {
|
|
28
71
|
height: 320,
|
|
@@ -35,15 +78,28 @@ const noResults = {
|
|
|
35
78
|
padding: '12px 16px',
|
|
36
79
|
};
|
|
37
80
|
const resultContainer = {
|
|
38
|
-
cursor: '
|
|
81
|
+
cursor: 'default',
|
|
39
82
|
display: 'flex',
|
|
40
83
|
flexDirection: 'row',
|
|
41
84
|
alignItems: 'center',
|
|
42
|
-
|
|
85
|
+
paddingLeft: 16,
|
|
86
|
+
paddingRight: 16,
|
|
87
|
+
marginBottom: 1,
|
|
88
|
+
marginLeft: 4,
|
|
89
|
+
marginRight: 4,
|
|
90
|
+
borderRadius: 4,
|
|
91
|
+
};
|
|
92
|
+
const iconStyle = {
|
|
93
|
+
width: 18,
|
|
94
|
+
height: 18,
|
|
95
|
+
flexShrink: 0,
|
|
43
96
|
};
|
|
44
97
|
const labelContainer = {
|
|
45
98
|
flex: 1,
|
|
46
99
|
minWidth: 0,
|
|
100
|
+
overflow: 'hidden',
|
|
101
|
+
paddingTop: 5,
|
|
102
|
+
paddingBottom: 5,
|
|
47
103
|
};
|
|
48
104
|
const label = {
|
|
49
105
|
fontSize: shared_1.QUICK_SWITCHER_RESULT_LABEL_FONT_SIZE,
|
|
@@ -63,7 +119,7 @@ const EffectPickerResult = ({ item, selected, onSelected }) => {
|
|
|
63
119
|
const style = (0, react_1.useMemo)(() => {
|
|
64
120
|
return {
|
|
65
121
|
...resultContainer,
|
|
66
|
-
backgroundColor:
|
|
122
|
+
backgroundColor: hovered || selected ? colors_1.WHITE_ALPHA_06 : colors_1.TRANSPARENT,
|
|
67
123
|
};
|
|
68
124
|
}, [hovered, selected]);
|
|
69
125
|
const labelStyle = (0, react_1.useMemo)(() => {
|
|
@@ -75,7 +131,7 @@ const EffectPickerResult = ({ item, selected, onSelected }) => {
|
|
|
75
131
|
const onClick = (0, react_1.useCallback)(() => {
|
|
76
132
|
onSelected(item);
|
|
77
133
|
}, [item, onSelected]);
|
|
78
|
-
const
|
|
134
|
+
const getContextMenuItems = (0, react_1.useCallback)(() => {
|
|
79
135
|
const documentationLink = (0, studio_shared_1.getEffectDocumentationLink)(item);
|
|
80
136
|
return [
|
|
81
137
|
{
|
|
@@ -94,12 +150,13 @@ const EffectPickerResult = ({ item, selected, onSelected }) => {
|
|
|
94
150
|
},
|
|
95
151
|
];
|
|
96
152
|
}, [item]);
|
|
97
|
-
return (jsx_runtime_1.jsx(ContextMenu_1.ContextMenu, {
|
|
98
|
-
jsx_runtime_1.jsx("div", { style: labelContainer, children: jsx_runtime_1.jsx("div", { style: labelStyle, children: item.label }) }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 1 }), jsx_runtime_1.jsx("div", { style: category, children: item.category })
|
|
153
|
+
return (jsx_runtime_1.jsx(ContextMenu_1.ContextMenu, { getItems: getContextMenuItems, children: jsx_runtime_1.jsxs("div", { ref: ref, style: style, onClick: onClick, onMouseEnter: () => setHovered(true), onMouseLeave: () => setHovered(false), children: [
|
|
154
|
+
jsx_runtime_1.jsx(effects_1.EffectsIcon, { color: selected || hovered ? colors_1.WHITE : colors_1.LIGHT_TEXT, style: iconStyle }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 1 }), jsx_runtime_1.jsx("div", { style: labelContainer, children: jsx_runtime_1.jsx("div", { style: labelStyle, children: item.label }) }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 1 }), jsx_runtime_1.jsx("div", { style: category, children: item.category })
|
|
99
155
|
] }) }));
|
|
100
156
|
};
|
|
101
157
|
const EffectPickerContent = ({ state }) => {
|
|
102
158
|
const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
|
|
159
|
+
const [aboutEffectsHovered, setAboutEffectsHovered] = (0, react_1.useState)(false);
|
|
103
160
|
const [query, setQuery] = (0, react_1.useState)('');
|
|
104
161
|
const [selectedIndex, setSelectedIndex] = (0, react_1.useState)(0);
|
|
105
162
|
const inputRef = (0, react_1.useRef)(null);
|
|
@@ -168,12 +225,16 @@ const EffectPickerContent = ({ state }) => {
|
|
|
168
225
|
setSelectedIndex(0);
|
|
169
226
|
}, []);
|
|
170
227
|
return (jsx_runtime_1.jsxs("div", { style: container, children: [
|
|
171
|
-
jsx_runtime_1.
|
|
228
|
+
jsx_runtime_1.jsxs("div", { style: content, children: [
|
|
229
|
+
jsx_runtime_1.jsx("div", { style: aboutEffectsRow, children: jsx_runtime_1.jsxs("a", { href: "https://remotion.dev/effects", target: "_blank", rel: "noopener noreferrer", style: aboutEffectsHovered ? aboutEffectsLinkHovered : aboutEffectsLink, onMouseEnter: () => setAboutEffectsHovered(true), onMouseLeave: () => setAboutEffectsHovered(false), children: [
|
|
230
|
+
jsx_runtime_1.jsx("span", { style: aboutEffectsLabel, children: "About effects" }), jsx_runtime_1.jsx(external_link_1.ExternalLinkIcon, { "aria-hidden": "true", color: aboutEffectsHovered ? colors_1.WHITE : colors_1.LIGHT_TEXT, style: aboutEffectsIcon })
|
|
231
|
+
] }) }), jsx_runtime_1.jsx(RemInput_1.RemotionInput, { ref: inputRef, type: "text", style: inputStyle, autoFocus: true, status: "ok", value: query, onChange: onTextChange, placeholder: "Search effects...", rightAlign: false })
|
|
232
|
+
] }), jsx_runtime_1.jsx("div", { style: resultList, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: results.length === 0 ? (jsx_runtime_1.jsx("div", { style: noResults, children: "No effects found" })) : (results.map((item, i) => {
|
|
172
233
|
return (jsx_runtime_1.jsx(EffectPickerResult, { item: item, selected: selectedIndexRounded === i, onSelected: selectItem }, item.id));
|
|
173
234
|
})) })
|
|
174
235
|
] }));
|
|
175
236
|
};
|
|
176
237
|
const EffectPickerModal = ({ state }) => {
|
|
177
|
-
return (jsx_runtime_1.jsx(DismissableModal_1.DismissableModal, { children: jsx_runtime_1.jsx(EffectPickerContent, { state: state }) }));
|
|
238
|
+
return (jsx_runtime_1.jsx(DismissableModal_1.DismissableModal, { panelStyle: panelStyle, children: jsx_runtime_1.jsx(EffectPickerContent, { state: state }) }));
|
|
178
239
|
};
|
|
179
240
|
exports.EffectPickerModal = EffectPickerModal;
|
|
@@ -5,7 +5,6 @@ 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 no_react_1 = require("remotion/no-react");
|
|
8
|
-
const colors_1 = require("../helpers/colors");
|
|
9
8
|
const use_keybinding_1 = require("../helpers/use-keybinding");
|
|
10
9
|
const fullscreen_1 = require("../icons/fullscreen");
|
|
11
10
|
const canvas_ref_1 = require("../state/canvas-ref");
|
|
@@ -45,6 +44,6 @@ const FullScreenToggle = ({ hidden }) => {
|
|
|
45
44
|
f.unregister();
|
|
46
45
|
};
|
|
47
46
|
}, [keybindings, onClick]);
|
|
48
|
-
return hidden ? (jsx_runtime_1.jsx("button", { id: "fullscreen-toggle", type: "button", style: { display: 'none' }, onClick: onClick })) : (jsx_runtime_1.jsx(ControlButton_1.ControlButton, { id: "fullscreen-toggle", title: accessibilityLabel, "aria-label": accessibilityLabel, onClick: onClick, children: jsx_runtime_1.jsx(fullscreen_1.FullscreenIcon, { color:
|
|
47
|
+
return hidden ? (jsx_runtime_1.jsx("button", { id: "fullscreen-toggle", type: "button", style: { display: 'none' }, onClick: onClick })) : (jsx_runtime_1.jsx(ControlButton_1.ControlButton, { id: "fullscreen-toggle", title: accessibilityLabel, "aria-label": accessibilityLabel, onClick: onClick, children: (color) => (jsx_runtime_1.jsx(fullscreen_1.FullscreenIcon, { color: color, style: { width: 18, height: 18 } })) }));
|
|
49
48
|
};
|
|
50
49
|
exports.FullScreenToggle = FullScreenToggle;
|
|
@@ -4,11 +4,9 @@ exports.InitialCompositionLoader = exports.useSelectComposition = void 0;
|
|
|
4
4
|
const react_1 = require("react");
|
|
5
5
|
const remotion_1 = require("remotion");
|
|
6
6
|
const create_folder_tree_1 = require("../helpers/create-folder-tree");
|
|
7
|
-
const mobile_layout_1 = require("../helpers/mobile-layout");
|
|
8
7
|
const persist_open_folders_1 = require("../helpers/persist-open-folders");
|
|
9
8
|
const url_state_1 = require("../helpers/url-state");
|
|
10
9
|
const folders_1 = require("../state/folders");
|
|
11
|
-
const sidebar_1 = require("../state/sidebar");
|
|
12
10
|
const ExplorerPanelRef_1 = require("./ExplorerPanelRef");
|
|
13
11
|
const load_canvas_content_from_url_1 = require("./load-canvas-content-from-url");
|
|
14
12
|
const use_select_asset_1 = require("./use-select-asset");
|
|
@@ -17,8 +15,6 @@ const useSelectComposition = () => {
|
|
|
17
15
|
const { setCompositionFoldersExpanded } = (0, react_1.useContext)(folders_1.FolderContext);
|
|
18
16
|
const { setCanvasContent } = (0, react_1.useContext)(remotion_1.Internals.CompositionSetters);
|
|
19
17
|
const setFrame = remotion_1.Internals.useTimelineSetFrame();
|
|
20
|
-
const isMobileLayout = (0, mobile_layout_1.useMobileLayout)();
|
|
21
|
-
const { setSidebarCollapsedState } = (0, react_1.useContext)(sidebar_1.SidebarContext);
|
|
22
18
|
return (0, react_1.useCallback)((c, push, frame = null) => {
|
|
23
19
|
var _a;
|
|
24
20
|
if (push) {
|
|
@@ -42,17 +38,8 @@ const useSelectComposition = () => {
|
|
|
42
38
|
(0, persist_open_folders_1.persistExpandedFolders)('compositions', newState);
|
|
43
39
|
return newState;
|
|
44
40
|
});
|
|
45
|
-
if (isMobileLayout) {
|
|
46
|
-
setSidebarCollapsedState({ left: 'collapsed', right: 'collapsed' });
|
|
47
|
-
}
|
|
48
41
|
}
|
|
49
|
-
}, [
|
|
50
|
-
isMobileLayout,
|
|
51
|
-
setCanvasContent,
|
|
52
|
-
setCompositionFoldersExpanded,
|
|
53
|
-
setFrame,
|
|
54
|
-
setSidebarCollapsedState,
|
|
55
|
-
]);
|
|
42
|
+
}, [setCanvasContent, setCompositionFoldersExpanded, setFrame]);
|
|
56
43
|
};
|
|
57
44
|
exports.useSelectComposition = useSelectComposition;
|
|
58
45
|
const InitialCompositionLoader = () => {
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
export type RenderInlineAction = (color: string) => React.ReactNode;
|
|
3
|
-
export type InlineActionProps = {
|
|
3
|
+
export type InlineActionProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children' | 'onClick' | 'style'> & {
|
|
4
4
|
readonly onClick: React.MouseEventHandler<HTMLButtonElement>;
|
|
5
|
-
readonly disabled?: boolean;
|
|
6
5
|
readonly renderAction: RenderInlineAction;
|
|
7
|
-
readonly title?: string;
|
|
8
6
|
readonly unhoveredColor?: string;
|
|
9
7
|
readonly variant: 'compact' | null;
|
|
8
|
+
readonly style?: React.CSSProperties;
|
|
10
9
|
};
|
|
11
|
-
export declare const InlineAction: ({ renderAction, onClick, disabled, title, unhoveredColor, variant, }: InlineActionProps) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export declare const InlineAction: ({ renderAction, onClick, disabled, title, unhoveredColor, variant, style: customStyle, className, ...buttonProps }: InlineActionProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -4,22 +4,14 @@ exports.InlineAction = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const colors_1 = require("../helpers/colors");
|
|
7
|
+
const hoverable_1 = require("../helpers/hoverable");
|
|
7
8
|
const z_index_1 = require("../state/z-index");
|
|
8
|
-
const InlineAction = ({ renderAction, onClick, disabled, title, unhoveredColor = colors_1.LIGHT_TEXT, variant, }) => {
|
|
9
|
+
const InlineAction = ({ renderAction, onClick, disabled, title, unhoveredColor = colors_1.LIGHT_TEXT, variant, style: customStyle, className, ...buttonProps }) => {
|
|
10
|
+
var _a;
|
|
9
11
|
const { tabIndex } = (0, z_index_1.useZIndex)();
|
|
10
|
-
const [hovered, setHovered] = (0, react_1.useState)(false);
|
|
11
|
-
const onPointerEnter = (0, react_1.useCallback)(() => {
|
|
12
|
-
setHovered(true);
|
|
13
|
-
}, []);
|
|
14
|
-
const onPointerLeave = (0, react_1.useCallback)(() => {
|
|
15
|
-
setHovered(false);
|
|
16
|
-
}, []);
|
|
17
12
|
const style = (0, react_1.useMemo)(() => {
|
|
18
13
|
return {
|
|
19
14
|
border: 'none',
|
|
20
|
-
background: disabled
|
|
21
|
-
? colors_1.TRANSPARENT
|
|
22
|
-
: (0, colors_1.getBackgroundFromHoverState)({ hovered, selected: false }),
|
|
23
15
|
height: 24,
|
|
24
16
|
width: variant === 'compact' ? 14 : 24,
|
|
25
17
|
padding: 0,
|
|
@@ -29,8 +21,19 @@ const InlineAction = ({ renderAction, onClick, disabled, title, unhoveredColor =
|
|
|
29
21
|
borderRadius: 3,
|
|
30
22
|
opacity: disabled ? 0.5 : 1,
|
|
31
23
|
pointerEvents: disabled ? 'none' : 'auto',
|
|
24
|
+
...(0, hoverable_1.hoverableStyle)({
|
|
25
|
+
idleBackground: colors_1.TRANSPARENT,
|
|
26
|
+
hoverBackground: disabled
|
|
27
|
+
? colors_1.TRANSPARENT
|
|
28
|
+
: (0, colors_1.getBackgroundFromHoverState)({ hovered: true, selected: false }),
|
|
29
|
+
idleColor: unhoveredColor,
|
|
30
|
+
hoverColor: disabled ? unhoveredColor : colors_1.WHITE,
|
|
31
|
+
}),
|
|
32
|
+
...customStyle,
|
|
32
33
|
};
|
|
33
|
-
}, [disabled,
|
|
34
|
-
return (jsx_runtime_1.jsx("button", { type: "button",
|
|
34
|
+
}, [customStyle, disabled, unhoveredColor, variant]);
|
|
35
|
+
return (jsx_runtime_1.jsx("button", { ...buttonProps, type: "button", className: className
|
|
36
|
+
? `${hoverable_1.HOVERABLE_CLASS_NAME} ${className}`
|
|
37
|
+
: hoverable_1.HOVERABLE_CLASS_NAME, disabled: disabled, onClick: onClick, style: style, tabIndex: tabIndex, title: title, "aria-label": (_a = buttonProps['aria-label']) !== null && _a !== void 0 ? _a : title, children: renderAction(colors_1.CURRENT_COLOR) }));
|
|
35
38
|
};
|
|
36
39
|
exports.InlineAction = InlineAction;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type InlineActionProps } from './InlineAction';
|
|
2
2
|
import type { ComboboxValue } from './NewComposition/ComboBox';
|
|
3
|
-
export declare const InlineDropdown: ({ values, unhoveredColor, ...props }: Omit<InlineActionProps, "onClick"> & {
|
|
4
|
-
readonly values
|
|
3
|
+
export declare const InlineDropdown: ({ values, getItems, unhoveredColor, ...props }: Omit<InlineActionProps, "onClick"> & {
|
|
4
|
+
readonly values?: ComboboxValue[] | undefined;
|
|
5
|
+
readonly getItems?: (() => ComboboxValue[]) | undefined;
|
|
5
6
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -16,7 +16,8 @@ const InlineAction_1 = require("./InlineAction");
|
|
|
16
16
|
const portals_1 = require("./Menu/portals");
|
|
17
17
|
const styles_1 = require("./Menu/styles");
|
|
18
18
|
const MenuContent_1 = require("./NewComposition/MenuContent");
|
|
19
|
-
const InlineDropdown = ({ values, unhoveredColor, ...props }) => {
|
|
19
|
+
const InlineDropdown = ({ values, getItems, unhoveredColor, ...props }) => {
|
|
20
|
+
var _a, _b;
|
|
20
21
|
const ref = (0, react_1.useRef)(null);
|
|
21
22
|
const [opened, setOpened] = (0, react_1.useState)({ type: 'not-open' });
|
|
22
23
|
const { currentZIndex } = (0, z_index_1.useZIndex)();
|
|
@@ -26,10 +27,20 @@ const InlineDropdown = ({ values, unhoveredColor, ...props }) => {
|
|
|
26
27
|
});
|
|
27
28
|
const isMobileLayout = (0, mobile_layout_1.useMobileLayout)();
|
|
28
29
|
const onClick = (0, react_1.useCallback)((e) => {
|
|
30
|
+
var _a;
|
|
29
31
|
e.preventDefault();
|
|
30
32
|
e.stopPropagation();
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
const invocationValues = (_a = getItems === null || getItems === void 0 ? void 0 : getItems()) !== null && _a !== void 0 ? _a : null;
|
|
34
|
+
if ((invocationValues === null || invocationValues === void 0 ? void 0 : invocationValues.length) === 0) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
setOpened({
|
|
38
|
+
type: 'open',
|
|
39
|
+
left: e.clientX,
|
|
40
|
+
top: e.clientY,
|
|
41
|
+
values: invocationValues,
|
|
42
|
+
});
|
|
43
|
+
}, [getItems]);
|
|
33
44
|
const spaceToBottom = (0, react_1.useMemo)(() => {
|
|
34
45
|
if (size && opened.type === 'open') {
|
|
35
46
|
return size.windowSize.height - opened.top;
|
|
@@ -80,8 +91,8 @@ const InlineDropdown = ({ values, unhoveredColor, ...props }) => {
|
|
|
80
91
|
setOpened({ type: 'not-open' });
|
|
81
92
|
}, []);
|
|
82
93
|
return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
83
|
-
jsx_runtime_1.jsx("div", { ref: ref, children: jsx_runtime_1.jsx(InlineAction_1.InlineAction, { onClick: onClick, unhoveredColor: opened.type === 'open' ? colors_1.WHITE : unhoveredColor, ...props }) }), portalStyle
|
|
84
|
-
? 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: false, topItemCanBeUnselected: false, fixedHeight: null }) }) }) }) }), (0, portals_1.getPortal)(currentZIndex))
|
|
94
|
+
jsx_runtime_1.jsx("div", { ref: ref, children: jsx_runtime_1.jsx(InlineAction_1.InlineAction, { onClick: onClick, unhoveredColor: opened.type === 'open' ? colors_1.WHITE : unhoveredColor, ...props }) }), portalStyle && opened.type === 'open'
|
|
95
|
+
? 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: (_b = (_a = opened.values) !== null && _a !== void 0 ? _a : values) !== null && _b !== void 0 ? _b : [], onHide: onHide, leaveLeftSpace: true, preselectIndex: false, topItemCanBeUnselected: false, fixedHeight: null }) }) }) }) }), (0, portals_1.getPortal)(currentZIndex))
|
|
85
96
|
: null] }));
|
|
86
97
|
};
|
|
87
98
|
exports.InlineDropdown = InlineDropdown;
|
|
@@ -37,16 +37,17 @@ const computedValueStyle = {
|
|
|
37
37
|
fontFamily: 'sans-serif',
|
|
38
38
|
fontSize: 12,
|
|
39
39
|
fontStyle: 'italic',
|
|
40
|
-
lineHeight:
|
|
40
|
+
lineHeight: '20px',
|
|
41
41
|
};
|
|
42
42
|
const dimensionsControls = {
|
|
43
43
|
alignItems: 'center',
|
|
44
|
+
color: 'inherit',
|
|
44
45
|
display: 'flex',
|
|
45
46
|
fontFamily: 'sans-serif',
|
|
46
|
-
fontSize:
|
|
47
|
+
fontSize: 13,
|
|
47
48
|
gap: 4,
|
|
48
49
|
justifyContent: 'flex-end',
|
|
49
|
-
lineHeight: '
|
|
50
|
+
lineHeight: '20px',
|
|
50
51
|
minWidth: 0,
|
|
51
52
|
};
|
|
52
53
|
const presetButtonIcon = {
|
|
@@ -69,14 +70,14 @@ const metadataLabelControls = {
|
|
|
69
70
|
fontFamily: 'sans-serif',
|
|
70
71
|
fontSize: 13,
|
|
71
72
|
gap: 2,
|
|
72
|
-
lineHeight: '
|
|
73
|
+
lineHeight: '20px',
|
|
73
74
|
minWidth: 0,
|
|
74
75
|
};
|
|
75
76
|
const metadataLabelText = {
|
|
76
77
|
color: 'inherit',
|
|
77
78
|
fontFamily: 'sans-serif',
|
|
78
79
|
fontSize: 13,
|
|
79
|
-
lineHeight: '
|
|
80
|
+
lineHeight: '20px',
|
|
80
81
|
minWidth: 0,
|
|
81
82
|
overflow: 'hidden',
|
|
82
83
|
textOverflow: 'ellipsis',
|
|
@@ -287,7 +288,7 @@ const CompositionMetadata = ({ compositionId, disabled, stack }) => {
|
|
|
287
288
|
return (jsx_runtime_1.jsxs("div", { style: compositionMetadataContainer, children: [jsx_runtime_1.jsx(common_1.InspectorDetailRow, { label: (hovered) => (jsx_runtime_1.jsxs("div", { style: metadataLabelControls, children: [
|
|
288
289
|
jsx_runtime_1.jsx("span", { style: metadataLabelText, children: "Dimensions" }), disabled || widthIsComputed || heightIsComputed ? null : (jsx_runtime_1.jsx(PresetDropdown, { disabled: pendingValues.width !== undefined ||
|
|
289
290
|
pendingValues.height !== undefined, title: "Choose dimension preset", values: dimensionPresetValues, visible: hovered }))] })), children: jsx_runtime_1.jsxs("div", { style: dimensionsControls, children: [
|
|
290
|
-
jsx_runtime_1.jsx(CompositionMetadataValue, { computed: widthIsComputed, disabled: disabled, field: "width", onSave: saveMetadata, pendingValue: (_a = pendingValues.width) !== null && _a !== void 0 ? _a : null, value: video.width }), jsx_runtime_1.jsx(CompositionMetadataValue, { computed: heightIsComputed, disabled: disabled, field: "height", onSave: saveMetadata, pendingValue: (_b = pendingValues.height) !== null && _b !== void 0 ? _b : null, value: video.height })
|
|
291
|
+
jsx_runtime_1.jsx(CompositionMetadataValue, { computed: widthIsComputed, disabled: disabled, field: "width", onSave: saveMetadata, pendingValue: (_a = pendingValues.width) !== null && _a !== void 0 ? _a : null, value: video.width }), disabled ? '\u00A0' : null, jsx_runtime_1.jsx(CompositionMetadataValue, { computed: heightIsComputed, disabled: disabled, field: "height", onSave: saveMetadata, pendingValue: (_b = pendingValues.height) !== null && _b !== void 0 ? _b : null, value: video.height })
|
|
291
292
|
] }) }), isStill ? null : (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [jsx_runtime_1.jsx(common_1.InspectorDetailRow, { label: (hovered) => (jsx_runtime_1.jsxs("div", { style: metadataLabelControls, children: [
|
|
292
293
|
jsx_runtime_1.jsx("span", { style: metadataLabelText, children: "Frame rate" }), disabled || fpsIsComputed ? null : (jsx_runtime_1.jsx(PresetDropdown, { disabled: pendingValues.fps !== undefined, title: "Choose frame rate preset", values: frameRatePresetValues, visible: hovered }))] })), children: jsx_runtime_1.jsx("div", { style: dimensionsControls, children: jsx_runtime_1.jsx(CompositionMetadataValue, { computed: fpsIsComputed, disabled: disabled, field: "fps", onSave: saveMetadata, pendingValue: (_c = pendingValues.fps) !== null && _c !== void 0 ? _c : null, value: video.fps }) }) }), jsx_runtime_1.jsx(common_1.InspectorDetailRow, { label: "Duration", children: jsx_runtime_1.jsx(CompositionMetadataValue, { computed: durationIsComputed, disabled: disabled, field: "durationInFrames", onSave: saveMetadata, pendingValue: (_d = pendingValues.durationInFrames) !== null && _d !== void 0 ? _d : null, value: video.durationInFrames }) })
|
|
293
294
|
] }))] }));
|
|
@@ -44,7 +44,7 @@ const ConnectedCompositionRow = ({ composition }) => {
|
|
|
44
44
|
const connectionStatus = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx)
|
|
45
45
|
.previewServerState.type;
|
|
46
46
|
const resolvedLocation = (0, use_resolved_stack_1.useResolvedStack)(composition.stack);
|
|
47
|
-
const
|
|
47
|
+
const getContextMenuItems = (0, react_1.useCallback)(() => (0, composition_menu_items_1.getCompositionContextMenuItems)({
|
|
48
48
|
closeMenu: noop_1.noop,
|
|
49
49
|
composition,
|
|
50
50
|
connectionStatus,
|
|
@@ -53,5 +53,5 @@ const ConnectedCompositionRow = ({ composition }) => {
|
|
|
53
53
|
resolvedLocation,
|
|
54
54
|
setSelectedModal,
|
|
55
55
|
}), [composition, connectionStatus, resolvedLocation, setSelectedModal]);
|
|
56
|
-
return (jsx_runtime_1.jsx(ContextMenu_1.ContextMenu, {
|
|
56
|
+
return (jsx_runtime_1.jsx(ContextMenu_1.ContextMenu, { getItems: getContextMenuItems, style: compositionContextMenuStyle, children: jsx_runtime_1.jsx(common_1.InspectorInlineAction, { disabled: false, onClick: () => selectComposition(composition, true), renderIcon: (color) => (jsx_runtime_1.jsx(CompositionOrStillIcon_1.CompositionOrStillIcon, { color: color, composition: composition, style: compositionIconStyle })), children: composition.id }) }));
|
|
57
57
|
};
|
|
@@ -12,6 +12,7 @@ const InputDragger_1 = require("../NewComposition/InputDragger");
|
|
|
12
12
|
const call_delete_keyframe_1 = require("../Timeline/call-delete-keyframe");
|
|
13
13
|
const call_move_keyframe_1 = require("../Timeline/call-move-keyframe");
|
|
14
14
|
const get_easing_selection_after_keyframe_delete_1 = require("../Timeline/get-easing-selection-after-keyframe-delete");
|
|
15
|
+
const imperative_state_1 = require("../Timeline/imperative-state");
|
|
15
16
|
const parse_keyframe_field_from_node_path_1 = require("../Timeline/parse-keyframe-field-from-node-path");
|
|
16
17
|
const TimelineEffectPropItem_1 = require("../Timeline/TimelineEffectPropItem");
|
|
17
18
|
const TimelineSelection_1 = require("../Timeline/TimelineSelection");
|
|
@@ -54,7 +55,6 @@ const TrashIcon = ({ color }) => {
|
|
|
54
55
|
const KeyframeInspector = ({ selection }) => {
|
|
55
56
|
const track = (0, use_track_for_selection_1.useTrackForSelection)(selection);
|
|
56
57
|
const videoConfig = (0, remotion_1.useVideoConfig)();
|
|
57
|
-
const timelinePosition = remotion_1.Internals.Timeline.useTimelinePosition();
|
|
58
58
|
const { propStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
|
|
59
59
|
const { clearDragOverrides, clearEffectDragOverrides, setDragOverrides, setEffectDragOverrides, setPropStatuses, } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
60
60
|
const { getDragOverrides, getEffectDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
|
|
@@ -277,7 +277,7 @@ const KeyframeInspector = ({ selection }) => {
|
|
|
277
277
|
keyframeDisplayOffset: details.keyframeDisplayOffset,
|
|
278
278
|
nodePathInfo: selection.nodePathInfo,
|
|
279
279
|
propStatus: details.propStatus,
|
|
280
|
-
timelinePosition,
|
|
280
|
+
timelinePosition: (0, imperative_state_1.getCurrentFrame)(),
|
|
281
281
|
})
|
|
282
282
|
: null;
|
|
283
283
|
if (easingSelection !== null) {
|
|
@@ -315,7 +315,6 @@ const KeyframeInspector = ({ selection }) => {
|
|
|
315
315
|
selectItems,
|
|
316
316
|
selection.nodePathInfo,
|
|
317
317
|
setPropStatuses,
|
|
318
|
-
timelinePosition,
|
|
319
318
|
]);
|
|
320
319
|
if (details === null || track === null) {
|
|
321
320
|
return jsx_runtime_1.jsx(common_1.InspectorMessage, { children: "Keyframe unavailable" });
|
|
@@ -72,7 +72,7 @@ const SequenceSourceActions = ({ selection, track, validatedSource }) => {
|
|
|
72
72
|
const { setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
73
73
|
const confirm = (0, ConfirmationDialog_1.useConfirmationDialog)();
|
|
74
74
|
const propStatusesForOverride = (0, react_1.useMemo)(() => remotion_1.Internals.getPropStatusesCtx(propStatuses, selection.nodePathInfo.sequenceSubscriptionKey), [propStatuses, selection.nodePathInfo.sequenceSubscriptionKey]);
|
|
75
|
-
const freezeFrameMenuItem = (0, use_sequence_freeze_frame_menu_item_1.
|
|
75
|
+
const freezeFrameMenuItem = (0, use_sequence_freeze_frame_menu_item_1.getSequenceFreezeFrameMenuItem)({
|
|
76
76
|
clientId: previewServerState.type === 'connected' && (0, interactivity_enabled_1.isStudioInteractivityEnabled)()
|
|
77
77
|
? previewServerState.clientId
|
|
78
78
|
: null,
|
|
@@ -7,6 +7,7 @@ exports.InspectorDefaultPropsWarnings = exports.InspectorInlineAction = exports.
|
|
|
7
7
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
8
|
const react_1 = __importDefault(require("react"));
|
|
9
9
|
const colors_1 = require("../../helpers/colors");
|
|
10
|
+
const hoverable_1 = require("../../helpers/hoverable");
|
|
10
11
|
const InspectorPanelLayout_1 = require("../InspectorPanelLayout");
|
|
11
12
|
const layout_1 = require("../layout");
|
|
12
13
|
const ValidationMessage_1 = require("../NewComposition/ValidationMessage");
|
|
@@ -49,11 +50,9 @@ const INLINE_LABEL_BUTTON_MARGIN = 4;
|
|
|
49
50
|
const inlineLabelButton = {
|
|
50
51
|
alignItems: 'center',
|
|
51
52
|
appearance: 'none',
|
|
52
|
-
backgroundColor: colors_1.TRANSPARENT,
|
|
53
53
|
border: 'none',
|
|
54
54
|
borderRadius: 4,
|
|
55
55
|
boxSizing: 'border-box',
|
|
56
|
-
color: colors_1.LIGHT_TEXT,
|
|
57
56
|
cursor: 'default',
|
|
58
57
|
display: 'flex',
|
|
59
58
|
fontFamily: 'sans-serif',
|
|
@@ -74,7 +73,6 @@ const compactInlineLabelButton = {
|
|
|
74
73
|
height: layout_1.COMPACT_INLINE_ROW_HEIGHT,
|
|
75
74
|
};
|
|
76
75
|
const inlineLabelText = {
|
|
77
|
-
color: colors_1.LIGHT_TEXT,
|
|
78
76
|
flex: 1,
|
|
79
77
|
fontFamily: 'sans-serif',
|
|
80
78
|
fontSize: 13,
|
|
@@ -117,54 +115,46 @@ const segmentedTrailingAction = {
|
|
|
117
115
|
padding: 0,
|
|
118
116
|
width: 28,
|
|
119
117
|
};
|
|
120
|
-
const hiddenSegmentedTrailingIcon = {
|
|
121
|
-
...inlineLabelIcon,
|
|
122
|
-
opacity: 0,
|
|
123
|
-
};
|
|
124
118
|
const InspectorInlineAction = ({ children, disabled, onClick, renderIcon, size = 'default', style, title, variant = { type: 'single' }, }) => {
|
|
125
|
-
const [hovered, setHovered] = react_1.default.useState(false);
|
|
126
|
-
const color = hovered && !disabled ? colors_1.WHITE : colors_1.LIGHT_TEXT;
|
|
127
119
|
const isSegmented = variant.type === 'segmented';
|
|
120
|
+
// A non-clickable single action (onClick === null) never shows a hover
|
|
121
|
+
// effect. In the segmented variant, the main segment highlights whenever
|
|
122
|
+
// the group is hovered, even if it is not clickable itself.
|
|
123
|
+
const showsHover = !disabled && (onClick !== null || isSegmented);
|
|
128
124
|
const buttonStyle = react_1.default.useMemo(() => ({
|
|
129
125
|
...(disabled ? inlineLabelButtonDisabled : inlineLabelButton),
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
126
|
+
...(0, hoverable_1.hoverableStyle)({
|
|
127
|
+
idleBackground: colors_1.TRANSPARENT,
|
|
128
|
+
hoverBackground: showsHover
|
|
129
|
+
? (0, colors_1.getBackgroundFromHoverState)({ hovered: true, selected: false })
|
|
130
|
+
: colors_1.TRANSPARENT,
|
|
131
|
+
idleColor: colors_1.LIGHT_TEXT,
|
|
132
|
+
hoverColor: showsHover ? colors_1.WHITE : colors_1.LIGHT_TEXT,
|
|
133
133
|
}),
|
|
134
|
-
color,
|
|
135
134
|
...(size === 'compact' ? compactInlineLabelButton : null),
|
|
136
135
|
...(isSegmented ? segmentedMainAction : null),
|
|
137
136
|
...style,
|
|
138
|
-
}), [
|
|
139
|
-
const
|
|
140
|
-
...inlineLabelText,
|
|
141
|
-
color,
|
|
142
|
-
}), [color]);
|
|
143
|
-
const onPointerEnter = react_1.default.useCallback(() => {
|
|
144
|
-
setHovered(true);
|
|
145
|
-
}, []);
|
|
146
|
-
const onPointerLeave = react_1.default.useCallback(() => {
|
|
147
|
-
setHovered(false);
|
|
148
|
-
}, []);
|
|
149
|
-
const mainContent = (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [renderIcon ? (jsx_runtime_1.jsx("span", { style: inlineLabelIcon, children: renderIcon(color) })) : null, jsx_runtime_1.jsx("span", { style: textStyle, children: children })
|
|
137
|
+
}), [disabled, showsHover, isSegmented, size, style]);
|
|
138
|
+
const mainContent = (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [renderIcon ? (jsx_runtime_1.jsx("span", { style: inlineLabelIcon, children: renderIcon(colors_1.CURRENT_COLOR) })) : null, jsx_runtime_1.jsx("span", { style: inlineLabelText, children: children })
|
|
150
139
|
] }));
|
|
151
|
-
const mainAction = onClick ? (jsx_runtime_1.jsx("button", { className:
|
|
140
|
+
const mainAction = onClick ? (jsx_runtime_1.jsx("button", { className: `__remotion-inspector-inline-action ${hoverable_1.HOVERABLE_CLASS_NAME}`, type: "button", disabled: disabled, style: buttonStyle, title: title, onClick: onClick, children: mainContent })) : (jsx_runtime_1.jsx("div", { className: hoverable_1.HOVERABLE_CLASS_NAME, style: buttonStyle, title: title, children: mainContent }));
|
|
152
141
|
if (variant.type === 'segmented') {
|
|
153
|
-
const trailingColor = hovered && !variant.trailing.disabled ? colors_1.WHITE : colors_1.LIGHT_TEXT;
|
|
154
142
|
const trailingStyle = {
|
|
155
143
|
...segmentedTrailingAction,
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
:
|
|
159
|
-
|
|
160
|
-
selected: false,
|
|
161
|
-
|
|
144
|
+
...(0, hoverable_1.hoverableStyle)({
|
|
145
|
+
idleBackground: colors_1.TRANSPARENT,
|
|
146
|
+
hoverBackground: variant.trailing.disabled
|
|
147
|
+
? colors_1.TRANSPARENT
|
|
148
|
+
: (0, colors_1.getBackgroundFromHoverState)({ hovered: true, selected: false }),
|
|
149
|
+
idleColor: colors_1.LIGHT_TEXT,
|
|
150
|
+
hoverColor: variant.trailing.disabled ? colors_1.LIGHT_TEXT : colors_1.WHITE,
|
|
151
|
+
}),
|
|
162
152
|
height: size === 'compact'
|
|
163
153
|
? layout_1.COMPACT_INLINE_ROW_HEIGHT
|
|
164
154
|
: layout_1.COMPACT_CONTROL_ROW_HEIGHT,
|
|
165
155
|
opacity: variant.trailing.disabled ? 0.35 : 1,
|
|
166
156
|
};
|
|
167
|
-
return (jsx_runtime_1.jsxs("div", {
|
|
157
|
+
return (jsx_runtime_1.jsxs("div", { className: hoverable_1.HOVER_GROUP_CLASS_NAME, style: segmentedInlineAction, children: [mainAction, jsx_runtime_1.jsx("button", { type: "button", className: hoverable_1.HOVERABLE_CLASS_NAME, disabled: variant.trailing.disabled, style: trailingStyle, title: variant.trailing.title, onClick: variant.trailing.onClick, children: jsx_runtime_1.jsx("span", { className: hoverable_1.HOVER_GROUP_REVEAL_CLASS_NAME, style: inlineLabelIcon, children: variant.trailing.renderIcon(colors_1.CURRENT_COLOR) }) })
|
|
168
158
|
] }));
|
|
169
159
|
}
|
|
170
160
|
return mainAction;
|
|
@@ -162,7 +162,9 @@ exports.detailRow = {
|
|
|
162
162
|
};
|
|
163
163
|
exports.detailLabel = {
|
|
164
164
|
color: colors_1.LIGHT_TEXT,
|
|
165
|
+
fontFamily: 'sans-serif',
|
|
165
166
|
fontSize: 13,
|
|
167
|
+
lineHeight: '20px',
|
|
166
168
|
minWidth: 0,
|
|
167
169
|
overflow: 'hidden',
|
|
168
170
|
textOverflow: 'ellipsis',
|
|
@@ -170,8 +172,10 @@ exports.detailLabel = {
|
|
|
170
172
|
};
|
|
171
173
|
exports.detailValue = {
|
|
172
174
|
color: colors_1.WHITE,
|
|
175
|
+
fontFamily: 'sans-serif',
|
|
173
176
|
fontSize: 13,
|
|
174
177
|
fontVariantNumeric: 'tabular-nums',
|
|
178
|
+
lineHeight: '20px',
|
|
175
179
|
minWidth: 0,
|
|
176
180
|
textAlign: 'right',
|
|
177
181
|
wordBreak: 'break-word',
|
|
@@ -266,7 +266,7 @@ const InspectorSequenceSection = ({ sequence, readOnlyStudio, validatedLocation,
|
|
|
266
266
|
jsx_runtime_1.jsx("span", { style: remoteSourceLeading, children: parts.leading }), jsx_runtime_1.jsx("span", { style: remoteSourceTrailing, children: parts.trailing })
|
|
267
267
|
] })),
|
|
268
268
|
disabled: false,
|
|
269
|
-
onClick:
|
|
269
|
+
onClick: () => (0, timeline_asset_link_1.openTimelineAssetLink)(linkInfo, selectAsset),
|
|
270
270
|
title: linkInfo.href,
|
|
271
271
|
};
|
|
272
272
|
}
|
|
@@ -18,6 +18,6 @@ const LoopToggle = ({ loop, setLoop }) => {
|
|
|
18
18
|
const onClick = (0, react_1.useCallback)(() => {
|
|
19
19
|
(0, exports.toggleLoop)(setLoop);
|
|
20
20
|
}, [setLoop]);
|
|
21
|
-
return (jsx_runtime_1.jsx(ControlButton_1.ControlButton, { title: accessibilityLabel, "aria-label": accessibilityLabel, onClick: onClick, children: jsx_runtime_1.jsx("svg", { viewBox: "0 0 512 512", style: { width: 18, height: 18 }, children: jsx_runtime_1.jsx("path", { fill: loop ? colors_1.BLUE :
|
|
21
|
+
return (jsx_runtime_1.jsx(ControlButton_1.ControlButton, { title: accessibilityLabel, "aria-label": accessibilityLabel, onClick: onClick, children: (color) => (jsx_runtime_1.jsx("svg", { viewBox: "0 0 512 512", style: { width: 18, height: 18 }, children: jsx_runtime_1.jsx("path", { fill: loop ? colors_1.BLUE : color, d: "M384 150.3V41.6l64 53.3v2l-64 53.3zM352 23.5V80H192C86 80 0 166 0 272c0 8.8 7.2 16 16 16s16-7.2 16-16c0-88.4 71.6-160 160-160h160v56.5c0 13 10.5 23.5 23.5 23.5 5.5 0 10.8-1.9 15-5.4l78-65c7.3-6.1 11.5-15.1 11.5-24.6v-2c0-9.5-4.2-18.5-11.5-24.6l-78-65c-4.2-3.5-9.5-5.4-15-5.4-13 0-23.5 10.5-23.5 23.5zM128 415.9v54.5l-64-53.3v-2l64-53.3v54.1zM160 400v-56.5c0-13-10.5-23.5-23.5-23.5-5.5 0-10.8 1.9-15 5.4l-78 65C36.2 396.5 32 405.5 32 415v2c0 9.5 4.2 18.5 11.5 24.6l78 65c4.2 3.5 9.5 5.4 15 5.4 13 0 23.5-10.5 23.5-23.5V432h160c106 0 192-86 192-192 0-8.8-7.2-16-16-16s-16 7.2-16 16c0 88.4-71.6 160-160 160H160z" }) })) }));
|
|
22
22
|
};
|
|
23
23
|
exports.LoopToggle = LoopToggle;
|