@remotion/studio 4.0.518 → 4.0.519

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 (140) hide show
  1. package/dist/components/AppLaunchButton.d.ts +16 -0
  2. package/dist/components/AppLaunchButton.js +90 -0
  3. package/dist/components/AssetSelector.js +7 -6
  4. package/dist/components/AssetSelectorItem.d.ts +12 -0
  5. package/dist/components/AssetSelectorItem.js +180 -62
  6. package/dist/components/Button.js +20 -7
  7. package/dist/components/Canvas.js +109 -78
  8. package/dist/components/CanvasOrLoading.js +7 -7
  9. package/dist/components/CodingAgentButton.d.ts +7 -0
  10. package/dist/components/CodingAgentButton.js +59 -0
  11. package/dist/components/CompositionContextButton.d.ts +1 -0
  12. package/dist/components/CompositionContextButton.js +6 -3
  13. package/dist/components/CompositionSelector.js +15 -10
  14. package/dist/components/CompositionSelectorItem.js +16 -23
  15. package/dist/components/ConfigureLicenseModal.js +4 -48
  16. package/dist/components/CurrentAsset.js +1 -1
  17. package/dist/components/ElementInstallConfirmation.d.ts +20 -7
  18. package/dist/components/ElementInstallConfirmation.js +325 -32
  19. package/dist/components/FixComputedValueModal.js +5 -131
  20. package/dist/components/InitialCompositionLoader.js +3 -2
  21. package/dist/components/InspectorOpenInEditor.js +48 -33
  22. package/dist/components/InspectorPanel/CompositionInspector.js +35 -3
  23. package/dist/components/InspectorPanel/CompositionInspectorHeader.js +22 -14
  24. package/dist/components/InspectorPanel/ConnectedCompositionsSection.js +3 -1
  25. package/dist/components/InspectorPanel/SequenceInspectorHeader.d.ts +1 -1
  26. package/dist/components/InspectorPanel/SequenceInspectorHeader.js +10 -5
  27. package/dist/components/InspectorPanel/SequenceSelectionInspector.js +1 -1
  28. package/dist/components/InspectorPanel/common.js +1 -0
  29. package/dist/components/InspectorPanel/styles.js +1 -0
  30. package/dist/components/InspectorSequenceSection.js +8 -3
  31. package/dist/components/InspectorSourceLocation.js +5 -1
  32. package/dist/components/KnownBugs.d.ts +1 -1
  33. package/dist/components/KnownBugs.js +1 -1
  34. package/dist/components/LicenseExplanation.d.ts +2 -0
  35. package/dist/components/LicenseExplanation.js +63 -0
  36. package/dist/components/MenuToolbar.js +7 -1
  37. package/dist/components/Modals.js +1 -2
  38. package/dist/components/NewComposition/InputDragger.js +29 -2
  39. package/dist/components/NewComposition/NewCompDuration.js +1 -1
  40. package/dist/components/NewComposition/NewComposition.d.ts +23 -0
  41. package/dist/components/NewComposition/NewComposition.js +217 -80
  42. package/dist/components/{UpdateModal/OpenIssueButton.js → OpenIssueButton.js} +1 -1
  43. package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +2 -1
  44. package/dist/components/QuickSwitcher/QuickSwitcherContent.js +21 -13
  45. package/dist/components/RenderQueue/actions.d.ts +1 -0
  46. package/dist/components/RenderQueue/actions.js +5 -1
  47. package/dist/components/SelectedOutlineCanvasRotation.js +27 -1
  48. package/dist/components/SelectedOutlineElement.js +2 -1
  49. package/dist/components/SelectedOutlineKeyboardControls.d.ts +2 -2
  50. package/dist/components/SelectedOutlineOverlay.d.ts +3 -1
  51. package/dist/components/SelectedOutlineOverlay.js +21 -26
  52. package/dist/components/SelectedOutlinePolygon.d.ts +1 -0
  53. package/dist/components/SelectedOutlinePolygon.js +12 -4
  54. package/dist/components/SelectedOutlineRenderer.js +88 -21
  55. package/dist/components/SettingsContext.js +2 -1
  56. package/dist/components/SettingsModal.d.ts +1 -1
  57. package/dist/components/SettingsModal.js +19 -3
  58. package/dist/components/SidebarRenderButton.d.ts +1 -0
  59. package/dist/components/SidebarRenderButton.js +14 -5
  60. package/dist/components/Timeline/SequencePropsObserver.js +29 -14
  61. package/dist/components/Timeline/TimelineKeyframeControls.js +3 -1
  62. package/dist/components/Timeline/TimelineRowChrome.js +4 -2
  63. package/dist/components/Timeline/TimelineSequence.js +40 -8
  64. package/dist/components/Timeline/TimelineSequenceItem.js +34 -1
  65. package/dist/components/Timeline/TimelineStack/get-stack.d.ts +1 -0
  66. package/dist/components/Timeline/TimelineStack/get-stack.js +35 -3
  67. package/dist/components/Timeline/duplicate-selected-timeline-item.js +23 -25
  68. package/dist/components/Timeline/get-sequence-context-menu-items.d.ts +6 -0
  69. package/dist/components/Timeline/get-sequence-context-menu-items.js +34 -1
  70. package/dist/components/Timeline/sequence-props-subscription-store.d.ts +2 -0
  71. package/dist/components/Timeline/sequence-props-subscription-store.js +22 -1
  72. package/dist/components/Timeline/use-sequence-props-subscription.js +7 -0
  73. package/dist/components/TimelineCombobox.js +1 -0
  74. package/dist/components/UpdateCheck.d.ts +0 -8
  75. package/dist/components/UpdateCheck.js +7 -54
  76. package/dist/components/UpdateStatusContext.d.ts +18 -0
  77. package/dist/components/UpdateStatusContext.js +74 -0
  78. package/dist/components/UpdatesSettings.d.ts +2 -0
  79. package/dist/components/UpdatesSettings.js +251 -0
  80. package/dist/components/WebMcp.js +3 -3
  81. package/dist/components/get-open-in-menu-items.d.ts +4 -0
  82. package/dist/components/get-open-in-menu-items.js +28 -24
  83. package/dist/components/root-composition-menu-items.d.ts +4 -1
  84. package/dist/components/root-composition-menu-items.js +38 -1
  85. package/dist/components/selected-outline-geometry.d.ts +21 -2
  86. package/dist/components/selected-outline-geometry.js +16 -5
  87. package/dist/components/selected-outline-measurement.d.ts +40 -1
  88. package/dist/components/selected-outline-measurement.js +239 -1
  89. package/dist/components/selected-outline-order.d.ts +12 -0
  90. package/dist/components/selected-outline-order.js +251 -0
  91. package/dist/components/selected-outline-types.d.ts +15 -2
  92. package/dist/components/selected-outline-uv.js +106 -3
  93. package/dist/components/use-configure-default-apps.d.ts +1 -0
  94. package/dist/components/use-configure-default-apps.js +24 -0
  95. package/dist/error-overlay/remotion-overlay/CodeFrame.js +5 -6
  96. package/dist/error-overlay/remotion-overlay/CopyStackTrace.js +1 -1
  97. package/dist/error-overlay/remotion-overlay/ErrorDisplay.js +47 -18
  98. package/dist/error-overlay/remotion-overlay/ErrorLoader.js +1 -1
  99. package/dist/error-overlay/remotion-overlay/ErrorTitle.js +5 -4
  100. package/dist/error-overlay/remotion-overlay/OpenInEditor.js +48 -76
  101. package/dist/error-overlay/remotion-overlay/SearchGitHubIssues.js +1 -1
  102. package/dist/error-overlay/remotion-overlay/ShortcutHint.js +2 -2
  103. package/dist/error-overlay/remotion-overlay/StackFrame.js +13 -8
  104. package/dist/error-overlay/remotion-overlay/Symbolicating.js +1 -1
  105. package/dist/esm/{chunk-7prjt5n5.js → chunk-1fkq5bfq.js} +15439 -11610
  106. package/dist/esm/chunk-6jf1natv.js +25 -0
  107. package/dist/esm/{chunk-4bxz1d3g.js → chunk-je0h1bgt.js} +1 -28
  108. package/dist/esm/chunk-m0jqdbkr.js +14571 -0
  109. package/dist/esm/index.mjs +0 -2
  110. package/dist/esm/internals.mjs +32140 -13755
  111. package/dist/esm/previewEntry.mjs +35408 -17021
  112. package/dist/esm/renderEntry.mjs +6 -3
  113. package/dist/helpers/can-show-updates.d.ts +5 -0
  114. package/dist/helpers/can-show-updates.js +7 -0
  115. package/dist/helpers/colors.d.ts +0 -3
  116. package/dist/helpers/colors.js +2 -5
  117. package/dist/helpers/create-folder-tree.d.ts +5 -0
  118. package/dist/helpers/create-folder-tree.js +24 -1
  119. package/dist/helpers/get-asset-metadata.js +1 -1
  120. package/dist/helpers/get-box-quads-polyfill-internals.d.ts +82 -0
  121. package/dist/helpers/get-box-quads-polyfill-internals.js +2403 -0
  122. package/dist/helpers/get-box-quads-ponyfill.d.ts +10 -0
  123. package/dist/helpers/get-box-quads-ponyfill.js +23 -0
  124. package/dist/helpers/get-git-menu-item.d.ts +5 -0
  125. package/dist/helpers/get-git-menu-item.js +15 -1
  126. package/dist/helpers/hoverable.js +10 -5
  127. package/dist/helpers/open-in-editor.js +51 -1
  128. package/dist/helpers/preview-server-events.js +3 -0
  129. package/dist/helpers/timeline-layout.d.ts +0 -1
  130. package/dist/helpers/timeline-layout.js +1 -5
  131. package/dist/helpers/url-state.d.ts +1 -0
  132. package/dist/helpers/url-state.js +12 -5
  133. package/dist/renderEntry.js +2 -0
  134. package/dist/state/folders.d.ts +3 -0
  135. package/dist/state/folders.js +40 -1
  136. package/dist/state/modals.d.ts +1 -6
  137. package/package.json +17 -14
  138. package/dist/components/UpdateModal/UpdateModal.d.ts +0 -6
  139. package/dist/components/UpdateModal/UpdateModal.js +0 -104
  140. /package/dist/components/{UpdateModal/OpenIssueButton.d.ts → OpenIssueButton.d.ts} +0 -0
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getSelectedUvHandles = exports.roundNumericUvEllipseValue = exports.getUvCoordinateForPoint = exports.getUvEllipseInteractiveControls = exports.getUvHandleConnectionEllipses = exports.getUvHandleConnectionLines = exports.getUvHandlePosition = exports.tuplesEqual = void 0;
4
4
  exports.constrainUv = constrainUv;
5
5
  exports.roundUvCoordinate = roundUvCoordinate;
6
- const canvas_1 = require("@remotion/canvas");
7
6
  const remotion_1 = require("remotion");
8
7
  const selected_outline_geometry_1 = require("./selected-outline-geometry");
9
8
  const timeline_field_utils_1 = require("./Timeline/timeline-field-utils");
@@ -92,7 +91,55 @@ const tuplesEqual = (left, right) => {
92
91
  return left[0] === right[0] && left[1] === right[1];
93
92
  };
94
93
  exports.tuplesEqual = tuplesEqual;
95
- const getUvHandlePosition = (points, uv) => (0, canvas_1.getCanvasOutlinePointAtUv)(points, uv);
94
+ const getBilinearUvHandlePosition = (points, uv) => {
95
+ const [tl, tr, br, bl] = points;
96
+ const top = (0, selected_outline_geometry_1.mixPoint)(tl, tr, uv[0]);
97
+ const bottom = (0, selected_outline_geometry_1.mixPoint)(bl, br, uv[0]);
98
+ return (0, selected_outline_geometry_1.mixPoint)(top, bottom, uv[1]);
99
+ };
100
+ const projectiveEpsilon = 0.000001;
101
+ const getProjectiveTransform = (points) => {
102
+ const [tl, tr, br, bl] = points;
103
+ const dx1 = tr.x - br.x;
104
+ const dx2 = bl.x - br.x;
105
+ const dx3 = tl.x - tr.x + br.x - bl.x;
106
+ const dy1 = tr.y - br.y;
107
+ const dy2 = bl.y - br.y;
108
+ const dy3 = tl.y - tr.y + br.y - bl.y;
109
+ let g = 0;
110
+ let h = 0;
111
+ if (Math.abs(dx3) > projectiveEpsilon || Math.abs(dy3) > projectiveEpsilon) {
112
+ const determinant = dx1 * dy2 - dx2 * dy1;
113
+ if (Math.abs(determinant) < projectiveEpsilon) {
114
+ return null;
115
+ }
116
+ g = (dx3 * dy2 - dx2 * dy3) / determinant;
117
+ h = (dx1 * dy3 - dx3 * dy1) / determinant;
118
+ }
119
+ return {
120
+ a: tr.x - tl.x + g * tr.x,
121
+ b: bl.x - tl.x + h * bl.x,
122
+ c: tl.x,
123
+ d: tr.y - tl.y + g * tr.y,
124
+ e: bl.y - tl.y + h * bl.y,
125
+ f: tl.y,
126
+ g,
127
+ h,
128
+ };
129
+ };
130
+ const applyProjectiveTransform = (transform, uv) => {
131
+ const denominator = transform.g * uv[0] + transform.h * uv[1] + 1;
132
+ return {
133
+ x: (transform.a * uv[0] + transform.b * uv[1] + transform.c) / denominator,
134
+ y: (transform.d * uv[0] + transform.e * uv[1] + transform.f) / denominator,
135
+ };
136
+ };
137
+ const getUvHandlePosition = (points, uv) => {
138
+ const transform = getProjectiveTransform(points);
139
+ return transform === null
140
+ ? getBilinearUvHandlePosition(points, uv)
141
+ : applyProjectiveTransform(transform, uv);
142
+ };
96
143
  exports.getUvHandlePosition = getUvHandlePosition;
97
144
  const getUvHandleConnectionLines = ({ handles, points, }) => {
98
145
  const handlesByField = new Map(handles.map((handle) => [
@@ -290,7 +337,63 @@ const getUvEllipseInteractiveControls = ({ handles, dimensions, points, }) => {
290
337
  return controls;
291
338
  };
292
339
  exports.getUvEllipseInteractiveControls = getUvEllipseInteractiveControls;
293
- const getUvCoordinateForPoint = (points, point) => (0, canvas_1.getCanvasOutlineUvForPoint)(points, point);
340
+ const vectorBetween = (from, to) => {
341
+ return { x: to.x - from.x, y: to.y - from.y };
342
+ };
343
+ const getBilinearUvCoordinateForPoint = (points, point) => {
344
+ const [tl, tr, br, bl] = points;
345
+ let u = 0.5;
346
+ let v = 0.5;
347
+ for (let i = 0; i < 8; i++) {
348
+ const current = getBilinearUvHandlePosition(points, [u, v]);
349
+ const errorX = current.x - point.x;
350
+ const errorY = current.y - point.y;
351
+ if (Math.abs(errorX) + Math.abs(errorY) < 0.001) {
352
+ break;
353
+ }
354
+ const du = {
355
+ x: (0, selected_outline_geometry_1.mix)(tr.x - tl.x, br.x - bl.x, v),
356
+ y: (0, selected_outline_geometry_1.mix)(tr.y - tl.y, br.y - bl.y, v),
357
+ };
358
+ const dv = vectorBetween((0, selected_outline_geometry_1.mixPoint)(tl, tr, u), (0, selected_outline_geometry_1.mixPoint)(bl, br, u));
359
+ const determinant = du.x * dv.y - du.y * dv.x;
360
+ if (Math.abs(determinant) < 0.000001) {
361
+ break;
362
+ }
363
+ u -= (errorX * dv.y - errorY * dv.x) / determinant;
364
+ v -= (du.x * errorY - du.y * errorX) / determinant;
365
+ }
366
+ return [u, v];
367
+ };
368
+ const getUvCoordinateForPoint = (points, point) => {
369
+ const transform = getProjectiveTransform(points);
370
+ if (transform === null) {
371
+ return getBilinearUvCoordinateForPoint(points, point);
372
+ }
373
+ const determinant = transform.a * (transform.e - transform.f * transform.h) -
374
+ transform.b * (transform.d - transform.f * transform.g) +
375
+ transform.c * (transform.d * transform.h - transform.e * transform.g);
376
+ if (Math.abs(determinant) < projectiveEpsilon) {
377
+ return getBilinearUvCoordinateForPoint(points, point);
378
+ }
379
+ const inverseA = transform.e - transform.f * transform.h;
380
+ const inverseB = transform.c * transform.h - transform.b;
381
+ const inverseC = transform.b * transform.f - transform.c * transform.e;
382
+ const inverseD = transform.f * transform.g - transform.d;
383
+ const inverseE = transform.a - transform.c * transform.g;
384
+ const inverseF = transform.c * transform.d - transform.a * transform.f;
385
+ const inverseG = transform.d * transform.h - transform.e * transform.g;
386
+ const inverseH = transform.b * transform.g - transform.a * transform.h;
387
+ const inverseI = transform.a * transform.e - transform.b * transform.d;
388
+ const denominator = inverseG * point.x + inverseH * point.y + inverseI;
389
+ if (Math.abs(denominator) < projectiveEpsilon) {
390
+ return getBilinearUvCoordinateForPoint(points, point);
391
+ }
392
+ return [
393
+ (inverseA * point.x + inverseB * point.y + inverseC) / denominator,
394
+ (inverseD * point.x + inverseE * point.y + inverseF) / denominator,
395
+ ];
396
+ };
294
397
  exports.getUvCoordinateForPoint = getUvCoordinateForPoint;
295
398
  function constrainUv(value, schema) {
296
399
  var _a, _b;
@@ -0,0 +1 @@
1
+ export declare const useConfigureDefaultApps: () => (() => void) | null;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useConfigureDefaultApps = void 0;
4
+ const react_1 = require("react");
5
+ const client_id_1 = require("../helpers/client-id");
6
+ const modals_1 = require("../state/modals");
7
+ const use_default_editor_info_1 = require("./use-default-editor-info");
8
+ const useConfigureDefaultApps = () => {
9
+ const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
10
+ const { setSelectedModal } = (0, react_1.useContext)(modals_1.SetSelectedModalContext);
11
+ const configureDefaultApps = (0, react_1.useCallback)(() => {
12
+ var _a;
13
+ var _b;
14
+ setSelectedModal({
15
+ type: 'settings',
16
+ initialTab: 'apps',
17
+ initialPublicLicenseKey: (_b = (_a = window.remotion_renderDefaults) === null || _a === void 0 ? void 0 : _a.publicLicenseKey) !== null && _b !== void 0 ? _b : null,
18
+ });
19
+ }, [setSelectedModal]);
20
+ return (0, use_default_editor_info_1.canUseEditorPicker)(previewServerState.type === 'connected')
21
+ ? configureDefaultApps
22
+ : null;
23
+ };
24
+ exports.useConfigureDefaultApps = useConfigureDefaultApps;
@@ -11,6 +11,7 @@ const container = {
11
11
  };
12
12
  const frame = {
13
13
  backgroundColor: colors_1.ERROR_CODE_FRAME_BACKGROUND,
14
+ borderRadius: 6,
14
15
  marginBottom: 20,
15
16
  overflowY: 'auto',
16
17
  };
@@ -32,16 +33,14 @@ const CodeFrame = ({ source, lineNumberWidth }) => {
32
33
  return (jsx_runtime_1.jsxs("div", { style: container, children: [
33
34
  jsx_runtime_1.jsx("div", { style: {
34
35
  ...lineNumber,
35
- backgroundColor: s.highlight
36
- ? colors_1.WHITE
37
- : colors_1.ERROR_CODE_FRAME_LINE_BACKGROUND,
38
- color: s.highlight ? colors_1.BLACK : colors_1.WHITE_ALPHA_60,
36
+ backgroundColor: colors_1.ERROR_CODE_FRAME_LINE_BACKGROUND,
37
+ color: s.highlight ? colors_1.WHITE : colors_1.WHITE_ALPHA_40,
39
38
  }, children: String(s.lineNumber).padStart(lineNumberWidth, ' ') }), jsx_runtime_1.jsx("div", { style: {
40
39
  fontFamily: 'monospace',
41
40
  whiteSpace: 'pre',
42
41
  tabSize: 2,
43
- color: s.highlight ? colors_1.WHITE : colors_1.WHITE_ALPHA_60,
44
- backgroundColor: s.highlight ? colors_1.BLUE : colors_1.TRANSPARENT,
42
+ color: s.highlight ? colors_1.WHITE : colors_1.WHITE_ALPHA_40,
43
+ backgroundColor: colors_1.TRANSPARENT,
45
44
  lineHeight: 1.7,
46
45
  paddingRight: 12,
47
46
  paddingLeft: 12,
@@ -25,7 +25,7 @@ const CopyStackTrace = ({ errorText }) => {
25
25
  if (copyState === 'failed') {
26
26
  return 'Failed!';
27
27
  }
28
- return 'Copy Stacktrace';
28
+ return 'Copy stack';
29
29
  }, [copyState]);
30
30
  return jsx_runtime_1.jsx(Button_1.Button, { onClick: handleCopyToClipboard, children: label });
31
31
  };
@@ -5,6 +5,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const studio_shared_1 = require("@remotion/studio-shared");
6
6
  const react_1 = require("react");
7
7
  const remotion_1 = require("remotion");
8
+ const CodingAgentButton_1 = require("../../components/CodingAgentButton");
8
9
  const layout_1 = require("../../components/layout");
9
10
  const is_menu_item_1 = require("../../components/Menu/is-menu-item");
10
11
  const use_default_editor_info_1 = require("../../components/use-default-editor-info");
@@ -23,11 +24,12 @@ const SearchGitHubIssues_1 = require("./SearchGitHubIssues");
23
24
  const StackFrame_1 = require("./StackFrame");
24
25
  const stack = {
25
26
  marginTop: 17,
26
- overflowX: 'scroll',
27
- marginBottom: '10vh',
27
+ overflowX: 'hidden',
28
+ marginBottom: 14,
28
29
  };
29
30
  const rawStack = {
30
31
  backgroundColor: colors_1.ERROR_CODE_FRAME_BACKGROUND,
32
+ borderRadius: 6,
31
33
  boxSizing: 'border-box',
32
34
  color: colors_1.WHITE,
33
35
  fontFamily: 'monospace',
@@ -45,18 +47,44 @@ const symbolicationFailureStyle = {
45
47
  fontFamily: 'SF Pro Text, sans-serif',
46
48
  fontSize: 14,
47
49
  lineHeight: 1.5,
48
- marginBottom: '10vh',
50
+ marginBottom: 14,
49
51
  marginTop: 24,
50
52
  };
51
53
  const spacer = {
52
54
  width: 5,
53
55
  display: 'inline-block',
54
56
  };
57
+ const actionRow = {
58
+ alignItems: 'center',
59
+ display: 'flex',
60
+ flexWrap: 'wrap',
61
+ marginLeft: 4,
62
+ marginTop: -10,
63
+ };
64
+ const codingAgentButton = {
65
+ marginLeft: 1,
66
+ marginRight: 5,
67
+ };
55
68
  const ErrorDisplay = ({ display, keyboardShortcuts, onRetry, canHaveDismissButton, calculateMetadata, symbolicationFailure, }) => {
56
69
  var _a;
57
70
  const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
58
71
  const { canOpenInEditor, defaultEditorId, defaultEditorName } = (0, use_default_editor_info_1.useEditorOpening)(previewServerState.type === 'connected');
59
- const highestLineNumber = Math.max(0, ...display.stackFrames
72
+ const stackFrames = (0, react_1.useMemo)(() => {
73
+ const withoutReactInternals = display.stackFrames.filter((frame) => {
74
+ var _a;
75
+ var _b;
76
+ const fileName = `/${(_b = (_a = frame.originalFileName) === null || _a === void 0 ? void 0 : _a.replaceAll('\\', '/')) !== null && _b !== void 0 ? _b : ''}`;
77
+ return ![
78
+ '/node_modules/react/',
79
+ '/node_modules/react-dom/',
80
+ '/node_modules/scheduler/',
81
+ ].some((packagePath) => fileName.includes(packagePath));
82
+ });
83
+ return withoutReactInternals.length > 0
84
+ ? withoutReactInternals
85
+ : display.stackFrames.slice(0, 1);
86
+ }, [display.stackFrames]);
87
+ const highestLineNumber = Math.max(0, ...stackFrames
60
88
  .map((s) => s.originalScriptCode)
61
89
  .flat(1)
62
90
  .map((s) => {
@@ -79,29 +107,30 @@ const ErrorDisplay = ({ display, keyboardShortcuts, onRetry, canHaveDismissButto
79
107
  const helpLink = (0, get_help_link_1.getHelpLink)(message);
80
108
  const errorTextForCopy = (0, react_1.useMemo)(() => {
81
109
  const header = `${display.error.name}: ${message}`;
82
- if (display.stackFrames.length > 0) {
83
- const stackLines = display.stackFrames
110
+ if (stackFrames.length > 0) {
111
+ const stackLines = stackFrames
84
112
  .map((frame) => `at ${frame.originalFunctionName || '<anonymous>'} (${frame.originalFileName || 'unknown'}:${frame.originalLineNumber || '?'}:${frame.originalColumnNumber || '?'})`)
85
113
  .join('\n');
86
114
  return `${header}\n${stackLines}`;
87
115
  }
88
116
  return display.error.stack || header;
89
- }, [display.stackFrames, display.error, message]);
117
+ }, [display.error, message, stackFrames]);
118
+ const fixWithAgentPrompt = `Fix this error in my Remotion project:\n\n${errorTextForCopy}`;
90
119
  return (jsx_runtime_1.jsxs("div", { children: [
91
- jsx_runtime_1.jsx(ErrorTitle_1.ErrorTitle, { symbolicating: false, name: display.error.name, message: message, canHaveDismissButton: canHaveDismissButton }), helpLink ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
92
- jsx_runtime_1.jsx(HelpLink_1.HelpLink, { link: helpLink, canHaveKeyboardShortcuts: keyboardShortcuts }), jsx_runtime_1.jsx("div", { style: spacer })
93
- ] })) : null, display.stackFrames.length > 0 &&
94
- canOpenInEditor &&
95
- defaultEditorId &&
96
- defaultEditorName ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
97
- jsx_runtime_1.jsx(OpenInEditor_1.OpenInEditor, { canHaveKeyboardShortcuts: keyboardShortcuts, editorId: defaultEditorId, editorName: defaultEditorName, stack: display.stackFrames[0] }), jsx_runtime_1.jsx("div", { style: spacer })
98
- ] })) : null, jsx_runtime_1.jsx(CopyStackTrace_1.CopyStackTrace, { errorText: errorTextForCopy }), jsx_runtime_1.jsx("div", { style: spacer }), jsx_runtime_1.jsx(SearchGitHubIssues_1.SearchGithubIssues, { canHaveKeyboardShortcuts: keyboardShortcuts, message: display.error.message }), jsx_runtime_1.jsx("div", { style: spacer }), jsx_runtime_1.jsx(AskOnDiscord_1.AskOnDiscord, { canHaveKeyboardShortcuts: keyboardShortcuts }), onRetry ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
99
- jsx_runtime_1.jsx("div", { style: spacer }), jsx_runtime_1.jsx(Retry_1.RetryButton, { onClick: onRetry, label: calculateMetadata ? 'Retry calculateMetadata()' : 'Retry' })
100
- ] })) : null, calculateMetadata ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
120
+ jsx_runtime_1.jsx(ErrorTitle_1.ErrorTitle, { symbolicating: false, name: display.error.name, message: message, canHaveDismissButton: canHaveDismissButton }), jsx_runtime_1.jsxs("div", { style: actionRow, children: [helpLink ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
121
+ jsx_runtime_1.jsx(HelpLink_1.HelpLink, { link: helpLink, canHaveKeyboardShortcuts: keyboardShortcuts }), jsx_runtime_1.jsx("div", { style: spacer })
122
+ ] })) : null, stackFrames.length > 0 &&
123
+ canOpenInEditor &&
124
+ defaultEditorId &&
125
+ defaultEditorName ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
126
+ jsx_runtime_1.jsx(OpenInEditor_1.OpenInEditor, { canHaveKeyboardShortcuts: keyboardShortcuts, editorId: defaultEditorId, editorName: defaultEditorName, stack: stackFrames[0] }), jsx_runtime_1.jsx("div", { style: spacer })
127
+ ] })) : null, jsx_runtime_1.jsx(CodingAgentButton_1.CodingAgentButton, { label: "Fix with", prompt: fixWithAgentPrompt, size: "default", style: codingAgentButton }), jsx_runtime_1.jsx(CopyStackTrace_1.CopyStackTrace, { errorText: errorTextForCopy }), jsx_runtime_1.jsx("div", { style: spacer }), jsx_runtime_1.jsx(SearchGitHubIssues_1.SearchGithubIssues, { canHaveKeyboardShortcuts: keyboardShortcuts, message: display.error.message }), jsx_runtime_1.jsx("div", { style: spacer }), jsx_runtime_1.jsx(AskOnDiscord_1.AskOnDiscord, { canHaveKeyboardShortcuts: keyboardShortcuts }), onRetry ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
128
+ jsx_runtime_1.jsx("div", { style: spacer }), jsx_runtime_1.jsx(Retry_1.RetryButton, { onClick: onRetry, label: calculateMetadata ? 'Retry calculateMetadata()' : 'Retry' })
129
+ ] })) : null] }), calculateMetadata ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
101
130
  jsx_runtime_1.jsx("br", {}), jsx_runtime_1.jsx(layout_1.Spacing, { y: 0.5 }), jsx_runtime_1.jsx(CalculateMetadataErrorExplainer_1.CalculateMetadataErrorExplainer, {})
102
131
  ] })) : null, display.error instanceof remotion_1.MediaPlaybackError ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
103
132
  jsx_runtime_1.jsx("br", {}), jsx_runtime_1.jsx(layout_1.Spacing, { y: 0.5 }), jsx_runtime_1.jsx(MediaPlaybackErrorExplainer_1.MediaPlaybackErrorExplainer, { src: display.error.src })
104
- ] })) : null, display.stackFrames.length > 0 ? (jsx_runtime_1.jsx("div", { style: stack, className: is_menu_item_1.HORIZONTAL_SCROLLBAR_CLASSNAME, children: display.stackFrames.map((s, i) => {
133
+ ] })) : null, stackFrames.length > 0 ? (jsx_runtime_1.jsx("div", { style: stack, className: is_menu_item_1.HORIZONTAL_SCROLLBAR_CLASSNAME, children: stackFrames.map((s, i) => {
105
134
  return (jsx_runtime_1.jsx(StackFrame_1.StackElement
106
135
  // eslint-disable-next-line react/no-array-index-key
107
136
  , { isFirst: i === 0, s: s, lineNumberWidth: lineNumberWidth, defaultFunctionName: '(anonymous function)', editorId: canOpenInEditor ? defaultEditorId : null }, i));
@@ -17,7 +17,7 @@ const container = {
17
17
  marginLeft: 'auto',
18
18
  marginRight: 'auto',
19
19
  fontFamily: 'SF Pro Text, sans-serif',
20
- paddingTop: '5vh',
20
+ paddingTop: 14,
21
21
  boxSizing: 'border-box',
22
22
  };
23
23
  const shouldLogError = (error) => {
@@ -15,6 +15,7 @@ const title = {
15
15
  };
16
16
  const left = {
17
17
  flex: 1,
18
+ paddingLeft: 14,
18
19
  paddingRight: 14,
19
20
  fontWeight: 'bold',
20
21
  maxWidth: '100%',
@@ -35,10 +36,10 @@ const spacer = {
35
36
  const ErrorTitle = ({ name, message, symbolicating, canHaveDismissButton }) => {
36
37
  return (jsx_runtime_1.jsxs("div", { style: title, className: "css-reset", children: [
37
38
  jsx_runtime_1.jsxs("div", { style: left, children: [
38
- jsx_runtime_1.jsx("span", { style: errName, children: name }), jsx_runtime_1.jsx("br", {}), jsx_runtime_1.jsxs("div", { style: row, children: [symbolicating ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
39
- jsx_runtime_1.jsx(Symbolicating_1.Symbolicating, {}), jsx_runtime_1.jsx("div", { style: spacer })
40
- ] })) : null, jsx_runtime_1.jsx(ErrorMessage_1.ErrorMessage, { message: message })
41
- ] })
39
+ jsx_runtime_1.jsxs("div", { style: row, children: [
40
+ jsx_runtime_1.jsx("span", { style: errName, children: name }), symbolicating ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
41
+ jsx_runtime_1.jsx("div", { style: spacer }), jsx_runtime_1.jsx(Symbolicating_1.Symbolicating, {})
42
+ ] })) : null] }), jsx_runtime_1.jsx("div", { style: row, children: jsx_runtime_1.jsx(ErrorMessage_1.ErrorMessage, { message: message }) })
42
43
  ] }), (0, react_overlay_1.didUnmountReactApp)() ? null : canHaveDismissButton ? (jsx_runtime_1.jsx(DismissButton_1.DismissButton, {})) : null] }));
43
44
  };
44
45
  exports.ErrorTitle = ErrorTitle;
@@ -3,101 +3,73 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OpenInEditor = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
- const Button_1 = require("../../components/Button");
6
+ const AppLaunchButton_1 = require("../../components/AppLaunchButton");
7
+ const NotificationCenter_1 = require("../../components/Notifications/NotificationCenter");
8
+ const SettingsContext_1 = require("../../components/SettingsContext");
9
+ const use_configure_default_apps_1 = require("../../components/use-configure-default-apps");
7
10
  const open_in_editor_1 = require("../../helpers/open-in-editor");
8
11
  const use_keybinding_1 = require("../../helpers/use-keybinding");
12
+ const editor_1 = require("../../icons/editor");
9
13
  const ShortcutHint_1 = require("./ShortcutHint");
10
- const initialState = { type: 'idle' };
11
- const reducer = (state, action) => {
12
- if (action.type === 'start') {
13
- return {
14
- type: 'load',
15
- };
16
- }
17
- if (action.type === 'fail') {
18
- return {
19
- type: 'error',
20
- };
21
- }
22
- if (action.type === 'reset') {
23
- return {
24
- type: 'idle',
25
- };
26
- }
27
- if (action.type === 'succeed') {
28
- return {
29
- type: 'success',
30
- };
31
- }
32
- return state;
14
+ const menuLabel = {
15
+ color: 'inherit',
16
+ fontFamily: 'sans-serif',
17
+ fontSize: 13,
18
+ lineHeight: '16px',
33
19
  };
34
20
  const OpenInEditor = ({ stack, canHaveKeyboardShortcuts, editorId, editorName }) => {
35
- const isMounted = (0, react_1.useRef)(true);
36
- const [state, dispatch] = (0, react_1.useReducer)(reducer, initialState);
21
+ const { editorInfo } = (0, SettingsContext_1.useSettings)();
22
+ const configureDefaultApps = (0, use_configure_default_apps_1.useConfigureDefaultApps)();
37
23
  const { registerKeybinding } = (0, use_keybinding_1.useKeybinding)();
38
- const dispatchIfMounted = (0, react_1.useCallback)((payload) => {
39
- if (isMounted.current === false)
40
- return;
41
- dispatch(payload);
42
- }, []);
43
- const openInBrowser = (0, react_1.useCallback)(() => {
44
- dispatch({ type: 'start' });
45
- (0, open_in_editor_1.openInEditor)(stack, editorId)
46
- .then((data) => {
47
- if (data.success) {
48
- dispatchIfMounted({ type: 'succeed' });
49
- }
50
- else {
51
- dispatchIfMounted({ type: 'fail' });
24
+ const openWithEditor = (0, react_1.useCallback)(async (selectedEditorId, selectedEditorName) => {
25
+ try {
26
+ const response = await (0, open_in_editor_1.openInEditor)(stack, selectedEditorId);
27
+ if (!response.success) {
28
+ (0, NotificationCenter_1.showNotification)(`Could not open ${selectedEditorName}`, 2000);
52
29
  }
53
- })
54
- .catch((err) => {
55
- dispatchIfMounted({ type: 'fail' });
56
- console.log('Could not open browser', err);
57
- })
58
- .finally(() => {
59
- setTimeout(() => {
60
- dispatchIfMounted({ type: 'reset' });
61
- }, 2000);
62
- });
63
- }, [dispatchIfMounted, editorId, stack]);
64
- (0, react_1.useEffect)(() => {
65
- return () => {
66
- isMounted.current = false;
67
- };
68
- }, []);
30
+ }
31
+ catch (err) {
32
+ (0, NotificationCenter_1.showNotification)(err.message, 2000);
33
+ }
34
+ }, [stack]);
35
+ const openPreferredEditor = (0, react_1.useCallback)(() => {
36
+ openWithEditor(editorId, editorName).catch(() => undefined);
37
+ }, [editorId, editorName, openWithEditor]);
69
38
  (0, react_1.useEffect)(() => {
70
39
  if (!canHaveKeyboardShortcuts) {
71
40
  return;
72
41
  }
73
- const onEditor = () => {
74
- openInBrowser();
75
- };
76
42
  const { unregister } = registerKeybinding({
77
43
  event: 'keydown',
78
44
  key: 'o',
79
- callback: onEditor,
45
+ callback: openPreferredEditor,
80
46
  commandCtrlKey: true,
81
47
  preventDefault: true,
82
48
  triggerIfInputFieldFocused: false,
83
49
  keepRegisteredWhenNotHighestContext: false,
84
50
  });
85
51
  return () => unregister();
86
- }, [canHaveKeyboardShortcuts, openInBrowser, registerKeybinding]);
87
- const label = (0, react_1.useMemo)(() => {
88
- switch (state.type) {
89
- case 'error':
90
- return 'Failed to open';
91
- case 'idle':
92
- return `Open in ${editorName}`;
93
- case 'success':
94
- return `Opened in ${editorName}`;
95
- case 'load':
96
- return `Opening...`;
97
- default:
98
- throw new Error('invalid state');
99
- }
100
- }, [editorName, state.type]);
101
- return (jsx_runtime_1.jsxs(Button_1.Button, { onClick: openInBrowser, disabled: state.type !== 'idle', children: [label, canHaveKeyboardShortcuts ? (jsx_runtime_1.jsx(ShortcutHint_1.ShortcutHint, { keyToPress: "o", cmdOrCtrl: true })) : null] }));
52
+ }, [canHaveKeyboardShortcuts, openPreferredEditor, registerKeybinding]);
53
+ const menuItems = (0, react_1.useMemo)(() => {
54
+ var _a;
55
+ const alternativeEditors = ((_a = editorInfo === null || editorInfo === void 0 ? void 0 : editorInfo.installedEditors) !== null && _a !== void 0 ? _a : []).filter((editor) => editor.id !== editorId);
56
+ const editorItems = alternativeEditors.map((editor) => ({
57
+ id: `open-in-${editor.id}`,
58
+ keyHint: null,
59
+ label: jsx_runtime_1.jsx("span", { style: menuLabel, children: editor.nameWithType }),
60
+ leftItem: jsx_runtime_1.jsx(editor_1.EditorIcon, { editorId: editor.id, size: 18 }),
61
+ onClick: () => {
62
+ openWithEditor(editor.id, editor.nameWithType).catch(() => undefined);
63
+ },
64
+ quickSwitcherLabel: null,
65
+ subMenu: null,
66
+ type: 'item',
67
+ value: editor.id,
68
+ }));
69
+ return editorItems;
70
+ }, [editorId, editorInfo === null || editorInfo === void 0 ? void 0 : editorInfo.installedEditors, openWithEditor]);
71
+ return (jsx_runtime_1.jsxs(AppLaunchButton_1.AppLaunchButton, { actionButtonId: "error-overlay-open-in-editor", ariaLabel: `Open in ${editorName}`, disabled: false, menuAriaLabel: "Open in another app", menuButtonId: "error-overlay-open-in-another-app", menuItems: menuItems, onConfigureApps: configureDefaultApps, onClick: openPreferredEditor, size: "default", style: null, title: `Open in ${editorName}`, children: [
72
+ jsx_runtime_1.jsx(editor_1.EditorIcon, { editorId: editorId, size: 14 }),
73
+ "Open in ", editorName, canHaveKeyboardShortcuts ? (jsx_runtime_1.jsx(ShortcutHint_1.ShortcutHint, { keyToPress: "o", cmdOrCtrl: true })) : null] }));
102
74
  };
103
75
  exports.OpenInEditor = OpenInEditor;
@@ -29,6 +29,6 @@ const SearchGithubIssues = ({ message, canHaveKeyboardShortcuts }) => {
29
29
  });
30
30
  return () => unregister();
31
31
  }, [canHaveKeyboardShortcuts, openInBrowser, registerKeybinding]);
32
- return (jsx_runtime_1.jsxs(Button_1.Button, { onClick: openInBrowser, children: ["Search GitHub Issues", ' ', canHaveKeyboardShortcuts ? (jsx_runtime_1.jsx(ShortcutHint_1.ShortcutHint, { keyToPress: "g", cmdOrCtrl: true })) : null] }));
32
+ return (jsx_runtime_1.jsxs(Button_1.Button, { onClick: openInBrowser, children: ["Search Issues", ' ', canHaveKeyboardShortcuts ? (jsx_runtime_1.jsx(ShortcutHint_1.ShortcutHint, { keyToPress: "g", cmdOrCtrl: true })) : null] }));
33
33
  };
34
34
  exports.SearchGithubIssues = SearchGithubIssues;
@@ -8,7 +8,7 @@ const use_keybinding_1 = require("../../helpers/use-keybinding");
8
8
  exports.cmdOrCtrlCharacter = is_mac_1.isMac ? '⌘' : 'Ctrl';
9
9
  const container = {
10
10
  display: 'inline-block',
11
- marginLeft: 6,
11
+ marginLeft: 3,
12
12
  opacity: 0.6,
13
13
  verticalAlign: 'middle',
14
14
  fontSize: 'inherit',
@@ -29,7 +29,7 @@ const ShortcutHint = ({ keyToPress, cmdOrCtrl }) => {
29
29
  if ((0, use_keybinding_1.areKeyboardShortcutsDisabled)()) {
30
30
  return null;
31
31
  }
32
- return (jsx_runtime_1.jsxs("span", { style: container, children: [cmdOrCtrl ? `${exports.cmdOrCtrlCharacter}` : '', jsx_runtime_1.jsx("span", { style: style, children: keyToPress.toUpperCase() })
32
+ return (jsx_runtime_1.jsxs("span", { style: container, children: [cmdOrCtrl ? `${exports.cmdOrCtrlCharacter}${is_mac_1.isMac ? '' : '+'}` : '', jsx_runtime_1.jsx("span", { style: style, children: keyToPress.toUpperCase() })
33
33
  ] }));
34
34
  };
35
35
  exports.ShortcutHint = ShortcutHint;
@@ -6,13 +6,14 @@ const react_1 = require("react");
6
6
  const Button_1 = require("../../components/Button");
7
7
  const colors_1 = require("../../helpers/colors");
8
8
  const open_in_editor_1 = require("../../helpers/open-in-editor");
9
- const carets_1 = require("./carets");
9
+ const caret_1 = require("../../icons/caret");
10
10
  const CodeFrame_1 = require("./CodeFrame");
11
11
  const format_location_1 = require("./format-location");
12
12
  const location = {
13
- color: colors_1.WHITE_ALPHA_60,
13
+ color: colors_1.LIGHT_TEXT,
14
14
  fontFamily: 'monospace',
15
15
  fontSize: 14,
16
+ overflowWrap: 'anywhere',
16
17
  };
17
18
  const header = {
18
19
  paddingLeft: 14,
@@ -22,12 +23,11 @@ const header = {
22
23
  display: 'flex',
23
24
  flexDirection: 'row',
24
25
  alignItems: 'center',
25
- borderBottom: colors_1.BORDER_STACK_FRAME_BLUE,
26
- backgroundColor: colors_1.BLACK,
27
26
  };
28
27
  const left = {
29
28
  paddingRight: 14,
30
29
  flex: 1,
30
+ minWidth: 0,
31
31
  };
32
32
  const fnName = {
33
33
  fontSize: 14,
@@ -60,7 +60,10 @@ const StackElement = ({ s, lineNumberWidth, isFirst, defaultFunctionName, editor
60
60
  setShowCodeFrame((f) => !f);
61
61
  }, []);
62
62
  return (jsx_runtime_1.jsxs("div", { className: "css-reset", children: [
63
- jsx_runtime_1.jsxs("div", { style: header, children: [
63
+ jsx_runtime_1.jsxs("div", { style: {
64
+ ...header,
65
+ borderBottom: showCodeFrame ? 'none' : colors_1.BORDER_WHITE_ALPHA_12,
66
+ }, children: [
64
67
  jsx_runtime_1.jsxs("div", { style: left, children: [
65
68
  jsx_runtime_1.jsx("div", { style: fnName, children: (_a = s.originalFunctionName) !== null && _a !== void 0 ? _a : defaultFunctionName }), s.originalFileName ? (jsx_runtime_1.jsx("div", { style: location, children: canOpenFileLocation ? (jsx_runtime_1.jsxs("span", { onClick: onOpenFileLocation, onPointerEnter: () => {
66
69
  setLocationHovered(true);
@@ -68,10 +71,12 @@ const StackElement = ({ s, lineNumberWidth, isFirst, defaultFunctionName, editor
68
71
  setLocationHovered(false);
69
72
  }, style: {
70
73
  ...location,
74
+ color: locationHovered ? colors_1.WHITE : colors_1.LIGHT_TEXT,
71
75
  cursor: 'pointer',
72
- textDecoration: locationHovered ? 'underline' : 'none',
73
- textUnderlineOffset: locationHovered ? 4 : undefined,
74
- }, children: [(0, format_location_1.formatLocation)(s.originalFileName), ":", s.originalLineNumber] })) : (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [(0, format_location_1.formatLocation)(s.originalFileName), ":", s.originalLineNumber] })) })) : null] }), s.originalScriptCode && s.originalScriptCode.length > 0 ? (jsx_runtime_1.jsx(Button_1.Button, { onClick: toggleCodeFrame, children: showCodeFrame ? jsx_runtime_1.jsx(carets_1.CaretDown, { invert: false }) : jsx_runtime_1.jsx(carets_1.CaretRight, {}) })) : null] }), jsx_runtime_1.jsx("div", { children: s.originalScriptCode &&
76
+ }, children: [(0, format_location_1.formatLocation)(s.originalFileName), ":", s.originalLineNumber] })) : (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [(0, format_location_1.formatLocation)(s.originalFileName), ":", s.originalLineNumber] })) })) : null] }), s.originalScriptCode && s.originalScriptCode.length > 0 ? (jsx_runtime_1.jsx(Button_1.Button, { onClick: toggleCodeFrame, children: jsx_runtime_1.jsx("div", { style: {
77
+ display: 'flex',
78
+ transform: showCodeFrame ? undefined : 'rotate(-90deg)',
79
+ }, children: jsx_runtime_1.jsx(caret_1.CaretDown, {}) }) })) : null] }), jsx_runtime_1.jsx("div", { children: s.originalScriptCode &&
75
80
  s.originalScriptCode.length > 0 &&
76
81
  showCodeFrame ? (jsx_runtime_1.jsx(CodeFrame_1.CodeFrame, { lineNumberWidth: lineNumberWidth, source: s.originalScriptCode })) : null })
77
82
  ] }));
@@ -4,7 +4,7 @@ exports.Symbolicating = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const colors_1 = require("../../helpers/colors");
6
6
  const Symbolicating = (props) => {
7
- return (jsx_runtime_1.jsxs("svg", { id: "loading", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 32 32", width: "16", height: "16", fill: colors_1.WHITE, ...props, children: [
7
+ return (jsx_runtime_1.jsxs("svg", { id: "loading", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 32 32", width: "14", height: "14", fill: colors_1.WHITE, ...props, children: [
8
8
  jsx_runtime_1.jsx("path", { opacity: ".1", d: "M14 0 H18 V8 H14 z", transform: "rotate(0 16 16)", children: jsx_runtime_1.jsx("animate", { attributeName: "opacity", from: "1", to: ".1", dur: "1s", repeatCount: "indefinite", begin: "0" }) }), jsx_runtime_1.jsx("path", { opacity: ".1", d: "M14 0 H18 V8 H14 z", transform: "rotate(45 16 16)", children: jsx_runtime_1.jsx("animate", { attributeName: "opacity", from: "1", to: ".1", dur: "1s", repeatCount: "indefinite", begin: "0.125s" }) }), jsx_runtime_1.jsx("path", { opacity: ".1", d: "M14 0 H18 V8 H14 z", transform: "rotate(90 16 16)", children: jsx_runtime_1.jsx("animate", { attributeName: "opacity", from: "1", to: ".1", dur: "1s", repeatCount: "indefinite", begin: "0.25s" }) }), jsx_runtime_1.jsx("path", { opacity: ".1", d: "M14 0 H18 V8 H14 z", transform: "rotate(135 16 16)", children: jsx_runtime_1.jsx("animate", { attributeName: "opacity", from: "1", to: ".1", dur: "1s", repeatCount: "indefinite", begin: "0.375s" }) }), jsx_runtime_1.jsx("path", { opacity: ".1", d: "M14 0 H18 V8 H14 z", transform: "rotate(180 16 16)", children: jsx_runtime_1.jsx("animate", { attributeName: "opacity", from: "1", to: ".1", dur: "1s", repeatCount: "indefinite", begin: "0.5s" }) }), jsx_runtime_1.jsx("path", { opacity: ".1", d: "M14 0 H18 V8 H14 z", transform: "rotate(225 16 16)", children: jsx_runtime_1.jsx("animate", { attributeName: "opacity", from: "1", to: ".1", dur: "1s", repeatCount: "indefinite", begin: "0.675s" }) }), jsx_runtime_1.jsx("path", { opacity: ".1", d: "M14 0 H18 V8 H14 z", transform: "rotate(270 16 16)", children: jsx_runtime_1.jsx("animate", { attributeName: "opacity", from: "1", to: ".1", dur: "1s", repeatCount: "indefinite", begin: "0.75s" }) }), jsx_runtime_1.jsx("path", { opacity: ".1", d: "M14 0 H18 V8 H14 z", transform: "rotate(315 16 16)", children: jsx_runtime_1.jsx("animate", { attributeName: "opacity", from: "1", to: ".1", dur: "1s", repeatCount: "indefinite", begin: "0.875s" }) })
9
9
  ] }));
10
10
  };