@pierre/diffs 1.4.2 → 1.5.0
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/CodeView.d.ts +2 -4
- package/dist/components/CodeView.d.ts.map +1 -1
- package/dist/components/CodeView.js +23 -12
- package/dist/components/CodeView.js.map +1 -1
- package/dist/components/File.d.ts +3 -0
- package/dist/components/File.d.ts.map +1 -1
- package/dist/components/File.js +10 -0
- package/dist/components/File.js.map +1 -1
- package/dist/components/FileDiff.d.ts +19 -1
- package/dist/components/FileDiff.d.ts.map +1 -1
- package/dist/components/FileDiff.js +51 -15
- package/dist/components/FileDiff.js.map +1 -1
- package/dist/components/VirtualizedFile.d.ts.map +1 -1
- package/dist/components/VirtualizedFile.js +18 -19
- package/dist/components/VirtualizedFile.js.map +1 -1
- package/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
- package/dist/components/VirtualizedFileDiff.js +25 -22
- package/dist/components/VirtualizedFileDiff.js.map +1 -1
- package/dist/constants.d.ts +1 -3
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -3
- package/dist/constants.js.map +1 -1
- package/dist/editor/editor.d.ts.map +1 -1
- package/dist/editor/editor.js +21 -10
- package/dist/editor/editor.js.map +1 -1
- package/dist/editor/textMeasure.d.ts.map +1 -1
- package/dist/editor/textMeasure.js +27 -3
- package/dist/editor/textMeasure.js.map +1 -1
- package/dist/highlighter/languages/attachResolvedLanguages.js +8 -1
- package/dist/highlighter/languages/attachResolvedLanguages.js.map +1 -1
- package/dist/highlighter/languages/registerCustomLanguage.d.ts +3 -1
- package/dist/highlighter/languages/registerCustomLanguage.d.ts.map +1 -1
- package/dist/highlighter/languages/registerCustomLanguage.js +3 -1
- package/dist/highlighter/languages/registerCustomLanguage.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/react/utils/useFileDiffInstance.d.ts.map +1 -1
- package/dist/react/utils/useFileDiffInstance.js +47 -11
- package/dist/react/utils/useFileDiffInstance.js.map +1 -1
- package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
- package/dist/renderers/DiffHunksRenderer.js +20 -13
- package/dist/renderers/DiffHunksRenderer.js.map +1 -1
- package/dist/renderers/FileRenderer.d.ts.map +1 -1
- package/dist/renderers/FileRenderer.js +30 -11
- package/dist/renderers/FileRenderer.js.map +1 -1
- package/dist/sprite.d.ts +2 -2
- package/dist/sprite.d.ts.map +1 -1
- package/dist/sprite.js +57 -0
- package/dist/sprite.js.map +1 -1
- package/dist/utils/editSessionHunks.d.ts +5 -4
- package/dist/utils/editSessionHunks.d.ts.map +1 -1
- package/dist/utils/editSessionHunks.js +32 -9
- package/dist/utils/editSessionHunks.js.map +1 -1
- package/dist/utils/parsePatchFiles.d.ts.map +1 -1
- package/dist/utils/parsePatchFiles.js +21 -13
- package/dist/utils/parsePatchFiles.js.map +1 -1
- package/dist/utils/parseQuotedDiffFileName.d.ts +8 -0
- package/dist/utils/parseQuotedDiffFileName.d.ts.map +1 -0
- package/dist/utils/parseQuotedDiffFileName.js +54 -0
- package/dist/utils/parseQuotedDiffFileName.js.map +1 -0
- package/dist/utils/realignChangeContent.d.ts +13 -10
- package/dist/utils/realignChangeContent.d.ts.map +1 -1
- package/dist/utils/realignChangeContent.js +23 -19
- package/dist/utils/realignChangeContent.js.map +1 -1
- package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
- package/dist/worker/WorkerPoolManager.js +40 -38
- package/dist/worker/WorkerPoolManager.js.map +1 -1
- package/dist/worker/worker-portable.js +8 -1
- package/dist/worker/worker-portable.js.map +1 -1
- package/dist/worker/worker.js +8 -1
- package/dist/worker/worker.js.map +1 -1
- package/package.json +1 -1
|
@@ -55,6 +55,7 @@ var DiffHunksRenderer = class {
|
|
|
55
55
|
if (workerManager?.isWorkingPool() !== true) this.highlighter = areThemesAttached(options.theme ?? DEFAULT_THEMES) ? getHighlighterIfLoaded() : void 0;
|
|
56
56
|
}
|
|
57
57
|
cleanUp() {
|
|
58
|
+
this.endEditSession();
|
|
58
59
|
this.recycle();
|
|
59
60
|
this.expandedHunks.clear();
|
|
60
61
|
this.workerManager = void 0;
|
|
@@ -63,11 +64,14 @@ var DiffHunksRenderer = class {
|
|
|
63
64
|
recycle() {
|
|
64
65
|
this.highlighter = void 0;
|
|
65
66
|
this.diff = void 0;
|
|
66
|
-
this.
|
|
67
|
+
if (this.editSessionActive) {
|
|
68
|
+
if (this.renderCache != null) this.renderCache.renderRange = void 0;
|
|
69
|
+
this.pendingHighlightResult = void 0;
|
|
70
|
+
this.pendingStructuralRows = void 0;
|
|
71
|
+
} else this.clearRenderCache();
|
|
67
72
|
this.additionAnnotations = {};
|
|
68
73
|
this.deletionAnnotations = {};
|
|
69
74
|
this.workerManager?.cleanUpTasks(this);
|
|
70
|
-
this.endEditSession();
|
|
71
75
|
}
|
|
72
76
|
/**
|
|
73
77
|
* Enter edit-session mode: hunk updates preserve the current region
|
|
@@ -79,10 +83,12 @@ var DiffHunksRenderer = class {
|
|
|
79
83
|
* empty additions document gets one row for the editor's caret.
|
|
80
84
|
*/
|
|
81
85
|
beginEditSession(diff, externalDiff) {
|
|
82
|
-
const { editSessionActive: wasAlreadyActive
|
|
86
|
+
const { editSessionActive: wasAlreadyActive } = this;
|
|
83
87
|
this.editSessionActive = true;
|
|
84
88
|
if (!wasAlreadyActive) this.pendingHighlightResult = void 0;
|
|
85
89
|
this.diff = diff;
|
|
90
|
+
if (wasAlreadyActive && this.renderCache != null && this.renderCache.diff !== diff) this.clearRenderCache();
|
|
91
|
+
const { renderCache } = this;
|
|
86
92
|
if (!diff.isPartial && diff.additionLines.length === 0) {
|
|
87
93
|
Object.assign(diff, recomputeEmptyDocumentDiff(diff, this.options.parseDiffOptions));
|
|
88
94
|
this.markEditSessionPass(diff);
|
|
@@ -118,6 +124,7 @@ var DiffHunksRenderer = class {
|
|
|
118
124
|
endEditSession() {
|
|
119
125
|
this.editSessionActive = false;
|
|
120
126
|
this.pendingHighlightResult = void 0;
|
|
127
|
+
if (this.diff == null) this.clearRenderCache();
|
|
121
128
|
}
|
|
122
129
|
/**
|
|
123
130
|
* Ensures that the DOM is compatible with editor render updates
|
|
@@ -304,31 +311,31 @@ var DiffHunksRenderer = class {
|
|
|
304
311
|
applyDocumentChange(textDocument) {
|
|
305
312
|
const { pendingStructuralRows, renderCache } = this;
|
|
306
313
|
this.pendingStructuralRows = void 0;
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
314
|
+
const diff = this.diff ?? renderCache?.diff;
|
|
315
|
+
if (diff == null) return;
|
|
316
|
+
const result = renderCache?.result;
|
|
310
317
|
if (diff.isPartial) throw new Error("Could not apply document change for partial diff");
|
|
311
318
|
const { additionLines: previousAdditionLines } = diff;
|
|
312
319
|
diff.additionLines = getEditorDocumentLines(textDocument);
|
|
313
|
-
result.code.additionLines = realignAdditionHastLines(previousAdditionLines, diff.additionLines, result.code.additionLines, textDocument);
|
|
320
|
+
if (result != null) result.code.additionLines = realignAdditionHastLines(previousAdditionLines, diff.additionLines, result.code.additionLines, textDocument);
|
|
314
321
|
if (diff.additionLines.length <= 1 && diff.additionLines.join("") === "") {
|
|
315
322
|
this.applyRecomputePreservingSessionType(diff, recomputeEmptyDocumentDiff(diff, this.options.parseDiffOptions));
|
|
316
|
-
result.code.additionLines[0] = createPlainAdditionLineElement(0, textDocument.getLineText(0));
|
|
317
|
-
} else if (this.editSessionActive) this.applySessionDocumentChange(diff);
|
|
323
|
+
if (result != null) result.code.additionLines[0] = createPlainAdditionLineElement(0, textDocument.getLineText(0));
|
|
324
|
+
} else if (this.editSessionActive) this.applySessionDocumentChange(diff, previousAdditionLines);
|
|
318
325
|
else Object.assign(diff, recomputeDiffHunksForEdit(diff, this.options.parseDiffOptions));
|
|
319
|
-
if (pendingStructuralRows != null) {
|
|
326
|
+
if (pendingStructuralRows != null && result != null) {
|
|
320
327
|
for (const [line, row] of pendingStructuralRows) if (line < result.code.additionLines.length) result.code.additionLines[line] = row;
|
|
321
328
|
}
|
|
322
|
-
renderCache.isDirty = true;
|
|
329
|
+
if (renderCache != null) renderCache.isDirty = true;
|
|
323
330
|
}
|
|
324
|
-
applySessionDocumentChange(diff) {
|
|
331
|
+
applySessionDocumentChange(diff, previousAdditionLines) {
|
|
325
332
|
const { parseDiffOptions } = this.options;
|
|
326
333
|
const rawLines = diff.additionLines;
|
|
327
334
|
if (shouldTopAlignAdditionRecompute(diff, rawLines)) {
|
|
328
335
|
this.applyRecomputePreservingSessionType(diff, recomputeTopAlignedAdditionDiff(diff, rawLines, parseDiffOptions));
|
|
329
336
|
return;
|
|
330
337
|
}
|
|
331
|
-
this.applyExpansionRemap(rebuildSessionHunks(diff, parseDiffOptions));
|
|
338
|
+
this.applyExpansionRemap(rebuildSessionHunks(diff, parseDiffOptions, (index) => previousAdditionLines[index]));
|
|
332
339
|
}
|
|
333
340
|
applyRecomputePreservingSessionType(diff, update) {
|
|
334
341
|
const sessionType = this.editSessionActive ? diff.type : void 0;
|