@remotion/studio-server 4.0.506 → 4.0.508

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 (101) hide show
  1. package/dist/codemods/delete-jsx-node.d.ts +4 -0
  2. package/dist/codemods/delete-jsx-node.js +8 -0
  3. package/dist/codemods/duplicate-jsx-node.d.ts +2 -0
  4. package/dist/codemods/duplicate-jsx-node.js +8 -0
  5. package/dist/codemods/effect-param-expression.js +2 -0
  6. package/dist/codemods/get-node-path-remappings.d.ts +13 -0
  7. package/dist/codemods/get-node-path-remappings.js +87 -0
  8. package/dist/codemods/reorder-sequence.d.ts +2 -1
  9. package/dist/codemods/reorder-sequence.js +8 -0
  10. package/dist/codemods/split-jsx-sequence.d.ts +2 -0
  11. package/dist/codemods/split-jsx-sequence.js +8 -0
  12. package/dist/codemods/update-keyframes/update-keyframes.js +2 -0
  13. package/dist/file-watcher.d.ts +11 -1
  14. package/dist/file-watcher.js +16 -5
  15. package/dist/helpers/coding-agent-registry.d.ts +34 -0
  16. package/dist/helpers/coding-agent-registry.js +442 -21
  17. package/dist/helpers/editor-registry.d.ts +1 -0
  18. package/dist/helpers/editor-registry.js +31 -3
  19. package/dist/helpers/finder-artwork.d.ts +1 -0
  20. package/dist/helpers/finder-artwork.js +4 -0
  21. package/dist/helpers/open-in-editor.js +5 -5
  22. package/dist/helpers/parse-keyframe-easing-expression.js +3 -0
  23. package/dist/helpers/resolve-composition-component.d.ts +2 -1
  24. package/dist/helpers/resolve-composition-component.js +60 -68
  25. package/dist/helpers/resolve-editor.d.ts +2 -0
  26. package/dist/helpers/resolve-editor.js +4 -1
  27. package/dist/helpers/terminal-artwork.d.ts +6 -0
  28. package/dist/helpers/terminal-artwork.js +14 -0
  29. package/dist/helpers/terminal-registry.d.ts +36 -0
  30. package/dist/helpers/terminal-registry.js +401 -0
  31. package/dist/index.d.ts +7 -2
  32. package/dist/preview-server/api-routes.js +7 -4
  33. package/dist/preview-server/handler.d.ts +1 -1
  34. package/dist/preview-server/live-events.d.ts +1 -0
  35. package/dist/preview-server/live-events.js +3 -1
  36. package/dist/preview-server/routes/add-effect-keyframe.js +7 -1
  37. package/dist/preview-server/routes/add-effect.js +7 -1
  38. package/dist/preview-server/routes/add-keyframes.js +10 -2
  39. package/dist/preview-server/routes/add-render.js +2 -0
  40. package/dist/preview-server/routes/add-sequence-keyframe.js +7 -1
  41. package/dist/preview-server/routes/app-icon.d.ts +6 -0
  42. package/dist/preview-server/routes/app-icon.js +66 -0
  43. package/dist/preview-server/routes/apply-codemod.js +15 -2
  44. package/dist/preview-server/routes/apply-visual-control-change.js +7 -1
  45. package/dist/preview-server/routes/batch-update-keyframe-settings.js +10 -2
  46. package/dist/preview-server/routes/can-update-sequence-props.d.ts +1 -0
  47. package/dist/preview-server/routes/can-update-sequence-props.js +33 -9
  48. package/dist/preview-server/routes/copy-render-output-to-asset.d.ts +3 -0
  49. package/dist/preview-server/routes/copy-render-output-to-asset.js +58 -0
  50. package/dist/preview-server/routes/default-coding-agent.d.ts +2 -6
  51. package/dist/preview-server/routes/default-coding-agent.js +19 -88
  52. package/dist/preview-server/routes/default-editor.d.ts +1 -6
  53. package/dist/preview-server/routes/default-editor.js +13 -113
  54. package/dist/preview-server/routes/delete-effect.js +7 -1
  55. package/dist/preview-server/routes/delete-jsx-node.js +16 -2
  56. package/dist/preview-server/routes/delete-keyframes.js +10 -2
  57. package/dist/preview-server/routes/duplicate-effect.js +7 -1
  58. package/dist/preview-server/routes/duplicate-jsx-node.js +17 -5
  59. package/dist/preview-server/routes/insert-element.js +23 -3
  60. package/dist/preview-server/routes/insert-jsx-element.js +17 -2
  61. package/dist/preview-server/routes/move-keyframes.js +10 -2
  62. package/dist/preview-server/routes/open-in-editor.js +1 -1
  63. package/dist/preview-server/routes/open-in-terminal.d.ts +3 -0
  64. package/dist/preview-server/routes/open-in-terminal.js +17 -0
  65. package/dist/preview-server/routes/paste-effects.js +7 -1
  66. package/dist/preview-server/routes/reorder-effect.js +7 -1
  67. package/dist/preview-server/routes/reorder-sequence.js +17 -2
  68. package/dist/preview-server/routes/save-effect-props.js +7 -1
  69. package/dist/preview-server/routes/save-multiple-effect-props.js +10 -2
  70. package/dist/preview-server/routes/save-sequence-props.js +10 -2
  71. package/dist/preview-server/routes/split-jsx-sequence.js +17 -6
  72. package/dist/preview-server/routes/update-config.d.ts +7 -0
  73. package/dist/preview-server/routes/update-config.js +193 -0
  74. package/dist/preview-server/routes/update-default-props.js +7 -1
  75. package/dist/preview-server/routes/update-effect-keyframe-settings.js +7 -1
  76. package/dist/preview-server/routes/update-sequence-keyframe-settings.js +7 -1
  77. package/dist/preview-server/sequence-node-path-mutation.d.ts +7 -0
  78. package/dist/preview-server/sequence-node-path-mutation.js +21 -0
  79. package/dist/preview-server/sequence-props-watchers.js +15 -6
  80. package/dist/preview-server/start-server.d.ts +1 -1
  81. package/dist/preview-server/studio-protocol/handle-discovery.js +3 -4
  82. package/dist/preview-server/studio-protocol/handle-install.js +1 -1
  83. package/dist/preview-server/studio-protocol/handle-license-key.js +2 -2
  84. package/dist/preview-server/studio-protocol/origin-policy.d.ts +2 -5
  85. package/dist/preview-server/studio-protocol/origin-policy.js +6 -30
  86. package/dist/preview-server/undo-stack.d.ts +7 -13
  87. package/dist/preview-server/undo-stack.js +58 -5
  88. package/dist/routes.d.ts +1 -1
  89. package/dist/routes.js +8 -1
  90. package/dist/start-studio.d.ts +1 -1
  91. package/package.json +8 -8
  92. package/web/coding-agent-icons/claude-code.png +0 -0
  93. package/web/coding-agent-icons/codex.png +0 -0
  94. package/web/coding-agent-icons/copilot.png +0 -0
  95. package/web/coding-agent-icons/cursor.png +0 -0
  96. package/dist/preview-server/routes/delete-effect-keyframe.d.ts +0 -3
  97. package/dist/preview-server/routes/delete-effect-keyframe.js +0 -89
  98. package/dist/preview-server/routes/delete-sequence-keyframe.d.ts +0 -3
  99. package/dist/preview-server/routes/delete-sequence-keyframe.js +0 -82
  100. package/dist/preview-server/routes/save-props-mutex.d.ts +0 -1
  101. package/dist/preview-server/routes/save-props-mutex.js +0 -11
@@ -30,7 +30,8 @@ const editorDefinitions = {
30
30
  vscode: {
31
31
  darwin: [
32
32
  {
33
- name: 'VS Code',
33
+ name: 'Code',
34
+ nameWithType: 'Code',
34
35
  bundleIdentifiers: ['com.microsoft.VSCode'],
35
36
  applicationNames: ['Visual Studio Code.app'],
36
37
  executable: 'Contents/Resources/app/bin/code',
@@ -38,6 +39,7 @@ const editorDefinitions = {
38
39
  },
39
40
  {
40
41
  name: 'VS Code Insiders',
42
+ nameWithType: 'VS Code Insiders',
41
43
  bundleIdentifiers: ['com.microsoft.VSCodeInsiders'],
42
44
  applicationNames: ['Visual Studio Code - Insiders.app'],
43
45
  executable: 'Contents/Resources/app/bin/code-insiders',
@@ -46,7 +48,8 @@ const editorDefinitions = {
46
48
  ],
47
49
  linux: [
48
50
  {
49
- name: 'VS Code',
51
+ name: 'Code',
52
+ nameWithType: 'Code',
50
53
  paths: () => [
51
54
  '/usr/share/code/bin/code',
52
55
  '/snap/bin/code',
@@ -57,6 +60,7 @@ const editorDefinitions = {
57
60
  },
58
61
  {
59
62
  name: 'VS Code Insiders',
63
+ nameWithType: 'VS Code Insiders',
60
64
  paths: () => [
61
65
  '/snap/bin/code-insiders',
62
66
  '/usr/bin/code-insiders',
@@ -67,7 +71,8 @@ const editorDefinitions = {
67
71
  ],
68
72
  win32: [
69
73
  {
70
- name: 'VS Code',
74
+ name: 'Code',
75
+ nameWithType: 'Code',
71
76
  paths: (context) => getWindowsEnvironmentPaths(context, [
72
77
  'Microsoft VS Code',
73
78
  'Code.exe',
@@ -76,6 +81,7 @@ const editorDefinitions = {
76
81
  },
77
82
  {
78
83
  name: 'VS Code Insiders',
84
+ nameWithType: 'VS Code Insiders',
79
85
  paths: (context) => getWindowsEnvironmentPaths(context, [
80
86
  'Microsoft VS Code Insiders',
81
87
  'Code - Insiders.exe',
@@ -88,6 +94,7 @@ const editorDefinitions = {
88
94
  darwin: [
89
95
  {
90
96
  name: 'Cursor',
97
+ nameWithType: 'Cursor Editor',
91
98
  bundleIdentifiers: ['com.todesktop.230313mzl4w4u92'],
92
99
  applicationNames: ['Cursor.app'],
93
100
  executable: 'Contents/Resources/app/bin/cursor',
@@ -97,6 +104,7 @@ const editorDefinitions = {
97
104
  linux: [
98
105
  {
99
106
  name: 'Cursor',
107
+ nameWithType: 'Cursor Editor',
100
108
  paths: (context) => [
101
109
  '/usr/bin/cursor',
102
110
  '/usr/local/bin/cursor',
@@ -108,6 +116,7 @@ const editorDefinitions = {
108
116
  win32: [
109
117
  {
110
118
  name: 'Cursor',
119
+ nameWithType: 'Cursor Editor',
111
120
  paths: (context) => getWindowsEnvironmentPaths(context, ['cursor', 'Cursor.exe']),
112
121
  commands: ['Cursor.exe', 'cursor.cmd'],
113
122
  },
@@ -117,6 +126,7 @@ const editorDefinitions = {
117
126
  darwin: [
118
127
  {
119
128
  name: 'Windsurf',
129
+ nameWithType: 'Windsurf',
120
130
  bundleIdentifiers: ['com.exafunction.windsurf'],
121
131
  applicationNames: ['Windsurf.app'],
122
132
  executable: 'Contents/Resources/app/bin/windsurf',
@@ -126,6 +136,7 @@ const editorDefinitions = {
126
136
  linux: [
127
137
  {
128
138
  name: 'Windsurf',
139
+ nameWithType: 'Windsurf',
129
140
  paths: (context) => [
130
141
  '/usr/bin/windsurf',
131
142
  '/usr/local/bin/windsurf',
@@ -137,6 +148,7 @@ const editorDefinitions = {
137
148
  win32: [
138
149
  {
139
150
  name: 'Windsurf',
151
+ nameWithType: 'Windsurf',
140
152
  paths: (context) => getWindowsEnvironmentPaths(context, ['Windsurf', 'Windsurf.exe']),
141
153
  commands: ['Windsurf.exe', 'windsurf.cmd'],
142
154
  },
@@ -146,6 +158,7 @@ const editorDefinitions = {
146
158
  darwin: [
147
159
  {
148
160
  name: 'Zed',
161
+ nameWithType: 'Zed',
149
162
  bundleIdentifiers: ['dev.zed.Zed'],
150
163
  applicationNames: ['Zed.app'],
151
164
  executable: 'Contents/MacOS/cli',
@@ -153,6 +166,7 @@ const editorDefinitions = {
153
166
  },
154
167
  {
155
168
  name: 'Zed Preview',
169
+ nameWithType: 'Zed Preview',
156
170
  bundleIdentifiers: ['dev.zed.Zed-Preview'],
157
171
  applicationNames: ['Zed Preview.app'],
158
172
  executable: 'Contents/MacOS/cli',
@@ -162,6 +176,7 @@ const editorDefinitions = {
162
176
  linux: [
163
177
  {
164
178
  name: 'Zed',
179
+ nameWithType: 'Zed',
165
180
  paths: (context) => [
166
181
  '/usr/bin/zedit',
167
182
  '/usr/bin/zeditor',
@@ -175,6 +190,7 @@ const editorDefinitions = {
175
190
  win32: [
176
191
  {
177
192
  name: 'Zed',
193
+ nameWithType: 'Zed',
178
194
  paths: (context) => getWindowsEnvironmentPaths(context, ['Zed', 'Zed.exe']),
179
195
  commands: ['Zed.exe'],
180
196
  },
@@ -184,6 +200,7 @@ const editorDefinitions = {
184
200
  darwin: [
185
201
  {
186
202
  name: 'VSCodium',
203
+ nameWithType: 'VSCodium',
187
204
  bundleIdentifiers: ['com.vscodium', 'com.visualstudio.code.oss'],
188
205
  applicationNames: ['VSCodium.app'],
189
206
  executable: 'Contents/Resources/app/bin/codium',
@@ -193,6 +210,7 @@ const editorDefinitions = {
193
210
  linux: [
194
211
  {
195
212
  name: 'VSCodium',
213
+ nameWithType: 'VSCodium',
196
214
  paths: (context) => [
197
215
  '/usr/bin/codium',
198
216
  '/usr/share/vscodium-bin/bin/codium',
@@ -206,6 +224,7 @@ const editorDefinitions = {
206
224
  win32: [
207
225
  {
208
226
  name: 'VSCodium',
227
+ nameWithType: 'VSCodium',
209
228
  paths: (context) => getWindowsEnvironmentPaths(context, ['VSCodium', 'VSCodium.exe']),
210
229
  commands: ['VSCodium.exe', 'codium.cmd'],
211
230
  },
@@ -215,6 +234,7 @@ const editorDefinitions = {
215
234
  darwin: [
216
235
  {
217
236
  name: 'WebStorm',
237
+ nameWithType: 'WebStorm',
218
238
  bundleIdentifiers: ['com.jetbrains.WebStorm'],
219
239
  applicationNames: ['WebStorm.app'],
220
240
  executable: 'Contents/MacOS/webstorm',
@@ -224,6 +244,7 @@ const editorDefinitions = {
224
244
  linux: [
225
245
  {
226
246
  name: 'WebStorm',
247
+ nameWithType: 'WebStorm',
227
248
  paths: (context) => [
228
249
  '/snap/bin/webstorm',
229
250
  node_path_1.default.posix.join(context.homeDirectory, '.local/share/JetBrains/Toolbox/scripts/webstorm'),
@@ -234,6 +255,7 @@ const editorDefinitions = {
234
255
  win32: [
235
256
  {
236
257
  name: 'WebStorm',
258
+ nameWithType: 'WebStorm',
237
259
  paths: (context) => {
238
260
  const localAppData = context.env.LOCALAPPDATA;
239
261
  return localAppData
@@ -250,6 +272,7 @@ const editorDefinitions = {
250
272
  darwin: [
251
273
  {
252
274
  name: 'Sublime Text',
275
+ nameWithType: 'Sublime Text',
253
276
  bundleIdentifiers: [
254
277
  'com.sublimetext.4',
255
278
  'com.sublimetext.3',
@@ -267,6 +290,7 @@ const editorDefinitions = {
267
290
  linux: [
268
291
  {
269
292
  name: 'Sublime Text',
293
+ nameWithType: 'Sublime Text',
270
294
  paths: () => ['/usr/bin/subl', '/snap/bin/subl'],
271
295
  commands: ['subl'],
272
296
  },
@@ -274,6 +298,7 @@ const editorDefinitions = {
274
298
  win32: [
275
299
  {
276
300
  name: 'Sublime Text',
301
+ nameWithType: 'Sublime Text',
277
302
  paths: (context) => [
278
303
  ...getWindowsEnvironmentPaths(context, [
279
304
  'Sublime Text',
@@ -405,6 +430,7 @@ const findDarwinEditor = async ({ id, variants, context, }) => {
405
430
  return {
406
431
  id,
407
432
  name: variant.name,
433
+ nameWithType: variant.nameWithType,
408
434
  process: executablePath,
409
435
  command: variant.command,
410
436
  };
@@ -441,6 +467,7 @@ const findExecutableEditor = ({ id, variants, context, additionalPaths, }) => {
441
467
  return {
442
468
  id,
443
469
  name: variants[0].name,
470
+ nameWithType: variants[0].nameWithType,
444
471
  process: executablePath,
445
472
  command: executablePath,
446
473
  };
@@ -452,6 +479,7 @@ const findExecutableEditor = ({ id, variants, context, additionalPaths, }) => {
452
479
  return {
453
480
  id,
454
481
  name: variant.name,
482
+ nameWithType: variant.nameWithType,
455
483
  process: executablePath,
456
484
  command: executablePath,
457
485
  };
@@ -0,0 +1 @@
1
+ export declare const finderArtworkDataUrl = "data:image/png;base64,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";
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.finderArtworkDataUrl = void 0;
4
+ exports.finderArtworkDataUrl = 'data:image/png;base64,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';
@@ -87,12 +87,12 @@ const displayNameForEditor = {
87
87
  '/Applications/Sublime Text Dev.app/Contents/SharedSupport/bin/subl': 'Sublime Text Dev',
88
88
  '/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl': 'Sublime Text',
89
89
  '/Applications/WebStorm.app/Contents/MacOS/webstorm': 'WebStorm',
90
- '/Applications/Cursor.app/Contents/MacOS/Cursor': 'Cursor',
90
+ '/Applications/Cursor.app/Contents/MacOS/Cursor': 'Cursor Editor',
91
91
  '/Applications/Windsurf.app/Contents/MacOS/Windsurf': 'Windsurf',
92
92
  'Brackets.exe': 'Brackets',
93
93
  'Code - Insiders.exe': 'VS Code Insiders',
94
- 'Code.exe': 'VS Code',
95
- 'Cursor.exe': 'Cursor',
94
+ 'Code.exe': 'Code',
95
+ 'Cursor.exe': 'Cursor Editor',
96
96
  'Windsurf.exe': 'Windsurf',
97
97
  'Zed.exe': 'Zed',
98
98
  'VSCodium.exe': 'VS Codium',
@@ -118,8 +118,8 @@ const displayNameForEditor = {
118
118
  'webstorm64.exe': 'WebStorm',
119
119
  atom: 'Atom',
120
120
  brackets: 'Brackets',
121
- code: 'VS Code',
122
- cursor: 'Cursor',
121
+ code: 'Code',
122
+ cursor: 'Cursor Editor',
123
123
  windsurf: 'Windsurf',
124
124
  zed: 'Zed',
125
125
  zedit: 'Zed',
@@ -29,6 +29,9 @@ const getMemberExpressionKeyframeEasing = (name) => {
29
29
  if (name === 'linear') {
30
30
  return studio_shared_1.LINEAR_KEYFRAME_EASING;
31
31
  }
32
+ if (name === 'step1') {
33
+ return studio_shared_1.HOLD_KEYFRAME_EASING;
34
+ }
32
35
  if (name === 'ease') {
33
36
  return studio_shared_1.EASE_KEYFRAME_EASING;
34
37
  }
@@ -1,4 +1,4 @@
1
- import { type InsertableCompositionElement, type InsertableCompositionElementPosition } from '@remotion/studio-shared';
1
+ import { type InsertableCompositionElement, type InsertableCompositionElementPosition, type SequenceNodePathRemapping } from '@remotion/studio-shared';
2
2
  export type ResolvedCompositionComponent = {
3
3
  source: string;
4
4
  line: number;
@@ -43,4 +43,5 @@ export declare const insertJsxElementIntoComposition: ({ remotionRoot, compositi
43
43
  output: string;
44
44
  formatted: boolean;
45
45
  logLine: number;
46
+ nodePathRemappings: SequenceNodePathRemapping[];
46
47
  }>;
@@ -39,11 +39,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.insertJsxElementIntoComposition = exports.resolveCompositionComponent = exports.resolveCompositionComponentWithFile = void 0;
40
40
  const node_fs_1 = __importDefault(require("node:fs"));
41
41
  const node_path_1 = __importDefault(require("node:path"));
42
- const studio_codemods_1 = require("@remotion/studio-codemods");
43
42
  const studio_shared_1 = require("@remotion/studio-shared");
44
43
  const recast = __importStar(require("recast"));
45
44
  const no_react_1 = require("remotion/no-react");
46
45
  const format_file_content_1 = require("../codemods/format-file-content");
46
+ const get_node_path_remappings_1 = require("../codemods/get-node-path-remappings");
47
47
  const parse_ast_1 = require("../codemods/parse-ast");
48
48
  const strip_parenthesized_extra_1 = require("../codemods/strip-parenthesized-extra");
49
49
  const update_nested_prop_1 = require("../codemods/update-nested-prop");
@@ -1130,14 +1130,14 @@ const addElementToComponentRoot = ({ ast, exportName, element, }) => {
1130
1130
  CANVAS_ROOT_ELEMENTS.includes(rootNode.openingElement.name.name)) {
1131
1131
  throw new Error(`Cannot insert a JSX element into a composition whose root element is <${rootNode.openingElement.name.name}>`);
1132
1132
  }
1133
- if (rootNode.type === 'JSXElement' && rootNode.openingElement.selfClosing) {
1134
- const fragment = recast.types.builders.jsxFragment(recast.types.builders.jsxOpeningFragment(), recast.types.builders.jsxClosingFragment(), [
1135
- createSequenceWithChild({
1133
+ if (rootNode.type === 'JSXElement') {
1134
+ const existingRoot = rootNode.openingElement.selfClosing
1135
+ ? createSequenceWithChild({
1136
1136
  child: (0, strip_parenthesized_extra_1.stripParenthesizedExtra)(rootNode),
1137
1137
  sequenceLocalName: ensureSequenceImport(ast),
1138
- }),
1139
- element,
1140
- ]);
1138
+ })
1139
+ : (0, strip_parenthesized_extra_1.stripParenthesizedExtra)(rootNode);
1140
+ const fragment = recast.types.builders.jsxFragment(recast.types.builders.jsxOpeningFragment(), recast.types.builders.jsxClosingFragment(), [existingRoot, element]);
1141
1141
  let replaced = false;
1142
1142
  recast.types.visit(ast, {
1143
1143
  visitJSXElement(astPath) {
@@ -1440,75 +1440,66 @@ const insertJsxElementIntoComposition = async ({ remotionRoot, compositionFile,
1440
1440
  remotionRoot,
1441
1441
  fileName: location.fileName,
1442
1442
  });
1443
- let finalFile;
1444
- let logLine;
1445
- if (element.type === 'solid' && from === null && wrapInSequence === null) {
1446
- const inserted = (0, studio_codemods_1.insertSolidIntoSource)({
1447
- exportName: location.exportName,
1448
- height: element.height,
1443
+ const ast = (0, parse_ast_1.parseAst)(input);
1444
+ const capturedNodePaths = (0, get_node_path_remappings_1.captureJsxNodePaths)(ast);
1445
+ if (element.type === 'composition' &&
1446
+ element.compositionId === compositionId) {
1447
+ throw new Error('Cannot insert a composition into itself');
1448
+ }
1449
+ const sequenceWrapper = element.type === 'composition'
1450
+ ? {
1451
+ dimensions: { width: element.width, height: element.height },
1452
+ durationInFrames: element.durationInFrames,
1453
+ name: element.compositionId,
1449
1454
  position: element.position,
1450
- source: input,
1451
- width: element.width,
1452
- });
1453
- finalFile = inserted.output;
1454
- logLine = inserted.line;
1455
- }
1456
- else {
1457
- const ast = (0, parse_ast_1.parseAst)(input);
1458
- if (element.type === 'composition' &&
1459
- element.compositionId === compositionId) {
1460
- throw new Error('Cannot insert a composition into itself');
1455
+ from,
1461
1456
  }
1462
- const sequenceWrapper = element.type === 'composition'
1463
- ? {
1464
- dimensions: { width: element.width, height: element.height },
1465
- durationInFrames: element.durationInFrames,
1466
- name: element.compositionId,
1457
+ : from === null ||
1458
+ element.type === 'asset' ||
1459
+ element.type === 'svg' ||
1460
+ element.type === 'component'
1461
+ ? wrapInSequence
1462
+ : {
1463
+ dimensions: null,
1464
+ durationInFrames: null,
1465
+ name: null,
1467
1466
  position: element.position,
1468
1467
  from,
1469
- }
1470
- : from === null ||
1471
- element.type === 'asset' ||
1472
- element.type === 'svg' ||
1473
- element.type === 'component'
1474
- ? wrapInSequence
1475
- : {
1476
- dimensions: null,
1477
- durationInFrames: null,
1478
- name: null,
1479
- position: element.position,
1480
- from,
1481
- };
1482
- const elementToInsert = await createInsertableJsxElement({
1483
- addPositionStyleToComponent: sequenceWrapper === null,
1484
- ast,
1485
- destinationFileName: location.fileName,
1486
- element,
1487
- from,
1488
- remotionRoot,
1489
- });
1490
- const finalElementToInsert = sequenceWrapper
1491
- ? createSequenceWrappedElement({
1492
- child: elementToInsert,
1493
- dimensions: sequenceWrapper.dimensions,
1494
- durationInFrames: (_a = sequenceWrapper.durationInFrames) !== null && _a !== void 0 ? _a : null,
1495
- from: sequenceWrapper.from,
1496
- name: sequenceWrapper.name,
1497
- position: sequenceWrapper.position,
1498
- sequenceLocalName: ensureSequenceImport(ast),
1499
- })
1500
- : elementToInsert;
1501
- logLine = addElementToComponentRoot({
1502
- ast,
1503
- exportName: location.exportName,
1504
- element: finalElementToInsert,
1505
- });
1506
- finalFile = (0, parse_ast_1.serializeAst)(ast);
1507
- }
1468
+ };
1469
+ const elementToInsert = await createInsertableJsxElement({
1470
+ addPositionStyleToComponent: sequenceWrapper === null,
1471
+ ast,
1472
+ destinationFileName: location.fileName,
1473
+ element,
1474
+ from,
1475
+ remotionRoot,
1476
+ });
1477
+ const finalElementToInsert = sequenceWrapper
1478
+ ? createSequenceWrappedElement({
1479
+ child: elementToInsert,
1480
+ dimensions: sequenceWrapper.dimensions,
1481
+ durationInFrames: (_a = sequenceWrapper.durationInFrames) !== null && _a !== void 0 ? _a : null,
1482
+ from: sequenceWrapper.from,
1483
+ name: sequenceWrapper.name,
1484
+ position: sequenceWrapper.position,
1485
+ sequenceLocalName: ensureSequenceImport(ast),
1486
+ })
1487
+ : elementToInsert;
1488
+ const logLine = addElementToComponentRoot({
1489
+ ast,
1490
+ exportName: location.exportName,
1491
+ element: finalElementToInsert,
1492
+ });
1493
+ const finalFile = (0, parse_ast_1.serializeAst)(ast);
1508
1494
  const { output, formatted } = await (0, format_file_content_1.formatFileContent)({
1509
1495
  input: finalFile,
1510
1496
  prettierConfigOverride,
1511
1497
  });
1498
+ const nodePathRemappings = (0, get_node_path_remappings_1.getNodePathRemappings)({
1499
+ ast,
1500
+ captured: capturedNodePaths,
1501
+ output,
1502
+ });
1512
1503
  return {
1513
1504
  fileName: location.fileName,
1514
1505
  source: location.source,
@@ -1516,6 +1507,7 @@ const insertJsxElementIntoComposition = async ({ remotionRoot, compositionFile,
1516
1507
  output,
1517
1508
  formatted,
1518
1509
  logLine,
1510
+ nodePathRemappings,
1519
1511
  };
1520
1512
  };
1521
1513
  exports.insertJsxElementIntoComposition = insertJsxElementIntoComposition;
@@ -6,10 +6,12 @@ export type ResolvedEditor = (ProcessAndCommand & {
6
6
  type: 'built-in';
7
7
  id: BuiltInEditor | null;
8
8
  name: string;
9
+ nameWithType: string;
9
10
  }) | (ResolvedCustomEditorExecutable & {
10
11
  type: 'custom';
11
12
  id: 'custom';
12
13
  name: string;
14
+ nameWithType: string;
13
15
  editor: CustomEditor;
14
16
  });
15
17
  type ResolveEditorDependencies = {
@@ -19,7 +19,7 @@ const defaultDependencies = {
19
19
  warnedEditors,
20
20
  };
21
21
  const resolveEditor = async ({ defaultEditor, logLevel, preferredEditor, }, overrides = {}) => {
22
- var _a;
22
+ var _a, _b;
23
23
  const dependencies = {
24
24
  ...defaultDependencies,
25
25
  warn: (message) => {
@@ -40,6 +40,7 @@ const resolveEditor = async ({ defaultEditor, logLevel, preferredEditor, }, over
40
40
  type: 'custom',
41
41
  id: 'custom',
42
42
  name: defaultEditor.name,
43
+ nameWithType: defaultEditor.name,
43
44
  editor: defaultEditor,
44
45
  };
45
46
  }
@@ -56,6 +57,7 @@ const resolveEditor = async ({ defaultEditor, logLevel, preferredEditor, }, over
56
57
  type: 'custom',
57
58
  id: 'custom',
58
59
  name: defaultEditor.name,
60
+ nameWithType: defaultEditor.name,
59
61
  editor: defaultEditor,
60
62
  };
61
63
  }
@@ -85,6 +87,7 @@ const resolveEditor = async ({ defaultEditor, logLevel, preferredEditor, }, over
85
87
  type: 'built-in',
86
88
  id: null,
87
89
  name: (_a = (0, open_in_editor_1.getDisplayNameForEditor)(legacyEditor.command)) !== null && _a !== void 0 ? _a : legacyEditor.command,
90
+ nameWithType: (_b = (0, open_in_editor_1.getDisplayNameForEditor)(legacyEditor.command)) !== null && _b !== void 0 ? _b : legacyEditor.command,
88
91
  };
89
92
  };
90
93
  exports.resolveEditor = resolveEditor;
@@ -0,0 +1,6 @@
1
+ export declare const terminalArtworkDataUrls: {
2
+ readonly ghostty: "data:image/png;base64,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";
3
+ readonly iterm2: "data:image/png;base64,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";
4
+ readonly 'windows-terminal': "data:image/png;base64,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";
5
+ readonly terminal: "data:image/png;base64,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";
6
+ };