@remotion/studio 4.0.499 → 4.0.501
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/Studio.js +1 -1
- package/dist/api/delete-static-file.js +8 -3
- package/dist/api/rename-static-file.js +8 -0
- package/dist/api/watch-public-folder.js +2 -1
- package/dist/api/watch-static-file.js +2 -1
- package/dist/api/write-static-file.js +8 -3
- package/dist/components/AssetSelector.js +11 -7
- package/dist/components/AssetSelectorItem.d.ts +25 -0
- package/dist/components/AssetSelectorItem.js +116 -80
- package/dist/components/Canvas.js +6 -1
- package/dist/components/CaptionInspector.d.ts +10 -0
- package/dist/components/CaptionInspector.js +24 -0
- package/dist/components/CaptionTextEditor.d.ts +9 -0
- package/dist/components/CaptionTextEditor.js +132 -0
- package/dist/components/CompositionSelector.js +2 -32
- package/dist/components/ControlButton.js +1 -0
- package/dist/components/CurrentAsset.js +3 -2
- package/dist/components/EditorContexts.d.ts +0 -1
- package/dist/components/EditorContexts.js +2 -2
- package/dist/components/ExplorerPanel.js +2 -1
- package/dist/components/ExplorerPanelRef.d.ts +2 -0
- package/dist/components/FpsCounter.js +3 -3
- package/dist/components/FullscreenToggle.js +2 -1
- package/dist/components/GlobalKeybindings.js +9 -1
- package/dist/components/InitialCompositionLoader.d.ts +1 -1
- package/dist/components/InlineAction.d.ts +2 -1
- package/dist/components/InlineAction.js +3 -2
- package/dist/components/InlineCaptionInspector.d.ts +11 -0
- package/dist/components/InlineCaptionInspector.js +108 -0
- package/dist/components/InlineDropdown.d.ts +1 -1
- package/dist/components/InlineDropdown.js +3 -2
- package/dist/components/InspectorPanel/AlignmentControls.d.ts +2 -2
- package/dist/components/InspectorPanel/AlignmentControls.js +5 -2
- package/dist/components/InspectorPanel/CompositionInspector.js +12 -9
- package/dist/components/InspectorPanel/CompositionMetadata.js +170 -57
- package/dist/components/InspectorPanel/ConnectedCompositionsSection.d.ts +2 -2
- package/dist/components/InspectorPanel/SelectedInspector.d.ts +1 -0
- package/dist/components/InspectorPanel/SelectedInspector.js +2 -2
- package/dist/components/InspectorPanel/SequenceInspectorHeader.d.ts +3 -3
- package/dist/components/InspectorPanel/SequenceSelectionInspector.d.ts +1 -0
- package/dist/components/InspectorPanel/SequenceSelectionInspector.js +10 -10
- package/dist/components/InspectorPanel/common.d.ts +17 -4
- package/dist/components/InspectorPanel/common.js +60 -6
- package/dist/components/InspectorPanel/inspector-section-collapse.d.ts +22 -0
- package/dist/components/InspectorPanel/inspector-section-collapse.js +165 -0
- package/dist/components/InspectorPanel/styles.js +7 -1
- package/dist/components/InspectorPanel/use-composition-actions.d.ts +3 -0
- package/dist/components/InspectorPanel/use-composition-actions.js +91 -5
- package/dist/components/InspectorPanel/use-track-for-selection.d.ts +1 -1
- package/dist/components/InspectorPanel.js +2 -2
- package/dist/components/InspectorSequenceSection.d.ts +2 -1
- package/dist/components/InspectorSequenceSection.js +279 -25
- package/dist/components/KeyboardShortcutsExplainer.js +4 -2
- package/dist/components/Menu/MenuItem.js +2 -1
- package/dist/components/MenuCompositionName.js +30 -7
- package/dist/components/MenuToolbar.d.ts +0 -1
- package/dist/components/MenuToolbar.js +15 -7
- package/dist/components/MobilePanel.d.ts +2 -1
- package/dist/components/MobilePanel.js +29 -25
- package/dist/components/ModalContainer.d.ts +1 -0
- package/dist/components/ModalContainer.js +2 -2
- package/dist/components/Modals.js +1 -1
- package/dist/components/NewComposition/DismissableModal.d.ts +1 -0
- package/dist/components/NewComposition/DismissableModal.js +2 -2
- package/dist/components/NewComposition/InputDragger.d.ts +7 -0
- package/dist/components/NewComposition/InputDragger.js +119 -8
- package/dist/components/OutlineToggle.d.ts +1 -3
- package/dist/components/OutlineToggle.js +2 -2
- package/dist/components/PreviewToolbar.js +10 -4
- package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.d.ts +7 -0
- package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +45 -0
- package/dist/components/QuickSwitcher/NoResults.d.ts +1 -1
- package/dist/components/QuickSwitcher/NoResults.js +1 -0
- package/dist/components/QuickSwitcher/QuickSwitcher.d.ts +10 -0
- package/dist/components/QuickSwitcher/QuickSwitcher.js +6 -2
- package/dist/components/QuickSwitcher/QuickSwitcherContent.d.ts +10 -0
- package/dist/components/QuickSwitcher/QuickSwitcherContent.js +95 -13
- package/dist/components/QuickSwitcher/QuickSwitcherResult.d.ts +4 -0
- package/dist/components/QuickSwitcher/QuickSwitcherResult.js +11 -8
- package/dist/components/QuickSwitcher/asset-search.d.ts +9 -0
- package/dist/components/QuickSwitcher/asset-search.js +42 -0
- package/dist/components/RenderQueue/ClientRenderQueueProcessor.d.ts +0 -1
- package/dist/components/RenderQueue/ClientRenderQueueProcessor.js +3 -14
- package/dist/components/RenderQueue/RenderQueueDownloadItem.js +2 -2
- package/dist/components/SelectedOutlineCropControls.d.ts +8 -0
- package/dist/components/SelectedOutlineCropControls.js +299 -0
- package/dist/components/SelectedOutlineElement.js +84 -47
- package/dist/components/SelectedOutlineOverlay.d.ts +2 -2
- package/dist/components/SelectedOutlineOverlay.js +147 -16
- package/dist/components/SequencePropsSubscriptionProvider.d.ts +2 -0
- package/dist/components/SequencePropsSubscriptionProvider.js +31 -3
- package/dist/components/ShowOutlinesProvider.js +4 -1
- package/dist/components/SidebarCollapserControls.d.ts +3 -1
- package/dist/components/SidebarCollapserControls.js +34 -29
- package/dist/components/SnappingToggle.d.ts +1 -3
- package/dist/components/SnappingToggle.js +2 -2
- package/dist/components/Timeline/Timeline.js +19 -5
- package/dist/components/Timeline/TimelineAssetField.d.ts +9 -1
- package/dist/components/Timeline/TimelineAssetField.js +53 -100
- package/dist/components/Timeline/TimelineClipboardKeybindings.d.ts +7 -3
- package/dist/components/Timeline/TimelineClipboardKeybindings.js +65 -38
- package/dist/components/Timeline/TimelineColorField.js +20 -1
- package/dist/components/Timeline/TimelineEffectPropItem.js +8 -77
- package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +8 -1
- package/dist/components/Timeline/TimelineHeightContainer.d.ts +2 -2
- package/dist/components/Timeline/TimelineKeyframeTracksContext.d.ts +3 -3
- package/dist/components/Timeline/TimelineList.d.ts +2 -2
- package/dist/components/Timeline/TimelinePrimitiveFieldValue.d.ts +7 -2
- package/dist/components/Timeline/TimelinePrimitiveFieldValue.js +10 -2
- package/dist/components/Timeline/TimelineRowChrome.d.ts +3 -0
- package/dist/components/Timeline/TimelineRowChrome.js +4 -3
- package/dist/components/Timeline/TimelineSelection.d.ts +9 -7
- package/dist/components/Timeline/TimelineSelection.js +17 -12
- package/dist/components/Timeline/TimelineSequence.js +2 -9
- package/dist/components/Timeline/TimelineSequenceItem.js +61 -15
- package/dist/components/Timeline/TimelineSequencePropItem.js +36 -85
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +0 -1
- package/dist/components/Timeline/TimelineTrack.d.ts +2 -2
- package/dist/components/Timeline/TimelineTrack.js +4 -2
- package/dist/components/Timeline/TimelineTracks.d.ts +2 -2
- package/dist/components/Timeline/border-radius-representation.d.ts +16 -0
- package/dist/components/Timeline/border-radius-representation.js +60 -0
- package/dist/components/Timeline/delete-selected-timeline-item.js +1 -6
- package/dist/components/Timeline/find-track-for-node-path-info.d.ts +1 -1
- package/dist/components/Timeline/get-sequence-context-menu-items.js +14 -12
- package/dist/components/Timeline/get-sequence-prop-reset-changes.d.ts +10 -0
- package/dist/components/Timeline/get-sequence-prop-reset-changes.js +33 -0
- package/dist/components/Timeline/reset-selected-timeline-props.js +20 -18
- package/dist/components/Timeline/save-effect-prop.d.ts +10 -0
- package/dist/components/Timeline/save-effect-prop.js +52 -1
- package/dist/components/Timeline/save-sequence-prop.d.ts +12 -1
- package/dist/components/Timeline/save-sequence-prop.js +25 -1
- package/dist/components/Timeline/should-show-track-in-timeline.d.ts +2 -2
- package/dist/components/Timeline/timeline-asset-link.js +17 -1
- package/dist/components/Timeline/timeline-field-display-utils.js +1 -0
- package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.d.ts +4 -0
- package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.js +9 -3
- package/dist/components/Timeline/use-timeline-asset-drop.js +4 -0
- package/dist/components/Timeline/use-timeline-height.d.ts +2 -2
- package/dist/components/TopPanel.js +2 -2
- package/dist/components/UndoRedoButtons.js +42 -11
- package/dist/components/composition-drop-preview.js +1 -0
- package/dist/components/handle-drop.d.ts +3 -2
- package/dist/components/handle-drop.js +2 -1
- package/dist/components/import-assets.d.ts +4 -2
- package/dist/components/import-assets.js +20 -7
- package/dist/components/menu-toolbar-height.d.ts +1 -0
- package/dist/components/menu-toolbar-height.js +4 -0
- package/dist/components/selected-outline-drag.d.ts +41 -4
- package/dist/components/selected-outline-drag.js +179 -2
- package/dist/components/selected-outline-geometry.d.ts +1 -0
- package/dist/components/selected-outline-measurement.d.ts +11 -0
- package/dist/components/selected-outline-measurement.js +64 -3
- package/dist/components/selected-outline-types.d.ts +44 -1
- package/dist/components/selected-outline-types.js +21 -1
- package/dist/components/use-element-overwrite-confirmation.d.ts +2 -0
- package/dist/components/use-element-overwrite-confirmation.js +73 -0
- package/dist/components/use-static-files.js +7 -2
- package/dist/error-overlay/react-overlay/effects/resolve-file-source.js +13 -2
- package/dist/error-overlay/remotion-overlay/Overlay.js +3 -3
- package/dist/error-overlay/remotion-overlay/ShortcutHint.js +2 -3
- package/dist/esm/{chunk-pk1zwsn1.js → chunk-n1kj09yv.js} +10618 -8002
- package/dist/esm/index.mjs +24 -8
- package/dist/esm/internals.mjs +10618 -8002
- package/dist/esm/previewEntry.mjs +40002 -37388
- package/dist/esm/renderEntry.mjs +1 -1
- package/dist/helpers/browser-studio-operations.d.ts +3 -0
- package/dist/helpers/browser-studio-operations.js +14 -0
- package/dist/helpers/calculate-timeline.d.ts +2 -2
- package/dist/helpers/calculate-timeline.js +8 -28
- package/dist/helpers/client-id.d.ts +0 -1
- package/dist/helpers/client-id.js +15 -10
- package/dist/helpers/download-blob.d.ts +1 -0
- package/dist/helpers/download-blob.js +15 -0
- package/dist/helpers/get-timeline-sequence-sort-key.d.ts +3 -10
- package/dist/helpers/get-timeline-sequence-sort-key.js +5 -13
- package/dist/helpers/inject-css.js +5 -3
- package/dist/helpers/interactivity-enabled.d.ts +1 -0
- package/dist/helpers/interactivity-enabled.js +7 -2
- package/dist/helpers/is-mac.d.ts +1 -0
- package/dist/helpers/is-mac.js +4 -0
- package/dist/helpers/open-in-editor.d.ts +5 -1
- package/dist/helpers/open-in-editor.js +39 -4
- package/dist/helpers/preview-server-events.js +46 -9
- package/dist/helpers/sort-by-nonce-history.js +97 -19
- package/dist/helpers/use-create-composition.js +8 -6
- package/dist/helpers/use-keybinding.js +2 -3
- package/dist/helpers/use-menu-structure.js +39 -1
- package/dist/hot-middleware-client/client.js +3 -3
- package/dist/icons/border-radius.d.ts +4 -0
- package/dist/icons/border-radius.js +8 -0
- package/dist/icons/caret.d.ts +1 -0
- package/dist/icons/caret.js +2 -2
- package/dist/icons/fullscreen.d.ts +4 -0
- package/dist/icons/fullscreen.js +6 -0
- package/dist/icons/pen.d.ts +5 -0
- package/dist/icons/pen.js +8 -0
- package/dist/previewEntry.js +1 -1
- package/dist/state/modals.d.ts +9 -0
- package/dist/state/timeline-sequence-hover.d.ts +17 -0
- package/dist/state/timeline-sequence-hover.js +33 -0
- package/package.json +13 -12
- package/dist/helpers/get-timeline-sequence-hash.d.ts +0 -6
- package/dist/helpers/get-timeline-sequence-hash.js +0 -33
|
@@ -5,7 +5,9 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const remotion_1 = require("remotion");
|
|
7
7
|
const colors_1 = require("../../helpers/colors");
|
|
8
|
+
const get_preview_file_type_1 = require("../../helpers/get-preview-file-type");
|
|
8
9
|
const is_composition_still_1 = require("../../helpers/is-composition-still");
|
|
10
|
+
const url_state_1 = require("../../helpers/url-state");
|
|
9
11
|
const use_keybinding_1 = require("../../helpers/use-keybinding");
|
|
10
12
|
const use_menu_structure_1 = require("../../helpers/use-menu-structure");
|
|
11
13
|
const modals_1 = require("../../state/modals");
|
|
@@ -14,14 +16,18 @@ const KeyboardShortcutsExplainer_1 = require("../KeyboardShortcutsExplainer");
|
|
|
14
16
|
const layout_1 = require("../layout");
|
|
15
17
|
const is_menu_item_1 = require("../Menu/is-menu-item");
|
|
16
18
|
const RemInput_1 = require("../NewComposition/RemInput");
|
|
19
|
+
const use_select_asset_1 = require("../use-select-asset");
|
|
20
|
+
const use_static_files_1 = require("../use-static-files");
|
|
17
21
|
const algolia_search_1 = require("./algolia-search");
|
|
18
22
|
const AlgoliaCredit_1 = require("./AlgoliaCredit");
|
|
23
|
+
const asset_search_1 = require("./asset-search");
|
|
19
24
|
const fuzzy_search_1 = require("./fuzzy-search");
|
|
20
25
|
const NoResults_1 = require("./NoResults");
|
|
21
26
|
const QuickSwitcherResult_1 = require("./QuickSwitcherResult");
|
|
22
27
|
const shared_1 = require("./shared");
|
|
23
28
|
const input = {
|
|
24
29
|
width: '100%',
|
|
30
|
+
borderRadius: 4,
|
|
25
31
|
};
|
|
26
32
|
const modeSelector = {
|
|
27
33
|
paddingLeft: 16,
|
|
@@ -57,8 +63,12 @@ const content = {
|
|
|
57
63
|
flexDirection: 'row',
|
|
58
64
|
alignItems: 'center',
|
|
59
65
|
};
|
|
66
|
+
const contentWithoutModeSelector = {
|
|
67
|
+
...content,
|
|
68
|
+
paddingTop: 16,
|
|
69
|
+
};
|
|
60
70
|
const stripQuery = (query) => {
|
|
61
|
-
if (query.startsWith('>') || query.startsWith('?')) {
|
|
71
|
+
if (query.startsWith('$') || query.startsWith('>') || query.startsWith('?')) {
|
|
62
72
|
return query.substring(1).trim();
|
|
63
73
|
}
|
|
64
74
|
return query.trim();
|
|
@@ -68,9 +78,14 @@ const mapQueryToMode = (query) => {
|
|
|
68
78
|
? 'commands'
|
|
69
79
|
: query.startsWith('?')
|
|
70
80
|
? 'docs'
|
|
71
|
-
: '
|
|
81
|
+
: query.startsWith('$')
|
|
82
|
+
? 'assets'
|
|
83
|
+
: 'compositions';
|
|
72
84
|
};
|
|
73
85
|
const mapModeToQuery = (mode) => {
|
|
86
|
+
if (mode === 'assets') {
|
|
87
|
+
return '$ ';
|
|
88
|
+
}
|
|
74
89
|
if (mode === 'commands') {
|
|
75
90
|
return '> ';
|
|
76
91
|
}
|
|
@@ -82,28 +97,42 @@ const mapModeToQuery = (mode) => {
|
|
|
82
97
|
}
|
|
83
98
|
throw new Error('no mode' + mode);
|
|
84
99
|
};
|
|
85
|
-
const QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio }) => {
|
|
100
|
+
const QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio, assetSelection, compositionSelection, }) => {
|
|
86
101
|
const { compositions } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
|
|
102
|
+
const staticFiles = (0, use_static_files_1.useStaticFiles)();
|
|
87
103
|
const [state, setState] = (0, react_1.useState)(() => {
|
|
88
104
|
return {
|
|
89
|
-
query:
|
|
105
|
+
query: assetSelection === null
|
|
106
|
+
? compositionSelection === null
|
|
107
|
+
? mapModeToQuery(initialMode)
|
|
108
|
+
: ''
|
|
109
|
+
: assetSelection.initialQuery,
|
|
90
110
|
selectedIndex: 0,
|
|
91
111
|
};
|
|
92
112
|
});
|
|
93
113
|
(0, react_1.useEffect)(() => {
|
|
94
114
|
setState({
|
|
95
|
-
query:
|
|
115
|
+
query: assetSelection === null
|
|
116
|
+
? compositionSelection === null
|
|
117
|
+
? mapModeToQuery(initialMode)
|
|
118
|
+
: ''
|
|
119
|
+
: assetSelection.initialQuery,
|
|
96
120
|
selectedIndex: 0,
|
|
97
121
|
});
|
|
98
|
-
}, [initialMode, invocationTimestamp]);
|
|
122
|
+
}, [assetSelection, compositionSelection, initialMode, invocationTimestamp]);
|
|
99
123
|
const inputRef = (0, react_1.useRef)(null);
|
|
100
124
|
const selectComposition = (0, InitialCompositionLoader_1.useSelectComposition)();
|
|
125
|
+
const selectAsset = (0, use_select_asset_1.useSelectAsset)();
|
|
101
126
|
const closeMenu = (0, react_1.useCallback)(() => undefined, []);
|
|
102
127
|
const actions = (0, use_menu_structure_1.useMenuStructure)(closeMenu, readOnlyStudio);
|
|
103
128
|
const [docResults, setDocResults] = (0, react_1.useState)({ type: 'initial' });
|
|
104
129
|
const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
|
|
105
130
|
const keybindings = (0, use_keybinding_1.useKeybinding)();
|
|
106
|
-
const mode =
|
|
131
|
+
const mode = assetSelection !== null
|
|
132
|
+
? 'assets'
|
|
133
|
+
: compositionSelection !== null
|
|
134
|
+
? 'compositions'
|
|
135
|
+
: mapQueryToMode(state.query);
|
|
107
136
|
const actualQuery = (0, react_1.useMemo)(() => {
|
|
108
137
|
return stripQuery(state.query);
|
|
109
138
|
}, [state.query]);
|
|
@@ -113,6 +142,12 @@ const QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio
|
|
|
113
142
|
}
|
|
114
143
|
return (0, use_menu_structure_1.makeSearchResults)(actions, setSelectedModal);
|
|
115
144
|
}, [actions, mode, setSelectedModal]);
|
|
145
|
+
const assetSearch = (0, react_1.useMemo)(() => {
|
|
146
|
+
return (0, asset_search_1.filterAssetsByType)({
|
|
147
|
+
assets: staticFiles,
|
|
148
|
+
query: actualQuery,
|
|
149
|
+
});
|
|
150
|
+
}, [actualQuery, staticFiles]);
|
|
116
151
|
const resultsArray = (0, react_1.useMemo)(() => {
|
|
117
152
|
if (mode === 'commands') {
|
|
118
153
|
return (0, fuzzy_search_1.fuzzySearch)(actualQuery, menuActions);
|
|
@@ -120,13 +155,40 @@ const QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio
|
|
|
120
155
|
if (mode === 'docs' && docResults.type === 'results') {
|
|
121
156
|
return docResults.results;
|
|
122
157
|
}
|
|
123
|
-
|
|
158
|
+
if (mode === 'assets') {
|
|
159
|
+
return (0, fuzzy_search_1.fuzzySearch)(assetSearch.query, assetSearch.assets.map((asset) => {
|
|
160
|
+
return {
|
|
161
|
+
id: 'asset-' + asset.name,
|
|
162
|
+
title: asset.name,
|
|
163
|
+
type: 'asset',
|
|
164
|
+
fileType: (0, get_preview_file_type_1.getPreviewFileType)(asset.name),
|
|
165
|
+
onSelected: () => {
|
|
166
|
+
if (assetSelection !== null) {
|
|
167
|
+
assetSelection.onSelected(asset);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
selectAsset(asset.name);
|
|
171
|
+
(0, url_state_1.pushUrl)(`/assets/${asset.name}`);
|
|
172
|
+
}
|
|
173
|
+
setSelectedModal(null);
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
}));
|
|
177
|
+
}
|
|
178
|
+
return (0, fuzzy_search_1.fuzzySearch)(actualQuery, compositions
|
|
179
|
+
.filter((c) => c.id !== (compositionSelection === null || compositionSelection === void 0 ? void 0 : compositionSelection.excludeCompositionId))
|
|
180
|
+
.map((c) => {
|
|
124
181
|
return {
|
|
125
182
|
id: 'composition-' + c.id,
|
|
126
183
|
title: c.id,
|
|
127
184
|
type: 'composition',
|
|
128
185
|
onSelected: () => {
|
|
129
186
|
var _a;
|
|
187
|
+
if (compositionSelection !== null) {
|
|
188
|
+
compositionSelection.onSelected(c);
|
|
189
|
+
setSelectedModal(null);
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
130
192
|
selectComposition(c, true);
|
|
131
193
|
setSelectedModal(null);
|
|
132
194
|
const selector = `.__remotion-composition[data-compname="${c.id}"]`;
|
|
@@ -146,6 +208,10 @@ const QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio
|
|
|
146
208
|
compositions,
|
|
147
209
|
menuActions,
|
|
148
210
|
docResults,
|
|
211
|
+
assetSearch,
|
|
212
|
+
assetSelection,
|
|
213
|
+
compositionSelection,
|
|
214
|
+
selectAsset,
|
|
149
215
|
selectComposition,
|
|
150
216
|
setSelectedModal,
|
|
151
217
|
]);
|
|
@@ -244,6 +310,14 @@ const QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio
|
|
|
244
310
|
}));
|
|
245
311
|
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
246
312
|
}, []);
|
|
313
|
+
const onAssetsSelected = (0, react_1.useCallback)(() => {
|
|
314
|
+
var _a;
|
|
315
|
+
setState((s) => ({
|
|
316
|
+
query: `$ ${stripQuery(s.query)}`,
|
|
317
|
+
selectedIndex: 0,
|
|
318
|
+
}));
|
|
319
|
+
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
320
|
+
}, []);
|
|
247
321
|
const onDocSearchSelected = (0, react_1.useCallback)(() => {
|
|
248
322
|
var _a;
|
|
249
323
|
setState((s) => ({
|
|
@@ -255,6 +329,13 @@ const QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio
|
|
|
255
329
|
}, []);
|
|
256
330
|
const showKeyboardShortcuts = mode === 'docs' && actualQuery.trim() === '';
|
|
257
331
|
const showSearchLoadingState = mode === 'docs' && docResults.type === 'loading';
|
|
332
|
+
const placeholder = mode === 'assets'
|
|
333
|
+
? 'Search assets...'
|
|
334
|
+
: mode === 'commands'
|
|
335
|
+
? 'Search actions...'
|
|
336
|
+
: mode === 'docs'
|
|
337
|
+
? 'Search documentation...'
|
|
338
|
+
: 'Search compositions...';
|
|
258
339
|
const container = (0, react_1.useMemo)(() => {
|
|
259
340
|
return {
|
|
260
341
|
width: showKeyboardShortcuts ? 800 : 500,
|
|
@@ -272,11 +353,12 @@ const QuickSwitcherContent = ({ initialMode, invocationTimestamp, readOnlyStudio
|
|
|
272
353
|
height: 300,
|
|
273
354
|
};
|
|
274
355
|
}, [showKeyboardShortcuts]);
|
|
275
|
-
return (jsx_runtime_1.jsxs("div", { style: container, children: [
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
356
|
+
return (jsx_runtime_1.jsxs("div", { style: container, children: [assetSelection === null && compositionSelection === null && (jsx_runtime_1.jsxs("div", { style: modeSelector, children: [
|
|
357
|
+
jsx_runtime_1.jsx("button", { onClick: onCompositionsSelected, style: mode === 'compositions' ? modeActive : modeInactive, type: "button", children: "Compositions" }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 1 }), jsx_runtime_1.jsx("button", { onClick: onAssetsSelected, style: mode === 'assets' ? modeActive : modeInactive, type: "button", children: "Assets" }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 1 }), jsx_runtime_1.jsx("button", { onClick: onActionsSelected, style: mode === 'commands' ? modeActive : modeInactive, type: "button", children: "Actions" }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 1 }), jsx_runtime_1.jsx("button", { onClick: onDocSearchSelected, style: mode === 'docs' ? modeActive : modeInactive, type: "button", children: "Documentation" })
|
|
358
|
+
] })), jsx_runtime_1.jsxs("div", { style: assetSelection === null && compositionSelection === null
|
|
359
|
+
? content
|
|
360
|
+
: contentWithoutModeSelector, children: [
|
|
361
|
+
jsx_runtime_1.jsx(RemInput_1.RemotionInput, { ref: inputRef, type: "text", style: input, autoFocus: true, status: "ok", value: state.query, onChange: onTextChange, placeholder: placeholder, rightAlign: false }), showKeyboardShortcuts ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
280
362
|
jsx_runtime_1.jsx(layout_1.Spacing, { x: 2 }),
|
|
281
363
|
" ",
|
|
282
364
|
jsx_runtime_1.jsx(AlgoliaCredit_1.AlgoliaCredit, {})
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import type { AssetFileType } from '../../helpers/get-preview-file-type';
|
|
2
3
|
type QuickSwitcherResultDetail = {
|
|
4
|
+
type: 'asset';
|
|
5
|
+
fileType: AssetFileType;
|
|
6
|
+
} | {
|
|
3
7
|
type: 'composition';
|
|
4
8
|
compositionType: 'composition' | 'still';
|
|
5
9
|
} | {
|
|
@@ -7,6 +7,7 @@ const colors_1 = require("../../helpers/colors");
|
|
|
7
7
|
const use_keybinding_1 = require("../../helpers/use-keybinding");
|
|
8
8
|
const still_1 = require("../../icons/still");
|
|
9
9
|
const video_1 = require("../../icons/video");
|
|
10
|
+
const AssetFileIcon_1 = require("../AssetFileIcon");
|
|
10
11
|
const layout_1 = require("../layout");
|
|
11
12
|
const shared_1 = require("./shared");
|
|
12
13
|
const container = {
|
|
@@ -15,7 +16,11 @@ const container = {
|
|
|
15
16
|
display: 'flex',
|
|
16
17
|
flexDirection: 'row',
|
|
17
18
|
alignItems: 'center',
|
|
18
|
-
cursor: '
|
|
19
|
+
cursor: 'default',
|
|
20
|
+
marginBottom: 1,
|
|
21
|
+
marginLeft: 4,
|
|
22
|
+
marginRight: 4,
|
|
23
|
+
borderRadius: 4,
|
|
19
24
|
};
|
|
20
25
|
const label = {
|
|
21
26
|
whiteSpace: 'nowrap',
|
|
@@ -26,8 +31,9 @@ const searchLabel = {
|
|
|
26
31
|
lineHeight: 1.25,
|
|
27
32
|
};
|
|
28
33
|
const iconStyle = {
|
|
29
|
-
width:
|
|
30
|
-
height:
|
|
34
|
+
width: 18,
|
|
35
|
+
height: 18,
|
|
36
|
+
flexShrink: 0,
|
|
31
37
|
};
|
|
32
38
|
const labelContainer = {
|
|
33
39
|
overflow: 'hidden',
|
|
@@ -75,10 +81,7 @@ const QuickSwitcherResult = ({ result, selected }) => {
|
|
|
75
81
|
const style = (0, react_1.useMemo)(() => {
|
|
76
82
|
return {
|
|
77
83
|
...container,
|
|
78
|
-
backgroundColor:
|
|
79
|
-
hovered,
|
|
80
|
-
selected,
|
|
81
|
-
}),
|
|
84
|
+
backgroundColor: hovered || selected ? colors_1.WHITE_ALPHA_06 : colors_1.TRANSPARENT,
|
|
82
85
|
};
|
|
83
86
|
}, [hovered, selected]);
|
|
84
87
|
const labelStyle = (0, react_1.useMemo)(() => {
|
|
@@ -92,7 +95,7 @@ const QuickSwitcherResult = ({ result, selected }) => {
|
|
|
92
95
|
fontSize: shared_1.QUICK_SWITCHER_RESULT_LABEL_FONT_SIZE,
|
|
93
96
|
};
|
|
94
97
|
}, [hovered, result.type, selected]);
|
|
95
|
-
return (jsx_runtime_1.jsxs("div", { ref: ref, style: style, onClick: result.onSelected, children: [result.type === 'composition' ? (result.compositionType === 'still' ? (jsx_runtime_1.jsx(still_1.StillIcon, { color: selected ? colors_1.WHITE : colors_1.LIGHT_TEXT, style: iconStyle })) : (jsx_runtime_1.jsx(video_1.FilmIcon, { color: selected ? colors_1.WHITE : colors_1.LIGHT_TEXT, style: iconStyle }))) : null, jsx_runtime_1.jsx(layout_1.Spacing, { x: 1 }), jsx_runtime_1.jsx("div", { style: labelContainer, children: result.type === 'search-result' ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
98
|
+
return (jsx_runtime_1.jsxs("div", { ref: ref, style: style, onClick: result.onSelected, children: [result.type === 'composition' ? (result.compositionType === 'still' ? (jsx_runtime_1.jsx(still_1.StillIcon, { color: selected || hovered ? colors_1.WHITE : colors_1.LIGHT_TEXT, style: iconStyle })) : (jsx_runtime_1.jsx(video_1.FilmIcon, { color: selected || hovered ? colors_1.WHITE : colors_1.LIGHT_TEXT, style: iconStyle }))) : result.type === 'asset' ? (jsx_runtime_1.jsx(AssetFileIcon_1.AssetFileIcon, { fileType: result.fileType, color: selected || hovered ? colors_1.WHITE : colors_1.LIGHT_TEXT, style: iconStyle })) : null, jsx_runtime_1.jsx(layout_1.Spacing, { x: 1 }), jsx_runtime_1.jsx("div", { style: labelContainer, children: result.type === 'search-result' ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
96
99
|
jsx_runtime_1.jsx("div", {
|
|
97
100
|
// eslint-disable-next-line react/no-danger
|
|
98
101
|
dangerouslySetInnerHTML: {
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { StaticFile } from '../../api/get-static-files';
|
|
2
|
+
export declare const filterAssetsByType: ({ assets, query, }: {
|
|
3
|
+
readonly assets: StaticFile[];
|
|
4
|
+
readonly query: string;
|
|
5
|
+
}) => {
|
|
6
|
+
readonly assets: StaticFile[];
|
|
7
|
+
readonly query: string;
|
|
8
|
+
};
|
|
9
|
+
export declare const getAssetSearchQueryForComponent: (componentIdentity: string | null) => string;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAssetSearchQueryForComponent = exports.filterAssetsByType = void 0;
|
|
4
|
+
const get_preview_file_type_1 = require("../../helpers/get-preview-file-type");
|
|
5
|
+
const typeFilterRegex = /(^|\s)type:([^\s]+)/gi;
|
|
6
|
+
const filterAssetsByType = ({ assets, query, }) => {
|
|
7
|
+
const typeFilters = [];
|
|
8
|
+
const queryWithoutTypeFilters = query
|
|
9
|
+
.replace(typeFilterRegex, (_match, whitespace, type) => {
|
|
10
|
+
typeFilters.push(type.toLowerCase());
|
|
11
|
+
return whitespace;
|
|
12
|
+
})
|
|
13
|
+
.replace(/\s+/g, ' ')
|
|
14
|
+
.trim();
|
|
15
|
+
if (typeFilters.length === 0) {
|
|
16
|
+
return {
|
|
17
|
+
assets,
|
|
18
|
+
query: queryWithoutTypeFilters,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
assets: assets.filter((asset) => {
|
|
23
|
+
return typeFilters.includes((0, get_preview_file_type_1.getPreviewFileType)(asset.name));
|
|
24
|
+
}),
|
|
25
|
+
query: queryWithoutTypeFilters,
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
exports.filterAssetsByType = filterAssetsByType;
|
|
29
|
+
const componentAssetTypes = {
|
|
30
|
+
'dev.remotion.media.Audio': 'audio',
|
|
31
|
+
'dev.remotion.media.Video': 'video',
|
|
32
|
+
'dev.remotion.remotion.AnimatedImage': 'image',
|
|
33
|
+
'dev.remotion.remotion.Img': 'image',
|
|
34
|
+
};
|
|
35
|
+
const getAssetSearchQueryForComponent = (componentIdentity) => {
|
|
36
|
+
if (componentIdentity === null) {
|
|
37
|
+
return '';
|
|
38
|
+
}
|
|
39
|
+
const assetType = componentAssetTypes[componentIdentity];
|
|
40
|
+
return assetType ? `type:${assetType} ` : '';
|
|
41
|
+
};
|
|
42
|
+
exports.getAssetSearchQueryForComponent = getAssetSearchQueryForComponent;
|
|
@@ -1,22 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ClientRenderQueueProcessor =
|
|
3
|
+
exports.ClientRenderQueueProcessor = void 0;
|
|
4
4
|
const web_renderer_1 = require("@remotion/web-renderer");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const save_render_output_1 = require("../../api/save-render-output");
|
|
7
|
+
const download_blob_1 = require("../../helpers/download-blob");
|
|
7
8
|
const context_1 = require("./context");
|
|
8
|
-
const downloadBlob = (blob, filename) => {
|
|
9
|
-
const url = URL.createObjectURL(blob);
|
|
10
|
-
const a = document.createElement('a');
|
|
11
|
-
a.href = url;
|
|
12
|
-
const cleanFilename = filename.includes('/')
|
|
13
|
-
? filename.substring(filename.lastIndexOf('/') + 1)
|
|
14
|
-
: filename;
|
|
15
|
-
a.download = cleanFilename;
|
|
16
|
-
a.click();
|
|
17
|
-
URL.revokeObjectURL(url);
|
|
18
|
-
};
|
|
19
|
-
exports.downloadBlob = downloadBlob;
|
|
20
9
|
const ClientRenderQueueProcessor = () => {
|
|
21
10
|
const { getAbortController, getCompositionForJob, updateClientJobProgress, markClientJobSaving, markClientJobDone, markClientJobFailed, markClientJobCancelled, setProcessJobCallback, } = (0, react_1.useContext)(context_1.RenderQueueContext);
|
|
22
11
|
const processStillJob = (0, react_1.useCallback)(async (job, signal) => {
|
|
@@ -126,7 +115,7 @@ const ClientRenderQueueProcessor = () => {
|
|
|
126
115
|
markClientJobSaving(job.id);
|
|
127
116
|
const getBlob = () => Promise.resolve(blob);
|
|
128
117
|
const downloadAndFinish = () => {
|
|
129
|
-
(0,
|
|
118
|
+
(0, download_blob_1.downloadBlob)(blob, job.outName);
|
|
130
119
|
markClientJobDone(job.id, metadata, getBlob);
|
|
131
120
|
};
|
|
132
121
|
if (window.remotion_isReadOnlyStudio) {
|
|
@@ -4,9 +4,9 @@ exports.RenderQueueDownloadItem = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const colors_1 = require("../../helpers/colors");
|
|
7
|
+
const download_blob_1 = require("../../helpers/download-blob");
|
|
7
8
|
const InlineAction_1 = require("../InlineAction");
|
|
8
9
|
const NotificationCenter_1 = require("../Notifications/NotificationCenter");
|
|
9
|
-
const ClientRenderQueueProcessor_1 = require("./ClientRenderQueueProcessor");
|
|
10
10
|
const RenderQueueDownloadItem = ({ job }) => {
|
|
11
11
|
const onClick = (0, react_1.useCallback)((e) => {
|
|
12
12
|
e.stopPropagation();
|
|
@@ -16,7 +16,7 @@ const RenderQueueDownloadItem = ({ job }) => {
|
|
|
16
16
|
job
|
|
17
17
|
.getBlob()
|
|
18
18
|
.then((blob) => {
|
|
19
|
-
(0,
|
|
19
|
+
(0, download_blob_1.downloadBlob)(blob, job.outName);
|
|
20
20
|
})
|
|
21
21
|
.catch((err) => {
|
|
22
22
|
(0, NotificationCenter_1.showNotification)(`Could not download file: ${err.message}`, 2000);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { SelectedOutline } from './selected-outline-geometry';
|
|
3
|
+
import { type SelectedOutlineTarget } from './selected-outline-types';
|
|
4
|
+
export declare const SelectedOutlineCropControls: React.FC<{
|
|
5
|
+
readonly outline: SelectedOutline;
|
|
6
|
+
readonly onDraggingChange: (dragging: boolean) => void;
|
|
7
|
+
readonly target: SelectedOutlineTarget | undefined;
|
|
8
|
+
}>;
|