Skip to content

Commit 9c34ebc

Browse files
update
1 parent 28b7488 commit 9c34ebc

File tree

9 files changed

+34
-21
lines changed

9 files changed

+34
-21
lines changed

packages/core/index.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,11 +314,12 @@ export declare class DiffLine {
314314
readonly noTrailingNewLine: boolean;
315315
changes?: IRange;
316316
diffChanges?: DiffRange;
317+
_diffChanges?: DiffRange;
317318
plainTemplate?: string;
318319
plainTemplateMode?: "fast-diff" | "relative";
319320
syntaxTemplate?: string;
320321
syntaxTemplateMode?: "fast-diff" | "relative";
321-
constructor(text: string, type: DiffLineType, originalLineNumber: number | null, oldLineNumber: number | null, newLineNumber: number | null, noTrailingNewLine?: boolean, changes?: IRange, diffChanges?: DiffRange, plainTemplate?: string, plainTemplateMode?: "fast-diff" | "relative", syntaxTemplate?: string, syntaxTemplateMode?: "fast-diff" | "relative");
322+
constructor(text: string, type: DiffLineType, originalLineNumber: number | null, oldLineNumber: number | null, newLineNumber: number | null, noTrailingNewLine?: boolean, changes?: IRange, diffChanges?: DiffRange, _diffChanges?: DiffRange, plainTemplate?: string, plainTemplateMode?: "fast-diff" | "relative", syntaxTemplate?: string, syntaxTemplateMode?: "fast-diff" | "relative");
322323
withNoTrailingNewLine(noTrailingNewLine: boolean): DiffLine;
323324
isIncludeableLine(): boolean;
324325
equals(other: DiffLine): boolean;

packages/core/src/diff-file.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,14 @@ export class DiffFile {
361361
hasSymbolChanged = hasSymbolChanged || oldDiffLine.noTrailingNewLine !== newDiffLine.noTrailingNewLine;
362362
}
363363
}
364-
if (!hasSymbolChanged && oldFileContent === newFileContent) return;
364+
if (!hasSymbolChanged && oldFileContent === newFileContent) {
365+
if (__DEV__) {
366+
console.warn(
367+
'the composed "oldFileContent" and "newFileContent" are the same, maybe the "diff" string is not valid'
368+
);
369+
}
370+
return;
371+
}
365372
this._oldFileContent = oldFileContent;
366373
this._newFileContent = newFileContent;
367374
this.#oldFileResult = getFile(
@@ -769,7 +776,7 @@ export class DiffFile {
769776
const maxOldFileLineNumber = this.#oldFileResult?.maxLineNumber || 0;
770777
const maxNewFileLineNumber = this.#newFileResult?.maxLineNumber || 0;
771778

772-
if (__DEV__ && !this.#oldFileResult && !this.#newFileResult && this.#composeByMerge) {
779+
if (__DEV__ && !this.#oldFileResult && !this.#newFileResult && this.#composeByMerge && !this.#composeByFullMerge) {
773780
console.error(
774781
"this instance can not `buildSplitDiffLines` because of the data missing, try to use '_getFullBundle' & '_mergeFullBundle' instead of 'getBundle' & 'mergeBundle'"
775782
);
@@ -955,7 +962,7 @@ export class DiffFile {
955962
const maxOldFileLineNumber = this.#oldFileResult?.maxLineNumber || 0;
956963
const maxNewFileLineNumber = this.#newFileResult?.maxLineNumber || 0;
957964

958-
if (__DEV__ && !this.#oldFileResult && !this.#newFileResult && this.#composeByMerge) {
965+
if (__DEV__ && !this.#oldFileResult && !this.#newFileResult && this.#composeByMerge && !this.#composeByFullMerge) {
959966
console.error(
960967
"this instance can not `buildUnifiedDiffLines` because of the data missing, try to use '_getFullBundle' & '_mergeFullBundle' instead of 'getBundle' & 'mergeBundle'"
961968
);

packages/core/src/parse/diff-line.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export class DiffLine {
2121
public readonly noTrailingNewLine: boolean = false,
2222
public changes?: IRange,
2323
public diffChanges?: DiffRange,
24+
public _diffChanges?: DiffRange,
2425
public plainTemplate?: string,
2526
public plainTemplateMode?: "fast-diff" | "relative",
2627
public syntaxTemplate?: string,

packages/core/src/parse/diff-tool.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,8 @@ export const getDiffRange = (
182182
const { addRange, delRange } = diffChanges(_addition, _deletion);
183183
addition.diffChanges = addRange;
184184
deletion.diffChanges = delRange;
185+
addition._diffChanges = delRange;
186+
deletion._diffChanges = addRange;
185187
getPlainDiffTemplateByFastDiff({
186188
diffLine: addition,
187189
rawLine: getAdditionRaw(addition.newLineNumber),

packages/core/src/parse/template.ts

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -192,13 +192,17 @@ export const getSyntaxDiffTemplateByFastDiff = ({
192192

193193
const changes = diffLine.diffChanges;
194194

195+
const _changes = diffLine._diffChanges;
196+
195197
if (!changes || !changes.hasLineChange) return;
196198

197199
const transform = isTransformEnabled() ? processTransformTemplateContent : defaultTransform;
198200

199201
let template = "";
200202

201-
const allRange = changes.range.filter((item) => item.type !== 0);
203+
const allRange = changes?.range?.filter((item) => item.type !== 0) || [];
204+
205+
const _allRange = _changes?.range?.filter((item) => item.type !== 0) || [];
202206

203207
let rangeIndex = 0;
204208

@@ -209,6 +213,8 @@ export const getSyntaxDiffTemplateByFastDiff = ({
209213

210214
let range = allRange[rangeIndex];
211215

216+
const noDiff = allRange.length === 0 && _allRange.length === 0;
217+
212218
const isLastNode = index === array.length - 1;
213219

214220
for (let i = 0; i < node.value.length; i++) {
@@ -220,9 +226,6 @@ export const getSyntaxDiffTemplateByFastDiff = ({
220226
// before start
221227
if (index < range.startIndex) {
222228
template += transform(value);
223-
if (isEndStr && changes.newLineSymbol) {
224-
template += `<span data-newline-symbol data-diff-highlight style="background-color: var(${operator === "add" ? addContentHighlightBGName : delContentHighlightBGName});border-radius: 0.2em;">${getSymbol(changes.newLineSymbol)}</span>`;
225-
}
226229
// start of range
227230
} else if (index === range.startIndex) {
228231
// current range all in the same node
@@ -233,9 +236,6 @@ export const getSyntaxDiffTemplateByFastDiff = ({
233236
template += `<span data-diff-highlight style="background-color: var(${operator === "add" ? addContentHighlightBGName : delContentHighlightBGName});border-top-left-radius: 0.2em;border-bottom-left-radius: 0.2em;">`;
234237
}
235238
template += transform(value);
236-
if (isEndStr && changes.newLineSymbol) {
237-
template += `<span data-newline-symbol>${getSymbol(changes.newLineSymbol)}</span>`;
238-
}
239239
if (isLastStr) {
240240
template += `</span>`;
241241
} else if (range.startIndex === range.endIndex) {
@@ -260,9 +260,6 @@ export const getSyntaxDiffTemplateByFastDiff = ({
260260
`<span data-diff-highlight style="background-color: var(${operator === "add" ? addContentHighlightBGName : delContentHighlightBGName});">`;
261261
}
262262
template += transform(value);
263-
if (isEndStr && changes.newLineSymbol) {
264-
template += `<span data-newline-symbol>${getSymbol(changes.newLineSymbol)}</span>`;
265-
}
266263
if (isLastStr) {
267264
template += `</span>`;
268265
}
@@ -278,16 +275,17 @@ export const getSyntaxDiffTemplateByFastDiff = ({
278275
}
279276
template += transform(value);
280277
}
281-
if (isEndStr && changes.newLineSymbol) {
282-
template += `<span data-newline-symbol>${getSymbol(changes.newLineSymbol)}</span>`;
283-
}
284278
template += `</span>`;
285279
rangeIndex++;
286280
range = allRange[rangeIndex];
287281
// after range
288282
}
289283
} else {
290284
template += transform(value);
285+
if (noDiff && isEndStr && changes.newLineSymbol) {
286+
template += `<span data-diff-highlight style="background-color: var(${operator === "add" ? addContentHighlightBGName : delContentHighlightBGName});border-radius: 0.2em;">`;
287+
template += `<span data-newline-symbol>${getSymbol(changes.newLineSymbol)}</span></span>`;
288+
}
291289
}
292290
}
293291
template += `</span>`;

packages/file/index.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,11 +312,12 @@ export declare class DiffLine {
312312
readonly noTrailingNewLine: boolean;
313313
changes?: IRange;
314314
diffChanges?: DiffRange;
315+
_diffChanges?: DiffRange;
315316
plainTemplate?: string;
316317
plainTemplateMode?: "fast-diff" | "relative";
317318
syntaxTemplate?: string;
318319
syntaxTemplateMode?: "fast-diff" | "relative";
319-
constructor(text: string, type: DiffLineType, originalLineNumber: number | null, oldLineNumber: number | null, newLineNumber: number | null, noTrailingNewLine?: boolean, changes?: IRange, diffChanges?: DiffRange, plainTemplate?: string, plainTemplateMode?: "fast-diff" | "relative", syntaxTemplate?: string, syntaxTemplateMode?: "fast-diff" | "relative");
320+
constructor(text: string, type: DiffLineType, originalLineNumber: number | null, oldLineNumber: number | null, newLineNumber: number | null, noTrailingNewLine?: boolean, changes?: IRange, diffChanges?: DiffRange, _diffChanges?: DiffRange, plainTemplate?: string, plainTemplateMode?: "fast-diff" | "relative", syntaxTemplate?: string, syntaxTemplateMode?: "fast-diff" | "relative");
320321
withNoTrailingNewLine(noTrailingNewLine: boolean): DiffLine;
321322
isIncludeableLine(): boolean;
322323
equals(other: DiffLine): boolean;

packages/react/index.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,11 +312,12 @@ export declare class DiffLine {
312312
readonly noTrailingNewLine: boolean;
313313
changes?: IRange;
314314
diffChanges?: DiffRange;
315+
_diffChanges?: DiffRange;
315316
plainTemplate?: string;
316317
plainTemplateMode?: "fast-diff" | "relative";
317318
syntaxTemplate?: string;
318319
syntaxTemplateMode?: "fast-diff" | "relative";
319-
constructor(text: string, type: DiffLineType, originalLineNumber: number | null, oldLineNumber: number | null, newLineNumber: number | null, noTrailingNewLine?: boolean, changes?: IRange, diffChanges?: DiffRange, plainTemplate?: string, plainTemplateMode?: "fast-diff" | "relative", syntaxTemplate?: string, syntaxTemplateMode?: "fast-diff" | "relative");
320+
constructor(text: string, type: DiffLineType, originalLineNumber: number | null, oldLineNumber: number | null, newLineNumber: number | null, noTrailingNewLine?: boolean, changes?: IRange, diffChanges?: DiffRange, _diffChanges?: DiffRange, plainTemplate?: string, plainTemplateMode?: "fast-diff" | "relative", syntaxTemplate?: string, syntaxTemplateMode?: "fast-diff" | "relative");
320321
withNoTrailingNewLine(noTrailingNewLine: boolean): DiffLine;
321322
isIncludeableLine(): boolean;
322323
equals(other: DiffLine): boolean;

packages/solid/index.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,11 +312,12 @@ export declare class DiffLine {
312312
readonly noTrailingNewLine: boolean;
313313
changes?: IRange;
314314
diffChanges?: DiffRange;
315+
_diffChanges?: DiffRange;
315316
plainTemplate?: string;
316317
plainTemplateMode?: "fast-diff" | "relative";
317318
syntaxTemplate?: string;
318319
syntaxTemplateMode?: "fast-diff" | "relative";
319-
constructor(text: string, type: DiffLineType, originalLineNumber: number | null, oldLineNumber: number | null, newLineNumber: number | null, noTrailingNewLine?: boolean, changes?: IRange, diffChanges?: DiffRange, plainTemplate?: string, plainTemplateMode?: "fast-diff" | "relative", syntaxTemplate?: string, syntaxTemplateMode?: "fast-diff" | "relative");
320+
constructor(text: string, type: DiffLineType, originalLineNumber: number | null, oldLineNumber: number | null, newLineNumber: number | null, noTrailingNewLine?: boolean, changes?: IRange, diffChanges?: DiffRange, _diffChanges?: DiffRange, plainTemplate?: string, plainTemplateMode?: "fast-diff" | "relative", syntaxTemplate?: string, syntaxTemplateMode?: "fast-diff" | "relative");
320321
withNoTrailingNewLine(noTrailingNewLine: boolean): DiffLine;
321322
isIncludeableLine(): boolean;
322323
equals(other: DiffLine): boolean;

packages/vue/index.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,11 +312,12 @@ export declare class DiffLine {
312312
readonly noTrailingNewLine: boolean;
313313
changes?: IRange;
314314
diffChanges?: DiffRange;
315+
_diffChanges?: DiffRange;
315316
plainTemplate?: string;
316317
plainTemplateMode?: "fast-diff" | "relative";
317318
syntaxTemplate?: string;
318319
syntaxTemplateMode?: "fast-diff" | "relative";
319-
constructor(text: string, type: DiffLineType, originalLineNumber: number | null, oldLineNumber: number | null, newLineNumber: number | null, noTrailingNewLine?: boolean, changes?: IRange, diffChanges?: DiffRange, plainTemplate?: string, plainTemplateMode?: "fast-diff" | "relative", syntaxTemplate?: string, syntaxTemplateMode?: "fast-diff" | "relative");
320+
constructor(text: string, type: DiffLineType, originalLineNumber: number | null, oldLineNumber: number | null, newLineNumber: number | null, noTrailingNewLine?: boolean, changes?: IRange, diffChanges?: DiffRange, _diffChanges?: DiffRange, plainTemplate?: string, plainTemplateMode?: "fast-diff" | "relative", syntaxTemplate?: string, syntaxTemplateMode?: "fast-diff" | "relative");
320321
withNoTrailingNewLine(noTrailingNewLine: boolean): DiffLine;
321322
isIncludeableLine(): boolean;
322323
equals(other: DiffLine): boolean;

0 commit comments

Comments
 (0)