import { Compartment, Extension } from '@codemirror/state'; import { EditorView } from '@codemirror/view'; import { DiffThemeManager } from '../themes'; import { DiffData, DiffThemeColors, LineMapping } from '../types'; export interface ViewConfig { wordWrap: boolean; enableFolding: boolean; showClassification: boolean; wordDiffMode: "word" | "char" | "none"; dark: boolean; colors?: Partial; baseTheme?: Extension; extensions?: Extension[]; } export declare abstract class BaseView { protected container: HTMLElement; protected rootEl: HTMLElement; protected config: ViewConfig; protected themeManager: DiffThemeManager; protected currentLineMap: LineMapping[]; protected lineWrappingCompartment: Compartment; constructor(container: HTMLElement, config: ViewConfig); abstract render(diffData: DiffData, format: "json" | "yaml"): void; abstract updateTheme(dark: boolean, colors?: Partial, baseTheme?: Extension): void; abstract getEditorViews(): EditorView[]; abstract setWordWrap(enabled: boolean): void; abstract setFoldingEnabled(enabled: boolean): void; abstract setClassificationEnabled(enabled: boolean): void; abstract setWordDiffMode(mode: "word" | "char" | "none"): void; abstract destroy(): void; /** * Reconfigure line wrapping on a live editor view. */ protected reconfigureLineWrapping(view: EditorView, enabled: boolean): void; /** * Build common extension array for any editor side. */ protected createBaseExtensions(format: "json" | "yaml", side: "before" | "after" | "unified", lineMap: LineMapping[]): Extension[]; /** * Add inline word diff extension (for unified mode). */ protected createInlineWordDiffExtension(): Extension[]; }