@remotion/studio 4.0.524 → 4.0.526
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/focus-default-props-path.js +7 -1
- package/dist/api/restart-studio.d.ts +1 -1
- package/dist/api/restart-studio.js +1 -1
- package/dist/components/ActionTooltip.d.ts +2 -0
- package/dist/components/ActionTooltip.js +14 -4
- package/dist/components/AgentPrompt.d.ts +6 -0
- package/dist/components/AgentPrompt.js +107 -0
- package/dist/components/AppLaunchButton.js +2 -0
- package/dist/components/AssetFileIcon.js +2 -0
- package/dist/components/AssetSelectorItem.d.ts +1 -23
- package/dist/components/AssetSelectorItem.js +10 -200
- package/dist/components/AssetSelectorModal.d.ts +6 -0
- package/dist/components/AssetSelectorModal.js +174 -0
- package/dist/components/Canvas.js +21 -4
- package/dist/components/CaptionInspector.js +9 -3
- package/dist/components/CheckboardToggle.js +2 -1
- package/dist/{error-overlay/remotion-overlay → components}/CodeFrame.d.ts +2 -0
- package/dist/components/CodeFrame.js +77 -0
- package/dist/components/ColorPicker/AlphaSlider.js +1 -1
- package/dist/components/ColorPicker/HueSlider.js +1 -1
- package/dist/components/ColorPicker/SaturationValueArea.js +1 -1
- package/dist/components/CompositionSelector.js +1 -0
- package/dist/components/CompositionSelectorItem.js +7 -17
- package/dist/components/CurrentAsset.js +5 -4
- package/dist/components/EditorGuides/Guide.js +1 -1
- package/dist/components/ElementInstallConfirmation.js +100 -61
- package/dist/components/FilePreview.js +4 -0
- package/dist/components/FixComputedValueModal.js +64 -96
- package/dist/components/FullscreenToggle.js +1 -1
- package/dist/components/GenerateWithAgentModal.d.ts +9 -0
- package/dist/components/GenerateWithAgentModal.js +39 -0
- package/dist/components/GlobalKeybindings.js +14 -0
- package/dist/components/InlineEditableTitle.js +2 -0
- package/dist/components/InspectorLocationCopy.js +1 -1
- package/dist/components/InspectorOpenInEditor.d.ts +1 -0
- package/dist/components/InspectorOpenInEditor.js +25 -18
- package/dist/components/InspectorPanel/CollapsibleInspectorSection.d.ts +7 -0
- package/dist/components/InspectorPanel/CollapsibleInspectorSection.js +14 -0
- package/dist/components/InspectorPanel/CollapsibleInspectorSectionHeader.d.ts +1 -1
- package/dist/components/InspectorPanel/CollapsibleInspectorSectionHeader.js +19 -8
- package/dist/components/InspectorPanel/CompositionInspector.js +30 -13
- package/dist/components/InspectorPanel/CompositionInspectorHeader.js +6 -7
- package/dist/components/InspectorPanel/CompositionMetadata.js +4 -0
- package/dist/components/InspectorPanel/ConnectedCompositionsSection.js +6 -12
- package/dist/components/InspectorPanel/ElementLibraryButton.js +2 -0
- package/dist/components/InspectorPanel/GuideInspector.js +2 -3
- package/dist/components/InspectorPanel/KeyframeSettings.js +5 -6
- package/dist/components/InspectorPanel/MultiSequenceInspector.js +2 -1
- package/dist/components/InspectorPanel/SequenceInspectorHeader.js +4 -12
- package/dist/components/InspectorPanel/SequenceSelectionInspector.js +4 -3
- package/dist/components/InspectorPanel/common.d.ts +4 -0
- package/dist/components/InspectorPanel/common.js +14 -2
- package/dist/components/InspectorPanel/styles.d.ts +0 -3
- package/dist/components/InspectorPanel/styles.js +1 -27
- package/dist/components/InspectorPanel/use-composition-actions.d.ts +2 -0
- package/dist/components/InspectorPanel/use-composition-actions.js +15 -0
- package/dist/components/InspectorPanel/use-inspector-section-expanded.d.ts +1 -0
- package/dist/components/InspectorPanel/use-inspector-section-expanded.js +21 -0
- package/dist/components/InspectorSequenceSection.js +61 -43
- package/dist/components/InspectorSourceLocation.js +1 -0
- package/dist/components/KeyboardShortcutsSettings.js +12 -4
- package/dist/components/LoopToggle.js +2 -1
- package/dist/components/LutPreview.d.ts +4 -0
- package/dist/components/LutPreview.js +192 -0
- package/dist/components/Menu/MenuItem.js +1 -2
- package/dist/components/MenuBuildIndicator.js +1 -1
- package/dist/components/MenuCompositionName.js +4 -9
- package/dist/components/Modals.js +4 -6
- package/dist/components/ModelsSettings.js +15 -4
- package/dist/components/MuteToggle.js +2 -1
- package/dist/components/NewComposition/CodemodFooter.js +1 -0
- package/dist/components/NewComposition/DeleteComposition.js +42 -6
- package/dist/components/NewComposition/DeleteFolder.js +1 -0
- package/dist/components/NewComposition/DuplicateComposition.js +5 -0
- package/dist/components/NewComposition/InputDragger.js +2 -2
- package/dist/components/NewComposition/NewFolder.js +29 -2
- package/dist/components/NewComposition/RenameFolder.js +1 -0
- package/dist/components/NewComposition/duplicate-composition-api.d.ts +3 -2
- package/dist/components/NewComposition/duplicate-composition-api.js +9 -2
- package/dist/components/OutlineToggle.js +2 -1
- package/dist/components/PlayPause.js +1 -1
- package/dist/components/Preview.js +0 -3
- package/dist/components/PreviewToolbar.js +3 -6
- package/dist/components/PreviewToolbarOverflowButton.js +2 -1
- package/dist/components/QuickSwitcher/QuickSwitcherContent.js +1 -1
- package/dist/components/QuickSwitcher/QuickSwitcherResult.js +4 -9
- package/dist/components/RenderButton.js +40 -4
- package/dist/components/RenderModal/SchemaEditor/scroll-to-default-props-path.d.ts +1 -0
- package/dist/components/RenderModal/SchemaEditor/scroll-to-default-props-path.js +2 -1
- package/dist/components/RenderModal/WebRenderModal.js +10 -2
- package/dist/components/RenderModal/WebRenderModalBasic.js +1 -1
- package/dist/components/RenderModal/render-modals.js +3 -0
- package/dist/components/RenderQueue/RenderQueueCopyToClipboard.js +1 -1
- package/dist/components/RenderQueue/RenderQueueItemCancelButton.js +1 -1
- package/dist/components/RenderQueue/actions.d.ts +2 -1
- package/dist/components/RenderQueue/actions.js +2 -1
- package/dist/components/RendersTab.js +2 -0
- package/dist/components/RulersAndGuidesToggle.js +2 -1
- package/dist/components/SegmentedButton.d.ts +1 -0
- package/dist/components/SegmentedButton.js +9 -3
- package/dist/components/SelectedOutlineElement.js +22 -6
- package/dist/components/SelectedOutlinePolygon.js +4 -2
- package/dist/components/SettingsButton.js +11 -2
- package/dist/components/SettingsContext.d.ts +8 -0
- package/dist/components/SettingsContext.js +57 -2
- package/dist/components/SettingsModal.d.ts +1 -2
- package/dist/components/SettingsModal.js +27 -6
- package/dist/components/SettingsModalFooter.js +17 -3
- package/dist/components/SidebarCollapserControls.js +1 -1
- package/dist/components/SkillsSettings.d.ts +5 -0
- package/dist/components/SkillsSettings.js +49 -15
- package/dist/components/SnappingToggle.js +2 -1
- package/dist/components/Splitter/SplitterHandle.js +1 -2
- package/dist/components/Tabs/vertical.d.ts +1 -1
- package/dist/components/Tabs/vertical.js +16 -2
- package/dist/components/Timeline/EasingEditorModal.js +2 -2
- package/dist/components/Timeline/Timeline.js +10 -11
- package/dist/components/Timeline/TimelineAssetField.js +178 -9
- package/dist/components/Timeline/TimelineDragHandler.js +1 -2
- package/dist/components/Timeline/TimelineEffectItem.d.ts +1 -0
- package/dist/components/Timeline/TimelineEffectItem.js +2 -2
- package/dist/components/Timeline/TimelineEffectPropItem.d.ts +1 -0
- package/dist/components/Timeline/TimelineEffectPropItem.js +2 -2
- package/dist/components/Timeline/TimelineExpandedRow.js +2 -2
- package/dist/components/Timeline/TimelineHeightContainer.js +11 -1
- package/dist/components/Timeline/TimelineInOutDragHandler.js +1 -2
- package/dist/components/Timeline/TimelineKeyframeControls.js +15 -1
- package/dist/components/Timeline/TimelineLayerChildren.d.ts +3 -3
- package/dist/components/Timeline/TimelineLayerChildren.js +11 -9
- package/dist/components/Timeline/TimelineLayerEye.d.ts +1 -1
- package/dist/components/Timeline/TimelineLayerEye.js +6 -3
- package/dist/components/Timeline/TimelineList.js +9 -3
- package/dist/components/Timeline/TimelineSchemaField.js +10 -7
- package/dist/components/Timeline/TimelineSelection.d.ts +17 -4
- package/dist/components/Timeline/TimelineSelection.js +121 -52
- package/dist/components/Timeline/TimelineSequence.js +8 -8
- package/dist/components/Timeline/TimelineSequenceItem.d.ts +2 -0
- package/dist/components/Timeline/TimelineSequenceItem.js +29 -23
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +3 -12
- package/dist/components/Timeline/TimelineTranslateField.js +25 -12
- package/dist/components/Timeline/TimelineVirtualization.d.ts +3 -3
- package/dist/components/Timeline/TimelineZoomControls.js +1 -1
- package/dist/components/Timeline/get-sequence-context-menu-items.d.ts +3 -1
- package/dist/components/Timeline/get-sequence-context-menu-items.js +152 -51
- package/dist/components/Timeline/normalize-font-weight-for-keyframe.d.ts +1 -0
- package/dist/components/Timeline/normalize-font-weight-for-keyframe.js +19 -0
- package/dist/components/Timeline/timeline-display-groups.d.ts +9 -0
- package/dist/components/Timeline/timeline-display-groups.js +66 -0
- package/dist/components/Timeline/timeline-field-display-utils.js +4 -2
- package/dist/components/Timeline/timeline-translate-utils.d.ts +17 -0
- package/dist/components/Timeline/timeline-translate-utils.js +53 -12
- package/dist/components/Timeline/use-open-sequence-in-apps.d.ts +2 -0
- package/dist/components/Timeline/use-open-sequence-in-apps.js +17 -0
- package/dist/components/Timeline/use-timeline-asset-drop.js +20 -6
- package/dist/components/Timeline/use-timeline-expanded-tree.d.ts +2 -1
- package/dist/components/Timeline/use-timeline-expanded-tree.js +1 -2
- package/dist/components/Timeline/use-timeline-keyframe-drag.js +4 -4
- package/dist/components/TimelineCombobox.js +1 -0
- package/dist/components/UndoRedoButtons.js +11 -0
- package/dist/components/UpdateStatusContext.d.ts +2 -2
- package/dist/components/UpdateStatusContext.js +6 -7
- package/dist/components/UpdatesSettings.js +6 -6
- package/dist/components/WebMcp.js +40 -41
- package/dist/components/asset-context-menu.d.ts +32 -0
- package/dist/components/asset-context-menu.js +242 -0
- package/dist/components/composition-menu-items.d.ts +4 -6
- package/dist/components/composition-menu-items.js +212 -42
- package/dist/components/folder-menu-items.js +44 -0
- package/dist/components/get-open-in-menu-items.d.ts +6 -5
- package/dist/components/get-open-in-menu-items.js +16 -10
- package/dist/components/import-assets.d.ts +24 -1
- package/dist/components/import-assets.js +3 -1
- package/dist/components/keyboard-shortcuts.d.ts +4 -4
- package/dist/components/keyboard-shortcuts.js +5 -0
- package/dist/components/selected-outline-order.js +18 -12
- package/dist/components/use-open-in-menu-apps.d.ts +14 -0
- package/dist/components/use-open-in-menu-apps.js +33 -0
- package/dist/error-overlay/remotion-overlay/ErrorDisplay.js +2 -2
- package/dist/error-overlay/remotion-overlay/OpenInEditor.d.ts +1 -0
- package/dist/error-overlay/remotion-overlay/OpenInEditor.js +3 -3
- package/dist/error-overlay/remotion-overlay/StackFrame.d.ts +5 -1
- package/dist/error-overlay/remotion-overlay/StackFrame.js +26 -19
- package/dist/esm/{LazyModels-hc33szyn.mjs → LazyModels-mtggyjye.mjs} +3 -3
- package/dist/esm/{LazyModels-sg40rjw6.mjs → LazyModels-nk7py0zt.mjs} +3 -3
- package/dist/esm/{TranscriptionModal-3ctnxpt6.mjs → TranscriptionModal-ymnx1c7m.mjs} +6 -6
- package/dist/esm/{VideoMattingModal-b0r7e60n.mjs → VideoMattingModal-05vpczks.mjs} +6 -6
- package/dist/esm/{index-er3mh6em.mjs → index-0gewwxse.mjs} +7031 -5834
- package/dist/esm/{index-q5xv20xx.mjs → index-4dsz9035.mjs} +8 -8
- package/dist/esm/{index-wbmp5srk.mjs → index-5bfxbpca.mjs} +1 -1
- package/dist/esm/{index-e3zwf3e7.mjs → index-5gd8k9yv.mjs} +1 -1
- package/dist/esm/{index-c37kme2v.mjs → index-bs39wngg.mjs} +4929 -3801
- package/dist/esm/{index-yfrysr5f.mjs → index-cdy8v54v.mjs} +17 -3
- package/dist/esm/{index-9qtvmwtx.mjs → index-eb5txqp6.mjs} +12 -9
- package/dist/esm/{index-q2epbw93.mjs → index-f97r9e2g.mjs} +4 -21
- package/dist/esm/{index-2j3d1g81.mjs → index-g7k2dvar.mjs} +1 -1
- package/dist/esm/{index-1b9skrrd.mjs → index-x40wwfmt.mjs} +3 -3
- package/dist/esm/index.mjs +12 -6
- package/dist/esm/internals.mjs +7 -7
- package/dist/esm/previewEntry.mjs +7 -7
- package/dist/helpers/client-id.d.ts +1 -0
- package/dist/helpers/client-id.js +8 -4
- package/dist/helpers/cube-lut.d.ts +12 -0
- package/dist/helpers/cube-lut.js +160 -0
- package/dist/helpers/get-git-menu-item.d.ts +4 -0
- package/dist/helpers/get-git-menu-item.js +8 -1
- package/dist/helpers/get-preview-file-type.d.ts +1 -1
- package/dist/helpers/get-preview-file-type.js +3 -0
- package/dist/helpers/get-sequence-double-click-action.d.ts +3 -3
- package/dist/helpers/get-sequence-double-click-action.js +2 -2
- package/dist/helpers/open-in-editor.d.ts +5 -2
- package/dist/helpers/open-in-editor.js +12 -4
- package/dist/helpers/pointer-session.d.ts +1 -0
- package/dist/helpers/pointer-session.js +10 -1
- package/dist/helpers/settings-tab-availability.d.ts +14 -0
- package/dist/helpers/settings-tab-availability.js +35 -0
- package/dist/helpers/studio-runtime-config.d.ts +1 -1
- package/dist/helpers/use-create-composition.js +5 -0
- package/dist/helpers/use-keybinding.d.ts +1 -1
- package/dist/helpers/use-keyboard-shortcut-label.d.ts +2 -2
- package/dist/helpers/use-media-metadata.js +5 -1
- package/dist/helpers/use-menu-structure.js +21 -13
- package/dist/helpers/use-rename-composition.js +6 -1
- package/dist/icons/lut.d.ts +4 -0
- package/dist/icons/lut.js +6 -0
- package/dist/icons/sparkles.d.ts +4 -0
- package/dist/icons/sparkles.js +6 -0
- package/dist/state/modals.d.ts +25 -3
- package/dist/state/z-index.js +1 -3
- package/package.json +19 -19
- package/dist/error-overlay/remotion-overlay/CodeFrame.js +0 -62
|
@@ -163,6 +163,12 @@ import {
|
|
|
163
163
|
} from "react";
|
|
164
164
|
|
|
165
165
|
// src/helpers/pointer-session.ts
|
|
166
|
+
var isPointerSessionRelease = (reason, event) => {
|
|
167
|
+
if (event === null) {
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
return reason === "pointerup" || reason === "buttons-released" || reason === "lostpointercapture" && event.buttons === 0;
|
|
171
|
+
};
|
|
166
172
|
var getButtonMask = (button) => {
|
|
167
173
|
if (button === 0) {
|
|
168
174
|
return 1;
|
|
@@ -347,7 +353,8 @@ var defaultKeyboardShortcuts = {
|
|
|
347
353
|
copyEffectsAndValues: [{ key: "c", commandOrControl: true }],
|
|
348
354
|
cutEffects: [{ key: "x", commandOrControl: true }],
|
|
349
355
|
deleteSelection: [{ key: "Backspace" }, { key: "Delete" }],
|
|
350
|
-
askAI: [{ key: "i", commandOrControl: true }]
|
|
356
|
+
askAI: [{ key: "i", commandOrControl: true }],
|
|
357
|
+
pickColor: [{ key: "c", shift: true }]
|
|
351
358
|
};
|
|
352
359
|
var keyboardShortcutGroups = [
|
|
353
360
|
{
|
|
@@ -414,6 +421,10 @@ var keyboardShortcutGroups = [
|
|
|
414
421
|
shortcut("Reset zoom", "resetZoom")
|
|
415
422
|
]
|
|
416
423
|
},
|
|
424
|
+
{
|
|
425
|
+
name: "Tools",
|
|
426
|
+
shortcuts: [shortcut("Color Picker", "pickColor")]
|
|
427
|
+
},
|
|
417
428
|
{
|
|
418
429
|
name: "Props Editor",
|
|
419
430
|
shortcuts: [shortcut("Undo", "undo"), shortcut("Redo", "redo")]
|
|
@@ -733,7 +744,7 @@ var HigherZIndex = ({
|
|
|
733
744
|
event: downEvent,
|
|
734
745
|
onEnd: (reason, upEvent) => {
|
|
735
746
|
endPointerSession = null;
|
|
736
|
-
if ((reason
|
|
747
|
+
if (isPointerSessionRelease(reason, upEvent) && !getClickLock()) {
|
|
737
748
|
const target = document.elementFromPoint(upEvent.clientX, upEvent.clientY) ?? upEvent.target;
|
|
738
749
|
if (document.contains(target)) {
|
|
739
750
|
upEvent.stopPropagation();
|
|
@@ -1021,9 +1032,12 @@ var horizontalLayout = {
|
|
|
1021
1032
|
};
|
|
1022
1033
|
var leftSidebar = {
|
|
1023
1034
|
flexShrink: 0,
|
|
1035
|
+
display: "flex",
|
|
1036
|
+
flexDirection: "column",
|
|
1024
1037
|
padding: 6
|
|
1025
1038
|
};
|
|
1026
1039
|
var horizontalTab = {
|
|
1040
|
+
flex: "none",
|
|
1027
1041
|
width: 150,
|
|
1028
1042
|
display: "flex",
|
|
1029
1043
|
flexDirection: "row",
|
|
@@ -1151,4 +1165,4 @@ var CheckCircleFilled = (props) => /* @__PURE__ */ jsx11("svg", {
|
|
|
1151
1165
|
})
|
|
1152
1166
|
});
|
|
1153
1167
|
|
|
1154
|
-
export { startCapturedPointerSession, startDeferredCapturedPointerSession, isMac, defaultKeyboardShortcuts, keyboardShortcutGroups, askAIKeyboardShortcutGroup, getKeyboardShortcutsForAction, keyboardShortcutsOverlap, formatKeyboardShortcut, getKeyboardShortcutLabel, getKeyboardShortcutAriaKeyShortcuts, shortcutFromKeyboardEvent, KeybindingContextProvider, areKeyboardShortcutsDisabled, useKeybinding, HighestZIndexProvider, getClickLock, setClickLock, HigherZIndex, useZIndex,
|
|
1168
|
+
export { isPointerSessionRelease, startCapturedPointerSession, startDeferredCapturedPointerSession, isMac, defaultKeyboardShortcuts, keyboardShortcutGroups, askAIKeyboardShortcutGroup, getKeyboardShortcutsForAction, keyboardShortcutsOverlap, formatKeyboardShortcut, getKeyboardShortcutLabel, getKeyboardShortcutAriaKeyShortcuts, shortcutFromKeyboardEvent, KeybindingContextProvider, areKeyboardShortcutsDisabled, useKeybinding, HighestZIndexProvider, getClickLock, setClickLock, HigherZIndex, useZIndex, SPACING_UNIT, COMPACT_CONTROL_ROW_HEIGHT, COMPACT_INLINE_ROW_HEIGHT, Spacing, Flex, Row, Column, getMaxModalWidth, getMaxModalHeight, ModalContainer, HOVERABLE_CLASS_NAME, HOVER_GROUP_CLASS_NAME, HOVER_GROUP_REVEAL_CLASS_NAME, FOCUS_VISIBLE_ONLY_CLASS_NAME, NO_HOVER_BACKGROUND_STYLE, hoverableStyle, makeHoverableCSS, InlineAction, MENU_INITIATOR_CLASSNAME, MENU_ITEM_CLASSNAME, HORIZONTAL_SCROLLBAR_CLASSNAME, VERTICAL_SCROLLBAR_CLASSNAME, isMenuItem, Spinner, TrashIcon, WarningTriangle, ValidationMessage, CloudDownloadIcon, CheckCircleFilled, outerModalStyle, container2 as container, optionsPanel, horizontalLayout, leftSidebar, horizontalTab, iconContainer, icon, buttonStyle, flexer };
|
|
@@ -411,19 +411,19 @@ var getStaticFiles = () => {
|
|
|
411
411
|
return window.remotion_staticFiles;
|
|
412
412
|
};
|
|
413
413
|
|
|
414
|
-
// src/api/
|
|
414
|
+
// src/api/restart-studio.ts
|
|
415
415
|
import { getRemotionEnvironment as getRemotionEnvironment2 } from "remotion";
|
|
416
|
-
var
|
|
416
|
+
var restartStudio = () => {
|
|
417
417
|
if (!getRemotionEnvironment2().isStudio) {
|
|
418
|
-
throw new Error("
|
|
418
|
+
throw new Error("restartStudio() is only available in the Studio");
|
|
419
419
|
}
|
|
420
420
|
if (getBrowserStudioOperations() !== null) {
|
|
421
|
-
throw new Error("
|
|
421
|
+
throw new Error("restartStudio() is not supported in Browser Studio");
|
|
422
422
|
}
|
|
423
423
|
if (window.remotion_isReadOnlyStudio) {
|
|
424
|
-
throw new Error("
|
|
424
|
+
throw new Error("restartStudio() is not available in read-only Studio");
|
|
425
425
|
}
|
|
426
|
-
return callApi("/api/
|
|
426
|
+
return callApi("/api/restart-studio", {});
|
|
427
427
|
};
|
|
428
428
|
|
|
429
429
|
// src/components/RenderQueue/actions.ts
|
|
@@ -652,12 +652,14 @@ var applyCodemod = ({
|
|
|
652
652
|
codemod,
|
|
653
653
|
dryRun,
|
|
654
654
|
symbolicatedStack,
|
|
655
|
-
signal
|
|
655
|
+
signal,
|
|
656
|
+
undoRedoNavigation
|
|
656
657
|
}) => {
|
|
657
658
|
const body = {
|
|
658
659
|
codemod,
|
|
659
660
|
dryRun,
|
|
660
|
-
symbolicatedStack
|
|
661
|
+
symbolicatedStack,
|
|
662
|
+
undoRedoNavigation
|
|
661
663
|
};
|
|
662
664
|
const browserStudioOperations = getBrowserStudioOperations();
|
|
663
665
|
if (browserStudioOperations !== null) {
|
|
@@ -735,6 +737,7 @@ import React from "react";
|
|
|
735
737
|
var DEFAULT_PROPS_PATH_CLASSNAME = "__remotion-default-props-editor-label";
|
|
736
738
|
var DEFAULT_PROPS_PATH_ACTIVE_CLASSNAME = "__remotion-default-props-editor-label-active";
|
|
737
739
|
var defaultPropsEditorScrollableAreaRef = React.createRef();
|
|
740
|
+
var expandDefaultPropsEditorRef = React.createRef();
|
|
738
741
|
|
|
739
742
|
// src/components/RenderModal/SchemaEditor/zod-schema-type.ts
|
|
740
743
|
var zodSafeParse = (schema, data) => {
|
|
@@ -1363,4 +1366,4 @@ var VisualControlsProvider = ({ children }) => {
|
|
|
1363
1366
|
});
|
|
1364
1367
|
};
|
|
1365
1368
|
|
|
1366
|
-
export { AppsIcon, CodingAgentIcon, EditorIcon, FinderIcon, TerminalIcon, requestInsertedElementSelection, clearInsertedElementSelection, subscribeToInsertedElementSelection, getInsertedElementSelection, queueSequenceNodePathMutation, takePendingSequenceNodePathMutations, callApi, deleteStaticFile, DEFAULT_PROPS_PATH_CLASSNAME, DEFAULT_PROPS_PATH_ACTIVE_CLASSNAME, defaultPropsEditorScrollableAreaRef, getStaticFiles,
|
|
1369
|
+
export { AppsIcon, CodingAgentIcon, EditorIcon, FinderIcon, TerminalIcon, requestInsertedElementSelection, clearInsertedElementSelection, subscribeToInsertedElementSelection, getInsertedElementSelection, queueSequenceNodePathMutation, takePendingSequenceNodePathMutations, callApi, deleteStaticFile, DEFAULT_PROPS_PATH_CLASSNAME, DEFAULT_PROPS_PATH_ACTIVE_CLASSNAME, defaultPropsEditorScrollableAreaRef, expandDefaultPropsEditorRef, getStaticFiles, restartStudio, zodSafeParse, getZodDef, isZodV3Schema, getZodSchemaType, getZodSchemaDescription, getUserFacingDescription, getObjectShape, getArrayElement, getInnerType, getEffectsInner, getLiteralValue, getEnumValues, getFirstEnumValue, getUnionOptions, getDefaultValue, getDiscriminator, getDiscriminatedOptionKeys, getDiscriminatedOption, getIntersectionSchemas, getTupleItems, getRecordValueType, getRecordKeyType, getPipelineOutput, getPipelineInput, getBrandedInner, extractEnumJsonPaths, addStillRenderJob, addSequenceRenderJob, addVideoRenderJob, unsubscribeFromFileExistenceWatcher, subscribeToFileExistenceWatcher, openInFileExplorer, applyCodemod, removeRenderJob, cancelRenderJob, updateAvailable, getReleaseNotes, callUpdateDefaultPropsApi, applyVisualControlChange, useSyncExternalStore, visualControlStore, useZodIfPossible, useZodTypesIfPossible, ZodProvider, isStudioInteractivityEnabled, isStudioSelectionEnabled, getVisualControlEditedValue, VisualControlsContext, visualControlRef, SetVisualControlsContext, VisualControlsProvider, watchPublicFolder };
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
InputDragger,
|
|
5
5
|
MenuDivider,
|
|
6
6
|
RightAlignInput,
|
|
7
|
+
copyText,
|
|
7
8
|
getDefaultOutputBaseName,
|
|
8
9
|
label,
|
|
9
10
|
optionRow,
|
|
@@ -11,10 +12,10 @@ import {
|
|
|
11
12
|
showNotification,
|
|
12
13
|
useCopyFeedback,
|
|
13
14
|
validatePublicOutputName
|
|
14
|
-
} from "./index-
|
|
15
|
+
} from "./index-bs39wngg.mjs";
|
|
15
16
|
import {
|
|
16
17
|
Spacing
|
|
17
|
-
} from "./index-
|
|
18
|
+
} from "./index-cdy8v54v.mjs";
|
|
18
19
|
import {
|
|
19
20
|
BLUE,
|
|
20
21
|
CURRENT_COLOR_LOWERCASE,
|
|
@@ -49,24 +50,6 @@ import { BrowserSafeApis } from "@remotion/renderer/client";
|
|
|
49
50
|
|
|
50
51
|
// src/components/RenderModal/CliCopyButton.tsx
|
|
51
52
|
import { useCallback, useMemo, useState } from "react";
|
|
52
|
-
|
|
53
|
-
// src/helpers/copy-text.ts
|
|
54
|
-
var copyText = (cmd) => {
|
|
55
|
-
const permissionName = "clipboard-write";
|
|
56
|
-
return new Promise((resolve, reject) => {
|
|
57
|
-
navigator.permissions.query({ name: permissionName }).then((result) => {
|
|
58
|
-
if (result.state === "granted" || result.state === "prompt") {
|
|
59
|
-
navigator.clipboard.writeText(cmd).then(resolve).catch(reject);
|
|
60
|
-
} else {
|
|
61
|
-
reject(new Error("Permission to copy not granted"));
|
|
62
|
-
}
|
|
63
|
-
}).catch((err) => {
|
|
64
|
-
reject(err);
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
// src/components/RenderModal/CliCopyButton.tsx
|
|
70
53
|
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
71
54
|
var svgStyle = {
|
|
72
55
|
width: 16,
|
|
@@ -420,4 +403,4 @@ var NumberSetting = ({ name, value, step, hint, onValueChanged, max, min, format
|
|
|
420
403
|
});
|
|
421
404
|
};
|
|
422
405
|
|
|
423
|
-
export {
|
|
406
|
+
export { GearIcon, getDefaultCaptionOutputName, validateCaptionOutputName, OptionExplainerBubble, WebRendererOptionExplainerBubble, WebRendererCustomOptionExplainerBubble, NumberSetting };
|
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
optionRow,
|
|
7
7
|
rightRow,
|
|
8
8
|
showNotification
|
|
9
|
-
} from "./index-
|
|
9
|
+
} from "./index-bs39wngg.mjs";
|
|
10
10
|
import {
|
|
11
11
|
openInFileExplorer
|
|
12
|
-
} from "./index-
|
|
12
|
+
} from "./index-eb5txqp6.mjs";
|
|
13
13
|
import {
|
|
14
14
|
getBrowserStudioOperations
|
|
15
15
|
} from "./index-cw0pnpg5.mjs";
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
InlineAction,
|
|
19
19
|
Spacing,
|
|
20
20
|
ValidationMessage
|
|
21
|
-
} from "./index-
|
|
21
|
+
} from "./index-cdy8v54v.mjs";
|
|
22
22
|
import {
|
|
23
23
|
WHITE
|
|
24
24
|
} from "./index-k426ye99.mjs";
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
pause,
|
|
3
3
|
play,
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
} from "./index-
|
|
4
|
+
seek,
|
|
5
|
+
shutDownStudio
|
|
6
|
+
} from "./index-4dsz9035.mjs";
|
|
7
7
|
import {
|
|
8
8
|
CodingAgentIcon,
|
|
9
9
|
DEFAULT_PROPS_PATH_ACTIVE_CLASSNAME,
|
|
@@ -13,14 +13,15 @@ import {
|
|
|
13
13
|
TerminalIcon,
|
|
14
14
|
callUpdateDefaultPropsApi,
|
|
15
15
|
deleteStaticFile,
|
|
16
|
+
expandDefaultPropsEditorRef,
|
|
16
17
|
extractEnumJsonPaths,
|
|
17
18
|
getStaticFiles,
|
|
18
|
-
|
|
19
|
+
restartStudio,
|
|
19
20
|
useSyncExternalStore,
|
|
20
21
|
visualControlRef,
|
|
21
22
|
visualControlStore,
|
|
22
23
|
watchPublicFolder
|
|
23
|
-
} from "./index-
|
|
24
|
+
} from "./index-eb5txqp6.mjs";
|
|
24
25
|
import {
|
|
25
26
|
getBrowserStudioOperations,
|
|
26
27
|
writeStaticFile
|
|
@@ -64,7 +65,12 @@ var focusDefaultPropsPath = ({
|
|
|
64
65
|
success: false
|
|
65
66
|
};
|
|
66
67
|
}
|
|
67
|
-
query.scrollIntoView({ behavior: scrollBehavior });
|
|
68
|
+
const scrollToField = () => query.scrollIntoView({ behavior: scrollBehavior });
|
|
69
|
+
if (expandDefaultPropsEditorRef.current === null) {
|
|
70
|
+
scrollToField();
|
|
71
|
+
} else {
|
|
72
|
+
expandDefaultPropsEditorRef.current(scrollToField);
|
|
73
|
+
}
|
|
68
74
|
query.classList.add(DEFAULT_PROPS_PATH_ACTIVE_CLASSNAME);
|
|
69
75
|
return {
|
|
70
76
|
success: true
|
package/dist/esm/internals.mjs
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Studio
|
|
3
|
-
} from "./index-
|
|
4
|
-
import"./index-
|
|
5
|
-
import"./index-
|
|
6
|
-
import"./index-
|
|
3
|
+
} from "./index-0gewwxse.mjs";
|
|
4
|
+
import"./index-f97r9e2g.mjs";
|
|
5
|
+
import"./index-x40wwfmt.mjs";
|
|
6
|
+
import"./index-bs39wngg.mjs";
|
|
7
7
|
import"./index-9x6e1dq0.mjs";
|
|
8
|
-
import"./index-
|
|
9
|
-
import"./index-
|
|
8
|
+
import"./index-4dsz9035.mjs";
|
|
9
|
+
import"./index-eb5txqp6.mjs";
|
|
10
10
|
import"./index-cw0pnpg5.mjs";
|
|
11
|
-
import"./index-
|
|
11
|
+
import"./index-cdy8v54v.mjs";
|
|
12
12
|
import"./index-5zrb1ft4.mjs";
|
|
13
13
|
import"./index-k426ye99.mjs";
|
|
14
14
|
import"./index-rcv7qkt5.mjs";
|
|
@@ -5,18 +5,18 @@ import {
|
|
|
5
5
|
markErrorMessageAsLoggedByServer,
|
|
6
6
|
setErrorsRef,
|
|
7
7
|
startReportingRuntimeErrors
|
|
8
|
-
} from "./index-
|
|
9
|
-
import"./index-
|
|
10
|
-
import"./index-
|
|
8
|
+
} from "./index-0gewwxse.mjs";
|
|
9
|
+
import"./index-f97r9e2g.mjs";
|
|
10
|
+
import"./index-x40wwfmt.mjs";
|
|
11
11
|
import {
|
|
12
12
|
reloadUrl,
|
|
13
13
|
subscribeToPreviewServerEvents
|
|
14
|
-
} from "./index-
|
|
14
|
+
} from "./index-bs39wngg.mjs";
|
|
15
15
|
import"./index-9x6e1dq0.mjs";
|
|
16
|
-
import"./index-
|
|
17
|
-
import"./index-
|
|
16
|
+
import"./index-4dsz9035.mjs";
|
|
17
|
+
import"./index-eb5txqp6.mjs";
|
|
18
18
|
import"./index-cw0pnpg5.mjs";
|
|
19
|
-
import"./index-
|
|
19
|
+
import"./index-cdy8v54v.mjs";
|
|
20
20
|
import"./index-5zrb1ft4.mjs";
|
|
21
21
|
import {
|
|
22
22
|
BACKGROUND_HEX,
|
|
@@ -4,6 +4,7 @@ import { type PreviewServerConnectionState } from './preview-server-events';
|
|
|
4
4
|
type Context = {
|
|
5
5
|
previewServerState: PreviewServerConnectionState;
|
|
6
6
|
configFileChangeRevision: number;
|
|
7
|
+
restartRequired: boolean;
|
|
7
8
|
subscribeToEvent: (type: EventSourceEvent['type'], listener: (event: EventSourceEvent) => void) => () => void;
|
|
8
9
|
};
|
|
9
10
|
export declare const StudioServerConnectionCtx: React.Context<Context>;
|
|
@@ -51,6 +51,7 @@ exports.StudioServerConnectionCtx = react_1.default.createContext({
|
|
|
51
51
|
type: 'init',
|
|
52
52
|
},
|
|
53
53
|
configFileChangeRevision: 0,
|
|
54
|
+
restartRequired: false,
|
|
54
55
|
subscribeToEvent: () => {
|
|
55
56
|
throw new Error('Context not initalized');
|
|
56
57
|
},
|
|
@@ -71,6 +72,7 @@ const PreviewServerConnection = ({ children }) => {
|
|
|
71
72
|
type: 'init',
|
|
72
73
|
});
|
|
73
74
|
const [configFileChangeRevision, setConfigFileChangeRevision] = react_1.default.useState(0);
|
|
75
|
+
const [restartRequired, setRestartRequired] = react_1.default.useState(false);
|
|
74
76
|
const clientId = (0, react_1.useRef)(null);
|
|
75
77
|
(0, react_1.useEffect)(() => {
|
|
76
78
|
const handleEvent = (newEvent) => {
|
|
@@ -84,10 +86,11 @@ const PreviewServerConnection = ({ children }) => {
|
|
|
84
86
|
window.remotion_studioConfig = newEvent.studioRuntimeConfig;
|
|
85
87
|
window.remotion_editorName = newEvent.editorName;
|
|
86
88
|
setConfigFileChangeRevision((revision) => revision + 1);
|
|
87
|
-
const
|
|
88
|
-
newEvent.originatorClientId !== null &&
|
|
89
|
+
const isOwnConfigChange = newEvent.originatorClientId !== null &&
|
|
89
90
|
newEvent.originatorClientId === clientId.current;
|
|
90
|
-
|
|
91
|
+
setRestartRequired(newEvent.changeType === 'restart');
|
|
92
|
+
const shouldShowNotification = !isOwnConfigChange || newEvent.changeType === 'reload';
|
|
93
|
+
if (shouldShowNotification) {
|
|
91
94
|
(0, NotificationCenter_1.showNotification)((0, studio_shared_1.getConfigFileChangeMessage)(newEvent.changeType), 4000);
|
|
92
95
|
}
|
|
93
96
|
}
|
|
@@ -151,9 +154,10 @@ const PreviewServerConnection = ({ children }) => {
|
|
|
151
154
|
return {
|
|
152
155
|
previewServerState: state,
|
|
153
156
|
configFileChangeRevision,
|
|
157
|
+
restartRequired,
|
|
154
158
|
subscribeToEvent,
|
|
155
159
|
};
|
|
156
|
-
}, [configFileChangeRevision, state, subscribeToEvent]);
|
|
160
|
+
}, [configFileChangeRevision, restartRequired, state, subscribeToEvent]);
|
|
157
161
|
return (jsx_runtime_1.jsx(exports.StudioServerConnectionCtx.Provider, { value: context, children: children }));
|
|
158
162
|
};
|
|
159
163
|
exports.PreviewServerConnection = PreviewServerConnection;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
type Rgb = [number, number, number];
|
|
2
|
+
export type CubeLut = {
|
|
3
|
+
readonly type: '1d' | '3d';
|
|
4
|
+
readonly size: number;
|
|
5
|
+
readonly title: string | null;
|
|
6
|
+
readonly domainMin: Rgb;
|
|
7
|
+
readonly domainMax: Rgb;
|
|
8
|
+
readonly data: Float32Array;
|
|
9
|
+
};
|
|
10
|
+
export declare const parseCubeLut: (text: string) => CubeLut;
|
|
11
|
+
export declare const applyCubeLut: (pixels: Uint8ClampedArray<ArrayBufferLike>, lut: CubeLut) => void;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyCubeLut = exports.parseCubeLut = void 0;
|
|
4
|
+
const parseCubeLut = (text) => {
|
|
5
|
+
let type = null;
|
|
6
|
+
let size = 0;
|
|
7
|
+
let title = null;
|
|
8
|
+
let domainMin = [0, 0, 0];
|
|
9
|
+
let domainMax = [1, 1, 1];
|
|
10
|
+
let data = null;
|
|
11
|
+
let offset = 0;
|
|
12
|
+
const headers = new Set();
|
|
13
|
+
for (const [index, rawLine] of text.split(/\r\n?|\n/).entries()) {
|
|
14
|
+
const line = rawLine.trim();
|
|
15
|
+
if (!line || line.startsWith('#')) {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
const titleMatch = line.match(/^TITLE\s+"([^"]*)"\s*(?:#.*)?$/);
|
|
19
|
+
const [keyword, ...values] = line.replace(/#.*$/, '').trim().split(/\s+/);
|
|
20
|
+
const numbers = values.map(Number);
|
|
21
|
+
const isHeader = /^[A-Z][A-Z0-9_]*$/.test(keyword);
|
|
22
|
+
if (isHeader) {
|
|
23
|
+
if (offset > 0) {
|
|
24
|
+
throw new Error(`LUT header after color data on line ${index + 1}.`);
|
|
25
|
+
}
|
|
26
|
+
if (headers.has(keyword)) {
|
|
27
|
+
throw new Error(`Duplicate ${keyword} on line ${index + 1}.`);
|
|
28
|
+
}
|
|
29
|
+
headers.add(keyword);
|
|
30
|
+
}
|
|
31
|
+
if (keyword === 'TITLE' && titleMatch) {
|
|
32
|
+
title = titleMatch[1];
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (keyword === 'LUT_1D_SIZE' || keyword === 'LUT_3D_SIZE') {
|
|
36
|
+
if (type !== null) {
|
|
37
|
+
throw new Error('Combined 1D and 3D LUTs are not supported.');
|
|
38
|
+
}
|
|
39
|
+
type = keyword === 'LUT_1D_SIZE' ? '1d' : '3d';
|
|
40
|
+
size = numbers[0];
|
|
41
|
+
const maxSize = type === '1d' ? 65536 : 256;
|
|
42
|
+
if (numbers.length !== 1 ||
|
|
43
|
+
!Number.isInteger(size) ||
|
|
44
|
+
size < 2 ||
|
|
45
|
+
size > maxSize) {
|
|
46
|
+
throw new Error(`${keyword} must be an integer from 2 to ${maxSize}.`);
|
|
47
|
+
}
|
|
48
|
+
data = new Float32Array((type === '1d' ? size : size ** 3) * 3);
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (keyword === 'DOMAIN_MIN' || keyword === 'DOMAIN_MAX') {
|
|
52
|
+
if (numbers.length !== 3 || !numbers.every(Number.isFinite)) {
|
|
53
|
+
throw new Error(`${keyword} must contain three finite numbers.`);
|
|
54
|
+
}
|
|
55
|
+
if (keyword === 'DOMAIN_MIN') {
|
|
56
|
+
domainMin = [numbers[0], numbers[1], numbers[2]];
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
domainMax = [numbers[0], numbers[1], numbers[2]];
|
|
60
|
+
}
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (keyword === 'LUT_1D_INPUT_RANGE' || keyword === 'LUT_3D_INPUT_RANGE') {
|
|
64
|
+
if (numbers.length !== 2 ||
|
|
65
|
+
!numbers.every(Number.isFinite) ||
|
|
66
|
+
numbers[0] >= numbers[1]) {
|
|
67
|
+
throw new Error(`${keyword} must contain an increasing input range.`);
|
|
68
|
+
}
|
|
69
|
+
domainMin = [numbers[0], numbers[0], numbers[0]];
|
|
70
|
+
domainMax = [numbers[1], numbers[1], numbers[1]];
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (isHeader) {
|
|
74
|
+
throw new Error(`Unsupported LUT header "${keyword}" on line ${index + 1}.`);
|
|
75
|
+
}
|
|
76
|
+
if (data === null) {
|
|
77
|
+
throw new Error('Expected LUT_1D_SIZE or LUT_3D_SIZE before color data.');
|
|
78
|
+
}
|
|
79
|
+
const color = [Number(keyword), ...numbers];
|
|
80
|
+
if (color.length !== 3 ||
|
|
81
|
+
!color.every((value) => Number.isFinite(Math.fround(value)))) {
|
|
82
|
+
throw new Error(`Invalid LUT color on line ${index + 1}.`);
|
|
83
|
+
}
|
|
84
|
+
if (offset + 3 > data.length) {
|
|
85
|
+
throw new Error(`Expected ${data.length / 3} LUT colors, got more.`);
|
|
86
|
+
}
|
|
87
|
+
data.set(color, offset);
|
|
88
|
+
offset += 3;
|
|
89
|
+
}
|
|
90
|
+
if (type === null || data === null) {
|
|
91
|
+
throw new Error('Expected LUT_1D_SIZE or LUT_3D_SIZE.');
|
|
92
|
+
}
|
|
93
|
+
if (offset !== data.length) {
|
|
94
|
+
throw new Error(`Expected ${data.length / 3} LUT colors, got ${offset / 3}.`);
|
|
95
|
+
}
|
|
96
|
+
if (domainMin.some((min, channel) => min >= domainMax[channel])) {
|
|
97
|
+
throw new Error('DOMAIN_MAX must be greater than DOMAIN_MIN in every channel.');
|
|
98
|
+
}
|
|
99
|
+
if (domainMin.some((min, channel) => !Number.isFinite(domainMax[channel] - min))) {
|
|
100
|
+
throw new Error('LUT input ranges must be finite.');
|
|
101
|
+
}
|
|
102
|
+
if ((headers.has('LUT_1D_INPUT_RANGE') || headers.has('LUT_3D_INPUT_RANGE')) &&
|
|
103
|
+
(headers.has('DOMAIN_MIN') ||
|
|
104
|
+
headers.has('DOMAIN_MAX') ||
|
|
105
|
+
headers.has(type === '1d' ? 'LUT_3D_INPUT_RANGE' : 'LUT_1D_INPUT_RANGE'))) {
|
|
106
|
+
throw new Error('Conflicting LUT input range headers.');
|
|
107
|
+
}
|
|
108
|
+
return { type, size, title, domainMin, domainMax, data };
|
|
109
|
+
};
|
|
110
|
+
exports.parseCubeLut = parseCubeLut;
|
|
111
|
+
const applyCubeLut = (pixels, lut) => {
|
|
112
|
+
const { data, size, domainMin, domainMax, type } = lut;
|
|
113
|
+
const last = size - 1;
|
|
114
|
+
const range = domainMin.map((min, channel) => domainMax[channel] - min);
|
|
115
|
+
for (let pixel = 0; pixel < pixels.length; pixel += 4) {
|
|
116
|
+
if (type === '1d') {
|
|
117
|
+
for (let channel = 0; channel < 3; channel++) {
|
|
118
|
+
const position = Math.max(0, Math.min(last, ((pixels[pixel + channel] / 255 - domainMin[channel]) /
|
|
119
|
+
range[channel]) *
|
|
120
|
+
last));
|
|
121
|
+
const low = Math.floor(position);
|
|
122
|
+
const high = Math.min(low + 1, last);
|
|
123
|
+
const fraction = position - low;
|
|
124
|
+
pixels[pixel + channel] =
|
|
125
|
+
255 *
|
|
126
|
+
(data[low * 3 + channel] * (1 - fraction) +
|
|
127
|
+
data[high * 3 + channel] * fraction);
|
|
128
|
+
}
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
const r = Math.max(0, Math.min(last, ((pixels[pixel] / 255 - domainMin[0]) / range[0]) * last));
|
|
132
|
+
const g = Math.max(0, Math.min(last, ((pixels[pixel + 1] / 255 - domainMin[1]) / range[1]) * last));
|
|
133
|
+
const b = Math.max(0, Math.min(last, ((pixels[pixel + 2] / 255 - domainMin[2]) / range[2]) * last));
|
|
134
|
+
const r0 = Math.floor(r);
|
|
135
|
+
const g0 = Math.floor(g);
|
|
136
|
+
const b0 = Math.floor(b);
|
|
137
|
+
const r1 = Math.min(r0 + 1, last);
|
|
138
|
+
const g1 = Math.min(g0 + 1, last);
|
|
139
|
+
const b1 = Math.min(b0 + 1, last);
|
|
140
|
+
const rf = r - r0;
|
|
141
|
+
const gf = g - g0;
|
|
142
|
+
const bf = b - b0;
|
|
143
|
+
// .cube files store red fastest, then green, then blue.
|
|
144
|
+
for (let channel = 0; channel < 3; channel++) {
|
|
145
|
+
const c00 = data[(r0 + g0 * size + b0 * size * size) * 3 + channel] * (1 - rf) +
|
|
146
|
+
data[(r1 + g0 * size + b0 * size * size) * 3 + channel] * rf;
|
|
147
|
+
const c10 = data[(r0 + g1 * size + b0 * size * size) * 3 + channel] * (1 - rf) +
|
|
148
|
+
data[(r1 + g1 * size + b0 * size * size) * 3 + channel] * rf;
|
|
149
|
+
const c01 = data[(r0 + g0 * size + b1 * size * size) * 3 + channel] * (1 - rf) +
|
|
150
|
+
data[(r1 + g0 * size + b1 * size * size) * 3 + channel] * rf;
|
|
151
|
+
const c11 = data[(r0 + g1 * size + b1 * size * size) * 3 + channel] * (1 - rf) +
|
|
152
|
+
data[(r1 + g1 * size + b1 * size * size) * 3 + channel] * rf;
|
|
153
|
+
pixels[pixel + channel] =
|
|
154
|
+
255 *
|
|
155
|
+
((c00 * (1 - gf) + c10 * gf) * (1 - bf) +
|
|
156
|
+
(c01 * (1 - gf) + c11 * gf) * bf);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
exports.applyCubeLut = applyCubeLut;
|
|
@@ -5,6 +5,10 @@ export declare const getGitSourceName: (gitSource: GitSource) => string;
|
|
|
5
5
|
export declare const getGitSourceBranchUrl: (gitSource: GitSource) => string;
|
|
6
6
|
export declare const getGitRefUrl: (gitSource: GitSource, originalLocation: OriginalPosition, remotionRoot: string) => string;
|
|
7
7
|
export declare const hasReadOnlyGitSource: () => boolean;
|
|
8
|
+
export type DefaultOpenInTarget = 'editor' | 'git-source';
|
|
9
|
+
export declare const getDefaultOpenInTarget: ({ canOpenInEditor, }: {
|
|
10
|
+
readonly canOpenInEditor: boolean;
|
|
11
|
+
}) => DefaultOpenInTarget | null;
|
|
8
12
|
export declare const openGitSource: ({ folder, location, }: {
|
|
9
13
|
folder: boolean;
|
|
10
14
|
location: OriginalPosition | null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getGitMenuItem = exports.openGitSource = exports.hasReadOnlyGitSource = exports.getGitRefUrl = exports.getGitSourceBranchUrl = exports.getGitSourceName = void 0;
|
|
3
|
+
exports.getGitMenuItem = exports.openGitSource = exports.getDefaultOpenInTarget = exports.hasReadOnlyGitSource = exports.getGitRefUrl = exports.getGitSourceBranchUrl = exports.getGitSourceName = void 0;
|
|
4
4
|
const getGitSourceName = (gitSource) => {
|
|
5
5
|
if (gitSource.type === 'github') {
|
|
6
6
|
return 'GitHub';
|
|
@@ -56,6 +56,13 @@ const hasReadOnlyGitSource = () => {
|
|
|
56
56
|
return Boolean(window.remotion_isReadOnlyStudio && window.remotion_gitSource);
|
|
57
57
|
};
|
|
58
58
|
exports.hasReadOnlyGitSource = hasReadOnlyGitSource;
|
|
59
|
+
const getDefaultOpenInTarget = ({ canOpenInEditor, }) => {
|
|
60
|
+
if (canOpenInEditor) {
|
|
61
|
+
return 'editor';
|
|
62
|
+
}
|
|
63
|
+
return (0, exports.hasReadOnlyGitSource)() ? 'git-source' : null;
|
|
64
|
+
};
|
|
65
|
+
exports.getDefaultOpenInTarget = getDefaultOpenInTarget;
|
|
59
66
|
const openGitSource = ({ folder, location, }) => {
|
|
60
67
|
const gitSource = window.remotion_gitSource;
|
|
61
68
|
if (!gitSource) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type AssetFileType = 'audio' | 'font' | 'video' | 'image' | 'json' | 'txt' | 'other';
|
|
1
|
+
export type AssetFileType = 'audio' | 'font' | 'video' | 'image' | 'json' | 'lut' | 'txt' | 'other';
|
|
2
2
|
export declare const getPreviewFileType: (fileName: string | null) => AssetFileType;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { TSequence } from 'remotion';
|
|
2
|
-
export type SequenceDoubleClickAction = 'open-connected-composition' | 'open-
|
|
3
|
-
export declare const getSequenceDoubleClickAction: ({ button,
|
|
2
|
+
export type SequenceDoubleClickAction = 'open-connected-composition' | 'open-source';
|
|
3
|
+
export declare const getSequenceDoubleClickAction: ({ button, canOpenSource, numberOfConnectedCompositions, sequenceWasDragged, }: {
|
|
4
4
|
readonly button: number;
|
|
5
|
-
readonly
|
|
5
|
+
readonly canOpenSource: boolean;
|
|
6
6
|
readonly numberOfConnectedCompositions: number;
|
|
7
7
|
readonly sequenceWasDragged: boolean;
|
|
8
8
|
}) => SequenceDoubleClickAction | null;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getConnectedCompositionFrame = exports.getSequenceDoubleClickAction = void 0;
|
|
4
|
-
const getSequenceDoubleClickAction = ({ button,
|
|
4
|
+
const getSequenceDoubleClickAction = ({ button, canOpenSource, numberOfConnectedCompositions, sequenceWasDragged, }) => {
|
|
5
5
|
// The browser still fires `dblclick` when the second press of a
|
|
6
6
|
// double-click turned into a drag. That gesture is a drag, not a
|
|
7
7
|
// double-click.
|
|
@@ -14,7 +14,7 @@ const getSequenceDoubleClickAction = ({ button, canOpenInEditor, numberOfConnect
|
|
|
14
14
|
if (numberOfConnectedCompositions === 1) {
|
|
15
15
|
return 'open-connected-composition';
|
|
16
16
|
}
|
|
17
|
-
return
|
|
17
|
+
return canOpenSource ? 'open-source' : null;
|
|
18
18
|
};
|
|
19
19
|
exports.getSequenceDoubleClickAction = getSequenceDoubleClickAction;
|
|
20
20
|
const getConnectedCompositionFrame = ({ timelinePosition, sequence, sequenceFrameOffset, }) => {
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import type { TerminalId } from '@remotion/studio-shared';
|
|
2
|
-
import type { CompositionComponentInfoResponse, EditorPickerId, OpenInTerminalResponse, SymbolicatedStackFrame } from '@remotion/studio-shared';
|
|
1
|
+
import type { CompositionComponentInfoResponse, EditorPickerId, OpenInTerminalResponse, SymbolicatedStackFrame, TerminalId } from '@remotion/studio-shared';
|
|
3
2
|
import type { CodePosition, OriginalPosition } from '../error-overlay/react-overlay/utils/get-source-map';
|
|
4
3
|
export declare const openInEditor: (stack: SymbolicatedStackFrame, editorId: EditorPickerId) => Promise<import("@remotion/studio-shared").OpenInEditorResponse>;
|
|
5
4
|
export declare const openInCodingAgent: (codingAgentId: "claude-code" | "codex" | "copilot" | "cursor", prompt: string | null) => Promise<import("@remotion/studio-shared").OpenInCodingAgentResponse>;
|
|
6
5
|
export declare const openInTerminal: (terminalId: TerminalId, directory: string) => Promise<OpenInTerminalResponse>;
|
|
7
6
|
export declare const openInGitClient: (gitClientId: "github-desktop") => Promise<import("@remotion/studio-shared").OpenInGitClientResponse>;
|
|
8
7
|
export declare const openOriginalPositionInEditor: (originalPosition: OriginalPosition, editorId: EditorPickerId) => Promise<void>;
|
|
8
|
+
export declare const findOriginalPositionInFileAtProperty: ({ originalPosition, property, }: {
|
|
9
|
+
originalPosition: CodePosition;
|
|
10
|
+
property: string;
|
|
11
|
+
}) => Promise<CodePosition>;
|
|
9
12
|
export declare const openOriginalPositionInEditorAtProperty: ({ editorId, originalPosition, property, }: {
|
|
10
13
|
editorId: EditorPickerId;
|
|
11
14
|
originalPosition: CodePosition;
|