@remotion/studio 4.0.504 → 4.0.506

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 (172) hide show
  1. package/dist/api/install-package.d.ts +2 -3
  2. package/dist/api/install-package.js +1 -3
  3. package/dist/api/visual-control.d.ts +3 -0
  4. package/dist/api/visual-control.js +3 -0
  5. package/dist/components/AssetSelectorItem.js +3 -3
  6. package/dist/components/AudioWaveform.d.ts +1 -1
  7. package/dist/components/AudioWaveform.js +36 -3
  8. package/dist/components/Canvas.js +2 -0
  9. package/dist/components/CompositionContextButton.d.ts +1 -1
  10. package/dist/components/CompositionContextButton.js +2 -2
  11. package/dist/components/CompositionSelector.js +3 -3
  12. package/dist/components/CompositionSelectorItem.js +5 -5
  13. package/dist/components/ConfigureDefaultEditorModal.d.ts +3 -1
  14. package/dist/components/ConfigureDefaultEditorModal.js +90 -32
  15. package/dist/components/ConfigureLicenseModal.d.ts +2 -1
  16. package/dist/components/ConfigureLicenseModal.js +40 -32
  17. package/dist/components/ConfirmationDialog.js +2 -2
  18. package/dist/components/ContextMenu.d.ts +5 -7
  19. package/dist/components/ContextMenu.js +54 -21
  20. package/dist/components/Editor.js +2 -0
  21. package/dist/components/EditorGuides/Guide.js +2 -2
  22. package/dist/components/EffectPickerModal.js +3 -3
  23. package/dist/components/GlobalKeybindings.js +3 -2
  24. package/dist/components/InlineAction.d.ts +1 -1
  25. package/dist/components/InlineAction.js +14 -13
  26. package/dist/components/InlineCaptionInspector.d.ts +2 -2
  27. package/dist/components/InlineDropdown.d.ts +4 -2
  28. package/dist/components/InlineDropdown.js +23 -6
  29. package/dist/components/InspectorOpenInEditor.d.ts +1 -0
  30. package/dist/components/InspectorOpenInEditor.js +33 -9
  31. package/dist/components/InspectorPanel/AlignmentControls.js +5 -2
  32. package/dist/components/InspectorPanel/CompositionInspector.js +15 -1
  33. package/dist/components/InspectorPanel/ConnectedCompositionsSection.js +3 -3
  34. package/dist/components/InspectorPanel/EasingInspector.js +7 -4
  35. package/dist/components/InspectorPanel/KeyframeInspector.js +5 -1
  36. package/dist/components/InspectorPanel/SequenceSelectionInspector.js +1 -1
  37. package/dist/components/InspectorPanel/common.d.ts +1 -0
  38. package/dist/components/InspectorPanel/common.js +25 -35
  39. package/dist/components/InspectorPanel/use-composition-actions.js +4 -1
  40. package/dist/components/InspectorSequenceSection.js +5 -5
  41. package/dist/components/InstallPackage.js +1 -1
  42. package/dist/components/Menu/MenuItem.js +16 -12
  43. package/dist/components/MenuBuildIndicator.js +12 -58
  44. package/dist/components/MenuCompositionName.js +3 -63
  45. package/dist/components/MenuToolbar.js +22 -2
  46. package/dist/components/ModalFooter.d.ts +1 -0
  47. package/dist/components/ModalFooter.js +6 -2
  48. package/dist/components/ModalHeader.js +1 -1
  49. package/dist/components/Modals.js +18 -7
  50. package/dist/components/ModalsProvider.js +5 -6
  51. package/dist/components/NewComposition/CodemodFooter.js +1 -1
  52. package/dist/components/NewComposition/DismissableModal.js +1 -1
  53. package/dist/components/NewComposition/InputDragger.d.ts +1 -0
  54. package/dist/components/NewComposition/InputDragger.js +5 -4
  55. package/dist/components/NewComposition/MenuContent.d.ts +1 -1
  56. package/dist/components/NewComposition/RenameStaticFile.js +1 -1
  57. package/dist/components/NewComposition/menu-typeahead.d.ts +1 -1
  58. package/dist/components/OverrideInputProps.js +1 -1
  59. package/dist/components/PlayPause.js +3 -2
  60. package/dist/components/PlaybackKeyboardShortcutsManager.js +7 -5
  61. package/dist/components/PlaybackRateSelector.js +3 -9
  62. package/dist/components/PreviewToolbar.js +7 -4
  63. package/dist/components/PreviewToolbarOverflowButton.js +4 -2
  64. package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +1 -1
  65. package/dist/components/QuickSwitcher/QuickSwitcherContent.js +1 -1
  66. package/dist/components/RenderButton.d.ts +3 -2
  67. package/dist/components/RenderButton.js +95 -43
  68. package/dist/components/RenderModal/RenderStatusModal.js +1 -1
  69. package/dist/components/RenderModal/ServerRenderModal.js +1 -1
  70. package/dist/components/RenderModal/WebRenderModal.js +3 -2
  71. package/dist/components/RenderQueue/RenderQueueError.js +1 -1
  72. package/dist/components/RenderQueue/RenderQueueItemStatus.js +1 -1
  73. package/dist/components/RenderQueue/RenderQueueProgressMessage.js +1 -1
  74. package/dist/components/RenderQueue/RenderQueueRepeat.js +1 -1
  75. package/dist/components/SelectedOutlineElement.js +10 -11
  76. package/dist/components/SelectedOutlineOverlay.js +67 -20
  77. package/dist/components/SettingsModal.d.ts +7 -0
  78. package/dist/components/SettingsModal.js +50 -0
  79. package/dist/components/SettingsModalFooter.d.ts +4 -0
  80. package/dist/components/SettingsModalFooter.js +46 -0
  81. package/dist/components/SidebarRenderButton.js +1 -1
  82. package/dist/components/SizeSelector.js +3 -9
  83. package/dist/components/SvgImportDialog.js +2 -2
  84. package/dist/components/TimeValue.js +1 -1
  85. package/dist/components/Timeline/Timeline.js +5 -4
  86. package/dist/components/Timeline/TimelineAssetField.js +1 -1
  87. package/dist/components/Timeline/TimelineDragHandler.js +6 -3
  88. package/dist/components/Timeline/TimelineEffectItem.js +6 -2
  89. package/dist/components/Timeline/TimelineEffectPropItem.js +11 -6
  90. package/dist/components/Timeline/TimelineExpandedKeyframeRow.d.ts +6 -6
  91. package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +32 -1
  92. package/dist/components/Timeline/TimelineExpandedRow.d.ts +4 -2
  93. package/dist/components/Timeline/TimelineExpandedRow.js +2 -2
  94. package/dist/components/Timeline/TimelineFontFamilyField.js +3 -1
  95. package/dist/components/Timeline/TimelineHeightContainer.d.ts +1 -0
  96. package/dist/components/Timeline/TimelineHeightContainer.js +2 -2
  97. package/dist/components/Timeline/TimelineInOutDragHandler.js +3 -3
  98. package/dist/components/Timeline/TimelineKeyframeControls.js +1 -0
  99. package/dist/components/Timeline/TimelineKeyframeEasingLine.d.ts +4 -2
  100. package/dist/components/Timeline/TimelineKeyframeEasingLine.js +30 -28
  101. package/dist/components/Timeline/TimelineList.d.ts +1 -0
  102. package/dist/components/Timeline/TimelineList.js +2 -3
  103. package/dist/components/Timeline/TimelineScaleField.js +1 -1
  104. package/dist/components/Timeline/TimelineSelection.js +1 -0
  105. package/dist/components/Timeline/TimelineSequence.js +34 -28
  106. package/dist/components/Timeline/TimelineSequenceItem.d.ts +3 -3
  107. package/dist/components/Timeline/TimelineSequenceItem.js +61 -56
  108. package/dist/components/Timeline/TimelineSequencePropItem.d.ts +10 -2
  109. package/dist/components/Timeline/TimelineSequencePropItem.js +64 -12
  110. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +2 -2
  111. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +39 -6
  112. package/dist/components/Timeline/TimelineTimeIndicators.js +36 -3
  113. package/dist/components/Timeline/TimelineVideoInfo.d.ts +1 -1
  114. package/dist/components/Timeline/TimelineVideoInfo.js +36 -3
  115. package/dist/components/Timeline/TimelineZoomControls.d.ts +2 -2
  116. package/dist/components/Timeline/TimelineZoomControls.js +39 -12
  117. package/dist/components/Timeline/reset-selected-timeline-props.js +1 -1
  118. package/dist/components/Timeline/should-subscribe-to-sequence-props.d.ts +1 -1
  119. package/dist/components/Timeline/timeline-asset-link.d.ts +2 -2
  120. package/dist/components/Timeline/timeline-asset-link.js +2 -2
  121. package/dist/components/Timeline/use-expanded-track-keyframe-rows.js +4 -0
  122. package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.d.ts +1 -1
  123. package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.js +7 -18
  124. package/dist/components/Timeline/use-timeline-asset-drop.js +1 -0
  125. package/dist/components/Timeline/use-timeline-expanded-tree.d.ts +1 -0
  126. package/dist/components/Timeline/use-timeline-expanded-tree.js +5 -0
  127. package/dist/components/Timeline/use-timeline-height.d.ts +2 -1
  128. package/dist/components/Timeline/use-timeline-height.js +23 -2
  129. package/dist/components/TimelineCombobox.d.ts +11 -0
  130. package/dist/components/TimelineCombobox.js +181 -0
  131. package/dist/components/TimelineInOutToggle.js +5 -1
  132. package/dist/components/TopPanel.js +22 -7
  133. package/dist/components/UpdateCheck.js +1 -1
  134. package/dist/components/effect-drag-and-drop.js +1 -1
  135. package/dist/components/handle-drop.d.ts +2 -1
  136. package/dist/components/handle-drop.js +12 -2
  137. package/dist/components/import-assets.d.ts +18 -6
  138. package/dist/components/import-assets.js +76 -32
  139. package/dist/components/selected-outline-types.d.ts +1 -1
  140. package/dist/esm/{chunk-43m68z1k.js → chunk-b49ec3nz.js} +12436 -11482
  141. package/dist/esm/internals.mjs +12436 -11482
  142. package/dist/esm/previewEntry.mjs +9671 -8717
  143. package/dist/esm/renderEntry.mjs +1 -1
  144. package/dist/helpers/client-id.d.ts +3 -1
  145. package/dist/helpers/client-id.js +21 -4
  146. package/dist/helpers/hoverable.d.ts +11 -0
  147. package/dist/helpers/hoverable.js +70 -0
  148. package/dist/helpers/inject-css.js +3 -0
  149. package/dist/helpers/install-required-package.d.ts +3 -3
  150. package/dist/helpers/install-required-package.js +1 -6
  151. package/dist/helpers/studio-fit-padding.d.ts +1 -1
  152. package/dist/helpers/studio-fit-padding.js +1 -1
  153. package/dist/helpers/timeline-layout.d.ts +2 -1
  154. package/dist/helpers/timeline-layout.js +5 -2
  155. package/dist/helpers/use-is-fullscreen.d.ts +1 -0
  156. package/dist/helpers/use-is-fullscreen.js +25 -0
  157. package/dist/helpers/use-menu-structure.js +26 -43
  158. package/dist/helpers/use-runtime-values.d.ts +11 -0
  159. package/dist/helpers/use-runtime-values.js +76 -0
  160. package/dist/icons/apps.d.ts +2 -0
  161. package/dist/icons/apps.js +7 -0
  162. package/dist/icons/browse-elements.d.ts +4 -0
  163. package/dist/icons/browse-elements.js +10 -0
  164. package/dist/icons/canvas-zoom.d.ts +10 -0
  165. package/dist/icons/canvas-zoom.js +21 -0
  166. package/dist/icons/playback-rate.d.ts +5 -0
  167. package/dist/icons/playback-rate.js +31 -0
  168. package/dist/icons/search.d.ts +5 -0
  169. package/dist/icons/search.js +10 -0
  170. package/dist/state/modals.d.ts +5 -6
  171. package/dist/state/modals.js +5 -3
  172. package/package.json +12 -12
@@ -1,4 +1,37 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
37
  };
@@ -6,7 +39,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
39
  exports.RenderButton = void 0;
7
40
  const jsx_runtime_1 = require("react/jsx-runtime");
8
41
  const player_1 = require("@remotion/player");
9
- const react_1 = require("react");
42
+ const react_1 = __importStar(require("react"));
10
43
  const react_dom_1 = __importDefault(require("react-dom"));
11
44
  const remotion_1 = require("remotion");
12
45
  const client_id_1 = require("../helpers/client-id");
@@ -25,10 +58,9 @@ const MenuContent_1 = require("./NewComposition/MenuContent");
25
58
  const splitButtonContainer = {
26
59
  display: 'inline-flex',
27
60
  flexDirection: 'row',
28
- alignItems: 'stretch',
29
- borderRadius: 4,
30
- border: `1px solid ${colors_1.BLACK_ALPHA_60}`,
31
- backgroundColor: colors_1.INPUT_BACKGROUND,
61
+ alignItems: 'center',
62
+ borderRadius: 3,
63
+ gap: 1,
32
64
  overflow: 'hidden',
33
65
  };
34
66
  const mainButtonStyle = {
@@ -38,18 +70,14 @@ const mainButtonStyle = {
38
70
  paddingBottom: 7,
39
71
  background: colors_1.TRANSPARENT,
40
72
  border: 'none',
73
+ borderRadius: '3px 0 0 3px',
41
74
  color: colors_1.WHITE,
42
- cursor: 'pointer',
75
+ cursor: 'default',
43
76
  display: 'flex',
44
77
  alignItems: 'center',
45
78
  fontSize: 14,
46
79
  fontFamily: 'inherit',
47
80
  };
48
- const dividerStyle = {
49
- width: 1,
50
- backgroundColor: colors_1.BLACK_ALPHA_60,
51
- alignSelf: 'stretch',
52
- };
53
81
  const dropdownTriggerStyle = {
54
82
  paddingLeft: 6,
55
83
  paddingRight: 6,
@@ -57,10 +85,12 @@ const dropdownTriggerStyle = {
57
85
  paddingBottom: 7,
58
86
  background: colors_1.TRANSPARENT,
59
87
  border: 'none',
88
+ borderRadius: '0 3px 3px 0',
60
89
  color: colors_1.WHITE,
61
- cursor: 'pointer',
90
+ cursor: 'default',
62
91
  display: 'flex',
63
92
  alignItems: 'center',
93
+ justifyContent: 'center',
64
94
  };
65
95
  const mainButtonContent = {
66
96
  paddingLeft: 4,
@@ -75,32 +105,29 @@ const label = {
75
105
  minWidth: 0,
76
106
  overflow: 'hidden',
77
107
  textOverflow: 'ellipsis',
108
+ userSelect: 'none',
109
+ WebkitUserSelect: 'none',
78
110
  whiteSpace: 'nowrap',
79
111
  };
80
- const compactSplitButtonSegmentHeight = layout_1.COMPACT_CONTROL_ROW_HEIGHT;
112
+ const compactSplitButtonSegmentHeight = 24;
81
113
  const compactMainButtonStyle = {
82
114
  ...mainButtonStyle,
83
115
  boxSizing: 'border-box',
84
116
  height: compactSplitButtonSegmentHeight,
85
- paddingLeft: 6,
86
- paddingRight: 6,
87
- paddingTop: 6,
88
- paddingBottom: 6,
117
+ padding: '0 4px',
89
118
  fontSize: 12,
90
119
  };
91
120
  const compactDropdownTriggerStyle = {
92
121
  ...dropdownTriggerStyle,
93
122
  boxSizing: 'border-box',
94
123
  height: compactSplitButtonSegmentHeight,
95
- paddingLeft: 5,
96
- paddingRight: 5,
97
- paddingTop: 6,
98
- paddingBottom: 6,
124
+ padding: 0,
125
+ width: 20,
99
126
  };
100
127
  const compactMainButtonContent = {
101
128
  ...mainButtonContent,
102
- paddingLeft: 2,
103
- paddingRight: 4,
129
+ paddingLeft: 0,
130
+ paddingRight: 0,
104
131
  };
105
132
  const compactLabel = {
106
133
  ...label,
@@ -123,13 +150,12 @@ const getInitialRenderType = (readOnlyStudio) => {
123
150
  }
124
151
  return 'server-render';
125
152
  };
126
- const RenderButton = ({ readOnlyStudio, size: controlSize = 'default' }) => {
153
+ const RenderButtonInner = ({ readOnlyStudio, size: controlSize = 'default', narrow = false }) => {
127
154
  const { inFrame, outFrame } = (0, in_out_1.useTimelineInOutFramePosition)();
128
- const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
155
+ const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
129
156
  const [preferredRenderType, setPreferredRenderType] = (0, react_1.useState)(() => getInitialRenderType(readOnlyStudio));
130
157
  const [dropdownOpened, setDropdownOpened] = (0, react_1.useState)(false);
131
- const [mainButtonHovered, setMainButtonHovered] = (0, react_1.useState)(false);
132
- const [dropdownButtonHovered, setDropdownButtonHovered] = (0, react_1.useState)(false);
158
+ const [hovered, setHovered] = (0, react_1.useState)(false);
133
159
  const dropdownRef = (0, react_1.useRef)(null);
134
160
  const containerRef = (0, react_1.useRef)(null);
135
161
  const { currentZIndex } = (0, z_index_1.useZIndex)();
@@ -193,14 +219,17 @@ const RenderButton = ({ readOnlyStudio, size: controlSize = 'default' }) => {
193
219
  const iconStyle = (0, react_1.useMemo)(() => {
194
220
  return {
195
221
  style: {
196
- height: controlSize === 'compact' ? 14 : 16,
222
+ height: controlSize === 'compact' ? 18 : 16,
223
+ width: controlSize === 'compact' ? 18 : 16,
197
224
  flexShrink: 0,
198
225
  },
199
226
  };
200
227
  }, [controlSize]);
201
228
  const video = remotion_1.Internals.useVideo();
202
- const { getCurrentFrame } = player_1.PlayerInternals.usePlayer();
229
+ const { getCurrentFrame } = player_1.PlayerInternals.usePlayerMethods();
203
230
  const { props } = (0, react_1.useContext)(remotion_1.Internals.EditorPropsContext);
231
+ // Read the frame when the modal opens instead of subscribing this button to
232
+ // every timeline position update.
204
233
  const openServerRenderModal = (0, react_1.useCallback)((copyCommandOnly) => {
205
234
  var _a;
206
235
  var _b, _c;
@@ -264,7 +293,7 @@ const RenderButton = ({ readOnlyStudio, size: controlSize = 'default' }) => {
264
293
  initialMediaCacheSizeInBytes: defaults.mediaCacheSizeInBytes,
265
294
  renderDefaults: defaults,
266
295
  });
267
- }, [video, setSelectedModal, getCurrentFrame, props, inFrame, outFrame]);
296
+ }, [video, setSelectedModal, props, inFrame, outFrame, getCurrentFrame]);
268
297
  const openClientRenderModal = (0, react_1.useCallback)(() => {
269
298
  var _a;
270
299
  if (!video) {
@@ -298,7 +327,7 @@ const RenderButton = ({ readOnlyStudio, size: controlSize = 'default' }) => {
298
327
  initialMediaCacheSizeInBytes: defaults.mediaCacheSizeInBytes,
299
328
  initialPageResponsiveness: 'medium',
300
329
  });
301
- }, [video, setSelectedModal, getCurrentFrame, props, inFrame, outFrame]);
330
+ }, [video, setSelectedModal, props, inFrame, outFrame, getCurrentFrame]);
302
331
  const onClick = (0, react_1.useCallback)(() => {
303
332
  if (renderType === 'render-command') {
304
333
  openServerRenderModal(true);
@@ -423,10 +452,9 @@ const RenderButton = ({ readOnlyStudio, size: controlSize = 'default' }) => {
423
452
  const containerStyle = (0, react_1.useMemo)(() => {
424
453
  return {
425
454
  ...splitButtonContainer,
426
- borderColor: colors_1.BLACK_ALPHA_60,
427
- borderRadius: controlSize === 'compact' ? 0 : 4,
455
+ borderRadius: controlSize === 'compact' ? 3 : 4,
428
456
  opacity: 1,
429
- cursor: 'pointer',
457
+ cursor: 'default',
430
458
  };
431
459
  }, [controlSize]);
432
460
  const renderLabel = renderType === 'server-render'
@@ -434,22 +462,46 @@ const RenderButton = ({ readOnlyStudio, size: controlSize = 'default' }) => {
434
462
  : renderType === 'render-command'
435
463
  ? 'Render via CLI'
436
464
  : 'Render on web';
437
- const mainIconColor = mainButtonHovered ? colors_1.WHITE : colors_1.WHITE_ALPHA_80;
438
- const dropdownIconColor = dropdownOpened || dropdownButtonHovered ? colors_1.WHITE : colors_1.WHITE_ALPHA_80;
465
+ const showRenderLabel = !narrow || renderType !== 'server-render';
466
+ const mainHovered = hovered && !dropdownOpened;
467
+ const mainForegroundColor = mainHovered ? colors_1.WHITE : colors_1.WHITE_ALPHA_80;
468
+ const dropdownForegroundColor = hovered || dropdownOpened ? colors_1.WHITE : colors_1.WHITE_ALPHA_80;
469
+ const mainSegmentBackground = (0, colors_1.getBackgroundFromHoverState)({
470
+ hovered: mainHovered,
471
+ selected: false,
472
+ });
473
+ const dropdownSegmentBackground = (0, colors_1.getBackgroundFromHoverState)({
474
+ hovered,
475
+ selected: dropdownOpened,
476
+ });
439
477
  if (!video) {
440
478
  return null;
441
479
  }
442
480
  return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
443
- jsx_runtime_1.jsx("button", { style: { display: 'none' }, id: "render-modal-button-server", disabled: !canServerRender, onClick: () => openServerRenderModal(false), type: "button" }), ' ', jsx_runtime_1.jsx("button", { style: { display: 'none' }, id: "render-modal-button-client", onClick: openClientRenderModal, type: "button" }), jsx_runtime_1.jsx("button", { style: { display: 'none' }, id: "render-modal-button-command", onClick: () => openServerRenderModal(true), type: "button" }), jsx_runtime_1.jsxs("div", { ref: containerRef, style: containerStyle, title: tooltip, children: [
444
- jsx_runtime_1.jsx("button", { type: "button", style: controlSize === 'compact' ? compactMainButtonStyle : mainButtonStyle, onClick: onClick, onPointerEnter: () => setMainButtonHovered(true), onPointerLeave: () => setMainButtonHovered(false), id: "render-modal-button", children: jsx_runtime_1.jsxs(layout_1.Row, { align: "center", style: controlSize === 'compact'
481
+ jsx_runtime_1.jsx("button", { style: { display: 'none' }, id: "render-modal-button-server", disabled: !canServerRender, onClick: () => openServerRenderModal(false), type: "button" }), ' ', jsx_runtime_1.jsx("button", { style: { display: 'none' }, id: "render-modal-button-client", onClick: openClientRenderModal, type: "button" }), jsx_runtime_1.jsx("button", { style: { display: 'none' }, id: "render-modal-button-command", onClick: () => openServerRenderModal(true), type: "button" }), jsx_runtime_1.jsxs("div", { ref: containerRef, style: containerStyle, title: tooltip, onPointerEnter: () => setHovered(true), onPointerLeave: () => setHovered(false), children: [
482
+ jsx_runtime_1.jsx("button", { type: "button", "aria-label": renderLabel, style: {
483
+ ...(controlSize === 'compact'
484
+ ? compactMainButtonStyle
485
+ : mainButtonStyle),
486
+ backgroundColor: mainSegmentBackground,
487
+ color: mainForegroundColor,
488
+ }, onClick: onClick, id: "render-modal-button", children: jsx_runtime_1.jsxs(layout_1.Row, { align: "center", style: controlSize === 'compact'
445
489
  ? compactMainButtonContent
446
490
  : mainButtonContent, children: [
447
- jsx_runtime_1.jsx(render_1.ThinRenderIcon, { fill: mainIconColor, svgProps: iconStyle }), jsx_runtime_1.jsx(layout_1.Spacing, { x: controlSize === 'compact' ? 0.75 : 1 }), jsx_runtime_1.jsx("span", { style: controlSize === 'compact' ? compactLabel : label, children: renderLabel })
448
- ] }) }), jsx_runtime_1.jsx("div", { style: dividerStyle }), jsx_runtime_1.jsx("button", { ref: dropdownRef, type: "button", style: controlSize === 'compact'
449
- ? compactDropdownTriggerStyle
450
- : dropdownTriggerStyle, className: is_menu_item_1.MENU_INITIATOR_CLASSNAME, onPointerDown: onPointerDown, onClick: onClickDropdown, onPointerEnter: () => setDropdownButtonHovered(true), onPointerLeave: () => setDropdownButtonHovered(false), children: jsx_runtime_1.jsx(caret_1.CaretDown, { color: dropdownIconColor }) })
491
+ jsx_runtime_1.jsx(render_1.ThinRenderIcon, { fill: mainForegroundColor, svgProps: iconStyle }), showRenderLabel ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
492
+ jsx_runtime_1.jsx(layout_1.Spacing, { x: controlSize === 'compact' ? 0.75 : 1 }), jsx_runtime_1.jsx("span", { style: {
493
+ ...(controlSize === 'compact' ? compactLabel : label),
494
+ color: mainForegroundColor,
495
+ }, children: renderLabel })
496
+ ] })) : null] }) }), jsx_runtime_1.jsx("button", { ref: dropdownRef, type: "button", style: {
497
+ ...(controlSize === 'compact'
498
+ ? compactDropdownTriggerStyle
499
+ : dropdownTriggerStyle),
500
+ backgroundColor: dropdownSegmentBackground,
501
+ color: dropdownForegroundColor,
502
+ }, className: is_menu_item_1.MENU_INITIATOR_CLASSNAME, onPointerDown: onPointerDown, onClick: onClickDropdown, children: jsx_runtime_1.jsx(caret_1.CaretDown, { color: dropdownForegroundColor }) })
451
503
  ] }), portalStyle
452
504
  ? react_dom_1.default.createPortal(jsx_runtime_1.jsx("div", { style: styles_1.fullScreenOverlay, children: jsx_runtime_1.jsx("div", { style: styles_1.outerPortal, className: "css-reset", children: jsx_runtime_1.jsx(z_index_1.HigherZIndex, { onOutsideClick: onHideDropdown, onEscape: onHideDropdown, children: jsx_runtime_1.jsx("div", { style: portalStyle, onPointerDown: onMenuPointerDown, children: jsx_runtime_1.jsx(MenuContent_1.MenuContent, { onNextMenu: () => { }, onPreviousMenu: () => { }, values: dropdownValues, onHide: onHideDropdown, leaveLeftSpace: false, preselectIndex: dropdownValues.findIndex((v) => v.id === renderType), topItemCanBeUnselected: false, fixedHeight: derivedMaxHeight }) }) }) }) }), (0, portals_1.getPortal)(currentZIndex))
453
505
  : null] }));
454
506
  };
455
- exports.RenderButton = RenderButton;
507
+ exports.RenderButton = react_1.default.memo(RenderButtonInner);
@@ -41,7 +41,7 @@ const buttonRow = {
41
41
  justifyContent: 'flex-end',
42
42
  };
43
43
  const RenderStatusModal = ({ jobId, }) => {
44
- const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
44
+ const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
45
45
  const { jobs, removeClientJob, cancelClientJob } = (0, react_1.useContext)(context_1.RenderQueueContext);
46
46
  const job = jobs.find((j) => j.id === jobId);
47
47
  if (!job) {
@@ -67,7 +67,7 @@ const reducer = (state, action) => {
67
67
  return state;
68
68
  };
69
69
  const RenderModal = ({ readOnlyStudio, initialFrame, initialVideoImageFormat, initialStillImageFormat, initialJpegQuality, initialScale, initialLogLevel, initialConcurrency, maxConcurrency, minConcurrency, initialMuted, initialEnforceAudioTrack, initialProResProfile, initialx264Preset, initialGopSize, initialPixelFormat, initialVideoBitrate, initialAudioBitrate, initialEveryNthFrame, initialNumberOfGifLoops, initialDelayRenderTimeout, initialOffthreadVideoCacheSizeInBytes, initialEnvVariables, initialDisableWebSecurity, initialGl, initialHeadless, initialIgnoreCertificateErrors, initialEncodingBufferSize, initialEncodingMaxRate, initialOffthreadVideoThreads, initialMediaCacheSizeInBytes, initialDarkMode, initialUserAgent, defaultProps, inFrameMark, outFrameMark, initialColorSpace, initialMultiProcessOnLinux, defaultConfigurationAudioCodec, defaultConfigurationVideoCodec, initialBeep, initialRepro, initialForSeamlessAacConcatenation, renderTypeOfLastRender, initialHardwareAcceleration, initialSampleRate, defaultMetadata, initialChromeMode, renderDefaults, }) => {
70
- const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
70
+ const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
71
71
  const context = (0, react_1.useContext)(ResolveCompositionBeforeModal_1.ResolvedCompositionContext);
72
72
  if (!context) {
73
73
  throw new Error('Should not be able to render without resolving comp first');
@@ -82,7 +82,7 @@ const validateOutnameForStill = ({ outName, stillImageFormat, }) => {
82
82
  const WebRenderModal = ({ initialFrame, defaultProps, inFrameMark, outFrameMark, initialLogLevel, initialStillImageFormat, initialDefaultOutName, initialScale, initialDelayRenderTimeout, initialMediaCacheSizeInBytes, initialContainer, initialVideoCodec, initialAudioCodec, initialAudioBitrate, initialVideoBitrate, initialHardwareAcceleration, initialKeyframeIntervalInSeconds, initialTransparent, initialMuted, initialPageResponsiveness, }) => {
83
83
  var _a;
84
84
  const context = (0, react_1.useContext)(ResolveCompositionBeforeModal_1.ResolvedCompositionContext);
85
- const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
85
+ const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
86
86
  const { setSidebarCollapsedState } = (0, react_1.useContext)(sidebar_1.SidebarContext);
87
87
  const { addClientStillJob, addClientVideoJob } = (0, react_1.useContext)(context_1.RenderQueueContext);
88
88
  if (!context) {
@@ -415,7 +415,8 @@ const WebRenderModal = ({ initialFrame, defaultProps, inFrameMark, outFrameMark,
415
415
  ] })
416
416
  ] }), jsx_runtime_1.jsxs("div", { style: render_modals_1.horizontalLayout, children: [
417
417
  jsx_runtime_1.jsxs("div", { style: render_modals_1.leftSidebar, children: [jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'general', onClick: () => setTab('general'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(file_1.FileIcon, { color: color, style: render_modals_1.icon }) })), children: "General" }), jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'data', onClick: () => setTab('data'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(input_props_1.InputPropsIcon, { color: color, style: render_modals_1.icon }) })), children: "Input Props" }), renderMode !== 'audio' ? (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'picture', onClick: () => setTab('picture'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(frame_1.PicIcon, { color: color, style: render_modals_1.icon }) })), children: "Picture" })) : null, renderMode === 'video' || renderMode === 'audio' ? (jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'audio', onClick: () => setTab('audio'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(audio_1.AudioIcon, { color: color, style: render_modals_1.icon }) })), children: "Audio" })) : null, jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: tab === 'advanced', onClick: () => setTab('advanced'), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(gear_1.GearIcon, { color: color, style: render_modals_1.icon }) })), children: "Other" }), jsx_runtime_1.jsx(vertical_1.VerticalTab, { style: render_modals_1.horizontalTab, selected: false, onClick: () => setSelectedModal({
418
- type: 'configure-license',
418
+ type: 'settings',
419
+ initialTab: 'license',
419
420
  initialPublicLicenseKey: publicLicenseKey,
420
421
  }), renderIcon: (color) => (jsx_runtime_1.jsx("div", { style: render_modals_1.iconContainer, children: jsx_runtime_1.jsx(certificate_1.CertificateIcon, { color: color, style: render_modals_1.icon }) })), children: "License" })] }), jsx_runtime_1.jsx("div", { style: render_modals_1.optionsPanel, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: tab === 'general' ? (jsx_runtime_1.jsx(WebRenderModalBasic_1.WebRenderModalBasic, { renderMode: renderMode, resolvedComposition: resolvedComposition, imageFormat: imageFormat, setStillFormat: setStillFormat, frame: frame, onFrameChanged: onFrameChanged, onFrameSetDirectly: onFrameSetDirectly, container: container, setContainerFormat: setContainerFormat, setCodec: setCodecWithContainer, encodableVideoCodecs: encodableVideoCodecs, effectiveVideoCodec: effectiveVideoCodec, startFrame: finalStartFrame, setStartFrame: setStartFrame, endFrame: finalEndFrame, setEndFrame: setEndFrame, outName: outName, onOutNameChange: onOutNameChange, validationMessage: outnameValidation.valid ? null : outnameValidation.error.message, logLevel: logLevel, setLogLevel: setLogLevel })) : tab === 'data' ? (jsx_runtime_1.jsx(DataEditor_1.DataEditor, { defaultProps: inputProps, setDefaultProps: setInputProps, unresolvedComposition: unresolvedComposition, propsEditType: "input-props", canSaveDefaultProps: {
421
422
  canUpdate: false,
@@ -10,7 +10,7 @@ const outputLocation = {
10
10
  ...item_style_1.renderQueueItemSubtitleStyle,
11
11
  };
12
12
  const RenderQueueError = ({ job }) => {
13
- const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
13
+ const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
14
14
  const { tabIndex } = (0, z_index_1.useZIndex)();
15
15
  const onClick = (0, react_1.useCallback)(() => {
16
16
  setSelectedModal({
@@ -52,7 +52,7 @@ const invisibleStyle = {
52
52
  display: 'flex',
53
53
  };
54
54
  const RenderQueueItemStatus = ({ job }) => {
55
- const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
55
+ const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
56
56
  const [hovered, setHovered] = react_1.default.useState(false);
57
57
  const isClientJob = (0, context_1.isClientRenderJob)(job);
58
58
  const onPointerEnter = (0, react_1.useCallback)(() => {
@@ -15,7 +15,7 @@ const RenderQueueProgressMessage = ({ job }) => {
15
15
  if (job.status !== 'running') {
16
16
  throw new Error('should not have rendered this component');
17
17
  }
18
- const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
18
+ const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
19
19
  const { tabIndex } = (0, z_index_1.useZIndex)();
20
20
  const isClientJob = (0, context_1.isClientRenderJob)(job);
21
21
  const onClick = (0, react_1.useCallback)(() => {
@@ -9,7 +9,7 @@ const modals_1 = require("../../state/modals");
9
9
  const InlineAction_1 = require("../InlineAction");
10
10
  const context_1 = require("./context");
11
11
  const RenderQueueRepeatItem = ({ job }) => {
12
- const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
12
+ const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
13
13
  const isClientJob = (0, context_1.isClientRenderJob)(job);
14
14
  const onClick = (0, react_1.useCallback)((e) => {
15
15
  e.stopPropagation();
@@ -73,7 +73,6 @@ const timeline_translate_utils_1 = require("./Timeline/timeline-translate-utils"
73
73
  const get_stack_1 = require("./Timeline/TimelineStack/get-stack");
74
74
  const transform_origin_utils_1 = require("./Timeline/transform-origin-utils");
75
75
  const use_select_asset_1 = require("./use-select-asset");
76
- const emptyContextMenuValues = [];
77
76
  const SelectedOutlineTransformOriginHandle = ({ outline, onDraggingChange, target }) => {
78
77
  var _a, _b;
79
78
  const { setDragOverrides, clearDragOverrides, setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
@@ -305,7 +304,7 @@ const SelectedOutlineTransformOriginHandle = ({ outline, onDraggingChange, targe
305
304
  ] }));
306
305
  };
307
306
  exports.SelectedOutlineTransformOriginHandle = SelectedOutlineTransformOriginHandle;
308
- const SelectedOutlinePolygon = ({ allDragTargets, allDragOutlines, contextMenuValues, dragging, hovered, onContextMenuOpen, outline, onDraggingChange, onHoverChange, onSnapPointsChange, onSelect, onDoubleClickTarget, scale, snapTargets, target, }) => {
307
+ const SelectedOutlinePolygon = ({ allDragTargets, allDragOutlines, dragging, hovered, onContextMenuOpen, outline, onDraggingChange, onHoverChange, onSnapPointsChange, onSelect, onDoubleClickTarget, scale, snapTargets, target, }) => {
309
308
  var _a, _b, _c, _d;
310
309
  const { getDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
311
310
  const { setPropStatuses, setDragOverrides, clearDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
@@ -566,10 +565,10 @@ const SelectedOutlinePolygon = ({ allDragTargets, allDragOutlines, contextMenuVa
566
565
  if (!dragging) {
567
566
  onHoverChange(null);
568
567
  }
569
- }, onPointerDown: onPointerDown, onDoubleClick: onDoubleClick, onDragOver: effectDrop === null ? undefined : onEffectDragOver, onDragLeave: effectDrop === null ? undefined : onEffectDragLeave, onDrop: effectDrop === null ? undefined : onEffectDrop }), jsx_runtime_1.jsx(ContextMenu_1.ContextMenuForTarget, { triggerRef: polygonRef, values: [...contextMenuValues], onOpen: onContextMenuOpen })
568
+ }, onPointerDown: onPointerDown, onDoubleClick: onDoubleClick, onDragOver: effectDrop === null ? undefined : onEffectDragOver, onDragLeave: effectDrop === null ? undefined : onEffectDragLeave, onDrop: effectDrop === null ? undefined : onEffectDrop }), jsx_runtime_1.jsx(ContextMenu_1.ContextMenuForTarget, { triggerRef: polygonRef, getItems: onContextMenuOpen })
570
569
  ] }));
571
570
  };
572
- const SelectedOutlineScaleEdgeLine = ({ allScaleDragTargets, contextMenuValues, dragging, edge, outline, onDraggingChange, onContextMenuOpen, onHoverChange, onSelect, target, }) => {
571
+ const SelectedOutlineScaleEdgeLine = ({ allScaleDragTargets, dragging, edge, outline, onDraggingChange, onContextMenuOpen, onHoverChange, onSelect, target, }) => {
573
572
  var _a, _b;
574
573
  const { getDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
575
574
  const { setPropStatuses, setDragOverrides, clearDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
@@ -725,7 +724,7 @@ const SelectedOutlineScaleEdgeLine = ({ allScaleDragTargets, contextMenuValues,
725
724
  if (!dragging) {
726
725
  onHoverChange(null);
727
726
  }
728
- }, onPointerDown: onPointerDown }), jsx_runtime_1.jsx(ContextMenu_1.ContextMenuForTarget, { triggerRef: lineRef, values: [...contextMenuValues], onOpen: onContextMenuOpen })
727
+ }, onPointerDown: onPointerDown }), jsx_runtime_1.jsx(ContextMenu_1.ContextMenuForTarget, { triggerRef: lineRef, getItems: onContextMenuOpen })
729
728
  ] }));
730
729
  };
731
730
  const svgPointToClientPoint = (point, rect) => {
@@ -734,7 +733,7 @@ const svgPointToClientPoint = (point, rect) => {
734
733
  y: point.y + rect.top,
735
734
  };
736
735
  };
737
- const SelectedOutlineRotationCornerHandle = ({ allRotationDragTargets, contextMenuValues, corner, dragging, outline, onDraggingChange, onContextMenuOpen, onHoverChange, onSelect, target, }) => {
736
+ const SelectedOutlineRotationCornerHandle = ({ allRotationDragTargets, corner, dragging, outline, onDraggingChange, onContextMenuOpen, onHoverChange, onSelect, target, }) => {
738
737
  var _a, _b;
739
738
  const { getDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
740
739
  const { setPropStatuses, setDragOverrides, clearDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
@@ -946,7 +945,7 @@ const SelectedOutlineRotationCornerHandle = ({ allRotationDragTargets, contextMe
946
945
  if (!dragging) {
947
946
  onHoverChange(null);
948
947
  }
949
- }, onPointerDown: onPointerDown }), jsx_runtime_1.jsx(ContextMenu_1.ContextMenuForTarget, { triggerRef: circleRef, values: [...contextMenuValues], onOpen: onContextMenuOpen })
948
+ }, onPointerDown: onPointerDown }), jsx_runtime_1.jsx(ContextMenu_1.ContextMenuForTarget, { triggerRef: circleRef, getItems: onContextMenuOpen })
950
949
  ] }));
951
950
  };
952
951
  const SelectedOutlineElement = ({ allDragTargets, allDragOutlines, allRotationDragTargets, allScaleDragTargets, dragging, hovered, outline, onDraggingChange, onHoverChange, onSnapPointsChange, onSelect, scale, snapTargets, target, }) => {
@@ -957,7 +956,7 @@ const SelectedOutlineElement = ({ allDragTargets, allDragOutlines, allRotationDr
957
956
  const selectAsset = (0, use_select_asset_1.useSelectAsset)();
958
957
  const selectComposition = (0, InitialCompositionLoader_1.useSelectComposition)();
959
958
  const { compositions } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
960
- const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
959
+ const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
961
960
  const resolveOriginalLocation = react_1.default.useCallback(async (resolveTarget) => {
962
961
  const stack = resolveTarget.sequence.getStack();
963
962
  if (!stack) {
@@ -1179,10 +1178,10 @@ const SelectedOutlineElement = ({ allDragTargets, allDragOutlines, allRotationDr
1179
1178
  target,
1180
1179
  ]);
1181
1180
  return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
1182
- jsx_runtime_1.jsx(SelectedOutlinePolygon, { allDragTargets: allDragTargets, allDragOutlines: allDragOutlines, contextMenuValues: emptyContextMenuValues, dragging: dragging, hovered: hovered, outline: outline, onContextMenuOpen: onContextMenuOpen, onDraggingChange: onDraggingChange, onHoverChange: onHoverChange, onSnapPointsChange: onSnapPointsChange, onSelect: onSelect, onDoubleClickTarget: onDoubleClickTarget, scale: scale, snapTargets: snapTargets, target: target }), jsx_runtime_1.jsx(SelectedOutlineCropControls_1.SelectedOutlineCropControls, { outline: outline, onDraggingChange: onDraggingChange, target: target }), (target === null || target === void 0 ? void 0 : target.cropDrag) === null && (target.containsSelection || hovered)
1183
- ? ['top', 'right', 'bottom', 'left'].map((edge) => (jsx_runtime_1.jsx(SelectedOutlineScaleEdgeLine, { allScaleDragTargets: allScaleDragTargets, contextMenuValues: emptyContextMenuValues, dragging: dragging, edge: edge, outline: outline, onContextMenuOpen: onContextMenuOpen, onDraggingChange: onDraggingChange, onHoverChange: onHoverChange, onSelect: onSelect, target: target }, edge)))
1181
+ jsx_runtime_1.jsx(SelectedOutlinePolygon, { allDragTargets: allDragTargets, allDragOutlines: allDragOutlines, dragging: dragging, hovered: hovered, outline: outline, onContextMenuOpen: onContextMenuOpen, onDraggingChange: onDraggingChange, onHoverChange: onHoverChange, onSnapPointsChange: onSnapPointsChange, onSelect: onSelect, onDoubleClickTarget: onDoubleClickTarget, scale: scale, snapTargets: snapTargets, target: target }), jsx_runtime_1.jsx(SelectedOutlineCropControls_1.SelectedOutlineCropControls, { outline: outline, onDraggingChange: onDraggingChange, target: target }), (target === null || target === void 0 ? void 0 : target.cropDrag) === null && (target.containsSelection || hovered)
1182
+ ? ['top', 'right', 'bottom', 'left'].map((edge) => (jsx_runtime_1.jsx(SelectedOutlineScaleEdgeLine, { allScaleDragTargets: allScaleDragTargets, dragging: dragging, edge: edge, outline: outline, onContextMenuOpen: onContextMenuOpen, onDraggingChange: onDraggingChange, onHoverChange: onHoverChange, onSelect: onSelect, target: target }, edge)))
1184
1183
  : null, (target === null || target === void 0 ? void 0 : target.cropDrag) === null && (target.containsSelection || hovered)
1185
- ? ['top-left', 'top-right', 'bottom-right', 'bottom-left'].map((corner) => (jsx_runtime_1.jsx(SelectedOutlineRotationCornerHandle, { allRotationDragTargets: allRotationDragTargets, contextMenuValues: emptyContextMenuValues, corner: corner, dragging: dragging, outline: outline, onContextMenuOpen: onContextMenuOpen, onDraggingChange: onDraggingChange, onHoverChange: onHoverChange, onSelect: onSelect, target: target }, corner)))
1184
+ ? ['top-left', 'top-right', 'bottom-right', 'bottom-left'].map((corner) => (jsx_runtime_1.jsx(SelectedOutlineRotationCornerHandle, { allRotationDragTargets: allRotationDragTargets, corner: corner, dragging: dragging, outline: outline, onContextMenuOpen: onContextMenuOpen, onDraggingChange: onDraggingChange, onHoverChange: onHoverChange, onSelect: onSelect, target: target }, corner)))
1186
1185
  : null] }));
1187
1186
  };
1188
1187
  exports.SelectedOutlineElement = SelectedOutlineElement;