@pierre/diffs 1.2.12 → 1.3.0-beta.10
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 +91 -6
- package/dist/components/CodeView.d.ts.map +1 -1
- package/dist/components/CodeView.js +300 -38
- package/dist/components/CodeView.js.map +1 -1
- package/dist/components/File.d.ts +14 -3
- package/dist/components/File.d.ts.map +1 -1
- package/dist/components/File.js +98 -12
- package/dist/components/File.js.map +1 -1
- package/dist/components/FileDiff.d.ts +68 -19
- package/dist/components/FileDiff.d.ts.map +1 -1
- package/dist/components/FileDiff.js +363 -25
- package/dist/components/FileDiff.js.map +1 -1
- package/dist/components/FileStream.d.ts.map +1 -1
- package/dist/components/FileStream.js +2 -1
- package/dist/components/FileStream.js.map +1 -1
- package/dist/components/UnresolvedFile.d.ts +2 -2
- package/dist/components/UnresolvedFile.d.ts.map +1 -1
- package/dist/components/UnresolvedFile.js +2 -2
- package/dist/components/UnresolvedFile.js.map +1 -1
- package/dist/components/VirtualizedFile.d.ts +4 -2
- package/dist/components/VirtualizedFile.d.ts.map +1 -1
- package/dist/components/VirtualizedFile.js +59 -47
- package/dist/components/VirtualizedFile.js.map +1 -1
- package/dist/components/VirtualizedFileDiff.d.ts +27 -5
- package/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
- package/dist/components/VirtualizedFileDiff.js +262 -56
- package/dist/components/VirtualizedFileDiff.js.map +1 -1
- package/dist/components/Virtualizer.d.ts +4 -1
- package/dist/components/Virtualizer.d.ts.map +1 -1
- package/dist/components/Virtualizer.js +21 -4
- package/dist/components/Virtualizer.js.map +1 -1
- package/dist/constants.d.ts +4 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +4 -1
- package/dist/constants.js.map +1 -1
- package/dist/editor/command.d.ts +7 -0
- package/dist/editor/command.d.ts.map +1 -0
- package/dist/editor/command.js +54 -0
- package/dist/editor/command.js.map +1 -0
- package/dist/editor/editStack.d.ts +71 -0
- package/dist/editor/editStack.d.ts.map +1 -0
- package/dist/editor/editStack.js +218 -0
- package/dist/editor/editStack.js.map +1 -0
- package/dist/editor/editor.d.ts +105 -0
- package/dist/editor/editor.d.ts.map +1 -0
- package/dist/editor/editor.js +2545 -0
- package/dist/editor/editor.js.map +1 -0
- package/dist/editor/editor2.js +6 -0
- package/dist/editor/editor2.js.map +1 -0
- package/dist/editor/index.d.ts +5 -0
- package/dist/editor/index.js +3 -0
- 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 +9 -0
- package/dist/editor/lineAnnotations.d.ts.map +1 -0
- package/dist/editor/lineAnnotations.js +212 -0
- package/dist/editor/lineAnnotations.js.map +1 -0
- package/dist/editor/marker.d.ts +38 -0
- package/dist/editor/marker.d.ts.map +1 -0
- package/dist/editor/marker.js +245 -0
- package/dist/editor/marker.js.map +1 -0
- package/dist/editor/matchBrackets.d.ts +9 -0
- package/dist/editor/matchBrackets.d.ts.map +1 -0
- package/dist/editor/matchBrackets.js +138 -0
- package/dist/editor/matchBrackets.js.map +1 -0
- package/dist/editor/pieceTable.d.ts +41 -0
- package/dist/editor/pieceTable.d.ts.map +1 -0
- package/dist/editor/pieceTable.js +671 -0
- package/dist/editor/pieceTable.js.map +1 -0
- package/dist/editor/platform.d.ts +19 -0
- package/dist/editor/platform.d.ts.map +1 -0
- package/dist/editor/platform.js +57 -0
- package/dist/editor/platform.js.map +1 -0
- package/dist/editor/popover.d.ts +65 -0
- package/dist/editor/popover.d.ts.map +1 -0
- package/dist/editor/popover.js +187 -0
- package/dist/editor/popover.js.map +1 -0
- package/dist/editor/searchPanel.d.ts +40 -0
- package/dist/editor/searchPanel.d.ts.map +1 -0
- package/dist/editor/searchPanel.js +318 -0
- package/dist/editor/searchPanel.js.map +1 -0
- package/dist/editor/selection.d.ts +211 -0
- package/dist/editor/selection.d.ts.map +1 -0
- package/dist/editor/selection.js +1626 -0
- package/dist/editor/selection.js.map +1 -0
- package/dist/editor/selectionAction.d.ts +46 -0
- package/dist/editor/selectionAction.d.ts.map +1 -0
- package/dist/editor/selectionAction.js +64 -0
- package/dist/editor/selectionAction.js.map +1 -0
- package/dist/editor/sprite.d.ts +8 -0
- package/dist/editor/sprite.d.ts.map +1 -0
- package/dist/editor/sprite.js +45 -0
- package/dist/editor/sprite.js.map +1 -0
- 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 +77 -0
- package/dist/editor/textDocument.d.ts.map +1 -0
- package/dist/editor/textDocument.js +271 -0
- package/dist/editor/textDocument.js.map +1 -0
- package/dist/editor/textMeasure.d.ts +61 -0
- package/dist/editor/textMeasure.d.ts.map +1 -0
- package/dist/editor/textMeasure.js +209 -0
- package/dist/editor/textMeasure.js.map +1 -0
- package/dist/editor/tokenizer.d.ts +41 -0
- package/dist/editor/tokenizer.d.ts.map +1 -0
- package/dist/editor/tokenizer.js +513 -0
- package/dist/editor/tokenizer.js.map +1 -0
- package/dist/editor/utils.d.ts +21 -0
- package/dist/editor/utils.d.ts.map +1 -0
- package/dist/editor/utils.js +68 -0
- package/dist/editor/utils.js.map +1 -0
- package/dist/index.d.ts +10 -8
- package/dist/index.js +12 -10
- package/dist/managers/InteractionManager.d.ts +7 -0
- package/dist/managers/InteractionManager.d.ts.map +1 -1
- package/dist/managers/InteractionManager.js +22 -1
- package/dist/managers/InteractionManager.js.map +1 -1
- package/dist/managers/ResizeManager.d.ts +10 -2
- package/dist/managers/ResizeManager.d.ts.map +1 -1
- package/dist/managers/ResizeManager.js +33 -13
- package/dist/managers/ResizeManager.js.map +1 -1
- package/dist/managers/UniversalRenderingManager.d.ts +2 -1
- package/dist/managers/UniversalRenderingManager.d.ts.map +1 -1
- package/dist/managers/UniversalRenderingManager.js +6 -1
- package/dist/managers/UniversalRenderingManager.js.map +1 -1
- package/dist/react/CodeView.d.ts +26 -1
- package/dist/react/CodeView.d.ts.map +1 -1
- package/dist/react/CodeView.js +82 -19
- package/dist/react/CodeView.js.map +1 -1
- package/dist/react/EditContext.d.ts +15 -0
- package/dist/react/EditContext.d.ts.map +1 -0
- package/dist/react/EditContext.js +23 -0
- package/dist/react/EditContext.js.map +1 -0
- package/dist/react/File.d.ts +3 -1
- package/dist/react/File.d.ts.map +1 -1
- package/dist/react/File.js +4 -2
- package/dist/react/File.js.map +1 -1
- package/dist/react/FileDiff.d.ts +4 -1
- package/dist/react/FileDiff.d.ts.map +1 -1
- package/dist/react/FileDiff.js +4 -2
- package/dist/react/FileDiff.js.map +1 -1
- package/dist/react/MultiFileDiff.d.ts +7 -5
- package/dist/react/MultiFileDiff.d.ts.map +1 -1
- package/dist/react/MultiFileDiff.js +4 -2
- package/dist/react/MultiFileDiff.js.map +1 -1
- package/dist/react/PatchDiff.d.ts +4 -1
- package/dist/react/PatchDiff.d.ts.map +1 -1
- package/dist/react/PatchDiff.js +4 -2
- package/dist/react/PatchDiff.js.map +1 -1
- package/dist/react/UnresolvedFile.d.ts +1 -0
- package/dist/react/UnresolvedFile.d.ts.map +1 -1
- package/dist/react/UnresolvedFile.js +2 -1
- package/dist/react/UnresolvedFile.js.map +1 -1
- package/dist/react/index.d.ts +3 -2
- package/dist/react/index.js +2 -1
- package/dist/react/types.d.ts +3 -0
- package/dist/react/types.d.ts.map +1 -1
- package/dist/react/utils/renderDiffChildren.d.ts +2 -0
- package/dist/react/utils/renderDiffChildren.d.ts.map +1 -1
- package/dist/react/utils/renderDiffChildren.js +16 -8
- package/dist/react/utils/renderDiffChildren.js.map +1 -1
- package/dist/react/utils/renderFileChildren.d.ts +2 -0
- package/dist/react/utils/renderFileChildren.d.ts.map +1 -1
- package/dist/react/utils/renderFileChildren.js +16 -8
- package/dist/react/utils/renderFileChildren.js.map +1 -1
- package/dist/react/utils/useFileDiffInstance.d.ts +3 -1
- package/dist/react/utils/useFileDiffInstance.d.ts.map +1 -1
- package/dist/react/utils/useFileDiffInstance.js +30 -6
- package/dist/react/utils/useFileDiffInstance.js.map +1 -1
- package/dist/react/utils/useFileInstance.d.ts +4 -1
- package/dist/react/utils/useFileInstance.d.ts.map +1 -1
- package/dist/react/utils/useFileInstance.js +30 -5
- package/dist/react/utils/useFileInstance.js.map +1 -1
- package/dist/renderers/DiffHunksRenderer.d.ts +28 -2
- package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
- package/dist/renderers/DiffHunksRenderer.js +244 -22
- package/dist/renderers/DiffHunksRenderer.js.map +1 -1
- package/dist/renderers/FileRenderer.d.ts +8 -1
- package/dist/renderers/FileRenderer.d.ts.map +1 -1
- package/dist/renderers/FileRenderer.js +155 -45
- package/dist/renderers/FileRenderer.js.map +1 -1
- package/dist/ssr/index.d.ts +2 -2
- package/dist/ssr/preloadDiffs.d.ts +11 -10
- package/dist/ssr/preloadDiffs.d.ts.map +1 -1
- package/dist/ssr/preloadDiffs.js +15 -7
- package/dist/ssr/preloadDiffs.js.map +1 -1
- package/dist/style.js +1 -1
- package/dist/types.d.ts +282 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/applyLineTextWithNewline.d.ts +5 -0
- package/dist/utils/applyLineTextWithNewline.d.ts.map +1 -0
- package/dist/utils/applyLineTextWithNewline.js +11 -0
- package/dist/utils/applyLineTextWithNewline.js.map +1 -0
- package/dist/utils/areHunkDataEqual.js +1 -1
- package/dist/utils/areHunkDataEqual.js.map +1 -1
- package/dist/utils/areManagedSnapshotsEqual.d.ts +2 -2
- package/dist/utils/areManagedSnapshotsEqual.d.ts.map +1 -1
- package/dist/utils/areManagedSnapshotsEqual.js +5 -0
- package/dist/utils/areManagedSnapshotsEqual.js.map +1 -1
- package/dist/utils/awaitWithTimeout.d.ts +5 -0
- package/dist/utils/awaitWithTimeout.d.ts.map +1 -0
- package/dist/utils/awaitWithTimeout.js +15 -0
- package/dist/utils/awaitWithTimeout.js.map +1 -0
- package/dist/utils/cleanLastNewline.js +6 -1
- package/dist/utils/cleanLastNewline.js.map +1 -1
- package/dist/utils/cloneFileDiffMetadata.d.ts +7 -0
- package/dist/utils/cloneFileDiffMetadata.d.ts.map +1 -0
- package/dist/utils/cloneFileDiffMetadata.js +16 -0
- package/dist/utils/cloneFileDiffMetadata.js.map +1 -0
- package/dist/utils/computeEstimatedDiffHeights.d.ts +3 -1
- package/dist/utils/computeEstimatedDiffHeights.d.ts.map +1 -1
- package/dist/utils/computeEstimatedDiffHeights.js +8 -1
- package/dist/utils/computeEstimatedDiffHeights.js.map +1 -1
- package/dist/utils/computeFileOffsets.d.ts +21 -0
- package/dist/utils/computeFileOffsets.d.ts.map +1 -0
- package/dist/utils/computeFileOffsets.js +51 -0
- package/dist/utils/computeFileOffsets.js.map +1 -0
- package/dist/utils/createCodeViewHeaderFooterHostElement.d.ts +5 -0
- package/dist/utils/createCodeViewHeaderFooterHostElement.d.ts.map +1 -0
- package/dist/utils/createCodeViewHeaderFooterHostElement.js +19 -0
- package/dist/utils/createCodeViewHeaderFooterHostElement.js.map +1 -0
- package/dist/utils/createFileHeaderElement.d.ts.map +1 -1
- package/dist/utils/createFileHeaderElement.js +5 -1
- package/dist/utils/createFileHeaderElement.js.map +1 -1
- package/dist/utils/createTransformerWithState.js +9 -0
- package/dist/utils/createTransformerWithState.js.map +1 -1
- package/dist/utils/editSessionHunks.d.ts +84 -0
- package/dist/utils/editSessionHunks.d.ts.map +1 -0
- package/dist/utils/editSessionHunks.js +366 -0
- package/dist/utils/editSessionHunks.js.map +1 -0
- package/dist/utils/getDiffFileInput.d.ts +14 -0
- package/dist/utils/getDiffFileInput.d.ts.map +1 -0
- package/dist/utils/getDiffFileInput.js +24 -0
- package/dist/utils/getDiffFileInput.js.map +1 -0
- package/dist/utils/getDiffHunksRendererOptions.js +1 -0
- package/dist/utils/getDiffHunksRendererOptions.js.map +1 -1
- package/dist/utils/getFiletypeFromFileName.d.ts.map +1 -1
- package/dist/utils/getFiletypeFromFileName.js +2 -0
- package/dist/utils/getFiletypeFromFileName.js.map +1 -1
- package/dist/utils/hydratePartialDiff.d.ts +10 -0
- package/dist/utils/hydratePartialDiff.d.ts.map +1 -0
- package/dist/utils/hydratePartialDiff.js +140 -0
- package/dist/utils/hydratePartialDiff.js.map +1 -0
- package/dist/utils/iterateOverDiff.js +3 -3
- package/dist/utils/iterateOverDiff.js.map +1 -1
- package/dist/utils/parseDiffFromFile.d.ts +1 -1
- package/dist/utils/parseDiffFromFile.d.ts.map +1 -1
- package/dist/utils/parseDiffFromFile.js +26 -5
- package/dist/utils/parseDiffFromFile.js.map +1 -1
- package/dist/utils/parsePatchFiles.d.ts.map +1 -1
- package/dist/utils/parsePatchFiles.js +2 -0
- package/dist/utils/parsePatchFiles.js.map +1 -1
- package/dist/utils/realignChangeContent.d.ts +28 -0
- package/dist/utils/realignChangeContent.d.ts.map +1 -0
- package/dist/utils/realignChangeContent.js +142 -0
- package/dist/utils/realignChangeContent.js.map +1 -0
- package/dist/utils/renderDiffWithHighlighter.js +1 -1
- package/dist/utils/renderFileWithHighlighter.d.ts.map +1 -1
- package/dist/utils/renderFileWithHighlighter.js +5 -14
- package/dist/utils/renderFileWithHighlighter.js.map +1 -1
- package/dist/utils/updateDiffHunks.d.ts +24 -0
- package/dist/utils/updateDiffHunks.d.ts.map +1 -0
- package/dist/utils/updateDiffHunks.js +235 -0
- package/dist/utils/updateDiffHunks.js.map +1 -0
- package/dist/utils/virtualDiffLayout.d.ts +40 -1
- package/dist/utils/virtualDiffLayout.d.ts.map +1 -1
- package/dist/utils/virtualDiffLayout.js +96 -1
- package/dist/utils/virtualDiffLayout.js.map +1 -1
- package/dist/worker/WorkerPoolManager.d.ts +7 -2
- package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
- package/dist/worker/WorkerPoolManager.js +83 -18
- package/dist/worker/WorkerPoolManager.js.map +1 -1
- package/dist/worker/index.d.ts +2 -2
- package/dist/worker/types.d.ts +11 -1
- package/dist/worker/types.d.ts.map +1 -1
- package/dist/worker/worker-portable.js +46 -66
- package/dist/worker/worker-portable.js.map +1 -1
- package/dist/worker/worker.js +46 -66
- package/dist/worker/worker.js.map +1 -1
- package/package.json +12 -5
- package/dist/utils/iterateOverFile.d.ts +0 -50
- package/dist/utils/iterateOverFile.d.ts.map +0 -1
- package/dist/utils/iterateOverFile.js +0 -49
- package/dist/utils/iterateOverFile.js.map +0 -1
package/dist/worker/worker.js
CHANGED
|
@@ -12,7 +12,6 @@ import { normalizeThemeColors } from "@pierre/theming/color";
|
|
|
12
12
|
return false;
|
|
13
13
|
}
|
|
14
14
|
})();
|
|
15
|
-
const SPLIT_WITH_NEWLINES = /(?<=\n)/;
|
|
16
15
|
const DEFAULT_THEMES = {
|
|
17
16
|
dark: "pierre-dark",
|
|
18
17
|
light: "pierre-light"
|
|
@@ -378,6 +377,8 @@ const EXTENSION_TO_FILE_FORMAT = {
|
|
|
378
377
|
tfvars: "tfvars",
|
|
379
378
|
toml: "toml",
|
|
380
379
|
ts: "typescript",
|
|
380
|
+
mts: "typescript",
|
|
381
|
+
cts: "typescript",
|
|
381
382
|
tsp: "typespec",
|
|
382
383
|
tsv: "tsv",
|
|
383
384
|
tsx: "tsx",
|
|
@@ -439,7 +440,12 @@ function replaceCustomExtensions(version, map) {
|
|
|
439
440
|
//#endregion
|
|
440
441
|
//#region src/utils/cleanLastNewline.ts
|
|
441
442
|
function cleanLastNewline(contents) {
|
|
442
|
-
|
|
443
|
+
let end = contents.length;
|
|
444
|
+
if (contents.charCodeAt(end - 1) === 10) {
|
|
445
|
+
end--;
|
|
446
|
+
if (contents.charCodeAt(end - 1) === 13) end--;
|
|
447
|
+
}
|
|
448
|
+
return contents.slice(0, end);
|
|
443
449
|
}
|
|
444
450
|
//#endregion
|
|
445
451
|
//#region src/utils/hast_utils.ts
|
|
@@ -612,6 +618,15 @@ function createTransformerWithState(useTokenTransformer = false, useCSSClasses =
|
|
|
612
618
|
} : null
|
|
613
619
|
}];
|
|
614
620
|
if (useCSSClasses) transformers.push(tokenStyleNormalizer, toClass);
|
|
621
|
+
if (useTokenTransformer) transformers.push({ line: (node) => {
|
|
622
|
+
if (node.type === "element" && node.children.length === 0) node.children.push({
|
|
623
|
+
type: "element",
|
|
624
|
+
tagName: "br",
|
|
625
|
+
properties: {},
|
|
626
|
+
children: []
|
|
627
|
+
});
|
|
628
|
+
return node;
|
|
629
|
+
} });
|
|
615
630
|
return {
|
|
616
631
|
state,
|
|
617
632
|
transformers,
|
|
@@ -779,10 +794,10 @@ function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infin
|
|
|
779
794
|
else if (diffStyle === "split") return breakSplit;
|
|
780
795
|
else return breakUnified && breakSplit;
|
|
781
796
|
},
|
|
782
|
-
shouldSkip(
|
|
797
|
+
shouldSkip(unifiedCount, splitCount) {
|
|
783
798
|
if (!state.isWindowedHighlight) return false;
|
|
784
|
-
const skipUnified = state.unifiedCount +
|
|
785
|
-
const skipSplit = state.splitCount +
|
|
799
|
+
const skipUnified = unifiedCount > 0 && state.unifiedCount + unifiedCount <= startingLine;
|
|
800
|
+
const skipSplit = splitCount > 0 && state.splitCount + splitCount <= startingLine;
|
|
786
801
|
if (diffStyle === "unified") return skipUnified;
|
|
787
802
|
else if (diffStyle === "split") return skipSplit;
|
|
788
803
|
else return skipUnified && skipSplit;
|
|
@@ -1518,62 +1533,34 @@ function renderTwoFiles({ deletionFile, additionFile, deletionInfo, additionInfo
|
|
|
1518
1533
|
};
|
|
1519
1534
|
}
|
|
1520
1535
|
//#endregion
|
|
1521
|
-
//#region src/utils/
|
|
1536
|
+
//#region src/utils/computeFileOffsets.ts
|
|
1537
|
+
const LINE_FEED = 10;
|
|
1538
|
+
const CARRIAGE_RETURN = 13;
|
|
1522
1539
|
/**
|
|
1523
|
-
*
|
|
1524
|
-
*
|
|
1525
|
-
* Similar to `iterateOverDiff` but simplified for linear file content.
|
|
1526
|
-
* Supports viewport windowing for virtualization scenarios.
|
|
1527
|
-
*
|
|
1528
|
-
* @param props - Configuration for iteration
|
|
1529
|
-
* @param props.lines - Pre-split array of lines (use splitFileContents() to create from string)
|
|
1530
|
-
* @param props.startingLine - Optional starting line index (0-based, default: 0)
|
|
1531
|
-
* @param props.totalLines - Optional max lines to iterate (default: Infinity)
|
|
1532
|
-
* @param props.callback - Callback invoked for each line in the window.
|
|
1533
|
-
* Return `true` to stop iteration early.
|
|
1534
|
-
*
|
|
1535
|
-
* @example
|
|
1536
|
-
* ```typescript
|
|
1537
|
-
* const lines = splitFileContents('line1\nline2\nline3');
|
|
1538
|
-
* iterateOverFile({
|
|
1539
|
-
* lines,
|
|
1540
|
-
* startingLine: 0,
|
|
1541
|
-
* totalLines: 10,
|
|
1542
|
-
* callback: ({ lineIndex, lineNumber, content, isLastLine }) => {
|
|
1543
|
-
* console.log(`Line ${lineNumber}: ${content}`);
|
|
1544
|
-
* if (content.includes('stop')) return true; // Stop iteration
|
|
1545
|
-
* }
|
|
1546
|
-
* });
|
|
1547
|
-
* ```
|
|
1540
|
+
* Computes line start offsets for a string.
|
|
1548
1541
|
*/
|
|
1549
|
-
function
|
|
1550
|
-
const
|
|
1551
|
-
|
|
1552
|
-
const
|
|
1553
|
-
if (
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
const isLastLine = lineIndex === lastLineIndex;
|
|
1558
|
-
if (callback({
|
|
1559
|
-
lineIndex,
|
|
1560
|
-
lineNumber: lineIndex + 1,
|
|
1561
|
-
content: lines[lineIndex],
|
|
1562
|
-
isLastLine
|
|
1563
|
-
}) === true || isLastLine) break;
|
|
1542
|
+
function computeLineOffsets(contents) {
|
|
1543
|
+
const offsets = [0];
|
|
1544
|
+
for (let i = 0; i < contents.length; i++) {
|
|
1545
|
+
const char = contents.charCodeAt(i);
|
|
1546
|
+
if (char === LINE_FEED || char === CARRIAGE_RETURN) {
|
|
1547
|
+
if (char === CARRIAGE_RETURN && i + 1 < contents.length && contents.charCodeAt(i + 1) === LINE_FEED) i++;
|
|
1548
|
+
offsets.push(i + 1);
|
|
1549
|
+
}
|
|
1564
1550
|
}
|
|
1551
|
+
return offsets;
|
|
1565
1552
|
}
|
|
1566
|
-
//#endregion
|
|
1567
|
-
//#region src/utils/splitFileContents.ts
|
|
1568
1553
|
/**
|
|
1569
|
-
* Splits file contents into lines
|
|
1570
|
-
*
|
|
1571
|
-
*
|
|
1572
|
-
* @param contents - The raw file contents string
|
|
1573
|
-
* @returns Array of lines with newlines preserved
|
|
1554
|
+
* Splits file contents into lines aligned with {@link computeLineOffsets}.
|
|
1555
|
+
* Unlike splitFileContents, a trailing newline produces a final empty line.
|
|
1574
1556
|
*/
|
|
1575
|
-
function
|
|
1576
|
-
|
|
1557
|
+
function linesFromFileContents(contents) {
|
|
1558
|
+
const offsets = computeLineOffsets(contents);
|
|
1559
|
+
return Array.from({ length: offsets.length }, (_, i) => {
|
|
1560
|
+
const start = offsets[i];
|
|
1561
|
+
const end = offsets[i + 1] ?? contents.length;
|
|
1562
|
+
return contents.slice(start, end);
|
|
1563
|
+
});
|
|
1577
1564
|
}
|
|
1578
1565
|
//#endregion
|
|
1579
1566
|
//#region src/utils/renderFileWithHighlighter.ts
|
|
@@ -1619,7 +1606,7 @@ function renderFileWithHighlighter(file, highlighter, { theme = DEFAULT_THEMES,
|
|
|
1619
1606
|
tokenizeTimeLimit: 0
|
|
1620
1607
|
};
|
|
1621
1608
|
})();
|
|
1622
|
-
const highlightedLines = getLineNodes(highlighter.codeToHast(isWindowedHighlight ? extractWindowedFileContent(lines ??
|
|
1609
|
+
const highlightedLines = getLineNodes(highlighter.codeToHast(isWindowedHighlight ? extractWindowedFileContent(lines ?? linesFromFileContents(file.contents), startingLine, totalLines) : file.contents, hastConfig));
|
|
1623
1610
|
const code = isWindowedHighlight ? new Array(startingLine) : highlightedLines;
|
|
1624
1611
|
if (isWindowedHighlight) code.push(...highlightedLines);
|
|
1625
1612
|
return {
|
|
@@ -1629,16 +1616,9 @@ function renderFileWithHighlighter(file, highlighter, { theme = DEFAULT_THEMES,
|
|
|
1629
1616
|
};
|
|
1630
1617
|
}
|
|
1631
1618
|
function extractWindowedFileContent(lines, startingLine, totalLines) {
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
startingLine,
|
|
1636
|
-
totalLines,
|
|
1637
|
-
callback({ content }) {
|
|
1638
|
-
windowContent += content;
|
|
1639
|
-
}
|
|
1640
|
-
});
|
|
1641
|
-
return windowContent;
|
|
1619
|
+
if (lines.length === 0) return "";
|
|
1620
|
+
const endLine = Math.min(startingLine + totalLines, lines.length);
|
|
1621
|
+
return lines.slice(startingLine, endLine).join("");
|
|
1642
1622
|
}
|
|
1643
1623
|
//#endregion
|
|
1644
1624
|
//#region src/worker/worker.ts
|