@jupyterlab/terminal 4.6.0-alpha.4 → 4.6.0-alpha.5
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/lib/tokens.d.ts +4 -0
- package/lib/tokens.js.map +1 -1
- package/lib/widget.d.ts +30 -0
- package/lib/widget.js +147 -7
- package/lib/widget.js.map +1 -1
- package/package.json +5 -5
- package/src/tokens.ts +5 -0
- package/src/widget.ts +173 -7
- package/style/base.css +10 -3
package/lib/tokens.d.ts
CHANGED
|
@@ -51,6 +51,10 @@ export declare namespace ITerminal {
|
|
|
51
51
|
* changes if the terminal theme is 'inherit'.
|
|
52
52
|
*/
|
|
53
53
|
themeChanged: ISignal<this, void>;
|
|
54
|
+
/**
|
|
55
|
+
* A signal emitted when users should be reminded how to leave terminal focus.
|
|
56
|
+
*/
|
|
57
|
+
escapeHintRequested: ISignal<this, void>;
|
|
54
58
|
}
|
|
55
59
|
/**
|
|
56
60
|
* Options for the terminal widget.
|
package/lib/tokens.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAI3D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAW1C;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,KAAK,CACvC,uCAAuC,EACvC;;8BAE4B,CAC7B,CAAC;AAEF;;;GAGG;AACH,MAAM,KAAW,SAAS,
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAI3D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAW1C;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,KAAK,CACvC,uCAAuC,EACvC;;8BAE4B,CAC7B,CAAC;AAEF;;;GAGG;AACH,MAAM,KAAW,SAAS,CA6JzB;AA7JD,WAAiB,SAAS;IAyHxB;;OAEG;IACU,wBAAc,GAAa;QACtC,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,gDAAgD;QAC5D,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,GAAG;QACf,UAAU,EAAE,IAAI;QAChB,eAAe,EAAE,KAAK;QACtB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,cAAc,EAAE,EAAE;QAClB,gBAAgB,EAAE,KAAK,EAAE,kEAAkE;QAC3F,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,KAAK;KACvB,CAAC;AAmBJ,CAAC,EA7JgB,SAAS,KAAT,SAAS,QA6JzB"}
|
package/lib/widget.d.ts
CHANGED
|
@@ -82,10 +82,18 @@ export declare class Terminal extends Widget implements ITerminal.ITerminal {
|
|
|
82
82
|
* changes if the terminal theme is 'inherit'.
|
|
83
83
|
*/
|
|
84
84
|
get themeChanged(): ISignal<this, void>;
|
|
85
|
+
/**
|
|
86
|
+
* A signal emitted when users should be reminded how to leave terminal focus.
|
|
87
|
+
*/
|
|
88
|
+
get escapeHintRequested(): ISignal<this, void>;
|
|
85
89
|
/**
|
|
86
90
|
* Set the size of the terminal when attached if dirty.
|
|
87
91
|
*/
|
|
88
92
|
protected onAfterAttach(msg: Message): void;
|
|
93
|
+
/**
|
|
94
|
+
* Remove event listeners when the widget is detached.
|
|
95
|
+
*/
|
|
96
|
+
protected onBeforeDetach(msg: Message): void;
|
|
89
97
|
/**
|
|
90
98
|
* Set the size of the terminal when shown if dirty.
|
|
91
99
|
*/
|
|
@@ -124,6 +132,12 @@ export declare class Terminal extends Widget implements ITerminal.ITerminal {
|
|
|
124
132
|
*/
|
|
125
133
|
private _setSessionSize;
|
|
126
134
|
private _setThemeAttribute;
|
|
135
|
+
/**
|
|
136
|
+
* Handle the `keydown` event for the widget.
|
|
137
|
+
*/
|
|
138
|
+
private _evtKeyDown;
|
|
139
|
+
private _scheduleEscapeReset;
|
|
140
|
+
private _clearEscapeResetTimer;
|
|
127
141
|
private _fitAddon;
|
|
128
142
|
private _searchAddon;
|
|
129
143
|
private _needsResize;
|
|
@@ -136,4 +150,20 @@ export declare class Terminal extends Widget implements ITerminal.ITerminal {
|
|
|
136
150
|
private _termOpened;
|
|
137
151
|
private _trans;
|
|
138
152
|
private _themeChanged;
|
|
153
|
+
private _escapeHintRequested;
|
|
154
|
+
private _escapePressedOnce;
|
|
155
|
+
private _escapeResetTimer;
|
|
156
|
+
private _terminalId;
|
|
157
|
+
private _escapeInstructionsId;
|
|
158
|
+
/**
|
|
159
|
+
* Handle the DOM events for the widget.
|
|
160
|
+
*
|
|
161
|
+
* @param event -The DOM event sent to the widget.
|
|
162
|
+
*
|
|
163
|
+
* #### Notes
|
|
164
|
+
* This method implements the DOM `EventListener` interface and is
|
|
165
|
+
* called in response to events on the terminal widget's node. It should
|
|
166
|
+
* not be called directly by user code.
|
|
167
|
+
*/
|
|
168
|
+
handleEvent(event: Event): void;
|
|
139
169
|
}
|
package/lib/widget.js
CHANGED
|
@@ -16,6 +16,14 @@ const TERMINAL_CLASS = 'jp-Terminal';
|
|
|
16
16
|
* The class name added to a terminal body.
|
|
17
17
|
*/
|
|
18
18
|
const TERMINAL_BODY_CLASS = 'jp-Terminal-body';
|
|
19
|
+
/**
|
|
20
|
+
* The class name for screen reader only text.
|
|
21
|
+
*/
|
|
22
|
+
const SR_ONLY_CLASS = 'jp-sr-only';
|
|
23
|
+
/**
|
|
24
|
+
* The delay in milliseconds to reset the escape key press.
|
|
25
|
+
*/
|
|
26
|
+
const ESCAPE_FOCUS_DELAY_MS = 350;
|
|
19
27
|
/**
|
|
20
28
|
* A widget which manages a terminal session.
|
|
21
29
|
*/
|
|
@@ -38,6 +46,9 @@ export class Terminal extends Widget {
|
|
|
38
46
|
this._ready = new PromiseDelegate();
|
|
39
47
|
this._termOpened = false;
|
|
40
48
|
this._themeChanged = new Signal(this);
|
|
49
|
+
this._escapeHintRequested = new Signal(this);
|
|
50
|
+
this._escapePressedOnce = false;
|
|
51
|
+
this._escapeResetTimer = null;
|
|
41
52
|
translator = translator || nullTranslator;
|
|
42
53
|
this._trans = translator.load('jupyterlab');
|
|
43
54
|
this.session = session;
|
|
@@ -51,6 +62,14 @@ export class Terminal extends Widget {
|
|
|
51
62
|
};
|
|
52
63
|
this.addClass(TERMINAL_CLASS);
|
|
53
64
|
this._setThemeAttribute(theme);
|
|
65
|
+
this._terminalId = Private.id++;
|
|
66
|
+
this.id = `jp-Terminal-${this._terminalId}`;
|
|
67
|
+
this._escapeInstructionsId = `jp-Terminal-escape-instructions-${this._terminalId}`;
|
|
68
|
+
const escapeInstructions = document.createElement('p');
|
|
69
|
+
escapeInstructions.id = this._escapeInstructionsId;
|
|
70
|
+
escapeInstructions.className = SR_ONLY_CLASS;
|
|
71
|
+
escapeInstructions.textContent = this._trans.__('Press Escape twice to leave terminal focus. Press Enter to return focus to the terminal input.');
|
|
72
|
+
this.node.appendChild(escapeInstructions);
|
|
54
73
|
// Buffer session message while waiting for the terminal
|
|
55
74
|
let buffer = '';
|
|
56
75
|
const bufferMessage = (sender, msg) => {
|
|
@@ -78,7 +97,6 @@ export class Terminal extends Widget {
|
|
|
78
97
|
this._fitAddon = fitAddon;
|
|
79
98
|
this._searchAddon = searchAddon;
|
|
80
99
|
this._initializeTerm();
|
|
81
|
-
this.id = `jp-Terminal-${Private.id++}`;
|
|
82
100
|
this.title.label = this._trans.__('Terminal');
|
|
83
101
|
this._isReady = true;
|
|
84
102
|
this._ready.resolve();
|
|
@@ -249,12 +267,27 @@ export class Terminal extends Widget {
|
|
|
249
267
|
get themeChanged() {
|
|
250
268
|
return this._themeChanged;
|
|
251
269
|
}
|
|
270
|
+
/**
|
|
271
|
+
* A signal emitted when users should be reminded how to leave terminal focus.
|
|
272
|
+
*/
|
|
273
|
+
get escapeHintRequested() {
|
|
274
|
+
return this._escapeHintRequested;
|
|
275
|
+
}
|
|
252
276
|
/**
|
|
253
277
|
* Set the size of the terminal when attached if dirty.
|
|
254
278
|
*/
|
|
255
279
|
onAfterAttach(msg) {
|
|
280
|
+
this.node.addEventListener('keydown', this, true);
|
|
256
281
|
this.update();
|
|
257
282
|
}
|
|
283
|
+
/**
|
|
284
|
+
* Remove event listeners when the widget is detached.
|
|
285
|
+
*/
|
|
286
|
+
onBeforeDetach(msg) {
|
|
287
|
+
this.node.removeEventListener('keydown', this, true);
|
|
288
|
+
this._clearEscapeResetTimer();
|
|
289
|
+
this._escapePressedOnce = false;
|
|
290
|
+
}
|
|
258
291
|
/**
|
|
259
292
|
* Set the size of the terminal when shown if dirty.
|
|
260
293
|
*/
|
|
@@ -274,7 +307,7 @@ export class Terminal extends Widget {
|
|
|
274
307
|
* A message handler invoked on an `'update-request'` message.
|
|
275
308
|
*/
|
|
276
309
|
onUpdateRequest(msg) {
|
|
277
|
-
var _a;
|
|
310
|
+
var _a, _b, _c, _d;
|
|
278
311
|
if (!this.isVisible || !this.isAttached || !this._isReady) {
|
|
279
312
|
return;
|
|
280
313
|
}
|
|
@@ -282,6 +315,8 @@ export class Terminal extends Widget {
|
|
|
282
315
|
if (!this._termOpened) {
|
|
283
316
|
this._term.open(this.node);
|
|
284
317
|
(_a = this._term.element) === null || _a === void 0 ? void 0 : _a.classList.add(TERMINAL_BODY_CLASS);
|
|
318
|
+
(_b = this._term.textarea) === null || _b === void 0 ? void 0 : _b.setAttribute('aria-describedby', this._escapeInstructionsId);
|
|
319
|
+
(_d = (_c = this._term.element) === null || _c === void 0 ? void 0 : _c.querySelector('.xterm-viewport')) === null || _d === void 0 ? void 0 : _d.setAttribute('aria-describedby', this._escapeInstructionsId);
|
|
285
320
|
this._termOpened = true;
|
|
286
321
|
}
|
|
287
322
|
if (this._needsResize) {
|
|
@@ -337,12 +372,32 @@ export class Terminal extends Widget {
|
|
|
337
372
|
term.onTitleChange((title) => {
|
|
338
373
|
this.title.label = title;
|
|
339
374
|
});
|
|
340
|
-
// Do not add any Ctrl+C/Ctrl+V handling on macOS,
|
|
341
|
-
// where Cmd+C/Cmd+V works as intended.
|
|
342
|
-
if (Platform.IS_MAC) {
|
|
343
|
-
return;
|
|
344
|
-
}
|
|
345
375
|
term.attachCustomKeyEventHandler(event => {
|
|
376
|
+
// Send Shift+Enter as a line feed (\n) rather than carriage
|
|
377
|
+
// return (\r), so terminal applications can distinguish
|
|
378
|
+
// between Enter (execute) and Shift+Enter (newline). Handle
|
|
379
|
+
// only keydown and call preventDefault() so the browser
|
|
380
|
+
// suppresses the follow-up keypress event that xterm.js would
|
|
381
|
+
// otherwise turn into a \r.
|
|
382
|
+
// Skip during IME composition so composed text isn't split by
|
|
383
|
+
// an injected \n.
|
|
384
|
+
if (event.type === 'keydown' &&
|
|
385
|
+
event.shiftKey &&
|
|
386
|
+
event.key === 'Enter' &&
|
|
387
|
+
!event.isComposing &&
|
|
388
|
+
event.keyCode !== 229) {
|
|
389
|
+
event.preventDefault();
|
|
390
|
+
this.session.send({
|
|
391
|
+
type: 'stdin',
|
|
392
|
+
content: ['\n']
|
|
393
|
+
});
|
|
394
|
+
return false;
|
|
395
|
+
}
|
|
396
|
+
// Do not add any Ctrl+C/Ctrl+V handling on macOS,
|
|
397
|
+
// where Cmd+C/Cmd+V works as intended.
|
|
398
|
+
if (Platform.IS_MAC) {
|
|
399
|
+
return true;
|
|
400
|
+
}
|
|
346
401
|
if (event.ctrlKey && event.key === 'c' && term.hasSelection()) {
|
|
347
402
|
// Return so that the usual OS copy happens
|
|
348
403
|
// instead of interrupt signal.
|
|
@@ -409,6 +464,91 @@ export class Terminal extends Widget {
|
|
|
409
464
|
}
|
|
410
465
|
this.node.setAttribute('data-term-theme', theme ? theme.toLowerCase() : 'inherit');
|
|
411
466
|
}
|
|
467
|
+
/**
|
|
468
|
+
* Handle the `keydown` event for the widget.
|
|
469
|
+
*/
|
|
470
|
+
_evtKeyDown(event) {
|
|
471
|
+
var _a;
|
|
472
|
+
const xtermViewport = (_a = this._term.element) === null || _a === void 0 ? void 0 : _a.querySelector('.xterm-viewport');
|
|
473
|
+
const xtermTextarea = this._term.textarea;
|
|
474
|
+
const activeElement = document.activeElement;
|
|
475
|
+
const viewportFocused = !!activeElement &&
|
|
476
|
+
!!xtermViewport &&
|
|
477
|
+
(activeElement === xtermViewport ||
|
|
478
|
+
xtermViewport.contains(activeElement));
|
|
479
|
+
const textareaFocused = !!xtermTextarea && activeElement === xtermTextarea;
|
|
480
|
+
if (event.key === 'Escape') {
|
|
481
|
+
if (!textareaFocused) {
|
|
482
|
+
this._clearEscapeResetTimer();
|
|
483
|
+
this._escapePressedOnce = false;
|
|
484
|
+
return;
|
|
485
|
+
}
|
|
486
|
+
if (!this._escapePressedOnce) {
|
|
487
|
+
this._escapePressedOnce = true;
|
|
488
|
+
this._scheduleEscapeReset();
|
|
489
|
+
return;
|
|
490
|
+
}
|
|
491
|
+
event.preventDefault();
|
|
492
|
+
event.stopPropagation();
|
|
493
|
+
this._clearEscapeResetTimer();
|
|
494
|
+
this._escapePressedOnce = false;
|
|
495
|
+
if (xtermTextarea) {
|
|
496
|
+
// This ensures pressing Tab does not return to the textarea and avoids
|
|
497
|
+
// becoming a tab trap.
|
|
498
|
+
xtermTextarea.tabIndex = -1;
|
|
499
|
+
}
|
|
500
|
+
xtermViewport === null || xtermViewport === void 0 ? void 0 : xtermViewport.setAttribute('tabindex', '0');
|
|
501
|
+
xtermViewport === null || xtermViewport === void 0 ? void 0 : xtermViewport.focus();
|
|
502
|
+
return;
|
|
503
|
+
}
|
|
504
|
+
this._clearEscapeResetTimer();
|
|
505
|
+
this._escapePressedOnce = false;
|
|
506
|
+
if (viewportFocused && event.key === 'Enter') {
|
|
507
|
+
event.preventDefault();
|
|
508
|
+
event.stopPropagation();
|
|
509
|
+
if (xtermTextarea) {
|
|
510
|
+
xtermTextarea.tabIndex = 0;
|
|
511
|
+
xtermTextarea.focus();
|
|
512
|
+
}
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
if (viewportFocused && event.key === 'Tab' && xtermTextarea) {
|
|
516
|
+
xtermTextarea.tabIndex = -1;
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
_scheduleEscapeReset() {
|
|
520
|
+
this._clearEscapeResetTimer();
|
|
521
|
+
this._escapeResetTimer = window.setTimeout(() => {
|
|
522
|
+
this._escapePressedOnce = false;
|
|
523
|
+
this._escapeHintRequested.emit();
|
|
524
|
+
this._escapeResetTimer = null;
|
|
525
|
+
}, ESCAPE_FOCUS_DELAY_MS);
|
|
526
|
+
}
|
|
527
|
+
_clearEscapeResetTimer() {
|
|
528
|
+
if (this._escapeResetTimer !== null) {
|
|
529
|
+
window.clearTimeout(this._escapeResetTimer);
|
|
530
|
+
this._escapeResetTimer = null;
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
/**
|
|
534
|
+
* Handle the DOM events for the widget.
|
|
535
|
+
*
|
|
536
|
+
* @param event -The DOM event sent to the widget.
|
|
537
|
+
*
|
|
538
|
+
* #### Notes
|
|
539
|
+
* This method implements the DOM `EventListener` interface and is
|
|
540
|
+
* called in response to events on the terminal widget's node. It should
|
|
541
|
+
* not be called directly by user code.
|
|
542
|
+
*/
|
|
543
|
+
handleEvent(event) {
|
|
544
|
+
switch (event.type) {
|
|
545
|
+
case 'keydown':
|
|
546
|
+
this._evtKeyDown(event);
|
|
547
|
+
break;
|
|
548
|
+
default:
|
|
549
|
+
break;
|
|
550
|
+
}
|
|
551
|
+
}
|
|
412
552
|
}
|
|
413
553
|
/**
|
|
414
554
|
* A namespace for private data.
|
package/lib/widget.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget.js","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"widget.js","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jupyterlab/terminal",
|
|
3
|
-
"version": "4.6.0-alpha.
|
|
3
|
+
"version": "4.6.0-alpha.5",
|
|
4
4
|
"description": "JupyterLab - Terminal Emulator Widget",
|
|
5
5
|
"homepage": "https://github.com/jupyterlab/jupyterlab",
|
|
6
6
|
"bugs": {
|
|
@@ -41,9 +41,9 @@
|
|
|
41
41
|
"watch": "tsc -b --watch"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@jupyterlab/apputils": "^4.7.0-alpha.
|
|
45
|
-
"@jupyterlab/services": "^7.6.0-alpha.
|
|
46
|
-
"@jupyterlab/translation": "^4.6.0-alpha.
|
|
44
|
+
"@jupyterlab/apputils": "^4.7.0-alpha.5",
|
|
45
|
+
"@jupyterlab/services": "^7.6.0-alpha.5",
|
|
46
|
+
"@jupyterlab/translation": "^4.6.0-alpha.5",
|
|
47
47
|
"@lumino/coreutils": "^2.2.2",
|
|
48
48
|
"@lumino/domutils": "^2.0.4",
|
|
49
49
|
"@lumino/messaging": "^2.0.4",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"color": "^5.0.0"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
|
-
"@jupyterlab/testing": "^4.6.0-alpha.
|
|
61
|
+
"@jupyterlab/testing": "^4.6.0-alpha.5",
|
|
62
62
|
"@types/jest": "^29.2.0",
|
|
63
63
|
"jest": "^29.2.0",
|
|
64
64
|
"jest-canvas-mock": "^2.5.2",
|
package/src/tokens.ts
CHANGED
|
@@ -70,6 +70,11 @@ export namespace ITerminal {
|
|
|
70
70
|
* changes if the terminal theme is 'inherit'.
|
|
71
71
|
*/
|
|
72
72
|
themeChanged: ISignal<this, void>;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* A signal emitted when users should be reminded how to leave terminal focus.
|
|
76
|
+
*/
|
|
77
|
+
escapeHintRequested: ISignal<this, void>;
|
|
73
78
|
}
|
|
74
79
|
/**
|
|
75
80
|
* Options for the terminal widget.
|
package/src/widget.ts
CHANGED
|
@@ -34,6 +34,16 @@ const TERMINAL_CLASS = 'jp-Terminal';
|
|
|
34
34
|
*/
|
|
35
35
|
const TERMINAL_BODY_CLASS = 'jp-Terminal-body';
|
|
36
36
|
|
|
37
|
+
/**
|
|
38
|
+
* The class name for screen reader only text.
|
|
39
|
+
*/
|
|
40
|
+
const SR_ONLY_CLASS = 'jp-sr-only';
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The delay in milliseconds to reset the escape key press.
|
|
44
|
+
*/
|
|
45
|
+
const ESCAPE_FOCUS_DELAY_MS = 350;
|
|
46
|
+
|
|
37
47
|
/**
|
|
38
48
|
* A widget which manages a terminal session.
|
|
39
49
|
*/
|
|
@@ -70,6 +80,16 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
|
|
|
70
80
|
this.addClass(TERMINAL_CLASS);
|
|
71
81
|
|
|
72
82
|
this._setThemeAttribute(theme);
|
|
83
|
+
this._terminalId = Private.id++;
|
|
84
|
+
this.id = `jp-Terminal-${this._terminalId}`;
|
|
85
|
+
this._escapeInstructionsId = `jp-Terminal-escape-instructions-${this._terminalId}`;
|
|
86
|
+
const escapeInstructions = document.createElement('p');
|
|
87
|
+
escapeInstructions.id = this._escapeInstructionsId;
|
|
88
|
+
escapeInstructions.className = SR_ONLY_CLASS;
|
|
89
|
+
escapeInstructions.textContent = this._trans.__(
|
|
90
|
+
'Press Escape twice to leave terminal focus. Press Enter to return focus to the terminal input.'
|
|
91
|
+
);
|
|
92
|
+
this.node.appendChild(escapeInstructions);
|
|
73
93
|
|
|
74
94
|
// Buffer session message while waiting for the terminal
|
|
75
95
|
let buffer = '';
|
|
@@ -103,7 +123,6 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
|
|
|
103
123
|
this._searchAddon = searchAddon;
|
|
104
124
|
this._initializeTerm();
|
|
105
125
|
|
|
106
|
-
this.id = `jp-Terminal-${Private.id++}`;
|
|
107
126
|
this.title.label = this._trans.__('Terminal');
|
|
108
127
|
this._isReady = true;
|
|
109
128
|
this._ready.resolve();
|
|
@@ -305,13 +324,30 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
|
|
|
305
324
|
return this._themeChanged;
|
|
306
325
|
}
|
|
307
326
|
|
|
327
|
+
/**
|
|
328
|
+
* A signal emitted when users should be reminded how to leave terminal focus.
|
|
329
|
+
*/
|
|
330
|
+
get escapeHintRequested(): ISignal<this, void> {
|
|
331
|
+
return this._escapeHintRequested;
|
|
332
|
+
}
|
|
333
|
+
|
|
308
334
|
/**
|
|
309
335
|
* Set the size of the terminal when attached if dirty.
|
|
310
336
|
*/
|
|
311
337
|
protected onAfterAttach(msg: Message): void {
|
|
338
|
+
this.node.addEventListener('keydown', this, true);
|
|
312
339
|
this.update();
|
|
313
340
|
}
|
|
314
341
|
|
|
342
|
+
/**
|
|
343
|
+
* Remove event listeners when the widget is detached.
|
|
344
|
+
*/
|
|
345
|
+
protected onBeforeDetach(msg: Message): void {
|
|
346
|
+
this.node.removeEventListener('keydown', this, true);
|
|
347
|
+
this._clearEscapeResetTimer();
|
|
348
|
+
this._escapePressedOnce = false;
|
|
349
|
+
}
|
|
350
|
+
|
|
315
351
|
/**
|
|
316
352
|
* Set the size of the terminal when shown if dirty.
|
|
317
353
|
*/
|
|
@@ -341,6 +377,13 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
|
|
|
341
377
|
if (!this._termOpened) {
|
|
342
378
|
this._term.open(this.node);
|
|
343
379
|
this._term.element?.classList.add(TERMINAL_BODY_CLASS);
|
|
380
|
+
this._term.textarea?.setAttribute(
|
|
381
|
+
'aria-describedby',
|
|
382
|
+
this._escapeInstructionsId
|
|
383
|
+
);
|
|
384
|
+
this._term.element
|
|
385
|
+
?.querySelector('.xterm-viewport')
|
|
386
|
+
?.setAttribute('aria-describedby', this._escapeInstructionsId);
|
|
344
387
|
this._termOpened = true;
|
|
345
388
|
}
|
|
346
389
|
|
|
@@ -408,13 +451,36 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
|
|
|
408
451
|
this.title.label = title;
|
|
409
452
|
});
|
|
410
453
|
|
|
411
|
-
// Do not add any Ctrl+C/Ctrl+V handling on macOS,
|
|
412
|
-
// where Cmd+C/Cmd+V works as intended.
|
|
413
|
-
if (Platform.IS_MAC) {
|
|
414
|
-
return;
|
|
415
|
-
}
|
|
416
|
-
|
|
417
454
|
term.attachCustomKeyEventHandler(event => {
|
|
455
|
+
// Send Shift+Enter as a line feed (\n) rather than carriage
|
|
456
|
+
// return (\r), so terminal applications can distinguish
|
|
457
|
+
// between Enter (execute) and Shift+Enter (newline). Handle
|
|
458
|
+
// only keydown and call preventDefault() so the browser
|
|
459
|
+
// suppresses the follow-up keypress event that xterm.js would
|
|
460
|
+
// otherwise turn into a \r.
|
|
461
|
+
// Skip during IME composition so composed text isn't split by
|
|
462
|
+
// an injected \n.
|
|
463
|
+
if (
|
|
464
|
+
event.type === 'keydown' &&
|
|
465
|
+
event.shiftKey &&
|
|
466
|
+
event.key === 'Enter' &&
|
|
467
|
+
!event.isComposing &&
|
|
468
|
+
event.keyCode !== 229
|
|
469
|
+
) {
|
|
470
|
+
event.preventDefault();
|
|
471
|
+
this.session.send({
|
|
472
|
+
type: 'stdin',
|
|
473
|
+
content: ['\n']
|
|
474
|
+
});
|
|
475
|
+
return false;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
// Do not add any Ctrl+C/Ctrl+V handling on macOS,
|
|
479
|
+
// where Cmd+C/Cmd+V works as intended.
|
|
480
|
+
if (Platform.IS_MAC) {
|
|
481
|
+
return true;
|
|
482
|
+
}
|
|
483
|
+
|
|
418
484
|
if (event.ctrlKey && event.key === 'c' && term.hasSelection()) {
|
|
419
485
|
// Return so that the usual OS copy happens
|
|
420
486
|
// instead of interrupt signal.
|
|
@@ -495,6 +561,81 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
|
|
|
495
561
|
);
|
|
496
562
|
}
|
|
497
563
|
|
|
564
|
+
/**
|
|
565
|
+
* Handle the `keydown` event for the widget.
|
|
566
|
+
*/
|
|
567
|
+
private _evtKeyDown(event: KeyboardEvent): void {
|
|
568
|
+
const xtermViewport = this._term.element?.querySelector(
|
|
569
|
+
'.xterm-viewport'
|
|
570
|
+
) as HTMLElement | null;
|
|
571
|
+
const xtermTextarea = this._term.textarea;
|
|
572
|
+
const activeElement = document.activeElement as HTMLElement | null;
|
|
573
|
+
const viewportFocused =
|
|
574
|
+
!!activeElement &&
|
|
575
|
+
!!xtermViewport &&
|
|
576
|
+
(activeElement === xtermViewport ||
|
|
577
|
+
xtermViewport.contains(activeElement));
|
|
578
|
+
const textareaFocused = !!xtermTextarea && activeElement === xtermTextarea;
|
|
579
|
+
|
|
580
|
+
if (event.key === 'Escape') {
|
|
581
|
+
if (!textareaFocused) {
|
|
582
|
+
this._clearEscapeResetTimer();
|
|
583
|
+
this._escapePressedOnce = false;
|
|
584
|
+
return;
|
|
585
|
+
}
|
|
586
|
+
if (!this._escapePressedOnce) {
|
|
587
|
+
this._escapePressedOnce = true;
|
|
588
|
+
this._scheduleEscapeReset();
|
|
589
|
+
return;
|
|
590
|
+
}
|
|
591
|
+
event.preventDefault();
|
|
592
|
+
event.stopPropagation();
|
|
593
|
+
this._clearEscapeResetTimer();
|
|
594
|
+
this._escapePressedOnce = false;
|
|
595
|
+
if (xtermTextarea) {
|
|
596
|
+
// This ensures pressing Tab does not return to the textarea and avoids
|
|
597
|
+
// becoming a tab trap.
|
|
598
|
+
xtermTextarea.tabIndex = -1;
|
|
599
|
+
}
|
|
600
|
+
xtermViewport?.setAttribute('tabindex', '0');
|
|
601
|
+
xtermViewport?.focus();
|
|
602
|
+
return;
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
this._clearEscapeResetTimer();
|
|
606
|
+
this._escapePressedOnce = false;
|
|
607
|
+
|
|
608
|
+
if (viewportFocused && event.key === 'Enter') {
|
|
609
|
+
event.preventDefault();
|
|
610
|
+
event.stopPropagation();
|
|
611
|
+
if (xtermTextarea) {
|
|
612
|
+
xtermTextarea.tabIndex = 0;
|
|
613
|
+
xtermTextarea.focus();
|
|
614
|
+
}
|
|
615
|
+
return;
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
if (viewportFocused && event.key === 'Tab' && xtermTextarea) {
|
|
619
|
+
xtermTextarea.tabIndex = -1;
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
private _scheduleEscapeReset(): void {
|
|
624
|
+
this._clearEscapeResetTimer();
|
|
625
|
+
this._escapeResetTimer = window.setTimeout(() => {
|
|
626
|
+
this._escapePressedOnce = false;
|
|
627
|
+
this._escapeHintRequested.emit();
|
|
628
|
+
this._escapeResetTimer = null;
|
|
629
|
+
}, ESCAPE_FOCUS_DELAY_MS);
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
private _clearEscapeResetTimer(): void {
|
|
633
|
+
if (this._escapeResetTimer !== null) {
|
|
634
|
+
window.clearTimeout(this._escapeResetTimer);
|
|
635
|
+
this._escapeResetTimer = null;
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
|
|
498
639
|
private _fitAddon: FitAddon;
|
|
499
640
|
private _searchAddon: SearchAddon;
|
|
500
641
|
private _needsResize = true;
|
|
@@ -507,6 +648,31 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
|
|
|
507
648
|
private _termOpened = false;
|
|
508
649
|
private _trans: TranslationBundle;
|
|
509
650
|
private _themeChanged = new Signal<this, void>(this);
|
|
651
|
+
private _escapeHintRequested = new Signal<this, void>(this);
|
|
652
|
+
private _escapePressedOnce = false;
|
|
653
|
+
private _escapeResetTimer: number | null = null;
|
|
654
|
+
private _terminalId: number;
|
|
655
|
+
private _escapeInstructionsId: string;
|
|
656
|
+
|
|
657
|
+
/**
|
|
658
|
+
* Handle the DOM events for the widget.
|
|
659
|
+
*
|
|
660
|
+
* @param event -The DOM event sent to the widget.
|
|
661
|
+
*
|
|
662
|
+
* #### Notes
|
|
663
|
+
* This method implements the DOM `EventListener` interface and is
|
|
664
|
+
* called in response to events on the terminal widget's node. It should
|
|
665
|
+
* not be called directly by user code.
|
|
666
|
+
*/
|
|
667
|
+
handleEvent(event: Event): void {
|
|
668
|
+
switch (event.type) {
|
|
669
|
+
case 'keydown':
|
|
670
|
+
this._evtKeyDown(event as KeyboardEvent);
|
|
671
|
+
break;
|
|
672
|
+
default:
|
|
673
|
+
break;
|
|
674
|
+
}
|
|
675
|
+
}
|
|
510
676
|
}
|
|
511
677
|
|
|
512
678
|
/**
|
package/style/base.css
CHANGED
|
@@ -12,14 +12,21 @@
|
|
|
12
12
|
padding: 8px;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
.jp-Terminal-body .xterm-viewport:focus-visible {
|
|
16
|
+
outline-width: 2px;
|
|
17
|
+
outline-style: solid;
|
|
18
|
+
outline-color: var(--jp-brand-color1);
|
|
19
|
+
outline-offset: -2px;
|
|
20
|
+
}
|
|
21
|
+
|
|
15
22
|
[data-term-theme='inherit'] .xterm .xterm-screen canvas {
|
|
16
|
-
border:
|
|
23
|
+
border: var(--jp-border-width) solid var(--jp-layout-color0);
|
|
17
24
|
}
|
|
18
25
|
|
|
19
26
|
[data-term-theme='light'] .xterm .xterm-screen canvas {
|
|
20
|
-
border:
|
|
27
|
+
border: var(--jp-border-width) solid #fff;
|
|
21
28
|
}
|
|
22
29
|
|
|
23
30
|
[data-term-theme='dark'] .xterm .xterm-screen canvas {
|
|
24
|
-
border:
|
|
31
|
+
border: var(--jp-border-width) solid #000;
|
|
25
32
|
}
|