@remotion/studio 4.0.512 → 4.0.514

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 (208) hide show
  1. package/dist/Studio.js +2 -1
  2. package/dist/components/AskAiModal.js +1 -1
  3. package/dist/components/AssetSelector.js +2 -0
  4. package/dist/components/AssetSelectorItem.js +1 -2
  5. package/dist/components/AudioWaveform.d.ts +3 -0
  6. package/dist/components/AudioWaveform.js +55 -67
  7. package/dist/components/Canvas.js +40 -5
  8. package/dist/components/CanvasOrLoading.js +5 -0
  9. package/dist/components/CompositionSelector.js +2 -0
  10. package/dist/components/CompositionSelectorItem.js +14 -1
  11. package/dist/components/ConfigureDefaultEditorModal.js +17 -11
  12. package/dist/components/Editor.js +16 -1
  13. package/dist/components/ElementInstallConfirmation.d.ts +1 -0
  14. package/dist/components/ElementInstallConfirmation.js +4 -2
  15. package/dist/components/FixComputedValueModal.d.ts +9 -0
  16. package/dist/components/FixComputedValueModal.js +217 -0
  17. package/dist/components/InitialCompositionLoader.js +19 -0
  18. package/dist/components/InlineDropdown.js +4 -4
  19. package/dist/components/InspectorInfoHeader.js +3 -3
  20. package/dist/components/InspectorOpenInEditor.js +26 -24
  21. package/dist/components/InspectorPanel/AlignmentControls.js +13 -2
  22. package/dist/components/InspectorPanel/CompositionInspector.js +11 -1
  23. package/dist/components/InspectorPanel/CompositionInspectorHeader.js +12 -8
  24. package/dist/components/InspectorPanel/ConnectedCompositionsSection.js +13 -2
  25. package/dist/components/InspectorPanel/EasingInspector.js +12 -3
  26. package/dist/components/InspectorPanel/KeyframeInspector.js +21 -7
  27. package/dist/components/InspectorPanel/SequenceInspectorHeader.js +1 -1
  28. package/dist/components/InspectorPanel/SequenceSelectionInspector.js +35 -6
  29. package/dist/components/InspectorPanel/common.d.ts +5 -5
  30. package/dist/components/InspectorPanel/common.js +8 -8
  31. package/dist/components/InspectorPanel/easing-inspector-selection.js +7 -2
  32. package/dist/components/InspectorPanel/inspector-section-collapse.d.ts +1 -0
  33. package/dist/components/InspectorPanel/styles.d.ts +1 -1
  34. package/dist/components/InspectorPanel/styles.js +4 -2
  35. package/dist/components/InspectorSourceLocation.d.ts +1 -1
  36. package/dist/components/InspectorSourceLocation.js +2 -2
  37. package/dist/components/LicenseKeyValidation.js +2 -2
  38. package/dist/components/Modals.js +2 -1
  39. package/dist/components/NewComposition/CodemodFooter.d.ts +1 -0
  40. package/dist/components/NewComposition/CodemodFooter.js +10 -8
  41. package/dist/components/NewComposition/DeleteComposition.js +1 -1
  42. package/dist/components/NewComposition/DeleteFolder.js +1 -1
  43. package/dist/components/NewComposition/DuplicateComposition.js +7 -2
  44. package/dist/components/NewComposition/NewComposition.js +1 -1
  45. package/dist/components/NewComposition/NewFolder.js +1 -1
  46. package/dist/components/NewComposition/RenameComposition.js +1 -1
  47. package/dist/components/NewComposition/RenameFolder.js +1 -1
  48. package/dist/components/NewComposition/duplicate-composition-api.d.ts +16 -0
  49. package/dist/components/NewComposition/duplicate-composition-api.js +16 -0
  50. package/dist/components/NoRegisterRoot.js +1 -1
  51. package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +4 -3
  52. package/dist/components/QuickSwitcher/QuickSwitcherContent.js +1 -0
  53. package/dist/components/QuickSwitcher/fuzzy-search.js +1 -1
  54. package/dist/components/RefreshCompositionOverlay.js +1 -1
  55. package/dist/components/RenderButton.js +6 -3
  56. package/dist/components/RenderModal/WebRenderModal.js +6 -2
  57. package/dist/components/RenderModal/WebRenderModalAdvanced.d.ts +2 -0
  58. package/dist/components/RenderModal/WebRenderModalAdvanced.js +9 -2
  59. package/dist/components/RenderModal/render-modals.js +5 -1
  60. package/dist/components/RenderQueue/ClientRenderQueueProcessor.js +5 -1
  61. package/dist/components/RenderQueue/actions.js +12 -2
  62. package/dist/components/RenderQueue/client-side-render-types.d.ts +1 -0
  63. package/dist/components/RenderingSettings.d.ts +2 -0
  64. package/dist/components/RenderingSettings.js +355 -0
  65. package/dist/components/SelectedOutlineElement.js +15 -13
  66. package/dist/components/SelectedOutlineOverlay.js +30 -8
  67. package/dist/components/SelectedOutlinePolygon.d.ts +1 -0
  68. package/dist/components/SelectedOutlinePolygon.js +53 -9
  69. package/dist/components/SettingsContext.d.ts +4 -1
  70. package/dist/components/SettingsContext.js +9 -2
  71. package/dist/components/SettingsModal.d.ts +1 -1
  72. package/dist/components/SettingsModal.js +10 -1
  73. package/dist/components/SettingsModalFooter.js +1 -1
  74. package/dist/components/StudioSettings.d.ts +2 -0
  75. package/dist/components/StudioSettings.js +185 -0
  76. package/dist/components/Timeline/LoopedIndicator.js +1 -1
  77. package/dist/components/Timeline/LoopedTimelineIndicators.d.ts +3 -0
  78. package/dist/components/Timeline/LoopedTimelineIndicators.js +22 -14
  79. package/dist/components/Timeline/Timeline.js +11 -9
  80. package/dist/components/Timeline/TimelineArrayField.js +1 -0
  81. package/dist/components/Timeline/TimelineAssetField.d.ts +2 -2
  82. package/dist/components/Timeline/TimelineAssetField.js +1 -1
  83. package/dist/components/Timeline/TimelineDragHandler.js +62 -76
  84. package/dist/components/Timeline/TimelineEffectItem.js +1 -1
  85. package/dist/components/Timeline/TimelineEffectPropItem.d.ts +4 -2
  86. package/dist/components/Timeline/TimelineEffectPropItem.js +25 -14
  87. package/dist/components/Timeline/TimelineExpandedRow.d.ts +1 -1
  88. package/dist/components/Timeline/TimelineExpandedRow.js +4 -4
  89. package/dist/components/Timeline/TimelineExpandedSection.js +1 -1
  90. package/dist/components/Timeline/TimelineHeightContainer.d.ts +0 -4
  91. package/dist/components/Timeline/TimelineHeightContainer.js +4 -4
  92. package/dist/components/Timeline/TimelineImageInfo.d.ts +1 -0
  93. package/dist/components/Timeline/TimelineImageInfo.js +3 -2
  94. package/dist/components/Timeline/TimelineKeyframeControls.js +31 -8
  95. package/dist/components/Timeline/TimelineKeyframedValue.js +1 -0
  96. package/dist/components/Timeline/TimelineList.d.ts +1 -5
  97. package/dist/components/Timeline/TimelineList.js +14 -9
  98. package/dist/components/Timeline/TimelinePinchZoom.js +5 -5
  99. package/dist/components/Timeline/TimelineRowChrome.d.ts +0 -2
  100. package/dist/components/Timeline/TimelineRowChrome.js +12 -5
  101. package/dist/components/Timeline/TimelineSchemaField.d.ts +7 -3
  102. package/dist/components/Timeline/TimelineSchemaField.js +71 -13
  103. package/dist/components/Timeline/TimelineScrollable.js +3 -1
  104. package/dist/components/Timeline/TimelineSelection.d.ts +5 -2
  105. package/dist/components/Timeline/TimelineSelection.js +90 -103
  106. package/dist/components/Timeline/TimelineSequence.js +59 -25
  107. package/dist/components/Timeline/TimelineSequenceItem.d.ts +1 -1
  108. package/dist/components/Timeline/TimelineSequenceItem.js +15 -9
  109. package/dist/components/Timeline/TimelineSequencePropItem.d.ts +2 -1
  110. package/dist/components/Timeline/TimelineSequencePropItem.js +14 -7
  111. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +3 -0
  112. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +128 -27
  113. package/dist/components/Timeline/TimelineSlider.js +42 -33
  114. package/dist/components/Timeline/TimelineTimeIndicators.js +90 -98
  115. package/dist/components/Timeline/TimelineTracks.d.ts +0 -2
  116. package/dist/components/Timeline/TimelineTracks.js +11 -4
  117. package/dist/components/Timeline/TimelineTransformOriginField.js +1 -1
  118. package/dist/components/Timeline/TimelineVideoInfo.d.ts +4 -4
  119. package/dist/components/Timeline/TimelineVideoInfo.js +151 -61
  120. package/dist/components/Timeline/TimelineViewport.d.ts +12 -0
  121. package/dist/components/Timeline/TimelineViewport.js +62 -0
  122. package/dist/components/Timeline/TimelineVirtualization.d.ts +22 -0
  123. package/dist/components/Timeline/TimelineVirtualization.js +144 -0
  124. package/dist/components/Timeline/TimelineZoomControls.js +16 -8
  125. package/dist/components/Timeline/call-add-keyframe.js +31 -3
  126. package/dist/components/Timeline/call-delete-keyframe.js +13 -3
  127. package/dist/components/Timeline/call-move-keyframe.d.ts +2 -1
  128. package/dist/components/Timeline/call-move-keyframe.js +81 -18
  129. package/dist/components/Timeline/call-update-keyframe-settings.js +31 -3
  130. package/dist/components/Timeline/delete-selected-keyframe.d.ts +0 -8
  131. package/dist/components/Timeline/delete-selected-keyframe.js +23 -44
  132. package/dist/components/Timeline/delete-selected-timeline-item.d.ts +0 -8
  133. package/dist/components/Timeline/delete-selected-timeline-item.js +18 -44
  134. package/dist/components/Timeline/get-easing-selection-after-keyframe-delete.js +8 -3
  135. package/dist/components/Timeline/get-sequence-context-menu-items.js +10 -8
  136. package/dist/components/Timeline/get-timeline-keyframes.d.ts +5 -2
  137. package/dist/components/Timeline/get-timeline-keyframes.js +16 -10
  138. package/dist/components/Timeline/get-timeline-sequence-visible-layout.d.ts +30 -0
  139. package/dist/components/Timeline/get-timeline-sequence-visible-layout.js +61 -0
  140. package/dist/components/Timeline/keyframe-clipboard.js +9 -2
  141. package/dist/components/Timeline/split-selected-timeline-item.js +2 -2
  142. package/dist/components/Timeline/timeline-scroll-logic.d.ts +24 -0
  143. package/dist/components/Timeline/timeline-scroll-logic.js +127 -4
  144. package/dist/components/Timeline/use-open-sequence-in-apps.js +8 -8
  145. package/dist/components/Timeline/use-timeline-height.d.ts +3 -5
  146. package/dist/components/Timeline/use-timeline-height.js +16 -18
  147. package/dist/components/Timeline/use-timeline-keyframe-drag.js +14 -4
  148. package/dist/components/UpdateCheck.d.ts +2 -10
  149. package/dist/components/UpdateCheck.js +8 -2
  150. package/dist/components/VisualControls/ClickableFileName.js +13 -6
  151. package/dist/components/VisualControls/VisualControlHandle.js +8 -0
  152. package/dist/components/composition-menu-items.d.ts +6 -1
  153. package/dist/components/composition-menu-items.js +9 -6
  154. package/dist/components/delete-jsx-node-api.d.ts +2 -0
  155. package/dist/components/delete-jsx-node-api.js +12 -0
  156. package/dist/components/element-install-api.d.ts +3 -0
  157. package/dist/components/element-install-api.js +19 -0
  158. package/dist/components/folder-menu-items.d.ts +4 -1
  159. package/dist/components/folder-menu-items.js +4 -5
  160. package/dist/components/get-open-in-menu-items.d.ts +1 -1
  161. package/dist/components/get-open-in-menu-items.js +15 -13
  162. package/dist/components/import-assets.js +20 -9
  163. package/dist/components/reorder-sequence-api.d.ts +2 -0
  164. package/dist/components/reorder-sequence-api.js +12 -0
  165. package/dist/components/sequence-props-api.js +44 -3
  166. package/dist/components/split-jsx-sequence-api.d.ts +2 -0
  167. package/dist/components/split-jsx-sequence-api.js +12 -0
  168. package/dist/components/split-video-from-audio-api.d.ts +2 -0
  169. package/dist/components/split-video-from-audio-api.js +12 -0
  170. package/dist/components/use-default-editor-info.d.ts +8 -0
  171. package/dist/components/use-default-editor-info.js +25 -9
  172. package/dist/error-overlay/remotion-overlay/ErrorDisplay.js +10 -3
  173. package/dist/error-overlay/remotion-overlay/OpenInEditor.d.ts +3 -1
  174. package/dist/error-overlay/remotion-overlay/OpenInEditor.js +6 -6
  175. package/dist/error-overlay/remotion-overlay/Overlay.js +14 -12
  176. package/dist/error-overlay/remotion-overlay/StackFrame.d.ts +2 -1
  177. package/dist/error-overlay/remotion-overlay/StackFrame.js +7 -4
  178. package/dist/esm/{chunk-s8gwjng0.js → chunk-xn2q7eem.js} +11983 -8035
  179. package/dist/esm/index.mjs +7 -5
  180. package/dist/esm/internals.mjs +11983 -8035
  181. package/dist/esm/previewEntry.mjs +13059 -9107
  182. package/dist/esm/renderEntry.mjs +2 -3
  183. package/dist/helpers/browser-studio-operations.d.ts +2 -0
  184. package/dist/helpers/browser-studio-operations.js +10 -1
  185. package/dist/helpers/get-timeline-max-zoom.d.ts +26 -0
  186. package/dist/helpers/get-timeline-max-zoom.js +45 -0
  187. package/dist/helpers/inject-css.js +2 -2
  188. package/dist/helpers/open-in-editor.d.ts +6 -4
  189. package/dist/helpers/open-in-editor.js +4 -4
  190. package/dist/helpers/render-codec-label.d.ts +1 -1
  191. package/dist/helpers/retry-payload.js +1 -0
  192. package/dist/helpers/studio-runtime-config.d.ts +1 -1
  193. package/dist/helpers/studio-runtime-config.js +2 -3
  194. package/dist/helpers/timeline-layout.d.ts +3 -1
  195. package/dist/helpers/timeline-layout.js +6 -1
  196. package/dist/helpers/url-state.js +3 -2
  197. package/dist/helpers/use-menu-structure.js +12 -11
  198. package/dist/helpers/use-runtime-values.d.ts +2 -1
  199. package/dist/helpers/use-runtime-values.js +7 -3
  200. package/dist/icons/remotion-triangle.d.ts +2 -0
  201. package/dist/icons/remotion-triangle.js +7 -0
  202. package/dist/renderEntry.js +1 -1
  203. package/dist/state/composition-list.d.ts +13 -0
  204. package/dist/state/composition-list.js +21 -0
  205. package/dist/state/modals.d.ts +7 -1
  206. package/dist/state/timeline-zoom.d.ts +1 -2
  207. package/dist/state/timeline-zoom.js +9 -5
  208. package/package.json +14 -13
@@ -10,7 +10,6 @@ import {
10
10
  import { useContext, useEffect, useRef, useState } from "react";
11
11
  import ReactDOM from "react-dom/client";
12
12
  import {
13
- AbsoluteFill,
14
13
  getInputProps,
15
14
  getRemotionEnvironment,
16
15
  continueRender as globalContinueRender,
@@ -57,7 +56,7 @@ var DelayedSpinner = () => {
57
56
  if (!show) {
58
57
  return null;
59
58
  }
60
- return /* @__PURE__ */ jsx(AbsoluteFill, {
59
+ return /* @__PURE__ */ jsx(Internals.AbsoluteFillElement, {
61
60
  style: {
62
61
  justifyContent: "center",
63
62
  alignItems: "center",
@@ -214,7 +213,7 @@ var renderContent = (Root) => {
214
213
  renderToDOM(/* @__PURE__ */ jsx("div", {
215
214
  children: /* @__PURE__ */ jsx(DelayedSpinner, {})
216
215
  }));
217
- import("./chunk-s8gwjng0.js").then(({ StudioInternals }) => {
216
+ import("./chunk-xn2q7eem.js").then(({ StudioInternals }) => {
218
217
  window.remotion_isStudio = true;
219
218
  window.remotion_isReadOnlyStudio = true;
220
219
  window.remotion_inputProps = "{}";
@@ -1,3 +1,5 @@
1
1
  import type { BrowserStudioOperations } from '@remotion/studio-shared';
2
2
  export declare const BROWSER_STUDIO_OPERATIONS_READY_EVENT = "remotion-browser-studio-operations-ready";
3
3
  export declare const getBrowserStudioOperations: () => BrowserStudioOperations | null;
4
+ export declare const getBrowserStudioKeyframeOperations: () => import("@remotion/studio-shared").BrowserStudioKeyframeOperations | null;
5
+ export declare const canUseKeyframeOperations: () => boolean;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getBrowserStudioOperations = exports.BROWSER_STUDIO_OPERATIONS_READY_EVENT = void 0;
3
+ exports.canUseKeyframeOperations = exports.getBrowserStudioKeyframeOperations = exports.getBrowserStudioOperations = exports.BROWSER_STUDIO_OPERATIONS_READY_EVENT = void 0;
4
4
  // Browser Studio may be hosted by a different studio-shared version, so this
5
5
  // handshake intentionally has no shared runtime import.
6
6
  exports.BROWSER_STUDIO_OPERATIONS_READY_EVENT = 'remotion-browser-studio-operations-ready';
@@ -12,3 +12,12 @@ const getBrowserStudioOperations = () => {
12
12
  return (_a = window.remotion_browserStudio) !== null && _a !== void 0 ? _a : null;
13
13
  };
14
14
  exports.getBrowserStudioOperations = getBrowserStudioOperations;
15
+ const getBrowserStudioKeyframeOperations = () => {
16
+ var _a;
17
+ var _b;
18
+ return (_b = (_a = (0, exports.getBrowserStudioOperations)()) === null || _a === void 0 ? void 0 : _a.keyframes) !== null && _b !== void 0 ? _b : null;
19
+ };
20
+ exports.getBrowserStudioKeyframeOperations = getBrowserStudioKeyframeOperations;
21
+ const canUseKeyframeOperations = () => !window.remotion_isReadOnlyStudio ||
22
+ (0, exports.getBrowserStudioKeyframeOperations)() !== null;
23
+ exports.canUseKeyframeOperations = canUseKeyframeOperations;
@@ -0,0 +1,26 @@
1
+ export declare const TIMELINE_MIN_ZOOM = 1;
2
+ export declare const TIMELINE_MAX_ZOOM_FLOOR = 5;
3
+ /**
4
+ * How many frames fill the timeline viewport at max zoom.
5
+ * 30 frames matches the previous 5x cap on a 150-frame composition
6
+ * (5 seconds at 30fps) and keeps a single frame wide enough to trim.
7
+ */
8
+ export declare const TIMELINE_FRAMES_VISIBLE_AT_MAX_ZOOM = 30;
9
+ export declare const getTimelineMaxZoom: (durationInFrames: number) => number;
10
+ export declare const clampTimelineZoom: ({ zoom, durationInFrames, }: {
11
+ zoom: number;
12
+ durationInFrames: number;
13
+ }) => number;
14
+ export declare const timelineZoomToSliderValue: ({ zoom, maxZoom, }: {
15
+ zoom: number;
16
+ maxZoom: number;
17
+ }) => number;
18
+ export declare const sliderValueToTimelineZoom: ({ sliderValue, maxZoom, }: {
19
+ sliderValue: number;
20
+ maxZoom: number;
21
+ }) => number;
22
+ export declare const TIMELINE_ZOOM_SLIDER_PROPS: {
23
+ readonly min: 0;
24
+ readonly max: 1000;
25
+ readonly step: 1;
26
+ };
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TIMELINE_ZOOM_SLIDER_PROPS = exports.sliderValueToTimelineZoom = exports.timelineZoomToSliderValue = exports.clampTimelineZoom = exports.getTimelineMaxZoom = exports.TIMELINE_FRAMES_VISIBLE_AT_MAX_ZOOM = exports.TIMELINE_MAX_ZOOM_FLOOR = exports.TIMELINE_MIN_ZOOM = void 0;
4
+ exports.TIMELINE_MIN_ZOOM = 1;
5
+ exports.TIMELINE_MAX_ZOOM_FLOOR = 5;
6
+ /**
7
+ * How many frames fill the timeline viewport at max zoom.
8
+ * 30 frames matches the previous 5x cap on a 150-frame composition
9
+ * (5 seconds at 30fps) and keeps a single frame wide enough to trim.
10
+ */
11
+ exports.TIMELINE_FRAMES_VISIBLE_AT_MAX_ZOOM = 30;
12
+ const TIMELINE_ZOOM_SLIDER_MAX = 1000;
13
+ const getTimelineMaxZoom = (durationInFrames) => {
14
+ const frameLevelZoom = durationInFrames / exports.TIMELINE_FRAMES_VISIBLE_AT_MAX_ZOOM;
15
+ return Math.max(exports.TIMELINE_MAX_ZOOM_FLOOR, Math.ceil(frameLevelZoom * 10) / 10);
16
+ };
17
+ exports.getTimelineMaxZoom = getTimelineMaxZoom;
18
+ const clampTimelineZoom = ({ zoom, durationInFrames, }) => {
19
+ const clamped = Math.min((0, exports.getTimelineMaxZoom)(durationInFrames), Math.max(exports.TIMELINE_MIN_ZOOM, zoom));
20
+ return Math.round(clamped * 10) / 10;
21
+ };
22
+ exports.clampTimelineZoom = clampTimelineZoom;
23
+ const timelineZoomToSliderValue = ({ zoom, maxZoom, }) => {
24
+ if (maxZoom <= exports.TIMELINE_MIN_ZOOM) {
25
+ return 0;
26
+ }
27
+ const clampedZoom = Math.min(maxZoom, Math.max(exports.TIMELINE_MIN_ZOOM, zoom));
28
+ const t = Math.log(clampedZoom / exports.TIMELINE_MIN_ZOOM) /
29
+ Math.log(maxZoom / exports.TIMELINE_MIN_ZOOM);
30
+ return Math.round(t * TIMELINE_ZOOM_SLIDER_MAX);
31
+ };
32
+ exports.timelineZoomToSliderValue = timelineZoomToSliderValue;
33
+ const sliderValueToTimelineZoom = ({ sliderValue, maxZoom, }) => {
34
+ if (maxZoom <= exports.TIMELINE_MIN_ZOOM) {
35
+ return exports.TIMELINE_MIN_ZOOM;
36
+ }
37
+ const t = sliderValue / TIMELINE_ZOOM_SLIDER_MAX;
38
+ return exports.TIMELINE_MIN_ZOOM * (maxZoom / exports.TIMELINE_MIN_ZOOM) ** t;
39
+ };
40
+ exports.sliderValueToTimelineZoom = sliderValueToTimelineZoom;
41
+ exports.TIMELINE_ZOOM_SLIDER_PROPS = {
42
+ min: 0,
43
+ max: TIMELINE_ZOOM_SLIDER_MAX,
44
+ step: 1,
45
+ };
@@ -65,14 +65,14 @@ const makeDefaultGlobalCSS = () => {
65
65
  }
66
66
 
67
67
  .__remotion-composition-selector-item:focus,
68
- .__remotion-inspector-inline-action:focus,
68
+ .__remotion-inspector-quick-action:focus,
69
69
  .__remotion-inspector-section-title:focus {
70
70
  outline: none;
71
71
  box-shadow: none;
72
72
  }
73
73
 
74
74
  .__remotion-composition-selector-item:focus-visible,
75
- .__remotion-inspector-inline-action:focus-visible,
75
+ .__remotion-inspector-quick-action:focus-visible,
76
76
  .__remotion-inspector-section-title:focus-visible {
77
77
  box-shadow: ${colors_1.FOCUS_BOX_SHADOW};
78
78
  }
@@ -1,12 +1,13 @@
1
1
  import type { TerminalId } from '@remotion/studio-shared';
2
2
  import type { CompositionComponentInfoResponse, EditorPickerId, OpenInTerminalResponse, SymbolicatedStackFrame } from '@remotion/studio-shared';
3
3
  import type { CodePosition, OriginalPosition } from '../error-overlay/react-overlay/utils/get-source-map';
4
- export declare const openInEditor: (stack: SymbolicatedStackFrame, editorId: EditorPickerId | null) => Promise<import("@remotion/studio-shared").OpenInEditorResponse>;
4
+ export declare const openInEditor: (stack: SymbolicatedStackFrame, editorId: EditorPickerId) => Promise<import("@remotion/studio-shared").OpenInEditorResponse>;
5
5
  export declare const openInCodingAgent: (codingAgentId: "claude-code" | "codex" | "copilot" | "cursor", prompt: string | null) => Promise<import("@remotion/studio-shared").OpenInCodingAgentResponse>;
6
6
  export declare const openInTerminal: (terminalId: TerminalId, directory: string) => Promise<OpenInTerminalResponse>;
7
7
  export declare const openInGitClient: (gitClientId: "github-desktop") => Promise<import("@remotion/studio-shared").OpenInGitClientResponse>;
8
- export declare const openOriginalPositionInEditor: (originalPosition: OriginalPosition, editorId: EditorPickerId | null) => Promise<void>;
9
- export declare const openOriginalPositionInEditorAtProperty: ({ originalPosition, property, }: {
8
+ export declare const openOriginalPositionInEditor: (originalPosition: OriginalPosition, editorId: EditorPickerId) => Promise<void>;
9
+ export declare const openOriginalPositionInEditorAtProperty: ({ editorId, originalPosition, property, }: {
10
+ editorId: EditorPickerId;
10
11
  originalPosition: CodePosition;
11
12
  property: string;
12
13
  }) => Promise<void>;
@@ -31,8 +32,9 @@ export declare const preloadCompositionComponentInfo: ({ compositionFile, compos
31
32
  compositionFile: string;
32
33
  compositionId: string;
33
34
  }) => void;
34
- export declare const openCompositionComponentInEditor: ({ compositionFile, compositionId, }: {
35
+ export declare const openCompositionComponentInEditor: ({ compositionFile, compositionId, editorId, }: {
35
36
  compositionFile: string;
36
37
  compositionId: string;
38
+ editorId: EditorPickerId;
37
39
  }) => Promise<void>;
38
40
  export {};
@@ -43,7 +43,7 @@ const openOriginalPositionInEditor = async (originalPosition, editorId) => {
43
43
  }
44
44
  };
45
45
  exports.openOriginalPositionInEditor = openOriginalPositionInEditor;
46
- const openOriginalPositionInEditorAtProperty = async ({ originalPosition, property, }) => {
46
+ const openOriginalPositionInEditorAtProperty = async ({ editorId, originalPosition, property, }) => {
47
47
  const request = {
48
48
  fileName: originalPosition.source,
49
49
  lineNumber: originalPosition.line,
@@ -58,7 +58,7 @@ const openOriginalPositionInEditorAtProperty = async ({ originalPosition, proper
58
58
  source: originalPosition.source,
59
59
  line: position.lineNumber,
60
60
  column: position.columnNumber,
61
- }, null);
61
+ }, editorId);
62
62
  };
63
63
  exports.openOriginalPositionInEditorAtProperty = openOriginalPositionInEditorAtProperty;
64
64
  const componentResolutionCache = new Map();
@@ -153,11 +153,11 @@ const preloadCompositionComponentInfo = ({ compositionFile, compositionId, }) =>
153
153
  }).catch(() => undefined);
154
154
  };
155
155
  exports.preloadCompositionComponentInfo = preloadCompositionComponentInfo;
156
- const openCompositionComponentInEditor = async ({ compositionFile, compositionId, }) => {
156
+ const openCompositionComponentInEditor = async ({ compositionFile, compositionId, editorId, }) => {
157
157
  const info = await (0, exports.loadCompositionComponentInfo)({
158
158
  compositionFile,
159
159
  compositionId,
160
160
  });
161
- await (0, exports.openOriginalPositionInEditor)(info.location, null);
161
+ await (0, exports.openOriginalPositionInEditor)(info.location, editorId);
162
162
  };
163
163
  exports.openCompositionComponentInEditor = openCompositionComponentInEditor;
@@ -1,2 +1,2 @@
1
- export declare const renderHumanReadableAudioCodec: (codec: "aac" | "ac3" | "alaw" | "eac3" | "flac" | "mp3" | "opus" | "pcm-f32" | "pcm-f32be" | "pcm-f64" | "pcm-f64be" | "pcm-s16" | "pcm-s16be" | "pcm-s24" | "pcm-s24be" | "pcm-s32" | "pcm-s32be" | "pcm-s8" | "pcm-u8" | "ulaw" | "vorbis" | null) => string;
1
+ export declare const renderHumanReadableAudioCodec: (codec: "aac" | "ac3" | "alaw" | "dts" | "eac3" | "flac" | "mp3" | "opus" | "pcm-f32" | "pcm-f32be" | "pcm-f64" | "pcm-f64be" | "pcm-s16" | "pcm-s16be" | "pcm-s24" | "pcm-s24be" | "pcm-s32" | "pcm-s32be" | "pcm-s8" | "pcm-u8" | "ulaw" | "vorbis" | null) => string;
2
2
  export declare const renderHumanReadableVideoCodec: (codec: "av1" | "avc" | "hevc" | "prores" | "vp8" | "vp9" | null) => string;
@@ -201,6 +201,7 @@ const makeClientRetryPayload = (job) => {
201
201
  initialKeyframeIntervalInSeconds: job.type === 'client-video' ? job.keyframeIntervalInSeconds : null,
202
202
  initialMuted: job.type === 'client-video' ? job.muted : null,
203
203
  initialTransparent: job.type === 'client-video' ? job.transparent : null,
204
+ initialAllowHtmlInCanvas: job.allowHtmlInCanvas,
204
205
  initialPageResponsiveness: job.type === 'client-video' ? job.pageResponsiveness : 'disabled',
205
206
  };
206
207
  };
@@ -2,5 +2,5 @@ export declare const DEFAULT_BUFFER_STATE_DELAY_IN_MILLISECONDS = 300;
2
2
  export declare const getStudioAskAIEnabled: () => boolean;
3
3
  export declare const getStudioInteractivityEnabled: () => boolean;
4
4
  export declare const getStudioKeyboardShortcutsEnabled: () => boolean;
5
- export declare const getStudioMaxTimelineTracks: () => number;
5
+ export declare const getStudioMaxTimelineTracks: () => number | null;
6
6
  export declare const getStudioBufferStateDelayInMilliseconds: () => number;
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getStudioBufferStateDelayInMilliseconds = exports.getStudioMaxTimelineTracks = exports.getStudioKeyboardShortcutsEnabled = exports.getStudioInteractivityEnabled = exports.getStudioAskAIEnabled = exports.DEFAULT_BUFFER_STATE_DELAY_IN_MILLISECONDS = void 0;
4
- const studio_shared_1 = require("@remotion/studio-shared");
5
4
  exports.DEFAULT_BUFFER_STATE_DELAY_IN_MILLISECONDS = 300;
6
5
  const defaultStudioRuntimeConfig = {
7
6
  askAIEnabled: false,
@@ -12,6 +11,7 @@ const defaultStudioRuntimeConfig = {
12
11
  keyboardShortcutsEnabled: true,
13
12
  maxTimelineTracks: null,
14
13
  publicLicenseKey: null,
14
+ configFileStudioSettings: null,
15
15
  };
16
16
  const getStudioRuntimeConfig = () => {
17
17
  var _a;
@@ -33,8 +33,7 @@ const getStudioKeyboardShortcutsEnabled = () => {
33
33
  };
34
34
  exports.getStudioKeyboardShortcutsEnabled = getStudioKeyboardShortcutsEnabled;
35
35
  const getStudioMaxTimelineTracks = () => {
36
- var _a;
37
- return (_a = getStudioRuntimeConfig().maxTimelineTracks) !== null && _a !== void 0 ? _a : studio_shared_1.DEFAULT_TIMELINE_TRACKS;
36
+ return getStudioRuntimeConfig().maxTimelineTracks;
38
37
  };
39
38
  exports.getStudioMaxTimelineTracks = getStudioMaxTimelineTracks;
40
39
  const getStudioBufferStateDelayInMilliseconds = () => {
@@ -1,5 +1,5 @@
1
1
  import { type AnySchemaFieldInfo, type DragOverrides, type EffectSchemaFieldInfo, type InteractivitySchemaFieldInfo, type SchemaFieldGroup, type SchemaFieldGroupInfo, type PropStatuses, type SchemaFieldInfo, type SequenceControls, type SaveSequencePropSourceEdit } from '@remotion/studio-shared';
2
- import type { GetDragOverrides, GetEffectDragOverrides, InteractivitySchema as InteractivitySchemaShape, TSequence } from 'remotion';
2
+ import type { GetDragOverrides, GetEffectDragOverrides, InteractivitySchema as InteractivitySchemaShape, RuntimeValueStore, TSequence } from 'remotion';
3
3
  import type { GetIsExpanded } from '../components/ExpandedTracksProvider';
4
4
  import type { SequenceNodePathInfo } from './get-timeline-sequence-sort-key';
5
5
  export { SCHEMA_FIELD_GROUPS, getEffectFieldsToShow, getFieldsToShow, getSchemaFieldGroup, SCHEMA_FIELD_ROW_HEIGHT, } from '@remotion/studio-shared';
@@ -30,6 +30,8 @@ export type TimelineTreeNode = {
30
30
  readonly nodePathInfo: SequenceNodePathInfo;
31
31
  readonly label: string;
32
32
  readonly field: AnySchemaFieldInfo | null;
33
+ readonly runtimeValue: unknown;
34
+ readonly runtimeValueStore: RuntimeValueStore | null;
33
35
  };
34
36
  export declare const buildTimelineTree: ({ sequence, nodePathInfo, getDragOverrides, getEffectDragOverrides, propStatuses, includeTextContent, includeSourceControls, runtimeValues, }: {
35
37
  sequence: TSequence;
@@ -44,6 +44,8 @@ const buildTimelineTree = ({ sequence, nodePathInfo, getDragOverrides, getEffect
44
44
  },
45
45
  label: (_a = f.description) !== null && _a !== void 0 ? _a : f.key,
46
46
  field: f,
47
+ runtimeValue: runtimeValues === null || runtimeValues === void 0 ? void 0 : runtimeValues[f.key],
48
+ runtimeValueStore: null,
47
49
  });
48
50
  }
49
51
  }
@@ -85,6 +87,7 @@ const buildTimelineTree = ({ sequence, nodePathInfo, getDragOverrides, getEffect
85
87
  },
86
88
  children: effectFields.map((f) => {
87
89
  var _a;
90
+ var _b, _c;
88
91
  return ({
89
92
  kind: 'field',
90
93
  nodePathInfo: {
@@ -99,8 +102,10 @@ const buildTimelineTree = ({ sequence, nodePathInfo, getDragOverrides, getEffect
99
102
  numberOfSequencesWithThisNodePath: 0,
100
103
  supportsEffects,
101
104
  },
102
- label: (_a = f.description) !== null && _a !== void 0 ? _a : f.key,
105
+ label: (_b = f.description) !== null && _b !== void 0 ? _b : f.key,
103
106
  field: f,
107
+ runtimeValue: null,
108
+ runtimeValueStore: (_c = (_a = sequence.effectRuntimeValues) === null || _a === void 0 ? void 0 : _a[i]) !== null && _c !== void 0 ? _c : null,
104
109
  });
105
110
  }),
106
111
  };
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getRoute = exports.reloadUrl = exports.clearUrl = exports.replaceUrl = exports.pushUrl = exports.getUrlForRoute = void 0;
4
4
  const getUrlHandlingType = () => {
5
- if (window.remotion_isReadOnlyStudio) {
5
+ if (window.remotion_isReadOnlyStudio || window.remotion_browserStudio) {
6
6
  return 'query-string';
7
7
  }
8
8
  return 'spa';
@@ -32,7 +32,8 @@ const reloadUrl = () => {
32
32
  exports.reloadUrl = reloadUrl;
33
33
  const getRoute = () => {
34
34
  if (getUrlHandlingType() === 'query-string') {
35
- return window.location.search.substring(1);
35
+ const route = window.location.search.substring(1);
36
+ return route.startsWith('/') ? route : '';
36
37
  }
37
38
  return window.location.pathname;
38
39
  };
@@ -14,6 +14,7 @@ const actions_1 = require("../components/RenderQueue/actions");
14
14
  const SizeSelector_1 = require("../components/SizeSelector");
15
15
  const use_resolved_stack_1 = require("../components/Timeline/use-resolved-stack");
16
16
  const TimelineInOutToggle_1 = require("../components/TimelineInOutToggle");
17
+ const use_default_editor_info_1 = require("../components/use-default-editor-info");
17
18
  const ShortcutHint_1 = require("../error-overlay/remotion-overlay/ShortcutHint");
18
19
  const Checkmark_1 = require("../icons/Checkmark");
19
20
  const canvas_ref_1 = require("../state/canvas-ref");
@@ -43,7 +44,7 @@ const inheritColor = {
43
44
  color: 'inherit',
44
45
  };
45
46
  const ICON_SIZE = 14;
46
- const getFileMenu = ({ readOnlyStudio, closeMenu, editorName, previewServerState, setSelectedModal, }) => {
47
+ const getFileMenu = ({ readOnlyStudio, closeMenu, editorName, editorId, previewServerState, setSelectedModal, }) => {
47
48
  const fileManagerName = (0, get_file_manager_name_1.getFileManagerName)(window.remotion_fileSystemPlatform);
48
49
  const browserStudioOperations = (0, browser_studio_operations_1.getBrowserStudioOperations)();
49
50
  const downloadProject = browserStudioOperations === null || browserStudioOperations === void 0 ? void 0 : browserStudioOperations.downloadProject;
@@ -145,7 +146,7 @@ const getFileMenu = ({ readOnlyStudio, closeMenu, editorName, previewServerState
145
146
  id: 'open-project-divider',
146
147
  }
147
148
  : null,
148
- editorName && !readOnlyStudio
149
+ editorName && editorId && !readOnlyStudio
149
150
  ? {
150
151
  id: 'open-in-editor',
151
152
  value: 'open-in-editor',
@@ -157,7 +158,7 @@ const getFileMenu = ({ readOnlyStudio, closeMenu, editorName, previewServerState
157
158
  originalColumnNumber: 1,
158
159
  originalFunctionName: null,
159
160
  originalScriptCode: null,
160
- }, null)
161
+ }, editorId)
161
162
  .then(({ success }) => {
162
163
  if (!success) {
163
164
  (0, NotificationCenter_1.showNotification)(`Could not open ${editorName}`, 2000);
@@ -264,12 +265,9 @@ const useMenuStructure = (closeMenu, readOnlyStudio) => {
264
265
  const { size, setSize } = (0, react_1.useContext)(remotion_1.Internals.PreviewSizeContext);
265
266
  const { canvasContent, compositions } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
266
267
  const { type } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx).previewServerState;
267
- const editorName = window.remotion_editorName;
268
+ const { defaultEditorId, defaultEditorName } = (0, use_default_editor_info_1.useEditorOpening)(type === 'connected');
268
269
  const keyboardShortcutsDisabled = (0, use_keybinding_1.areKeyboardShortcutsDisabled)();
269
270
  const studioAskAIEnabled = (0, studio_runtime_config_1.getStudioAskAIEnabled)();
270
- const canConfigureDefaultEditor = !readOnlyStudio &&
271
- type === 'connected' &&
272
- (0, browser_studio_operations_1.getBrowserStudioOperations)() === null;
273
271
  const { setSidebarCollapsedState, sidebarCollapsedStateLeft, sidebarCollapsedStateRight, } = (0, react_1.useContext)(sidebar_1.SidebarContext);
274
272
  const sizes = (0, react_1.useMemo)(() => (0, SizeSelector_1.getUniqueSizes)(size), [size]);
275
273
  const isFullscreenSupported = (0, check_fullscreen_support_1.checkFullscreenSupport)();
@@ -340,7 +338,7 @@ const useMenuStructure = (closeMenu, readOnlyStudio) => {
340
338
  closeMenu();
341
339
  setSelectedModal({
342
340
  type: 'settings',
343
- initialTab: canConfigureDefaultEditor ? 'apps' : 'license',
341
+ initialTab: 'rendering',
344
342
  initialPublicLicenseKey: (_b = (_a = window.remotion_renderDefaults) === null || _a === void 0 ? void 0 : _a.publicLicenseKey) !== null && _b !== void 0 ? _b : null,
345
343
  });
346
344
  },
@@ -389,7 +387,8 @@ const useMenuStructure = (closeMenu, readOnlyStudio) => {
389
387
  getFileMenu({
390
388
  readOnlyStudio,
391
389
  closeMenu,
392
- editorName,
390
+ editorId: defaultEditorId,
391
+ editorName: defaultEditorName,
393
392
  previewServerState: type,
394
393
  setSelectedModal,
395
394
  }),
@@ -751,6 +750,8 @@ const useMenuStructure = (closeMenu, readOnlyStudio) => {
751
750
  closeMenu,
752
751
  composition: currentComposition,
753
752
  connectionStatus: type,
753
+ editorId: defaultEditorId,
754
+ editorName: defaultEditorName,
754
755
  includeCompositionManagementItems: true,
755
756
  resolvedLocation: resolvedCompositionLocation,
756
757
  setSelectedModal,
@@ -995,7 +996,6 @@ const useMenuStructure = (closeMenu, readOnlyStudio) => {
995
996
  }
996
997
  return struct;
997
998
  }, [
998
- canConfigureDefaultEditor,
999
999
  readOnlyStudio,
1000
1000
  closeMenu,
1001
1001
  type,
@@ -1013,7 +1013,8 @@ const useMenuStructure = (closeMenu, readOnlyStudio) => {
1013
1013
  isFullscreenSupported,
1014
1014
  remotion_packageManager,
1015
1015
  mobileLayout,
1016
- editorName,
1016
+ defaultEditorId,
1017
+ defaultEditorName,
1017
1018
  keyboardShortcutsDisabled,
1018
1019
  studioAskAIEnabled,
1019
1020
  size.size,
@@ -1,6 +1,7 @@
1
- import type { SequenceRegistrationControls } from 'remotion';
1
+ import type { RuntimeValueStore, SequenceRegistrationControls } from 'remotion';
2
2
  export declare const useRuntimeValues: (controls: SequenceRegistrationControls | null) => Readonly<Record<string, unknown>>;
3
3
  export declare const useRuntimeValue: (controls: SequenceRegistrationControls | null, key: string) => unknown;
4
+ export declare const useRuntimeStoreValue: (storeOrNull: RuntimeValueStore | null, key: string) => unknown;
4
5
  export declare const useRuntimeValueSelector: <T>({ controls, selector, isEqual, }: {
5
6
  controls: SequenceRegistrationControls | null;
6
7
  selector: (values: Readonly<Record<string, unknown>>) => T;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useRuntimeValueSnapshots = exports.useRuntimeValueSelector = exports.useRuntimeValue = exports.useRuntimeValues = void 0;
3
+ exports.useRuntimeValueSnapshots = exports.useRuntimeValueSelector = exports.useRuntimeStoreValue = exports.useRuntimeValue = exports.useRuntimeValues = void 0;
4
4
  const react_1 = require("react");
5
5
  const EMPTY_RUNTIME_VALUES = {};
6
6
  const EMPTY_RUNTIME_VALUE_STORE = {
@@ -15,11 +15,15 @@ const useRuntimeValues = (controls) => {
15
15
  exports.useRuntimeValues = useRuntimeValues;
16
16
  const useRuntimeValue = (controls, key) => {
17
17
  var _a;
18
- const store = (_a = controls === null || controls === void 0 ? void 0 : controls.runtimeValues) !== null && _a !== void 0 ? _a : EMPTY_RUNTIME_VALUE_STORE;
18
+ return (0, exports.useRuntimeStoreValue)((_a = controls === null || controls === void 0 ? void 0 : controls.runtimeValues) !== null && _a !== void 0 ? _a : null, key);
19
+ };
20
+ exports.useRuntimeValue = useRuntimeValue;
21
+ const useRuntimeStoreValue = (storeOrNull, key) => {
22
+ const store = storeOrNull !== null && storeOrNull !== void 0 ? storeOrNull : EMPTY_RUNTIME_VALUE_STORE;
19
23
  const getSnapshot = (0, react_1.useCallback)(() => store.getSnapshot()[key], [key, store]);
20
24
  return (0, react_1.useSyncExternalStore)(store.subscribe, getSnapshot, getSnapshot);
21
25
  };
22
- exports.useRuntimeValue = useRuntimeValue;
26
+ exports.useRuntimeStoreValue = useRuntimeStoreValue;
23
27
  const useRuntimeValueSelector = ({ controls, selector, isEqual = Object.is, }) => {
24
28
  var _a;
25
29
  const store = (_a = controls === null || controls === void 0 ? void 0 : controls.runtimeValues) !== null && _a !== void 0 ? _a : EMPTY_RUNTIME_VALUE_STORE;
@@ -0,0 +1,2 @@
1
+ import type { SVGProps } from 'react';
2
+ export declare const RemotionTriangleIcon: ({ color, ...props }: SVGProps<SVGSVGElement>) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RemotionTriangleIcon = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const colors_1 = require("../helpers/colors");
6
+ const RemotionTriangleIcon = ({ color, ...props }) => (jsx_runtime_1.jsx("svg", { viewBox: "-14 -14 438 453", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: jsx_runtime_1.jsx("path", { d: "M92.3905 0.603638C83.5124 1.08554 76.358 2.49417 69.1481 5.2373C65.5523 6.59033 59.6583 9.53735 56.4148 11.5762C42.8474 20.0836 32.5051 32.8724 27.1115 47.7558C26.0365 50.7028 23.1266 60.0998 21.2546 66.5684C8.78078 109.81 1.70055 157.092 0.180713 207.135C-0.0602375 215.105 -0.0602375 234.084 0.180713 241.925C1.20012 275.102 4.36954 305.053 10.1153 335.599C12.4506 347.961 16.1946 364.568 18.3632 372.112C22.793 387.44 31.8379 400.488 44.7009 410.052C53.3195 416.465 63.1058 420.765 73.9485 422.878C79.1753 423.897 86.0702 424.361 91.1487 424.027C98.1733 423.564 112.111 421.692 123.436 419.672C174.48 410.571 221.632 394.279 264.392 370.963C291.471 356.19 314.621 340.195 336.955 320.789C359.215 301.476 378.194 280.699 394.894 257.382C398.768 251.989 400.714 248.838 402.66 244.872C407.665 234.64 410.018 224.465 410 213.085C410 202.483 407.998 193.067 403.68 183.429C401.604 178.777 399.62 175.441 395.172 169.102C378.788 145.767 360.605 125.434 338.438 105.676C304.074 75.0573 263.261 49.9428 217.685 31.3526C207.806 27.3306 198.075 23.7905 186.361 19.9538C161.562 11.8542 130.868 4.82956 104.901 1.32651C100.824 0.770477 95.2819 0.455353 92.3905 0.603638Z", stroke: color !== null && color !== void 0 ? color : colors_1.CURRENT_COLOR_LOWERCASE, strokeLinejoin: "round", strokeWidth: 24 }) }));
7
+ exports.RemotionTriangleIcon = RemotionTriangleIcon;
@@ -89,7 +89,7 @@ const DelayedSpinner = () => {
89
89
  if (!show) {
90
90
  return null;
91
91
  }
92
- return (jsx_runtime_1.jsx(remotion_1.AbsoluteFill, { style: {
92
+ return (jsx_runtime_1.jsx(remotion_1.Internals.AbsoluteFillElement, { style: {
93
93
  justifyContent: 'center',
94
94
  alignItems: 'center',
95
95
  fontSize: 13,
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ type CompositionListState = 'loading' | 'ready';
3
+ export declare const compositionListRenderedRef: {
4
+ current: boolean;
5
+ };
6
+ export declare const CompositionListContext: React.Context<{
7
+ compositionListState: CompositionListState;
8
+ setCompositionListState: React.Dispatch<React.SetStateAction<CompositionListState>>;
9
+ }>;
10
+ export declare const CompositionListProvider: React.FC<{
11
+ readonly children: React.ReactNode;
12
+ }>;
13
+ export {};
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CompositionListProvider = exports.CompositionListContext = exports.compositionListRenderedRef = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ exports.compositionListRenderedRef = { current: false };
7
+ exports.CompositionListContext = (0, react_1.createContext)({
8
+ compositionListState: 'loading',
9
+ setCompositionListState: () => {
10
+ throw new Error('CompositionListContext provider is missing');
11
+ },
12
+ });
13
+ const CompositionListProvider = ({ children }) => {
14
+ const [compositionListState, setCompositionListState] = (0, react_1.useState)(() => {
15
+ exports.compositionListRenderedRef.current = false;
16
+ return 'loading';
17
+ });
18
+ const value = (0, react_1.useMemo)(() => ({ compositionListState, setCompositionListState }), [compositionListState]);
19
+ return (jsx_runtime_1.jsx(exports.CompositionListContext.Provider, { value: value, children: children }));
20
+ };
21
+ exports.CompositionListProvider = CompositionListProvider;
@@ -31,6 +31,7 @@ export type WebRenderModalState = {
31
31
  initialTransparent: boolean | null;
32
32
  initialMuted: boolean | null;
33
33
  initialMediaCacheSizeInBytes: number | null;
34
+ initialAllowHtmlInCanvas: boolean;
34
35
  initialPageResponsiveness: WebRendererPageResponsiveness;
35
36
  };
36
37
  export type RenderModalState = {
@@ -153,7 +154,7 @@ export type ModalState = {
153
154
  type: 'input-props-override';
154
155
  } | {
155
156
  type: 'settings';
156
- initialTab: 'apps' | 'license';
157
+ initialTab: 'apps' | 'rendering' | 'studio' | 'license';
157
158
  initialPublicLicenseKey: string | null;
158
159
  } | RenderModalState | WebRenderModalState | {
159
160
  type: 'render-progress';
@@ -162,6 +163,11 @@ export type ModalState = {
162
163
  type: 'update';
163
164
  info: UpdateInfo;
164
165
  knownBugs: Bug[];
166
+ } | {
167
+ type: 'fix-computed-value';
168
+ prop: string;
169
+ context: string;
170
+ remotionInteractivitySkillAvailable: boolean;
165
171
  } | {
166
172
  type: 'install-packages';
167
173
  packageManager: PackageManager;
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
- export declare const TIMELINE_MIN_ZOOM = 1;
3
- export declare const TIMELINE_MAX_ZOOM = 5;
2
+ export { getTimelineMaxZoom, TIMELINE_MIN_ZOOM, } from '../helpers/get-timeline-max-zoom';
4
3
  export type TimelineSetZoomOptions = {
5
4
  anchorFrame: number | null;
6
5
  anchorContentX: number | null;
@@ -1,14 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TimelineZoomContext = exports.TimelineZoomCtx = exports.TIMELINE_MAX_ZOOM = exports.TIMELINE_MIN_ZOOM = void 0;
3
+ exports.TimelineZoomContext = exports.TimelineZoomCtx = exports.TIMELINE_MIN_ZOOM = exports.getTimelineMaxZoom = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const react_dom_1 = require("react-dom");
7
7
  const imperative_state_1 = require("../components/Timeline/imperative-state");
8
8
  const timeline_scroll_logic_1 = require("../components/Timeline/timeline-scroll-logic");
9
9
  const ZoomPersistor_1 = require("../components/ZoomPersistor");
10
- exports.TIMELINE_MIN_ZOOM = 1;
11
- exports.TIMELINE_MAX_ZOOM = 5;
10
+ const get_timeline_max_zoom_1 = require("../helpers/get-timeline-max-zoom");
11
+ const get_timeline_max_zoom_2 = require("../helpers/get-timeline-max-zoom");
12
+ Object.defineProperty(exports, "getTimelineMaxZoom", { enumerable: true, get: function () { return get_timeline_max_zoom_2.getTimelineMaxZoom; } });
13
+ Object.defineProperty(exports, "TIMELINE_MIN_ZOOM", { enumerable: true, get: function () { return get_timeline_max_zoom_2.TIMELINE_MIN_ZOOM; } });
12
14
  exports.TimelineZoomCtx = (0, react_1.createContext)({
13
15
  zoom: {},
14
16
  setZoom: () => {
@@ -29,8 +31,10 @@ const TimelineZoomContext = ({ children }) => {
29
31
  (0, react_dom_1.flushSync)(() => {
30
32
  setZoomState((prevZoomMap) => {
31
33
  var _a;
32
- const newZoomWithFloatingPointErrors = Math.min(exports.TIMELINE_MAX_ZOOM, Math.max(exports.TIMELINE_MIN_ZOOM, callback((_a = prevZoomMap[compositionId]) !== null && _a !== void 0 ? _a : exports.TIMELINE_MIN_ZOOM)));
33
- const newZoom = Math.round(newZoomWithFloatingPointErrors * 10) / 10;
34
+ const newZoom = (0, get_timeline_max_zoom_1.clampTimelineZoom)({
35
+ zoom: callback((_a = prevZoomMap[compositionId]) !== null && _a !== void 0 ? _a : get_timeline_max_zoom_1.TIMELINE_MIN_ZOOM),
36
+ durationInFrames: (0, imperative_state_1.getCurrentDuration)(),
37
+ });
34
38
  return { ...prevZoomMap, [compositionId]: newZoom };
35
39
  });
36
40
  });