+++ /dev/null
-/**
- * Copyright (c) 2019 The xterm.js authors. All rights reserved.
- * @license MIT
- */
-
-import { ICoreService, ILogService, IOptionsService, IBufferService } from 'common/services/Services';
-import { EventEmitter, IEvent } from 'common/EventEmitter';
-import { IDecPrivateModes } from 'common/Types';
-import { clone } from 'common/Clone';
-
-const DEFAULT_DEC_PRIVATE_MODES: IDecPrivateModes = Object.freeze({
- applicationCursorKeys: false
-});
-
-export class CoreService implements ICoreService {
- serviceBrand: any;
-
- public decPrivateModes: IDecPrivateModes;
-
- private _onData = new EventEmitter<string>();
- public get onData(): IEvent<string> { return this._onData.event; }
- private _onUserInput = new EventEmitter<void>();
- public get onUserInput(): IEvent<void> { return this._onUserInput.event; }
-
- constructor(
- // TODO: Move this into a service
- private readonly _scrollToBottom: () => void,
- @IBufferService private readonly _bufferService: IBufferService,
- @ILogService private readonly _logService: ILogService,
- @IOptionsService private readonly _optionsService: IOptionsService
- ) {
- this.decPrivateModes = clone(DEFAULT_DEC_PRIVATE_MODES);
- }
-
- public reset(): void {
- this.decPrivateModes = clone(DEFAULT_DEC_PRIVATE_MODES);
- }
-
- public triggerDataEvent(data: string, wasUserInput: boolean = false): void {
- // Prevents all events to pty process if stdin is disabled
- if (this._optionsService.options.disableStdin) {
- return;
- }
-
- // Input is being sent to the terminal, the terminal should focus the prompt.
- const buffer = this._bufferService.buffer;
- if (buffer.ybase !== buffer.ydisp) {
- this._scrollToBottom();
- }
-
- // Fire onUserInput so listeners can react as well (eg. clear selection)
- if (wasUserInput) {
- this._onUserInput.fire();
- }
-
- // Fire onData API
- this._logService.debug(`sending data "${data}"`, () => data.split('').map(e => e.charCodeAt(0)));
- this._onData.fire(data);
- }
-}