@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.
- package/dist/components/AdvancedVirtualizedFileDiff.js +2 -7
- package/dist/components/AdvancedVirtualizedFileDiff.js.map +1 -1
- package/dist/components/File.d.ts +14 -2
- package/dist/components/File.d.ts.map +1 -1
- package/dist/components/File.js +89 -23
- package/dist/components/File.js.map +1 -1
- package/dist/components/FileDiff.d.ts +15 -3
- package/dist/components/FileDiff.d.ts.map +1 -1
- package/dist/components/FileDiff.js +101 -23
- package/dist/components/FileDiff.js.map +1 -1
- package/dist/components/VirtualizedFile.js +4 -2
- package/dist/components/VirtualizedFile.js.map +1 -1
- package/dist/components/VirtualizedFileDiff.js +4 -2
- package/dist/components/VirtualizedFileDiff.js.map +1 -1
- package/dist/components/Virtualizer.js +2 -1
- package/dist/components/Virtualizer.js.map +1 -1
- package/dist/components/VirtulizerDevelopment.d.ts.map +1 -1
- package/dist/constants.d.ts +3 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +8 -1
- package/dist/constants.js.map +1 -1
- package/dist/highlighter/shared_highlighter.js +12 -4
- package/dist/highlighter/shared_highlighter.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.js +5 -4
- package/dist/managers/MouseEventManager.d.ts +20 -5
- package/dist/managers/MouseEventManager.d.ts.map +1 -1
- package/dist/managers/MouseEventManager.js +91 -25
- package/dist/managers/MouseEventManager.js.map +1 -1
- package/dist/react/File.d.ts +2 -0
- package/dist/react/File.d.ts.map +1 -1
- package/dist/react/File.js +3 -1
- package/dist/react/File.js.map +1 -1
- package/dist/react/FileDiff.d.ts +2 -0
- package/dist/react/FileDiff.d.ts.map +1 -1
- package/dist/react/FileDiff.js +3 -1
- package/dist/react/FileDiff.js.map +1 -1
- package/dist/react/MultiFileDiff.d.ts +2 -0
- package/dist/react/MultiFileDiff.d.ts.map +1 -1
- package/dist/react/MultiFileDiff.js +3 -1
- package/dist/react/MultiFileDiff.js.map +1 -1
- package/dist/react/PatchDiff.d.ts +2 -0
- package/dist/react/PatchDiff.d.ts.map +1 -1
- package/dist/react/PatchDiff.js +3 -1
- package/dist/react/PatchDiff.js.map +1 -1
- package/dist/react/constants.d.ts +2 -2
- package/dist/react/constants.d.ts.map +1 -1
- package/dist/react/constants.js +2 -2
- package/dist/react/constants.js.map +1 -1
- package/dist/react/index.d.ts +3 -3
- package/dist/react/index.js +2 -2
- package/dist/react/jsx.d.ts +1 -0
- package/dist/react/jsx.d.ts.map +1 -1
- package/dist/react/types.d.ts +10 -0
- package/dist/react/types.d.ts.map +1 -1
- package/dist/react/types.js +1 -0
- package/dist/react/utils/renderDiffChildren.d.ts +4 -0
- package/dist/react/utils/renderDiffChildren.d.ts.map +1 -1
- package/dist/react/utils/renderDiffChildren.js +17 -7
- package/dist/react/utils/renderDiffChildren.js.map +1 -1
- package/dist/react/utils/renderFileChildren.d.ts +4 -0
- package/dist/react/utils/renderFileChildren.d.ts.map +1 -1
- package/dist/react/utils/renderFileChildren.js +13 -7
- package/dist/react/utils/renderFileChildren.js.map +1 -1
- package/dist/renderers/DiffHunksRenderer.js +3 -2
- package/dist/renderers/DiffHunksRenderer.js.map +1 -1
- package/dist/renderers/FileRenderer.js +1 -1
- package/dist/sprite.d.ts +2 -2
- package/dist/sprite.d.ts.map +1 -1
- package/dist/sprite.js +3 -0
- package/dist/sprite.js.map +1 -1
- package/dist/ssr/index.d.ts +2 -2
- package/dist/style.js +1 -1
- package/dist/style.js.map +1 -1
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/createFileHeaderElement.js +5 -2
- package/dist/utils/createFileHeaderElement.js.map +1 -1
- package/dist/utils/createGutterUtilityContentNode.d.ts +5 -0
- package/dist/utils/createGutterUtilityContentNode.d.ts.map +1 -0
- package/dist/utils/createGutterUtilityContentNode.js +15 -0
- package/dist/utils/createGutterUtilityContentNode.js.map +1 -0
- package/dist/utils/createGutterUtilityElement.d.ts +7 -0
- package/dist/utils/createGutterUtilityElement.d.ts.map +1 -0
- package/dist/utils/createGutterUtilityElement.js +20 -0
- package/dist/utils/createGutterUtilityElement.js.map +1 -0
- package/dist/utils/hast_utils.d.ts +1 -1
- package/dist/utils/hast_utils.d.ts.map +1 -1
- package/dist/utils/hast_utils.js.map +1 -1
- package/dist/worker/WorkerPoolManager.d.ts +1 -1
- package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
- package/dist/worker/WorkerPoolManager.js +8 -6
- package/dist/worker/WorkerPoolManager.js.map +1 -1
- package/dist/worker/worker-portable.js +7 -0
- package/dist/worker/worker-portable.js.map +1 -1
- package/dist/worker/worker.js.map +1 -1
- package/package.json +2 -1
- package/dist/themes/pierre-dark.js +0 -1328
- package/dist/themes/pierre-dark.js.map +0 -1
- package/dist/themes/pierre-light.js +0 -1328
- package/dist/themes/pierre-light.js.map +0 -1
- package/dist/utils/createHoverContentNode.d.ts +0 -5
- package/dist/utils/createHoverContentNode.d.ts.map +0 -1
- package/dist/utils/createHoverContentNode.js +0 -15
- 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
|
|
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
|
|
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 {
|
|
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
|
-
|
|
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.
|
|
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(
|
|
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 =
|
|
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,
|
|
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,
|
|
359
|
+
this.applyBuffers(pre, nextRenderRange);
|
|
332
360
|
this.injectUnsafeCSS();
|
|
333
361
|
this.renderAnnotations();
|
|
334
|
-
this.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
451
|
-
const
|
|
452
|
-
if (this.fileContainer == null ||
|
|
453
|
-
|
|
454
|
-
|
|
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.
|
|
457
|
-
this.
|
|
520
|
+
this.gutterUtilityContent?.parentNode?.removeChild(this.gutterUtilityContent);
|
|
521
|
+
this.gutterUtilityContent = void 0;
|
|
458
522
|
return;
|
|
459
523
|
}
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
this.fileContainer.appendChild(
|
|
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;
|