UNPKG

xterm

Version:

Full xterm terminal, in your browser

135 lines (119 loc) 3.82 kB
/** * Copyright (c) 2017 The xterm.js authors. All rights reserved. * @license MIT */ import { IEvent } from 'common/EventEmitter'; import { IDisposable } from 'common/Types'; export interface IColorManager { colors: IColorSet; } export interface IColor { css: string; rgba: number; // 32-bit int with rgba in each byte } export interface IColorSet { foreground: IColor; background: IColor; cursor: IColor; cursorAccent: IColor; selection: IColor; ansi: IColor[]; } export interface IPartialColorSet { foreground: IColor; background: IColor; cursor?: IColor; cursorAccent?: IColor; selection?: IColor; ansi: IColor[]; } export interface IViewport extends IDisposable { scrollBarWidth: number; syncScrollArea(): void; getLinesScrolled(ev: WheelEvent): number; onWheel(ev: WheelEvent): boolean; onTouchStart(ev: TouchEvent): void; onTouchMove(ev: TouchEvent): boolean; onThemeChange(colors: IColorSet): void; } export type LinkMatcherHandler = (event: MouseEvent, uri: string) => void; export type LinkMatcherValidationCallback = (uri: string, callback: (isValid: boolean) => void) => void; export interface ILinkMatcher { id: number; regex: RegExp; handler: LinkMatcherHandler; hoverTooltipCallback?: LinkMatcherHandler; hoverLeaveCallback?: () => void; matchIndex?: number; validationCallback?: LinkMatcherValidationCallback; priority?: number; willLinkActivate?: (event: MouseEvent, uri: string) => boolean; } export interface IRegisteredLinkMatcher extends ILinkMatcher { priority: number; } export interface ILinkifierEvent { x1: number; y1: number; x2: number; y2: number; cols: number; fg: number | undefined; } export interface ILinkifier { onLinkHover: IEvent<ILinkifierEvent>; onLinkLeave: IEvent<ILinkifierEvent>; onLinkTooltip: IEvent<ILinkifierEvent>; attachToDom(element: HTMLElement, mouseZoneManager: IMouseZoneManager): void; linkifyRows(start: number, end: number): void; registerLinkMatcher(regex: RegExp, handler: LinkMatcherHandler, options?: ILinkMatcherOptions): number; deregisterLinkMatcher(matcherId: number): boolean; } export interface ILinkMatcherOptions { /** * The index of the link from the regex.match(text) call. This defaults to 0 * (for regular expressions without capture groups). */ matchIndex?: number; /** * A callback that validates an individual link, returning true if valid and * false if invalid. */ validationCallback?: LinkMatcherValidationCallback; /** * A callback that fires when the mouse hovers over a link. */ tooltipCallback?: LinkMatcherHandler; /** * A callback that fires when the mouse leaves a link that was hovered. */ leaveCallback?: () => void; /** * The priority of the link matcher, this defines the order in which the link * matcher is evaluated relative to others, from highest to lowest. The * default value is 0. */ priority?: number; /** * A callback that fires when the mousedown and click events occur that * determines whether a link will be activated upon click. This enables * only activating a link when a certain modifier is held down, if not the * mouse event will continue propagation (eg. double click to select word). */ willLinkActivate?: (event: MouseEvent, uri: string) => boolean; } export interface IMouseZoneManager extends IDisposable { add(zone: IMouseZone): void; clearAll(start?: number, end?: number): void; } export interface IMouseZone { x1: number; x2: number; y1: number; y2: number; clickCallback: (e: MouseEvent) => any; hoverCallback: (e: MouseEvent) => any | undefined; tooltipCallback: (e: MouseEvent) => any | undefined; leaveCallback: () => any | undefined; willLinkActivate: (e: MouseEvent) => boolean; }