@remotion/studio 4.0.518 → 4.0.520

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 (196) hide show
  1. package/dist/api/visual-control.js +2 -2
  2. package/dist/components/AppLaunchButton.d.ts +16 -0
  3. package/dist/components/AppLaunchButton.js +90 -0
  4. package/dist/components/AssetSelector.js +7 -6
  5. package/dist/components/AssetSelectorItem.d.ts +12 -0
  6. package/dist/components/AssetSelectorItem.js +180 -62
  7. package/dist/components/AudioWaveform.js +6 -1
  8. package/dist/components/Button.js +20 -7
  9. package/dist/components/Canvas.js +117 -92
  10. package/dist/components/CanvasOrLoading.js +7 -7
  11. package/dist/components/CodingAgentButton.d.ts +7 -0
  12. package/dist/components/CodingAgentButton.js +59 -0
  13. package/dist/components/CompositionContextButton.d.ts +1 -0
  14. package/dist/components/CompositionContextButton.js +6 -3
  15. package/dist/components/CompositionSelector.js +21 -20
  16. package/dist/components/CompositionSelectorItem.js +23 -35
  17. package/dist/components/ConfigureLicenseModal.js +4 -48
  18. package/dist/components/CurrentAsset.js +1 -1
  19. package/dist/components/CurrentCompositionSideEffects.js +5 -0
  20. package/dist/components/ElementInstallConfirmation.d.ts +2 -10
  21. package/dist/components/ElementInstallConfirmation.js +339 -32
  22. package/dist/components/FixComputedValueModal.js +5 -131
  23. package/dist/components/FpsCounter.js +1 -1
  24. package/dist/components/FramePersistor.js +1 -1
  25. package/dist/components/InitialCompositionLoader.js +3 -2
  26. package/dist/components/InspectorOpenInEditor.js +48 -33
  27. package/dist/components/InspectorPanel/CompositionInspector.js +35 -3
  28. package/dist/components/InspectorPanel/CompositionInspectorHeader.js +22 -14
  29. package/dist/components/InspectorPanel/ConnectedCompositionsSection.js +3 -1
  30. package/dist/components/InspectorPanel/SequenceInspectorHeader.d.ts +1 -1
  31. package/dist/components/InspectorPanel/SequenceInspectorHeader.js +10 -5
  32. package/dist/components/InspectorPanel/SequenceSelectionInspector.js +5 -4
  33. package/dist/components/InspectorPanel/common.js +1 -0
  34. package/dist/components/InspectorPanel/styles.js +1 -0
  35. package/dist/components/InspectorPanel/use-composition-actions.js +5 -8
  36. package/dist/components/InspectorSequenceSection.js +8 -3
  37. package/dist/components/InspectorSourceLocation.js +5 -1
  38. package/dist/components/KnownBugs.d.ts +1 -1
  39. package/dist/components/KnownBugs.js +1 -1
  40. package/dist/components/LicenseExplanation.d.ts +2 -0
  41. package/dist/components/LicenseExplanation.js +63 -0
  42. package/dist/components/MenuToolbar.js +7 -1
  43. package/dist/components/Modals.js +1 -2
  44. package/dist/components/NewComposition/InputDragger.js +29 -2
  45. package/dist/components/NewComposition/NewCompDuration.js +1 -1
  46. package/dist/components/NewComposition/NewComposition.d.ts +23 -0
  47. package/dist/components/NewComposition/NewComposition.js +217 -80
  48. package/dist/components/{UpdateModal/OpenIssueButton.js → OpenIssueButton.js} +1 -1
  49. package/dist/components/PlayPause.js +2 -13
  50. package/dist/components/PreviewToolbar.js +1 -1
  51. package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +2 -1
  52. package/dist/components/QuickSwitcher/QuickSwitcherContent.js +50 -28
  53. package/dist/components/QuickSwitcher/QuickSwitcherResult.d.ts +14 -1
  54. package/dist/components/QuickSwitcher/QuickSwitcherResult.js +64 -9
  55. package/dist/components/QuickSwitcher/composition-search.d.ts +16 -0
  56. package/dist/components/QuickSwitcher/composition-search.js +136 -0
  57. package/dist/components/RenderQueue/actions.d.ts +1 -0
  58. package/dist/components/RenderQueue/actions.js +5 -1
  59. package/dist/components/ResetZoomButton.js +17 -2
  60. package/dist/components/SelectedOutlineCanvasRotation.js +27 -1
  61. package/dist/components/SelectedOutlineElement.js +12 -31
  62. package/dist/components/SelectedOutlineKeyboardControls.d.ts +2 -2
  63. package/dist/components/SelectedOutlineOverlay.d.ts +3 -1
  64. package/dist/components/SelectedOutlineOverlay.js +21 -26
  65. package/dist/components/SelectedOutlinePolygon.d.ts +1 -0
  66. package/dist/components/SelectedOutlinePolygon.js +12 -4
  67. package/dist/components/SelectedOutlineRenderer.js +88 -21
  68. package/dist/components/SettingsContext.js +2 -1
  69. package/dist/components/SettingsModal.d.ts +1 -1
  70. package/dist/components/SettingsModal.js +19 -3
  71. package/dist/components/SidebarRenderButton.d.ts +1 -0
  72. package/dist/components/SidebarRenderButton.js +14 -5
  73. package/dist/components/Timeline/SequencePropsObserver.js +29 -14
  74. package/dist/components/Timeline/Timeline.js +2 -1
  75. package/dist/components/Timeline/TimelineAssetField.js +1 -0
  76. package/dist/components/Timeline/TimelineDeleteKeybindings.js +5 -90
  77. package/dist/components/Timeline/TimelineDragHandler.js +18 -8
  78. package/dist/components/Timeline/TimelineInOutDragHandler.js +2 -3
  79. package/dist/components/Timeline/TimelineKeyframeControls.js +3 -1
  80. package/dist/components/Timeline/TimelinePinchZoom.js +14 -4
  81. package/dist/components/Timeline/TimelinePlayCursorSyncer.js +8 -4
  82. package/dist/components/Timeline/TimelineRowChrome.js +4 -2
  83. package/dist/components/Timeline/TimelineSequence.js +52 -45
  84. package/dist/components/Timeline/TimelineSequenceItem.js +44 -32
  85. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +3 -3
  86. package/dist/components/Timeline/TimelineSlider.js +2 -2
  87. package/dist/components/Timeline/TimelineStack/get-stack.d.ts +1 -0
  88. package/dist/components/Timeline/TimelineStack/get-stack.js +35 -3
  89. package/dist/components/Timeline/TimelineWidthProvider.js +15 -8
  90. package/dist/components/Timeline/TimelineZoomControls.js +25 -8
  91. package/dist/components/Timeline/delete-selected-timeline-item.js +2 -2
  92. package/dist/components/Timeline/duplicate-selected-timeline-item.js +23 -25
  93. package/dist/components/Timeline/get-sequence-context-menu-items.d.ts +6 -0
  94. package/dist/components/Timeline/get-sequence-context-menu-items.js +34 -1
  95. package/dist/components/Timeline/sequence-props-subscription-store.d.ts +2 -0
  96. package/dist/components/Timeline/sequence-props-subscription-store.js +22 -1
  97. package/dist/components/Timeline/timeline-scroll-logic.d.ts +1 -0
  98. package/dist/components/Timeline/timeline-scroll-logic.js +21 -17
  99. package/dist/components/Timeline/use-delete-timeline-items.d.ts +1 -0
  100. package/dist/components/Timeline/use-delete-timeline-items.js +118 -0
  101. package/dist/components/Timeline/use-sequence-props-subscription.js +7 -0
  102. package/dist/components/Timeline/use-timeline-asset-drop.js +8 -14
  103. package/dist/components/TimelineCombobox.js +1 -0
  104. package/dist/components/UpdateCheck.d.ts +0 -8
  105. package/dist/components/UpdateCheck.js +7 -54
  106. package/dist/components/UpdateStatusContext.d.ts +18 -0
  107. package/dist/components/UpdateStatusContext.js +74 -0
  108. package/dist/components/UpdatesSettings.d.ts +2 -0
  109. package/dist/components/UpdatesSettings.js +251 -0
  110. package/dist/components/WebMcp.js +64 -11
  111. package/dist/components/ZoomPersistor.js +2 -2
  112. package/dist/components/composition-drag-data.d.ts +36 -0
  113. package/dist/components/composition-drag-data.js +232 -0
  114. package/dist/components/drop-handler-data.d.ts +2 -1
  115. package/dist/components/drop-handler-data.js +6 -4
  116. package/dist/components/effect-drag-and-drop.d.ts +2 -5
  117. package/dist/components/get-open-in-menu-items.d.ts +4 -0
  118. package/dist/components/get-open-in-menu-items.js +28 -24
  119. package/dist/components/handle-drop.js +6 -2
  120. package/dist/components/import-assets.d.ts +5 -13
  121. package/dist/components/root-composition-menu-items.d.ts +4 -1
  122. package/dist/components/root-composition-menu-items.js +38 -1
  123. package/dist/components/selected-outline-geometry.d.ts +21 -2
  124. package/dist/components/selected-outline-geometry.js +16 -5
  125. package/dist/components/selected-outline-measurement.d.ts +40 -1
  126. package/dist/components/selected-outline-measurement.js +239 -1
  127. package/dist/components/selected-outline-order.d.ts +12 -0
  128. package/dist/components/selected-outline-order.js +251 -0
  129. package/dist/components/selected-outline-types.d.ts +15 -2
  130. package/dist/components/selected-outline-uv.js +106 -3
  131. package/dist/components/use-configure-default-apps.d.ts +1 -0
  132. package/dist/components/use-configure-default-apps.js +24 -0
  133. package/dist/error-overlay/current-error.d.ts +13 -0
  134. package/dist/error-overlay/current-error.js +21 -0
  135. package/dist/error-overlay/remotion-overlay/CodeFrame.js +5 -6
  136. package/dist/error-overlay/remotion-overlay/CopyStackTrace.js +1 -1
  137. package/dist/error-overlay/remotion-overlay/ErrorDisplay.js +47 -18
  138. package/dist/error-overlay/remotion-overlay/ErrorLoader.js +6 -2
  139. package/dist/error-overlay/remotion-overlay/ErrorTitle.js +5 -4
  140. package/dist/error-overlay/remotion-overlay/OpenInEditor.js +48 -76
  141. package/dist/error-overlay/remotion-overlay/SearchGitHubIssues.js +1 -1
  142. package/dist/error-overlay/remotion-overlay/ShortcutHint.js +2 -2
  143. package/dist/error-overlay/remotion-overlay/StackFrame.js +13 -8
  144. package/dist/error-overlay/remotion-overlay/Symbolicating.js +1 -1
  145. package/dist/esm/chunk-6jf1natv.js +25 -0
  146. package/dist/esm/{chunk-4bxz1d3g.js → chunk-je0h1bgt.js} +1 -28
  147. package/dist/esm/chunk-m0jqdbkr.js +14571 -0
  148. package/dist/esm/{chunk-7prjt5n5.js → chunk-np6q13k5.js} +18637 -12189
  149. package/dist/esm/index.mjs +4 -3
  150. package/dist/esm/internals.mjs +35826 -14822
  151. package/dist/esm/previewEntry.mjs +40028 -18935
  152. package/dist/esm/renderEntry.mjs +6 -3
  153. package/dist/helpers/can-show-updates.d.ts +5 -0
  154. package/dist/helpers/can-show-updates.js +7 -0
  155. package/dist/helpers/colors.d.ts +0 -3
  156. package/dist/helpers/colors.js +2 -5
  157. package/dist/helpers/create-folder-tree.d.ts +5 -0
  158. package/dist/helpers/create-folder-tree.js +26 -6
  159. package/dist/helpers/document-title.d.ts +2 -0
  160. package/dist/helpers/document-title.js +14 -3
  161. package/dist/helpers/get-asset-metadata.js +1 -1
  162. package/dist/helpers/get-box-quads-polyfill-internals.d.ts +82 -0
  163. package/dist/helpers/get-box-quads-polyfill-internals.js +2403 -0
  164. package/dist/helpers/get-box-quads-ponyfill.d.ts +10 -0
  165. package/dist/helpers/get-box-quads-ponyfill.js +23 -0
  166. package/dist/helpers/get-git-menu-item.d.ts +5 -0
  167. package/dist/helpers/get-git-menu-item.js +15 -1
  168. package/dist/helpers/get-timeline-max-zoom.d.ts +34 -28
  169. package/dist/helpers/get-timeline-max-zoom.js +46 -29
  170. package/dist/helpers/hoverable.js +10 -5
  171. package/dist/helpers/install-fiber-sequence-order-observer.d.ts +37 -0
  172. package/dist/helpers/install-fiber-sequence-order-observer.js +109 -0
  173. package/dist/helpers/open-in-editor.js +53 -2
  174. package/dist/helpers/preview-server-events.js +3 -0
  175. package/dist/helpers/timeline-layout.d.ts +0 -1
  176. package/dist/helpers/timeline-layout.js +1 -5
  177. package/dist/helpers/url-state.d.ts +1 -0
  178. package/dist/helpers/url-state.js +12 -5
  179. package/dist/helpers/use-runtime-values.d.ts +1 -1
  180. package/dist/helpers/use-runtime-values.js +5 -4
  181. package/dist/helpers/use-sync-external-store.d.ts +3 -0
  182. package/dist/helpers/use-sync-external-store.js +5 -0
  183. package/dist/previewEntry.js +2 -0
  184. package/dist/renderEntry.js +2 -0
  185. package/dist/state/folders.d.ts +3 -0
  186. package/dist/state/folders.js +40 -1
  187. package/dist/state/modals.d.ts +19 -8
  188. package/dist/state/timeline-sequence-hover.js +3 -2
  189. package/dist/state/timeline-zoom.d.ts +0 -1
  190. package/dist/state/timeline-zoom.js +13 -6
  191. package/package.json +18 -15
  192. package/dist/components/UpdateModal/UpdateModal.d.ts +0 -6
  193. package/dist/components/UpdateModal/UpdateModal.js +0 -104
  194. package/dist/helpers/sort-by-nonce-history.d.ts +0 -1
  195. package/dist/helpers/sort-by-nonce-history.js +0 -6
  196. /package/dist/components/{UpdateModal/OpenIssueButton.d.ts → OpenIssueButton.d.ts} +0 -0
@@ -29,8 +29,8 @@ const editor_zoom_gestures_1 = require("../state/editor-zoom-gestures");
29
29
  const modals_1 = require("../state/modals");
30
30
  const call_api_1 = require("./call-api");
31
31
  const canvas_capture_drop_1 = require("./canvas-capture-drop");
32
+ const composition_drag_data_1 = require("./composition-drag-data");
32
33
  const composition_drop_preview_1 = require("./composition-drop-preview");
33
- const ConfirmationDialog_1 = require("./ConfirmationDialog");
34
34
  const drop_handler_data_1 = require("./drop-handler-data");
35
35
  const EditorGuides_1 = __importDefault(require("./EditorGuides"));
36
36
  const EditorRuler_1 = require("./EditorRuler");
@@ -38,7 +38,6 @@ const use_is_ruler_visible_1 = require("./EditorRuler/use-is-ruler-visible");
38
38
  const effect_drag_and_drop_1 = require("./effect-drag-and-drop");
39
39
  const element_install_api_1 = require("./element-install-api");
40
40
  const element_install_request_1 = require("./element-install-request");
41
- const ElementInstallConfirmation_1 = require("./ElementInstallConfirmation");
42
41
  const handle_drop_1 = require("./handle-drop");
43
42
  const import_assets_1 = require("./import-assets");
44
43
  const layout_1 = require("./layout");
@@ -49,6 +48,19 @@ const SvgImportDialog_1 = require("./SvgImportDialog");
49
48
  const imperative_state_1 = require("./Timeline/imperative-state");
50
49
  const use_resolved_stack_1 = require("./Timeline/use-resolved-stack");
51
50
  const elementInstallDependencyIgnoreList = ['react', 'react-dom', 'remotion'];
51
+ const getCanvasDragPreviewMetadata = (mimeTypes) => {
52
+ var _a, _b, _c;
53
+ const composition = (0, composition_drag_data_1.getCompositionDragPreviewMetadata)(mimeTypes);
54
+ if (composition !== null) {
55
+ return {
56
+ ...composition,
57
+ width: (_a = composition.width) !== null && _a !== void 0 ? _a : undefined,
58
+ height: (_b = composition.height) !== null && _b !== void 0 ? _b : undefined,
59
+ durationInFrames: (_c = composition.durationInFrames) !== null && _c !== void 0 ? _c : undefined,
60
+ };
61
+ }
62
+ return studio_protocol_1.StudioProtocolInternals.getDragPreviewMetadata(mimeTypes);
63
+ };
52
64
  const getContainerStyle = (editorZoomGestures) => ({
53
65
  flex: 1,
54
66
  display: 'flex',
@@ -127,7 +139,6 @@ const Canvas = ({ canvasContent, size }) => {
127
139
  const suppressWheelFromWebKitPinchRef = (0, react_1.useRef)(false);
128
140
  const touchPinchRef = (0, react_1.useRef)(null);
129
141
  const keybindings = (0, use_keybinding_1.useKeybinding)();
130
- const confirm = (0, ConfirmationDialog_1.useConfirmationDialog)();
131
142
  const chooseSvgImportMode = (0, SvgImportDialog_1.useSvgImportDialog)();
132
143
  const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
133
144
  const config = remotion_1.Internals.useUnsafeVideoConfig();
@@ -142,7 +153,6 @@ const Canvas = ({ canvasContent, size }) => {
142
153
  : null;
143
154
  const [isAddingAsset, setIsAddingAsset] = (0, react_1.useState)(false);
144
155
  const [compositionDropPreview, setCompositionDropPreview] = (0, react_1.useState)(null);
145
- const [installingElementName, setInstallingElementName] = (0, react_1.useState)(null);
146
156
  const [pendingElementInstallRequests, setPendingElementInstallRequests] = (0, react_1.useState)([]);
147
157
  const [activeElementInstallRequest, setActiveElementInstallRequest] = (0, react_1.useState)(null);
148
158
  const lastFocusedAtRef = (0, react_1.useRef)(typeof document === 'undefined' || document.hasFocus() ? Date.now() : null);
@@ -162,12 +172,13 @@ const Canvas = ({ canvasContent, size }) => {
162
172
  compositionFile,
163
173
  compositionId: currentCompositionId,
164
174
  });
165
- const canInstallElements = previewServerClientId !== null &&
175
+ const canReceiveElementInstallRequest = previewServerClientId !== null &&
166
176
  !window.remotion_isReadOnlyStudio &&
167
- (compositionComponentInfo === null || compositionComponentInfo === void 0 ? void 0 : compositionComponentInfo.canAddSequence) === true &&
168
177
  currentCompositionId !== null &&
169
178
  compositionFile !== null;
170
- const canDropAssets = canInstallElements && !isAddingAsset;
179
+ const canInsertIntoCurrentComposition = canReceiveElementInstallRequest &&
180
+ (compositionComponentInfo === null || compositionComponentInfo === void 0 ? void 0 : compositionComponentInfo.canAddSequence) === true;
181
+ const canDropAssets = canInsertIntoCurrentComposition && !isAddingAsset;
171
182
  const cannotAddSequence = (compositionComponentInfo === null || compositionComponentInfo === void 0 ? void 0 : compositionComponentInfo.canAddSequence) === false;
172
183
  const contentDimensions = (0, react_1.useMemo)(() => {
173
184
  if ((canvasContent.type === 'asset' ||
@@ -566,15 +577,18 @@ const Canvas = ({ canvasContent, size }) => {
566
577
  (0, call_api_1.callApi)('/api/update-element-install-target', {
567
578
  requestId,
568
579
  clientId: previewServerClientId,
569
- compositionFile: canInstallElements ? compositionFile : null,
570
- compositionId: canInstallElements ? currentCompositionId : null,
571
- canInstall: canInstallElements,
580
+ compositionFile: canReceiveElementInstallRequest
581
+ ? compositionFile
582
+ : null,
583
+ compositionId: canReceiveElementInstallRequest
584
+ ? currentCompositionId
585
+ : null,
572
586
  lastFocusedAt: lastFocusedAtRef.current,
573
587
  readOnly: window.remotion_isReadOnlyStudio,
574
588
  studioUrl: window.location.href,
575
589
  }).catch(() => undefined);
576
590
  }, [
577
- canInstallElements,
591
+ canReceiveElementInstallRequest,
578
592
  compositionFile,
579
593
  currentCompositionId,
580
594
  previewServerClientId,
@@ -598,16 +612,6 @@ const Canvas = ({ canvasContent, size }) => {
598
612
  updateElementInstallTarget(event.requestId);
599
613
  });
600
614
  }, [subscribeToEvent, updateElementInstallTarget]);
601
- (0, react_1.useEffect)(() => {
602
- if (installingElementName === null) {
603
- return;
604
- }
605
- const previousTitle = document.title;
606
- document.title = `📦 Install ${installingElementName} - Remotion Studio`;
607
- return () => {
608
- document.title = previousTitle;
609
- };
610
- }, [installingElementName]);
611
615
  (0, react_1.useEffect)(() => {
612
616
  if (previewServerClientId === null) {
613
617
  return;
@@ -617,21 +621,31 @@ const Canvas = ({ canvasContent, size }) => {
617
621
  event.request.clientId !== previewServerClientId) {
618
622
  return;
619
623
  }
620
- setPendingElementInstallRequests((requests) => [
621
- ...requests,
622
- event.request,
623
- ]);
624
+ (0, element_install_request_1.enqueueElementInstallRequest)(event.request);
624
625
  });
625
626
  }, [previewServerClientId, subscribeToEvent]);
626
627
  (0, react_1.useEffect)(() => {
627
628
  return (0, element_install_request_1.subscribeToElementInstallRequests)((request) => {
628
- setPendingElementInstallRequests((requests) => [...requests, request]);
629
+ const requestWithFrom = request.source.type === 'drag-and-drop' || request.from !== null
630
+ ? request
631
+ : {
632
+ ...request,
633
+ from: (0, import_assets_1.getFromForDrop)({
634
+ durationInFrames: request.element.durationInFrames,
635
+ from: (0, imperative_state_1.getCurrentFrame)(),
636
+ preferCompositionStart: true,
637
+ }),
638
+ };
639
+ setPendingElementInstallRequests((requests) => [
640
+ ...requests,
641
+ requestWithFrom,
642
+ ]);
629
643
  });
630
644
  }, []);
631
645
  (0, react_1.useEffect)(() => {
632
646
  var _a;
633
647
  var _b;
634
- if (!canInstallElements ||
648
+ if (!canReceiveElementInstallRequest ||
635
649
  compositionFile === null ||
636
650
  currentCompositionId === null) {
637
651
  return;
@@ -654,7 +668,7 @@ const Canvas = ({ canvasContent, size }) => {
654
668
  type: 'browser-studio-link',
655
669
  },
656
670
  });
657
- }, [canInstallElements, compositionFile, currentCompositionId]);
671
+ }, [canReceiveElementInstallRequest, compositionFile, currentCompositionId]);
658
672
  (0, react_1.useEffect)(() => {
659
673
  if (activeElementInstallRequest !== null ||
660
674
  pendingElementInstallRequests.length === 0) {
@@ -667,6 +681,10 @@ const Canvas = ({ canvasContent, size }) => {
667
681
  setActiveElementInstallRequest(nextRequest);
668
682
  setPendingElementInstallRequests(remainingRequests);
669
683
  }, [activeElementInstallRequest, pendingElementInstallRequests]);
684
+ const closeElementInstallDialog = (0, react_1.useCallback)(() => {
685
+ setSelectedModal(null);
686
+ setActiveElementInstallRequest(null);
687
+ }, [setSelectedModal]);
670
688
  (0, react_1.useEffect)(() => {
671
689
  if (activeElementInstallRequest === null) {
672
690
  return;
@@ -674,74 +692,81 @@ const Canvas = ({ canvasContent, size }) => {
674
692
  let canceled = false;
675
693
  const handleInstallRequest = async () => {
676
694
  var _a;
677
- setInstallingElementName(activeElementInstallRequest.element.displayName);
678
- const preflight = await (0, element_install_api_1.prepareElementInstall)({
679
- compositionFile: activeElementInstallRequest.compositionFile,
680
- compositionId: activeElementInstallRequest.compositionId,
681
- element: activeElementInstallRequest.element,
682
- });
683
- if (!preflight.success) {
684
- (0, NotificationCenter_1.showNotification)(`Could not review Element installation: ${preflight.reason}`, 4000);
685
- return;
686
- }
687
- if (canceled) {
688
- return;
689
- }
690
- const declaredDependencies = Array.from(new Map(activeElementInstallRequest.element.dependencies.map((dependency) => [
691
- dependency.name,
692
- dependency,
693
- ])).values());
694
- const missingPackages = (0, install_required_package_1.getMissingPackages)(declaredDependencies).map((dependency) => dependency.name);
695
- const ignoredDependencies = declaredDependencies.filter((dependency) => elementInstallDependencyIgnoreList.includes(dependency.name) &&
696
- !missingPackages.includes(dependency.name));
697
- const dependenciesToReview = declaredDependencies
698
- .filter((dependency) => !ignoredDependencies.includes(dependency))
699
- .map((dependency) => dependency.version === null
700
- ? dependency.name
701
- : `${dependency.name}@${dependency.version}`);
702
- const { source } = activeElementInstallRequest;
703
- const sourceLabel = source.type === 'studio-protocol'
704
- ? source.origin
705
- : source.type === 'browser-studio-link'
706
- ? ((_a = source.origin) !== null && _a !== void 0 ? _a : 'Unverified Browser Studio link')
707
- : 'Unverified drag-and-drop payload';
708
- const sourceIsUnverified = source.type === 'drag-and-drop' ||
709
- (source.type === 'browser-studio-link' && source.origin === null);
710
- const accepted = await confirm({
711
- title: 'Install Element',
712
- message: (jsx_runtime_1.jsx(ElementInstallConfirmation_1.ElementInstallConfirmation, { displayName: activeElementInstallRequest.element.displayName, sourceLabel: sourceLabel, sourceIsUnverified: sourceIsUnverified, compositionId: activeElementInstallRequest.compositionId, filePath: preflight.plan.filePath, overwritesExistingFile: preflight.plan.expectedFileState.exists, dependenciesToReview: dependenciesToReview, missingPackages: missingPackages, sourceCode: activeElementInstallRequest.element.sourceCode, usesBrowserDependencyResolution: (0, browser_studio_operations_1.getBrowserStudioOperations)() !== null })),
713
- confirmLabel: 'Install',
714
- cancelLabel: 'Cancel',
715
- });
716
- if (accepted && !canceled) {
717
- await (0, import_assets_1.insertElement)({
718
- element: activeElementInstallRequest.element,
719
- compositionFile: activeElementInstallRequest.compositionFile,
720
- compositionId: activeElementInstallRequest.compositionId,
721
- expectedFileState: preflight.plan.expectedFileState,
722
- from: activeElementInstallRequest.from,
723
- position: activeElementInstallRequest.position,
724
- overwriteExisting: preflight.plan.expectedFileState.exists,
695
+ try {
696
+ const [newPreflight, currentPreflight] = await Promise.all([
697
+ (0, element_install_api_1.prepareElementInstall)({
698
+ destination: {
699
+ type: 'new-composition',
700
+ compositionFile: null,
701
+ },
702
+ element: activeElementInstallRequest.element,
703
+ }),
704
+ (0, element_install_api_1.prepareElementInstall)({
705
+ destination: {
706
+ type: 'current-composition',
707
+ compositionFile: activeElementInstallRequest.compositionFile,
708
+ compositionId: activeElementInstallRequest.compositionId,
709
+ },
710
+ element: activeElementInstallRequest.element,
711
+ }),
712
+ ]);
713
+ if (canceled) {
714
+ return;
715
+ }
716
+ if (!newPreflight.success) {
717
+ (0, NotificationCenter_1.showNotification)(`Could not review Element installation: ${newPreflight.reason}`, 4000);
718
+ setActiveElementInstallRequest(null);
719
+ return;
720
+ }
721
+ const declaredDependencies = Array.from(new Map(activeElementInstallRequest.element.dependencies.map((dependency) => [dependency.name, dependency])).values());
722
+ const missingPackages = (0, install_required_package_1.getMissingPackages)(declaredDependencies).map((dependency) => dependency.name);
723
+ const ignoredDependencies = declaredDependencies.filter((dependency) => elementInstallDependencyIgnoreList.includes(dependency.name) &&
724
+ !missingPackages.includes(dependency.name));
725
+ const dependenciesToReview = declaredDependencies
726
+ .filter((dependency) => !ignoredDependencies.includes(dependency))
727
+ .map((dependency) => dependency.version === null
728
+ ? dependency.name
729
+ : `${dependency.name}@${dependency.version}`);
730
+ const { source } = activeElementInstallRequest;
731
+ const sourceLabel = source.type === 'studio-protocol'
732
+ ? source.origin
733
+ : source.type === 'browser-studio-link'
734
+ ? ((_a = source.origin) !== null && _a !== void 0 ? _a : 'Unverified Browser Studio link')
735
+ : 'Unverified drag-and-drop payload';
736
+ const sourceIsUnverified = source.type === 'drag-and-drop' ||
737
+ (source.type === 'browser-studio-link' && source.origin === null);
738
+ const currentPlan = currentPreflight.success
739
+ ? currentPreflight.plan
740
+ : null;
741
+ setSelectedModal({
742
+ type: 'element-install',
743
+ currentPlan,
744
+ dependenciesToReview,
745
+ missingPackages,
746
+ newPlan: newPreflight.plan,
747
+ onClose: closeElementInstallDialog,
748
+ request: activeElementInstallRequest,
749
+ sourceIsUnverified,
750
+ sourceLabel,
725
751
  });
726
752
  }
727
- };
728
- handleInstallRequest()
729
- .finally(() => {
730
- if (canceled) {
731
- return;
753
+ catch (error) {
754
+ if (canceled) {
755
+ return;
756
+ }
757
+ (0, NotificationCenter_1.showNotification)(`Could not review Element installation: ${error instanceof Error ? error.message : String(error)}`, 4000);
758
+ setActiveElementInstallRequest(null);
732
759
  }
733
- setInstallingElementName(null);
734
- setActiveElementInstallRequest(null);
735
- })
736
- .catch((err) => {
737
- setTimeout(() => {
738
- throw err;
739
- }, 0);
740
- });
760
+ };
761
+ handleInstallRequest();
741
762
  return () => {
742
763
  canceled = true;
743
764
  };
744
- }, [activeElementInstallRequest, confirm]);
765
+ }, [
766
+ activeElementInstallRequest,
767
+ closeElementInstallDialog,
768
+ setSelectedModal,
769
+ ]);
745
770
  const onDragOver = (0, react_1.useCallback)((event) => {
746
771
  var _a;
747
772
  var _b;
@@ -765,7 +790,7 @@ const Canvas = ({ canvasContent, size }) => {
765
790
  setCompositionDropPreview(null);
766
791
  return;
767
792
  }
768
- const metadata = studio_protocol_1.StudioProtocolInternals.getDragPreviewMetadata((_b = (_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.types) !== null && _b !== void 0 ? _b : []);
793
+ const metadata = getCanvasDragPreviewMetadata((_b = (_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.types) !== null && _b !== void 0 ? _b : []);
769
794
  if (((metadata === null || metadata === void 0 ? void 0 : metadata.type) !== 'composition' && (metadata === null || metadata === void 0 ? void 0 : metadata.type) !== 'element') ||
770
795
  metadata.width === undefined ||
771
796
  metadata.height === undefined) {
@@ -896,7 +921,7 @@ const Canvas = ({ canvasContent, size }) => {
896
921
  event.stopPropagation();
897
922
  setIsAddingAsset(true);
898
923
  try {
899
- const metadata = studio_protocol_1.StudioProtocolInternals.getDragPreviewMetadata((_d = (_b = event.dataTransfer) === null || _b === void 0 ? void 0 : _b.types) !== null && _d !== void 0 ? _d : []);
924
+ const metadata = getCanvasDragPreviewMetadata((_d = (_b = event.dataTransfer) === null || _b === void 0 ? void 0 : _b.types) !== null && _d !== void 0 ? _d : []);
900
925
  const isComposition = (metadata === null || metadata === void 0 ? void 0 : metadata.type) === 'composition';
901
926
  let dropPosition = getDropPosition({
902
927
  addFitPadding,
@@ -47,7 +47,7 @@ const CanvasOrLoading = ({ size }) => {
47
47
  });
48
48
  }, [resolved, setZoom]);
49
49
  if (renderError) {
50
- return (jsx_runtime_1.jsx(ErrorLoading, { error: renderError, calculateMetadataContext: false }));
50
+ return (jsx_runtime_1.jsx(ErrorLoading, { error: renderError, calculateMetadataContext: false, onRetry: null }));
51
51
  }
52
52
  if (!canvasContent) {
53
53
  if (compositionListState !== 'ready') {
@@ -71,7 +71,10 @@ const CanvasOrLoading = ({ size }) => {
71
71
  return (jsx_runtime_1.jsx("div", { style: container, className: "css-reset", children: jsx_runtime_1.jsx(RunningCalculateMetadata_1.RunningCalculateMetadata, {}) }));
72
72
  }
73
73
  if (resolved.type === 'error') {
74
- return jsx_runtime_1.jsx(ErrorLoading, { error: resolved.error, calculateMetadataContext: true });
74
+ return (jsx_runtime_1.jsx(ErrorLoading, { error: resolved.error, calculateMetadataContext: true, onRetry: () => {
75
+ var _a;
76
+ return (_a = remotion_1.Internals.resolveCompositionsRef.current) === null || _a === void 0 ? void 0 : _a.reloadCurrentlySelectedComposition();
77
+ } }));
75
78
  }
76
79
  return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
77
80
  jsx_runtime_1.jsx(FramePersistor_1.FramePersistor, {}),
@@ -86,9 +89,6 @@ const loaderContainer = {
86
89
  height: '100%',
87
90
  overflowY: 'auto',
88
91
  };
89
- const ErrorLoading = ({ error, calculateMetadataContext }) => {
90
- return (jsx_runtime_1.jsx("div", { style: loaderContainer, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: jsx_runtime_1.jsx(ErrorLoader_1.ErrorLoader, { canHaveDismissButton: false, keyboardShortcuts: true, error: error, onRetry: () => {
91
- var _a;
92
- return (_a = remotion_1.Internals.resolveCompositionsRef.current) === null || _a === void 0 ? void 0 : _a.reloadCurrentlySelectedComposition();
93
- }, calculateMetadata: calculateMetadataContext }, error.stack) }));
92
+ const ErrorLoading = ({ error, calculateMetadataContext, onRetry }) => {
93
+ return (jsx_runtime_1.jsx("div", { style: loaderContainer, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: jsx_runtime_1.jsx(ErrorLoader_1.ErrorLoader, { canHaveDismissButton: false, keyboardShortcuts: true, error: error, onRetry: onRetry, calculateMetadata: calculateMetadataContext }, error.stack) }));
94
94
  };
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ export declare const CodingAgentButton: React.FC<{
3
+ readonly label: 'Fix with' | 'Open in';
4
+ readonly prompt: string;
5
+ readonly size: 'compact' | 'default';
6
+ readonly style: React.CSSProperties | null;
7
+ }>;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CodingAgentButton = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const open_in_editor_1 = require("../helpers/open-in-editor");
7
+ const AppLaunchButton_1 = require("./AppLaunchButton");
8
+ const CodingAgentIcon_1 = require("./CodingAgentIcon");
9
+ const NotificationCenter_1 = require("./Notifications/NotificationCenter");
10
+ const SettingsContext_1 = require("./SettingsContext");
11
+ const use_configure_default_apps_1 = require("./use-configure-default-apps");
12
+ const menuLabel = {
13
+ color: 'inherit',
14
+ fontFamily: 'sans-serif',
15
+ fontSize: 13,
16
+ lineHeight: '16px',
17
+ };
18
+ const CodingAgentButton = ({ label, prompt, size, style }) => {
19
+ var _a, _b;
20
+ const { codingAgentInfo } = (0, SettingsContext_1.useSettings)();
21
+ const configureDefaultApps = (0, use_configure_default_apps_1.useConfigureDefaultApps)();
22
+ const installedCodingAgents = (_a = codingAgentInfo === null || codingAgentInfo === void 0 ? void 0 : codingAgentInfo.installedCodingAgents) !== null && _a !== void 0 ? _a : [];
23
+ const defaultCodingAgent = (_b = installedCodingAgents.find((agent) => agent.id === (codingAgentInfo === null || codingAgentInfo === void 0 ? void 0 : codingAgentInfo.defaultCodingAgent))) !== null && _b !== void 0 ? _b : installedCodingAgents[0];
24
+ const alternativeCodingAgents = installedCodingAgents.filter((agent) => agent.id !== (defaultCodingAgent === null || defaultCodingAgent === void 0 ? void 0 : defaultCodingAgent.id));
25
+ const openWithCodingAgent = (0, react_1.useCallback)(async (codingAgentId, codingAgentName) => {
26
+ try {
27
+ const response = await (0, open_in_editor_1.openInCodingAgent)(codingAgentId, codingAgentId === 'copilot' ? null : prompt);
28
+ if (!response.success) {
29
+ (0, NotificationCenter_1.showNotification)(`Could not open ${codingAgentName}`, 2000);
30
+ }
31
+ }
32
+ catch (err) {
33
+ (0, NotificationCenter_1.showNotification)(err.message, 2000);
34
+ }
35
+ }, [prompt]);
36
+ const agentMenuItems = (0, react_1.useMemo)(() => {
37
+ return alternativeCodingAgents.map((codingAgent) => ({
38
+ id: `open-in-${codingAgent.id}`,
39
+ keyHint: null,
40
+ label: jsx_runtime_1.jsx("span", { style: menuLabel, children: codingAgent.name }),
41
+ leftItem: jsx_runtime_1.jsx(CodingAgentIcon_1.CodingAgentIcon, { codingAgentId: codingAgent.id, size: 18 }),
42
+ onClick: () => {
43
+ openWithCodingAgent(codingAgent.id, codingAgent.nameWithType).catch(() => undefined);
44
+ },
45
+ quickSwitcherLabel: null,
46
+ subMenu: null,
47
+ type: 'item',
48
+ value: `coding-agent-${codingAgent.id}`,
49
+ }));
50
+ }, [alternativeCodingAgents, openWithCodingAgent]);
51
+ if (!defaultCodingAgent) {
52
+ return null;
53
+ }
54
+ return (jsx_runtime_1.jsxs(AppLaunchButton_1.AppLaunchButton, { actionButtonId: null, ariaLabel: `${label} ${defaultCodingAgent.nameWithType}`, disabled: false, menuAriaLabel: `${label} another coding agent`, menuButtonId: null, menuItems: agentMenuItems, onConfigureApps: configureDefaultApps, onClick: () => {
55
+ openWithCodingAgent(defaultCodingAgent.id, defaultCodingAgent.nameWithType).catch(() => undefined);
56
+ }, size: size, style: style, title: `${label} ${defaultCodingAgent.nameWithType}`, children: [
57
+ jsx_runtime_1.jsx(CodingAgentIcon_1.CodingAgentIcon, { codingAgentId: defaultCodingAgent.id, size: size === 'default' ? 14 : 18 }), label, " ", defaultCodingAgent.name] }));
58
+ };
59
+ exports.CodingAgentButton = CodingAgentButton;
@@ -3,4 +3,5 @@ import type { ComboboxValue } from './NewComposition/ComboBox';
3
3
  export declare const CompositionContextButton: React.FC<{
4
4
  readonly visible: boolean;
5
5
  readonly getItems: () => ComboboxValue[];
6
+ readonly readOnlyStudio: boolean;
6
7
  }>;
@@ -7,7 +7,10 @@ const client_id_1 = require("../helpers/client-id");
7
7
  const hoverable_1 = require("../helpers/hoverable");
8
8
  const ellipsis_1 = require("../icons/ellipsis");
9
9
  const InlineDropdown_1 = require("./InlineDropdown");
10
- const CompositionContextButton = ({ visible, getItems }) => {
10
+ const revealStyle = {
11
+ display: 'flex',
12
+ };
13
+ const CompositionContextButton = ({ visible, getItems, readOnlyStudio }) => {
11
14
  const iconStyle = (0, react_1.useMemo)(() => {
12
15
  return {
13
16
  style: {
@@ -20,9 +23,9 @@ const CompositionContextButton = ({ visible, getItems }) => {
20
23
  const renderAction = (0, react_1.useCallback)((color) => {
21
24
  return jsx_runtime_1.jsx(ellipsis_1.EllipsisIcon, { fill: color, svgProps: iconStyle });
22
25
  }, [iconStyle]);
23
- if (!visible || connectionStatus !== 'connected') {
26
+ if (!visible || (connectionStatus !== 'connected' && !readOnlyStudio)) {
24
27
  return null;
25
28
  }
26
- return (jsx_runtime_1.jsx(InlineDropdown_1.InlineDropdown, { renderAction: renderAction, getItems: getItems, variant: null, style: hoverable_1.NO_HOVER_BACKGROUND_STYLE, className: hoverable_1.FOCUS_VISIBLE_ONLY_CLASS_NAME }));
29
+ return (jsx_runtime_1.jsx("div", { className: hoverable_1.HOVER_GROUP_REVEAL_CLASS_NAME, style: revealStyle, children: jsx_runtime_1.jsx(InlineDropdown_1.InlineDropdown, { renderAction: renderAction, getItems: getItems, variant: null, style: hoverable_1.NO_HOVER_BACKGROUND_STYLE, className: hoverable_1.FOCUS_VISIBLE_ONLY_CLASS_NAME }) }));
27
30
  };
28
31
  exports.CompositionContextButton = CompositionContextButton;
@@ -2,17 +2,16 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CompositionSelector = exports.useCompositionNavigation = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
- const studio_protocol_1 = require("@remotion/studio-protocol");
6
- const studio_shared_1 = require("@remotion/studio-shared");
7
5
  const react_1 = require("react");
8
6
  const remotion_1 = require("remotion");
9
7
  const client_id_1 = require("../helpers/client-id");
10
8
  const colors_1 = require("../helpers/colors");
11
9
  const create_folder_tree_1 = require("../helpers/create-folder-tree");
12
10
  const persist_open_folders_1 = require("../helpers/persist-open-folders");
13
- const sort_by_nonce_history_1 = require("../helpers/sort-by-nonce-history");
11
+ const folders_1 = require("../state/folders");
14
12
  const modals_1 = require("../state/modals");
15
13
  const z_index_1 = require("../state/z-index");
14
+ const composition_drag_data_1 = require("./composition-drag-data");
16
15
  const CompositionSelectorItem_1 = require("./CompositionSelectorItem");
17
16
  const ContextMenu_1 = require("./ContextMenu");
18
17
  const InitialCompositionLoader_1 = require("./InitialCompositionLoader");
@@ -87,6 +86,7 @@ const getAutoScrollSpeed = ({ clientY, element, }) => {
87
86
  const CompositionSelector = () => {
88
87
  const { compositions, canvasContent, folders } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
89
88
  const { foldersExpanded } = (0, react_1.useContext)(persist_open_folders_1.ExpandedFoldersContext);
89
+ const { compositionSortOrder, setCompositionSortOrder } = (0, react_1.useContext)(folders_1.FolderContext);
90
90
  const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
91
91
  const connectionStatus = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx)
92
92
  .previewServerState.type;
@@ -95,23 +95,27 @@ const CompositionSelector = () => {
95
95
  connectionStatus,
96
96
  readOnlyStudio: window.remotion_isReadOnlyStudio,
97
97
  setSelectedModal,
98
+ compositionSortOrder,
99
+ setCompositionSortOrder,
98
100
  });
99
- }, [connectionStatus, setSelectedModal]);
101
+ }, [
102
+ compositionSortOrder,
103
+ connectionStatus,
104
+ setCompositionSortOrder,
105
+ setSelectedModal,
106
+ ]);
100
107
  const [rootDragHovered, setRootDragHovered] = (0, react_1.useState)(false);
101
108
  const listRef = (0, react_1.useRef)(null);
102
109
  const autoScrollAnimation = (0, react_1.useRef)(null);
103
110
  const autoScrollSpeed = (0, react_1.useRef)(0);
104
111
  const { tabIndex } = (0, z_index_1.useZIndex)();
105
112
  const selectComposition = (0, InitialCompositionLoader_1.useSelectComposition)();
106
- const sortedCompositions = (0, react_1.useMemo)(() => {
107
- return (0, sort_by_nonce_history_1.sortItemsByNonceHistory)(compositions);
108
- }, [compositions]);
109
- const sortedFolders = (0, react_1.useMemo)(() => {
110
- return (0, sort_by_nonce_history_1.sortItemsByNonceHistory)(folders);
111
- }, [folders]);
112
113
  const items = (0, react_1.useMemo)(() => {
113
- return (0, create_folder_tree_1.createFolderTree)(sortedCompositions, sortedFolders, foldersExpanded);
114
- }, [sortedCompositions, sortedFolders, foldersExpanded]);
114
+ const tree = (0, create_folder_tree_1.createFolderTree)(compositions, folders, foldersExpanded);
115
+ return compositionSortOrder === 'alphabetical'
116
+ ? (0, create_folder_tree_1.sortFolderTreeAlphabetically)(tree)
117
+ : tree;
118
+ }, [compositionSortOrder, compositions, folders, foldersExpanded]);
115
119
  const list = (0, react_1.useMemo)(() => {
116
120
  return {
117
121
  flex: 1,
@@ -161,9 +165,8 @@ const CompositionSelector = () => {
161
165
  }
162
166
  }, [runCompositionListAutoScroll, stopCompositionListAutoScroll]);
163
167
  const onCompositionListDragOverCapture = (0, react_1.useCallback)((event) => {
164
- var _a;
165
168
  if (window.remotion_isReadOnlyStudio ||
166
- ((_a = studio_protocol_1.StudioProtocolInternals.getDragPreviewMetadata(event.dataTransfer.types)) === null || _a === void 0 ? void 0 : _a.type) !== 'composition') {
169
+ (0, composition_drag_data_1.getCompositionDragPreviewMetadata)(event.dataTransfer.types) === null) {
167
170
  stopCompositionListAutoScroll();
168
171
  return;
169
172
  }
@@ -178,9 +181,8 @@ const CompositionSelector = () => {
178
181
  return stopCompositionListAutoScroll;
179
182
  }, [stopCompositionListAutoScroll]);
180
183
  const onRootDragOver = (0, react_1.useCallback)((event) => {
181
- var _a;
182
184
  if (window.remotion_isReadOnlyStudio ||
183
- ((_a = studio_protocol_1.StudioProtocolInternals.getDragPreviewMetadata(event.dataTransfer.types)) === null || _a === void 0 ? void 0 : _a.type) !== 'composition') {
185
+ (0, composition_drag_data_1.getCompositionDragPreviewMetadata)(event.dataTransfer.types) === null) {
184
186
  return;
185
187
  }
186
188
  event.preventDefault();
@@ -200,11 +202,10 @@ const CompositionSelector = () => {
200
202
  if (window.remotion_isReadOnlyStudio) {
201
203
  return;
202
204
  }
203
- const parsed = studio_protocol_1.StudioProtocolInternals.parseDragData(event.dataTransfer);
204
- if ((parsed === null || parsed === void 0 ? void 0 : parsed.type) !== 'composition') {
205
+ const compositionDragData = (0, composition_drag_data_1.parseCompositionDragData)(event.dataTransfer);
206
+ if (compositionDragData === null) {
205
207
  return;
206
208
  }
207
- const compositionDragData = parsed.data;
208
209
  event.preventDefault();
209
210
  event.stopPropagation();
210
211
  stopCompositionListAutoScroll();
@@ -225,7 +226,7 @@ const CompositionSelector = () => {
225
226
  },
226
227
  dryRun: false,
227
228
  signal: controller.signal,
228
- symbolicatedStack: (0, studio_shared_1.compositionDragDataToSymbolicatedStack)(compositionDragData),
229
+ symbolicatedStack: (0, composition_drag_data_1.compositionDragDataToSymbolicatedStack)(compositionDragData),
229
230
  });
230
231
  if (result.success) {
231
232
  notification.dismiss();