@remotion/studio 4.0.502 → 4.0.504

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 (217) hide show
  1. package/dist/api/install-package.d.ts +2 -1
  2. package/dist/api/install-package.js +6 -2
  3. package/dist/components/AssetSelectorItem.js +4 -16
  4. package/dist/components/Canvas.js +41 -54
  5. package/dist/components/CheckboardToggle.js +3 -1
  6. package/dist/components/ColorPicker/AlphaSlider.js +14 -10
  7. package/dist/components/ColorPicker/HueSlider.js +14 -10
  8. package/dist/components/ColorPicker/SaturationValueArea.js +14 -12
  9. package/dist/components/CompositionContextButton.js +1 -1
  10. package/dist/components/CompositionSelectorItem.js +2 -3
  11. package/dist/components/ConfigureDefaultEditorModal.d.ts +2 -0
  12. package/dist/components/ConfigureDefaultEditorModal.js +151 -0
  13. package/dist/components/ConfirmationDialog.js +6 -3
  14. package/dist/components/ContextMenu.js +0 -2
  15. package/dist/components/ControlButton.d.ts +4 -2
  16. package/dist/components/ControlButton.js +6 -20
  17. package/dist/components/Editor.js +1 -4
  18. package/dist/components/EditorContent.js +1 -1
  19. package/dist/components/EditorGuides/Guide.js +48 -74
  20. package/dist/components/EditorRuler/Ruler.d.ts +1 -0
  21. package/dist/components/EditorRuler/Ruler.js +3 -1
  22. package/dist/components/EditorRuler/index.js +26 -23
  23. package/dist/components/EffectPickerModal.js +68 -7
  24. package/dist/components/ElementInstallConfirmation.d.ts +12 -0
  25. package/dist/components/ElementInstallConfirmation.js +205 -0
  26. package/dist/components/ForceSpecificCursor.js +14 -0
  27. package/dist/components/FullscreenToggle.js +1 -2
  28. package/dist/components/InitialCompositionLoader.js +1 -14
  29. package/dist/components/InlineAction.d.ts +4 -4
  30. package/dist/components/InlineAction.js +6 -4
  31. package/dist/components/InspectorLocationCopy.d.ts +1 -0
  32. package/dist/components/InspectorLocationCopy.js +7 -3
  33. package/dist/components/InspectorOpenInEditor.d.ts +5 -0
  34. package/dist/components/InspectorOpenInEditor.js +135 -0
  35. package/dist/components/InspectorPanel/AlignmentControls.js +1 -1
  36. package/dist/components/InspectorPanel/CompositionInspectorHeader.js +3 -3
  37. package/dist/components/InspectorPanel/CompositionMetadata.js +8 -7
  38. package/dist/components/InspectorPanel/KeyframeEasingNavigator.js +2 -2
  39. package/dist/components/InspectorPanel/KeyframeInspector.js +2 -3
  40. package/dist/components/InspectorPanel/SequenceInspectorHeader.js +2 -2
  41. package/dist/components/InspectorPanel/styles.js +4 -0
  42. package/dist/components/InspectorSequenceSection.js +2 -2
  43. package/dist/components/LoopToggle.js +1 -1
  44. package/dist/components/Menu/MenuItem.js +13 -6
  45. package/dist/components/Menu/MenuSubItem.js +3 -1
  46. package/dist/components/MenuBuildIndicator.d.ts +3 -1
  47. package/dist/components/MenuBuildIndicator.js +6 -4
  48. package/dist/components/MenuCompositionName.js +1 -1
  49. package/dist/components/MenuToolbar.js +1 -1
  50. package/dist/components/MobilePanel.d.ts +1 -2
  51. package/dist/components/MobilePanel.js +6 -6
  52. package/dist/components/ModalContainer.js +1 -1
  53. package/dist/components/ModalFooter.d.ts +1 -0
  54. package/dist/components/ModalFooter.js +2 -2
  55. package/dist/components/Modals.js +11 -2
  56. package/dist/components/MuteToggle.js +2 -1
  57. package/dist/components/NewComposition/ComboBox.d.ts +1 -0
  58. package/dist/components/NewComposition/ComboBox.js +2 -2
  59. package/dist/components/NewComposition/InputDragger.d.ts +4 -0
  60. package/dist/components/NewComposition/InputDragger.js +26 -32
  61. package/dist/components/Notifications/NotificationCenter.js +12 -2
  62. package/dist/components/OutlineToggle.js +10 -2
  63. package/dist/components/PlayPause.js +1 -5
  64. package/dist/components/PlaybackRateSelector.js +2 -1
  65. package/dist/components/PreviewToolbar.js +8 -7
  66. package/dist/components/PreviewToolbarOverflowButton.d.ts +0 -1
  67. package/dist/components/PreviewToolbarOverflowButton.js +2 -75
  68. package/dist/components/QuickSwitcher/QuickSwitcherContent.js +1 -2
  69. package/dist/components/RenderButton.d.ts +0 -1
  70. package/dist/components/RenderButton.js +10 -9
  71. package/dist/components/RenderModal/FrameRangeSetting.js +6 -1
  72. package/dist/components/RenderModal/InlineEyeIcon.js +1 -1
  73. package/dist/components/RenderModal/InlineRemoveButton.js +1 -1
  74. package/dist/components/RenderModal/MultiRangeSlider.js +8 -8
  75. package/dist/components/RenderModal/RenderModalEnvironmentVariables.js +1 -9
  76. package/dist/components/RenderModal/RenderModalOutputName.js +12 -3
  77. package/dist/components/RenderModal/SchemaEditor/SchemaResetButton.js +1 -1
  78. package/dist/components/RenderModal/ServerRenderModal.js +2 -17
  79. package/dist/components/RenderModal/WebRenderModal.js +3 -17
  80. package/dist/components/RenderModal/layout.js +7 -5
  81. package/dist/components/RenderModal/render-modals.js +18 -15
  82. package/dist/components/RenderQueue/RenderQueueCopyToClipboard.js +1 -1
  83. package/dist/components/RenderQueue/RenderQueueDownloadItem.js +1 -1
  84. package/dist/components/RenderQueue/RenderQueueItemCancelButton.js +1 -1
  85. package/dist/components/RenderQueue/RenderQueueOpenInFolder.js +1 -1
  86. package/dist/components/RenderQueue/RenderQueueRemoveItem.js +1 -1
  87. package/dist/components/RenderQueue/RenderQueueRepeat.js +2 -15
  88. package/dist/components/SelectedOutlineCropControls.js +7 -6
  89. package/dist/components/SelectedOutlineElement.js +32 -38
  90. package/dist/components/SelectedOutlineUvControls.js +25 -24
  91. package/dist/components/ShowGuidesProvider.js +2 -0
  92. package/dist/components/SidebarCollapserControls.js +2 -2
  93. package/dist/components/SidebarRenderButton.js +2 -16
  94. package/dist/components/SizeSelector.js +2 -1
  95. package/dist/components/SnappingToggle.js +1 -2
  96. package/dist/components/Spinner.d.ts +1 -0
  97. package/dist/components/Spinner.js +2 -2
  98. package/dist/components/Splitter/SplitterContainer.d.ts +1 -0
  99. package/dist/components/Splitter/SplitterContainer.js +4 -1
  100. package/dist/components/Splitter/SplitterContext.d.ts +4 -3
  101. package/dist/components/Splitter/SplitterContext.js +3 -2
  102. package/dist/components/Splitter/SplitterElement.js +6 -1
  103. package/dist/components/Splitter/SplitterHandle.js +18 -68
  104. package/dist/components/Tabs/vertical.d.ts +1 -0
  105. package/dist/components/Tabs/vertical.js +8 -10
  106. package/dist/components/TimeValue.js +26 -8
  107. package/dist/components/Timeline/EasingEditorModal.js +27 -19
  108. package/dist/components/Timeline/Timeline.js +1 -1
  109. package/dist/components/Timeline/TimelineAssetField.js +1 -1
  110. package/dist/components/Timeline/TimelineClipboardKeybindings.js +3 -6
  111. package/dist/components/Timeline/TimelineDeleteKeybindings.js +5 -7
  112. package/dist/components/Timeline/TimelineDragHandler.js +38 -7
  113. package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +2 -1
  114. package/dist/components/Timeline/TimelineInOutDragHandler.js +26 -11
  115. package/dist/components/Timeline/TimelineKeyframeEasingLine.d.ts +1 -1
  116. package/dist/components/Timeline/TimelineKeyframeEasingLine.js +2 -2
  117. package/dist/components/Timeline/TimelineLayerEye.js +36 -4
  118. package/dist/components/Timeline/TimelineSelection.js +16 -24
  119. package/dist/components/Timeline/TimelineSequence.js +7 -3
  120. package/dist/components/Timeline/TimelineSequenceItem.js +24 -18
  121. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +1 -1
  122. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +76 -43
  123. package/dist/components/Timeline/TimelineStack/get-stack.js +7 -2
  124. package/dist/components/Timeline/TimelineZoomControls.d.ts +3 -1
  125. package/dist/components/Timeline/TimelineZoomControls.js +24 -12
  126. package/dist/components/Timeline/get-sequence-context-menu-items.d.ts +4 -2
  127. package/dist/components/Timeline/get-sequence-context-menu-items.js +38 -2
  128. package/dist/components/Timeline/should-subscribe-to-source-file.d.ts +1 -0
  129. package/dist/components/Timeline/should-subscribe-to-source-file.js +11 -0
  130. package/dist/components/Timeline/use-expanded-track-keyframe-rows.js +2 -3
  131. package/dist/components/Timeline/use-open-sequence-in-editor.d.ts +3 -1
  132. package/dist/components/Timeline/use-open-sequence-in-editor.js +5 -2
  133. package/dist/components/Timeline/use-sequence-props-subscription.js +2 -0
  134. package/dist/components/Timeline/use-timeline-asset-drop.js +3 -7
  135. package/dist/components/Timeline/use-timeline-keyframe-drag.js +31 -16
  136. package/dist/components/TimelineInOutToggle.js +3 -3
  137. package/dist/components/TopPanel.js +3 -2
  138. package/dist/components/UndoRedoButtons.js +6 -5
  139. package/dist/components/UpdateCheck.d.ts +2 -0
  140. package/dist/components/UpdateCheck.js +29 -11
  141. package/dist/components/UpdateModal/UpdateModal.js +58 -19
  142. package/dist/components/VisualControls/ClickableFileName.js +5 -2
  143. package/dist/components/composition-menu-items.d.ts +2 -4
  144. package/dist/components/composition-menu-items.js +32 -55
  145. package/dist/components/element-install-request.d.ts +3 -0
  146. package/dist/components/element-install-request.js +17 -0
  147. package/dist/components/folder-menu-items.js +1 -1
  148. package/dist/components/handle-drop.d.ts +2 -3
  149. package/dist/components/handle-drop.js +11 -4
  150. package/dist/components/import-assets.d.ts +7 -6
  151. package/dist/components/import-assets.js +5 -16
  152. package/dist/components/use-default-editor-info.d.ts +4 -0
  153. package/dist/components/use-default-editor-info.js +47 -0
  154. package/dist/error-overlay/remotion-overlay/OpenInEditor.js +1 -1
  155. package/dist/error-overlay/remotion-overlay/StackFrame.js +1 -1
  156. package/dist/esm/{chunk-fjv75ty4.js → chunk-43m68z1k.js} +8689 -7374
  157. package/dist/esm/internals.mjs +8689 -7374
  158. package/dist/esm/previewEntry.mjs +8668 -7353
  159. package/dist/esm/renderEntry.mjs +1 -1
  160. package/dist/helpers/inject-css.js +58 -67
  161. package/dist/helpers/install-required-package.d.ts +3 -2
  162. package/dist/helpers/install-required-package.js +20 -15
  163. package/dist/helpers/open-in-editor.d.ts +3 -3
  164. package/dist/helpers/open-in-editor.js +10 -6
  165. package/dist/helpers/pointer-session.d.ts +9 -0
  166. package/dist/helpers/pointer-session.js +94 -0
  167. package/dist/helpers/use-menu-structure.js +109 -51
  168. package/dist/icons/audio.d.ts +1 -1
  169. package/dist/icons/audio.js +1 -1
  170. package/dist/icons/caret.js +1 -1
  171. package/dist/icons/certificate.d.ts +1 -1
  172. package/dist/icons/certificate.js +1 -1
  173. package/dist/icons/custom-editor.d.ts +4 -0
  174. package/dist/icons/custom-editor.js +11 -0
  175. package/dist/icons/data.d.ts +1 -1
  176. package/dist/icons/data.js +2 -2
  177. package/dist/icons/editor.d.ts +6 -0
  178. package/dist/icons/editor.js +52 -0
  179. package/dist/icons/effects.d.ts +5 -0
  180. package/dist/icons/effects.js +8 -0
  181. package/dist/icons/ellipsis.js +1 -1
  182. package/dist/icons/external-link.d.ts +5 -0
  183. package/dist/icons/external-link.js +10 -0
  184. package/dist/icons/fullscreen.js +1 -1
  185. package/dist/icons/gear.d.ts +1 -1
  186. package/dist/icons/gear.js +1 -1
  187. package/dist/icons/gif.d.ts +1 -1
  188. package/dist/icons/gif.js +1 -1
  189. package/dist/icons/input-props.d.ts +2 -0
  190. package/dist/icons/input-props.js +9 -0
  191. package/dist/icons/jump-to-start.js +2 -2
  192. package/dist/icons/magnet.d.ts +3 -1
  193. package/dist/icons/magnet.js +2 -2
  194. package/dist/icons/media-volume.d.ts +6 -2
  195. package/dist/icons/media-volume.js +8 -6
  196. package/dist/icons/minus.d.ts +3 -1
  197. package/dist/icons/minus.js +2 -2
  198. package/dist/icons/pause.js +1 -1
  199. package/dist/icons/play.js +1 -1
  200. package/dist/icons/plus.js +1 -1
  201. package/dist/icons/redo.js +2 -2
  202. package/dist/icons/step-back.js +2 -2
  203. package/dist/icons/step-forward.js +2 -2
  204. package/dist/icons/timelineInOutPointer.js +2 -2
  205. package/dist/icons/undo.js +2 -2
  206. package/dist/state/editor-guides.d.ts +1 -0
  207. package/dist/state/editor-guides.js +1 -0
  208. package/dist/state/modals.d.ts +2 -0
  209. package/dist/state/z-index.d.ts +1 -0
  210. package/dist/state/z-index.js +34 -18
  211. package/package.json +12 -13
  212. package/dist/components/StudioCanvasCapture.d.ts +0 -5
  213. package/dist/components/StudioCanvasCapture.js +0 -40
  214. package/dist/components/canvas-capture-enabled.d.ts +0 -1
  215. package/dist/components/canvas-capture-enabled.js +0 -4
  216. package/dist/components/use-element-overwrite-confirmation.d.ts +0 -2
  217. package/dist/components/use-element-overwrite-confirmation.js +0 -73
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ElementInstallConfirmation = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const colors_1 = require("../helpers/colors");
6
+ const ValidationMessage_1 = require("./NewComposition/ValidationMessage");
7
+ const container = {
8
+ display: 'flex',
9
+ flexDirection: 'column',
10
+ gap: 20,
11
+ color: colors_1.WHITE,
12
+ fontFamily: 'sans-serif',
13
+ fontSize: 13,
14
+ lineHeight: 1.5,
15
+ };
16
+ const sectionStyle = {
17
+ display: 'flex',
18
+ flexDirection: 'column',
19
+ gap: 10,
20
+ };
21
+ const sectionTitleStyle = {
22
+ margin: 0,
23
+ color: colors_1.WHITE,
24
+ fontFamily: 'sans-serif',
25
+ fontSize: 13,
26
+ fontWeight: 600,
27
+ lineHeight: 1.5,
28
+ };
29
+ const metadataStyle = {
30
+ display: 'flex',
31
+ flexDirection: 'column',
32
+ gap: 8,
33
+ margin: 0,
34
+ };
35
+ const metadataRowStyle = {
36
+ display: 'grid',
37
+ gridTemplateColumns: '100px minmax(0, 1fr)',
38
+ alignItems: 'baseline',
39
+ gap: 12,
40
+ };
41
+ const metadataTermStyle = {
42
+ color: colors_1.LIGHT_TEXT,
43
+ fontFamily: 'sans-serif',
44
+ fontSize: 13,
45
+ fontWeight: 500,
46
+ lineHeight: 1.5,
47
+ };
48
+ const metadataDescriptionStyle = {
49
+ margin: 0,
50
+ minWidth: 0,
51
+ color: colors_1.WHITE,
52
+ fontFamily: 'sans-serif',
53
+ fontSize: 13,
54
+ fontWeight: 400,
55
+ lineHeight: 1.5,
56
+ overflowWrap: 'anywhere',
57
+ };
58
+ const unverifiedSourceStyle = {
59
+ ...metadataDescriptionStyle,
60
+ color: colors_1.WARNING_COLOR,
61
+ };
62
+ const codeStyle = {
63
+ color: 'inherit',
64
+ fontFamily: 'monospace',
65
+ fontSize: 13,
66
+ lineHeight: 1.5,
67
+ };
68
+ const overwriteStyle = {
69
+ margin: 0,
70
+ color: colors_1.WARNING_COLOR,
71
+ fontFamily: 'sans-serif',
72
+ fontSize: 13,
73
+ fontWeight: 500,
74
+ lineHeight: 1.5,
75
+ };
76
+ const dependencyListStyle = {
77
+ display: 'flex',
78
+ flexDirection: 'column',
79
+ gap: 8,
80
+ margin: 0,
81
+ padding: 0,
82
+ listStyleType: 'none',
83
+ };
84
+ const dependencyRowStyle = {
85
+ display: 'flex',
86
+ alignItems: 'baseline',
87
+ justifyContent: 'space-between',
88
+ gap: 16,
89
+ minWidth: 0,
90
+ };
91
+ const dependencyNameStyle = {
92
+ minWidth: 0,
93
+ color: colors_1.WHITE,
94
+ fontFamily: 'monospace',
95
+ fontSize: 13,
96
+ lineHeight: 1.5,
97
+ overflowWrap: 'anywhere',
98
+ };
99
+ const dependencyInstallStatusStyle = {
100
+ flexShrink: 0,
101
+ color: colors_1.WARNING_COLOR,
102
+ fontFamily: 'sans-serif',
103
+ fontSize: 13,
104
+ fontWeight: 500,
105
+ lineHeight: 1.5,
106
+ };
107
+ const dependencyInstalledStatusStyle = {
108
+ ...dependencyInstallStatusStyle,
109
+ color: colors_1.LIGHT_TEXT,
110
+ };
111
+ const warningStyle = {
112
+ display: 'flex',
113
+ alignItems: 'flex-start',
114
+ gap: 10,
115
+ minWidth: 0,
116
+ };
117
+ const warningIconStyle = {
118
+ width: 16,
119
+ height: 16,
120
+ marginTop: 1,
121
+ flexShrink: 0,
122
+ fill: colors_1.WARNING_COLOR,
123
+ };
124
+ const warningDescriptionStyle = {
125
+ margin: 0,
126
+ minWidth: 0,
127
+ color: colors_1.LIGHT_TEXT,
128
+ fontFamily: 'sans-serif',
129
+ fontSize: 13,
130
+ fontWeight: 400,
131
+ lineHeight: 1.5,
132
+ };
133
+ const sourceDetailsStyle = {
134
+ paddingTop: 2,
135
+ fontFamily: 'sans-serif',
136
+ fontSize: 13,
137
+ lineHeight: 1.5,
138
+ };
139
+ const sourceSummaryStyle = {
140
+ cursor: 'pointer',
141
+ color: colors_1.WHITE,
142
+ fontFamily: 'sans-serif',
143
+ fontSize: 13,
144
+ fontWeight: 500,
145
+ lineHeight: 1.5,
146
+ };
147
+ const sourceCodeBlockStyle = {
148
+ marginTop: 10,
149
+ marginBottom: 0,
150
+ maxHeight: 240,
151
+ overflow: 'auto',
152
+ padding: 12,
153
+ border: `1px solid ${colors_1.WHITE_ALPHA_12}`,
154
+ borderRadius: 6,
155
+ backgroundColor: colors_1.INPUT_BACKGROUND,
156
+ color: colors_1.WHITE,
157
+ fontFamily: 'monospace',
158
+ fontSize: 12,
159
+ lineHeight: 1.5,
160
+ whiteSpace: 'pre',
161
+ };
162
+ const sourceCodeStyle = {
163
+ color: 'inherit',
164
+ fontFamily: 'inherit',
165
+ fontSize: 'inherit',
166
+ lineHeight: 'inherit',
167
+ };
168
+ const makeSourceControlsVisible = (sourceCode) => {
169
+ return sourceCode.replace(/[\u200b-\u200f\u202a-\u202e\u2066-\u2069\ufeff]/g, (character) => {
170
+ var _a;
171
+ return `\\u${(_a = character.codePointAt(0)) === null || _a === void 0 ? void 0 : _a.toString(16).padStart(4, '0')}`;
172
+ });
173
+ };
174
+ const ElementInstallConfirmation = ({ displayName, sourceLabel, sourceIsUnverified, compositionId, filePath, overwritesExistingFile, dependenciesToReview, missingPackages, sourceCode, }) => {
175
+ return (jsx_runtime_1.jsxs("div", { style: container, children: [
176
+ jsx_runtime_1.jsxs("dl", { style: metadataStyle, "aria-label": "Installation details", children: [
177
+ jsx_runtime_1.jsxs("div", { style: metadataRowStyle, children: [
178
+ jsx_runtime_1.jsx("dt", { style: metadataTermStyle, children: "Element" }), jsx_runtime_1.jsx("dd", { style: metadataDescriptionStyle, children: displayName })
179
+ ] }), jsx_runtime_1.jsxs("div", { style: metadataRowStyle, children: [
180
+ jsx_runtime_1.jsx("dt", { style: metadataTermStyle, children: "Request source" }), jsx_runtime_1.jsx("dd", { style: sourceIsUnverified
181
+ ? unverifiedSourceStyle
182
+ : metadataDescriptionStyle, children: sourceLabel })
183
+ ] }), jsx_runtime_1.jsxs("div", { style: metadataRowStyle, children: [
184
+ jsx_runtime_1.jsx("dt", { style: metadataTermStyle, children: "Composition" }), jsx_runtime_1.jsx("dd", { style: metadataDescriptionStyle, children: jsx_runtime_1.jsx("code", { style: codeStyle, children: compositionId }) })
185
+ ] }), jsx_runtime_1.jsxs("div", { style: metadataRowStyle, children: [
186
+ jsx_runtime_1.jsx("dt", { style: metadataTermStyle, children: "Destination" }), jsx_runtime_1.jsx("dd", { style: metadataDescriptionStyle, children: jsx_runtime_1.jsx("code", { style: codeStyle, children: filePath }) })
187
+ ] }), overwritesExistingFile ? (jsx_runtime_1.jsxs("div", { style: metadataRowStyle, children: [
188
+ jsx_runtime_1.jsx("dt", { style: metadataTermStyle, children: "File change" }), jsx_runtime_1.jsx("dd", { style: overwriteStyle, children: "Replace existing source file" })
189
+ ] })) : null] }), dependenciesToReview.length > 0 ? (jsx_runtime_1.jsxs("section", { style: sectionStyle, "aria-labelledby": "element-install-dependencies", children: [
190
+ jsx_runtime_1.jsx("h3", { id: "element-install-dependencies", style: sectionTitleStyle, children: "Dependencies" }), jsx_runtime_1.jsx("ul", { style: dependencyListStyle, role: "list", children: dependenciesToReview.map((packageName) => {
191
+ const willInstall = missingPackages.includes(packageName);
192
+ return (jsx_runtime_1.jsxs("li", { style: dependencyRowStyle, children: [
193
+ jsx_runtime_1.jsx("div", { style: dependencyNameStyle, children: packageName }), jsx_runtime_1.jsx("div", { style: willInstall
194
+ ? dependencyInstallStatusStyle
195
+ : dependencyInstalledStatusStyle, children: willInstall ? 'Will be installed' : 'Installed' })
196
+ ] }, packageName));
197
+ }) })
198
+ ] })) : null, jsx_runtime_1.jsxs("div", { style: warningStyle, children: [
199
+ jsx_runtime_1.jsx(ValidationMessage_1.WarningTriangle, { style: warningIconStyle }), jsx_runtime_1.jsx("p", { style: warningDescriptionStyle, children: "This adds executable source code to your project. Package lifecycle scripts may also run during installation, with access to your files and the network." })
200
+ ] }), jsx_runtime_1.jsxs("details", { style: sourceDetailsStyle, children: [
201
+ jsx_runtime_1.jsx("summary", { style: sourceSummaryStyle, children: "Source code" }), jsx_runtime_1.jsx("pre", { style: sourceCodeBlockStyle, children: jsx_runtime_1.jsx("code", { style: sourceCodeStyle, children: makeSourceControlsVisible(sourceCode) }) })
202
+ ] })
203
+ ] }));
204
+ };
205
+ exports.ElementInstallConfirmation = ElementInstallConfirmation;
@@ -40,7 +40,19 @@ const ref = react_1.default.createRef();
40
40
  const removeAutomaticCleanupListeners = () => {
41
41
  window.removeEventListener('pointerup', exports.stopForcingSpecificCursor, true);
42
42
  window.removeEventListener('pointercancel', exports.stopForcingSpecificCursor, true);
43
+ window.removeEventListener('pointermove', stopIfNoButtonsArePressed, true);
43
44
  window.removeEventListener('blur', exports.stopForcingSpecificCursor, true);
45
+ document.removeEventListener('visibilitychange', stopIfDocumentIsHidden);
46
+ };
47
+ const stopIfNoButtonsArePressed = (event) => {
48
+ if (event.buttons === 0) {
49
+ (0, exports.stopForcingSpecificCursor)();
50
+ }
51
+ };
52
+ const stopIfDocumentIsHidden = () => {
53
+ if (document.visibilityState === 'hidden') {
54
+ (0, exports.stopForcingSpecificCursor)();
55
+ }
44
56
  };
45
57
  const forceSpecificCursor = (cursor) => {
46
58
  if (!ref.current) {
@@ -53,7 +65,9 @@ const forceSpecificCursor = (cursor) => {
53
65
  // initiator so the cursor overlay can never remain stuck.
54
66
  window.addEventListener('pointerup', exports.stopForcingSpecificCursor, true);
55
67
  window.addEventListener('pointercancel', exports.stopForcingSpecificCursor, true);
68
+ window.addEventListener('pointermove', stopIfNoButtonsArePressed, true);
56
69
  window.addEventListener('blur', exports.stopForcingSpecificCursor, true);
70
+ document.addEventListener('visibilitychange', stopIfDocumentIsHidden);
57
71
  };
58
72
  exports.forceSpecificCursor = forceSpecificCursor;
59
73
  const stopForcingSpecificCursor = () => {
@@ -5,7 +5,6 @@ const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const remotion_1 = require("remotion");
7
7
  const no_react_1 = require("remotion/no-react");
8
- const colors_1 = require("../helpers/colors");
9
8
  const use_keybinding_1 = require("../helpers/use-keybinding");
10
9
  const fullscreen_1 = require("../icons/fullscreen");
11
10
  const canvas_ref_1 = require("../state/canvas-ref");
@@ -45,6 +44,6 @@ const FullScreenToggle = ({ hidden }) => {
45
44
  f.unregister();
46
45
  };
47
46
  }, [keybindings, onClick]);
48
- return hidden ? (jsx_runtime_1.jsx("button", { id: "fullscreen-toggle", type: "button", style: { display: 'none' }, onClick: onClick })) : (jsx_runtime_1.jsx(ControlButton_1.ControlButton, { id: "fullscreen-toggle", title: accessibilityLabel, "aria-label": accessibilityLabel, onClick: onClick, children: jsx_runtime_1.jsx(fullscreen_1.FullscreenIcon, { color: colors_1.WHITE_HEX, style: { width: 18, height: 18 } }) }));
47
+ return hidden ? (jsx_runtime_1.jsx("button", { id: "fullscreen-toggle", type: "button", style: { display: 'none' }, onClick: onClick })) : (jsx_runtime_1.jsx(ControlButton_1.ControlButton, { id: "fullscreen-toggle", title: accessibilityLabel, "aria-label": accessibilityLabel, onClick: onClick, children: (color) => (jsx_runtime_1.jsx(fullscreen_1.FullscreenIcon, { color: color, style: { width: 18, height: 18 } })) }));
49
48
  };
50
49
  exports.FullScreenToggle = FullScreenToggle;
@@ -4,11 +4,9 @@ exports.InitialCompositionLoader = exports.useSelectComposition = void 0;
4
4
  const react_1 = require("react");
5
5
  const remotion_1 = require("remotion");
6
6
  const create_folder_tree_1 = require("../helpers/create-folder-tree");
7
- const mobile_layout_1 = require("../helpers/mobile-layout");
8
7
  const persist_open_folders_1 = require("../helpers/persist-open-folders");
9
8
  const url_state_1 = require("../helpers/url-state");
10
9
  const folders_1 = require("../state/folders");
11
- const sidebar_1 = require("../state/sidebar");
12
10
  const ExplorerPanelRef_1 = require("./ExplorerPanelRef");
13
11
  const load_canvas_content_from_url_1 = require("./load-canvas-content-from-url");
14
12
  const use_select_asset_1 = require("./use-select-asset");
@@ -17,8 +15,6 @@ const useSelectComposition = () => {
17
15
  const { setCompositionFoldersExpanded } = (0, react_1.useContext)(folders_1.FolderContext);
18
16
  const { setCanvasContent } = (0, react_1.useContext)(remotion_1.Internals.CompositionSetters);
19
17
  const setFrame = remotion_1.Internals.useTimelineSetFrame();
20
- const isMobileLayout = (0, mobile_layout_1.useMobileLayout)();
21
- const { setSidebarCollapsedState } = (0, react_1.useContext)(sidebar_1.SidebarContext);
22
18
  return (0, react_1.useCallback)((c, push, frame = null) => {
23
19
  var _a;
24
20
  if (push) {
@@ -42,17 +38,8 @@ const useSelectComposition = () => {
42
38
  (0, persist_open_folders_1.persistExpandedFolders)('compositions', newState);
43
39
  return newState;
44
40
  });
45
- if (isMobileLayout) {
46
- setSidebarCollapsedState({ left: 'collapsed', right: 'collapsed' });
47
- }
48
41
  }
49
- }, [
50
- isMobileLayout,
51
- setCanvasContent,
52
- setCompositionFoldersExpanded,
53
- setFrame,
54
- setSidebarCollapsedState,
55
- ]);
42
+ }, [setCanvasContent, setCompositionFoldersExpanded, setFrame]);
56
43
  };
57
44
  exports.useSelectComposition = useSelectComposition;
58
45
  const InitialCompositionLoader = () => {
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
2
  export type RenderInlineAction = (color: string) => React.ReactNode;
3
- export type InlineActionProps = {
3
+ export type InlineActionProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children' | 'onClick' | 'style'> & {
4
4
  readonly onClick: React.MouseEventHandler<HTMLButtonElement>;
5
- readonly disabled?: boolean;
6
5
  readonly renderAction: RenderInlineAction;
7
- readonly title?: string;
8
6
  readonly unhoveredColor?: string;
7
+ readonly variant: 'compact' | null;
8
+ readonly style?: React.CSSProperties;
9
9
  };
10
- export declare const InlineAction: ({ renderAction, onClick, disabled, title, unhoveredColor, }: InlineActionProps) => import("react/jsx-runtime").JSX.Element;
10
+ export declare const InlineAction: ({ renderAction, onClick, disabled, title, unhoveredColor, variant, style: customStyle, ...buttonProps }: InlineActionProps) => import("react/jsx-runtime").JSX.Element;
@@ -5,7 +5,8 @@ const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const colors_1 = require("../helpers/colors");
7
7
  const z_index_1 = require("../state/z-index");
8
- const InlineAction = ({ renderAction, onClick, disabled, title, unhoveredColor = colors_1.LIGHT_TEXT, }) => {
8
+ const InlineAction = ({ renderAction, onClick, disabled, title, unhoveredColor = colors_1.LIGHT_TEXT, variant, style: customStyle, ...buttonProps }) => {
9
+ var _a;
9
10
  const { tabIndex } = (0, z_index_1.useZIndex)();
10
11
  const [hovered, setHovered] = (0, react_1.useState)(false);
11
12
  const onPointerEnter = (0, react_1.useCallback)(() => {
@@ -21,7 +22,7 @@ const InlineAction = ({ renderAction, onClick, disabled, title, unhoveredColor =
21
22
  ? colors_1.TRANSPARENT
22
23
  : (0, colors_1.getBackgroundFromHoverState)({ hovered, selected: false }),
23
24
  height: 24,
24
- width: 24,
25
+ width: variant === 'compact' ? 14 : 24,
25
26
  padding: 0,
26
27
  display: 'inline-flex',
27
28
  justifyContent: 'center',
@@ -29,8 +30,9 @@ const InlineAction = ({ renderAction, onClick, disabled, title, unhoveredColor =
29
30
  borderRadius: 3,
30
31
  opacity: disabled ? 0.5 : 1,
31
32
  pointerEvents: disabled ? 'none' : 'auto',
33
+ ...customStyle,
32
34
  };
33
- }, [disabled, hovered]);
34
- return (jsx_runtime_1.jsx("button", { type: "button", disabled: disabled, onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, onClick: onClick, style: style, tabIndex: tabIndex, title: title, "aria-label": title, children: renderAction(hovered ? colors_1.WHITE : unhoveredColor) }));
35
+ }, [customStyle, disabled, hovered, variant]);
36
+ return (jsx_runtime_1.jsx("button", { ...buttonProps, type: "button", disabled: disabled, onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, onClick: onClick, style: style, tabIndex: tabIndex, title: title, "aria-label": (_a = buttonProps['aria-label']) !== null && _a !== void 0 ? _a : title, children: renderAction(hovered ? colors_1.WHITE : unhoveredColor) }));
35
37
  };
36
38
  exports.InlineAction = InlineAction;
@@ -4,4 +4,5 @@ export declare const InspectorLocationCopy: React.FC<{
4
4
  readonly children: React.ReactNode;
5
5
  readonly location: OriginalPosition | null;
6
6
  readonly name: string | null;
7
+ readonly openInEditorLocation: OriginalPosition | null;
7
8
  }>;
@@ -6,6 +6,7 @@ const react_1 = require("react");
6
6
  const format_file_location_1 = require("../helpers/format-file-location");
7
7
  const clipboard_1 = require("../icons/clipboard");
8
8
  const InlineAction_1 = require("./InlineAction");
9
+ const InspectorOpenInEditor_1 = require("./InspectorOpenInEditor");
9
10
  const NotificationCenter_1 = require("./Notifications/NotificationCenter");
10
11
  const row = {
11
12
  alignItems: 'center',
@@ -22,6 +23,8 @@ const content = {
22
23
  overflow: 'hidden',
23
24
  };
24
25
  const action = {
26
+ alignItems: 'center',
27
+ display: 'flex',
25
28
  flexShrink: 0,
26
29
  height: 24,
27
30
  marginLeft: 0,
@@ -32,7 +35,7 @@ const icon = {
32
35
  height: 12,
33
36
  width: 12,
34
37
  };
35
- const InspectorLocationCopy = ({ children, location, name }) => {
38
+ const InspectorLocationCopy = ({ children, location, name, openInEditorLocation }) => {
36
39
  const [hovered, setHovered] = (0, react_1.useState)(false);
37
40
  const [focusedWithin, setFocusedWithin] = (0, react_1.useState)(false);
38
41
  const textToCopy = (0, react_1.useMemo)(() => {
@@ -56,10 +59,11 @@ const InspectorLocationCopy = ({ children, location, name }) => {
56
59
  }, [textToCopy]);
57
60
  const showAction = hovered || focusedWithin;
58
61
  return (jsx_runtime_1.jsxs("div", { style: row, onPointerEnter: () => setHovered(true), onPointerLeave: () => setHovered(false), onFocus: () => setFocusedWithin(true), onBlur: () => setFocusedWithin(false), children: [
59
- jsx_runtime_1.jsx("div", { style: content, children: children }), textToCopy ? (jsx_runtime_1.jsx("div", { style: {
62
+ jsx_runtime_1.jsx("div", { style: content, children: children }), textToCopy || openInEditorLocation ? (jsx_runtime_1.jsxs("div", { style: {
60
63
  ...action,
61
64
  opacity: showAction ? 1 : 0,
62
65
  pointerEvents: showAction ? 'auto' : 'none',
63
- }, children: jsx_runtime_1.jsx(InlineAction_1.InlineAction, { onClick: onCopy, renderAction: renderCopyAction, title: "Copy location for agents" }) })) : null] }));
66
+ }, children: [
67
+ jsx_runtime_1.jsx(InspectorOpenInEditor_1.InspectorOpenInEditor, { location: openInEditorLocation }), textToCopy ? (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, onClick: onCopy, renderAction: renderCopyAction, title: "Copy location for agents" })) : null] })) : null] }));
64
68
  };
65
69
  exports.InspectorLocationCopy = InspectorLocationCopy;
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { OriginalPosition } from '../error-overlay/react-overlay/utils/get-source-map';
3
+ export declare const InspectorOpenInEditor: React.FC<{
4
+ readonly location: OriginalPosition | null;
5
+ }>;
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InspectorOpenInEditor = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const client_id_1 = require("../helpers/client-id");
7
+ const colors_1 = require("../helpers/colors");
8
+ const open_in_editor_1 = require("../helpers/open-in-editor");
9
+ const caret_1 = require("../icons/caret");
10
+ const editor_1 = require("../icons/editor");
11
+ const modals_1 = require("../state/modals");
12
+ const z_index_1 = require("../state/z-index");
13
+ const InlineDropdown_1 = require("./InlineDropdown");
14
+ const NotificationCenter_1 = require("./Notifications/NotificationCenter");
15
+ const use_default_editor_info_1 = require("./use-default-editor-info");
16
+ const splitButton = {
17
+ alignItems: 'center',
18
+ display: 'inline-flex',
19
+ flexDirection: 'row',
20
+ flexShrink: 0,
21
+ height: 24,
22
+ };
23
+ const mainButtonBase = {
24
+ alignItems: 'center',
25
+ background: colors_1.TRANSPARENT,
26
+ border: 'none',
27
+ borderRadius: 3,
28
+ color: colors_1.LIGHT_TEXT,
29
+ display: 'inline-flex',
30
+ fontFamily: 'sans-serif',
31
+ fontSize: 11,
32
+ height: 24,
33
+ lineHeight: '14px',
34
+ padding: '0 6px',
35
+ whiteSpace: 'nowrap',
36
+ };
37
+ const menuLabel = {
38
+ color: 'inherit',
39
+ fontFamily: 'sans-serif',
40
+ fontSize: 13,
41
+ lineHeight: '16px',
42
+ };
43
+ const editorButtonIconSize = 18;
44
+ const editorMenuIconSize = 18;
45
+ const InspectorOpenInEditor = ({ location }) => {
46
+ var _a;
47
+ const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
48
+ const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
49
+ const { tabIndex } = (0, z_index_1.useZIndex)();
50
+ const [hovered, setHovered] = (0, react_1.useState)(false);
51
+ const editorPickerAvailable = (0, use_default_editor_info_1.canUseEditorPicker)(previewServerState.type === 'connected');
52
+ const editorInfo = (0, use_default_editor_info_1.useDefaultEditorInfo)(editorPickerAvailable);
53
+ const openWithEditor = (0, react_1.useCallback)(async (editorId) => {
54
+ if (!location) {
55
+ return;
56
+ }
57
+ try {
58
+ await (0, open_in_editor_1.openOriginalPositionInEditor)(location, editorId);
59
+ }
60
+ catch (err) {
61
+ (0, NotificationCenter_1.showNotification)(err.message, 2000);
62
+ }
63
+ }, [location]);
64
+ const preferredEditorId = (0, use_default_editor_info_1.getPreferredEditorId)(editorInfo);
65
+ const editorName = (_a = window.remotion_editorName) !== null && _a !== void 0 ? _a : 'default editor';
66
+ const canOpenDefault = location !== null && window.remotion_editorName !== null;
67
+ const onOpenDefault = (0, react_1.useCallback)((event) => {
68
+ event.stopPropagation();
69
+ openWithEditor(null).catch(() => undefined);
70
+ }, [openWithEditor]);
71
+ const mainButtonStyle = (0, react_1.useMemo)(() => {
72
+ return {
73
+ ...mainButtonBase,
74
+ background: (0, colors_1.getBackgroundFromHoverState)({
75
+ hovered,
76
+ selected: false,
77
+ }),
78
+ color: hovered ? colors_1.WHITE : colors_1.LIGHT_TEXT,
79
+ opacity: canOpenDefault ? 1 : 0.5,
80
+ pointerEvents: canOpenDefault ? 'auto' : 'none',
81
+ };
82
+ }, [canOpenDefault, hovered]);
83
+ const renderDropdownAction = (0, react_1.useCallback)((color) => {
84
+ return jsx_runtime_1.jsx(caret_1.CaretDown, { color: color, small: true });
85
+ }, []);
86
+ const menuItems = (0, react_1.useMemo)(() => {
87
+ var _a;
88
+ const alternateEditors = ((_a = editorInfo === null || editorInfo === void 0 ? void 0 : editorInfo.installedEditors) !== null && _a !== void 0 ? _a : [])
89
+ .filter((editor) => editor.id !== preferredEditorId)
90
+ .map((editor) => ({
91
+ id: `open-in-${editor.id}`,
92
+ keyHint: null,
93
+ label: jsx_runtime_1.jsx("span", { style: menuLabel, children: editor.name }),
94
+ leftItem: jsx_runtime_1.jsx(editor_1.EditorIcon, { editorId: editor.id, size: editorMenuIconSize }),
95
+ onClick: () => {
96
+ openWithEditor(editor.id).catch(() => undefined);
97
+ },
98
+ quickSwitcherLabel: null,
99
+ subMenu: null,
100
+ type: 'item',
101
+ value: editor.id,
102
+ }));
103
+ const settingsItems = [
104
+ ...(alternateEditors.length > 0
105
+ ? [{ type: 'divider', id: 'editor-settings-divider' }]
106
+ : []),
107
+ {
108
+ id: 'set-default-editor',
109
+ keyHint: null,
110
+ label: jsx_runtime_1.jsx("span", { style: menuLabel, children: "Set default editor..." }),
111
+ leftItem: null,
112
+ onClick: () => {
113
+ setSelectedModal({ type: 'configure-default-editor' });
114
+ },
115
+ quickSwitcherLabel: null,
116
+ subMenu: null,
117
+ type: 'item',
118
+ value: 'set-default-editor',
119
+ },
120
+ ];
121
+ return [...alternateEditors, ...settingsItems];
122
+ }, [
123
+ editorInfo === null || editorInfo === void 0 ? void 0 : editorInfo.installedEditors,
124
+ openWithEditor,
125
+ preferredEditorId,
126
+ setSelectedModal,
127
+ ]);
128
+ if (!editorPickerAvailable) {
129
+ return null;
130
+ }
131
+ return (jsx_runtime_1.jsxs("div", { style: splitButton, children: [
132
+ jsx_runtime_1.jsx("button", { "aria-label": `Open in ${editorName}`, disabled: !canOpenDefault, onClick: onOpenDefault, onPointerEnter: () => setHovered(true), onPointerLeave: () => setHovered(false), style: mainButtonStyle, tabIndex: tabIndex, title: `Open in ${editorName}`, type: "button", children: jsx_runtime_1.jsx(editor_1.EditorIcon, { editorId: preferredEditorId, size: editorButtonIconSize }) }), jsx_runtime_1.jsx(InlineDropdown_1.InlineDropdown, { renderAction: renderDropdownAction, title: "Open in another editor", values: menuItems, variant: "compact" })
133
+ ] }));
134
+ };
135
+ exports.InspectorOpenInEditor = InspectorOpenInEditor;
@@ -44,7 +44,7 @@ const verticalDivider = {
44
44
  margin: '0 8px',
45
45
  };
46
46
  const AlignmentButton = ({ onClick, title, Icon, disabled }) => {
47
- return (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { title: title, onClick: onClick, renderAction: (color) => jsx_runtime_1.jsx(Icon, { style: iconStyle, color: color }), disabled: disabled }));
47
+ return (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, title: title, onClick: onClick, renderAction: (color) => jsx_runtime_1.jsx(Icon, { style: iconStyle, color: color }), disabled: disabled }));
48
48
  };
49
49
  const AlignmentControls = ({ track }) => {
50
50
  var _a;
@@ -72,7 +72,7 @@ const CompositionInspectorHeader = () => {
72
72
  if (!validatedLocation) {
73
73
  return;
74
74
  }
75
- (0, open_in_editor_1.openOriginalPositionInEditor)(validatedLocation).catch((err) => {
75
+ (0, open_in_editor_1.openOriginalPositionInEditor)(validatedLocation, null).catch((err) => {
76
76
  (0, NotificationCenter_1.showNotification)(err.message, 2000);
77
77
  });
78
78
  }, [validatedLocation]);
@@ -80,7 +80,7 @@ const CompositionInspectorHeader = () => {
80
80
  if (!componentLocation) {
81
81
  return;
82
82
  }
83
- (0, open_in_editor_1.openOriginalPositionInEditor)(componentLocation).catch((err) => {
83
+ (0, open_in_editor_1.openOriginalPositionInEditor)(componentLocation, null).catch((err) => {
84
84
  (0, NotificationCenter_1.showNotification)(err.message, 2000);
85
85
  });
86
86
  }, [componentLocation]);
@@ -90,7 +90,7 @@ const CompositionInspectorHeader = () => {
90
90
  }
91
91
  return (0, is_composition_still_1.isCompositionStill)(video) ? (jsx_runtime_1.jsx(still_1.StillIcon, { color: color, style: sourceLocationIconStyle })) : (jsx_runtime_1.jsx(video_1.FilmIcon, { color: color, style: sourceLocationIconStyle }));
92
92
  }, [video]);
93
- return (jsx_runtime_1.jsx(InspectorInfoHeader_1.InspectorInfoHeader, { minHeight: COMPOSITION_INSPECTOR_HEADER_HEIGHT, padding: "4px 0", children: video ? (jsx_runtime_1.jsxs(InspectorLocationCopy_1.InspectorLocationCopy, { location: validatedLocation, name: video.id, children: [
93
+ return (jsx_runtime_1.jsx(InspectorInfoHeader_1.InspectorInfoHeader, { minHeight: COMPOSITION_INSPECTOR_HEADER_HEIGHT, padding: "4px 0", children: video ? (jsx_runtime_1.jsxs(InspectorLocationCopy_1.InspectorLocationCopy, { location: validatedLocation, name: video.id, openInEditorLocation: componentLocation, children: [
94
94
  jsx_runtime_1.jsx(InlineCompositionName_1.InlineCompositionName, { compositionId: video.id, stack: (_e = currentComposition === null || currentComposition === void 0 ? void 0 : currentComposition.stack) !== null && _e !== void 0 ? _e : null, compositions: compositions }, video.id), jsx_runtime_1.jsx(InspectorSourceLocation_1.InspectorSourceLocation, { location: validatedLocation, canOpen: validatedLocation !== null, onOpen: openFileLocation, renderIcon: renderCompositionIcon, size: "inline-action" }), compositionComponentInfo === null &&
95
95
  compositionFile !== null &&
96
96
  compositionId !== null ? (jsx_runtime_1.jsx("div", { "aria-hidden": true, style: componentLocationPlaceholder })) : (jsx_runtime_1.jsx(InspectorSourceLocation_1.InspectorSourceLocation, { location: componentLocation, canOpen: componentLocation !== null, onOpen: openComponentLocation, renderIcon: renderReactIcon, size: "inline-action" }))] })) : null }));
@@ -37,16 +37,17 @@ const computedValueStyle = {
37
37
  fontFamily: 'sans-serif',
38
38
  fontSize: 12,
39
39
  fontStyle: 'italic',
40
- lineHeight: 1.5,
40
+ lineHeight: '20px',
41
41
  };
42
42
  const dimensionsControls = {
43
43
  alignItems: 'center',
44
+ color: 'inherit',
44
45
  display: 'flex',
45
46
  fontFamily: 'sans-serif',
46
- fontSize: 12,
47
+ fontSize: 13,
47
48
  gap: 4,
48
49
  justifyContent: 'flex-end',
49
- lineHeight: '16px',
50
+ lineHeight: '20px',
50
51
  minWidth: 0,
51
52
  };
52
53
  const presetButtonIcon = {
@@ -69,14 +70,14 @@ const metadataLabelControls = {
69
70
  fontFamily: 'sans-serif',
70
71
  fontSize: 13,
71
72
  gap: 2,
72
- lineHeight: '18px',
73
+ lineHeight: '20px',
73
74
  minWidth: 0,
74
75
  };
75
76
  const metadataLabelText = {
76
77
  color: 'inherit',
77
78
  fontFamily: 'sans-serif',
78
79
  fontSize: 13,
79
- lineHeight: '18px',
80
+ lineHeight: '20px',
80
81
  minWidth: 0,
81
82
  overflow: 'hidden',
82
83
  textOverflow: 'ellipsis',
@@ -97,7 +98,7 @@ const PresetDropdown = ({ disabled, title, values, visible }) => {
97
98
  return (jsx_runtime_1.jsx("div", { style: {
98
99
  ...presetDropdownContainer,
99
100
  visibility: visible ? 'visible' : 'hidden',
100
- }, children: jsx_runtime_1.jsx(InlineDropdown_1.InlineDropdown, { disabled: disabled, renderAction: renderAction, title: title, values: values }) }));
101
+ }, children: jsx_runtime_1.jsx(InlineDropdown_1.InlineDropdown, { disabled: disabled, renderAction: renderAction, title: title, values: values, variant: "compact" }) }));
101
102
  };
102
103
  const CompositionMetadataValue = ({ computed, disabled, field, onSave, pendingValue, value }) => {
103
104
  var _a;
@@ -287,7 +288,7 @@ const CompositionMetadata = ({ compositionId, disabled, stack }) => {
287
288
  return (jsx_runtime_1.jsxs("div", { style: compositionMetadataContainer, children: [jsx_runtime_1.jsx(common_1.InspectorDetailRow, { label: (hovered) => (jsx_runtime_1.jsxs("div", { style: metadataLabelControls, children: [
288
289
  jsx_runtime_1.jsx("span", { style: metadataLabelText, children: "Dimensions" }), disabled || widthIsComputed || heightIsComputed ? null : (jsx_runtime_1.jsx(PresetDropdown, { disabled: pendingValues.width !== undefined ||
289
290
  pendingValues.height !== undefined, title: "Choose dimension preset", values: dimensionPresetValues, visible: hovered }))] })), children: jsx_runtime_1.jsxs("div", { style: dimensionsControls, children: [
290
- jsx_runtime_1.jsx(CompositionMetadataValue, { computed: widthIsComputed, disabled: disabled, field: "width", onSave: saveMetadata, pendingValue: (_a = pendingValues.width) !== null && _a !== void 0 ? _a : null, value: video.width }), jsx_runtime_1.jsx(CompositionMetadataValue, { computed: heightIsComputed, disabled: disabled, field: "height", onSave: saveMetadata, pendingValue: (_b = pendingValues.height) !== null && _b !== void 0 ? _b : null, value: video.height })
291
+ jsx_runtime_1.jsx(CompositionMetadataValue, { computed: widthIsComputed, disabled: disabled, field: "width", onSave: saveMetadata, pendingValue: (_a = pendingValues.width) !== null && _a !== void 0 ? _a : null, value: video.width }), disabled ? '\u00A0' : null, jsx_runtime_1.jsx(CompositionMetadataValue, { computed: heightIsComputed, disabled: disabled, field: "height", onSave: saveMetadata, pendingValue: (_b = pendingValues.height) !== null && _b !== void 0 ? _b : null, value: video.height })
291
292
  ] }) }), isStill ? null : (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [jsx_runtime_1.jsx(common_1.InspectorDetailRow, { label: (hovered) => (jsx_runtime_1.jsxs("div", { style: metadataLabelControls, children: [
292
293
  jsx_runtime_1.jsx("span", { style: metadataLabelText, children: "Frame rate" }), disabled || fpsIsComputed ? null : (jsx_runtime_1.jsx(PresetDropdown, { disabled: pendingValues.fps !== undefined, title: "Choose frame rate preset", values: frameRatePresetValues, visible: hovered }))] })), children: jsx_runtime_1.jsx("div", { style: dimensionsControls, children: jsx_runtime_1.jsx(CompositionMetadataValue, { computed: fpsIsComputed, disabled: disabled, field: "fps", onSave: saveMetadata, pendingValue: (_c = pendingValues.fps) !== null && _c !== void 0 ? _c : null, value: video.fps }) }) }), jsx_runtime_1.jsx(common_1.InspectorDetailRow, { label: "Duration", children: jsx_runtime_1.jsx(CompositionMetadataValue, { computed: durationIsComputed, disabled: disabled, field: "durationInFrames", onSave: saveMetadata, pendingValue: (_d = pendingValues.durationInFrames) !== null && _d !== void 0 ? _d : null, value: video.durationInFrames }) })
293
294
  ] }))] }));
@@ -139,8 +139,8 @@ const KeyframeEasingNavigator = ({ currentSelection, includeEasings, keyframes,
139
139
  if (currentItem === null) {
140
140
  return null;
141
141
  }
142
- return (jsx_runtime_1.jsxs("div", { style: navigatorContainer, children: [jsx_runtime_1.jsx(InlineAction_1.InlineAction, { disabled: previousItem === null, onClick: selectPrevious, title: "Previous animation item", renderAction: (color) => (jsx_runtime_1.jsx(NavigationChevron, { color: previousItem === null ? disabledChevronColor : color, direction: "left" })) }), jsx_runtime_1.jsxs("div", { style: itemStrip, children: [
142
+ return (jsx_runtime_1.jsxs("div", { style: navigatorContainer, children: [jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, disabled: previousItem === null, onClick: selectPrevious, title: "Previous animation item", renderAction: (color) => (jsx_runtime_1.jsx(NavigationChevron, { color: previousItem === null ? disabledChevronColor : color, direction: "left" })) }), jsx_runtime_1.jsxs("div", { style: itemStrip, children: [
143
143
  jsx_runtime_1.jsx(TimelineNavigatorItem, { extendLineLeft: false, extendLineRight: currentItem.type === 'keyframe', item: previousItem, onSelect: selectItem, selected: previousItem === null ? false : isSelected(previousItem.selection) }), jsx_runtime_1.jsx(TimelineNavigatorItem, { extendLineLeft: (previousItem === null || previousItem === void 0 ? void 0 : previousItem.type) === 'keyframe', extendLineRight: (nextItem === null || nextItem === void 0 ? void 0 : nextItem.type) === 'keyframe', item: currentItem, onSelect: selectItem, selected: isSelected(currentItem.selection) }), jsx_runtime_1.jsx(TimelineNavigatorItem, { extendLineLeft: currentItem.type === 'keyframe', extendLineRight: false, item: nextItem, onSelect: selectItem, selected: nextItem === null ? false : isSelected(nextItem.selection) })
144
- ] }), jsx_runtime_1.jsx(InlineAction_1.InlineAction, { disabled: nextItem === null, onClick: selectNext, title: "Next animation item", renderAction: (color) => (jsx_runtime_1.jsx(NavigationChevron, { color: nextItem === null ? disabledChevronColor : color, direction: "right" })) })] }));
144
+ ] }), jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, disabled: nextItem === null, onClick: selectNext, title: "Next animation item", renderAction: (color) => (jsx_runtime_1.jsx(NavigationChevron, { color: nextItem === null ? disabledChevronColor : color, direction: "right" })) })] }));
145
145
  };
146
146
  exports.KeyframeEasingNavigator = KeyframeEasingNavigator;