@remotion/studio 4.0.514 → 4.0.516
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.js +14 -1
- package/dist/api/restart-studio.js +4 -0
- package/dist/components/AssetSelector.js +3 -9
- package/dist/components/AssetSelectorItem.d.ts +3 -1
- package/dist/components/AssetSelectorItem.js +41 -42
- package/dist/components/AudioWaveform.js +17 -139
- package/dist/components/Canvas.js +7 -4
- package/dist/components/CaptionInspector.d.ts +2 -0
- package/dist/components/CaptionInspector.js +3 -5
- package/dist/components/CompositionSelector.js +6 -3
- package/dist/components/CompositionSelectorItem.js +9 -10
- package/dist/components/ConfigSelect.d.ts +17 -0
- package/dist/components/ConfigSelect.js +50 -0
- package/dist/components/CurrentAsset.d.ts +10 -2
- package/dist/components/CurrentAsset.js +139 -46
- package/dist/components/FixComputedValueModal.js +54 -51
- package/dist/components/GlobalKeybindings.js +5 -5
- package/dist/components/InlineAction.d.ts +1 -1
- package/dist/components/InlineAction.js +12 -2
- package/dist/components/InlineCaptionInspector.d.ts +2 -0
- package/dist/components/InlineCaptionInspector.js +2 -2
- package/dist/components/InlineCompositionName.js +1 -1
- package/dist/components/InlineEditableTitle.js +3 -2
- package/dist/components/InspectorInfoHeader.js +1 -1
- package/dist/components/InspectorOpenInEditor.js +48 -72
- package/dist/components/InspectorPanel/AlignmentControls.js +2 -3
- package/dist/components/InspectorPanel/CollapsibleInspectorSectionHeader.d.ts +7 -0
- package/dist/components/InspectorPanel/CollapsibleInspectorSectionHeader.js +39 -0
- package/dist/components/InspectorPanel/CompositionInspector.js +41 -12
- package/dist/components/InspectorPanel/KeyframeEasingNavigator.js +10 -4
- package/dist/components/InspectorPanel/SequenceInspectorHeader.js +2 -1
- package/dist/components/InspectorPanel/SequenceSelectionInspector.js +1 -4
- package/dist/components/InspectorPanel/common.d.ts +0 -12
- package/dist/components/InspectorPanel/common.js +3 -52
- package/dist/components/InspectorPanel/use-composition-actions.js +0 -1
- package/dist/components/InspectorPanelLayout.d.ts +1 -1
- package/dist/components/InspectorPanelLayout.js +1 -1
- package/dist/components/InspectorSequenceSection.js +40 -54
- package/dist/components/InstallPackage.d.ts +3 -2
- package/dist/components/InstallPackage.js +90 -28
- package/dist/components/InstallablePackage.js +37 -11
- package/dist/components/KeyboardShortcutsSettings.d.ts +2 -0
- package/dist/components/KeyboardShortcutsSettings.js +177 -0
- package/dist/components/Menu/MenuDivider.js +1 -1
- package/dist/components/MenuBuildIndicator.js +1 -1
- package/dist/components/Modals.js +12 -4
- package/dist/components/NewComposition/CodemodFooter.d.ts +0 -1
- package/dist/components/NewComposition/CodemodFooter.js +2 -8
- package/dist/components/NewComposition/DeleteComposition.js +1 -1
- package/dist/components/NewComposition/DeleteFolder.js +1 -1
- package/dist/components/NewComposition/DuplicateComposition.js +1 -1
- package/dist/components/NewComposition/InputDragger.js +27 -4
- package/dist/components/NewComposition/NewComposition.js +1 -1
- package/dist/components/NewComposition/NewFolder.js +1 -3
- package/dist/components/NewComposition/RenameComposition.js +1 -1
- package/dist/components/NewComposition/RenameFolder.js +1 -1
- package/dist/components/NewComposition/use-rename-static-file.js +1 -1
- package/dist/components/Notifications/NotificationCenter.d.ts +1 -0
- package/dist/components/Notifications/NotificationCenter.js +5 -0
- package/dist/components/OptionsPanel.js +9 -12
- package/dist/components/PreviewToolbar.js +5 -2
- package/dist/components/PreviewToolbarOverflowButton.js +30 -0
- package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +2 -2
- package/dist/components/QuickSwitcher/QuickSwitcherContent.js +14 -30
- package/dist/components/RenderButton.js +66 -183
- package/dist/components/RenderModal/DataEditor.js +15 -12
- package/dist/components/RenderModal/GuiRenderStatus.js +3 -1
- package/dist/components/RenderModal/RenderModalOutputName.js +3 -3
- package/dist/components/RenderModal/RenderStatusModal.js +0 -1
- package/dist/components/RenderModal/SchemaEditor/ZodSwitch.js +3 -1
- package/dist/components/RenderModal/SchemaEditor/infer-zod-schema-from-value.d.ts +15 -0
- package/dist/components/RenderModal/SchemaEditor/infer-zod-schema-from-value.js +95 -0
- package/dist/components/RenderModal/WebRenderModal.js +4 -2
- package/dist/components/RenderQueue/RenderQueueItem.js +3 -1
- package/dist/components/RenderQueue/RenderQueueOpenInFolder.js +3 -1
- package/dist/components/RenderQueue/RenderQueueRemoveItem.js +2 -7
- package/dist/components/RenderingSettings.js +7 -4
- package/dist/components/RulersAndGuidesToggle.d.ts +2 -0
- package/dist/components/RulersAndGuidesToggle.js +23 -0
- package/dist/components/SegmentedButton.d.ts +29 -0
- package/dist/components/SegmentedButton.js +226 -0
- package/dist/components/SelectedOutlineCanvasRotation.d.ts +1 -0
- package/dist/components/SelectedOutlineCanvasRotation.js +11 -4
- package/dist/components/SelectedOutlineEditingHandles.d.ts +16 -0
- package/dist/components/SelectedOutlineEditingHandles.js +66 -0
- package/dist/components/SelectedOutlineElement.d.ts +2 -4
- package/dist/components/SelectedOutlineElement.js +15 -54
- package/dist/components/SelectedOutlineOverlay.js +32 -6
- package/dist/components/SelectedOutlinePolygon.d.ts +4 -4
- package/dist/components/SelectedOutlinePolygon.js +20 -17
- package/dist/components/SelectedOutlineRenderer.js +66 -14
- package/dist/components/SettingsModal.d.ts +1 -1
- package/dist/components/SettingsModal.js +30 -7
- package/dist/components/SettingsModalFooter.js +2 -1
- package/dist/components/SkillsSettings.d.ts +2 -0
- package/dist/components/SkillsSettings.js +129 -0
- package/dist/components/StaticFilePreview.js +7 -1
- package/dist/components/StudioSettings.js +7 -48
- package/dist/components/Tabs/index.js +1 -1
- package/dist/components/Timeline/Timeline.js +0 -1
- package/dist/components/Timeline/TimelineAssetField.d.ts +1 -1
- package/dist/components/Timeline/TimelineAssetField.js +15 -9
- package/dist/components/Timeline/TimelineBooleanField.js +1 -4
- package/dist/components/Timeline/TimelineClipboardKeybindings.js +13 -12
- package/dist/components/Timeline/TimelineEffectItem.d.ts +1 -0
- package/dist/components/Timeline/TimelineEffectItem.js +45 -15
- package/dist/components/Timeline/TimelineEffectPropItem.js +21 -4
- package/dist/components/Timeline/TimelineExpandArrowButton.js +10 -7
- package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +4 -1
- package/dist/components/Timeline/TimelineExpandedRow.js +5 -4
- package/dist/components/Timeline/TimelineExpandedSection.js +8 -5
- package/dist/components/Timeline/TimelineFieldLabel.js +4 -2
- package/dist/components/Timeline/TimelineFieldRowContent.d.ts +1 -2
- package/dist/components/Timeline/TimelineFieldRowContent.js +8 -21
- package/dist/components/Timeline/TimelineImageInfo.d.ts +0 -1
- package/dist/components/Timeline/TimelineImageInfo.js +13 -32
- package/dist/components/Timeline/TimelineKeyframeControls.js +10 -4
- package/dist/components/Timeline/TimelinePrimitiveFieldValue.js +1 -1
- package/dist/components/Timeline/TimelineRotationField.js +0 -2
- package/dist/components/Timeline/TimelineRowChrome.d.ts +1 -1
- package/dist/components/Timeline/TimelineRowChrome.js +41 -6
- package/dist/components/Timeline/TimelineRowLayoutContext.d.ts +0 -1
- package/dist/components/Timeline/TimelineRowLayoutContext.js +1 -4
- package/dist/components/Timeline/TimelineScaleField.js +2 -6
- package/dist/components/Timeline/TimelineSchemaField.js +9 -3
- package/dist/components/Timeline/TimelineSelection.d.ts +8 -3
- package/dist/components/Timeline/TimelineSelection.js +7 -5
- package/dist/components/Timeline/TimelineSequence.d.ts +2 -0
- package/dist/components/Timeline/TimelineSequence.js +110 -19
- package/dist/components/Timeline/TimelineSequenceItem.js +11 -8
- package/dist/components/Timeline/TimelineSequenceName.js +1 -1
- package/dist/components/Timeline/TimelineSequencePropItem.js +15 -2
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +4 -2
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +85 -91
- package/dist/components/Timeline/TimelineTrack.js +5 -2
- package/dist/components/Timeline/TimelineTransformOriginField.js +0 -4
- package/dist/components/Timeline/TimelineTranslateField.js +0 -4
- package/dist/components/Timeline/TimelineVideoInfo.js +4 -2
- package/dist/components/Timeline/TimelineVirtualization.js +3 -1
- package/dist/components/Timeline/delete-selected-timeline-item.js +6 -2
- package/dist/components/Timeline/duplicate-selected-timeline-item.js +7 -14
- package/dist/components/Timeline/get-copy-context-for-agents-menu-item.d.ts +4 -0
- package/dist/components/Timeline/get-copy-context-for-agents-menu-item.js +26 -0
- package/dist/components/Timeline/get-sequence-context-menu-items.js +2 -19
- package/dist/components/Timeline/get-timeline-sequence-visible-layout.d.ts +6 -1
- package/dist/components/Timeline/get-timeline-sequence-visible-layout.js +11 -4
- package/dist/components/Timeline/save-effect-prop.js +3 -3
- package/dist/components/Timeline/split-selected-timeline-item.js +0 -1
- package/dist/components/Timeline/timeline-field-row-layout.d.ts +1 -1
- package/dist/components/Timeline/timeline-field-row-layout.js +4 -7
- package/dist/components/Timeline/timeline-field-utils.js +0 -2
- package/dist/components/Timeline/use-timeline-asset-drop.js +1 -0
- package/dist/components/TimelineCombobox.js +25 -160
- package/dist/components/TimelineInOutToggle.js +4 -1
- package/dist/components/duplicate-jsx-node-api.d.ts +2 -0
- package/dist/components/duplicate-jsx-node-api.js +12 -0
- package/dist/components/effect-drag-and-drop.js +7 -7
- package/dist/components/effect-operations-api.d.ts +8 -0
- package/dist/components/effect-operations-api.js +52 -0
- package/dist/components/handle-drop.d.ts +2 -1
- package/dist/components/handle-drop.js +3 -3
- package/dist/components/import-assets.js +9 -65
- package/dist/components/keyboard-shortcuts.d.ts +10 -0
- package/dist/components/keyboard-shortcuts.js +135 -0
- package/dist/components/selected-outline-control-layout.js +2 -6
- package/dist/components/selected-outline-measurement.d.ts +1 -1
- package/dist/components/selected-outline-measurement.js +16 -3
- package/dist/components/use-delete-asset.d.ts +1 -0
- package/dist/components/use-delete-asset.js +40 -0
- package/dist/components/use-selected-outline-control-target.d.ts +11 -0
- package/dist/components/use-selected-outline-control-target.js +79 -0
- package/dist/error-overlay/remotion-overlay/log-studio-error.js +4 -0
- package/dist/esm/{chunk-r46yxrjr.js → chunk-4bxz1d3g.js} +4 -3
- package/dist/esm/{chunk-xn2q7eem.js → chunk-w4244j4n.js} +14747 -14549
- package/dist/esm/index.mjs +3 -0
- package/dist/esm/internals.mjs +14747 -14549
- package/dist/esm/previewEntry.mjs +14557 -14359
- package/dist/esm/renderEntry.mjs +2 -2
- package/dist/helpers/add-asset-cache-bust.d.ts +4 -0
- package/dist/helpers/add-asset-cache-bust.js +10 -0
- package/dist/helpers/browser-studio-operations.d.ts +3 -0
- package/dist/helpers/browser-studio-operations.js +18 -1
- package/dist/helpers/calculate-timeline.js +2 -1
- package/dist/helpers/colors.d.ts +3 -1
- package/dist/helpers/colors.js +7 -3
- package/dist/helpers/drag-aware-double-click.d.ts +6 -0
- package/dist/helpers/drag-aware-double-click.js +20 -0
- package/dist/helpers/get-asset-metadata.js +25 -16
- package/dist/helpers/get-sequence-double-click-action.d.ts +2 -1
- package/dist/helpers/get-sequence-double-click-action.js +7 -1
- package/dist/helpers/get-timeline-sequence-layout.d.ts +4 -1
- package/dist/helpers/get-timeline-sequence-layout.js +15 -6
- package/dist/helpers/get-timeline-sequence-sort-key.d.ts +2 -1
- package/dist/helpers/hoverable.d.ts +1 -0
- package/dist/helpers/hoverable.js +2 -1
- package/dist/helpers/inject-css.js +7 -3
- package/dist/helpers/open-in-remotion-convert.d.ts +7 -0
- package/dist/helpers/open-in-remotion-convert.js +18 -0
- package/dist/helpers/use-max-media-duration.js +5 -3
- package/dist/helpers/use-media-metadata.d.ts +2 -1
- package/dist/helpers/use-media-metadata.js +49 -25
- package/dist/helpers/use-menu-structure.js +54 -67
- package/dist/icons/align-center-horizontal.js +1 -1
- package/dist/icons/align-left.js +1 -1
- package/dist/icons/align-right.js +1 -1
- package/dist/icons/cloud-download.d.ts +4 -0
- package/dist/icons/cloud-download.js +8 -0
- package/dist/icons/keyboard.d.ts +4 -0
- package/dist/icons/keyboard.js +10 -0
- package/dist/icons/license.d.ts +4 -0
- package/dist/icons/license.js +8 -0
- package/dist/icons/package.d.ts +4 -0
- package/dist/icons/package.js +8 -0
- package/dist/icons/react.js +1 -1
- package/dist/icons/remotion-convert.d.ts +4 -0
- package/dist/icons/remotion-convert.js +10 -0
- package/dist/icons/skills.d.ts +4 -0
- package/dist/icons/skills.js +10 -0
- package/dist/state/modals.d.ts +2 -5
- package/package.json +12 -12
- package/dist/components/KeyboardShortcutsExplainer.d.ts +0 -2
- package/dist/components/KeyboardShortcutsExplainer.js +0 -194
|
@@ -42,21 +42,15 @@ const get_connected_compositions_1 = require("../helpers/get-connected-compositi
|
|
|
42
42
|
const get_sequence_double_click_action_1 = require("../helpers/get-sequence-double-click-action");
|
|
43
43
|
const interactivity_enabled_1 = require("../helpers/interactivity-enabled");
|
|
44
44
|
const open_in_editor_1 = require("../helpers/open-in-editor");
|
|
45
|
-
const timeline_node_path_key_1 = require("../helpers/timeline-node-path-key");
|
|
46
45
|
const modals_1 = require("../state/modals");
|
|
47
|
-
const timeline_sequence_hover_1 = require("../state/timeline-sequence-hover");
|
|
48
46
|
const transform_3d_mode_1 = require("../state/transform-3d-mode");
|
|
49
47
|
const ConfirmationDialog_1 = require("./ConfirmationDialog");
|
|
50
48
|
const delete_jsx_node_api_1 = require("./delete-jsx-node-api");
|
|
51
49
|
const InitialCompositionLoader_1 = require("./InitialCompositionLoader");
|
|
52
50
|
const NotificationCenter_1 = require("./Notifications/NotificationCenter");
|
|
53
|
-
const selected_outline_control_layout_1 = require("./selected-outline-control-layout");
|
|
54
51
|
const selected_outline_types_1 = require("./selected-outline-types");
|
|
55
52
|
const SelectedOutlineCanvasRotation_1 = require("./SelectedOutlineCanvasRotation");
|
|
56
|
-
const SelectedOutlineCropControls_1 = require("./SelectedOutlineCropControls");
|
|
57
53
|
const SelectedOutlinePolygon_1 = require("./SelectedOutlinePolygon");
|
|
58
|
-
const SelectedOutlineRotationCornerHandle_1 = require("./SelectedOutlineRotationCornerHandle");
|
|
59
|
-
const SelectedOutlineScaleEdgeLine_1 = require("./SelectedOutlineScaleEdgeLine");
|
|
60
54
|
const disable_sequence_interactivity_1 = require("./Timeline/disable-sequence-interactivity");
|
|
61
55
|
const duplicate_selected_timeline_item_1 = require("./Timeline/duplicate-selected-timeline-item");
|
|
62
56
|
const get_sequence_context_menu_items_1 = require("./Timeline/get-sequence-context-menu-items");
|
|
@@ -65,7 +59,8 @@ const TimelineSelection_1 = require("./Timeline/TimelineSelection");
|
|
|
65
59
|
const get_stack_1 = require("./Timeline/TimelineStack/get-stack");
|
|
66
60
|
const use_default_editor_info_1 = require("./use-default-editor-info");
|
|
67
61
|
const use_select_asset_1 = require("./use-select-asset");
|
|
68
|
-
const
|
|
62
|
+
const use_selected_outline_control_target_1 = require("./use-selected-outline-control-target");
|
|
63
|
+
const SelectedOutlineElementUnmemoized = ({ compositionHeight, compositionWidth, dragging, getAllDragOutlines, getAllDragTargets, getLatestTargetByKey, layoutTarget, outline, onDraggingChange, onSnapPointsChange, onSelect, registerContextMenuOpen, scale, }) => {
|
|
69
64
|
var _a;
|
|
70
65
|
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
71
66
|
const { canConfigureApps, canOpenInEditor: editorAvailable, defaultEditorId, editorInfo, } = (0, use_default_editor_info_1.useEditorOpening)(previewServerState.type === 'connected');
|
|
@@ -78,43 +73,10 @@ const SelectedOutlineElementUnmemoized = ({ compositionHeight, compositionWidth,
|
|
|
78
73
|
const { compositions } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
|
|
79
74
|
const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
|
|
80
75
|
const { setManuallyEnabled } = (0, react_1.useContext)(transform_3d_mode_1.Transform3DModeStateContext);
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
targetRef.current = layoutTarget;
|
|
86
|
-
}, [layoutTarget]);
|
|
87
|
-
const getTarget = react_1.default.useCallback(() => {
|
|
88
|
-
const currentTarget = targetRef.current;
|
|
89
|
-
if (currentTarget === undefined) {
|
|
90
|
-
return undefined;
|
|
91
|
-
}
|
|
92
|
-
return getLatestTargetByKey(currentTarget.key);
|
|
93
|
-
}, [getLatestTargetByKey]);
|
|
94
|
-
const getLayoutTarget = react_1.default.useCallback(() => targetRef.current, []);
|
|
95
|
-
const hoveredNodePathKey = (0, react_1.useMemo)(() => layoutTarget === undefined
|
|
96
|
-
? null
|
|
97
|
-
: (0, timeline_node_path_key_1.timelineSequenceNodePathToKey)(layoutTarget.nodePathInfo.sequenceSubscriptionKey), [layoutTarget]);
|
|
98
|
-
const hovered = (0, timeline_sequence_hover_1.useIsTimelineSequenceHovered)(hoveredNodePathKey);
|
|
99
|
-
const controlTarget = layoutTarget !== undefined && (layoutTarget.containsSelection || hovered)
|
|
100
|
-
? getLatestTargetByKey(layoutTarget.key)
|
|
101
|
-
: undefined;
|
|
102
|
-
const onHoverChange = react_1.default.useCallback((key) => {
|
|
103
|
-
setHoveredSequence((currentHover) => {
|
|
104
|
-
if (key !== null) {
|
|
105
|
-
const hoverTarget = targetRef.current;
|
|
106
|
-
if (hoverTarget === undefined || hoverTarget.key !== key) {
|
|
107
|
-
return currentHover;
|
|
108
|
-
}
|
|
109
|
-
return {
|
|
110
|
-
key,
|
|
111
|
-
nodePathKey: (0, timeline_node_path_key_1.timelineSequenceNodePathToKey)(hoverTarget.nodePathInfo.sequenceSubscriptionKey),
|
|
112
|
-
source: 'canvas',
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
return (currentHover === null || currentHover === void 0 ? void 0 : currentHover.source) === 'canvas' ? null : currentHover;
|
|
116
|
-
});
|
|
117
|
-
}, [setHoveredSequence]);
|
|
76
|
+
const { controlTarget, getLayoutTarget, getTarget, hovered, onHoverChange } = (0, use_selected_outline_control_target_1.useSelectedOutlineControlTarget)({
|
|
77
|
+
getLatestTargetByKey,
|
|
78
|
+
layoutTarget,
|
|
79
|
+
});
|
|
118
80
|
const resolveOriginalLocation = react_1.default.useCallback(async (resolveTarget) => {
|
|
119
81
|
const stack = resolveTarget.sequence.getStack();
|
|
120
82
|
if (!stack) {
|
|
@@ -130,7 +92,7 @@ const SelectedOutlineElementUnmemoized = ({ compositionHeight, compositionWidth,
|
|
|
130
92
|
updateResolvedStackTrace(stack, originalLocation);
|
|
131
93
|
return originalLocation;
|
|
132
94
|
}, [updateResolvedStackTrace]);
|
|
133
|
-
const onDoubleClickTarget = react_1.default.useCallback((doubleClickTarget, button) => {
|
|
95
|
+
const onDoubleClickTarget = react_1.default.useCallback((doubleClickTarget, button, sequenceWasDragged) => {
|
|
134
96
|
const connectedCompositions = (0, get_connected_compositions_1.getConnectedCompositions)({
|
|
135
97
|
compositions,
|
|
136
98
|
singleChildComponent: doubleClickTarget.sequence.singleChildComponent,
|
|
@@ -139,6 +101,7 @@ const SelectedOutlineElementUnmemoized = ({ compositionHeight, compositionWidth,
|
|
|
139
101
|
button,
|
|
140
102
|
canOpenInEditor: editorAvailable,
|
|
141
103
|
numberOfConnectedCompositions: connectedCompositions.length,
|
|
104
|
+
sequenceWasDragged,
|
|
142
105
|
});
|
|
143
106
|
if (action === null) {
|
|
144
107
|
return false;
|
|
@@ -392,15 +355,13 @@ const SelectedOutlineElementUnmemoized = ({ compositionHeight, compositionWidth,
|
|
|
392
355
|
setSelectedModal,
|
|
393
356
|
setPropStatuses,
|
|
394
357
|
]);
|
|
358
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
359
|
+
registerContextMenuOpen(outline.key, onContextMenuOpen);
|
|
360
|
+
return () => {
|
|
361
|
+
registerContextMenuOpen(outline.key, null);
|
|
362
|
+
};
|
|
363
|
+
}, [onContextMenuOpen, outline.key, registerContextMenuOpen]);
|
|
395
364
|
return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
396
|
-
jsx_runtime_1.jsx(SelectedOutlinePolygon_1.SelectedOutlinePolygon, { compositionHeight: compositionHeight, compositionWidth: compositionWidth, directlySelected: (layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.selected) === true, dragging: dragging, getAllDragOutlines: getAllDragOutlines, getAllDragTargets: getAllDragTargets, getLayoutTarget: getLayoutTarget, getTarget: getTarget, hasTarget: layoutTarget !== undefined, hovered: hovered, outline: outline,
|
|
397
|
-
((layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.containsSelection) || hovered)
|
|
398
|
-
? controlLayout.scaleEdges.map((edge) => (jsx_runtime_1.jsx(SelectedOutlineScaleEdgeLine_1.SelectedOutlineScaleEdgeLine, { getAllScaleDragTargets: getAllScaleDragTargets, dragging: dragging, edge: edge, hitWidth: edge === 'top' || edge === 'bottom'
|
|
399
|
-
? controlLayout.scaleHitWidth.horizontal
|
|
400
|
-
: controlLayout.scaleHitWidth.vertical, outline: outline, onContextMenuOpen: onContextMenuOpen, onContextMenuOpenChange: onContextMenuOpenChange, onDraggingChange: onDraggingChange, onHoverChange: onHoverChange, onSelect: onSelect, target: controlTarget }, edge)))
|
|
401
|
-
: null, (controlTarget === null || controlTarget === void 0 ? void 0 : controlTarget.cropDrag) === null &&
|
|
402
|
-
((layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.containsSelection) || hovered)
|
|
403
|
-
? controlLayout.rotationCorners.map(({ corner, point }) => (jsx_runtime_1.jsx(SelectedOutlineRotationCornerHandle_1.SelectedOutlineRotationCornerHandle, { getAllRotationDragTargets: getAllRotationDragTargets, corner: corner, dragging: dragging, handlePoint: point, outline: outline, onContextMenuOpen: onContextMenuOpen, onContextMenuOpenChange: onContextMenuOpenChange, onDraggingChange: onDraggingChange, onHoverChange: onHoverChange, onSelect: onSelect, radius: controlLayout.rotationHandleRadius, target: controlTarget }, corner)))
|
|
404
|
-
: null] }));
|
|
365
|
+
jsx_runtime_1.jsx(SelectedOutlinePolygon_1.SelectedOutlinePolygon, { compositionHeight: compositionHeight, compositionWidth: compositionWidth, containsSelection: (layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.containsSelection) === true, directlySelected: (layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.selected) === true, dragging: dragging, getAllDragOutlines: getAllDragOutlines, getAllDragTargets: getAllDragTargets, getLayoutTarget: getLayoutTarget, getTarget: getTarget, hasTarget: layoutTarget !== undefined, hovered: hovered, outline: outline, onDraggingChange: onDraggingChange, onHoverChange: onHoverChange, onSnapPointsChange: onSnapPointsChange, onSelect: onSelect, onDoubleClickTarget: onDoubleClickTarget, scale: scale, showSelectedOutline: (_a = layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.showSelectedOutline) !== null && _a !== void 0 ? _a : false }), (layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.selectedForRotation) && (controlTarget === null || controlTarget === void 0 ? void 0 : controlTarget.rotationDrag) ? (jsx_runtime_1.jsx(SelectedOutlineCanvasRotation_1.SelectedOutlineCanvasRotation, { getLatestTargetByKey: getLatestTargetByKey, layoutTarget: layoutTarget, onDraggingChange: onDraggingChange, outline: outline, transform3DMode: controlTarget.rotationDrag.transform3DMode })) : null] }));
|
|
405
366
|
};
|
|
406
367
|
exports.SelectedOutlineElement = react_1.default.memo(SelectedOutlineElementUnmemoized);
|
|
@@ -485,14 +485,38 @@ const calculateOutlineTargets = ({ connectedClientId, editorShowOutlines, getDra
|
|
|
485
485
|
];
|
|
486
486
|
});
|
|
487
487
|
};
|
|
488
|
-
const ActiveSelectedOutlineOverlayUnmemoized = ({ calculateOutlineTargetsForCurrentState, compositionHeight, compositionWidth, draggingOutline, getLatestOutlineTargetByKey, getSelectableOutlines, onDraggingChange, onContextMenuOpenChange, onSelect, scale, selectedSequenceKeys, sequenceKeysContainingSelection, sequences, translationX, translationY, }) => {
|
|
488
|
+
const ActiveSelectedOutlineOverlayUnmemoized = ({ calculateOutlineTargetsForCurrentState, compositionHeight, compositionWidth, draggingOutline, getLatestOutlineTargetByKey, getSelectableOutlines, hoveredTimelineNodePathKey, measureAllOutlines, onDraggingChange, onContextMenuOpenChange, onSelect, scale, selectedSequenceKeys, sequenceKeysContainingSelection, sequences, translationX, translationY, }) => {
|
|
489
489
|
const timelinePosition = remotion_1.Internals.Timeline.useTimelinePosition();
|
|
490
490
|
const updateOutlinesRef = (0, react_1.useRef)(() => undefined);
|
|
491
491
|
const selectableOutlines = (0, react_1.useMemo)(() => {
|
|
492
492
|
return getSelectableOutlines(timelinePosition);
|
|
493
493
|
}, [getSelectableOutlines, timelinePosition]);
|
|
494
|
+
const selectableOutlinesForLayout = (0, react_1.useMemo)(() => {
|
|
495
|
+
if (measureAllOutlines) {
|
|
496
|
+
return selectableOutlines;
|
|
497
|
+
}
|
|
498
|
+
// A timeline item can represent multiple connected canvas instances.
|
|
499
|
+
// Keep every instance of an active source node without calculating targets
|
|
500
|
+
// for unrelated timeline items while the canvas itself is inactive.
|
|
501
|
+
const activeNodePathKeys = new Set();
|
|
502
|
+
for (const { key, nodePathInfo } of selectableOutlines) {
|
|
503
|
+
const nodePathKey = (0, timeline_node_path_key_1.timelineSequenceNodePathToKey)(nodePathInfo.sequenceSubscriptionKey);
|
|
504
|
+
if (selectedSequenceKeys.has(key) ||
|
|
505
|
+
sequenceKeysContainingSelection.has(key) ||
|
|
506
|
+
nodePathKey === hoveredTimelineNodePathKey) {
|
|
507
|
+
activeNodePathKeys.add(nodePathKey);
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
return selectableOutlines.filter(({ nodePathInfo }) => activeNodePathKeys.has((0, timeline_node_path_key_1.timelineSequenceNodePathToKey)(nodePathInfo.sequenceSubscriptionKey)));
|
|
511
|
+
}, [
|
|
512
|
+
hoveredTimelineNodePathKey,
|
|
513
|
+
measureAllOutlines,
|
|
514
|
+
selectableOutlines,
|
|
515
|
+
selectedSequenceKeys,
|
|
516
|
+
sequenceKeysContainingSelection,
|
|
517
|
+
]);
|
|
494
518
|
const outlineRuntimeControls = (0, react_1.useMemo)(() => {
|
|
495
|
-
return
|
|
519
|
+
return selectableOutlinesForLayout.flatMap(({ key, sequence }) => {
|
|
496
520
|
if (!selectedSequenceKeys.has(key) &&
|
|
497
521
|
!sequenceKeysContainingSelection.has(key)) {
|
|
498
522
|
return [];
|
|
@@ -500,7 +524,7 @@ const ActiveSelectedOutlineOverlayUnmemoized = ({ calculateOutlineTargetsForCurr
|
|
|
500
524
|
return sequence.controls ? [sequence.controls] : [];
|
|
501
525
|
});
|
|
502
526
|
}, [
|
|
503
|
-
|
|
527
|
+
selectableOutlinesForLayout,
|
|
504
528
|
selectedSequenceKeys,
|
|
505
529
|
sequenceKeysContainingSelection,
|
|
506
530
|
]);
|
|
@@ -512,13 +536,13 @@ const ActiveSelectedOutlineOverlayUnmemoized = ({ calculateOutlineTargetsForCurr
|
|
|
512
536
|
const outlineTargets = (0, react_1.useMemo)(() => calculateOutlineTargetsForCurrentState({
|
|
513
537
|
mode: 'layout',
|
|
514
538
|
runtimeValuesByStore: outlineRuntimeValuesByStore,
|
|
515
|
-
selectableOutlines,
|
|
539
|
+
selectableOutlines: selectableOutlinesForLayout,
|
|
516
540
|
targetKey: null,
|
|
517
541
|
targetTimelinePosition: timelinePosition,
|
|
518
542
|
}), [
|
|
519
543
|
calculateOutlineTargetsForCurrentState,
|
|
520
544
|
outlineRuntimeValuesByStore,
|
|
521
|
-
|
|
545
|
+
selectableOutlinesForLayout,
|
|
522
546
|
timelinePosition,
|
|
523
547
|
]);
|
|
524
548
|
const outlineTargetsRef = (0, react_1.useRef)(outlineTargets);
|
|
@@ -658,6 +682,8 @@ const SelectedOutlineOverlayUnmemoized = ({ canvasHovered, compositionHeight, co
|
|
|
658
682
|
canvasContextMenuOpen ||
|
|
659
683
|
sequenceKeysContainingSelection.size > 0 ||
|
|
660
684
|
(hoveredSequence === null || hoveredSequence === void 0 ? void 0 : hoveredSequence.source) === 'timeline';
|
|
685
|
+
const measureAllOutlines = canvasHovered || draggingOutline || canvasContextMenuOpen;
|
|
686
|
+
const hoveredTimelineNodePathKey = (hoveredSequence === null || hoveredSequence === void 0 ? void 0 : hoveredSequence.source) === 'timeline' ? hoveredSequence.nodePathKey : null;
|
|
661
687
|
(0, react_1.useLayoutEffect)(() => {
|
|
662
688
|
if (measurementActive) {
|
|
663
689
|
return;
|
|
@@ -665,6 +691,6 @@ const SelectedOutlineOverlayUnmemoized = ({ canvasHovered, compositionHeight, co
|
|
|
665
691
|
setHoveredSequence((currentHover) => (currentHover === null || currentHover === void 0 ? void 0 : currentHover.source) === 'canvas' ? null : currentHover);
|
|
666
692
|
}, [measurementActive, setHoveredSequence]);
|
|
667
693
|
return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
668
|
-
jsx_runtime_1.jsx(SelectedOutlineKeyboardControls_1.SelectedOutlineKeyboardControls, { getLatestOutlineTargetByKey: getLatestOutlineTargetByKey, getSelectableOutlines: getCurrentSelectableOutlines }), measurementActive ? (jsx_runtime_1.jsx(ActiveSelectedOutlineOverlay, { calculateOutlineTargetsForCurrentState: calculateOutlineTargetsForCurrentState, compositionHeight: compositionHeight, compositionWidth: compositionWidth, draggingOutline: draggingOutline, getLatestOutlineTargetByKey: getLatestOutlineTargetByKey, getSelectableOutlines: getSelectableOutlines, onDraggingChange: onDraggingChange, onContextMenuOpenChange: setCanvasContextMenuOpen, onSelect: selectOutlineItem, scale: scale, selectedSequenceKeys: selectedSequenceKeys, sequenceKeysContainingSelection: sequenceKeysContainingSelection, sequences: sequences, translationX: translationX, translationY: translationY })) : null] }));
|
|
694
|
+
jsx_runtime_1.jsx(SelectedOutlineKeyboardControls_1.SelectedOutlineKeyboardControls, { getLatestOutlineTargetByKey: getLatestOutlineTargetByKey, getSelectableOutlines: getCurrentSelectableOutlines }), measurementActive ? (jsx_runtime_1.jsx(ActiveSelectedOutlineOverlay, { calculateOutlineTargetsForCurrentState: calculateOutlineTargetsForCurrentState, compositionHeight: compositionHeight, compositionWidth: compositionWidth, draggingOutline: draggingOutline, getLatestOutlineTargetByKey: getLatestOutlineTargetByKey, getSelectableOutlines: getSelectableOutlines, hoveredTimelineNodePathKey: hoveredTimelineNodePathKey, measureAllOutlines: measureAllOutlines, onDraggingChange: onDraggingChange, onContextMenuOpenChange: setCanvasContextMenuOpen, onSelect: selectOutlineItem, scale: scale, selectedSequenceKeys: selectedSequenceKeys, sequenceKeysContainingSelection: sequenceKeysContainingSelection, sequences: sequences, translationX: translationX, translationY: translationY })) : null] }));
|
|
669
695
|
};
|
|
670
696
|
exports.SelectedOutlineOverlay = react_1.default.memo(SelectedOutlineOverlayUnmemoized);
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { SelectedOutline } from './selected-outline-geometry';
|
|
3
3
|
import { type SelectedOutlineSnapPoint } from './selected-outline-snap';
|
|
4
|
-
import { type
|
|
4
|
+
import { type SelectedOutlineDragTarget, type SelectedOutlineLayoutTarget, type SelectedOutlineTarget } from './selected-outline-types';
|
|
5
5
|
import type { TimelineSelection, TimelineSelectionInteraction } from './Timeline/TimelineSelection';
|
|
6
|
+
export declare const SELECTED_OUTLINE_KEY_ATTR = "data-remotion-studio-selected-outline-key";
|
|
6
7
|
export declare const SelectedOutlinePolygon: React.NamedExoticComponent<{
|
|
7
8
|
readonly compositionHeight: number;
|
|
8
9
|
readonly compositionWidth: number;
|
|
10
|
+
readonly containsSelection: boolean;
|
|
9
11
|
readonly directlySelected: boolean;
|
|
10
12
|
readonly dragging: boolean;
|
|
11
13
|
readonly getAllDragOutlines: () => readonly SelectedOutline[];
|
|
@@ -14,14 +16,12 @@ export declare const SelectedOutlinePolygon: React.NamedExoticComponent<{
|
|
|
14
16
|
readonly getTarget: () => SelectedOutlineTarget | undefined;
|
|
15
17
|
readonly hasTarget: boolean;
|
|
16
18
|
readonly hovered: boolean;
|
|
17
|
-
readonly onContextMenuOpen: SelectedOutlineContextMenuOpenHandler;
|
|
18
|
-
readonly onContextMenuOpenChange: (open: boolean) => void;
|
|
19
19
|
readonly outline: SelectedOutline;
|
|
20
20
|
readonly onDraggingChange: (dragging: boolean) => void;
|
|
21
21
|
readonly onHoverChange: (key: string | null) => void;
|
|
22
22
|
readonly onSnapPointsChange: (snapPoints: readonly SelectedOutlineSnapPoint[]) => void;
|
|
23
23
|
readonly onSelect: (item: TimelineSelection, interaction: TimelineSelectionInteraction) => void;
|
|
24
|
-
readonly onDoubleClickTarget: (target: SelectedOutlineTarget, button: number) => boolean;
|
|
24
|
+
readonly onDoubleClickTarget: (target: SelectedOutlineTarget, button: number, sequenceWasDragged: boolean) => boolean;
|
|
25
25
|
readonly scale: number;
|
|
26
26
|
readonly showSelectedOutline: boolean;
|
|
27
27
|
}>;
|
|
@@ -33,17 +33,17 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.SelectedOutlinePolygon = void 0;
|
|
36
|
+
exports.SelectedOutlinePolygon = exports.SELECTED_OUTLINE_KEY_ATTR = void 0;
|
|
37
37
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
38
38
|
const react_1 = __importStar(require("react"));
|
|
39
39
|
const remotion_1 = require("remotion");
|
|
40
40
|
const client_id_1 = require("../helpers/client-id");
|
|
41
41
|
const colors_1 = require("../helpers/colors");
|
|
42
|
+
const drag_aware_double_click_1 = require("../helpers/drag-aware-double-click");
|
|
42
43
|
const interactivity_enabled_1 = require("../helpers/interactivity-enabled");
|
|
43
44
|
const pointer_session_1 = require("../helpers/pointer-session");
|
|
44
45
|
const editor_guides_1 = require("../state/editor-guides");
|
|
45
46
|
const editor_snapping_1 = require("../state/editor-snapping");
|
|
46
|
-
const ContextMenu_1 = require("./ContextMenu");
|
|
47
47
|
const effect_drag_and_drop_1 = require("./effect-drag-and-drop");
|
|
48
48
|
const ForceSpecificCursor_1 = require("./ForceSpecificCursor");
|
|
49
49
|
const NotificationCenter_1 = require("./Notifications/NotificationCenter");
|
|
@@ -56,8 +56,10 @@ const focus_inspector_field_1 = require("./Timeline/focus-inspector-field");
|
|
|
56
56
|
const imperative_state_1 = require("./Timeline/imperative-state");
|
|
57
57
|
const save_sequence_prop_1 = require("./Timeline/save-sequence-prop");
|
|
58
58
|
const should_clear_selection_on_pointer_down_1 = require("./Timeline/should-clear-selection-on-pointer-down");
|
|
59
|
-
|
|
59
|
+
exports.SELECTED_OUTLINE_KEY_ATTR = 'data-remotion-studio-selected-outline-key';
|
|
60
|
+
const SelectedOutlinePolygonUnmemoized = ({ compositionHeight, compositionWidth, containsSelection, directlySelected, dragging, getAllDragOutlines, getAllDragTargets, getLayoutTarget, getTarget, hasTarget, hovered, outline, onDraggingChange, onHoverChange, onSnapPointsChange, onSelect, onDoubleClickTarget, scale, showSelectedOutline, }) => {
|
|
60
61
|
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
62
|
+
const dragAwareDoubleClick = (0, react_1.useMemo)(() => (0, drag_aware_double_click_1.createDragAwareDoubleClickTracker)(), []);
|
|
61
63
|
const { canvasContent } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
|
|
62
64
|
const { getDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
|
|
63
65
|
const { setPropStatuses, setDragOverrides, clearDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
@@ -114,7 +116,7 @@ const SelectedOutlinePolygonUnmemoized = ({ compositionHeight, compositionWidth,
|
|
|
114
116
|
const deferSelection = !selected &&
|
|
115
117
|
!interaction.shiftKey &&
|
|
116
118
|
!interaction.toggleKey &&
|
|
117
|
-
pointerInsideSelectedOutline;
|
|
119
|
+
(containsSelection || pointerInsideSelectedOutline);
|
|
118
120
|
if (!deferSelection && shouldUpdateSelection) {
|
|
119
121
|
onSelect(target.selection, interaction);
|
|
120
122
|
}
|
|
@@ -254,6 +256,7 @@ const SelectedOutlinePolygonUnmemoized = ({ compositionHeight, compositionWidth,
|
|
|
254
256
|
updateDragOverrides();
|
|
255
257
|
};
|
|
256
258
|
const onPointerUp = (reason) => {
|
|
259
|
+
dragAwareDoubleClick.endPointerGesture(dragStarted);
|
|
257
260
|
window.removeEventListener('keydown', onKeyChange);
|
|
258
261
|
window.removeEventListener('keyup', onKeyChange);
|
|
259
262
|
if (dragStarted) {
|
|
@@ -317,6 +320,8 @@ const SelectedOutlinePolygonUnmemoized = ({ compositionHeight, compositionWidth,
|
|
|
317
320
|
clearDragOverrides,
|
|
318
321
|
compositionHeight,
|
|
319
322
|
compositionWidth,
|
|
323
|
+
containsSelection,
|
|
324
|
+
dragAwareDoubleClick,
|
|
320
325
|
editorShowGuides,
|
|
321
326
|
editorSnapping,
|
|
322
327
|
getAllDragOutlines,
|
|
@@ -337,12 +342,12 @@ const SelectedOutlinePolygonUnmemoized = ({ compositionHeight, compositionWidth,
|
|
|
337
342
|
if (target === undefined) {
|
|
338
343
|
return;
|
|
339
344
|
}
|
|
340
|
-
if (!onDoubleClickTarget(target, event.button)) {
|
|
345
|
+
if (!onDoubleClickTarget(target, event.button, dragAwareDoubleClick.consumePointerGestureWasDragged())) {
|
|
341
346
|
return;
|
|
342
347
|
}
|
|
343
348
|
event.preventDefault();
|
|
344
349
|
event.stopPropagation();
|
|
345
|
-
}, [getTarget, onDoubleClickTarget]);
|
|
350
|
+
}, [dragAwareDoubleClick, getTarget, onDoubleClickTarget]);
|
|
346
351
|
const onEffectDragOver = react_1.default.useCallback((event) => {
|
|
347
352
|
if (!(0, effect_drag_and_drop_1.hasEffectDragType)(event.dataTransfer)) {
|
|
348
353
|
return;
|
|
@@ -390,16 +395,14 @@ const SelectedOutlinePolygonUnmemoized = ({ compositionHeight, compositionWidth,
|
|
|
390
395
|
clientId: effectDrop.clientId,
|
|
391
396
|
});
|
|
392
397
|
}, [getEffectDropTarget]);
|
|
393
|
-
return (jsx_runtime_1.
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
}, onPointerDown: onPointerDown, onDoubleClick: onDoubleClick, onDragOver: onEffectDragOver, onDragLeave: onEffectDragLeave, onDrop: onEffectDrop }), jsx_runtime_1.jsx(ContextMenu_1.ContextMenuForTarget, { triggerRef: polygonRef, getItems: onContextMenuOpen, onOpenChange: onContextMenuOpenChange })
|
|
403
|
-
] }));
|
|
398
|
+
return (jsx_runtime_1.jsx("polygon", { ref: polygonRef, [should_clear_selection_on_pointer_down_1.PREVENT_CLEAR_SELECTION_ON_POINTER_DOWN_ATTR]: 'true', [exports.SELECTED_OUTLINE_KEY_ATTR]: outline.key, "data-remotion-directly-selected-outline": directlySelected ? 'true' : undefined, points: points, fill: effectDropHovered ? colors_1.TIMELINE_DROP_BLUE_ALPHA_12 : colors_1.TRANSPARENT, stroke: colors_1.BLUE, strokeOpacity: visible || effectDropHovered ? 1 : 0, strokeWidth: 2, vectorEffect: "non-scaling-stroke", pointerEvents: hasTarget ? 'all' : undefined, onPointerEnter: () => {
|
|
399
|
+
if (!dragging) {
|
|
400
|
+
onHoverChange(outline.key);
|
|
401
|
+
}
|
|
402
|
+
}, onPointerLeave: () => {
|
|
403
|
+
if (!dragging) {
|
|
404
|
+
onHoverChange(null);
|
|
405
|
+
}
|
|
406
|
+
}, onPointerDown: onPointerDown, onPointerDownCapture: dragAwareDoubleClick.beginPointerGesture, onDoubleClick: onDoubleClick, onDragOver: onEffectDragOver, onDragLeave: onEffectDragLeave, onDrop: onEffectDrop }));
|
|
404
407
|
};
|
|
405
408
|
exports.SelectedOutlinePolygon = react_1.default.memo(SelectedOutlinePolygonUnmemoized);
|
|
@@ -36,10 +36,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.SelectedOutlineRenderer = void 0;
|
|
37
37
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
38
38
|
const react_1 = __importStar(require("react"));
|
|
39
|
+
const timeline_node_path_key_1 = require("../helpers/timeline-node-path-key");
|
|
39
40
|
const timeline_sequence_hover_1 = require("../state/timeline-sequence-hover");
|
|
41
|
+
const ContextMenu_1 = require("./ContextMenu");
|
|
40
42
|
const selected_outline_measurement_1 = require("./selected-outline-measurement");
|
|
41
43
|
const selected_outline_order_1 = require("./selected-outline-order");
|
|
44
|
+
const SelectedOutlineEditingHandles_1 = require("./SelectedOutlineEditingHandles");
|
|
42
45
|
const SelectedOutlineElement_1 = require("./SelectedOutlineElement");
|
|
46
|
+
const SelectedOutlinePolygon_1 = require("./SelectedOutlinePolygon");
|
|
43
47
|
const SelectedOutlineSnapIndicators_1 = require("./SelectedOutlineSnapIndicators");
|
|
44
48
|
const SelectedOutlineTransformOriginHandle_1 = require("./SelectedOutlineTransformOriginHandle");
|
|
45
49
|
const SelectedOutlineUvControls_1 = require("./SelectedOutlineUvControls");
|
|
@@ -53,30 +57,47 @@ const emptyRenderState = {
|
|
|
53
57
|
outlines: [],
|
|
54
58
|
targets: [],
|
|
55
59
|
};
|
|
56
|
-
const SelectedOutlineHoverCleanup = ({ targets }) => {
|
|
57
|
-
const hoveredSequence = (0, timeline_sequence_hover_1.useTimelineSequenceHoverState)();
|
|
58
|
-
const setHoveredSequence = (0, timeline_sequence_hover_1.useSetTimelineSequenceHover)();
|
|
59
|
-
(0, react_1.useEffect)(() => {
|
|
60
|
-
if ((hoveredSequence === null || hoveredSequence === void 0 ? void 0 : hoveredSequence.source) === 'canvas' &&
|
|
61
|
-
!targets.some((target) => target.key === hoveredSequence.key)) {
|
|
62
|
-
setHoveredSequence((currentHover) => (currentHover === null || currentHover === void 0 ? void 0 : currentHover.source) === 'canvas' ? null : currentHover);
|
|
63
|
-
}
|
|
64
|
-
}, [hoveredSequence, setHoveredSequence, targets]);
|
|
65
|
-
return null;
|
|
66
|
-
};
|
|
67
60
|
const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth, dragging, getLatestOutlineTargetByKey, getOutlineTargets, onDraggingChange, onContextMenuOpenChange, onSelect, scale, sequences, updateOutlinesRef, }) => {
|
|
61
|
+
var _a;
|
|
68
62
|
const [renderState, setRenderState] = (0, react_1.useState)(emptyRenderState);
|
|
69
63
|
const overlayRef = (0, react_1.useRef)(null);
|
|
70
64
|
const resizeObserverRef = (0, react_1.useRef)(null);
|
|
71
65
|
const resizeObserverAnimationFrameRef = (0, react_1.useRef)(null);
|
|
72
66
|
const observedOutlineElementsRef = (0, react_1.useRef)(new Set());
|
|
67
|
+
const contextMenuOpenHandlersRef = (0, react_1.useRef)(new Map());
|
|
68
|
+
const registerContextMenuOpen = (0, react_1.useCallback)((key, handler) => {
|
|
69
|
+
if (handler === null) {
|
|
70
|
+
contextMenuOpenHandlersRef.current.delete(key);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
contextMenuOpenHandlersRef.current.set(key, handler);
|
|
74
|
+
}
|
|
75
|
+
}, []);
|
|
76
|
+
const getContextMenuOpenByKey = (0, react_1.useCallback)((key) => contextMenuOpenHandlersRef.current.get(key), []);
|
|
77
|
+
const getDelegatedContextMenuItems = (0, react_1.useCallback)((event) => {
|
|
78
|
+
var _a;
|
|
79
|
+
var _b;
|
|
80
|
+
if (!(event.target instanceof Element)) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
const polygon = event.target.closest(`polygon[${SelectedOutlinePolygon_1.SELECTED_OUTLINE_KEY_ATTR}]`);
|
|
84
|
+
if ((polygon === null || polygon === void 0 ? void 0 : polygon.ownerSVGElement) !== overlayRef.current) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
const key = polygon.getAttribute(SelectedOutlinePolygon_1.SELECTED_OUTLINE_KEY_ATTR);
|
|
88
|
+
return key === null ? false : ((_b = (_a = getContextMenuOpenByKey(key)) === null || _a === void 0 ? void 0 : _a()) !== null && _b !== void 0 ? _b : false);
|
|
89
|
+
}, [getContextMenuOpenByKey]);
|
|
90
|
+
const hoveredSequence = (0, timeline_sequence_hover_1.useTimelineSequenceHoverState)();
|
|
91
|
+
const setHoveredSequence = (0, timeline_sequence_hover_1.useSetTimelineSequenceHover)();
|
|
92
|
+
const hoveredNodePathKey = (_a = hoveredSequence === null || hoveredSequence === void 0 ? void 0 : hoveredSequence.nodePathKey) !== null && _a !== void 0 ? _a : null;
|
|
93
|
+
const hoveredTimelineNodePathKey = (hoveredSequence === null || hoveredSequence === void 0 ? void 0 : hoveredSequence.source) === 'timeline' ? hoveredNodePathKey : null;
|
|
73
94
|
const updateOutlines = (0, react_1.useCallback)(() => {
|
|
74
95
|
const targets = getOutlineTargets();
|
|
75
96
|
if (overlayRef.current === null || targets.length === 0) {
|
|
76
97
|
setRenderState((prevState) => prevState.targets.length === 0 ? prevState : emptyRenderState);
|
|
77
98
|
return;
|
|
78
99
|
}
|
|
79
|
-
const nextOutlines = (0, selected_outline_measurement_1.measureOutlines)(overlayRef.current, targets);
|
|
100
|
+
const nextOutlines = (0, selected_outline_measurement_1.measureOutlines)(overlayRef.current, targets, hoveredTimelineNodePathKey);
|
|
80
101
|
setRenderState((prevState) => {
|
|
81
102
|
const outlines = (0, selected_outline_measurement_1.outlinesAreEqual)(prevState.outlines, nextOutlines)
|
|
82
103
|
? prevState.outlines
|
|
@@ -86,7 +107,7 @@ const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth
|
|
|
86
107
|
}
|
|
87
108
|
return { outlines, targets };
|
|
88
109
|
});
|
|
89
|
-
}, [getOutlineTargets]);
|
|
110
|
+
}, [getOutlineTargets, hoveredTimelineNodePathKey]);
|
|
90
111
|
(0, react_1.useLayoutEffect)(() => {
|
|
91
112
|
updateOutlinesRef.current = updateOutlines;
|
|
92
113
|
updateOutlines();
|
|
@@ -149,6 +170,12 @@ const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth
|
|
|
149
170
|
const targetsByKey = (0, react_1.useMemo)(() => {
|
|
150
171
|
return new Map(renderState.targets.map((target) => [target.key, target]));
|
|
151
172
|
}, [renderState.targets]);
|
|
173
|
+
(0, react_1.useEffect)(() => {
|
|
174
|
+
if ((hoveredSequence === null || hoveredSequence === void 0 ? void 0 : hoveredSequence.source) === 'canvas' &&
|
|
175
|
+
!renderState.targets.some((target) => target.key === hoveredSequence.key)) {
|
|
176
|
+
setHoveredSequence((currentHover) => (currentHover === null || currentHover === void 0 ? void 0 : currentHover.source) === 'canvas' ? null : currentHover);
|
|
177
|
+
}
|
|
178
|
+
}, [hoveredSequence, renderState.targets, setHoveredSequence]);
|
|
152
179
|
// Reordering a captured SVG target can cancel the active pointer session.
|
|
153
180
|
const outlineRenderingOrderRef = (0, react_1.useRef)([]);
|
|
154
181
|
const outlinesForRendering = (0, react_1.useMemo)(() => {
|
|
@@ -176,6 +203,31 @@ const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth
|
|
|
176
203
|
const outlinesByKey = (0, react_1.useMemo)(() => {
|
|
177
204
|
return new Map(renderState.outlines.map((outline) => [outline.key, outline]));
|
|
178
205
|
}, [renderState.outlines]);
|
|
206
|
+
const { outlinesForEditingHandles, outlinesForTransformOrigin, outlinesForUvHandles, } = (0, react_1.useMemo)(() => {
|
|
207
|
+
const editingHandles = [];
|
|
208
|
+
const transformOrigin = [];
|
|
209
|
+
const uvHandles = [];
|
|
210
|
+
for (const outline of outlinesForRendering) {
|
|
211
|
+
const target = targetsByKey.get(outline.key);
|
|
212
|
+
if ((target === null || target === void 0 ? void 0 : target.containsSelection) === true ||
|
|
213
|
+
(target !== undefined &&
|
|
214
|
+
(0, timeline_node_path_key_1.timelineSequenceNodePathToKey)(target.nodePathInfo.sequenceSubscriptionKey) === hoveredNodePathKey)) {
|
|
215
|
+
editingHandles.push(outline);
|
|
216
|
+
}
|
|
217
|
+
if ((target === null || target === void 0 ? void 0 : target.selectedForUvHandles) === true) {
|
|
218
|
+
uvHandles.push(outline);
|
|
219
|
+
}
|
|
220
|
+
if ((target === null || target === void 0 ? void 0 : target.selectedForTransformOrigin) === true ||
|
|
221
|
+
(target === null || target === void 0 ? void 0 : target.selectedForRotation) === true) {
|
|
222
|
+
transformOrigin.push(outline);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return {
|
|
226
|
+
outlinesForEditingHandles: editingHandles,
|
|
227
|
+
outlinesForTransformOrigin: transformOrigin,
|
|
228
|
+
outlinesForUvHandles: uvHandles,
|
|
229
|
+
};
|
|
230
|
+
}, [hoveredNodePathKey, outlinesForRendering, targetsByKey]);
|
|
179
231
|
const targetsRef = (0, react_1.useRef)(renderState.targets);
|
|
180
232
|
const outlinesByKeyRef = (0, react_1.useRef)(outlinesByKey);
|
|
181
233
|
(0, react_1.useLayoutEffect)(() => {
|
|
@@ -220,6 +272,6 @@ const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth
|
|
|
220
272
|
const updateSnapPointsRef = (0, react_1.useRef)(() => undefined);
|
|
221
273
|
const onSnapPointsChange = (0, react_1.useCallback)((snapPoints) => updateSnapPointsRef.current(snapPoints), []);
|
|
222
274
|
return (jsx_runtime_1.jsxs("svg", { ref: overlayRef, style: outlineContainer, width: "100%", height: "100%", "aria-hidden": "true", children: [
|
|
223
|
-
jsx_runtime_1.jsx(
|
|
275
|
+
jsx_runtime_1.jsx(ContextMenu_1.ContextMenuForTarget, { triggerRef: overlayRef, getItems: getDelegatedContextMenuItems, onOpenChange: onContextMenuOpenChange }), jsx_runtime_1.jsx(SelectedOutlineSnapIndicators_1.SelectedOutlineSnapIndicators, { compositionHeight: compositionHeight, compositionWidth: compositionWidth, scale: scale, updateSnapPointsRef: updateSnapPointsRef }), outlinesForRendering.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineElement_1.SelectedOutlineElement, { compositionHeight: compositionHeight, compositionWidth: compositionWidth, dragging: dragging, getAllDragOutlines: getAllDragOutlines, getAllDragTargets: getAllDragTargets, getLatestTargetByKey: getLatestOutlineTargetByKey, outline: outline, onDraggingChange: onDraggingChange, onSnapPointsChange: onSnapPointsChange, onSelect: onSelect, registerContextMenuOpen: registerContextMenuOpen, scale: scale, layoutTarget: targetsByKey.get(outline.key) }, outline.key))), outlinesForEditingHandles.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineEditingHandles_1.SelectedOutlineEditingHandles, { dragging: dragging, getAllRotationDragTargets: getAllRotationDragTargets, getAllScaleDragTargets: getAllScaleDragTargets, getContextMenuOpenByKey: getContextMenuOpenByKey, getLatestTargetByKey: getLatestOutlineTargetByKey, layoutTarget: targetsByKey.get(outline.key), onContextMenuOpenChange: onContextMenuOpenChange, onDraggingChange: onDraggingChange, onSelect: onSelect, outline: outline }, `${outline.key}-editing-handles`))), outlinesForUvHandles.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineUvControls_1.SelectedOutlineUvHandleConnectionLayer, { outline: outline, layoutTarget: targetsByKey.get(outline.key) }, `${outline.key}-uv-connection-lines`))), outlinesForUvHandles.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineUvControls_1.SelectedOutlineUvHandleCircleLayer, { onDraggingChange: onDraggingChange, onSelect: onSelect, outline: outline, layoutTarget: targetsByKey.get(outline.key) }, `${outline.key}-uv-handles`))), outlinesForTransformOrigin.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineTransformOriginHandle_1.SelectedOutlineTransformOriginHandle, { outline: outline, onDraggingChange: onDraggingChange, getLatestTargetByKey: getLatestOutlineTargetByKey, layoutTarget: targetsByKey.get(outline.key) }, `${outline.key}-transform-origin`)))] }));
|
|
224
276
|
};
|
|
225
277
|
exports.SelectedOutlineRenderer = react_1.default.memo(SelectedOutlineRendererUnmemoized);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
type SettingsTab = 'apps' | 'rendering' | 'studio' | 'license';
|
|
2
|
+
type SettingsTab = 'apps' | 'rendering' | 'studio' | 'packages' | 'shortcuts' | 'skills' | 'license';
|
|
3
3
|
export declare const SettingsModal: React.FC<{
|
|
4
4
|
readonly initialTab: SettingsTab;
|
|
5
5
|
readonly initialPublicLicenseKey: string | null;
|
|
@@ -3,13 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SettingsModal = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
|
+
const browser_studio_operations_1 = require("../helpers/browser-studio-operations");
|
|
6
7
|
const apps_1 = require("../icons/apps");
|
|
7
|
-
const
|
|
8
|
+
const keyboard_1 = require("../icons/keyboard");
|
|
9
|
+
const license_1 = require("../icons/license");
|
|
10
|
+
const package_1 = require("../icons/package");
|
|
8
11
|
const remotion_triangle_1 = require("../icons/remotion-triangle");
|
|
12
|
+
const skills_1 = require("../icons/skills");
|
|
9
13
|
const video_1 = require("../icons/video");
|
|
10
14
|
const modals_1 = require("../state/modals");
|
|
11
15
|
const ConfigureDefaultEditorModal_1 = require("./ConfigureDefaultEditorModal");
|
|
12
16
|
const ConfigureLicenseModal_1 = require("./ConfigureLicenseModal");
|
|
17
|
+
const InstallPackage_1 = require("./InstallPackage");
|
|
18
|
+
const KeyboardShortcutsSettings_1 = require("./KeyboardShortcutsSettings");
|
|
13
19
|
const is_menu_item_1 = require("./Menu/is-menu-item");
|
|
14
20
|
const ModalHeader_1 = require("./ModalHeader");
|
|
15
21
|
const DismissableModal_1 = require("./NewComposition/DismissableModal");
|
|
@@ -17,6 +23,7 @@ const RenderingSettings_1 = require("./RenderingSettings");
|
|
|
17
23
|
const render_modals_1 = require("./RenderModal/render-modals");
|
|
18
24
|
const SettingsContext_1 = require("./SettingsContext");
|
|
19
25
|
const SettingsModalFooter_1 = require("./SettingsModalFooter");
|
|
26
|
+
const SkillsSettings_1 = require("./SkillsSettings");
|
|
20
27
|
const StudioSettings_1 = require("./StudioSettings");
|
|
21
28
|
const vertical_1 = require("./Tabs/vertical");
|
|
22
29
|
const hiddenPanel = {
|
|
@@ -27,21 +34,38 @@ const settingsOptionsPanel = {
|
|
|
27
34
|
boxSizing: 'border-box',
|
|
28
35
|
paddingBottom: 16,
|
|
29
36
|
};
|
|
37
|
+
const settingsLeftSidebar = {
|
|
38
|
+
...render_modals_1.leftSidebar,
|
|
39
|
+
paddingLeft: 8,
|
|
40
|
+
};
|
|
30
41
|
const appsIcon = {
|
|
31
42
|
...render_modals_1.icon,
|
|
32
|
-
|
|
33
|
-
|
|
43
|
+
flexShrink: 0,
|
|
44
|
+
height: 24,
|
|
45
|
+
width: 24,
|
|
34
46
|
};
|
|
35
|
-
const
|
|
36
|
-
...render_modals_1.
|
|
47
|
+
const skillsIcon = {
|
|
48
|
+
...render_modals_1.icon,
|
|
49
|
+
flexShrink: 0,
|
|
37
50
|
height: 20,
|
|
38
51
|
width: 20,
|
|
39
52
|
};
|
|
53
|
+
const keyboardIcon = {
|
|
54
|
+
...render_modals_1.icon,
|
|
55
|
+
height: 16,
|
|
56
|
+
width: 16,
|
|
57
|
+
};
|
|
40
58
|
const SettingsModal = ({ initialPublicLicenseKey, initialTab }) => {
|
|
41
59
|
const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
|
|
42
60
|
const { setPublicLicenseKey } = (0, SettingsContext_1.useSettings)();
|
|
61
|
+
const isBrowserStudio = (0, browser_studio_operations_1.getBrowserStudioOperations)() !== null;
|
|
62
|
+
const packageManager = window.remotion_packageManager === 'unknown'
|
|
63
|
+
? null
|
|
64
|
+
: window.remotion_packageManager;
|
|
65
|
+
const showPackages = (0, browser_studio_operations_1.canInstallPackages)() && (isBrowserStudio || packageManager !== null);
|
|
43
66
|
const [tab, setTab] = (0, react_1.useState)(initialTab);
|
|
44
67
|
const [openedTabs, setOpenedTabs] = (0, react_1.useState)([initialTab]);
|
|
68
|
+
const [packagesFooterContainer, setPackagesFooterContainer] = (0, react_1.useState)(null);
|
|
45
69
|
const dismiss = (0, react_1.useCallback)(() => {
|
|
46
70
|
setSelectedModal(null);
|
|
47
71
|
}, [setSelectedModal]);
|
|
@@ -59,7 +83,6 @@ const SettingsModal = ({ initialPublicLicenseKey, initialTab }) => {
|
|
|
59
83
|
}, [initialPublicLicenseKey, setPublicLicenseKey]);
|
|
60
84
|
return (jsx_runtime_1.jsx(DismissableModal_1.DismissableModal, { panelStyle: render_modals_1.outerModalStyle, children: jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
61
85
|
jsx_runtime_1.jsx(ModalHeader_1.ModalHeader, { title: "Settings", onClose: dismiss }), jsx_runtime_1.jsxs("div", { style: render_modals_1.horizontalLayout, children: [
|
|
62
|
-
jsx_runtime_1.jsxs("div", { style:
|
|
63
|
-
] }) }));
|
|
86
|
+
jsx_runtime_1.jsxs("div", { style: settingsLeftSidebar, children: [isBrowserStudio ? null : (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'rendering', onClick: () => selectTab('rendering'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(video_1.FilmIcon, { color: color, style: render_modals_1.icon }) })), children: "Defaults" })), isBrowserStudio ? null : (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'studio', onClick: () => selectTab('studio'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(remotion_triangle_1.RemotionTriangleIcon, { color: color, style: render_modals_1.icon }) })), children: "Studio" })), jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'shortcuts', onClick: () => selectTab('shortcuts'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(keyboard_1.KeyboardIcon, { color: color, style: keyboardIcon }) })), children: "Shortcuts" }), showPackages ? (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'packages', onClick: () => selectTab('packages'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(package_1.PackageIcon, { color: color, style: render_modals_1.icon }) })), children: "Packages" })) : null, isBrowserStudio ? null : (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'skills', onClick: () => selectTab('skills'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(skills_1.SkillsIcon, { color: color, style: skillsIcon }) })), children: "Skills" })), isBrowserStudio ? null : (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'apps', onClick: () => selectTab('apps'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(apps_1.AppsIcon, { color: color, style: appsIcon }) })), children: "Apps" })), isBrowserStudio ? null : (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'license', onClick: () => selectTab('license'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(license_1.LicenseIcon, { color: color, style: render_modals_1.icon }) })), children: "License" }))] }), openedTabs.includes('packages') ? (jsx_runtime_1.jsx("div", { style: tab === 'packages' ? render_modals_1.optionsPanel : hiddenPanel, children: jsx_runtime_1.jsx(InstallPackage_1.InstallPackageSettings, { footerContainer: packagesFooterContainer, packageManager: packageManager }) })) : null, openedTabs.includes('apps') ? (jsx_runtime_1.jsx("div", { style: tab === 'apps' ? settingsOptionsPanel : hiddenPanel, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: jsx_runtime_1.jsx(ConfigureDefaultEditorModal_1.DefaultEditorSettings, {}) })) : null, openedTabs.includes('license') ? (jsx_runtime_1.jsx("div", { style: tab === 'license' ? settingsOptionsPanel : hiddenPanel, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: jsx_runtime_1.jsx(ConfigureLicenseModal_1.LicenseSettings, {}) })) : null, openedTabs.includes('skills') ? (jsx_runtime_1.jsx("div", { style: tab === 'skills' ? settingsOptionsPanel : hiddenPanel, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: jsx_runtime_1.jsx(SkillsSettings_1.SkillsSettings, {}) })) : null, openedTabs.includes('shortcuts') ? (jsx_runtime_1.jsx("div", { style: tab === 'shortcuts' ? settingsOptionsPanel : hiddenPanel, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: jsx_runtime_1.jsx(KeyboardShortcutsSettings_1.KeyboardShortcutsSettings, {}) })) : null, openedTabs.includes('rendering') ? (jsx_runtime_1.jsx("div", { style: tab === 'rendering' ? settingsOptionsPanel : hiddenPanel, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: jsx_runtime_1.jsx(RenderingSettings_1.RenderingSettings, {}) })) : null, openedTabs.includes('studio') ? (jsx_runtime_1.jsx("div", { style: tab === 'studio' ? settingsOptionsPanel : hiddenPanel, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: jsx_runtime_1.jsx(StudioSettings_1.StudioSettings, {}) })) : null] }), tab === 'packages' ? (jsx_runtime_1.jsx("div", { ref: setPackagesFooterContainer })) : isBrowserStudio ? null : (jsx_runtime_1.jsx(SettingsModalFooter_1.SettingsModalFooter, {}))] }) }));
|
|
64
87
|
};
|
|
65
88
|
exports.SettingsModal = SettingsModal;
|
|
@@ -5,6 +5,7 @@ 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 InspectorOpenInEditor_1 = require("./InspectorOpenInEditor");
|
|
8
|
+
const layout_1 = require("./layout");
|
|
8
9
|
const ModalFooter_1 = require("./ModalFooter");
|
|
9
10
|
const footer = {
|
|
10
11
|
flex: 'none',
|
|
@@ -38,7 +39,7 @@ const SettingsModalFooter = () => {
|
|
|
38
39
|
};
|
|
39
40
|
}, []);
|
|
40
41
|
return (jsx_runtime_1.jsx(ModalFooter_1.ModalFooterContainer, { style: footer, children: jsx_runtime_1.jsx("div", { style: footerRow, children: jsx_runtime_1.jsxs("div", { style: configFileHint, children: ["Changes save to",
|
|
41
|
-
jsx_runtime_1.jsx(InspectorOpenInEditor_1.InspectorOpenInEditor, { locationType: null, location: configFileLocation, label: jsx_runtime_1.jsx("strong", { style: configFileName, children: "remotion.config.ts" }) })
|
|
42
|
+
jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(InspectorOpenInEditor_1.InspectorOpenInEditor, { locationType: null, location: configFileLocation, label: jsx_runtime_1.jsx("strong", { style: configFileName, children: "remotion.config.ts" }) })
|
|
42
43
|
] }) }) }));
|
|
43
44
|
};
|
|
44
45
|
exports.SettingsModalFooter = SettingsModalFooter;
|