@remotion/studio 4.0.465 → 4.0.466
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/components/CompositionSelectorItem.js +16 -79
- package/dist/components/EditorContent.js +1 -3
- package/dist/components/Menu/MenuItem.d.ts +1 -1
- package/dist/components/Modals.js +1 -1
- package/dist/components/NewComposition/MenuContent.js +1 -0
- package/dist/components/RenderButton.js +1 -0
- package/dist/components/RenderModal/RenderModalAdvanced.d.ts +1 -11
- package/dist/components/RenderModal/RenderModalAdvanced.js +4 -50
- package/dist/components/RenderModal/RenderModalEncoding.d.ts +37 -0
- package/dist/components/RenderModal/RenderModalEncoding.js +165 -0
- package/dist/components/RenderModal/RenderModalPicture.d.ts +1 -22
- package/dist/components/RenderModal/RenderModalPicture.js +6 -84
- package/dist/components/RenderModal/ServerRenderModal.d.ts +1 -0
- package/dist/components/RenderModal/ServerRenderModal.js +16 -4
- package/dist/components/RenderQueue/actions.d.ts +2 -1
- package/dist/components/RenderQueue/actions.js +2 -1
- package/dist/components/SidebarRenderButton.js +1 -0
- package/dist/components/Timeline/Timeline.js +6 -4
- package/dist/components/Timeline/TimelineEffectFieldRow.js +2 -1
- package/dist/components/Timeline/TimelineEffectGroupRow.d.ts +1 -0
- package/dist/components/Timeline/TimelineEffectGroupRow.js +18 -2
- package/dist/components/Timeline/TimelineExpandedRow.d.ts +1 -1
- package/dist/components/Timeline/TimelineExpandedRow.js +1 -1
- package/dist/components/Timeline/TimelineExpandedTrackKeyframes.d.ts +7 -0
- package/dist/components/Timeline/TimelineExpandedTrackKeyframes.js +123 -0
- package/dist/components/Timeline/TimelineSchemaField.js +2 -1
- package/dist/components/Timeline/TimelineStack/index.js +7 -47
- package/dist/components/Timeline/TimelineTracks.js +2 -16
- package/dist/components/Timeline/get-timeline-keyframes.d.ts +6 -0
- package/dist/components/Timeline/get-timeline-keyframes.js +22 -0
- package/dist/components/composition-menu-items.d.ts +12 -0
- package/dist/components/composition-menu-items.js +166 -0
- package/dist/esm/{chunk-pqk2qd0d.js → chunk-sa3dm85y.js} +3694 -3257
- package/dist/esm/internals.mjs +3694 -3257
- package/dist/esm/previewEntry.mjs +3443 -3006
- package/dist/esm/renderEntry.mjs +1 -1
- package/dist/helpers/make-render-command.d.ts +2 -2
- package/dist/helpers/make-render-command.js +2 -1
- package/dist/helpers/open-in-editor.d.ts +8 -0
- package/dist/helpers/open-in-editor.js +58 -1
- package/dist/helpers/render-modal-sections.d.ts +1 -1
- package/dist/helpers/render-modal-sections.js +35 -5
- package/dist/helpers/retry-payload.js +3 -0
- package/dist/helpers/timeline-layout.d.ts +1 -0
- package/dist/helpers/timeline-layout.js +6 -1
- package/dist/helpers/use-menu-structure.js +43 -0
- package/dist/state/modals.d.ts +1 -0
- package/package.json +10 -10
|
@@ -7,8 +7,6 @@ const client_id_1 = require("../../../helpers/client-id");
|
|
|
7
7
|
const colors_1 = require("../../../helpers/colors");
|
|
8
8
|
const get_git_menu_item_1 = require("../../../helpers/get-git-menu-item");
|
|
9
9
|
const open_in_editor_1 = require("../../../helpers/open-in-editor");
|
|
10
|
-
const url_state_1 = require("../../../helpers/url-state");
|
|
11
|
-
const InitialCompositionLoader_1 = require("../../InitialCompositionLoader");
|
|
12
10
|
const layout_1 = require("../../layout");
|
|
13
11
|
const NotificationCenter_1 = require("../../Notifications/NotificationCenter");
|
|
14
12
|
const Spinner_1 = require("../../Spinner");
|
|
@@ -17,26 +15,8 @@ const TimelineStack = ({ isCompact, sequence, originalLocation }) => {
|
|
|
17
15
|
const [stackHovered, setStackHovered] = (0, react_1.useState)(false);
|
|
18
16
|
const [titleHovered, setTitleHovered] = (0, react_1.useState)(false);
|
|
19
17
|
const [opening, setOpening] = (0, react_1.useState)(false);
|
|
20
|
-
const selectAsset = (0, InitialCompositionLoader_1.useSelectAsset)();
|
|
21
18
|
const connectionStatus = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx)
|
|
22
19
|
.previewServerState.type;
|
|
23
|
-
const assetPath = (0, react_1.useMemo)(() => {
|
|
24
|
-
if (sequence.type !== 'video' &&
|
|
25
|
-
sequence.type !== 'audio' &&
|
|
26
|
-
sequence.type !== 'image') {
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
const isStatic = sequence.src.startsWith(window.remotion_staticBase);
|
|
30
|
-
if (!isStatic) {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
const relativePath = sequence.src.replace(window.remotion_staticBase + '/', '');
|
|
34
|
-
return relativePath;
|
|
35
|
-
}, [sequence]);
|
|
36
|
-
const navigateToAsset = (0, react_1.useCallback)((asset) => {
|
|
37
|
-
selectAsset(asset);
|
|
38
|
-
(0, url_state_1.pushUrl)(`/assets/${asset}`);
|
|
39
|
-
}, [selectAsset]);
|
|
40
20
|
const openEditor = (0, react_1.useCallback)(async (location) => {
|
|
41
21
|
if (!window.remotion_editorName) {
|
|
42
22
|
return;
|
|
@@ -56,35 +36,15 @@ const TimelineStack = ({ isCompact, sequence, originalLocation }) => {
|
|
|
56
36
|
connectionStatus === 'connected' &&
|
|
57
37
|
originalLocation;
|
|
58
38
|
const canOpenInGitHub = window.remotion_gitSource && originalLocation;
|
|
59
|
-
const
|
|
39
|
+
const { documentationLink } = sequence;
|
|
40
|
+
const titleHoverable = documentationLink !== null;
|
|
60
41
|
const stackHoverable = !isCompact && (canOpenInEditor || canOpenInGitHub);
|
|
61
42
|
const onClickTitle = (0, react_1.useCallback)(() => {
|
|
62
|
-
if (
|
|
43
|
+
if (documentationLink === null) {
|
|
63
44
|
return null;
|
|
64
45
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
if (!originalLocation) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
if (canOpenInEditor) {
|
|
73
|
-
openEditor(originalLocation);
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
if (canOpenInGitHub) {
|
|
77
|
-
window.open((0, get_git_menu_item_1.getGitRefUrl)(window.remotion_gitSource, originalLocation), '_blank');
|
|
78
|
-
}
|
|
79
|
-
}, [
|
|
80
|
-
assetPath,
|
|
81
|
-
canOpenInEditor,
|
|
82
|
-
canOpenInGitHub,
|
|
83
|
-
navigateToAsset,
|
|
84
|
-
openEditor,
|
|
85
|
-
originalLocation,
|
|
86
|
-
titleHoverable,
|
|
87
|
-
]);
|
|
46
|
+
window.open(documentationLink, '_blank', 'noopener,noreferrer');
|
|
47
|
+
}, [documentationLink]);
|
|
88
48
|
const onClickStack = (0, react_1.useCallback)(() => {
|
|
89
49
|
if (!originalLocation) {
|
|
90
50
|
return;
|
|
@@ -150,8 +110,8 @@ const TimelineStack = ({ isCompact, sequence, originalLocation }) => {
|
|
|
150
110
|
? sequence.displayName.slice(0, 1000) + '...'
|
|
151
111
|
: sequence.displayName;
|
|
152
112
|
return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
153
|
-
jsx_runtime_1.jsx("div", { onPointerEnter: onTitlePointerEnter, onPointerLeave: onTitlePointerLeave, title:
|
|
154
|
-
?
|
|
113
|
+
jsx_runtime_1.jsx("div", { onPointerEnter: onTitlePointerEnter, onPointerLeave: onTitlePointerLeave, title: documentationLink
|
|
114
|
+
? `Open documentation: ${documentationLink}`
|
|
155
115
|
: text || '<Sequence>', style: titleStyle, onClick: onClickTitle, children: text || '<Sequence>' }), isCompact || !originalLocation ? null : (jsx_runtime_1.jsx("div", { onPointerEnter: onStackPointerEnter, onPointerLeave: onStackPointerLeave, onClick: onClickStack, style: style, children: (0, source_attribution_1.getOriginalSourceAttribution)(originalLocation) })), opening ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
156
116
|
jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(Spinner_1.Spinner, { duration: 0.5, size: 12 })
|
|
157
117
|
] })) : null] }));
|
|
@@ -36,11 +36,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.TimelineTracks = void 0;
|
|
37
37
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
38
38
|
const react_1 = __importStar(require("react"));
|
|
39
|
-
const remotion_1 = require("remotion");
|
|
40
39
|
const client_id_1 = require("../../helpers/client-id");
|
|
41
40
|
const timeline_layout_1 = require("../../helpers/timeline-layout");
|
|
42
41
|
const ExpandedTracksProvider_1 = require("../ExpandedTracksProvider");
|
|
43
42
|
const MaxTimelineTracks_1 = require("./MaxTimelineTracks");
|
|
43
|
+
const TimelineExpandedTrackKeyframes_1 = require("./TimelineExpandedTrackKeyframes");
|
|
44
44
|
const TimelineSequence_1 = require("./TimelineSequence");
|
|
45
45
|
const TimelineTimeIndicators_1 = require("./TimelineTimeIndicators");
|
|
46
46
|
const content = {
|
|
@@ -51,18 +51,9 @@ const content = {
|
|
|
51
51
|
const timelineContent = {
|
|
52
52
|
minHeight: '100%',
|
|
53
53
|
};
|
|
54
|
-
const getExpandedPlaceholderStyle = ({ sequence, nodePathInfo, getIsExpanded, codeValues, }) => ({
|
|
55
|
-
height: (0, timeline_layout_1.getExpandedTrackHeight)({
|
|
56
|
-
sequence,
|
|
57
|
-
nodePathInfo,
|
|
58
|
-
getIsExpanded,
|
|
59
|
-
codeValues,
|
|
60
|
-
}) + timeline_layout_1.TIMELINE_ITEM_BORDER_BOTTOM,
|
|
61
|
-
});
|
|
62
54
|
const TimelineTracksInner = ({ timeline, hasBeenCut }) => {
|
|
63
55
|
const { getIsExpanded } = (0, react_1.useContext)(ExpandedTracksProvider_1.ExpandedTracksGetterContext);
|
|
64
56
|
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
65
|
-
const { codeValues } = (0, react_1.useContext)(remotion_1.Internals.VisualModeCodeValuesContext);
|
|
66
57
|
const previewServerConnected = previewServerState.type === 'connected';
|
|
67
58
|
const timelineStyle = (0, react_1.useMemo)(() => {
|
|
68
59
|
return {
|
|
@@ -78,12 +69,7 @@ const TimelineTracksInner = ({ timeline, hasBeenCut }) => {
|
|
|
78
69
|
jsx_runtime_1.jsx("div", { style: {
|
|
79
70
|
height: (0, timeline_layout_1.getTimelineLayerHeight)(track.sequence.type),
|
|
80
71
|
marginBottom: timeline_layout_1.TIMELINE_ITEM_BORDER_BOTTOM,
|
|
81
|
-
}, children: jsx_runtime_1.jsx(TimelineSequence_1.TimelineSequence, { s: track.sequence }) }), isExpanded && track.nodePathInfo && previewServerConnected ? (jsx_runtime_1.jsx(
|
|
82
|
-
sequence: track.sequence,
|
|
83
|
-
nodePathInfo: track.nodePathInfo,
|
|
84
|
-
getIsExpanded,
|
|
85
|
-
codeValues,
|
|
86
|
-
}) })) : null] }, track.sequence.id));
|
|
72
|
+
}, children: jsx_runtime_1.jsx(TimelineSequence_1.TimelineSequence, { s: track.sequence }) }), isExpanded && track.nodePathInfo && previewServerConnected ? (jsx_runtime_1.jsx(TimelineExpandedTrackKeyframes_1.TimelineExpandedTrackKeyframes, { sequence: track.sequence, nodePathInfo: track.nodePathInfo })) : null] }, track.sequence.id));
|
|
87
73
|
})] }), hasBeenCut ? jsx_runtime_1.jsx(MaxTimelineTracks_1.MaxTimelineTracksReached, {}) : null] }));
|
|
88
74
|
};
|
|
89
75
|
exports.TimelineTracks = react_1.default.memo(TimelineTracksInner);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CanUpdateSequencePropStatus, CanUpdateSequencePropStatusFalse } from 'remotion';
|
|
2
|
+
export declare const getComputedStatusLabel: (propStatus: CanUpdateSequencePropStatusFalse) => string;
|
|
3
|
+
export declare const getTimelineKeyframes: (propStatus: CanUpdateSequencePropStatus | null | undefined) => {
|
|
4
|
+
frame: number;
|
|
5
|
+
value: unknown;
|
|
6
|
+
}[];
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTimelineKeyframes = exports.getComputedStatusLabel = void 0;
|
|
4
|
+
const getComputedStatusLabel = (propStatus) => {
|
|
5
|
+
var _a;
|
|
6
|
+
if (propStatus.reason !== 'computed') {
|
|
7
|
+
throw new Error(`Unsupported prop status: ${propStatus.reason}`);
|
|
8
|
+
}
|
|
9
|
+
return ((_a = propStatus.keyframes) === null || _a === void 0 ? void 0 : _a.length) ? 'keyframed' : 'computed';
|
|
10
|
+
};
|
|
11
|
+
exports.getComputedStatusLabel = getComputedStatusLabel;
|
|
12
|
+
const getTimelineKeyframes = (propStatus) => {
|
|
13
|
+
var _a;
|
|
14
|
+
if (!propStatus || propStatus.canUpdate) {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
if (propStatus.reason !== 'computed') {
|
|
18
|
+
throw new Error(`Unsupported prop status: ${propStatus.reason}`);
|
|
19
|
+
}
|
|
20
|
+
return (_a = propStatus.keyframes) !== null && _a !== void 0 ? _a : [];
|
|
21
|
+
};
|
|
22
|
+
exports.getTimelineKeyframes = getTimelineKeyframes;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SetStateAction } from 'react';
|
|
2
|
+
import type { ResolvedStackLocation } from 'remotion';
|
|
3
|
+
import type { ModalState } from '../state/modals';
|
|
4
|
+
import type { ComboboxValue } from './NewComposition/ComboBox';
|
|
5
|
+
export declare const getCompositionMenuItems: ({ composition, connectionStatus, resolvedLocation, setSelectedModal, closeMenu, readOnlyStudio, }: {
|
|
6
|
+
composition: import("remotion").AnyComposition | null;
|
|
7
|
+
connectionStatus: "connected" | "disconnected" | "init";
|
|
8
|
+
resolvedLocation: ResolvedStackLocation | null;
|
|
9
|
+
setSelectedModal: (value: SetStateAction<ModalState | null>) => void;
|
|
10
|
+
closeMenu: () => void;
|
|
11
|
+
readOnlyStudio: boolean;
|
|
12
|
+
}) => ComboboxValue[];
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCompositionMenuItems = void 0;
|
|
4
|
+
const no_react_1 = require("remotion/no-react");
|
|
5
|
+
const open_in_editor_1 = require("../helpers/open-in-editor");
|
|
6
|
+
const NotificationCenter_1 = require("./Notifications/NotificationCenter");
|
|
7
|
+
const getCompositionMenuItems = ({ composition, connectionStatus, resolvedLocation, setSelectedModal, closeMenu, readOnlyStudio, }) => {
|
|
8
|
+
const editorName = window.remotion_editorName;
|
|
9
|
+
const showInEditorDisabled = !composition || connectionStatus !== 'connected' || !resolvedLocation;
|
|
10
|
+
const openComponentInEditorDisabled = showInEditorDisabled || !(resolvedLocation === null || resolvedLocation === void 0 ? void 0 : resolvedLocation.source);
|
|
11
|
+
return [
|
|
12
|
+
editorName
|
|
13
|
+
? {
|
|
14
|
+
id: 'show-in-editor',
|
|
15
|
+
keyHint: null,
|
|
16
|
+
label: `Show composition in ${editorName}`,
|
|
17
|
+
leftItem: null,
|
|
18
|
+
onClick: async () => {
|
|
19
|
+
closeMenu();
|
|
20
|
+
if (!composition || !resolvedLocation) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
await (0, open_in_editor_1.openOriginalPositionInEditor)(resolvedLocation);
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
(0, NotificationCenter_1.showNotification)(err.message, 2000);
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
quickSwitcherLabel: `Show composition in ${editorName}`,
|
|
31
|
+
subMenu: null,
|
|
32
|
+
type: 'item',
|
|
33
|
+
value: 'show-in-editor',
|
|
34
|
+
disabled: showInEditorDisabled,
|
|
35
|
+
}
|
|
36
|
+
: null,
|
|
37
|
+
editorName
|
|
38
|
+
? {
|
|
39
|
+
id: 'open-component-in-editor',
|
|
40
|
+
keyHint: null,
|
|
41
|
+
label: `Show component in ${editorName}`,
|
|
42
|
+
leftItem: null,
|
|
43
|
+
onClick: async () => {
|
|
44
|
+
closeMenu();
|
|
45
|
+
if (!composition || !(resolvedLocation === null || resolvedLocation === void 0 ? void 0 : resolvedLocation.source)) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
await (0, open_in_editor_1.openCompositionComponentInEditor)({
|
|
50
|
+
compositionFile: resolvedLocation.source,
|
|
51
|
+
compositionId: composition.id,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
(0, NotificationCenter_1.showNotification)(err.message, 2000);
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
quickSwitcherLabel: `Show composition component in ${editorName}`,
|
|
59
|
+
subMenu: null,
|
|
60
|
+
type: 'item',
|
|
61
|
+
value: 'open-component-in-editor',
|
|
62
|
+
disabled: openComponentInEditorDisabled,
|
|
63
|
+
}
|
|
64
|
+
: null,
|
|
65
|
+
editorName
|
|
66
|
+
? {
|
|
67
|
+
type: 'divider',
|
|
68
|
+
id: 'show-in-editor-divider',
|
|
69
|
+
}
|
|
70
|
+
: null,
|
|
71
|
+
{
|
|
72
|
+
id: 'rename',
|
|
73
|
+
keyHint: null,
|
|
74
|
+
label: `Rename...`,
|
|
75
|
+
leftItem: null,
|
|
76
|
+
onClick: () => {
|
|
77
|
+
if (!composition) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
closeMenu();
|
|
81
|
+
setSelectedModal({
|
|
82
|
+
type: 'rename-comp',
|
|
83
|
+
compositionId: composition.id,
|
|
84
|
+
});
|
|
85
|
+
},
|
|
86
|
+
quickSwitcherLabel: 'Rename composition...',
|
|
87
|
+
subMenu: null,
|
|
88
|
+
type: 'item',
|
|
89
|
+
value: 'rename',
|
|
90
|
+
disabled: !composition || readOnlyStudio,
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
id: 'duplicate',
|
|
94
|
+
keyHint: null,
|
|
95
|
+
label: `Duplicate...`,
|
|
96
|
+
leftItem: null,
|
|
97
|
+
onClick: () => {
|
|
98
|
+
if (!composition) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
closeMenu();
|
|
102
|
+
setSelectedModal({
|
|
103
|
+
type: 'duplicate-comp',
|
|
104
|
+
compositionId: composition.id,
|
|
105
|
+
compositionType: composition.durationInFrames === 1 ? 'still' : 'composition',
|
|
106
|
+
});
|
|
107
|
+
},
|
|
108
|
+
quickSwitcherLabel: 'Duplicate composition...',
|
|
109
|
+
subMenu: null,
|
|
110
|
+
type: 'item',
|
|
111
|
+
value: 'duplicate',
|
|
112
|
+
disabled: !composition || readOnlyStudio,
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
id: 'delete',
|
|
116
|
+
keyHint: null,
|
|
117
|
+
label: `Delete...`,
|
|
118
|
+
leftItem: null,
|
|
119
|
+
onClick: () => {
|
|
120
|
+
if (!composition) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
closeMenu();
|
|
124
|
+
setSelectedModal({
|
|
125
|
+
type: 'delete-comp',
|
|
126
|
+
compositionId: composition.id,
|
|
127
|
+
});
|
|
128
|
+
},
|
|
129
|
+
quickSwitcherLabel: 'Delete composition...',
|
|
130
|
+
subMenu: null,
|
|
131
|
+
type: 'item',
|
|
132
|
+
value: 'delete',
|
|
133
|
+
disabled: !composition || readOnlyStudio,
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
type: 'divider',
|
|
137
|
+
id: 'copy-id-divider',
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
id: 'copy-id',
|
|
141
|
+
keyHint: null,
|
|
142
|
+
label: `Copy ID`,
|
|
143
|
+
leftItem: null,
|
|
144
|
+
onClick: () => {
|
|
145
|
+
if (!composition) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
closeMenu();
|
|
149
|
+
navigator.clipboard
|
|
150
|
+
.writeText(composition.id)
|
|
151
|
+
.then(() => {
|
|
152
|
+
(0, NotificationCenter_1.showNotification)('Copied to clipboard', 1000);
|
|
153
|
+
})
|
|
154
|
+
.catch((err) => {
|
|
155
|
+
(0, NotificationCenter_1.showNotification)(`Could not copy to clipboard: ${err.message}`, 1000);
|
|
156
|
+
});
|
|
157
|
+
},
|
|
158
|
+
quickSwitcherLabel: 'Copy composition ID',
|
|
159
|
+
subMenu: null,
|
|
160
|
+
type: 'item',
|
|
161
|
+
value: 'copy-id',
|
|
162
|
+
disabled: !composition,
|
|
163
|
+
},
|
|
164
|
+
].filter(no_react_1.NoReactInternals.truthy);
|
|
165
|
+
};
|
|
166
|
+
exports.getCompositionMenuItems = getCompositionMenuItems;
|