@device-management-toolkit/ui-toolkit-angular 11.1.8 → 12.0.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"device-management-toolkit-ui-toolkit-angular.mjs","sources":["../../sol/src/terminal/terminal.component.ts","../../sol/src/terminal/terminal.component.html","../../sol/src/sol.component.ts","../../sol/src/sol.component.html","../../kvm/src/kvm.component.ts","../../kvm/src/kvm.component.html","../../ider/src/ider.component.ts","../../public-api.ts","../../device-management-toolkit-ui-toolkit-angular.ts"],"sourcesContent":["/*********************************************************************\n * Copyright (c) Intel Corporation 2023\n * SPDX-License-Identifier: Apache-2.0\n **********************************************************************/\nimport { Component, OnInit, input, output } from '@angular/core'\nimport { Terminal } from '@xterm/xterm'\n@Component({\n selector: 'amt-terminal',\n templateUrl: './terminal.component.html'\n})\nexport class TerminalComponent implements OnInit {\n // TODO: Notes from signal input migration:\n // Input is initialized to `undefined` but type does not allow this value.\n // This worked with `@Input` because your project uses `--strictPropertyInitialization=false`.\n readonly term = input<Terminal>(undefined!)\n readonly handleKeyPress = output<any>()\n container!: HTMLElement | null\n ngOnInit(): void {\n const term = this.term()\n if (term == null) throw new Error('Terminal not found')\n this.container = document.getElementById('terminal')\n if (this.container == null) throw new Error('Container not found')\n term.open(this.container)\n term.onKey(({ key, domEvent }) => {\n domEvent.preventDefault()\n if (domEvent.ctrlKey && domEvent.key === 'c') {\n const termValue = this.term()\n if (termValue.hasSelection()) {\n navigator.clipboard\n .writeText(termValue.getSelection())\n .then(() => {})\n .catch((err) => {\n console.error('Failed to copy to clipboard', err)\n })\n } else {\n // Send interrupt signal (SIGINT) to terminal\n termValue.write('\\x03') // Sends Ctrl + C (ASCII code 03)\n }\n // Prevent the default browser behavior (like opening menus)\n return false\n }\n if (domEvent.ctrlKey && domEvent.key === 'v') {\n navigator.clipboard\n .readText()\n .then((text) => {\n this.handleKeyPress.emit(text)\n })\n .catch((err) => {\n console.error('Failed to read clipboard', err)\n })\n return false\n }\n this.handleKeyPress.emit(key)\n })\n }\n}\n","<div id=\"terminal\" class=\"xtermDisplay\" style=\"width: fit-content\"></div>\n","/*********************************************************************\n * Copyright (c) Intel Corporation 2023\n * SPDX-License-Identifier: Apache-2.0\n **********************************************************************/\nimport {\n Component,\n ViewEncapsulation,\n OnDestroy,\n AfterViewInit,\n input,\n output,\n inject,\n DestroyRef,\n effect\n} from '@angular/core'\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop'\nimport { Terminal } from '@xterm/xterm'\nimport {\n AmtTerminal,\n AMTRedirector,\n TerminalDataProcessor,\n RedirectorConfig,\n Protocol\n} from '@device-management-toolkit/ui-toolkit/core'\nimport { TerminalComponent } from './terminal/terminal.component'\n\n@Component({\n selector: 'amt-sol',\n templateUrl: './sol.component.html',\n styleUrls: ['./sol.component.css'],\n encapsulation: ViewEncapsulation.None,\n imports: [TerminalComponent]\n})\nexport class SOLComponent implements OnDestroy {\n private readonly destroyRef = inject(DestroyRef)\n\n terminal: AmtTerminal\n container!: any\n term: Terminal\n redirector: AMTRedirector\n dataProcessor: TerminalDataProcessor\n deviceState = 0\n\n readonly deviceStatus = output<number>()\n readonly deviceConnection = input<boolean>(false)\n public mpsServer = input('')\n public authToken = input('')\n public deviceId = input('')\n\n constructor() {\n // React to deviceConnection changes\n effect(() => {\n const connected = this.deviceConnection()\n if (connected) {\n if (this.redirector == null) {\n this.instantiate()\n }\n this.startSol()\n } else if (this.redirector != null) {\n this.stopSol()\n }\n })\n }\n\n instantiate(): void {\n this.terminal = new AmtTerminal()\n this.dataProcessor = new TerminalDataProcessor(this.terminal)\n const config: RedirectorConfig = {\n mode: 'sol',\n protocol: Protocol.SOL,\n fr: new FileReader(),\n host: this.deviceId(),\n port: 16994,\n user: '',\n pass: '',\n tls: 0,\n tls1only: 0,\n authToken: this.authToken(),\n server: this.mpsServer()\n }\n this.redirector = new AMTRedirector(config)\n this.terminal.onSend = this.redirector.send.bind(this.redirector)\n this.redirector.onNewState = this.terminal.StateChange.bind(this.terminal)\n this.redirector.onStateChanged = this.onTerminalStateChange.bind(this)\n this.redirector.onProcessData = this.dataProcessor.processData.bind(this)\n this.dataProcessor.processDataToXterm = this.handleWriteToXterm.bind(this)\n this.dataProcessor.clearTerminal = this.handleClearTerminal.bind(this)\n this.term = new Terminal({\n rows: 30,\n cols: 100,\n cursorStyle: 'block',\n fontWeight: 'bold'\n })\n }\n\n handleKeyPress(domEvent: any): void {\n this.terminal?.TermSendKeys(domEvent)\n }\n\n handleClearTerminal(): void {\n this.term?.reset()\n }\n\n handleWriteToXterm(str: string): void {\n this.term?.write(str)\n }\n\n onTerminalStateChange(redirector: AMTRedirector, state: number): void {\n this.deviceStatus.emit(state)\n this.deviceState = state\n }\n\n startSol(): void {\n if (this.redirector != null) {\n this.redirector.start(WebSocket)\n }\n }\n\n stopSol(): void {\n if (this.redirector != null) {\n this.redirector.stop()\n this.handleClearTerminal()\n this.term?.dispose()\n this.cleanup()\n }\n }\n\n cleanup(): void {\n ;(this.terminal as any) = null\n ;(this.redirector as any) = null\n ;(this.dataProcessor as any) = null\n ;(this.term as any) = null\n }\n\n ngOnDestroy(): void {\n this.stopSol()\n }\n}\n","<div class=\"container\">\n @if (deviceState === 3) {\n <amt-terminal [term]=\"term\" (handleKeyPress)=\"handleKeyPress($event)\"></amt-terminal>\n }\n</div>\n","/*********************************************************************\n * Copyright (c) Intel Corporation 2023\n * SPDX-License-Identifier: Apache-2.0\n **********************************************************************/\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n OnDestroy,\n viewChild,\n input,\n output,\n inject,\n Renderer2,\n effect,\n signal,\n DestroyRef\n} from '@angular/core'\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop'\nimport {\n AMTDesktop,\n AMTKvmDataRedirector,\n RedirectorConfig,\n DataProcessor,\n IDataProcessor,\n KeyBoardHelper,\n MouseHelper,\n Protocol\n} from '@device-management-toolkit/ui-toolkit/core'\nimport { fromEvent, timer, Subscription } from 'rxjs'\nimport { throttleTime } from 'rxjs/operators'\n\ninterface EncodingOption {\n value: number\n viewValue: string\n}\ninterface KeyObject {\n code: number\n down: boolean\n}\n\n@Component({\n selector: 'amt-kvm',\n templateUrl: './kvm.component.html',\n styleUrls: ['./kvm.component.css']\n})\nexport class KVMComponent implements OnDestroy {\n private readonly renderer = inject(Renderer2)\n private readonly destroyRef = inject(DestroyRef)\n private KEY_SEQUENCE_DELAY_MS = 10\n readonly canvas = viewChild<ElementRef>('canvas')\n readonly device = viewChild.required<string>('device')\n\n // Canvas properties\n public context: CanvasRenderingContext2D | null = null\n public width = signal(400)\n public height = signal(400)\n\n // Input properties\n public isFullscreen = input(false)\n public mpsServer = input('')\n public authToken = input('')\n public deviceId = input('')\n\n // Input/Output properties\n readonly deviceStatus = output<number>()\n readonly deviceConnection = input<boolean>(false)\n readonly selectedEncoding = input<number>(1)\n readonly selectedHotkey = input<string>('')\n\n // Component state\n module: AMTDesktop | null = null\n redirector: AMTKvmDataRedirector | null = null\n dataProcessor: IDataProcessor | null = null\n mouseHelper: MouseHelper | null = null\n keyboardHelper: KeyBoardHelper | null = null\n selected = signal(1)\n private mouseMove$?: Subscription\n private isEncodingChange = false\n\n readonly encodings: EncodingOption[] = [\n { value: 1, viewValue: 'RLE 8' },\n { value: 2, viewValue: 'RLE 16' }\n ]\n\n constructor() {\n effect(() => {\n this.toggleFullscreen()\n })\n\n // React to deviceConnection changes\n effect(() => {\n const connected = this.deviceConnection()\n if (connected && this.redirector == null && !this.isEncodingChange) {\n console.log('KVMComponent: Device connected, initializing KVM...')\n this.init()\n } else if (!connected && this.redirector != null) {\n console.log('KVMComponent: Device disconnected, stopping KVM...')\n this.stopKvm()\n }\n })\n\n // React to selectedEncoding changes\n effect(() => {\n if (this.selectedEncoding() === this.selected() || !this.deviceConnection()) return\n console.log('KVMComponent: Encoding changed to', this.selectedEncoding())\n const encoding = this.selectedEncoding()\n this.selected.set(encoding)\n\n // Set flag to prevent connection effect interference\n if (this.redirector != null) {\n this.isEncodingChange = true\n this.onEncodingChange()\n }\n })\n\n // React to selectedHotkey changes\n effect(() => {\n const hotkey = this.selectedHotkey()\n if (hotkey && this.deviceConnection() && this.keyboardHelper) {\n console.log('KVMComponent: Hotkey triggered:', hotkey)\n this.sendHotkey(hotkey)\n }\n })\n }\n\n toggleFullscreen(): void {\n const canvasElement = this.canvas()?.nativeElement\n if (!canvasElement) return\n\n if (this.isFullscreen()) {\n if (canvasElement.requestFullscreen) {\n canvasElement.requestFullscreen()\n }\n this.renderer.addClass(canvasElement, 'fullscreen')\n } else {\n if (document.exitFullscreen && document.fullscreenElement != null) {\n document.exitFullscreen()\n }\n this.renderer.removeClass(canvasElement, 'fullscreen')\n }\n this.mouseHelper?.resetOffsets()\n }\n\n instantiate(): void {\n const canvas = this.canvas()\n this.context = canvas?.nativeElement.getContext('2d') || null\n const config: RedirectorConfig = {\n mode: 'kvm',\n protocol: Protocol.KVM,\n fr: new FileReader(),\n host: this.deviceId(),\n port: 16994,\n user: '',\n pass: '',\n tls: 0,\n tls1only: 0,\n authToken: this.authToken(),\n server: this.mpsServer()\n }\n this.redirector = new AMTKvmDataRedirector(config)\n this.module = new AMTDesktop(this.context)\n this.dataProcessor = new DataProcessor(this.redirector, this.module)\n this.mouseHelper = new MouseHelper(this.module, this.redirector, 200)\n this.keyboardHelper = new KeyBoardHelper(this.module, this.redirector)\n this.redirector.onProcessData = this.module.processData.bind(this.module)\n this.redirector.onStart = this.module.start.bind(this.module)\n this.redirector.onNewState = this.module.onStateChange.bind(this.module)\n this.redirector.onSendKvmData = this.module.onSendKvmData.bind(this.module)\n this.redirector.onStateChanged = this.onConnectionStateChange.bind(this)\n this.redirector.onError = this.onRedirectorError.bind(this)\n this.module.onSend = this.redirector.send.bind(this.redirector)\n this.module.onProcessData = this.dataProcessor.processData.bind(this.dataProcessor)\n this.module.bpp = this.selected()\n\n this.mouseMove$ = fromEvent<MouseEvent>(canvas?.nativeElement, 'mousemove')\n .pipe(throttleTime(200), takeUntilDestroyed(this.destroyRef))\n .subscribe((event: MouseEvent) => {\n this.mouseHelper?.mousemove(event)\n })\n }\n\n private onConnectionStateChange = (redirector: any, state: number): void => {\n this.deviceStatus.emit(state)\n }\n\n onRedirectorError(): void {\n this.reset()\n }\n\n init(): void {\n this.instantiate()\n setTimeout(() => {\n this.autoConnect()\n }, 4000)\n }\n\n autoConnect(): void {\n if (this.redirector) {\n this.redirector.start(WebSocket)\n this.keyboardHelper?.GrabKeyInput()\n }\n }\n\n private onEncodingChange(): void {\n this.stopKvm()\n timer(1000).subscribe(() => {\n // Need to reinitialize since stopKvm() reset the redirector to null\n this.init()\n // Note: Parent component handles clearing isEncodingChange flag after full process\n })\n }\n\n reset(): void {\n this.redirector = null\n this.module = null\n this.dataProcessor = null\n this.height.set(400)\n this.width.set(400)\n }\n\n stopKvm(): void {\n this.redirector?.stop()\n this.keyboardHelper?.UnGrabKeyInput()\n this.reset()\n }\n\n onMouseup(event: MouseEvent): void {\n this.mouseHelper?.mouseup(event)\n }\n\n onMousedown(event: MouseEvent): void {\n this.mouseHelper?.mousedown(event)\n }\n\n onMousemove(event: MouseEvent): void {\n this.mouseHelper?.mousemove(event)\n }\n\n sendHotkey(hotKeyType: string): void {\n if (!this.keyboardHelper) {\n console.warn('KVMComponent: Cannot send hotkey - keyboard helper not available')\n return\n }\n\n const keySequence = this.getKeySequence(hotKeyType)\n if (keySequence?.keys) {\n console.log('KVMComponent: Sending hotkey sequence for', hotKeyType)\n // Send each key in the sequence with a small delay\n keySequence.keys.forEach((key: KeyObject, index: number) => {\n setTimeout(() => {\n // Use the KeyboardHelper's existing handleKeyEvent method\n // 0 = Up, 1 = Down (from the UpDown enum)\n const upDown = key.down ? 1 : 0\n\n // Create a mock keyboard event with the key code\n const mockEvent = {\n keyCode: key.code,\n preventDefault: () => {},\n stopPropagation: () => {}\n } as KeyboardEvent\n\n // Use the existing handleKeyEvent method\n this.keyboardHelper!.handleKeyEvent(upDown, mockEvent)\n }, index * this.KEY_SEQUENCE_DELAY_MS) // delay between keys\n })\n }\n }\n\n private getKeySequence(hotKeyType: string): { keys: KeyObject[] } | null {\n // Check for function key patterns (alt-f1 to alt-f12, ctrl-alt-f1 to ctrl-alt-f12)\n const altFnMatch = hotKeyType.match(/^alt-f(\\d+)$/)\n const ctrlAltFnMatch = hotKeyType.match(/^ctrl-alt-f(\\d+)$/)\n\n if (altFnMatch) {\n const fnNum = parseInt(altFnMatch[1], 10)\n return this.buildFunctionKeySequence(fnNum, false)\n }\n\n if (ctrlAltFnMatch) {\n const fnNum = parseInt(ctrlAltFnMatch[1], 10)\n return this.buildFunctionKeySequence(fnNum, true)\n }\n\n // Handle other hotkey combinations\n switch (hotKeyType) {\n case 'ctrl-alt-del':\n return {\n keys: [\n { code: 17, down: true }, // Ctrl down (JS keyCode)\n { code: 18, down: true }, // Alt down (JS keyCode)\n { code: 46, down: true }, // Delete down (JS keyCode)\n { code: 46, down: false }, // Delete up (JS keyCode)\n { code: 18, down: false }, // Alt up (JS keyCode)\n { code: 17, down: false } // Ctrl up (JS keyCode)\n ]\n }\n case 'alt-tab':\n return {\n keys: [\n { code: 18, down: true }, // Alt down (JS keyCode)\n { code: 9, down: true }, // Tab down (JS keyCode)\n { code: 9, down: false }, // Tab up (JS keyCode)\n { code: 18, down: false } // Alt up (JS keyCode)\n ]\n }\n case 'alt-release':\n return {\n keys: [\n { code: 18, down: false } // Alt up (JS keyCode)\n ]\n }\n case 'windows':\n return {\n keys: [\n { code: 0xffe7, down: true }, // Windows key down\n { code: 0xffe7, down: false } // Windows key up\n ]\n }\n case 'windows-l':\n return {\n keys: [\n { code: 0xffe7, down: true }, // Windows down\n { code: 108, down: true }, // L down\n { code: 108, down: false }, // L up\n { code: 0xffe7, down: false } // Windows up\n ]\n }\n case 'windows-r':\n return {\n keys: [\n { code: 0xffe7, down: true }, // Windows down\n { code: 82, down: true }, // R down\n { code: 82, down: false }, // R up\n { code: 0xffe7, down: false } // Windows up\n ]\n }\n case 'windows-up':\n return {\n keys: [\n { code: 0xffe7, down: true }, // Windows down\n { code: 0xff52, down: true }, // Up arrow down\n { code: 0xff52, down: false }, // Up arrow up\n { code: 0xffe7, down: false } // Windows up\n ]\n }\n case 'windows-down':\n return {\n keys: [\n { code: 0xffe7, down: true }, // Windows down\n { code: 0xff54, down: true }, // Down arrow down\n { code: 0xff54, down: false }, // Down arrow up\n { code: 0xffe7, down: false } // Windows up\n ]\n }\n case 'windows-left':\n return {\n keys: [\n { code: 0xffe7, down: true }, // Windows down\n { code: 0xff51, down: true }, // Left arrow down\n { code: 0xff51, down: false }, // Left arrow up\n { code: 0xffe7, down: false } // Windows up\n ]\n }\n case 'windows-right':\n return {\n keys: [\n { code: 0xffe7, down: true }, // Windows down\n { code: 0xff53, down: true }, // Right arrow down\n { code: 0xff53, down: false }, // Right arrow up\n { code: 0xffe7, down: false } // Windows up\n ]\n }\n case 'ctrl-w':\n return {\n keys: [\n { code: 0xffe3, down: true }, // Ctrl down\n { code: 87, down: true }, // W down\n { code: 87, down: false }, // W up\n { code: 0xffe3, down: false } // Ctrl up\n ]\n }\n default:\n return null\n }\n }\n\n private buildFunctionKeySequence(fnNum: number, includeCtrl: boolean): { keys: KeyObject[] } | null {\n // Validate function key number (F1-F12)\n if (fnNum < 1 || fnNum > 12) {\n return null\n }\n\n // Calculate function key code: F1 = 0xffbe, F2 = 0xffbf, ..., F12 = 0xffc9\n const fnKeyCode = 0xffbe + (fnNum - 1)\n const keys: KeyObject[] = []\n\n // Add Ctrl if needed\n if (includeCtrl) {\n keys.push({ code: 0xffe3, down: true }) // Ctrl down\n }\n\n // Add Alt\n keys.push({ code: 0xffe9, down: true }) // Alt down\n\n // Add function key press\n keys.push({ code: fnKeyCode, down: true }) // Fn down\n keys.push({ code: fnKeyCode, down: false }) // Fn up\n\n // Release modifiers in reverse order\n keys.push({ code: 0xffe9, down: false }) // Alt up\n\n if (includeCtrl) {\n keys.push({ code: 0xffe3, down: false }) // Ctrl up\n }\n\n return { keys }\n }\n\n ngOnDestroy(): void {\n this.mouseMove$?.unsubscribe()\n this.stopKvm()\n }\n}\n","<div>\n <canvas\n class=\"canvas\"\n #canvas\n [width]=\"width\"\n [height]=\"height\"\n oncontextmenu=\"return false\"\n (mouseup)=\"onMouseup($event)\"\n (mousedown)=\"onMousedown($event)\"\n (mousemove)=\"onMousemove($event)\"></canvas>\n</div>\n","import { Component, OnDestroy, input, output, inject, DestroyRef, effect } from '@angular/core'\nimport { AMTRedirector, Protocol, AMTIDER, RedirectorConfig } from '@device-management-toolkit/ui-toolkit/core'\n\nexport interface IDERData {\n floppyRead: number\n floppyWrite: number\n cdromRead: number\n cdromWrite: number\n}\n\n@Component({\n selector: 'amt-ider',\n template: '',\n styles: []\n})\nexport class IDERComponent implements OnDestroy {\n private readonly destroyRef = inject(DestroyRef)\n\n redirector: AMTRedirector | null\n ider: AMTIDER | null\n data: IDERData | null\n deviceState = 0\n\n readonly deviceStatus = output<number>()\n readonly iderData = output<IDERData>()\n\n readonly deviceConnection = input<boolean>(false)\n public readonly cdrom = input<File | null>(null)\n public readonly floppy = input<File | null>(null)\n public mpsServer = input('')\n public authToken = input('')\n public deviceId = input('')\n\n constructor() {\n // React to deviceConnection changes\n effect(() => {\n const connected = this.deviceConnection()\n if (connected) {\n if (this.redirector == null) {\n this.init()\n }\n } else {\n this.stopIder()\n }\n })\n }\n\n init(): void {\n this.instantiate()\n setTimeout(() => {\n this.startIder()\n }, 4000)\n }\n\n startIder(): void {\n if (this.redirector != null) {\n this.redirector.start(WebSocket)\n }\n }\n\n instantiate(): void {\n const config: RedirectorConfig = {\n mode: 'ider',\n protocol: Protocol.IDER,\n fr: new FileReader(),\n host: this.deviceId(),\n port: 16994,\n user: '',\n pass: '',\n tls: 0,\n tls1only: 0,\n authToken: this.authToken(),\n server: this.mpsServer()\n }\n this.redirector = new AMTRedirector(config)\n this.ider = new AMTIDER(this.redirector, this.cdrom(), this.floppy())\n this.redirector.onNewState = this.ider.stateChange.bind(this.ider)\n this.redirector.onStateChanged = this.onConnectionStateChange.bind(this)\n this.redirector.onProcessData = this.ider.processData.bind(this.ider)\n this.ider.sectorStats = this.iderSectorStats.bind(this)\n }\n\n iderSectorStats(mode: number, dev: number, total: number, start: number, len: number): void {\n if (this.ider == null) {\n return\n }\n if (mode === 1) {\n if (dev === 0) {\n // Floppy\n this.ider.floppyRead += len * 512\n } else {\n // CD-ROM\n this.ider.cdromRead += len * 2048\n }\n } else {\n if (dev === 0) {\n // Floppy\n this.ider.floppyWrite += len * 512\n } else {\n // CD-ROM\n this.ider.cdromWrite += len * 2048\n }\n }\n this.iderData.emit({\n floppyRead: this.ider.floppyRead,\n cdromRead: this.ider.cdromRead,\n floppyWrite: this.ider.floppyWrite,\n cdromWrite: this.ider.cdromWrite\n })\n }\n\n onConnectionStateChange = (redirector: any, state: number): any => {\n this.deviceStatus.emit(state)\n }\n\n stopIder(): void {\n if (this.redirector != null) {\n this.redirector.stop()\n this.cleanup()\n }\n }\n\n cleanup(): void {\n this.redirector = null\n this.ider = null\n }\n\n ngOnDestroy(): void {\n if (this.ider != null) {\n this.ider.stop()\n }\n }\n}\n","/*********************************************************************\n * Copyright (c) Intel Corporation 2023\n * SPDX-License-Identifier: Apache-2.0\n **********************************************************************/\n/*\n * Public API Surface\n */\n\nexport * from './sol/src/sol.component'\nexport * from './kvm/src/kvm.component'\nexport * from './ider/src/ider.component'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device-management-toolkit-ui-toolkit-angular.mjs","names":[],"sources":["../../sol/src/terminal/terminal.component.ts","../../sol/src/terminal/terminal.component.html","../../sol/src/sol.component.ts","../../sol/src/sol.component.html","../../kvm/src/kvm.component.ts","../../kvm/src/kvm.component.html","../../ider/src/ider.component.ts"],"sourcesContent":["/*********************************************************************\n * Copyright (c) Intel Corporation 2023\n * SPDX-License-Identifier: Apache-2.0\n **********************************************************************/\nimport { Component, OnInit, input, output } from '@angular/core'\nimport { Terminal } from '@xterm/xterm'\n@Component({\n selector: 'amt-terminal',\n templateUrl: './terminal.component.html'\n})\nexport class TerminalComponent implements OnInit {\n readonly term = input.required<Terminal>()\n readonly handleKeyPress = output<any>()\n container: HTMLElement | null = null\n ngOnInit(): void {\n const term = this.term()\n if (term == null) throw new Error('Terminal not found')\n this.container = document.getElementById('terminal')\n if (this.container == null) throw new Error('Container not found')\n term.open(this.container)\n term.onKey(({ key, domEvent }) => {\n domEvent.preventDefault()\n if (domEvent.ctrlKey && domEvent.key === 'c') {\n const termValue = this.term()\n if (termValue.hasSelection()) {\n navigator.clipboard\n .writeText(termValue.getSelection())\n .then(() => {})\n .catch((err) => {\n console.error('Failed to copy to clipboard', err)\n })\n } else {\n // Send interrupt signal (SIGINT) to terminal\n termValue.write('\\x03') // Sends Ctrl + C (ASCII code 03)\n }\n // Prevent the default browser behavior (like opening menus)\n return false\n }\n if (domEvent.ctrlKey && domEvent.key === 'v') {\n navigator.clipboard\n .readText()\n .then((text) => {\n this.handleKeyPress.emit(text)\n })\n .catch((err) => {\n console.error('Failed to read clipboard', err)\n })\n return false\n }\n this.handleKeyPress.emit(key)\n })\n }\n}\n","<div id=\"terminal\" class=\"xtermDisplay\" style=\"width: fit-content\"></div>\n","/*********************************************************************\n * Copyright (c) Intel Corporation 2023\n * SPDX-License-Identifier: Apache-2.0\n **********************************************************************/\nimport {\n Component,\n ViewEncapsulation,\n OnDestroy,\n AfterViewInit,\n input,\n output,\n inject,\n DestroyRef,\n effect,\n signal\n} from '@angular/core'\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop'\nimport { Terminal } from '@xterm/xterm'\nimport {\n AmtTerminal,\n AMTRedirector,\n TerminalDataProcessor,\n RedirectorConfig,\n Protocol\n} from '@device-management-toolkit/ui-toolkit/core'\nimport { TerminalComponent } from './terminal/terminal.component'\n\n@Component({\n selector: 'amt-sol',\n templateUrl: './sol.component.html',\n styleUrls: ['./sol.component.css'],\n encapsulation: ViewEncapsulation.None,\n imports: [TerminalComponent]\n})\nexport class SOLComponent implements OnDestroy {\n private readonly destroyRef = inject(DestroyRef)\n\n terminal: AmtTerminal | null = null\n container!: any\n term: Terminal | null = null\n redirector: AMTRedirector | null = null\n dataProcessor: TerminalDataProcessor | null = null\n private readonly _deviceState = signal(0)\n readonly deviceState = this._deviceState.asReadonly()\n\n readonly deviceStatus = output<number>()\n readonly deviceConnection = input<boolean>(false)\n public mpsServer = input('')\n public authToken = input('')\n public deviceId = input('')\n\n constructor() {\n // React to deviceConnection changes\n effect(() => {\n const connected = this.deviceConnection()\n if (connected) {\n if (this.redirector == null) {\n this.instantiate()\n }\n this.startSol()\n } else if (this.redirector != null) {\n this.stopSol()\n }\n })\n }\n\n instantiate(): void {\n this.terminal = new AmtTerminal()\n this.dataProcessor = new TerminalDataProcessor(this.terminal)\n const config: RedirectorConfig = {\n mode: 'sol',\n protocol: Protocol.SOL,\n fr: new FileReader(),\n host: this.deviceId(),\n port: 16994,\n user: '',\n pass: '',\n tls: 0,\n tls1only: 0,\n authToken: this.authToken(),\n server: this.mpsServer()\n }\n this.redirector = new AMTRedirector(config)\n this.terminal.onSend = this.redirector.send.bind(this.redirector)\n this.redirector.onNewState = this.terminal.StateChange.bind(this.terminal)\n this.redirector.onStateChanged = this.onTerminalStateChange.bind(this)\n this.redirector.onProcessData = this.dataProcessor.processData.bind(this)\n this.dataProcessor.processDataToXterm = this.handleWriteToXterm.bind(this)\n this.dataProcessor.clearTerminal = this.handleClearTerminal.bind(this)\n this.term = new Terminal({\n rows: 30,\n cols: 100,\n cursorStyle: 'block',\n fontWeight: 'bold'\n })\n }\n\n handleKeyPress(domEvent: any): void {\n this.terminal?.TermSendKeys(domEvent)\n }\n\n handleClearTerminal(): void {\n this.term?.reset()\n }\n\n handleWriteToXterm(str: string): void {\n this.term?.write(str)\n }\n\n onTerminalStateChange(redirector: AMTRedirector, state: number): void {\n this.deviceStatus.emit(state)\n this._deviceState.set(state)\n }\n\n startSol(): void {\n if (this.redirector != null) {\n this.redirector.start(WebSocket)\n }\n }\n\n stopSol(): void {\n if (this.redirector != null) {\n this.redirector.stop()\n this.handleClearTerminal()\n this.term?.dispose()\n this.cleanup()\n }\n }\n\n cleanup(): void {\n this.terminal = null\n this.redirector = null\n this.dataProcessor = null\n this.term = null\n }\n\n ngOnDestroy(): void {\n this.stopSol()\n }\n}\n","<div class=\"container\">\n @if (deviceState() === 3 && term) {\n <amt-terminal [term]=\"term\" (handleKeyPress)=\"handleKeyPress($event)\"></amt-terminal>\n }\n</div>\n","/*********************************************************************\n * Copyright (c) Intel Corporation 2023\n * SPDX-License-Identifier: Apache-2.0\n **********************************************************************/\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n OnDestroy,\n viewChild,\n input,\n output,\n inject,\n Renderer2,\n effect,\n signal,\n DestroyRef\n} from '@angular/core'\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop'\nimport {\n AMTDesktop,\n AMTKvmDataRedirector,\n RedirectorConfig,\n DataProcessor,\n IDataProcessor,\n KeyBoardHelper,\n MouseHelper,\n Protocol\n} from '@device-management-toolkit/ui-toolkit/core'\nimport { fromEvent, timer, Subscription } from 'rxjs'\nimport { throttleTime } from 'rxjs/operators'\n\ninterface EncodingOption {\n value: number\n viewValue: string\n}\ninterface KeyObject {\n code: number\n down: boolean\n}\n\n@Component({\n selector: 'amt-kvm',\n templateUrl: './kvm.component.html',\n styleUrls: ['./kvm.component.css']\n})\nexport class KVMComponent implements OnDestroy {\n private readonly renderer = inject(Renderer2)\n private readonly destroyRef = inject(DestroyRef)\n private KEY_SEQUENCE_DELAY_MS = 10\n readonly canvas = viewChild<ElementRef>('canvas')\n readonly device = viewChild.required<string>('device')\n\n // Canvas properties\n public context: CanvasRenderingContext2D | null = null\n public width = signal(400)\n public height = signal(400)\n\n // Input properties\n public isFullscreen = input(false)\n public mpsServer = input('')\n public authToken = input('')\n public deviceId = input('')\n\n // Input/Output properties\n readonly deviceStatus = output<number>()\n readonly deviceConnection = input<boolean>(false)\n readonly selectedEncoding = input<number>(1)\n readonly selectedHotkey = input<string>('')\n\n // Component state\n module: AMTDesktop | null = null\n redirector: AMTKvmDataRedirector | null = null\n dataProcessor: IDataProcessor | null = null\n mouseHelper: MouseHelper | null = null\n keyboardHelper: KeyBoardHelper | null = null\n selected = signal(1)\n private mouseMove$?: Subscription\n private isEncodingChange = false\n\n readonly encodings: EncodingOption[] = [\n { value: 1, viewValue: 'RLE 8' },\n { value: 2, viewValue: 'RLE 16' }\n ]\n\n constructor() {\n effect(() => {\n this.toggleFullscreen()\n })\n\n // React to deviceConnection changes\n effect(() => {\n const connected = this.deviceConnection()\n if (connected && this.redirector == null && !this.isEncodingChange) {\n console.log('KVMComponent: Device connected, initializing KVM...')\n this.init()\n } else if (!connected && this.redirector != null) {\n console.log('KVMComponent: Device disconnected, stopping KVM...')\n this.stopKvm()\n }\n })\n\n // React to selectedEncoding changes\n effect(() => {\n if (this.selectedEncoding() === this.selected() || !this.deviceConnection()) return\n console.log('KVMComponent: Encoding changed to', this.selectedEncoding())\n const encoding = this.selectedEncoding()\n this.selected.set(encoding)\n\n // Set flag to prevent connection effect interference\n if (this.redirector != null) {\n this.isEncodingChange = true\n this.onEncodingChange()\n }\n })\n\n // React to selectedHotkey changes\n effect(() => {\n const hotkey = this.selectedHotkey()\n if (hotkey && this.deviceConnection() && this.keyboardHelper) {\n console.log('KVMComponent: Hotkey triggered:', hotkey)\n this.sendHotkey(hotkey)\n }\n })\n }\n\n toggleFullscreen(): void {\n const canvasElement = this.canvas()?.nativeElement\n if (!canvasElement) return\n\n if (this.isFullscreen()) {\n if (canvasElement.requestFullscreen) {\n canvasElement.requestFullscreen()\n }\n this.renderer.addClass(canvasElement, 'fullscreen')\n } else {\n if (document.exitFullscreen && document.fullscreenElement != null) {\n document.exitFullscreen()\n }\n this.renderer.removeClass(canvasElement, 'fullscreen')\n }\n this.mouseHelper?.resetOffsets()\n }\n\n instantiate(): void {\n const canvas = this.canvas()\n this.context = canvas?.nativeElement.getContext('2d') || null\n const config: RedirectorConfig = {\n mode: 'kvm',\n protocol: Protocol.KVM,\n fr: new FileReader(),\n host: this.deviceId(),\n port: 16994,\n user: '',\n pass: '',\n tls: 0,\n tls1only: 0,\n authToken: this.authToken(),\n server: this.mpsServer()\n }\n this.redirector = new AMTKvmDataRedirector(config)\n this.module = new AMTDesktop(this.context)\n this.dataProcessor = new DataProcessor(this.redirector, this.module)\n this.mouseHelper = new MouseHelper(this.module, this.redirector, 200)\n this.keyboardHelper = new KeyBoardHelper(this.module, this.redirector)\n this.redirector.onProcessData = this.module.processData.bind(this.module)\n this.redirector.onStart = this.module.start.bind(this.module)\n this.redirector.onNewState = this.module.onStateChange.bind(this.module)\n this.redirector.onSendKvmData = this.module.onSendKvmData.bind(this.module)\n this.redirector.onStateChanged = this.onConnectionStateChange.bind(this)\n this.redirector.onError = this.onRedirectorError.bind(this)\n this.module.onSend = this.redirector.send.bind(this.redirector)\n this.module.onProcessData = this.dataProcessor.processData.bind(this.dataProcessor)\n this.module.bpp = this.selected()\n\n this.mouseMove$ = fromEvent<MouseEvent>(canvas?.nativeElement, 'mousemove')\n .pipe(throttleTime(200), takeUntilDestroyed(this.destroyRef))\n .subscribe((event: MouseEvent) => {\n this.mouseHelper?.mousemove(event)\n })\n }\n\n private onConnectionStateChange = (redirector: any, state: number): void => {\n this.deviceStatus.emit(state)\n }\n\n onRedirectorError(): void {\n this.reset()\n }\n\n init(): void {\n this.instantiate()\n setTimeout(() => {\n this.autoConnect()\n }, 4000)\n }\n\n autoConnect(): void {\n if (this.redirector) {\n this.redirector.start(WebSocket)\n this.keyboardHelper?.GrabKeyInput()\n }\n }\n\n private onEncodingChange(): void {\n this.stopKvm()\n timer(1000).subscribe(() => {\n // Need to reinitialize since stopKvm() reset the redirector to null\n this.init()\n // Note: Parent component handles clearing isEncodingChange flag after full process\n })\n }\n\n reset(): void {\n this.redirector = null\n this.module = null\n this.dataProcessor = null\n this.height.set(400)\n this.width.set(400)\n }\n\n stopKvm(): void {\n this.redirector?.stop()\n this.keyboardHelper?.UnGrabKeyInput()\n this.reset()\n }\n\n onMouseup(event: MouseEvent): void {\n this.mouseHelper?.mouseup(event)\n }\n\n onMousedown(event: MouseEvent): void {\n this.mouseHelper?.mousedown(event)\n }\n\n onMousemove(event: MouseEvent): void {\n this.mouseHelper?.mousemove(event)\n }\n\n sendHotkey(hotKeyType: string): void {\n if (!this.keyboardHelper) {\n console.warn('KVMComponent: Cannot send hotkey - keyboard helper not available')\n return\n }\n\n const keySequence = this.getKeySequence(hotKeyType)\n if (keySequence?.keys) {\n console.log('KVMComponent: Sending hotkey sequence for', hotKeyType)\n // Send each key in the sequence with a small delay\n keySequence.keys.forEach((key: KeyObject, index: number) => {\n setTimeout(() => {\n // Use the KeyboardHelper's existing handleKeyEvent method\n // 0 = Up, 1 = Down (from the UpDown enum)\n const upDown = key.down ? 1 : 0\n\n // Create a mock keyboard event with the key code\n const mockEvent = {\n keyCode: key.code,\n preventDefault: () => {},\n stopPropagation: () => {}\n } as KeyboardEvent\n\n // Use the existing handleKeyEvent method\n this.keyboardHelper!.handleKeyEvent(upDown, mockEvent)\n }, index * this.KEY_SEQUENCE_DELAY_MS) // delay between keys\n })\n }\n }\n\n private getKeySequence(hotKeyType: string): { keys: KeyObject[] } | null {\n // Check for function key patterns (alt-f1 to alt-f12, ctrl-alt-f1 to ctrl-alt-f12)\n const altFnMatch = hotKeyType.match(/^alt-f(\\d+)$/)\n const ctrlAltFnMatch = hotKeyType.match(/^ctrl-alt-f(\\d+)$/)\n\n if (altFnMatch) {\n const fnNum = parseInt(altFnMatch[1], 10)\n return this.buildFunctionKeySequence(fnNum, false)\n }\n\n if (ctrlAltFnMatch) {\n const fnNum = parseInt(ctrlAltFnMatch[1], 10)\n return this.buildFunctionKeySequence(fnNum, true)\n }\n\n // Handle other hotkey combinations\n switch (hotKeyType) {\n case 'ctrl-alt-del':\n return {\n keys: [\n { code: 17, down: true }, // Ctrl down (JS keyCode)\n { code: 18, down: true }, // Alt down (JS keyCode)\n { code: 46, down: true }, // Delete down (JS keyCode)\n { code: 46, down: false }, // Delete up (JS keyCode)\n { code: 18, down: false }, // Alt up (JS keyCode)\n { code: 17, down: false } // Ctrl up (JS keyCode)\n ]\n }\n case 'alt-tab':\n return {\n keys: [\n { code: 18, down: true }, // Alt down (JS keyCode)\n { code: 9, down: true }, // Tab down (JS keyCode)\n { code: 9, down: false }, // Tab up (JS keyCode)\n { code: 18, down: false } // Alt up (JS keyCode)\n ]\n }\n case 'alt-release':\n return {\n keys: [\n { code: 18, down: false } // Alt up (JS keyCode)\n ]\n }\n case 'windows':\n return {\n keys: [\n { code: 0xffe7, down: true }, // Windows key down\n { code: 0xffe7, down: false } // Windows key up\n ]\n }\n case 'windows-l':\n return {\n keys: [\n { code: 0xffe7, down: true }, // Windows down\n { code: 108, down: true }, // L down\n { code: 108, down: false }, // L up\n { code: 0xffe7, down: false } // Windows up\n ]\n }\n case 'windows-r':\n return {\n keys: [\n { code: 0xffe7, down: true }, // Windows down\n { code: 82, down: true }, // R down\n { code: 82, down: false }, // R up\n { code: 0xffe7, down: false } // Windows up\n ]\n }\n case 'windows-up':\n return {\n keys: [\n { code: 0xffe7, down: true }, // Windows down\n { code: 0xff52, down: true }, // Up arrow down\n { code: 0xff52, down: false }, // Up arrow up\n { code: 0xffe7, down: false } // Windows up\n ]\n }\n case 'windows-down':\n return {\n keys: [\n { code: 0xffe7, down: true }, // Windows down\n { code: 0xff54, down: true }, // Down arrow down\n { code: 0xff54, down: false }, // Down arrow up\n { code: 0xffe7, down: false } // Windows up\n ]\n }\n case 'windows-left':\n return {\n keys: [\n { code: 0xffe7, down: true }, // Windows down\n { code: 0xff51, down: true }, // Left arrow down\n { code: 0xff51, down: false }, // Left arrow up\n { code: 0xffe7, down: false } // Windows up\n ]\n }\n case 'windows-right':\n return {\n keys: [\n { code: 0xffe7, down: true }, // Windows down\n { code: 0xff53, down: true }, // Right arrow down\n { code: 0xff53, down: false }, // Right arrow up\n { code: 0xffe7, down: false } // Windows up\n ]\n }\n case 'ctrl-w':\n return {\n keys: [\n { code: 0xffe3, down: true }, // Ctrl down\n { code: 87, down: true }, // W down\n { code: 87, down: false }, // W up\n { code: 0xffe3, down: false } // Ctrl up\n ]\n }\n default:\n return null\n }\n }\n\n private buildFunctionKeySequence(fnNum: number, includeCtrl: boolean): { keys: KeyObject[] } | null {\n // Validate function key number (F1-F12)\n if (fnNum < 1 || fnNum > 12) {\n return null\n }\n\n // Calculate function key code: F1 = 0xffbe, F2 = 0xffbf, ..., F12 = 0xffc9\n const fnKeyCode = 0xffbe + (fnNum - 1)\n const keys: KeyObject[] = []\n\n // Add Ctrl if needed\n if (includeCtrl) {\n keys.push({ code: 0xffe3, down: true }) // Ctrl down\n }\n\n // Add Alt\n keys.push({ code: 0xffe9, down: true }) // Alt down\n\n // Add function key press\n keys.push({ code: fnKeyCode, down: true }) // Fn down\n keys.push({ code: fnKeyCode, down: false }) // Fn up\n\n // Release modifiers in reverse order\n keys.push({ code: 0xffe9, down: false }) // Alt up\n\n if (includeCtrl) {\n keys.push({ code: 0xffe3, down: false }) // Ctrl up\n }\n\n return { keys }\n }\n\n ngOnDestroy(): void {\n this.mouseMove$?.unsubscribe()\n this.stopKvm()\n }\n}\n","<div>\n <canvas\n class=\"canvas\"\n #canvas\n [width]=\"width()\"\n [height]=\"height()\"\n oncontextmenu=\"return false\"\n (mouseup)=\"onMouseup($event)\"\n (mousedown)=\"onMousedown($event)\"\n (mousemove)=\"onMousemove($event)\"></canvas>\n</div>\n","import { Component, OnDestroy, input, output, inject, DestroyRef, effect, signal } from '@angular/core'\nimport { AMTRedirector, Protocol, AMTIDER, RedirectorConfig } from '@device-management-toolkit/ui-toolkit/core'\n\nexport interface IDERData {\n floppyRead: number\n floppyWrite: number\n cdromRead: number\n cdromWrite: number\n}\n\n@Component({\n selector: 'amt-ider',\n template: '',\n styles: []\n})\nexport class IDERComponent implements OnDestroy {\n private readonly destroyRef = inject(DestroyRef)\n\n redirector: AMTRedirector | null = null\n ider: AMTIDER | null = null\n data: IDERData | null = null\n private readonly _deviceState = signal(0)\n readonly deviceState = this._deviceState.asReadonly()\n\n readonly deviceStatus = output<number>()\n readonly iderData = output<IDERData>()\n\n readonly deviceConnection = input<boolean>(false)\n public readonly cdrom = input<File | null>(null)\n public readonly floppy = input<File | null>(null)\n public mpsServer = input('')\n public authToken = input('')\n public deviceId = input('')\n\n constructor() {\n // React to deviceConnection changes\n effect(() => {\n const connected = this.deviceConnection()\n if (connected) {\n if (this.redirector == null) {\n this.init()\n }\n } else {\n this.stopIder()\n }\n })\n }\n\n init(): void {\n this.instantiate()\n setTimeout(() => {\n this.startIder()\n }, 4000)\n }\n\n startIder(): void {\n if (this.redirector != null) {\n this.redirector.start(WebSocket)\n }\n }\n\n instantiate(): void {\n const config: RedirectorConfig = {\n mode: 'ider',\n protocol: Protocol.IDER,\n fr: new FileReader(),\n host: this.deviceId(),\n port: 16994,\n user: '',\n pass: '',\n tls: 0,\n tls1only: 0,\n authToken: this.authToken(),\n server: this.mpsServer()\n }\n this.redirector = new AMTRedirector(config)\n this.ider = new AMTIDER(this.redirector, this.cdrom(), this.floppy())\n this.redirector.onNewState = this.ider.stateChange.bind(this.ider)\n this.redirector.onStateChanged = this.onConnectionStateChange.bind(this)\n this.redirector.onProcessData = this.ider.processData.bind(this.ider)\n this.ider.sectorStats = this.iderSectorStats.bind(this)\n }\n\n iderSectorStats(mode: number, dev: number, total: number, start: number, len: number): void {\n if (this.ider == null) {\n return\n }\n if (mode === 1) {\n if (dev === 0) {\n // Floppy\n this.ider.floppyRead += len * 512\n } else {\n // CD-ROM\n this.ider.cdromRead += len * 2048\n }\n } else {\n if (dev === 0) {\n // Floppy\n this.ider.floppyWrite += len * 512\n } else {\n // CD-ROM\n this.ider.cdromWrite += len * 2048\n }\n }\n this.iderData.emit({\n floppyRead: this.ider.floppyRead,\n cdromRead: this.ider.cdromRead,\n floppyWrite: this.ider.floppyWrite,\n cdromWrite: this.ider.cdromWrite\n })\n }\n\n onConnectionStateChange = (redirector: any, state: number): any => {\n this.deviceStatus.emit(state)\n this._deviceState.set(state)\n }\n\n stopIder(): void {\n if (this.redirector != null) {\n this.redirector.stop()\n this.cleanup()\n }\n }\n\n cleanup(): void {\n this.redirector = null\n this.ider = null\n }\n\n ngOnDestroy(): void {\n if (this.ider != null) {\n this.ider.stop()\n }\n }\n}\n"],"mappings":";;;;;;;AAUA,IAAa,oBAAb,MAAa,kBAAiB;CAJ9B,cAAA;EAKW,KAAA,OAAO,MAAM,SAAoB,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;EACjC,KAAA,iBAAiB,OAAM;EAChC,KAAA,YAAgC;CAuCjC;CAtCC,WAAQ;EACN,MAAM,OAAO,KAAK,KAAI;EACtB,IAAI,QAAQ,MAAM,MAAM,IAAI,MAAM,oBAAoB;EACtD,KAAK,YAAY,SAAS,eAAe,UAAU;EACnD,IAAI,KAAK,aAAa,MAAM,MAAM,IAAI,MAAM,qBAAqB;EACjE,KAAK,KAAK,KAAK,SAAS;EACxB,KAAK,OAAO,EAAE,KAAK,eAAc;GAC/B,SAAS,eAAc;GACvB,IAAI,SAAS,WAAW,SAAS,QAAQ,KAAK;IAC5C,MAAM,YAAY,KAAK,KAAI;IAC3B,IAAI,UAAU,aAAY,GACxB,UAAU,UACP,UAAU,UAAU,aAAY,CAAE,CAAC,CACnC,WAAU,CAAE,CAAC,CAAC,CACd,OAAO,QAAO;KACb,QAAQ,MAAM,+BAA+B,GAAG;IAClD,CAAC;SAGH,UAAU,MAAM,GAAM;IAGxB,OAAO;GACT;GACA,IAAI,SAAS,WAAW,SAAS,QAAQ,KAAK;IAC5C,UAAU,UACP,SAAQ,CAAE,CACV,MAAM,SAAQ;KACb,KAAK,eAAe,KAAK,IAAI;IAC/B,CAAC,CAAC,CACD,OAAO,QAAO;KACb,QAAQ,MAAM,4BAA4B,GAAG;IAC/C,CAAC;IACH,OAAO;GACT;GACA,KAAK,eAAe,KAAK,GAAG;EAC9B,CAAC;CACH;CAzCW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAiB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAjB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAiB,cAAA;GAAA,UAAA;GAAA,QAAA,EAAA,MAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA,EAAA;GAAA,SAAA,EAAA,gBAAA,iBAAA;GAAA,UAAA;GAAA,UCV9B;EACA,CAAA;CAAA;;ADSa,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAiB,YAAA,CAAA;EAJ7B,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAc,UAAA;EAAA,CAAA;;;;;;;;;;;;;;;;;AE2B1B,IAAa,eAAb,MAAa,aAAY;CAiBvB,cAAA;EAhBiB,KAAA,aAAa,OAAO,UAAU;EAE/C,KAAA,WAA+B;EAE/B,KAAA,OAAwB;EACxB,KAAA,aAAmC;EACnC,KAAA,gBAA8C;EAC7B,KAAA,eAAe,OAAO,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,eAAA,CAAA,+BAAA,CAAA,CAAA;EAChC,KAAA,cAAc,KAAK,aAAa,WAAU;EAE1C,KAAA,eAAe,OAAM;EACrB,KAAA,mBAAmB,MAAe,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,mBAAA,CAAA,+BAAA,CAAA,CAAA;EAC1C,KAAA,YAAY,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;EACrB,KAAA,YAAY,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;EACrB,KAAA,WAAW,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;EAIzB,aAAY;GAEV,IADkB,KAAK,iBACnB,GAAW;IACb,IAAI,KAAK,cAAc,MACrB,KAAK,YAAW;IAElB,KAAK,SAAQ;GACf,OAAO,IAAI,KAAK,cAAc,MAC5B,KAAK,QAAO;EAEhB,CAAC;CACH;CAEA,cAAW;EACT,KAAK,WAAW,IAAI,YAAW;EAC/B,KAAK,gBAAgB,IAAI,sBAAsB,KAAK,QAAQ;EAC5D,MAAM,SAA2B;GAC/B,MAAM;GACN,UAAU,SAAS;GACnB,IAAI,IAAI,WAAU;GAClB,MAAM,KAAK,SAAQ;GACnB,MAAM;GACN,MAAM;GACN,MAAM;GACN,KAAK;GACL,UAAU;GACV,WAAW,KAAK,UAAS;GACzB,QAAQ,KAAK,UAAS;EACvB;EACD,KAAK,aAAa,IAAI,cAAc,MAAM;EAC1C,KAAK,SAAS,SAAS,KAAK,WAAW,KAAK,KAAK,KAAK,UAAU;EAChE,KAAK,WAAW,aAAa,KAAK,SAAS,YAAY,KAAK,KAAK,QAAQ;EACzE,KAAK,WAAW,iBAAiB,KAAK,sBAAsB,KAAK,IAAI;EACrE,KAAK,WAAW,gBAAgB,KAAK,cAAc,YAAY,KAAK,IAAI;EACxE,KAAK,cAAc,qBAAqB,KAAK,mBAAmB,KAAK,IAAI;EACzE,KAAK,cAAc,gBAAgB,KAAK,oBAAoB,KAAK,IAAI;EACrE,KAAK,OAAO,IAAI,SAAS;GACvB,MAAM;GACN,MAAM;GACN,aAAa;GACb,YAAY;EACb,CAAA;CACH;CAEA,eAAe,UAAa;EAC1B,KAAK,UAAU,aAAa,QAAQ;CACtC;CAEA,sBAAmB;EACjB,KAAK,MAAM,MAAK;CAClB;CAEA,mBAAmB,KAAW;EAC5B,KAAK,MAAM,MAAM,GAAG;CACtB;CAEA,sBAAsB,YAA2B,OAAa;EAC5D,KAAK,aAAa,KAAK,KAAK;EAC5B,KAAK,aAAa,IAAI,KAAK;CAC7B;CAEA,WAAQ;EACN,IAAI,KAAK,cAAc,MACrB,KAAK,WAAW,MAAM,SAAS;CAEnC;CAEA,UAAO;EACL,IAAI,KAAK,cAAc,MAAM;GAC3B,KAAK,WAAW,KAAI;GACpB,KAAK,oBAAmB;GACxB,KAAK,MAAM,QAAO;GAClB,KAAK,QAAO;EACd;CACF;CAEA,UAAO;EACL,KAAK,WAAW;EAChB,KAAK,aAAa;EAClB,KAAK,gBAAgB;EACrB,KAAK,OAAO;CACd;CAEA,cAAW;EACT,KAAK,QAAO;CACd;CAxGW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAY,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAZ;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAY,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,kBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,WAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,WAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,UAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;GAAA;GAAA,SAAA,EAAA,cAAA,eAAA;GAAA,UAAA;GAAA,UClCzB;GAKA,QAAA,CAAA,kFAAA;GAAA,cAAA,CAAA;IAAA,MAAA;IAAA,MD2BY;IAAiB,UAAA;IAAA,QAAA,CAAA,MAAA;IAAA,SAAA,CAAA,gBAAA;GAAA,CAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;AAEhB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAY,YAAA,CAAA;EAPxB,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAS,eAGJ,kBAAkB;GAAI,SAC5B,CAAC,iBAAiB;GAAC,UAAA;GAAA,QAAA,CAAA,kFAAA;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AEc9B,IAAa,eAAb,MAAa,aAAY;CAuCvB,cAAA;EAtCiB,KAAA,WAAW,OAAO,SAAS;EAC3B,KAAA,aAAa,OAAO,UAAU;EACvC,KAAA,wBAAwB;EACvB,KAAA,SAAS,UAAsB,UAAS,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;EACxC,KAAA,SAAS,UAAU,SAAiB,UAAS,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;EAG/C,KAAA,UAA2C;EAC3C,KAAA,QAAQ,OAAO,KAAI,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;EACnB,KAAA,SAAS,OAAO,KAAI,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;EAGpB,KAAA,eAAe,MAAM,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,eAAA,CAAA,+BAAA,CAAA,CAAA;EAC3B,KAAA,YAAY,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;EACrB,KAAA,YAAY,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;EACrB,KAAA,WAAW,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;EAGlB,KAAA,eAAe,OAAM;EACrB,KAAA,mBAAmB,MAAe,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,mBAAA,CAAA,+BAAA,CAAA,CAAA;EACxC,KAAA,mBAAmB,MAAc,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,mBAAA,CAAA,+BAAA,CAAA,CAAA;EACnC,KAAA,iBAAiB,MAAc,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,iBAAA,CAAA,+BAAA,CAAA,CAAA;EAG3C,KAAA,SAA4B;EAC5B,KAAA,aAA0C;EAC1C,KAAA,gBAAuC;EACvC,KAAA,cAAkC;EAClC,KAAA,iBAAwC;EACxC,KAAA,WAAW,OAAO,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;EAEZ,KAAA,mBAAmB;EAElB,KAAA,YAA8B,CACrC;GAAE,OAAO;GAAG,WAAW;EAAO,GAC9B;GAAE,OAAO;GAAG,WAAW;EAAQ,CAChC;EAmGO,KAAA,2BAA2B,YAAiB,UAAuB;GACzE,KAAK,aAAa,KAAK,KAAK;EAC9B;EAlGE,aAAY;GACV,KAAK,iBAAgB;EACvB,CAAC;EAGD,aAAY;GACV,MAAM,YAAY,KAAK,iBAAgB;GACvC,IAAI,aAAa,KAAK,cAAc,QAAQ,CAAC,KAAK,kBAAkB;IAClE,QAAQ,IAAI,qDAAqD;IACjE,KAAK,KAAI;GACX,OAAO,IAAI,CAAC,aAAa,KAAK,cAAc,MAAM;IAChD,QAAQ,IAAI,oDAAoD;IAChE,KAAK,QAAO;GACd;EACF,CAAC;EAGD,aAAY;GACV,IAAI,KAAK,iBAAgB,MAAO,KAAK,SAAQ,KAAM,CAAC,KAAK,iBAAgB,GAAI;GAC7E,QAAQ,IAAI,qCAAqC,KAAK,iBAAgB,CAAE;GACxE,MAAM,WAAW,KAAK,iBAAgB;GACtC,KAAK,SAAS,IAAI,QAAQ;GAG1B,IAAI,KAAK,cAAc,MAAM;IAC3B,KAAK,mBAAmB;IACxB,KAAK,iBAAgB;GACvB;EACF,CAAC;EAGD,aAAY;GACV,MAAM,SAAS,KAAK,eAAc;GAClC,IAAI,UAAU,KAAK,iBAAgB,KAAM,KAAK,gBAAgB;IAC5D,QAAQ,IAAI,mCAAmC,MAAM;IACrD,KAAK,WAAW,MAAM;GACxB;EACF,CAAC;CACH;CAEA,mBAAgB;EACd,MAAM,gBAAgB,KAAK,OAAM,CAAE,EAAE;EACrC,IAAI,CAAC,eAAe;EAEpB,IAAI,KAAK,aAAY,GAAI;GACvB,IAAI,cAAc,mBAChB,cAAc,kBAAiB;GAEjC,KAAK,SAAS,SAAS,eAAe,YAAY;EACpD,OAAO;GACL,IAAI,SAAS,kBAAkB,SAAS,qBAAqB,MAC3D,SAAS,eAAc;GAEzB,KAAK,SAAS,YAAY,eAAe,YAAY;EACvD;EACA,KAAK,aAAa,aAAY;CAChC;CAEA,cAAW;EACT,MAAM,SAAS,KAAK,OAAM;EAC1B,KAAK,UAAU,QAAQ,cAAc,WAAW,IAAI,KAAK;EACzD,MAAM,SAA2B;GAC/B,MAAM;GACN,UAAU,SAAS;GACnB,IAAI,IAAI,WAAU;GAClB,MAAM,KAAK,SAAQ;GACnB,MAAM;GACN,MAAM;GACN,MAAM;GACN,KAAK;GACL,UAAU;GACV,WAAW,KAAK,UAAS;GACzB,QAAQ,KAAK,UAAS;EACvB;EACD,KAAK,aAAa,IAAI,qBAAqB,MAAM;EACjD,KAAK,SAAS,IAAI,WAAW,KAAK,OAAO;EACzC,KAAK,gBAAgB,IAAI,cAAc,KAAK,YAAY,KAAK,MAAM;EACnE,KAAK,cAAc,IAAI,YAAY,KAAK,QAAQ,KAAK,YAAY,GAAG;EACpE,KAAK,iBAAiB,IAAI,eAAe,KAAK,QAAQ,KAAK,UAAU;EACrE,KAAK,WAAW,gBAAgB,KAAK,OAAO,YAAY,KAAK,KAAK,MAAM;EACxE,KAAK,WAAW,UAAU,KAAK,OAAO,MAAM,KAAK,KAAK,MAAM;EAC5D,KAAK,WAAW,aAAa,KAAK,OAAO,cAAc,KAAK,KAAK,MAAM;EACvE,KAAK,WAAW,gBAAgB,KAAK,OAAO,cAAc,KAAK,KAAK,MAAM;EAC1E,KAAK,WAAW,iBAAiB,KAAK,wBAAwB,KAAK,IAAI;EACvE,KAAK,WAAW,UAAU,KAAK,kBAAkB,KAAK,IAAI;EAC1D,KAAK,OAAO,SAAS,KAAK,WAAW,KAAK,KAAK,KAAK,UAAU;EAC9D,KAAK,OAAO,gBAAgB,KAAK,cAAc,YAAY,KAAK,KAAK,aAAa;EAClF,KAAK,OAAO,MAAM,KAAK,SAAQ;EAE/B,KAAK,aAAa,UAAsB,QAAQ,eAAe,WAAW,CAAC,CACxE,KAAK,aAAa,GAAG,GAAG,mBAAmB,KAAK,UAAU,CAAC,CAAC,CAC5D,WAAW,UAAqB;GAC/B,KAAK,aAAa,UAAU,KAAK;EACnC,CAAC;CACL;CAMA,oBAAiB;EACf,KAAK,MAAK;CACZ;CAEA,OAAI;EACF,KAAK,YAAW;EAChB,iBAAgB;GACd,KAAK,YAAW;EAClB,GAAG,GAAI;CACT;CAEA,cAAW;EACT,IAAI,KAAK,YAAY;GACnB,KAAK,WAAW,MAAM,SAAS;GAC/B,KAAK,gBAAgB,aAAY;EACnC;CACF;CAEQ,mBAAgB;EACtB,KAAK,QAAO;EACZ,MAAM,GAAI,CAAC,CAAC,gBAAe;GAEzB,KAAK,KAAI;EAEX,CAAC;CACH;CAEA,QAAK;EACH,KAAK,aAAa;EAClB,KAAK,SAAS;EACd,KAAK,gBAAgB;EACrB,KAAK,OAAO,IAAI,GAAG;EACnB,KAAK,MAAM,IAAI,GAAG;CACpB;CAEA,UAAO;EACL,KAAK,YAAY,KAAI;EACrB,KAAK,gBAAgB,eAAc;EACnC,KAAK,MAAK;CACZ;CAEA,UAAU,OAAiB;EACzB,KAAK,aAAa,QAAQ,KAAK;CACjC;CAEA,YAAY,OAAiB;EAC3B,KAAK,aAAa,UAAU,KAAK;CACnC;CAEA,YAAY,OAAiB;EAC3B,KAAK,aAAa,UAAU,KAAK;CACnC;CAEA,WAAW,YAAkB;EAC3B,IAAI,CAAC,KAAK,gBAAgB;GACxB,QAAQ,KAAK,kEAAkE;GAC/E;EACF;EAEA,MAAM,cAAc,KAAK,eAAe,UAAU;EAClD,IAAI,aAAa,MAAM;GACrB,QAAQ,IAAI,6CAA6C,UAAU;GAEnE,YAAY,KAAK,SAAS,KAAgB,UAAiB;IACzD,iBAAgB;KAGd,MAAM,SAAS,IAAI,OAAO,IAAI;KAG9B,MAAM,YAAY;MAChB,SAAS,IAAI;MACb,sBAAqB,CAAE;MACvB,uBAAsB,CAAE;KACR;KAGlB,KAAK,eAAgB,eAAe,QAAQ,SAAS;IACvD,GAAG,QAAQ,KAAK,qBAAqB;GACvC,CAAC;EACH;CACF;CAEQ,eAAe,YAAkB;EAEvC,MAAM,aAAa,WAAW,MAAM,cAAc;EAClD,MAAM,iBAAiB,WAAW,MAAM,mBAAmB;EAE3D,IAAI,YAAY;GACd,MAAM,QAAQ,SAAS,WAAW,IAAI,EAAE;GACxC,OAAO,KAAK,yBAAyB,OAAO,KAAK;EACnD;EAEA,IAAI,gBAAgB;GAClB,MAAM,QAAQ,SAAS,eAAe,IAAI,EAAE;GAC5C,OAAO,KAAK,yBAAyB,OAAO,IAAI;EAClD;EAGA,QAAQ,YAAR;GACE,KAAK,gBACH,OAAO,EACL,MAAM;IACJ;KAAE,MAAM;KAAI,MAAM;IAAI;IACtB;KAAE,MAAM;KAAI,MAAM;IAAI;IACtB;KAAE,MAAM;KAAI,MAAM;IAAI;IACtB;KAAE,MAAM;KAAI,MAAM;IAAK;IACvB;KAAE,MAAM;KAAI,MAAM;IAAK;IACvB;KAAE,MAAM;KAAI,MAAM;IAAK;GACxB,EACF;GACH,KAAK,WACH,OAAO,EACL,MAAM;IACJ;KAAE,MAAM;KAAI,MAAM;IAAI;IACtB;KAAE,MAAM;KAAG,MAAM;IAAI;IACrB;KAAE,MAAM;KAAG,MAAM;IAAK;IACtB;KAAE,MAAM;KAAI,MAAM;IAAK;GACxB,EACF;GACH,KAAK,eACH,OAAO,EACL,MAAM,CACJ;IAAE,MAAM;IAAI,MAAM;GAAK,CACxB,EACF;GACH,KAAK,WACH,OAAO,EACL,MAAM,CACJ;IAAE,MAAM;IAAQ,MAAM;GAAI,GAC1B;IAAE,MAAM;IAAQ,MAAM;GAAK,CAC5B,EACF;GACH,KAAK,aACH,OAAO,EACL,MAAM;IACJ;KAAE,MAAM;KAAQ,MAAM;IAAI;IAC1B;KAAE,MAAM;KAAK,MAAM;IAAI;IACvB;KAAE,MAAM;KAAK,MAAM;IAAK;IACxB;KAAE,MAAM;KAAQ,MAAM;IAAK;GAC5B,EACF;GACH,KAAK,aACH,OAAO,EACL,MAAM;IACJ;KAAE,MAAM;KAAQ,MAAM;IAAI;IAC1B;KAAE,MAAM;KAAI,MAAM;IAAI;IACtB;KAAE,MAAM;KAAI,MAAM;IAAK;IACvB;KAAE,MAAM;KAAQ,MAAM;IAAK;GAC5B,EACF;GACH,KAAK,cACH,OAAO,EACL,MAAM;IACJ;KAAE,MAAM;KAAQ,MAAM;IAAI;IAC1B;KAAE,MAAM;KAAQ,MAAM;IAAI;IAC1B;KAAE,MAAM;KAAQ,MAAM;IAAK;IAC3B;KAAE,MAAM;KAAQ,MAAM;IAAK;GAC5B,EACF;GACH,KAAK,gBACH,OAAO,EACL,MAAM;IACJ;KAAE,MAAM;KAAQ,MAAM;IAAI;IAC1B;KAAE,MAAM;KAAQ,MAAM;IAAI;IAC1B;KAAE,MAAM;KAAQ,MAAM;IAAK;IAC3B;KAAE,MAAM;KAAQ,MAAM;IAAK;GAC5B,EACF;GACH,KAAK,gBACH,OAAO,EACL,MAAM;IACJ;KAAE,MAAM;KAAQ,MAAM;IAAI;IAC1B;KAAE,MAAM;KAAQ,MAAM;IAAI;IAC1B;KAAE,MAAM;KAAQ,MAAM;IAAK;IAC3B;KAAE,MAAM;KAAQ,MAAM;IAAK;GAC5B,EACF;GACH,KAAK,iBACH,OAAO,EACL,MAAM;IACJ;KAAE,MAAM;KAAQ,MAAM;IAAI;IAC1B;KAAE,MAAM;KAAQ,MAAM;IAAI;IAC1B;KAAE,MAAM;KAAQ,MAAM;IAAK;IAC3B;KAAE,MAAM;KAAQ,MAAM;IAAK;GAC5B,EACF;GACH,KAAK,UACH,OAAO,EACL,MAAM;IACJ;KAAE,MAAM;KAAQ,MAAM;IAAI;IAC1B;KAAE,MAAM;KAAI,MAAM;IAAI;IACtB;KAAE,MAAM;KAAI,MAAM;IAAK;IACvB;KAAE,MAAM;KAAQ,MAAM;IAAK;GAC5B,EACF;GACH,SACE,OAAO;EACX;CACF;CAEQ,yBAAyB,OAAe,aAAoB;EAElE,IAAI,QAAQ,KAAK,QAAQ,IACvB,OAAO;EAIT,MAAM,YAAY,SAAU,QAAQ;EACpC,MAAM,OAAoB,CAAA;EAG1B,IAAI,aACF,KAAK,KAAK;GAAE,MAAM;GAAQ,MAAM;EAAI,CAAE;EAIxC,KAAK,KAAK;GAAE,MAAM;GAAQ,MAAM;EAAI,CAAE;EAGtC,KAAK,KAAK;GAAE,MAAM;GAAW,MAAM;EAAI,CAAE;EACzC,KAAK,KAAK;GAAE,MAAM;GAAW,MAAM;EAAK,CAAE;EAG1C,KAAK,KAAK;GAAE,MAAM;GAAQ,MAAM;EAAK,CAAE;EAEvC,IAAI,aACF,KAAK,KAAK;GAAE,MAAM;GAAQ,MAAM;EAAK,CAAE;EAGzC,OAAO,EAAE,KAAI;CACf;CAEA,cAAW;EACT,KAAK,YAAY,YAAW;EAC5B,KAAK,QAAO;CACd;CAxXW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAY,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAZ;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAY,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,cAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,WAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,WAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,UAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,kBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,kBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,gBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;GAAA;GAAA,SAAA,EAAA,cAAA,eAAA;GAAA,aAAA,CAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,QAAA;IAAA,aAAA;IAAA,UAAA;GAAA,GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,QAAA;IAAA,aAAA;IAAA,UAAA;GAAA,CAAA;GAAA,UAAA;GAAA,UC9CzB;GAWA,QAAA,CAAA,mFAAA;EAAA,CAAA;CAAA;;ADmCa,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAY,YAAA,CAAA;EALxB,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAS,UAAA;GAAA,QAAA,CAAA,mFAAA;EAAA,CAAA;CAQqB,CAAA;CAAA,sBAAA,CAAA;CAAA,gBAAA;EAAA,QAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,UAAQ,EAAA,UAAA,KAAA,CAAA;EAAA,CAAA;EAAA,QAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CACH,UAAQ,EAAA,UAAA,KAAA,CAAA;EAAA,CAAA;EAAA,cAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,WAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,WAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,UAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,cAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,cAAA;EAAA,CAAA;EAAA,kBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,kBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,gBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;CAAA;AAAA,CAAA;AEpCvD,IAAa,gBAAb,MAAa,cAAa;CAmBxB,cAAA;EAlBiB,KAAA,aAAa,OAAO,UAAU;EAE/C,KAAA,aAAmC;EACnC,KAAA,OAAuB;EACvB,KAAA,OAAwB;EACP,KAAA,eAAe,OAAO,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,eAAA,CAAA,+BAAA,CAAA,CAAA;EAChC,KAAA,cAAc,KAAK,aAAa,WAAU;EAE1C,KAAA,eAAe,OAAM;EACrB,KAAA,WAAW,OAAM;EAEjB,KAAA,mBAAmB,MAAe,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,mBAAA,CAAA,+BAAA,CAAA,CAAA;EACjC,KAAA,QAAQ,MAAmB,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;EAChC,KAAA,SAAS,MAAmB,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;EAC1C,KAAA,YAAY,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;EACrB,KAAA,YAAY,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;EACrB,KAAA,WAAW,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;EAgF3B,KAAA,2BAA2B,YAAiB,UAAsB;GAChE,KAAK,aAAa,KAAK,KAAK;GAC5B,KAAK,aAAa,IAAI,KAAK;EAC7B;EA/EE,aAAY;GAEV,IADkB,KAAK,iBACnB,GACF;QAAI,KAAK,cAAc,MACrB,KAAK,KAAI;GACX,OAEA,KAAK,SAAQ;EAEjB,CAAC;CACH;CAEA,OAAI;EACF,KAAK,YAAW;EAChB,iBAAgB;GACd,KAAK,UAAS;EAChB,GAAG,GAAI;CACT;CAEA,YAAS;EACP,IAAI,KAAK,cAAc,MACrB,KAAK,WAAW,MAAM,SAAS;CAEnC;CAEA,cAAW;EACT,MAAM,SAA2B;GAC/B,MAAM;GACN,UAAU,SAAS;GACnB,IAAI,IAAI,WAAU;GAClB,MAAM,KAAK,SAAQ;GACnB,MAAM;GACN,MAAM;GACN,MAAM;GACN,KAAK;GACL,UAAU;GACV,WAAW,KAAK,UAAS;GACzB,QAAQ,KAAK,UAAS;EACvB;EACD,KAAK,aAAa,IAAI,cAAc,MAAM;EAC1C,KAAK,OAAO,IAAI,QAAQ,KAAK,YAAY,KAAK,MAAK,GAAI,KAAK,OAAM,CAAE;EACpE,KAAK,WAAW,aAAa,KAAK,KAAK,YAAY,KAAK,KAAK,IAAI;EACjE,KAAK,WAAW,iBAAiB,KAAK,wBAAwB,KAAK,IAAI;EACvE,KAAK,WAAW,gBAAgB,KAAK,KAAK,YAAY,KAAK,KAAK,IAAI;EACpE,KAAK,KAAK,cAAc,KAAK,gBAAgB,KAAK,IAAI;CACxD;CAEA,gBAAgB,MAAc,KAAa,OAAe,OAAe,KAAW;EAClF,IAAI,KAAK,QAAQ,MACf;EAEF,IAAI,SAAS,GAAG;GACd,IAAI,QAAQ,GAEV,KAAK,KAAK,cAAc,MAAM;QAG9B,KAAK,KAAK,aAAa,MAAM;EAEjC,OACE,IAAI,QAAQ,GAEV,KAAK,KAAK,eAAe,MAAM;OAG/B,KAAK,KAAK,cAAc,MAAM;EAGlC,KAAK,SAAS,KAAK;GACjB,YAAY,KAAK,KAAK;GACtB,WAAW,KAAK,KAAK;GACrB,aAAa,KAAK,KAAK;GACvB,YAAY,KAAK,KAAK;EACvB,CAAA;CACH;CAOA,WAAQ;EACN,IAAI,KAAK,cAAc,MAAM;GAC3B,KAAK,WAAW,KAAI;GACpB,KAAK,QAAO;EACd;CACF;CAEA,UAAO;EACL,KAAK,aAAa;EAClB,KAAK,OAAO;CACd;CAEA,cAAW;EACT,IAAI,KAAK,QAAQ,MACf,KAAK,KAAK,KAAI;CAElB;CAtHW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAa,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAb;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAa,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,kBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,OAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,QAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,WAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,WAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,UAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;GAAA;GAAA,SAAA;IAAA,cAAA;IAAA,UAAA;GAAA;GAAA,UAAA;GAAA,UAHd;GAAE,UAAA;EAAA,CAAA;CAAA;;AAGD,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAa,YAAA,CAAA;EALzB,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAU,UACV;EAAE,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@device-management-toolkit/ui-toolkit-angular",
3
- "version": "11.1.8",
3
+ "version": "12.0.0",
4
4
  "license": "Apache-2.0",
5
5
  "bugs": {
6
6
  "url": "https://github.com/device-management-toolkit/ui-toolkit-angular/issues"
@@ -15,15 +15,15 @@
15
15
  "access": "public"
16
16
  },
17
17
  "peerDependencies": {
18
- "@device-management-toolkit/ui-toolkit": "^3.3.20",
19
- "@xterm/xterm": "^6.0.0"
18
+ "@device-management-toolkit/ui-toolkit": "^3.3.21",
19
+ "@xterm/xterm": "^6.0.0",
20
+ "rxjs": "^7.4.0"
20
21
  },
21
22
  "overrides": {
22
23
  "@angular-devkit/core": {
23
24
  "ajv": "^8.18.0"
24
25
  },
25
26
  "picomatch": "^4.0.4",
26
- "esbuild": "^0.28.1",
27
27
  "@hono/node-server": "^2.0.11"
28
28
  },
29
29
  "module": "fesm2022/device-management-toolkit-ui-toolkit-angular.mjs",
@@ -1,39 +1,70 @@
1
- import * as _angular_core from '@angular/core';
2
- import { OnDestroy } from '@angular/core';
3
- import { AMTRedirector, AMTIDER } from '@device-management-toolkit/ui-toolkit/core';
4
-
5
- interface IDERData {
6
- floppyRead: number;
7
- floppyWrite: number;
8
- cdromRead: number;
9
- cdromWrite: number;
1
+ import * as i0 from "@angular/core";
2
+ import { OnDestroy } from "@angular/core";
3
+ import { AMTIDER, AMTRedirector } from "@device-management-toolkit/ui-toolkit/core";
4
+ export interface IDERData {
5
+ floppyRead: number;
6
+ floppyWrite: number;
7
+ cdromRead: number;
8
+ cdromWrite: number;
10
9
  }
11
- declare class IDERComponent implements OnDestroy {
12
- private readonly destroyRef;
13
- redirector: AMTRedirector | null;
14
- ider: AMTIDER | null;
15
- data: IDERData | null;
16
- deviceState: number;
17
- readonly deviceStatus: _angular_core.OutputEmitterRef<number>;
18
- readonly iderData: _angular_core.OutputEmitterRef<IDERData>;
19
- readonly deviceConnection: _angular_core.InputSignal<boolean>;
20
- readonly cdrom: _angular_core.InputSignal<File | null>;
21
- readonly floppy: _angular_core.InputSignal<File | null>;
22
- mpsServer: _angular_core.InputSignal<string>;
23
- authToken: _angular_core.InputSignal<string>;
24
- deviceId: _angular_core.InputSignal<string>;
25
- constructor();
26
- init(): void;
27
- startIder(): void;
28
- instantiate(): void;
29
- iderSectorStats(mode: number, dev: number, total: number, start: number, len: number): void;
30
- onConnectionStateChange: (redirector: any, state: number) => any;
31
- stopIder(): void;
32
- cleanup(): void;
33
- ngOnDestroy(): void;
34
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<IDERComponent, never>;
35
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<IDERComponent, "amt-ider", never, { "deviceConnection": { "alias": "deviceConnection"; "required": false; "isSignal": true; }; "cdrom": { "alias": "cdrom"; "required": false; "isSignal": true; }; "floppy": { "alias": "floppy"; "required": false; "isSignal": true; }; "mpsServer": { "alias": "mpsServer"; "required": false; "isSignal": true; }; "authToken": { "alias": "authToken"; "required": false; "isSignal": true; }; "deviceId": { "alias": "deviceId"; "required": false; "isSignal": true; }; }, { "deviceStatus": "deviceStatus"; "iderData": "iderData"; }, never, never, true, never>;
36
- }
37
-
38
- export { IDERComponent };
39
- export type { IDERData };
10
+ export declare class IDERComponent implements OnDestroy {
11
+ private readonly destroyRef;
12
+ redirector: AMTRedirector | null;
13
+ ider: AMTIDER | null;
14
+ data: IDERData | null;
15
+ private readonly _deviceState;
16
+ readonly deviceState: import("@angular/core").Signal<number>;
17
+ readonly deviceStatus: import("@angular/core").OutputEmitterRef<number>;
18
+ readonly iderData: import("@angular/core").OutputEmitterRef<IDERData>;
19
+ readonly deviceConnection: import("@angular/core").InputSignal<boolean>;
20
+ readonly cdrom: import("@angular/core").InputSignal<File | null>;
21
+ readonly floppy: import("@angular/core").InputSignal<File | null>;
22
+ mpsServer: import("@angular/core").InputSignal<string>;
23
+ authToken: import("@angular/core").InputSignal<string>;
24
+ deviceId: import("@angular/core").InputSignal<string>;
25
+ constructor();
26
+ init(): void;
27
+ startIder(): void;
28
+ instantiate(): void;
29
+ iderSectorStats(mode: number, dev: number, total: number, start: number, len: number): void;
30
+ onConnectionStateChange: (redirector: any, state: number) => any;
31
+ stopIder(): void;
32
+ cleanup(): void;
33
+ ngOnDestroy(): void;
34
+ static ɵfac: i0.ɵɵFactoryDeclaration<IDERComponent, never>;
35
+ static ɵcmp: i0.ɵɵComponentDeclaration<IDERComponent, "amt-ider", never, {
36
+ "deviceConnection": {
37
+ "alias": "deviceConnection";
38
+ "required": false;
39
+ "isSignal": true;
40
+ };
41
+ "cdrom": {
42
+ "alias": "cdrom";
43
+ "required": false;
44
+ "isSignal": true;
45
+ };
46
+ "floppy": {
47
+ "alias": "floppy";
48
+ "required": false;
49
+ "isSignal": true;
50
+ };
51
+ "mpsServer": {
52
+ "alias": "mpsServer";
53
+ "required": false;
54
+ "isSignal": true;
55
+ };
56
+ "authToken": {
57
+ "alias": "authToken";
58
+ "required": false;
59
+ "isSignal": true;
60
+ };
61
+ "deviceId": {
62
+ "alias": "deviceId";
63
+ "required": false;
64
+ "isSignal": true;
65
+ };
66
+ }, {
67
+ "deviceStatus": "deviceStatus";
68
+ "iderData": "iderData";
69
+ }, never, never, true, never>;
70
+ }
@@ -1,56 +1,91 @@
1
- import * as _angular_core from '@angular/core';
2
- import { OnDestroy, ElementRef } from '@angular/core';
3
- import { AMTDesktop, AMTKvmDataRedirector, IDataProcessor, MouseHelper, KeyBoardHelper } from '@device-management-toolkit/ui-toolkit/core';
4
-
1
+ import * as i0 from "@angular/core";
2
+ import { ElementRef, OnDestroy } from "@angular/core";
3
+ import { AMTDesktop, AMTKvmDataRedirector, IDataProcessor, KeyBoardHelper, MouseHelper } from "@device-management-toolkit/ui-toolkit/core";
5
4
  interface EncodingOption {
6
- value: number;
7
- viewValue: string;
5
+ value: number;
6
+ viewValue: string;
8
7
  }
9
- declare class KVMComponent implements OnDestroy {
10
- private readonly renderer;
11
- private readonly destroyRef;
12
- private KEY_SEQUENCE_DELAY_MS;
13
- readonly canvas: _angular_core.Signal<ElementRef<any> | undefined>;
14
- readonly device: _angular_core.Signal<string>;
15
- context: CanvasRenderingContext2D | null;
16
- width: _angular_core.WritableSignal<number>;
17
- height: _angular_core.WritableSignal<number>;
18
- isFullscreen: _angular_core.InputSignal<boolean>;
19
- mpsServer: _angular_core.InputSignal<string>;
20
- authToken: _angular_core.InputSignal<string>;
21
- deviceId: _angular_core.InputSignal<string>;
22
- readonly deviceStatus: _angular_core.OutputEmitterRef<number>;
23
- readonly deviceConnection: _angular_core.InputSignal<boolean>;
24
- readonly selectedEncoding: _angular_core.InputSignal<number>;
25
- readonly selectedHotkey: _angular_core.InputSignal<string>;
26
- module: AMTDesktop | null;
27
- redirector: AMTKvmDataRedirector | null;
28
- dataProcessor: IDataProcessor | null;
29
- mouseHelper: MouseHelper | null;
30
- keyboardHelper: KeyBoardHelper | null;
31
- selected: _angular_core.WritableSignal<number>;
32
- private mouseMove$?;
33
- private isEncodingChange;
34
- readonly encodings: EncodingOption[];
35
- constructor();
36
- toggleFullscreen(): void;
37
- instantiate(): void;
38
- private onConnectionStateChange;
39
- onRedirectorError(): void;
40
- init(): void;
41
- autoConnect(): void;
42
- private onEncodingChange;
43
- reset(): void;
44
- stopKvm(): void;
45
- onMouseup(event: MouseEvent): void;
46
- onMousedown(event: MouseEvent): void;
47
- onMousemove(event: MouseEvent): void;
48
- sendHotkey(hotKeyType: string): void;
49
- private getKeySequence;
50
- private buildFunctionKeySequence;
51
- ngOnDestroy(): void;
52
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<KVMComponent, never>;
53
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<KVMComponent, "amt-kvm", never, { "isFullscreen": { "alias": "isFullscreen"; "required": false; "isSignal": true; }; "mpsServer": { "alias": "mpsServer"; "required": false; "isSignal": true; }; "authToken": { "alias": "authToken"; "required": false; "isSignal": true; }; "deviceId": { "alias": "deviceId"; "required": false; "isSignal": true; }; "deviceConnection": { "alias": "deviceConnection"; "required": false; "isSignal": true; }; "selectedEncoding": { "alias": "selectedEncoding"; "required": false; "isSignal": true; }; "selectedHotkey": { "alias": "selectedHotkey"; "required": false; "isSignal": true; }; }, { "deviceStatus": "deviceStatus"; }, never, never, true, never>;
54
- }
55
-
56
- export { KVMComponent };
8
+ export declare class KVMComponent implements OnDestroy {
9
+ private readonly renderer;
10
+ private readonly destroyRef;
11
+ private KEY_SEQUENCE_DELAY_MS;
12
+ readonly canvas: import("@angular/core").Signal<ElementRef<any> | undefined>;
13
+ readonly device: import("@angular/core").Signal<string>;
14
+ context: CanvasRenderingContext2D | null;
15
+ width: import("@angular/core").WritableSignal<number>;
16
+ height: import("@angular/core").WritableSignal<number>;
17
+ isFullscreen: import("@angular/core").InputSignal<boolean>;
18
+ mpsServer: import("@angular/core").InputSignal<string>;
19
+ authToken: import("@angular/core").InputSignal<string>;
20
+ deviceId: import("@angular/core").InputSignal<string>;
21
+ readonly deviceStatus: import("@angular/core").OutputEmitterRef<number>;
22
+ readonly deviceConnection: import("@angular/core").InputSignal<boolean>;
23
+ readonly selectedEncoding: import("@angular/core").InputSignal<number>;
24
+ readonly selectedHotkey: import("@angular/core").InputSignal<string>;
25
+ module: AMTDesktop | null;
26
+ redirector: AMTKvmDataRedirector | null;
27
+ dataProcessor: IDataProcessor | null;
28
+ mouseHelper: MouseHelper | null;
29
+ keyboardHelper: KeyBoardHelper | null;
30
+ selected: import("@angular/core").WritableSignal<number>;
31
+ private mouseMove$?;
32
+ private isEncodingChange;
33
+ readonly encodings: EncodingOption[];
34
+ constructor();
35
+ toggleFullscreen(): void;
36
+ instantiate(): void;
37
+ private onConnectionStateChange;
38
+ onRedirectorError(): void;
39
+ init(): void;
40
+ autoConnect(): void;
41
+ private onEncodingChange;
42
+ reset(): void;
43
+ stopKvm(): void;
44
+ onMouseup(event: MouseEvent): void;
45
+ onMousedown(event: MouseEvent): void;
46
+ onMousemove(event: MouseEvent): void;
47
+ sendHotkey(hotKeyType: string): void;
48
+ private getKeySequence;
49
+ private buildFunctionKeySequence;
50
+ ngOnDestroy(): void;
51
+ static ɵfac: i0.ɵɵFactoryDeclaration<KVMComponent, never>;
52
+ static ɵcmp: i0.ɵɵComponentDeclaration<KVMComponent, "amt-kvm", never, {
53
+ "isFullscreen": {
54
+ "alias": "isFullscreen";
55
+ "required": false;
56
+ "isSignal": true;
57
+ };
58
+ "mpsServer": {
59
+ "alias": "mpsServer";
60
+ "required": false;
61
+ "isSignal": true;
62
+ };
63
+ "authToken": {
64
+ "alias": "authToken";
65
+ "required": false;
66
+ "isSignal": true;
67
+ };
68
+ "deviceId": {
69
+ "alias": "deviceId";
70
+ "required": false;
71
+ "isSignal": true;
72
+ };
73
+ "deviceConnection": {
74
+ "alias": "deviceConnection";
75
+ "required": false;
76
+ "isSignal": true;
77
+ };
78
+ "selectedEncoding": {
79
+ "alias": "selectedEncoding";
80
+ "required": false;
81
+ "isSignal": true;
82
+ };
83
+ "selectedHotkey": {
84
+ "alias": "selectedHotkey";
85
+ "required": false;
86
+ "isSignal": true;
87
+ };
88
+ }, {
89
+ "deviceStatus": "deviceStatus";
90
+ }, never, never, true, never>;
91
+ }
@@ -1,33 +1,54 @@
1
- import * as _angular_core from '@angular/core';
2
- import { OnDestroy } from '@angular/core';
3
- import { Terminal } from '@xterm/xterm';
4
- import { AmtTerminal, AMTRedirector, TerminalDataProcessor } from '@device-management-toolkit/ui-toolkit/core';
5
-
6
- declare class SOLComponent implements OnDestroy {
7
- private readonly destroyRef;
8
- terminal: AmtTerminal;
9
- container: any;
10
- term: Terminal;
11
- redirector: AMTRedirector;
12
- dataProcessor: TerminalDataProcessor;
13
- deviceState: number;
14
- readonly deviceStatus: _angular_core.OutputEmitterRef<number>;
15
- readonly deviceConnection: _angular_core.InputSignal<boolean>;
16
- mpsServer: _angular_core.InputSignal<string>;
17
- authToken: _angular_core.InputSignal<string>;
18
- deviceId: _angular_core.InputSignal<string>;
19
- constructor();
20
- instantiate(): void;
21
- handleKeyPress(domEvent: any): void;
22
- handleClearTerminal(): void;
23
- handleWriteToXterm(str: string): void;
24
- onTerminalStateChange(redirector: AMTRedirector, state: number): void;
25
- startSol(): void;
26
- stopSol(): void;
27
- cleanup(): void;
28
- ngOnDestroy(): void;
29
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<SOLComponent, never>;
30
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SOLComponent, "amt-sol", never, { "deviceConnection": { "alias": "deviceConnection"; "required": false; "isSignal": true; }; "mpsServer": { "alias": "mpsServer"; "required": false; "isSignal": true; }; "authToken": { "alias": "authToken"; "required": false; "isSignal": true; }; "deviceId": { "alias": "deviceId"; "required": false; "isSignal": true; }; }, { "deviceStatus": "deviceStatus"; }, never, never, true, never>;
31
- }
32
-
33
- export { SOLComponent };
1
+ import * as i0 from "@angular/core";
2
+ import { OnDestroy } from "@angular/core";
3
+ import { Terminal } from "@xterm/xterm";
4
+ import { AMTRedirector, AmtTerminal, TerminalDataProcessor } from "@device-management-toolkit/ui-toolkit/core";
5
+ export declare class SOLComponent implements OnDestroy {
6
+ private readonly destroyRef;
7
+ terminal: AmtTerminal | null;
8
+ container: any;
9
+ term: Terminal | null;
10
+ redirector: AMTRedirector | null;
11
+ dataProcessor: TerminalDataProcessor | null;
12
+ private readonly _deviceState;
13
+ readonly deviceState: import("@angular/core").Signal<number>;
14
+ readonly deviceStatus: import("@angular/core").OutputEmitterRef<number>;
15
+ readonly deviceConnection: import("@angular/core").InputSignal<boolean>;
16
+ mpsServer: import("@angular/core").InputSignal<string>;
17
+ authToken: import("@angular/core").InputSignal<string>;
18
+ deviceId: import("@angular/core").InputSignal<string>;
19
+ constructor();
20
+ instantiate(): void;
21
+ handleKeyPress(domEvent: any): void;
22
+ handleClearTerminal(): void;
23
+ handleWriteToXterm(str: string): void;
24
+ onTerminalStateChange(redirector: AMTRedirector, state: number): void;
25
+ startSol(): void;
26
+ stopSol(): void;
27
+ cleanup(): void;
28
+ ngOnDestroy(): void;
29
+ static ɵfac: i0.ɵɵFactoryDeclaration<SOLComponent, never>;
30
+ static ɵcmp: i0.ɵɵComponentDeclaration<SOLComponent, "amt-sol", never, {
31
+ "deviceConnection": {
32
+ "alias": "deviceConnection";
33
+ "required": false;
34
+ "isSignal": true;
35
+ };
36
+ "mpsServer": {
37
+ "alias": "mpsServer";
38
+ "required": false;
39
+ "isSignal": true;
40
+ };
41
+ "authToken": {
42
+ "alias": "authToken";
43
+ "required": false;
44
+ "isSignal": true;
45
+ };
46
+ "deviceId": {
47
+ "alias": "deviceId";
48
+ "required": false;
49
+ "isSignal": true;
50
+ };
51
+ }, {
52
+ "deviceStatus": "deviceStatus";
53
+ }, never, never, true, never>;
54
+ }