bfg-common 1.5.591 → 1.5.592

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.
Files changed (261) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  4. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  5. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  6. package/components/atoms/TheIcon3.vue +50 -50
  7. package/components/atoms/collapse/CollapseNav.vue +170 -170
  8. package/components/atoms/perPage/PerPage.vue +58 -58
  9. package/components/atoms/table/dataGrid/DataGrid.vue +1718 -1718
  10. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  11. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  12. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  13. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  14. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  15. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  16. package/components/common/browse/lib/models/interfaces.ts +5 -5
  17. package/components/common/diagramMain/network/Contents.vue +497 -497
  18. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  19. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  20. package/components/common/pages/backups/DetailView.vue +52 -52
  21. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  22. package/components/common/pages/backups/modals/Modals.vue +243 -243
  23. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  24. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  25. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  26. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  27. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  28. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  29. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  30. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  31. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  32. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  33. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  34. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  35. package/components/common/select/radio/RadioGroup.vue +137 -137
  36. package/components/common/spiceConsole/Drawer.vue +420 -420
  37. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  38. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  39. package/components/common/tools/Actions.vue +207 -207
  40. package/components/common/treeView/TreeView.vue +52 -52
  41. package/components/common/vm/actions/add/Add.vue +819 -886
  42. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +205 -241
  43. package/components/common/vm/actions/common/customizeHardware/{CustomizeHardwareNew.vue → New.vue} +325 -325
  44. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +679 -733
  45. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +101 -110
  46. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +227 -252
  47. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +29 -30
  48. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +322 -348
  49. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/coresPerSocket/CoresPerSocket.vue +81 -86
  50. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/hotPlug/HotPlug.vue +40 -40
  51. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/maxCpu/MaxCpu.vue +91 -94
  52. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/model/Model.vue +92 -124
  53. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +133 -140
  54. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  55. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/Tooltip.vue +27 -25
  56. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +214 -221
  57. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +280 -300
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/{MemoryNew.vue → New.vue} +158 -158
  59. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/{MemoryOld.vue → Old.vue} +155 -155
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/hotPlug/HotPlug.vue +29 -29
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/{NewHardDiskNew.vue → New.vue} +0 -2
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +483 -521
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/{NewHardDiskOld.vue → Old.vue} +1 -6
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/cache/Cache.vue +59 -63
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/file/File.vue +24 -25
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/limitIops/LimitIops.vue +96 -103
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +142 -154
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/storageModal/StorageModal.vue +55 -61
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/maximumSize/MaximumSize.vue +26 -26
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/Mode.vue +61 -65
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/provisioning/Provisioning.vue +57 -61
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/Sharing.vue +59 -63
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +257 -277
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/adapterType/AdapterType.vue +56 -60
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/Location.vue +65 -71
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +111 -119
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +199 -210
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIo.vue +27 -29
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +29 -31
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +23 -22
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +40 -41
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelection.vue +34 -35
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbController.vue +47 -47
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +15 -16
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/inputDevices/InputDevices.vue +15 -15
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/reservation/Reservation.vue +194 -197
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCard.vue +129 -140
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/model/Model.vue +35 -37
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +50 -53
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemory.vue +104 -107
  91. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +70 -76
  92. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptions.vue +42 -46
  93. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  94. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -60
  95. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/Menu.vue +25 -26
  96. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +155 -156
  97. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +82 -86
  98. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/RemoteConsoleOptions.vue +74 -74
  99. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPaste.vue +25 -26
  100. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransfer.vue +25 -26
  101. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharing.vue +17 -20
  102. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  103. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +99 -102
  104. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  105. package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/Tools.vue +42 -42
  106. package/components/common/vm/actions/common/select/compatibility/Compatibility.vue +105 -107
  107. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  108. package/components/common/vm/actions/common/select/createType/CreateType.vue +36 -38
  109. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  110. package/components/common/vm/actions/common/select/options/Options.vue +53 -54
  111. package/components/common/vm/actions/common/select/os/Os.vue +152 -164
  112. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  113. package/components/common/vm/actions/common/select/storage/Storage.vue +170 -178
  114. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  115. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  116. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  117. package/components/common/vm/actions/common/select/template/Template.vue +75 -77
  118. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  119. package/components/common/vm/actions/common/select/template/treeView/TreeView.vue +85 -87
  120. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  121. package/components/common/vm/actions/register/Register.vue +352 -352
  122. package/components/common/vm/actions/register/lib/config/steps.ts +86 -86
  123. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  124. package/components/common/wizards/common/compatibility/New.vue +99 -99
  125. package/components/common/wizards/common/compatibility/Old.vue +53 -53
  126. package/components/common/wizards/common/steps/computeResource/ComputeResource.vue +86 -86
  127. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  128. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  129. package/components/common/wizards/common/steps/name/New.vue +221 -221
  130. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  131. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  132. package/components/common/wizards/common/steps/name/location/Location.vue +85 -85
  133. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  134. package/components/common/wizards/datastore/add/Add.vue +228 -228
  135. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  136. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  137. package/components/common/wizards/vm/migrate/select/computeResource/ComputeResource.vue +205 -205
  138. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  139. package/composables/useAppVersion.ts +21 -21
  140. package/composables/useLocal.ts +6 -6
  141. package/composables/useLocalCommon.ts +39 -39
  142. package/package.json +1 -1
  143. package/plugins/console.ts +21 -21
  144. package/plugins/date.ts +233 -233
  145. package/plugins/mouse.ts +21 -21
  146. package/plugins/panelStates.ts +70 -70
  147. package/plugins/text.ts +59 -59
  148. package/plugins/time.ts +58 -58
  149. package/public/spice-console/application/clientgui.js +854 -854
  150. package/public/spice-console/application/packetfactory.js +211 -211
  151. package/public/spice-console/application/virtualmouse.js +147 -147
  152. package/public/spice-console/lib/images/bitmap.js +203 -203
  153. package/public/spice-console/network/spicechannel.js +440 -440
  154. package/public/spice-console/process/cursorprocess.js +121 -121
  155. package/public/spice-console/process/inputprocess.js +227 -227
  156. package/public/spice-console/process/mainprocess.js +210 -210
  157. package/public/spice-console/run.js +210 -210
  158. package/store/main/mutations.ts +7 -7
  159. package/store/main/state.ts +7 -7
  160. /package/components/common/vm/actions/common/customizeHardware/{CustomizeHardwareOld.vue → Old.vue} +0 -0
  161. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/{VirtualHardwareNew.vue → New.vue} +0 -0
  162. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/{VirtualHardwareOld.vue → Old.vue} +0 -0
  163. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/{BusNew.vue → New.vue} +0 -0
  164. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/{BusOld.vue → Old.vue} +0 -0
  165. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/{CdDvdDriveNew.vue → New.vue} +0 -0
  166. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/{CdDvdDriveOld.vue → Old.vue} +0 -0
  167. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/{MediaNew.vue → New.vue} +0 -0
  168. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/{MediaOld.vue → Old.vue} +0 -0
  169. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/{CpuNew.vue → New.vue} +0 -0
  170. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/{CpuOld.vue → Old.vue} +0 -0
  171. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/coresPerSocket/{CoresPerSocketNew.vue → New.vue} +0 -0
  172. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/coresPerSocket/{CoresPerSocketOld.vue → Old.vue} +0 -0
  173. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/hotPlug/{HotPlugNew.vue → New.vue} +0 -0
  174. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/hotPlug/{HotPlugOld.vue → Old.vue} +0 -0
  175. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/maxCpu/{MaxCpuNew.vue → New.vue} +0 -0
  176. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/maxCpu/{MaxCpuOld.vue → Old.vue} +0 -0
  177. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/model/{ModelNew.vue → New.vue} +0 -0
  178. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/model/{ModelOld.vue → Old.vue} +0 -0
  179. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/{SharesNew.vue → New.vue} +0 -0
  180. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/{SharesOld.vue → Old.vue} +0 -0
  181. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/{TooltipNew.vue → New.vue} +0 -0
  182. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/{TooltipOld.vue → Old.vue} +0 -0
  183. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/{LimitNew.vue → New.vue} +0 -0
  184. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/{LimitOld.vue → Old.vue} +0 -0
  185. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/hotPlug/{HotPlugNew.vue → New.vue} +0 -0
  186. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/hotPlug/{HotPlugOld.vue → Old.vue} +0 -0
  187. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/cache/{CacheNew.vue → New.vue} +0 -0
  188. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/cache/{CacheOld.vue → Old.vue} +0 -0
  189. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/file/{FileNew.vue → New.vue} +0 -0
  190. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/file/{FileOld.vue → Old.vue} +0 -0
  191. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/limitIops/{LimitIopsNew.vue → New.vue} +0 -0
  192. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/limitIops/{LimitIopsOld.vue → Old.vue} +0 -0
  193. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/{LocationNew.vue → New.vue} +0 -0
  194. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/{LocationOld.vue → Old.vue} +0 -0
  195. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/maximumSize/{MaximumSizeNew.vue → New.vue} +0 -0
  196. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/maximumSize/{MaximumSizeOld.vue → Old.vue} +0 -0
  197. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/{ModeNew.vue → New.vue} +0 -0
  198. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/{ModeOld.vue → Old.vue} +0 -0
  199. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/provisioning/{ProvisioningNew.vue → New.vue} +0 -0
  200. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/provisioning/{ProvisioningOld.vue → Old.vue} +0 -0
  201. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/{SharingNew.vue → New.vue} +0 -0
  202. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/{SharingOld.vue → Old.vue} +0 -0
  203. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/{NewNetworkNew.vue → New.vue} +0 -0
  204. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/{NewNetworkOld.vue → Old.vue} +0 -0
  205. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/adapterType/{AdapterTypeNew.vue → New.vue} +0 -0
  206. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/adapterType/{AdapterTypeOld.vue → Old.vue} +0 -0
  207. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/{LocationOld.vue → Old.vue} +0 -0
  208. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/{MacAddressNew.vue → New.vue} +0 -0
  209. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/{MacAddressOld.vue → Old.vue} +0 -0
  210. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/{NewPciDeviceNew.vue → New.vue} +0 -0
  211. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/{NewPciDeviceOld.vue → Old.vue} +0 -0
  212. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/{DirectPathIoNew.vue → New.vue} +0 -0
  213. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/{DirectPathIoOld.vue → Old.vue} +0 -0
  214. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/{DynamicDirectPathIoNew.vue → New.vue} +0 -0
  215. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/{DynamicDirectPathIoOld.vue → Old.vue} +0 -0
  216. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/{NoteNew.vue → New.vue} +0 -0
  217. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/{NoteOld.vue → Old.vue} +0 -0
  218. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/{NvidiaGridNew.vue → New.vue} +0 -0
  219. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/{NvidiaGridOld.vue → Old.vue} +0 -0
  220. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/{TypeSelectionNew.vue → New.vue} +0 -0
  221. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/{TypeSelectionOld.vue → Old.vue} +0 -0
  222. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/{NewUsbControllerNew.vue → New.vue} +0 -0
  223. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/{NewUsbControllerOld.vue → Old.vue} +0 -0
  224. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/{OtherNew.vue → New.vue} +0 -0
  225. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/{OtherOld.vue → Old.vue} +0 -0
  226. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/inputDevices/{InputDevicesNew.vue → New.vue} +0 -0
  227. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/inputDevices/{InputDevicesOld.vue → Old.vue} +0 -0
  228. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/reservation/{ReservationNew.vue → New.vue} +0 -0
  229. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/reservation/{ReservationOld.vue → Old.vue} +0 -0
  230. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/{VideoCardNew.vue → New.vue} +0 -0
  231. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/{VideoCardOld.vue → Old.vue} +0 -0
  232. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/model/{ModelNew.vue → New.vue} +0 -0
  233. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/model/{ModelOld.vue → Old.vue} +0 -0
  234. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/{NumberDisplaysNew.vue → New.vue} +0 -0
  235. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/{NumberDisplaysOld.vue → Old.vue} +0 -0
  236. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/{TotalVideoMemoryNew.vue → New.vue} +0 -0
  237. /package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/{TotalVideoMemoryOld.vue → Old.vue} +0 -0
  238. /package/components/common/vm/actions/common/customizeHardware/vmoptions/{VmoptionsNew.vue → New.vue} +0 -0
  239. /package/components/common/vm/actions/common/customizeHardware/vmoptions/{VmoptionsOld.vue → Old.vue} +0 -0
  240. /package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/{BootOptionsNew.vue → New.vue} +0 -0
  241. /package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/{BootOptionsOld.vue → Old.vue} +0 -0
  242. /package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/{DelayNew.vue → New.vue} +0 -0
  243. /package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/{DelayOld.vue → Old.vue} +0 -0
  244. /package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/{FirmwareNew.vue → New.vue} +0 -0
  245. /package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/{FirmwareOld.vue → Old.vue} +0 -0
  246. /package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/{MenuNew.vue → New.vue} +0 -0
  247. /package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/{MenuOld.vue → Old.vue} +0 -0
  248. /package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/{OrderNew.vue → New.vue} +0 -0
  249. /package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/{OrderOld.vue → Old.vue} +0 -0
  250. /package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/{GeneralOptionsNew.vue → New.vue} +0 -0
  251. /package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/{GeneralOptionsOld.vue → Old.vue} +0 -0
  252. /package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/{CopyPasteNew.vue → New.vue} +0 -0
  253. /package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/{CopyPasteOld.vue → Old.vue} +0 -0
  254. /package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/{FileTransferNew.vue → New.vue} +0 -0
  255. /package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/{FileTransferOld.vue → Old.vue} +0 -0
  256. /package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/{FolderSharingNew.vue → New.vue} +0 -0
  257. /package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/{FolderSharingOld.vue → Old.vue} +0 -0
  258. /package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/{UsbRedirectionNew.vue → New.vue} +0 -0
  259. /package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/{UsbRedirectionOld.vue → Old.vue} +0 -0
  260. /package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/{ToolsNew.vue → New.vue} +0 -0
  261. /package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/{ToolsOld.vue → Old.vue} +0 -0
@@ -1,420 +1,420 @@
1
- <template>
2
- <div
3
- :class="['vmw-drawer animation', { show: isShow }]"
4
- data-id="spice-console-drawer"
5
- @click.capture="onInputManagerFocus"
6
- >
7
- <div
8
- v-if="!isShow"
9
- :style="`top: ${y}px;`"
10
- ref="grab"
11
- data-id="spice-console-drawer-toggle"
12
- class="vmw-drawer__open"
13
- @click="toggleDrawer"
14
- >
15
- <atoms-the-icon name="arrow" class="vmw-drawer__open-icon" />
16
- <atoms-the-icon2 name="drag" class="vmw-drawer__drag-icon" />
17
- </div>
18
-
19
- <div class="drawer-content">
20
- <div class="vmw-drawer-header">
21
- <h3>{{ localization.common.consolePanel }}</h3>
22
- <atoms-the-icon
23
- class="vmw-drawer-header__close"
24
- data-id="spice-console-drawer-toggle-icon"
25
- name="close"
26
- @click="toggleDrawer"
27
- />
28
- </div>
29
-
30
- <div class="vmw-drawer-body">
31
- <button
32
- v-if="!isWindow"
33
- class="vmw-drawer-body__btn animation toggle-fullscreen"
34
- data-id="spice-console-drawer-toggle-fullscreen"
35
- @click="emits('toggle-fullscreen')"
36
- >
37
- {{ localization.common.toggleFullscreenMode }}
38
- </button>
39
- <button
40
- class="vmw-drawer-body__btn animation send-alt-command"
41
- @click="emits('send-alt-command')"
42
- >
43
- {{ localization.common.sendAltCommand }}
44
- </button>
45
- <label
46
- v-development="true"
47
- class="vmw-drawer-body__btn animation relative"
48
- >
49
- {{ localization.remoteConsole.uploadFolder }}
50
- <input type="file" webkitdirectory directory multiple />
51
- </label>
52
- <label
53
- v-development="true"
54
- class="vmw-drawer-body__btn animation relative"
55
- >
56
- {{ localization.remoteConsole.uploadFiles }}
57
- <input type="file" multiple />
58
- </label>
59
-
60
- <select
61
- v-model="usbDevice"
62
- v-development="true"
63
- @mouseenter="hover = true"
64
- @mouseleave="hover = false"
65
- @change="onChangeUsbDevice"
66
- >
67
- <option
68
- v-for="item in usbDevices"
69
- :key="item.value"
70
- :value="item.value"
71
- :disabled="item.disabled"
72
- >
73
- {{ item.label }}
74
- </option>
75
- </select>
76
-
77
- <select
78
- :value="codec"
79
- @mouseenter="hover = true"
80
- @mouseleave="hover = false"
81
- @change="onChangeCodec"
82
- >
83
- <option :value="1">MJPEG</option>
84
- <option :value="2">VP8</option>
85
- <option :value="3">H264</option>
86
- <option :value="4" disabled>VP9</option>
87
- <option :value="5">H265</option>
88
- </select>
89
-
90
- <select
91
- :value="mouseMode"
92
- @mouseenter="hover = true"
93
- @mouseleave="hover = false"
94
- @change="onChangeMouseMode"
95
- >
96
- <option :value="1">Server</option>
97
- <option :value="2">Client</option>
98
- </select>
99
-
100
- <hr />
101
- <button
102
- class="vmw-drawer-body__btn animation show-keyboard"
103
- @click="onToggleKeyboard"
104
- >
105
- {{ showOrHideKeyboard }}
106
- </button>
107
- </div>
108
-
109
- <div class="vmw-drawer-footer">
110
- <div class="size-info">
111
- <p class="size-info-text">View size: {{ viewSize }}</p>
112
- <p class="size-info-text">Canvas size: {{ canvasSize }}</p>
113
- </div>
114
- <div id="debug-stream"></div>
115
- </div>
116
- </div>
117
- <div v-if="isKeyboardShown">
118
- <common-spice-console-keyboard />
119
- </div>
120
- </div>
121
- </template>
122
- <script setup lang="ts">
123
- import { useDraggable } from '@vueuse/core'
124
- import type { UI_I_DeviceOption } from '~/components/common/spiceConsole/lib/models/interfaces'
125
- import type { UI_I_Localization } from '~/lib/models/interfaces'
126
- import type {
127
- UI_T_CODEC,
128
- UI_T_MouseMode,
129
- } from '~/components/common/spiceConsole/lib/models/types'
130
- import {
131
- getUSBDeviceType,
132
- identifyHIDDevice,
133
- } from '~/components/common/spiceConsole/lib/utils/getDeviceType'
134
-
135
- const emits = defineEmits<{
136
- (event: 'toggle-fullscreen'): void
137
- (event: 'send-alt-command'): void
138
- }>()
139
-
140
- const isWindow = computed<boolean>(() => useRoute().query.window === 'true')
141
-
142
- const { $console, $mouse }: any = useNuxtApp()
143
-
144
- const codec = computed<UI_T_CODEC>(() => $console.codec.value)
145
- const onChangeCodec = (event: any): void => {
146
- const value = +event.target.value
147
- $console.changeCodec(value)
148
- // @ts-ignore
149
- if (!window.app) return
150
- // @ts-ignore
151
- const channels = window.app.spiceConnection.channels
152
- for (const i in channels) {
153
- const channel = channels[i]
154
- if (channel.channel === wdi.SpiceVars.SPICE_CHANNEL_DISPLAY) {
155
- channel.changeCodec(value)
156
- }
157
- }
158
- document.getElementById('inputmanager')?.focus()
159
- }
160
-
161
- const mouseMode = computed<UI_T_MouseMode>(() => $mouse.mode.value)
162
- const onChangeMouseMode = (event: any): void => {
163
- const value = +event.target.value
164
- // @ts-ignore
165
- if (!window.app) return
166
-
167
- // @ts-ignore
168
- window.app.packetProcess.processors[
169
- wdi.SpiceVars.SPICE_CHANNEL_MAIN
170
- ].changeMouseMode(value)
171
-
172
- document.getElementById('inputmanager')?.focus()
173
- isShow.value = false
174
- }
175
-
176
- const isKeyboardShown = ref<boolean>(false)
177
- const onToggleKeyboard = (): void => {
178
- isKeyboardShown.value = !isKeyboardShown.value
179
- }
180
-
181
- const isShow = ref<boolean>(false)
182
- const grab = ref<HTMLDivElement | null>(null)
183
- const localization = computed<UI_I_Localization>(() => useLocal())
184
- const initialTop = window.innerHeight / 2 - 15
185
- const { y } = useDraggable(grab, {
186
- initialValue: { x: -30, y: initialTop },
187
- })
188
-
189
- const showOrHideKeyboard = computed<string>(() =>
190
- isKeyboardShown.value
191
- ? localization.value.common.hideKeyboard
192
- : localization.value.common.showKeyboard
193
- )
194
-
195
- watch(y, () => {
196
- isDrag = true
197
- })
198
-
199
- let isDrag = false
200
- const toggleDrawer = (): void => {
201
- if (isDrag) {
202
- isDrag = false
203
- return
204
- }
205
- isShow.value = !isShow.value
206
- }
207
-
208
- const hover = ref<boolean>(false)
209
- const onInputManagerFocus = (): void => {
210
- if (hover.value) return
211
- document.getElementById('inputmanager')?.focus()
212
- }
213
-
214
- const viewSize = ref<string>('0 x 0')
215
- const canvasSize = ref<string>('0 x 0')
216
- const displaySizeInfo = (): void => {
217
- const layout = document.getElementById('eventLayer')
218
- viewSize.value = `${window.innerWidth}px x ${window.innerHeight}px`
219
- if (layout) {
220
- canvasSize.value = `${layout.width || 0}px x ${layout.height || 0}px`
221
- }
222
-
223
- requestAnimationFrame(displaySizeInfo)
224
- }
225
- displaySizeInfo()
226
-
227
- const usbDevice = ref<number | string>(-1)
228
- const usbDevices = ref<UI_I_DeviceOption[]>([
229
- { label: 'USB Device', value: -1, disabled: true },
230
- { label: 'Add USB device', value: -2 },
231
- ])
232
- const onChangeUsbDevice = (data: any): void => {
233
- if (data.target.value === '-2') {
234
- getUSBDeviceInformation()
235
- }
236
- }
237
-
238
- const getUSBDeviceInformation = async (): Promise<void> => {
239
- try {
240
- // Запросить устройство
241
- const device = await navigator.usb.requestDevice({ filters: [] })
242
- usbDevice.value = setDevice(device)
243
- } catch (error) {
244
- console.error('Error:', error)
245
- }
246
- }
247
-
248
- const setDevice = (device: any): string => {
249
- const interfaces = device.configuration.interfaces
250
-
251
- const types: any = new Set()
252
- interfaces.forEach((item: any) => {
253
- const classCode = item.alternate.interfaceClass
254
- const subclassCode = item.alternate.interfaceSubclass
255
- const protocolCode = item.alternate.interfaceProtocol
256
-
257
- if (classCode === 0x03) {
258
- // HID класс
259
- types.add(identifyHIDDevice(subclassCode, protocolCode))
260
- } else {
261
- types.add(getUSBDeviceType(classCode))
262
- }
263
- })
264
-
265
- const value = `${device.productId}_${device.vendorId}`
266
- if (usbDevices.value.every((device) => device.value !== value)) {
267
- usbDevices.value.push({
268
- value,
269
- label: Array.from(types).join(' / '),
270
- })
271
- }
272
-
273
- return value
274
- }
275
-
276
- const setDefaultDevices = async (): Promise<void> => {
277
- const devices = await navigator.usb.getDevices()
278
- devices.forEach((device: any) => {
279
- setDevice(device)
280
- })
281
- }
282
- setDefaultDevices()
283
- </script>
284
- <style lang="scss" scoped>
285
- .vmw-drawer {
286
- background-color: #314351;
287
- position: absolute;
288
- top: 0;
289
- right: -300px;
290
- width: 300px;
291
- height: 100vh;
292
- display: flex;
293
- flex-direction: column;
294
- padding: 20px 0 20px 20px;
295
- z-index: var(--z-modal);
296
-
297
- &.show {
298
- right: 0;
299
-
300
- .vmw-drawer__open {
301
- z-index: var(--z-negative);
302
- }
303
- }
304
-
305
- &__open {
306
- width: 65px;
307
- height: 40px;
308
- background-color: #314351;
309
- position: absolute;
310
- left: -30px;
311
- cursor: pointer;
312
- border-top-left-radius: 20px;
313
- border-bottom-left-radius: 20px;
314
- box-shadow: 0 0 15px 5px #31435169;
315
- transition: left 0.5s;
316
- user-select: none;
317
-
318
- &.moving {
319
- cursor: grabbing;
320
- }
321
-
322
- &:hover {
323
- left: -60px;
324
- }
325
-
326
- & .vmw-drawer__open-icon {
327
- fill: #ffffff;
328
- transform: rotate(-90deg);
329
- width: 30px;
330
- height: 40px;
331
- z-index: var(--z-dropdown);
332
- }
333
-
334
- & .vmw-drawer__drag-icon {
335
- fill: #ffffff;
336
- width: 40px;
337
- position: absolute;
338
- left: 21px;
339
- z-index: calc(var(--z-default) + 1);
340
- cursor: grabbing;
341
- }
342
- }
343
-
344
- .drawer-content {
345
- overflow: auto;
346
- padding-right: 20px;
347
- }
348
- .vmw-drawer-header {
349
- & h3 {
350
- color: #fff;
351
- font-weight: bold;
352
- font-size: 20px;
353
- text-align: center;
354
- }
355
-
356
- &__close {
357
- width: 30px;
358
- fill: #fff;
359
- position: absolute;
360
- right: 10px;
361
- top: 10px;
362
- cursor: pointer;
363
- }
364
- }
365
-
366
- .vmw-drawer-body {
367
- margin-top: 50px;
368
-
369
- & select,
370
- &__btn {
371
- display: block;
372
- width: 100%;
373
- color: #fff;
374
- cursor: pointer;
375
- font-size: 15px;
376
- border: 1px solid #fff;
377
- padding: 5px;
378
- border-radius: 5px;
379
- text-align: center;
380
- margin-bottom: 20px;
381
- background-color: transparent;
382
-
383
- &:not(.disable):hover {
384
- background-color: #ffffff;
385
- color: #314351;
386
- }
387
-
388
- &.disable {
389
- opacity: 0.5;
390
- cursor: not-allowed;
391
- }
392
-
393
- input[type='file'] {
394
- position: absolute;
395
- top: 0;
396
- left: 0;
397
- right: 0;
398
- bottom: 0;
399
- opacity: 0;
400
- }
401
- }
402
-
403
- & > hr {
404
- margin-bottom: 20px;
405
- border-color: #ffffff40;
406
- box-shadow: 0 0 20px 0.5px #ffffff2e;
407
- }
408
- }
409
-
410
- .vmw-drawer-footer {
411
- .size-info {
412
- margin-bottom: 10px;
413
-
414
- .size-info-text {
415
- color: #ffffff;
416
- }
417
- }
418
- }
419
- }
420
- </style>
1
+ <template>
2
+ <div
3
+ :class="['vmw-drawer animation', { show: isShow }]"
4
+ data-id="spice-console-drawer"
5
+ @click.capture="onInputManagerFocus"
6
+ >
7
+ <div
8
+ v-if="!isShow"
9
+ :style="`top: ${y}px;`"
10
+ ref="grab"
11
+ data-id="spice-console-drawer-toggle"
12
+ class="vmw-drawer__open"
13
+ @click="toggleDrawer"
14
+ >
15
+ <atoms-the-icon name="arrow" class="vmw-drawer__open-icon" />
16
+ <atoms-the-icon2 name="drag" class="vmw-drawer__drag-icon" />
17
+ </div>
18
+
19
+ <div class="drawer-content">
20
+ <div class="vmw-drawer-header">
21
+ <h3>{{ localization.common.consolePanel }}</h3>
22
+ <atoms-the-icon
23
+ class="vmw-drawer-header__close"
24
+ data-id="spice-console-drawer-toggle-icon"
25
+ name="close"
26
+ @click="toggleDrawer"
27
+ />
28
+ </div>
29
+
30
+ <div class="vmw-drawer-body">
31
+ <button
32
+ v-if="!isWindow"
33
+ class="vmw-drawer-body__btn animation toggle-fullscreen"
34
+ data-id="spice-console-drawer-toggle-fullscreen"
35
+ @click="emits('toggle-fullscreen')"
36
+ >
37
+ {{ localization.common.toggleFullscreenMode }}
38
+ </button>
39
+ <button
40
+ class="vmw-drawer-body__btn animation send-alt-command"
41
+ @click="emits('send-alt-command')"
42
+ >
43
+ {{ localization.common.sendAltCommand }}
44
+ </button>
45
+ <label
46
+ v-development="true"
47
+ class="vmw-drawer-body__btn animation relative"
48
+ >
49
+ {{ localization.remoteConsole.uploadFolder }}
50
+ <input type="file" webkitdirectory directory multiple />
51
+ </label>
52
+ <label
53
+ v-development="true"
54
+ class="vmw-drawer-body__btn animation relative"
55
+ >
56
+ {{ localization.remoteConsole.uploadFiles }}
57
+ <input type="file" multiple />
58
+ </label>
59
+
60
+ <select
61
+ v-model="usbDevice"
62
+ v-development="true"
63
+ @mouseenter="hover = true"
64
+ @mouseleave="hover = false"
65
+ @change="onChangeUsbDevice"
66
+ >
67
+ <option
68
+ v-for="item in usbDevices"
69
+ :key="item.value"
70
+ :value="item.value"
71
+ :disabled="item.disabled"
72
+ >
73
+ {{ item.label }}
74
+ </option>
75
+ </select>
76
+
77
+ <select
78
+ :value="codec"
79
+ @mouseenter="hover = true"
80
+ @mouseleave="hover = false"
81
+ @change="onChangeCodec"
82
+ >
83
+ <option :value="1">MJPEG</option>
84
+ <option :value="2">VP8</option>
85
+ <option :value="3">H264</option>
86
+ <option :value="4" disabled>VP9</option>
87
+ <option :value="5">H265</option>
88
+ </select>
89
+
90
+ <select
91
+ :value="mouseMode"
92
+ @mouseenter="hover = true"
93
+ @mouseleave="hover = false"
94
+ @change="onChangeMouseMode"
95
+ >
96
+ <option :value="1">Server</option>
97
+ <option :value="2">Client</option>
98
+ </select>
99
+
100
+ <hr />
101
+ <button
102
+ class="vmw-drawer-body__btn animation show-keyboard"
103
+ @click="onToggleKeyboard"
104
+ >
105
+ {{ showOrHideKeyboard }}
106
+ </button>
107
+ </div>
108
+
109
+ <div class="vmw-drawer-footer">
110
+ <div class="size-info">
111
+ <p class="size-info-text">View size: {{ viewSize }}</p>
112
+ <p class="size-info-text">Canvas size: {{ canvasSize }}</p>
113
+ </div>
114
+ <div id="debug-stream"></div>
115
+ </div>
116
+ </div>
117
+ <div v-if="isKeyboardShown">
118
+ <common-spice-console-keyboard />
119
+ </div>
120
+ </div>
121
+ </template>
122
+ <script setup lang="ts">
123
+ import { useDraggable } from '@vueuse/core'
124
+ import type { UI_I_DeviceOption } from '~/components/common/spiceConsole/lib/models/interfaces'
125
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
126
+ import type {
127
+ UI_T_CODEC,
128
+ UI_T_MouseMode,
129
+ } from '~/components/common/spiceConsole/lib/models/types'
130
+ import {
131
+ getUSBDeviceType,
132
+ identifyHIDDevice,
133
+ } from '~/components/common/spiceConsole/lib/utils/getDeviceType'
134
+
135
+ const emits = defineEmits<{
136
+ (event: 'toggle-fullscreen'): void
137
+ (event: 'send-alt-command'): void
138
+ }>()
139
+
140
+ const isWindow = computed<boolean>(() => useRoute().query.window === 'true')
141
+
142
+ const { $console, $mouse }: any = useNuxtApp()
143
+
144
+ const codec = computed<UI_T_CODEC>(() => $console.codec.value)
145
+ const onChangeCodec = (event: any): void => {
146
+ const value = +event.target.value
147
+ $console.changeCodec(value)
148
+ // @ts-ignore
149
+ if (!window.app) return
150
+ // @ts-ignore
151
+ const channels = window.app.spiceConnection.channels
152
+ for (const i in channels) {
153
+ const channel = channels[i]
154
+ if (channel.channel === wdi.SpiceVars.SPICE_CHANNEL_DISPLAY) {
155
+ channel.changeCodec(value)
156
+ }
157
+ }
158
+ document.getElementById('inputmanager')?.focus()
159
+ }
160
+
161
+ const mouseMode = computed<UI_T_MouseMode>(() => $mouse.mode.value)
162
+ const onChangeMouseMode = (event: any): void => {
163
+ const value = +event.target.value
164
+ // @ts-ignore
165
+ if (!window.app) return
166
+
167
+ // @ts-ignore
168
+ window.app.packetProcess.processors[
169
+ wdi.SpiceVars.SPICE_CHANNEL_MAIN
170
+ ].changeMouseMode(value)
171
+
172
+ document.getElementById('inputmanager')?.focus()
173
+ isShow.value = false
174
+ }
175
+
176
+ const isKeyboardShown = ref<boolean>(false)
177
+ const onToggleKeyboard = (): void => {
178
+ isKeyboardShown.value = !isKeyboardShown.value
179
+ }
180
+
181
+ const isShow = ref<boolean>(false)
182
+ const grab = ref<HTMLDivElement | null>(null)
183
+ const localization = computed<UI_I_Localization>(() => useLocal())
184
+ const initialTop = window.innerHeight / 2 - 15
185
+ const { y } = useDraggable(grab, {
186
+ initialValue: { x: -30, y: initialTop },
187
+ })
188
+
189
+ const showOrHideKeyboard = computed<string>(() =>
190
+ isKeyboardShown.value
191
+ ? localization.value.common.hideKeyboard
192
+ : localization.value.common.showKeyboard
193
+ )
194
+
195
+ watch(y, () => {
196
+ isDrag = true
197
+ })
198
+
199
+ let isDrag = false
200
+ const toggleDrawer = (): void => {
201
+ if (isDrag) {
202
+ isDrag = false
203
+ return
204
+ }
205
+ isShow.value = !isShow.value
206
+ }
207
+
208
+ const hover = ref<boolean>(false)
209
+ const onInputManagerFocus = (): void => {
210
+ if (hover.value) return
211
+ document.getElementById('inputmanager')?.focus()
212
+ }
213
+
214
+ const viewSize = ref<string>('0 x 0')
215
+ const canvasSize = ref<string>('0 x 0')
216
+ const displaySizeInfo = (): void => {
217
+ const layout = document.getElementById('eventLayer')
218
+ viewSize.value = `${window.innerWidth}px x ${window.innerHeight}px`
219
+ if (layout) {
220
+ canvasSize.value = `${layout.width || 0}px x ${layout.height || 0}px`
221
+ }
222
+
223
+ requestAnimationFrame(displaySizeInfo)
224
+ }
225
+ displaySizeInfo()
226
+
227
+ const usbDevice = ref<number | string>(-1)
228
+ const usbDevices = ref<UI_I_DeviceOption[]>([
229
+ { label: 'USB Device', value: -1, disabled: true },
230
+ { label: 'Add USB device', value: -2 },
231
+ ])
232
+ const onChangeUsbDevice = (data: any): void => {
233
+ if (data.target.value === '-2') {
234
+ getUSBDeviceInformation()
235
+ }
236
+ }
237
+
238
+ const getUSBDeviceInformation = async (): Promise<void> => {
239
+ try {
240
+ // Запросить устройство
241
+ const device = await navigator.usb.requestDevice({ filters: [] })
242
+ usbDevice.value = setDevice(device)
243
+ } catch (error) {
244
+ console.error('Error:', error)
245
+ }
246
+ }
247
+
248
+ const setDevice = (device: any): string => {
249
+ const interfaces = device.configuration.interfaces
250
+
251
+ const types: any = new Set()
252
+ interfaces.forEach((item: any) => {
253
+ const classCode = item.alternate.interfaceClass
254
+ const subclassCode = item.alternate.interfaceSubclass
255
+ const protocolCode = item.alternate.interfaceProtocol
256
+
257
+ if (classCode === 0x03) {
258
+ // HID класс
259
+ types.add(identifyHIDDevice(subclassCode, protocolCode))
260
+ } else {
261
+ types.add(getUSBDeviceType(classCode))
262
+ }
263
+ })
264
+
265
+ const value = `${device.productId}_${device.vendorId}`
266
+ if (usbDevices.value.every((device) => device.value !== value)) {
267
+ usbDevices.value.push({
268
+ value,
269
+ label: Array.from(types).join(' / '),
270
+ })
271
+ }
272
+
273
+ return value
274
+ }
275
+
276
+ const setDefaultDevices = async (): Promise<void> => {
277
+ const devices = await navigator.usb.getDevices()
278
+ devices.forEach((device: any) => {
279
+ setDevice(device)
280
+ })
281
+ }
282
+ setDefaultDevices()
283
+ </script>
284
+ <style lang="scss" scoped>
285
+ .vmw-drawer {
286
+ background-color: #314351;
287
+ position: absolute;
288
+ top: 0;
289
+ right: -300px;
290
+ width: 300px;
291
+ height: 100vh;
292
+ display: flex;
293
+ flex-direction: column;
294
+ padding: 20px 0 20px 20px;
295
+ z-index: var(--z-modal);
296
+
297
+ &.show {
298
+ right: 0;
299
+
300
+ .vmw-drawer__open {
301
+ z-index: var(--z-negative);
302
+ }
303
+ }
304
+
305
+ &__open {
306
+ width: 65px;
307
+ height: 40px;
308
+ background-color: #314351;
309
+ position: absolute;
310
+ left: -30px;
311
+ cursor: pointer;
312
+ border-top-left-radius: 20px;
313
+ border-bottom-left-radius: 20px;
314
+ box-shadow: 0 0 15px 5px #31435169;
315
+ transition: left 0.5s;
316
+ user-select: none;
317
+
318
+ &.moving {
319
+ cursor: grabbing;
320
+ }
321
+
322
+ &:hover {
323
+ left: -60px;
324
+ }
325
+
326
+ & .vmw-drawer__open-icon {
327
+ fill: #ffffff;
328
+ transform: rotate(-90deg);
329
+ width: 30px;
330
+ height: 40px;
331
+ z-index: var(--z-dropdown);
332
+ }
333
+
334
+ & .vmw-drawer__drag-icon {
335
+ fill: #ffffff;
336
+ width: 40px;
337
+ position: absolute;
338
+ left: 21px;
339
+ z-index: calc(var(--z-default) + 1);
340
+ cursor: grabbing;
341
+ }
342
+ }
343
+
344
+ .drawer-content {
345
+ overflow: auto;
346
+ padding-right: 20px;
347
+ }
348
+ .vmw-drawer-header {
349
+ & h3 {
350
+ color: #fff;
351
+ font-weight: bold;
352
+ font-size: 20px;
353
+ text-align: center;
354
+ }
355
+
356
+ &__close {
357
+ width: 30px;
358
+ fill: #fff;
359
+ position: absolute;
360
+ right: 10px;
361
+ top: 10px;
362
+ cursor: pointer;
363
+ }
364
+ }
365
+
366
+ .vmw-drawer-body {
367
+ margin-top: 50px;
368
+
369
+ & select,
370
+ &__btn {
371
+ display: block;
372
+ width: 100%;
373
+ color: #fff;
374
+ cursor: pointer;
375
+ font-size: 15px;
376
+ border: 1px solid #fff;
377
+ padding: 5px;
378
+ border-radius: 5px;
379
+ text-align: center;
380
+ margin-bottom: 20px;
381
+ background-color: transparent;
382
+
383
+ &:not(.disable):hover {
384
+ background-color: #ffffff;
385
+ color: #314351;
386
+ }
387
+
388
+ &.disable {
389
+ opacity: 0.5;
390
+ cursor: not-allowed;
391
+ }
392
+
393
+ input[type='file'] {
394
+ position: absolute;
395
+ top: 0;
396
+ left: 0;
397
+ right: 0;
398
+ bottom: 0;
399
+ opacity: 0;
400
+ }
401
+ }
402
+
403
+ & > hr {
404
+ margin-bottom: 20px;
405
+ border-color: #ffffff40;
406
+ box-shadow: 0 0 20px 0.5px #ffffff2e;
407
+ }
408
+ }
409
+
410
+ .vmw-drawer-footer {
411
+ .size-info {
412
+ margin-bottom: 10px;
413
+
414
+ .size-info-text {
415
+ color: #ffffff;
416
+ }
417
+ }
418
+ }
419
+ }
420
+ </style>