@remotion/studio 4.0.520 → 4.0.522
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/shut-down-studio.d.ts +6 -0
- package/dist/api/shut-down-studio.js +23 -0
- package/dist/components/AudioWaveform.js +10 -6
- package/dist/components/Canvas.js +84 -12
- package/dist/components/CanvasIfSizeIsAvailable.js +7 -0
- package/dist/components/CaptionInspector.d.ts +1 -0
- package/dist/components/CaptionInspector.js +43 -2
- package/dist/components/CaptionTextEditor.js +1 -1
- package/dist/components/CompositionSelector.js +41 -30
- package/dist/components/CompositionSelectorItem.d.ts +7 -0
- package/dist/components/CompositionSelectorItem.js +343 -67
- package/dist/components/CopyButton.js +7 -14
- package/dist/components/Editor.js +6 -5
- package/dist/components/EditorContent.js +1 -1
- package/dist/components/ElementInstallConfirmation.js +77 -65
- package/dist/components/ElementLibraryModal.js +3 -1
- package/dist/components/FixComputedValueModal.js +20 -10
- package/dist/components/InlineCaptionInspector.js +37 -1
- package/dist/components/InspectorLocationCopy.js +10 -5
- package/dist/components/InspectorPanel/ElementLibraryButton.js +3 -18
- package/dist/components/InspectorSequenceSection.js +1 -4
- package/dist/components/Menu/MenuSubItem.js +1 -1
- package/dist/components/MenuBuildIndicator.js +7 -2
- package/dist/components/MenuCompositionName.js +62 -6
- package/dist/components/ModalContainer.d.ts +1 -0
- package/dist/components/ModalContainer.js +2 -2
- package/dist/components/ModalHeader.js +5 -1
- package/dist/components/QuickSwitcher/asset-search.d.ts +0 -1
- package/dist/components/QuickSwitcher/asset-search.js +1 -16
- package/dist/components/RenderButton.js +2 -2
- package/dist/components/RenderModal/CliCopyButton.js +13 -27
- package/dist/components/RenderModal/RenderStatusModal.js +7 -1
- package/dist/components/RenderModal/ServerRenderModal.js +1 -1
- package/dist/components/RenderModal/WebRenderModal.js +1 -1
- package/dist/components/RenderQueue/ClientRenderQueueProcessor.js +1 -1
- package/dist/components/RenderQueue/RenderQueueCopyToClipboard.js +7 -4
- package/dist/components/SettingsModal.js +8 -5
- package/dist/components/SidebarCollapserControls.js +11 -5
- package/dist/components/SkillsSettings.js +9 -5
- package/dist/components/Splitter/SplitterContainer.js +63 -10
- package/dist/components/Splitter/SplitterContext.d.ts +3 -0
- package/dist/components/Splitter/SplitterContext.js +5 -1
- package/dist/components/Splitter/SplitterElement.js +11 -2
- package/dist/components/Splitter/SplitterHandle.d.ts +1 -0
- package/dist/components/Splitter/SplitterHandle.js +55 -25
- package/dist/components/TimeValue.js +36 -7
- package/dist/components/Timeline/SubscribeToNodePaths.d.ts +2 -1
- package/dist/components/Timeline/SubscribeToNodePaths.js +2 -1
- package/dist/components/Timeline/Timeline.d.ts +1 -1
- package/dist/components/Timeline/Timeline.js +45 -22
- package/dist/components/Timeline/TimelineAssetField.d.ts +0 -1
- package/dist/components/Timeline/TimelineAssetField.js +16 -9
- package/dist/components/Timeline/TimelineCollapseToggle.js +1 -1
- package/dist/components/Timeline/TimelineDragHandler.js +9 -4
- package/dist/components/Timeline/TimelineFontWeightField.d.ts +11 -0
- package/dist/components/Timeline/TimelineFontWeightField.js +65 -0
- package/dist/components/Timeline/TimelineLayerChildren.d.ts +21 -0
- package/dist/components/Timeline/TimelineLayerChildren.js +129 -0
- package/dist/components/Timeline/TimelineNumberField.js +13 -5
- package/dist/components/Timeline/TimelinePinchZoom.js +6 -30
- package/dist/components/Timeline/TimelinePlayCursorSyncer.js +1 -7
- package/dist/components/Timeline/TimelinePrimitiveFieldValue.js +4 -0
- package/dist/components/Timeline/TimelineSequence.js +113 -42
- package/dist/components/Timeline/TimelineSequenceItem.js +14 -2
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +13 -3
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +185 -126
- package/dist/components/Timeline/TimelineSlider.js +1 -4
- package/dist/components/Timeline/TimelineTickFormatProvider.d.ts +8 -0
- package/dist/components/Timeline/TimelineTickFormatProvider.js +16 -0
- package/dist/components/Timeline/TimelineTimeIndicators.js +7 -3
- package/dist/components/Timeline/TimelineVideoInfo.js +7 -3
- package/dist/components/Timeline/TimelineWidthProvider.js +2 -5
- package/dist/components/Timeline/TimelineZoomControls.js +20 -20
- package/dist/components/Timeline/get-sequence-split-menu-item.d.ts +11 -0
- package/dist/components/Timeline/get-sequence-split-menu-item.js +55 -0
- package/dist/components/Timeline/timeline-field-display-utils.js +1 -0
- package/dist/components/Timeline/use-sequence-props-subscription.d.ts +3 -2
- package/dist/components/Timeline/use-sequence-props-subscription.js +4 -10
- package/dist/components/TopPanel.js +3 -19
- package/dist/components/UpdateStatusContext.d.ts +5 -0
- package/dist/components/UpdateStatusContext.js +53 -2
- package/dist/components/UpdatesSettings.js +34 -9
- package/dist/components/WebMcp.js +26 -0
- package/dist/components/ZoomPersistor.js +6 -3
- package/dist/components/composition-menu-items.js +1 -1
- package/dist/components/composition-selector-drag-data.d.ts +27 -0
- package/dist/components/composition-selector-drag-data.js +80 -0
- package/dist/components/import-assets.d.ts +2 -1
- package/dist/components/import-assets.js +11 -1
- package/dist/components/parse-caption-file.d.ts +5 -0
- package/dist/components/parse-caption-file.js +63 -0
- package/dist/esm/{chunk-np6q13k5.js → chunk-3netyjd9.js} +7943 -6314
- package/dist/esm/index.mjs +23 -8
- package/dist/esm/internals.mjs +7965 -6336
- package/dist/esm/previewEntry.mjs +8007 -6378
- package/dist/esm/renderEntry.mjs +1 -1
- package/dist/helpers/copy-text.js +1 -2
- package/dist/helpers/get-preview-file-type.js +22 -3
- package/dist/helpers/inserted-element-selection.d.ts +2 -1
- package/dist/helpers/use-copy-feedback.d.ts +4 -0
- package/dist/helpers/use-copy-feedback.js +19 -0
- package/dist/helpers/use-menu-structure.js +2 -2
- package/dist/icons/copy.d.ts +5 -0
- package/dist/icons/copy.js +12 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/state/canvas-ref.d.ts +1 -0
- package/dist/state/canvas-ref.js +2 -1
- package/dist/state/modals.d.ts +0 -2
- package/dist/state/sidebar.d.ts +3 -0
- package/dist/state/sidebar.js +6 -1
- package/dist/state/timeline-zoom.d.ts +1 -1
- package/dist/state/timeline-zoom.js +3 -3
- package/dist/visual-controls/VisualControls.js +4 -0
- package/package.json +16 -16
- package/dist/helpers/use-max-media-duration.d.ts +0 -2
- package/dist/helpers/use-max-media-duration.js +0 -61
|
@@ -39,7 +39,7 @@ const container = {
|
|
|
39
39
|
const dialogContent = {
|
|
40
40
|
...container,
|
|
41
41
|
padding: 16,
|
|
42
|
-
width: 'min(
|
|
42
|
+
width: 'min(520px, calc(100vw - 40px))',
|
|
43
43
|
maxHeight: 'min(720px, calc(100vh - 140px))',
|
|
44
44
|
overflowY: 'auto',
|
|
45
45
|
};
|
|
@@ -85,8 +85,19 @@ const metadataDescriptionStyle = {
|
|
|
85
85
|
lineHeight: 1.5,
|
|
86
86
|
overflowWrap: 'anywhere',
|
|
87
87
|
};
|
|
88
|
-
const
|
|
88
|
+
const requestSourceStyle = {
|
|
89
|
+
display: 'flex',
|
|
90
|
+
justifyContent: 'space-between',
|
|
91
|
+
gap: 16,
|
|
92
|
+
margin: 0,
|
|
93
|
+
};
|
|
94
|
+
const requestSourceDescriptionStyle = {
|
|
89
95
|
...metadataDescriptionStyle,
|
|
96
|
+
color: colors_1.LIGHT_TEXT,
|
|
97
|
+
textAlign: 'right',
|
|
98
|
+
};
|
|
99
|
+
const unverifiedRequestSourceStyle = {
|
|
100
|
+
...requestSourceDescriptionStyle,
|
|
90
101
|
color: colors_1.WARNING_COLOR,
|
|
91
102
|
};
|
|
92
103
|
const codeStyle = {
|
|
@@ -111,32 +122,13 @@ const dependencyListStyle = {
|
|
|
111
122
|
padding: 0,
|
|
112
123
|
listStyleType: 'none',
|
|
113
124
|
};
|
|
114
|
-
const dependencyRowStyle = {
|
|
115
|
-
display: 'flex',
|
|
116
|
-
alignItems: 'baseline',
|
|
117
|
-
justifyContent: 'space-between',
|
|
118
|
-
gap: 16,
|
|
119
|
-
minWidth: 0,
|
|
120
|
-
};
|
|
121
125
|
const dependencyNameStyle = {
|
|
122
126
|
minWidth: 0,
|
|
123
127
|
color: colors_1.WHITE,
|
|
124
|
-
fontFamily: 'monospace',
|
|
125
|
-
fontSize: 13,
|
|
126
|
-
lineHeight: 1.5,
|
|
127
|
-
overflowWrap: 'anywhere',
|
|
128
|
-
};
|
|
129
|
-
const dependencyInstallStatusStyle = {
|
|
130
|
-
flexShrink: 0,
|
|
131
|
-
color: colors_1.WARNING_COLOR,
|
|
132
128
|
fontFamily: 'sans-serif',
|
|
133
129
|
fontSize: 13,
|
|
134
|
-
fontWeight: 500,
|
|
135
130
|
lineHeight: 1.5,
|
|
136
|
-
|
|
137
|
-
const dependencyInstalledStatusStyle = {
|
|
138
|
-
...dependencyInstallStatusStyle,
|
|
139
|
-
color: colors_1.LIGHT_TEXT,
|
|
131
|
+
overflowWrap: 'anywhere',
|
|
140
132
|
};
|
|
141
133
|
const warningStyle = {
|
|
142
134
|
display: 'flex',
|
|
@@ -160,6 +152,10 @@ const warningDescriptionStyle = {
|
|
|
160
152
|
fontWeight: 400,
|
|
161
153
|
lineHeight: 1.5,
|
|
162
154
|
};
|
|
155
|
+
const installWarningDescriptionStyle = {
|
|
156
|
+
...warningDescriptionStyle,
|
|
157
|
+
color: colors_1.WHITE,
|
|
158
|
+
};
|
|
163
159
|
const browseElementsStyle = {
|
|
164
160
|
color: 'inherit',
|
|
165
161
|
fontFamily: 'inherit',
|
|
@@ -174,7 +170,7 @@ const sourceDetailsStyle = {
|
|
|
174
170
|
lineHeight: 1.5,
|
|
175
171
|
};
|
|
176
172
|
const sourceSummaryStyle = {
|
|
177
|
-
cursor: '
|
|
173
|
+
cursor: 'default',
|
|
178
174
|
color: colors_1.WHITE,
|
|
179
175
|
fontFamily: 'sans-serif',
|
|
180
176
|
fontSize: 13,
|
|
@@ -206,23 +202,29 @@ const destinationControlStyle = {
|
|
|
206
202
|
display: 'flex',
|
|
207
203
|
alignItems: 'center',
|
|
208
204
|
justifyContent: 'space-between',
|
|
209
|
-
|
|
205
|
+
columnGap: 16,
|
|
206
|
+
rowGap: 10,
|
|
207
|
+
flexWrap: 'wrap',
|
|
210
208
|
};
|
|
211
209
|
const destinationOptionsStyle = {
|
|
212
210
|
display: 'flex',
|
|
213
211
|
overflow: 'hidden',
|
|
212
|
+
maxWidth: '100%',
|
|
213
|
+
marginLeft: 'auto',
|
|
214
214
|
border: `1px solid ${colors_1.WHITE_ALPHA_12}`,
|
|
215
215
|
borderRadius: 4,
|
|
216
216
|
};
|
|
217
217
|
const destinationOptionStyle = {
|
|
218
218
|
appearance: 'none',
|
|
219
|
+
minHeight: 26,
|
|
219
220
|
border: 0,
|
|
220
221
|
cursor: 'default',
|
|
221
222
|
fontFamily: 'sans-serif',
|
|
222
|
-
fontSize:
|
|
223
|
+
fontSize: 12,
|
|
223
224
|
fontWeight: 400,
|
|
224
|
-
lineHeight:
|
|
225
|
-
padding: '
|
|
225
|
+
lineHeight: '18px',
|
|
226
|
+
padding: '4px 8px',
|
|
227
|
+
whiteSpace: 'nowrap',
|
|
226
228
|
};
|
|
227
229
|
const getDestinationOptionStyle = ({ disabled, selected, }) => ({
|
|
228
230
|
...destinationOptionStyle,
|
|
@@ -240,6 +242,7 @@ const footerStyle = {
|
|
|
240
242
|
const cancelStyle = {
|
|
241
243
|
minWidth: 90,
|
|
242
244
|
};
|
|
245
|
+
const elementInstallTitleId = 'remotion-element-install-title';
|
|
243
246
|
const makeSourceControlsVisible = (sourceCode) => {
|
|
244
247
|
return sourceCode.replace(/[\u200b-\u200f\u202a-\u202e\u2066-\u2069\ufeff]/g, (character) => {
|
|
245
248
|
var _a;
|
|
@@ -264,8 +267,8 @@ const ElementLibraryAddConfirmation = ({ displayName, origin, url }) => {
|
|
|
264
267
|
};
|
|
265
268
|
exports.ElementLibraryAddConfirmation = ElementLibraryAddConfirmation;
|
|
266
269
|
const ElementInstallConfirmation = ({ state }) => {
|
|
267
|
-
var _a
|
|
268
|
-
const { currentPlan,
|
|
270
|
+
var _a;
|
|
271
|
+
const { currentPlan, missingPackages, newPlan, onClose, request, sourceIsUnverified, sourceLabel, } = state;
|
|
269
272
|
const config = remotion_1.Internals.useUnsafeVideoConfig();
|
|
270
273
|
const { canvasContent, compositions } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
|
|
271
274
|
const currentCompositionMetadata = config === null ||
|
|
@@ -280,9 +283,13 @@ const ElementInstallConfirmation = ({ state }) => {
|
|
|
280
283
|
};
|
|
281
284
|
const usesBrowserDependencyResolution = (0, browser_studio_operations_1.getBrowserStudioOperations)() !== null;
|
|
282
285
|
const { currentZIndex } = (0, z_index_1.useZIndex)();
|
|
283
|
-
const [mode, setMode] = (0, react_1.useState)(currentPlan === null
|
|
286
|
+
const [mode, setMode] = (0, react_1.useState)(currentPlan === null || request.source.type === 'browser-studio-link'
|
|
287
|
+
? 'new-composition'
|
|
288
|
+
: 'current-composition');
|
|
284
289
|
const [submitting, setSubmitting] = (0, react_1.useState)(false);
|
|
285
290
|
const inputRef = (0, react_1.useRef)(null);
|
|
291
|
+
const currentDestinationRef = (0, react_1.useRef)(null);
|
|
292
|
+
const newDestinationRef = (0, react_1.useRef)(null);
|
|
286
293
|
const [newCompositionValues, setNewCompositionValues] = (0, react_1.useState)(() => {
|
|
287
294
|
var _a, _b, _c, _d, _e;
|
|
288
295
|
const elementComponentName = (_a = studio_protocol_1.StudioProtocolInternals.getElementComponentNameFromSourceCode(request.element.sourceCode)) !== null && _a !== void 0 ? _a : 'Element';
|
|
@@ -400,6 +407,7 @@ const ElementInstallConfirmation = ({ state }) => {
|
|
|
400
407
|
const selectedPlan = mode === 'current-composition' ? currentPlan : selectedNewCompositionPlan;
|
|
401
408
|
const folderTargetIsReady = selectedFolderStack === null ||
|
|
402
409
|
((0, use_resolved_stack_1.hasResolvedStack)(selectedFolderStack) && folderCompositionFile !== null);
|
|
410
|
+
const title = `Install ${request.element.displayName}${request.element.displayName.endsWith(' Element') ? '' : ' Element'}`;
|
|
403
411
|
const canSubmit = !submitting &&
|
|
404
412
|
(mode === 'current-composition'
|
|
405
413
|
? currentPlan !== null
|
|
@@ -468,63 +476,67 @@ const ElementInstallConfirmation = ({ state }) => {
|
|
|
468
476
|
onClose();
|
|
469
477
|
}
|
|
470
478
|
}, [onClose, submitting]);
|
|
479
|
+
const onDestinationKeyDown = (0, react_1.useCallback)((event) => {
|
|
480
|
+
if (!['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes(event.key)) {
|
|
481
|
+
return;
|
|
482
|
+
}
|
|
483
|
+
event.preventDefault();
|
|
484
|
+
if (currentPlan === null) {
|
|
485
|
+
return;
|
|
486
|
+
}
|
|
487
|
+
const nextMode = mode === 'current-composition'
|
|
488
|
+
? 'new-composition'
|
|
489
|
+
: 'current-composition';
|
|
490
|
+
setMode(nextMode);
|
|
491
|
+
requestAnimationFrame(() => {
|
|
492
|
+
var _a, _b;
|
|
493
|
+
if (nextMode === 'current-composition') {
|
|
494
|
+
(_a = currentDestinationRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
495
|
+
}
|
|
496
|
+
else {
|
|
497
|
+
(_b = newDestinationRef.current) === null || _b === void 0 ? void 0 : _b.focus();
|
|
498
|
+
}
|
|
499
|
+
});
|
|
500
|
+
}, [currentPlan, mode]);
|
|
471
501
|
const onSubmit = (0, react_1.useCallback)((event) => {
|
|
472
502
|
event.preventDefault();
|
|
473
503
|
submit();
|
|
474
504
|
}, [submit]);
|
|
475
|
-
return (0, react_dom_1.createPortal)(jsx_runtime_1.jsxs(ModalContainer_1.ModalContainer, { onOutsideClick: cancel, onEscape: cancel, children: [
|
|
476
|
-
jsx_runtime_1.jsx(ModalHeader_1.ModalHeader, { title:
|
|
505
|
+
return (0, react_dom_1.createPortal)(jsx_runtime_1.jsxs(ModalContainer_1.ModalContainer, { ariaLabelledBy: elementInstallTitleId, onOutsideClick: cancel, onEscape: cancel, children: [
|
|
506
|
+
jsx_runtime_1.jsx("div", { id: elementInstallTitleId, children: jsx_runtime_1.jsx(ModalHeader_1.ModalHeader, { title: title, onClose: cancel }) }), jsx_runtime_1.jsxs("form", { onSubmit: onSubmit, children: [
|
|
477
507
|
jsx_runtime_1.jsxs("div", { style: dialogContent, children: [
|
|
478
|
-
jsx_runtime_1.jsxs("
|
|
479
|
-
jsx_runtime_1.jsx("
|
|
480
|
-
|
|
508
|
+
jsx_runtime_1.jsxs("dl", { style: requestSourceStyle, "aria-label": "Request source", children: [
|
|
509
|
+
jsx_runtime_1.jsx("dt", { style: sectionTitleStyle, children: "From" }), jsx_runtime_1.jsx("dd", { style: sourceIsUnverified
|
|
510
|
+
? unverifiedRequestSourceStyle
|
|
511
|
+
: requestSourceDescriptionStyle, children: sourceLabel })
|
|
512
|
+
] }), jsx_runtime_1.jsxs("div", { style: destinationControlStyle, children: [
|
|
513
|
+
jsx_runtime_1.jsx("div", { style: sectionTitleStyle, children: "Destination" }), jsx_runtime_1.jsxs("div", { "aria-label": "Installation destination", onKeyDown: onDestinationKeyDown, role: "radiogroup", style: destinationOptionsStyle, children: [
|
|
514
|
+
jsx_runtime_1.jsx("button", { ref: currentDestinationRef, "aria-checked": mode === 'current-composition', className: `${hoverable_1.HOVERABLE_CLASS_NAME} ${hoverable_1.FOCUS_VISIBLE_ONLY_CLASS_NAME}`, disabled: currentPlan === null, onClick: () => setMode('current-composition'), role: "radio", style: getDestinationOptionStyle({
|
|
481
515
|
disabled: currentPlan === null,
|
|
482
516
|
selected: mode === 'current-composition',
|
|
483
|
-
}), type: "button", children: "Current composition" }), jsx_runtime_1.jsx("button", { "aria-
|
|
517
|
+
}), tabIndex: mode === 'current-composition' ? 0 : -1, type: "button", children: "Current composition" }), jsx_runtime_1.jsx("button", { ref: newDestinationRef, "aria-checked": mode === 'new-composition', className: `${hoverable_1.HOVERABLE_CLASS_NAME} ${hoverable_1.FOCUS_VISIBLE_ONLY_CLASS_NAME}`, onClick: () => {
|
|
484
518
|
setMode('new-composition');
|
|
485
519
|
requestAnimationFrame(() => {
|
|
486
520
|
var _a;
|
|
487
521
|
return (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.select();
|
|
488
522
|
});
|
|
489
|
-
}, style: {
|
|
523
|
+
}, role: "radio", style: {
|
|
490
524
|
...getDestinationOptionStyle({
|
|
491
525
|
disabled: false,
|
|
492
526
|
selected: mode === 'new-composition',
|
|
493
527
|
}),
|
|
494
528
|
borderLeft: `1px solid ${colors_1.WHITE_ALPHA_12}`,
|
|
495
|
-
}, type: "button", children: "New composition" })
|
|
529
|
+
}, tabIndex: mode === 'new-composition' ? 0 : -1, type: "button", children: "New composition" })
|
|
496
530
|
] })
|
|
497
531
|
] }), currentPlan === null ? (jsx_runtime_1.jsxs("div", { style: warningStyle, role: "status", children: [
|
|
498
|
-
jsx_runtime_1.jsx(ValidationMessage_1.WarningTriangle, { style: warningIconStyle }), jsx_runtime_1.jsxs("p", { style:
|
|
532
|
+
jsx_runtime_1.jsx(ValidationMessage_1.WarningTriangle, { style: warningIconStyle }), jsx_runtime_1.jsxs("p", { style: installWarningDescriptionStyle, children: ["Studio could not find a safe place in \u201C", request.compositionId, "\u201D to insert the Element. Install it into a new composition instead."] })
|
|
499
533
|
] })) : null, mode === 'new-composition' ? (jsx_runtime_1.jsxs("section", { style: sectionStyle, "aria-label": "New composition settings", children: [
|
|
500
|
-
jsx_runtime_1.jsx(NewComposition_1.NewCompositionFields, { heightValidationMessage: heightValidationMessage, inputRef: inputRef, nameValidationMessage: nameValidationMessage, setValues: setNewCompositionValues, values: newCompositionValues, widthValidationMessage: widthValidationMessage }), (activeNewCompositionPlanState === null || activeNewCompositionPlanState === void 0 ? void 0 : activeNewCompositionPlanState.type) === 'error' ? (jsx_runtime_1.jsx(ValidationMessage_1.ValidationMessage, { align: "flex-start", message: activeNewCompositionPlanState.reason, type: "error" })) : null] })) : null, jsx_runtime_1.jsxs("
|
|
501
|
-
jsx_runtime_1.
|
|
502
|
-
jsx_runtime_1.jsx("dt", { style: metadataTermStyle, children: "Element" }), jsx_runtime_1.jsx("dd", { style: metadataDescriptionStyle, children: request.element.displayName })
|
|
503
|
-
] }), jsx_runtime_1.jsxs("div", { style: metadataRowStyle, children: [
|
|
504
|
-
jsx_runtime_1.jsx("dt", { style: metadataTermStyle, children: "Request source" }), jsx_runtime_1.jsx("dd", { style: sourceIsUnverified
|
|
505
|
-
? unverifiedSourceStyle
|
|
506
|
-
: metadataDescriptionStyle, children: sourceLabel })
|
|
507
|
-
] }), jsx_runtime_1.jsxs("div", { style: metadataRowStyle, children: [
|
|
508
|
-
jsx_runtime_1.jsx("dt", { style: metadataTermStyle, children: "Composition" }), jsx_runtime_1.jsx("dd", { style: metadataDescriptionStyle, children: jsx_runtime_1.jsx("code", { style: codeStyle, children: mode === 'current-composition'
|
|
509
|
-
? request.compositionId
|
|
510
|
-
: newCompositionValues.id }) })
|
|
511
|
-
] }), jsx_runtime_1.jsxs("div", { style: metadataRowStyle, children: [
|
|
512
|
-
jsx_runtime_1.jsx("dt", { style: metadataTermStyle, children: "Destination" }), jsx_runtime_1.jsx("dd", { style: metadataDescriptionStyle, children: jsx_runtime_1.jsx("code", { style: codeStyle, children: (_b = selectedPlan === null || selectedPlan === void 0 ? void 0 : selectedPlan.filePath) !== null && _b !== void 0 ? _b : 'Reviewing destination…' }) })
|
|
513
|
-
] }), (selectedPlan === null || selectedPlan === void 0 ? void 0 : selectedPlan.expectedFileState.exists) ? (jsx_runtime_1.jsxs("div", { style: metadataRowStyle, children: [
|
|
514
|
-
jsx_runtime_1.jsx("dt", { style: metadataTermStyle, children: "File change" }), jsx_runtime_1.jsx("dd", { style: overwriteStyle, children: "Replace existing source file" })
|
|
515
|
-
] })) : null] }), dependenciesToReview.length > 0 ? (jsx_runtime_1.jsxs("section", { style: sectionStyle, "aria-labelledby": "element-install-dependencies", children: [
|
|
516
|
-
jsx_runtime_1.jsx("h3", { id: "element-install-dependencies", style: sectionTitleStyle, children: "Dependencies" }), jsx_runtime_1.jsx("ul", { style: dependencyListStyle, role: "list", children: dependenciesToReview.map((packageName) => {
|
|
517
|
-
const willInstall = missingPackages.includes(packageName);
|
|
518
|
-
return (jsx_runtime_1.jsxs("li", { style: dependencyRowStyle, children: [
|
|
519
|
-
jsx_runtime_1.jsx("div", { style: dependencyNameStyle, children: packageName }), jsx_runtime_1.jsx("div", { style: willInstall
|
|
520
|
-
? dependencyInstallStatusStyle
|
|
521
|
-
: dependencyInstalledStatusStyle, children: willInstall ? 'Will be installed' : 'Installed' })
|
|
522
|
-
] }, packageName));
|
|
523
|
-
}) })
|
|
534
|
+
jsx_runtime_1.jsx(NewComposition_1.NewCompositionFields, { heightValidationMessage: heightValidationMessage, inputRef: inputRef, nameValidationMessage: nameValidationMessage, setValues: setNewCompositionValues, values: newCompositionValues, widthValidationMessage: widthValidationMessage }), (activeNewCompositionPlanState === null || activeNewCompositionPlanState === void 0 ? void 0 : activeNewCompositionPlanState.type) === 'error' ? (jsx_runtime_1.jsx(ValidationMessage_1.ValidationMessage, { align: "flex-start", message: activeNewCompositionPlanState.reason, type: "error" })) : null] })) : null, (selectedPlan === null || selectedPlan === void 0 ? void 0 : selectedPlan.expectedFileState.exists) ? (jsx_runtime_1.jsx("p", { style: overwriteStyle, role: "status", children: "This will replace the existing Element source file." })) : null, missingPackages.length > 0 ? (jsx_runtime_1.jsxs("section", { style: sectionStyle, "aria-labelledby": "element-install-dependencies", children: [
|
|
535
|
+
jsx_runtime_1.jsx("h3", { id: "element-install-dependencies", style: sectionTitleStyle, children: "Packages to install" }), jsx_runtime_1.jsx("ul", { style: dependencyListStyle, role: "list", children: missingPackages.map((packageName) => (jsx_runtime_1.jsx("li", { style: dependencyNameStyle, children: packageName }, packageName))) })
|
|
524
536
|
] })) : null, jsx_runtime_1.jsxs("div", { style: warningStyle, children: [
|
|
525
|
-
jsx_runtime_1.jsx(ValidationMessage_1.WarningTriangle, { style: warningIconStyle }), jsx_runtime_1.jsxs("p", { style:
|
|
537
|
+
jsx_runtime_1.jsx(ValidationMessage_1.WarningTriangle, { style: warningIconStyle }), jsx_runtime_1.jsxs("p", { style: installWarningDescriptionStyle, children: ["This adds executable source code to your project, with access to your files and the network.", usesBrowserDependencyResolution || missingPackages.length === 0
|
|
526
538
|
? null
|
|
527
|
-
: ' Package lifecycle scripts may also run during installation
|
|
539
|
+
: ' Package lifecycle scripts may also run during installation.'] })
|
|
528
540
|
] }), jsx_runtime_1.jsxs("details", { style: sourceDetailsStyle, children: [
|
|
529
541
|
jsx_runtime_1.jsx("summary", { style: sourceSummaryStyle, children: "Source code" }), jsx_runtime_1.jsx("pre", { style: sourceCodeBlockStyle, children: jsx_runtime_1.jsx("code", { style: sourceCodeStyle, children: makeSourceControlsVisible(request.element.sourceCode) }) })
|
|
530
542
|
] })
|
|
@@ -15,6 +15,7 @@ const panelStyle = {
|
|
|
15
15
|
};
|
|
16
16
|
const iframeStyle = {
|
|
17
17
|
border: 0,
|
|
18
|
+
colorScheme: 'dark',
|
|
18
19
|
flex: 1,
|
|
19
20
|
minHeight: 0,
|
|
20
21
|
width: '100%',
|
|
@@ -31,10 +32,11 @@ const ElementLibraryModal = ({ name, url }) => {
|
|
|
31
32
|
iframe.setAttribute('credentialless', '');
|
|
32
33
|
const iframeUrl = new URL(url);
|
|
33
34
|
iframeUrl.searchParams.set('remotion-studio', 'true');
|
|
35
|
+
iframeUrl.searchParams.set('docusaurus-theme', 'dark');
|
|
34
36
|
iframe.src = iframeUrl.toString();
|
|
35
37
|
}, [url]);
|
|
36
38
|
return (jsx_runtime_1.jsxs(DismissableModal_1.DismissableModal, { panelStyle: panelStyle, children: [
|
|
37
|
-
jsx_runtime_1.jsx(ModalHeader_1.ModalHeader, { title: name }), jsx_runtime_1.jsx("iframe", { ref: iframeRef, allow: "local-network-access; loopback-network", style: iframeStyle, title: `${name} library` })
|
|
39
|
+
jsx_runtime_1.jsx(ModalHeader_1.ModalHeader, { title: name }), jsx_runtime_1.jsx("iframe", { ref: iframeRef, allow: "local-network-access; loopback-network", "data-remotion-element-library": "", style: iframeStyle, title: `${name} library` })
|
|
38
40
|
] }));
|
|
39
41
|
};
|
|
40
42
|
exports.ElementLibraryModal = ElementLibraryModal;
|
|
@@ -5,7 +5,8 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const colors_1 = require("../helpers/colors");
|
|
7
7
|
const copy_text_1 = require("../helpers/copy-text");
|
|
8
|
-
const
|
|
8
|
+
const use_copy_feedback_1 = require("../helpers/use-copy-feedback");
|
|
9
|
+
const copy_1 = require("../icons/copy");
|
|
9
10
|
const CodingAgentButton_1 = require("./CodingAgentButton");
|
|
10
11
|
const InlineAction_1 = require("./InlineAction");
|
|
11
12
|
const ModalFooter_1 = require("./ModalFooter");
|
|
@@ -63,23 +64,32 @@ const FixComputedValueModal = ({ state }) => {
|
|
|
63
64
|
const prompt = `/remotion-interactivity ${state.context} make "${state.prop}" interactive`;
|
|
64
65
|
const installCommand = 'npx remotion skills add';
|
|
65
66
|
const hasCodingAgent = ((_a = codingAgentInfo === null || codingAgentInfo === void 0 ? void 0 : codingAgentInfo.installedCodingAgents.length) !== null && _a !== void 0 ? _a : 0) > 0;
|
|
67
|
+
const { copied: promptCopied, markCopied: markPromptCopied } = (0, use_copy_feedback_1.useCopyFeedback)();
|
|
68
|
+
const { copied: installCommandCopied, markCopied: markInstallCommandCopied } = (0, use_copy_feedback_1.useCopyFeedback)();
|
|
66
69
|
const onCopyPrompt = (0, react_1.useCallback)(() => {
|
|
67
|
-
(0, copy_text_1.copyText)(prompt)
|
|
70
|
+
(0, copy_text_1.copyText)(prompt)
|
|
71
|
+
.then(markPromptCopied)
|
|
72
|
+
.catch((err) => {
|
|
68
73
|
(0, NotificationCenter_1.showNotification)(`Could not copy: ${err.message}`, 2000);
|
|
69
74
|
});
|
|
70
|
-
}, [prompt]);
|
|
75
|
+
}, [markPromptCopied, prompt]);
|
|
71
76
|
const onCopyInstallCommand = (0, react_1.useCallback)(() => {
|
|
72
|
-
(0, copy_text_1.copyText)(installCommand)
|
|
77
|
+
(0, copy_text_1.copyText)(installCommand)
|
|
78
|
+
.then(markInstallCommandCopied)
|
|
79
|
+
.catch((err) => {
|
|
73
80
|
(0, NotificationCenter_1.showNotification)(`Could not copy: ${err.message}`, 2000);
|
|
74
81
|
});
|
|
75
|
-
}, [installCommand]);
|
|
76
|
-
const
|
|
77
|
-
return jsx_runtime_1.jsx(
|
|
78
|
-
}, []);
|
|
82
|
+
}, [installCommand, markInstallCommandCopied]);
|
|
83
|
+
const renderPromptCopyAction = (0, react_1.useCallback)((color) => {
|
|
84
|
+
return jsx_runtime_1.jsx(copy_1.CopyIcon, { copied: promptCopied, color: color, style: copyIcon });
|
|
85
|
+
}, [promptCopied]);
|
|
86
|
+
const renderInstallCommandCopyAction = (0, react_1.useCallback)((color) => {
|
|
87
|
+
return (jsx_runtime_1.jsx(copy_1.CopyIcon, { copied: installCommandCopied, color: color, style: copyIcon }));
|
|
88
|
+
}, [installCommandCopied]);
|
|
79
89
|
return (jsx_runtime_1.jsxs(DismissableModal_1.DismissableModal, { panelStyle: panelStyle, children: [
|
|
80
90
|
jsx_runtime_1.jsx(ModalHeader_1.ModalHeader, { title: "Fix computed value" }), jsx_runtime_1.jsxs("div", { style: container, children: [state.remotionInteractivitySkillAvailable ? null : (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
81
91
|
jsx_runtime_1.jsx("div", { style: text, children: "First, install the Remotion Agent Skills:" }), jsx_runtime_1.jsxs("div", { style: commandField, children: [
|
|
82
|
-
jsx_runtime_1.jsx("pre", { style: code, children: installCommand }), jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, onClick: onCopyInstallCommand, renderAction:
|
|
92
|
+
jsx_runtime_1.jsx("pre", { style: code, children: installCommand }), jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, onClick: onCopyInstallCommand, renderAction: renderInstallCommandCopyAction, title: "Copy command" })
|
|
83
93
|
] })
|
|
84
94
|
] })), jsx_runtime_1.jsx("div", { style: {
|
|
85
95
|
...text,
|
|
@@ -87,7 +97,7 @@ const FixComputedValueModal = ({ state }) => {
|
|
|
87
97
|
}, children: state.remotionInteractivitySkillAvailable
|
|
88
98
|
? 'Paste this prompt into your coding agent to make this value editable in Studio:'
|
|
89
99
|
: 'Then, paste this prompt into your coding agent:' }), jsx_runtime_1.jsxs("div", { style: commandField, children: [
|
|
90
|
-
jsx_runtime_1.jsx("pre", { style: code, children: prompt }), jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, onClick: onCopyPrompt, renderAction:
|
|
100
|
+
jsx_runtime_1.jsx("pre", { style: code, children: prompt }), jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, onClick: onCopyPrompt, renderAction: renderPromptCopyAction, title: "Copy prompt" })
|
|
91
101
|
] })
|
|
92
102
|
] }), hasCodingAgent ? (jsx_runtime_1.jsx(ModalFooter_1.ModalFooterContainer, { style: footer, children: jsx_runtime_1.jsx(CodingAgentButton_1.CodingAgentButton, { label: "Open in", prompt: prompt, size: "compact", style: null }) })) : null] }));
|
|
93
103
|
};
|
|
@@ -107,6 +107,42 @@ const InlineCaptionInspector = ({ captions, controls, expanded, nodePath, onTogg
|
|
|
107
107
|
setPropStatuses,
|
|
108
108
|
validatedLocation.source,
|
|
109
109
|
]);
|
|
110
|
+
const replaceCaptions = (0, react_1.useCallback)((nextCaptions) => {
|
|
111
|
+
if (!canSave || clientId === null) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
setDraftCaptions(nextCaptions);
|
|
115
|
+
setDragOverrides(nodePath, 'captions', remotion_1.Internals.makeStaticDragOverride(nextCaptions));
|
|
116
|
+
savedCaptions.current = nextCaptions;
|
|
117
|
+
(0, save_sequence_prop_1.saveSequenceProps)({
|
|
118
|
+
changes: [
|
|
119
|
+
{
|
|
120
|
+
fileName: validatedLocation.source,
|
|
121
|
+
nodePath,
|
|
122
|
+
fieldKey: 'captions',
|
|
123
|
+
value: nextCaptions,
|
|
124
|
+
defaultValue: null,
|
|
125
|
+
schema: controls.schema,
|
|
126
|
+
},
|
|
127
|
+
],
|
|
128
|
+
addedKeyframes: null,
|
|
129
|
+
movedKeyframes: null,
|
|
130
|
+
setPropStatuses,
|
|
131
|
+
clientId,
|
|
132
|
+
undoLabel: 'Import captions',
|
|
133
|
+
redoLabel: 'Import captions again',
|
|
134
|
+
});
|
|
135
|
+
clearDragOverrides(nodePath);
|
|
136
|
+
}, [
|
|
137
|
+
canSave,
|
|
138
|
+
clearDragOverrides,
|
|
139
|
+
clientId,
|
|
140
|
+
controls.schema,
|
|
141
|
+
nodePath,
|
|
142
|
+
setDragOverrides,
|
|
143
|
+
setPropStatuses,
|
|
144
|
+
validatedLocation.source,
|
|
145
|
+
]);
|
|
110
146
|
const readOnlyTitle = readOnlyStudio
|
|
111
147
|
? 'Caption editing is unavailable in read-only Studio'
|
|
112
148
|
: clientId === null
|
|
@@ -114,6 +150,6 @@ const InlineCaptionInspector = ({ captions, controls, expanded, nodePath, onTogg
|
|
|
114
150
|
: (captionStatus === null || captionStatus === void 0 ? void 0 : captionStatus.status) === 'computed'
|
|
115
151
|
? 'Captions must be a direct inline JSX array to edit them'
|
|
116
152
|
: 'Captions are not ready for editing';
|
|
117
|
-
return (jsx_runtime_1.jsx(CaptionInspector_1.CaptionInspector, { captions: draftCaptions, expanded: expanded, onTextChange: updateCaptions, onTextSave: saveCaptions, onTextCancel: cancelCaptions, onToggle: onToggle, readOnly: !canSave, readOnlyTitle: canSave ? null : readOnlyTitle }));
|
|
153
|
+
return (jsx_runtime_1.jsx(CaptionInspector_1.CaptionInspector, { captions: draftCaptions, expanded: expanded, onTextChange: updateCaptions, onTextSave: saveCaptions, onTextCancel: cancelCaptions, onToggle: onToggle, readOnly: !canSave, readOnlyTitle: canSave ? null : readOnlyTitle, onReplaceCaptions: canSave ? replaceCaptions : null }));
|
|
118
154
|
};
|
|
119
155
|
exports.InlineCaptionInspector = InlineCaptionInspector;
|
|
@@ -4,7 +4,8 @@ exports.InspectorLocationCopy = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const format_file_location_1 = require("../helpers/format-file-location");
|
|
7
|
-
const
|
|
7
|
+
const use_copy_feedback_1 = require("../helpers/use-copy-feedback");
|
|
8
|
+
const copy_1 = require("../icons/copy");
|
|
8
9
|
const InlineAction_1 = require("./InlineAction");
|
|
9
10
|
const InspectorOpenInEditor_1 = require("./InspectorOpenInEditor");
|
|
10
11
|
const NotificationCenter_1 = require("./Notifications/NotificationCenter");
|
|
@@ -38,6 +39,7 @@ const icon = {
|
|
|
38
39
|
const InspectorLocationCopy = ({ children, location, name, openInEditorLocation }) => {
|
|
39
40
|
const [hovered, setHovered] = (0, react_1.useState)(false);
|
|
40
41
|
const [focusedWithin, setFocusedWithin] = (0, react_1.useState)(false);
|
|
42
|
+
const { copied, markCopied } = (0, use_copy_feedback_1.useCopyFeedback)();
|
|
41
43
|
const contextForAgents = (0, react_1.useMemo)(() => {
|
|
42
44
|
return (0, format_file_location_1.formatContextForAgents)({
|
|
43
45
|
location,
|
|
@@ -46,17 +48,20 @@ const InspectorLocationCopy = ({ children, location, name, openInEditorLocation
|
|
|
46
48
|
});
|
|
47
49
|
}, [location, name]);
|
|
48
50
|
const renderCopyAction = (0, react_1.useCallback)((color) => {
|
|
49
|
-
return jsx_runtime_1.jsx(
|
|
50
|
-
}, []);
|
|
51
|
+
return jsx_runtime_1.jsx(copy_1.CopyIcon, { copied: copied, style: icon, color: color });
|
|
52
|
+
}, [copied]);
|
|
51
53
|
const onCopy = (0, react_1.useCallback)((event) => {
|
|
52
54
|
event.stopPropagation();
|
|
53
55
|
if (!contextForAgents) {
|
|
54
56
|
return;
|
|
55
57
|
}
|
|
56
|
-
navigator.clipboard
|
|
58
|
+
navigator.clipboard
|
|
59
|
+
.writeText(contextForAgents)
|
|
60
|
+
.then(markCopied)
|
|
61
|
+
.catch((err) => {
|
|
57
62
|
(0, NotificationCenter_1.showNotification)(`Could not copy to clipboard: ${err.message}`, 2000);
|
|
58
63
|
});
|
|
59
|
-
}, [contextForAgents]);
|
|
64
|
+
}, [contextForAgents, markCopied]);
|
|
60
65
|
const showAction = hovered || focusedWithin;
|
|
61
66
|
return (jsx_runtime_1.jsxs("div", { "aria-label": "Inspector source location", role: "group", style: row, onPointerEnter: () => setHovered(true), onPointerLeave: () => setHovered(false), onFocus: () => setFocusedWithin(true), onBlur: () => setFocusedWithin(false), children: [
|
|
62
67
|
jsx_runtime_1.jsx("div", { style: content, children: children }), contextForAgents || openInEditorLocation ? (jsx_runtime_1.jsxs("div", { style: {
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ElementLibraryButton = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
|
-
const browser_studio_operations_1 = require("../../helpers/browser-studio-operations");
|
|
7
6
|
const colors_1 = require("../../helpers/colors");
|
|
8
7
|
const browse_elements_1 = require("../../icons/browse-elements");
|
|
9
8
|
const caret_1 = require("../../icons/caret");
|
|
@@ -23,13 +22,6 @@ const browseElementsIconContainerStyle = {
|
|
|
23
22
|
marginRight: -2,
|
|
24
23
|
width: 22,
|
|
25
24
|
};
|
|
26
|
-
const browseElementsArrowStyle = {
|
|
27
|
-
display: 'inline-block',
|
|
28
|
-
height: 12,
|
|
29
|
-
marginLeft: 4,
|
|
30
|
-
verticalAlign: -2,
|
|
31
|
-
width: 12,
|
|
32
|
-
};
|
|
33
25
|
const elementLibraryDropdownStyle = {
|
|
34
26
|
borderRadius: 4,
|
|
35
27
|
height: 28,
|
|
@@ -63,19 +55,14 @@ const ElementLibraryButton = () => {
|
|
|
63
55
|
var _a;
|
|
64
56
|
const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
|
|
65
57
|
const { studioRuntimeConfig } = (0, SettingsContext_1.useSettings)();
|
|
66
|
-
const isBrowserStudio = (0, browser_studio_operations_1.getBrowserStudioOperations)() !== null;
|
|
67
58
|
const elementLibraries = (_a = studioRuntimeConfig === null || studioRuntimeConfig === void 0 ? void 0 : studioRuntimeConfig.elementLibraries) !== null && _a !== void 0 ? _a : noElementLibraries;
|
|
68
59
|
const openElementLibrary = (0, react_1.useCallback)((name, url) => {
|
|
69
|
-
if (isBrowserStudio) {
|
|
70
|
-
window.open(url, '_blank', 'noopener,noreferrer');
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
60
|
setSelectedModal({
|
|
74
61
|
type: 'element-library',
|
|
75
62
|
name,
|
|
76
63
|
url,
|
|
77
64
|
});
|
|
78
|
-
}, [
|
|
65
|
+
}, [setSelectedModal]);
|
|
79
66
|
const openElementsLibrary = (0, react_1.useCallback)(() => {
|
|
80
67
|
openElementLibrary('Remotion Elements', 'https://www.remotion.dev/elements');
|
|
81
68
|
}, [openElementLibrary]);
|
|
@@ -129,11 +116,9 @@ const ElementLibraryButton = () => {
|
|
|
129
116
|
],
|
|
130
117
|
},
|
|
131
118
|
], [elementLibraries, openElementLibrary, openElementsLibrary]);
|
|
132
|
-
if (elementLibraries.length > 0
|
|
119
|
+
if (elementLibraries.length > 0) {
|
|
133
120
|
return (jsx_runtime_1.jsx(SegmentedButton_1.SegmentedButton, { segments: elementLibraryDropdownSegments, style: elementLibraryDropdownStyle, title: null }));
|
|
134
121
|
}
|
|
135
|
-
return (jsx_runtime_1.
|
|
136
|
-
? 'Open the Remotion Elements library in a new tab. Install an Element there to send it to this composition.'
|
|
137
|
-
: 'Browse the Remotion Elements library inside Studio.', children: ["Browse Elements", isBrowserStudio ? (jsx_runtime_1.jsx("svg", { "aria-hidden": "true", viewBox: "0 0 16 16", style: browseElementsArrowStyle, children: jsx_runtime_1.jsx("path", { d: "M4 12 12 4M6 4h6v6", fill: "none", stroke: colors_1.CURRENT_COLOR, strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5" }) })) : null] }));
|
|
122
|
+
return (jsx_runtime_1.jsx(common_1.InspectorQuickAction, { disabled: false, iconContainerStyle: browseElementsIconContainerStyle, onClick: openElementsLibrary, renderIcon: (color) => (jsx_runtime_1.jsx(browse_elements_1.BrowseElementsIcon, { color: color, style: browseElementsIconStyle })), title: "Browse the Remotion Elements library inside Studio.", children: "Browse Elements" }));
|
|
138
123
|
};
|
|
139
124
|
exports.ElementLibraryButton = ElementLibraryButton;
|
|
@@ -22,7 +22,6 @@ const CollapsibleInspectorSectionHeader_1 = require("./InspectorPanel/Collapsibl
|
|
|
22
22
|
const common_1 = require("./InspectorPanel/common");
|
|
23
23
|
const inspector_section_collapse_1 = require("./InspectorPanel/inspector-section-collapse");
|
|
24
24
|
const styles_1 = require("./InspectorPanel/styles");
|
|
25
|
-
const asset_search_1 = require("./QuickSwitcher/asset-search");
|
|
26
25
|
const border_radius_representation_1 = require("./Timeline/border-radius-representation");
|
|
27
26
|
const save_sequence_prop_1 = require("./Timeline/save-sequence-prop");
|
|
28
27
|
const timeline_asset_link_1 = require("./Timeline/timeline-asset-link");
|
|
@@ -226,7 +225,6 @@ const InspectorSequenceSection = ({ sequence, readOnlyStudio, validatedLocation,
|
|
|
226
225
|
const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
|
|
227
226
|
const selectAsset = (0, use_select_asset_1.useSelectAsset)();
|
|
228
227
|
const mediaSrc = (0, timeline_asset_link_1.getTimelineAssetSrcFromSchema)(sequence.controls, runtimeValues);
|
|
229
|
-
const assetSelectionInitialQuery = (0, asset_search_1.getAssetSearchQueryForComponent)(sequence.controls.componentIdentity);
|
|
230
228
|
const getSourceAction = (0, react_1.useCallback)((src) => {
|
|
231
229
|
var _a;
|
|
232
230
|
const linkInfo = (0, timeline_asset_link_1.getTimelineAssetLinkInfo)(src);
|
|
@@ -258,9 +256,8 @@ const InspectorSequenceSection = ({ sequence, readOnlyStudio, validatedLocation,
|
|
|
258
256
|
}, [getSourceAction, mediaSrc]);
|
|
259
257
|
const assetSelectionContextValue = (0, react_1.useMemo)(() => ({
|
|
260
258
|
getSourceAction,
|
|
261
|
-
initialQuery: assetSelectionInitialQuery,
|
|
262
259
|
sourceAction,
|
|
263
|
-
}), [
|
|
260
|
+
}), [getSourceAction, sourceAction]);
|
|
264
261
|
const getIsExpanded = (0, react_1.useCallback)((candidate) => {
|
|
265
262
|
return !collapsedKeys.has(getInspectorExpansionKey(candidate));
|
|
266
263
|
}, [collapsedKeys]);
|
|
@@ -62,7 +62,7 @@ const MenuSubItem = ({ label, leaveLeftSpace, leftItem, onActionChosen, id, sele
|
|
|
62
62
|
};
|
|
63
63
|
}, [selected, disabled]);
|
|
64
64
|
const onPointerUp = (0, react_1.useCallback)((e) => {
|
|
65
|
-
if (disabled) {
|
|
65
|
+
if (disabled || e.button !== 0) {
|
|
66
66
|
return;
|
|
67
67
|
}
|
|
68
68
|
if (subMenu) {
|
|
@@ -10,7 +10,7 @@ const MenuCompositionName_1 = require("./MenuCompositionName");
|
|
|
10
10
|
const Spinner_1 = require("./Spinner");
|
|
11
11
|
const cwd = {
|
|
12
12
|
fontSize: 13,
|
|
13
|
-
|
|
13
|
+
color: colors_1.WHITE_ALPHA_80,
|
|
14
14
|
display: 'flex',
|
|
15
15
|
alignItems: 'center',
|
|
16
16
|
justifyContent: 'center',
|
|
@@ -19,9 +19,14 @@ const cwd = {
|
|
|
19
19
|
};
|
|
20
20
|
const spinnerSize = 14;
|
|
21
21
|
const spinner = {
|
|
22
|
+
opacity: 0.8,
|
|
22
23
|
position: 'relative',
|
|
23
24
|
width: spinnerSize,
|
|
24
25
|
};
|
|
26
|
+
const openInEditor = {
|
|
27
|
+
display: 'flex',
|
|
28
|
+
opacity: 0.8,
|
|
29
|
+
};
|
|
25
30
|
const noSpinner = {
|
|
26
31
|
position: 'relative',
|
|
27
32
|
width: spinnerSize,
|
|
@@ -48,7 +53,7 @@ const MenuBuildIndicator = ({ mobileLayout }) => {
|
|
|
48
53
|
};
|
|
49
54
|
}, []);
|
|
50
55
|
return (jsx_runtime_1.jsxs("div", { style: cwd, title: window.remotion_cwd, children: [
|
|
51
|
-
jsx_runtime_1.jsx(layout_1.Spacing, { x: mobileLayout ? 0.5 : 2 }), window.remotion_projectName, jsx_runtime_1.jsx(MenuCompositionName_1.MenuCompositionName, {}), jsx_runtime_1.jsx(layout_1.Spacing, { x: 1 }), jsx_runtime_1.jsx(InspectorOpenInEditor_1.InspectorOpenInEditor, { location: folderLocation, locationType: "folder" }), mobileLayout ? null : jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), mobileLayout ? (isBuilding ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
56
|
+
jsx_runtime_1.jsx(layout_1.Spacing, { x: mobileLayout ? 0.5 : 2 }), window.remotion_projectName, jsx_runtime_1.jsx(MenuCompositionName_1.MenuCompositionName, {}), jsx_runtime_1.jsx(layout_1.Spacing, { x: 1 }), jsx_runtime_1.jsx("div", { style: openInEditor, children: jsx_runtime_1.jsx(InspectorOpenInEditor_1.InspectorOpenInEditor, { location: folderLocation, locationType: "folder" }) }), mobileLayout ? null : jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), mobileLayout ? (isBuilding ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
52
57
|
jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx("div", { style: spinner, children: jsx_runtime_1.jsx(Spinner_1.Spinner, { duration: 0.5, size: spinnerSize, color: colors_1.WHITE_ALPHA_80 }) })
|
|
53
58
|
] })) : null) : isBuilding ? (jsx_runtime_1.jsx("div", { style: spinner, children: jsx_runtime_1.jsx(Spinner_1.Spinner, { duration: 0.5, size: spinnerSize, color: colors_1.WHITE_ALPHA_80 }) })) : (jsx_runtime_1.jsx("div", { style: noSpinner }))] }));
|
|
54
59
|
};
|