@remotion/studio 4.0.527 → 4.0.528
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/AgentPrompt.js +1 -2
- package/dist/components/AudioWaveform.d.ts +1 -0
- package/dist/components/AudioWaveform.js +10 -14
- package/dist/components/CodeFrame.js +1 -1
- package/dist/components/ColorPicker/checker.d.ts +1 -1
- package/dist/components/CurrentAsset.js +3 -2
- package/dist/components/EditorRuler/Ruler.js +6 -3
- package/dist/components/EffectPickerModal.js +69 -43
- package/dist/components/ElementInstallConfirmation.js +3 -3
- package/dist/components/ElementLibrariesSettings.d.ts +2 -0
- package/dist/components/ElementLibrariesSettings.js +200 -0
- package/dist/components/InitialCompositionLoader.js +3 -1
- package/dist/components/InspectorOpenInEditor.js +13 -0
- package/dist/components/InspectorPanel/AlignmentControls.js +28 -9
- package/dist/components/InspectorPanel/CollapsibleInspectorSectionHeader.js +1 -1
- package/dist/components/InspectorPanel/EasingInspector.js +6 -2
- package/dist/components/InspectorPanel/ElementLibraryButton.js +1 -1
- package/dist/components/InspectorPanel/KeyframeEasingNavigator.js +1 -1
- package/dist/components/InspectorPanel/KeyframeInspector.js +28 -24
- package/dist/components/InspectorPanel/MultiSequenceNumberField.js +1 -1
- package/dist/components/InspectorPanel/SequenceInspectorHeader.d.ts +3 -1
- package/dist/components/InspectorPanel/SequenceSelectionInspector.js +30 -2
- package/dist/components/InspectorPanel/SequenceWrapAction.d.ts +8 -0
- package/dist/components/InspectorPanel/SequenceWrapAction.js +151 -0
- package/dist/components/InspectorPanel/easing-inspector-selection.d.ts +2 -1
- package/dist/components/InspectorPanel/easing-inspector-selection.js +4 -3
- package/dist/components/InspectorPanel/keyframe-inspector-frame.d.ts +2 -1
- package/dist/components/InspectorPanel/keyframe-inspector-frame.js +2 -2
- package/dist/components/InspectorSequenceSection.d.ts +1 -0
- package/dist/components/InspectorSequenceSection.js +7 -5
- package/dist/components/KeyboardShortcutsSettings.js +1 -1
- package/dist/components/Menu/styles.d.ts +2 -2
- package/dist/components/Modals.js +7 -6
- package/dist/components/ModelManager.js +10 -9
- package/dist/components/NewComposition/CancelButton.js +10 -4
- package/dist/components/NewComposition/InputDragger.d.ts +3 -1
- package/dist/components/NewComposition/InputDragger.js +28 -9
- package/dist/components/NewComposition/NewComposition.js +7 -6
- package/dist/components/NewComposition/RemInput.d.ts +1 -1
- package/dist/components/NewComposition/menu-typeahead.js +1 -1
- package/dist/components/Preview.js +3 -2
- package/dist/components/RenderModal/SchemaEditor/create-zod-values.js +1 -2
- package/dist/components/RenderModal/WebRenderModalPicture.js +1 -2
- package/dist/components/RenderQueue/CaptionQueueItem.js +14 -5
- package/dist/components/RenderQueue/CaptionQueueProcessor.js +30 -7
- package/dist/components/RenderQueue/QueueJobError.d.ts +8 -0
- package/dist/components/RenderQueue/QueueJobError.js +24 -0
- package/dist/components/RenderQueue/QueueJobErrorModal.d.ts +8 -0
- package/dist/components/RenderQueue/QueueJobErrorModal.js +63 -0
- package/dist/components/RenderQueue/RenderQueueItemCancelButton.d.ts +3 -1
- package/dist/components/RenderQueue/RenderQueueItemCancelButton.js +11 -4
- package/dist/components/RenderQueue/RenderQueueRepeat.d.ts +3 -1
- package/dist/components/RenderQueue/RenderQueueRepeat.js +20 -3
- package/dist/components/RenderQueue/VideoMattingQueueItem.js +24 -27
- package/dist/components/RenderQueue/VideoMattingQueueProcessor.js +68 -28
- package/dist/components/RenderQueue/caption-job-types.d.ts +3 -1
- package/dist/components/RenderQueue/context.d.ts +4 -0
- package/dist/components/RenderQueue/context.js +58 -8
- package/dist/components/RenderQueue/index.js +2 -3
- package/dist/components/RenderQueue/load-model-for-job.d.ts +2 -1
- package/dist/components/RenderQueue/load-model-for-job.js +5 -1
- package/dist/components/RenderQueue/video-matting-job-types.d.ts +13 -6
- package/dist/components/SelectedOutlineCropControls.js +2 -1
- package/dist/components/SelectedOutlineEditingHandles.js +9 -2
- package/dist/components/SelectedOutlineElement.js +9 -3
- package/dist/components/SelectedOutlineKeyboardControls.d.ts +2 -4
- package/dist/components/SelectedOutlineKeyboardControls.js +4 -22
- package/dist/components/SelectedOutlineOverlay.js +152 -106
- package/dist/components/SelectedOutlinePathPoints.d.ts +8 -0
- package/dist/components/SelectedOutlinePathPoints.js +433 -0
- package/dist/components/SelectedOutlinePolygon.js +21 -46
- package/dist/components/SelectedOutlineRenderer.d.ts +3 -5
- package/dist/components/SelectedOutlineRenderer.js +32 -136
- package/dist/components/SelectedOutlineTransformOriginHandle.js +3 -2
- package/dist/components/SelectedOutlineUvControls.js +12 -7
- package/dist/components/SettingsModal.js +30 -3
- package/dist/components/SettingsModalFooter.d.ts +1 -0
- package/dist/components/SettingsModalFooter.js +7 -3
- package/dist/components/ShowOutlinesProvider.js +1 -1
- package/dist/components/SkillsSettings.d.ts +0 -1
- package/dist/components/SkillsSettings.js +13 -14
- package/dist/components/Splitter/SplitterElement.js +1 -2
- package/dist/components/TimeValue.js +1 -1
- package/dist/components/Timeline/LoopedTimelineIndicators.d.ts +1 -0
- package/dist/components/Timeline/LoopedTimelineIndicators.js +7 -6
- package/dist/components/Timeline/TimelineArrayField.js +1 -1
- package/dist/components/Timeline/TimelineClipboardKeybindings.js +0 -1
- package/dist/components/Timeline/TimelineColorField.js +1 -1
- package/dist/components/Timeline/TimelineDragHandler.js +1 -1
- package/dist/components/Timeline/TimelineEffectPropItem.d.ts +1 -0
- package/dist/components/Timeline/TimelineEffectPropItem.js +12 -5
- package/dist/components/Timeline/TimelineExpandedRow.d.ts +1 -0
- package/dist/components/Timeline/TimelineExpandedRow.js +5 -4
- package/dist/components/Timeline/TimelineExpandedSection.d.ts +1 -0
- package/dist/components/Timeline/TimelineExpandedSection.js +2 -2
- package/dist/components/Timeline/TimelineExpandedTrackKeyframes.d.ts +1 -0
- package/dist/components/Timeline/TimelineExpandedTrackKeyframes.js +3 -1
- package/dist/components/Timeline/TimelineFontFamilyField.js +12 -12
- package/dist/components/Timeline/TimelineKeyframeControls.d.ts +1 -0
- package/dist/components/Timeline/TimelineKeyframeControls.js +39 -28
- package/dist/components/Timeline/TimelineLayerChildren.js +1 -1
- package/dist/components/Timeline/TimelineList.js +1 -1
- package/dist/components/Timeline/TimelineNumberField.js +2 -4
- package/dist/components/Timeline/TimelinePrimitiveFieldValue.js +1 -1
- package/dist/components/Timeline/TimelineSelection.d.ts +9 -9
- package/dist/components/Timeline/TimelineSelection.js +16 -9
- package/dist/components/Timeline/TimelineSequence.d.ts +3 -1
- package/dist/components/Timeline/TimelineSequence.js +39 -21
- package/dist/components/Timeline/TimelineSequenceItem.d.ts +1 -0
- package/dist/components/Timeline/TimelineSequenceItem.js +18 -8
- package/dist/components/Timeline/TimelineSequencePropItem.d.ts +3 -0
- package/dist/components/Timeline/TimelineSequencePropItem.js +262 -25
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +11 -13
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +98 -77
- package/dist/components/Timeline/TimelineTextContentField.js +27 -4
- package/dist/components/Timeline/TimelineTimeIndicators.js +10 -5
- package/dist/components/Timeline/TimelineTrack.js +1 -1
- package/dist/components/Timeline/TimelineTrimTooltip.d.ts +11 -0
- package/dist/components/Timeline/TimelineTrimTooltip.js +41 -0
- package/dist/components/Timeline/TimelineVideoInfo.d.ts +1 -0
- package/dist/components/Timeline/TimelineVideoInfo.js +13 -10
- package/dist/components/Timeline/delete-selected-keyframe.js +22 -8
- package/dist/components/Timeline/delete-selected-timeline-item.d.ts +1 -5
- package/dist/components/Timeline/delete-selected-timeline-item.js +7 -93
- package/dist/components/Timeline/get-animation-item-selection-for-frame.d.ts +2 -1
- package/dist/components/Timeline/get-animation-item-selection-for-frame.js +7 -5
- package/dist/components/Timeline/get-keyframed-sequence-drag-targets.d.ts +23 -0
- package/dist/components/Timeline/get-keyframed-sequence-drag-targets.js +57 -0
- package/dist/components/Timeline/get-node-keyframes.d.ts +2 -1
- package/dist/components/Timeline/get-node-keyframes.js +6 -4
- package/dist/components/Timeline/get-playback-rate-keyframe-changes.d.ts +21 -0
- package/dist/components/Timeline/get-playback-rate-keyframe-changes.js +142 -0
- package/dist/components/Timeline/get-timeline-keyframes.d.ts +15 -2
- package/dist/components/Timeline/get-timeline-keyframes.js +44 -6
- package/dist/components/Timeline/keyframe-clipboard.js +17 -3
- package/dist/components/Timeline/split-selected-timeline-item.js +4 -1
- package/dist/components/Timeline/timeline-field-display-utils.js +1 -0
- package/dist/components/Timeline/timeline-field-row-layout.js +1 -0
- package/dist/components/Timeline/use-delete-timeline-items.js +17 -11
- package/dist/components/Timeline/use-expanded-track-keyframe-rows.d.ts +2 -1
- package/dist/components/Timeline/use-expanded-track-keyframe-rows.js +3 -1
- package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.js +7 -3
- package/dist/components/Timeline/use-timeline-keyframe-drag.js +28 -19
- package/dist/components/Transcription/Models.js +1 -1
- package/dist/components/Transcription/TranscriptionModal.js +3 -1
- package/dist/components/Transcription/resample-media-to-16-khz.d.ts +2 -1
- package/dist/components/Transcription/resample-media-to-16-khz.js +20 -2
- package/dist/components/UpdatesSettings.js +2 -0
- package/dist/components/VideoMatting/Models.js +1 -1
- package/dist/components/VideoMatting/VideoMattingModal.js +30 -47
- package/dist/components/VideoMatting/VideoMattingModalWithOptionalPackage.js +1 -1
- package/dist/components/WebMcp.js +22 -40
- package/dist/components/composition-drop-preview.js +1 -0
- package/dist/components/effect-drag-and-drop.d.ts +13 -5
- package/dist/components/effect-drag-and-drop.js +19 -4
- package/dist/components/get-open-in-menu-items.d.ts +2 -1
- package/dist/components/get-open-in-menu-items.js +17 -1
- package/dist/components/selected-outline-drag.d.ts +1 -6
- package/dist/components/selected-outline-drag.js +22 -6
- package/dist/components/selected-outline-geometry.d.ts +2 -18
- package/dist/components/selected-outline-measurement.d.ts +23 -41
- package/dist/components/selected-outline-measurement.js +14 -252
- package/dist/components/selected-outline-order.d.ts +4 -11
- package/dist/components/selected-outline-order.js +2 -254
- package/dist/components/selected-outline-snap.d.ts +1 -1
- package/dist/components/selected-outline-snap.js +2 -1
- package/dist/components/selected-outline-types.d.ts +18 -28
- package/dist/components/selected-outline-uv.d.ts +4 -4
- package/dist/components/selected-outline-uv.js +6 -111
- package/dist/components/sequence-props-api.js +0 -10
- package/dist/components/use-selected-outline-control-target.js +12 -21
- package/dist/components/wrap-jsx-node-api.d.ts +2 -0
- package/dist/components/wrap-jsx-node-api.js +13 -0
- package/dist/error-overlay/remotion-overlay/OpenInEditor.js +45 -2
- package/dist/error-overlay/remotion-overlay/StackFrame.js +32 -3
- package/dist/esm/{CaptionQueueProcessor-npa6szn1.mjs → CaptionQueueProcessor-nr7hjcga.mjs} +63 -17
- package/dist/esm/LazyModels-ajkn7fs3.mjs +12 -0
- package/dist/esm/LazyModels-g1g7cf4e.mjs +12 -0
- package/dist/esm/{TranscriptionModal-79m5wgcj.mjs → TranscriptionModal-e18bzbkb.mjs} +15 -15
- package/dist/esm/{VideoMattingModal-31pew0xj.mjs → VideoMattingModal-5bz2s4rs.mjs} +47 -65
- package/dist/esm/{VideoMattingQueueProcessor-t1hgm2rm.mjs → VideoMattingQueueProcessor-4tkj0f4k.mjs} +69 -26
- package/dist/esm/{index-v4tr1bft.mjs → index-09txs1bj.mjs} +5 -0
- package/dist/esm/{index-n5gmcvhz.mjs → index-5ycb9e9q.mjs} +2 -4
- package/dist/esm/{index-5t2dwxsk.mjs → index-890dd9b3.mjs} +259 -21
- package/dist/esm/{index-ac5550e7.mjs → index-8nt6a0mw.mjs} +3 -3
- package/dist/esm/{index-614tdz2q.mjs → index-9q9w8v9p.mjs} +3 -3
- package/dist/esm/{index-s7qa3xbw.mjs → index-c2wabcdt.mjs} +6 -6
- package/dist/esm/{index-r1gr3j3a.mjs → index-dfy1t576.mjs} +50 -1
- package/dist/esm/{index-21hxsfaa.mjs → index-dh3zk2hv.mjs} +6 -25
- package/dist/esm/{index-4zen9prq.mjs → index-dpyss74p.mjs} +6563 -5485
- package/dist/esm/{index-9x6e1dq0.mjs → index-hqxc6tzp.mjs} +40 -6
- package/dist/esm/{index-9xxg6218.mjs → index-qve7mdfp.mjs} +19 -1
- package/dist/esm/{index-e855w59j.mjs → index-s6qya2gg.mjs} +3 -5
- package/dist/esm/index-t7tbt980.mjs +103 -0
- package/dist/esm/{index-r0ejh5sy.mjs → index-t7xnxdf8.mjs} +44 -26
- package/dist/esm/index-wqc43mw0.mjs +158 -0
- package/dist/esm/{index-ppspzgn9.mjs → index-x6r9bn12.mjs} +4026 -4761
- package/dist/esm/{index-vxwg66ar.mjs → index-xac20sv4.mjs} +44 -57
- package/dist/esm/index.mjs +4 -5
- package/dist/esm/internals.mjs +13 -13
- package/dist/esm/previewEntry.mjs +18 -15
- package/dist/esm/renderEntry.mjs +5 -1
- package/dist/helpers/calculate-timeline.d.ts +5 -1
- package/dist/helpers/calculate-timeline.js +1 -1
- package/dist/helpers/checkerboard-background.d.ts +2 -2
- package/dist/helpers/colors.d.ts +132 -112
- package/dist/helpers/colors.js +117 -95
- package/dist/helpers/create-folder-tree.js +2 -1
- package/dist/helpers/editor-guide-selection.d.ts +1 -1
- package/dist/helpers/editor-ruler.js +23 -12
- package/dist/helpers/get-connected-compositions.d.ts +6 -1
- package/dist/helpers/get-connected-compositions.js +1 -1
- package/dist/helpers/get-sequence-double-click-action.js +1 -1
- package/dist/helpers/get-sequence-visible-range.d.ts +1 -1
- package/dist/helpers/get-sequence-visible-range.js +2 -5
- package/dist/helpers/get-timeline-nestedness.d.ts +1 -1
- package/dist/helpers/get-timeline-nestedness.js +1 -1
- package/dist/helpers/get-timeline-sequence-sort-key.d.ts +1 -1
- package/dist/helpers/get-timeline-sequence-sort-key.js +1 -1
- package/dist/helpers/hoverable.js +4 -4
- package/dist/helpers/inject-css.js +5 -7
- package/dist/helpers/prism-vsc-dark-plus.d.ts +1 -1
- package/dist/helpers/prism-vsc-dark-plus.js +52 -51
- package/dist/helpers/resolve-studio-color.d.ts +1 -0
- package/dist/helpers/resolve-studio-color.js +11 -0
- package/dist/helpers/studio-css-variables.d.ts +1 -0
- package/dist/helpers/studio-css-variables.js +105 -0
- package/dist/helpers/studio-pixel-ratio.d.ts +1 -0
- package/dist/helpers/studio-pixel-ratio.js +7 -0
- package/dist/helpers/timeline-node-path-key.d.ts +1 -1
- package/dist/helpers/timeline-node-path-key.js +2 -2
- package/dist/helpers/use-runtime-values.js +2 -28
- package/dist/hot-middleware-client/client.js +5 -3
- package/dist/icons/align-center-horizontal.js +2 -1
- package/dist/icons/align-left.js +2 -1
- package/dist/icons/align-right.js +2 -1
- package/dist/icons/{separation.d.ts → background-removal.d.ts} +1 -1
- package/dist/icons/background-removal.js +9 -0
- package/dist/icons/wrap.d.ts +4 -0
- package/dist/icons/wrap.js +10 -0
- package/dist/previewEntry.js +2 -0
- package/dist/renderEntry.js +2 -0
- package/dist/state/modals.d.ts +15 -1
- package/dist/state/timeline-sequence-hover.d.ts +6 -16
- package/dist/state/timeline-sequence-hover.js +6 -67
- package/package.json +20 -19
- package/dist/components/Timeline/get-easing-selection-after-keyframe-delete.d.ts +0 -15
- package/dist/components/Timeline/get-easing-selection-after-keyframe-delete.js +0 -31
- package/dist/esm/LazyModels-nh3c8h9p.mjs +0 -12
- package/dist/esm/LazyModels-rr5v8h5y.mjs +0 -12
- package/dist/esm/index-cw0pnpg5.mjs +0 -50
- package/dist/esm/index-k426ye99.mjs +0 -139
- 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
- package/dist/icons/separation.js +0 -7
- /package/dist/esm/{resolve-composition-component-location-qrp05g62.mjs → resolve-composition-component-location-2hgf6g0a.mjs} +0 -0
|
@@ -35,34 +35,27 @@ 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");
|
|
45
|
+
const SelectedOutlinePathPoints_1 = require("./SelectedOutlinePathPoints");
|
|
46
46
|
const SelectedOutlinePolygon_1 = require("./SelectedOutlinePolygon");
|
|
47
47
|
const SelectedOutlineSnapIndicators_1 = require("./SelectedOutlineSnapIndicators");
|
|
48
48
|
const SelectedOutlineTransformOriginHandle_1 = require("./SelectedOutlineTransformOriginHandle");
|
|
49
49
|
const SelectedOutlineUvControls_1 = require("./SelectedOutlineUvControls");
|
|
50
|
+
const { useCanvasOutlines } = canvas_1.CanvasInternals;
|
|
50
51
|
const outlineContainer = {
|
|
51
52
|
position: 'absolute',
|
|
52
53
|
inset: 0,
|
|
53
54
|
pointerEvents: 'none',
|
|
54
55
|
overflow: 'visible',
|
|
55
56
|
};
|
|
56
|
-
const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth, dragging, getLatestOutlineTargetByKey, outlineTargets, onDraggingChange, onContextMenuOpenChange, onSelect, scale, sequences, updateOutlinesRef, }) => {
|
|
57
|
-
var _a;
|
|
58
|
-
// Targets are derived props and can receive a new identity on every render.
|
|
59
|
-
// Keep only measured geometry in state to avoid layout-effect update loops.
|
|
60
|
-
const [outlines, setOutlines] = (0, react_1.useState)([]);
|
|
61
|
-
const outlinesRef = (0, react_1.useRef)(outlines);
|
|
57
|
+
const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth, dragging, getAllDragTargets, getLatestOutlineTargetByKey, outlineTargets, onDraggingChange, onContextMenuOpenChange, onSelect, scale, sequences, updateOutlinesRef, }) => {
|
|
62
58
|
const overlayRef = (0, react_1.useRef)(null);
|
|
63
|
-
const resizeObserverRef = (0, react_1.useRef)(null);
|
|
64
|
-
const resizeObserverAnimationFrameRef = (0, react_1.useRef)(null);
|
|
65
|
-
const observedOutlineElementsRef = (0, react_1.useRef)(new Set());
|
|
66
59
|
const contextMenuOpenHandlersRef = (0, react_1.useRef)(new Map());
|
|
67
60
|
const registerContextMenuOpen = (0, react_1.useCallback)((key, handler) => {
|
|
68
61
|
if (handler === null) {
|
|
@@ -86,121 +79,15 @@ const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth
|
|
|
86
79
|
const key = polygon.getAttribute(SelectedOutlinePolygon_1.SELECTED_OUTLINE_KEY_ATTR);
|
|
87
80
|
return key === null ? false : ((_b = (_a = getContextMenuOpenByKey(key)) === null || _a === void 0 ? void 0 : _a()) !== null && _b !== void 0 ? _b : false);
|
|
88
81
|
}, [getContextMenuOpenByKey]);
|
|
89
|
-
const
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
outlinesRef.current = [];
|
|
99
|
-
setOutlines(outlinesRef.current);
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
const nextOutlines = (0, selected_outline_measurement_1.measureOutlines)(overlayRef.current, outlineTargets, hoveredTimelineNodePathKey);
|
|
103
|
-
if ((0, selected_outline_measurement_1.outlinesAreEqual)(outlinesRef.current, nextOutlines)) {
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
outlinesRef.current = nextOutlines;
|
|
107
|
-
setOutlines(nextOutlines);
|
|
108
|
-
}, [hoveredTimelineNodePathKey, outlineTargets]);
|
|
109
|
-
(0, react_1.useLayoutEffect)(() => {
|
|
110
|
-
updateOutlinesRef.current = updateOutlines;
|
|
111
|
-
updateOutlines();
|
|
112
|
-
return () => {
|
|
113
|
-
if (updateOutlinesRef.current === updateOutlines) {
|
|
114
|
-
updateOutlinesRef.current = () => undefined;
|
|
115
|
-
}
|
|
116
|
-
};
|
|
117
|
-
}, [updateOutlines, updateOutlinesRef]);
|
|
118
|
-
(0, react_1.useLayoutEffect)(() => {
|
|
119
|
-
if (typeof ResizeObserver === 'undefined') {
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
const resizeObserver = new ResizeObserver(() => {
|
|
123
|
-
if (resizeObserverAnimationFrameRef.current !== null) {
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
resizeObserverAnimationFrameRef.current = requestAnimationFrame(() => {
|
|
127
|
-
resizeObserverAnimationFrameRef.current = null;
|
|
128
|
-
updateOutlinesRef.current();
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
resizeObserverRef.current = resizeObserver;
|
|
132
|
-
return () => {
|
|
133
|
-
if (resizeObserverAnimationFrameRef.current !== null) {
|
|
134
|
-
cancelAnimationFrame(resizeObserverAnimationFrameRef.current);
|
|
135
|
-
resizeObserverAnimationFrameRef.current = null;
|
|
136
|
-
}
|
|
137
|
-
resizeObserver.disconnect();
|
|
138
|
-
resizeObserverRef.current = null;
|
|
139
|
-
observedOutlineElementsRef.current = new Set();
|
|
140
|
-
};
|
|
141
|
-
}, [updateOutlinesRef]);
|
|
142
|
-
(0, react_1.useLayoutEffect)(() => {
|
|
143
|
-
const resizeObserver = resizeObserverRef.current;
|
|
144
|
-
if (resizeObserver === null) {
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
const nextObservedElements = new Set();
|
|
148
|
-
if (overlayRef.current !== null) {
|
|
149
|
-
nextObservedElements.add(overlayRef.current);
|
|
150
|
-
}
|
|
151
|
-
for (const target of outlineTargets) {
|
|
152
|
-
if (target.ref.current !== null) {
|
|
153
|
-
nextObservedElements.add(target.ref.current);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
for (const element of observedOutlineElementsRef.current) {
|
|
157
|
-
if (!nextObservedElements.has(element)) {
|
|
158
|
-
resizeObserver.unobserve(element);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
for (const element of nextObservedElements) {
|
|
162
|
-
if (!observedOutlineElementsRef.current.has(element)) {
|
|
163
|
-
resizeObserver.observe(element);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
observedOutlineElementsRef.current = nextObservedElements;
|
|
167
|
-
}, [outlineTargets]);
|
|
168
|
-
const targetsByKey = (0, react_1.useMemo)(() => {
|
|
169
|
-
return new Map(outlineTargets.map((target) => [target.key, target]));
|
|
170
|
-
}, [outlineTargets]);
|
|
171
|
-
(0, react_1.useEffect)(() => {
|
|
172
|
-
if ((hoveredSequence === null || hoveredSequence === void 0 ? void 0 : hoveredSequence.source) === 'canvas' &&
|
|
173
|
-
!outlineTargets.some((target) => target.key === hoveredSequence.key)) {
|
|
174
|
-
setHoveredSequence((currentHover) => (currentHover === null || currentHover === void 0 ? void 0 : currentHover.source) === 'canvas' ? null : currentHover);
|
|
175
|
-
}
|
|
176
|
-
}, [hoveredSequence, outlineTargets, setHoveredSequence]);
|
|
177
|
-
// Reordering a captured SVG target can cancel the active pointer session.
|
|
178
|
-
const outlineRenderingOrderRef = (0, react_1.useRef)([]);
|
|
179
|
-
const outlinesForRendering = (0, react_1.useMemo)(() => {
|
|
180
|
-
if (!dragging || outlineRenderingOrderRef.current.length === 0) {
|
|
181
|
-
const orderedOutlines = (0, selected_outline_order_1.orderOutlinesForRendering)({
|
|
182
|
-
outlines,
|
|
183
|
-
sequences,
|
|
184
|
-
targetsByKey,
|
|
185
|
-
});
|
|
186
|
-
outlineRenderingOrderRef.current = orderedOutlines.map((outline) => outline.key);
|
|
187
|
-
return orderedOutlines;
|
|
188
|
-
}
|
|
189
|
-
const currentOutlinesByKey = new Map(outlines.map((outline) => [outline.key, outline]));
|
|
190
|
-
const frozenKeys = new Set(outlineRenderingOrderRef.current);
|
|
191
|
-
const newOutlines = outlines.filter((outline) => !frozenKeys.has(outline.key));
|
|
192
|
-
outlineRenderingOrderRef.current = [
|
|
193
|
-
...outlineRenderingOrderRef.current,
|
|
194
|
-
...newOutlines.map((outline) => outline.key),
|
|
195
|
-
];
|
|
196
|
-
return outlineRenderingOrderRef.current.flatMap((key) => {
|
|
197
|
-
const outline = currentOutlinesByKey.get(key);
|
|
198
|
-
return outline === undefined ? [] : [outline];
|
|
199
|
-
});
|
|
200
|
-
}, [dragging, outlines, sequences, targetsByKey]);
|
|
201
|
-
const outlinesByKey = (0, react_1.useMemo)(() => {
|
|
202
|
-
return new Map(outlines.map((outline) => [outline.key, outline]));
|
|
203
|
-
}, [outlines]);
|
|
82
|
+
const hoverController = (0, react_1.useContext)(timeline_sequence_hover_1.TimelineSequenceHoverContext);
|
|
83
|
+
const { outlinesForRendering, outlinesByKey, targetsByKey, hoveredNodePathKey, } = useCanvasOutlines({
|
|
84
|
+
containerRef: overlayRef,
|
|
85
|
+
targets: outlineTargets,
|
|
86
|
+
sequences,
|
|
87
|
+
hoverController,
|
|
88
|
+
freezeOrder: dragging,
|
|
89
|
+
updateOutlinesRef,
|
|
90
|
+
});
|
|
204
91
|
const { outlinesForEditingHandles, outlinesForTransformOrigin, outlinesForUvHandles, } = (0, react_1.useMemo)(() => {
|
|
205
92
|
const editingHandles = [];
|
|
206
93
|
const transformOrigin = [];
|
|
@@ -232,15 +119,6 @@ const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth
|
|
|
232
119
|
targetsRef.current = outlineTargets;
|
|
233
120
|
outlinesByKeyRef.current = outlinesByKey;
|
|
234
121
|
}, [outlineTargets, outlinesByKey]);
|
|
235
|
-
const getAllDragTargets = (0, react_1.useCallback)(() => targetsRef.current.flatMap((target) => {
|
|
236
|
-
var _a;
|
|
237
|
-
var _b;
|
|
238
|
-
if (!target.selected && !target.containsSelection) {
|
|
239
|
-
return [];
|
|
240
|
-
}
|
|
241
|
-
const drag = (_b = (_a = getLatestOutlineTargetByKey(target.key)) === null || _a === void 0 ? void 0 : _a.drag) !== null && _b !== void 0 ? _b : null;
|
|
242
|
-
return drag === null ? [] : [drag];
|
|
243
|
-
}), [getLatestOutlineTargetByKey]);
|
|
244
122
|
const getAllDragOutlines = (0, react_1.useCallback)(() => targetsRef.current.flatMap((target) => {
|
|
245
123
|
var _a;
|
|
246
124
|
var _b;
|
|
@@ -254,6 +132,11 @@ const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth
|
|
|
254
132
|
const getAllScaleDragTargets = (0, react_1.useCallback)(() => targetsRef.current.flatMap((target) => {
|
|
255
133
|
var _a;
|
|
256
134
|
var _b;
|
|
135
|
+
const outline = outlinesByKeyRef.current.get(target.key);
|
|
136
|
+
if (outline !== undefined && outline.path !== null) {
|
|
137
|
+
// Path outlines do not render scale handles.
|
|
138
|
+
return [];
|
|
139
|
+
}
|
|
257
140
|
const scaleDrag = target.selected
|
|
258
141
|
? ((_b = (_a = getLatestOutlineTargetByKey(target.key)) === null || _a === void 0 ? void 0 : _a.scaleDrag) !== null && _b !== void 0 ? _b : null)
|
|
259
142
|
: null;
|
|
@@ -262,6 +145,11 @@ const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth
|
|
|
262
145
|
const getAllRotationDragTargets = (0, react_1.useCallback)(() => targetsRef.current.flatMap((target) => {
|
|
263
146
|
var _a;
|
|
264
147
|
var _b;
|
|
148
|
+
const outline = outlinesByKeyRef.current.get(target.key);
|
|
149
|
+
if (outline !== undefined && outline.path !== null) {
|
|
150
|
+
// Path outlines do not render rotation handles.
|
|
151
|
+
return [];
|
|
152
|
+
}
|
|
265
153
|
const rotationDrag = target.selected
|
|
266
154
|
? ((_b = (_a = getLatestOutlineTargetByKey(target.key)) === null || _a === void 0 ? void 0 : _a.rotationDrag) !== null && _b !== void 0 ? _b : null)
|
|
267
155
|
: null;
|
|
@@ -270,6 +158,14 @@ const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth
|
|
|
270
158
|
const updateSnapPointsRef = (0, react_1.useRef)(() => undefined);
|
|
271
159
|
const onSnapPointsChange = (0, react_1.useCallback)((snapPoints) => updateSnapPointsRef.current(snapPoints), []);
|
|
272
160
|
return (jsx_runtime_1.jsxs("svg", { ref: overlayRef, style: outlineContainer, width: "100%", height: "100%", "aria-hidden": "true", children: [
|
|
273
|
-
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))),
|
|
161
|
+
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))), outlinesForRendering.map((outline) => {
|
|
162
|
+
var _a;
|
|
163
|
+
var _b;
|
|
164
|
+
const target = targetsByKey.get(outline.key);
|
|
165
|
+
const pathDrag = (target === null || target === void 0 ? void 0 : target.selected)
|
|
166
|
+
? ((_b = (_a = getLatestOutlineTargetByKey(outline.key)) === null || _a === void 0 ? void 0 : _a.pathDrag) !== null && _b !== void 0 ? _b : null)
|
|
167
|
+
: null;
|
|
168
|
+
return outline.path !== null && pathDrag !== null ? (jsx_runtime_1.jsx(SelectedOutlinePathPoints_1.SelectedOutlinePathPoints, { outline: outline, pathDrag: pathDrag, onDraggingChange: onDraggingChange }, `${outline.key}-path-points`)) : null;
|
|
169
|
+
}), 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`)))] }));
|
|
274
170
|
};
|
|
275
171
|
exports.SelectedOutlineRenderer = react_1.default.memo(SelectedOutlineRendererUnmemoized);
|
|
@@ -48,6 +48,7 @@ const selected_outline_measurement_1 = require("./selected-outline-measurement")
|
|
|
48
48
|
const selected_outline_types_1 = require("./selected-outline-types");
|
|
49
49
|
const selected_outline_uv_1 = require("./selected-outline-uv");
|
|
50
50
|
const call_add_keyframe_1 = require("./Timeline/call-add-keyframe");
|
|
51
|
+
const get_timeline_keyframes_1 = require("./Timeline/get-timeline-keyframes");
|
|
51
52
|
const save_sequence_prop_1 = require("./Timeline/save-sequence-prop");
|
|
52
53
|
const timeline_rotation_utils_1 = require("./Timeline/timeline-rotation-utils");
|
|
53
54
|
const timeline_translate_utils_1 = require("./Timeline/timeline-translate-utils");
|
|
@@ -183,7 +184,7 @@ const SelectedOutlineTransformOriginHandle = ({ getLatestTargetByKey, layoutTarg
|
|
|
183
184
|
setDragOverrides(transformOriginDrag.nodePath, selected_outline_types_1.transformOriginFieldKey, transformOriginDrag.originPropStatus.status === 'keyframed'
|
|
184
185
|
? remotion_1.Internals.makeKeyframedDragOverride({
|
|
185
186
|
status: transformOriginDrag.originPropStatus,
|
|
186
|
-
frame: transformOriginDrag.sourceFrame,
|
|
187
|
+
frame: (0, get_timeline_keyframes_1.resolveKeyframeSourceFrame)(transformOriginDrag.sourceFrame, transformOriginDrag.originPropStatus),
|
|
187
188
|
value: origin,
|
|
188
189
|
})
|
|
189
190
|
: remotion_1.Internals.makeStaticDragOverride(origin));
|
|
@@ -191,7 +192,7 @@ const SelectedOutlineTransformOriginHandle = ({ getLatestTargetByKey, layoutTarg
|
|
|
191
192
|
? transformOriginDrag.originPropStatus.status === 'keyframed'
|
|
192
193
|
? remotion_1.Internals.makeKeyframedDragOverride({
|
|
193
194
|
status: transformOriginDrag.translatePropStatus,
|
|
194
|
-
frame: transformOriginDrag.sourceFrame,
|
|
195
|
+
frame: (0, get_timeline_keyframes_1.resolveKeyframeSourceFrame)(transformOriginDrag.sourceFrame, transformOriginDrag.translatePropStatus),
|
|
195
196
|
value: translate,
|
|
196
197
|
})
|
|
197
198
|
: {
|
|
@@ -47,6 +47,7 @@ const selected_outline_measurement_1 = require("./selected-outline-measurement")
|
|
|
47
47
|
const selected_outline_measurement_2 = require("./selected-outline-measurement");
|
|
48
48
|
const selected_outline_uv_1 = require("./selected-outline-uv");
|
|
49
49
|
const call_add_keyframe_1 = require("./Timeline/call-add-keyframe");
|
|
50
|
+
const get_timeline_keyframes_1 = require("./Timeline/get-timeline-keyframes");
|
|
50
51
|
const save_effect_prop_1 = require("./Timeline/save-effect-prop");
|
|
51
52
|
const TimelineSelection_1 = require("./Timeline/TimelineSelection");
|
|
52
53
|
const getSvgPointFromPointerEvent = ({ event, rect, }) => {
|
|
@@ -113,7 +114,7 @@ const saveNumericEffectField = ({ clearEffectDragOverrides, clientId, effectInde
|
|
|
113
114
|
nodePath,
|
|
114
115
|
effectIndex,
|
|
115
116
|
fieldKey: field.fieldKey,
|
|
116
|
-
sourceFrame,
|
|
117
|
+
sourceFrame: (0, get_timeline_keyframes_1.resolveKeyframeSourceFrame)(sourceFrame, field.propStatus),
|
|
117
118
|
value: lastValue,
|
|
118
119
|
schema,
|
|
119
120
|
setPropStatuses,
|
|
@@ -200,7 +201,7 @@ const SelectedUvEllipseStartHandle = ({ control, onDraggingChange, outline }) =>
|
|
|
200
201
|
setEffectDragOverrides(control.handle.nodePath, control.handle.effectIndex, field.fieldKey, field.propStatus.status === 'keyframed'
|
|
201
202
|
? remotion_1.Internals.makeKeyframedDragOverride({
|
|
202
203
|
status: field.propStatus,
|
|
203
|
-
frame: control.handle.sourceFrame,
|
|
204
|
+
frame: (0, get_timeline_keyframes_1.resolveKeyframeSourceFrame)(control.handle.sourceFrame, field.propStatus),
|
|
204
205
|
value: nextValue,
|
|
205
206
|
})
|
|
206
207
|
: remotion_1.Internals.makeStaticDragOverride(nextValue));
|
|
@@ -300,7 +301,7 @@ const SelectedUvEllipseResizeHandle = ({ axis, control, onDraggingChange, outlin
|
|
|
300
301
|
setEffectDragOverrides(control.handle.nodePath, control.handle.effectIndex, field.fieldKey, field.propStatus.status === 'keyframed'
|
|
301
302
|
? remotion_1.Internals.makeKeyframedDragOverride({
|
|
302
303
|
status: field.propStatus,
|
|
303
|
-
frame: control.handle.sourceFrame,
|
|
304
|
+
frame: (0, get_timeline_keyframes_1.resolveKeyframeSourceFrame)(control.handle.sourceFrame, field.propStatus),
|
|
304
305
|
value: nextValue,
|
|
305
306
|
})
|
|
306
307
|
: remotion_1.Internals.makeStaticDragOverride(nextValue));
|
|
@@ -431,7 +432,7 @@ const SelectedUvEllipseRotationHandle = ({ control, onDraggingChange }) => {
|
|
|
431
432
|
setEffectDragOverrides(control.handle.nodePath, control.handle.effectIndex, field.fieldKey, field.propStatus.status === 'keyframed'
|
|
432
433
|
? remotion_1.Internals.makeKeyframedDragOverride({
|
|
433
434
|
status: field.propStatus,
|
|
434
|
-
frame: control.handle.sourceFrame,
|
|
435
|
+
frame: (0, get_timeline_keyframes_1.resolveKeyframeSourceFrame)(control.handle.sourceFrame, field.propStatus),
|
|
435
436
|
value: nextValue,
|
|
436
437
|
})
|
|
437
438
|
: remotion_1.Internals.makeStaticDragOverride(nextValue));
|
|
@@ -575,7 +576,7 @@ const SelectedUvHandleCircle = ({ handle, nodePathInfo, onDraggingChange, onSele
|
|
|
575
576
|
setEffectDragOverrides(handle.nodePath, handle.effectIndex, handle.fieldKey, handle.propStatus.status === 'keyframed'
|
|
576
577
|
? remotion_1.Internals.makeKeyframedDragOverride({
|
|
577
578
|
status: handle.propStatus,
|
|
578
|
-
frame: handle.sourceFrame,
|
|
579
|
+
frame: (0, get_timeline_keyframes_1.resolveKeyframeSourceFrame)(handle.sourceFrame, handle.propStatus),
|
|
579
580
|
value: nextValue,
|
|
580
581
|
})
|
|
581
582
|
: remotion_1.Internals.makeStaticDragOverride(nextValue));
|
|
@@ -624,7 +625,7 @@ const SelectedUvHandleCircle = ({ handle, nodePathInfo, onDraggingChange, onSele
|
|
|
624
625
|
nodePath: handle.nodePath,
|
|
625
626
|
effectIndex: handle.effectIndex,
|
|
626
627
|
fieldKey: handle.fieldKey,
|
|
627
|
-
sourceFrame: handle.sourceFrame,
|
|
628
|
+
sourceFrame: (0, get_timeline_keyframes_1.resolveKeyframeSourceFrame)(handle.sourceFrame, handle.propStatus),
|
|
628
629
|
value: lastValue,
|
|
629
630
|
schema: handle.schema,
|
|
630
631
|
setPropStatuses,
|
|
@@ -684,7 +685,11 @@ const useSelectedOutlineUvTarget = (layoutTarget) => {
|
|
|
684
685
|
nodePath: layoutTarget.nodePathInfo.sequenceSubscriptionKey,
|
|
685
686
|
selectedEffects: selectedEffectsBySequenceKey.get(layoutTarget.key),
|
|
686
687
|
sequence: layoutTarget.sequence,
|
|
687
|
-
sourceFrame:
|
|
688
|
+
sourceFrame: {
|
|
689
|
+
displayFrame: timelinePosition,
|
|
690
|
+
keyframeDisplayOffset: layoutTarget.keyframeDisplayOffset,
|
|
691
|
+
keyframePlaybackRate: layoutTarget.keyframePlaybackRate,
|
|
692
|
+
},
|
|
688
693
|
}),
|
|
689
694
|
};
|
|
690
695
|
}, [
|
|
@@ -8,6 +8,7 @@ const can_show_updates_1 = require("../helpers/can-show-updates");
|
|
|
8
8
|
const client_id_1 = require("../helpers/client-id");
|
|
9
9
|
const settings_tab_availability_1 = require("../helpers/settings-tab-availability");
|
|
10
10
|
const apps_1 = require("../icons/apps");
|
|
11
|
+
const browse_elements_1 = require("../icons/browse-elements");
|
|
11
12
|
const cloud_download_1 = require("../icons/cloud-download");
|
|
12
13
|
const keyboard_1 = require("../icons/keyboard");
|
|
13
14
|
const license_1 = require("../icons/license");
|
|
@@ -19,6 +20,7 @@ const video_1 = require("../icons/video");
|
|
|
19
20
|
const modals_1 = require("../state/modals");
|
|
20
21
|
const ConfigureDefaultEditorModal_1 = require("./ConfigureDefaultEditorModal");
|
|
21
22
|
const ConfigureLicenseModal_1 = require("./ConfigureLicenseModal");
|
|
23
|
+
const ElementLibrariesSettings_1 = require("./ElementLibrariesSettings");
|
|
22
24
|
const InstallPackage_1 = require("./InstallPackage");
|
|
23
25
|
const KeyboardShortcutsSettings_1 = require("./KeyboardShortcutsSettings");
|
|
24
26
|
const is_menu_item_1 = require("./Menu/is-menu-item");
|
|
@@ -63,6 +65,20 @@ const keyboardIcon = {
|
|
|
63
65
|
height: 16,
|
|
64
66
|
width: 16,
|
|
65
67
|
};
|
|
68
|
+
const elementsIcon = {
|
|
69
|
+
...render_modals_1.icon,
|
|
70
|
+
flexShrink: 0,
|
|
71
|
+
height: 22,
|
|
72
|
+
width: 22,
|
|
73
|
+
};
|
|
74
|
+
const elementsIconContainer = {
|
|
75
|
+
...render_modals_1.iconContainer,
|
|
76
|
+
flexShrink: 0,
|
|
77
|
+
height: 22,
|
|
78
|
+
marginLeft: -2,
|
|
79
|
+
marginRight: 6,
|
|
80
|
+
width: 22,
|
|
81
|
+
};
|
|
66
82
|
const SettingsModal = ({ initialPublicLicenseKey, initialTab }) => {
|
|
67
83
|
const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
|
|
68
84
|
const { setPublicLicenseKey } = (0, SettingsContext_1.useSettings)();
|
|
@@ -93,6 +109,7 @@ const SettingsModal = ({ initialPublicLicenseKey, initialTab }) => {
|
|
|
93
109
|
}), [isBrowserStudio, packageManager, previewServerConnected, showUpdates]);
|
|
94
110
|
const safeInitialTab = (0, settings_tab_availability_1.getSafeSettingsTab)(initialTab, availableTabs);
|
|
95
111
|
const [tab, setTab] = (0, react_1.useState)(safeInitialTab);
|
|
112
|
+
const [studioPane, setStudioPane] = (0, react_1.useState)('general');
|
|
96
113
|
const [openedTabs, setOpenedTabs] = (0, react_1.useState)([safeInitialTab]);
|
|
97
114
|
const [packagesFooterContainer, setPackagesFooterContainer] = (0, react_1.useState)(null);
|
|
98
115
|
const dismiss = (0, react_1.useCallback)(() => {
|
|
@@ -118,13 +135,23 @@ const SettingsModal = ({ initialPublicLicenseKey, initialTab }) => {
|
|
|
118
135
|
}, [initialPublicLicenseKey, setPublicLicenseKey]);
|
|
119
136
|
return (jsx_runtime_1.jsx(DismissableModal_1.DismissableModal, { panelStyle: render_modals_1.outerModalStyle, children: jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
120
137
|
jsx_runtime_1.jsx(ModalHeader_1.ModalHeader, { title: "Settings", onClose: dismiss }), jsx_runtime_1.jsxs("div", { style: render_modals_1.horizontalLayout, children: [
|
|
121
|
-
jsx_runtime_1.jsxs("div", { style: settingsLeftSidebar, children: [availableTabs.includes('studio') ? (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'studio'
|
|
138
|
+
jsx_runtime_1.jsxs("div", { style: settingsLeftSidebar, children: [availableTabs.includes('studio') ? (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'studio' && studioPane === 'general', onClick: () => {
|
|
139
|
+
selectTab('studio');
|
|
140
|
+
setStudioPane('general');
|
|
141
|
+
}, 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" })) : null, availableTabs.includes('rendering') ? (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" })) : null, 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" }), availableTabs.includes('packages') ? (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, availableTabs.includes('skills') ? (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" })) : null, availableTabs.includes('studio') ? (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'studio' && studioPane === 'elements', onClick: () => {
|
|
142
|
+
selectTab('studio');
|
|
143
|
+
setStudioPane('elements');
|
|
144
|
+
}, renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: elementsIconContainer, children: jsx_runtime_1.jsx(browse_elements_1.BrowseElementsIcon, { color: color, style: elementsIcon }) })), children: "Elements" })) : null, availableTabs.includes('models') ? (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'models', onClick: () => selectTab('models'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(models_1.ModelsIcon, { color: color, style: render_modals_1.icon }) })), children: "Models" })) : null, availableTabs.includes('apps') ? (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" })) : null, availableTabs.includes('license') ? (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" })) : null, availableTabs.includes('updates') ? (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'updates', onClick: () => selectTab('updates'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(cloud_download_1.CloudDownloadIcon, { color: color, style: render_modals_1.icon }) })), children: "Updates" })) : null] }), availableTabs.includes('packages') &&
|
|
122
145
|
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, availableTabs.includes('apps') && 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, availableTabs.includes('models') && openedTabs.includes('models') ? (jsx_runtime_1.jsx("div", { style: tab === 'models' ? settingsOptionsPanel : hiddenPanel, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: jsx_runtime_1.jsx(ModelsSettings_1.ModelsSettings, {}) })) : null, availableTabs.includes('license') &&
|
|
123
146
|
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, availableTabs.includes('skills') && 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, availableTabs.includes('rendering') &&
|
|
124
|
-
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, availableTabs.includes('studio') && openedTabs.includes('studio') ? (jsx_runtime_1.jsx("div", { style: tab === 'studio'
|
|
147
|
+
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, availableTabs.includes('studio') && openedTabs.includes('studio') ? (jsx_runtime_1.jsx("div", { style: tab === 'studio' && studioPane === 'general'
|
|
148
|
+
? settingsOptionsPanel
|
|
149
|
+
: hiddenPanel, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: jsx_runtime_1.jsx(StudioSettings_1.StudioSettings, {}) })) : null, availableTabs.includes('studio') && openedTabs.includes('studio') ? (jsx_runtime_1.jsx("div", { style: tab === 'studio' && studioPane === 'elements'
|
|
150
|
+
? settingsOptionsPanel
|
|
151
|
+
: hiddenPanel, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: jsx_runtime_1.jsx(ElementLibrariesSettings_1.ElementLibrariesSettings, {}) })) : null, availableTabs.includes('updates') &&
|
|
125
152
|
openedTabs.includes('updates') ? (jsx_runtime_1.jsx("div", { style: tab === 'updates' ? settingsOptionsPanel : hiddenPanel, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: jsx_runtime_1.jsx(UpdatesSettings_1.UpdatesSettings, {}) })) : null] }), tab === 'packages' ? (jsx_runtime_1.jsx("div", { ref: setPackagesFooterContainer })) : !canEditConfig ||
|
|
126
153
|
tab === 'models' ||
|
|
127
154
|
tab === 'updates' ||
|
|
128
|
-
tab === 'skills' ? null : (jsx_runtime_1.jsx(SettingsModalFooter_1.SettingsModalFooter, { showLicenseFaq: tab === 'license' }))] }) }));
|
|
155
|
+
tab === 'skills' ? null : (jsx_runtime_1.jsx(SettingsModalFooter_1.SettingsModalFooter, { showAboutElements: tab === 'studio' && studioPane === 'elements', showLicenseFaq: tab === 'license' }))] }) }));
|
|
129
156
|
};
|
|
130
157
|
exports.SettingsModal = SettingsModal;
|
|
@@ -44,7 +44,7 @@ const externalLinkIndicator = {
|
|
|
44
44
|
verticalAlign: -2,
|
|
45
45
|
width: 12,
|
|
46
46
|
};
|
|
47
|
-
const SettingsModalFooter = ({ showLicenseFaq }) => {
|
|
47
|
+
const SettingsModalFooter = ({ showAboutElements, showLicenseFaq }) => {
|
|
48
48
|
const { restartRequired } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
49
49
|
const [restarting, setRestarting] = (0, react_1.useState)(false);
|
|
50
50
|
const configFileLocation = (0, react_1.useMemo)(() => {
|
|
@@ -57,6 +57,9 @@ const SettingsModalFooter = ({ showLicenseFaq }) => {
|
|
|
57
57
|
const openLicenseFaq = (0, react_1.useCallback)(() => {
|
|
58
58
|
window.open('https://www.remotion.dev/docs/license/faq', '_blank', 'noopener,noreferrer');
|
|
59
59
|
}, []);
|
|
60
|
+
const openAboutElements = (0, react_1.useCallback)(() => {
|
|
61
|
+
window.open('https://www.remotion.dev/elements', '_blank', 'noopener,noreferrer');
|
|
62
|
+
}, []);
|
|
60
63
|
const restart = (0, react_1.useCallback)(() => {
|
|
61
64
|
setRestarting(true);
|
|
62
65
|
(0, restart_studio_1.restartStudio)().catch((error) => {
|
|
@@ -67,8 +70,9 @@ const SettingsModalFooter = ({ showLicenseFaq }) => {
|
|
|
67
70
|
return (jsx_runtime_1.jsx(ModalFooter_1.ModalFooterContainer, { style: footer, children: jsx_runtime_1.jsxs("div", { style: footerRow, children: [
|
|
68
71
|
jsx_runtime_1.jsx("div", { style: configFileHint, children: restartRequired ? ('Restart the server to apply changes') : (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: ["Changes save to",
|
|
69
72
|
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" }), showTooltips: false })
|
|
70
|
-
] })) }), restartRequired ? (jsx_runtime_1.jsx(ModalButton_1.ModalButton, { disabled: restarting, onClick: restart, size: "compact", title: "Restart Studio to apply config file changes", children: restarting ? 'Restarting...' : 'Restart Studio' })) : showLicenseFaq ? (jsx_runtime_1.jsxs(common_1.InspectorQuickAction, { disabled: false, onClick: openLicenseFaq, style: { flex: 'none', width: 'fit-content' }, title:
|
|
71
|
-
|
|
73
|
+
] })) }), restartRequired ? (jsx_runtime_1.jsx(ModalButton_1.ModalButton, { disabled: restarting, onClick: restart, size: "compact", title: "Restart Studio to apply config file changes", children: restarting ? 'Restarting...' : 'Restart Studio' })) : showLicenseFaq || showAboutElements ? (jsx_runtime_1.jsxs(common_1.InspectorQuickAction, { disabled: false, onClick: showLicenseFaq ? openLicenseFaq : openAboutElements, style: { flex: 'none', width: 'fit-content' }, title: showLicenseFaq
|
|
74
|
+
? 'Open the Remotion License FAQ in a new tab'
|
|
75
|
+
: 'Open Remotion Elements in a new tab', children: [showLicenseFaq ? 'License FAQ' : 'About Elements', 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" }) })
|
|
72
76
|
] })) : null] }) }));
|
|
73
77
|
};
|
|
74
78
|
exports.SettingsModalFooter = SettingsModalFooter;
|
|
@@ -11,7 +11,7 @@ const ShowOutlinesProvider = ({ children }) => {
|
|
|
11
11
|
const timelineSequenceHoverStore = (0, react_1.useMemo)(() => (0, timeline_sequence_hover_1.createTimelineSequenceHoverStore)(), []);
|
|
12
12
|
(0, react_1.useEffect)(() => {
|
|
13
13
|
const onPointerLeave = () => {
|
|
14
|
-
timelineSequenceHoverStore.
|
|
14
|
+
timelineSequenceHoverStore.clear('timeline');
|
|
15
15
|
};
|
|
16
16
|
window.addEventListener('pointerleave', onPointerLeave);
|
|
17
17
|
window.addEventListener(browserStudioPointerLeaveEvent, onPointerLeave);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { GetRemotionSkillsInfoResponse } from '@remotion/studio-shared';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
export declare const SkillSettingsRow: React.FC<{
|
|
4
|
-
readonly isLast: boolean;
|
|
5
4
|
readonly skill: GetRemotionSkillsInfoResponse['skills'][number];
|
|
6
5
|
}>;
|
|
7
6
|
export declare const SkillsSettings: React.FC;
|
|
@@ -10,7 +10,9 @@ const use_copy_feedback_1 = require("../helpers/use-copy-feedback");
|
|
|
10
10
|
const check_circle_filled_1 = require("../icons/check-circle-filled");
|
|
11
11
|
const cloud_download_1 = require("../icons/cloud-download");
|
|
12
12
|
const copy_1 = require("../icons/copy");
|
|
13
|
+
const skills_1 = require("../icons/skills");
|
|
13
14
|
const trash_1 = require("../icons/trash");
|
|
15
|
+
const ActionTooltip_1 = require("./ActionTooltip");
|
|
14
16
|
const InlineAction_1 = require("./InlineAction");
|
|
15
17
|
const ValidationMessage_1 = require("./NewComposition/ValidationMessage");
|
|
16
18
|
const NotificationCenter_1 = require("./Notifications/NotificationCenter");
|
|
@@ -33,7 +35,7 @@ const description = {
|
|
|
33
35
|
};
|
|
34
36
|
const commandField = {
|
|
35
37
|
alignItems: 'center',
|
|
36
|
-
backgroundColor:
|
|
38
|
+
backgroundColor: colors_1.BLACK_ALPHA_22,
|
|
37
39
|
borderRadius: 4,
|
|
38
40
|
display: 'flex',
|
|
39
41
|
marginTop: 8,
|
|
@@ -59,15 +61,14 @@ const list = {
|
|
|
59
61
|
};
|
|
60
62
|
const skillRow = {
|
|
61
63
|
alignItems: 'center',
|
|
62
|
-
borderBottom: colors_1.BORDER_WHITE_ALPHA_12,
|
|
63
64
|
display: 'flex',
|
|
64
65
|
gap: 10,
|
|
65
66
|
minHeight: 38,
|
|
66
|
-
padding: '0 10px',
|
|
67
67
|
};
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
const skillIcon = {
|
|
69
|
+
flexShrink: 0,
|
|
70
|
+
height: 16,
|
|
71
|
+
width: 16,
|
|
71
72
|
};
|
|
72
73
|
const statusIcon = {
|
|
73
74
|
flexShrink: 0,
|
|
@@ -75,7 +76,7 @@ const statusIcon = {
|
|
|
75
76
|
width: 14,
|
|
76
77
|
};
|
|
77
78
|
const skillName = {
|
|
78
|
-
color: colors_1.
|
|
79
|
+
color: colors_1.LIGHT_TEXT,
|
|
79
80
|
flex: 1,
|
|
80
81
|
fontFamily: 'monospace',
|
|
81
82
|
fontSize: 13,
|
|
@@ -107,7 +108,7 @@ const loading = {
|
|
|
107
108
|
...description,
|
|
108
109
|
marginTop: 14,
|
|
109
110
|
};
|
|
110
|
-
const SkillSettingsRow = ({
|
|
111
|
+
const SkillSettingsRow = ({ skill }) => {
|
|
111
112
|
const { installSkill, removeSkill, skillAction } = (0, SettingsContext_1.useSettings)();
|
|
112
113
|
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
113
114
|
const canInstall = !window.remotion_isReadOnlyStudio &&
|
|
@@ -127,10 +128,8 @@ const SkillSettingsRow = ({ isLast, skill }) => {
|
|
|
127
128
|
const renderRemoveAction = (0, react_1.useCallback)((color) => {
|
|
128
129
|
return jsx_runtime_1.jsx(trash_1.TrashIcon, { color: color, style: actionIcon });
|
|
129
130
|
}, []);
|
|
130
|
-
return (jsx_runtime_1.jsxs("div", { role: "listitem", style:
|
|
131
|
-
jsx_runtime_1.jsxs("span", { style: skillName, children: ["/", skill.name] }), processingThisSkill ? (jsx_runtime_1.jsx("span", { style: status, children: skillAction.type === 'installing' ? 'Installing…' : 'Removing…' })) : installedLocation ? (jsx_runtime_1.jsx("span", { style: status, children: installedLocation })) : null, installed ? (jsx_runtime_1.jsx(check_circle_filled_1.CheckCircleFilled, { "aria-hidden": true, style: { ...statusIcon, fill: colors_1.BLUE } })) : null, processingThisSkill ? (jsx_runtime_1.jsx("span", { style: actionSlot, children: jsx_runtime_1.jsx(Spinner_1.Spinner, { duration: 0.5, size: 14 }) })) : installed && canInstall ? (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { title: skill.
|
|
132
|
-
? `Remove ${skill.name} from this project`
|
|
133
|
-
: `Remove ${skill.name} globally`, disabled: skillAction !== null, onClick: () => removeSkill(skill.name), renderAction: renderRemoveAction, variant: null })) : canInstall ? (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { title: `Install ${skill.name} in this project`, disabled: skillAction !== null, onClick: () => installSkill(skill.name), renderAction: renderInstallAction, variant: null })) : null] }));
|
|
131
|
+
return (jsx_runtime_1.jsxs("div", { role: "listitem", style: skillRow, children: [
|
|
132
|
+
jsx_runtime_1.jsx(skills_1.SkillsIcon, { "aria-hidden": true, color: colors_1.LIGHT_TEXT, style: skillIcon }), jsx_runtime_1.jsxs("span", { style: skillName, children: ["/", skill.name] }), processingThisSkill ? (jsx_runtime_1.jsx("span", { style: status, children: skillAction.type === 'installing' ? 'Installing…' : 'Removing…' })) : installedLocation ? (jsx_runtime_1.jsx("span", { style: status, children: installedLocation })) : null, installed ? (jsx_runtime_1.jsx(check_circle_filled_1.CheckCircleFilled, { "aria-hidden": true, style: { ...statusIcon, fill: colors_1.BLUE } })) : null, processingThisSkill ? (jsx_runtime_1.jsx("span", { style: actionSlot, children: jsx_runtime_1.jsx(Spinner_1.Spinner, { duration: 0.5, size: 14 }) })) : installed && canInstall ? (jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: "Uninstall", shortcut: null, delay: 800, dismissOnClick: true, children: jsx_runtime_1.jsx(InlineAction_1.InlineAction, { "aria-label": `Remove ${skill.name}`, title: "", disabled: skillAction !== null, onClick: () => removeSkill(skill.name), renderAction: renderRemoveAction, variant: null }) })) : canInstall ? (jsx_runtime_1.jsx(ActionTooltip_1.ActionTooltip, { label: "Install", shortcut: null, delay: 800, dismissOnClick: true, children: jsx_runtime_1.jsx(InlineAction_1.InlineAction, { "aria-label": `Install ${skill.name}`, title: "", disabled: skillAction !== null, onClick: () => installSkill(skill.name), renderAction: renderInstallAction, variant: null }) })) : null] }));
|
|
134
133
|
};
|
|
135
134
|
exports.SkillSettingsRow = SkillSettingsRow;
|
|
136
135
|
const SkillsSettings = () => {
|
|
@@ -159,8 +158,8 @@ const SkillsSettings = () => {
|
|
|
159
158
|
jsx_runtime_1.jsx("p", { style: description, children: "Not all skills are installed. Run this command in the project directory, then reload Studio and restart your coding agent." }), jsx_runtime_1.jsxs("div", { style: commandField, children: [
|
|
160
159
|
jsx_runtime_1.jsx("pre", { style: command, children: INSTALL_COMMAND }), jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, onClick: onCopy, renderAction: renderCopyAction, title: "Copy install command" })
|
|
161
160
|
] })
|
|
162
|
-
] })) : null, remotionSkillsInfo ? (jsx_runtime_1.jsx("div", { style: list, role: "list", "aria-label": "Remotion Agent Skills", children: remotionSkillsInfo.skills.map((skill
|
|
163
|
-
return
|
|
161
|
+
] })) : null, remotionSkillsInfo ? (jsx_runtime_1.jsx("div", { style: list, role: "list", "aria-label": "Remotion Agent Skills", children: remotionSkillsInfo.skills.map((skill) => {
|
|
162
|
+
return jsx_runtime_1.jsx(exports.SkillSettingsRow, { skill: skill }, skill.name);
|
|
164
163
|
}) })) : null] }));
|
|
165
164
|
};
|
|
166
165
|
exports.SkillsSettings = SkillsSettings;
|
|
@@ -4,7 +4,6 @@ exports.SplitterElement = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const remotion_1 = require("remotion");
|
|
7
|
-
const colors_1 = require("../../helpers/colors");
|
|
8
7
|
const SplitterContext_1 = require("./SplitterContext");
|
|
9
8
|
const SplitterElement = ({ children, type, sticky }) => {
|
|
10
9
|
const context = (0, react_1.useContext)(SplitterContext_1.SplitterContext);
|
|
@@ -44,7 +43,7 @@ const SplitterElement = ({ children, type, sticky }) => {
|
|
|
44
43
|
left: (type === 'flexer' ? 0 : context.flexValue) * 100 + '%',
|
|
45
44
|
width: (type === 'flexer' ? context.flexValue : 1 - context.flexValue) * 100 +
|
|
46
45
|
'%',
|
|
47
|
-
backgroundColor: (0, remotion_1.interpolateColors)((0, remotion_1.random)(context.flexValue), [0, 1], [
|
|
46
|
+
backgroundColor: (0, remotion_1.interpolateColors)((0, remotion_1.random)(context.flexValue), [0, 1], ['red', 'blue']),
|
|
48
47
|
};
|
|
49
48
|
}, [context.flexValue, type]);
|
|
50
49
|
return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
@@ -49,7 +49,7 @@ const currentTimeButtonStyle = {
|
|
|
49
49
|
padding: 0,
|
|
50
50
|
border: 'none',
|
|
51
51
|
lineHeight: '21px',
|
|
52
|
-
'--remotion-
|
|
52
|
+
'--remotion-studio-blue-hovered': colors_1.WHITE,
|
|
53
53
|
};
|
|
54
54
|
const currentTimeSubtitle = {
|
|
55
55
|
...(0, hoverable_1.hoverableStyle)({
|