@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
|
@@ -68,12 +68,16 @@ exports.RenderQueueContext = react_1.default.createContext({
|
|
|
68
68
|
updateCaptionJobProgress: noop,
|
|
69
69
|
markCaptionJobDone: noop,
|
|
70
70
|
markCaptionJobFailed: noop,
|
|
71
|
+
markCaptionJobCancelled: noop,
|
|
72
|
+
markCaptionJobSaving: noop,
|
|
71
73
|
removeCaptionJob: noop,
|
|
72
74
|
setProcessCaptionJobCallback: noop,
|
|
73
75
|
addVideoMattingJob: noopString,
|
|
74
76
|
updateVideoMattingJobProgress: noop,
|
|
75
77
|
markVideoMattingJobDone: noop,
|
|
76
78
|
markVideoMattingJobFailed: noop,
|
|
79
|
+
markVideoMattingJobCancelled: noop,
|
|
80
|
+
markVideoMattingJobSaving: noop,
|
|
77
81
|
removeVideoMattingJob: noop,
|
|
78
82
|
setProcessVideoMattingJobCallback: noop,
|
|
79
83
|
getAbortController: () => new AbortController(),
|
|
@@ -89,8 +93,12 @@ const RenderQueueContextProvider = ({ children }) => {
|
|
|
89
93
|
const hasActiveLocalJob = clientJobs.some((job) => job.status === 'idle' ||
|
|
90
94
|
job.status === 'running' ||
|
|
91
95
|
job.status === 'saving') ||
|
|
92
|
-
captionJobs.some((job) => job.status === 'idle' ||
|
|
93
|
-
|
|
96
|
+
captionJobs.some((job) => job.status === 'idle' ||
|
|
97
|
+
job.status === 'running' ||
|
|
98
|
+
job.status === 'saving') ||
|
|
99
|
+
videoMattingJobs.some((job) => job.status === 'idle' ||
|
|
100
|
+
job.status === 'running' ||
|
|
101
|
+
job.status === 'saving');
|
|
94
102
|
const [currentlyProcessing, setCurrentlyProcessing] = (0, react_1.useState)(null);
|
|
95
103
|
const lastLocalJobStartedAt = (0, react_1.useRef)(clientJobs.reduce((latest, job) => Math.max(latest, job.startedAt), 0));
|
|
96
104
|
const processJobCallbackRef = (0, react_1.useRef)(null);
|
|
@@ -154,7 +162,9 @@ const RenderQueueContextProvider = ({ children }) => {
|
|
|
154
162
|
status: 'running',
|
|
155
163
|
progress: {
|
|
156
164
|
detail: null,
|
|
157
|
-
message: '
|
|
165
|
+
message: 'outName' in job
|
|
166
|
+
? 'Starting background removal...'
|
|
167
|
+
: 'Starting video matting...',
|
|
158
168
|
value: 0,
|
|
159
169
|
},
|
|
160
170
|
}
|
|
@@ -283,17 +293,20 @@ const RenderQueueContextProvider = ({ children }) => {
|
|
|
283
293
|
return id;
|
|
284
294
|
}, [getLocalJobStartedAt]);
|
|
285
295
|
const updateCaptionJobProgress = (0, react_1.useCallback)((jobId, progress) => {
|
|
286
|
-
setCaptionJobs((prev) => prev.map((job) => job.id === jobId
|
|
287
|
-
|
|
296
|
+
setCaptionJobs((prev) => prev.map((job) => job.id === jobId &&
|
|
297
|
+
(job.status === 'running' || job.status === 'saving')
|
|
298
|
+
? { ...job, progress }
|
|
288
299
|
: job));
|
|
289
300
|
}, []);
|
|
290
301
|
const markCaptionJobDone = (0, react_1.useCallback)((jobId, captionCount) => {
|
|
302
|
+
(0, client_render_queue_1.deleteAbortController)(jobId);
|
|
291
303
|
setCaptionJobs((prev) => prev.map((job) => job.id === jobId
|
|
292
304
|
? { ...job, status: 'done', captionCount }
|
|
293
305
|
: job));
|
|
294
306
|
setCurrentlyProcessing((current) => (current === jobId ? null : current));
|
|
295
307
|
}, []);
|
|
296
308
|
const markCaptionJobFailed = (0, react_1.useCallback)((jobId, error) => {
|
|
309
|
+
(0, client_render_queue_1.deleteAbortController)(jobId);
|
|
297
310
|
setCaptionJobs((prev) => prev.map((job) => job.id === jobId
|
|
298
311
|
? {
|
|
299
312
|
...job,
|
|
@@ -303,12 +316,24 @@ const RenderQueueContextProvider = ({ children }) => {
|
|
|
303
316
|
: job));
|
|
304
317
|
setCurrentlyProcessing((current) => (current === jobId ? null : current));
|
|
305
318
|
}, []);
|
|
319
|
+
const markCaptionJobCancelled = (0, react_1.useCallback)((jobId) => {
|
|
320
|
+
(0, client_render_queue_1.deleteAbortController)(jobId);
|
|
321
|
+
setCaptionJobs((prev) => prev.map((job) => job.id === jobId ? { ...job, status: 'cancelled' } : job));
|
|
322
|
+
setCurrentlyProcessing((current) => (current === jobId ? null : current));
|
|
323
|
+
}, []);
|
|
324
|
+
const markCaptionJobSaving = (0, react_1.useCallback)((jobId) => {
|
|
325
|
+
setCaptionJobs((prev) => prev.map((job) => job.id === jobId && job.status === 'running'
|
|
326
|
+
? { ...job, status: 'saving' }
|
|
327
|
+
: job));
|
|
328
|
+
}, []);
|
|
306
329
|
const removeCaptionJob = (0, react_1.useCallback)((jobId) => {
|
|
307
330
|
setCaptionJobs((prev) => {
|
|
308
331
|
const jobToRemove = prev.find((job) => job.id === jobId);
|
|
309
|
-
if ((jobToRemove === null || jobToRemove === void 0 ? void 0 : jobToRemove.status) === 'running'
|
|
332
|
+
if ((jobToRemove === null || jobToRemove === void 0 ? void 0 : jobToRemove.status) === 'running' ||
|
|
333
|
+
(jobToRemove === null || jobToRemove === void 0 ? void 0 : jobToRemove.status) === 'saving') {
|
|
310
334
|
return prev;
|
|
311
335
|
}
|
|
336
|
+
(0, client_render_queue_1.deleteAbortController)(jobId);
|
|
312
337
|
return prev.filter((job) => job.id !== jobId);
|
|
313
338
|
});
|
|
314
339
|
}, []);
|
|
@@ -333,13 +358,18 @@ const RenderQueueContextProvider = ({ children }) => {
|
|
|
333
358
|
return id;
|
|
334
359
|
}, [getLocalJobStartedAt]);
|
|
335
360
|
const updateVideoMattingJobProgress = (0, react_1.useCallback)((jobId, progress) => {
|
|
336
|
-
setVideoMattingJobs((prev) => prev.map((job) => job.id === jobId
|
|
361
|
+
setVideoMattingJobs((prev) => prev.map((job) => job.id === jobId &&
|
|
362
|
+
(job.status === 'running' || job.status === 'saving')
|
|
363
|
+
? { ...job, progress }
|
|
364
|
+
: job));
|
|
337
365
|
}, []);
|
|
338
366
|
const markVideoMattingJobDone = (0, react_1.useCallback)((jobId) => {
|
|
367
|
+
(0, client_render_queue_1.deleteAbortController)(jobId);
|
|
339
368
|
setVideoMattingJobs((prev) => prev.map((job) => (job.id === jobId ? { ...job, status: 'done' } : job)));
|
|
340
369
|
setCurrentlyProcessing((current) => (current === jobId ? null : current));
|
|
341
370
|
}, []);
|
|
342
371
|
const markVideoMattingJobFailed = (0, react_1.useCallback)((jobId, error) => {
|
|
372
|
+
(0, client_render_queue_1.deleteAbortController)(jobId);
|
|
343
373
|
setVideoMattingJobs((prev) => prev.map((job) => job.id === jobId
|
|
344
374
|
? {
|
|
345
375
|
...job,
|
|
@@ -349,12 +379,24 @@ const RenderQueueContextProvider = ({ children }) => {
|
|
|
349
379
|
: job));
|
|
350
380
|
setCurrentlyProcessing((current) => (current === jobId ? null : current));
|
|
351
381
|
}, []);
|
|
382
|
+
const markVideoMattingJobCancelled = (0, react_1.useCallback)((jobId) => {
|
|
383
|
+
(0, client_render_queue_1.deleteAbortController)(jobId);
|
|
384
|
+
setVideoMattingJobs((prev) => prev.map((job) => job.id === jobId ? { ...job, status: 'cancelled' } : job));
|
|
385
|
+
setCurrentlyProcessing((current) => (current === jobId ? null : current));
|
|
386
|
+
}, []);
|
|
387
|
+
const markVideoMattingJobSaving = (0, react_1.useCallback)((jobId) => {
|
|
388
|
+
setVideoMattingJobs((prev) => prev.map((job) => job.id === jobId && job.status === 'running'
|
|
389
|
+
? { ...job, status: 'saving' }
|
|
390
|
+
: job));
|
|
391
|
+
}, []);
|
|
352
392
|
const removeVideoMattingJob = (0, react_1.useCallback)((jobId) => {
|
|
353
393
|
setVideoMattingJobs((prev) => {
|
|
354
394
|
const jobToRemove = prev.find((job) => job.id === jobId);
|
|
355
|
-
if ((jobToRemove === null || jobToRemove === void 0 ? void 0 : jobToRemove.status) === 'running'
|
|
395
|
+
if ((jobToRemove === null || jobToRemove === void 0 ? void 0 : jobToRemove.status) === 'running' ||
|
|
396
|
+
(jobToRemove === null || jobToRemove === void 0 ? void 0 : jobToRemove.status) === 'saving') {
|
|
356
397
|
return prev;
|
|
357
398
|
}
|
|
399
|
+
(0, client_render_queue_1.deleteAbortController)(jobId);
|
|
358
400
|
return prev.filter((job) => job.id !== jobId);
|
|
359
401
|
});
|
|
360
402
|
}, []);
|
|
@@ -408,12 +450,16 @@ const RenderQueueContextProvider = ({ children }) => {
|
|
|
408
450
|
updateCaptionJobProgress,
|
|
409
451
|
markCaptionJobDone,
|
|
410
452
|
markCaptionJobFailed,
|
|
453
|
+
markCaptionJobCancelled,
|
|
454
|
+
markCaptionJobSaving,
|
|
411
455
|
removeCaptionJob,
|
|
412
456
|
setProcessCaptionJobCallback,
|
|
413
457
|
addVideoMattingJob,
|
|
414
458
|
updateVideoMattingJobProgress,
|
|
415
459
|
markVideoMattingJobDone,
|
|
416
460
|
markVideoMattingJobFailed,
|
|
461
|
+
markVideoMattingJobCancelled,
|
|
462
|
+
markVideoMattingJobSaving,
|
|
417
463
|
removeVideoMattingJob,
|
|
418
464
|
setProcessVideoMattingJobCallback,
|
|
419
465
|
getAbortController: client_render_queue_1.getAbortController,
|
|
@@ -438,12 +484,16 @@ const RenderQueueContextProvider = ({ children }) => {
|
|
|
438
484
|
updateCaptionJobProgress,
|
|
439
485
|
markCaptionJobDone,
|
|
440
486
|
markCaptionJobFailed,
|
|
487
|
+
markCaptionJobCancelled,
|
|
488
|
+
markCaptionJobSaving,
|
|
441
489
|
removeCaptionJob,
|
|
442
490
|
setProcessCaptionJobCallback,
|
|
443
491
|
addVideoMattingJob,
|
|
444
492
|
updateVideoMattingJobProgress,
|
|
445
493
|
markVideoMattingJobDone,
|
|
446
494
|
markVideoMattingJobFailed,
|
|
495
|
+
markVideoMattingJobCancelled,
|
|
496
|
+
markVideoMattingJobSaving,
|
|
447
497
|
removeVideoMattingJob,
|
|
448
498
|
setProcessVideoMattingJobCallback,
|
|
449
499
|
]);
|
|
@@ -115,8 +115,7 @@ const RenderQueue = () => {
|
|
|
115
115
|
}
|
|
116
116
|
if ((0, video_matting_job_types_1.isVideoMattingJob)(job) &&
|
|
117
117
|
job.status === 'done' &&
|
|
118
|
-
|
|
119
|
-
canvasContent.asset === job.foregroundOutName)) {
|
|
118
|
+
canvasContent.asset === job.outName) {
|
|
120
119
|
return i;
|
|
121
120
|
}
|
|
122
121
|
}
|
|
@@ -125,7 +124,7 @@ const RenderQueue = () => {
|
|
|
125
124
|
}, [allJobs, canvasContent]);
|
|
126
125
|
if (jobCount === 0) {
|
|
127
126
|
return (jsx_runtime_1.jsxs("div", { style: explainer, children: [
|
|
128
|
-
jsx_runtime_1.jsx(layout_1.Spacing, { y: 5 }), jsx_runtime_1.jsx("div", { style: errorExplanation, children: "Renders, transcriptions and
|
|
127
|
+
jsx_runtime_1.jsx(layout_1.Spacing, { y: 5 }), jsx_runtime_1.jsx("div", { style: errorExplanation, children: "Renders, transcriptions and background removal jobs will show up here." }), jsx_runtime_1.jsx(layout_1.Spacing, { y: 2, block: true })
|
|
129
128
|
] }));
|
|
130
129
|
}
|
|
131
130
|
return (jsx_runtime_1.jsx("div", { ref: divRef, style: renderQueue, className: ['css-reset', is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME].join(' '), children: allJobs.map((job, index) => {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export declare const loadModelForJob: <Model extends string>({ isModelCached, loadModel, model, progressSpan, progressStart, updateProgress, }: {
|
|
1
|
+
export declare const loadModelForJob: <Model extends string>({ isModelCached, loadModel, model, signal, progressSpan, progressStart, updateProgress, }: {
|
|
2
2
|
isModelCached: (model: Model) => Promise<boolean>;
|
|
3
3
|
loadModel: (model: Model, onProgress: (progress: number | null) => void) => Promise<unknown>;
|
|
4
4
|
model: Model;
|
|
5
|
+
signal: AbortSignal;
|
|
5
6
|
progressSpan: number;
|
|
6
7
|
progressStart: number;
|
|
7
8
|
updateProgress: (progress: {
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.loadModelForJob = void 0;
|
|
4
|
-
const loadModelForJob = async ({ isModelCached, loadModel, model, progressSpan, progressStart, updateProgress, }) => {
|
|
4
|
+
const loadModelForJob = async ({ isModelCached, loadModel, model, signal, progressSpan, progressStart, updateProgress, }) => {
|
|
5
|
+
signal.throwIfAborted();
|
|
5
6
|
const cached = await isModelCached(model);
|
|
7
|
+
signal.throwIfAborted();
|
|
6
8
|
await loadModel(model, (progress) => {
|
|
9
|
+
signal.throwIfAborted();
|
|
7
10
|
const percentage = progress === null ? '' : ` ${Math.round(progress * 100)}%`;
|
|
8
11
|
updateProgress({
|
|
9
12
|
message: `${cached ? 'Loading' : 'Downloading'} ${model}${percentage}`,
|
|
10
13
|
value: progressStart + (progress !== null && progress !== void 0 ? progress : 0) * progressSpan,
|
|
11
14
|
});
|
|
12
15
|
});
|
|
16
|
+
signal.throwIfAborted();
|
|
13
17
|
};
|
|
14
18
|
exports.loadModelForJob = loadModelForJob;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { VideoMattingBitrate, VideoMattingModel } from '@remotion/video-matting';
|
|
2
|
+
import type { SequencePropsSubscriptionKey } from 'remotion';
|
|
2
3
|
export type VideoMattingJobProgress = {
|
|
3
4
|
detail: string | null;
|
|
4
5
|
message: string;
|
|
@@ -7,7 +8,9 @@ export type VideoMattingJobProgress = {
|
|
|
7
8
|
type VideoMattingJobStatus = {
|
|
8
9
|
status: 'idle';
|
|
9
10
|
} | {
|
|
10
|
-
status: '
|
|
11
|
+
status: 'cancelled';
|
|
12
|
+
} | {
|
|
13
|
+
status: 'running' | 'saving';
|
|
11
14
|
progress: VideoMattingJobProgress;
|
|
12
15
|
} | {
|
|
13
16
|
status: 'done';
|
|
@@ -18,15 +21,19 @@ type VideoMattingJobStatus = {
|
|
|
18
21
|
stack: string | undefined;
|
|
19
22
|
};
|
|
20
23
|
};
|
|
21
|
-
|
|
24
|
+
type VideoMattingJobCommon = {
|
|
22
25
|
src: string;
|
|
23
26
|
displayName: string;
|
|
24
|
-
baseOutName: string;
|
|
25
|
-
foregroundOutName: string;
|
|
26
27
|
model: VideoMattingModel;
|
|
27
|
-
audio: VideoLayerAudio;
|
|
28
28
|
videoBitrate: VideoMattingBitrate;
|
|
29
|
+
outName: string;
|
|
30
|
+
audio: 'keep' | 'none';
|
|
31
|
+
target: {
|
|
32
|
+
fileName: string;
|
|
33
|
+
nodePath: SequencePropsSubscriptionKey;
|
|
34
|
+
} | null;
|
|
29
35
|
};
|
|
36
|
+
export type AddVideoMattingJobParams = VideoMattingJobCommon;
|
|
30
37
|
export type VideoMattingJob = AddVideoMattingJobParams & {
|
|
31
38
|
id: string;
|
|
32
39
|
type: 'video-matting';
|
|
@@ -47,6 +47,7 @@ const selected_outline_types_1 = require("./selected-outline-types");
|
|
|
47
47
|
const selected_outline_uv_1 = require("./selected-outline-uv");
|
|
48
48
|
const call_add_keyframe_1 = require("./Timeline/call-add-keyframe");
|
|
49
49
|
const focus_inspector_field_1 = require("./Timeline/focus-inspector-field");
|
|
50
|
+
const get_timeline_keyframes_1 = require("./Timeline/get-timeline-keyframes");
|
|
50
51
|
const save_sequence_prop_1 = require("./Timeline/save-sequence-prop");
|
|
51
52
|
const CROP_HANDLE_THICKNESS = 5;
|
|
52
53
|
const CROP_HANDLE_LENGTH = 20;
|
|
@@ -223,7 +224,7 @@ const CropHandle = ({ handle, outline, onDraggingChange, target }) => {
|
|
|
223
224
|
setDragOverrides(cropDrag.nodePath, fieldKey, field.propStatus.status === 'keyframed'
|
|
224
225
|
? remotion_1.Internals.makeKeyframedDragOverride({
|
|
225
226
|
status: field.propStatus,
|
|
226
|
-
frame: cropDrag.sourceFrame,
|
|
227
|
+
frame: (0, get_timeline_keyframes_1.resolveKeyframeSourceFrame)(cropDrag.sourceFrame, field.propStatus),
|
|
227
228
|
value,
|
|
228
229
|
})
|
|
229
230
|
: remotion_1.Internals.makeStaticDragOverride(value));
|
|
@@ -47,18 +47,25 @@ const SelectedOutlineEditingHandles = ({ dragging, getAllRotationDragTargets, ge
|
|
|
47
47
|
layoutTarget,
|
|
48
48
|
});
|
|
49
49
|
const controlLayout = (0, react_1.useMemo)(() => (0, selected_outline_control_layout_1.getSelectedOutlineControlLayout)(outline.points), [outline.points]);
|
|
50
|
+
// Scale and rotation handles are placed on the bounding box of the element.
|
|
51
|
+
// For path outlines the rendered geometry follows the SVG path, so
|
|
52
|
+
// bounding-box handles would sit off the shape and misrepresent the
|
|
53
|
+
// transform. Translate and crop still apply to the element as a whole.
|
|
54
|
+
const showTransformHandles = outline.path === null;
|
|
50
55
|
const onContextMenuOpen = react_1.default.useCallback(() => {
|
|
51
56
|
var _a;
|
|
52
57
|
var _b;
|
|
53
58
|
return (_b = (_a = getContextMenuOpenByKey(outline.key)) === null || _a === void 0 ? void 0 : _a()) !== null && _b !== void 0 ? _b : false;
|
|
54
59
|
}, [getContextMenuOpenByKey, outline.key]);
|
|
55
60
|
return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
56
|
-
jsx_runtime_1.jsx(SelectedOutlineCropControls_1.SelectedOutlineCropControls, { outline: outline, onDraggingChange: onDraggingChange, target: controlTarget }),
|
|
61
|
+
jsx_runtime_1.jsx(SelectedOutlineCropControls_1.SelectedOutlineCropControls, { outline: outline, onDraggingChange: onDraggingChange, target: controlTarget }), showTransformHandles &&
|
|
62
|
+
(controlTarget === null || controlTarget === void 0 ? void 0 : controlTarget.cropDrag) === null &&
|
|
57
63
|
((layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.containsSelection) || hovered)
|
|
58
64
|
? controlLayout.scaleEdges.map((edge) => (jsx_runtime_1.jsx(SelectedOutlineScaleEdgeLine_1.SelectedOutlineScaleEdgeLine, { getAllScaleDragTargets: getAllScaleDragTargets, dragging: dragging, edge: edge, hitWidth: edge === 'top' || edge === 'bottom'
|
|
59
65
|
? controlLayout.scaleHitWidth.horizontal
|
|
60
66
|
: controlLayout.scaleHitWidth.vertical, outline: outline, onContextMenuOpen: onContextMenuOpen, onContextMenuOpenChange: onContextMenuOpenChange, onDraggingChange: onDraggingChange, onHoverChange: onHoverChange, onSelect: onSelect, target: controlTarget }, edge)))
|
|
61
|
-
: null,
|
|
67
|
+
: null, showTransformHandles &&
|
|
68
|
+
(controlTarget === null || controlTarget === void 0 ? void 0 : controlTarget.cropDrag) === null &&
|
|
62
69
|
((layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.containsSelection) || hovered)
|
|
63
70
|
? controlLayout.rotationCorners.map(({ corner, point }) => (jsx_runtime_1.jsx(SelectedOutlineRotationCornerHandle_1.SelectedOutlineRotationCornerHandle, { getAllRotationDragTargets: getAllRotationDragTargets, corner: corner, dragging: dragging, handlePoint: point, outline: outline, onContextMenuOpen: onContextMenuOpen, onContextMenuOpenChange: onContextMenuOpenChange, onDraggingChange: onDraggingChange, onHoverChange: onHoverChange, onSelect: onSelect, radius: controlLayout.rotationHandleRadius, target: controlTarget }, corner)))
|
|
64
71
|
: null] }));
|
|
@@ -77,6 +77,7 @@ const SelectedOutlineElementUnmemoized = ({ compositionHeight, compositionWidth,
|
|
|
77
77
|
const selectComposition = (0, InitialCompositionLoader_1.useSelectComposition)();
|
|
78
78
|
const { compositions } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
|
|
79
79
|
const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
|
|
80
|
+
const { selectItems } = (0, TimelineSelection_1.useTimelineSelection)();
|
|
80
81
|
const { setManuallyEnabled } = (0, react_1.useContext)(transform_3d_mode_1.Transform3DModeStateContext);
|
|
81
82
|
const { controlTarget, getLayoutTarget, getTarget, hovered, onHoverChange } = (0, use_selected_outline_control_target_1.useSelectedOutlineControlTarget)({
|
|
82
83
|
getLatestTargetByKey,
|
|
@@ -171,7 +172,7 @@ const SelectedOutlineElementUnmemoized = ({ compositionHeight, compositionWidth,
|
|
|
171
172
|
!sourceEditDisabled &&
|
|
172
173
|
previewServerState.type === 'connected';
|
|
173
174
|
const canCrop = contextMenuTarget.canCrop && !sourceEditDisabled;
|
|
174
|
-
const canRotate = !sourceEditDisabled;
|
|
175
|
+
const canRotate = !sourceEditDisabled && outline.path === null;
|
|
175
176
|
const outlineElement = (_b = (_a = contextMenuTarget.sequence.refForOutline) === null || _a === void 0 ? void 0 : _a.current) !== null && _b !== void 0 ? _b : null;
|
|
176
177
|
return (0, get_sequence_context_menu_items_1.getSequenceContextMenuItems)({
|
|
177
178
|
assetLinkInfo,
|
|
@@ -269,7 +270,8 @@ const SelectedOutlineElementUnmemoized = ({ compositionHeight, compositionWidth,
|
|
|
269
270
|
type: 'add-effect',
|
|
270
271
|
clientId: previewServerState.clientId,
|
|
271
272
|
fileName: nodePath.absolutePath,
|
|
272
|
-
|
|
273
|
+
nodePathInfo: contextMenuTarget.nodePathInfo,
|
|
274
|
+
selectItems,
|
|
273
275
|
});
|
|
274
276
|
},
|
|
275
277
|
quickSwitcherLabel: null,
|
|
@@ -348,8 +350,10 @@ const SelectedOutlineElementUnmemoized = ({ compositionHeight, compositionWidth,
|
|
|
348
350
|
resolveOriginalLocation,
|
|
349
351
|
setManuallyEnabled,
|
|
350
352
|
selectAsset,
|
|
353
|
+
selectItems,
|
|
351
354
|
setSelectedModal,
|
|
352
355
|
setPropStatuses,
|
|
356
|
+
outline.path,
|
|
353
357
|
]);
|
|
354
358
|
(0, react_1.useLayoutEffect)(() => {
|
|
355
359
|
registerContextMenuOpen(outline.key, onContextMenuOpen);
|
|
@@ -359,6 +363,8 @@ const SelectedOutlineElementUnmemoized = ({ compositionHeight, compositionWidth,
|
|
|
359
363
|
}, [onContextMenuOpen, outline.key, registerContextMenuOpen]);
|
|
360
364
|
return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
361
365
|
jsx_runtime_1.jsx(SelectedOutlinePolygon_1.SelectedOutlinePolygon, { compositionHeight: compositionHeight, compositionWidth: compositionWidth, containsSelection: (layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.containsSelection) === true, directlySelected: (layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.selected) === true, dragging: dragging, getAllDragOutlines: getAllDragOutlines, getAllDragTargets: getAllDragTargets, getLayoutTarget: getLayoutTarget, getTarget: getTarget, hasTarget: layoutTarget !== undefined, hovered: hovered, outline: outline, onDraggingChange: onDraggingChange, onHoverChange: onHoverChange, onSnapPointsChange: onSnapPointsChange, onSelect: onSelect, onDoubleClickTarget: onDoubleClickTarget, scale: scale, showSelectedOutline: (_a = layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.showSelectedOutline) !== null && _a !== void 0 ? _a : false, translateWithCommandKey: (layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.selectedForRotation) === true &&
|
|
362
|
-
Boolean(controlTarget === null || controlTarget === void 0 ? void 0 : controlTarget.rotationDrag) }), (layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.selectedForRotation) &&
|
|
366
|
+
Boolean(controlTarget === null || controlTarget === void 0 ? void 0 : controlTarget.rotationDrag) }), (layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.selectedForRotation) &&
|
|
367
|
+
(controlTarget === null || controlTarget === void 0 ? void 0 : controlTarget.rotationDrag) &&
|
|
368
|
+
outline.path === null ? (jsx_runtime_1.jsx(SelectedOutlineCanvasRotation_1.SelectedOutlineCanvasRotation, { getLatestTargetByKey: getLatestTargetByKey, layoutTarget: layoutTarget, onDraggingChange: onDraggingChange, outline: outline, transform3DMode: controlTarget.rotationDrag.transform3DMode })) : null] }));
|
|
363
369
|
};
|
|
364
370
|
exports.SelectedOutlineElement = react_1.default.memo(SelectedOutlineElementUnmemoized);
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
import type
|
|
3
|
-
import { type SelectedOutlineTarget } from './selected-outline-types';
|
|
2
|
+
import { type SelectedOutlineDragTarget } from './selected-outline-types';
|
|
4
3
|
export declare const SelectedOutlineKeyboardControls: React.FC<{
|
|
5
|
-
readonly
|
|
6
|
-
readonly getSelectableOutlines: () => ReturnType<typeof getSequencesWithSelectableOutlines>;
|
|
4
|
+
readonly getAllDragTargets: () => readonly SelectedOutlineDragTarget[];
|
|
7
5
|
}>;
|
|
@@ -7,15 +7,12 @@ const remotion_1 = require("remotion");
|
|
|
7
7
|
const use_keybinding_1 = require("../helpers/use-keybinding");
|
|
8
8
|
const NotificationCenter_1 = require("./Notifications/NotificationCenter");
|
|
9
9
|
const selected_outline_drag_1 = require("./selected-outline-drag");
|
|
10
|
-
const selected_outline_measurement_1 = require("./selected-outline-measurement");
|
|
11
10
|
const selected_outline_types_1 = require("./selected-outline-types");
|
|
12
11
|
const call_add_keyframe_1 = require("./Timeline/call-add-keyframe");
|
|
13
12
|
const imperative_state_1 = require("./Timeline/imperative-state");
|
|
14
13
|
const save_sequence_prop_1 = require("./Timeline/save-sequence-prop");
|
|
15
14
|
const timeline_scroll_logic_1 = require("./Timeline/timeline-scroll-logic");
|
|
16
|
-
const
|
|
17
|
-
const SelectedOutlineKeyboardControls = ({ getLatestOutlineTargetByKey, getSelectableOutlines }) => {
|
|
18
|
-
const currentSelection = (0, TimelineSelection_1.useCurrentTimelineSelectionStateAsRef)();
|
|
15
|
+
const SelectedOutlineKeyboardControls = ({ getAllDragTargets }) => {
|
|
19
16
|
const { getDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
|
|
20
17
|
const { setPropStatuses, setDragOverrides, clearDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
21
18
|
const { frameBack, frameForward, getCurrentFrame, seek } = player_1.PlayerInternals.usePlayerMethods();
|
|
@@ -143,21 +140,8 @@ const SelectedOutlineKeyboardControls = ({ getLatestOutlineTargetByKey, getSelec
|
|
|
143
140
|
if (direction === null) {
|
|
144
141
|
return;
|
|
145
142
|
}
|
|
146
|
-
const
|
|
147
|
-
|
|
148
|
-
const sequenceKeysContainingSelection = (0, selected_outline_measurement_1.getSequenceKeysContainingSelection)(selectedItems);
|
|
149
|
-
const selectableOutlines = getSelectableOutlines();
|
|
150
|
-
const allDragTargets = selectableOutlines.flatMap(({ key }) => {
|
|
151
|
-
var _a;
|
|
152
|
-
var _b;
|
|
153
|
-
if (!selectedSequenceKeys.has(key) &&
|
|
154
|
-
!sequenceKeysContainingSelection.has(key)) {
|
|
155
|
-
return [];
|
|
156
|
-
}
|
|
157
|
-
const drag = (_b = (_a = getLatestOutlineTargetByKey(key)) === null || _a === void 0 ? void 0 : _a.drag) !== null && _b !== void 0 ? _b : null;
|
|
158
|
-
return drag === null ? [] : [drag];
|
|
159
|
-
});
|
|
160
|
-
if (selectedItems.length === 0 || allDragTargets.length === 0) {
|
|
143
|
+
const allDragTargets = getAllDragTargets();
|
|
144
|
+
if (allDragTargets.length === 0) {
|
|
161
145
|
seekWithArrowKey(event, direction);
|
|
162
146
|
return;
|
|
163
147
|
}
|
|
@@ -215,11 +199,9 @@ const SelectedOutlineKeyboardControls = ({ getLatestOutlineTargetByKey, getSelec
|
|
|
215
199
|
}
|
|
216
200
|
}
|
|
217
201
|
}, [
|
|
218
|
-
|
|
202
|
+
getAllDragTargets,
|
|
219
203
|
getCurrentFrame,
|
|
220
204
|
getDragOverrides,
|
|
221
|
-
getLatestOutlineTargetByKey,
|
|
222
|
-
getSelectableOutlines,
|
|
223
205
|
seekWithArrowKey,
|
|
224
206
|
setDragOverrides,
|
|
225
207
|
]);
|