@xterm/xterm 6.1.0-beta.28 → 6.1.0-beta.280
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -38
- package/css/xterm.css +29 -22
- package/lib/xterm.js +1 -1
- package/lib/xterm.js.map +1 -1
- package/lib/xterm.mjs +8 -34
- package/lib/xterm.mjs.map +4 -4
- package/package.json +56 -45
- package/src/browser/AccessibilityManager.ts +18 -13
- package/src/browser/Clipboard.ts +8 -5
- package/src/browser/ColorContrastCache.ts +3 -3
- package/src/browser/CoreBrowserTerminal.ts +179 -348
- package/src/browser/Dom.ts +178 -0
- package/src/browser/Linkifier.ts +14 -14
- package/src/browser/OscLinkProvider.ts +86 -18
- package/src/browser/RenderDebouncer.ts +7 -9
- package/src/browser/TimeBasedDebouncer.ts +12 -5
- package/src/browser/Types.ts +16 -14
- package/src/browser/Viewport.ts +58 -23
- package/src/browser/decorations/BufferDecorationRenderer.ts +3 -3
- package/src/browser/decorations/ColorZoneStore.ts +1 -1
- package/src/browser/decorations/OverviewRulerRenderer.ts +36 -20
- package/src/browser/input/CompositionHelper.ts +47 -11
- package/src/browser/input/Mouse.ts +5 -9
- package/src/browser/input/MoveToCell.ts +3 -3
- package/src/browser/public/Terminal.ts +33 -36
- package/src/browser/renderer/dom/DomRenderer.ts +265 -89
- package/src/browser/renderer/dom/DomRendererRowFactory.ts +34 -27
- package/src/browser/renderer/dom/WidthCache.ts +57 -55
- package/src/browser/renderer/shared/Constants.ts +7 -0
- package/src/browser/renderer/shared/RendererUtils.ts +1 -1
- package/src/browser/renderer/shared/SelectionRenderModel.ts +2 -2
- package/src/browser/renderer/shared/TextBlinkStateManager.ts +97 -0
- package/src/browser/renderer/shared/Types.ts +10 -4
- package/src/browser/scrollable/abstractScrollbar.ts +300 -0
- package/src/browser/scrollable/fastDomNode.ts +126 -0
- package/src/browser/scrollable/globalPointerMoveMonitor.ts +90 -0
- package/src/browser/scrollable/horizontalScrollbar.ts +85 -0
- package/src/browser/scrollable/mouseEvent.ts +292 -0
- package/src/browser/scrollable/scrollable.ts +486 -0
- package/src/browser/scrollable/scrollableElement.ts +581 -0
- package/src/browser/scrollable/scrollableElementOptions.ts +161 -0
- package/src/browser/scrollable/scrollbarArrow.ts +110 -0
- package/src/browser/scrollable/scrollbarState.ts +246 -0
- package/src/browser/scrollable/scrollbarVisibilityController.ts +113 -0
- package/src/browser/scrollable/touch.ts +485 -0
- package/src/browser/scrollable/verticalScrollbar.ts +143 -0
- package/src/browser/scrollable/widget.ts +23 -0
- package/src/browser/selection/SelectionModel.ts +1 -1
- package/src/browser/services/CharSizeService.ts +4 -4
- package/src/browser/services/CharacterJoinerService.ts +13 -11
- package/src/browser/services/CoreBrowserService.ts +7 -5
- package/src/browser/services/KeyboardService.ts +67 -0
- package/src/browser/services/LinkProviderService.ts +3 -3
- package/src/browser/services/MouseCoordsService.ts +47 -0
- package/src/browser/services/MouseService.ts +619 -23
- package/src/browser/services/RenderService.ts +33 -21
- package/src/browser/services/SelectionService.ts +72 -54
- package/src/browser/services/Services.ts +44 -21
- package/src/browser/services/ThemeService.ts +9 -9
- package/src/common/Async.ts +141 -0
- package/src/common/CircularList.ts +24 -3
- package/src/common/Color.ts +13 -5
- package/src/common/CoreTerminal.ts +61 -35
- package/src/common/Event.ts +118 -0
- package/src/common/InputHandler.ts +286 -105
- package/src/common/Lifecycle.ts +113 -0
- package/src/common/Platform.ts +15 -5
- package/src/common/SortedList.ts +8 -4
- package/src/common/StringBuilder.ts +67 -0
- package/src/common/TaskQueue.ts +17 -8
- package/src/common/Types.ts +68 -206
- package/src/common/Version.ts +1 -1
- package/src/common/WindowsMode.ts +2 -2
- package/src/common/buffer/AttributeData.ts +3 -2
- package/src/common/buffer/Buffer.ts +47 -32
- package/src/common/buffer/BufferLine.ts +175 -100
- package/src/common/buffer/BufferLineStringCache.ts +69 -0
- package/src/common/buffer/BufferReflow.ts +7 -4
- package/src/common/buffer/BufferSet.ts +13 -9
- package/src/common/buffer/CellData.ts +61 -4
- package/src/common/buffer/Constants.ts +13 -13
- package/src/common/buffer/Marker.ts +4 -4
- package/src/common/buffer/Types.ts +153 -3
- package/src/common/data/Charsets.ts +4 -7
- package/src/common/data/EscapeSequences.ts +71 -70
- package/src/common/input/Keyboard.ts +17 -10
- package/src/common/input/KittyKeyboard.ts +526 -0
- package/src/common/input/TextDecoder.ts +3 -3
- package/src/common/input/UnicodeV6.ts +3 -2
- package/src/common/input/Win32InputMode.ts +297 -0
- package/src/common/input/WriteBuffer.ts +108 -39
- package/src/common/input/XParseColor.ts +2 -2
- package/src/common/parser/ApcParser.ts +196 -0
- package/src/common/parser/Constants.ts +14 -4
- package/src/common/parser/DcsParser.ts +15 -16
- package/src/common/parser/EscapeSequenceParser.ts +214 -72
- package/src/common/parser/OscParser.ts +14 -15
- package/src/common/parser/Params.ts +31 -12
- package/src/common/parser/Types.ts +40 -30
- package/src/common/public/BufferApiView.ts +3 -3
- package/src/common/public/BufferLineApiView.ts +4 -4
- package/src/common/public/BufferNamespaceApi.ts +5 -5
- package/src/common/public/ParserApi.ts +5 -2
- package/src/common/public/UnicodeApi.ts +1 -1
- package/src/common/services/BufferService.ts +17 -13
- package/src/common/services/CharsetService.ts +6 -2
- package/src/common/services/CoreService.ts +23 -10
- package/src/common/services/DecorationService.ts +260 -15
- package/src/common/services/InstantiationService.ts +2 -2
- package/src/common/services/LogService.ts +2 -32
- package/src/common/services/{CoreMouseService.ts → MouseStateService.ts} +22 -133
- package/src/common/services/OptionsService.ts +17 -7
- package/src/common/services/OscLinkService.ts +3 -2
- package/src/common/services/ServiceRegistry.ts +14 -8
- package/src/common/services/Services.ts +54 -50
- package/src/common/services/UnicodeService.ts +6 -11
- package/typings/xterm.d.ts +329 -34
- package/src/common/Clone.ts +0 -23
- package/src/common/TypedArrayUtils.ts +0 -17
- package/src/vs/base/browser/browser.ts +0 -141
- package/src/vs/base/browser/canIUse.ts +0 -49
- package/src/vs/base/browser/dom.ts +0 -2369
- package/src/vs/base/browser/fastDomNode.ts +0 -316
- package/src/vs/base/browser/globalPointerMoveMonitor.ts +0 -112
- package/src/vs/base/browser/iframe.ts +0 -135
- package/src/vs/base/browser/keyboardEvent.ts +0 -213
- package/src/vs/base/browser/mouseEvent.ts +0 -229
- package/src/vs/base/browser/touch.ts +0 -372
- package/src/vs/base/browser/ui/scrollbar/abstractScrollbar.ts +0 -303
- package/src/vs/base/browser/ui/scrollbar/horizontalScrollbar.ts +0 -114
- package/src/vs/base/browser/ui/scrollbar/scrollableElement.ts +0 -720
- package/src/vs/base/browser/ui/scrollbar/scrollableElementOptions.ts +0 -165
- package/src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts +0 -114
- package/src/vs/base/browser/ui/scrollbar/scrollbarState.ts +0 -243
- package/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts +0 -118
- package/src/vs/base/browser/ui/scrollbar/verticalScrollbar.ts +0 -116
- package/src/vs/base/browser/ui/widget.ts +0 -57
- package/src/vs/base/browser/window.ts +0 -14
- package/src/vs/base/common/arrays.ts +0 -887
- package/src/vs/base/common/arraysFind.ts +0 -202
- package/src/vs/base/common/assert.ts +0 -71
- package/src/vs/base/common/async.ts +0 -1992
- package/src/vs/base/common/cancellation.ts +0 -148
- package/src/vs/base/common/charCode.ts +0 -450
- package/src/vs/base/common/collections.ts +0 -140
- package/src/vs/base/common/decorators.ts +0 -130
- package/src/vs/base/common/equals.ts +0 -146
- package/src/vs/base/common/errors.ts +0 -303
- package/src/vs/base/common/event.ts +0 -1778
- package/src/vs/base/common/functional.ts +0 -32
- package/src/vs/base/common/hash.ts +0 -316
- package/src/vs/base/common/iterator.ts +0 -159
- package/src/vs/base/common/keyCodes.ts +0 -526
- package/src/vs/base/common/keybindings.ts +0 -284
- package/src/vs/base/common/lazy.ts +0 -47
- package/src/vs/base/common/lifecycle.ts +0 -801
- package/src/vs/base/common/linkedList.ts +0 -142
- package/src/vs/base/common/map.ts +0 -202
- package/src/vs/base/common/numbers.ts +0 -98
- package/src/vs/base/common/observable.ts +0 -76
- package/src/vs/base/common/observableInternal/api.ts +0 -31
- package/src/vs/base/common/observableInternal/autorun.ts +0 -281
- package/src/vs/base/common/observableInternal/base.ts +0 -489
- package/src/vs/base/common/observableInternal/debugName.ts +0 -145
- package/src/vs/base/common/observableInternal/derived.ts +0 -428
- package/src/vs/base/common/observableInternal/lazyObservableValue.ts +0 -146
- package/src/vs/base/common/observableInternal/logging.ts +0 -328
- package/src/vs/base/common/observableInternal/promise.ts +0 -209
- package/src/vs/base/common/observableInternal/utils.ts +0 -610
- package/src/vs/base/common/platform.ts +0 -281
- package/src/vs/base/common/scrollable.ts +0 -522
- package/src/vs/base/common/sequence.ts +0 -34
- package/src/vs/base/common/stopwatch.ts +0 -43
- package/src/vs/base/common/strings.ts +0 -557
- package/src/vs/base/common/symbols.ts +0 -9
- package/src/vs/base/common/uint.ts +0 -59
- package/src/vs/patches/nls.ts +0 -90
- package/src/vs/typings/base-common.d.ts +0 -20
- package/src/vs/typings/require.d.ts +0 -42
- package/src/vs/typings/vscode-globals-nls.d.ts +0 -36
- package/src/vs/typings/vscode-globals-product.d.ts +0 -33
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
* @license MIT
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { IBufferLine, ICellData
|
|
7
|
-
import { ICharacterJoiner } from '
|
|
8
|
-
import { AttributeData } from 'common/buffer/AttributeData';
|
|
9
|
-
import { WHITESPACE_CELL_CHAR, Content } from 'common/buffer/Constants';
|
|
10
|
-
import { CellData } from 'common/buffer/CellData';
|
|
11
|
-
import { IBufferService } from 'common/services/Services';
|
|
12
|
-
import { ICharacterJoinerService } from '
|
|
6
|
+
import { CharData, IBufferLine, ICellData } from '../../common/buffer/Types';
|
|
7
|
+
import { ICharacterJoiner } from '../Types';
|
|
8
|
+
import { AttributeData } from '../../common/buffer/AttributeData';
|
|
9
|
+
import { WHITESPACE_CELL_CHAR, Content } from '../../common/buffer/Constants';
|
|
10
|
+
import { CellData } from '../../common/buffer/CellData';
|
|
11
|
+
import { IBufferService } from '../../common/services/Services';
|
|
12
|
+
import { ICharacterJoinerService } from './Services';
|
|
13
13
|
|
|
14
14
|
export class JoinedCellData extends AttributeData implements ICellData {
|
|
15
15
|
private _width: number;
|
|
@@ -100,6 +100,7 @@ export class CharacterJoinerService implements ICharacterJoinerService {
|
|
|
100
100
|
|
|
101
101
|
const ranges: [number, number][] = [];
|
|
102
102
|
const lineStr = line.translateToString(true);
|
|
103
|
+
const trimmedLength = line.getTrimmedLength();
|
|
103
104
|
|
|
104
105
|
// Because some cells can be represented by multiple javascript characters,
|
|
105
106
|
// we track the cell and the string indexes separately. This allows us to
|
|
@@ -111,7 +112,7 @@ export class CharacterJoinerService implements ICharacterJoinerService {
|
|
|
111
112
|
let rangeAttrFG = line.getFg(0);
|
|
112
113
|
let rangeAttrBG = line.getBg(0);
|
|
113
114
|
|
|
114
|
-
for (let x = 0; x <
|
|
115
|
+
for (let x = 0; x < trimmedLength; x++) {
|
|
115
116
|
line.loadCell(x, this._workCell);
|
|
116
117
|
|
|
117
118
|
if (this._workCell.getWidth() === 0) {
|
|
@@ -147,7 +148,7 @@ export class CharacterJoinerService implements ICharacterJoinerService {
|
|
|
147
148
|
}
|
|
148
149
|
|
|
149
150
|
// Process any trailing ranges.
|
|
150
|
-
if (
|
|
151
|
+
if (trimmedLength - rangeStartColumn > 1) {
|
|
151
152
|
const joinedRanges = this._getJoinedRanges(
|
|
152
153
|
lineStr,
|
|
153
154
|
rangeStartStringIndex,
|
|
@@ -216,7 +217,8 @@ export class CharacterJoinerService implements ICharacterJoinerService {
|
|
|
216
217
|
return;
|
|
217
218
|
}
|
|
218
219
|
|
|
219
|
-
|
|
220
|
+
const trimmedLength = line.getTrimmedLength();
|
|
221
|
+
for (let x = startCol; x < trimmedLength; x++) {
|
|
220
222
|
const width = line.getWidth(x);
|
|
221
223
|
const length = line.getString(x).length || WHITESPACE_CELL_CHAR.length;
|
|
222
224
|
|
|
@@ -264,7 +266,7 @@ export class CharacterJoinerService implements ICharacterJoinerService {
|
|
|
264
266
|
// If there is still a range left at the end, it must extend all the way to
|
|
265
267
|
// the end of the line.
|
|
266
268
|
if (currentRange) {
|
|
267
|
-
currentRange[1] =
|
|
269
|
+
currentRange[1] = trimmedLength;
|
|
268
270
|
}
|
|
269
271
|
}
|
|
270
272
|
|
|
@@ -4,16 +4,16 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { ICoreBrowserService } from './Services';
|
|
7
|
-
import { Emitter,
|
|
8
|
-
import { addDisposableListener } from '
|
|
9
|
-
import { Disposable, MutableDisposable, toDisposable } from '
|
|
7
|
+
import { Emitter, EventUtils } from '../../common/Event';
|
|
8
|
+
import { addDisposableListener } from '../Dom';
|
|
9
|
+
import { Disposable, MutableDisposable, toDisposable } from '../../common/Lifecycle';
|
|
10
10
|
|
|
11
11
|
export class CoreBrowserService extends Disposable implements ICoreBrowserService {
|
|
12
12
|
public serviceBrand: undefined;
|
|
13
13
|
|
|
14
14
|
private _isFocused = false;
|
|
15
15
|
private _cachedIsFocused: boolean | undefined = undefined;
|
|
16
|
-
private _screenDprMonitor
|
|
16
|
+
private _screenDprMonitor: ScreenDprMonitor;
|
|
17
17
|
|
|
18
18
|
private readonly _onDprChange = this._register(new Emitter<number>());
|
|
19
19
|
public readonly onDprChange = this._onDprChange.event;
|
|
@@ -27,9 +27,11 @@ export class CoreBrowserService extends Disposable implements ICoreBrowserServic
|
|
|
27
27
|
) {
|
|
28
28
|
super();
|
|
29
29
|
|
|
30
|
+
this._screenDprMonitor = this._register(new ScreenDprMonitor(this._window));
|
|
31
|
+
|
|
30
32
|
// Monitor device pixel ratio
|
|
31
33
|
this._register(this.onWindowChange(w => this._screenDprMonitor.setWindow(w)));
|
|
32
|
-
this._register(
|
|
34
|
+
this._register(EventUtils.forward(this._screenDprMonitor.onDprChange, this._onDprChange));
|
|
33
35
|
|
|
34
36
|
this._register(addDisposableListener(this._textarea, 'focus', () => this._isFocused = true));
|
|
35
37
|
this._register(addDisposableListener(this._textarea, 'blur', () => this._isFocused = false));
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 The xterm.js authors. All rights reserved.
|
|
3
|
+
* @license MIT
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { IKeyboardService } from './Services';
|
|
7
|
+
import { evaluateKeyboardEvent } from '../../common/input/Keyboard';
|
|
8
|
+
import { KittyKeyboard, KittyKeyboardEventType, KittyKeyboardFlags } from '../../common/input/KittyKeyboard';
|
|
9
|
+
import { Win32InputMode } from '../../common/input/Win32InputMode';
|
|
10
|
+
import { isMac } from '../../common/Platform';
|
|
11
|
+
import { ICoreService, IOptionsService } from '../../common/services/Services';
|
|
12
|
+
import { IKeyboardResult } from '../../common/Types';
|
|
13
|
+
|
|
14
|
+
export class KeyboardService implements IKeyboardService {
|
|
15
|
+
public serviceBrand: undefined;
|
|
16
|
+
|
|
17
|
+
private _win32InputMode: Win32InputMode | undefined;
|
|
18
|
+
private _kittyKeyboard: KittyKeyboard | undefined;
|
|
19
|
+
|
|
20
|
+
constructor(
|
|
21
|
+
@ICoreService private readonly _coreService: ICoreService,
|
|
22
|
+
@IOptionsService private readonly _optionsService: IOptionsService
|
|
23
|
+
) {
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
private _getWin32InputMode(): Win32InputMode {
|
|
27
|
+
this._win32InputMode ??= new Win32InputMode();
|
|
28
|
+
return this._win32InputMode;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
private _getKittyKeyboard(): KittyKeyboard {
|
|
32
|
+
this._kittyKeyboard ??= new KittyKeyboard();
|
|
33
|
+
return this._kittyKeyboard;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
public evaluateKeyDown(event: KeyboardEvent): IKeyboardResult {
|
|
37
|
+
// Win32 input mode takes priority (most raw)
|
|
38
|
+
if (this.useWin32InputMode) {
|
|
39
|
+
return this._getWin32InputMode().evaluateKeyboardEvent(event, true);
|
|
40
|
+
}
|
|
41
|
+
const kittyFlags = this._coreService.kittyKeyboard.flags;
|
|
42
|
+
return this.useKitty
|
|
43
|
+
? this._getKittyKeyboard().evaluate(event, kittyFlags, event.repeat ? KittyKeyboardEventType.REPEAT : KittyKeyboardEventType.PRESS, isMac && this._optionsService.rawOptions.macOptionIsMeta)
|
|
44
|
+
: evaluateKeyboardEvent(event, this._coreService.decPrivateModes.applicationCursorKeys, isMac, this._optionsService.rawOptions.macOptionIsMeta);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public evaluateKeyUp(event: KeyboardEvent): IKeyboardResult | undefined {
|
|
48
|
+
// Win32 input mode sends key up events
|
|
49
|
+
if (this.useWin32InputMode) {
|
|
50
|
+
return this._getWin32InputMode().evaluateKeyboardEvent(event, false);
|
|
51
|
+
}
|
|
52
|
+
const kittyFlags = this._coreService.kittyKeyboard.flags;
|
|
53
|
+
if (this.useKitty && (kittyFlags & KittyKeyboardFlags.REPORT_EVENT_TYPES)) {
|
|
54
|
+
return this._getKittyKeyboard().evaluate(event, kittyFlags, KittyKeyboardEventType.RELEASE, isMac && this._optionsService.rawOptions.macOptionIsMeta);
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public get useKitty(): boolean {
|
|
60
|
+
const kittyFlags = this._coreService.kittyKeyboard.flags;
|
|
61
|
+
return !!(this._optionsService.rawOptions.vtExtensions?.kittyKeyboard && KittyKeyboard.shouldUseProtocol(kittyFlags));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
public get useWin32InputMode(): boolean {
|
|
65
|
+
return !!(this._optionsService.rawOptions.vtExtensions?.win32InputMode && this._coreService.decPrivateModes.win32InputMode);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ILinkProvider, ILinkProviderService } from '
|
|
2
|
-
import { Disposable, toDisposable } from '
|
|
3
|
-
import { IDisposable } from 'common/Types';
|
|
1
|
+
import { ILinkProvider, ILinkProviderService } from './Services';
|
|
2
|
+
import { Disposable, toDisposable } from '../../common/Lifecycle';
|
|
3
|
+
import { IDisposable } from '../../common/Types';
|
|
4
4
|
|
|
5
5
|
export class LinkProviderService extends Disposable implements ILinkProviderService {
|
|
6
6
|
declare public serviceBrand: undefined;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026 The xterm.js authors. All rights reserved.
|
|
3
|
+
* @license MIT
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { getWindow } from '../Dom';
|
|
7
|
+
import { getCoords, getCoordsRelativeToElement } from '../input/Mouse';
|
|
8
|
+
import { ICharSizeService, IMouseCoordsService, IRenderService } from './Services';
|
|
9
|
+
|
|
10
|
+
export class MouseCoordsService implements IMouseCoordsService {
|
|
11
|
+
public serviceBrand: undefined;
|
|
12
|
+
|
|
13
|
+
constructor(
|
|
14
|
+
@ICharSizeService private readonly _charSizeService: ICharSizeService,
|
|
15
|
+
@IRenderService private readonly _renderService: IRenderService
|
|
16
|
+
) {
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public getCoords(event: {clientX: number, clientY: number}, element: HTMLElement, colCount: number, rowCount: number, isSelection?: boolean): [number, number] | undefined {
|
|
20
|
+
return getCoords(
|
|
21
|
+
getWindow(element),
|
|
22
|
+
event,
|
|
23
|
+
element,
|
|
24
|
+
colCount,
|
|
25
|
+
rowCount,
|
|
26
|
+
this._charSizeService.hasValidSize,
|
|
27
|
+
this._renderService.dimensions.css.cell.width,
|
|
28
|
+
this._renderService.dimensions.css.cell.height,
|
|
29
|
+
isSelection
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public getMouseReportCoords(event: MouseEvent, element: HTMLElement): { col: number, row: number, x: number, y: number } | undefined {
|
|
34
|
+
const coords = getCoordsRelativeToElement(getWindow(element), event, element);
|
|
35
|
+
if (!this._charSizeService.hasValidSize) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
coords[0] = Math.min(Math.max(coords[0], 0), this._renderService.dimensions.css.canvas.width - 1);
|
|
39
|
+
coords[1] = Math.min(Math.max(coords[1], 0), this._renderService.dimensions.css.canvas.height - 1);
|
|
40
|
+
return {
|
|
41
|
+
col: Math.floor(coords[0] / this._renderService.dimensions.css.cell.width),
|
|
42
|
+
row: Math.floor(coords[1] / this._renderService.dimensions.css.cell.height),
|
|
43
|
+
x: Math.floor(coords[0]),
|
|
44
|
+
y: Math.floor(coords[1])
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|