@remotion/studio 4.0.525 → 4.0.527

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/dist/api/focus-default-props-path.js +7 -1
  2. package/dist/api/restart-studio.d.ts +1 -1
  3. package/dist/api/restart-studio.js +1 -1
  4. package/dist/components/AgentPrompt.d.ts +6 -0
  5. package/dist/components/AgentPrompt.js +107 -0
  6. package/dist/components/AssetFileIcon.js +2 -0
  7. package/dist/components/AssetSelectorItem.d.ts +1 -23
  8. package/dist/components/AssetSelectorItem.js +10 -200
  9. package/dist/components/Canvas.js +109 -44
  10. package/dist/components/CanvasCaptureDropHandler.js +63 -0
  11. package/dist/components/CanvasOrLoading.js +10 -2
  12. package/dist/components/CaptionInspector.js +9 -3
  13. package/dist/{error-overlay/remotion-overlay → components}/CodeFrame.d.ts +2 -0
  14. package/dist/components/CodeFrame.js +77 -0
  15. package/dist/components/CompositionSelectorItem.js +7 -17
  16. package/dist/components/CurrentAsset.js +6 -4
  17. package/dist/components/ElementInstallConfirmation.js +69 -38
  18. package/dist/components/FilePreview.js +4 -0
  19. package/dist/components/FixComputedValueModal.js +64 -96
  20. package/dist/components/GenerateWithAgentModal.d.ts +9 -0
  21. package/dist/components/GenerateWithAgentModal.js +39 -0
  22. package/dist/components/InitialCompositionLoader.js +1 -1
  23. package/dist/components/InlineDropdown.js +26 -2
  24. package/dist/components/InlineEditableTitle.js +3 -0
  25. package/dist/components/InspectorOpenInEditor.js +8 -4
  26. package/dist/components/InspectorPanel/CollapsibleInspectorSection.d.ts +7 -0
  27. package/dist/components/InspectorPanel/CollapsibleInspectorSection.js +14 -0
  28. package/dist/components/InspectorPanel/CollapsibleInspectorSectionHeader.d.ts +1 -1
  29. package/dist/components/InspectorPanel/CollapsibleInspectorSectionHeader.js +20 -8
  30. package/dist/components/InspectorPanel/CompositionInspector.js +32 -15
  31. package/dist/components/InspectorPanel/CompositionMetadata.js +7 -0
  32. package/dist/components/InspectorPanel/ConnectedCompositionsSection.js +6 -12
  33. package/dist/components/InspectorPanel/ElementLibraryButton.js +2 -0
  34. package/dist/components/InspectorPanel/GuideInspector.js +2 -3
  35. package/dist/components/InspectorPanel/KeyframeSettings.js +5 -6
  36. package/dist/components/InspectorPanel/MultiSequenceInspector.js +34 -2
  37. package/dist/components/InspectorPanel/SequenceSelectionInspector.js +45 -4
  38. package/dist/components/InspectorPanel/common.d.ts +4 -0
  39. package/dist/components/InspectorPanel/common.js +15 -2
  40. package/dist/components/InspectorPanel/styles.d.ts +0 -3
  41. package/dist/components/InspectorPanel/styles.js +3 -27
  42. package/dist/components/InspectorPanel/use-composition-actions.d.ts +2 -0
  43. package/dist/components/InspectorPanel/use-composition-actions.js +16 -0
  44. package/dist/components/InspectorPanel/use-inspector-section-expanded.d.ts +1 -0
  45. package/dist/components/InspectorPanel/use-inspector-section-expanded.js +21 -0
  46. package/dist/components/InspectorSequenceSection.js +44 -35
  47. package/dist/components/InspectorSourceLocation.js +4 -0
  48. package/dist/components/KeyboardShortcutsSettings.js +12 -4
  49. package/dist/components/LutPreview.d.ts +4 -0
  50. package/dist/components/LutPreview.js +192 -0
  51. package/dist/components/MenuBuildIndicator.js +1 -0
  52. package/dist/components/MenuCompositionName.js +4 -9
  53. package/dist/components/Modals.js +3 -6
  54. package/dist/components/ModelsSettings.js +15 -4
  55. package/dist/components/NewComposition/CancelButton.js +1 -1
  56. package/dist/components/Notifications/NotificationCenter.d.ts +0 -1
  57. package/dist/components/Notifications/NotificationCenter.js +1 -22
  58. package/dist/components/Preview.js +3 -0
  59. package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +1 -0
  60. package/dist/components/QuickSwitcher/QuickSwitcherContent.js +1 -0
  61. package/dist/components/QuickSwitcher/QuickSwitcherResult.js +4 -9
  62. package/dist/components/RadioButton.js +1 -0
  63. package/dist/components/RenderModal/DataEditor.js +4 -1
  64. package/dist/components/RenderModal/SchemaEditor/scroll-to-default-props-path.d.ts +1 -0
  65. package/dist/components/RenderModal/SchemaEditor/scroll-to-default-props-path.js +2 -1
  66. package/dist/components/RenderModal/WebRenderModal.js +10 -2
  67. package/dist/components/RenderQueue/CaptionQueueItem.js +5 -2
  68. package/dist/components/RenderQueue/CaptionQueueProcessor.js +35 -8
  69. package/dist/components/RenderQueue/VideoMattingQueueItem.js +1 -0
  70. package/dist/components/RenderQueue/caption-job-types.d.ts +6 -0
  71. package/dist/components/RenderQueue/index.js +1 -0
  72. package/dist/components/RendersTab.js +4 -0
  73. package/dist/components/SelectedOutlineElement.js +6 -0
  74. package/dist/components/SelectedOutlineSnapIndicators.d.ts +6 -0
  75. package/dist/components/SelectedOutlineSnapIndicators.js +16 -12
  76. package/dist/components/SequencePropsSubscriptionProvider.d.ts +3 -0
  77. package/dist/components/SequencePropsSubscriptionProvider.js +8 -6
  78. package/dist/components/SettingsButton.js +11 -2
  79. package/dist/components/SettingsModal.d.ts +1 -2
  80. package/dist/components/SettingsModal.js +24 -6
  81. package/dist/components/SettingsModalFooter.js +17 -3
  82. package/dist/components/SkillsSettings.d.ts +5 -0
  83. package/dist/components/SkillsSettings.js +29 -26
  84. package/dist/components/Timeline/Timeline.js +10 -11
  85. package/dist/components/Timeline/TimelineAssetField.js +81 -51
  86. package/dist/components/Timeline/TimelineDeleteKeybindings.js +6 -9
  87. package/dist/components/Timeline/TimelineEffectItem.js +1 -0
  88. package/dist/components/Timeline/TimelineExpandArrowButton.js +1 -0
  89. package/dist/components/Timeline/TimelineExpandedRow.js +1 -0
  90. package/dist/components/Timeline/TimelineFieldLabel.js +1 -0
  91. package/dist/components/Timeline/TimelineHeightContainer.js +11 -1
  92. package/dist/components/Timeline/TimelineKeyframeControls.js +16 -1
  93. package/dist/components/Timeline/TimelineLayerChildren.d.ts +3 -3
  94. package/dist/components/Timeline/TimelineLayerChildren.js +11 -9
  95. package/dist/components/Timeline/TimelineLayerEye.d.ts +1 -1
  96. package/dist/components/Timeline/TimelineLayerEye.js +6 -3
  97. package/dist/components/Timeline/TimelineList.js +9 -3
  98. package/dist/components/Timeline/TimelineSchemaField.js +2 -6
  99. package/dist/components/Timeline/TimelineSelection.d.ts +14 -3
  100. package/dist/components/Timeline/TimelineSelection.js +91 -49
  101. package/dist/components/Timeline/TimelineSequence.js +28 -2
  102. package/dist/components/Timeline/TimelineSequenceFrame.js +1 -0
  103. package/dist/components/Timeline/TimelineSequenceItem.d.ts +2 -0
  104. package/dist/components/Timeline/TimelineSequenceItem.js +45 -13
  105. package/dist/components/Timeline/TimelineViewport.d.ts +1 -0
  106. package/dist/components/Timeline/TimelineViewport.js +10 -1
  107. package/dist/components/Timeline/TimelineVirtualization.d.ts +3 -3
  108. package/dist/components/Timeline/delete-selected-timeline-item.js +2 -2
  109. package/dist/components/Timeline/get-sequence-context-menu-items.d.ts +6 -2
  110. package/dist/components/Timeline/get-sequence-context-menu-items.js +143 -46
  111. package/dist/components/Timeline/normalize-font-weight-for-keyframe.d.ts +1 -0
  112. package/dist/components/Timeline/normalize-font-weight-for-keyframe.js +19 -0
  113. package/dist/components/Timeline/split-selected-timeline-item.d.ts +13 -10
  114. package/dist/components/Timeline/split-selected-timeline-item.js +58 -35
  115. package/dist/components/Timeline/timeline-display-groups.d.ts +9 -0
  116. package/dist/components/Timeline/timeline-display-groups.js +66 -0
  117. package/dist/components/Timeline/use-timeline-asset-drop.js +21 -21
  118. package/dist/components/Timeline/use-timeline-expanded-tree.d.ts +2 -1
  119. package/dist/components/Timeline/use-timeline-expanded-tree.js +1 -2
  120. package/dist/components/TimelineCombobox.js +1 -0
  121. package/dist/components/Transcription/TranscriptionModal.js +16 -11
  122. package/dist/components/Transcription/TranscriptionModalWithOptionalWhisper.js +1 -1
  123. package/dist/components/UpdateStatusContext.d.ts +2 -2
  124. package/dist/components/UpdateStatusContext.js +6 -7
  125. package/dist/components/UpdatesSettings.js +6 -6
  126. package/dist/components/WebMcp.js +41 -41
  127. package/dist/components/asset-context-menu.d.ts +32 -0
  128. package/dist/components/asset-context-menu.js +242 -0
  129. package/dist/components/composition-drop-preview.d.ts +9 -2
  130. package/dist/components/composition-drop-preview.js +7 -4
  131. package/dist/components/composition-menu-items.d.ts +4 -6
  132. package/dist/components/composition-menu-items.js +191 -75
  133. package/dist/components/delete-jsx-nodes-api.d.ts +2 -0
  134. package/dist/components/{delete-jsx-node-api.js → delete-jsx-nodes-api.js} +5 -5
  135. package/dist/components/get-open-in-menu-items.d.ts +6 -5
  136. package/dist/components/get-open-in-menu-items.js +22 -16
  137. package/dist/components/keyboard-shortcuts.d.ts +4 -4
  138. package/dist/components/keyboard-shortcuts.js +3 -1
  139. package/dist/components/public-output-name.d.ts +1 -0
  140. package/dist/components/public-output-name.js +7 -3
  141. package/dist/components/selected-outline-order.js +18 -12
  142. package/dist/components/use-open-in-menu-apps.d.ts +14 -0
  143. package/dist/components/use-open-in-menu-apps.js +33 -0
  144. package/dist/error-overlay/remotion-overlay/ErrorDisplay.js +2 -2
  145. package/dist/error-overlay/remotion-overlay/OpenInEditor.d.ts +1 -0
  146. package/dist/error-overlay/remotion-overlay/OpenInEditor.js +3 -3
  147. package/dist/error-overlay/remotion-overlay/StackFrame.d.ts +5 -1
  148. package/dist/error-overlay/remotion-overlay/StackFrame.js +26 -19
  149. package/dist/esm/{CaptionQueueProcessor-k0yrm3dj.mjs → CaptionQueueProcessor-npa6szn1.mjs} +39 -8
  150. package/dist/esm/{LazyModels-gfmpcy4h.mjs → LazyModels-nh3c8h9p.mjs} +4 -3
  151. package/dist/esm/{LazyModels-m1rf06wh.mjs → LazyModels-rr5v8h5y.mjs} +4 -3
  152. package/dist/esm/{TranscriptionModal-8pvrehg4.mjs → TranscriptionModal-79m5wgcj.mjs} +25 -17
  153. package/dist/esm/{VideoMattingModal-fefbzgka.mjs → VideoMattingModal-31pew0xj.mjs} +9 -6
  154. package/dist/esm/index-21hxsfaa.mjs +239 -0
  155. package/dist/esm/{index-s848rffx.mjs → index-4zen9prq.mjs} +5438 -4686
  156. package/dist/esm/index-5t2dwxsk.mjs +530 -0
  157. package/dist/esm/{index-vsxrxfpj.mjs → index-614tdz2q.mjs} +1 -1
  158. package/dist/esm/{index-0x13f28h.mjs → index-9xxg6218.mjs} +20 -541
  159. package/dist/esm/{index-hbezgbbq.mjs → index-ac5550e7.mjs} +1 -1
  160. package/dist/esm/{index-41kqns5c.mjs → index-e855w59j.mjs} +15 -92
  161. package/dist/esm/{index-tzxb8808.mjs → index-n5gmcvhz.mjs} +8 -8
  162. package/dist/esm/{index-ggqpre9v.mjs → index-ppspzgn9.mjs} +4963 -4178
  163. package/dist/esm/{index-jrw61pkj.mjs → index-r0ejh5sy.mjs} +1 -1
  164. package/dist/esm/index-r1gr3j3a.mjs +80 -0
  165. package/dist/esm/{index-mww32xc8.mjs → index-s7qa3xbw.mjs} +6 -4
  166. package/dist/esm/{index-1089795y.mjs → index-vxwg66ar.mjs} +7 -22
  167. package/dist/esm/index.mjs +13 -6
  168. package/dist/esm/internals.mjs +10 -7
  169. package/dist/esm/previewEntry.mjs +10 -7
  170. package/dist/esm/{resolve-composition-component-location-bt2d6qxq.mjs → resolve-composition-component-location-qrp05g62.mjs} +1 -1
  171. package/dist/helpers/client-id.d.ts +1 -0
  172. package/dist/helpers/client-id.js +8 -4
  173. package/dist/helpers/copy-text.js +1 -16
  174. package/dist/helpers/cube-lut.d.ts +12 -0
  175. package/dist/helpers/cube-lut.js +160 -0
  176. package/dist/helpers/get-preview-file-type.d.ts +1 -1
  177. package/dist/helpers/get-preview-file-type.js +3 -0
  178. package/dist/helpers/hoverable.js +2 -1
  179. package/dist/helpers/open-in-editor.d.ts +5 -2
  180. package/dist/helpers/open-in-editor.js +13 -5
  181. package/dist/helpers/settings-tab-availability.d.ts +14 -0
  182. package/dist/helpers/settings-tab-availability.js +35 -0
  183. package/dist/helpers/studio-runtime-config.d.ts +1 -1
  184. package/dist/helpers/use-keybinding.d.ts +1 -1
  185. package/dist/helpers/use-keyboard-shortcut-label.d.ts +2 -2
  186. package/dist/helpers/use-menu-structure.js +31 -21
  187. package/dist/icons/lut.d.ts +4 -0
  188. package/dist/icons/lut.js +6 -0
  189. package/dist/icons/sparkles.d.ts +4 -0
  190. package/dist/icons/sparkles.js +6 -0
  191. package/dist/state/modals.d.ts +17 -2
  192. package/dist/state/timeline-zoom.js +4 -0
  193. package/package.json +19 -19
  194. package/dist/components/delete-jsx-node-api.d.ts +0 -2
  195. package/dist/error-overlay/remotion-overlay/CodeFrame.js +0 -62
@@ -0,0 +1,239 @@
1
+ import {
2
+ callApi
3
+ } from "./index-r1gr3j3a.mjs";
4
+ import {
5
+ getBrowserStudioOperations
6
+ } from "./index-cw0pnpg5.mjs";
7
+ import {
8
+ useZIndex
9
+ } from "./index-9xxg6218.mjs";
10
+ import {
11
+ NOTIFICATION_BACKGROUND,
12
+ NOTIFICATION_BORDER,
13
+ NOTIFICATION_SHADOW,
14
+ TRANSPARENT,
15
+ WHITE_HEX
16
+ } from "./index-k426ye99.mjs";
17
+
18
+ // src/components/Notifications/NotificationCenter.tsx
19
+ import {
20
+ createRef,
21
+ useCallback,
22
+ useImperativeHandle,
23
+ useState
24
+ } from "react";
25
+ import ReactDOM from "react-dom";
26
+
27
+ // src/components/Menu/portals.ts
28
+ var portalIds = [
29
+ "menuportal-0",
30
+ "menuportal-1",
31
+ "menuportal-2",
32
+ "menuportal-3",
33
+ "menuportal-4",
34
+ "menuportal-5"
35
+ ];
36
+ var portals = typeof document === "undefined" ? [] : portalIds.map((id) => document.getElementById(id));
37
+ var getPortal = (i) => {
38
+ const portal = portals[i];
39
+ if (!portal) {
40
+ throw new Error(`Expected menu portal ${i} to exist`);
41
+ }
42
+ return portal;
43
+ };
44
+
45
+ // src/components/Notifications/Notification.tsx
46
+ import { useEffect } from "react";
47
+ import { jsx } from "react/jsx-runtime";
48
+ var notification = {
49
+ backgroundColor: NOTIFICATION_BACKGROUND,
50
+ color: WHITE_HEX,
51
+ fontFamily: "Arial, Helvetica, sans-serif",
52
+ display: "inline-flex",
53
+ padding: "6px 14px",
54
+ borderRadius: 6,
55
+ fontSize: 13,
56
+ border: NOTIFICATION_BORDER,
57
+ boxShadow: NOTIFICATION_SHADOW,
58
+ marginTop: 3,
59
+ marginBottom: 3,
60
+ alignItems: "center"
61
+ };
62
+ var Notification = ({ children, id, duration, created, onRemove }) => {
63
+ useEffect(() => {
64
+ if (duration === null) {
65
+ return;
66
+ }
67
+ const timeout = setTimeout(() => {
68
+ onRemove(id);
69
+ }, duration - (Date.now() - created));
70
+ return () => {
71
+ clearTimeout(timeout);
72
+ };
73
+ }, [created, duration, id, onRemove]);
74
+ return /* @__PURE__ */ jsx("div", {
75
+ className: "css-reset",
76
+ style: notification,
77
+ children
78
+ });
79
+ };
80
+
81
+ // src/components/Notifications/NotificationCenter.tsx
82
+ import { jsx as jsx2 } from "react/jsx-runtime";
83
+ var container = {
84
+ position: "absolute",
85
+ justifyContent: "center",
86
+ alignItems: "center",
87
+ display: "flex",
88
+ width: "100%",
89
+ flexDirection: "column",
90
+ paddingTop: 40,
91
+ pointerEvents: "none",
92
+ backgroundColor: TRANSPARENT
93
+ };
94
+ var notificationCenter = createRef();
95
+ var showNotification = (content, durationInMs) => {
96
+ return notificationCenter.current.addNotification({
97
+ content,
98
+ duration: durationInMs,
99
+ created: Date.now(),
100
+ id: String(Math.random()).replace("0.", "")
101
+ });
102
+ };
103
+ var NotificationCenter = () => {
104
+ const [notifications, setNotifications] = useState([]);
105
+ const { currentZIndex } = useZIndex();
106
+ const onRemove = useCallback((id) => {
107
+ setNotifications((not) => {
108
+ return not.filter((n) => n.id !== id);
109
+ });
110
+ }, []);
111
+ const addNotification = useCallback((notification2) => {
112
+ setNotifications((previousNotifications) => {
113
+ return [...previousNotifications, notification2];
114
+ });
115
+ return {
116
+ dismiss: () => {
117
+ setNotifications((oldNotifications) => {
118
+ return oldNotifications.filter((notificationToFilter) => notificationToFilter.id !== notification2.id);
119
+ });
120
+ },
121
+ replaceContent: (newContent, durationInMs) => {
122
+ setNotifications((oldNotifications) => {
123
+ return oldNotifications.map((notificationToMap) => {
124
+ if (notificationToMap.id === notification2.id) {
125
+ return {
126
+ ...notificationToMap,
127
+ duration: durationInMs,
128
+ content: newContent,
129
+ created: Date.now()
130
+ };
131
+ }
132
+ return notificationToMap;
133
+ });
134
+ });
135
+ }
136
+ };
137
+ }, []);
138
+ useImperativeHandle(notificationCenter, () => {
139
+ return {
140
+ addNotification
141
+ };
142
+ }, [addNotification]);
143
+ return ReactDOM.createPortal(/* @__PURE__ */ jsx2("div", {
144
+ style: container,
145
+ children: notifications.map((n) => {
146
+ return /* @__PURE__ */ jsx2(Notification, {
147
+ created: n.created,
148
+ duration: n.duration,
149
+ id: n.id,
150
+ onRemove,
151
+ children: n.content
152
+ }, n.id);
153
+ })
154
+ }), getPortal(currentZIndex + 1));
155
+ };
156
+
157
+ // src/api/install-package.ts
158
+ import { getRemotionEnvironment } from "remotion";
159
+
160
+ // src/helpers/optional-package-dependencies.ts
161
+ import { extraPackages } from "@remotion/studio-shared";
162
+ var TRANSFORMERS_PACKAGE = "@huggingface/transformers";
163
+ var packagesRequiringTransformers = new Set([
164
+ "@remotion/whisper-webgpu",
165
+ "@remotion/video-matting"
166
+ ]);
167
+ var withRequiredAuxiliaryPackages = (dependencies) => {
168
+ if (!dependencies.some((dependency) => packagesRequiringTransformers.has(dependency.name)) || dependencies.some((dependency) => dependency.name === TRANSFORMERS_PACKAGE)) {
169
+ return [...dependencies];
170
+ }
171
+ const transformers = extraPackages.find((pkg) => pkg.name === TRANSFORMERS_PACKAGE);
172
+ if (!transformers) {
173
+ throw new Error(`No recommended version found for ${TRANSFORMERS_PACKAGE}`);
174
+ }
175
+ return [
176
+ ...dependencies,
177
+ { name: transformers.name, version: transformers.version }
178
+ ];
179
+ };
180
+
181
+ // src/api/install-package.ts
182
+ var installPackages = async (dependencies) => {
183
+ if (!getRemotionEnvironment().isStudio) {
184
+ throw new Error("installPackages() is only available in the Studio");
185
+ }
186
+ const dependenciesWithAuxiliaryPackages = withRequiredAuxiliaryPackages(dependencies);
187
+ const browserStudioOperations = getBrowserStudioOperations();
188
+ if (browserStudioOperations !== null) {
189
+ const response = await browserStudioOperations.packageInstallation.installPackages({
190
+ dependencies: dependenciesWithAuxiliaryPackages
191
+ });
192
+ if (!response.success) {
193
+ const error = new Error(response.reason);
194
+ error.stack = response.stack;
195
+ throw error;
196
+ }
197
+ return {};
198
+ }
199
+ if (window.remotion_isReadOnlyStudio) {
200
+ throw new Error("installPackages() is not available in Read-Only Studio");
201
+ }
202
+ return callApi("/api/install-package", {
203
+ dependencies: dependenciesWithAuxiliaryPackages
204
+ });
205
+ };
206
+
207
+ // src/helpers/install-required-package.ts
208
+ var installQueue = Promise.resolve();
209
+ var uniqueDependencies = (dependencies) => Array.from(new Map(dependencies.map((dependency) => [dependency.name, dependency])).values());
210
+ var getMissingPackages = (dependencies) => {
211
+ const installedPackages = window.remotion_installedPackages ?? [];
212
+ return uniqueDependencies(dependencies).filter((dependency) => dependency.version !== null || !installedPackages.includes(dependency.name));
213
+ };
214
+ var addInstalledPackages = (dependencies) => {
215
+ const installedPackages = window.remotion_installedPackages ?? [];
216
+ window.remotion_installedPackages = Array.from(new Set([
217
+ ...installedPackages,
218
+ ...uniqueDependencies(dependencies).map((dependency) => dependency.name)
219
+ ]));
220
+ };
221
+ var formatPackageList = (dependencies) => dependencies.length === 1 ? dependencies[0].name : `${dependencies.length} packages`;
222
+ var installRequiredPackages = async (dependencies) => {
223
+ const runInstall = async () => {
224
+ const missingPackages = getMissingPackages(dependencies);
225
+ if (missingPackages.length === 0)
226
+ return;
227
+ showNotification(`Installing ${formatPackageList(missingPackages)}...`, 3000);
228
+ await installPackages(missingPackages);
229
+ addInstalledPackages(missingPackages);
230
+ showNotification(`Installed ${formatPackageList(missingPackages)}`, 3000);
231
+ };
232
+ const queuedInstall = installQueue.then(runInstall, runInstall);
233
+ installQueue = queuedInstall.catch(() => {
234
+ return;
235
+ });
236
+ await queuedInstall;
237
+ };
238
+
239
+ export { portals, getPortal, showNotification, NotificationCenter, TRANSFORMERS_PACKAGE, withRequiredAuxiliaryPackages, installPackages, getMissingPackages, installRequiredPackages };