diff --git a/package.json b/package.json index ebb9d5d..f57be40 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,6 @@ }, "postinstall": "electron-builder install-app-deps", "dependencies": { - "@xterm/xterm": "5.5.0", "ace-diff": "3.0.3", "ace-layout": "1.5.0", "ace-linters": "1.8.3", @@ -56,8 +55,6 @@ "electron-fetch": "1.9.1", "express": "4.18.2", "marked": "16.4.0", - "node-fetch": "3.3.2", - "node-pty": "1.0.0", "socket.io": "4.8.1", "uuid": "11.1.0", "zone.js": "0.15.0" diff --git a/src/app/app.component.html b/src/app/app.component.html index faeb172..c8598a1 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -5,7 +5,6 @@ - \ No newline at end of file diff --git a/src/app/app.component.ts b/src/app/app.component.ts index dab7eda..7e50850 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -5,7 +5,6 @@ import { TabsComponent } from './editor/tabs/tabs.component'; import { EditorsComponent } from './editor/editors.component'; import { SearchReplaceComponent } from "./editor/search-replace/search-replace.component"; import { MarkdownPreviewComponent } from "./editor/markdown-preview/markdown-preview.component"; -import { TerminalComponent } from "./editor/terminal/terminal.component"; import { LspManagerComponent } from "./editor/lsp-manager/lsp-manager.component"; @@ -18,7 +17,6 @@ import { LspManagerComponent } from "./editor/lsp-manager/lsp-manager.component" EditorsComponent, SearchReplaceComponent, MarkdownPreviewComponent, - TerminalComponent, LspManagerComponent, ], templateUrl: './app.component.html', diff --git a/src/app/common/services/editor/terminal/terminal.service.ts b/src/app/common/services/editor/terminal/terminal.service.ts deleted file mode 100644 index b40d0d0..0000000 --- a/src/app/common/services/editor/terminal/terminal.service.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Injectable } from '@angular/core'; -import { ReplaySubject, Observable } from 'rxjs'; - -import { ServiceMessage } from '../../../types/service-message.type'; - - - -@Injectable({ - providedIn: 'root' -}) -export class TerminalService { - private messageSubject: ReplaySubject = new ReplaySubject(1); - - - public sendMessage(data: ServiceMessage): void { - this.messageSubject.next(data); - } - - public getMessage$(): Observable { - return this.messageSubject.asObservable(); - } - -} \ No newline at end of file diff --git a/src/app/editor/code-view/view.base.ts b/src/app/editor/code-view/view.base.ts index 9c0f55f..4e76d22 100644 --- a/src/app/editor/code-view/view.base.ts +++ b/src/app/editor/code-view/view.base.ts @@ -14,7 +14,6 @@ import { EditorsService } from '../../common/services/editor/editors.service'; import { FilesService } from '../../common/services/files.service'; import { SearchReplaceService } from '../../common/services/editor/search-replace/search-replace.service'; import { MarkdownPreviewService } from '../../common/services/editor/markdown-preview/markdown-preview.service'; -import { TerminalService } from '../../common/services/editor/terminal/terminal.service'; import { LspManagerService } from '../../common/services/editor/lsp-manager/lsp-manager.service'; import { EditorSettings } from "../../common/configs/editor.config"; @@ -39,7 +38,6 @@ export class CodeViewBase { protected filesService: FilesService = inject(FilesService); protected searchReplaceService: SearchReplaceService = inject(SearchReplaceService); protected markdownPreviewService: MarkdownPreviewService = inject(MarkdownPreviewService); - protected terminalService: TerminalService = inject(TerminalService); protected lspManagerService: LspManagerService = inject(LspManagerService); @ViewChild('editor') editorElm!: ElementRef; @@ -134,12 +132,6 @@ export class CodeViewBase { // this.editor.execCommand("replace"); } - public terminalPopup() { - let message = new ServiceMessage(); - message.action = "toggle-terminal"; - this.terminalService.sendMessage(message); - } - public showFilesList() { let paths = this.filesService.getAllPaths(); let stubPaths = []; @@ -374,4 +366,4 @@ export class CodeViewBase { private quit() { window.main.quit(); } -} \ No newline at end of file +} diff --git a/src/app/editor/code-view/view.component.ts b/src/app/editor/code-view/view.component.ts index 9226d2f..be37a5b 100644 --- a/src/app/editor/code-view/view.component.ts +++ b/src/app/editor/code-view/view.component.ts @@ -142,7 +142,7 @@ export class CodeViewComponent extends CodeViewBase { private loadNewtonEventBindings(): void { // Note: https://ajaxorg.github.io/ace-api-docs/interfaces/ace.Ace.EditorEvents.html - this.editor.on("focus", (e) => { + this.editor.on("focus", (event) => { let message = new ServiceMessage(); message.action = "set-active-editor"; message.editorUUID = this.uuid; @@ -150,7 +150,6 @@ export class CodeViewComponent extends CodeViewBase { this.editorsService.sendMessage(message); this.searchReplaceService.sendMessage(message); - this.terminalService.sendMessage(message); message = new ServiceMessage(); message.action = "set-active-editor"; @@ -308,4 +307,4 @@ export class CodeViewComponent extends CodeViewBase { }, (timeout) ? timeout : this.debounceWait); } -} \ No newline at end of file +} diff --git a/src/app/editor/terminal/terminal.component.css b/src/app/editor/terminal/terminal.component.css deleted file mode 100644 index e69de29..0000000 diff --git a/src/app/editor/terminal/terminal.component.html b/src/app/editor/terminal/terminal.component.html deleted file mode 100644 index 1621916..0000000 --- a/src/app/editor/terminal/terminal.component.html +++ /dev/null @@ -1,6 +0,0 @@ -
-
-
-
-
-
diff --git a/src/app/editor/terminal/terminal.component.ts b/src/app/editor/terminal/terminal.component.ts deleted file mode 100644 index e9bd5ff..0000000 --- a/src/app/editor/terminal/terminal.component.ts +++ /dev/null @@ -1,137 +0,0 @@ -import { - Component, - DestroyRef, - ElementRef, - HostBinding, - ViewChild, - inject -} from '@angular/core'; -import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; - -// import { Terminal } from 'xterm'; -import { Terminal } from '@xterm/xterm'; -// import { FitAddon } from 'xterm-addon-fit'; - -import { TerminalService } from '../../common/services/editor/terminal/terminal.service'; - -import { ServiceMessage } from '../../common/types/service-message.type'; - - - -@Component({ - selector: 'terminal', - standalone: true, - imports: [ - ], - templateUrl: './terminal.component.html', - styleUrl: './terminal.component.css', - host: { - 'class': 'row terminal', - "(keyup)": "globalTerminalKeyHandler($event)" - } -}) -export class TerminalComponent { - readonly #destroyRef: DestroyRef = inject(DestroyRef); - - private terminalService: TerminalService = inject(TerminalService); - private terminal: Terminal = new Terminal(); - - @HostBinding("class.hidden") isHidden: boolean = true; - @ViewChild("terminalElm") terminalElm!: ElementRef; - - private editor!: any; - - constructor() { - this.loadSubscribers(); - this.loadMainSubscribers(); - } - - private ngAfterViewInit(): void { - this.loadTerminal(); - } - - // Note: https://stackoverflow.com/questions/63390143/how-do-i-connect-xterm-jsin-electron-to-a-real-working-command-prompt - private loadTerminal() { - // const fitAddon = new FitAddon(); - // this.terminal.loadAddon(fitAddon); - - this.terminal.open(this.terminalElm.nativeElement); - this.terminal.onData(e => { - console.log(e); - // ipcRenderer.send("terminal-into", e); - // window.main.quit(); - } ); - - // ipcRenderer.on('terminal-actions', (event, data) => { - // this.terminal.write(data); - // }) - - // Make the terminal's size and geometry fit the size of #terminal-container - // fitAddon.fit(); - } - - private loadSubscribers() { - this.terminalService.getMessage$().pipe( - takeUntilDestroyed(this.#destroyRef) - ).subscribe((message: ServiceMessage) => { - switch ( message.action ) { - case "toggle-terminal": - this.toggleTerminal(message); - break; - case "set-active-editor": - this.setActiveEditor(message); - break; - default: - break; - } - }); - } - - private loadMainSubscribers() { - window.main.onTerminalActions(async (action: string) => { - this.terminal.write(action); - // switch ( action ) { - // case "terminal-actions": - // break; - // default: - // break; - // } - }); - } - - - private toggleTerminal(message: ServiceMessage) { - this.isHidden = !this.isHidden; - - if (this.isHidden) { - this.editor.focus(); - return; - } - - // setTimeout(() => { - // }, 200); - } - - - private setActiveEditor(message: ServiceMessage) { - if (this.editor == message.rawData) return; - - this.editor = message.rawData; - - if (this.isHidden) return; - } - - public hideTerminal() { - this.isHidden = true; - this.editor.focus(); - } - - public globalTerminalKeyHandler(event: any) { - if (event.ctrlKey && event.key === ".") { - this.hideTerminal(); - } - } - - - -} \ No newline at end of file