@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.
Files changed (222) hide show
  1. package/dist/api/install-package.js +14 -1
  2. package/dist/api/restart-studio.js +4 -0
  3. package/dist/components/AssetSelector.js +3 -9
  4. package/dist/components/AssetSelectorItem.d.ts +3 -1
  5. package/dist/components/AssetSelectorItem.js +41 -42
  6. package/dist/components/AudioWaveform.js +17 -139
  7. package/dist/components/Canvas.js +7 -4
  8. package/dist/components/CaptionInspector.d.ts +2 -0
  9. package/dist/components/CaptionInspector.js +3 -5
  10. package/dist/components/CompositionSelector.js +6 -3
  11. package/dist/components/CompositionSelectorItem.js +9 -10
  12. package/dist/components/ConfigSelect.d.ts +17 -0
  13. package/dist/components/ConfigSelect.js +50 -0
  14. package/dist/components/CurrentAsset.d.ts +10 -2
  15. package/dist/components/CurrentAsset.js +139 -46
  16. package/dist/components/FixComputedValueModal.js +54 -51
  17. package/dist/components/GlobalKeybindings.js +5 -5
  18. package/dist/components/InlineAction.d.ts +1 -1
  19. package/dist/components/InlineAction.js +12 -2
  20. package/dist/components/InlineCaptionInspector.d.ts +2 -0
  21. package/dist/components/InlineCaptionInspector.js +2 -2
  22. package/dist/components/InlineCompositionName.js +1 -1
  23. package/dist/components/InlineEditableTitle.js +3 -2
  24. package/dist/components/InspectorInfoHeader.js +1 -1
  25. package/dist/components/InspectorOpenInEditor.js +48 -72
  26. package/dist/components/InspectorPanel/AlignmentControls.js +2 -3
  27. package/dist/components/InspectorPanel/CollapsibleInspectorSectionHeader.d.ts +7 -0
  28. package/dist/components/InspectorPanel/CollapsibleInspectorSectionHeader.js +39 -0
  29. package/dist/components/InspectorPanel/CompositionInspector.js +41 -12
  30. package/dist/components/InspectorPanel/KeyframeEasingNavigator.js +10 -4
  31. package/dist/components/InspectorPanel/SequenceInspectorHeader.js +2 -1
  32. package/dist/components/InspectorPanel/SequenceSelectionInspector.js +1 -4
  33. package/dist/components/InspectorPanel/common.d.ts +0 -12
  34. package/dist/components/InspectorPanel/common.js +3 -52
  35. package/dist/components/InspectorPanel/use-composition-actions.js +0 -1
  36. package/dist/components/InspectorPanelLayout.d.ts +1 -1
  37. package/dist/components/InspectorPanelLayout.js +1 -1
  38. package/dist/components/InspectorSequenceSection.js +40 -54
  39. package/dist/components/InstallPackage.d.ts +3 -2
  40. package/dist/components/InstallPackage.js +90 -28
  41. package/dist/components/InstallablePackage.js +37 -11
  42. package/dist/components/KeyboardShortcutsSettings.d.ts +2 -0
  43. package/dist/components/KeyboardShortcutsSettings.js +177 -0
  44. package/dist/components/Menu/MenuDivider.js +1 -1
  45. package/dist/components/MenuBuildIndicator.js +1 -1
  46. package/dist/components/Modals.js +12 -4
  47. package/dist/components/NewComposition/CodemodFooter.d.ts +0 -1
  48. package/dist/components/NewComposition/CodemodFooter.js +2 -8
  49. package/dist/components/NewComposition/DeleteComposition.js +1 -1
  50. package/dist/components/NewComposition/DeleteFolder.js +1 -1
  51. package/dist/components/NewComposition/DuplicateComposition.js +1 -1
  52. package/dist/components/NewComposition/InputDragger.js +27 -4
  53. package/dist/components/NewComposition/NewComposition.js +1 -1
  54. package/dist/components/NewComposition/NewFolder.js +1 -3
  55. package/dist/components/NewComposition/RenameComposition.js +1 -1
  56. package/dist/components/NewComposition/RenameFolder.js +1 -1
  57. package/dist/components/NewComposition/use-rename-static-file.js +1 -1
  58. package/dist/components/Notifications/NotificationCenter.d.ts +1 -0
  59. package/dist/components/Notifications/NotificationCenter.js +5 -0
  60. package/dist/components/OptionsPanel.js +9 -12
  61. package/dist/components/PreviewToolbar.js +5 -2
  62. package/dist/components/PreviewToolbarOverflowButton.js +30 -0
  63. package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +2 -2
  64. package/dist/components/QuickSwitcher/QuickSwitcherContent.js +14 -30
  65. package/dist/components/RenderButton.js +66 -183
  66. package/dist/components/RenderModal/DataEditor.js +15 -12
  67. package/dist/components/RenderModal/GuiRenderStatus.js +3 -1
  68. package/dist/components/RenderModal/RenderModalOutputName.js +3 -3
  69. package/dist/components/RenderModal/RenderStatusModal.js +0 -1
  70. package/dist/components/RenderModal/SchemaEditor/ZodSwitch.js +3 -1
  71. package/dist/components/RenderModal/SchemaEditor/infer-zod-schema-from-value.d.ts +15 -0
  72. package/dist/components/RenderModal/SchemaEditor/infer-zod-schema-from-value.js +95 -0
  73. package/dist/components/RenderModal/WebRenderModal.js +4 -2
  74. package/dist/components/RenderQueue/RenderQueueItem.js +3 -1
  75. package/dist/components/RenderQueue/RenderQueueOpenInFolder.js +3 -1
  76. package/dist/components/RenderQueue/RenderQueueRemoveItem.js +2 -7
  77. package/dist/components/RenderingSettings.js +7 -4
  78. package/dist/components/RulersAndGuidesToggle.d.ts +2 -0
  79. package/dist/components/RulersAndGuidesToggle.js +23 -0
  80. package/dist/components/SegmentedButton.d.ts +29 -0
  81. package/dist/components/SegmentedButton.js +226 -0
  82. package/dist/components/SelectedOutlineCanvasRotation.d.ts +1 -0
  83. package/dist/components/SelectedOutlineCanvasRotation.js +11 -4
  84. package/dist/components/SelectedOutlineEditingHandles.d.ts +16 -0
  85. package/dist/components/SelectedOutlineEditingHandles.js +66 -0
  86. package/dist/components/SelectedOutlineElement.d.ts +2 -4
  87. package/dist/components/SelectedOutlineElement.js +15 -54
  88. package/dist/components/SelectedOutlineOverlay.js +32 -6
  89. package/dist/components/SelectedOutlinePolygon.d.ts +4 -4
  90. package/dist/components/SelectedOutlinePolygon.js +20 -17
  91. package/dist/components/SelectedOutlineRenderer.js +66 -14
  92. package/dist/components/SettingsModal.d.ts +1 -1
  93. package/dist/components/SettingsModal.js +30 -7
  94. package/dist/components/SettingsModalFooter.js +2 -1
  95. package/dist/components/SkillsSettings.d.ts +2 -0
  96. package/dist/components/SkillsSettings.js +129 -0
  97. package/dist/components/StaticFilePreview.js +7 -1
  98. package/dist/components/StudioSettings.js +7 -48
  99. package/dist/components/Tabs/index.js +1 -1
  100. package/dist/components/Timeline/Timeline.js +0 -1
  101. package/dist/components/Timeline/TimelineAssetField.d.ts +1 -1
  102. package/dist/components/Timeline/TimelineAssetField.js +15 -9
  103. package/dist/components/Timeline/TimelineBooleanField.js +1 -4
  104. package/dist/components/Timeline/TimelineClipboardKeybindings.js +13 -12
  105. package/dist/components/Timeline/TimelineEffectItem.d.ts +1 -0
  106. package/dist/components/Timeline/TimelineEffectItem.js +45 -15
  107. package/dist/components/Timeline/TimelineEffectPropItem.js +21 -4
  108. package/dist/components/Timeline/TimelineExpandArrowButton.js +10 -7
  109. package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +4 -1
  110. package/dist/components/Timeline/TimelineExpandedRow.js +5 -4
  111. package/dist/components/Timeline/TimelineExpandedSection.js +8 -5
  112. package/dist/components/Timeline/TimelineFieldLabel.js +4 -2
  113. package/dist/components/Timeline/TimelineFieldRowContent.d.ts +1 -2
  114. package/dist/components/Timeline/TimelineFieldRowContent.js +8 -21
  115. package/dist/components/Timeline/TimelineImageInfo.d.ts +0 -1
  116. package/dist/components/Timeline/TimelineImageInfo.js +13 -32
  117. package/dist/components/Timeline/TimelineKeyframeControls.js +10 -4
  118. package/dist/components/Timeline/TimelinePrimitiveFieldValue.js +1 -1
  119. package/dist/components/Timeline/TimelineRotationField.js +0 -2
  120. package/dist/components/Timeline/TimelineRowChrome.d.ts +1 -1
  121. package/dist/components/Timeline/TimelineRowChrome.js +41 -6
  122. package/dist/components/Timeline/TimelineRowLayoutContext.d.ts +0 -1
  123. package/dist/components/Timeline/TimelineRowLayoutContext.js +1 -4
  124. package/dist/components/Timeline/TimelineScaleField.js +2 -6
  125. package/dist/components/Timeline/TimelineSchemaField.js +9 -3
  126. package/dist/components/Timeline/TimelineSelection.d.ts +8 -3
  127. package/dist/components/Timeline/TimelineSelection.js +7 -5
  128. package/dist/components/Timeline/TimelineSequence.d.ts +2 -0
  129. package/dist/components/Timeline/TimelineSequence.js +110 -19
  130. package/dist/components/Timeline/TimelineSequenceItem.js +11 -8
  131. package/dist/components/Timeline/TimelineSequenceName.js +1 -1
  132. package/dist/components/Timeline/TimelineSequencePropItem.js +15 -2
  133. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +4 -2
  134. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +85 -91
  135. package/dist/components/Timeline/TimelineTrack.js +5 -2
  136. package/dist/components/Timeline/TimelineTransformOriginField.js +0 -4
  137. package/dist/components/Timeline/TimelineTranslateField.js +0 -4
  138. package/dist/components/Timeline/TimelineVideoInfo.js +4 -2
  139. package/dist/components/Timeline/TimelineVirtualization.js +3 -1
  140. package/dist/components/Timeline/delete-selected-timeline-item.js +6 -2
  141. package/dist/components/Timeline/duplicate-selected-timeline-item.js +7 -14
  142. package/dist/components/Timeline/get-copy-context-for-agents-menu-item.d.ts +4 -0
  143. package/dist/components/Timeline/get-copy-context-for-agents-menu-item.js +26 -0
  144. package/dist/components/Timeline/get-sequence-context-menu-items.js +2 -19
  145. package/dist/components/Timeline/get-timeline-sequence-visible-layout.d.ts +6 -1
  146. package/dist/components/Timeline/get-timeline-sequence-visible-layout.js +11 -4
  147. package/dist/components/Timeline/save-effect-prop.js +3 -3
  148. package/dist/components/Timeline/split-selected-timeline-item.js +0 -1
  149. package/dist/components/Timeline/timeline-field-row-layout.d.ts +1 -1
  150. package/dist/components/Timeline/timeline-field-row-layout.js +4 -7
  151. package/dist/components/Timeline/timeline-field-utils.js +0 -2
  152. package/dist/components/Timeline/use-timeline-asset-drop.js +1 -0
  153. package/dist/components/TimelineCombobox.js +25 -160
  154. package/dist/components/TimelineInOutToggle.js +4 -1
  155. package/dist/components/duplicate-jsx-node-api.d.ts +2 -0
  156. package/dist/components/duplicate-jsx-node-api.js +12 -0
  157. package/dist/components/effect-drag-and-drop.js +7 -7
  158. package/dist/components/effect-operations-api.d.ts +8 -0
  159. package/dist/components/effect-operations-api.js +52 -0
  160. package/dist/components/handle-drop.d.ts +2 -1
  161. package/dist/components/handle-drop.js +3 -3
  162. package/dist/components/import-assets.js +9 -65
  163. package/dist/components/keyboard-shortcuts.d.ts +10 -0
  164. package/dist/components/keyboard-shortcuts.js +135 -0
  165. package/dist/components/selected-outline-control-layout.js +2 -6
  166. package/dist/components/selected-outline-measurement.d.ts +1 -1
  167. package/dist/components/selected-outline-measurement.js +16 -3
  168. package/dist/components/use-delete-asset.d.ts +1 -0
  169. package/dist/components/use-delete-asset.js +40 -0
  170. package/dist/components/use-selected-outline-control-target.d.ts +11 -0
  171. package/dist/components/use-selected-outline-control-target.js +79 -0
  172. package/dist/error-overlay/remotion-overlay/log-studio-error.js +4 -0
  173. package/dist/esm/{chunk-r46yxrjr.js → chunk-4bxz1d3g.js} +4 -3
  174. package/dist/esm/{chunk-xn2q7eem.js → chunk-w4244j4n.js} +14747 -14549
  175. package/dist/esm/index.mjs +3 -0
  176. package/dist/esm/internals.mjs +14747 -14549
  177. package/dist/esm/previewEntry.mjs +14557 -14359
  178. package/dist/esm/renderEntry.mjs +2 -2
  179. package/dist/helpers/add-asset-cache-bust.d.ts +4 -0
  180. package/dist/helpers/add-asset-cache-bust.js +10 -0
  181. package/dist/helpers/browser-studio-operations.d.ts +3 -0
  182. package/dist/helpers/browser-studio-operations.js +18 -1
  183. package/dist/helpers/calculate-timeline.js +2 -1
  184. package/dist/helpers/colors.d.ts +3 -1
  185. package/dist/helpers/colors.js +7 -3
  186. package/dist/helpers/drag-aware-double-click.d.ts +6 -0
  187. package/dist/helpers/drag-aware-double-click.js +20 -0
  188. package/dist/helpers/get-asset-metadata.js +25 -16
  189. package/dist/helpers/get-sequence-double-click-action.d.ts +2 -1
  190. package/dist/helpers/get-sequence-double-click-action.js +7 -1
  191. package/dist/helpers/get-timeline-sequence-layout.d.ts +4 -1
  192. package/dist/helpers/get-timeline-sequence-layout.js +15 -6
  193. package/dist/helpers/get-timeline-sequence-sort-key.d.ts +2 -1
  194. package/dist/helpers/hoverable.d.ts +1 -0
  195. package/dist/helpers/hoverable.js +2 -1
  196. package/dist/helpers/inject-css.js +7 -3
  197. package/dist/helpers/open-in-remotion-convert.d.ts +7 -0
  198. package/dist/helpers/open-in-remotion-convert.js +18 -0
  199. package/dist/helpers/use-max-media-duration.js +5 -3
  200. package/dist/helpers/use-media-metadata.d.ts +2 -1
  201. package/dist/helpers/use-media-metadata.js +49 -25
  202. package/dist/helpers/use-menu-structure.js +54 -67
  203. package/dist/icons/align-center-horizontal.js +1 -1
  204. package/dist/icons/align-left.js +1 -1
  205. package/dist/icons/align-right.js +1 -1
  206. package/dist/icons/cloud-download.d.ts +4 -0
  207. package/dist/icons/cloud-download.js +8 -0
  208. package/dist/icons/keyboard.d.ts +4 -0
  209. package/dist/icons/keyboard.js +10 -0
  210. package/dist/icons/license.d.ts +4 -0
  211. package/dist/icons/license.js +8 -0
  212. package/dist/icons/package.d.ts +4 -0
  213. package/dist/icons/package.js +8 -0
  214. package/dist/icons/react.js +1 -1
  215. package/dist/icons/remotion-convert.d.ts +4 -0
  216. package/dist/icons/remotion-convert.js +10 -0
  217. package/dist/icons/skills.d.ts +4 -0
  218. package/dist/icons/skills.js +10 -0
  219. package/dist/state/modals.d.ts +2 -5
  220. package/package.json +12 -12
  221. package/dist/components/KeyboardShortcutsExplainer.d.ts +0 -2
  222. 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
- const inserted = await insertCompositionElement({
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
- const inserted = await insertCompositionElement({
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
- const inserted = await insertCompositionElement({
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
- const inserted = await insertCompositionElement({
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
- const inserted = await insertCompositionElement({
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
- // Preserve one scale control per axis when opposite edge targets would overlap.
68
- if (edge === 'top') {
67
+ if (edge === 'top' || edge === 'bottom') {
69
68
  return !isTinyY;
70
69
  }
71
- if (edge === 'left') {
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 uncroppedPoints = getElementOutlinePoints(element, containerRect);
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 = "#0F1113";
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, KEYBOARD_SHORTCUT_KEY_COLOR, 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_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 };
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 };