@pierre/diffs 1.1.0-beta.15 → 1.1.0-beta.17

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 (105) hide show
  1. package/dist/components/AdvancedVirtualizedFileDiff.js +2 -7
  2. package/dist/components/AdvancedVirtualizedFileDiff.js.map +1 -1
  3. package/dist/components/File.d.ts +14 -2
  4. package/dist/components/File.d.ts.map +1 -1
  5. package/dist/components/File.js +89 -23
  6. package/dist/components/File.js.map +1 -1
  7. package/dist/components/FileDiff.d.ts +15 -3
  8. package/dist/components/FileDiff.d.ts.map +1 -1
  9. package/dist/components/FileDiff.js +101 -23
  10. package/dist/components/FileDiff.js.map +1 -1
  11. package/dist/components/VirtualizedFile.js +4 -2
  12. package/dist/components/VirtualizedFile.js.map +1 -1
  13. package/dist/components/VirtualizedFileDiff.js +4 -2
  14. package/dist/components/VirtualizedFileDiff.js.map +1 -1
  15. package/dist/components/Virtualizer.js +2 -1
  16. package/dist/components/Virtualizer.js.map +1 -1
  17. package/dist/components/VirtulizerDevelopment.d.ts.map +1 -1
  18. package/dist/constants.d.ts +3 -1
  19. package/dist/constants.d.ts.map +1 -1
  20. package/dist/constants.js +8 -1
  21. package/dist/constants.js.map +1 -1
  22. package/dist/highlighter/shared_highlighter.js +12 -4
  23. package/dist/highlighter/shared_highlighter.js.map +1 -1
  24. package/dist/index.d.ts +5 -4
  25. package/dist/index.js +5 -4
  26. package/dist/managers/MouseEventManager.d.ts +20 -5
  27. package/dist/managers/MouseEventManager.d.ts.map +1 -1
  28. package/dist/managers/MouseEventManager.js +91 -25
  29. package/dist/managers/MouseEventManager.js.map +1 -1
  30. package/dist/react/File.d.ts +2 -0
  31. package/dist/react/File.d.ts.map +1 -1
  32. package/dist/react/File.js +3 -1
  33. package/dist/react/File.js.map +1 -1
  34. package/dist/react/FileDiff.d.ts +2 -0
  35. package/dist/react/FileDiff.d.ts.map +1 -1
  36. package/dist/react/FileDiff.js +3 -1
  37. package/dist/react/FileDiff.js.map +1 -1
  38. package/dist/react/MultiFileDiff.d.ts +2 -0
  39. package/dist/react/MultiFileDiff.d.ts.map +1 -1
  40. package/dist/react/MultiFileDiff.js +3 -1
  41. package/dist/react/MultiFileDiff.js.map +1 -1
  42. package/dist/react/PatchDiff.d.ts +2 -0
  43. package/dist/react/PatchDiff.d.ts.map +1 -1
  44. package/dist/react/PatchDiff.js +3 -1
  45. package/dist/react/PatchDiff.js.map +1 -1
  46. package/dist/react/constants.d.ts +2 -2
  47. package/dist/react/constants.d.ts.map +1 -1
  48. package/dist/react/constants.js +2 -2
  49. package/dist/react/constants.js.map +1 -1
  50. package/dist/react/index.d.ts +3 -3
  51. package/dist/react/index.js +2 -2
  52. package/dist/react/jsx.d.ts +1 -0
  53. package/dist/react/jsx.d.ts.map +1 -1
  54. package/dist/react/types.d.ts +10 -0
  55. package/dist/react/types.d.ts.map +1 -1
  56. package/dist/react/types.js +1 -0
  57. package/dist/react/utils/renderDiffChildren.d.ts +4 -0
  58. package/dist/react/utils/renderDiffChildren.d.ts.map +1 -1
  59. package/dist/react/utils/renderDiffChildren.js +17 -7
  60. package/dist/react/utils/renderDiffChildren.js.map +1 -1
  61. package/dist/react/utils/renderFileChildren.d.ts +4 -0
  62. package/dist/react/utils/renderFileChildren.d.ts.map +1 -1
  63. package/dist/react/utils/renderFileChildren.js +13 -7
  64. package/dist/react/utils/renderFileChildren.js.map +1 -1
  65. package/dist/renderers/DiffHunksRenderer.js +3 -2
  66. package/dist/renderers/DiffHunksRenderer.js.map +1 -1
  67. package/dist/renderers/FileRenderer.js +1 -1
  68. package/dist/sprite.d.ts +2 -2
  69. package/dist/sprite.d.ts.map +1 -1
  70. package/dist/sprite.js +3 -0
  71. package/dist/sprite.js.map +1 -1
  72. package/dist/ssr/index.d.ts +2 -2
  73. package/dist/style.js +1 -1
  74. package/dist/style.js.map +1 -1
  75. package/dist/types.d.ts +3 -1
  76. package/dist/types.d.ts.map +1 -1
  77. package/dist/utils/createFileHeaderElement.js +5 -2
  78. package/dist/utils/createFileHeaderElement.js.map +1 -1
  79. package/dist/utils/createGutterUtilityContentNode.d.ts +5 -0
  80. package/dist/utils/createGutterUtilityContentNode.d.ts.map +1 -0
  81. package/dist/utils/createGutterUtilityContentNode.js +15 -0
  82. package/dist/utils/createGutterUtilityContentNode.js.map +1 -0
  83. package/dist/utils/createGutterUtilityElement.d.ts +7 -0
  84. package/dist/utils/createGutterUtilityElement.d.ts.map +1 -0
  85. package/dist/utils/createGutterUtilityElement.js +20 -0
  86. package/dist/utils/createGutterUtilityElement.js.map +1 -0
  87. package/dist/utils/hast_utils.d.ts +1 -1
  88. package/dist/utils/hast_utils.d.ts.map +1 -1
  89. package/dist/utils/hast_utils.js.map +1 -1
  90. package/dist/worker/WorkerPoolManager.d.ts +1 -1
  91. package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
  92. package/dist/worker/WorkerPoolManager.js +8 -6
  93. package/dist/worker/WorkerPoolManager.js.map +1 -1
  94. package/dist/worker/worker-portable.js +7 -0
  95. package/dist/worker/worker-portable.js.map +1 -1
  96. package/dist/worker/worker.js.map +1 -1
  97. package/package.json +2 -1
  98. package/dist/themes/pierre-dark.js +0 -1328
  99. package/dist/themes/pierre-dark.js.map +0 -1
  100. package/dist/themes/pierre-light.js +0 -1328
  101. package/dist/themes/pierre-light.js.map +0 -1
  102. package/dist/utils/createHoverContentNode.d.ts +0 -5
  103. package/dist/utils/createHoverContentNode.d.ts.map +0 -1
  104. package/dist/utils/createHoverContentNode.js +0 -15
  105. package/dist/utils/createHoverContentNode.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { AnnotationSide, BaseDiffOptions, DiffLineAnnotation, ExpansionDirections, FileContents, FileDiffMetadata, HunkData, HunkSeparators, PrePropertiesConfig, RenderHeaderMetadataCallback, RenderRange, ThemeTypes } from "../types.js";
1
+ import { AnnotationSide, BaseDiffOptions, DiffLineAnnotation, ExpansionDirections, FileContents, FileDiffMetadata, HunkData, HunkSeparators, PrePropertiesConfig, RenderHeaderMetadataCallback, RenderHeaderPrefixCallback, RenderRange, ThemeTypes } from "../types.js";
2
2
  import { WorkerPoolManager } from "../worker/WorkerPoolManager.js";
3
3
  import "../worker/index.js";
4
4
  import { GetLineIndexUtility, LineSelectionManager, LineSelectionOptions, SelectedLineRange } from "../managers/LineSelectionManager.js";
@@ -29,6 +29,11 @@ interface FileDiffOptions<LAnnotation> extends Omit<BaseDiffOptions, 'hunkSepara
29
29
  * removed in a future version.
30
30
  */ | ((hunk: HunkData, instance: FileDiff<LAnnotation>) => HTMLElement | DocumentFragment);
31
31
  disableFileHeader?: boolean;
32
+ /**
33
+ * @deprecated Use `enableGutterUtility` instead.
34
+ */
35
+ enableHoverUtility?: boolean;
36
+ renderHeaderPrefix?: RenderHeaderPrefixCallback;
32
37
  renderHeaderMetadata?: RenderHeaderMetadataCallback;
33
38
  /**
34
39
  * When true, errors during rendering are rethrown instead of being caught
@@ -37,6 +42,10 @@ interface FileDiffOptions<LAnnotation> extends Omit<BaseDiffOptions, 'hunkSepara
37
42
  */
38
43
  disableErrorHandling?: boolean;
39
44
  renderAnnotation?(annotation: DiffLineAnnotation<LAnnotation>): HTMLElement | undefined;
45
+ renderGutterUtility?(getHoveredRow: () => GetHoveredLineResult<'diff'> | undefined): HTMLElement | null;
46
+ /**
47
+ * @deprecated Use `renderGutterUtility` instead.
48
+ */
40
49
  renderHoverUtility?(getHoveredRow: () => GetHoveredLineResult<'diff'> | undefined): HTMLElement | null;
41
50
  }
42
51
  interface AnnotationElementCache<LAnnotation> {
@@ -62,8 +71,9 @@ declare class FileDiff<LAnnotation = undefined> {
62
71
  protected bufferBefore: HTMLElement | undefined;
63
72
  protected bufferAfter: HTMLElement | undefined;
64
73
  protected unsafeCSSStyle: HTMLStyleElement | undefined;
65
- protected hoverContent: HTMLElement | undefined;
74
+ protected gutterUtilityContent: HTMLElement | undefined;
66
75
  protected headerElement: HTMLElement | undefined;
76
+ protected headerPrefix: HTMLElement | undefined;
67
77
  protected headerMetadata: HTMLElement | undefined;
68
78
  protected separatorCache: Map<string, CustomHunkElementCache>;
69
79
  protected errorWrapper: HTMLElement | undefined;
@@ -112,11 +122,13 @@ declare class FileDiff<LAnnotation = undefined> {
112
122
  containerWrapper,
113
123
  renderRange
114
124
  }: FileDiffRenderProps<LAnnotation>): boolean;
125
+ private removeRenderedCode;
126
+ private clearAuxiliaryNodes;
115
127
  renderPlaceholder(height: number): boolean;
116
128
  private cleanChildNodes;
117
129
  private renderSeparators;
118
130
  private renderAnnotations;
119
- private renderHoverUtility;
131
+ private renderGutterUtility;
120
132
  protected getOrCreateFileContainer(fileContainer?: HTMLElement, parentNode?: HTMLElement): HTMLElement;
121
133
  protected getFileContainer(): HTMLElement | undefined;
122
134
  private getOrCreatePreNode;
@@ -1 +1 @@
1
- {"version":3,"file":"FileDiff.d.ts","names":["GetLineIndexUtility","LineSelectionManager","LineSelectionOptions","SelectedLineRange","GetHoveredLineResult","MouseEventManager","MouseEventManagerBaseOptions","ResizeManager","ScrollSyncManager","DiffHunksRenderer","BaseDiffOptions","DiffLineAnnotation","ExpansionDirections","FileContents","FileDiffMetadata","HunkData","HunkSeparators","PrePropertiesConfig","RenderHeaderMetadataCallback","RenderRange","ThemeTypes","WorkerPoolManager","FileDiffRenderProps","LAnnotation","HTMLElement","FileDiffHydrationProps","Omit","FileDiffOptions","Exclude","FileDiff","DocumentFragment","AnnotationElementCache","CustomHunkElementCache","SVGElement","HTMLPreElement","HTMLStyleElement","Map","__0","AnnotationSide","oldFile","newFile","fileDiff","forceRender","lineAnnotations","fileContainer","containerWrapper","renderRange"],"sources":["../../src/components/FileDiff.d.ts"],"sourcesContent":["import { type GetLineIndexUtility, LineSelectionManager, type LineSelectionOptions, type SelectedLineRange } from '../managers/LineSelectionManager';\nimport { type GetHoveredLineResult, MouseEventManager, type MouseEventManagerBaseOptions } from '../managers/MouseEventManager';\nimport { ResizeManager } from '../managers/ResizeManager';\nimport { ScrollSyncManager } from '../managers/ScrollSyncManager';\nimport { DiffHunksRenderer } from '../renderers/DiffHunksRenderer';\nimport type { BaseDiffOptions, DiffLineAnnotation, ExpansionDirections, FileContents, FileDiffMetadata, HunkData, HunkSeparators, PrePropertiesConfig, RenderHeaderMetadataCallback, RenderRange, ThemeTypes } from '../types';\nimport type { WorkerPoolManager } from '../worker';\nexport interface FileDiffRenderProps<LAnnotation> {\n fileDiff?: FileDiffMetadata;\n oldFile?: FileContents;\n newFile?: FileContents;\n forceRender?: boolean;\n fileContainer?: HTMLElement;\n containerWrapper?: HTMLElement;\n lineAnnotations?: DiffLineAnnotation<LAnnotation>[];\n renderRange?: RenderRange;\n}\nexport interface FileDiffHydrationProps<LAnnotation> extends Omit<FileDiffRenderProps<LAnnotation>, 'fileContainer'> {\n fileContainer: HTMLElement;\n prerenderedHTML?: string;\n}\nexport interface FileDiffOptions<LAnnotation> extends Omit<BaseDiffOptions, 'hunkSeparators'>, MouseEventManagerBaseOptions<'diff'>, LineSelectionOptions {\n hunkSeparators?: Exclude<HunkSeparators, 'custom'> /**\n * @deprecated Custom hunk separator functions are deprecated and will be\n * removed in a future version.\n */ | ((hunk: HunkData, instance: FileDiff<LAnnotation>) => HTMLElement | DocumentFragment);\n disableFileHeader?: boolean;\n renderHeaderMetadata?: RenderHeaderMetadataCallback;\n /**\n * When true, errors during rendering are rethrown instead of being caught\n * and displayed in the DOM. Useful for testing or when you want to handle\n * errors yourself.\n */\n disableErrorHandling?: boolean;\n renderAnnotation?(annotation: DiffLineAnnotation<LAnnotation>): HTMLElement | undefined;\n renderHoverUtility?(getHoveredRow: () => GetHoveredLineResult<'diff'> | undefined): HTMLElement | null;\n}\ninterface AnnotationElementCache<LAnnotation> {\n element: HTMLElement;\n annotation: DiffLineAnnotation<LAnnotation>;\n}\ninterface CustomHunkElementCache {\n element: HTMLElement;\n hunkData: HunkData;\n}\nexport declare class FileDiff<LAnnotation = undefined> {\n options: FileDiffOptions<LAnnotation>;\n protected workerManager?: WorkerPoolManager | undefined;\n protected isContainerManaged: boolean;\n static LoadedCustomComponent: boolean;\n readonly __id: string;\n protected fileContainer: HTMLElement | undefined;\n protected spriteSVG: SVGElement | undefined;\n protected pre: HTMLPreElement | undefined;\n protected codeUnified: HTMLElement | undefined;\n protected codeDeletions: HTMLElement | undefined;\n protected codeAdditions: HTMLElement | undefined;\n protected bufferBefore: HTMLElement | undefined;\n protected bufferAfter: HTMLElement | undefined;\n protected unsafeCSSStyle: HTMLStyleElement | undefined;\n protected hoverContent: HTMLElement | undefined;\n protected headerElement: HTMLElement | undefined;\n protected headerMetadata: HTMLElement | undefined;\n protected separatorCache: Map<string, CustomHunkElementCache>;\n protected errorWrapper: HTMLElement | undefined;\n protected placeHolder: HTMLElement | undefined;\n protected hunksRenderer: DiffHunksRenderer<LAnnotation>;\n protected resizeManager: ResizeManager;\n protected scrollSyncManager: ScrollSyncManager;\n protected mouseEventManager: MouseEventManager<'diff'>;\n protected lineSelectionManager: LineSelectionManager;\n protected annotationCache: Map<string, AnnotationElementCache<LAnnotation>>;\n protected lineAnnotations: DiffLineAnnotation<LAnnotation>[];\n protected deletionFile: FileContents | undefined;\n protected additionFile: FileContents | undefined;\n protected fileDiff: FileDiffMetadata | undefined;\n protected renderRange: RenderRange | undefined;\n protected appliedPreAttributes: PrePropertiesConfig | undefined;\n protected lastRenderedHeaderHTML: string | undefined;\n protected lastRowCount: number | undefined;\n protected enabled: boolean;\n constructor(options?: FileDiffOptions<LAnnotation>, workerManager?: WorkerPoolManager | undefined, isContainerManaged?: boolean);\n private handleHighlightRender;\n getLineIndex: GetLineIndexUtility;\n setOptions(options: FileDiffOptions<LAnnotation> | undefined): void;\n private mergeOptions;\n setThemeType(themeType: ThemeTypes): void;\n getHoveredLine: () => {\n lineNumber: number;\n side: import(\"..\").AnnotationSide;\n } | undefined;\n setLineAnnotations(lineAnnotations: DiffLineAnnotation<LAnnotation>[]): void;\n private canPartiallyRender;\n setSelectedLines(range: SelectedLineRange | null): void;\n cleanUp(recycle?: boolean): void;\n virtualizedSetup(): void;\n hydrate(props: FileDiffHydrationProps<LAnnotation>): void;\n rerender(): void;\n handleExpandHunk: (hunkIndex: number, direction: ExpansionDirections) => void;\n expandHunk(hunkIndex: number, direction: ExpansionDirections): void;\n render({ oldFile, newFile, fileDiff, forceRender, lineAnnotations, fileContainer, containerWrapper, renderRange }: FileDiffRenderProps<LAnnotation>): boolean;\n renderPlaceholder(height: number): boolean;\n private cleanChildNodes;\n private renderSeparators;\n private renderAnnotations;\n private renderHoverUtility;\n protected getOrCreateFileContainer(fileContainer?: HTMLElement, parentNode?: HTMLElement): HTMLElement;\n protected getFileContainer(): HTMLElement | undefined;\n private getOrCreatePreNode;\n private syncCodeNodesFromPre;\n private applyHeaderToDOM;\n private injectUnsafeCSS;\n private applyHunksToDOM;\n private applyPartialRender;\n private insertPartialHTML;\n private renderPartialColumn;\n private mergeBuffersIfNecessary;\n private applyRowSpan;\n private trimColumnRows;\n private trimColumns;\n private getBufferSize;\n private updateBufferSize;\n private getCodeColumns;\n private applyBuffers;\n private applyPreNodeAttributes;\n private applyErrorToDOM;\n private cleanupErrorWrapper;\n}\nexport {};\n//# sourceMappingURL=FileDiff.d.ts.map"],"mappings":"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"}
1
+ {"version":3,"file":"FileDiff.d.ts","names":["GetLineIndexUtility","LineSelectionManager","LineSelectionOptions","SelectedLineRange","GetHoveredLineResult","MouseEventManager","MouseEventManagerBaseOptions","ResizeManager","ScrollSyncManager","DiffHunksRenderer","BaseDiffOptions","DiffLineAnnotation","ExpansionDirections","FileContents","FileDiffMetadata","HunkData","HunkSeparators","PrePropertiesConfig","RenderHeaderMetadataCallback","RenderHeaderPrefixCallback","RenderRange","ThemeTypes","WorkerPoolManager","FileDiffRenderProps","LAnnotation","HTMLElement","FileDiffHydrationProps","Omit","FileDiffOptions","Exclude","FileDiff","DocumentFragment","AnnotationElementCache","CustomHunkElementCache","SVGElement","HTMLPreElement","HTMLStyleElement","Map","__0","AnnotationSide","oldFile","newFile","fileDiff","forceRender","lineAnnotations","fileContainer","containerWrapper","renderRange"],"sources":["../../src/components/FileDiff.d.ts"],"sourcesContent":["import { type GetLineIndexUtility, LineSelectionManager, type LineSelectionOptions, type SelectedLineRange } from '../managers/LineSelectionManager';\nimport { type GetHoveredLineResult, MouseEventManager, type MouseEventManagerBaseOptions } from '../managers/MouseEventManager';\nimport { ResizeManager } from '../managers/ResizeManager';\nimport { ScrollSyncManager } from '../managers/ScrollSyncManager';\nimport { DiffHunksRenderer } from '../renderers/DiffHunksRenderer';\nimport type { BaseDiffOptions, DiffLineAnnotation, ExpansionDirections, FileContents, FileDiffMetadata, HunkData, HunkSeparators, PrePropertiesConfig, RenderHeaderMetadataCallback, RenderHeaderPrefixCallback, RenderRange, ThemeTypes } from '../types';\nimport type { WorkerPoolManager } from '../worker';\nexport interface FileDiffRenderProps<LAnnotation> {\n fileDiff?: FileDiffMetadata;\n oldFile?: FileContents;\n newFile?: FileContents;\n forceRender?: boolean;\n fileContainer?: HTMLElement;\n containerWrapper?: HTMLElement;\n lineAnnotations?: DiffLineAnnotation<LAnnotation>[];\n renderRange?: RenderRange;\n}\nexport interface FileDiffHydrationProps<LAnnotation> extends Omit<FileDiffRenderProps<LAnnotation>, 'fileContainer'> {\n fileContainer: HTMLElement;\n prerenderedHTML?: string;\n}\nexport interface FileDiffOptions<LAnnotation> extends Omit<BaseDiffOptions, 'hunkSeparators'>, MouseEventManagerBaseOptions<'diff'>, LineSelectionOptions {\n hunkSeparators?: Exclude<HunkSeparators, 'custom'> /**\n * @deprecated Custom hunk separator functions are deprecated and will be\n * removed in a future version.\n */ | ((hunk: HunkData, instance: FileDiff<LAnnotation>) => HTMLElement | DocumentFragment);\n disableFileHeader?: boolean;\n /**\n * @deprecated Use `enableGutterUtility` instead.\n */\n enableHoverUtility?: boolean;\n renderHeaderPrefix?: RenderHeaderPrefixCallback;\n renderHeaderMetadata?: RenderHeaderMetadataCallback;\n /**\n * When true, errors during rendering are rethrown instead of being caught\n * and displayed in the DOM. Useful for testing or when you want to handle\n * errors yourself.\n */\n disableErrorHandling?: boolean;\n renderAnnotation?(annotation: DiffLineAnnotation<LAnnotation>): HTMLElement | undefined;\n renderGutterUtility?(getHoveredRow: () => GetHoveredLineResult<'diff'> | undefined): HTMLElement | null;\n /**\n * @deprecated Use `renderGutterUtility` instead.\n */\n renderHoverUtility?(getHoveredRow: () => GetHoveredLineResult<'diff'> | undefined): HTMLElement | null;\n}\ninterface AnnotationElementCache<LAnnotation> {\n element: HTMLElement;\n annotation: DiffLineAnnotation<LAnnotation>;\n}\ninterface CustomHunkElementCache {\n element: HTMLElement;\n hunkData: HunkData;\n}\nexport declare class FileDiff<LAnnotation = undefined> {\n options: FileDiffOptions<LAnnotation>;\n protected workerManager?: WorkerPoolManager | undefined;\n protected isContainerManaged: boolean;\n static LoadedCustomComponent: boolean;\n readonly __id: string;\n protected fileContainer: HTMLElement | undefined;\n protected spriteSVG: SVGElement | undefined;\n protected pre: HTMLPreElement | undefined;\n protected codeUnified: HTMLElement | undefined;\n protected codeDeletions: HTMLElement | undefined;\n protected codeAdditions: HTMLElement | undefined;\n protected bufferBefore: HTMLElement | undefined;\n protected bufferAfter: HTMLElement | undefined;\n protected unsafeCSSStyle: HTMLStyleElement | undefined;\n protected gutterUtilityContent: HTMLElement | undefined;\n protected headerElement: HTMLElement | undefined;\n protected headerPrefix: HTMLElement | undefined;\n protected headerMetadata: HTMLElement | undefined;\n protected separatorCache: Map<string, CustomHunkElementCache>;\n protected errorWrapper: HTMLElement | undefined;\n protected placeHolder: HTMLElement | undefined;\n protected hunksRenderer: DiffHunksRenderer<LAnnotation>;\n protected resizeManager: ResizeManager;\n protected scrollSyncManager: ScrollSyncManager;\n protected mouseEventManager: MouseEventManager<'diff'>;\n protected lineSelectionManager: LineSelectionManager;\n protected annotationCache: Map<string, AnnotationElementCache<LAnnotation>>;\n protected lineAnnotations: DiffLineAnnotation<LAnnotation>[];\n protected deletionFile: FileContents | undefined;\n protected additionFile: FileContents | undefined;\n protected fileDiff: FileDiffMetadata | undefined;\n protected renderRange: RenderRange | undefined;\n protected appliedPreAttributes: PrePropertiesConfig | undefined;\n protected lastRenderedHeaderHTML: string | undefined;\n protected lastRowCount: number | undefined;\n protected enabled: boolean;\n constructor(options?: FileDiffOptions<LAnnotation>, workerManager?: WorkerPoolManager | undefined, isContainerManaged?: boolean);\n private handleHighlightRender;\n getLineIndex: GetLineIndexUtility;\n setOptions(options: FileDiffOptions<LAnnotation> | undefined): void;\n private mergeOptions;\n setThemeType(themeType: ThemeTypes): void;\n getHoveredLine: () => {\n lineNumber: number;\n side: import(\"..\").AnnotationSide;\n } | undefined;\n setLineAnnotations(lineAnnotations: DiffLineAnnotation<LAnnotation>[]): void;\n private canPartiallyRender;\n setSelectedLines(range: SelectedLineRange | null): void;\n cleanUp(recycle?: boolean): void;\n virtualizedSetup(): void;\n hydrate(props: FileDiffHydrationProps<LAnnotation>): void;\n rerender(): void;\n handleExpandHunk: (hunkIndex: number, direction: ExpansionDirections) => void;\n expandHunk(hunkIndex: number, direction: ExpansionDirections): void;\n render({ oldFile, newFile, fileDiff, forceRender, lineAnnotations, fileContainer, containerWrapper, renderRange }: FileDiffRenderProps<LAnnotation>): boolean;\n private removeRenderedCode;\n private clearAuxiliaryNodes;\n renderPlaceholder(height: number): boolean;\n private cleanChildNodes;\n private renderSeparators;\n private renderAnnotations;\n private renderGutterUtility;\n protected getOrCreateFileContainer(fileContainer?: HTMLElement, parentNode?: HTMLElement): HTMLElement;\n protected getFileContainer(): HTMLElement | undefined;\n private getOrCreatePreNode;\n private syncCodeNodesFromPre;\n private applyHeaderToDOM;\n private injectUnsafeCSS;\n private applyHunksToDOM;\n private applyPartialRender;\n private insertPartialHTML;\n private renderPartialColumn;\n private mergeBuffersIfNecessary;\n private applyRowSpan;\n private trimColumnRows;\n private trimColumns;\n private getBufferSize;\n private updateBufferSize;\n private getCodeColumns;\n private applyBuffers;\n private applyPreNodeAttributes;\n private applyErrorToDOM;\n private cleanupErrorWrapper;\n}\nexport {};\n//# sourceMappingURL=FileDiff.d.ts.map"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { DEFAULT_THEMES, DIFFS_TAG_NAME, HEADER_METADATA_SLOT_ID, UNSAFE_CSS_ATTRIBUTE } from "../constants.js";
1
+ import { DEFAULT_THEMES, DIFFS_TAG_NAME, EMPTY_RENDER_RANGE, HEADER_METADATA_SLOT_ID, HEADER_PREFIX_SLOT_ID, UNSAFE_CSS_ATTRIBUTE } from "../constants.js";
2
2
  import { LineSelectionManager, pluckLineSelectionOptions } from "../managers/LineSelectionManager.js";
3
3
  import { MouseEventManager, pluckMouseEventOptions } from "../managers/MouseEventManager.js";
4
4
  import { ResizeManager } from "../managers/ResizeManager.js";
@@ -8,7 +8,7 @@ import { SVGSpriteSheet } from "../sprite.js";
8
8
  import { areFilesEqual } from "../utils/areFilesEqual.js";
9
9
  import { arePrePropertiesEqual } from "../utils/arePrePropertiesEqual.js";
10
10
  import { createAnnotationWrapperNode } from "../utils/createAnnotationWrapperNode.js";
11
- import { createHoverContentNode } from "../utils/createHoverContentNode.js";
11
+ import { createGutterUtilityContentNode } from "../utils/createGutterUtilityContentNode.js";
12
12
  import { createUnsafeCSSStyleNode } from "../utils/createUnsafeCSSStyleNode.js";
13
13
  import { wrapUnsafeCSS } from "../utils/cssWrappers.js";
14
14
  import { getOrCreateCodeNode } from "../utils/getOrCreateCodeNode.js";
@@ -36,8 +36,9 @@ var FileDiff = class {
36
36
  bufferBefore;
37
37
  bufferAfter;
38
38
  unsafeCSSStyle;
39
- hoverContent;
39
+ gutterUtilityContent;
40
40
  headerElement;
41
+ headerPrefix;
41
42
  headerMetadata;
42
43
  separatorCache = /* @__PURE__ */ new Map();
43
44
  errorWrapper;
@@ -194,6 +195,8 @@ var FileDiff = class {
194
195
  this.bufferAfter = void 0;
195
196
  this.appliedPreAttributes = void 0;
196
197
  this.headerElement = void 0;
198
+ this.headerPrefix = void 0;
199
+ this.headerMetadata = void 0;
197
200
  this.lastRenderedHeaderHTML = void 0;
198
201
  this.errorWrapper = void 0;
199
202
  this.spriteSVG = void 0;
@@ -253,7 +256,7 @@ var FileDiff = class {
253
256
  this.fileDiff = fileDiff ?? (oldFile != null && newFile != null ? parseDiffFromFile(oldFile, newFile) : void 0);
254
257
  this.hunksRenderer.hydrate(this.fileDiff);
255
258
  this.renderAnnotations();
256
- this.renderHoverUtility();
259
+ this.renderGutterUtility();
257
260
  this.injectUnsafeCSS();
258
261
  this.mouseEventManager.setup(this.pre);
259
262
  this.lineSelectionManager.setup(this.pre);
@@ -280,12 +283,14 @@ var FileDiff = class {
280
283
  }
281
284
  render({ oldFile, newFile, fileDiff, forceRender = false, lineAnnotations, fileContainer, containerWrapper, renderRange }) {
282
285
  if (!this.enabled) throw new Error("FileDiff.render: attempting to call render after cleaned up");
286
+ const { collapsed = false } = this.options;
287
+ const nextRenderRange = collapsed ? void 0 : renderRange;
283
288
  const filesDidChange = oldFile != null && newFile != null && (!areFilesEqual(oldFile, this.deletionFile) || !areFilesEqual(newFile, this.additionFile));
284
289
  let diffDidChange = fileDiff != null && fileDiff !== this.fileDiff;
285
290
  const annotationsChanged = lineAnnotations != null && (lineAnnotations.length > 0 || this.lineAnnotations.length > 0) ? lineAnnotations !== this.lineAnnotations : false;
286
- if (areRenderRangesEqual(renderRange, this.renderRange) && !forceRender && !annotationsChanged && (fileDiff != null && fileDiff === this.fileDiff || fileDiff == null && !filesDidChange)) return false;
291
+ if (!collapsed && areRenderRangesEqual(nextRenderRange, this.renderRange) && !forceRender && !annotationsChanged && (fileDiff != null && fileDiff === this.fileDiff || fileDiff == null && !filesDidChange)) return false;
287
292
  const { renderRange: previousRenderRange } = this;
288
- this.renderRange = renderRange;
293
+ this.renderRange = nextRenderRange;
289
294
  this.deletionFile = oldFile;
290
295
  this.additionFile = newFile;
291
296
  if (fileDiff != null) this.fileDiff = fileDiff;
@@ -307,15 +312,38 @@ var FileDiff = class {
307
312
  this.headerElement = void 0;
308
313
  this.lastRenderedHeaderHTML = void 0;
309
314
  }
315
+ if (this.headerPrefix != null) {
316
+ this.headerPrefix.parentNode?.removeChild(this.headerPrefix);
317
+ this.headerPrefix = void 0;
318
+ }
319
+ if (this.headerMetadata != null) {
320
+ this.headerMetadata.parentNode?.removeChild(this.headerMetadata);
321
+ this.headerMetadata = void 0;
322
+ }
310
323
  }
311
324
  fileContainer = this.getOrCreateFileContainer(fileContainer, containerWrapper);
325
+ if (collapsed) {
326
+ this.removeRenderedCode();
327
+ this.clearAuxiliaryNodes();
328
+ try {
329
+ const hunksResult = this.hunksRenderer.renderDiff(this.fileDiff, EMPTY_RENDER_RANGE);
330
+ if (hunksResult?.headerElement != null) this.applyHeaderToDOM(hunksResult.headerElement, fileContainer);
331
+ this.renderSeparators([]);
332
+ this.injectUnsafeCSS();
333
+ } catch (error) {
334
+ if (disableErrorHandling) throw error;
335
+ console.error(error);
336
+ if (error instanceof Error) this.applyErrorToDOM(error, fileContainer);
337
+ }
338
+ return true;
339
+ }
312
340
  try {
313
341
  const pre = this.getOrCreatePreNode(fileContainer);
314
342
  if (!(this.canPartiallyRender(forceRender, annotationsChanged, filesDidChange || diffDidChange) && this.applyPartialRender({
315
343
  previousRenderRange,
316
- renderRange
344
+ renderRange: nextRenderRange
317
345
  }))) {
318
- const hunksResult = this.hunksRenderer.renderDiff(this.fileDiff, renderRange);
346
+ const hunksResult = this.hunksRenderer.renderDiff(this.fileDiff, nextRenderRange);
319
347
  if (hunksResult == null) {
320
348
  if (this.workerManager?.isInitialized() === false) this.workerManager.initialize().then(() => this.rerender());
321
349
  return false;
@@ -328,10 +356,10 @@ var FileDiff = class {
328
356
  }
329
357
  this.renderSeparators(hunksResult.hunkData);
330
358
  }
331
- this.applyBuffers(pre, renderRange);
359
+ this.applyBuffers(pre, nextRenderRange);
332
360
  this.injectUnsafeCSS();
333
361
  this.renderAnnotations();
334
- this.renderHoverUtility();
362
+ this.renderGutterUtility();
335
363
  this.mouseEventManager.setup(pre);
336
364
  this.lineSelectionManager.setup(pre);
337
365
  this.resizeManager.setup(pre, overflow === "wrap");
@@ -344,6 +372,34 @@ var FileDiff = class {
344
372
  }
345
373
  return true;
346
374
  }
375
+ removeRenderedCode() {
376
+ this.resizeManager.cleanUp();
377
+ this.scrollSyncManager.cleanUp();
378
+ this.mouseEventManager.cleanUp();
379
+ this.lineSelectionManager.cleanUp();
380
+ this.bufferBefore?.remove();
381
+ this.bufferBefore = void 0;
382
+ this.bufferAfter?.remove();
383
+ this.bufferAfter = void 0;
384
+ this.codeUnified?.remove();
385
+ this.codeUnified = void 0;
386
+ this.codeDeletions?.remove();
387
+ this.codeDeletions = void 0;
388
+ this.codeAdditions?.remove();
389
+ this.codeAdditions = void 0;
390
+ this.pre?.remove();
391
+ this.pre = void 0;
392
+ this.appliedPreAttributes = void 0;
393
+ this.lastRowCount = void 0;
394
+ }
395
+ clearAuxiliaryNodes() {
396
+ for (const { element } of this.separatorCache.values()) element.parentNode?.removeChild(element);
397
+ this.separatorCache.clear();
398
+ for (const { element } of this.annotationCache.values()) element.parentNode?.removeChild(element);
399
+ this.annotationCache.clear();
400
+ this.gutterUtilityContent?.remove();
401
+ this.gutterUtilityContent = void 0;
402
+ }
347
403
  renderPlaceholder(height) {
348
404
  if (this.fileContainer == null) return false;
349
405
  this.cleanChildNodes();
@@ -368,7 +424,9 @@ var FileDiff = class {
368
424
  this.codeUnified?.remove();
369
425
  this.errorWrapper?.remove();
370
426
  this.headerElement?.remove();
371
- this.hoverContent?.remove();
427
+ this.gutterUtilityContent?.remove();
428
+ this.headerPrefix?.remove();
429
+ this.headerMetadata?.remove();
372
430
  this.pre?.remove();
373
431
  this.spriteSVG?.remove();
374
432
  this.unsafeCSSStyle?.remove();
@@ -379,7 +437,9 @@ var FileDiff = class {
379
437
  this.codeUnified = void 0;
380
438
  this.errorWrapper = void 0;
381
439
  this.headerElement = void 0;
382
- this.hoverContent = void 0;
440
+ this.gutterUtilityContent = void 0;
441
+ this.headerPrefix = void 0;
442
+ this.headerMetadata = void 0;
383
443
  this.pre = void 0;
384
444
  this.spriteSVG = void 0;
385
445
  this.unsafeCSSStyle = void 0;
@@ -447,19 +507,24 @@ var FileDiff = class {
447
507
  element.parentNode?.removeChild(element);
448
508
  }
449
509
  }
450
- renderHoverUtility() {
451
- const { renderHoverUtility } = this.options;
452
- if (this.fileContainer == null || renderHoverUtility == null) return;
453
- const element = renderHoverUtility(this.mouseEventManager.getHoveredLine);
454
- if (element != null && this.hoverContent != null) return;
510
+ renderGutterUtility() {
511
+ const renderGutterUtility = this.options.renderGutterUtility ?? this.options.renderHoverUtility;
512
+ if (this.fileContainer == null || renderGutterUtility == null) {
513
+ this.gutterUtilityContent?.remove();
514
+ this.gutterUtilityContent = void 0;
515
+ return;
516
+ }
517
+ const element = renderGutterUtility(this.mouseEventManager.getHoveredLine);
518
+ if (element != null && this.gutterUtilityContent != null) return;
455
519
  else if (element == null) {
456
- this.hoverContent?.parentNode?.removeChild(this.hoverContent);
457
- this.hoverContent = void 0;
520
+ this.gutterUtilityContent?.parentNode?.removeChild(this.gutterUtilityContent);
521
+ this.gutterUtilityContent = void 0;
458
522
  return;
459
523
  }
460
- this.hoverContent = createHoverContentNode();
461
- this.hoverContent.appendChild(element);
462
- this.fileContainer.appendChild(this.hoverContent);
524
+ const gutterUtilityContent = createGutterUtilityContentNode();
525
+ gutterUtilityContent.appendChild(element);
526
+ this.fileContainer.appendChild(gutterUtilityContent);
527
+ this.gutterUtilityContent = gutterUtilityContent;
463
528
  }
464
529
  getOrCreateFileContainer(fileContainer, parentNode) {
465
530
  const previousContainer = this.fileContainer;
@@ -527,13 +592,26 @@ var FileDiff = class {
527
592
  this.lastRenderedHeaderHTML = headerHTML;
528
593
  }
529
594
  if (this.isContainerManaged) return;
530
- const { renderHeaderMetadata } = this.options;
595
+ const { renderHeaderPrefix, renderHeaderMetadata } = this.options;
596
+ if (this.headerPrefix != null) this.headerPrefix.parentNode?.removeChild(this.headerPrefix);
531
597
  if (this.headerMetadata != null) this.headerMetadata.parentNode?.removeChild(this.headerMetadata);
598
+ const prefix = renderHeaderPrefix?.({
599
+ deletionFile: this.deletionFile,
600
+ additionFile: this.additionFile,
601
+ fileDiff: this.fileDiff
602
+ }) ?? void 0;
532
603
  const content = renderHeaderMetadata?.({
533
604
  deletionFile: this.deletionFile,
534
605
  additionFile: this.additionFile,
535
606
  fileDiff: this.fileDiff
536
607
  }) ?? void 0;
608
+ if (prefix != null) {
609
+ this.headerPrefix = document.createElement("div");
610
+ this.headerPrefix.slot = HEADER_PREFIX_SLOT_ID;
611
+ if (prefix instanceof Element) this.headerPrefix.appendChild(prefix);
612
+ else this.headerPrefix.innerText = `${prefix}`;
613
+ container.appendChild(this.headerPrefix);
614
+ }
537
615
  if (content != null) {
538
616
  this.headerMetadata = document.createElement("div");
539
617
  this.headerMetadata.slot = HEADER_METADATA_SLOT_ID;