@pierre/diffs 1.2.1 → 1.2.3

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 (67) 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 +2 -0
  6. package/dist/components/File.d.ts.map +1 -1
  7. package/dist/components/File.js +13 -9
  8. package/dist/components/File.js.map +1 -1
  9. package/dist/components/FileDiff.d.ts +2 -0
  10. package/dist/components/FileDiff.d.ts.map +1 -1
  11. package/dist/components/FileDiff.js +12 -6
  12. package/dist/components/FileDiff.js.map +1 -1
  13. package/dist/components/UnresolvedFile.d.ts.map +1 -1
  14. package/dist/components/VirtualizedFile.d.ts +4 -2
  15. package/dist/components/VirtualizedFile.d.ts.map +1 -1
  16. package/dist/components/VirtualizedFile.js +23 -6
  17. package/dist/components/VirtualizedFile.js.map +1 -1
  18. package/dist/components/VirtualizedFileDiff.d.ts +9 -8
  19. package/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
  20. package/dist/components/VirtualizedFileDiff.js +329 -142
  21. package/dist/components/VirtualizedFileDiff.js.map +1 -1
  22. package/dist/constants.d.ts.map +1 -1
  23. package/dist/index.d.ts +2 -2
  24. package/dist/index.js +3 -3
  25. package/dist/react/index.d.ts +2 -2
  26. package/dist/renderers/DiffHunksRenderer.d.ts +1 -0
  27. package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
  28. package/dist/renderers/DiffHunksRenderer.js +19 -9
  29. package/dist/renderers/DiffHunksRenderer.js.map +1 -1
  30. package/dist/renderers/FileRenderer.d.ts +1 -0
  31. package/dist/renderers/FileRenderer.d.ts.map +1 -1
  32. package/dist/renderers/FileRenderer.js +12 -6
  33. package/dist/renderers/FileRenderer.js.map +1 -1
  34. package/dist/ssr/index.d.ts +2 -2
  35. package/dist/types.d.ts +7 -1
  36. package/dist/types.d.ts.map +1 -1
  37. package/dist/utils/computeEstimatedDiffHeights.d.ts +28 -0
  38. package/dist/utils/computeEstimatedDiffHeights.d.ts.map +1 -0
  39. package/dist/utils/computeEstimatedDiffHeights.js +111 -0
  40. package/dist/utils/computeEstimatedDiffHeights.js.map +1 -0
  41. package/dist/utils/getDiffHunksRendererOptions.d.ts +8 -0
  42. package/dist/utils/getDiffHunksRendererOptions.d.ts.map +1 -0
  43. package/dist/utils/getDiffHunksRendererOptions.js +31 -0
  44. package/dist/utils/getDiffHunksRendererOptions.js.map +1 -0
  45. package/dist/utils/getFileRendererOptions.d.ts +8 -0
  46. package/dist/utils/getFileRendererOptions.d.ts.map +1 -0
  47. package/dist/utils/getFileRendererOptions.js +24 -0
  48. package/dist/utils/getFileRendererOptions.js.map +1 -0
  49. package/dist/utils/iterateOverDiff.js +29 -30
  50. package/dist/utils/iterateOverDiff.js.map +1 -1
  51. package/dist/utils/parsePatchFiles.js +8 -1
  52. package/dist/utils/parsePatchFiles.js.map +1 -1
  53. package/dist/utils/virtualDiffLayout.d.ts +65 -0
  54. package/dist/utils/virtualDiffLayout.d.ts.map +1 -0
  55. package/dist/utils/virtualDiffLayout.js +94 -0
  56. package/dist/utils/virtualDiffLayout.js.map +1 -0
  57. package/dist/worker/WorkerPoolManager.d.ts +4 -1
  58. package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
  59. package/dist/worker/WorkerPoolManager.js +49 -24
  60. package/dist/worker/WorkerPoolManager.js.map +1 -1
  61. package/dist/worker/types.d.ts +2 -0
  62. package/dist/worker/types.d.ts.map +1 -1
  63. package/dist/worker/worker-portable.js +163 -40
  64. package/dist/worker/worker-portable.js.map +1 -1
  65. package/dist/worker/worker.js +60 -30
  66. package/dist/worker/worker.js.map +1 -1
  67. 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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"}
@@ -9270,7 +9270,7 @@ function l(a$1) {
9270
9270
  }
9271
9271
 
9272
9272
  //#endregion
9273
- //#region ../../node_modules/.bun/regex@6.0.1/node_modules/regex/src/utils-internals.js
9273
+ //#region ../../node_modules/.bun/regex@6.1.0/node_modules/regex/src/utils-internals.js
9274
9274
  const noncapturingDelim = String.raw`\(\?(?:[:=!>A-Za-z\-]|<[=!]|\(DEFINE\))`;
9275
9275
  /**
9276
9276
  Updates the array in place by incrementing each value greater than or equal to the threshold.
@@ -9458,13 +9458,16 @@ function getGroupContents(expression, contentsStartPos) {
9458
9458
  }
9459
9459
 
9460
9460
  //#endregion
9461
- //#region ../../node_modules/.bun/regex@6.0.1/node_modules/regex/src/atomic.js
9461
+ //#region ../../node_modules/.bun/regex@6.1.0/node_modules/regex/src/atomic.js
9462
+ /**
9463
+ @import {PluginData, PluginResult} from './regex.js';
9464
+ */
9462
9465
  const atomicPluginToken = new RegExp(String.raw`(?<noncapturingStart>${noncapturingDelim})|(?<capturingStart>\((?:\?<[^>]+>)?)|\\?.`, "gsu");
9463
9466
  /**
9464
9467
  Apply transformations for atomic groups: `(?>…)`.
9465
9468
  @param {string} expression
9466
- @param {import('./regex.js').PluginData} [data]
9467
- @returns {Required<import('./regex.js').PluginResult>}
9469
+ @param {PluginData} [data]
9470
+ @returns {Required<PluginResult>}
9468
9471
  */
9469
9472
  function atomic(expression, data) {
9470
9473
  const hiddenCaptures = data?.hiddenCaptures ?? [];
@@ -9572,7 +9575,7 @@ Transform posessive quantifiers into atomic groups. The posessessive quantifiers
9572
9575
  This follows Java, PCRE, Perl, and Python.
9573
9576
  Possessive quantifiers in Oniguruma and Onigmo are only: `?+`, `*+`, `++`.
9574
9577
  @param {string} expression
9575
- @returns {import('./regex.js').PluginResult}
9578
+ @returns {PluginResult}
9576
9579
  */
9577
9580
  function possessive(expression) {
9578
9581
  if (!new RegExp(`${baseQuantifier}\\+`).test(expression)) {
@@ -9631,7 +9634,7 @@ function possessive(expression) {
9631
9634
  }
9632
9635
 
9633
9636
  //#endregion
9634
- //#region ../../node_modules/.bun/regex@6.0.1/node_modules/regex/src/subclass.js
9637
+ //#region ../../node_modules/.bun/regex@6.1.0/node_modules/regex/src/subclass.js
9635
9638
  /**
9636
9639
  Works the same as JavaScript's native `RegExp` constructor in all contexts, but automatically
9637
9640
  adjusts subpattern matches and indices (with flag `d`) to account for captures added as part of
@@ -15105,6 +15108,132 @@ function getLineNodes(nodes) {
15105
15108
  throw new Error("getLineNodes: Unable to find children");
15106
15109
  }
15107
15110
 
15111
+ //#endregion
15112
+ //#region src/utils/computeVirtualFileMetrics.ts
15113
+ function computeVirtualFileMetrics(metrics) {
15114
+ return {
15115
+ ...DEFAULT_VIRTUAL_FILE_METRICS,
15116
+ ...metrics
15117
+ };
15118
+ }
15119
+ function getVirtualFileHeaderRegion(metrics, disableFileHeader) {
15120
+ const paddingTop = getVirtualFilePaddingTop(metrics, disableFileHeader);
15121
+ return disableFileHeader ? paddingTop : metrics.diffHeaderHeight + paddingTop;
15122
+ }
15123
+ function getVirtualFilePaddingTop(metrics, disableFileHeader) {
15124
+ return metrics.paddingTop ?? (disableFileHeader ? metrics.spacing : 0);
15125
+ }
15126
+ function getVirtualFilePaddingBottom(metrics) {
15127
+ return metrics.paddingBottom ?? metrics.spacing;
15128
+ }
15129
+ function getDefaultHunkSeparatorHeight(type) {
15130
+ switch (type) {
15131
+ case "simple": return 4;
15132
+ case "metadata":
15133
+ case "line-info":
15134
+ case "line-info-basic":
15135
+ case "custom": return 32;
15136
+ }
15137
+ }
15138
+
15139
+ //#endregion
15140
+ //#region src/utils/virtualDiffLayout.ts
15141
+ function getExpandedRegion({ isPartial, rangeSize, expandedHunks, hunkIndex, collapsedContextThreshold }) {
15142
+ const normalizedRangeSize = Math.max(rangeSize, 0);
15143
+ if (normalizedRangeSize === 0 || isPartial) {
15144
+ return {
15145
+ fromStart: 0,
15146
+ fromEnd: 0,
15147
+ rangeSize: normalizedRangeSize,
15148
+ collapsedLines: normalizedRangeSize,
15149
+ renderAll: false
15150
+ };
15151
+ }
15152
+ if (expandedHunks === true || normalizedRangeSize <= collapsedContextThreshold) {
15153
+ return {
15154
+ fromStart: normalizedRangeSize,
15155
+ fromEnd: 0,
15156
+ rangeSize: normalizedRangeSize,
15157
+ collapsedLines: 0,
15158
+ renderAll: true
15159
+ };
15160
+ }
15161
+ const region = expandedHunks?.get(hunkIndex);
15162
+ const fromStart = Math.min(Math.max(region?.fromStart ?? 0, 0), normalizedRangeSize);
15163
+ const fromEnd = Math.min(Math.max(region?.fromEnd ?? 0, 0), normalizedRangeSize);
15164
+ const expandedCount = fromStart + fromEnd;
15165
+ const renderAll = expandedCount >= normalizedRangeSize;
15166
+ return {
15167
+ fromStart: renderAll ? normalizedRangeSize : fromStart,
15168
+ fromEnd: renderAll ? 0 : fromEnd,
15169
+ rangeSize: normalizedRangeSize,
15170
+ collapsedLines: Math.max(normalizedRangeSize - expandedCount, 0),
15171
+ renderAll
15172
+ };
15173
+ }
15174
+ function getHunkSeparatorHeight({ type, metrics }) {
15175
+ return metrics.hunkSeparatorHeight ?? getDefaultHunkSeparatorHeight(type);
15176
+ }
15177
+ function getHunkSeparatorGap({ type, metrics }) {
15178
+ return type === "simple" || type === "metadata" || type === "line-info-basic" ? 0 : metrics.spacing;
15179
+ }
15180
+ function hasLeadingHunkSeparator({ type, hunkIndex, hunkSpecs }) {
15181
+ switch (type) {
15182
+ case "simple": return hunkIndex > 0;
15183
+ case "metadata": return hunkSpecs != null;
15184
+ case "line-info":
15185
+ case "line-info-basic":
15186
+ case "custom": return true;
15187
+ }
15188
+ }
15189
+ function hasTrailingHunkSeparator(type) {
15190
+ return type !== "simple" && type !== "metadata";
15191
+ }
15192
+ function getLeadingHunkSeparatorLayout({ type, metrics, hunkIndex, hunkSpecs }) {
15193
+ if (!hasLeadingHunkSeparator({
15194
+ type,
15195
+ hunkIndex,
15196
+ hunkSpecs
15197
+ })) {
15198
+ return undefined;
15199
+ }
15200
+ const height = getHunkSeparatorHeight({
15201
+ type,
15202
+ metrics
15203
+ });
15204
+ const gap = getHunkSeparatorGap({
15205
+ type,
15206
+ metrics
15207
+ });
15208
+ const gapBefore = hunkIndex > 0 ? gap : 0;
15209
+ const gapAfter = gap;
15210
+ return {
15211
+ height,
15212
+ gapBefore,
15213
+ gapAfter,
15214
+ totalHeight: gapBefore + height + gapAfter
15215
+ };
15216
+ }
15217
+ function getTrailingHunkSeparatorLayout({ type, metrics }) {
15218
+ if (!hasTrailingHunkSeparator(type)) {
15219
+ return undefined;
15220
+ }
15221
+ const height = getHunkSeparatorHeight({
15222
+ type,
15223
+ metrics
15224
+ });
15225
+ const gapBefore = getHunkSeparatorGap({
15226
+ type,
15227
+ metrics
15228
+ });
15229
+ return {
15230
+ height,
15231
+ gapBefore,
15232
+ gapAfter: 0,
15233
+ totalHeight: gapBefore + height
15234
+ };
15235
+ }
15236
+
15108
15237
  //#endregion
15109
15238
  //#region src/utils/iterateOverDiff.ts
15110
15239
  function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infinity, expandedHunks, collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD, callback }) {
@@ -15199,7 +15328,13 @@ function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infin
15199
15328
  if (state.shouldBreak()) {
15200
15329
  break;
15201
15330
  }
15202
- const leadingRegion = getExpandedRegion(diff.isPartial, hunk.collapsedBefore, expandedHunks, hunkIndex, collapsedContextThreshold);
15331
+ const leadingRegion = getExpandedRegion({
15332
+ isPartial: diff.isPartial,
15333
+ rangeSize: hunk.collapsedBefore,
15334
+ expandedHunks,
15335
+ hunkIndex,
15336
+ collapsedContextThreshold
15337
+ });
15203
15338
  const trailingRegion = (() => {
15204
15339
  if (hunk !== state.finalHunk || !hasFinalCollapsedHunk(diff)) {
15205
15340
  return undefined;
@@ -15210,7 +15345,13 @@ function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infin
15210
15345
  throw new Error(`iterateOverDiff: trailing context mismatch (additions=${additionRemaining}, deletions=${deletionRemaining}) for ${diff.name}`);
15211
15346
  }
15212
15347
  const trailingRangeSize = Math.min(additionRemaining, deletionRemaining);
15213
- return getExpandedRegion(diff.isPartial, trailingRangeSize, expandedHunks, diff.hunks.length, collapsedContextThreshold);
15348
+ return getExpandedRegion({
15349
+ isPartial: diff.isPartial,
15350
+ rangeSize: trailingRangeSize,
15351
+ expandedHunks,
15352
+ hunkIndex: diff.hunks.length,
15353
+ collapsedContextThreshold
15354
+ });
15214
15355
  })();
15215
15356
  const expandedLineCount = leadingRegion.fromStart + leadingRegion.fromEnd;
15216
15357
  function getTrailingCollapsedAfter(unifiedLineIndex$1, splitLineIndex$1) {
@@ -15548,13 +15689,25 @@ function getHunkPrefixCounts({ diff, expandedHunks, collapsedContextThreshold })
15548
15689
  if (hunk == null) {
15549
15690
  throw new Error("iterateOverDiff: invalid hunk summary index");
15550
15691
  }
15551
- const leadingRegion = getExpandedRegion(diff.isPartial, hunk.collapsedBefore, expandedHunks, index, collapsedContextThreshold);
15692
+ const leadingRegion = getExpandedRegion({
15693
+ isPartial: diff.isPartial,
15694
+ rangeSize: hunk.collapsedBefore,
15695
+ expandedHunks,
15696
+ hunkIndex: index,
15697
+ collapsedContextThreshold
15698
+ });
15552
15699
  const leadingCount = leadingRegion.fromStart + leadingRegion.fromEnd;
15553
15700
  splitCount += leadingCount + hunk.splitLineCount;
15554
15701
  unifiedCount += leadingCount + hunk.unifiedLineCount;
15555
15702
  if (index === finalHunkIndex && hasFinalCollapsedHunk(diff)) {
15556
15703
  const trailingRangeSize = getTrailingRangeSize(diff, hunk);
15557
- const trailingRegion = getExpandedRegion(diff.isPartial, trailingRangeSize, expandedHunks, diff.hunks.length, collapsedContextThreshold);
15704
+ const trailingRegion = getExpandedRegion({
15705
+ isPartial: diff.isPartial,
15706
+ rangeSize: trailingRangeSize,
15707
+ expandedHunks,
15708
+ hunkIndex: diff.hunks.length,
15709
+ collapsedContextThreshold
15710
+ });
15558
15711
  const trailingCount = trailingRegion.fromStart + trailingRegion.fromEnd;
15559
15712
  splitCount += trailingCount;
15560
15713
  unifiedCount += trailingCount;
@@ -15604,36 +15757,6 @@ function getTrailingRangeSize(diff, hunk) {
15604
15757
  }
15605
15758
  return Math.min(additionRemaining, deletionRemaining);
15606
15759
  }
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
15760
  function hasFinalCollapsedHunk(diff) {
15638
15761
  const lastHunk = diff.hunks.at(-1);
15639
15762
  if (lastHunk == null || diff.isPartial || diff.additionLines.length === 0 || diff.deletionLines.length === 0) {