@remotion/studio 4.0.514 → 4.0.516
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/install-package.js +14 -1
- package/dist/api/restart-studio.js +4 -0
- package/dist/components/AssetSelector.js +3 -9
- package/dist/components/AssetSelectorItem.d.ts +3 -1
- package/dist/components/AssetSelectorItem.js +41 -42
- package/dist/components/AudioWaveform.js +17 -139
- package/dist/components/Canvas.js +7 -4
- package/dist/components/CaptionInspector.d.ts +2 -0
- package/dist/components/CaptionInspector.js +3 -5
- package/dist/components/CompositionSelector.js +6 -3
- package/dist/components/CompositionSelectorItem.js +9 -10
- package/dist/components/ConfigSelect.d.ts +17 -0
- package/dist/components/ConfigSelect.js +50 -0
- package/dist/components/CurrentAsset.d.ts +10 -2
- package/dist/components/CurrentAsset.js +139 -46
- package/dist/components/FixComputedValueModal.js +54 -51
- package/dist/components/GlobalKeybindings.js +5 -5
- package/dist/components/InlineAction.d.ts +1 -1
- package/dist/components/InlineAction.js +12 -2
- package/dist/components/InlineCaptionInspector.d.ts +2 -0
- package/dist/components/InlineCaptionInspector.js +2 -2
- package/dist/components/InlineCompositionName.js +1 -1
- package/dist/components/InlineEditableTitle.js +3 -2
- package/dist/components/InspectorInfoHeader.js +1 -1
- package/dist/components/InspectorOpenInEditor.js +48 -72
- package/dist/components/InspectorPanel/AlignmentControls.js +2 -3
- package/dist/components/InspectorPanel/CollapsibleInspectorSectionHeader.d.ts +7 -0
- package/dist/components/InspectorPanel/CollapsibleInspectorSectionHeader.js +39 -0
- package/dist/components/InspectorPanel/CompositionInspector.js +41 -12
- package/dist/components/InspectorPanel/KeyframeEasingNavigator.js +10 -4
- package/dist/components/InspectorPanel/SequenceInspectorHeader.js +2 -1
- package/dist/components/InspectorPanel/SequenceSelectionInspector.js +1 -4
- package/dist/components/InspectorPanel/common.d.ts +0 -12
- package/dist/components/InspectorPanel/common.js +3 -52
- package/dist/components/InspectorPanel/use-composition-actions.js +0 -1
- package/dist/components/InspectorPanelLayout.d.ts +1 -1
- package/dist/components/InspectorPanelLayout.js +1 -1
- package/dist/components/InspectorSequenceSection.js +40 -54
- package/dist/components/InstallPackage.d.ts +3 -2
- package/dist/components/InstallPackage.js +90 -28
- package/dist/components/InstallablePackage.js +37 -11
- package/dist/components/KeyboardShortcutsSettings.d.ts +2 -0
- package/dist/components/KeyboardShortcutsSettings.js +177 -0
- package/dist/components/Menu/MenuDivider.js +1 -1
- package/dist/components/MenuBuildIndicator.js +1 -1
- package/dist/components/Modals.js +12 -4
- package/dist/components/NewComposition/CodemodFooter.d.ts +0 -1
- package/dist/components/NewComposition/CodemodFooter.js +2 -8
- package/dist/components/NewComposition/DeleteComposition.js +1 -1
- package/dist/components/NewComposition/DeleteFolder.js +1 -1
- package/dist/components/NewComposition/DuplicateComposition.js +1 -1
- package/dist/components/NewComposition/InputDragger.js +27 -4
- package/dist/components/NewComposition/NewComposition.js +1 -1
- package/dist/components/NewComposition/NewFolder.js +1 -3
- package/dist/components/NewComposition/RenameComposition.js +1 -1
- package/dist/components/NewComposition/RenameFolder.js +1 -1
- package/dist/components/NewComposition/use-rename-static-file.js +1 -1
- package/dist/components/Notifications/NotificationCenter.d.ts +1 -0
- package/dist/components/Notifications/NotificationCenter.js +5 -0
- package/dist/components/OptionsPanel.js +9 -12
- package/dist/components/PreviewToolbar.js +5 -2
- package/dist/components/PreviewToolbarOverflowButton.js +30 -0
- package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +2 -2
- package/dist/components/QuickSwitcher/QuickSwitcherContent.js +14 -30
- package/dist/components/RenderButton.js +66 -183
- package/dist/components/RenderModal/DataEditor.js +15 -12
- package/dist/components/RenderModal/GuiRenderStatus.js +3 -1
- package/dist/components/RenderModal/RenderModalOutputName.js +3 -3
- package/dist/components/RenderModal/RenderStatusModal.js +0 -1
- package/dist/components/RenderModal/SchemaEditor/ZodSwitch.js +3 -1
- package/dist/components/RenderModal/SchemaEditor/infer-zod-schema-from-value.d.ts +15 -0
- package/dist/components/RenderModal/SchemaEditor/infer-zod-schema-from-value.js +95 -0
- package/dist/components/RenderModal/WebRenderModal.js +4 -2
- package/dist/components/RenderQueue/RenderQueueItem.js +3 -1
- package/dist/components/RenderQueue/RenderQueueOpenInFolder.js +3 -1
- package/dist/components/RenderQueue/RenderQueueRemoveItem.js +2 -7
- package/dist/components/RenderingSettings.js +7 -4
- package/dist/components/RulersAndGuidesToggle.d.ts +2 -0
- package/dist/components/RulersAndGuidesToggle.js +23 -0
- package/dist/components/SegmentedButton.d.ts +29 -0
- package/dist/components/SegmentedButton.js +226 -0
- package/dist/components/SelectedOutlineCanvasRotation.d.ts +1 -0
- package/dist/components/SelectedOutlineCanvasRotation.js +11 -4
- package/dist/components/SelectedOutlineEditingHandles.d.ts +16 -0
- package/dist/components/SelectedOutlineEditingHandles.js +66 -0
- package/dist/components/SelectedOutlineElement.d.ts +2 -4
- package/dist/components/SelectedOutlineElement.js +15 -54
- package/dist/components/SelectedOutlineOverlay.js +32 -6
- package/dist/components/SelectedOutlinePolygon.d.ts +4 -4
- package/dist/components/SelectedOutlinePolygon.js +20 -17
- package/dist/components/SelectedOutlineRenderer.js +66 -14
- package/dist/components/SettingsModal.d.ts +1 -1
- package/dist/components/SettingsModal.js +30 -7
- package/dist/components/SettingsModalFooter.js +2 -1
- package/dist/components/SkillsSettings.d.ts +2 -0
- package/dist/components/SkillsSettings.js +129 -0
- package/dist/components/StaticFilePreview.js +7 -1
- package/dist/components/StudioSettings.js +7 -48
- package/dist/components/Tabs/index.js +1 -1
- package/dist/components/Timeline/Timeline.js +0 -1
- package/dist/components/Timeline/TimelineAssetField.d.ts +1 -1
- package/dist/components/Timeline/TimelineAssetField.js +15 -9
- package/dist/components/Timeline/TimelineBooleanField.js +1 -4
- package/dist/components/Timeline/TimelineClipboardKeybindings.js +13 -12
- package/dist/components/Timeline/TimelineEffectItem.d.ts +1 -0
- package/dist/components/Timeline/TimelineEffectItem.js +45 -15
- package/dist/components/Timeline/TimelineEffectPropItem.js +21 -4
- package/dist/components/Timeline/TimelineExpandArrowButton.js +10 -7
- package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +4 -1
- package/dist/components/Timeline/TimelineExpandedRow.js +5 -4
- package/dist/components/Timeline/TimelineExpandedSection.js +8 -5
- package/dist/components/Timeline/TimelineFieldLabel.js +4 -2
- package/dist/components/Timeline/TimelineFieldRowContent.d.ts +1 -2
- package/dist/components/Timeline/TimelineFieldRowContent.js +8 -21
- package/dist/components/Timeline/TimelineImageInfo.d.ts +0 -1
- package/dist/components/Timeline/TimelineImageInfo.js +13 -32
- package/dist/components/Timeline/TimelineKeyframeControls.js +10 -4
- package/dist/components/Timeline/TimelinePrimitiveFieldValue.js +1 -1
- package/dist/components/Timeline/TimelineRotationField.js +0 -2
- package/dist/components/Timeline/TimelineRowChrome.d.ts +1 -1
- package/dist/components/Timeline/TimelineRowChrome.js +41 -6
- package/dist/components/Timeline/TimelineRowLayoutContext.d.ts +0 -1
- package/dist/components/Timeline/TimelineRowLayoutContext.js +1 -4
- package/dist/components/Timeline/TimelineScaleField.js +2 -6
- package/dist/components/Timeline/TimelineSchemaField.js +9 -3
- package/dist/components/Timeline/TimelineSelection.d.ts +8 -3
- package/dist/components/Timeline/TimelineSelection.js +7 -5
- package/dist/components/Timeline/TimelineSequence.d.ts +2 -0
- package/dist/components/Timeline/TimelineSequence.js +110 -19
- package/dist/components/Timeline/TimelineSequenceItem.js +11 -8
- package/dist/components/Timeline/TimelineSequenceName.js +1 -1
- package/dist/components/Timeline/TimelineSequencePropItem.js +15 -2
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +4 -2
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +85 -91
- package/dist/components/Timeline/TimelineTrack.js +5 -2
- package/dist/components/Timeline/TimelineTransformOriginField.js +0 -4
- package/dist/components/Timeline/TimelineTranslateField.js +0 -4
- package/dist/components/Timeline/TimelineVideoInfo.js +4 -2
- package/dist/components/Timeline/TimelineVirtualization.js +3 -1
- package/dist/components/Timeline/delete-selected-timeline-item.js +6 -2
- package/dist/components/Timeline/duplicate-selected-timeline-item.js +7 -14
- package/dist/components/Timeline/get-copy-context-for-agents-menu-item.d.ts +4 -0
- package/dist/components/Timeline/get-copy-context-for-agents-menu-item.js +26 -0
- package/dist/components/Timeline/get-sequence-context-menu-items.js +2 -19
- package/dist/components/Timeline/get-timeline-sequence-visible-layout.d.ts +6 -1
- package/dist/components/Timeline/get-timeline-sequence-visible-layout.js +11 -4
- package/dist/components/Timeline/save-effect-prop.js +3 -3
- package/dist/components/Timeline/split-selected-timeline-item.js +0 -1
- package/dist/components/Timeline/timeline-field-row-layout.d.ts +1 -1
- package/dist/components/Timeline/timeline-field-row-layout.js +4 -7
- package/dist/components/Timeline/timeline-field-utils.js +0 -2
- package/dist/components/Timeline/use-timeline-asset-drop.js +1 -0
- package/dist/components/TimelineCombobox.js +25 -160
- package/dist/components/TimelineInOutToggle.js +4 -1
- package/dist/components/duplicate-jsx-node-api.d.ts +2 -0
- package/dist/components/duplicate-jsx-node-api.js +12 -0
- package/dist/components/effect-drag-and-drop.js +7 -7
- package/dist/components/effect-operations-api.d.ts +8 -0
- package/dist/components/effect-operations-api.js +52 -0
- package/dist/components/handle-drop.d.ts +2 -1
- package/dist/components/handle-drop.js +3 -3
- package/dist/components/import-assets.js +9 -65
- package/dist/components/keyboard-shortcuts.d.ts +10 -0
- package/dist/components/keyboard-shortcuts.js +135 -0
- package/dist/components/selected-outline-control-layout.js +2 -6
- package/dist/components/selected-outline-measurement.d.ts +1 -1
- package/dist/components/selected-outline-measurement.js +16 -3
- package/dist/components/use-delete-asset.d.ts +1 -0
- package/dist/components/use-delete-asset.js +40 -0
- package/dist/components/use-selected-outline-control-target.d.ts +11 -0
- package/dist/components/use-selected-outline-control-target.js +79 -0
- package/dist/error-overlay/remotion-overlay/log-studio-error.js +4 -0
- package/dist/esm/{chunk-r46yxrjr.js → chunk-4bxz1d3g.js} +4 -3
- package/dist/esm/{chunk-xn2q7eem.js → chunk-w4244j4n.js} +14747 -14549
- package/dist/esm/index.mjs +3 -0
- package/dist/esm/internals.mjs +14747 -14549
- package/dist/esm/previewEntry.mjs +14557 -14359
- package/dist/esm/renderEntry.mjs +2 -2
- package/dist/helpers/add-asset-cache-bust.d.ts +4 -0
- package/dist/helpers/add-asset-cache-bust.js +10 -0
- package/dist/helpers/browser-studio-operations.d.ts +3 -0
- package/dist/helpers/browser-studio-operations.js +18 -1
- package/dist/helpers/calculate-timeline.js +2 -1
- package/dist/helpers/colors.d.ts +3 -1
- package/dist/helpers/colors.js +7 -3
- package/dist/helpers/drag-aware-double-click.d.ts +6 -0
- package/dist/helpers/drag-aware-double-click.js +20 -0
- package/dist/helpers/get-asset-metadata.js +25 -16
- package/dist/helpers/get-sequence-double-click-action.d.ts +2 -1
- package/dist/helpers/get-sequence-double-click-action.js +7 -1
- package/dist/helpers/get-timeline-sequence-layout.d.ts +4 -1
- package/dist/helpers/get-timeline-sequence-layout.js +15 -6
- package/dist/helpers/get-timeline-sequence-sort-key.d.ts +2 -1
- package/dist/helpers/hoverable.d.ts +1 -0
- package/dist/helpers/hoverable.js +2 -1
- package/dist/helpers/inject-css.js +7 -3
- package/dist/helpers/open-in-remotion-convert.d.ts +7 -0
- package/dist/helpers/open-in-remotion-convert.js +18 -0
- package/dist/helpers/use-max-media-duration.js +5 -3
- package/dist/helpers/use-media-metadata.d.ts +2 -1
- package/dist/helpers/use-media-metadata.js +49 -25
- package/dist/helpers/use-menu-structure.js +54 -67
- package/dist/icons/align-center-horizontal.js +1 -1
- package/dist/icons/align-left.js +1 -1
- package/dist/icons/align-right.js +1 -1
- package/dist/icons/cloud-download.d.ts +4 -0
- package/dist/icons/cloud-download.js +8 -0
- package/dist/icons/keyboard.d.ts +4 -0
- package/dist/icons/keyboard.js +10 -0
- package/dist/icons/license.d.ts +4 -0
- package/dist/icons/license.js +8 -0
- package/dist/icons/package.d.ts +4 -0
- package/dist/icons/package.js +8 -0
- package/dist/icons/react.js +1 -1
- package/dist/icons/remotion-convert.d.ts +4 -0
- package/dist/icons/remotion-convert.js +10 -0
- package/dist/icons/skills.d.ts +4 -0
- package/dist/icons/skills.js +10 -0
- package/dist/state/modals.d.ts +2 -5
- package/package.json +12 -12
- package/dist/components/KeyboardShortcutsExplainer.d.ts +0 -2
- package/dist/components/KeyboardShortcutsExplainer.js +0 -194
|
@@ -187,30 +187,6 @@ exports.getAssetElementForDroppedFile = getAssetElementForDroppedFile;
|
|
|
187
187
|
const isSvgFile = (file) => file.name.toLowerCase().endsWith('.svg');
|
|
188
188
|
const hasSvgFile = (files) => files.some(isSvgFile);
|
|
189
189
|
exports.hasSvgFile = hasSvgFile;
|
|
190
|
-
const getAssetLabel = (element) => {
|
|
191
|
-
if (element.type !== 'asset') {
|
|
192
|
-
throw new Error('Expected asset element');
|
|
193
|
-
}
|
|
194
|
-
if (element.assetType === 'image') {
|
|
195
|
-
return '<CanvasImage>';
|
|
196
|
-
}
|
|
197
|
-
if (element.assetType === 'video') {
|
|
198
|
-
return '<Video>';
|
|
199
|
-
}
|
|
200
|
-
if (element.assetType === 'gif') {
|
|
201
|
-
return '<Gif>';
|
|
202
|
-
}
|
|
203
|
-
if (element.assetType === 'animated-image') {
|
|
204
|
-
return '<AnimatedImage>';
|
|
205
|
-
}
|
|
206
|
-
if (element.assetType === 'audio') {
|
|
207
|
-
return '<Audio>';
|
|
208
|
-
}
|
|
209
|
-
throw new Error('Unsupported asset type');
|
|
210
|
-
};
|
|
211
|
-
const getComponentLabel = (component) => {
|
|
212
|
-
return `<${component.componentName}>`;
|
|
213
|
-
};
|
|
214
190
|
const getCenteredPosition = ({ dimensions, dropPosition, }) => {
|
|
215
191
|
if (dropPosition === null) {
|
|
216
192
|
return null;
|
|
@@ -478,14 +454,6 @@ const pickFilesToImport = ({ multiple = true, } = {}) => {
|
|
|
478
454
|
});
|
|
479
455
|
};
|
|
480
456
|
exports.pickFilesToImport = pickFilesToImport;
|
|
481
|
-
const notifyInsertedAssets = (insertedLabels) => {
|
|
482
|
-
if (insertedLabels.length === 1) {
|
|
483
|
-
(0, NotificationCenter_1.showNotification)(`Added ${insertedLabels[0]} to source file`, 2000);
|
|
484
|
-
}
|
|
485
|
-
else if (insertedLabels.length > 1) {
|
|
486
|
-
(0, NotificationCenter_1.showNotification)(`Added ${insertedLabels.length} assets to source file`, 2000);
|
|
487
|
-
}
|
|
488
|
-
};
|
|
489
457
|
const notifyUnsupportedFiles = (unsupportedFiles) => {
|
|
490
458
|
if (unsupportedFiles.length === 1) {
|
|
491
459
|
(0, NotificationCenter_1.showNotification)(`Cannot add ${unsupportedFiles[0]}: Unsupported file type`, 3000);
|
|
@@ -517,6 +485,10 @@ const insertCompositionElement = async ({ compositionFile, compositionId, elemen
|
|
|
517
485
|
return true;
|
|
518
486
|
};
|
|
519
487
|
const downloadRemoteAsset = (url) => {
|
|
488
|
+
const browserStudioOperations = (0, browser_studio_operations_1.getBrowserStudioOperations)();
|
|
489
|
+
if (browserStudioOperations) {
|
|
490
|
+
return browserStudioOperations.downloadRemoteAsset({ url });
|
|
491
|
+
}
|
|
520
492
|
return (0, call_api_1.callApi)('/api/download-remote-asset', { url });
|
|
521
493
|
};
|
|
522
494
|
const importAssets = async ({ compositionFile, compositionId, destinationDimensions, dropPosition, files, fps, from, preferCompositionStart, svgImportMode, }) => {
|
|
@@ -536,7 +508,6 @@ const importAssets = async ({ compositionFile, compositionId, destinationDimensi
|
|
|
536
508
|
(0, NotificationCenter_1.showNotification)(`File with name ${differentExistingFile.name} already exists and is different`, 4000);
|
|
537
509
|
return;
|
|
538
510
|
}
|
|
539
|
-
const insertedLabels = [];
|
|
540
511
|
const addedStaticFiles = [];
|
|
541
512
|
const unsupportedFiles = [];
|
|
542
513
|
const notifyAddedStaticFiles = () => {
|
|
@@ -576,7 +547,6 @@ const importAssets = async ({ compositionFile, compositionId, destinationDimensi
|
|
|
576
547
|
notifyAddedStaticFiles();
|
|
577
548
|
return;
|
|
578
549
|
}
|
|
579
|
-
insertedLabels.push('<Interactive.Svg>');
|
|
580
550
|
continue;
|
|
581
551
|
}
|
|
582
552
|
const element = (0, exports.getAssetElementForDroppedFile)({
|
|
@@ -626,10 +596,8 @@ const importAssets = async ({ compositionFile, compositionId, destinationDimensi
|
|
|
626
596
|
notifyAddedStaticFiles();
|
|
627
597
|
return;
|
|
628
598
|
}
|
|
629
|
-
insertedLabels.push(getAssetLabel(element));
|
|
630
599
|
}
|
|
631
600
|
notifyAddedStaticFiles();
|
|
632
|
-
notifyInsertedAssets(insertedLabels);
|
|
633
601
|
notifyUnsupportedFiles(unsupportedFiles);
|
|
634
602
|
}
|
|
635
603
|
catch (error) {
|
|
@@ -678,7 +646,7 @@ const insertSvgMarkup = async ({ compositionFile, compositionId, destinationDime
|
|
|
678
646
|
catch (_a) {
|
|
679
647
|
dimensions = null;
|
|
680
648
|
}
|
|
681
|
-
|
|
649
|
+
await insertCompositionElement({
|
|
682
650
|
compositionFile,
|
|
683
651
|
compositionId,
|
|
684
652
|
from: null,
|
|
@@ -692,9 +660,6 @@ const insertSvgMarkup = async ({ compositionFile, compositionId, destinationDime
|
|
|
692
660
|
}),
|
|
693
661
|
},
|
|
694
662
|
});
|
|
695
|
-
if (inserted) {
|
|
696
|
-
notifyInsertedAssets(['<Interactive.Svg>']);
|
|
697
|
-
}
|
|
698
663
|
}
|
|
699
664
|
catch (error) {
|
|
700
665
|
(0, NotificationCenter_1.showNotification)(`Could not add SVG: ${error instanceof Error ? error.message : String(error)}`, 4000);
|
|
@@ -720,7 +685,7 @@ const importRemoteAsset = async ({ compositionFile, compositionId, destinationDi
|
|
|
720
685
|
fps,
|
|
721
686
|
})
|
|
722
687
|
: null;
|
|
723
|
-
|
|
688
|
+
await insertCompositionElement({
|
|
724
689
|
compositionFile,
|
|
725
690
|
compositionId,
|
|
726
691
|
from: (0, exports.getFromForDrop)({
|
|
@@ -739,10 +704,6 @@ const importRemoteAsset = async ({ compositionFile, compositionId, destinationDi
|
|
|
739
704
|
}),
|
|
740
705
|
},
|
|
741
706
|
});
|
|
742
|
-
if (!inserted) {
|
|
743
|
-
return;
|
|
744
|
-
}
|
|
745
|
-
notifyInsertedAssets([getAssetLabel(element)]);
|
|
746
707
|
}
|
|
747
708
|
catch (error) {
|
|
748
709
|
(0, NotificationCenter_1.showNotification)(`Could not add remote asset: ${error instanceof Error ? error.message : String(error)}`, 4000);
|
|
@@ -768,7 +729,7 @@ const insertRemoteAudio = async ({ compositionFile, compositionId, fps, from, pr
|
|
|
768
729
|
}),
|
|
769
730
|
position: null,
|
|
770
731
|
};
|
|
771
|
-
|
|
732
|
+
await insertCompositionElement({
|
|
772
733
|
compositionFile,
|
|
773
734
|
compositionId,
|
|
774
735
|
element,
|
|
@@ -778,10 +739,6 @@ const insertRemoteAudio = async ({ compositionFile, compositionId, fps, from, pr
|
|
|
778
739
|
preferCompositionStart,
|
|
779
740
|
}),
|
|
780
741
|
});
|
|
781
|
-
if (!inserted) {
|
|
782
|
-
return;
|
|
783
|
-
}
|
|
784
|
-
notifyInsertedAssets([getAssetLabel(element)]);
|
|
785
742
|
}
|
|
786
743
|
catch (error) {
|
|
787
744
|
(0, NotificationCenter_1.showNotification)(`Could not add sound effect: ${error instanceof Error ? error.message : String(error)}`, 4000);
|
|
@@ -793,7 +750,6 @@ const insertExistingAssets = async ({ assetPaths, compositionFile, compositionId
|
|
|
793
750
|
if (assetPaths.length === 0) {
|
|
794
751
|
return;
|
|
795
752
|
}
|
|
796
|
-
const insertedLabels = [];
|
|
797
753
|
const unsupportedFiles = [];
|
|
798
754
|
try {
|
|
799
755
|
for (const assetPath of assetPaths) {
|
|
@@ -832,9 +788,7 @@ const insertExistingAssets = async ({ assetPaths, compositionFile, compositionId
|
|
|
832
788
|
if (!inserted) {
|
|
833
789
|
return;
|
|
834
790
|
}
|
|
835
|
-
insertedLabels.push(getAssetLabel(element));
|
|
836
791
|
}
|
|
837
|
-
notifyInsertedAssets(insertedLabels);
|
|
838
792
|
notifyUnsupportedFiles(unsupportedFiles);
|
|
839
793
|
}
|
|
840
794
|
catch (error) {
|
|
@@ -844,7 +798,7 @@ const insertExistingAssets = async ({ assetPaths, compositionFile, compositionId
|
|
|
844
798
|
exports.insertExistingAssets = insertExistingAssets;
|
|
845
799
|
const insertComponent = async ({ component, compositionFile, compositionId, dropPosition, from, preferCompositionStart, }) => {
|
|
846
800
|
try {
|
|
847
|
-
|
|
801
|
+
await insertCompositionElement({
|
|
848
802
|
compositionFile,
|
|
849
803
|
compositionId,
|
|
850
804
|
from: (0, exports.getFromForDrop)({
|
|
@@ -864,10 +818,6 @@ const insertComponent = async ({ component, compositionFile, compositionId, drop
|
|
|
864
818
|
}),
|
|
865
819
|
},
|
|
866
820
|
});
|
|
867
|
-
if (!inserted) {
|
|
868
|
-
return;
|
|
869
|
-
}
|
|
870
|
-
(0, NotificationCenter_1.showNotification)(`Added ${getComponentLabel(component)} to source file`, 2000);
|
|
871
821
|
}
|
|
872
822
|
catch (error) {
|
|
873
823
|
(0, NotificationCenter_1.showNotification)(`Could not add component: ${error instanceof Error ? error.message : String(error)}`, 4000);
|
|
@@ -900,7 +850,7 @@ const insertComposition = async ({ composition, compositionFile, compositionId,
|
|
|
900
850
|
width: calculated.width,
|
|
901
851
|
height: calculated.height,
|
|
902
852
|
};
|
|
903
|
-
|
|
853
|
+
await insertCompositionElement({
|
|
904
854
|
compositionFile,
|
|
905
855
|
compositionId,
|
|
906
856
|
from: (0, exports.getFromForDrop)({
|
|
@@ -922,10 +872,6 @@ const insertComposition = async ({ composition, compositionFile, compositionId,
|
|
|
922
872
|
}),
|
|
923
873
|
},
|
|
924
874
|
});
|
|
925
|
-
if (!inserted) {
|
|
926
|
-
return;
|
|
927
|
-
}
|
|
928
|
-
(0, NotificationCenter_1.showNotification)(`Added ${composition.compositionId} to ${compositionId}`, 2000);
|
|
929
875
|
}
|
|
930
876
|
catch (error) {
|
|
931
877
|
(0, NotificationCenter_1.showNotification)(`Could not add composition: ${error instanceof Error ? error.message : String(error)}`, 4000);
|
|
@@ -951,9 +897,7 @@ const insertElement = async ({ compositionFile, compositionId, element, expected
|
|
|
951
897
|
? response.reason
|
|
952
898
|
: `Element file changed: ${response.conflict.filePath}`;
|
|
953
899
|
(0, NotificationCenter_1.showNotification)(`Could not add Element: ${reason}`, 4000);
|
|
954
|
-
return;
|
|
955
900
|
}
|
|
956
|
-
(0, NotificationCenter_1.showNotification)(`Added ${element.displayName} to source file`, 2000);
|
|
957
901
|
}
|
|
958
902
|
catch (error) {
|
|
959
903
|
(0, NotificationCenter_1.showNotification)(`Could not add Element: ${error instanceof Error ? error.message : String(error)}`, 4000);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type KeyboardShortcut = {
|
|
2
|
+
readonly action: string;
|
|
3
|
+
readonly chords: readonly (readonly string[])[];
|
|
4
|
+
};
|
|
5
|
+
export type KeyboardShortcutGroup = {
|
|
6
|
+
readonly name: string;
|
|
7
|
+
readonly shortcuts: readonly KeyboardShortcut[];
|
|
8
|
+
};
|
|
9
|
+
export declare const keyboardShortcutGroups: readonly KeyboardShortcutGroup[];
|
|
10
|
+
export declare const askAIKeyboardShortcutGroup: KeyboardShortcutGroup;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.askAIKeyboardShortcutGroup = exports.keyboardShortcutGroups = void 0;
|
|
4
|
+
const ShortcutHint_1 = require("../error-overlay/remotion-overlay/ShortcutHint");
|
|
5
|
+
const is_mac_1 = require("../helpers/is-mac");
|
|
6
|
+
exports.keyboardShortcutGroups = [
|
|
7
|
+
{
|
|
8
|
+
name: 'Playback',
|
|
9
|
+
shortcuts: [
|
|
10
|
+
{ action: '1 second back', chords: [['Shift', '←']] },
|
|
11
|
+
{ action: 'Previous frame', chords: [['←']] },
|
|
12
|
+
{ action: 'Play / Pause', chords: [['Space']] },
|
|
13
|
+
{ action: 'Next frame', chords: [['→']] },
|
|
14
|
+
{ action: '1 second forward', chords: [['Shift', '→']] },
|
|
15
|
+
{ action: 'Jump to beginning', chords: [['A']] },
|
|
16
|
+
{ action: 'Jump to end', chords: [['E']] },
|
|
17
|
+
{ action: 'Reverse playback', chords: [['J']] },
|
|
18
|
+
{ action: 'Pause', chords: [['K']] },
|
|
19
|
+
{ action: 'Play / Speed up', chords: [['L']] },
|
|
20
|
+
{ action: 'Go to frame', chords: [['G']] },
|
|
21
|
+
{
|
|
22
|
+
action: 'Pause & return to playback start',
|
|
23
|
+
chords: [['Enter']],
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: 'Sidebar',
|
|
29
|
+
shortcuts: [
|
|
30
|
+
{
|
|
31
|
+
action: 'Toggle left sidebar',
|
|
32
|
+
chords: [[ShortcutHint_1.cmdOrCtrlCharacter, 'B']],
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
action: 'Toggle right sidebar',
|
|
36
|
+
chords: [[ShortcutHint_1.cmdOrCtrlCharacter, 'J']],
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
action: 'Toggle both sidebars',
|
|
40
|
+
chords: [[ShortcutHint_1.cmdOrCtrlCharacter, 'G']],
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'View',
|
|
46
|
+
shortcuts: [
|
|
47
|
+
{ action: 'Enter fullscreen', chords: [['F']] },
|
|
48
|
+
{ action: 'Exit fullscreen', chords: [['Esc']] },
|
|
49
|
+
{ action: 'Enable snapping', chords: [['Shift', 'M']] },
|
|
50
|
+
],
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'Navigation',
|
|
54
|
+
shortcuts: [
|
|
55
|
+
{ action: 'Previous composition', chords: [['PageUp']] },
|
|
56
|
+
{ action: 'Next composition', chords: [['PageDown']] },
|
|
57
|
+
{
|
|
58
|
+
action: 'Render, unless a sequence or prop is selected',
|
|
59
|
+
chords: [['R']],
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
action: 'Checkerboard, unless a sequence or prop is selected',
|
|
63
|
+
chords: [['T']],
|
|
64
|
+
},
|
|
65
|
+
{ action: 'Show keyboard shortcuts', chords: [['?']] },
|
|
66
|
+
{
|
|
67
|
+
action: 'Quick Switcher',
|
|
68
|
+
chords: [[ShortcutHint_1.cmdOrCtrlCharacter, 'K']],
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'Playback range',
|
|
74
|
+
shortcuts: [
|
|
75
|
+
{ action: 'Set In Point', chords: [['I']] },
|
|
76
|
+
{ action: 'Set Out Point', chords: [['O']] },
|
|
77
|
+
{ action: 'Clear In/Out Points', chords: [['X']] },
|
|
78
|
+
],
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: 'Zoom',
|
|
82
|
+
shortcuts: [
|
|
83
|
+
{ action: 'Zoom in', chords: [['+']] },
|
|
84
|
+
{ action: 'Zoom out', chords: [['-']] },
|
|
85
|
+
{ action: 'Reset zoom', chords: [['0']] },
|
|
86
|
+
],
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: 'Props Editor',
|
|
90
|
+
shortcuts: [
|
|
91
|
+
{ action: 'Undo', chords: [[ShortcutHint_1.cmdOrCtrlCharacter, 'Z']] },
|
|
92
|
+
{
|
|
93
|
+
action: 'Redo',
|
|
94
|
+
chords: [
|
|
95
|
+
is_mac_1.isMac
|
|
96
|
+
? [ShortcutHint_1.cmdOrCtrlCharacter, 'Shift', 'Z']
|
|
97
|
+
: [ShortcutHint_1.cmdOrCtrlCharacter, 'Y'],
|
|
98
|
+
],
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: 'Interactivity',
|
|
104
|
+
shortcuts: [
|
|
105
|
+
{ action: 'Select range / axis lock drag', chords: [['Shift']] },
|
|
106
|
+
{ action: 'Toggle selection', chords: [[ShortcutHint_1.cmdOrCtrlCharacter]] },
|
|
107
|
+
{
|
|
108
|
+
action: 'Select sequence rows',
|
|
109
|
+
chords: [[ShortcutHint_1.cmdOrCtrlCharacter, 'A']],
|
|
110
|
+
},
|
|
111
|
+
{ action: 'Select translate prop', chords: [['P']] },
|
|
112
|
+
{ action: 'Select opacity prop', chords: [['T']] },
|
|
113
|
+
{ action: 'Select rotate prop', chords: [['R']] },
|
|
114
|
+
{ action: 'Select scale prop', chords: [['S']] },
|
|
115
|
+
{
|
|
116
|
+
action: 'Duplicate sequences',
|
|
117
|
+
chords: [[ShortcutHint_1.cmdOrCtrlCharacter, 'D']],
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
action: 'Copy effects / values',
|
|
121
|
+
chords: [[ShortcutHint_1.cmdOrCtrlCharacter, 'C']],
|
|
122
|
+
},
|
|
123
|
+
{ action: 'Cut effects', chords: [[ShortcutHint_1.cmdOrCtrlCharacter, 'X']] },
|
|
124
|
+
{
|
|
125
|
+
action: 'Paste effects / values',
|
|
126
|
+
chords: [[ShortcutHint_1.cmdOrCtrlCharacter, 'V']],
|
|
127
|
+
},
|
|
128
|
+
{ action: 'Delete / reset selection', chords: [['Del'], ['⌫']] },
|
|
129
|
+
],
|
|
130
|
+
},
|
|
131
|
+
];
|
|
132
|
+
exports.askAIKeyboardShortcutGroup = {
|
|
133
|
+
name: 'AI',
|
|
134
|
+
shortcuts: [{ action: 'Ask AI', chords: [[ShortcutHint_1.cmdOrCtrlCharacter, 'I']] }],
|
|
135
|
+
};
|
|
@@ -64,14 +64,10 @@ const getSelectedOutlineControlLayout = (points) => {
|
|
|
64
64
|
const targetHalfSizeY = isSmallY ? targetHalfSize / 2 : targetHalfSize;
|
|
65
65
|
const rotationHandleRadius = Math.max(targetHalfSizeX, targetHalfSizeY) * 1.5;
|
|
66
66
|
const scaleEdges = ['top', 'right', 'bottom', 'left'].filter((edge) => {
|
|
67
|
-
|
|
68
|
-
if (edge === 'top') {
|
|
67
|
+
if (edge === 'top' || edge === 'bottom') {
|
|
69
68
|
return !isTinyY;
|
|
70
69
|
}
|
|
71
|
-
|
|
72
|
-
return !isTinyX;
|
|
73
|
-
}
|
|
74
|
-
return true;
|
|
70
|
+
return !isTinyX;
|
|
75
71
|
});
|
|
76
72
|
const rotationCorners = ['top-left', 'top-right', 'bottom-right', 'bottom-left'].map((corner) => ({
|
|
77
73
|
corner,
|
|
@@ -80,6 +80,6 @@ export declare const getSequencesWithSelectableOutlines: ({ sequences, overrideI
|
|
|
80
80
|
readonly compositions?: readonly import("remotion").AnyComposition[] | undefined;
|
|
81
81
|
readonly timelinePosition: number;
|
|
82
82
|
}) => SequenceWithSelectedOutline[];
|
|
83
|
-
export declare const measureOutlines: (container: SVGSVGElement, targets: readonly SelectedOutlineLayoutTarget[]) => SelectedOutline[];
|
|
83
|
+
export declare const measureOutlines: (container: SVGSVGElement, targets: readonly SelectedOutlineLayoutTarget[], hoveredTimelineNodePathKey: string | null) => SelectedOutline[];
|
|
84
84
|
export declare const outlinesAreEqual: (a: readonly SelectedOutline[], b: readonly SelectedOutline[]) => boolean;
|
|
85
85
|
export {};
|
|
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.outlinesAreEqual = exports.measureOutlines = exports.getSequencesWithSelectableOutlines = exports.getSelectedRotationInfo = exports.getSelectedTransformOriginInfo = exports.getSelectedCropInfo = exports.getSelectedEffectFieldsBySequenceKey = exports.getOutlineSelectionInteraction = exports.getSequenceKeysContainingSelection = exports.getSelectedSequenceKeys = exports.cropOutlinePoints = exports.getTransformedSvgViewportPoints = exports.getSelectedOutlineRotationPivot = exports.getSelectedOutlineRotationCornerInfo = exports.getRotationCursor = exports.getSelectedOutlineRotationDeltaDegrees = exports.getAngleDegrees = exports.vectorBetween = exports.vectorLength = exports.dot = exports.getOutlineCenter = exports.midpoint = exports.pointToString = void 0;
|
|
4
4
|
const calculate_timeline_1 = require("../helpers/calculate-timeline");
|
|
5
5
|
const colors_1 = require("../helpers/colors");
|
|
6
|
+
const get_box_quads_polyfill_internals_js_1 = require("../helpers/get-box-quads-polyfill-internals.js");
|
|
6
7
|
const get_box_quads_ponyfill_1 = require("../helpers/get-box-quads-ponyfill");
|
|
8
|
+
const timeline_node_path_key_1 = require("../helpers/timeline-node-path-key");
|
|
7
9
|
const selected_outline_geometry_1 = require("./selected-outline-geometry");
|
|
8
10
|
const selected_outline_types_1 = require("./selected-outline-types");
|
|
9
11
|
const selected_outline_uv_1 = require("./selected-outline-uv");
|
|
@@ -186,11 +188,18 @@ const getSvgSvgElementOutlinePoints = (element, containerRect) => {
|
|
|
186
188
|
containerRect,
|
|
187
189
|
});
|
|
188
190
|
};
|
|
189
|
-
const getElementOutlinePoints = (element, containerRect) => {
|
|
191
|
+
const getElementOutlinePoints = (element, containerRect, includeOutsideContainer) => {
|
|
190
192
|
const elementRect = element.getBoundingClientRect();
|
|
191
193
|
if (elementRect.width === 0 && elementRect.height === 0) {
|
|
192
194
|
return null;
|
|
193
195
|
}
|
|
196
|
+
if (!includeOutsideContainer &&
|
|
197
|
+
(elementRect.right <= containerRect.left ||
|
|
198
|
+
elementRect.left >= containerRect.right ||
|
|
199
|
+
elementRect.bottom <= containerRect.top ||
|
|
200
|
+
elementRect.top >= containerRect.bottom)) {
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
194
203
|
if (isSvgSvgElement(element)) {
|
|
195
204
|
return getSvgSvgElementOutlinePoints(element, containerRect);
|
|
196
205
|
}
|
|
@@ -410,7 +419,9 @@ const getSequencesWithSelectableOutlines = ({ sequences, overrideIdsToNodePaths,
|
|
|
410
419
|
});
|
|
411
420
|
};
|
|
412
421
|
exports.getSequencesWithSelectableOutlines = getSequencesWithSelectableOutlines;
|
|
413
|
-
const measureOutlines = (container, targets) => {
|
|
422
|
+
const measureOutlines = (container, targets, hoveredTimelineNodePathKey) => {
|
|
423
|
+
// Reuse shared ancestor geometry within this synchronous batch only.
|
|
424
|
+
(0, get_box_quads_polyfill_internals_js_1.useCache)();
|
|
414
425
|
const containerRect = container.getBoundingClientRect();
|
|
415
426
|
const outlines = [];
|
|
416
427
|
for (const target of targets) {
|
|
@@ -418,7 +429,9 @@ const measureOutlines = (container, targets) => {
|
|
|
418
429
|
if (element === null) {
|
|
419
430
|
continue;
|
|
420
431
|
}
|
|
421
|
-
const
|
|
432
|
+
const includeOutsideContainer = target.showSelectedOutline ||
|
|
433
|
+
(0, timeline_node_path_key_1.timelineSequenceNodePathToKey)(target.nodePathInfo.sequenceSubscriptionKey) === hoveredTimelineNodePathKey;
|
|
434
|
+
const uncroppedPoints = getElementOutlinePoints(element, containerRect, includeOutsideContainer);
|
|
422
435
|
if (uncroppedPoints === null) {
|
|
423
436
|
continue;
|
|
424
437
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useDeleteAsset: (relativePath: string | null) => () => void;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useDeleteAsset = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const delete_static_file_1 = require("../api/delete-static-file");
|
|
7
|
+
const ConfirmationDialog_1 = require("./ConfirmationDialog");
|
|
8
|
+
const styles_1 = require("./Menu/styles");
|
|
9
|
+
const NotificationCenter_1 = require("./Notifications/NotificationCenter");
|
|
10
|
+
const useDeleteAsset = (relativePath) => {
|
|
11
|
+
const confirm = (0, ConfirmationDialog_1.useConfirmationDialog)();
|
|
12
|
+
return (0, react_1.useCallback)(() => {
|
|
13
|
+
if (relativePath === null) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
confirm({
|
|
17
|
+
title: 'Delete asset',
|
|
18
|
+
message: (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: ["Do you want to delete the asset", ' ', jsx_runtime_1.jsx("code", { style: styles_1.inlineCodeSnippet, children: relativePath }),
|
|
19
|
+
" from your public folder?"] })),
|
|
20
|
+
confirmLabel: 'Delete',
|
|
21
|
+
})
|
|
22
|
+
.then((confirmed) => {
|
|
23
|
+
if (!confirmed) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const notification = (0, NotificationCenter_1.showNotification)(`Deleting ${relativePath}...`, null);
|
|
27
|
+
(0, delete_static_file_1.deleteStaticFile)(relativePath)
|
|
28
|
+
.then(() => {
|
|
29
|
+
notification.dismiss();
|
|
30
|
+
})
|
|
31
|
+
.catch((err) => {
|
|
32
|
+
notification.replaceContent(`Could not delete ${relativePath}: ${err.message}`, 3000);
|
|
33
|
+
});
|
|
34
|
+
})
|
|
35
|
+
.catch((err) => {
|
|
36
|
+
(0, NotificationCenter_1.showNotification)(`Could not delete ${relativePath}: ${err.message}`, 3000);
|
|
37
|
+
});
|
|
38
|
+
}, [confirm, relativePath]);
|
|
39
|
+
};
|
|
40
|
+
exports.useDeleteAsset = useDeleteAsset;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SelectedOutlineLayoutTarget, SelectedOutlineTarget } from './selected-outline-types';
|
|
2
|
+
export declare const useSelectedOutlineControlTarget: ({ getLatestTargetByKey, layoutTarget, }: {
|
|
3
|
+
readonly getLatestTargetByKey: (key: string) => SelectedOutlineTarget | undefined;
|
|
4
|
+
readonly layoutTarget: SelectedOutlineLayoutTarget | undefined;
|
|
5
|
+
}) => {
|
|
6
|
+
controlTarget: SelectedOutlineTarget | undefined;
|
|
7
|
+
getLayoutTarget: () => SelectedOutlineLayoutTarget | undefined;
|
|
8
|
+
getTarget: () => SelectedOutlineTarget | undefined;
|
|
9
|
+
hovered: boolean;
|
|
10
|
+
onHoverChange: (key: string | null) => void;
|
|
11
|
+
};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.useSelectedOutlineControlTarget = void 0;
|
|
37
|
+
const react_1 = __importStar(require("react"));
|
|
38
|
+
const timeline_node_path_key_1 = require("../helpers/timeline-node-path-key");
|
|
39
|
+
const timeline_sequence_hover_1 = require("../state/timeline-sequence-hover");
|
|
40
|
+
const useSelectedOutlineControlTarget = ({ getLatestTargetByKey, layoutTarget, }) => {
|
|
41
|
+
const setHoveredSequence = (0, timeline_sequence_hover_1.useSetTimelineSequenceHover)();
|
|
42
|
+
const targetRef = (0, react_1.useRef)(layoutTarget);
|
|
43
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
44
|
+
targetRef.current = layoutTarget;
|
|
45
|
+
}, [layoutTarget]);
|
|
46
|
+
const getTarget = react_1.default.useCallback(() => {
|
|
47
|
+
const currentTarget = targetRef.current;
|
|
48
|
+
if (currentTarget === undefined) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
return getLatestTargetByKey(currentTarget.key);
|
|
52
|
+
}, [getLatestTargetByKey]);
|
|
53
|
+
const getLayoutTarget = react_1.default.useCallback(() => targetRef.current, []);
|
|
54
|
+
const hoveredNodePathKey = (0, react_1.useMemo)(() => layoutTarget === undefined
|
|
55
|
+
? null
|
|
56
|
+
: (0, timeline_node_path_key_1.timelineSequenceNodePathToKey)(layoutTarget.nodePathInfo.sequenceSubscriptionKey), [layoutTarget]);
|
|
57
|
+
const hovered = (0, timeline_sequence_hover_1.useIsTimelineSequenceHovered)(hoveredNodePathKey);
|
|
58
|
+
const controlTarget = layoutTarget !== undefined && (layoutTarget.containsSelection || hovered)
|
|
59
|
+
? getLatestTargetByKey(layoutTarget.key)
|
|
60
|
+
: undefined;
|
|
61
|
+
const onHoverChange = react_1.default.useCallback((key) => {
|
|
62
|
+
setHoveredSequence((currentHover) => {
|
|
63
|
+
if (key !== null) {
|
|
64
|
+
const hoverTarget = targetRef.current;
|
|
65
|
+
if (hoverTarget === undefined || hoverTarget.key !== key) {
|
|
66
|
+
return currentHover;
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
key,
|
|
70
|
+
nodePathKey: (0, timeline_node_path_key_1.timelineSequenceNodePathToKey)(hoverTarget.nodePathInfo.sequenceSubscriptionKey),
|
|
71
|
+
source: 'canvas',
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return (currentHover === null || currentHover === void 0 ? void 0 : currentHover.source) === 'canvas' ? null : currentHover;
|
|
75
|
+
});
|
|
76
|
+
}, [setHoveredSequence]);
|
|
77
|
+
return { controlTarget, getLayoutTarget, getTarget, hovered, onHoverChange };
|
|
78
|
+
};
|
|
79
|
+
exports.useSelectedOutlineControlTarget = useSelectedOutlineControlTarget;
|
|
@@ -2,9 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.logStudioError = exports.logStudioErrorData = void 0;
|
|
4
4
|
const call_api_1 = require("../../components/call-api");
|
|
5
|
+
const browser_studio_operations_1 = require("../../helpers/browser-studio-operations");
|
|
5
6
|
const loggedErrors = new Set();
|
|
6
7
|
const maxLoggedErrors = 100;
|
|
7
8
|
const logStudioErrorData = (data) => {
|
|
9
|
+
if ((0, browser_studio_operations_1.getBrowserStudioOperations)() !== null) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
8
12
|
const key = JSON.stringify([data.name, data.message, data.stack]);
|
|
9
13
|
if (loggedErrors.has(key)) {
|
|
10
14
|
return;
|
|
@@ -78,7 +78,6 @@ var SELECTED_GUIDE = "#d22d3a";
|
|
|
78
78
|
var LINE_COLOR = "#363A3E";
|
|
79
79
|
var TIMELINE_TRACK_SEPARATOR = "#13161B";
|
|
80
80
|
var LIGHT_GRAY = "#ccc";
|
|
81
|
-
var KEYBOARD_SHORTCUT_KEY_COLOR = "#eee";
|
|
82
81
|
var NOTIFICATION_BACKGROUND = "#111111";
|
|
83
82
|
var RENDER_STATUS_BACKGROUND = "#222";
|
|
84
83
|
var ERROR_CODE_FRAME_BACKGROUND = "#070707";
|
|
@@ -87,7 +86,9 @@ var ERROR_LINK_COLOR = "#58a6ff";
|
|
|
87
86
|
var INFO_BLUE = "#60a5fa";
|
|
88
87
|
var SERVER_DISCONNECTED_BACKGROUND = "#e74c3c";
|
|
89
88
|
var STACK_FRAME_BORDER_BLUE = "rgb(66, 144, 245)";
|
|
90
|
-
var TIMELINE_BACKGROUND_COLOR = "#
|
|
89
|
+
var TIMELINE_BACKGROUND_COLOR = "#15181B";
|
|
90
|
+
var TIMELINE_NEGATIVE_START_BACKGROUND_COLOR = "#2C2F32";
|
|
91
|
+
var TIMELINE_NEGATIVE_START_BORDER_COLOR = "#414446";
|
|
91
92
|
var TIMELINE_SELECTED_BACKGROUND_COLOR = "#3B3F42";
|
|
92
93
|
var TIMELINE_SELECTED_LABEL_BACKGROUND_COLOR = "#B0B0B0";
|
|
93
94
|
var TIMELINE_BLUE = "#0b84ff";
|
|
@@ -159,4 +160,4 @@ var getBackgroundFromHoverState = ({
|
|
|
159
160
|
return TRANSPARENT;
|
|
160
161
|
};
|
|
161
162
|
|
|
162
|
-
export { __toESM, __require, BLACK, WHITE, RED, TRANSPARENT, CURRENT_COLOR, CURRENT_COLOR_LOWERCASE, WHITE_HEX, WHITE_FULL_HEX, BLACK_HEX, BLACK_FULL_HEX, BACKGROUND, BACKGROUND_HEX, BACKGROUND__TRANSPARENT, INPUT_BACKGROUND, LIGHT_COLOR, SELECTED_BACKGROUND, LIGHT_TEXT, RULER_COLOR, WHITE_ALPHA_05, WHITE_ALPHA_06, WHITE_ALPHA_08, WHITE_ALPHA_10, WHITE_ALPHA_12, WHITE_ALPHA_15, WHITE_ALPHA_20, WHITE_ALPHA_25, WHITE_ALPHA_30, WHITE_ALPHA_35, WHITE_ALPHA_40, WHITE_ALPHA_45, WHITE_ALPHA_50, WHITE_ALPHA_60, WHITE_ALPHA_70, WHITE_ALPHA_72, WHITE_ALPHA_80, BLACK_ALPHA_30, BLACK_ALPHA_40, BLACK_ALPHA_50, BLACK_ALPHA_60, FAIL_COLOR, WARNING_COLOR, BLUE, BLUE_HOVERED, BLUE_DISABLED, UNSELECTED_GUIDE, SELECTED_GUIDE, LINE_COLOR, TIMELINE_TRACK_SEPARATOR, LIGHT_GRAY,
|
|
163
|
+
export { __toESM, __require, BLACK, WHITE, RED, TRANSPARENT, CURRENT_COLOR, CURRENT_COLOR_LOWERCASE, WHITE_HEX, WHITE_FULL_HEX, BLACK_HEX, BLACK_FULL_HEX, BACKGROUND, BACKGROUND_HEX, BACKGROUND__TRANSPARENT, INPUT_BACKGROUND, LIGHT_COLOR, SELECTED_BACKGROUND, LIGHT_TEXT, RULER_COLOR, WHITE_ALPHA_05, WHITE_ALPHA_06, WHITE_ALPHA_08, WHITE_ALPHA_10, WHITE_ALPHA_12, WHITE_ALPHA_15, WHITE_ALPHA_20, WHITE_ALPHA_25, WHITE_ALPHA_30, WHITE_ALPHA_35, WHITE_ALPHA_40, WHITE_ALPHA_45, WHITE_ALPHA_50, WHITE_ALPHA_60, WHITE_ALPHA_70, WHITE_ALPHA_72, WHITE_ALPHA_80, BLACK_ALPHA_30, BLACK_ALPHA_40, BLACK_ALPHA_50, BLACK_ALPHA_60, FAIL_COLOR, WARNING_COLOR, BLUE, BLUE_HOVERED, BLUE_DISABLED, UNSELECTED_GUIDE, SELECTED_GUIDE, LINE_COLOR, TIMELINE_TRACK_SEPARATOR, LIGHT_GRAY, NOTIFICATION_BACKGROUND, RENDER_STATUS_BACKGROUND, ERROR_CODE_FRAME_BACKGROUND, ERROR_CODE_FRAME_LINE_BACKGROUND, ERROR_LINK_COLOR, INFO_BLUE, SERVER_DISCONNECTED_BACKGROUND, TIMELINE_BACKGROUND_COLOR, TIMELINE_NEGATIVE_START_BACKGROUND_COLOR, TIMELINE_NEGATIVE_START_BORDER_COLOR, TIMELINE_SELECTED_BACKGROUND_COLOR, TIMELINE_SELECTED_LABEL_BACKGROUND_COLOR, TIMELINE_BLUE, TIMELINE_PLAYHEAD_COLOR, TIMELINE_DROP_BLUE_ALPHA_12, TIMELINE_DROP_BLUE_ALPHA_16, TIMELINE_MARQUEE_BLUE_ALPHA_16, INFO_BLUE_BACKGROUND, BORDER_BLACK, BORDER_WHITE, BORDER_WHITE_2PX, BORDER_CURRENT_COLOR, BORDER_TRANSPARENT_2PX, BORDER_BLACK_ALPHA_50, BORDER_BLACK_ALPHA_60, BORDER_WHITE_ALPHA_12, BORDER_WHITE_ALPHA_20, BORDER_INFO_BLUE, BORDER_STACK_FRAME_BLUE, BORDER_TIMELINE_DROP_BLUE, BORDER_TIMELINE_MARQUEE_BLUE, SHADOW_BLACK, SHADOW_BLACK_ALPHA_50_TOWARDS_BOTTOM, SHADOW_BLACK_ALPHA_50_TOWARDS_TOP, NOTIFICATION_SHADOW, SERVER_DISCONNECTED_SHADOW, COLOR_PICKER_POPUP_SHADOW, COLOR_PICKER_HANDLE_SHADOW, NOTIFICATION_BORDER, FOCUS_BOX_SHADOW, CHECKERBOARD_BACKGROUND_IMAGE, COLOR_PICKER_CHECKER_BACKGROUND_IMAGE, COLOR_PICKER_CHECKER_BACKGROUND_COLOR, COLOR_PICKER_SATURATION_VALUE_GRADIENT, COLOR_PICKER_SATURATION_BLACK_GRADIENT, COLOR_PICKER_ALPHA_TRANSPARENT, COLOR_PICKER_HUE_GRADIENT, ERROR_MESSAGE_MASK_IMAGE, SELECTED_OUTLINE_DROP_SHADOW, SELECTED_OUTLINE_UV_DROP_SHADOW, LOOPED_INDICATOR_DROP_SHADOW, TIMELINE_AUDIO_GRADIENT, TIMELINE_VIDEO_GRADIENT, TIMELINE_IMAGE_GRADIENT, getBackgroundFromHoverState };
|