@device-management-toolkit/ui-toolkit-angular 10.1.1 → 10.1.3

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.
@@ -37,6 +37,7 @@ class KVMComponent {
37
37
  this.mouseHelper = null;
38
38
  this.keyboardHelper = null;
39
39
  this.selected = signal(1, ...(ngDevMode ? [{ debugName: "selected" }] : []));
40
+ this.isEncodingChange = false;
40
41
  this.encodings = [
41
42
  { value: 1, viewValue: 'RLE 8' },
42
43
  { value: 2, viewValue: 'RLE 16' }
@@ -50,11 +51,11 @@ class KVMComponent {
50
51
  // React to deviceConnection changes
51
52
  effect(() => {
52
53
  const connected = this.deviceConnection();
53
- if (connected && this.redirector == null) {
54
+ if (connected && this.redirector == null && !this.isEncodingChange) {
54
55
  console.log('KVMComponent: Device connected, initializing KVM...');
55
56
  this.init();
56
57
  }
57
- else if (!connected) {
58
+ else if (!connected && this.redirector != null) {
58
59
  console.log('KVMComponent: Device disconnected, stopping KVM...');
59
60
  this.stopKvm();
60
61
  }
@@ -66,7 +67,11 @@ class KVMComponent {
66
67
  console.log('KVMComponent: Encoding changed to', this.selectedEncoding());
67
68
  const encoding = this.selectedEncoding();
68
69
  this.selected.set(encoding);
69
- this.onEncodingChange();
70
+ // Set flag to prevent connection effect interference
71
+ if (this.redirector != null) {
72
+ this.isEncodingChange = true;
73
+ this.onEncodingChange();
74
+ }
70
75
  });
71
76
  // React to selectedHotkey changes
72
77
  effect(() => {
@@ -149,7 +154,9 @@ class KVMComponent {
149
154
  onEncodingChange() {
150
155
  this.stopKvm();
151
156
  timer(1000).subscribe(() => {
152
- this.autoConnect();
157
+ // Need to reinitialize since stopKvm() reset the redirector to null
158
+ this.init();
159
+ // Note: Parent component handles clearing isEncodingChange flag after full process
153
160
  });
154
161
  }
155
162
  reset() {
@@ -158,7 +165,6 @@ class KVMComponent {
158
165
  this.dataProcessor = null;
159
166
  this.height.set(400);
160
167
  this.width.set(400);
161
- this.instantiate();
162
168
  }
163
169
  stopKvm() {
164
170
  this.redirector?.stop();
@@ -1 +1 @@
1
- {"version":3,"file":"device-management-toolkit-ui-toolkit-angular-kvm.mjs","sources":["../../kvm/src/kvm.component.ts","../../kvm/src/kvm.component.html","../../kvm/src/public_api.ts","../../kvm/src/device-management-toolkit-ui-toolkit-angular-kvm.ts"],"sourcesContent":["/*********************************************************************\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\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) {\n console.log('KVMComponent: Device connected, initializing KVM...')\n this.init()\n } else if (!connected) {\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 this.onEncodingChange()\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 this.autoConnect()\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 this.instantiate()\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 // Based on the KeyBoardHelper, these are the key codes for various 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 'alt-f4':\n return {\n keys: [\n { code: 0xffe9, down: true }, // Alt down\n { code: 0xffc1, down: true }, // F4 down (F1 = 0xffbe, so F4 = 0xffc1)\n { code: 0xffc1, down: false }, // F4 up\n { code: 0xffe9, down: false } // Alt 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 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","/*********************************************************************\n * Copyright (c) Intel Corporation 2023\n * SPDX-License-Identifier: Apache-2.0\n **********************************************************************/\n/*\n * Public API Surface of kvm\n */\n\nexport * from './kvm.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-kvm.mjs","sources":["../../kvm/src/kvm.component.ts","../../kvm/src/kvm.component.html","../../kvm/src/public_api.ts","../../kvm/src/device-management-toolkit-ui-toolkit-angular-kvm.ts"],"sourcesContent":["/*********************************************************************\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 // Based on the KeyBoardHelper, these are the key codes for various 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 'alt-f4':\n return {\n keys: [\n { code: 0xffe9, down: true }, // Alt down\n { code: 0xffc1, down: true }, // F4 down (F1 = 0xffbe, so F4 = 0xffc1)\n { code: 0xffc1, down: false }, // F4 up\n { code: 0xffe9, down: false } // Alt 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 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","/*********************************************************************\n * Copyright (c) Intel Corporation 2023\n * SPDX-License-Identifier: Apache-2.0\n **********************************************************************/\n/*\n * Public API Surface of kvm\n */\n\nexport * from './kvm.component'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -200,6 +200,7 @@ class KVMComponent {
200
200
  this.mouseHelper = null;
201
201
  this.keyboardHelper = null;
202
202
  this.selected = signal(1, ...(ngDevMode ? [{ debugName: "selected" }] : []));
203
+ this.isEncodingChange = false;
203
204
  this.encodings = [
204
205
  { value: 1, viewValue: 'RLE 8' },
205
206
  { value: 2, viewValue: 'RLE 16' }
@@ -213,11 +214,11 @@ class KVMComponent {
213
214
  // React to deviceConnection changes
214
215
  effect(() => {
215
216
  const connected = this.deviceConnection();
216
- if (connected && this.redirector == null) {
217
+ if (connected && this.redirector == null && !this.isEncodingChange) {
217
218
  console.log('KVMComponent: Device connected, initializing KVM...');
218
219
  this.init();
219
220
  }
220
- else if (!connected) {
221
+ else if (!connected && this.redirector != null) {
221
222
  console.log('KVMComponent: Device disconnected, stopping KVM...');
222
223
  this.stopKvm();
223
224
  }
@@ -229,7 +230,11 @@ class KVMComponent {
229
230
  console.log('KVMComponent: Encoding changed to', this.selectedEncoding());
230
231
  const encoding = this.selectedEncoding();
231
232
  this.selected.set(encoding);
232
- this.onEncodingChange();
233
+ // Set flag to prevent connection effect interference
234
+ if (this.redirector != null) {
235
+ this.isEncodingChange = true;
236
+ this.onEncodingChange();
237
+ }
233
238
  });
234
239
  // React to selectedHotkey changes
235
240
  effect(() => {
@@ -312,7 +317,9 @@ class KVMComponent {
312
317
  onEncodingChange() {
313
318
  this.stopKvm();
314
319
  timer(1000).subscribe(() => {
315
- this.autoConnect();
320
+ // Need to reinitialize since stopKvm() reset the redirector to null
321
+ this.init();
322
+ // Note: Parent component handles clearing isEncodingChange flag after full process
316
323
  });
317
324
  }
318
325
  reset() {
@@ -321,7 +328,6 @@ class KVMComponent {
321
328
  this.dataProcessor = null;
322
329
  this.height.set(400);
323
330
  this.width.set(400);
324
- this.instantiate();
325
331
  }
326
332
  stopKvm() {
327
333
  this.redirector?.stop();
@@ -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\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) {\n console.log('KVMComponent: Device connected, initializing KVM...')\n this.init()\n } else if (!connected) {\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 this.onEncodingChange()\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 this.autoConnect()\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 this.instantiate()\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 // Based on the KeyBoardHelper, these are the key codes for various 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 'alt-f4':\n return {\n keys: [\n { code: 0xffe9, down: true }, // Alt down\n { code: 0xffc1, down: true }, // F4 down (F1 = 0xffbe, so F4 = 0xffc1)\n { code: 0xffc1, down: false }, // F4 up\n { code: 0xffe9, down: false } // Alt 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 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","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 // Based on the KeyBoardHelper, these are the key codes for various 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 'alt-f4':\n return {\n keys: [\n { code: 0xffe9, down: true }, // Alt down\n { code: 0xffc1, down: true }, // F4 down (F1 = 0xffbe, so F4 = 0xffc1)\n { code: 0xffc1, down: false }, // F4 up\n { code: 0xffe9, down: false } // Alt 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 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":";;;;;;;;AAAA;;;AAGwE;MAO3D,iBAAiB,CAAA;AAJ9B,IAAA,WAAA,GAAA;;;;AAQW,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAW,SAAU,gDAAC;QAClC,IAAA,CAAA,cAAc,GAAG,MAAM,EAAO;AAwCxC;IAtCC,QAAQ,GAAA;AACN,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACxB,IAAI,IAAI,IAAI,IAAI;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC;QACvD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC;AACpD,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC;AAClE,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAI;YAC/B,QAAQ,CAAC,cAAc,EAAE;YACzB,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,GAAG,KAAK,GAAG,EAAE;AAC5C,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE;AAC7B,gBAAA,IAAI,SAAS,CAAC,YAAY,EAAE,EAAE;AAC5B,oBAAA,SAAS,CAAC;AACP,yBAAA,SAAS,CAAC,SAAS,CAAC,YAAY,EAAE;AAClC,yBAAA,IAAI,CAAC,MAAK,GAAG;AACb,yBAAA,KAAK,CAAC,CAAC,GAAG,KAAI;AACb,wBAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC;AACnD,qBAAC,CAAC;;qBACC;;AAEL,oBAAA,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;;;AAGzB,gBAAA,OAAO,KAAK;;YAEd,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,GAAG,KAAK,GAAG,EAAE;AAC5C,gBAAA,SAAS,CAAC;AACP,qBAAA,QAAQ;AACR,qBAAA,IAAI,CAAC,CAAC,IAAI,KAAI;AACb,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,iBAAC;AACA,qBAAA,KAAK,CAAC,CAAC,GAAG,KAAI;AACb,oBAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC;AAChD,iBAAC,CAAC;AACJ,gBAAA,OAAO,KAAK;;AAEd,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;AAC/B,SAAC,CAAC;;8GA3CO,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,wPCV9B,mFACA,EAAA,CAAA,CAAA;;2FDSa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;+BACE,cAAc,EAAA,QAAA,EAAA,mFAAA,EAAA;;;AEP1B;;;AAGwE;MA8B3D,YAAY,CAAA;AAgBvB,IAAA,WAAA,GAAA;AAfiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAOhD,IAAA,CAAA,WAAW,GAAG,CAAC;QAEN,IAAA,CAAA,YAAY,GAAG,MAAM,EAAU;AAC/B,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAU,KAAK,4DAAC;AAC1C,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,EAAE,qDAAC;AACrB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,EAAE,qDAAC;AACrB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,EAAE,oDAAC;;QAIzB,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE;YACzC,IAAI,SAAS,EAAE;AACb,gBAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;oBAC3B,IAAI,CAAC,WAAW,EAAE;;gBAEpB,IAAI,CAAC,QAAQ,EAAE;;AACV,iBAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;gBAClC,IAAI,CAAC,OAAO,EAAE;;AAElB,SAAC,CAAC;;IAGJ,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,EAAE;QACjC,IAAI,CAAC,aAAa,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7D,QAAA,MAAM,MAAM,GAAqB;AAC/B,YAAA,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,QAAQ,CAAC,GAAG;YACtB,EAAE,EAAE,IAAI,UAAU,EAAE;AACpB,YAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;AACrB,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,GAAG,EAAE,CAAC;AACN,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,MAAM,EAAE,IAAI,CAAC,SAAS;SACvB;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC;AAC3C,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACjE,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1E,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;AACtE,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AACzE,QAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1E,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;AACtE,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC;AACvB,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,UAAU,EAAE;AACb,SAAA,CAAC;;AAGJ,IAAA,cAAc,CAAC,QAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC;;IAGvC,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;;AAGpB,IAAA,kBAAkB,CAAC,GAAW,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;;IAGvB,qBAAqB,CAAC,UAAyB,EAAE,KAAa,EAAA;AAC5D,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;;IAG1B,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;;;IAIpC,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACtB,IAAI,CAAC,mBAAmB,EAAE;AAC1B,YAAA,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;YACpB,IAAI,CAAC,OAAO,EAAE;;;IAIlB,OAAO,GAAA;QACL;AAAE,QAAA,IAAI,CAAC,QAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,UAAkB,GAAG,IAAI;AAC9B,QAAA,IAAI,CAAC,aAAqB,GAAG,IAAI;AACjC,QAAA,IAAI,CAAC,IAAY,GAAG,IAAI;;IAG5B,WAAW,GAAA;QACT,IAAI,CAAC,OAAO,EAAE;;8GAtGL,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjCzB,sKAKA,EAAA,MAAA,EAAA,CAAA,kFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED0BY,iBAAiB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAEhB,YAAY,EAAA,UAAA,EAAA,CAAA;kBAPxB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,iBAGJ,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,sKAAA,EAAA,MAAA,EAAA,CAAA,kFAAA,CAAA,EAAA;;;AE/B9B;;;AAGwE;MA2C3D,YAAY,CAAA;AAuCvB,IAAA,WAAA,GAAA;AAtCiB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACxC,IAAA,CAAA,qBAAqB,GAAG,EAAE;AACzB,QAAA,IAAA,CAAA,MAAM,GAAG,SAAS,CAAa,QAAQ,kDAAC;AACxC,QAAA,IAAA,CAAA,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAS,QAAQ,CAAC;;QAG/C,IAAA,CAAA,OAAO,GAAoC,IAAI;AAC/C,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,GAAG,iDAAC;AACnB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,GAAG,kDAAC;;AAGpB,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,KAAK,wDAAC;AAC3B,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,EAAE,qDAAC;AACrB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,EAAE,qDAAC;AACrB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,EAAE,oDAAC;;QAGlB,IAAA,CAAA,YAAY,GAAG,MAAM,EAAU;AAC/B,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAU,KAAK,4DAAC;AACxC,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAS,CAAC,4DAAC;AACnC,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,EAAE,0DAAC;;QAG3C,IAAA,CAAA,MAAM,GAAsB,IAAI;QAChC,IAAA,CAAA,UAAU,GAAgC,IAAI;QAC9C,IAAA,CAAA,aAAa,GAA0B,IAAI;QAC3C,IAAA,CAAA,WAAW,GAAuB,IAAI;QACtC,IAAA,CAAA,cAAc,GAA0B,IAAI;AAC5C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,CAAC,oDAAC;QAEZ,IAAA,CAAA,gBAAgB,GAAG,KAAK;AAEvB,QAAA,IAAA,CAAA,SAAS,GAAqB;AACrC,YAAA,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE;AAChC,YAAA,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ;SAChC;AAmGO,QAAA,IAAA,CAAA,uBAAuB,GAAG,CAAC,UAAe,EAAE,KAAa,KAAU;AACzE,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,SAAC;QAlGC,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,gBAAgB,EAAE;AACzB,SAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACzC,YAAA,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAClE,gBAAA,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC;gBAClE,IAAI,CAAC,IAAI,EAAE;;iBACN,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;AAChD,gBAAA,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC;gBACjE,IAAI,CAAC,OAAO,EAAE;;AAElB,SAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBAAE;YAC7E,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzE,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACxC,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;;AAG3B,YAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;AAC3B,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;gBAC5B,IAAI,CAAC,gBAAgB,EAAE;;AAE3B,SAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;YACpC,IAAI,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;AAC5D,gBAAA,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,MAAM,CAAC;AACtD,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;;AAE3B,SAAC,CAAC;;IAGJ,gBAAgB,GAAA;QACd,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa;AAClD,QAAA,IAAI,CAAC,aAAa;YAAE;AAEpB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,YAAA,IAAI,aAAa,CAAC,iBAAiB,EAAE;gBACnC,aAAa,CAAC,iBAAiB,EAAE;;YAEnC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC;;aAC9C;YACL,IAAI,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,iBAAiB,IAAI,IAAI,EAAE;gBACjE,QAAQ,CAAC,cAAc,EAAE;;YAE3B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC;;AAExD,QAAA,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE;;IAGlC,WAAW,GAAA;AACT,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI;AAC7D,QAAA,MAAM,MAAM,GAAqB;AAC/B,YAAA,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,QAAQ,CAAC,GAAG;YACtB,EAAE,EAAE,IAAI,UAAU,EAAE;AACpB,YAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;AACrB,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,GAAG,EAAE,CAAC;AACN,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,MAAM,EAAE,IAAI,CAAC,SAAS;SACvB;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1C,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;AACpE,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC;AACrE,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC;AACtE,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACzE,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7D,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACxE,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3E,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;AACxE,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3D,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAC/D,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QACnF,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;QAEjC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAa,MAAM,EAAE,aAAa,EAAE,WAAW;AACvE,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAC3D,aAAA,SAAS,CAAC,CAAC,KAAiB,KAAI;AAC/B,YAAA,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC;AACpC,SAAC,CAAC;;IAON,iBAAiB,GAAA;QACf,IAAI,CAAC,KAAK,EAAE;;IAGd,IAAI,GAAA;QACF,IAAI,CAAC,WAAW,EAAE;QAClB,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,WAAW,EAAE;SACnB,EAAE,IAAI,CAAC;;IAGV,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;AAChC,YAAA,IAAI,CAAC,cAAc,EAAE,YAAY,EAAE;;;IAI/B,gBAAgB,GAAA;QACtB,IAAI,CAAC,OAAO,EAAE;AACd,QAAA,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAK;;YAEzB,IAAI,CAAC,IAAI,EAAE;;AAEb,SAAC,CAAC;;IAGJ,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACpB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;;IAGrB,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;AACvB,QAAA,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE;QACrC,IAAI,CAAC,KAAK,EAAE;;AAGd,IAAA,SAAS,CAAC,KAAiB,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC;;AAGlC,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC;;AAGpC,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC;;AAGpC,IAAA,UAAU,CAAC,UAAkB,EAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,OAAO,CAAC,IAAI,CAAC,kEAAkE,CAAC;YAChF;;QAGF,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;AACnD,QAAA,IAAI,WAAW,EAAE,IAAI,EAAE;AACrB,YAAA,OAAO,CAAC,GAAG,CAAC,2CAA2C,EAAE,UAAU,CAAC;;YAEpE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAc,EAAE,KAAa,KAAI;gBACzD,UAAU,CAAC,MAAK;;;AAGd,oBAAA,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC;;AAG/B,oBAAA,MAAM,SAAS,GAAG;wBAChB,OAAO,EAAE,GAAG,CAAC,IAAI;AACjB,wBAAA,cAAc,EAAE,MAAK,GAAG;AACxB,wBAAA,eAAe,EAAE,MAAK;qBACN;;oBAGlB,IAAI,CAAC,cAAe,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC;iBACvD,EAAE,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAA;AACxC,aAAC,CAAC;;;AAIE,IAAA,cAAc,CAAC,UAAkB,EAAA;;QAEvC,QAAQ,UAAU;AAChB,YAAA,KAAK,cAAc;gBACjB,OAAO;AACL,oBAAA,IAAI,EAAE;wBACJ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;wBACxB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;wBACxB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;wBACxB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;wBACzB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;wBACzB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AAC1B;iBACF;AACH,YAAA,KAAK,SAAS;gBACZ,OAAO;AACL,oBAAA,IAAI,EAAE;wBACJ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;wBACxB,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;wBACvB,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;wBACxB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AAC1B;iBACF;AACH,YAAA,KAAK,aAAa;gBAChB,OAAO;AACL,oBAAA,IAAI,EAAE;wBACJ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AAC1B;iBACF;AACH,YAAA,KAAK,SAAS;gBACZ,OAAO;AACL,oBAAA,IAAI,EAAE;wBACJ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;wBAC5B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AAC9B;iBACF;AACH,YAAA,KAAK,WAAW;gBACd,OAAO;AACL,oBAAA,IAAI,EAAE;wBACJ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;wBAC5B,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;wBACzB,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;wBAC1B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AAC9B;iBACF;AACH,YAAA,KAAK,WAAW;gBACd,OAAO;AACL,oBAAA,IAAI,EAAE;wBACJ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;wBAC5B,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;wBACxB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;wBACzB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AAC9B;iBACF;AACH,YAAA,KAAK,YAAY;gBACf,OAAO;AACL,oBAAA,IAAI,EAAE;wBACJ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;wBAC5B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;wBAC5B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;wBAC7B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AAC9B;iBACF;AACH,YAAA,KAAK,cAAc;gBACjB,OAAO;AACL,oBAAA,IAAI,EAAE;wBACJ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;wBAC5B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;wBAC5B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;wBAC7B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AAC9B;iBACF;AACH,YAAA,KAAK,cAAc;gBACjB,OAAO;AACL,oBAAA,IAAI,EAAE;wBACJ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;wBAC5B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;wBAC5B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;wBAC7B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AAC9B;iBACF;AACH,YAAA,KAAK,eAAe;gBAClB,OAAO;AACL,oBAAA,IAAI,EAAE;wBACJ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;wBAC5B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;wBAC5B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;wBAC7B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AAC9B;iBACF;AACH,YAAA,KAAK,QAAQ;gBACX,OAAO;AACL,oBAAA,IAAI,EAAE;wBACJ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;wBAC5B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;wBAC5B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;wBAC7B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AAC9B;iBACF;AACH,YAAA,KAAK,QAAQ;gBACX,OAAO;AACL,oBAAA,IAAI,EAAE;wBACJ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;wBAC5B,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;wBACxB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;wBACzB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AAC9B;iBACF;AACH,YAAA;AACE,gBAAA,OAAO,IAAI;;;IAIjB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE;QAC9B,IAAI,CAAC,OAAO,EAAE;;8GAlVL,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,0yCC9CzB,oRAWA,EAAA,MAAA,EAAA,CAAA,mFAAA,CAAA,EAAA,CAAA,CAAA;;2FDmCa,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;+BACE,SAAS,EAAA,QAAA,EAAA,oRAAA,EAAA,MAAA,EAAA,CAAA,mFAAA,CAAA,EAAA;;;ME3BR,aAAa,CAAA;AAkBxB,IAAA,WAAA,GAAA;AAjBiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAKhD,IAAA,CAAA,WAAW,GAAG,CAAC;QAEN,IAAA,CAAA,YAAY,GAAG,MAAM,EAAU;QAC/B,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAY;AAE7B,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAU,KAAK,4DAAC;AACjC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAc,IAAI,iDAAC;AAChC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAc,IAAI,kDAAC;AAC1C,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,EAAE,qDAAC;AACrB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,EAAE,qDAAC;AACrB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,EAAE,oDAAC;AAgF3B,QAAA,IAAA,CAAA,uBAAuB,GAAG,CAAC,UAAe,EAAE,KAAa,KAAS;AAChE,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,SAAC;;QA9EC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE;YACzC,IAAI,SAAS,EAAE;AACb,gBAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;oBAC3B,IAAI,CAAC,IAAI,EAAE;;;iBAER;gBACL,IAAI,CAAC,QAAQ,EAAE;;AAEnB,SAAC,CAAC;;IAGJ,IAAI,GAAA;QACF,IAAI,CAAC,WAAW,EAAE;QAClB,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,SAAS,EAAE;SACjB,EAAE,IAAI,CAAC;;IAGV,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;;;IAIpC,WAAW,GAAA;AACT,QAAA,MAAM,MAAM,GAAqB;AAC/B,YAAA,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,QAAQ,CAAC,IAAI;YACvB,EAAE,EAAE,IAAI,UAAU,EAAE;AACpB,YAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;AACrB,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,GAAG,EAAE,CAAC;AACN,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,MAAM,EAAE,IAAI,CAAC,SAAS;SACvB;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACrE,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAClE,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;AACxE,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACrE,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGzD,eAAe,CAAC,IAAY,EAAE,GAAW,EAAE,KAAa,EAAE,KAAa,EAAE,GAAW,EAAA;AAClF,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YACrB;;AAEF,QAAA,IAAI,IAAI,KAAK,CAAC,EAAE;AACd,YAAA,IAAI,GAAG,KAAK,CAAC,EAAE;;gBAEb,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,GAAG,GAAG;;iBAC5B;;gBAEL,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,GAAG,IAAI;;;aAE9B;AACL,YAAA,IAAI,GAAG,KAAK,CAAC,EAAE;;gBAEb,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,GAAG,GAAG,GAAG;;iBAC7B;;gBAEL,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,GAAG,IAAI;;;AAGtC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,YAAA,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;AAChC,YAAA,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;AAC9B,YAAA,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;AAClC,YAAA,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC;AACvB,SAAA,CAAC;;IAOJ,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACtB,IAAI,CAAC,OAAO,EAAE;;;IAIlB,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;;IAGlB,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;;;8GAlHT,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,s6BAHd,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAGD,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,YACV,EAAE,EAAA;;;ACZd;;;AAGwE;AACxE;;AAEG;;ACNH;;AAEG;;;;"}
package/index.d.ts CHANGED
@@ -58,6 +58,7 @@ declare class KVMComponent implements OnDestroy {
58
58
  keyboardHelper: KeyBoardHelper | null;
59
59
  selected: _angular_core.WritableSignal<number>;
60
60
  private mouseMove$?;
61
+ private isEncodingChange;
61
62
  readonly encodings: EncodingOption[];
62
63
  constructor();
63
64
  toggleFullscreen(): void;
package/kvm/index.d.ts CHANGED
@@ -30,6 +30,7 @@ declare class KVMComponent implements OnDestroy {
30
30
  keyboardHelper: KeyBoardHelper | null;
31
31
  selected: _angular_core.WritableSignal<number>;
32
32
  private mouseMove$?;
33
+ private isEncodingChange;
33
34
  readonly encodings: EncodingOption[];
34
35
  constructor();
35
36
  toggleFullscreen(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@device-management-toolkit/ui-toolkit-angular",
3
- "version": "10.1.1",
3
+ "version": "10.1.3",
4
4
  "license": "Apache-2.0",
5
5
  "bugs": {
6
6
  "url": "https://github.com/device-management-toolkit/ui-toolkit-angular/issues"