@remotion/studio 4.0.516 → 4.0.518
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/AssetSelector.js +63 -22
- package/dist/components/AssetSelectorItem.d.ts +2 -1
- package/dist/components/AssetSelectorItem.js +41 -10
- package/dist/components/Canvas.js +15 -12
- package/dist/components/CanvasCaptureDropHandler.d.ts +4 -0
- package/dist/components/CanvasCaptureDropHandler.js +42 -0
- package/dist/components/CanvasOrLoading.js +4 -3
- package/dist/components/CaptionInspector.js +1 -1
- package/dist/components/CaptionTextEditor.js +32 -8
- package/dist/components/CheckboardToggle.js +1 -1
- package/dist/components/Checkbox.d.ts +0 -1
- package/dist/components/Checkbox.js +2 -19
- package/dist/components/CompositionContextButton.js +2 -1
- package/dist/components/CompositionSelector.js +1 -1
- package/dist/components/ConfigureLicenseModal.js +79 -46
- package/dist/components/CurrentAsset.d.ts +1 -1
- package/dist/components/CurrentAsset.js +9 -4
- package/dist/components/Editor.js +2 -1
- package/dist/components/EditorContent.js +11 -5
- package/dist/components/EditorContexts.js +2 -1
- package/dist/components/EditorRuler/Ruler.d.ts +1 -0
- package/dist/components/EditorRuler/Ruler.js +9 -8
- package/dist/components/EditorRuler/index.d.ts +1 -0
- package/dist/components/EditorRuler/index.js +3 -4
- package/dist/components/EditorRuler/use-is-ruler-visible.d.ts +1 -1
- package/dist/components/EditorRuler/use-is-ruler-visible.js +8 -2
- package/dist/components/ElementInstallConfirmation.d.ts +5 -0
- package/dist/components/ElementInstallConfirmation.js +25 -1
- package/dist/components/ElementLibraryModal.d.ts +5 -0
- package/dist/components/ElementLibraryModal.js +40 -0
- package/dist/components/FilePreview.js +71 -0
- package/dist/components/InlineCaptionInspector.js +13 -2
- package/dist/components/InlineEditableTitle.js +2 -2
- package/dist/components/InspectorPanel/CompositionInspector.js +11 -38
- package/dist/components/InspectorPanel/CompositionInspectorHeader.js +2 -2
- package/dist/components/InspectorPanel/CompositionMetadata.js +11 -4
- package/dist/components/InspectorPanel/EasingInspector.js +2 -2
- package/dist/components/InspectorPanel/ElementLibraryButton.d.ts +2 -0
- package/dist/components/InspectorPanel/ElementLibraryButton.js +139 -0
- package/dist/components/InspectorPanel/KeyframeInspector.js +1 -1
- package/dist/components/InspectorPanel/SequenceInspectorHeader.js +12 -5
- package/dist/components/InspectorPanel/SequenceSelectionInspector.js +1 -3
- package/dist/components/InspectorPanel/common.d.ts +0 -1
- package/dist/components/InspectorPanel/common.js +3 -7
- package/dist/components/InspectorPanel/inspector-selection.d.ts +2 -2
- package/dist/components/InspectorPanel/styles.d.ts +0 -1
- package/dist/components/InspectorPanel/styles.js +3 -4
- package/dist/components/InspectorPanel/use-track-for-selection.d.ts +1 -2
- package/dist/components/InspectorSequenceSection.d.ts +1 -2
- package/dist/components/InspectorSourceLocation.js +1 -1
- package/dist/components/Menu/MenuItem.js +15 -6
- package/dist/components/MenuToolbar.js +7 -3
- package/dist/components/Modals.js +51 -1
- package/dist/components/PlaybackRateSelector.js +3 -6
- package/dist/components/Preview.js +83 -5
- package/dist/components/PreviewToolbar.js +10 -4
- package/dist/components/PreviewToolbarOverflowButton.d.ts +1 -0
- package/dist/components/PreviewToolbarOverflowButton.js +9 -2
- package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.d.ts +2 -0
- package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +28 -8
- package/dist/components/RadioButton.d.ts +6 -0
- package/dist/components/RadioButton.js +62 -0
- package/dist/components/RenderButton.js +2 -1
- package/dist/components/RulersAndGuidesToggle.d.ts +3 -1
- package/dist/components/RulersAndGuidesToggle.js +18 -7
- package/dist/components/SelectedOutlineKeyboardControls.d.ts +2 -2
- package/dist/components/SelectedOutlineOverlay.d.ts +1 -3
- package/dist/components/SelectedOutlineOverlay.js +21 -17
- package/dist/components/SelectedOutlinePolygon.d.ts +1 -2
- package/dist/components/SelectedOutlineRenderer.d.ts +2 -3
- package/dist/components/SelectedOutlineRenderer.js +9 -78
- package/dist/components/SelectedOutlineUvControls.d.ts +1 -1
- package/dist/components/SettingsModal.js +1 -1
- package/dist/components/SettingsModalFooter.d.ts +3 -1
- package/dist/components/SettingsModalFooter.js +19 -4
- package/dist/components/ShowPixelGridProvider.d.ts +4 -0
- package/dist/components/ShowPixelGridProvider.js +24 -0
- package/dist/components/SidebarCollapserControls.js +2 -2
- package/dist/components/SidebarRenderButton.js +2 -1
- package/dist/components/Timeline/Timeline.js +41 -0
- package/dist/components/Timeline/TimelineClipboardKeybindings.d.ts +6 -7
- package/dist/components/Timeline/TimelineDragHandler.js +11 -4
- package/dist/components/Timeline/TimelineKeyframeControls.d.ts +1 -2
- package/dist/components/Timeline/TimelinePlayCursorSyncer.js +4 -2
- package/dist/components/Timeline/TimelineSelection.d.ts +29 -66
- package/dist/components/Timeline/TimelineSelection.js +30 -170
- package/dist/components/Timeline/TimelineSequenceItem.d.ts +1 -0
- package/dist/components/Timeline/TimelineSequenceItem.js +8 -6
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +3 -4
- package/dist/components/Timeline/delete-selected-timeline-item.d.ts +3 -4
- package/dist/components/Timeline/duplicate-selected-timeline-item.d.ts +3 -4
- package/dist/components/Timeline/find-track-for-node-path-info.d.ts +1 -1
- package/dist/components/Timeline/keyframe-clipboard.d.ts +2 -3
- package/dist/components/Timeline/reset-selected-timeline-props.d.ts +2 -3
- package/dist/components/Timeline/sequence-prop-clipboard.d.ts +2 -3
- package/dist/components/Timeline/split-selected-timeline-item.d.ts +2 -3
- package/dist/components/Timeline/timeline-expanded-filter.d.ts +1 -2
- package/dist/components/Timeline/timeline-scroll-logic.d.ts +7 -5
- package/dist/components/Timeline/timeline-scroll-logic.js +12 -7
- package/dist/components/Timeline/update-selected-easing.d.ts +7 -7
- package/dist/components/Timeline/use-timeline-asset-drop.js +24 -1
- package/dist/components/Timeline/use-timeline-keyframe-drag.d.ts +6 -7
- package/dist/components/WebMcp.d.ts +2 -0
- package/dist/components/WebMcp.js +945 -0
- package/dist/components/canvas-capture-drop.d.ts +4 -0
- package/dist/components/canvas-capture-drop.js +22 -0
- package/dist/components/composition-menu-items.js +26 -0
- package/dist/components/selected-outline-geometry.d.ts +2 -21
- package/dist/components/selected-outline-geometry.js +5 -16
- package/dist/components/selected-outline-measurement.d.ts +8 -37
- package/dist/components/selected-outline-measurement.js +1 -231
- package/dist/components/selected-outline-types.d.ts +2 -15
- package/dist/components/selected-outline-uv.js +3 -106
- package/dist/esm/{chunk-w4244j4n.js → chunk-7prjt5n5.js} +32831 -26820
- package/dist/esm/internals.mjs +32831 -26820
- package/dist/esm/previewEntry.mjs +17304 -11293
- package/dist/esm/renderEntry.mjs +1 -1
- package/dist/helpers/calculate-timeline.d.ts +1 -7
- package/dist/helpers/calculate-timeline.js +2 -146
- package/dist/helpers/create-folder-tree.js +16 -1
- package/dist/helpers/editor-ruler.js +6 -5
- package/dist/helpers/format-file-location.d.ts +8 -0
- package/dist/helpers/format-file-location.js +14 -3
- package/dist/helpers/get-asset-metadata.d.ts +19 -0
- package/dist/helpers/get-asset-metadata.js +51 -6
- package/dist/helpers/get-connected-compositions.d.ts +1 -6
- package/dist/helpers/get-connected-compositions.js +2 -8
- package/dist/helpers/get-sequence-visible-range.d.ts +1 -5
- package/dist/helpers/get-sequence-visible-range.js +6 -51
- package/dist/helpers/get-timeline-max-zoom.d.ts +8 -0
- package/dist/helpers/get-timeline-max-zoom.js +17 -6
- package/dist/helpers/get-timeline-nestedness.d.ts +1 -2
- package/dist/helpers/get-timeline-nestedness.js +2 -12
- package/dist/helpers/get-timeline-sequence-sort-key.d.ts +2 -22
- package/dist/helpers/get-timeline-sequence-sort-key.js +2 -16
- package/dist/helpers/hoverable.d.ts +1 -0
- package/dist/helpers/hoverable.js +4 -1
- package/dist/helpers/is-current-selected-still.js +4 -2
- package/dist/helpers/sort-by-nonce-history.d.ts +1 -5
- package/dist/helpers/sort-by-nonce-history.js +3 -148
- package/dist/helpers/timeline-node-path-key.d.ts +1 -2
- package/dist/helpers/timeline-node-path-key.js +2 -2
- package/dist/helpers/use-menu-structure.js +20 -0
- package/dist/icons/enter.d.ts +4 -0
- package/dist/icons/enter.js +10 -0
- package/dist/state/editor-pixel-grid.d.ts +8 -0
- package/dist/state/editor-pixel-grid.js +18 -0
- package/dist/state/modals.d.ts +4 -0
- package/dist/state/playbackrate.d.ts +1 -0
- package/dist/state/playbackrate.js +4 -1
- package/package.json +14 -12
- package/dist/components/selected-outline-order.d.ts +0 -12
- package/dist/components/selected-outline-order.js +0 -251
- package/dist/helpers/get-box-quads-polyfill-internals.d.ts +0 -82
- package/dist/helpers/get-box-quads-polyfill-internals.js +0 -2403
- package/dist/helpers/get-box-quads-ponyfill.d.ts +0 -10
- package/dist/helpers/get-box-quads-ponyfill.js +0 -23
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RadioButton = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const colors_1 = require("../helpers/colors");
|
|
6
|
+
const hoverable_1 = require("../helpers/hoverable");
|
|
7
|
+
const row = {
|
|
8
|
+
...(0, hoverable_1.hoverableStyle)({
|
|
9
|
+
idleBackground: colors_1.TRANSPARENT,
|
|
10
|
+
hoverBackground: (0, colors_1.getBackgroundFromHoverState)({
|
|
11
|
+
hovered: true,
|
|
12
|
+
selected: false,
|
|
13
|
+
}),
|
|
14
|
+
idleColor: colors_1.LIGHT_TEXT,
|
|
15
|
+
hoverColor: colors_1.WHITE,
|
|
16
|
+
}),
|
|
17
|
+
alignItems: 'center',
|
|
18
|
+
appearance: 'none',
|
|
19
|
+
border: 'none',
|
|
20
|
+
borderRadius: 4,
|
|
21
|
+
boxSizing: 'border-box',
|
|
22
|
+
cursor: 'default',
|
|
23
|
+
display: 'flex',
|
|
24
|
+
fontFamily: 'sans-serif',
|
|
25
|
+
fontSize: 14,
|
|
26
|
+
gap: 8,
|
|
27
|
+
lineHeight: '20px',
|
|
28
|
+
margin: '5px -8px',
|
|
29
|
+
padding: '4px 8px',
|
|
30
|
+
textAlign: 'left',
|
|
31
|
+
userSelect: 'none',
|
|
32
|
+
width: 'calc(100% + 16px)',
|
|
33
|
+
};
|
|
34
|
+
const circle = {
|
|
35
|
+
alignItems: 'center',
|
|
36
|
+
border: `1px solid ${colors_1.CURRENT_COLOR}`,
|
|
37
|
+
borderRadius: '50%',
|
|
38
|
+
boxSizing: 'border-box',
|
|
39
|
+
display: 'flex',
|
|
40
|
+
flexShrink: 0,
|
|
41
|
+
height: 20,
|
|
42
|
+
justifyContent: 'center',
|
|
43
|
+
width: 20,
|
|
44
|
+
};
|
|
45
|
+
const bullet = {
|
|
46
|
+
backgroundColor: colors_1.CURRENT_COLOR,
|
|
47
|
+
borderRadius: '50%',
|
|
48
|
+
height: 8,
|
|
49
|
+
width: 8,
|
|
50
|
+
};
|
|
51
|
+
const label = {
|
|
52
|
+
color: 'inherit',
|
|
53
|
+
fontFamily: 'sans-serif',
|
|
54
|
+
fontSize: 14,
|
|
55
|
+
lineHeight: '20px',
|
|
56
|
+
};
|
|
57
|
+
const RadioButton = ({ checked, children, onClick }) => {
|
|
58
|
+
return (jsx_runtime_1.jsxs("button", { "aria-checked": checked, className: `${hoverable_1.HOVERABLE_CLASS_NAME} ${hoverable_1.FOCUS_VISIBLE_ONLY_CLASS_NAME}`, onClick: onClick, role: "radio", style: row, type: "button", children: [
|
|
59
|
+
jsx_runtime_1.jsx("span", { style: circle, children: checked ? jsx_runtime_1.jsx("span", { style: bullet }) : null }), jsx_runtime_1.jsx("span", { style: label, children: children })
|
|
60
|
+
] }));
|
|
61
|
+
};
|
|
62
|
+
exports.RadioButton = RadioButton;
|
|
@@ -142,6 +142,7 @@ const RenderButtonInner = ({ readOnlyStudio, size: controlSize = 'default', narr
|
|
|
142
142
|
};
|
|
143
143
|
}, [controlSize]);
|
|
144
144
|
const video = remotion_1.Internals.useVideo();
|
|
145
|
+
const { canvasContent } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
|
|
145
146
|
const { getCurrentFrame } = player_1.PlayerInternals.usePlayerMethods();
|
|
146
147
|
const { props } = (0, react_1.useContext)(remotion_1.Internals.EditorPropsContext);
|
|
147
148
|
// Read the frame when the modal opens instead of subscribing this button to
|
|
@@ -387,7 +388,7 @@ const RenderButtonInner = ({ readOnlyStudio, size: controlSize = 'default', narr
|
|
|
387
388
|
showRenderLabel,
|
|
388
389
|
tooltip,
|
|
389
390
|
]);
|
|
390
|
-
if (!video) {
|
|
391
|
+
if (!video || (canvasContent === null || canvasContent === void 0 ? void 0 : canvasContent.type) !== 'composition') {
|
|
391
392
|
return null;
|
|
392
393
|
}
|
|
393
394
|
return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
@@ -7,17 +7,28 @@ const colors_1 = require("../helpers/colors");
|
|
|
7
7
|
const editor_guides_1 = require("../state/editor-guides");
|
|
8
8
|
const editor_rulers_1 = require("../state/editor-rulers");
|
|
9
9
|
const ControlButton_1 = require("./ControlButton");
|
|
10
|
-
const RulersAndGuidesToggle = () => {
|
|
10
|
+
const RulersAndGuidesToggle = ({ showGuides }) => {
|
|
11
11
|
const { editorShowGuides, setEditorShowGuides } = (0, react_1.useContext)(editor_guides_1.EditorShowGuidesContext);
|
|
12
12
|
const { editorShowRulers, setEditorShowRulers } = (0, react_1.useContext)(editor_rulers_1.EditorShowRulersContext);
|
|
13
|
-
const rulersOrGuidesAreVisible = editorShowRulers || editorShowGuides;
|
|
13
|
+
const rulersOrGuidesAreVisible = editorShowRulers || (showGuides && editorShowGuides);
|
|
14
14
|
const onClick = (0, react_1.useCallback)(() => {
|
|
15
15
|
setEditorShowRulers(() => !rulersOrGuidesAreVisible);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
if (showGuides) {
|
|
17
|
+
setEditorShowGuides(() => !rulersOrGuidesAreVisible);
|
|
18
|
+
}
|
|
19
|
+
}, [
|
|
20
|
+
rulersOrGuidesAreVisible,
|
|
21
|
+
setEditorShowGuides,
|
|
22
|
+
setEditorShowRulers,
|
|
23
|
+
showGuides,
|
|
24
|
+
]);
|
|
25
|
+
const accessibilityLabel = showGuides
|
|
26
|
+
? rulersOrGuidesAreVisible
|
|
27
|
+
? 'Hide rulers and guides'
|
|
28
|
+
: 'Show rulers and guides'
|
|
29
|
+
: editorShowRulers
|
|
30
|
+
? 'Hide rulers'
|
|
31
|
+
: 'Show rulers';
|
|
21
32
|
return (jsx_runtime_1.jsx(ControlButton_1.ControlButton, { title: accessibilityLabel, "aria-label": accessibilityLabel, "aria-pressed": rulersOrGuidesAreVisible, onClick: onClick, children: (color) => (jsx_runtime_1.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 576 512", style: { width: 18, height: 18 }, "aria-hidden": "true", focusable: "false", children: jsx_runtime_1.jsx("path", { fill: rulersOrGuidesAreVisible ? colors_1.BLUE : color, d: "M525.9 154.2L186.5 493.6c-6.2 6.2-16.4 6.2-22.6 0L50.7 380.5c-6.2-6.2-6.2-16.4 0-22.6l33.9-33.9 56.6 56.6c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-56.6-56.6 39.6-39.6 33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-33.9-33.9 39.6-39.6 56.6 56.6c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-56.6-56.6 39.6-39.6 33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-33.9-33.9 39.6-39.6 56.6 56.6c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-56.6-56.6 33.9-33.9c6.2-6.2 16.4-6.2 22.6 0L525.9 131.5c6.2 6.2 6.2 16.4 0 22.6zM73.3 289.9L28.1 335.2c-18.7 18.7-18.7 49.1 0 67.9L141.2 516.2c18.7 18.7 49.1 18.7 67.9 0L548.5 176.8c18.7-18.7 18.7-49.1 0-67.9L435.4-4.2C416.6-23 386.2-23 367.5-4.2 77.1 286.2 140.3 223 73.3 289.9z" }) })) }));
|
|
22
33
|
};
|
|
23
34
|
exports.RulersAndGuidesToggle = RulersAndGuidesToggle;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import type { CanvasSelectableOutline } from '@remotion/canvas';
|
|
1
2
|
import type React from 'react';
|
|
2
|
-
import type { getSequencesWithSelectableOutlines } from './selected-outline-measurement';
|
|
3
3
|
import { type SelectedOutlineTarget } from './selected-outline-types';
|
|
4
4
|
export declare const SelectedOutlineKeyboardControls: React.FC<{
|
|
5
5
|
readonly getLatestOutlineTargetByKey: (key: string) => SelectedOutlineTarget | undefined;
|
|
6
|
-
readonly getSelectableOutlines: () =>
|
|
6
|
+
readonly getSelectableOutlines: () => readonly CanvasSelectableOutline[];
|
|
7
7
|
}>;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { orderOutlinesForRendering } from './selected-outline-order';
|
|
3
|
-
export { orderOutlinesForRendering };
|
|
4
2
|
export { applySelectedOutlineDragAxisLock, applySelectedOutlineTransformOriginAxisLock, compensateTranslateForTransformOrigin, getSelectedOutline3DRotationDragValues, getSelectedOutlineActiveSchema, getSelectedOutlineCropDragChanges, getSelectedOutlineCropDragValues, getSelectedOutlineCropFollowingTransformOrigin, getSelectedOutlineDragChanges, getSelectedOutlineDragValues, getSelectedOutlineKeyboardNudgeDelta, getSelectedOutlineKeyboardNudgeDeltas, getSelectedOutlineRotationDragChanges, getSelectedOutlineRotationDragStates, getSelectedOutlineRotationDragValues, getSelectedOutlineScaleDragChanges, getSelectedOutlineScaleDragStates, getSelectedOutlineScaleDragValues, getSelectedOutlineScaleEdgeInfo, getSelectedOutlineTransformOriginDragChanges, getSelectedOutlineTransformOriginLockedAxis, isSelectedOutlineDragPastThreshold, selectedOutlineTransformOriginSnapThresholdPx, selectedOutlineUvSnapThresholdPx, snapSelectedOutlineRotationDeltaDegrees, snapSelectedOutlineTransformOriginUv, snapSelectedOutlineUv, } from './selected-outline-drag';
|
|
5
|
-
export { getOutlineSelectionInteraction, getSelectedCropInfo, getSelectedEffectFieldsBySequenceKey, getSelectedOutlineRotationCornerInfo, getSelectedOutlineRotationDeltaDegrees, getSelectedOutlineRotationPivot, getSelectedSequenceKeys,
|
|
3
|
+
export { getOutlineSelectionInteraction, getSelectedCropInfo, getSelectedEffectFieldsBySequenceKey, getSelectedOutlineRotationCornerInfo, getSelectedOutlineRotationDeltaDegrees, getSelectedOutlineRotationPivot, getSelectedSequenceKeys, } from './selected-outline-measurement';
|
|
6
4
|
export { selectedOutlineDragThresholdPx } from './selected-outline-types';
|
|
7
5
|
export type { SelectedOutlineDragState, SelectedOutlineRotationDragState, SelectedOutlineScaleDragState, } from './selected-outline-types';
|
|
8
6
|
type SelectedOutlineOverlayProps = {
|
|
@@ -33,8 +33,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.SelectedOutlineOverlay = exports.selectedOutlineDragThresholdPx = exports.
|
|
36
|
+
exports.SelectedOutlineOverlay = exports.selectedOutlineDragThresholdPx = exports.getSelectedSequenceKeys = exports.getSelectedOutlineRotationPivot = exports.getSelectedOutlineRotationDeltaDegrees = exports.getSelectedOutlineRotationCornerInfo = exports.getSelectedEffectFieldsBySequenceKey = exports.getSelectedCropInfo = exports.getOutlineSelectionInteraction = exports.snapSelectedOutlineUv = exports.snapSelectedOutlineTransformOriginUv = exports.snapSelectedOutlineRotationDeltaDegrees = exports.selectedOutlineUvSnapThresholdPx = exports.selectedOutlineTransformOriginSnapThresholdPx = exports.isSelectedOutlineDragPastThreshold = exports.getSelectedOutlineTransformOriginLockedAxis = exports.getSelectedOutlineTransformOriginDragChanges = exports.getSelectedOutlineScaleEdgeInfo = exports.getSelectedOutlineScaleDragValues = exports.getSelectedOutlineScaleDragStates = exports.getSelectedOutlineScaleDragChanges = exports.getSelectedOutlineRotationDragValues = exports.getSelectedOutlineRotationDragStates = exports.getSelectedOutlineRotationDragChanges = exports.getSelectedOutlineKeyboardNudgeDeltas = exports.getSelectedOutlineKeyboardNudgeDelta = exports.getSelectedOutlineDragValues = exports.getSelectedOutlineDragChanges = exports.getSelectedOutlineCropFollowingTransformOrigin = exports.getSelectedOutlineCropDragValues = exports.getSelectedOutlineCropDragChanges = exports.getSelectedOutlineActiveSchema = exports.getSelectedOutline3DRotationDragValues = exports.compensateTranslateForTransformOrigin = exports.applySelectedOutlineTransformOriginAxisLock = exports.applySelectedOutlineDragAxisLock = void 0;
|
|
37
37
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
38
|
+
const canvas_1 = require("@remotion/canvas");
|
|
38
39
|
const player_1 = require("@remotion/player");
|
|
39
40
|
const react_1 = __importStar(require("react"));
|
|
40
41
|
const remotion_1 = require("remotion");
|
|
@@ -50,8 +51,6 @@ const timeline_sequence_hover_1 = require("../state/timeline-sequence-hover");
|
|
|
50
51
|
const transform_3d_mode_1 = require("../state/transform-3d-mode");
|
|
51
52
|
const selected_outline_drag_1 = require("./selected-outline-drag");
|
|
52
53
|
const selected_outline_measurement_1 = require("./selected-outline-measurement");
|
|
53
|
-
const selected_outline_order_1 = require("./selected-outline-order");
|
|
54
|
-
Object.defineProperty(exports, "orderOutlinesForRendering", { enumerable: true, get: function () { return selected_outline_order_1.orderOutlinesForRendering; } });
|
|
55
54
|
const selected_outline_types_1 = require("./selected-outline-types");
|
|
56
55
|
const SelectedOutlineKeyboardControls_1 = require("./SelectedOutlineKeyboardControls");
|
|
57
56
|
const SelectedOutlineRenderer_1 = require("./SelectedOutlineRenderer");
|
|
@@ -94,8 +93,6 @@ Object.defineProperty(exports, "getSelectedOutlineRotationCornerInfo", { enumera
|
|
|
94
93
|
Object.defineProperty(exports, "getSelectedOutlineRotationDeltaDegrees", { enumerable: true, get: function () { return selected_outline_measurement_2.getSelectedOutlineRotationDeltaDegrees; } });
|
|
95
94
|
Object.defineProperty(exports, "getSelectedOutlineRotationPivot", { enumerable: true, get: function () { return selected_outline_measurement_2.getSelectedOutlineRotationPivot; } });
|
|
96
95
|
Object.defineProperty(exports, "getSelectedSequenceKeys", { enumerable: true, get: function () { return selected_outline_measurement_2.getSelectedSequenceKeys; } });
|
|
97
|
-
Object.defineProperty(exports, "getSequencesWithSelectableOutlines", { enumerable: true, get: function () { return selected_outline_measurement_2.getSequencesWithSelectableOutlines; } });
|
|
98
|
-
Object.defineProperty(exports, "getTransformedSvgViewportPoints", { enumerable: true, get: function () { return selected_outline_measurement_2.getTransformedSvgViewportPoints; } });
|
|
99
96
|
const selected_outline_types_2 = require("./selected-outline-types");
|
|
100
97
|
Object.defineProperty(exports, "selectedOutlineDragThresholdPx", { enumerable: true, get: function () { return selected_outline_types_2.selectedOutlineDragThresholdPx; } });
|
|
101
98
|
const getEffectiveCropValue = ({ activeSchema, dragOverrides, fieldKey, frame, propStatuses, runtimeValues, }) => {
|
|
@@ -263,6 +260,7 @@ const calculateOutlineTargets = ({ connectedClientId, editorShowOutlines, getDra
|
|
|
263
260
|
key,
|
|
264
261
|
containsSelection,
|
|
265
262
|
crop,
|
|
263
|
+
includeOutsideContainer: showSelectedOutline,
|
|
266
264
|
keyframeDisplayOffset: nodeKeyframeDisplayOffset,
|
|
267
265
|
nodePathInfo,
|
|
268
266
|
ref: sequence.refForOutline,
|
|
@@ -533,25 +531,31 @@ const ActiveSelectedOutlineOverlayUnmemoized = ({ calculateOutlineTargetsForCurr
|
|
|
533
531
|
controls.runtimeValues,
|
|
534
532
|
outlineRuntimeSnapshots[index],
|
|
535
533
|
])), [outlineRuntimeControls, outlineRuntimeSnapshots]);
|
|
536
|
-
const outlineTargets = (0, react_1.useMemo)(() =>
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
534
|
+
const outlineTargets = (0, react_1.useMemo)(() => {
|
|
535
|
+
const targets = calculateOutlineTargetsForCurrentState({
|
|
536
|
+
mode: 'layout',
|
|
537
|
+
runtimeValuesByStore: outlineRuntimeValuesByStore,
|
|
538
|
+
selectableOutlines: selectableOutlinesForLayout,
|
|
539
|
+
targetKey: null,
|
|
540
|
+
targetTimelinePosition: timelinePosition,
|
|
541
|
+
});
|
|
542
|
+
return targets.map((target) => {
|
|
543
|
+
const hovered = (0, timeline_node_path_key_1.timelineSequenceNodePathToKey)(target.nodePathInfo.sequenceSubscriptionKey) === hoveredTimelineNodePathKey;
|
|
544
|
+
return hovered && !target.includeOutsideContainer
|
|
545
|
+
? { ...target, includeOutsideContainer: true }
|
|
546
|
+
: target;
|
|
547
|
+
});
|
|
548
|
+
}, [
|
|
543
549
|
calculateOutlineTargetsForCurrentState,
|
|
550
|
+
hoveredTimelineNodePathKey,
|
|
544
551
|
outlineRuntimeValuesByStore,
|
|
545
552
|
selectableOutlinesForLayout,
|
|
546
553
|
timelinePosition,
|
|
547
554
|
]);
|
|
548
|
-
const outlineTargetsRef = (0, react_1.useRef)(outlineTargets);
|
|
549
|
-
const getOutlineTargets = (0, react_1.useCallback)(() => outlineTargetsRef.current, []);
|
|
550
555
|
(0, react_1.useLayoutEffect)(() => {
|
|
551
|
-
outlineTargetsRef.current = outlineTargets;
|
|
552
556
|
updateOutlinesRef.current();
|
|
553
557
|
}, [outlineTargets, scale, translationX, translationY]);
|
|
554
|
-
return (jsx_runtime_1.jsx(SelectedOutlineRenderer_1.SelectedOutlineRenderer, { compositionHeight: compositionHeight, compositionWidth: compositionWidth, dragging: draggingOutline, getLatestOutlineTargetByKey: getLatestOutlineTargetByKey,
|
|
558
|
+
return (jsx_runtime_1.jsx(SelectedOutlineRenderer_1.SelectedOutlineRenderer, { compositionHeight: compositionHeight, compositionWidth: compositionWidth, dragging: draggingOutline, getLatestOutlineTargetByKey: getLatestOutlineTargetByKey, outlineTargets: outlineTargets, onDraggingChange: onDraggingChange, onContextMenuOpenChange: onContextMenuOpenChange, onSelect: onSelect, scale: scale, sequences: sequences, updateOutlinesRef: updateOutlinesRef }));
|
|
555
559
|
};
|
|
556
560
|
const ActiveSelectedOutlineOverlay = react_1.default.memo(ActiveSelectedOutlineOverlayUnmemoized);
|
|
557
561
|
const SelectedOutlineOverlayUnmemoized = ({ canvasHovered, compositionHeight, compositionWidth, scale, translationX, translationY, }) => {
|
|
@@ -585,7 +589,7 @@ const SelectedOutlineOverlayUnmemoized = ({ canvasHovered, compositionHeight, co
|
|
|
585
589
|
!editorShowOutlines) {
|
|
586
590
|
return [];
|
|
587
591
|
}
|
|
588
|
-
return (0,
|
|
592
|
+
return (0, canvas_1.getCanvasSelectableOutlines)({
|
|
589
593
|
sequences,
|
|
590
594
|
overrideIdsToNodePaths: overrideIdToNodePathMappings,
|
|
591
595
|
compositions,
|
|
@@ -2,7 +2,6 @@ import React from 'react';
|
|
|
2
2
|
import type { SelectedOutline } from './selected-outline-geometry';
|
|
3
3
|
import { type SelectedOutlineSnapPoint } from './selected-outline-snap';
|
|
4
4
|
import { type SelectedOutlineDragTarget, type SelectedOutlineLayoutTarget, type SelectedOutlineTarget } from './selected-outline-types';
|
|
5
|
-
import type { TimelineSelection, TimelineSelectionInteraction } from './Timeline/TimelineSelection';
|
|
6
5
|
export declare const SELECTED_OUTLINE_KEY_ATTR = "data-remotion-studio-selected-outline-key";
|
|
7
6
|
export declare const SelectedOutlinePolygon: React.NamedExoticComponent<{
|
|
8
7
|
readonly compositionHeight: number;
|
|
@@ -20,7 +19,7 @@ export declare const SelectedOutlinePolygon: React.NamedExoticComponent<{
|
|
|
20
19
|
readonly onDraggingChange: (dragging: boolean) => void;
|
|
21
20
|
readonly onHoverChange: (key: string | null) => void;
|
|
22
21
|
readonly onSnapPointsChange: (snapPoints: readonly SelectedOutlineSnapPoint[]) => void;
|
|
23
|
-
readonly onSelect: (item:
|
|
22
|
+
readonly onSelect: (item: import("@remotion/canvas").CanvasSelectionItem, interaction: import("@remotion/canvas").CanvasSelectionInteraction) => void;
|
|
24
23
|
readonly onDoubleClickTarget: (target: SelectedOutlineTarget, button: number, sequenceWasDragged: boolean) => boolean;
|
|
25
24
|
readonly scale: number;
|
|
26
25
|
readonly showSelectedOutline: boolean;
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { SelectedOutlineLayoutTarget, SelectedOutlineTarget } from './selected-outline-types';
|
|
3
|
-
import type { TimelineSelection, TimelineSelectionInteraction } from './Timeline/TimelineSelection';
|
|
4
3
|
export declare const SelectedOutlineRenderer: React.NamedExoticComponent<{
|
|
5
4
|
readonly compositionHeight: number;
|
|
6
5
|
readonly compositionWidth: number;
|
|
7
6
|
readonly dragging: boolean;
|
|
8
7
|
readonly getLatestOutlineTargetByKey: (key: string) => SelectedOutlineTarget | undefined;
|
|
9
|
-
readonly
|
|
8
|
+
readonly outlineTargets: readonly SelectedOutlineLayoutTarget[];
|
|
10
9
|
readonly onDraggingChange: (dragging: boolean) => void;
|
|
11
10
|
readonly onContextMenuOpenChange: (open: boolean) => void;
|
|
12
|
-
readonly onSelect: (item:
|
|
11
|
+
readonly onSelect: (item: import("@remotion/canvas").CanvasSelectionItem, interaction?: import("@remotion/canvas").CanvasSelectionInteraction | undefined) => void;
|
|
13
12
|
readonly scale: number;
|
|
14
13
|
readonly sequences: readonly {
|
|
15
14
|
readonly id: string;
|
|
@@ -35,12 +35,11 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.SelectedOutlineRenderer = void 0;
|
|
37
37
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
38
|
+
const canvas_1 = require("@remotion/canvas");
|
|
38
39
|
const react_1 = __importStar(require("react"));
|
|
39
40
|
const timeline_node_path_key_1 = require("../helpers/timeline-node-path-key");
|
|
40
41
|
const timeline_sequence_hover_1 = require("../state/timeline-sequence-hover");
|
|
41
42
|
const ContextMenu_1 = require("./ContextMenu");
|
|
42
|
-
const selected_outline_measurement_1 = require("./selected-outline-measurement");
|
|
43
|
-
const selected_outline_order_1 = require("./selected-outline-order");
|
|
44
43
|
const SelectedOutlineEditingHandles_1 = require("./SelectedOutlineEditingHandles");
|
|
45
44
|
const SelectedOutlineElement_1 = require("./SelectedOutlineElement");
|
|
46
45
|
const SelectedOutlinePolygon_1 = require("./SelectedOutlinePolygon");
|
|
@@ -53,17 +52,11 @@ const outlineContainer = {
|
|
|
53
52
|
pointerEvents: 'none',
|
|
54
53
|
overflow: 'visible',
|
|
55
54
|
};
|
|
56
|
-
const
|
|
57
|
-
outlines: [],
|
|
58
|
-
targets: [],
|
|
59
|
-
};
|
|
60
|
-
const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth, dragging, getLatestOutlineTargetByKey, getOutlineTargets, onDraggingChange, onContextMenuOpenChange, onSelect, scale, sequences, updateOutlinesRef, }) => {
|
|
55
|
+
const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth, dragging, getLatestOutlineTargetByKey, outlineTargets, onDraggingChange, onContextMenuOpenChange, onSelect, scale, sequences, updateOutlinesRef, }) => {
|
|
61
56
|
var _a;
|
|
62
|
-
const
|
|
57
|
+
const outlinesController = (0, canvas_1.useCanvasOutlinesController)();
|
|
58
|
+
const renderState = (0, canvas_1.useCanvasOutlines)(outlinesController);
|
|
63
59
|
const overlayRef = (0, react_1.useRef)(null);
|
|
64
|
-
const resizeObserverRef = (0, react_1.useRef)(null);
|
|
65
|
-
const resizeObserverAnimationFrameRef = (0, react_1.useRef)(null);
|
|
66
|
-
const observedOutlineElementsRef = (0, react_1.useRef)(new Set());
|
|
67
60
|
const contextMenuOpenHandlersRef = (0, react_1.useRef)(new Map());
|
|
68
61
|
const registerContextMenuOpen = (0, react_1.useCallback)((key, handler) => {
|
|
69
62
|
if (handler === null) {
|
|
@@ -90,24 +83,9 @@ const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth
|
|
|
90
83
|
const hoveredSequence = (0, timeline_sequence_hover_1.useTimelineSequenceHoverState)();
|
|
91
84
|
const setHoveredSequence = (0, timeline_sequence_hover_1.useSetTimelineSequenceHover)();
|
|
92
85
|
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;
|
|
94
86
|
const updateOutlines = (0, react_1.useCallback)(() => {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
setRenderState((prevState) => prevState.targets.length === 0 ? prevState : emptyRenderState);
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
const nextOutlines = (0, selected_outline_measurement_1.measureOutlines)(overlayRef.current, targets, hoveredTimelineNodePathKey);
|
|
101
|
-
setRenderState((prevState) => {
|
|
102
|
-
const outlines = (0, selected_outline_measurement_1.outlinesAreEqual)(prevState.outlines, nextOutlines)
|
|
103
|
-
? prevState.outlines
|
|
104
|
-
: nextOutlines;
|
|
105
|
-
if (prevState.targets === targets && prevState.outlines === outlines) {
|
|
106
|
-
return prevState;
|
|
107
|
-
}
|
|
108
|
-
return { outlines, targets };
|
|
109
|
-
});
|
|
110
|
-
}, [getOutlineTargets, hoveredTimelineNodePathKey]);
|
|
87
|
+
outlinesController.update(overlayRef.current, outlineTargets);
|
|
88
|
+
}, [outlineTargets, outlinesController]);
|
|
111
89
|
(0, react_1.useLayoutEffect)(() => {
|
|
112
90
|
updateOutlinesRef.current = updateOutlines;
|
|
113
91
|
updateOutlines();
|
|
@@ -118,55 +96,8 @@ const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth
|
|
|
118
96
|
};
|
|
119
97
|
}, [updateOutlines, updateOutlinesRef]);
|
|
120
98
|
(0, react_1.useLayoutEffect)(() => {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
}
|
|
124
|
-
const resizeObserver = new ResizeObserver(() => {
|
|
125
|
-
if (resizeObserverAnimationFrameRef.current !== null) {
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
resizeObserverAnimationFrameRef.current = requestAnimationFrame(() => {
|
|
129
|
-
resizeObserverAnimationFrameRef.current = null;
|
|
130
|
-
updateOutlinesRef.current();
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
resizeObserverRef.current = resizeObserver;
|
|
134
|
-
return () => {
|
|
135
|
-
if (resizeObserverAnimationFrameRef.current !== null) {
|
|
136
|
-
cancelAnimationFrame(resizeObserverAnimationFrameRef.current);
|
|
137
|
-
resizeObserverAnimationFrameRef.current = null;
|
|
138
|
-
}
|
|
139
|
-
resizeObserver.disconnect();
|
|
140
|
-
resizeObserverRef.current = null;
|
|
141
|
-
observedOutlineElementsRef.current = new Set();
|
|
142
|
-
};
|
|
143
|
-
}, [updateOutlinesRef]);
|
|
144
|
-
(0, react_1.useLayoutEffect)(() => {
|
|
145
|
-
const resizeObserver = resizeObserverRef.current;
|
|
146
|
-
if (resizeObserver === null) {
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
const nextObservedElements = new Set();
|
|
150
|
-
if (overlayRef.current !== null) {
|
|
151
|
-
nextObservedElements.add(overlayRef.current);
|
|
152
|
-
}
|
|
153
|
-
for (const target of renderState.targets) {
|
|
154
|
-
if (target.ref.current !== null) {
|
|
155
|
-
nextObservedElements.add(target.ref.current);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
for (const element of observedOutlineElementsRef.current) {
|
|
159
|
-
if (!nextObservedElements.has(element)) {
|
|
160
|
-
resizeObserver.unobserve(element);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
for (const element of nextObservedElements) {
|
|
164
|
-
if (!observedOutlineElementsRef.current.has(element)) {
|
|
165
|
-
resizeObserver.observe(element);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
observedOutlineElementsRef.current = nextObservedElements;
|
|
169
|
-
}, [renderState.targets]);
|
|
99
|
+
return () => outlinesController.disconnect();
|
|
100
|
+
}, [outlinesController]);
|
|
170
101
|
const targetsByKey = (0, react_1.useMemo)(() => {
|
|
171
102
|
return new Map(renderState.targets.map((target) => [target.key, target]));
|
|
172
103
|
}, [renderState.targets]);
|
|
@@ -180,7 +111,7 @@ const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth
|
|
|
180
111
|
const outlineRenderingOrderRef = (0, react_1.useRef)([]);
|
|
181
112
|
const outlinesForRendering = (0, react_1.useMemo)(() => {
|
|
182
113
|
if (!dragging || outlineRenderingOrderRef.current.length === 0) {
|
|
183
|
-
const orderedOutlines = (0,
|
|
114
|
+
const orderedOutlines = (0, canvas_1.orderCanvasOutlinesForRendering)({
|
|
184
115
|
outlines: renderState.outlines,
|
|
185
116
|
sequences,
|
|
186
117
|
targetsByKey,
|
|
@@ -7,7 +7,7 @@ export declare const getSelectedOutlineUvHandleTimelineSelection: ({ effectIndex
|
|
|
7
7
|
readonly effectIndex: number;
|
|
8
8
|
readonly fieldKey: string;
|
|
9
9
|
readonly nodePathInfo: SequenceNodePathInfo;
|
|
10
|
-
}) =>
|
|
10
|
+
}) => import("@remotion/canvas").CanvasSelectionItem;
|
|
11
11
|
export declare const SelectedOutlineUvHandleConnectionLayer: React.FC<{
|
|
12
12
|
readonly layoutTarget: SelectedOutlineLayoutTarget | undefined;
|
|
13
13
|
readonly outline: SelectedOutline;
|
|
@@ -83,6 +83,6 @@ const SettingsModal = ({ initialPublicLicenseKey, initialTab }) => {
|
|
|
83
83
|
}, [initialPublicLicenseKey, setPublicLicenseKey]);
|
|
84
84
|
return (jsx_runtime_1.jsx(DismissableModal_1.DismissableModal, { panelStyle: render_modals_1.outerModalStyle, children: jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
85
85
|
jsx_runtime_1.jsx(ModalHeader_1.ModalHeader, { title: "Settings", onClose: dismiss }), jsx_runtime_1.jsxs("div", { style: render_modals_1.horizontalLayout, children: [
|
|
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, {}))] }) }));
|
|
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, { showLicenseFaq: tab === 'license' }))] }) }));
|
|
87
87
|
};
|
|
88
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 common_1 = require("./InspectorPanel/common");
|
|
8
9
|
const layout_1 = require("./layout");
|
|
9
10
|
const ModalFooter_1 = require("./ModalFooter");
|
|
10
11
|
const footer = {
|
|
@@ -13,6 +14,7 @@ const footer = {
|
|
|
13
14
|
const footerRow = {
|
|
14
15
|
alignItems: 'center',
|
|
15
16
|
display: 'flex',
|
|
17
|
+
justifyContent: 'space-between',
|
|
16
18
|
};
|
|
17
19
|
const configFileHint = {
|
|
18
20
|
alignItems: 'center',
|
|
@@ -30,7 +32,14 @@ const configFileName = {
|
|
|
30
32
|
fontWeight: 'bold',
|
|
31
33
|
lineHeight: '20px',
|
|
32
34
|
};
|
|
33
|
-
const
|
|
35
|
+
const externalLinkIndicator = {
|
|
36
|
+
display: 'inline-block',
|
|
37
|
+
height: 12,
|
|
38
|
+
marginLeft: 4,
|
|
39
|
+
verticalAlign: -2,
|
|
40
|
+
width: 12,
|
|
41
|
+
};
|
|
42
|
+
const SettingsModalFooter = ({ showLicenseFaq }) => {
|
|
34
43
|
const configFileLocation = (0, react_1.useMemo)(() => {
|
|
35
44
|
return {
|
|
36
45
|
source: 'remotion.config.ts',
|
|
@@ -38,8 +47,14 @@ const SettingsModalFooter = () => {
|
|
|
38
47
|
column: 1,
|
|
39
48
|
};
|
|
40
49
|
}, []);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
50
|
+
const openLicenseFaq = (0, react_1.useCallback)(() => {
|
|
51
|
+
window.open('https://www.remotion.dev/docs/license/faq', '_blank', 'noopener,noreferrer');
|
|
52
|
+
}, []);
|
|
53
|
+
return (jsx_runtime_1.jsx(ModalFooter_1.ModalFooterContainer, { style: footer, children: jsx_runtime_1.jsxs("div", { style: footerRow, children: [
|
|
54
|
+
jsx_runtime_1.jsxs("div", { style: configFileHint, children: ["Changes save to",
|
|
55
|
+
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" }) })
|
|
56
|
+
] }), showLicenseFaq ? (jsx_runtime_1.jsxs(common_1.InspectorQuickAction, { disabled: false, onClick: openLicenseFaq, style: { flex: 'none', width: 'fit-content' }, title: "Open the Remotion License FAQ in a new tab", children: ["License FAQ",
|
|
57
|
+
jsx_runtime_1.jsx("svg", { "aria-hidden": "true", viewBox: "0 0 16 16", style: externalLinkIndicator, children: jsx_runtime_1.jsx("path", { d: "M4 12 12 4M6 4h6v6", fill: "none", stroke: colors_1.CURRENT_COLOR, strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5" }) })
|
|
58
|
+
] })) : null] }) }));
|
|
44
59
|
};
|
|
45
60
|
exports.SettingsModalFooter = SettingsModalFooter;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ShowPixelGridProvider = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const editor_pixel_grid_1 = require("../state/editor-pixel-grid");
|
|
7
|
+
const ShowPixelGridProvider = ({ children }) => {
|
|
8
|
+
const [editorShowPixelGrid, setEditorShowPixelGridState] = (0, react_1.useState)(() => (0, editor_pixel_grid_1.loadEditorShowPixelGridOption)());
|
|
9
|
+
const setEditorShowPixelGrid = (0, react_1.useCallback)((newValue) => {
|
|
10
|
+
setEditorShowPixelGridState((prevState) => {
|
|
11
|
+
const newVal = newValue(prevState);
|
|
12
|
+
(0, editor_pixel_grid_1.persistEditorShowPixelGridOption)(newVal);
|
|
13
|
+
return newVal;
|
|
14
|
+
});
|
|
15
|
+
}, []);
|
|
16
|
+
const editorShowPixelGridCtx = (0, react_1.useMemo)(() => {
|
|
17
|
+
return {
|
|
18
|
+
editorShowPixelGrid,
|
|
19
|
+
setEditorShowPixelGrid,
|
|
20
|
+
};
|
|
21
|
+
}, [editorShowPixelGrid, setEditorShowPixelGrid]);
|
|
22
|
+
return (jsx_runtime_1.jsx(editor_pixel_grid_1.EditorShowPixelGridContext.Provider, { value: editorShowPixelGridCtx, children: children }));
|
|
23
|
+
};
|
|
24
|
+
exports.ShowPixelGridProvider = ShowPixelGridProvider;
|
|
@@ -139,8 +139,8 @@ const SidebarCollapserControl = ({ side }) => {
|
|
|
139
139
|
return (jsx_runtime_1.jsx("div", { "data-sidebar-toggle": "right", style: colorStyle(color), title: toggleRightTooltip, children: jsx_runtime_1.jsx("div", { style: rightIcon(color) }) }));
|
|
140
140
|
}, [colorStyle, rightIcon, toggleRightTooltip]);
|
|
141
141
|
if (side === 'left') {
|
|
142
|
-
return (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, onClick: toggleLeft, renderAction: toggleLeftAction,
|
|
142
|
+
return (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, onClick: toggleLeft, renderAction: toggleLeftAction, style: { marginRight: 4 } }));
|
|
143
143
|
}
|
|
144
|
-
return (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, onClick: toggleRight, renderAction: toggleRightAction
|
|
144
|
+
return (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, onClick: toggleRight, renderAction: toggleRightAction }));
|
|
145
145
|
};
|
|
146
146
|
exports.SidebarCollapserControl = SidebarCollapserControl;
|
|
@@ -5,6 +5,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const remotion_1 = require("remotion");
|
|
7
7
|
const client_id_1 = require("../helpers/client-id");
|
|
8
|
+
const hoverable_1 = require("../helpers/hoverable");
|
|
8
9
|
const render_1 = require("../icons/render");
|
|
9
10
|
const modals_1 = require("../state/modals");
|
|
10
11
|
const InlineAction_1 = require("./InlineAction");
|
|
@@ -87,6 +88,6 @@ const SidebarRenderButton = ({ composition, visible }) => {
|
|
|
87
88
|
if (!visible || connectionStatus !== 'connected') {
|
|
88
89
|
return null;
|
|
89
90
|
}
|
|
90
|
-
return (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { renderAction: renderAction, onClick: onClick, variant: null }));
|
|
91
|
+
return (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { renderAction: renderAction, onClick: onClick, variant: null, style: hoverable_1.NO_HOVER_BACKGROUND_STYLE, className: hoverable_1.FOCUS_VISIBLE_ONLY_CLASS_NAME }));
|
|
91
92
|
};
|
|
92
93
|
exports.SidebarRenderButton = SidebarRenderButton;
|