From 443b2dbc28d3ca9ee5455435a06b3071b3c6283a Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Tue, 4 Sep 2018 08:01:04 -0700 Subject: [PATCH] Have common only reference within common Part of #1337 --- src/Buffer.ts | 2 +- src/BufferSet.ts | 2 +- src/Linkifier.ts | 2 +- src/SelectionManager.ts | 5 +++-- src/Terminal.ts | 2 +- src/Types.ts | 16 +--------------- src/common/CircularList.ts | 4 ++-- src/{ => common}/EventEmitter.test.ts | 0 src/{ => common}/EventEmitter.ts | 2 +- src/common/Types.ts | 17 +++++++++++++++++ src/handlers/AltClickHandler.ts | 3 ++- src/renderer/Renderer.ts | 2 +- src/renderer/dom/DomRenderer.ts | 2 +- src/ui/CharMeasure.ts | 2 +- src/utils/TestUtils.test.ts | 3 ++- 15 files changed, 35 insertions(+), 29 deletions(-) rename src/{ => common}/EventEmitter.test.ts (100%) rename src/{ => common}/EventEmitter.ts (97%) diff --git a/src/Buffer.ts b/src/Buffer.ts index 81b8a517..9487be4a 100644 --- a/src/Buffer.ts +++ b/src/Buffer.ts @@ -5,7 +5,7 @@ import { CircularList } from './common/CircularList'; import { CharData, ITerminal, IBuffer, IBufferLine } from './Types'; -import { EventEmitter } from './EventEmitter'; +import { EventEmitter } from './common/EventEmitter'; import { IMarker } from 'xterm'; import { BufferLine } from './BufferLine'; diff --git a/src/BufferSet.ts b/src/BufferSet.ts index 4b5ca2d1..c91ab751 100644 --- a/src/BufferSet.ts +++ b/src/BufferSet.ts @@ -5,7 +5,7 @@ import { ITerminal, IBufferSet } from './Types'; import { Buffer } from './Buffer'; -import { EventEmitter } from './EventEmitter'; +import { EventEmitter } from './common/EventEmitter'; /** * The BufferSet represents the set of two buffers used by xterm terminals (normal and alt) and diff --git a/src/Linkifier.ts b/src/Linkifier.ts index 8615daf8..74fc72db 100644 --- a/src/Linkifier.ts +++ b/src/Linkifier.ts @@ -6,7 +6,7 @@ import { IMouseZoneManager } from './ui/Types'; import { ILinkHoverEvent, ILinkMatcher, LinkMatcherHandler, LinkHoverEventTypes, ILinkMatcherOptions, ILinkifier, ITerminal, IBufferLine } from './Types'; import { MouseZone } from './ui/MouseZoneManager'; -import { EventEmitter } from './EventEmitter'; +import { EventEmitter } from './common/EventEmitter'; import { CHAR_DATA_ATTR_INDEX } from './Buffer'; /** diff --git a/src/SelectionManager.ts b/src/SelectionManager.ts index 2dd92c5b..bfb57177 100644 --- a/src/SelectionManager.ts +++ b/src/SelectionManager.ts @@ -3,11 +3,12 @@ * @license MIT */ -import { ITerminal, ISelectionManager, IBuffer, CharData, XtermListener, IBufferLine } from './Types'; +import { ITerminal, ISelectionManager, IBuffer, CharData, IBufferLine } from './Types'; +import { XtermListener } from './common/Types'; import { MouseHelper } from './utils/MouseHelper'; import * as Browser from './shared/utils/Browser'; import { CharMeasure } from './ui/CharMeasure'; -import { EventEmitter } from './EventEmitter'; +import { EventEmitter } from './common/EventEmitter'; import { SelectionModel } from './SelectionModel'; import { CHAR_DATA_WIDTH_INDEX, CHAR_DATA_CHAR_INDEX, CHAR_DATA_CODE_INDEX } from './Buffer'; import { AltClickHandler } from './handlers/AltClickHandler'; diff --git a/src/Terminal.ts b/src/Terminal.ts index 3a0ce0ed..b133cb30 100644 --- a/src/Terminal.ts +++ b/src/Terminal.ts @@ -27,7 +27,7 @@ import { IRenderer } from './renderer/Types'; import { BufferSet } from './BufferSet'; import { Buffer, MAX_BUFFER_SIZE, DEFAULT_ATTR, NULL_CELL_CODE, NULL_CELL_WIDTH, NULL_CELL_CHAR } from './Buffer'; import { CompositionHelper } from './CompositionHelper'; -import { EventEmitter } from './EventEmitter'; +import { EventEmitter } from './common/EventEmitter'; import { Viewport } from './Viewport'; import { rightClickHandler, moveTextAreaUnderMouseCursor, pasteHandler, copyHandler } from './handlers/Clipboard'; import { C0 } from './common/data/EscapeSequences'; diff --git a/src/Types.ts b/src/Types.ts index 5ea2024a..e5cb9edf 100644 --- a/src/Types.ts +++ b/src/Types.ts @@ -7,11 +7,10 @@ import { Terminal as PublicTerminal, ITerminalOptions as IPublicTerminalOptions, import { IColorSet, IRenderer } from './renderer/Types'; import { IMouseZoneManager } from './ui/Types'; import { ICharset } from './core/Types'; +import { ICircularList } from './common/Types'; export type CustomKeyEventHandler = (event: KeyboardEvent) => boolean; -export type XtermListener = (...args: any[]) => void; - export type CharData = [number, string, number, number]; export type LineData = CharData[]; @@ -295,19 +294,6 @@ export interface IBufferSet extends IEventEmitter { activateAltBuffer(): void; } -export interface ICircularList extends IEventEmitter { - length: number; - maxLength: number; - - get(index: number): T; - set(index: number, value: T): void; - push(value: T): void; - pop(): T; - splice(start: number, deleteCount: number, ...items: T[]): void; - trimStart(count: number): void; - shiftElements(start: number, count: number, offset: number): void; -} - export interface ISelectionManager { selectionText: string; selectionStart: [number, number]; diff --git a/src/common/CircularList.ts b/src/common/CircularList.ts index ca83d6e1..e12191e3 100644 --- a/src/common/CircularList.ts +++ b/src/common/CircularList.ts @@ -3,8 +3,8 @@ * @license MIT */ -import { EventEmitter } from '../EventEmitter'; -import { ICircularList } from '../Types'; +import { EventEmitter } from './EventEmitter'; +import { ICircularList } from './Types'; /** * Represents a circular list; a list with a maximum size that wraps around when push is called, diff --git a/src/EventEmitter.test.ts b/src/common/EventEmitter.test.ts similarity index 100% rename from src/EventEmitter.test.ts rename to src/common/EventEmitter.test.ts diff --git a/src/EventEmitter.ts b/src/common/EventEmitter.ts similarity index 97% rename from src/EventEmitter.ts rename to src/common/EventEmitter.ts index 0de5999a..56b1e149 100644 --- a/src/EventEmitter.ts +++ b/src/common/EventEmitter.ts @@ -5,7 +5,7 @@ import { XtermListener } from './Types'; import { IEventEmitter, IDisposable } from 'xterm'; -import { Disposable } from './common/Lifecycle'; +import { Disposable } from './Lifecycle'; export class EventEmitter extends Disposable implements IEventEmitter, IDisposable { private _events: {[type: string]: XtermListener[]}; diff --git a/src/common/Types.ts b/src/common/Types.ts index 98cb296d..d95b52e0 100644 --- a/src/common/Types.ts +++ b/src/common/Types.ts @@ -3,6 +3,10 @@ * @license MIT */ +import { IEventEmitter } from 'xterm'; + +export type XtermListener = (...args: any[]) => void; + /** * A keyboard event interface which does not depend on the DOM, KeyboardEvent implicitly extends * this event. @@ -16,3 +20,16 @@ export interface IKeyboardEvent { key: string; type: string; } + +export interface ICircularList extends IEventEmitter { + length: number; + maxLength: number; + + get(index: number): T; + set(index: number, value: T): void; + push(value: T): void; + pop(): T; + splice(start: number, deleteCount: number, ...items: T[]): void; + trimStart(count: number): void; + shiftElements(start: number, count: number, offset: number): void; +} diff --git a/src/handlers/AltClickHandler.ts b/src/handlers/AltClickHandler.ts index aa942f3e..8226fd96 100644 --- a/src/handlers/AltClickHandler.ts +++ b/src/handlers/AltClickHandler.ts @@ -3,7 +3,8 @@ * @license MIT */ -import { ITerminal, ICircularList, IBufferLine } from '../Types'; +import { ITerminal, IBufferLine } from '../Types'; +import { ICircularList } from '../common/Types'; import { C0 } from '../common/data/EscapeSequences'; const enum Direction { diff --git a/src/renderer/Renderer.ts b/src/renderer/Renderer.ts index a6189efc..02328877 100644 --- a/src/renderer/Renderer.ts +++ b/src/renderer/Renderer.ts @@ -10,7 +10,7 @@ import { ColorManager } from './ColorManager'; import { IRenderLayer, IColorSet, IRenderer, IRenderDimensions, ICharacterJoinerRegistry } from './Types'; import { ITerminal, CharacterJoinerHandler } from '../Types'; import { LinkRenderLayer } from './LinkRenderLayer'; -import { EventEmitter } from '../EventEmitter'; +import { EventEmitter } from '../common/EventEmitter'; import { RenderDebouncer } from '../ui/RenderDebouncer'; import { ScreenDprMonitor } from '../ui/ScreenDprMonitor'; import { ITheme } from 'xterm'; diff --git a/src/renderer/dom/DomRenderer.ts b/src/renderer/dom/DomRenderer.ts index 97eabc32..98d3a2cd 100644 --- a/src/renderer/dom/DomRenderer.ts +++ b/src/renderer/dom/DomRenderer.ts @@ -6,7 +6,7 @@ import { IRenderer, IRenderDimensions, IColorSet } from '../Types'; import { ITerminal, CharacterJoinerHandler } from '../../Types'; import { ITheme } from 'xterm'; -import { EventEmitter } from '../../EventEmitter'; +import { EventEmitter } from '../../common/EventEmitter'; import { ColorManager } from '../ColorManager'; import { RenderDebouncer } from '../../ui/RenderDebouncer'; import { BOLD_CLASS, ITALIC_CLASS, CURSOR_CLASS, DomRendererRowFactory } from './DomRendererRowFactory'; diff --git a/src/ui/CharMeasure.ts b/src/ui/CharMeasure.ts index 5ad1de76..7d1e5e48 100644 --- a/src/ui/CharMeasure.ts +++ b/src/ui/CharMeasure.ts @@ -4,7 +4,7 @@ */ import { ICharMeasure, ITerminalOptions } from '../Types'; -import { EventEmitter } from '../EventEmitter'; +import { EventEmitter } from '../common/EventEmitter'; /** * Utility class that measures the size of a character. Measurements are done in diff --git a/src/utils/TestUtils.test.ts b/src/utils/TestUtils.test.ts index b9bb0348..32a7e9bc 100644 --- a/src/utils/TestUtils.test.ts +++ b/src/utils/TestUtils.test.ts @@ -4,7 +4,8 @@ */ import { IColorSet, IRenderer, IRenderDimensions, IColorManager } from '../renderer/Types'; -import { IInputHandlingTerminal, IViewport, ICompositionHelper, ITerminal, IBuffer, IBufferSet, IBrowser, ICharMeasure, ISelectionManager, ITerminalOptions, ICircularList, ILinkifier, IMouseHelper, ILinkMatcherOptions, XtermListener, CharacterJoinerHandler, IBufferLine } from '../Types'; +import { IInputHandlingTerminal, IViewport, ICompositionHelper, ITerminal, IBuffer, IBufferSet, IBrowser, ICharMeasure, ISelectionManager, ITerminalOptions, ILinkifier, IMouseHelper, ILinkMatcherOptions, CharacterJoinerHandler, IBufferLine } from '../Types'; +import { ICircularList, XtermListener } from '../common/Types'; import { Buffer } from '../Buffer'; import * as Browser from '../shared/utils/Browser'; import { ITheme, IDisposable, IMarker } from 'xterm';