From c1312c619728b1fabc9e73203dc7f36961296202 Mon Sep 17 00:00:00 2001 From: Javier Godoy <11554739+javier-godoy@users.noreply.github.com> Date: Tue, 13 Dec 2022 09:08:40 -0300 Subject: [PATCH 1/8] ci: add Vaadin 24 profile --- pom.xml | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9f71a45..5924587 100644 --- a/pom.xml +++ b/pom.xml @@ -455,7 +455,28 @@ - + + + v24 + + 17 + 17 + 24.0.0.alpha5 + 11.0.12 + + + + vaadin-prerelease + https://maven.vaadin.com/vaadin-prereleases + + + + + vaadin-prerelease + https://maven.vaadin.com/vaadin-prereleases + + + From d22de2945e4219d0ae4b720f965c051fa2a73ed3 Mon Sep 17 00:00:00 2001 From: Javier Godoy <11554739+javier-godoy@users.noreply.github.com> Date: Tue, 13 Dec 2022 09:14:26 -0300 Subject: [PATCH 2/8] chore: update .gitignore From https://github.com/FlowingCode/AddonStarter23/blob/b1994c1e7db48fd3361c7b0be24972442ca0289a/.gitignore --- .gitignore | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index ca7cbb0..b3e145a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,19 +1,18 @@ -/.settings -/target -/.classpath -/.project -/node_modules -/frontend -/webpack.generated.js -/node -/drivers -/package-lock.json -/webpack.config.js -/package.json +node_modules +target +.vscode +.settings +.project +.classpath +webpack.generated.js +package-lock.json +package.json +webpack.config.js /error-screenshots -/tsconfig.json -/.npmrc -/pnpm-lock.yaml -/pnpmfile.js -/types.d.ts +drivers +tsconfig.json .idea +types.d.ts +/frontend/generated +/frontend/index.html +vite.generated.ts \ No newline at end of file From c4cab4b3bf5e4f0015ea33ef9bc009ae9c2c2788 Mon Sep 17 00:00:00 2001 From: Javier Godoy <11554739+javier-godoy@users.noreply.github.com> Date: Tue, 13 Dec 2022 09:41:16 -0300 Subject: [PATCH 3/8] build(demo): upgrade commons-demo to 3.5.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5924587..fdac0db 100644 --- a/pom.xml +++ b/pom.xml @@ -111,7 +111,7 @@ com.flowingcode.vaadin.addons.demo commons-demo - 3.5.0 + 3.5.1 test From c88844da2ca4d261c293e4af4061ffb44443924c Mon Sep 17 00:00:00 2001 From: Javier Godoy <11554739+javier-godoy@users.noreply.github.com> Date: Tue, 13 Dec 2022 09:42:32 -0300 Subject: [PATCH 4/8] refactor: fix TS error Object is possibly 'undefined' --- .../META-INF/frontend/fc-xterm/xterm-clipboard-mixin.ts | 4 ++-- .../META-INF/frontend/fc-xterm/xterm-console-mixin.ts | 4 ++-- .../resources/META-INF/frontend/fc-xterm/xterm-fit-mixin.ts | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/resources/META-INF/frontend/fc-xterm/xterm-clipboard-mixin.ts b/src/main/resources/META-INF/frontend/fc-xterm/xterm-clipboard-mixin.ts index b53874a..a1f028b 100644 --- a/src/main/resources/META-INF/frontend/fc-xterm/xterm-clipboard-mixin.ts +++ b/src/main/resources/META-INF/frontend/fc-xterm/xterm-clipboard-mixin.ts @@ -57,8 +57,8 @@ class ClipboardAddon extends TerminalAddon { } let onEvent = (event, listener) => { - terminal.element.addEventListener(event, listener); - return {dispose : () => terminal.element.removeEventListener(event, listener)}; + terminal.element!.addEventListener(event, listener); + return {dispose : () => terminal.element!.removeEventListener(event, listener)}; }; diff --git a/src/main/resources/META-INF/frontend/fc-xterm/xterm-console-mixin.ts b/src/main/resources/META-INF/frontend/fc-xterm/xterm-console-mixin.ts index db009b3..134f665 100644 --- a/src/main/resources/META-INF/frontend/fc-xterm/xterm-console-mixin.ts +++ b/src/main/resources/META-INF/frontend/fc-xterm/xterm-console-mixin.ts @@ -312,12 +312,12 @@ export function XTermConsoleMixin>(Base } get currentLine() : string { - return this._consoleAddon.currentLine; + return this._consoleAddon!.currentLine; } writePrompt() { //execute writePrompt with blocking semantics - this.node.terminal.write('', ()=>this._consoleAddon.writePrompt()); + this.node.terminal.write('', ()=>this._consoleAddon!.writePrompt()); } } diff --git a/src/main/resources/META-INF/frontend/fc-xterm/xterm-fit-mixin.ts b/src/main/resources/META-INF/frontend/fc-xterm/xterm-fit-mixin.ts index 2aa0332..18025c5 100644 --- a/src/main/resources/META-INF/frontend/fc-xterm/xterm-fit-mixin.ts +++ b/src/main/resources/META-INF/frontend/fc-xterm/xterm-fit-mixin.ts @@ -86,10 +86,10 @@ export function XTermFitMixin>(Base: TB } fit() { - this._fitAddon.proposeDimensions(); + this._fitAddon!.proposeDimensions(); window.setTimeout(()=>{ try { - this._fitAddon?.fit(); + this._fitAddon!.fit(); } catch (e) { console.warn(e); } From bc550c48926972256c6d58a758f4c88294deea8a Mon Sep 17 00:00:00 2001 From: Javier Godoy <11554739+javier-godoy@users.noreply.github.com> Date: Tue, 13 Dec 2022 10:21:52 -0300 Subject: [PATCH 5/8] refactor: use strict TS syntax Type 'undefined' is not assignable to type 'number'. --- .../META-INF/frontend/fc-xterm/xterm-selection-mixin.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/resources/META-INF/frontend/fc-xterm/xterm-selection-mixin.ts b/src/main/resources/META-INF/frontend/fc-xterm/xterm-selection-mixin.ts index 30d4020..e7faabe 100644 --- a/src/main/resources/META-INF/frontend/fc-xterm/xterm-selection-mixin.ts +++ b/src/main/resources/META-INF/frontend/fc-xterm/xterm-selection-mixin.ts @@ -28,7 +28,7 @@ interface ISelectionMixin extends TerminalMixin { class SelectionAddon extends TerminalAddon { __selectionLength: number; - __selectionAnchor: number; + __selectionAnchor?: number; __selectionRight: boolean = true; activateCallback(terminal: Terminal): void { @@ -69,7 +69,7 @@ class SelectionAddon extends TerminalAddon { this.__selectionRight = !this.__selectionRight; } - let newSelectionStart = this.__selectionAnchor; + let newSelectionStart = this.__selectionAnchor!; if (!this.__selectionRight) { newSelectionStart -= newSelectionLength; } @@ -101,7 +101,7 @@ class SelectionAddon extends TerminalAddon { resetSelection(); ensureSelection(); - let dx = range.first * terminal.cols - this.__selectionAnchor; + let dx = range.first * terminal.cols - this.__selectionAnchor!; if (pos.startRow != range.first || pos.startColumn != promptLength()) { dx+= promptLength(); } @@ -117,7 +117,7 @@ class SelectionAddon extends TerminalAddon { resetSelection(); ensureSelection(); - moveSelection(range.last * terminal.cols + buffer.lines.get(range.last).getTrimmedLength() - this.__selectionAnchor); + moveSelection(range.last * terminal.cols + buffer.lines.get(range.last).getTrimmedLength() - this.__selectionAnchor!); }; let deleteSelection = (ev: KeyboardEvent) => { From bd784b395cfc3656391377a25e1d6c59d7b05daf Mon Sep 17 00:00:00 2001 From: Javier Godoy <11554739+javier-godoy@users.noreply.github.com> Date: Tue, 13 Dec 2022 10:31:46 -0300 Subject: [PATCH 6/8] refactor: use strict TS syntax The second parameter in CustomKeyEventHandlerRegistry.register can be undefined. --- .../META-INF/frontend/fc-xterm/xterm-console-mixin.ts | 2 +- .../resources/META-INF/frontend/fc-xterm/xterm-element.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/resources/META-INF/frontend/fc-xterm/xterm-console-mixin.ts b/src/main/resources/META-INF/frontend/fc-xterm/xterm-console-mixin.ts index 134f665..ef07e28 100644 --- a/src/main/resources/META-INF/frontend/fc-xterm/xterm-console-mixin.ts +++ b/src/main/resources/META-INF/frontend/fc-xterm/xterm-console-mixin.ts @@ -248,7 +248,7 @@ class ConsoleAddon extends TerminalAddon { 'F5', 'F6', 'F12' - ].includes(ev.key), null), + ].includes(ev.key), undefined), terminal.parser.registerCsiHandler({prefix: '<', final: 'N'}, linefeed) diff --git a/src/main/resources/META-INF/frontend/fc-xterm/xterm-element.ts b/src/main/resources/META-INF/frontend/fc-xterm/xterm-element.ts index d3421fa..42db279 100644 --- a/src/main/resources/META-INF/frontend/fc-xterm/xterm-element.ts +++ b/src/main/resources/META-INF/frontend/fc-xterm/xterm-element.ts @@ -50,9 +50,9 @@ class CustomKeyEventHandlerRegistry { private handlers: CustomKeyEventHandler[] = []; private next:integer=0; - register(customKey: CustomKey, handle: (event: KeyboardEvent) => void): CustomKeyEventHandlerRegistryDisposable; - register(predicate: KeyboardEventPredicate, handle: KeyboardEventHandler) : CustomKeyEventHandlerRegistryDisposable; - register(arg: CustomKey | KeyboardEventPredicate, handle: KeyboardEventHandler) : CustomKeyEventHandlerRegistryDisposable { + register(customKey: CustomKey, handle?: (event: KeyboardEvent) => void): CustomKeyEventHandlerRegistryDisposable; + register(predicate: KeyboardEventPredicate, handle?: KeyboardEventHandler) : CustomKeyEventHandlerRegistryDisposable; + register(arg: CustomKey | KeyboardEventPredicate, handle?: KeyboardEventHandler) : CustomKeyEventHandlerRegistryDisposable { let predicate : KeyboardEventPredicate; if ((typeof arg) === 'object') { let customKey = arg as any; From 0ab2d10f111f272701e746f4b177bc782fdd1392 Mon Sep 17 00:00:00 2001 From: Javier Godoy <11554739+javier-godoy@users.noreply.github.com> Date: Tue, 13 Dec 2022 10:59:23 -0300 Subject: [PATCH 7/8] refactor: use strict TS syntax The parameter of registerCsiHandler must return boolean, but the existing helper functions returned void (and relied on !!undefined==false). --- .../frontend/fc-xterm/xterm-console-mixin.ts | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/main/resources/META-INF/frontend/fc-xterm/xterm-console-mixin.ts b/src/main/resources/META-INF/frontend/fc-xterm/xterm-console-mixin.ts index ef07e28..fd8e6b4 100644 --- a/src/main/resources/META-INF/frontend/fc-xterm/xterm-console-mixin.ts +++ b/src/main/resources/META-INF/frontend/fc-xterm/xterm-console-mixin.ts @@ -204,27 +204,32 @@ class ConsoleAddon extends TerminalAddon { }).bind(inputHandler); let hasModifiers = (ev:KeyboardEvent) => ev.shiftKey || ev.altKey || ev.metaKey || ev.ctrlKey; + + function probe_others(callback: ((params: T[]) => void)): ((params: T[]) => boolean) { + // execute callback and also probe for other handlers + return params => {callback(params); return false;} + }; this._disposables = [ - terminal.parser.registerCsiHandler({prefix: '<', final: 'H'}, cursorHome), + terminal.parser.registerCsiHandler({prefix: '<', final: 'H'}, probe_others(cursorHome)), this.$node.customKeyEventHandlers.register(ev=> ev.key=='Home' && !hasModifiers(ev), ()=> terminal.write('\x1b[ ev.key=='End' && !hasModifiers(ev), ()=> terminal.write('\x1b[ ev.key=='ArrowLeft' && !hasModifiers(ev), ()=> terminal.write('\x1b[ ev.key=='ArrowRight' && !hasModifiers(ev), ()=> terminal.write('\x1b[ ev.key=='Backspace' && !hasModifiers(ev), ()=> terminal.write('\x1b[ ev.key=='Delete' && !hasModifiers(ev), ()=> terminal.write('\x1b[ ev.key=='Insert' && !hasModifiers(ev), ev=>{ this.$.insertMode = !this.$.insertMode; @@ -250,7 +255,7 @@ class ConsoleAddon extends TerminalAddon { 'F12' ].includes(ev.key), undefined), - terminal.parser.registerCsiHandler({prefix: '<', final: 'N'}, linefeed) + terminal.parser.registerCsiHandler({prefix: '<', final: 'N'}, probe_others(linefeed)) ]; From aff25618ba36eaa3a981ca8d02a4b1723b1ede73 Mon Sep 17 00:00:00 2001 From: Javier Godoy <11554739+javier-godoy@users.noreply.github.com> Date: Tue, 13 Dec 2022 11:51:18 -0300 Subject: [PATCH 8/8] refactor: use strict TS syntax The parameter of cursorBackwardWrapped, cursorForwardWrapped and deleteChar is optional and defaults to 0. --- .../frontend/fc-xterm/xterm-console-mixin.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/resources/META-INF/frontend/fc-xterm/xterm-console-mixin.ts b/src/main/resources/META-INF/frontend/fc-xterm/xterm-console-mixin.ts index fd8e6b4..e312b4d 100644 --- a/src/main/resources/META-INF/frontend/fc-xterm/xterm-console-mixin.ts +++ b/src/main/resources/META-INF/frontend/fc-xterm/xterm-console-mixin.ts @@ -56,11 +56,11 @@ class ConsoleAddon extends TerminalAddon { this._activeBuffer.x = Math.min(col, terminal.cols); }).bind(inputHandler); - let cursorForwardWrapped = (function(params: any) { + let cursorForwardWrapped = (function(params: any = [0]) { let buffer = this._bufferService.buffer; let x = buffer.x; let y = buffer.y; - for (let i=(params && params[0] || 1); i>0; --i) { + for (let i=(params[0] || 1); i>0; --i) { let apply=false; if (buffer.x>=this._bufferService.cols-1) { let next = buffer.lines.get(buffer.y+buffer.ybase+1); @@ -85,13 +85,13 @@ class ConsoleAddon extends TerminalAddon { return true; }).bind(inputHandler); - let cursorBackwardWrapped = (function(params : any) { + let cursorBackwardWrapped = (function(params : any = [0]) { let buffer = this._bufferService.buffer; let x = buffer.x; let y = buffer.y; let apply=false; - for (let i=0; i< (params && params[0] || 1); i++) { + for (let i=0; i< (params[0] || 1); i++) { let line = buffer.lines.get(buffer.y+buffer.ybase); if (!line.isWrapped && buffer.x< 1+promptLength()) { break; @@ -115,11 +115,11 @@ class ConsoleAddon extends TerminalAddon { return apply; }).bind(inputHandler); - let deleteChar = (function(params: any) { + let deleteChar = (function(params: any = [0]) { let buffer = this._bufferService.buffer; let x = buffer.x; let y = buffer.y; - for (let j=0; j< (params && params[0] || 1); j++) { + for (let j=0; j< (params[0] || 1); j++) { this.deleteChars({params:[1]}); let line = buffer.lines.get(buffer.ybase+buffer.y); let range = buffer.getWrappedRangeForLine(buffer.y + buffer.ybase)