@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.
- package/fesm2022/device-management-toolkit-ui-toolkit-angular-ider.mjs +231 -127
- package/fesm2022/device-management-toolkit-ui-toolkit-angular-ider.mjs.map +1 -1
- package/fesm2022/device-management-toolkit-ui-toolkit-angular-kvm.mjs +586 -371
- package/fesm2022/device-management-toolkit-ui-toolkit-angular-kvm.mjs.map +1 -1
- package/fesm2022/device-management-toolkit-ui-toolkit-angular-sol.mjs +297 -180
- package/fesm2022/device-management-toolkit-ui-toolkit-angular-sol.mjs.map +1 -1
- package/fesm2022/device-management-toolkit-ui-toolkit-angular.mjs +1104 -648
- package/fesm2022/device-management-toolkit-ui-toolkit-angular.mjs.map +1 -1
- package/package.json +4 -4
- package/types/device-management-toolkit-ui-toolkit-angular-ider.d.ts +69 -38
- package/types/device-management-toolkit-ui-toolkit-angular-kvm.d.ts +89 -54
- package/types/device-management-toolkit-ui-toolkit-angular-sol.d.ts +54 -33
- package/types/device-management-toolkit-ui-toolkit-angular.d.ts +204 -113
|
@@ -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 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","/*********************************************************************\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","names":[],"sources":["../../kvm/src/kvm.component.ts","../../kvm/src/kvm.component.html"],"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 // 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"],"mappings":"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"}
|
|
@@ -1,181 +1,298 @@
|
|
|
1
|
-
import * as i0 from
|
|
2
|
-
import {
|
|
3
|
-
import { Terminal } from
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { Component, DestroyRef, ViewEncapsulation, effect, inject, input, output, signal } from "@angular/core";
|
|
3
|
+
import { Terminal } from "@xterm/xterm";
|
|
4
|
+
import { AMTRedirector, AmtTerminal, Protocol, TerminalDataProcessor } from "@device-management-toolkit/ui-toolkit/core";
|
|
5
|
+
var TerminalComponent = class TerminalComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.term = input.required(...ngDevMode ? [{ debugName: "term" }] : /* istanbul ignore next */ []);
|
|
8
|
+
this.handleKeyPress = output();
|
|
9
|
+
this.container = null;
|
|
10
|
+
}
|
|
11
|
+
ngOnInit() {
|
|
12
|
+
const term = this.term();
|
|
13
|
+
if (term == null) throw new Error("Terminal not found");
|
|
14
|
+
this.container = document.getElementById("terminal");
|
|
15
|
+
if (this.container == null) throw new Error("Container not found");
|
|
16
|
+
term.open(this.container);
|
|
17
|
+
term.onKey(({ key, domEvent }) => {
|
|
18
|
+
domEvent.preventDefault();
|
|
19
|
+
if (domEvent.ctrlKey && domEvent.key === "c") {
|
|
20
|
+
const termValue = this.term();
|
|
21
|
+
if (termValue.hasSelection()) navigator.clipboard.writeText(termValue.getSelection()).then(() => {}).catch((err) => {
|
|
22
|
+
console.error("Failed to copy to clipboard", err);
|
|
23
|
+
});
|
|
24
|
+
else termValue.write("");
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
if (domEvent.ctrlKey && domEvent.key === "v") {
|
|
28
|
+
navigator.clipboard.readText().then((text) => {
|
|
29
|
+
this.handleKeyPress.emit(text);
|
|
30
|
+
}).catch((err) => {
|
|
31
|
+
console.error("Failed to read clipboard", err);
|
|
32
|
+
});
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
this.handleKeyPress.emit(key);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
static {
|
|
39
|
+
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
40
|
+
minVersion: "12.0.0",
|
|
41
|
+
version: "22.2.2",
|
|
42
|
+
ngImport: i0,
|
|
43
|
+
type: TerminalComponent,
|
|
44
|
+
deps: [],
|
|
45
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
static {
|
|
49
|
+
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
50
|
+
minVersion: "17.1.0",
|
|
51
|
+
version: "22.2.2",
|
|
52
|
+
type: TerminalComponent,
|
|
53
|
+
isStandalone: true,
|
|
54
|
+
selector: "amt-terminal",
|
|
55
|
+
inputs: { term: {
|
|
56
|
+
classPropertyName: "term",
|
|
57
|
+
publicName: "term",
|
|
58
|
+
isSignal: true,
|
|
59
|
+
isRequired: true,
|
|
60
|
+
transformFunction: null
|
|
61
|
+
} },
|
|
62
|
+
outputs: { handleKeyPress: "handleKeyPress" },
|
|
63
|
+
ngImport: i0,
|
|
64
|
+
template: "<div id=\"terminal\" class=\"xtermDisplay\" style=\"width: fit-content\"></div>\n"
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
69
|
+
minVersion: "12.0.0",
|
|
70
|
+
version: "22.2.2",
|
|
71
|
+
ngImport: i0,
|
|
72
|
+
type: TerminalComponent,
|
|
73
|
+
decorators: [{
|
|
74
|
+
type: Component,
|
|
75
|
+
args: [{
|
|
76
|
+
selector: "amt-terminal",
|
|
77
|
+
template: "<div id=\"terminal\" class=\"xtermDisplay\" style=\"width: fit-content\"></div>\n"
|
|
78
|
+
}]
|
|
79
|
+
}],
|
|
80
|
+
propDecorators: {
|
|
81
|
+
term: [{
|
|
82
|
+
type: i0.Input,
|
|
83
|
+
args: [{
|
|
84
|
+
isSignal: true,
|
|
85
|
+
alias: "term",
|
|
86
|
+
required: true
|
|
87
|
+
}]
|
|
88
|
+
}],
|
|
89
|
+
handleKeyPress: [{
|
|
90
|
+
type: i0.Output,
|
|
91
|
+
args: ["handleKeyPress"]
|
|
92
|
+
}]
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
var SOLComponent = class SOLComponent {
|
|
96
|
+
constructor() {
|
|
97
|
+
this.destroyRef = inject(DestroyRef);
|
|
98
|
+
this.terminal = null;
|
|
99
|
+
this.term = null;
|
|
100
|
+
this.redirector = null;
|
|
101
|
+
this.dataProcessor = null;
|
|
102
|
+
this._deviceState = signal(0, ...ngDevMode ? [{ debugName: "_deviceState" }] : /* istanbul ignore next */ []);
|
|
103
|
+
this.deviceState = this._deviceState.asReadonly();
|
|
104
|
+
this.deviceStatus = output();
|
|
105
|
+
this.deviceConnection = input(false, ...ngDevMode ? [{ debugName: "deviceConnection" }] : /* istanbul ignore next */ []);
|
|
106
|
+
this.mpsServer = input("", ...ngDevMode ? [{ debugName: "mpsServer" }] : /* istanbul ignore next */ []);
|
|
107
|
+
this.authToken = input("", ...ngDevMode ? [{ debugName: "authToken" }] : /* istanbul ignore next */ []);
|
|
108
|
+
this.deviceId = input("", ...ngDevMode ? [{ debugName: "deviceId" }] : /* istanbul ignore next */ []);
|
|
109
|
+
effect(() => {
|
|
110
|
+
if (this.deviceConnection()) {
|
|
111
|
+
if (this.redirector == null) this.instantiate();
|
|
112
|
+
this.startSol();
|
|
113
|
+
} else if (this.redirector != null) this.stopSol();
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
instantiate() {
|
|
117
|
+
this.terminal = new AmtTerminal();
|
|
118
|
+
this.dataProcessor = new TerminalDataProcessor(this.terminal);
|
|
119
|
+
const config = {
|
|
120
|
+
mode: "sol",
|
|
121
|
+
protocol: Protocol.SOL,
|
|
122
|
+
fr: new FileReader(),
|
|
123
|
+
host: this.deviceId(),
|
|
124
|
+
port: 16994,
|
|
125
|
+
user: "",
|
|
126
|
+
pass: "",
|
|
127
|
+
tls: 0,
|
|
128
|
+
tls1only: 0,
|
|
129
|
+
authToken: this.authToken(),
|
|
130
|
+
server: this.mpsServer()
|
|
131
|
+
};
|
|
132
|
+
this.redirector = new AMTRedirector(config);
|
|
133
|
+
this.terminal.onSend = this.redirector.send.bind(this.redirector);
|
|
134
|
+
this.redirector.onNewState = this.terminal.StateChange.bind(this.terminal);
|
|
135
|
+
this.redirector.onStateChanged = this.onTerminalStateChange.bind(this);
|
|
136
|
+
this.redirector.onProcessData = this.dataProcessor.processData.bind(this);
|
|
137
|
+
this.dataProcessor.processDataToXterm = this.handleWriteToXterm.bind(this);
|
|
138
|
+
this.dataProcessor.clearTerminal = this.handleClearTerminal.bind(this);
|
|
139
|
+
this.term = new Terminal({
|
|
140
|
+
rows: 30,
|
|
141
|
+
cols: 100,
|
|
142
|
+
cursorStyle: "block",
|
|
143
|
+
fontWeight: "bold"
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
handleKeyPress(domEvent) {
|
|
147
|
+
this.terminal?.TermSendKeys(domEvent);
|
|
148
|
+
}
|
|
149
|
+
handleClearTerminal() {
|
|
150
|
+
this.term?.reset();
|
|
151
|
+
}
|
|
152
|
+
handleWriteToXterm(str) {
|
|
153
|
+
this.term?.write(str);
|
|
154
|
+
}
|
|
155
|
+
onTerminalStateChange(redirector, state) {
|
|
156
|
+
this.deviceStatus.emit(state);
|
|
157
|
+
this._deviceState.set(state);
|
|
158
|
+
}
|
|
159
|
+
startSol() {
|
|
160
|
+
if (this.redirector != null) this.redirector.start(WebSocket);
|
|
161
|
+
}
|
|
162
|
+
stopSol() {
|
|
163
|
+
if (this.redirector != null) {
|
|
164
|
+
this.redirector.stop();
|
|
165
|
+
this.handleClearTerminal();
|
|
166
|
+
this.term?.dispose();
|
|
167
|
+
this.cleanup();
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
cleanup() {
|
|
171
|
+
this.terminal = null;
|
|
172
|
+
this.redirector = null;
|
|
173
|
+
this.dataProcessor = null;
|
|
174
|
+
this.term = null;
|
|
175
|
+
}
|
|
176
|
+
ngOnDestroy() {
|
|
177
|
+
this.stopSol();
|
|
178
|
+
}
|
|
179
|
+
static {
|
|
180
|
+
this.ɵfac = i0.ɵɵngDeclareFactory({
|
|
181
|
+
minVersion: "12.0.0",
|
|
182
|
+
version: "22.2.2",
|
|
183
|
+
ngImport: i0,
|
|
184
|
+
type: SOLComponent,
|
|
185
|
+
deps: [],
|
|
186
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
static {
|
|
190
|
+
this.ɵcmp = i0.ɵɵngDeclareComponent({
|
|
191
|
+
minVersion: "17.0.0",
|
|
192
|
+
version: "22.2.2",
|
|
193
|
+
type: SOLComponent,
|
|
194
|
+
isStandalone: true,
|
|
195
|
+
selector: "amt-sol",
|
|
196
|
+
inputs: {
|
|
197
|
+
deviceConnection: {
|
|
198
|
+
classPropertyName: "deviceConnection",
|
|
199
|
+
publicName: "deviceConnection",
|
|
200
|
+
isSignal: true,
|
|
201
|
+
isRequired: false,
|
|
202
|
+
transformFunction: null
|
|
203
|
+
},
|
|
204
|
+
mpsServer: {
|
|
205
|
+
classPropertyName: "mpsServer",
|
|
206
|
+
publicName: "mpsServer",
|
|
207
|
+
isSignal: true,
|
|
208
|
+
isRequired: false,
|
|
209
|
+
transformFunction: null
|
|
210
|
+
},
|
|
211
|
+
authToken: {
|
|
212
|
+
classPropertyName: "authToken",
|
|
213
|
+
publicName: "authToken",
|
|
214
|
+
isSignal: true,
|
|
215
|
+
isRequired: false,
|
|
216
|
+
transformFunction: null
|
|
217
|
+
},
|
|
218
|
+
deviceId: {
|
|
219
|
+
classPropertyName: "deviceId",
|
|
220
|
+
publicName: "deviceId",
|
|
221
|
+
isSignal: true,
|
|
222
|
+
isRequired: false,
|
|
223
|
+
transformFunction: null
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
outputs: { deviceStatus: "deviceStatus" },
|
|
227
|
+
ngImport: i0,
|
|
228
|
+
template: "<div class=\"container\">\n @if (deviceState() === 3 && term) {\n <amt-terminal [term]=\"term\" (handleKeyPress)=\"handleKeyPress($event)\"></amt-terminal>\n }\n</div>\n",
|
|
229
|
+
styles: [".container{display:block;text-align:center}.xtermDisplay{display:inline-block}\n"],
|
|
230
|
+
dependencies: [{
|
|
231
|
+
kind: "component",
|
|
232
|
+
type: TerminalComponent,
|
|
233
|
+
selector: "amt-terminal",
|
|
234
|
+
inputs: ["term"],
|
|
235
|
+
outputs: ["handleKeyPress"]
|
|
236
|
+
}],
|
|
237
|
+
encapsulation: i0.ViewEncapsulation.None
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
242
|
+
minVersion: "12.0.0",
|
|
243
|
+
version: "22.2.2",
|
|
244
|
+
ngImport: i0,
|
|
245
|
+
type: SOLComponent,
|
|
246
|
+
decorators: [{
|
|
247
|
+
type: Component,
|
|
248
|
+
args: [{
|
|
249
|
+
selector: "amt-sol",
|
|
250
|
+
encapsulation: ViewEncapsulation.None,
|
|
251
|
+
imports: [TerminalComponent],
|
|
252
|
+
template: "<div class=\"container\">\n @if (deviceState() === 3 && term) {\n <amt-terminal [term]=\"term\" (handleKeyPress)=\"handleKeyPress($event)\"></amt-terminal>\n }\n</div>\n",
|
|
253
|
+
styles: [".container{display:block;text-align:center}.xtermDisplay{display:inline-block}\n"]
|
|
254
|
+
}]
|
|
255
|
+
}],
|
|
256
|
+
ctorParameters: () => [],
|
|
257
|
+
propDecorators: {
|
|
258
|
+
deviceStatus: [{
|
|
259
|
+
type: i0.Output,
|
|
260
|
+
args: ["deviceStatus"]
|
|
261
|
+
}],
|
|
262
|
+
deviceConnection: [{
|
|
263
|
+
type: i0.Input,
|
|
264
|
+
args: [{
|
|
265
|
+
isSignal: true,
|
|
266
|
+
alias: "deviceConnection",
|
|
267
|
+
required: false
|
|
268
|
+
}]
|
|
269
|
+
}],
|
|
270
|
+
mpsServer: [{
|
|
271
|
+
type: i0.Input,
|
|
272
|
+
args: [{
|
|
273
|
+
isSignal: true,
|
|
274
|
+
alias: "mpsServer",
|
|
275
|
+
required: false
|
|
276
|
+
}]
|
|
277
|
+
}],
|
|
278
|
+
authToken: [{
|
|
279
|
+
type: i0.Input,
|
|
280
|
+
args: [{
|
|
281
|
+
isSignal: true,
|
|
282
|
+
alias: "authToken",
|
|
283
|
+
required: false
|
|
284
|
+
}]
|
|
285
|
+
}],
|
|
286
|
+
deviceId: [{
|
|
287
|
+
type: i0.Input,
|
|
288
|
+
args: [{
|
|
289
|
+
isSignal: true,
|
|
290
|
+
alias: "deviceId",
|
|
291
|
+
required: false
|
|
292
|
+
}]
|
|
293
|
+
}]
|
|
294
|
+
}
|
|
295
|
+
});
|
|
180
296
|
export { SOLComponent };
|
|
181
|
-
|
|
297
|
+
|
|
298
|
+
//# sourceMappingURL=device-management-toolkit-ui-toolkit-angular-sol.mjs.map
|