UNPKG

ace-diff

Version:

A diff/merging wrapper for Ace Editor built on google-diff-match-patch

164 lines (163 loc) 4.43 kB
import { Ace } from "ace-builds"; //#region src/types/diff.d.ts interface CharRange { start: number; end: number; lineStart: number; lineEnd: number; } interface DiffInfo { leftStartLine: number; leftEndLine: number; rightStartLine: number; rightEndLine: number; leftStartOffset: number; leftEndOffset: number; rightStartOffset: number; rightEndOffset: number; leftStartChar?: number; leftEndChar?: number; rightStartChar?: number; rightEndChar?: number; leftChars: CharRange[]; rightChars: CharRange[]; } //#endregion //#region src/types/options.d.ts interface EditorOptions { /** Element ID or null to auto-generate */ id: string | null; /** Initial content */ content: string | null; /** Ace editor mode (e.g., 'ace/mode/javascript') */ mode: string | null; /** Ace editor theme (e.g., 'ace/theme/monokai') */ theme: string | null; /** Whether the editor is editable */ editable: boolean; /** Whether to show copy arrows */ copyLinkEnabled: boolean; } /** Ace namespace with edit function */ interface AceStatic { edit: (element: string | HTMLElement) => Ace.Editor; Range?: new (startRow: number, startColumn: number, endRow: number, endColumn: number) => Ace.Range; acequire?: (module: string) => unknown; require?: (module: string) => unknown; } interface ClassOptions { gutterID: string; diff: string; diffChar: string; diffGutter: string; connector: string; newCodeConnectorLink: string; newCodeConnectorLinkContent: string; deletedCodeConnectorLink: string; deletedCodeConnectorLinkContent: string; copyRightContainer: string; copyLeftContainer: string; } interface AceDiffOptions { /** Ace editor instance or factory */ ace?: AceStatic | undefined; /** Global editor mode */ mode: string | null; /** Global editor theme */ theme: string | null; /** Container element or selector */ element: HTMLElement | string | null; /** Diff granularity: 'specific' or 'broad' */ diffGranularity: 'specific' | 'broad'; /** Lock scroll between editors */ lockScrolling: boolean; /** Show diff highlighting */ showDiffs: boolean; /** Show SVG connectors */ showConnectors: boolean; /** Enable character-level diffs */ charDiffs: boolean; /** Maximum diffs before silent failure */ maxDiffs: number; /** Left editor options */ left: Partial<EditorOptions>; /** Right editor options */ right: Partial<EditorOptions>; /** CSS class overrides */ classes: Partial<ClassOptions>; /** Y offset for connectors */ connectorYOffset: number; /** Callback when diff calculation completes */ onDiffReady: ((diffs: DiffInfo[]) => void) | null; } //#endregion //#region src/types/ace.d.ts /** * Internal editor instance state */ interface EditorInstance { ace: Ace.Editor; markers: number[]; lineLengths: number[]; diffGutters: Array<{ line: number; className: string; }>; } /** * Internal editor state containing both editors */ interface EditorState { left: EditorInstance; right: EditorInstance; editorHeight: number | null; } //#endregion //#region src/AceDiff.d.ts declare class AceDiff { options: AceDiffOptions; el: HTMLElement; editors: EditorState; diffs: DiffInfo[]; lineHeight: number; gutterSVG: SVGSVGElement | null; gutterWidth: number; gutterHeight: number; copyLeftContainer: HTMLDivElement | null; copyRightContainer: HTMLDivElement | null; connectorYOffset: number; private removeEventHandlers; constructor(options?: Partial<AceDiffOptions>); setOptions(options: Partial<AceDiffOptions>): void; getNumDiffs(): number; getEditors(): { left: Ace.Editor; right: Ace.Editor; }; diff(): void; clear(): void; destroy(): void; private addEventHandlers; private copy; private getLineLengths; private showDiff; private updateGap; private clearDiffs; private addConnector; private addCopyArrows; private positionCopyContainers; private computeDiff; private getSingleDiffInfo; private getCharsOnLine; private getLineForCharPosition; private createGutter; private getTotalHeight; private createCopyContainers; private clearGutter; private clearArrows; private simplifyDiffs; private decorate; } //#endregion export { AceDiff, AceDiff as default, type AceDiffOptions, type CharRange, type ClassOptions, type DiffInfo, type EditorOptions }; //# sourceMappingURL=index.d.cts.map