@remotion/studio 4.0.527 → 4.0.529
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/Studio.js +2 -0
- package/dist/components/AgentPrompt.js +3 -4
- package/dist/components/AppLaunchButton.d.ts +0 -1
- package/dist/components/AppLaunchButton.js +2 -5
- package/dist/components/AssetAudioVolume.js +2 -2
- package/dist/components/AssetSelectorItem.js +5 -5
- package/dist/components/AudioWaveform.d.ts +1 -0
- package/dist/components/AudioWaveform.js +10 -14
- package/dist/components/Button.d.ts +1 -1
- package/dist/components/Button.js +2 -2
- package/dist/components/CaptionInspector.js +1 -1
- package/dist/components/CaptionTextEditor.js +1 -1
- package/dist/components/CheckboardToggle.js +1 -1
- package/dist/components/CodeFrame.js +1 -1
- package/dist/components/CodingAgentButton.js +1 -1
- package/dist/components/ColorPicker/ColorPicker.d.ts +1 -1
- package/dist/components/ColorPicker/ColorPicker.js +2 -2
- package/dist/components/ColorPicker/ColorPickerPopup.js +1 -1
- package/dist/components/ColorPicker/checker.d.ts +1 -1
- package/dist/components/CompactExplanation.js +3 -3
- package/dist/components/CompositionSelectorItem.js +2 -2
- package/dist/components/ConfigSelect.js +1 -1
- package/dist/components/ConfigureDefaultEditorModal.js +2 -2
- package/dist/components/ControlButton.d.ts +0 -1
- package/dist/components/ControlButton.js +2 -2
- package/dist/components/CurrentAsset.js +4 -3
- 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/ElementLibraryModal.js +1 -1
- package/dist/components/FramePersistor.js +3 -3
- package/dist/components/FullscreenToggle.js +1 -1
- package/dist/components/InitialCompositionLoader.js +5 -3
- package/dist/components/InlineAction.d.ts +2 -2
- package/dist/components/InlineAction.js +2 -3
- package/dist/components/InlineEditableTitle.d.ts +1 -1
- package/dist/components/InlineEditableTitle.js +3 -3
- package/dist/components/InspectorLocationCopy.js +1 -1
- package/dist/components/InspectorOpenInEditor.js +14 -3
- package/dist/components/InspectorPanel/AlignmentControls.js +31 -12
- package/dist/components/InspectorPanel/CollapsibleInspectorSectionHeader.js +1 -1
- package/dist/components/InspectorPanel/CompositionInspector.js +1 -5
- package/dist/components/InspectorPanel/CompositionMetadata.js +4 -4
- package/dist/components/InspectorPanel/EasingInspector.js +7 -3
- package/dist/components/InspectorPanel/ElementLibraryButton.js +3 -14
- package/dist/components/InspectorPanel/KeyframeEasingNavigator.js +6 -8
- package/dist/components/InspectorPanel/KeyframeInspector.js +29 -25
- package/dist/components/InspectorPanel/KeyframeSettings.js +16 -11
- package/dist/components/InspectorPanel/MultiSequenceField.js +1 -1
- package/dist/components/InspectorPanel/MultiSequenceInspector.js +2 -7
- package/dist/components/InspectorPanel/MultiSequenceNumberField.js +2 -2
- package/dist/components/InspectorPanel/SequenceInspectorHeader.d.ts +3 -1
- package/dist/components/InspectorPanel/SequenceInspectorHeader.js +1 -1
- package/dist/components/InspectorPanel/SequenceSelectionInspector.js +33 -14
- package/dist/components/InspectorPanel/SequenceWrapAction.d.ts +8 -0
- package/dist/components/InspectorPanel/SequenceWrapAction.js +143 -0
- package/dist/components/InspectorPanel/common.d.ts +6 -2
- package/dist/components/InspectorPanel/common.js +25 -9
- 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 +12 -10
- package/dist/components/InspectorSourceLocation.js +2 -2
- package/dist/components/KeyboardShortcutsSettings.js +2 -2
- package/dist/components/LicenseKeyValidation.js +2 -2
- package/dist/components/LoopToggle.js +1 -1
- package/dist/components/Menu/MenuSubItem.js +4 -2
- package/dist/components/Menu/styles.d.ts +2 -2
- package/dist/components/MenuBuildIndicator.js +1 -1
- package/dist/components/MenuCompositionName.js +1 -1
- package/dist/components/Modals.js +7 -6
- package/dist/components/ModelManager.js +10 -9
- package/dist/components/MuteToggle.js +1 -1
- package/dist/components/NewComposition/CancelButton.js +10 -4
- package/dist/components/NewComposition/ComboBox.d.ts +1 -1
- package/dist/components/NewComposition/ComboBox.js +2 -2
- package/dist/components/NewComposition/DuplicateComposition.js +1 -1
- package/dist/components/NewComposition/InputDragger.d.ts +4 -2
- package/dist/components/NewComposition/InputDragger.js +29 -10
- package/dist/components/NewComposition/NewComposition.js +8 -7
- package/dist/components/NewComposition/RemInput.d.ts +1 -1
- package/dist/components/NewComposition/menu-typeahead.js +1 -1
- package/dist/components/OpenIssueButton.js +1 -1
- package/dist/components/OutlineToggle.js +1 -1
- package/dist/components/PlayPause.js +1 -1
- package/dist/components/PlaybackRateSelector.js +1 -1
- package/dist/components/PreviewToolbarOverflowButton.js +1 -1
- package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +1 -1
- package/dist/components/RenderButton.js +2 -4
- package/dist/components/RenderModal/InfoBubble.d.ts +1 -1
- package/dist/components/RenderModal/InfoBubble.js +2 -2
- package/dist/components/RenderModal/NumberSetting.js +1 -1
- package/dist/components/RenderModal/OptionExplainerBubble.js +2 -2
- package/dist/components/RenderModal/RenderModalAdvanced.js +2 -2
- package/dist/components/RenderModal/RenderModalAudio.js +2 -2
- package/dist/components/RenderModal/RenderModalBasic.js +3 -3
- package/dist/components/RenderModal/RenderModalEncoding.js +4 -4
- package/dist/components/RenderModal/RenderModalOutputName.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/SchemaLabel.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodDiscriminatedUnionEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodEnumEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodFieldValidation.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodStaticFileEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/create-zod-values.js +1 -2
- package/dist/components/RenderModal/WebRenderModalAdvanced.js +2 -2
- package/dist/components/RenderModal/WebRenderModalAudio.js +2 -2
- package/dist/components/RenderModal/WebRenderModalBasic.js +3 -3
- package/dist/components/RenderModal/WebRenderModalPicture.js +2 -3
- 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/RenderQueueError.js +1 -1
- package/dist/components/RenderQueue/RenderQueueItemCancelButton.d.ts +3 -1
- package/dist/components/RenderQueue/RenderQueueItemCancelButton.js +11 -4
- package/dist/components/RenderQueue/RenderQueueOutputName.js +1 -1
- package/dist/components/RenderQueue/RenderQueueProgressMessage.js +1 -1
- 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/RenderingSettings.js +6 -6
- package/dist/components/RulersAndGuidesToggle.js +1 -1
- package/dist/components/SegmentedButton.d.ts +0 -2
- package/dist/components/SegmentedButton.js +6 -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 +165 -106
- package/dist/components/SelectedOutlinePathPoints.d.ts +8 -0
- package/dist/components/SelectedOutlinePathPoints.js +457 -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/SettingsButton.js +1 -1
- 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/SizeSelector.js +1 -1
- package/dist/components/SkillsSettings.d.ts +0 -1
- package/dist/components/SkillsSettings.js +14 -15
- package/dist/components/SnappingToggle.js +1 -1
- package/dist/components/Splitter/SplitterElement.js +1 -2
- package/dist/components/StudioSettings.js +2 -2
- package/dist/components/TimeValue.js +2 -4
- package/dist/components/Timeline/EasingEditorModal.js +3 -3
- package/dist/components/Timeline/LoopedTimelineIndicators.d.ts +1 -0
- package/dist/components/Timeline/LoopedTimelineIndicators.js +7 -6
- package/dist/components/Timeline/TimelineArrayField.js +3 -3
- package/dist/components/Timeline/TimelineAssetField.js +3 -3
- package/dist/components/Timeline/TimelineClipboardKeybindings.js +0 -1
- package/dist/components/Timeline/TimelineColorField.js +3 -3
- package/dist/components/Timeline/TimelineDragHandler.js +3 -3
- package/dist/components/Timeline/TimelineDuplicateCount.js +1 -1
- package/dist/components/Timeline/TimelineEffectItem.js +1 -1
- package/dist/components/Timeline/TimelineEffectPropItem.d.ts +1 -0
- package/dist/components/Timeline/TimelineEffectPropItem.js +12 -5
- package/dist/components/Timeline/TimelineEnumField.js +1 -1
- 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/TimelineFieldLabel.js +1 -1
- package/dist/components/Timeline/TimelineFontFamilyField.js +14 -14
- package/dist/components/Timeline/TimelineFontWeightField.js +1 -1
- package/dist/components/Timeline/TimelineKeyframeControls.d.ts +1 -0
- package/dist/components/Timeline/TimelineKeyframeControls.js +42 -31
- package/dist/components/Timeline/TimelineKeyframeDiamond.js +1 -1
- package/dist/components/Timeline/TimelineKeyframeEasingLine.js +1 -1
- package/dist/components/Timeline/TimelineLayerChildren.js +2 -2
- package/dist/components/Timeline/TimelineList.js +16 -8
- package/dist/components/Timeline/TimelineMediaInfo.js +1 -1
- package/dist/components/Timeline/TimelineNumberField.js +2 -4
- package/dist/components/Timeline/TimelinePrimitiveFieldValue.js +1 -1
- package/dist/components/Timeline/TimelineScaleField.js +1 -1
- package/dist/components/Timeline/TimelineSchemaField.js +2 -2
- 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 +40 -22
- package/dist/components/Timeline/TimelineSequenceItem.d.ts +1 -0
- package/dist/components/Timeline/TimelineSequenceItem.js +52 -24
- package/dist/components/Timeline/TimelineSequenceName.d.ts +1 -0
- package/dist/components/Timeline/TimelineSequenceName.js +38 -6
- package/dist/components/Timeline/TimelineSequencePropItem.d.ts +3 -0
- package/dist/components/Timeline/TimelineSequencePropItem.js +266 -27
- 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/TimelineZoomControls.js +2 -2
- 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-sequence-split-menu-item.js +2 -2
- 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-expanded-tree.d.ts +1 -1
- package/dist/components/Timeline/use-timeline-expanded-tree.js +3 -0
- package/dist/components/Timeline/use-timeline-keyframe-drag.js +28 -19
- package/dist/components/TimelineCombobox.d.ts +1 -1
- package/dist/components/TimelineCombobox.js +5 -6
- package/dist/components/TimelineInOutToggle.js +1 -1
- package/dist/components/Transcription/Models.js +1 -1
- package/dist/components/Transcription/TranscriptionModal.js +9 -7
- 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/UndoRedoButtons.js +1 -1
- package/dist/components/UpdatesSettings.js +4 -2
- package/dist/components/VideoMatting/Models.js +1 -1
- package/dist/components/VideoMatting/VideoMattingModal.js +34 -51
- 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 +20 -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/CompositionIdListItem.js +1 -1
- package/dist/error-overlay/remotion-overlay/OpenInEditor.js +46 -3
- package/dist/error-overlay/remotion-overlay/StackFrame.js +32 -3
- package/dist/esm/{CaptionQueueProcessor-npa6szn1.mjs → CaptionQueueProcessor-qj37c6r2.mjs} +63 -17
- package/dist/esm/LazyModels-rjsrgap5.mjs +12 -0
- package/dist/esm/LazyModels-rnbjx98t.mjs +12 -0
- package/dist/esm/{TranscriptionModal-79m5wgcj.mjs → TranscriptionModal-y7zeqj2d.mjs} +21 -21
- package/dist/esm/{VideoMattingModal-31pew0xj.mjs → VideoMattingModal-jzrkhah1.mjs} +51 -69
- 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-e855w59j.mjs → index-19d05w9e.mjs} +3 -5
- package/dist/esm/index-24wge6y5.mjs +102 -0
- package/dist/esm/index-3qb54r5j.mjs +157 -0
- package/dist/esm/{index-n5gmcvhz.mjs → index-5ycb9e9q.mjs} +2 -4
- package/dist/esm/{index-s7qa3xbw.mjs → index-cakcjjy2.mjs} +7 -7
- package/dist/esm/{index-r1gr3j3a.mjs → index-dfy1t576.mjs} +50 -1
- package/dist/esm/{index-614tdz2q.mjs → index-f9hxt5yh.mjs} +3 -3
- package/dist/esm/{index-9x6e1dq0.mjs → index-hqxc6tzp.mjs} +40 -6
- package/dist/esm/{index-ac5550e7.mjs → index-jc22b2wb.mjs} +3 -3
- package/dist/esm/{index-5t2dwxsk.mjs → index-m01zjph7.mjs} +261 -25
- package/dist/esm/{index-ppspzgn9.mjs → index-m2a95v3p.mjs} +4904 -4951
- package/dist/esm/{index-9xxg6218.mjs → index-qve7mdfp.mjs} +19 -1
- package/dist/esm/{index-vxwg66ar.mjs → index-r9bj4tta.mjs} +47 -60
- package/dist/esm/{index-r0ejh5sy.mjs → index-vnc2wdfd.mjs} +44 -27
- package/dist/esm/{index-21hxsfaa.mjs → index-vtr5qzam.mjs} +6 -25
- package/dist/esm/{index-4zen9prq.mjs → index-x7kg7jqv.mjs} +6809 -5640
- 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/checkerboard-background.js +1 -1
- package/dist/helpers/colors.d.ts +131 -112
- package/dist/helpers/colors.js +121 -100
- 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 +104 -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/snowflake.js +1 -3
- package/dist/icons/{scissors.d.ts → split.d.ts} +1 -1
- package/dist/icons/split.js +8 -0
- package/dist/icons/trash.js +2 -2
- 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/scissors.js +0 -8
- package/dist/icons/separation.js +0 -7
- /package/dist/esm/{resolve-composition-component-location-qrp05g62.mjs → resolve-composition-component-location-2hgf6g0a.mjs} +0 -0
|
@@ -13,7 +13,6 @@ const timeline_node_path_key_1 = require("../../helpers/timeline-node-path-key")
|
|
|
13
13
|
const ExpandedTracksProvider_1 = require("../ExpandedTracksProvider");
|
|
14
14
|
const call_add_keyframe_1 = require("./call-add-keyframe");
|
|
15
15
|
const call_delete_keyframe_1 = require("./call-delete-keyframe");
|
|
16
|
-
const get_easing_selection_after_keyframe_delete_1 = require("./get-easing-selection-after-keyframe-delete");
|
|
17
16
|
const get_keyframe_navigation_1 = require("./get-keyframe-navigation");
|
|
18
17
|
const get_timeline_keyframes_1 = require("./get-timeline-keyframes");
|
|
19
18
|
const normalize_font_weight_for_keyframe_1 = require("./normalize-font-weight-for-keyframe");
|
|
@@ -21,7 +20,6 @@ const timeline_scroll_logic_1 = require("./timeline-scroll-logic");
|
|
|
21
20
|
const TimelineKeyframeDiamondIcon_1 = require("./TimelineKeyframeDiamondIcon");
|
|
22
21
|
const TimelineKeyframeTracksContext_1 = require("./TimelineKeyframeTracksContext");
|
|
23
22
|
const TimelineSelection_1 = require("./TimelineSelection");
|
|
24
|
-
const update_selected_easing_1 = require("./update-selected-easing");
|
|
25
23
|
const NAV_BUTTON_SIZE = 14;
|
|
26
24
|
const INSPECTOR_NAV_BUTTON_WIDTH = NAV_BUTTON_SIZE / 2;
|
|
27
25
|
const INSPECTOR_PREVIOUS_BUTTON_EXTRA_GAP = 1;
|
|
@@ -155,15 +153,22 @@ const resolveKeyframeControlTarget = ({ nodePathInfo, tracks, propStatuses, getD
|
|
|
155
153
|
propStatus: sequenceSelectedPropStatus,
|
|
156
154
|
nodePath,
|
|
157
155
|
fileName: nodePath.absolutePath,
|
|
156
|
+
keyframePlaybackRate: track.keyframePlaybackRate,
|
|
158
157
|
keyframeDisplayOffset: (0, get_timeline_keyframes_1.getKeyframeDisplayOffset)({
|
|
159
158
|
propStatus: sequenceSelectedPropStatus,
|
|
160
159
|
keyframeDisplayOffset: track.keyframeDisplayOffset,
|
|
160
|
+
keyframePlaybackRate: track.keyframePlaybackRate,
|
|
161
161
|
}),
|
|
162
|
-
sourceFrame:
|
|
163
|
-
|
|
162
|
+
sourceFrame: (0, get_timeline_keyframes_1.getKeyframeSourceFrame)({
|
|
163
|
+
displayFrame: timelinePosition,
|
|
164
|
+
propStatus: sequenceSelectedPropStatus,
|
|
165
|
+
keyframeDisplayOffset: (0, get_timeline_keyframes_1.getKeyframeDisplayOffset)({
|
|
164
166
|
propStatus: sequenceSelectedPropStatus,
|
|
165
167
|
keyframeDisplayOffset: track.keyframeDisplayOffset,
|
|
168
|
+
keyframePlaybackRate: track.keyframePlaybackRate,
|
|
166
169
|
}),
|
|
170
|
+
keyframePlaybackRate: track.keyframePlaybackRate,
|
|
171
|
+
}),
|
|
167
172
|
defaultValue: fieldNode.field.fieldSchema.default,
|
|
168
173
|
dragOverrideValue: ((_c = getDragOverrides(nodePath)) !== null && _c !== void 0 ? _c : {})[fieldNode.field.key],
|
|
169
174
|
schema: track.sequence.controls.schema,
|
|
@@ -187,15 +192,22 @@ const resolveKeyframeControlTarget = ({ nodePathInfo, tracks, propStatuses, getD
|
|
|
187
192
|
propStatus: effectSelectedPropStatus,
|
|
188
193
|
nodePath,
|
|
189
194
|
fileName: nodePath.absolutePath,
|
|
195
|
+
keyframePlaybackRate: track.keyframePlaybackRate,
|
|
190
196
|
keyframeDisplayOffset: (0, get_timeline_keyframes_1.getKeyframeDisplayOffset)({
|
|
191
197
|
propStatus: effectSelectedPropStatus,
|
|
192
198
|
keyframeDisplayOffset: track.keyframeDisplayOffset,
|
|
199
|
+
keyframePlaybackRate: track.keyframePlaybackRate,
|
|
193
200
|
}),
|
|
194
|
-
sourceFrame:
|
|
195
|
-
|
|
201
|
+
sourceFrame: (0, get_timeline_keyframes_1.getKeyframeSourceFrame)({
|
|
202
|
+
displayFrame: timelinePosition,
|
|
203
|
+
propStatus: effectSelectedPropStatus,
|
|
204
|
+
keyframeDisplayOffset: (0, get_timeline_keyframes_1.getKeyframeDisplayOffset)({
|
|
196
205
|
propStatus: effectSelectedPropStatus,
|
|
197
206
|
keyframeDisplayOffset: track.keyframeDisplayOffset,
|
|
207
|
+
keyframePlaybackRate: track.keyframePlaybackRate,
|
|
198
208
|
}),
|
|
209
|
+
keyframePlaybackRate: track.keyframePlaybackRate,
|
|
210
|
+
}),
|
|
199
211
|
defaultValue: fieldNode.field.fieldSchema.default,
|
|
200
212
|
dragOverrideValue: getEffectDragOverrides(nodePath, fieldNode.field.effectIndex)[fieldNode.field.key],
|
|
201
213
|
schema: fieldNode.field.effectSchema,
|
|
@@ -315,10 +327,10 @@ const shouldShowTimelineKeyframeNavigation = ({ propStatus, selected, }) => {
|
|
|
315
327
|
return isKeyframedStatus(propStatus);
|
|
316
328
|
};
|
|
317
329
|
exports.shouldShowTimelineKeyframeNavigation = shouldShowTimelineKeyframeNavigation;
|
|
318
|
-
const TimelineKeyframeControls = ({ fieldKey, propStatus, nodePath, fileName, keyframeDisplayOffset, defaultValue, dragOverrideValue, schema, effectIndex, nodePathInfo, mode = 'timeline', }) => {
|
|
330
|
+
const TimelineKeyframeControls = ({ fieldKey, propStatus, nodePath, fileName, keyframeDisplayOffset, keyframePlaybackRate, defaultValue, dragOverrideValue, schema, effectIndex, nodePathInfo, mode = 'timeline', }) => {
|
|
319
331
|
const videoConfig = (0, remotion_1.useVideoConfig)();
|
|
320
332
|
const timelinePosition = remotion_1.Internals.Timeline.useTimelinePosition();
|
|
321
|
-
const
|
|
333
|
+
const seekFrame = remotion_1.Internals.Timeline.useTimelineSeekFrame();
|
|
322
334
|
const { setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
323
335
|
const { propStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
|
|
324
336
|
const { getDragOverrides, getEffectDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
|
|
@@ -332,9 +344,15 @@ const TimelineKeyframeControls = ({ fieldKey, propStatus, nodePath, fileName, ke
|
|
|
332
344
|
const resolvedKeyframeDisplayOffset = (0, get_timeline_keyframes_1.getKeyframeDisplayOffset)({
|
|
333
345
|
propStatus,
|
|
334
346
|
keyframeDisplayOffset,
|
|
347
|
+
keyframePlaybackRate,
|
|
335
348
|
});
|
|
336
|
-
const jsxFrame =
|
|
337
|
-
|
|
349
|
+
const jsxFrame = (0, get_timeline_keyframes_1.getKeyframeSourceFrame)({
|
|
350
|
+
displayFrame: timelinePosition,
|
|
351
|
+
keyframeDisplayOffset: resolvedKeyframeDisplayOffset,
|
|
352
|
+
keyframePlaybackRate,
|
|
353
|
+
propStatus,
|
|
354
|
+
});
|
|
355
|
+
const keyframes = (0, react_1.useMemo)(() => (0, get_timeline_keyframes_1.getTimelineKeyframes)(propStatus, keyframeDisplayOffset, keyframePlaybackRate), [propStatus, keyframeDisplayOffset, keyframePlaybackRate]);
|
|
338
356
|
const hasKeyframeAtCurrentFrame = (0, react_1.useMemo)(() => {
|
|
339
357
|
if (!isKeyframedStatus(propStatus)) {
|
|
340
358
|
return false;
|
|
@@ -374,6 +392,7 @@ const TimelineKeyframeControls = ({ fieldKey, propStatus, nodePath, fileName, ke
|
|
|
374
392
|
nodePath,
|
|
375
393
|
fileName,
|
|
376
394
|
keyframeDisplayOffset: resolvedKeyframeDisplayOffset,
|
|
395
|
+
keyframePlaybackRate,
|
|
377
396
|
sourceFrame: jsxFrame,
|
|
378
397
|
defaultValue,
|
|
379
398
|
dragOverrideValue,
|
|
@@ -387,6 +406,7 @@ const TimelineKeyframeControls = ({ fieldKey, propStatus, nodePath, fileName, ke
|
|
|
387
406
|
fileName,
|
|
388
407
|
jsxFrame,
|
|
389
408
|
resolvedKeyframeDisplayOffset,
|
|
409
|
+
keyframePlaybackRate,
|
|
390
410
|
nodePath,
|
|
391
411
|
nodePathInfo,
|
|
392
412
|
propStatus,
|
|
@@ -420,7 +440,7 @@ const TimelineKeyframeControls = ({ fieldKey, propStatus, nodePath, fileName, ke
|
|
|
420
440
|
tracks,
|
|
421
441
|
]);
|
|
422
442
|
const seekToDisplayFrame = (0, react_1.useCallback)((frame, direction) => {
|
|
423
|
-
|
|
443
|
+
seekFrame((current) => {
|
|
424
444
|
const next = { ...current, [videoConfig.id]: frame };
|
|
425
445
|
remotion_1.Internals.persistCurrentFrame(next);
|
|
426
446
|
return next;
|
|
@@ -430,7 +450,7 @@ const TimelineKeyframeControls = ({ fieldKey, propStatus, nodePath, fileName, ke
|
|
|
430
450
|
durationInFrames: videoConfig.durationInFrames,
|
|
431
451
|
frame,
|
|
432
452
|
});
|
|
433
|
-
}, [
|
|
453
|
+
}, [seekFrame, videoConfig.durationInFrames, videoConfig.id]);
|
|
434
454
|
const onPrevious = (0, react_1.useCallback)((e) => {
|
|
435
455
|
e.stopPropagation();
|
|
436
456
|
if (previousDisplayFrame !== null) {
|
|
@@ -453,19 +473,13 @@ const TimelineKeyframeControls = ({ fieldKey, propStatus, nodePath, fileName, ke
|
|
|
453
473
|
const change = getDeleteChange(target);
|
|
454
474
|
return change === null ? [] : [{ target, change }];
|
|
455
475
|
});
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
(0,
|
|
461
|
-
?
|
|
462
|
-
|
|
463
|
-
keyframeDisplayOffset: singleDeleteTarget.target.keyframeDisplayOffset,
|
|
464
|
-
nodePathInfo: singleDeleteTarget.target.nodePathInfo,
|
|
465
|
-
propStatus: singleDeleteTarget.target.propStatus,
|
|
466
|
-
timelinePosition,
|
|
467
|
-
})
|
|
468
|
-
: null;
|
|
476
|
+
if (deleteTargets.length === 0) {
|
|
477
|
+
return;
|
|
478
|
+
}
|
|
479
|
+
selectItems(deleteTargets.flatMap(({ target }) => {
|
|
480
|
+
const propertySelection = (0, TimelineSelection_1.getTimelineSelectionFromNodePathInfo)(target.nodePathInfo);
|
|
481
|
+
return propertySelection === null ? [] : [propertySelection];
|
|
482
|
+
}), { reveal: true });
|
|
469
483
|
const deleteChanges = deleteTargets.map(({ change }) => change);
|
|
470
484
|
await (0, call_delete_keyframe_1.callDeleteKeyframes)({
|
|
471
485
|
sequenceKeyframes: deleteChanges.filter((change) => !hasEffectIndex(change)),
|
|
@@ -473,9 +487,6 @@ const TimelineKeyframeControls = ({ fieldKey, propStatus, nodePath, fileName, ke
|
|
|
473
487
|
setPropStatuses,
|
|
474
488
|
clientId,
|
|
475
489
|
});
|
|
476
|
-
if (mode === 'timeline' && easingSelection !== null) {
|
|
477
|
-
selectItems([easingSelection], { reveal: true });
|
|
478
|
-
}
|
|
479
490
|
return;
|
|
480
491
|
}
|
|
481
492
|
const addChanges = keyframeToggleTargets.flatMap((target) => {
|
|
@@ -499,7 +510,8 @@ const TimelineKeyframeControls = ({ fieldKey, propStatus, nodePath, fileName, ke
|
|
|
499
510
|
selectItems(addChanges.map(({ target }) => ({
|
|
500
511
|
type: 'keyframe',
|
|
501
512
|
nodePathInfo: target.nodePathInfo,
|
|
502
|
-
frame: target.sourceFrame
|
|
513
|
+
frame: target.sourceFrame / target.keyframePlaybackRate +
|
|
514
|
+
target.keyframeDisplayOffset,
|
|
503
515
|
})), { reveal: true });
|
|
504
516
|
}
|
|
505
517
|
}, [
|
|
@@ -511,7 +523,6 @@ const TimelineKeyframeControls = ({ fieldKey, propStatus, nodePath, fileName, ke
|
|
|
511
523
|
mode,
|
|
512
524
|
selectItems,
|
|
513
525
|
setPropStatuses,
|
|
514
|
-
timelinePosition,
|
|
515
526
|
]);
|
|
516
527
|
const previousDisabled = previousDisplayFrame === null;
|
|
517
528
|
const nextDisabled = nextDisplayFrame === null;
|
|
@@ -538,7 +549,7 @@ const TimelineKeyframeControls = ({ fieldKey, propStatus, nodePath, fileName, ke
|
|
|
538
549
|
return (jsx_runtime_1.jsxs("div", { style: mode === 'inspector'
|
|
539
550
|
? inspectorControlsContainerStyle
|
|
540
551
|
: controlsContainerStyle, children: [
|
|
541
|
-
jsx_runtime_1.jsx("button", { type: "button", style: previousStyle, disabled: previousDisabled, onPointerDown: previousDisabled ? undefined : onPrevious, "aria-label": "Go to previous keyframe",
|
|
552
|
+
jsx_runtime_1.jsx("button", { type: "button", style: previousStyle, disabled: previousDisabled, onPointerDown: previousDisabled ? undefined : onPrevious, "aria-label": "Go to previous keyframe", children: jsx_runtime_1.jsx("svg", { width: "14", height: "14", viewBox: "0 0 10 10", style: svgStyle, children: jsx_runtime_1.jsx("path", { d: "M7 1.5L3 5L7 8.5Z", fill: colors_1.LIGHT_GRAY }) }) }), jsx_runtime_1.jsx("button", { type: "button", style: diamondStyle, disabled: !canToggleKeyframe || !clientId, onPointerDown: canToggleKeyframe && clientId ? onToggleKeyframe : undefined, "aria-label": hasKeyframeAtCurrentFrame ? 'Remove keyframe' : 'Add keyframe', children: jsx_runtime_1.jsx(TimelineKeyframeDiamondIcon_1.TimelineKeyframeDiamondIcon, { color: diamondColor, size: 12 }) }), jsx_runtime_1.jsx("button", { type: "button", style: nextStyle, disabled: nextDisabled, onPointerDown: nextDisabled ? undefined : onNext, "aria-label": "Go to next keyframe", children: jsx_runtime_1.jsx("svg", { width: "14", height: "14", viewBox: "0 0 10 10", style: svgStyle, children: jsx_runtime_1.jsx("path", { d: "M3 1.5L7 5L3 8.5Z", fill: colors_1.LIGHT_GRAY }) }) })
|
|
542
553
|
] }));
|
|
543
554
|
};
|
|
544
555
|
exports.TimelineKeyframeControls = TimelineKeyframeControls;
|
|
@@ -87,6 +87,6 @@ const TimelineKeyframeDiamondUnmemoized = ({ frame, rowHeight, nodePathInfo }) =
|
|
|
87
87
|
if (style === null) {
|
|
88
88
|
return null;
|
|
89
89
|
}
|
|
90
|
-
return (jsx_runtime_1.jsx("button", { ref: ref, [TimelineSelection_1.TIMELINE_MARQUEE_ITEM_ATTR]: true, type: "button", style: style,
|
|
90
|
+
return (jsx_runtime_1.jsx("button", { ref: ref, [TimelineSelection_1.TIMELINE_MARQUEE_ITEM_ATTR]: true, type: "button", style: style, "aria-label": `Select keyframe at frame ${frame}`, onPointerDown: selectable ? onPointerDown : undefined, children: jsx_runtime_1.jsx(TimelineKeyframeDiamondIcon_1.TimelineKeyframeDiamondIcon, { color: colors_1.LIGHT_TEXT, selected: visuallySelected, size: diamondSize }) }));
|
|
91
91
|
};
|
|
92
92
|
exports.TimelineKeyframeDiamond = react_1.default.memo(TimelineKeyframeDiamondUnmemoized);
|
|
@@ -167,7 +167,7 @@ const TimelineKeyframeEasingLineInteraction = ({ fromFrame, toFrame, nodePathInf
|
|
|
167
167
|
selectionItem,
|
|
168
168
|
});
|
|
169
169
|
return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
170
|
-
jsx_runtime_1.jsx("button", { ref: buttonRef, [TimelineSelection_1.TIMELINE_MARQUEE_ITEM_ATTR]: true, type: "button", style: interactiveStyle,
|
|
170
|
+
jsx_runtime_1.jsx("button", { ref: buttonRef, [TimelineSelection_1.TIMELINE_MARQUEE_ITEM_ATTR]: true, type: "button", style: interactiveStyle, "aria-label": `Select easing from frame ${fromFrame} to ${toFrame}`, onPointerDown: selectable ? onPointerDown : undefined, children: jsx_runtime_1.jsx(exports.TimelineKeyframeEasingLineVisual, { selected: selected }) }), jsx_runtime_1.jsx(ContextMenu_1.ContextMenuForTarget, { triggerRef: buttonRef, getItems: getContextMenuItems })
|
|
171
171
|
] }));
|
|
172
172
|
};
|
|
173
173
|
const TimelineKeyframeEasingLineUnmemoized = ({ fromFrame, toFrame, rowHeight, nodePathInfo, segmentIndex }) => {
|
|
@@ -118,7 +118,7 @@ const TimelineLayerChildrenToggle = ({ sequence }) => {
|
|
|
118
118
|
return jsx_runtime_1.jsx("div", { style: toggleLayout });
|
|
119
119
|
}
|
|
120
120
|
const label = `${isCollapsed ? 'Expand' : 'Collapse'} children of ${sequence.displayName}`;
|
|
121
|
-
return (jsx_runtime_1.jsx("button", { type: "button", className: `${hoverable_1.HOVERABLE_CLASS_NAME} ${hoverable_1.FOCUS_VISIBLE_ONLY_CLASS_NAME}`, "aria-label": label, "aria-expanded": !isCollapsed,
|
|
121
|
+
return (jsx_runtime_1.jsx("button", { type: "button", className: `${hoverable_1.HOVERABLE_CLASS_NAME} ${hoverable_1.FOCUS_VISIBLE_ONLY_CLASS_NAME}`, "aria-label": label, "aria-expanded": !isCollapsed, onClick: onClick, onPointerDown: stopPropagation, onDoubleClick: stopPropagation, style: {
|
|
122
122
|
...(0, hoverable_1.hoverableStyle)({
|
|
123
123
|
idleBackground: colors_1.TRANSPARENT,
|
|
124
124
|
hoverBackground: colors_1.TRANSPARENT,
|
|
@@ -129,6 +129,6 @@ const TimelineLayerChildrenToggle = ({ sequence }) => {
|
|
|
129
129
|
border: 'none',
|
|
130
130
|
padding: 0,
|
|
131
131
|
cursor: 'default',
|
|
132
|
-
}, children: jsx_runtime_1.jsx(TimelineCollapseToggle_1.TimelineCollapseToggle, { collapsed: isCollapsed, color:
|
|
132
|
+
}, children: jsx_runtime_1.jsx(TimelineCollapseToggle_1.TimelineCollapseToggle, { collapsed: isCollapsed, color: colors_1.CURRENT_COLOR }) }));
|
|
133
133
|
};
|
|
134
134
|
exports.TimelineLayerChildrenToggle = TimelineLayerChildrenToggle;
|
|
@@ -19,16 +19,24 @@ const TimelineListTrack = react_1.default.memo(({ row }) => {
|
|
|
19
19
|
var _a;
|
|
20
20
|
var _b, _c;
|
|
21
21
|
const { afterDropLineOffset, siblingIndex, track } = row;
|
|
22
|
-
return (jsx_runtime_1.jsx(TimelineSequenceItem_1.TimelineSequenceItem, { afterDropLineOffset: afterDropLineOffset, siblingIndex: siblingIndex, connectedCompositions: (_b = track.connectedCompositions) !== null && _b !== void 0 ? _b : noConnectedCompositions, nestedDepth: track.depth, sequence: track.sequence, nodePathInfo: track.nodePathInfo, keyframeDisplayOffset: track.keyframeDisplayOffset, sequenceFrameOffset: track.sequenceFrameOffset, numberOfHiddenDuplicates: Math.max(0, ((_c = (_a = track.displayGroup) === null || _a === void 0 ? void 0 : _a.numberOfSequences) !== null && _c !== void 0 ? _c : 1) - 1), showProvisionalVisibilityToggle: track.nodePathInfo === null && track.displayGroup !== null }));
|
|
22
|
+
return (jsx_runtime_1.jsx(TimelineSequenceItem_1.TimelineSequenceItem, { afterDropLineOffset: afterDropLineOffset, siblingIndex: siblingIndex, connectedCompositions: (_b = track.connectedCompositions) !== null && _b !== void 0 ? _b : noConnectedCompositions, nestedDepth: track.depth, sequence: track.sequence, nodePathInfo: track.nodePathInfo, keyframeDisplayOffset: track.keyframeDisplayOffset, keyframePlaybackRate: track.keyframePlaybackRate, sequenceFrameOffset: track.sequenceFrameOffset, numberOfHiddenDuplicates: Math.max(0, ((_c = (_a = track.displayGroup) === null || _a === void 0 ? void 0 : _a.numberOfSequences) !== null && _c !== void 0 ? _c : 1) - 1), showProvisionalVisibilityToggle: track.nodePathInfo === null && track.displayGroup !== null }));
|
|
23
23
|
});
|
|
24
24
|
const TimelineList = () => {
|
|
25
25
|
const { rows, tracksEnd, virtualItems } = (0, TimelineVirtualization_1.useTimelineVirtualization)();
|
|
26
|
-
return (jsx_runtime_1.
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
return (jsx_runtime_1.jsxs("div", { style: { ...container, height: tracksEnd }, children: [
|
|
27
|
+
jsx_runtime_1.jsx("style", { children: `.remotion-timeline-sequence-name-measure::before {
|
|
28
|
+
content: attr(data-name);
|
|
29
|
+
display: block;
|
|
30
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
31
|
+
font-size: 12px;
|
|
32
|
+
line-height: normal;
|
|
33
|
+
visibility: hidden;
|
|
34
|
+
}` }), virtualItems.map((virtualItem) => (jsx_runtime_1.jsx("div", { style: {
|
|
35
|
+
height: virtualItem.size,
|
|
36
|
+
left: 0,
|
|
37
|
+
position: 'absolute',
|
|
38
|
+
top: virtualItem.start,
|
|
39
|
+
width: '100%',
|
|
40
|
+
}, children: jsx_runtime_1.jsx(TimelineListTrack, { row: rows[virtualItem.index] }) }, virtualItem.key)))] }));
|
|
33
41
|
};
|
|
34
42
|
exports.TimelineList = TimelineList;
|
|
@@ -36,6 +36,6 @@ const useAssetLink = (src) => {
|
|
|
36
36
|
const TimelineMediaInfo = ({ src }) => {
|
|
37
37
|
const fileName = (0, react_1.useMemo)(() => remotion_1.Internals.getAssetDisplayName(src), [src]);
|
|
38
38
|
const { linkInfo, fileNameStyle } = useAssetLink(src);
|
|
39
|
-
return (jsx_runtime_1.jsx("div", { style: fileNameStyle,
|
|
39
|
+
return (jsx_runtime_1.jsx("div", { role: "group", style: fileNameStyle, "aria-label": linkInfo ? linkInfo.title : fileName, children: fileName }));
|
|
40
40
|
};
|
|
41
41
|
exports.TimelineMediaInfo = TimelineMediaInfo;
|
|
@@ -39,9 +39,7 @@ const TimelineNumberField = ({ field, effectiveValue, onSave, onDragValueChange,
|
|
|
39
39
|
const step = field.fieldSchema.type === 'font-weight' && currentValue % 100 === 0
|
|
40
40
|
? 100
|
|
41
41
|
: (configuredStep !== null && configuredStep !== void 0 ? configuredStep : 1);
|
|
42
|
-
const
|
|
43
|
-
field.group === 'crop' ||
|
|
44
|
-
('kind' in field && field.kind === 'effect-field');
|
|
42
|
+
const integerOnly = field.fieldSchema.type === 'number' && field.fieldSchema.integer === true;
|
|
45
43
|
const formatter = (0, react_1.useCallback)((v) => {
|
|
46
44
|
return (0, timeline_field_display_utils_1.formatTimelineFieldValueForDisplay)({
|
|
47
45
|
fieldSchema: field.fieldSchema,
|
|
@@ -56,6 +54,6 @@ const TimelineNumberField = ({ field, effectiveValue, onSave, onDragValueChange,
|
|
|
56
54
|
? ((_b = field.fieldSchema.max) !== null && _b !== void 0 ? _b : Infinity)
|
|
57
55
|
: field.fieldSchema.type === 'font-weight'
|
|
58
56
|
? 1000
|
|
59
|
-
: Infinity, step: step, dragSensitivity: field.fieldSchema.type === 'font-weight' && step === 100 ? 0.1 : 1, formatter: formatter, rightAlign: false, allowStepMismatch:
|
|
57
|
+
: Infinity, step: step, dragSensitivity: field.fieldSchema.type === 'font-weight' && step === 100 ? 0.1 : 1, formatter: formatter, rightAlign: false, allowStepMismatch: true, integerOnly: integerOnly }));
|
|
60
58
|
};
|
|
61
59
|
exports.TimelineNumberField = TimelineNumberField;
|
|
@@ -62,7 +62,7 @@ const TimelinePrimitiveFieldValue = ({ field, onSave, onDragValueChange, onDragE
|
|
|
62
62
|
if (field.typeName === 'enum') {
|
|
63
63
|
return (jsx_runtime_1.jsx("span", { style: inlineWrapper, children: jsx_runtime_1.jsx(TimelineEnumField_1.TimelineEnumField, { effectiveValue: effectiveValue, field: field, onDragEnd: onDragEnd, onDragValueChange: onDragValueChange, onSave: onSave, propStatus: propStatus }) }));
|
|
64
64
|
}
|
|
65
|
-
if (field.typeName === 'text-content') {
|
|
65
|
+
if (field.typeName === 'text-content' || field.typeName === 'svg-path') {
|
|
66
66
|
return (jsx_runtime_1.jsx(TimelineTextContentField_1.TimelineTextContentField, { effectiveValue: effectiveValue, field: field, nodePath: scaleLockNodePath, onDragEnd: onDragEnd, onDragValueChange: onDragValueChange, onSave: onSave, propStatus: propStatus }));
|
|
67
67
|
}
|
|
68
68
|
if (field.typeName === 'font-family') {
|
|
@@ -81,7 +81,7 @@ const LinkToggle = ({ linked, onToggle }) => {
|
|
|
81
81
|
e.stopPropagation();
|
|
82
82
|
onToggle();
|
|
83
83
|
}, [onToggle]);
|
|
84
|
-
return (jsx_runtime_1.jsx("button", { type: "button", style: toggleStyle, onPointerDown: onPointerDown,
|
|
84
|
+
return (jsx_runtime_1.jsx("button", { type: "button", style: toggleStyle, onPointerDown: onPointerDown, "aria-label": linked ? 'Unlink scale axes' : 'Link scale axes', children: linked ? (jsx_runtime_1.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 640 640", style: linkIconStyle, children: jsx_runtime_1.jsx("path", { fill: colors_1.CURRENT_COLOR_LOWERCASE, d: "M32 320C32 214 118 128 224 128L288 128L288 192L224 192C153.3 192 96 249.3 96 320C96 390.7 153.3 448 224 448L288 448L288 512L224 512C118 512 32 426 32 320zM608 320C608 426 522 512 416 512L352 512L352 448L416 448C486.7 448 544 390.7 544 320C544 249.3 486.7 192 416 192L352 192L352 128L416 128C522 128 608 214 608 320zM224 288L448 288L448 352L192 352L192 288L224 288z" }) })) : null }));
|
|
85
85
|
};
|
|
86
86
|
const TimelineScaleField = ({ field, propStatus, effectiveValue, onSave, onDragValueChange, onDragEnd, scaleLockNodePath, }) => {
|
|
87
87
|
var _a, _b;
|
|
@@ -107,8 +107,8 @@ const UnsupportedStatus = ({ label, onFix, formattedValue }) => {
|
|
|
107
107
|
const stopPointerPropagation = (event) => {
|
|
108
108
|
event.stopPropagation();
|
|
109
109
|
};
|
|
110
|
-
return (jsx_runtime_1.jsxs("span", { style: unsupportedStatusWrapper, onPointerEnter: () => setHovered(true), onPointerLeave: () => setHovered(false),
|
|
111
|
-
jsx_runtime_1.jsx("span", { style: formattedValue ? computedValue : unsupportedLabel, inert: formattedValue, children: label }), onFix ? (jsx_runtime_1.jsx("button", { type: "button", className: `${hoverable_1.FOCUS_VISIBLE_ONLY_CLASS_NAME} ${hoverable_1.HOVERABLE_CLASS_NAME}`, style: fixLink,
|
|
110
|
+
return (jsx_runtime_1.jsxs("span", { role: "group", style: unsupportedStatusWrapper, onPointerEnter: () => setHovered(true), onPointerLeave: () => setHovered(false), "aria-label": formattedValue && typeof label === 'string' ? label : undefined, children: [
|
|
111
|
+
jsx_runtime_1.jsx("span", { style: formattedValue ? computedValue : unsupportedLabel, inert: formattedValue, children: label }), onFix ? (jsx_runtime_1.jsx("button", { type: "button", className: `${hoverable_1.FOCUS_VISIBLE_ONLY_CLASS_NAME} ${hoverable_1.HOVERABLE_CLASS_NAME}`, style: fixLink, "aria-label": "Fix computed Studio value", onClick: (event) => {
|
|
112
112
|
stopMousePropagation(event);
|
|
113
113
|
onFix();
|
|
114
114
|
}, onDoubleClick: stopMousePropagation, onPointerDown: stopPointerPropagation, onFocus: () => setFocused(true), onBlur: () => setFocused(false), tabIndex: visible ? 0 : -1, children: "Fix" })) : null] }));
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { CanvasSelectionInteraction, CanvasSelectionItem, CanvasSelectionSnapshot } from '@remotion/canvas';
|
|
2
2
|
import { type SequenceNodePathMutation } from '@remotion/studio-shared';
|
|
3
3
|
import React, { type CSSProperties } from 'react';
|
|
4
4
|
import { type GetDragOverrides, type GetEffectDragOverrides, type PropStatuses } from 'remotion';
|
|
5
5
|
import type { SequenceNodePathInfo, TimelineTrackData } from '../../helpers/get-timeline-sequence-sort-key';
|
|
6
6
|
import { type GetIsExpanded } from '../ExpandedTracksProvider';
|
|
7
|
-
export declare const TIMELINE_SELECTED_BACKGROUND = "
|
|
8
|
-
export declare const TIMELINE_EXPANDED_SELECTED_BACKGROUND = "
|
|
9
|
-
export declare const TIMELINE_HOVER_BACKGROUND = "
|
|
10
|
-
export declare const TIMELINE_SELECTED_LABEL_BACKGROUND = "
|
|
11
|
-
export declare const TIMELINE_SELECTED_LABEL_TEXT = "black";
|
|
7
|
+
export declare const TIMELINE_SELECTED_BACKGROUND = "var(--remotion-studio-timeline-selected-background-color)";
|
|
8
|
+
export declare const TIMELINE_EXPANDED_SELECTED_BACKGROUND = "var(--remotion-studio-background)";
|
|
9
|
+
export declare const TIMELINE_HOVER_BACKGROUND = "var(--remotion-studio-white-alpha-05)";
|
|
10
|
+
export declare const TIMELINE_SELECTED_LABEL_BACKGROUND = "var(--remotion-studio-timeline-selected-label-background-color)";
|
|
11
|
+
export declare const TIMELINE_SELECTED_LABEL_TEXT = "var(--remotion-studio-black)";
|
|
12
12
|
export declare const TIMELINE_SELECTED_LABEL_HORIZONTAL_PADDING = 2;
|
|
13
13
|
export declare const getTimelineSelectedLabelStyle: (selected: boolean, subcategory: boolean) => CSSProperties;
|
|
14
|
-
export declare const getTimelineColor: (selected: boolean, subcategory: boolean) => "black" | "
|
|
14
|
+
export declare const getTimelineColor: (selected: boolean, subcategory: boolean) => "var(--remotion-studio-black)" | "var(--remotion-studio-white-alpha-80)";
|
|
15
15
|
export declare const getTimelineSelectedTrackHighlightStyle: (timelineWidth: number, backgroundColor?: string) => CSSProperties;
|
|
16
16
|
export declare const getTimelineRowHighlightBackground: ({ showSelectedBackground, selected, containsSelection, hovered, selectedBackground, }: {
|
|
17
17
|
readonly showSelectedBackground: boolean;
|
|
@@ -20,8 +20,8 @@ export declare const getTimelineRowHighlightBackground: ({ showSelectedBackgroun
|
|
|
20
20
|
readonly hovered: boolean;
|
|
21
21
|
readonly selectedBackground: string;
|
|
22
22
|
}) => string | undefined;
|
|
23
|
-
export declare const TIMELINE_BACKGROUND = "
|
|
24
|
-
export declare const TIMELINE_TICKS_BACKGROUND = "
|
|
23
|
+
export declare const TIMELINE_BACKGROUND = "var(--remotion-studio-timeline-background-color)";
|
|
24
|
+
export declare const TIMELINE_TICKS_BACKGROUND = "var(--remotion-studio-background)";
|
|
25
25
|
export type TimelineSelection = CanvasSelectionItem;
|
|
26
26
|
export type TimelineEasingSelection = Extract<TimelineSelection, {
|
|
27
27
|
type: 'easing';
|
|
@@ -27,6 +27,7 @@ const timeline_refs_1 = require("./timeline-refs");
|
|
|
27
27
|
const timeline_scroll_logic_1 = require("./timeline-scroll-logic");
|
|
28
28
|
const TimelineClipboardKeybindings_1 = require("./TimelineClipboardKeybindings");
|
|
29
29
|
const TimelineDeleteKeybindings_1 = require("./TimelineDeleteKeybindings");
|
|
30
|
+
const { EMPTY_CANVAS_SELECTION, getCanvasSelectionAfterInteraction, getCanvasSequenceSelectionKey, useCanvasSelectionController, } = canvas_1.CanvasInternals;
|
|
30
31
|
exports.TIMELINE_SELECTED_BACKGROUND = colors_1.TIMELINE_SELECTED_BACKGROUND_COLOR;
|
|
31
32
|
exports.TIMELINE_EXPANDED_SELECTED_BACKGROUND = colors_1.BACKGROUND;
|
|
32
33
|
exports.TIMELINE_HOVER_BACKGROUND = colors_1.WHITE_ALPHA_05;
|
|
@@ -81,8 +82,8 @@ const shouldSelectTimelineRowOnPointerDown = ({ selected, shiftKey, metaKey, ctr
|
|
|
81
82
|
return (!selected || (0, exports.isTimelineSelectionModifierEvent)({ shiftKey, metaKey, ctrlKey }));
|
|
82
83
|
};
|
|
83
84
|
exports.shouldSelectTimelineRowOnPointerDown = shouldSelectTimelineRowOnPointerDown;
|
|
84
|
-
exports.EMPTY_TIMELINE_SELECTION_STATE =
|
|
85
|
-
exports.getTimelineSelectionAfterInteraction =
|
|
85
|
+
exports.EMPTY_TIMELINE_SELECTION_STATE = EMPTY_CANVAS_SELECTION;
|
|
86
|
+
exports.getTimelineSelectionAfterInteraction = getCanvasSelectionAfterInteraction;
|
|
86
87
|
const getAvailableTimelineSelectionState = ({ availableKeys, availableItemsByKey, state, }) => {
|
|
87
88
|
if (state.selectedItems.length === 0 && state.anchor === null) {
|
|
88
89
|
return state;
|
|
@@ -292,6 +293,11 @@ const nodePathDescendsFrom = (descendant, ancestor) => {
|
|
|
292
293
|
}
|
|
293
294
|
return ancestor.auxiliaryKeys.every((key, i) => descendant.auxiliaryKeys[i] === key);
|
|
294
295
|
};
|
|
296
|
+
const timelineRowContainsSelection = (nodePathInfo, selection) => selection.type !== 'guide' &&
|
|
297
|
+
(nodePathDescendsFrom(selection.nodePathInfo, nodePathInfo) ||
|
|
298
|
+
((selection.type === 'keyframe' || selection.type === 'easing') &&
|
|
299
|
+
(0, timeline_node_path_key_1.timelineNodePathInfoToKey)(selection.nodePathInfo) ===
|
|
300
|
+
(0, timeline_node_path_key_1.timelineNodePathInfoToKey)(nodePathInfo)));
|
|
295
301
|
const getSelectableTimelineSequenceSelections = (tracks) => {
|
|
296
302
|
return tracks.flatMap((track) => {
|
|
297
303
|
if (track.nodePathInfo === null ||
|
|
@@ -377,6 +383,7 @@ const getSelectableTimelineItems = ({ getDragOverrides, getEffectDragOverrides,
|
|
|
377
383
|
nodePath: nodePathInfo.sequenceSubscriptionKey,
|
|
378
384
|
propStatuses,
|
|
379
385
|
keyframeDisplayOffset: track.keyframeDisplayOffset,
|
|
386
|
+
keyframePlaybackRate: track.keyframePlaybackRate,
|
|
380
387
|
getDragOverrides,
|
|
381
388
|
getEffectDragOverrides,
|
|
382
389
|
timelinePosition,
|
|
@@ -405,7 +412,7 @@ const getSelectableTimelineItems = ({ getDragOverrides, getEffectDragOverrides,
|
|
|
405
412
|
});
|
|
406
413
|
};
|
|
407
414
|
exports.getSelectableTimelineItems = getSelectableTimelineItems;
|
|
408
|
-
exports.getTimelineSequenceSelectionKey =
|
|
415
|
+
exports.getTimelineSequenceSelectionKey = getCanvasSequenceSelectionKey;
|
|
409
416
|
const TimelineSelectAllKeybindings = ({ timeline }) => {
|
|
410
417
|
const keybindings = (0, use_keybinding_1.useKeybinding)();
|
|
411
418
|
const { canSelect } = (0, exports.useTimelineSelection)();
|
|
@@ -539,7 +546,8 @@ const TimelineSelectionProvider = ({ children }) => {
|
|
|
539
546
|
(previewServerState.type === 'connected' ||
|
|
540
547
|
window.remotion_isReadOnlyStudio);
|
|
541
548
|
const keyframeOperationsAvailable = (0, browser_studio_operations_1.canUseKeyframeOperations)();
|
|
542
|
-
const
|
|
549
|
+
const effectOperationsAvailable = (0, browser_studio_operations_1.canUseEffectOperations)();
|
|
550
|
+
const selectionController = useCanvasSelectionController();
|
|
543
551
|
const selectionState = (0, canvas_1.useCanvasSelection)(selectionController);
|
|
544
552
|
const selectionScope = (0, react_1.useRef)(null);
|
|
545
553
|
const marqueeSelectableItems = (0, react_1.useRef)(new Map());
|
|
@@ -558,7 +566,8 @@ const TimelineSelectionProvider = ({ children }) => {
|
|
|
558
566
|
const canSelectItem = (0, react_1.useCallback)((item) => canSelect &&
|
|
559
567
|
(!window.remotion_isReadOnlyStudio ||
|
|
560
568
|
keyframeOperationsAvailable ||
|
|
561
|
-
item.type === 'sequence')
|
|
569
|
+
(effectOperationsAvailable && item.type === 'sequence-effect') ||
|
|
570
|
+
item.type === 'sequence'), [canSelect, effectOperationsAvailable, keyframeOperationsAvailable]);
|
|
562
571
|
const availableSelectionState = selectionScope.current === timelineSelectionScope
|
|
563
572
|
? selectionState
|
|
564
573
|
: exports.EMPTY_TIMELINE_SELECTION_STATE;
|
|
@@ -713,8 +722,7 @@ const TimelineSelectionProvider = ({ children }) => {
|
|
|
713
722
|
selectionController.clear();
|
|
714
723
|
}, [selectionController]);
|
|
715
724
|
const containsSelection = (0, react_1.useCallback)((nodePathInfo) => {
|
|
716
|
-
return availableSelectedItems.some((selected) => selected
|
|
717
|
-
nodePathDescendsFrom(selected.nodePathInfo, nodePathInfo));
|
|
725
|
+
return availableSelectedItems.some((selected) => timelineRowContainsSelection(nodePathInfo, selected));
|
|
718
726
|
}, [availableSelectedItems]);
|
|
719
727
|
const remapSelectionNodePaths = (0, react_1.useCallback)((mutations) => {
|
|
720
728
|
const remapItem = (item) => {
|
|
@@ -1111,8 +1119,7 @@ const useTimelineRowContainsSelection = (nodePathInfo) => {
|
|
|
1111
1119
|
}
|
|
1112
1120
|
return selectionContext
|
|
1113
1121
|
.getSnapshot()
|
|
1114
|
-
.selectedItems.some((selected) => selected
|
|
1115
|
-
nodePathDescendsFrom(selected.nodePathInfo, nodePathInfo));
|
|
1122
|
+
.selectedItems.some((selected) => timelineRowContainsSelection(nodePathInfo, selected));
|
|
1116
1123
|
}, [nodePathInfo, selectionContext]);
|
|
1117
1124
|
return (0, use_sync_external_store_1.useSyncExternalStore)(selectionContext.subscribe, getContainsSelection, getContainsSelection);
|
|
1118
1125
|
};
|
|
@@ -2,7 +2,9 @@ import React from 'react';
|
|
|
2
2
|
import type { TSequence } from 'remotion';
|
|
3
3
|
import type { SequenceNodePathInfo } from '../../helpers/get-timeline-sequence-sort-key';
|
|
4
4
|
export declare const TimelineSequence: React.NamedExoticComponent<{
|
|
5
|
-
readonly s: TSequence
|
|
5
|
+
readonly s: TSequence & {
|
|
6
|
+
loopDisplay: import("@remotion/canvas").TimelineLoopDisplay | undefined;
|
|
7
|
+
};
|
|
6
8
|
readonly connectedCompositions: readonly import("remotion").AnyComposition[];
|
|
7
9
|
readonly nodePathInfo: SequenceNodePathInfo | null;
|
|
8
10
|
readonly sequenceFrameOffset: number;
|