Move DiffLayer to the API

Change-Id: Iad673de4501ece0cf12f4f3e58ec67b4838f8718
This commit is contained in:
Ole Rehmsen
2021-02-05 14:29:38 +01:00
parent d99be5e5cd
commit 8b8d26bf94
3 changed files with 47 additions and 13 deletions

View File

@@ -245,3 +245,41 @@ export declare interface MovedLinkClickedEventDetail {
side: Side;
lineNum: LineNumber;
}
export enum GrDiffLineType {
ADD = 'add',
BOTH = 'both',
BLANK = 'blank',
REMOVE = 'remove',
}
/** Describes a line to be rendered in a diff. */
export declare interface GrDiffLine {
readonly type: GrDiffLineType;
/** The line number on the left side of the diff - 0 means none. */
beforeNumber: LineNumber;
/** The line number on the right side of the diff - 0 means none. */
afterNumber: LineNumber;
}
/**
* Interface to implemented to define a new layer in the diff.
*
* Layers can affect how the text of the diff or its line numbers
* are rendered.
*/
export declare interface DiffLayer {
/**
* Called during rendering and allows annotating the diff text or line number
* by mutating those elements.
*
* @param textElement The rendered text of one side of the diff.
* @param lineNumberElement The rendered line number of one side of the diff.
* @param line Describes the line that should be annotated.
*/
annotate(
textElement: HTMLElement,
lineNumberElement: HTMLElement,
line: GrDiffLine
): void;
}

View File

@@ -15,20 +15,17 @@
* limitations under the License.
*/
import {LineNumber} from '../../../api/diff';
import {
GrDiffLine as GrDiffLineApi,
GrDiffLineType,
LineNumber,
} from '../../../api/diff';
export {LineNumber};
export {GrDiffLineType, LineNumber};
export const FILE = 'FILE';
export enum GrDiffLineType {
ADD = 'add',
BOTH = 'both',
BLANK = 'blank',
REMOVE = 'remove',
}
export class GrDiffLine {
export class GrDiffLine implements GrDiffLineApi {
constructor(
readonly type: GrDiffLineType,
public beforeNumber: LineNumber = 0,

View File

@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {DiffLayer as DiffLayerApi} from '../api/diff';
import {DiffViewMode, MessageTag, Side} from '../constants/constants';
import {IronA11yAnnouncer} from '@polymer/iron-a11y-announcer/iron-a11y-announcer';
import {GrDiffLine} from '../elements/diff/gr-diff/gr-diff-line';
import {FlattenedNodesObserver} from '@polymer/polymer/lib/utils/flattened-nodes-observer';
import {PaperInputElement} from '@polymer/paper-input/paper-input';
import {
@@ -150,8 +150,7 @@ export type DiffLayerListener = (
side: Side
) => void;
export interface DiffLayer {
annotate(el: HTMLElement, lineEl: HTMLElement, line: GrDiffLine): void;
export interface DiffLayer extends DiffLayerApi {
addListener?(listener: DiffLayerListener): void;
removeListener?(listener: DiffLayerListener): void;
}