import * as CodeMirror from '../../'; /** * Tracks changes in chunks from original to new. */ export interface MergeViewDiffChunk { editFrom: number; editTo: number; origFrom: number; origTo: number; } export interface DiffView { /** * Forces the view to reload. */ forceUpdate(): (mode: string) => void; /** * Sets whether or not the merge view should show the differences between the editor views. */ setShowDifferences(showDifferences: boolean): void; } export interface MergeView { /** * Returns the editor instance. */ editor(): CodeMirror.Editor; /** * Left side of the merge view. */ left?: DiffView | undefined; leftChunks(): MergeViewDiffChunk[] | undefined; leftOriginal(): CodeMirror.Editor | undefined; /** * Right side of the merge view. */ right?: DiffView | undefined; rightChunks(): MergeViewDiffChunk[] | undefined; rightOriginal(): CodeMirror.Editor | undefined; /** * Sets whether or not the merge view should show the differences between the editor views. */ setShowDifferences(showDifferences: boolean): void; } export interface MergeViewConstructor { new (element: HTMLElement, options?: MergeViewConfiguration): MergeView; (element: HTMLElement, options?: MergeViewConfiguration): MergeView; } /** * Options available to MergeView. */ export interface MergeViewConfiguration extends CodeMirror.EditorConfiguration { /** * Determines whether the original editor allows editing. Defaults to false. */ allowEditingOriginals?: boolean | undefined; /** * When true stretches of unchanged text will be collapsed. When a number is given, this indicates the amount * of lines to leave visible around such stretches (which defaults to 2). Defaults to false. */ collapseIdentical?: boolean | number | undefined; /** * Sets the style used to connect changed chunks of code. By default, connectors are drawn. When this is set to "align", * the smaller chunk is padded to align with the bigger chunk instead. */ connect?: string | undefined; /** * Callback for when stretches of unchanged text are collapsed. */ onCollapse?(mergeView: MergeView, line: number, size: number, mark: CodeMirror.TextMarker): void; /** * Provides original version of the document to be shown on the right of the editor. */ orig?: string | undefined; /** * Provides original version of the document to be shown on the left of the editor. * To create a 2-way (as opposed to 3-way) merge view, provide only one of origLeft and origRight. */ origLeft?: string | undefined; /** * Provides original version of document to be shown on the right of the editor. * To create a 2-way (as opposed to 3-way) merge view, provide only one of origLeft and origRight. */ origRight?: string | undefined; /** * Determines whether buttons that allow the user to revert changes are shown. Defaults to true. */ revertButtons?: boolean | undefined; revertChunk?: (( mv: MergeView, from: CodeMirror.Editor, fromStart: CodeMirror.Position, fromEnd: CodeMirror.Position, to: CodeMirror.Editor, toStart: CodeMirror.Position, toEnd: CodeMirror.Position ) => void) | undefined; /** * When true, changed pieces of text are highlighted. Defaults to true. */ showDifferences?: boolean | undefined; } declare module '../../' { const MergeView: MergeViewConstructor; interface CommandActions { /** Move cursor to the next diff */ goNextDiff(cm: Editor): void; /** Move cursor to the previous diff */ goPrevDiff(cm: Editor): void; } }