34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
/**
|
|
* Copyright (c) 2017 The xterm.js authors. All rights reserved.
|
|
* @license MIT
|
|
*/
|
|
|
|
import { ICharSizeService, IRenderService, IMouseService } from './Services';
|
|
import { getCoords, getRawByteCoords } from 'browser/input/Mouse';
|
|
|
|
export class MouseService implements IMouseService {
|
|
constructor(
|
|
private readonly _renderService: IRenderService,
|
|
private readonly _charSizeService: ICharSizeService
|
|
) {
|
|
}
|
|
|
|
public getCoords(event: {clientX: number, clientY: number}, element: HTMLElement, colCount: number, rowCount: number, isSelection?: boolean): [number, number] | undefined {
|
|
return getCoords(
|
|
event,
|
|
element,
|
|
colCount,
|
|
rowCount,
|
|
this._charSizeService.hasValidSize,
|
|
this._renderService.dimensions.actualCellWidth,
|
|
this._renderService.dimensions.actualCellHeight,
|
|
isSelection
|
|
);
|
|
}
|
|
|
|
public getRawByteCoords(event: MouseEvent, element: HTMLElement, colCount: number, rowCount: number): { x: number, y: number } | undefined {
|
|
const coords = this.getCoords(event, element, colCount, rowCount);
|
|
return getRawByteCoords(coords);
|
|
}
|
|
}
|