@remotion/studio 4.0.495 → 4.0.497

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 (124) hide show
  1. package/dist/components/AssetSelectorItem.js +7 -7
  2. package/dist/components/AudioWaveform.js +1 -11
  3. package/dist/components/Canvas.js +22 -203
  4. package/dist/components/CompositionSelectorItem.js +5 -31
  5. package/dist/components/CurrentAsset.js +4 -3
  6. package/dist/components/InlineCompositionName.js +1 -1
  7. package/dist/components/InlineEditableTitle.d.ts +1 -0
  8. package/dist/components/InlineEditableTitle.js +56 -11
  9. package/dist/components/InspectorInfoHeader.d.ts +2 -0
  10. package/dist/components/InspectorInfoHeader.js +16 -4
  11. package/dist/components/InspectorLocationCopy.js +2 -2
  12. package/dist/components/InspectorPanel/AlignmentControls.js +2 -0
  13. package/dist/components/InspectorPanel/CompositionInspectorHeader.js +11 -6
  14. package/dist/components/InspectorPanel/ConnectedCompositionsSection.js +27 -2
  15. package/dist/components/InspectorPanel/EasingInspector.js +1 -1
  16. package/dist/components/InspectorPanel/KeyframeInspector.js +7 -8
  17. package/dist/components/InspectorPanel/KeyframeSettings.js +1 -1
  18. package/dist/components/InspectorPanel/SequenceInspectorHeader.js +28 -3
  19. package/dist/components/InspectorPanel/SequenceSelectionInspector.js +67 -10
  20. package/dist/components/InspectorPanel/common.d.ts +4 -2
  21. package/dist/components/InspectorPanel/common.js +18 -18
  22. package/dist/components/InspectorPanel/styles.d.ts +0 -3
  23. package/dist/components/InspectorPanel/styles.js +5 -40
  24. package/dist/components/InspectorPanel/use-composition-actions.js +6 -2
  25. package/dist/components/InspectorSequenceSection.js +12 -2
  26. package/dist/components/InspectorSourceLocation.d.ts +1 -0
  27. package/dist/components/InspectorSourceLocation.js +5 -1
  28. package/dist/components/NewComposition/CodemodFooter.d.ts +1 -1
  29. package/dist/components/NewComposition/CodemodFooter.js +23 -4
  30. package/dist/components/NewComposition/ComboBox.d.ts +2 -1
  31. package/dist/components/NewComposition/ComboBox.js +32 -7
  32. package/dist/components/NewComposition/InputDragger.d.ts +6 -0
  33. package/dist/components/NewComposition/InputDragger.js +12 -3
  34. package/dist/components/NewComposition/NewComposition.js +1 -1
  35. package/dist/components/NewComposition/use-rename-static-file.js +1 -1
  36. package/dist/components/PlaybackRateSelector.js +3 -3
  37. package/dist/components/PreviewToolbar.js +3 -3
  38. package/dist/components/RenderButton.d.ts +1 -0
  39. package/dist/components/RenderButton.js +51 -7
  40. package/dist/components/RenderModal/SchemaEditor/ZodDiscriminatedUnionEditor.js +1 -1
  41. package/dist/components/RenderModal/SchemaEditor/ZodEnumEditor.js +1 -1
  42. package/dist/components/RenderModal/SchemaEditor/ZodStaticFileEditor.js +1 -1
  43. package/dist/components/SelectedOutlineElement.js +56 -88
  44. package/dist/components/SelectedOutlineOverlay.d.ts +1 -1
  45. package/dist/components/SelectedOutlineOverlay.js +9 -10
  46. package/dist/components/SizeSelector.js +3 -3
  47. package/dist/components/Timeline/Timeline.js +10 -3
  48. package/dist/components/Timeline/TimelineAssetDropIndicator.d.ts +2 -0
  49. package/dist/components/Timeline/TimelineAssetDropIndicator.js +37 -0
  50. package/dist/components/Timeline/TimelineAssetField.js +1 -1
  51. package/dist/components/Timeline/TimelineClipboardKeybindings.js +1 -7
  52. package/dist/components/Timeline/TimelineEnumField.js +1 -1
  53. package/dist/components/Timeline/TimelineFieldLabel.js +3 -3
  54. package/dist/components/Timeline/TimelineKeyframeControls.js +26 -6
  55. package/dist/components/Timeline/TimelineRowChrome.js +10 -2
  56. package/dist/components/Timeline/TimelineRowLayoutContext.d.ts +3 -0
  57. package/dist/components/Timeline/TimelineRowLayoutContext.js +6 -0
  58. package/dist/components/Timeline/TimelineScrollable.js +3 -2
  59. package/dist/components/Timeline/TimelineSelection.d.ts +4 -0
  60. package/dist/components/Timeline/TimelineSelection.js +40 -5
  61. package/dist/components/Timeline/TimelineSequence.js +20 -8
  62. package/dist/components/Timeline/TimelineSequenceFrame.js +2 -4
  63. package/dist/components/Timeline/TimelineSequenceItem.js +2 -0
  64. package/dist/components/Timeline/TimelineSequencePropItem.js +4 -0
  65. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +15 -3
  66. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +96 -18
  67. package/dist/components/Timeline/TimelineTimeIndicators.d.ts +16 -0
  68. package/dist/components/Timeline/TimelineTimeIndicators.js +154 -35
  69. package/dist/components/Timeline/TimelineTranslateField.js +2 -1
  70. package/dist/components/Timeline/TimelineVideoInfo.d.ts +1 -0
  71. package/dist/components/Timeline/TimelineVideoInfo.js +4 -1
  72. package/dist/components/Timeline/delete-selected-timeline-item.d.ts +2 -0
  73. package/dist/components/Timeline/delete-selected-timeline-item.js +5 -4
  74. package/dist/components/Timeline/disable-sequence-interactivity.js +2 -0
  75. package/dist/components/Timeline/get-timeline-media-visualization-layout.d.ts +8 -0
  76. package/dist/components/Timeline/get-timeline-media-visualization-layout.js +10 -0
  77. package/dist/components/Timeline/get-timeline-video-info-widths.js +11 -3
  78. package/dist/components/Timeline/keyframe-clipboard.js +21 -5
  79. package/dist/components/Timeline/reset-selected-timeline-props.js +2 -0
  80. package/dist/components/Timeline/save-sequence-prop.d.ts +5 -3
  81. package/dist/components/Timeline/save-sequence-prop.js +43 -18
  82. package/dist/components/Timeline/should-clear-selection-on-pointer-down.d.ts +2 -0
  83. package/dist/components/Timeline/should-clear-selection-on-pointer-down.js +1 -1
  84. package/dist/components/Timeline/timeline-asset-drop-context.d.ts +1 -0
  85. package/dist/components/Timeline/timeline-asset-drop-context.js +5 -0
  86. package/dist/components/Timeline/timeline-scroll-logic.d.ts +7 -0
  87. package/dist/components/Timeline/timeline-scroll-logic.js +10 -1
  88. package/dist/components/Timeline/use-rename-sequence.js +2 -0
  89. package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.js +2 -0
  90. package/dist/components/Timeline/use-timeline-asset-drop.d.ts +1 -0
  91. package/dist/components/Timeline/use-timeline-asset-drop.js +168 -0
  92. package/dist/components/composition-menu-items.d.ts +15 -1
  93. package/dist/components/composition-menu-items.js +137 -107
  94. package/dist/components/drop-handler-data.d.ts +13 -0
  95. package/dist/components/drop-handler-data.js +117 -0
  96. package/dist/components/handle-drop.d.ts +13 -0
  97. package/dist/components/handle-drop.js +115 -0
  98. package/dist/components/import-assets.d.ts +26 -8
  99. package/dist/components/import-assets.js +161 -49
  100. package/dist/components/layout.d.ts +1 -0
  101. package/dist/components/layout.js +2 -1
  102. package/dist/components/open-in-new-window.d.ts +2 -0
  103. package/dist/components/open-in-new-window.js +28 -0
  104. package/dist/components/selected-outline-drag.d.ts +11 -1
  105. package/dist/components/selected-outline-drag.js +74 -1
  106. package/dist/esm/{chunk-784jbkzs.js → chunk-5wj95bdd.js} +4760 -3701
  107. package/dist/esm/internals.mjs +4760 -3701
  108. package/dist/esm/previewEntry.mjs +4962 -3903
  109. package/dist/esm/renderEntry.mjs +1 -1
  110. package/dist/helpers/inject-css.js +4 -2
  111. package/dist/helpers/is-video-with-last-frame-hold.d.ts +2 -0
  112. package/dist/helpers/is-video-with-last-frame-hold.js +9 -0
  113. package/dist/helpers/url-state.d.ts +1 -0
  114. package/dist/helpers/url-state.js +5 -1
  115. package/dist/helpers/use-max-media-duration.js +5 -3
  116. package/dist/helpers/use-menu-structure.js +2 -0
  117. package/dist/icons/duplicate.d.ts +5 -0
  118. package/dist/icons/duplicate.js +10 -0
  119. package/dist/icons/scissors.js +1 -1
  120. package/dist/icons/snowflake.d.ts +5 -0
  121. package/dist/icons/snowflake.js +10 -0
  122. package/dist/icons/trash.d.ts +5 -0
  123. package/dist/icons/trash.js +8 -0
  124. package/package.json +11 -11
@@ -0,0 +1,13 @@
1
+ import type { Dimensions } from '../helpers/is-current-selected-still';
2
+ import { type InsertElementDropPosition } from './import-assets';
3
+ import type { SvgImportMode } from './SvgImportDialog';
4
+ export declare const handleDrop: ({ chooseSvgImportMode, compositionFile, compositionId, destinationDimensions, dropPosition, event, fps, from, }: {
5
+ chooseSvgImportMode: () => Promise<SvgImportMode | null>;
6
+ compositionFile: string;
7
+ compositionId: string;
8
+ destinationDimensions: Dimensions | null;
9
+ dropPosition: InsertElementDropPosition | null;
10
+ event: DragEvent;
11
+ fps: number;
12
+ from: number | null;
13
+ }) => Promise<void>;
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleDrop = void 0;
4
+ const remote_asset_drag_1 = require("../helpers/remote-asset-drag");
5
+ const drop_handler_data_1 = require("./drop-handler-data");
6
+ const element_drag_and_drop_1 = require("./element-drag-and-drop");
7
+ const import_assets_1 = require("./import-assets");
8
+ const handleDrop = async ({ chooseSvgImportMode, compositionFile, compositionId, destinationDimensions, dropPosition, event, fps, from, }) => {
9
+ var _a;
10
+ var _b;
11
+ if ((0, drop_handler_data_1.isFileDragEvent)(event)) {
12
+ const files = Array.from((_b = (_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.files) !== null && _b !== void 0 ? _b : []);
13
+ if (files.length === 0) {
14
+ return;
15
+ }
16
+ const svgImportMode = (0, import_assets_1.hasSvgFile)(files)
17
+ ? await chooseSvgImportMode()
18
+ : 'image';
19
+ if (svgImportMode === null) {
20
+ return;
21
+ }
22
+ await (0, import_assets_1.importAssets)({
23
+ compositionFile,
24
+ compositionId,
25
+ destinationDimensions,
26
+ dropPosition,
27
+ files,
28
+ fps,
29
+ from,
30
+ svgImportMode,
31
+ });
32
+ return;
33
+ }
34
+ if ((0, drop_handler_data_1.isAssetDragEvent)(event)) {
35
+ const assetPath = (0, drop_handler_data_1.getAssetDragPath)(event);
36
+ if (assetPath === null) {
37
+ return;
38
+ }
39
+ await (0, import_assets_1.insertExistingAssets)({
40
+ assetPaths: [assetPath],
41
+ compositionFile,
42
+ compositionId,
43
+ destinationDimensions,
44
+ dropPosition,
45
+ fps,
46
+ from,
47
+ });
48
+ return;
49
+ }
50
+ if ((0, drop_handler_data_1.isSfxDragEvent)(event)) {
51
+ const sfxUrl = (0, drop_handler_data_1.getSfxDragUrl)(event);
52
+ if (sfxUrl === null) {
53
+ return;
54
+ }
55
+ await (0, import_assets_1.insertRemoteAudio)({
56
+ compositionFile,
57
+ compositionId,
58
+ fps,
59
+ from,
60
+ url: sfxUrl,
61
+ });
62
+ return;
63
+ }
64
+ if ((0, drop_handler_data_1.isCompositionDragEvent)(event)) {
65
+ const composition = (0, drop_handler_data_1.getCompositionDragData)(event);
66
+ if (composition === null) {
67
+ return;
68
+ }
69
+ await (0, import_assets_1.insertComposition)({
70
+ composition,
71
+ compositionFile,
72
+ compositionId,
73
+ destinationDimensions,
74
+ dropPosition,
75
+ from,
76
+ });
77
+ return;
78
+ }
79
+ const element = (0, element_drag_and_drop_1.getElementDragData)(event.dataTransfer);
80
+ if (element !== null) {
81
+ await (0, import_assets_1.insertElement)({
82
+ compositionFile,
83
+ compositionId,
84
+ dropPosition,
85
+ element: element.element,
86
+ from,
87
+ });
88
+ return;
89
+ }
90
+ const component = (0, drop_handler_data_1.getComponentDragData)(event);
91
+ if (component !== null) {
92
+ await (0, import_assets_1.insertComponent)({
93
+ component: component.component,
94
+ compositionFile,
95
+ compositionId,
96
+ dropPosition,
97
+ from,
98
+ });
99
+ return;
100
+ }
101
+ const remoteAssetUrl = (0, remote_asset_drag_1.getRemoteAssetUrlFromDataTransfer)(event.dataTransfer);
102
+ if (remoteAssetUrl === null) {
103
+ return;
104
+ }
105
+ await (0, import_assets_1.importRemoteAsset)({
106
+ compositionFile,
107
+ compositionId,
108
+ destinationDimensions,
109
+ dropPosition,
110
+ fps,
111
+ from,
112
+ url: remoteAssetUrl,
113
+ });
114
+ };
115
+ exports.handleDrop = handleDrop;
@@ -1,4 +1,4 @@
1
- import { type CompositionDragData, type ComponentProp, type FileType, type InsertableCompositionElementPosition } from '@remotion/studio-shared';
1
+ import { type ComponentProp, type CompositionDragData, type FileType, type InsertableCompositionElementPosition } from '@remotion/studio-shared';
2
2
  import type { Dimensions } from '../helpers/is-current-selected-still';
3
3
  export type InsertElementDropPosition = {
4
4
  readonly centerX: number;
@@ -16,6 +16,7 @@ export declare const getAssetElement: ({ fileType, src, }: {
16
16
  width: number;
17
17
  height: number;
18
18
  } | null;
19
+ durationInFrames: number | null;
19
20
  position: InsertableCompositionElementPosition | null;
20
21
  } | null;
21
22
  export declare const getAssetElementFromPath: (assetPath: string) => {
@@ -27,6 +28,7 @@ export declare const getAssetElementFromPath: (assetPath: string) => {
27
28
  width: number;
28
29
  height: number;
29
30
  } | null;
31
+ durationInFrames: number | null;
30
32
  position: InsertableCompositionElementPosition | null;
31
33
  } | null;
32
34
  export declare const getAssetElementForDroppedFile: ({ fileType, src, }: {
@@ -41,6 +43,7 @@ export declare const getAssetElementForDroppedFile: ({ fileType, src, }: {
41
43
  width: number;
42
44
  height: number;
43
45
  } | null;
46
+ durationInFrames: number | null;
44
47
  position: InsertableCompositionElementPosition | null;
45
48
  } | null;
46
49
  export declare const hasSvgFile: (files: File[]) => boolean;
@@ -65,15 +68,21 @@ export declare const getComponentDimensions: (component: {
65
68
  importPath: string;
66
69
  props: ComponentProp[];
67
70
  }) => Dimensions | null;
71
+ export declare const getDurationInFrames: ({ durationInSeconds, fps, }: {
72
+ durationInSeconds: number | null;
73
+ fps: number;
74
+ }) => number | null;
68
75
  export declare const pickFilesToImport: ({ multiple, }?: {
69
76
  readonly multiple?: boolean | undefined;
70
77
  }) => Promise<File[]>;
71
- export declare const importAssets: ({ compositionFile, compositionId, destinationDimensions, dropPosition, files, svgImportMode, }: {
78
+ export declare const importAssets: ({ compositionFile, compositionId, destinationDimensions, dropPosition, files, fps, from, svgImportMode, }: {
72
79
  compositionFile: string;
73
80
  compositionId: string;
74
81
  destinationDimensions: Dimensions | null;
75
82
  dropPosition: InsertElementDropPosition | null;
76
83
  files: File[];
84
+ fps: number;
85
+ from: number | null;
77
86
  svgImportMode: "image" | "inline";
78
87
  }) => Promise<void>;
79
88
  export declare const importFigmaClipboard: ({ compositionFile, compositionId, destinationDimensions, dropPosition, html, }: {
@@ -90,26 +99,32 @@ export declare const insertSvgMarkup: ({ compositionFile, compositionId, destina
90
99
  dropPosition: InsertElementDropPosition | null;
91
100
  markup: string;
92
101
  }) => Promise<void>;
93
- export declare const importRemoteAsset: ({ compositionFile, compositionId, destinationDimensions, dropPosition, url, }: {
102
+ export declare const importRemoteAsset: ({ compositionFile, compositionId, destinationDimensions, dropPosition, fps, from, url, }: {
94
103
  compositionFile: string;
95
104
  compositionId: string;
96
105
  destinationDimensions: Dimensions | null;
97
106
  dropPosition: InsertElementDropPosition | null;
107
+ fps: number;
108
+ from: number | null;
98
109
  url: string;
99
110
  }) => Promise<void>;
100
- export declare const insertRemoteAudio: ({ compositionFile, compositionId, url, }: {
111
+ export declare const insertRemoteAudio: ({ compositionFile, compositionId, fps, from, url, }: {
101
112
  compositionFile: string;
102
113
  compositionId: string;
114
+ fps: number;
115
+ from: number | null;
103
116
  url: string;
104
117
  }) => Promise<void>;
105
- export declare const insertExistingAssets: ({ assetPaths, compositionFile, compositionId, destinationDimensions, dropPosition, }: {
118
+ export declare const insertExistingAssets: ({ assetPaths, compositionFile, compositionId, destinationDimensions, dropPosition, fps, from, }: {
106
119
  assetPaths: string[];
107
120
  compositionFile: string;
108
121
  compositionId: string;
109
122
  destinationDimensions: Dimensions | null;
110
123
  dropPosition: InsertElementDropPosition | null;
124
+ fps: number;
125
+ from: number | null;
111
126
  }) => Promise<void>;
112
- export declare const insertComponent: ({ component, compositionFile, compositionId, dropPosition, }: {
127
+ export declare const insertComponent: ({ component, compositionFile, compositionId, dropPosition, from, }: {
113
128
  component: {
114
129
  componentName: string;
115
130
  dimensions?: import("@remotion/studio-shared").ComponentDimensions | undefined;
@@ -120,15 +135,17 @@ export declare const insertComponent: ({ component, compositionFile, composition
120
135
  compositionFile: string;
121
136
  compositionId: string;
122
137
  dropPosition: InsertElementDropPosition | null;
138
+ from: number | null;
123
139
  }) => Promise<void>;
124
- export declare const insertComposition: ({ composition, compositionFile, compositionId, destinationDimensions, dropPosition, }: {
140
+ export declare const insertComposition: ({ composition, compositionFile, compositionId, destinationDimensions, dropPosition, from, }: {
125
141
  composition: CompositionDragData;
126
142
  compositionFile: string;
127
143
  compositionId: string;
128
144
  destinationDimensions: Dimensions | null;
129
145
  dropPosition: InsertElementDropPosition | null;
146
+ from: number | null;
130
147
  }) => Promise<void>;
131
- export declare const insertElement: ({ compositionFile, compositionId, dropPosition, element, }: {
148
+ export declare const insertElement: ({ compositionFile, compositionId, dropPosition, element, from, }: {
132
149
  compositionFile: string;
133
150
  compositionId: string;
134
151
  dropPosition: InsertElementDropPosition | null;
@@ -139,4 +156,5 @@ export declare const insertElement: ({ compositionFile, compositionId, dropPosit
139
156
  sourceCode: string;
140
157
  dimensions: import("@remotion/studio-shared").ComponentDimensions | null;
141
158
  };
159
+ from: number | null;
142
160
  }) => Promise<void>;