@jupyterlab/terminal 4.6.0-alpha.3 → 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 +150 -7
- package/lib/widget.js.map +1 -1
- package/package.json +5 -5
- package/src/tokens.ts +5 -0
- package/src/widget.ts +176 -8
- 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,9 +62,18 @@ 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) => {
|
|
76
|
+
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
|
|
57
77
|
switch (msg.type) {
|
|
58
78
|
case 'stdout':
|
|
59
79
|
if (msg.content) {
|
|
@@ -77,7 +97,6 @@ export class Terminal extends Widget {
|
|
|
77
97
|
this._fitAddon = fitAddon;
|
|
78
98
|
this._searchAddon = searchAddon;
|
|
79
99
|
this._initializeTerm();
|
|
80
|
-
this.id = `jp-Terminal-${Private.id++}`;
|
|
81
100
|
this.title.label = this._trans.__('Terminal');
|
|
82
101
|
this._isReady = true;
|
|
83
102
|
this._ready.resolve();
|
|
@@ -120,6 +139,7 @@ export class Terminal extends Widget {
|
|
|
120
139
|
return;
|
|
121
140
|
}
|
|
122
141
|
this._options[option] = value;
|
|
142
|
+
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
|
|
123
143
|
switch (option) {
|
|
124
144
|
case 'fontFamily':
|
|
125
145
|
this._term.options.fontFamily = value;
|
|
@@ -247,12 +267,27 @@ export class Terminal extends Widget {
|
|
|
247
267
|
get themeChanged() {
|
|
248
268
|
return this._themeChanged;
|
|
249
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
|
+
}
|
|
250
276
|
/**
|
|
251
277
|
* Set the size of the terminal when attached if dirty.
|
|
252
278
|
*/
|
|
253
279
|
onAfterAttach(msg) {
|
|
280
|
+
this.node.addEventListener('keydown', this, true);
|
|
254
281
|
this.update();
|
|
255
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
|
+
}
|
|
256
291
|
/**
|
|
257
292
|
* Set the size of the terminal when shown if dirty.
|
|
258
293
|
*/
|
|
@@ -272,7 +307,7 @@ export class Terminal extends Widget {
|
|
|
272
307
|
* A message handler invoked on an `'update-request'` message.
|
|
273
308
|
*/
|
|
274
309
|
onUpdateRequest(msg) {
|
|
275
|
-
var _a;
|
|
310
|
+
var _a, _b, _c, _d;
|
|
276
311
|
if (!this.isVisible || !this.isAttached || !this._isReady) {
|
|
277
312
|
return;
|
|
278
313
|
}
|
|
@@ -280,6 +315,8 @@ export class Terminal extends Widget {
|
|
|
280
315
|
if (!this._termOpened) {
|
|
281
316
|
this._term.open(this.node);
|
|
282
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);
|
|
283
320
|
this._termOpened = true;
|
|
284
321
|
}
|
|
285
322
|
if (this._needsResize) {
|
|
@@ -335,12 +372,32 @@ export class Terminal extends Widget {
|
|
|
335
372
|
term.onTitleChange((title) => {
|
|
336
373
|
this.title.label = title;
|
|
337
374
|
});
|
|
338
|
-
// Do not add any Ctrl+C/Ctrl+V handling on macOS,
|
|
339
|
-
// where Cmd+C/Cmd+V works as intended.
|
|
340
|
-
if (Platform.IS_MAC) {
|
|
341
|
-
return;
|
|
342
|
-
}
|
|
343
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
|
+
}
|
|
344
401
|
if (event.ctrlKey && event.key === 'c' && term.hasSelection()) {
|
|
345
402
|
// Return so that the usual OS copy happens
|
|
346
403
|
// instead of interrupt signal.
|
|
@@ -357,6 +414,7 @@ export class Terminal extends Widget {
|
|
|
357
414
|
* Handle a message from the terminal session.
|
|
358
415
|
*/
|
|
359
416
|
_onMessage(sender, msg) {
|
|
417
|
+
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
|
|
360
418
|
switch (msg.type) {
|
|
361
419
|
case 'stdout':
|
|
362
420
|
if (msg.content) {
|
|
@@ -406,6 +464,91 @@ export class Terminal extends Widget {
|
|
|
406
464
|
}
|
|
407
465
|
this.node.setAttribute('data-term-theme', theme ? theme.toLowerCase() : 'inherit');
|
|
408
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
|
+
}
|
|
409
552
|
}
|
|
410
553
|
/**
|
|
411
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 = '';
|
|
@@ -77,6 +97,7 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
|
|
|
77
97
|
sender: TerminalNS.ITerminalConnection,
|
|
78
98
|
msg: TerminalNS.IMessage
|
|
79
99
|
): void => {
|
|
100
|
+
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
|
|
80
101
|
switch (msg.type) {
|
|
81
102
|
case 'stdout':
|
|
82
103
|
if (msg.content) {
|
|
@@ -102,7 +123,6 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
|
|
|
102
123
|
this._searchAddon = searchAddon;
|
|
103
124
|
this._initializeTerm();
|
|
104
125
|
|
|
105
|
-
this.id = `jp-Terminal-${Private.id++}`;
|
|
106
126
|
this.title.label = this._trans.__('Terminal');
|
|
107
127
|
this._isReady = true;
|
|
108
128
|
this._ready.resolve();
|
|
@@ -165,7 +185,7 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
|
|
|
165
185
|
}
|
|
166
186
|
|
|
167
187
|
this._options[option] = value;
|
|
168
|
-
|
|
188
|
+
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
|
|
169
189
|
switch (option) {
|
|
170
190
|
case 'fontFamily':
|
|
171
191
|
this._term.options.fontFamily = value as string | undefined;
|
|
@@ -304,13 +324,30 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
|
|
|
304
324
|
return this._themeChanged;
|
|
305
325
|
}
|
|
306
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
|
+
|
|
307
334
|
/**
|
|
308
335
|
* Set the size of the terminal when attached if dirty.
|
|
309
336
|
*/
|
|
310
337
|
protected onAfterAttach(msg: Message): void {
|
|
338
|
+
this.node.addEventListener('keydown', this, true);
|
|
311
339
|
this.update();
|
|
312
340
|
}
|
|
313
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
|
+
|
|
314
351
|
/**
|
|
315
352
|
* Set the size of the terminal when shown if dirty.
|
|
316
353
|
*/
|
|
@@ -340,6 +377,13 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
|
|
|
340
377
|
if (!this._termOpened) {
|
|
341
378
|
this._term.open(this.node);
|
|
342
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);
|
|
343
387
|
this._termOpened = true;
|
|
344
388
|
}
|
|
345
389
|
|
|
@@ -407,13 +451,36 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
|
|
|
407
451
|
this.title.label = title;
|
|
408
452
|
});
|
|
409
453
|
|
|
410
|
-
// Do not add any Ctrl+C/Ctrl+V handling on macOS,
|
|
411
|
-
// where Cmd+C/Cmd+V works as intended.
|
|
412
|
-
if (Platform.IS_MAC) {
|
|
413
|
-
return;
|
|
414
|
-
}
|
|
415
|
-
|
|
416
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
|
+
|
|
417
484
|
if (event.ctrlKey && event.key === 'c' && term.hasSelection()) {
|
|
418
485
|
// Return so that the usual OS copy happens
|
|
419
486
|
// instead of interrupt signal.
|
|
@@ -436,6 +503,7 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
|
|
|
436
503
|
sender: TerminalNS.ITerminalConnection,
|
|
437
504
|
msg: TerminalNS.IMessage
|
|
438
505
|
): void {
|
|
506
|
+
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
|
|
439
507
|
switch (msg.type) {
|
|
440
508
|
case 'stdout':
|
|
441
509
|
if (msg.content) {
|
|
@@ -493,6 +561,81 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
|
|
|
493
561
|
);
|
|
494
562
|
}
|
|
495
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
|
+
|
|
496
639
|
private _fitAddon: FitAddon;
|
|
497
640
|
private _searchAddon: SearchAddon;
|
|
498
641
|
private _needsResize = true;
|
|
@@ -505,6 +648,31 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
|
|
|
505
648
|
private _termOpened = false;
|
|
506
649
|
private _trans: TranslationBundle;
|
|
507
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
|
+
}
|
|
508
676
|
}
|
|
509
677
|
|
|
510
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
|
}
|