@pierre/diffs 1.3.0-beta.9 → 1.3.0-rc.2
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/README.md +9 -0
- package/dist/components/CodeView.d.ts +12 -13
- package/dist/components/CodeView.d.ts.map +1 -1
- package/dist/components/CodeView.js +50 -58
- package/dist/components/CodeView.js.map +1 -1
- package/dist/components/File.d.ts +10 -3
- package/dist/components/File.d.ts.map +1 -1
- package/dist/components/File.js +41 -10
- package/dist/components/File.js.map +1 -1
- package/dist/components/FileDiff.d.ts +37 -6
- package/dist/components/FileDiff.d.ts.map +1 -1
- package/dist/components/FileDiff.js +202 -19
- package/dist/components/FileDiff.js.map +1 -1
- package/dist/components/UnresolvedFile.d.ts.map +1 -1
- package/dist/components/UnresolvedFile.js +7 -2
- package/dist/components/UnresolvedFile.js.map +1 -1
- package/dist/components/VirtualizedFile.d.ts +2 -1
- package/dist/components/VirtualizedFile.d.ts.map +1 -1
- package/dist/components/VirtualizedFile.js +9 -5
- package/dist/components/VirtualizedFile.js.map +1 -1
- package/dist/components/VirtualizedFileDiff.d.ts +14 -0
- package/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
- package/dist/components/VirtualizedFileDiff.js +61 -3
- package/dist/components/VirtualizedFileDiff.js.map +1 -1
- package/dist/components/Virtualizer.d.ts +14 -2
- package/dist/components/Virtualizer.d.ts.map +1 -1
- package/dist/components/Virtualizer.js +27 -2
- package/dist/components/Virtualizer.js.map +1 -1
- package/dist/edit/index.d.ts +5 -0
- package/dist/edit/index.js +3 -0
- package/dist/editor/command.d.ts +1 -1
- package/dist/editor/command.d.ts.map +1 -1
- package/dist/editor/command.js +11 -0
- package/dist/editor/command.js.map +1 -1
- package/dist/editor/editStack.d.ts +6 -2
- package/dist/editor/editStack.d.ts.map +1 -1
- package/dist/editor/editStack.js +53 -12
- package/dist/editor/editStack.js.map +1 -1
- package/dist/editor/editor.d.ts +51 -23
- package/dist/editor/editor.d.ts.map +1 -1
- package/dist/editor/editor.js +977 -241
- package/dist/editor/editor.js.map +1 -1
- package/dist/editor/editor2.js +1 -1
- package/dist/editor/languages.d.ts +26 -0
- package/dist/editor/languages.d.ts.map +1 -0
- package/dist/editor/languages.js +363 -0
- package/dist/editor/languages.js.map +1 -0
- package/dist/editor/lineAnnotations.d.ts.map +1 -1
- package/dist/editor/lineAnnotations.js +25 -26
- package/dist/editor/lineAnnotations.js.map +1 -1
- package/dist/editor/marker.d.ts +5 -3
- package/dist/editor/marker.d.ts.map +1 -1
- package/dist/editor/marker.js +111 -91
- package/dist/editor/marker.js.map +1 -1
- package/dist/editor/matchBrackets.d.ts +3 -2
- package/dist/editor/matchBrackets.d.ts.map +1 -1
- package/dist/editor/matchBrackets.js +2 -10
- package/dist/editor/matchBrackets.js.map +1 -1
- package/dist/editor/pieceTable.d.ts +2 -1
- package/dist/editor/pieceTable.d.ts.map +1 -1
- package/dist/editor/pieceTable.js +103 -39
- package/dist/editor/pieceTable.js.map +1 -1
- package/dist/editor/platform.js +2 -0
- package/dist/editor/platform.js.map +1 -1
- package/dist/editor/popover.d.ts +25 -5
- package/dist/editor/popover.d.ts.map +1 -1
- package/dist/editor/popover.js +60 -14
- package/dist/editor/popover.js.map +1 -1
- package/dist/editor/searchPanel.d.ts.map +1 -1
- package/dist/editor/searchPanel.js +9 -2
- package/dist/editor/searchPanel.js.map +1 -1
- package/dist/editor/selection.d.ts +31 -11
- package/dist/editor/selection.d.ts.map +1 -1
- package/dist/editor/selection.js +198 -70
- package/dist/editor/selection.js.map +1 -1
- package/dist/editor/selectionAction.d.ts +4 -3
- package/dist/editor/selectionAction.d.ts.map +1 -1
- package/dist/editor/selectionAction.js +9 -5
- package/dist/editor/selectionAction.js.map +1 -1
- package/dist/editor/stateStorage.d.ts +15 -0
- package/dist/editor/stateStorage.d.ts.map +1 -0
- package/dist/editor/stateStorage.js +65 -0
- package/dist/editor/stateStorage.js.map +1 -0
- package/dist/editor/textDocument.d.ts +12 -77
- package/dist/editor/textDocument.d.ts.map +1 -1
- package/dist/editor/textDocument.js +76 -34
- package/dist/editor/textDocument.js.map +1 -1
- package/dist/editor/textMeasure.d.ts +7 -12
- package/dist/editor/textMeasure.d.ts.map +1 -1
- package/dist/editor/textMeasure.js +40 -32
- package/dist/editor/textMeasure.js.map +1 -1
- package/dist/editor/{tokenzier.d.ts → tokenizer.d.ts} +3 -3
- package/dist/editor/tokenizer.d.ts.map +1 -0
- package/dist/editor/{tokenzier.js → tokenizer.js} +170 -50
- package/dist/editor/tokenizer.js.map +1 -0
- package/dist/editor/utils.js +1 -1
- package/dist/editor/utils.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +6 -5
- package/dist/managers/InteractionManager.d.ts +18 -7
- package/dist/managers/InteractionManager.d.ts.map +1 -1
- package/dist/managers/InteractionManager.js +154 -99
- package/dist/managers/InteractionManager.js.map +1 -1
- package/dist/managers/UniversalRenderingManager.d.ts.map +1 -1
- package/dist/managers/UniversalRenderingManager.js +1 -2
- package/dist/managers/UniversalRenderingManager.js.map +1 -1
- package/dist/react/CodeView.d.ts +13 -13
- package/dist/react/CodeView.d.ts.map +1 -1
- package/dist/react/CodeView.js +37 -28
- package/dist/react/CodeView.js.map +1 -1
- package/dist/react/EditContext.d.ts +20 -0
- package/dist/react/EditContext.d.ts.map +1 -0
- package/dist/react/EditContext.js +20 -0
- package/dist/react/EditContext.js.map +1 -0
- package/dist/react/File.d.ts +2 -1
- package/dist/react/File.d.ts.map +1 -1
- package/dist/react/File.js +3 -2
- package/dist/react/File.js.map +1 -1
- package/dist/react/FileDiff.d.ts +2 -2
- package/dist/react/FileDiff.d.ts.map +1 -1
- package/dist/react/FileDiff.js +3 -2
- package/dist/react/FileDiff.js.map +1 -1
- package/dist/react/MultiFileDiff.d.ts +2 -2
- package/dist/react/MultiFileDiff.d.ts.map +1 -1
- package/dist/react/MultiFileDiff.js +3 -2
- package/dist/react/MultiFileDiff.js.map +1 -1
- package/dist/react/PatchDiff.d.ts +2 -2
- package/dist/react/PatchDiff.d.ts.map +1 -1
- package/dist/react/PatchDiff.js +3 -2
- package/dist/react/PatchDiff.js.map +1 -1
- package/dist/react/UnresolvedFile.d.ts +1 -1
- package/dist/react/UnresolvedFile.js.map +1 -1
- package/dist/react/index.d.ts +4 -4
- package/dist/react/index.js +3 -3
- package/dist/react/types.d.ts +9 -1
- package/dist/react/types.d.ts.map +1 -1
- package/dist/react/utils/useFileDiffInstance.d.ts +5 -3
- package/dist/react/utils/useFileDiffInstance.d.ts.map +1 -1
- package/dist/react/utils/useFileDiffInstance.js +24 -34
- package/dist/react/utils/useFileDiffInstance.js.map +1 -1
- package/dist/react/utils/useFileInstance.d.ts +5 -3
- package/dist/react/utils/useFileInstance.d.ts.map +1 -1
- package/dist/react/utils/useFileInstance.js +23 -33
- package/dist/react/utils/useFileInstance.js.map +1 -1
- package/dist/react/utils/useUnresolvedFileInstance.js +4 -4
- package/dist/react/utils/useUnresolvedFileInstance.js.map +1 -1
- package/dist/renderers/DiffHunksRenderer.d.ts +41 -1
- package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
- package/dist/renderers/DiffHunksRenderer.js +167 -29
- package/dist/renderers/DiffHunksRenderer.js.map +1 -1
- package/dist/renderers/FileRenderer.d.ts +20 -1
- package/dist/renderers/FileRenderer.d.ts.map +1 -1
- package/dist/renderers/FileRenderer.js +119 -29
- package/dist/renderers/FileRenderer.js.map +1 -1
- package/dist/ssr/index.d.ts +2 -2
- package/dist/ssr/preloadDiffs.d.ts.map +1 -1
- package/dist/ssr/preloadDiffs.js +3 -1
- package/dist/ssr/preloadDiffs.js.map +1 -1
- package/dist/ssr/preloadFile.d.ts.map +1 -1
- package/dist/ssr/preloadFile.js +2 -0
- package/dist/ssr/preloadFile.js.map +1 -1
- package/dist/style.js +1 -1
- package/dist/types.d.ts +192 -42
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/annotationHelpers.d.ts +20 -0
- package/dist/utils/annotationHelpers.d.ts.map +1 -0
- package/dist/utils/annotationHelpers.js +29 -0
- package/dist/utils/annotationHelpers.js.map +1 -0
- package/dist/utils/computeFileOffsets.d.ts.map +1 -1
- package/dist/utils/computeFileOffsets.js +34 -5
- package/dist/utils/computeFileOffsets.js.map +1 -1
- package/dist/utils/editSessionHunks.d.ts +66 -0
- package/dist/utils/editSessionHunks.d.ts.map +1 -0
- package/dist/utils/editSessionHunks.js +437 -0
- package/dist/utils/editSessionHunks.js.map +1 -0
- package/dist/utils/getDiffHunksRendererOptions.d.ts.map +1 -1
- package/dist/utils/getDiffHunksRendererOptions.js +2 -1
- package/dist/utils/getDiffHunksRendererOptions.js.map +1 -1
- package/dist/utils/getFileRendererOptions.d.ts.map +1 -1
- package/dist/utils/getFileRendererOptions.js +2 -1
- package/dist/utils/getFileRendererOptions.js.map +1 -1
- package/dist/utils/getHunkSideBoundaries.d.ts +7 -0
- package/dist/utils/getHunkSideBoundaries.d.ts.map +1 -0
- package/dist/utils/getHunkSideBoundaries.js +12 -0
- package/dist/utils/getHunkSideBoundaries.js.map +1 -0
- package/dist/utils/getTotalLineCountFromHunks.d.ts.map +1 -1
- package/dist/utils/getTotalLineCountFromHunks.js +2 -1
- package/dist/utils/getTotalLineCountFromHunks.js.map +1 -1
- package/dist/utils/hydratePartialDiff.d.ts.map +1 -1
- package/dist/utils/hydratePartialDiff.js +4 -3
- package/dist/utils/hydratePartialDiff.js.map +1 -1
- package/dist/utils/isGutterUtilityPath.d.ts +5 -0
- package/dist/utils/isGutterUtilityPath.d.ts.map +1 -0
- package/dist/utils/isGutterUtilityPath.js +12 -0
- package/dist/utils/isGutterUtilityPath.js.map +1 -0
- package/dist/utils/iterateOverDiff.d.ts.map +1 -1
- package/dist/utils/iterateOverDiff.js +17 -12
- package/dist/utils/iterateOverDiff.js.map +1 -1
- package/dist/utils/parseMergeConflictDiffFromFile.d.ts.map +1 -1
- package/dist/utils/parseMergeConflictDiffFromFile.js +9 -6
- package/dist/utils/parseMergeConflictDiffFromFile.js.map +1 -1
- package/dist/utils/parsePatchFiles.d.ts.map +1 -1
- package/dist/utils/parsePatchFiles.js +6 -3
- package/dist/utils/parsePatchFiles.js.map +1 -1
- package/dist/utils/realignChangeContent.d.ts +33 -0
- package/dist/utils/realignChangeContent.d.ts.map +1 -0
- package/dist/utils/realignChangeContent.js +148 -0
- package/dist/utils/realignChangeContent.js.map +1 -0
- package/dist/utils/renderDiffWithHighlighter.js +1 -1
- package/dist/utils/resolveRegion.d.ts.map +1 -1
- package/dist/utils/resolveRegion.js +18 -2
- package/dist/utils/resolveRegion.js.map +1 -1
- package/dist/utils/shouldUseTokenTransformer.d.ts +7 -3
- package/dist/utils/shouldUseTokenTransformer.d.ts.map +1 -1
- package/dist/utils/shouldUseTokenTransformer.js +1 -1
- package/dist/utils/shouldUseTokenTransformer.js.map +1 -1
- package/dist/utils/updateDiffHunks.d.ts +8 -2
- package/dist/utils/updateDiffHunks.d.ts.map +1 -1
- package/dist/utils/updateDiffHunks.js +9 -7
- package/dist/utils/updateDiffHunks.js.map +1 -1
- package/dist/utils/virtualDiffLayout.d.ts +42 -2
- package/dist/utils/virtualDiffLayout.d.ts.map +1 -1
- package/dist/utils/virtualDiffLayout.js +101 -7
- package/dist/utils/virtualDiffLayout.js.map +1 -1
- package/dist/worker/WorkerPoolManager.d.ts +2 -1
- package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
- package/dist/worker/WorkerPoolManager.js +3 -0
- package/dist/worker/WorkerPoolManager.js.map +1 -1
- package/dist/worker/worker-portable.js +60 -20
- package/dist/worker/worker-portable.js.map +1 -1
- package/dist/worker/worker.js +61 -19
- package/dist/worker/worker.js.map +1 -1
- package/package.json +10 -7
- package/dist/editor/index.d.ts +0 -3
- package/dist/editor/index.js +0 -3
- package/dist/editor/tokenzier.d.ts.map +0 -1
- package/dist/editor/tokenzier.js.map +0 -1
- package/dist/react/EditorContext.d.ts +0 -15
- package/dist/react/EditorContext.d.ts.map +0 -1
- package/dist/react/EditorContext.js +0 -23
- package/dist/react/EditorContext.js.map +0 -1
package/README.md
CHANGED
|
@@ -27,6 +27,15 @@ JavaScript and React components.
|
|
|
27
27
|
pnpm add @pierre/diffs
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
+
## Agent skill
|
|
31
|
+
|
|
32
|
+
Install the agent skill for this package with the
|
|
33
|
+
[Skills CLI](https://skills.sh/docs/cli):
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npx skills add pierrecomputer/pierre --skill diffs
|
|
37
|
+
```
|
|
38
|
+
|
|
30
39
|
## Development
|
|
31
40
|
|
|
32
41
|
We use pnpm for workspace package management and Bun for tests.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CodeViewCreateEditorOptions, CodeViewDiffItem, CodeViewFileItem, CodeViewItem, CodeViewLayout, CodeViewScrollTarget, DiffLineAnnotation,
|
|
1
|
+
import { CodeViewCreateEditorOptions, CodeViewDiffItem, CodeViewFileItem, CodeViewItem, CodeViewLayout, CodeViewScrollTarget, DiffLineAnnotation, DiffsEditor, FileContents, HunkSeparators, LineAnnotation, SelectedLineRange, SmoothScrollSettings, VirtualFileMetrics, VirtualWindowSpecs } from "../types.js";
|
|
2
2
|
import { SelectionWriteOptions } from "../managers/InteractionManager.js";
|
|
3
3
|
import { WorkerPoolManager } from "../worker/WorkerPoolManager.js";
|
|
4
4
|
import { FileOptions } from "./File.js";
|
|
@@ -107,18 +107,18 @@ interface CodeViewOptions<LAnnotation> extends CodeViewPassThroughOptions<LAnnot
|
|
|
107
107
|
* stops being editable (edit off, collapsed, or removed). Returning
|
|
108
108
|
* undefined declines the attach; CodeView retries on later render passes.
|
|
109
109
|
*/
|
|
110
|
-
createEditor?(options: CodeViewCreateEditorOptions<LAnnotation>):
|
|
110
|
+
createEditor?(options: CodeViewCreateEditorOptions<LAnnotation>): DiffsEditor<LAnnotation> | undefined;
|
|
111
111
|
/**
|
|
112
112
|
* Called when an edited item's document changes, with the owning item
|
|
113
113
|
* resolved by CodeView.
|
|
114
114
|
*/
|
|
115
|
-
onItemEditChange?(item: CodeViewItem<LAnnotation>, file: FileContents, lineAnnotations?: DiffLineAnnotation<LAnnotation>[]): void;
|
|
115
|
+
onItemEditChange?(item: CodeViewItem<LAnnotation>, file: FileContents, lineAnnotations?: LineAnnotation<LAnnotation>[] | DiffLineAnnotation<LAnnotation>[]): void;
|
|
116
116
|
/**
|
|
117
117
|
* Called once when an item's edit session ends — edit turned off, item
|
|
118
|
-
* removed (including a controlled `setItems([])` that empties the list),
|
|
119
|
-
* item collapsed
|
|
120
|
-
*
|
|
121
|
-
*
|
|
118
|
+
* removed (including a controlled `setItems([])` that empties the list), or
|
|
119
|
+
* item collapsed — with the final contents from the session's last document
|
|
120
|
+
* change. Not called when the session produced no changes, nor on a direct
|
|
121
|
+
* `reset()`/`cleanUp()` teardown.
|
|
122
122
|
*
|
|
123
123
|
* Committing is user-space: CodeView never writes item data itself. The
|
|
124
124
|
* recommended handler makes one combined item write (`updateItem` with a
|
|
@@ -126,7 +126,7 @@ interface CodeViewOptions<LAnnotation> extends CodeViewPassThroughOptions<LAnnot
|
|
|
126
126
|
* since the delivered contents differ from what the old key cached — along
|
|
127
127
|
* with `edit: false`.
|
|
128
128
|
*/
|
|
129
|
-
onItemEditComplete?(item: CodeViewItem<LAnnotation>, file: FileContents, lineAnnotations?: DiffLineAnnotation<LAnnotation>[]): void;
|
|
129
|
+
onItemEditComplete?(item: CodeViewItem<LAnnotation>, file: FileContents, lineAnnotations?: LineAnnotation<LAnnotation>[] | DiffLineAnnotation<LAnnotation>[]): void;
|
|
130
130
|
/** Render a non-virtualized element at the very start of the scroll content,
|
|
131
131
|
* before the first item. It is always rendered and scrolls with the content.
|
|
132
132
|
* Return the same element across calls and mutate it in place to update;
|
|
@@ -239,7 +239,7 @@ declare class CodeView<LAnnotation = undefined> {
|
|
|
239
239
|
* editor APIs CodeView does not wrap (applyEdits, undo, setMarkers, …).
|
|
240
240
|
* Returns undefined once the item leaves edit mode.
|
|
241
241
|
*/
|
|
242
|
-
getEditor(itemId: string):
|
|
242
|
+
getEditor(itemId: string): DiffsEditor<LAnnotation> | undefined;
|
|
243
243
|
updateItem(input: CodeViewItem<LAnnotation>): boolean;
|
|
244
244
|
updateItemId(oldId: string, newId: string): boolean;
|
|
245
245
|
addItem(input: CodeViewItem<LAnnotation>): void;
|
|
@@ -275,7 +275,6 @@ declare class CodeView<LAnnotation = undefined> {
|
|
|
275
275
|
private applySelectedLines;
|
|
276
276
|
private syncSelection;
|
|
277
277
|
private isItemInEditMode;
|
|
278
|
-
private isReceiverEdited;
|
|
279
278
|
/**
|
|
280
279
|
* Attach (or lazily create) the editor for a mounted edit-mode item. Called
|
|
281
280
|
* from the render loop so every mounted item passes through it: fresh
|
|
@@ -288,9 +287,9 @@ declare class CodeView<LAnnotation = undefined> {
|
|
|
288
287
|
private attachItemEditor;
|
|
289
288
|
/**
|
|
290
289
|
* Drop editors for items that can no longer be edited: removed, edit turned
|
|
291
|
-
* off, collapsed
|
|
292
|
-
*
|
|
293
|
-
*
|
|
290
|
+
* off, or collapsed. Attachment happens in the render loop via
|
|
291
|
+
* attachItemEditor, so this only reconciles editors CodeView is already
|
|
292
|
+
* holding.
|
|
294
293
|
*/
|
|
295
294
|
private syncItemEditors;
|
|
296
295
|
private renamePendingScrollTarget;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeView.d.ts","names":[],"sources":["../../src/components/CodeView.ts"],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"CodeView.d.ts","names":[],"sources":["../../src/components/CodeView.ts"],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import { areOptionsEqual } from "../utils/areOptionsEqual.js";
|
|
|
7
7
|
import { areSelectionsEqual } from "../utils/areSelectionsEqual.js";
|
|
8
8
|
import { createCodeViewHeaderFooterHostElement } from "../utils/createCodeViewHeaderFooterHostElement.js";
|
|
9
9
|
import { createWindowFromScrollPosition } from "../utils/createWindowFromScrollPosition.js";
|
|
10
|
+
import { finishEditSessionForDiff } from "../utils/editSessionHunks.js";
|
|
10
11
|
import { isStyleNode } from "../utils/isStyleNode.js";
|
|
11
12
|
import { prefersReducedMotion } from "../utils/prefersReducedMotion.js";
|
|
12
13
|
import { roundToDevicePixel } from "../utils/roundToDevicePixel.js";
|
|
@@ -64,13 +65,6 @@ const CODE_VIEW_FILE_OPTION_KEYS = [
|
|
|
64
65
|
"controlledSelection",
|
|
65
66
|
"disableErrorHandling"
|
|
66
67
|
];
|
|
67
|
-
const CODE_VIEW_EDIT_FORCED_OPTION_KEYS = /* @__PURE__ */ new Set([
|
|
68
|
-
"useTokenTransformer",
|
|
69
|
-
"enableGutterUtility",
|
|
70
|
-
"enableLineSelection",
|
|
71
|
-
"lineHoverHighlight",
|
|
72
|
-
"expandUnchanged"
|
|
73
|
-
]);
|
|
74
68
|
const CODE_VIEW_SHARED_CALLBACK_KEYS = [
|
|
75
69
|
"renderCustomHeader",
|
|
76
70
|
"renderHeaderPrefix",
|
|
@@ -121,6 +115,9 @@ const SCROLL_REBASE_TRIGGER_TOP = 1e6;
|
|
|
121
115
|
const SCROLL_REBASE_TARGET_TOP = 2e6;
|
|
122
116
|
const SCROLL_REBASE_TARGET_BOTTOM = SCROLL_REBASE_CONTAINER_HEIGHT - SCROLL_REBASE_TARGET_TOP;
|
|
123
117
|
const SCROLL_REBASE_THRESHOLD = SCROLL_REBASE_CONTAINER_HEIGHT - SCROLL_REBASE_TRIGGER_TOP;
|
|
118
|
+
function assertEditorFactory(createEditor) {
|
|
119
|
+
if (createEditor == null) throw new Error("CodeView: createEditor is required for items with edit: true");
|
|
120
|
+
}
|
|
124
121
|
const MOBILE_SAFARI = (() => {
|
|
125
122
|
const { navigator } = globalThis;
|
|
126
123
|
const userAgent = navigator.userAgent;
|
|
@@ -882,13 +879,7 @@ var CodeView = class CodeView {
|
|
|
882
879
|
item.instance.setSelectedLines(this.selectedLines.range, { notify: false });
|
|
883
880
|
}
|
|
884
881
|
isItemInEditMode(item) {
|
|
885
|
-
return
|
|
886
|
-
}
|
|
887
|
-
isReceiverEdited(receiver, mode) {
|
|
888
|
-
const state = getItemOptionsState(receiver);
|
|
889
|
-
if (state == null) return false;
|
|
890
|
-
const item = this.getItemOptions(state, mode);
|
|
891
|
-
return item != null && this.isItemInEditMode(item);
|
|
882
|
+
return item.item.edit === true && item.item.collapsed !== true;
|
|
892
883
|
}
|
|
893
884
|
/**
|
|
894
885
|
* Attach (or lazily create) the editor for a mounted edit-mode item. Called
|
|
@@ -902,36 +893,47 @@ var CodeView = class CodeView {
|
|
|
902
893
|
attachItemEditor(item) {
|
|
903
894
|
const { id } = item.item;
|
|
904
895
|
const { createEditor } = this.options;
|
|
905
|
-
if (
|
|
896
|
+
if (item.element == null || this.attachedEditors.has(id) || !this.isItemInEditMode(item)) return;
|
|
906
897
|
let record = this.itemEditors.get(id);
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
898
|
+
let createdEditor = false;
|
|
899
|
+
try {
|
|
900
|
+
if (record == null) {
|
|
901
|
+
assertEditorFactory(createEditor);
|
|
902
|
+
const state = { id };
|
|
903
|
+
const editor = createEditor({ onChange: (file, lineAnnotations) => {
|
|
904
|
+
const latest = this.idToItem.get(state.id);
|
|
905
|
+
if (latest == null) return;
|
|
906
|
+
state.lastChange = {
|
|
907
|
+
item: latest.item,
|
|
908
|
+
file,
|
|
909
|
+
lineAnnotations
|
|
910
|
+
};
|
|
911
|
+
this.options.onItemEditChange?.(latest.item, file, lineAnnotations);
|
|
912
|
+
} });
|
|
913
|
+
if (editor == null) return;
|
|
914
|
+
record = {
|
|
915
|
+
editor,
|
|
916
|
+
state
|
|
916
917
|
};
|
|
917
|
-
this.
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
record
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
918
|
+
this.itemEditors.set(id, record);
|
|
919
|
+
createdEditor = true;
|
|
920
|
+
}
|
|
921
|
+
record.editor.edit(item.instance);
|
|
922
|
+
this.attachedEditors.add(id);
|
|
923
|
+
} catch (error) {
|
|
924
|
+
if (createdEditor && record != null) {
|
|
925
|
+
this.itemEditors.delete(id);
|
|
926
|
+
record.editor.cleanUp();
|
|
927
|
+
}
|
|
928
|
+
this.releaseRenderedItem(item);
|
|
929
|
+
throw error;
|
|
925
930
|
}
|
|
926
|
-
if (this.selectedLines?.id === id) this.applySelectedLines(null, { notify: false });
|
|
927
|
-
record.editor.edit(item.instance);
|
|
928
|
-
this.attachedEditors.add(id);
|
|
929
931
|
}
|
|
930
932
|
/**
|
|
931
933
|
* Drop editors for items that can no longer be edited: removed, edit turned
|
|
932
|
-
* off, collapsed
|
|
933
|
-
*
|
|
934
|
-
*
|
|
934
|
+
* off, or collapsed. Attachment happens in the render loop via
|
|
935
|
+
* attachItemEditor, so this only reconciles editors CodeView is already
|
|
936
|
+
* holding.
|
|
935
937
|
*/
|
|
936
938
|
syncItemEditors() {
|
|
937
939
|
if (this.itemEditors.size === 0) return;
|
|
@@ -942,6 +944,14 @@ var CodeView = class CodeView {
|
|
|
942
944
|
record.editor.cleanUp();
|
|
943
945
|
this.itemEditors.delete(id);
|
|
944
946
|
this.attachedEditors.delete(id);
|
|
947
|
+
const itemSnapshot = item?.item ?? record.state.lastChange?.item;
|
|
948
|
+
if (itemSnapshot?.type === "diff") {
|
|
949
|
+
if (item != null && item.type === "diff" && item.instance.completeEditSession()) {
|
|
950
|
+
this.markItemLayoutDirty(item);
|
|
951
|
+
this.render();
|
|
952
|
+
}
|
|
953
|
+
finishEditSessionForDiff(itemSnapshot.fileDiff);
|
|
954
|
+
}
|
|
945
955
|
const { lastChange } = record.state;
|
|
946
956
|
if (lastChange != null) completions.push(item == null ? lastChange : {
|
|
947
957
|
...lastChange,
|
|
@@ -963,14 +973,7 @@ var CodeView = class CodeView {
|
|
|
963
973
|
}
|
|
964
974
|
createFileOptionsPrototype() {
|
|
965
975
|
const prototype = {};
|
|
966
|
-
for (const key of CODE_VIEW_FILE_OPTION_KEYS)
|
|
967
|
-
if (CODE_VIEW_EDIT_FORCED_OPTION_KEYS.has(key)) continue;
|
|
968
|
-
defineItemOption(prototype, key, () => this.options[key]);
|
|
969
|
-
}
|
|
970
|
-
defineItemOption(prototype, "useTokenTransformer", (receiver) => this.isReceiverEdited(receiver, "file") ? true : this.options.useTokenTransformer);
|
|
971
|
-
defineItemOption(prototype, "enableGutterUtility", (receiver) => this.isReceiverEdited(receiver, "file") ? false : this.options.enableGutterUtility);
|
|
972
|
-
defineItemOption(prototype, "enableLineSelection", (receiver) => this.isReceiverEdited(receiver, "file") ? false : this.options.enableLineSelection);
|
|
973
|
-
defineItemOption(prototype, "lineHoverHighlight", (receiver) => this.isReceiverEdited(receiver, "file") ? "disabled" : this.options.lineHoverHighlight);
|
|
976
|
+
for (const key of CODE_VIEW_FILE_OPTION_KEYS) defineItemOption(prototype, key, () => this.options[key]);
|
|
974
977
|
defineItemOption(prototype, "stickyHeader", () => this.options.stickyHeaders);
|
|
975
978
|
defineItemOption(prototype, "collapsed", (receiver) => {
|
|
976
979
|
const state = getItemOptionsState(receiver);
|
|
@@ -983,15 +986,7 @@ var CodeView = class CodeView {
|
|
|
983
986
|
}
|
|
984
987
|
createDiffOptionsPrototype() {
|
|
985
988
|
const prototype = {};
|
|
986
|
-
for (const key of CODE_VIEW_DIFF_OPTION_KEYS)
|
|
987
|
-
if (CODE_VIEW_EDIT_FORCED_OPTION_KEYS.has(key)) continue;
|
|
988
|
-
defineItemOption(prototype, key, () => this.options[key]);
|
|
989
|
-
}
|
|
990
|
-
defineItemOption(prototype, "useTokenTransformer", (receiver) => this.isReceiverEdited(receiver, "diff") ? true : this.options.useTokenTransformer);
|
|
991
|
-
defineItemOption(prototype, "enableGutterUtility", (receiver) => this.isReceiverEdited(receiver, "diff") ? false : this.options.enableGutterUtility);
|
|
992
|
-
defineItemOption(prototype, "enableLineSelection", (receiver) => this.isReceiverEdited(receiver, "diff") ? false : this.options.enableLineSelection);
|
|
993
|
-
defineItemOption(prototype, "lineHoverHighlight", (receiver) => this.isReceiverEdited(receiver, "diff") ? "disabled" : this.options.lineHoverHighlight);
|
|
994
|
-
defineItemOption(prototype, "expandUnchanged", (receiver) => this.isReceiverEdited(receiver, "diff") ? true : this.options.expandUnchanged);
|
|
989
|
+
for (const key of CODE_VIEW_DIFF_OPTION_KEYS) defineItemOption(prototype, key, () => this.options[key]);
|
|
995
990
|
defineItemOption(prototype, "stickyHeader", () => this.options.stickyHeaders);
|
|
996
991
|
defineItemOption(prototype, "hunkSeparators", () => this.options.hunkSeparators);
|
|
997
992
|
defineItemOption(prototype, "collapsed", (receiver) => {
|
|
@@ -1044,11 +1039,8 @@ var CodeView = class CodeView {
|
|
|
1044
1039
|
}
|
|
1045
1040
|
defineItemSelectionCallback(options, mode, key) {
|
|
1046
1041
|
defineItemOption(options, key, (receiver) => {
|
|
1047
|
-
if (this.options.enableLineSelection !== true) return;
|
|
1048
1042
|
const state = getItemOptionsState(receiver);
|
|
1049
1043
|
if (state == null) return;
|
|
1050
|
-
const item = this.getItemOptions(state, mode);
|
|
1051
|
-
if (item != null && this.isItemInEditMode(item)) return;
|
|
1052
1044
|
const callbackCache = state.callbackCache ??= {};
|
|
1053
1045
|
let wrapped = callbackCache[key];
|
|
1054
1046
|
if (wrapped == null) {
|