import { Renderable, type RenderableOptions } from "../Renderable"; import type { RenderContext } from "../types"; import { type LineColorConfig } from "./LineNumberRenderable"; import { RGBA } from "../lib/RGBA"; import { SyntaxStyle } from "../syntax-style"; import type { TreeSitterClient } from "../lib/tree-sitter"; /** Represents a range within a string */ interface IRange { location: number; length: number; } export declare const MaxIntraLineDiffStringLength = 1024; export declare function relativeChanges(stringA: string, stringB: string): { stringARange: IRange; stringBRange: IRange; }; interface ColumnRange { startCol: number; endCol: number; } export declare function computeInlineHighlights(oldContent: string, newContent: string): { oldHighlight: ColumnRange | null; newHighlight: ColumnRange | null; }; export interface DiffRenderableOptions extends RenderableOptions { diff?: string; view?: "unified" | "split"; fg?: string | RGBA; filetype?: string; syntaxStyle?: SyntaxStyle; wrapMode?: "word" | "char" | "none"; conceal?: boolean; selectionBg?: string | RGBA; selectionFg?: string | RGBA; treeSitterClient?: TreeSitterClient; showLineNumbers?: boolean; lineNumberFg?: string | RGBA; lineNumberBg?: string | RGBA; addedBg?: string | RGBA; removedBg?: string | RGBA; contextBg?: string | RGBA; addedContentBg?: string | RGBA; removedContentBg?: string | RGBA; contextContentBg?: string | RGBA; addedSignColor?: string | RGBA; removedSignColor?: string | RGBA; addedLineNumberBg?: string | RGBA; removedLineNumberBg?: string | RGBA; /** * Disable word-level highlighting within modified lines. * When false (default), individual words/characters that changed are highlighted. * @default false */ disableWordHighlights?: boolean; /** * Background color for added words within modified lines. * @default addedBg.brighten(1.10) */ addedWordBg?: string | RGBA; /** * Background color for removed words within modified lines. * @default removedBg.brighten(1.10) */ removedWordBg?: string | RGBA; hunkHeaderBg?: string | RGBA; hunkHeaderFg?: string | RGBA; } export declare class DiffRenderable extends Renderable { private _diff; private _view; private _parsedDiff; private _parseError; private _fg?; private _filetype?; private _syntaxStyle?; private _wrapMode?; private _conceal; private _selectionBg?; private _selectionFg?; private _treeSitterClient?; private _showLineNumbers; private _lineNumberFg; private _lineNumberBg; private _addedBg; private _removedBg; private _contextBg; private _addedContentBg; private _removedContentBg; private _contextContentBg; private _addedSignColor; private _removedSignColor; private _addedLineNumberBg; private _removedLineNumberBg; private _disableWordHighlights; private _addedWordBg; private _removedWordBg; private _hunkHeaderBg; private _hunkHeaderFg; private leftSide; private rightSide; private leftSideAdded; private rightSideAdded; private leftCodeRenderable; private rightCodeRenderable; private pendingRebuild; private _lastWidth; private errorTextRenderable; private errorCodeRenderable; private _waitingForHighlight; private _lineInfoChangeHandler; /** Whether tree-sitter syntax highlighting is currently in progress. */ get isHighlighting(): boolean; constructor(ctx: RenderContext, options: DiffRenderableOptions); private processChangeBlockWithHighlights; private static readonly HUNK_HEADER_RE; private parseDiff; private buildView; protected onResize(width: number, height: number): void; private requestRebuild; private rebuildView; private handleLineInfoChange; private attachLineInfoListeners; private detachLineInfoListeners; destroyRecursively(): void; private buildErrorView; private createOrUpdateCodeRenderable; private createOrUpdateSide; private buildUnifiedView; private buildSplitView; get diff(): string; set diff(value: string); get view(): "unified" | "split"; set view(value: "unified" | "split"); get filetype(): string | undefined; set filetype(value: string | undefined); get syntaxStyle(): SyntaxStyle | undefined; set syntaxStyle(value: SyntaxStyle | undefined); get wrapMode(): "word" | "char" | "none" | undefined; set wrapMode(value: "word" | "char" | "none" | undefined); get showLineNumbers(): boolean; set showLineNumbers(value: boolean); get addedBg(): RGBA; set addedBg(value: string | RGBA); get removedBg(): RGBA; set removedBg(value: string | RGBA); get contextBg(): RGBA; set contextBg(value: string | RGBA); get addedSignColor(): RGBA; set addedSignColor(value: string | RGBA); get removedSignColor(): RGBA; set removedSignColor(value: string | RGBA); get addedLineNumberBg(): RGBA; set addedLineNumberBg(value: string | RGBA); get removedLineNumberBg(): RGBA; set removedLineNumberBg(value: string | RGBA); get hunkHeaderBg(): RGBA; set hunkHeaderBg(value: string | RGBA); get hunkHeaderFg(): RGBA; set hunkHeaderFg(value: string | RGBA); get lineNumberFg(): RGBA; set lineNumberFg(value: string | RGBA); get lineNumberBg(): RGBA; set lineNumberBg(value: string | RGBA); get addedContentBg(): RGBA | null; set addedContentBg(value: string | RGBA | null); get removedContentBg(): RGBA | null; set removedContentBg(value: string | RGBA | null); get contextContentBg(): RGBA | null; set contextContentBg(value: string | RGBA | null); get selectionBg(): RGBA | undefined; set selectionBg(value: string | RGBA | undefined); get selectionFg(): RGBA | undefined; set selectionFg(value: string | RGBA | undefined); get conceal(): boolean; set conceal(value: boolean); get fg(): RGBA | undefined; set fg(value: string | RGBA | undefined); get disableWordHighlights(): boolean; set disableWordHighlights(value: boolean); get addedWordBg(): RGBA; set addedWordBg(value: string | RGBA); get removedWordBg(): RGBA; set removedWordBg(value: string | RGBA); setLineColor(line: number, color: string | RGBA | LineColorConfig): void; clearLineColor(line: number): void; setLineColors(lineColors: Map): void; clearAllLineColors(): void; highlightLines(startLine: number, endLine: number, color: string | RGBA | LineColorConfig): void; clearHighlightLines(startLine: number, endLine: number): void; } export {};