@pierre/diffs 1.3.0-beta.9 → 1.3.0-rc.2

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 (241) hide show
  1. package/README.md +9 -0
  2. package/dist/components/CodeView.d.ts +12 -13
  3. package/dist/components/CodeView.d.ts.map +1 -1
  4. package/dist/components/CodeView.js +50 -58
  5. package/dist/components/CodeView.js.map +1 -1
  6. package/dist/components/File.d.ts +10 -3
  7. package/dist/components/File.d.ts.map +1 -1
  8. package/dist/components/File.js +41 -10
  9. package/dist/components/File.js.map +1 -1
  10. package/dist/components/FileDiff.d.ts +37 -6
  11. package/dist/components/FileDiff.d.ts.map +1 -1
  12. package/dist/components/FileDiff.js +202 -19
  13. package/dist/components/FileDiff.js.map +1 -1
  14. package/dist/components/UnresolvedFile.d.ts.map +1 -1
  15. package/dist/components/UnresolvedFile.js +7 -2
  16. package/dist/components/UnresolvedFile.js.map +1 -1
  17. package/dist/components/VirtualizedFile.d.ts +2 -1
  18. package/dist/components/VirtualizedFile.d.ts.map +1 -1
  19. package/dist/components/VirtualizedFile.js +9 -5
  20. package/dist/components/VirtualizedFile.js.map +1 -1
  21. package/dist/components/VirtualizedFileDiff.d.ts +14 -0
  22. package/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
  23. package/dist/components/VirtualizedFileDiff.js +61 -3
  24. package/dist/components/VirtualizedFileDiff.js.map +1 -1
  25. package/dist/components/Virtualizer.d.ts +14 -2
  26. package/dist/components/Virtualizer.d.ts.map +1 -1
  27. package/dist/components/Virtualizer.js +27 -2
  28. package/dist/components/Virtualizer.js.map +1 -1
  29. package/dist/edit/index.d.ts +5 -0
  30. package/dist/edit/index.js +3 -0
  31. package/dist/editor/command.d.ts +1 -1
  32. package/dist/editor/command.d.ts.map +1 -1
  33. package/dist/editor/command.js +11 -0
  34. package/dist/editor/command.js.map +1 -1
  35. package/dist/editor/editStack.d.ts +6 -2
  36. package/dist/editor/editStack.d.ts.map +1 -1
  37. package/dist/editor/editStack.js +53 -12
  38. package/dist/editor/editStack.js.map +1 -1
  39. package/dist/editor/editor.d.ts +51 -23
  40. package/dist/editor/editor.d.ts.map +1 -1
  41. package/dist/editor/editor.js +977 -241
  42. package/dist/editor/editor.js.map +1 -1
  43. package/dist/editor/editor2.js +1 -1
  44. package/dist/editor/languages.d.ts +26 -0
  45. package/dist/editor/languages.d.ts.map +1 -0
  46. package/dist/editor/languages.js +363 -0
  47. package/dist/editor/languages.js.map +1 -0
  48. package/dist/editor/lineAnnotations.d.ts.map +1 -1
  49. package/dist/editor/lineAnnotations.js +25 -26
  50. package/dist/editor/lineAnnotations.js.map +1 -1
  51. package/dist/editor/marker.d.ts +5 -3
  52. package/dist/editor/marker.d.ts.map +1 -1
  53. package/dist/editor/marker.js +111 -91
  54. package/dist/editor/marker.js.map +1 -1
  55. package/dist/editor/matchBrackets.d.ts +3 -2
  56. package/dist/editor/matchBrackets.d.ts.map +1 -1
  57. package/dist/editor/matchBrackets.js +2 -10
  58. package/dist/editor/matchBrackets.js.map +1 -1
  59. package/dist/editor/pieceTable.d.ts +2 -1
  60. package/dist/editor/pieceTable.d.ts.map +1 -1
  61. package/dist/editor/pieceTable.js +103 -39
  62. package/dist/editor/pieceTable.js.map +1 -1
  63. package/dist/editor/platform.js +2 -0
  64. package/dist/editor/platform.js.map +1 -1
  65. package/dist/editor/popover.d.ts +25 -5
  66. package/dist/editor/popover.d.ts.map +1 -1
  67. package/dist/editor/popover.js +60 -14
  68. package/dist/editor/popover.js.map +1 -1
  69. package/dist/editor/searchPanel.d.ts.map +1 -1
  70. package/dist/editor/searchPanel.js +9 -2
  71. package/dist/editor/searchPanel.js.map +1 -1
  72. package/dist/editor/selection.d.ts +31 -11
  73. package/dist/editor/selection.d.ts.map +1 -1
  74. package/dist/editor/selection.js +198 -70
  75. package/dist/editor/selection.js.map +1 -1
  76. package/dist/editor/selectionAction.d.ts +4 -3
  77. package/dist/editor/selectionAction.d.ts.map +1 -1
  78. package/dist/editor/selectionAction.js +9 -5
  79. package/dist/editor/selectionAction.js.map +1 -1
  80. package/dist/editor/stateStorage.d.ts +15 -0
  81. package/dist/editor/stateStorage.d.ts.map +1 -0
  82. package/dist/editor/stateStorage.js +65 -0
  83. package/dist/editor/stateStorage.js.map +1 -0
  84. package/dist/editor/textDocument.d.ts +12 -77
  85. package/dist/editor/textDocument.d.ts.map +1 -1
  86. package/dist/editor/textDocument.js +76 -34
  87. package/dist/editor/textDocument.js.map +1 -1
  88. package/dist/editor/textMeasure.d.ts +7 -12
  89. package/dist/editor/textMeasure.d.ts.map +1 -1
  90. package/dist/editor/textMeasure.js +40 -32
  91. package/dist/editor/textMeasure.js.map +1 -1
  92. package/dist/editor/{tokenzier.d.ts → tokenizer.d.ts} +3 -3
  93. package/dist/editor/tokenizer.d.ts.map +1 -0
  94. package/dist/editor/{tokenzier.js → tokenizer.js} +170 -50
  95. package/dist/editor/tokenizer.js.map +1 -0
  96. package/dist/editor/utils.js +1 -1
  97. package/dist/editor/utils.js.map +1 -1
  98. package/dist/index.d.ts +4 -3
  99. package/dist/index.js +6 -5
  100. package/dist/managers/InteractionManager.d.ts +18 -7
  101. package/dist/managers/InteractionManager.d.ts.map +1 -1
  102. package/dist/managers/InteractionManager.js +154 -99
  103. package/dist/managers/InteractionManager.js.map +1 -1
  104. package/dist/managers/UniversalRenderingManager.d.ts.map +1 -1
  105. package/dist/managers/UniversalRenderingManager.js +1 -2
  106. package/dist/managers/UniversalRenderingManager.js.map +1 -1
  107. package/dist/react/CodeView.d.ts +13 -13
  108. package/dist/react/CodeView.d.ts.map +1 -1
  109. package/dist/react/CodeView.js +37 -28
  110. package/dist/react/CodeView.js.map +1 -1
  111. package/dist/react/EditContext.d.ts +20 -0
  112. package/dist/react/EditContext.d.ts.map +1 -0
  113. package/dist/react/EditContext.js +20 -0
  114. package/dist/react/EditContext.js.map +1 -0
  115. package/dist/react/File.d.ts +2 -1
  116. package/dist/react/File.d.ts.map +1 -1
  117. package/dist/react/File.js +3 -2
  118. package/dist/react/File.js.map +1 -1
  119. package/dist/react/FileDiff.d.ts +2 -2
  120. package/dist/react/FileDiff.d.ts.map +1 -1
  121. package/dist/react/FileDiff.js +3 -2
  122. package/dist/react/FileDiff.js.map +1 -1
  123. package/dist/react/MultiFileDiff.d.ts +2 -2
  124. package/dist/react/MultiFileDiff.d.ts.map +1 -1
  125. package/dist/react/MultiFileDiff.js +3 -2
  126. package/dist/react/MultiFileDiff.js.map +1 -1
  127. package/dist/react/PatchDiff.d.ts +2 -2
  128. package/dist/react/PatchDiff.d.ts.map +1 -1
  129. package/dist/react/PatchDiff.js +3 -2
  130. package/dist/react/PatchDiff.js.map +1 -1
  131. package/dist/react/UnresolvedFile.d.ts +1 -1
  132. package/dist/react/UnresolvedFile.js.map +1 -1
  133. package/dist/react/index.d.ts +4 -4
  134. package/dist/react/index.js +3 -3
  135. package/dist/react/types.d.ts +9 -1
  136. package/dist/react/types.d.ts.map +1 -1
  137. package/dist/react/utils/useFileDiffInstance.d.ts +5 -3
  138. package/dist/react/utils/useFileDiffInstance.d.ts.map +1 -1
  139. package/dist/react/utils/useFileDiffInstance.js +24 -34
  140. package/dist/react/utils/useFileDiffInstance.js.map +1 -1
  141. package/dist/react/utils/useFileInstance.d.ts +5 -3
  142. package/dist/react/utils/useFileInstance.d.ts.map +1 -1
  143. package/dist/react/utils/useFileInstance.js +23 -33
  144. package/dist/react/utils/useFileInstance.js.map +1 -1
  145. package/dist/react/utils/useUnresolvedFileInstance.js +4 -4
  146. package/dist/react/utils/useUnresolvedFileInstance.js.map +1 -1
  147. package/dist/renderers/DiffHunksRenderer.d.ts +41 -1
  148. package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
  149. package/dist/renderers/DiffHunksRenderer.js +167 -29
  150. package/dist/renderers/DiffHunksRenderer.js.map +1 -1
  151. package/dist/renderers/FileRenderer.d.ts +20 -1
  152. package/dist/renderers/FileRenderer.d.ts.map +1 -1
  153. package/dist/renderers/FileRenderer.js +119 -29
  154. package/dist/renderers/FileRenderer.js.map +1 -1
  155. package/dist/ssr/index.d.ts +2 -2
  156. package/dist/ssr/preloadDiffs.d.ts.map +1 -1
  157. package/dist/ssr/preloadDiffs.js +3 -1
  158. package/dist/ssr/preloadDiffs.js.map +1 -1
  159. package/dist/ssr/preloadFile.d.ts.map +1 -1
  160. package/dist/ssr/preloadFile.js +2 -0
  161. package/dist/ssr/preloadFile.js.map +1 -1
  162. package/dist/style.js +1 -1
  163. package/dist/types.d.ts +192 -42
  164. package/dist/types.d.ts.map +1 -1
  165. package/dist/utils/annotationHelpers.d.ts +20 -0
  166. package/dist/utils/annotationHelpers.d.ts.map +1 -0
  167. package/dist/utils/annotationHelpers.js +29 -0
  168. package/dist/utils/annotationHelpers.js.map +1 -0
  169. package/dist/utils/computeFileOffsets.d.ts.map +1 -1
  170. package/dist/utils/computeFileOffsets.js +34 -5
  171. package/dist/utils/computeFileOffsets.js.map +1 -1
  172. package/dist/utils/editSessionHunks.d.ts +66 -0
  173. package/dist/utils/editSessionHunks.d.ts.map +1 -0
  174. package/dist/utils/editSessionHunks.js +437 -0
  175. package/dist/utils/editSessionHunks.js.map +1 -0
  176. package/dist/utils/getDiffHunksRendererOptions.d.ts.map +1 -1
  177. package/dist/utils/getDiffHunksRendererOptions.js +2 -1
  178. package/dist/utils/getDiffHunksRendererOptions.js.map +1 -1
  179. package/dist/utils/getFileRendererOptions.d.ts.map +1 -1
  180. package/dist/utils/getFileRendererOptions.js +2 -1
  181. package/dist/utils/getFileRendererOptions.js.map +1 -1
  182. package/dist/utils/getHunkSideBoundaries.d.ts +7 -0
  183. package/dist/utils/getHunkSideBoundaries.d.ts.map +1 -0
  184. package/dist/utils/getHunkSideBoundaries.js +12 -0
  185. package/dist/utils/getHunkSideBoundaries.js.map +1 -0
  186. package/dist/utils/getTotalLineCountFromHunks.d.ts.map +1 -1
  187. package/dist/utils/getTotalLineCountFromHunks.js +2 -1
  188. package/dist/utils/getTotalLineCountFromHunks.js.map +1 -1
  189. package/dist/utils/hydratePartialDiff.d.ts.map +1 -1
  190. package/dist/utils/hydratePartialDiff.js +4 -3
  191. package/dist/utils/hydratePartialDiff.js.map +1 -1
  192. package/dist/utils/isGutterUtilityPath.d.ts +5 -0
  193. package/dist/utils/isGutterUtilityPath.d.ts.map +1 -0
  194. package/dist/utils/isGutterUtilityPath.js +12 -0
  195. package/dist/utils/isGutterUtilityPath.js.map +1 -0
  196. package/dist/utils/iterateOverDiff.d.ts.map +1 -1
  197. package/dist/utils/iterateOverDiff.js +17 -12
  198. package/dist/utils/iterateOverDiff.js.map +1 -1
  199. package/dist/utils/parseMergeConflictDiffFromFile.d.ts.map +1 -1
  200. package/dist/utils/parseMergeConflictDiffFromFile.js +9 -6
  201. package/dist/utils/parseMergeConflictDiffFromFile.js.map +1 -1
  202. package/dist/utils/parsePatchFiles.d.ts.map +1 -1
  203. package/dist/utils/parsePatchFiles.js +6 -3
  204. package/dist/utils/parsePatchFiles.js.map +1 -1
  205. package/dist/utils/realignChangeContent.d.ts +33 -0
  206. package/dist/utils/realignChangeContent.d.ts.map +1 -0
  207. package/dist/utils/realignChangeContent.js +148 -0
  208. package/dist/utils/realignChangeContent.js.map +1 -0
  209. package/dist/utils/renderDiffWithHighlighter.js +1 -1
  210. package/dist/utils/resolveRegion.d.ts.map +1 -1
  211. package/dist/utils/resolveRegion.js +18 -2
  212. package/dist/utils/resolveRegion.js.map +1 -1
  213. package/dist/utils/shouldUseTokenTransformer.d.ts +7 -3
  214. package/dist/utils/shouldUseTokenTransformer.d.ts.map +1 -1
  215. package/dist/utils/shouldUseTokenTransformer.js +1 -1
  216. package/dist/utils/shouldUseTokenTransformer.js.map +1 -1
  217. package/dist/utils/updateDiffHunks.d.ts +8 -2
  218. package/dist/utils/updateDiffHunks.d.ts.map +1 -1
  219. package/dist/utils/updateDiffHunks.js +9 -7
  220. package/dist/utils/updateDiffHunks.js.map +1 -1
  221. package/dist/utils/virtualDiffLayout.d.ts +42 -2
  222. package/dist/utils/virtualDiffLayout.d.ts.map +1 -1
  223. package/dist/utils/virtualDiffLayout.js +101 -7
  224. package/dist/utils/virtualDiffLayout.js.map +1 -1
  225. package/dist/worker/WorkerPoolManager.d.ts +2 -1
  226. package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
  227. package/dist/worker/WorkerPoolManager.js +3 -0
  228. package/dist/worker/WorkerPoolManager.js.map +1 -1
  229. package/dist/worker/worker-portable.js +60 -20
  230. package/dist/worker/worker-portable.js.map +1 -1
  231. package/dist/worker/worker.js +61 -19
  232. package/dist/worker/worker.js.map +1 -1
  233. package/package.json +10 -7
  234. package/dist/editor/index.d.ts +0 -3
  235. package/dist/editor/index.js +0 -3
  236. package/dist/editor/tokenzier.d.ts.map +0 -1
  237. package/dist/editor/tokenzier.js.map +0 -1
  238. package/dist/react/EditorContext.d.ts +0 -15
  239. package/dist/react/EditorContext.d.ts.map +0 -1
  240. package/dist/react/EditorContext.js +0 -23
  241. package/dist/react/EditorContext.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"FileDiff.d.ts","names":[],"sources":["../../src/components/FileDiff.ts"],"mappings":"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"}
1
+ {"version":3,"file":"FileDiff.d.ts","names":[],"sources":["../../src/components/FileDiff.ts"],"mappings":"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"}
@@ -1,5 +1,10 @@
1
1
  import { CUSTOM_HEADER_SLOT_ID, DEFAULT_THEMES, EMPTY_RENDER_RANGE, HEADER_FILENAME_SUFFIX_SLOT_ID, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID } from "../constants.js";
2
+ import { dequeueRender, queueRender } from "../managers/UniversalRenderingManager.js";
2
3
  import { areThemesEqual } from "../utils/areThemesEqual.js";
4
+ import { getHunkSideStartBoundary } from "../utils/getHunkSideBoundaries.js";
5
+ import { parseDiffFromFile } from "../utils/parseDiffFromFile.js";
6
+ import { getExpandedRegion, getHunkAdditionLineRange, getNearestRenderableAdditionLine, getTrailingExpandedRegion, isAdditionLineRenderable } from "../utils/virtualDiffLayout.js";
7
+ import { captureExpansionAnchors, finishEditSessionForDiff, rebuildExpansionFromAnchors } from "../utils/editSessionHunks.js";
3
8
  import { isStyleNode } from "../utils/isStyleNode.js";
4
9
  import { areFilesEqual } from "../utils/areFilesEqual.js";
5
10
  import { InteractionManager, pluckInteractionOptions } from "../managers/InteractionManager.js";
@@ -21,8 +26,9 @@ import "./web-components.js";
21
26
  import { awaitWithTimeout } from "../utils/awaitWithTimeout.js";
22
27
  import { getDiffFileInput } from "../utils/getDiffFileInput.js";
23
28
  import { hydratePartialDiff } from "../utils/hydratePartialDiff.js";
24
- import { parseDiffFromFile } from "../utils/parseDiffFromFile.js";
29
+ import { iterateOverDiff } from "../utils/iterateOverDiff.js";
25
30
  import { ScrollSyncManager } from "../managers/ScrollSyncManager.js";
31
+ import { isDefaultRenderRange } from "../utils/isDefaultRenderRange.js";
26
32
  import { isDiffPlainText } from "../utils/isDiffPlainText.js";
27
33
  import { DiffHunksRenderer } from "../renderers/DiffHunksRenderer.js";
28
34
  import { areDiffLineAnnotationsEqual } from "../utils/areDiffLineAnnotationsEqual.js";
@@ -83,7 +89,9 @@ var FileDiff = class {
83
89
  enabled = true;
84
90
  editor;
85
91
  refreshViewTimeout;
86
- deferSetSelection;
92
+ lineStateRefreshPending = false;
93
+ deferredSelectedLines;
94
+ deferredEditorActiveLine;
87
95
  constructor(options = { theme: DEFAULT_THEMES }, workerManager, isContainerManaged = false) {
88
96
  this.options = options;
89
97
  this.workerManager = workerManager;
@@ -111,8 +119,9 @@ var FileDiff = class {
111
119
  let targetUnifiedIndex;
112
120
  let targetSplitIndex;
113
121
  hunkIterator: for (const hunk of fileDiff.hunks) {
114
- let currentLineNumber = side === "deletions" ? hunk.deletionStart : hunk.additionStart;
122
+ const hunkStart = side === "deletions" ? hunk.deletionStart : hunk.additionStart;
115
123
  const hunkCount = side === "deletions" ? hunk.deletionCount : hunk.additionCount;
124
+ let currentLineNumber = getHunkSideStartBoundary(hunkStart, hunkCount) + 1;
116
125
  let splitIndex = hunk.splitLineStart;
117
126
  let unifiedIndex = hunk.unifiedLineStart;
118
127
  if (lineNumber < currentLineNumber) {
@@ -200,9 +209,24 @@ var FileDiff = class {
200
209
  return true;
201
210
  }
202
211
  setSelectedLines(range, options) {
203
- if (this.refreshViewTimeout != null) this.deferSetSelection = [range, options];
212
+ if (this.lineStateRefreshPending) this.deferredSelectedLines = [range, options];
204
213
  else this.interactionManager.setSelection(range, options);
205
214
  }
215
+ setEditorActiveLine(lineNumber, options) {
216
+ if (this.lineStateRefreshPending) this.deferredEditorActiveLine = [lineNumber, options];
217
+ else this.interactionManager.setEditorActiveLine(lineNumber, {
218
+ lineNumberOnly: options?.lineNumberOnly,
219
+ side: options?.side ?? "additions"
220
+ });
221
+ }
222
+ flushDeferredLineState() {
223
+ const { deferredEditorActiveLine: editorActiveLine, deferredSelectedLines: selectedLines } = this;
224
+ this.lineStateRefreshPending = false;
225
+ this.deferredEditorActiveLine = void 0;
226
+ this.deferredSelectedLines = void 0;
227
+ if (editorActiveLine != null) this.setEditorActiveLine(...editorActiveLine);
228
+ if (selectedLines != null) this.interactionManager.setSelection(...selectedLines);
229
+ }
206
230
  flushManagers() {
207
231
  if (!this.managersDirty || this.pre == null) {
208
232
  this.managersDirty = false;
@@ -222,8 +246,19 @@ var FileDiff = class {
222
246
  if (typeof this.options.hunkSeparators === "function") return true;
223
247
  return overflow === "scroll" && (this.lineAnnotations.length > 0 || this.pre?.hasAttribute("data-has-merge-conflict") === true);
224
248
  }
249
+ getCodeScrollLeft() {
250
+ return Math.max(this.codeUnified?.scrollLeft ?? 0, this.codeDeletions?.scrollLeft ?? 0, this.codeAdditions?.scrollLeft ?? 0);
251
+ }
252
+ setCodeScrollLeft(position) {
253
+ if (this.codeUnified != null) this.codeUnified.scrollLeft = position;
254
+ if (this.codeAdditions != null) this.codeAdditions.scrollLeft = position;
255
+ if (this.codeDeletions != null) this.codeDeletions.scrollLeft = position;
256
+ }
225
257
  cleanUp(recycle = false) {
258
+ dequeueRender(this.handleEditSessionRender);
226
259
  this.emitPostRender(true);
260
+ this.editor?.cleanUp(recycle);
261
+ this.editor = void 0;
227
262
  this.resizeManager.cleanUp();
228
263
  this.interactionManager.cleanUp();
229
264
  this.scrollSyncManager.cleanUp();
@@ -272,13 +307,14 @@ var FileDiff = class {
272
307
  this.deletionFile = void 0;
273
308
  this.additionFile = void 0;
274
309
  }
275
- this.enabled = false;
276
- this.editor?.cleanUp(recycle);
277
- this.editor = void 0;
278
310
  if (this.refreshViewTimeout != null) {
279
311
  clearTimeout(this.refreshViewTimeout);
280
312
  this.refreshViewTimeout = void 0;
281
313
  }
314
+ this.lineStateRefreshPending = false;
315
+ this.deferredEditorActiveLine = void 0;
316
+ this.deferredSelectedLines = void 0;
317
+ this.enabled = false;
282
318
  }
283
319
  virtualizedSetup() {
284
320
  this.enabled = true;
@@ -449,6 +485,10 @@ var FileDiff = class {
449
485
  if (diffDidChange) this.cachedHeaderHTML = void 0;
450
486
  if (lineAnnotations != null) this.setLineAnnotations(lineAnnotations);
451
487
  if (this.fileDiff == null) return false;
488
+ if (this.fileDiff.editSessionDirty === true && this.shouldSelfHealEditSession()) {
489
+ finishEditSessionForDiff(this.fileDiff, this.options.parseDiffOptions);
490
+ this.hunksRenderer.refreshHighlightedResult();
491
+ }
452
492
  if (expandUnchanged) this.loadFilesIfNecessary();
453
493
  this.hunksRenderer.setOptions(this.getHunksRendererOptions(this.options));
454
494
  this.syncInteractionOptions();
@@ -538,22 +578,83 @@ var FileDiff = class {
538
578
  const fileContainer = this.fileContainer;
539
579
  const fileDiff = this.fileDiffCache;
540
580
  const lineAnnotations = this.lineAnnotations;
541
- const renderRange = this.renderRange;
581
+ const renderRange = this.computeEditorRenderRange(this.renderRange);
542
582
  if (editor != null && fileContainer != null && fileDiff != null && !fileDiff.isPartial) this.hunksRenderer.initializeHighlighter().then((highlighter) => {
543
583
  if (!this.enabled || this.editor !== editor || this.fileContainer !== fileContainer || this.fileDiffCache !== fileDiff) return;
544
584
  editor.__syncRenderView(highlighter, fileContainer, fileDiff, lineAnnotations, renderRange);
545
585
  });
546
586
  }
587
+ computeEditorRenderRange(renderRange) {
588
+ const fileDiff = this.fileDiffCache;
589
+ if (renderRange == null || fileDiff == null || isDefaultRenderRange(renderRange)) return renderRange;
590
+ const { diffStyle = "split", expandUnchanged = false, collapsedContextThreshold = 1 } = this.options;
591
+ let firstLineNumber;
592
+ let lastLineNumber;
593
+ iterateOverDiff({
594
+ diff: fileDiff,
595
+ diffStyle,
596
+ startingLine: renderRange.startingLine,
597
+ totalLines: renderRange.totalLines,
598
+ expandedHunks: expandUnchanged ? true : this.hunksRenderer.getExpandedHunksMap(),
599
+ collapsedContextThreshold,
600
+ callback: ({ additionLine }) => {
601
+ if (additionLine != null) {
602
+ firstLineNumber ??= additionLine.lineNumber;
603
+ lastLineNumber = additionLine.lineNumber;
604
+ }
605
+ }
606
+ });
607
+ if (firstLineNumber == null || lastLineNumber == null) return {
608
+ ...renderRange,
609
+ startingLine: 0,
610
+ totalLines: 0
611
+ };
612
+ return {
613
+ ...renderRange,
614
+ startingLine: firstLineNumber - 1,
615
+ totalLines: lastLineNumber - firstLineNumber + 1
616
+ };
617
+ }
547
618
  attachEditor(editor) {
619
+ if (this.type !== "file-diff") throw new Error(`FileDiff.attachEditor: cannot attach an editor to a "${this.type}" diff`);
548
620
  this.editor?.cleanUp();
549
621
  this.editor = editor;
550
- this.interactionManager.setEditorAttached(true);
551
- this.syncRenderViewToEditor();
552
- return () => {
622
+ this.hunksRenderer.beginEditSession();
623
+ if (this.fileDiff?.isPartial === true) this.loadFilesIfNecessary();
624
+ if (this.hunksRenderer.editorRenderReady()) this.syncRenderViewToEditor();
625
+ else this.rerender();
626
+ return (recycle) => {
553
627
  this.editor = void 0;
554
- this.interactionManager.setEditorAttached(false);
628
+ if (recycle !== true) this.finishEditSession();
555
629
  };
556
630
  }
631
+ finishEditSession() {
632
+ this.hunksRenderer.endEditSession();
633
+ this.completeEditSession();
634
+ }
635
+ /**
636
+ * Run the genuine session-end recompute: restore recompute-shaped hunks (a
637
+ * context-only region collapses away, boundaries re-derive), preserve
638
+ * expansion state best-effort via old-side anchors, and repaint through
639
+ * the session render path — which also invalidates virtualized layout,
640
+ * since nothing else does at exit now that editing does not flip
641
+ * expandUnchanged. Marker-guarded and idempotent; CodeView also calls this
642
+ * when reaping a session whose detach closure was consumed by a recycle.
643
+ * Safe on a cleaned-up instance: the recompute is pure metadata work and
644
+ * the deferred rerender is enabled-guarded. Returns true when a recompute
645
+ * ran.
646
+ */
647
+ completeEditSession() {
648
+ const fileDiff = this.fileDiffCache;
649
+ if (fileDiff == null || fileDiff.editSessionDirty !== true) return false;
650
+ const { collapsedContextThreshold = 1 } = this.options;
651
+ const anchors = captureExpansionAnchors(fileDiff, this.hunksRenderer.getExpandedHunksMap(), collapsedContextThreshold);
652
+ finishEditSessionForDiff(fileDiff, this.options.parseDiffOptions);
653
+ this.hunksRenderer.setExpandedHunksMap(rebuildExpansionFromAnchors(fileDiff, anchors));
654
+ this.hunksRenderer.refreshHighlightedResult();
655
+ this.escalateEditSessionRender();
656
+ return true;
657
+ }
557
658
  applyDocumentChange(textDocument, newLineAnnotations) {
558
659
  this.hunksRenderer.applyDocumentChange(textDocument);
559
660
  const fileDiff = this.hunksRenderer.diffCache;
@@ -570,21 +671,100 @@ var FileDiff = class {
570
671
  this.rerender();
571
672
  this.interactionManager.setSelectionDirty();
572
673
  }
573
- updateRenderCache(dirtyLines, themeType, shouldRefreshView) {
574
- this.hunksRenderer.updateRenderCache(dirtyLines, themeType);
575
- if (shouldRefreshView) {
674
+ updateRenderCache(dirtyLines, themeType, options = {}) {
675
+ const { shouldRefreshDiffsView, lineCountChangeInFlight } = options;
676
+ if (this.hunksRenderer.updateRenderCache(dirtyLines, themeType, lineCountChangeInFlight)) {
677
+ if (this.refreshViewTimeout != null) {
678
+ clearTimeout(this.refreshViewTimeout);
679
+ this.refreshViewTimeout = void 0;
680
+ }
681
+ this.lineStateRefreshPending = true;
682
+ this.escalateEditSessionRender();
683
+ return;
684
+ }
685
+ if (shouldRefreshDiffsView === true) {
576
686
  if (this.refreshViewTimeout != null) clearTimeout(this.refreshViewTimeout);
687
+ this.lineStateRefreshPending = true;
577
688
  this.refreshViewTimeout = setTimeout(() => {
578
689
  this.refreshViewTimeout = void 0;
579
690
  if (this.options.diffStyle === "split") this.refreshSplitDiffView();
580
691
  else this.refreshUnifiedDiffView();
581
- if (this.deferSetSelection != null) {
582
- this.interactionManager.setSelection(...this.deferSetSelection);
583
- this.deferSetSelection = void 0;
584
- }
692
+ this.flushDeferredLineState();
585
693
  }, 150);
586
694
  }
587
695
  }
696
+ isLineRenderable(lineNumber) {
697
+ const fileDiff = this.fileDiffCache;
698
+ if (fileDiff == null) return true;
699
+ const { expandUnchanged = false, collapsedContextThreshold = 1 } = this.options;
700
+ return isAdditionLineRenderable({
701
+ fileDiff,
702
+ lineNumber,
703
+ expandedHunks: expandUnchanged ? true : this.hunksRenderer.getExpandedHunksMap(),
704
+ collapsedContextThreshold
705
+ });
706
+ }
707
+ getNearestRenderableLine(lineNumber, direction) {
708
+ const fileDiff = this.fileDiffCache;
709
+ if (fileDiff == null) return lineNumber;
710
+ const { expandUnchanged = false, collapsedContextThreshold = 1 } = this.options;
711
+ return getNearestRenderableAdditionLine({
712
+ fileDiff,
713
+ lineNumber,
714
+ direction,
715
+ expandedHunks: expandUnchanged ? true : this.hunksRenderer.getExpandedHunksMap(),
716
+ collapsedContextThreshold
717
+ });
718
+ }
719
+ revealLine(lineNumber) {
720
+ const fileDiff = this.fileDiffCache;
721
+ const { expandUnchanged = false, collapsedContextThreshold = 1, expansionLineCount = 100 } = this.options;
722
+ if (fileDiff == null || fileDiff.isPartial || expandUnchanged) return false;
723
+ const expandedHunks = this.hunksRenderer.getExpandedHunksMap();
724
+ for (const [hunkIndex, hunk] of fileDiff.hunks.entries()) {
725
+ const [hunkStart, hunkEnd] = getHunkAdditionLineRange(hunk);
726
+ if (lineNumber < hunkStart) {
727
+ const region = getExpandedRegion({
728
+ isPartial: fileDiff.isPartial,
729
+ rangeSize: hunk.collapsedBefore,
730
+ expandedHunks,
731
+ hunkIndex,
732
+ collapsedContextThreshold
733
+ });
734
+ const gapStart = hunkStart - region.rangeSize;
735
+ if (region.renderAll || lineNumber < gapStart + region.fromStart || lineNumber >= hunkStart - region.fromEnd) return false;
736
+ const fromStartDistance = lineNumber - (gapStart + region.fromStart) + 1;
737
+ const fromEndDistance = hunkStart - region.fromEnd - lineNumber;
738
+ if (fromStartDistance <= fromEndDistance) this.expandHunk(hunkIndex, "up", fromStartDistance + expansionLineCount);
739
+ else this.expandHunk(hunkIndex, "down", fromEndDistance + expansionLineCount);
740
+ return true;
741
+ }
742
+ if (lineNumber < hunkEnd) return false;
743
+ }
744
+ const trailingRegion = getTrailingExpandedRegion({
745
+ fileDiff,
746
+ hunkIndex: fileDiff.hunks.length - 1,
747
+ expandedHunks,
748
+ collapsedContextThreshold,
749
+ errorPrefix: "FileDiff.revealLine"
750
+ });
751
+ if (trailingRegion == null || trailingRegion.renderAll) return false;
752
+ const lastHunk = fileDiff.hunks[fileDiff.hunks.length - 1];
753
+ const [, trailingStart] = getHunkAdditionLineRange(lastHunk);
754
+ if (lineNumber < trailingStart + trailingRegion.fromStart || lineNumber >= trailingStart + trailingRegion.rangeSize) return false;
755
+ this.expandHunk(fileDiff.hunks.length, "up", lineNumber - (trailingStart + trailingRegion.fromStart) + 1 + expansionLineCount);
756
+ return true;
757
+ }
758
+ shouldSelfHealEditSession() {
759
+ return this.editor == null;
760
+ }
761
+ escalateEditSessionRender() {
762
+ queueRender(this.handleEditSessionRender);
763
+ }
764
+ handleEditSessionRender = () => {
765
+ this.rerender();
766
+ this.flushDeferredLineState();
767
+ };
588
768
  removeRenderedCode() {
589
769
  this.resizeManager.cleanUp();
590
770
  this.scrollSyncManager.cleanUp();
@@ -761,6 +941,7 @@ var FileDiff = class {
761
941
  const { fileContainer: previousContainer } = this;
762
942
  const nextContainer = fileContainer ?? previousContainer ?? document.createElement("diffs-container");
763
943
  const containerChanged = previousContainer !== nextContainer;
944
+ if (previousContainer != null && containerChanged) this.editor?.__captureFocusForDOMReplacement();
764
945
  if (containerChanged) this.emitPostRender(true);
765
946
  this.fileContainer = nextContainer;
766
947
  if (previousContainer != null && containerChanged) {
@@ -804,6 +985,7 @@ var FileDiff = class {
804
985
  this.codeAdditions = void 0;
805
986
  shadowRoot.appendChild(this.pre);
806
987
  } else if (this.pre.parentNode !== shadowRoot) {
988
+ this.editor?.__captureFocusForDOMReplacement();
807
989
  shadowRoot.appendChild(this.pre);
808
990
  this.appliedPreAttributes = void 0;
809
991
  }
@@ -959,6 +1141,7 @@ var FileDiff = class {
959
1141
  const unifiedAST = this.hunksRenderer.renderCodeAST("unified", result);
960
1142
  const deletionsAST = this.hunksRenderer.renderCodeAST("deletions", result);
961
1143
  const additionsAST = this.hunksRenderer.renderCodeAST("additions", result);
1144
+ this.editor?.__captureFocusForDOMReplacement();
962
1145
  if (unifiedAST != null) {
963
1146
  shouldReplace = this.codeUnified == null || this.codeAdditions != null || this.codeDeletions != null;
964
1147
  this.codeDeletions?.remove();