@pierre/diffs 1.2.2 → 1.2.4

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 (73) hide show
  1. package/dist/components/CodeView.d.ts +22 -7
  2. package/dist/components/CodeView.d.ts.map +1 -1
  3. package/dist/components/CodeView.js +202 -105
  4. package/dist/components/CodeView.js.map +1 -1
  5. package/dist/components/File.d.ts +7 -3
  6. package/dist/components/File.d.ts.map +1 -1
  7. package/dist/components/File.js +38 -14
  8. package/dist/components/File.js.map +1 -1
  9. package/dist/components/FileDiff.d.ts +10 -5
  10. package/dist/components/FileDiff.d.ts.map +1 -1
  11. package/dist/components/FileDiff.js +37 -11
  12. package/dist/components/FileDiff.js.map +1 -1
  13. package/dist/components/UnresolvedFile.d.ts +4 -3
  14. package/dist/components/UnresolvedFile.d.ts.map +1 -1
  15. package/dist/components/UnresolvedFile.js +2 -0
  16. package/dist/components/UnresolvedFile.js.map +1 -1
  17. package/dist/components/VirtualizedFile.d.ts +4 -2
  18. package/dist/components/VirtualizedFile.d.ts.map +1 -1
  19. package/dist/components/VirtualizedFile.js +23 -6
  20. package/dist/components/VirtualizedFile.js.map +1 -1
  21. package/dist/components/VirtualizedFileDiff.d.ts +9 -8
  22. package/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
  23. package/dist/components/VirtualizedFileDiff.js +329 -142
  24. package/dist/components/VirtualizedFileDiff.js.map +1 -1
  25. package/dist/index.d.ts +3 -3
  26. package/dist/index.js +3 -3
  27. package/dist/react/UnresolvedFile.d.ts +2 -2
  28. package/dist/react/UnresolvedFile.d.ts.map +1 -1
  29. package/dist/react/UnresolvedFile.js.map +1 -1
  30. package/dist/react/index.d.ts +2 -2
  31. package/dist/react/jsx.d.ts.map +1 -1
  32. package/dist/renderers/DiffHunksRenderer.d.ts +1 -0
  33. package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
  34. package/dist/renderers/DiffHunksRenderer.js +12 -5
  35. package/dist/renderers/DiffHunksRenderer.js.map +1 -1
  36. package/dist/renderers/FileRenderer.d.ts +1 -0
  37. package/dist/renderers/FileRenderer.d.ts.map +1 -1
  38. package/dist/renderers/FileRenderer.js +4 -1
  39. package/dist/renderers/FileRenderer.js.map +1 -1
  40. package/dist/ssr/index.d.ts +2 -2
  41. package/dist/types.d.ts +8 -1
  42. package/dist/types.d.ts.map +1 -1
  43. package/dist/utils/computeEstimatedDiffHeights.d.ts +28 -0
  44. package/dist/utils/computeEstimatedDiffHeights.d.ts.map +1 -0
  45. package/dist/utils/computeEstimatedDiffHeights.js +111 -0
  46. package/dist/utils/computeEstimatedDiffHeights.js.map +1 -0
  47. package/dist/utils/getDiffHunksRendererOptions.d.ts +8 -0
  48. package/dist/utils/getDiffHunksRendererOptions.d.ts.map +1 -0
  49. package/dist/utils/getDiffHunksRendererOptions.js +31 -0
  50. package/dist/utils/getDiffHunksRendererOptions.js.map +1 -0
  51. package/dist/utils/getFileRendererOptions.d.ts +8 -0
  52. package/dist/utils/getFileRendererOptions.d.ts.map +1 -0
  53. package/dist/utils/getFileRendererOptions.js +24 -0
  54. package/dist/utils/getFileRendererOptions.js.map +1 -0
  55. package/dist/utils/iterateOverDiff.js +29 -30
  56. package/dist/utils/iterateOverDiff.js.map +1 -1
  57. package/dist/utils/parsePatchFiles.js +8 -1
  58. package/dist/utils/parsePatchFiles.js.map +1 -1
  59. package/dist/utils/virtualDiffLayout.d.ts +65 -0
  60. package/dist/utils/virtualDiffLayout.d.ts.map +1 -0
  61. package/dist/utils/virtualDiffLayout.js +94 -0
  62. package/dist/utils/virtualDiffLayout.js.map +1 -0
  63. package/dist/worker/WorkerPoolManager.d.ts +4 -1
  64. package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
  65. package/dist/worker/WorkerPoolManager.js +49 -24
  66. package/dist/worker/WorkerPoolManager.js.map +1 -1
  67. package/dist/worker/types.d.ts +2 -0
  68. package/dist/worker/types.d.ts.map +1 -1
  69. package/dist/worker/worker-portable.js +154 -34
  70. package/dist/worker/worker-portable.js.map +1 -1
  71. package/dist/worker/worker.js +60 -30
  72. package/dist/worker/worker.js.map +1 -1
  73. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":["DiffsThemeNames","ExtensionFormatMap","FileContents","FileDiffMetadata","HighlighterTypes","LanguageRegistration","LineDiffTypes","RenderDiffOptions","RenderFileOptions","SupportedLanguages","ThemedDiffResult","ThemedFileResult","ThemeRegistrationResolved","ThemesType","WorkerRequestId","WorkerRenderingOptions","FileRendererInstance","DiffRendererInstance","RenderFileRequest","ResolvedLanguage","RenderDiffRequest","InitializeWorkerRequest","Exclude","SetRenderOptionsWorkerRequest","SubmitRequest","Omit","WorkerRequest","RenderFileSuccessResponse","RenderDiffSuccessResponse","InitializeSuccessResponse","RegisterThemeSuccessResponse","RenderErrorResponse","RenderSuccessResponse","WorkerResponse","WorkerPoolOptions","Worker","WorkerInitializationRenderOptions","Partial","InitializeWorkerTask","Error","SetRenderOptionsWorkerTask","RenderFileTask","Set","RenderDiffTask","AllWorkerTasks","WorkerStats"],"sources":["../../src/worker/types.d.ts"],"sourcesContent":["import type { DiffsThemeNames, ExtensionFormatMap, FileContents, FileDiffMetadata, HighlighterTypes, LanguageRegistration, LineDiffTypes, RenderDiffOptions, RenderFileOptions, SupportedLanguages, ThemedDiffResult, ThemedFileResult, ThemeRegistrationResolved, ThemesType } from '../types';\nexport type WorkerRequestId = string;\nexport interface WorkerRenderingOptions {\n theme: DiffsThemeNames | ThemesType;\n useTokenTransformer: boolean;\n tokenizeMaxLineLength: number;\n lineDiffType: LineDiffTypes;\n maxLineDiffLength: number;\n}\nexport interface FileRendererInstance {\n readonly __id: string;\n onHighlightSuccess(file: FileContents, result: ThemedFileResult, options: RenderFileOptions): unknown;\n onHighlightError(error: unknown): unknown;\n}\nexport interface DiffRendererInstance {\n readonly __id: string;\n onHighlightSuccess(diff: FileDiffMetadata, result: ThemedDiffResult, options: RenderDiffOptions): unknown;\n onHighlightError(error: unknown): unknown;\n}\nexport interface RenderFileRequest {\n type: 'file';\n id: WorkerRequestId;\n file: FileContents;\n resolvedLanguages?: ResolvedLanguage[];\n customExtensionsVersion?: number;\n customExtensionMap?: ExtensionFormatMap;\n}\nexport interface RenderDiffRequest {\n type: 'diff';\n id: WorkerRequestId;\n diff: FileDiffMetadata;\n resolvedLanguages?: ResolvedLanguage[];\n customExtensionsVersion?: number;\n customExtensionMap?: ExtensionFormatMap;\n}\nexport interface InitializeWorkerRequest {\n type: 'initialize';\n id: WorkerRequestId;\n renderOptions: WorkerRenderingOptions;\n preferredHighlighter: HighlighterTypes;\n resolvedThemes: ThemeRegistrationResolved[];\n resolvedLanguages?: ResolvedLanguage[];\n customExtensionsVersion?: number;\n customExtensionMap?: ExtensionFormatMap;\n}\nexport interface ResolvedLanguage {\n name: Exclude<SupportedLanguages, 'text'>;\n data: LanguageRegistration[];\n}\nexport interface SetRenderOptionsWorkerRequest {\n type: 'set-render-options';\n id: WorkerRequestId;\n renderOptions: WorkerRenderingOptions;\n resolvedThemes: ThemeRegistrationResolved[];\n}\nexport type SubmitRequest = Omit<RenderFileRequest, 'id'> | Omit<RenderDiffRequest, 'id'>;\nexport type WorkerRequest = RenderFileRequest | RenderDiffRequest | InitializeWorkerRequest | SetRenderOptionsWorkerRequest;\nexport interface RenderFileSuccessResponse {\n type: 'success';\n requestType: 'file';\n id: WorkerRequestId;\n result: ThemedFileResult;\n options: RenderFileOptions;\n sentAt: number;\n}\nexport interface RenderDiffSuccessResponse {\n type: 'success';\n requestType: 'diff';\n id: WorkerRequestId;\n result: ThemedDiffResult;\n options: RenderDiffOptions;\n sentAt: number;\n}\nexport interface InitializeSuccessResponse {\n type: 'success';\n requestType: 'initialize';\n id: WorkerRequestId;\n sentAt: number;\n}\nexport interface RegisterThemeSuccessResponse {\n type: 'success';\n requestType: 'set-render-options';\n id: WorkerRequestId;\n sentAt: number;\n}\nexport interface RenderErrorResponse {\n type: 'error';\n id: WorkerRequestId;\n error: string;\n stack?: string;\n}\nexport type RenderSuccessResponse = RenderFileSuccessResponse | RenderDiffSuccessResponse;\nexport type WorkerResponse = RenderSuccessResponse | RenderErrorResponse | InitializeSuccessResponse | RegisterThemeSuccessResponse;\nexport interface WorkerPoolOptions {\n /**\n * Factory function that creates a new Web Worker instance for the pool.\n * This is called once per worker in the pool during initialization.\n */\n workerFactory: () => Worker;\n /**\n * Number of workers to create in the pool.\n * @default 8\n */\n poolSize?: number;\n totalASTLRUCacheSize?: number;\n}\nexport interface WorkerInitializationRenderOptions extends Partial<WorkerRenderingOptions> {\n langs?: SupportedLanguages[];\n preferredHighlighter?: HighlighterTypes;\n}\nexport interface InitializeWorkerTask {\n type: 'initialize';\n id: WorkerRequestId;\n request: InitializeWorkerRequest;\n resolve(value?: undefined): void;\n reject(error: Error): void;\n requestStart: number;\n}\nexport interface SetRenderOptionsWorkerTask {\n type: 'set-render-options';\n id: WorkerRequestId;\n request: SetRenderOptionsWorkerRequest;\n resolve(value?: undefined): void;\n reject(error: Error): void;\n requestStart: number;\n}\nexport interface RenderFileTask {\n type: 'file';\n id: WorkerRequestId;\n request: RenderFileRequest;\n instances: Set<FileRendererInstance>;\n primeCache: boolean;\n highlightKey?: string;\n requestStart: number;\n}\nexport interface RenderDiffTask {\n type: 'diff';\n id: WorkerRequestId;\n request: RenderDiffRequest;\n instances: Set<DiffRendererInstance>;\n primeCache: boolean;\n highlightKey?: string;\n requestStart: number;\n}\nexport type AllWorkerTasks = InitializeWorkerTask | SetRenderOptionsWorkerTask | RenderFileTask | RenderDiffTask;\nexport interface WorkerStats {\n managerState: 'waiting' | 'initializing' | 'initialized';\n workersFailed: boolean;\n totalWorkers: number;\n busyWorkers: number;\n queuedTasks: number;\n activeTasks: number;\n themeSubscribers: number;\n fileCacheSize: number;\n diffCacheSize: number;\n}\n//# sourceMappingURL=types.d.ts.map"],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","names":["DiffsThemeNames","ExtensionFormatMap","FileContents","FileDiffMetadata","HighlighterTypes","LanguageRegistration","LineDiffTypes","RenderDiffOptions","RenderFileOptions","SupportedLanguages","ThemedDiffResult","ThemedFileResult","ThemeRegistrationResolved","ThemesType","WorkerRequestId","WorkerRenderingOptions","FileRendererInstance","DiffRendererInstance","RenderFileRequest","ResolvedLanguage","RenderDiffRequest","InitializeWorkerRequest","Exclude","SetRenderOptionsWorkerRequest","SubmitRequest","Omit","WorkerRequest","RenderFileSuccessResponse","RenderDiffSuccessResponse","InitializeSuccessResponse","RegisterThemeSuccessResponse","RenderErrorResponse","RenderSuccessResponse","WorkerResponse","WorkerPoolOptions","Worker","WorkerInitializationRenderOptions","Partial","InitializeWorkerTask","Error","SetRenderOptionsWorkerTask","RenderFileTask","Set","RenderDiffTask","AllWorkerTasks","WorkerStats"],"sources":["../../src/worker/types.d.ts"],"sourcesContent":["import type { DiffsThemeNames, ExtensionFormatMap, FileContents, FileDiffMetadata, HighlighterTypes, LanguageRegistration, LineDiffTypes, RenderDiffOptions, RenderFileOptions, SupportedLanguages, ThemedDiffResult, ThemedFileResult, ThemeRegistrationResolved, ThemesType } from '../types';\nexport type WorkerRequestId = string;\nexport interface WorkerRenderingOptions {\n theme: DiffsThemeNames | ThemesType;\n useTokenTransformer: boolean;\n tokenizeMaxLineLength: number;\n lineDiffType: LineDiffTypes;\n maxLineDiffLength: number;\n}\nexport interface FileRendererInstance {\n readonly __id: string;\n onHighlightSuccess(file: FileContents, result: ThemedFileResult, options: RenderFileOptions): unknown;\n onHighlightError(error: unknown): unknown;\n}\nexport interface DiffRendererInstance {\n readonly __id: string;\n onHighlightSuccess(diff: FileDiffMetadata, result: ThemedDiffResult, options: RenderDiffOptions): unknown;\n onHighlightError(error: unknown): unknown;\n}\nexport interface RenderFileRequest {\n type: 'file';\n id: WorkerRequestId;\n file: FileContents;\n resolvedLanguages?: ResolvedLanguage[];\n customExtensionsVersion?: number;\n customExtensionMap?: ExtensionFormatMap;\n}\nexport interface RenderDiffRequest {\n type: 'diff';\n id: WorkerRequestId;\n diff: FileDiffMetadata;\n resolvedLanguages?: ResolvedLanguage[];\n customExtensionsVersion?: number;\n customExtensionMap?: ExtensionFormatMap;\n}\nexport interface InitializeWorkerRequest {\n type: 'initialize';\n id: WorkerRequestId;\n renderOptions: WorkerRenderingOptions;\n preferredHighlighter: HighlighterTypes;\n resolvedThemes: ThemeRegistrationResolved[];\n resolvedLanguages?: ResolvedLanguage[];\n customExtensionsVersion?: number;\n customExtensionMap?: ExtensionFormatMap;\n}\nexport interface ResolvedLanguage {\n name: Exclude<SupportedLanguages, 'text'>;\n data: LanguageRegistration[];\n}\nexport interface SetRenderOptionsWorkerRequest {\n type: 'set-render-options';\n id: WorkerRequestId;\n renderOptions: WorkerRenderingOptions;\n resolvedThemes: ThemeRegistrationResolved[];\n}\nexport type SubmitRequest = Omit<RenderFileRequest, 'id'> | Omit<RenderDiffRequest, 'id'>;\nexport type WorkerRequest = RenderFileRequest | RenderDiffRequest | InitializeWorkerRequest | SetRenderOptionsWorkerRequest;\nexport interface RenderFileSuccessResponse {\n type: 'success';\n requestType: 'file';\n id: WorkerRequestId;\n result: ThemedFileResult;\n options: RenderFileOptions;\n sentAt: number;\n}\nexport interface RenderDiffSuccessResponse {\n type: 'success';\n requestType: 'diff';\n id: WorkerRequestId;\n result: ThemedDiffResult;\n options: RenderDiffOptions;\n sentAt: number;\n}\nexport interface InitializeSuccessResponse {\n type: 'success';\n requestType: 'initialize';\n id: WorkerRequestId;\n sentAt: number;\n}\nexport interface RegisterThemeSuccessResponse {\n type: 'success';\n requestType: 'set-render-options';\n id: WorkerRequestId;\n sentAt: number;\n}\nexport interface RenderErrorResponse {\n type: 'error';\n id: WorkerRequestId;\n error: string;\n stack?: string;\n}\nexport type RenderSuccessResponse = RenderFileSuccessResponse | RenderDiffSuccessResponse;\nexport type WorkerResponse = RenderSuccessResponse | RenderErrorResponse | InitializeSuccessResponse | RegisterThemeSuccessResponse;\nexport interface WorkerPoolOptions {\n /**\n * Factory function that creates a new Web Worker instance for the pool.\n * This is called once per worker in the pool during initialization.\n */\n workerFactory: () => Worker;\n /**\n * Number of workers to create in the pool.\n * @default 8\n */\n poolSize?: number;\n totalASTLRUCacheSize?: number;\n}\nexport interface WorkerInitializationRenderOptions extends Partial<WorkerRenderingOptions> {\n langs?: SupportedLanguages[];\n preferredHighlighter?: HighlighterTypes;\n}\nexport interface InitializeWorkerTask {\n type: 'initialize';\n id: WorkerRequestId;\n request: InitializeWorkerRequest;\n resolve(value?: undefined): void;\n reject(error: Error): void;\n requestStart: number;\n}\nexport interface SetRenderOptionsWorkerTask {\n type: 'set-render-options';\n id: WorkerRequestId;\n request: SetRenderOptionsWorkerRequest;\n resolve(value?: undefined): void;\n reject(error: Error): void;\n requestStart: number;\n}\nexport interface RenderFileTask {\n type: 'file';\n id: WorkerRequestId;\n request: RenderFileRequest;\n instances: Set<FileRendererInstance>;\n primeCache: boolean;\n highlightKey?: string;\n renderOptionsVersion: number;\n requestStart: number;\n}\nexport interface RenderDiffTask {\n type: 'diff';\n id: WorkerRequestId;\n request: RenderDiffRequest;\n instances: Set<DiffRendererInstance>;\n primeCache: boolean;\n highlightKey?: string;\n renderOptionsVersion: number;\n requestStart: number;\n}\nexport type AllWorkerTasks = InitializeWorkerTask | SetRenderOptionsWorkerTask | RenderFileTask | RenderDiffTask;\nexport interface WorkerStats {\n managerState: 'waiting' | 'initializing' | 'initialized';\n workersFailed: boolean;\n totalWorkers: number;\n busyWorkers: number;\n queuedTasks: number;\n activeTasks: number;\n themeSubscribers: number;\n fileCacheSize: number;\n diffCacheSize: number;\n}\n//# sourceMappingURL=types.d.ts.map"],"mappings":"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"}
@@ -15105,6 +15105,132 @@ function getLineNodes(nodes) {
15105
15105
  throw new Error("getLineNodes: Unable to find children");
15106
15106
  }
15107
15107
 
15108
+ //#endregion
15109
+ //#region src/utils/computeVirtualFileMetrics.ts
15110
+ function computeVirtualFileMetrics(metrics) {
15111
+ return {
15112
+ ...DEFAULT_VIRTUAL_FILE_METRICS,
15113
+ ...metrics
15114
+ };
15115
+ }
15116
+ function getVirtualFileHeaderRegion(metrics, disableFileHeader) {
15117
+ const paddingTop = getVirtualFilePaddingTop(metrics, disableFileHeader);
15118
+ return disableFileHeader ? paddingTop : metrics.diffHeaderHeight + paddingTop;
15119
+ }
15120
+ function getVirtualFilePaddingTop(metrics, disableFileHeader) {
15121
+ return metrics.paddingTop ?? (disableFileHeader ? metrics.spacing : 0);
15122
+ }
15123
+ function getVirtualFilePaddingBottom(metrics) {
15124
+ return metrics.paddingBottom ?? metrics.spacing;
15125
+ }
15126
+ function getDefaultHunkSeparatorHeight(type) {
15127
+ switch (type) {
15128
+ case "simple": return 4;
15129
+ case "metadata":
15130
+ case "line-info":
15131
+ case "line-info-basic":
15132
+ case "custom": return 32;
15133
+ }
15134
+ }
15135
+
15136
+ //#endregion
15137
+ //#region src/utils/virtualDiffLayout.ts
15138
+ function getExpandedRegion({ isPartial, rangeSize, expandedHunks, hunkIndex, collapsedContextThreshold }) {
15139
+ const normalizedRangeSize = Math.max(rangeSize, 0);
15140
+ if (normalizedRangeSize === 0 || isPartial) {
15141
+ return {
15142
+ fromStart: 0,
15143
+ fromEnd: 0,
15144
+ rangeSize: normalizedRangeSize,
15145
+ collapsedLines: normalizedRangeSize,
15146
+ renderAll: false
15147
+ };
15148
+ }
15149
+ if (expandedHunks === true || normalizedRangeSize <= collapsedContextThreshold) {
15150
+ return {
15151
+ fromStart: normalizedRangeSize,
15152
+ fromEnd: 0,
15153
+ rangeSize: normalizedRangeSize,
15154
+ collapsedLines: 0,
15155
+ renderAll: true
15156
+ };
15157
+ }
15158
+ const region = expandedHunks?.get(hunkIndex);
15159
+ const fromStart = Math.min(Math.max(region?.fromStart ?? 0, 0), normalizedRangeSize);
15160
+ const fromEnd = Math.min(Math.max(region?.fromEnd ?? 0, 0), normalizedRangeSize);
15161
+ const expandedCount = fromStart + fromEnd;
15162
+ const renderAll = expandedCount >= normalizedRangeSize;
15163
+ return {
15164
+ fromStart: renderAll ? normalizedRangeSize : fromStart,
15165
+ fromEnd: renderAll ? 0 : fromEnd,
15166
+ rangeSize: normalizedRangeSize,
15167
+ collapsedLines: Math.max(normalizedRangeSize - expandedCount, 0),
15168
+ renderAll
15169
+ };
15170
+ }
15171
+ function getHunkSeparatorHeight({ type, metrics }) {
15172
+ return metrics.hunkSeparatorHeight ?? getDefaultHunkSeparatorHeight(type);
15173
+ }
15174
+ function getHunkSeparatorGap({ type, metrics }) {
15175
+ return type === "simple" || type === "metadata" || type === "line-info-basic" ? 0 : metrics.spacing;
15176
+ }
15177
+ function hasLeadingHunkSeparator({ type, hunkIndex, hunkSpecs }) {
15178
+ switch (type) {
15179
+ case "simple": return hunkIndex > 0;
15180
+ case "metadata": return hunkSpecs != null;
15181
+ case "line-info":
15182
+ case "line-info-basic":
15183
+ case "custom": return true;
15184
+ }
15185
+ }
15186
+ function hasTrailingHunkSeparator(type) {
15187
+ return type !== "simple" && type !== "metadata";
15188
+ }
15189
+ function getLeadingHunkSeparatorLayout({ type, metrics, hunkIndex, hunkSpecs }) {
15190
+ if (!hasLeadingHunkSeparator({
15191
+ type,
15192
+ hunkIndex,
15193
+ hunkSpecs
15194
+ })) {
15195
+ return undefined;
15196
+ }
15197
+ const height = getHunkSeparatorHeight({
15198
+ type,
15199
+ metrics
15200
+ });
15201
+ const gap = getHunkSeparatorGap({
15202
+ type,
15203
+ metrics
15204
+ });
15205
+ const gapBefore = hunkIndex > 0 ? gap : 0;
15206
+ const gapAfter = gap;
15207
+ return {
15208
+ height,
15209
+ gapBefore,
15210
+ gapAfter,
15211
+ totalHeight: gapBefore + height + gapAfter
15212
+ };
15213
+ }
15214
+ function getTrailingHunkSeparatorLayout({ type, metrics }) {
15215
+ if (!hasTrailingHunkSeparator(type)) {
15216
+ return undefined;
15217
+ }
15218
+ const height = getHunkSeparatorHeight({
15219
+ type,
15220
+ metrics
15221
+ });
15222
+ const gapBefore = getHunkSeparatorGap({
15223
+ type,
15224
+ metrics
15225
+ });
15226
+ return {
15227
+ height,
15228
+ gapBefore,
15229
+ gapAfter: 0,
15230
+ totalHeight: gapBefore + height
15231
+ };
15232
+ }
15233
+
15108
15234
  //#endregion
15109
15235
  //#region src/utils/iterateOverDiff.ts
15110
15236
  function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infinity, expandedHunks, collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, callback }) {
@@ -15199,7 +15325,13 @@ function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infin
15199
15325
  if (state.shouldBreak()) {
15200
15326
  break;
15201
15327
  }
15202
- const leadingRegion = getExpandedRegion(diff.isPartial, hunk.collapsedBefore, expandedHunks, hunkIndex, collapsedContextThreshold);
15328
+ const leadingRegion = getExpandedRegion({
15329
+ isPartial: diff.isPartial,
15330
+ rangeSize: hunk.collapsedBefore,
15331
+ expandedHunks,
15332
+ hunkIndex,
15333
+ collapsedContextThreshold
15334
+ });
15203
15335
  const trailingRegion = (() => {
15204
15336
  if (hunk !== state.finalHunk || !hasFinalCollapsedHunk(diff)) {
15205
15337
  return undefined;
@@ -15210,7 +15342,13 @@ function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infin
15210
15342
  throw new Error(`iterateOverDiff: trailing context mismatch (additions=${additionRemaining}, deletions=${deletionRemaining}) for ${diff.name}`);
15211
15343
  }
15212
15344
  const trailingRangeSize = Math.min(additionRemaining, deletionRemaining);
15213
- return getExpandedRegion(diff.isPartial, trailingRangeSize, expandedHunks, diff.hunks.length, collapsedContextThreshold);
15345
+ return getExpandedRegion({
15346
+ isPartial: diff.isPartial,
15347
+ rangeSize: trailingRangeSize,
15348
+ expandedHunks,
15349
+ hunkIndex: diff.hunks.length,
15350
+ collapsedContextThreshold
15351
+ });
15214
15352
  })();
15215
15353
  const expandedLineCount = leadingRegion.fromStart + leadingRegion.fromEnd;
15216
15354
  function getTrailingCollapsedAfter(unifiedLineIndex$1, splitLineIndex$1) {
@@ -15548,13 +15686,25 @@ function getHunkPrefixCounts({ diff, expandedHunks, collapsedContextThreshold })
15548
15686
  if (hunk == null) {
15549
15687
  throw new Error("iterateOverDiff: invalid hunk summary index");
15550
15688
  }
15551
- const leadingRegion = getExpandedRegion(diff.isPartial, hunk.collapsedBefore, expandedHunks, index, collapsedContextThreshold);
15689
+ const leadingRegion = getExpandedRegion({
15690
+ isPartial: diff.isPartial,
15691
+ rangeSize: hunk.collapsedBefore,
15692
+ expandedHunks,
15693
+ hunkIndex: index,
15694
+ collapsedContextThreshold
15695
+ });
15552
15696
  const leadingCount = leadingRegion.fromStart + leadingRegion.fromEnd;
15553
15697
  splitCount += leadingCount + hunk.splitLineCount;
15554
15698
  unifiedCount += leadingCount + hunk.unifiedLineCount;
15555
15699
  if (index === finalHunkIndex && hasFinalCollapsedHunk(diff)) {
15556
15700
  const trailingRangeSize = getTrailingRangeSize(diff, hunk);
15557
- const trailingRegion = getExpandedRegion(diff.isPartial, trailingRangeSize, expandedHunks, diff.hunks.length, collapsedContextThreshold);
15701
+ const trailingRegion = getExpandedRegion({
15702
+ isPartial: diff.isPartial,
15703
+ rangeSize: trailingRangeSize,
15704
+ expandedHunks,
15705
+ hunkIndex: diff.hunks.length,
15706
+ collapsedContextThreshold
15707
+ });
15558
15708
  const trailingCount = trailingRegion.fromStart + trailingRegion.fromEnd;
15559
15709
  splitCount += trailingCount;
15560
15710
  unifiedCount += trailingCount;
@@ -15604,36 +15754,6 @@ function getTrailingRangeSize(diff, hunk) {
15604
15754
  }
15605
15755
  return Math.min(additionRemaining, deletionRemaining);
15606
15756
  }
15607
- function getExpandedRegion(isPartial, rangeSize, expandedHunks, hunkIndex, collapsedContextThreshold) {
15608
- rangeSize = Math.max(rangeSize, 0);
15609
- if (rangeSize === 0 || isPartial) {
15610
- return {
15611
- fromStart: 0,
15612
- fromEnd: 0,
15613
- rangeSize,
15614
- collapsedLines: Math.max(rangeSize, 0)
15615
- };
15616
- }
15617
- if (expandedHunks === true || rangeSize <= collapsedContextThreshold) {
15618
- return {
15619
- fromStart: rangeSize,
15620
- fromEnd: 0,
15621
- rangeSize,
15622
- collapsedLines: 0
15623
- };
15624
- }
15625
- const region = expandedHunks?.get(hunkIndex);
15626
- const fromStart = Math.min(Math.max(region?.fromStart ?? 0, 0), rangeSize);
15627
- const fromEnd = Math.min(Math.max(region?.fromEnd ?? 0, 0), rangeSize);
15628
- const expandedCount = fromStart + fromEnd;
15629
- const renderAll = expandedCount >= rangeSize;
15630
- return {
15631
- fromStart: renderAll ? rangeSize : fromStart,
15632
- fromEnd: renderAll ? 0 : fromEnd,
15633
- rangeSize,
15634
- collapsedLines: Math.max(rangeSize - expandedCount, 0)
15635
- };
15636
- }
15637
15757
  function hasFinalCollapsedHunk(diff) {
15638
15758
  const lastHunk = diff.hunks.at(-1);
15639
15759
  if (lastHunk == null || diff.isPartial || diff.additionLines.length === 0 || diff.deletionLines.length === 0) {