Skip to content

Commit a52c7a6

Browse files
wip
1 parent 58e83c2 commit a52c7a6

File tree

8 files changed

+80
-20
lines changed

8 files changed

+80
-20
lines changed

packages/core/index.d.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,12 @@ export declare class DiffFile {
7979
buildSplitDiffLines(): void;
8080
buildUnifiedDiffLines(): void;
8181
getSplitLeftLine: (index: number) => SplitLineItem;
82+
getSplitLineByLineNumber: (lineNumber: number, side: SplitSide) => SplitLineItem;
8283
getSplitRightLine: (index: number) => SplitLineItem;
8384
getSplitHunkLine: (index: number) => DiffHunkItem;
8485
onSplitHunkExpand: (dir: "up" | "down" | "all", index: number, needTrigger?: boolean) => void;
8586
getUnifiedLine: (index: number) => UnifiedLineItem;
87+
getUnifiedLineByLineNumber: (lienNumber: number, side: SplitSide) => UnifiedLineItem;
8688
getUnifiedHunkLine: (index: number) => DiffHunkItem;
8789
onUnifiedHunkExpand: (dir: "up" | "down" | "all", index: number, needTrigger?: boolean) => void;
8890
onAllExpand: (mode: "split" | "unified") => void;
@@ -374,6 +376,10 @@ export declare const DefaultDiffExpansionStep = 40;
374376
export declare const HiddenBidiCharsRegex: RegExp;
375377
export declare const _cacheMap: Cache$1<string, File$1>;
376378
export declare const changeDefaultComposeLength: (compose: number) => void;
379+
export declare const checkCurrentLineIsHidden: (diffFile: DiffFile, lineNumber: number, side: SplitSide) => {
380+
split: boolean;
381+
unified: boolean;
382+
};
377383
export declare const checkDiffLineIncludeChange: (diffLine?: DiffLine) => boolean;
378384
export declare const disableCache: () => void;
379385
export declare const getDiffRange: (additions: DiffLine[], deletions: DiffLine[], { getAdditionRaw, getDeletionRaw, }: {
@@ -436,6 +442,10 @@ export declare enum NewLineSymbol {
436442
NORMAL = 5,
437443
NULL = 6
438444
}
445+
export declare enum SplitSide {
446+
old = 1,
447+
new = 2
448+
}
439449
export declare function _getAST(raw: string, fileName?: string, lang?: DiffHighlighterLang, theme?: "light" | "dark"): DiffAST;
440450
export declare function _getAST(raw: string, fileName?: string, lang?: string, theme?: "light" | "dark"): DiffAST;
441451
export declare function assertNever(_: never, message: string): never;

packages/core/src/diff-file-utils.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ export enum DiffFileLineType {
99
extend = 4,
1010
}
1111

12+
export enum SplitSide {
13+
old = 1,
14+
new = 2,
15+
}
16+
1217
export type DiffSplitContentLineItem = {
1318
type: DiffFileLineType.content;
1419
index: number;
@@ -115,3 +120,14 @@ export const getUnifiedContentLine = (diffFile: DiffFile): DiffUnifiedContentLin
115120

116121
return unifiedLines;
117122
};
123+
124+
export const checkCurrentLineIsHidden = (diffFile: DiffFile, lineNumber: number, side: SplitSide) => {
125+
const splitLine = diffFile.getSplitLineByLineNumber(lineNumber, side);
126+
127+
const unifiedLine = diffFile.getUnifiedLineByLineNumber(lineNumber, side);
128+
129+
return {
130+
split: !splitLine || splitLine.isHidden,
131+
unified: !unifiedLine || unifiedLine.isHidden,
132+
};
133+
};

packages/core/src/diff-file.ts

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,20 @@
33
import { getFile, File } from "./file";
44
import { DiffLine, DiffLineType, parseInstance, getDiffRange, getLang } from "./parse";
55

6+
import { SplitSide } from ".";
7+
68
import type { IRawDiff } from "./parse";
79
import type { DiffHighlighter, DiffHighlighterLang } from "@git-diff-view/lowlight";
810

911
export let composeLen = 40;
1012

1113
export const changeDefaultComposeLength = (compose: number) => {
1214
composeLen = compose;
13-
}
15+
};
1416

1517
export const resetDefaultComposeLength = () => {
1618
composeLen = 40;
17-
}
19+
};
1820

1921
const idSet = new Set<string>();
2022

@@ -1035,6 +1037,14 @@ export class DiffFile {
10351037
return this.#splitLeftLines[index];
10361038
};
10371039

1040+
getSplitLineByLineNumber = (lineNumber: number, side: SplitSide) => {
1041+
if (side === SplitSide.old) {
1042+
return this.#splitLeftLines?.find((item) => item.lineNumber === lineNumber);
1043+
} else {
1044+
return this.#splitRightLines?.find((item) => item.lineNumber === lineNumber);
1045+
}
1046+
};
1047+
10381048
getSplitRightLine = (index: number) => {
10391049
return this.#splitRightLines[index];
10401050
};
@@ -1122,6 +1132,14 @@ export class DiffFile {
11221132
return this.#unifiedLines[index];
11231133
};
11241134

1135+
getUnifiedLineByLineNumber = (lienNumber: number, side: SplitSide) => {
1136+
if (side === SplitSide.old) {
1137+
return this.#unifiedLines?.find((item) => item.oldLineNumber === lienNumber);
1138+
} else {
1139+
return this.#unifiedLines?.find((item) => item.newLineNumber === lienNumber);
1140+
}
1141+
};
1142+
11251143
getUnifiedHunkLine = (index: number) => {
11261144
return this.#unifiedHunksLines?.[index];
11271145
};

packages/file/index.d.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,12 @@ export declare class DiffFile {
7878
buildSplitDiffLines(): void;
7979
buildUnifiedDiffLines(): void;
8080
getSplitLeftLine: (index: number) => SplitLineItem;
81+
getSplitLineByLineNumber: (lineNumber: number, side: SplitSide) => SplitLineItem;
8182
getSplitRightLine: (index: number) => SplitLineItem;
8283
getSplitHunkLine: (index: number) => DiffHunkItem;
8384
onSplitHunkExpand: (dir: "up" | "down" | "all", index: number, needTrigger?: boolean) => void;
8485
getUnifiedLine: (index: number) => UnifiedLineItem;
86+
getUnifiedLineByLineNumber: (lienNumber: number, side: SplitSide) => UnifiedLineItem;
8587
getUnifiedHunkLine: (index: number) => DiffHunkItem;
8688
onUnifiedHunkExpand: (dir: "up" | "down" | "all", index: number, needTrigger?: boolean) => void;
8789
onAllExpand: (mode: "split" | "unified") => void;
@@ -373,6 +375,10 @@ export declare const DefaultDiffExpansionStep = 40;
373375
export declare const HiddenBidiCharsRegex: RegExp;
374376
export declare const _cacheMap: Cache$1<string, File$1>;
375377
export declare const changeDefaultComposeLength: (compose: number) => void;
378+
export declare const checkCurrentLineIsHidden: (diffFile: DiffFile, lineNumber: number, side: SplitSide) => {
379+
split: boolean;
380+
unified: boolean;
381+
};
376382
export declare const checkDiffLineIncludeChange: (diffLine?: DiffLine) => boolean;
377383
export declare const disableCache: () => void;
378384
export declare const getDiffRange: (additions: DiffLine[], deletions: DiffLine[], { getAdditionRaw, getDeletionRaw, }: {
@@ -435,6 +441,10 @@ export declare enum NewLineSymbol {
435441
NORMAL = 5,
436442
NULL = 6
437443
}
444+
export declare enum SplitSide {
445+
old = 1,
446+
new = 2
447+
}
438448
export declare function _getAST(raw: string, fileName?: string, lang?: DiffHighlighterLang, theme?: "light" | "dark"): DiffAST;
439449
export declare function _getAST(raw: string, fileName?: string, lang?: string, theme?: "light" | "dark"): DiffAST;
440450
export declare function assertNever(_: never, message: string): never;

packages/react/index.d.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,12 @@ export declare class DiffFile {
7878
buildSplitDiffLines(): void;
7979
buildUnifiedDiffLines(): void;
8080
getSplitLeftLine: (index: number) => SplitLineItem;
81+
getSplitLineByLineNumber: (lineNumber: number, side: SplitSide) => SplitLineItem;
8182
getSplitRightLine: (index: number) => SplitLineItem;
8283
getSplitHunkLine: (index: number) => DiffHunkItem;
8384
onSplitHunkExpand: (dir: "up" | "down" | "all", index: number, needTrigger?: boolean) => void;
8485
getUnifiedLine: (index: number) => UnifiedLineItem;
86+
getUnifiedLineByLineNumber: (lienNumber: number, side: SplitSide) => UnifiedLineItem;
8587
getUnifiedHunkLine: (index: number) => DiffHunkItem;
8688
onUnifiedHunkExpand: (dir: "up" | "down" | "all", index: number, needTrigger?: boolean) => void;
8789
onAllExpand: (mode: "split" | "unified") => void;
@@ -373,6 +375,10 @@ export declare const DefaultDiffExpansionStep = 40;
373375
export declare const HiddenBidiCharsRegex: RegExp;
374376
export declare const _cacheMap: Cache$1<string, File$1>;
375377
export declare const changeDefaultComposeLength: (compose: number) => void;
378+
export declare const checkCurrentLineIsHidden: (diffFile: DiffFile, lineNumber: number, side: SplitSide) => {
379+
split: boolean;
380+
unified: boolean;
381+
};
376382
export declare const checkDiffLineIncludeChange: (diffLine?: DiffLine) => boolean;
377383
export declare const disableCache: () => void;
378384
export declare const getDiffRange: (additions: DiffLine[], deletions: DiffLine[], { getAdditionRaw, getDeletionRaw, }: {
@@ -435,6 +441,10 @@ export declare enum NewLineSymbol {
435441
NORMAL = 5,
436442
NULL = 6
437443
}
444+
export declare enum SplitSide {
445+
old = 1,
446+
new = 2
447+
}
438448
export declare function _getAST(raw: string, fileName?: string, lang?: DiffHighlighterLang, theme?: "light" | "dark"): DiffAST;
439449
export declare function _getAST(raw: string, fileName?: string, lang?: string, theme?: "light" | "dark"): DiffAST;
440450
export declare function assertNever(_: never, message: string): never;
@@ -651,10 +661,6 @@ export type SyntaxNode = {
651661
};
652662
children?: SyntaxNode[];
653663
};
654-
export declare enum SplitSide {
655-
old = 1,
656-
new = 2
657-
}
658664
export declare enum DiffModeEnum {
659665
SplitGitHub = 1,
660666
SplitGitLab = 2,

packages/react/src/components/DiffView.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* eslint-disable @typescript-eslint/no-unnecessary-type-constraint */
22
/* eslint-disable @typescript-eslint/ban-ts-comment */
3-
import { DiffFile, _cacheMap } from "@git-diff-view/core";
3+
import { DiffFile, _cacheMap, SplitSide } from "@git-diff-view/core";
44
import { diffFontSizeName } from "@git-diff-view/utils";
55
import { memo, useEffect, useMemo, forwardRef, useImperativeHandle, useRef } from "react";
66
import * as React from "react";
@@ -19,10 +19,7 @@ import type { CSSProperties, ForwardedRef, ReactNode } from "react";
1919

2020
_cacheMap.name = "@git-diff-view/react";
2121

22-
export enum SplitSide {
23-
old = 1,
24-
new = 2,
25-
}
22+
export { SplitSide };
2623

2724
export enum DiffModeEnum {
2825
// github like

packages/vue/index.d.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,12 @@ export declare class DiffFile {
7878
buildSplitDiffLines(): void;
7979
buildUnifiedDiffLines(): void;
8080
getSplitLeftLine: (index: number) => SplitLineItem;
81+
getSplitLineByLineNumber: (lineNumber: number, side: SplitSide) => SplitLineItem;
8182
getSplitRightLine: (index: number) => SplitLineItem;
8283
getSplitHunkLine: (index: number) => DiffHunkItem;
8384
onSplitHunkExpand: (dir: "up" | "down" | "all", index: number, needTrigger?: boolean) => void;
8485
getUnifiedLine: (index: number) => UnifiedLineItem;
86+
getUnifiedLineByLineNumber: (lienNumber: number, side: SplitSide) => UnifiedLineItem;
8587
getUnifiedHunkLine: (index: number) => DiffHunkItem;
8688
onUnifiedHunkExpand: (dir: "up" | "down" | "all", index: number, needTrigger?: boolean) => void;
8789
onAllExpand: (mode: "split" | "unified") => void;
@@ -373,6 +375,10 @@ export declare const DefaultDiffExpansionStep = 40;
373375
export declare const HiddenBidiCharsRegex: RegExp;
374376
export declare const _cacheMap: Cache$1<string, File$1>;
375377
export declare const changeDefaultComposeLength: (compose: number) => void;
378+
export declare const checkCurrentLineIsHidden: (diffFile: DiffFile, lineNumber: number, side: SplitSide) => {
379+
split: boolean;
380+
unified: boolean;
381+
};
376382
export declare const checkDiffLineIncludeChange: (diffLine?: DiffLine) => boolean;
377383
export declare const disableCache: () => void;
378384
export declare const getDiffRange: (additions: DiffLine[], deletions: DiffLine[], { getAdditionRaw, getDeletionRaw, }: {
@@ -435,6 +441,10 @@ export declare enum NewLineSymbol {
435441
NORMAL = 5,
436442
NULL = 6
437443
}
444+
export declare enum SplitSide {
445+
old = 1,
446+
new = 2
447+
}
438448
export declare function _getAST(raw: string, fileName?: string, lang?: DiffHighlighterLang, theme?: "light" | "dark"): DiffAST;
439449
export declare function _getAST(raw: string, fileName?: string, lang?: string, theme?: "light" | "dark"): DiffAST;
440450
export declare function assertNever(_: never, message: string): never;
@@ -657,10 +667,6 @@ export declare enum DiffModeEnum {
657667
Split = 3,
658668
Unified = 4
659669
}
660-
export declare enum SplitSide {
661-
old = 1,
662-
new = 2
663-
}
664670
export type DiffViewProps<T> = {
665671
data?: {
666672
oldFile?: {

packages/vue/src/components/DiffView.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { DiffFile, _cacheMap } from "@git-diff-view/core";
1+
import { DiffFile, _cacheMap, SplitSide } from "@git-diff-view/core";
22
import { diffFontSizeName } from "@git-diff-view/utils";
33
import { defineComponent, provide, ref, watch, watchEffect, computed, onUnmounted } from "vue";
44

@@ -36,10 +36,7 @@ export enum DiffModeEnum {
3636
Unified = 4,
3737
}
3838

39-
export enum SplitSide {
40-
old = 1,
41-
new = 2,
42-
}
39+
export { SplitSide };
4340

4441
export type DiffViewProps<T> = {
4542
data?: {

0 commit comments

Comments
 (0)