@epicgames-ps/lib-pixelstreamingfrontend-ue5.5 1.2.4 → 1.3.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.
Files changed (106) hide show
  1. package/CHANGELOG.md +25 -2
  2. package/dist/cjs/AFK/AFKController.js +2 -2
  3. package/dist/cjs/AFK/AFKController.js.map +1 -1
  4. package/dist/cjs/Config/Config.js +19 -0
  5. package/dist/cjs/Config/Config.js.map +1 -1
  6. package/dist/cjs/DataChannel/DataChannelController.js +2 -2
  7. package/dist/cjs/DataChannel/DataChannelController.js.map +1 -1
  8. package/dist/cjs/DataChannel/DataChannelSender.js +2 -2
  9. package/dist/cjs/DataChannel/DataChannelSender.js.map +1 -1
  10. package/dist/cjs/Inputs/GamepadController.js +5 -6
  11. package/dist/cjs/Inputs/GamepadController.js.map +1 -1
  12. package/dist/cjs/Inputs/InputClassesFactory.js +3 -3
  13. package/dist/cjs/Inputs/InputClassesFactory.js.map +1 -1
  14. package/dist/cjs/Inputs/KeyCodes.js +13 -1
  15. package/dist/cjs/Inputs/KeyCodes.js.map +1 -1
  16. package/dist/cjs/Inputs/KeyboardController.js +12 -0
  17. package/dist/cjs/Inputs/KeyboardController.js.map +1 -1
  18. package/dist/cjs/Inputs/MouseController.js +2 -1
  19. package/dist/cjs/Inputs/MouseController.js.map +1 -1
  20. package/dist/cjs/Inputs/MouseControllerHovering.js +71 -6
  21. package/dist/cjs/Inputs/MouseControllerHovering.js.map +1 -1
  22. package/dist/cjs/Inputs/MouseControllerLocked.js +18 -3
  23. package/dist/cjs/Inputs/MouseControllerLocked.js.map +1 -1
  24. package/dist/cjs/PeerConnectionController/PeerConnectionController.js +71 -72
  25. package/dist/cjs/PeerConnectionController/PeerConnectionController.js.map +1 -1
  26. package/dist/cjs/PixelStreaming/PixelStreaming.js +25 -0
  27. package/dist/cjs/PixelStreaming/PixelStreaming.js.map +1 -1
  28. package/dist/cjs/UeInstanceMessage/SendMessageController.js +2 -3
  29. package/dist/cjs/UeInstanceMessage/SendMessageController.js.map +1 -1
  30. package/dist/cjs/UeInstanceMessage/StreamMessageController.js.map +1 -1
  31. package/dist/cjs/VideoPlayer/StreamController.js +3 -3
  32. package/dist/cjs/VideoPlayer/StreamController.js.map +1 -1
  33. package/dist/cjs/VideoPlayer/VideoPlayer.js +17 -6
  34. package/dist/cjs/VideoPlayer/VideoPlayer.js.map +1 -1
  35. package/dist/cjs/WebRtcPlayer/WebRtcPlayerController.js +2 -2
  36. package/dist/cjs/WebRtcPlayer/WebRtcPlayerController.js.map +1 -1
  37. package/dist/cjs/WebXR/WebXRController.js +14 -11
  38. package/dist/cjs/WebXR/WebXRController.js.map +1 -1
  39. package/dist/esm/AFK/AFKController.js +2 -2
  40. package/dist/esm/AFK/AFKController.js.map +1 -1
  41. package/dist/esm/Config/Config.js +19 -0
  42. package/dist/esm/Config/Config.js.map +1 -1
  43. package/dist/esm/DataChannel/DataChannelController.js +2 -2
  44. package/dist/esm/DataChannel/DataChannelController.js.map +1 -1
  45. package/dist/esm/DataChannel/DataChannelSender.js +2 -2
  46. package/dist/esm/DataChannel/DataChannelSender.js.map +1 -1
  47. package/dist/esm/Inputs/GamepadController.js +5 -6
  48. package/dist/esm/Inputs/GamepadController.js.map +1 -1
  49. package/dist/esm/Inputs/InputClassesFactory.js +3 -3
  50. package/dist/esm/Inputs/InputClassesFactory.js.map +1 -1
  51. package/dist/esm/Inputs/KeyCodes.js +13 -1
  52. package/dist/esm/Inputs/KeyCodes.js.map +1 -1
  53. package/dist/esm/Inputs/KeyboardController.js +12 -0
  54. package/dist/esm/Inputs/KeyboardController.js.map +1 -1
  55. package/dist/esm/Inputs/MouseController.js +2 -1
  56. package/dist/esm/Inputs/MouseController.js.map +1 -1
  57. package/dist/esm/Inputs/MouseControllerHovering.js +71 -6
  58. package/dist/esm/Inputs/MouseControllerHovering.js.map +1 -1
  59. package/dist/esm/Inputs/MouseControllerLocked.js +18 -3
  60. package/dist/esm/Inputs/MouseControllerLocked.js.map +1 -1
  61. package/dist/esm/PeerConnectionController/PeerConnectionController.js +71 -72
  62. package/dist/esm/PeerConnectionController/PeerConnectionController.js.map +1 -1
  63. package/dist/esm/PixelStreaming/PixelStreaming.js +25 -0
  64. package/dist/esm/PixelStreaming/PixelStreaming.js.map +1 -1
  65. package/dist/esm/UeInstanceMessage/SendMessageController.js +2 -3
  66. package/dist/esm/UeInstanceMessage/SendMessageController.js.map +1 -1
  67. package/dist/esm/UeInstanceMessage/StreamMessageController.js.map +1 -1
  68. package/dist/esm/VideoPlayer/StreamController.js +3 -3
  69. package/dist/esm/VideoPlayer/StreamController.js.map +1 -1
  70. package/dist/esm/VideoPlayer/VideoPlayer.js +18 -7
  71. package/dist/esm/VideoPlayer/VideoPlayer.js.map +1 -1
  72. package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js +2 -2
  73. package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js.map +1 -1
  74. package/dist/esm/WebXR/WebXRController.js +14 -11
  75. package/dist/esm/WebXR/WebXRController.js.map +1 -1
  76. package/dist/types/Config/Config.d.ts +8 -0
  77. package/dist/types/Inputs/InputClassesFactory.d.ts +1 -1
  78. package/dist/types/Inputs/MouseController.d.ts +3 -1
  79. package/dist/types/Inputs/MouseControllerHovering.d.ts +10 -1
  80. package/dist/types/Inputs/MouseControllerLocked.d.ts +2 -1
  81. package/dist/types/PeerConnectionController/PeerConnectionController.d.ts +3 -3
  82. package/dist/types/PixelStreaming/PixelStreaming.d.ts +9 -1
  83. package/dist/types/UeInstanceMessage/StreamMessageController.d.ts +3 -3
  84. package/dist/types/VideoPlayer/VideoPlayer.d.ts +1 -0
  85. package/eslint.config.mjs +1 -8
  86. package/package.json +4 -4
  87. package/src/AFK/AFKController.ts +2 -2
  88. package/src/Config/Config.ts +61 -9
  89. package/src/DataChannel/DataChannelController.ts +2 -2
  90. package/src/DataChannel/DataChannelSender.ts +2 -2
  91. package/src/Inputs/GamepadController.ts +5 -6
  92. package/src/Inputs/InputClassesFactory.ts +5 -3
  93. package/src/Inputs/KeyCodes.ts +13 -1
  94. package/src/Inputs/KeyboardController.ts +11 -1
  95. package/src/Inputs/MouseController.ts +5 -1
  96. package/src/Inputs/MouseControllerHovering.ts +79 -6
  97. package/src/Inputs/MouseControllerLocked.ts +20 -3
  98. package/src/PeerConnectionController/PeerConnectionController.ts +22 -22
  99. package/src/PixelStreaming/PixelStreaming.ts +26 -0
  100. package/src/UeInstanceMessage/SendMessageController.ts +2 -3
  101. package/src/UeInstanceMessage/StreamMessageController.ts +3 -3
  102. package/src/VideoPlayer/StreamController.ts +3 -3
  103. package/src/VideoPlayer/VideoPlayer.test.ts +141 -0
  104. package/src/VideoPlayer/VideoPlayer.ts +26 -10
  105. package/src/WebRtcPlayer/WebRtcPlayerController.ts +2 -2
  106. package/src/WebXR/WebXRController.ts +15 -11
@@ -1 +1 @@
1
- {"version":3,"file":"WebXRController.js","sourceRoot":"","sources":["../../../src/WebXR/WebXRController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebXRController.js","sourceRoot":"","sources":["../../../src/WebXR/WebXRController.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AAEtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,MAAM,OAAO,eAAe;IAkCxB,YAAY,sBAA8C;QA9BlD,iBAAY,GAAiB,IAAI,CAAC;QAC1C,+DAA+D;QACvD,YAAO,GAAG,SAAS,CAAC;QAQpB,iBAAY,GAAiB,IAAI,CAAC;QAClC,mBAAc,GAAW,CAAC,CAAC;QAC3B,oBAAe,GAAW,CAAC,CAAC;QAK5B,aAAQ,GAAW,IAAI,CAAC;QACxB,cAAS,GAAW,IAAI,CAAC;QAEjC,+FAA+F;QACvF,wBAAmB,GAAiB,IAAI,CAAC;QACzC,yBAAoB,GAAiB,IAAI,CAAC;QAC1C,+BAA0B,GAAqB,IAAI,CAAC;QACpD,gCAA2B,GAAqB,IAAI,CAAC;QAOzD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,gBAAgB,GAAG,sBAAsB,CAAC;QAC/C,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;QAClG,IAAI,CAAC,cAAc,GAAG,IAAI,WAAW,EAAE,CAAC;QACxC,IAAI,CAAC,gBAAgB,GAAG,IAAI,WAAW,EAAE,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IACrC,CAAC;IAEM,SAAS;QACZ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;gBAChB,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;gBAClD,OAAO;YACX,CAAC;YAED,KAAK,SAAS,CAAC,EAAE;gBACb,iEAAiE;iBAChE,cAAc,CAAC,cAAc,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;iBACxD,IAAI,CAAC,CAAC,OAAkB,EAAE,EAAE;gBACzB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;QACX,CAAC;aAAM,CAAC;YACJ,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAC9B,CAAC;IACL,CAAC;IAED,gBAAgB;QACZ,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,MAAM;QACF,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACV,OAAO;QACX,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE;YAClC,YAAY,EAAE,IAAI;SACrB,CAAC,CAAC;QAEH,sBAAsB;QACtB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,WAAW;QACP,qBAAqB;QACrB,MAAM,kBAAkB,GAAW;;;;;;;;;;;;;SAalC,CAAC;QAEF,MAAM,oBAAoB,GAAW;;;;;;;;;;;;SAYpC,CAAC;QAEF,sBAAsB;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;QACjE,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;QACvD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QAEpC,wBAAwB;QACxB,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;QACrE,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC;QAC3D,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAEtC,qBAAqB;QACrB,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QAC9C,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QACpD,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAElC,wCAAwC;QACxC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAC/E,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IACnF,CAAC;IAED,kBAAkB;QACd,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,+CAA+C;YAC/C,2DAA2D;YAC3D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;YAC5C,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAE3D,sDAAsD;YACtD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;YACzF,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;YACzF,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YACtF,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,WAAW,CAAC;QACpF,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,UAAU,CAAC;QAElF,IAAI,IAAI,CAAC,eAAe,IAAI,WAAW,IAAI,IAAI,CAAC,cAAc,IAAI,UAAU,EAAE,CAAC;YAC3E,uDAAuD;YACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CACd,IAAI,CAAC,EAAE,CAAC,UAAU,EAClB,CAAC,EACD,IAAI,CAAC,EAAE,CAAC,IAAI,EACZ,UAAU,EACV,WAAW,EACX,CAAC,EACD,IAAI,CAAC,EAAE,CAAC,IAAI,EACZ,IAAI,CAAC,EAAE,CAAC,aAAa,EACrB,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,eAAe,EAAE,CACtD,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,iDAAiD;YACjD,IAAI,CAAC,EAAE,CAAC,aAAa,CACjB,IAAI,CAAC,EAAE,CAAC,UAAU,EAClB,CAAC,EACD,CAAC,EACD,CAAC,EACD,UAAU,EACV,WAAW,EACX,IAAI,CAAC,EAAE,CAAC,IAAI,EACZ,IAAI,CAAC,EAAE,CAAC,aAAa,EACrB,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,eAAe,EAAE,CACtD,CAAC;QACN,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;IACrC,CAAC;IAED,WAAW;QACP,6DAA6D;QAC7D,CAAC;YACG,0FAA0F;YAC1F,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;YAC7C,2BAA2B;YAC3B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC9D,kEAAkE;YAClE,IAAI,CAAC,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAEvD,+FAA+F;YAC/F,kBAAkB;YAClB,IAAI,CAAC,EAAE,CAAC,UAAU,CACd,IAAI,CAAC,EAAE,CAAC,YAAY,EACpB,IAAI,YAAY,CAAC;gBACb,CAAC,GAAG,EAAG,GAAG;gBACT,GAAG,EAAG,GAAG;gBACV,CAAC,GAAG,EAAE,CAAC,GAAG;gBACV,CAAC,GAAG,EAAE,CAAC,GAAG;gBACT,GAAG,EAAG,GAAG;gBACT,GAAG,EAAE,CAAC,GAAG;aACb,CAAC,EACF,IAAI,CAAC,EAAE,CAAC,WAAW,CACtB,CAAC;YAEF,4GAA4G;YAC5G,IAAI,CAAC,EAAE,CAAC,mBAAmB,CACvB,IAAI,CAAC,gBAAgB,EACrB,CAAC,CAAC,QAAQ,EACV,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EACtB,KAAK,CAAC,aAAa,EACnB,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,UAAU,CACf,CAAC;QACN,CAAC;QAED,kEAAkE;QAClE,CAAC;YACG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;YAC7C,qCAAqC;YACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC9D,oEAAoE;YACpE,IAAI,CAAC,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAEvD,gEAAgE;YAChE,IAAI,CAAC,EAAE,CAAC,UAAU,CACd,IAAI,CAAC,EAAE,CAAC,YAAY,EACpB,IAAI,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAC9E,IAAI,CAAC,EAAE,CAAC,WAAW,CACtB,CAAC;YAEF,sHAAsH;YACtH,IAAI,CAAC,EAAE,CAAC,mBAAmB,CACvB,IAAI,CAAC,gBAAgB,EACrB,CAAC,CAAC,QAAQ,EACV,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EACtB,KAAK,CAAC,aAAa,EACnB,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,UAAU,CACf,CAAC;QACN,CAAC;IACL,CAAC;IAED,kBAAkB,CAAC,OAAkB;QACjC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAElC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE;YACxC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,iBAAiB;QACjB,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,KAAK,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC1D,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;YAE3B,qFAAqF;YACrF,KAAK,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;gBAClC,SAAS,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC;aACvD,CAAC,CAAC;YAEH,6EAA6E;YAC7E,IAAI,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC;gBACrC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC;oBACzD,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;wBAClB,KAAK,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;oBAC3C,CAAC;gBACL,CAAC;YACL,CAAC;YAED,qDAAqD;YACrD,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,cAAc,CAAC,CAAe,EAAE,CAAe;QAC3C,OAAO,CACH,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CACrG,CAAC;IACN,CAAC;IAED,cAAc,CAAC,CAAmB,EAAE,CAAmB;QACnD,OAAO,CACH,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO;YACnC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO;YACnC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CACtC,CAAC;IACN,CAAC;IAED,cAAc;QACV,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;YAClD,OAAO;QACX,CAAC;QAED,kEAAkE;QAClE,+EAA+E;QAC/E,gHAAgH;QAChH,mFAAmF;QACnF,iEAAiE;QACjE,IAAI,kBAAkB,GAClB,IAAI,CAAC,mBAAmB,IAAI,IAAI;YAChC,IAAI,CAAC,oBAAoB,IAAI,IAAI;YACjC,IAAI,CAAC,0BAA0B,IAAI,IAAI;YACvC,IAAI,CAAC,2BAA2B,IAAI,IAAI,CAAC;QAE7C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACnD,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;QACtD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC;QAEpD,4CAA4C;QAC5C,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,EAAE,CAAC;YAC/F,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACxF,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC3F,kBAAkB,GAAG,oBAAoB,IAAI,KAAK,IAAI,qBAAqB,IAAI,KAAK,CAAC;QACzF,CAAC;QAED,MAAM,kBAAkB,GAAG,IAAI,gBAAgB,CAC3C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAC3E,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAC3E,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAC3E,GAAG,CACN,CAAC;QAEF,MAAM,mBAAmB,GAAG,IAAI,gBAAgB,CAC5C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAC3E,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAC3E,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAC3E,GAAG,CACN,CAAC;QAEF,0DAA0D;QAC1D,IACI,CAAC,kBAAkB;YACnB,IAAI,CAAC,0BAA0B,IAAI,IAAI;YACvC,IAAI,CAAC,2BAA2B,IAAI,IAAI,EAC1C,CAAC;YACC,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAC3C,kBAAkB,EAClB,IAAI,CAAC,0BAA0B,CAClC,CAAC;YACF,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAC5C,mBAAmB,EACnB,IAAI,CAAC,2BAA2B,CACnC,CAAC;YACF,kBAAkB,GAAG,mBAAmB,IAAI,KAAK,IAAI,oBAAoB,IAAI,KAAK,CAAC;YACnF,2HAA2H;QAC/H,CAAC;QAED,IAAI,kBAAkB,EAAE,CAAC;YACrB,8FAA8F;YAC9F,kBAAkB;YAClB,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC/E,gCAAgC;gBAChC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAG,YAAY,CAAC,EAAE,CAAC;gBACpE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAG,YAAY,CAAC,EAAE,CAAC;gBACpE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC;gBACpE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC;gBACpE,iCAAiC;gBACjC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAG,WAAW,CAAC,EAAE,CAAC;gBAChE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAG,WAAW,CAAC,EAAE,CAAC;gBAChE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC;gBAChE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC;gBAChE,iCAAiC;gBACjC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAG,aAAa,CAAC,EAAE,CAAC;gBACxE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAG,aAAa,CAAC,EAAE,CAAC;gBACxE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC;gBACxE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC;gBACxE,kCAAkC;gBAClC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAG,YAAY,CAAC,EAAE,CAAC;gBACpE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAG,YAAY,CAAC,EAAE,CAAC;gBACpE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC;gBACpE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC;gBACpE,oBAAoB;gBACpB,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAG,QAAQ,CAAC,EAAE,CAAC;gBACpD,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAG,QAAQ,CAAC,EAAE,CAAC;gBACpD,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACpD,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;aACvD,CAAC,CAAC;YACH,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC;YACvC,IAAI,CAAC,oBAAoB,GAAG,YAAY,CAAC;YACzC,IAAI,CAAC,0BAA0B,GAAG,kBAAkB,CAAC;YACrD,IAAI,CAAC,2BAA2B,GAAG,mBAAmB,CAAC;QAC3D,CAAC;aAAM,CAAC;YACJ,kFAAkF;YAClF,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBACnF,oBAAoB;gBACpB,QAAQ,CAAC,CAAC,CAAC;gBACX,QAAQ,CAAC,CAAC,CAAC;gBACX,QAAQ,CAAC,CAAC,CAAC;gBACX,QAAQ,CAAC,EAAE,CAAC;gBACZ,QAAQ,CAAC,CAAC,CAAC;gBACX,QAAQ,CAAC,CAAC,CAAC;gBACX,QAAQ,CAAC,CAAC,CAAC;gBACX,QAAQ,CAAC,EAAE,CAAC;gBACZ,QAAQ,CAAC,CAAC,CAAC;gBACX,QAAQ,CAAC,CAAC,CAAC;gBACX,QAAQ,CAAC,EAAE,CAAC;gBACZ,QAAQ,CAAC,EAAE,CAAC;gBACZ,QAAQ,CAAC,CAAC,CAAC;gBACX,QAAQ,CAAC,CAAC,CAAC;gBACX,QAAQ,CAAC,EAAE,CAAC;gBACZ,QAAQ,CAAC,EAAE,CAAC;aACf,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,SAAS,CAAC,IAAyB,EAAE,KAAc;QAC/C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;gBAClD,OAAO;YACX,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACtE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAC/B,CAAC,MAAqB,EAAE,MAAc,EAAE,MAAuB,EAAE,EAAE;gBAC/D,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1E,CAAC,EACD,IAAI,CACP,CAAC;QACN,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,IAAyB,EAAE,KAAc,EAAE,EAAE,CAC/E,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAC9B,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAEO,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,OAAO;QACX,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;gBACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACzB,CAAC;iBAAM,IAAI,IAAI,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gBAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAC1B,CAAC;QACL,CAAC;IACL,CAAC;IAEO,MAAM;QACV,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACX,OAAO;QACX,CAAC;QAED,uDAAuD;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC;QACrD,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAElE,yCAAyC;QACzC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAE5E,8DAA8D;QAC9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,IAAmB;QACzC,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACtE,CAAC;QAED,kEAAkE;QAClE,kEAAkE;QAClE,IAAI,CAAC;YACD,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;gBACf,OAAO,SAAS,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACjD,CAAC;QACL,CAAC;QAAC,WAAM,CAAC;YACL,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACJ"}
@@ -24,9 +24,11 @@ export declare class Flags {
24
24
  static UseCamera: "UseCamera";
25
25
  static KeyboardInput: "KeyboardInput";
26
26
  static MouseInput: "MouseInput";
27
+ static MouseDoubleClickAutoRelease: "MouseDoubleClickAutoRelease";
27
28
  static TouchInput: "TouchInput";
28
29
  static GamepadInput: "GamepadInput";
29
30
  static XRControllerInput: "XRControllerInput";
31
+ static AutoEnterVR: "AutoEnterVR";
30
32
  static WaitForStreamer: "WaitForStreamer";
31
33
  static HideUI: "HideUI";
32
34
  static EnableCaptureTimeExt: "EnableCaptureTimeExt";
@@ -53,6 +55,7 @@ export declare class NumericParameters {
53
55
  static MaxReconnectAttempts: "MaxReconnectAttempts";
54
56
  static StreamerAutoJoinInterval: "StreamerAutoJoinInterval";
55
57
  static KeepaliveDelay: "KeepaliveDelay";
58
+ static ViewportResScale: "ViewportResScale";
56
59
  }
57
60
  export type NumericParametersKeys = Exclude<keyof typeof NumericParameters, 'prototype'>;
58
61
  export type NumericParametersIds = (typeof NumericParameters)[NumericParametersKeys];
@@ -128,6 +131,11 @@ export declare class Config {
128
131
  * @returns The numeric value stored in the parameter with the passed id.
129
132
  */
130
133
  getNumericSettingValue(id: NumericParametersIds): number;
134
+ /**
135
+ * @param id The id of the numeric setting to check for.
136
+ * @returns True if the numeric setting is registered in this Config.
137
+ */
138
+ hasNumericSetting(id: NumericParametersIds): boolean;
131
139
  /**
132
140
  * @param id The id of the text setting we are interested in getting a value for.
133
141
  * @returns The text value stored in the parameter with the passed id.
@@ -28,7 +28,7 @@ export declare class InputClassesFactory {
28
28
  * register mouse events based on a control type
29
29
  * @param controlScheme - if the mouse is either hovering or locked
30
30
  */
31
- registerMouse(controlScheme: ControlSchemeType): MouseController;
31
+ registerMouse(controlScheme: ControlSchemeType, config: Config): MouseController;
32
32
  /**
33
33
  * register touch events
34
34
  * @param fakeMouseTouch - the faked mouse touch event
@@ -3,6 +3,7 @@ import { InputCoordTranslator } from '../Util/InputCoordTranslator';
3
3
  import { VideoPlayer } from '../VideoPlayer/VideoPlayer';
4
4
  import type { ActiveKeys } from './InputClassesFactory';
5
5
  import { IInputController } from './IInputController';
6
+ import { Config } from '../Config/Config';
6
7
  /**
7
8
  * Extra types for Document and WheelEvent
8
9
  */
@@ -24,9 +25,10 @@ export declare class MouseController implements IInputController {
24
25
  streamMessageController: StreamMessageController;
25
26
  coordinateConverter: InputCoordTranslator;
26
27
  activeKeys: ActiveKeys;
28
+ config: Config;
27
29
  onEnterListener: (event: MouseEvent) => void;
28
30
  onLeaveListener: (event: MouseEvent) => void;
29
- constructor(streamMessageController: StreamMessageController, videoPlayer: VideoPlayer, coordinateConverter: InputCoordTranslator, activeKeys: ActiveKeys);
31
+ constructor(streamMessageController: StreamMessageController, videoPlayer: VideoPlayer, coordinateConverter: InputCoordTranslator, activeKeys: ActiveKeys, config: Config);
30
32
  register(): void;
31
33
  unregister(): void;
32
34
  registerMouseEnterAndLeaveEvents(): void;
@@ -3,6 +3,7 @@ import { InputCoordTranslator } from '../Util/InputCoordTranslator';
3
3
  import { VideoPlayer } from '../VideoPlayer/VideoPlayer';
4
4
  import type { ActiveKeys } from './InputClassesFactory';
5
5
  import { MouseController } from './MouseController';
6
+ import { Config } from '../Config/Config';
6
7
  /**
7
8
  * A mouse controller that allows the mouse to freely float over the video document.
8
9
  */
@@ -14,9 +15,17 @@ export declare class MouseControllerHovering extends MouseController {
14
15
  onMouseWheelListener: (event: WheelEvent) => void;
15
16
  onMouseMoveListener: (event: MouseEvent) => void;
16
17
  onContextMenuListener: (event: MouseEvent) => void;
17
- constructor(streamMessageController: StreamMessageController, videoPlayer: VideoPlayer, coordinateConverter: InputCoordTranslator, activeKeys: ActiveKeys);
18
+ private pressedButtons;
19
+ constructor(streamMessageController: StreamMessageController, videoPlayer: VideoPlayer, coordinateConverter: InputCoordTranslator, activeKeys: ActiveKeys, config: Config);
18
20
  register(): void;
19
21
  unregister(): void;
22
+ private startCapturing;
23
+ private stopCapturing;
24
+ /**
25
+ * Compute (offsetX, offsetY) relative to the video element from a window-
26
+ * level event whose `target` may be any other element on the page.
27
+ */
28
+ private offsetFromVideo;
20
29
  private onMouseDown;
21
30
  private onMouseUp;
22
31
  private onContextMenu;
@@ -3,6 +3,7 @@ import { InputCoordTranslator, TranslatedCoordUnsigned } from '../Util/InputCoor
3
3
  import { VideoPlayer } from '../VideoPlayer/VideoPlayer';
4
4
  import type { ActiveKeys } from './InputClassesFactory';
5
5
  import { MouseController } from './MouseController';
6
+ import { Config } from '../Config/Config';
6
7
  /**
7
8
  * A mouse controller that locks the mouse to the video document and prevents it from leaving the window
8
9
  */
@@ -18,7 +19,7 @@ export declare class MouseControllerLocked extends MouseController {
18
19
  onMouseDblClickListener: (event: MouseEvent) => void;
19
20
  onMouseWheelListener: (event: WheelEvent) => void;
20
21
  onMouseMoveListener: (event: MouseEvent) => void;
21
- constructor(streamMessageController: StreamMessageController, videoPlayer: VideoPlayer, coordinateConverter: InputCoordTranslator, activeKeys: ActiveKeys);
22
+ constructor(streamMessageController: StreamMessageController, videoPlayer: VideoPlayer, coordinateConverter: InputCoordTranslator, activeKeys: ActiveKeys, config: Config);
22
23
  register(): void;
23
24
  unregister(): void;
24
25
  private onRequestLock;
@@ -25,11 +25,11 @@ export declare class PeerConnectionController {
25
25
  * Create an offer for the Web RTC handshake and send the offer to the signaling server via websocket
26
26
  * @param offerOptions - RTC Offer Options
27
27
  */
28
- createOffer(offerOptions: RTCOfferOptions, config: Config): Promise<void>;
28
+ createOffer(offerOptions: RTCOfferOptions, config: Config): void;
29
29
  /**
30
30
  * Receive offer from UE side and process it as the remote description of this peer connection
31
31
  */
32
- receiveOffer(offer: RTCSessionDescriptionInit, config: Config): Promise<void>;
32
+ receiveOffer(offer: RTCSessionDescriptionInit, config: Config): void;
33
33
  /**
34
34
  * Set the Remote Descriptor from the signaling server to the RTC Peer Connection
35
35
  * @param answer - RTC Session Descriptor from the Signaling Server
@@ -60,7 +60,7 @@ export declare class PeerConnectionController {
60
60
  * When the RTC Peer Connection Signaling server state Changes
61
61
  * @param state - Signaling Server State Change Event
62
62
  */
63
- handleSignalStateChange(state: Event): void;
63
+ handleSignalStateChange(_state: Event): void;
64
64
  /**
65
65
  * Handle when the Ice Connection State Changes
66
66
  * @param state - Ice Connection State
@@ -150,6 +150,14 @@ export declare class PixelStreaming {
150
150
  * Handle when the Video has been Initialized
151
151
  */
152
152
  _onVideoInitialized(): void;
153
+ /**
154
+ * If the AutoEnterVR flag is set and an immersive-vr session is supported,
155
+ * request the WebXR session. Browsers typically require a user gesture for
156
+ * `requestSession`; if no gesture is currently active the request will be
157
+ * rejected and a warning is logged. Callers that need a guaranteed entry
158
+ * (e.g. AutoConnect from a fresh page load) should still wire up a button.
159
+ */
160
+ private checkForAutoEnterVR;
153
161
  /**
154
162
  * Set up functionality to happen when receiving latency test results
155
163
  * @param latency - latency test results object
@@ -280,6 +288,6 @@ export declare class PixelStreaming {
280
288
  */
281
289
  get webXrController(): WebXRController;
282
290
  registerMessageHandler(name: string, direction: MessageDirection, handler?: (data: ArrayBuffer | Array<number | string>) => void): void;
283
- get toStreamerHandlers(): Map<string, (messageData?: Array<number | string> | undefined) => void>;
291
+ get toStreamerHandlers(): Map<string, (messageData?: Array<number | string>) => void>;
284
292
  isReconnecting(): boolean;
285
293
  }
@@ -3,8 +3,8 @@ export declare class ToStreamerMessage {
3
3
  structure?: Array<string>;
4
4
  }
5
5
  export declare class StreamMessageController {
6
- toStreamerHandlers: Map<string, (messageData?: Array<number | string> | undefined) => void>;
7
- fromStreamerHandlers: Map<string, (messageType: string, messageData?: ArrayBuffer | undefined) => void>;
6
+ toStreamerHandlers: Map<string, (messageData?: Array<number | string>) => void>;
7
+ fromStreamerHandlers: Map<string, (messageType: string, messageData?: ArrayBuffer) => void>;
8
8
  toStreamerMessages: Map<string, ToStreamerMessage>;
9
9
  fromStreamerMessages: Map<number, string>;
10
10
  constructor();
@@ -18,7 +18,7 @@ export declare class StreamMessageController {
18
18
  * @param messageType - the type of the message
19
19
  * @param messageHandler - the function or method to be executed when this handler is called
20
20
  */
21
- registerMessageHandler(messageDirection: MessageDirection, messageType: string, messageHandler: (messageData?: unknown | undefined) => void): void;
21
+ registerMessageHandler(messageDirection: MessageDirection, messageType: string, messageHandler: (messageData?: unknown) => void): void;
22
22
  }
23
23
  /**
24
24
  * The enum for message directions
@@ -11,6 +11,7 @@ declare global {
11
11
  * The video player html element
12
12
  */
13
13
  export declare class VideoPlayer {
14
+ private static readonly maxEncoderDimension;
14
15
  private config;
15
16
  private videoElement;
16
17
  private audioElement?;
package/eslint.config.mjs CHANGED
@@ -13,6 +13,7 @@ export default tseslint.config(
13
13
  parser: tseslint.parser,
14
14
  parserOptions: {
15
15
  project: 'tsconfig.json',
16
+ tsconfigRootDir: import.meta.dirname,
16
17
  },
17
18
  },
18
19
  files: ["src/**/*.ts"],
@@ -26,17 +27,9 @@ export default tseslint.config(
26
27
  "@typescript-eslint/no-unsafe-assignment": "off",
27
28
  "@typescript-eslint/no-unsafe-argument": "off",
28
29
  "@typescript-eslint/no-unsafe-return": "off",
29
- "@typescript-eslint/no-floating-promises": "off",
30
30
  "@typescript-eslint/restrict-plus-operands": "off",
31
31
  "@typescript-eslint/unbound-method": "off",
32
- "@typescript-eslint/no-duplicate-type-constituents": "off",
33
- "@typescript-eslint/no-redundant-type-constituents": "off",
34
32
  "@typescript-eslint/restrict-template-expressions": "off",
35
- "@typescript-eslint/no-unnecessary-type-assertion": "off",
36
- "@typescript-eslint/no-array-delete": "off",
37
- "@typescript-eslint/no-unsafe-enum-comparison": "off",
38
- "@typescript-eslint/require-await": "off",
39
- "@typescript-eslint/no-base-to-string": "off",
40
33
  "no-unused-vars": "off",
41
34
  "@typescript-eslint/no-unused-vars": [
42
35
  "error",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epicgames-ps/lib-pixelstreamingfrontend-ue5.5",
3
- "version": "1.2.4",
3
+ "version": "1.3.0",
4
4
  "description": "Frontend library for Unreal Engine 5.5 Pixel Streaming",
5
5
  "main": "dist/cjs/pixelstreamingfrontend.js",
6
6
  "module": "dist/esm/pixelstreamingfrontend.js",
@@ -22,18 +22,18 @@
22
22
  "@types/jest": "^29.5.14",
23
23
  "@types/webxr": "^0.5.21",
24
24
  "cspell": "^8.17.3",
25
- "eslint": "^9.20.0",
25
+ "eslint": "^9.39.0",
26
26
  "jest": "^29.7.0",
27
27
  "jest-environment-jsdom": "^29.7.0",
28
28
  "nodemon": "^3.1.9",
29
29
  "rimraf": "^6.0.1",
30
30
  "ts-jest": "^29.2.5",
31
31
  "typescript": "^5.7.3",
32
- "typescript-eslint": "^8.24.0",
32
+ "typescript-eslint": "8.57.2",
33
33
  "@types/node": "^22.14.0"
34
34
  },
35
35
  "dependencies": {
36
- "@epicgames-ps/lib-pixelstreamingcommon-ue5.5": "^0.3.1",
36
+ "@epicgames-ps/lib-pixelstreamingcommon-ue5.5": "^0.3.3",
37
37
  "sdp": "^3.2.0"
38
38
  },
39
39
  "repository": {
@@ -28,7 +28,7 @@ export class AFKController {
28
28
  this.pixelStreaming = pixelStreaming;
29
29
  this.onDismissAfk = onDismissAfk;
30
30
  this.onAFKTimedOutCallback = () => {
31
- console.log('AFK timed out, did you want to override this callback?');
31
+ Logger.Warning('AFK timed out, did you want to override this callback?');
32
32
  };
33
33
  }
34
34
 
@@ -120,7 +120,7 @@ export class AFKController {
120
120
  // reset our countDown interval accordingly
121
121
  this.countDownTimer = setInterval(() => {
122
122
  this.countDown--;
123
- if (this.countDown == 0) {
123
+ if (this.countDown === 0) {
124
124
  // The user failed to click so hide the overlay and disconnect them.
125
125
  this.pixelStreaming.dispatchEvent(new AfkTimedOutEvent());
126
126
  this.onAFKTimedOutCallback();
@@ -30,9 +30,11 @@ export class Flags {
30
30
  static UseCamera = 'UseCamera' as const;
31
31
  static KeyboardInput = 'KeyboardInput' as const;
32
32
  static MouseInput = 'MouseInput' as const;
33
+ static MouseDoubleClickAutoRelease = 'MouseDoubleClickAutoRelease' as const;
33
34
  static TouchInput = 'TouchInput' as const;
34
35
  static GamepadInput = 'GamepadInput' as const;
35
36
  static XRControllerInput = 'XRControllerInput' as const;
37
+ static AutoEnterVR = 'AutoEnterVR' as const;
36
38
  static WaitForStreamer = 'WaitForStreamer' as const;
37
39
  static HideUI = 'HideUI' as const;
38
40
  static EnableCaptureTimeExt = 'EnableCaptureTimeExt' as const;
@@ -63,6 +65,7 @@ export class NumericParameters {
63
65
  static MaxReconnectAttempts = 'MaxReconnectAttempts' as const;
64
66
  static StreamerAutoJoinInterval = 'StreamerAutoJoinInterval' as const;
65
67
  static KeepaliveDelay = 'KeepaliveDelay' as const;
68
+ static ViewportResScale = 'ViewportResScale' as const;
66
69
  }
67
70
 
68
71
  export type NumericParametersKeys = Exclude<keyof typeof NumericParameters, 'prototype'>;
@@ -191,11 +194,11 @@ export class Config {
191
194
  settings && Object.prototype.hasOwnProperty.call(settings, TextParameters.SignallingServerUrl)
192
195
  ? settings[TextParameters.SignallingServerUrl]
193
196
  : (location.protocol === 'https:' ? 'wss://' : 'ws://') +
194
- window.location.hostname +
195
- // for readability, we omit the port if it's 80
196
- (window.location.port === '80' || window.location.port === ''
197
- ? ''
198
- : `:${window.location.port}`),
197
+ window.location.hostname +
198
+ // for readability, we omit the port if it's 80
199
+ (window.location.port === '80' || window.location.port === ''
200
+ ? ''
201
+ : `:${window.location.port}`),
199
202
  useUrlParams
200
203
  )
201
204
  );
@@ -280,7 +283,7 @@ export class Config {
280
283
  'Preferred Quality',
281
284
  'The preferred quality of the stream (only applicable when using the SFU)',
282
285
  settings && Object.prototype.hasOwnProperty.call(settings, OptionParameters.PreferredQuality)
283
- ? settings[OptionParameters.PreferredQuality]!
286
+ ? settings[OptionParameters.PreferredQuality]
284
287
  : 'Default',
285
288
  ['Default'],
286
289
  useUrlParams
@@ -502,6 +505,19 @@ export class Config {
502
505
  )
503
506
  );
504
507
 
508
+ this.flags.set(
509
+ Flags.MouseDoubleClickAutoRelease,
510
+ new SettingFlag(
511
+ Flags.MouseDoubleClickAutoRelease,
512
+ 'Auto release after double-click',
513
+ 'After sending a MouseDouble message, also send a matching MouseUp so the streamer’s pressed-button state stays balanced. Disable to restore pre-fix behaviour if your project handles the doubleclick release itself.',
514
+ settings && Object.prototype.hasOwnProperty.call(settings, Flags.MouseDoubleClickAutoRelease)
515
+ ? settings[Flags.MouseDoubleClickAutoRelease]
516
+ : true,
517
+ useUrlParams
518
+ )
519
+ );
520
+
505
521
  this.flags.set(
506
522
  Flags.TouchInput,
507
523
  new SettingFlag(
@@ -541,6 +557,19 @@ export class Config {
541
557
  )
542
558
  );
543
559
 
560
+ this.flags.set(
561
+ Flags.AutoEnterVR,
562
+ new SettingFlag(
563
+ Flags.AutoEnterVR,
564
+ 'Auto enter VR',
565
+ 'When the video is ready and an immersive-vr session is supported, request the WebXR session automatically. May fail if the browser requires a user gesture to start a WebXR session.',
566
+ settings && Object.prototype.hasOwnProperty.call(settings, Flags.AutoEnterVR)
567
+ ? settings[Flags.AutoEnterVR]
568
+ : false,
569
+ useUrlParams
570
+ )
571
+ );
572
+
544
573
  this.flags.set(
545
574
  Flags.WaitForStreamer,
546
575
  new SettingFlag(
@@ -621,7 +650,7 @@ export class Config {
621
650
  0 /*min*/,
622
651
  999 /*max*/,
623
652
  settings &&
624
- Object.prototype.hasOwnProperty.call(settings, NumericParameters.MaxReconnectAttempts)
653
+ Object.prototype.hasOwnProperty.call(settings, NumericParameters.MaxReconnectAttempts)
625
654
  ? settings[NumericParameters.MaxReconnectAttempts]
626
655
  : 3 /*value*/,
627
656
  useUrlParams
@@ -772,7 +801,7 @@ export class Config {
772
801
  500 /*min*/,
773
802
  900000 /*max*/,
774
803
  settings &&
775
- Object.prototype.hasOwnProperty.call(settings, NumericParameters.StreamerAutoJoinInterval)
804
+ Object.prototype.hasOwnProperty.call(settings, NumericParameters.StreamerAutoJoinInterval)
776
805
  ? settings[NumericParameters.StreamerAutoJoinInterval]
777
806
  : 3000 /*value*/,
778
807
  useUrlParams
@@ -793,6 +822,21 @@ export class Config {
793
822
  useUrlParams
794
823
  )
795
824
  );
825
+
826
+ this.numericParameters.set(
827
+ NumericParameters.ViewportResScale,
828
+ new SettingNumber(
829
+ NumericParameters.ViewportResScale,
830
+ 'Viewport Resolution Scale',
831
+ 'Scale factor for viewport resolution when MatchViewportResolution is enabled. 1.0 = 100%, 0.5 = 50%, 2.0 = 200%.',
832
+ 0.1 /*min*/,
833
+ 3.0 /*max*/,
834
+ settings && Object.prototype.hasOwnProperty.call(settings, NumericParameters.ViewportResScale)
835
+ ? settings[NumericParameters.ViewportResScale]
836
+ : 1.0 /*value*/,
837
+ useUrlParams
838
+ )
839
+ );
796
840
  }
797
841
 
798
842
  /**
@@ -830,6 +874,14 @@ export class Config {
830
874
  }
831
875
  }
832
876
 
877
+ /**
878
+ * @param id The id of the numeric setting to check for.
879
+ * @returns True if the numeric setting is registered in this Config.
880
+ */
881
+ hasNumericSetting(id: NumericParametersIds): boolean {
882
+ return this.numericParameters.has(id);
883
+ }
884
+
833
885
  /**
834
886
  * @param id The id of the text setting we are interested in getting a value for.
835
887
  * @returns The text value stored in the parameter with the passed id.
@@ -895,7 +947,7 @@ export class Config {
895
947
  * @returns True if the flag is enabled.
896
948
  */
897
949
  isFlagEnabled(id: FlagsIds): boolean {
898
- return this.flags.get(id).flag as boolean;
950
+ return this.flags.get(id).flag;
899
951
  }
900
952
 
901
953
  /**
@@ -74,7 +74,7 @@ export class DataChannelController {
74
74
  */
75
75
  handleOnMessage(event: MessageEvent) {
76
76
  // Higher log level to prevent log spam with messages received
77
- Logger.Info(`Data Channel (${this.label}) message: ${event}`);
77
+ Logger.Info(`Data Channel (${this.label}) message: ${event.type}`);
78
78
  }
79
79
 
80
80
  /**
@@ -82,7 +82,7 @@ export class DataChannelController {
82
82
  * @param event - Error Event
83
83
  */
84
84
  handleOnError(event: Event) {
85
- Logger.Info(`Data Channel (${this.label}) error: ${event}`);
85
+ Logger.Info(`Data Channel (${this.label}) error: ${event.type}`);
86
86
  this.onError(this.dataChannel?.label, event);
87
87
  }
88
88
 
@@ -19,7 +19,7 @@ export class DataChannelSender {
19
19
  canSend(): boolean {
20
20
  return (
21
21
  this.dataChannelProvider.getDataChannelInstance().dataChannel !== undefined &&
22
- this.dataChannelProvider.getDataChannelInstance().dataChannel.readyState == 'open'
22
+ this.dataChannelProvider.getDataChannelInstance().dataChannel.readyState === 'open'
23
23
  );
24
24
  }
25
25
 
@@ -31,7 +31,7 @@ export class DataChannelSender {
31
31
  // reset the afk inactivity
32
32
  const dataChannelInstance = this.dataChannelProvider.getDataChannelInstance();
33
33
 
34
- if (dataChannelInstance.dataChannel.readyState == 'open') {
34
+ if (dataChannelInstance.dataChannel.readyState === 'open') {
35
35
  dataChannelInstance.dataChannel.send(data);
36
36
  Logger.Info(`Message Sent: ${new Uint8Array(data)}`);
37
37
  this.resetAfkWarningTimerOnDataSend();
@@ -131,8 +131,7 @@ export class GamepadController implements IInputController {
131
131
  private onGamepadDisconnected(event: GamepadEvent) {
132
132
  const gamepad = event.gamepad;
133
133
  const deletedController = this.controllers[gamepad.index];
134
- delete this.controllers[gamepad.index];
135
- this.controllers = this.controllers.filter((controller) => controller !== undefined);
134
+ this.controllers = this.controllers.filter((_, index) => index !== gamepad.index);
136
135
  if (deletedController.id !== undefined) {
137
136
  this.streamMessageController.toStreamerHandlers.get('GamepadDisconnected')([
138
137
  deletedController.id
@@ -171,10 +170,10 @@ export class GamepadController implements IInputController {
171
170
  const previousButton = controller.prevState.buttons[i];
172
171
  if (currentButton.pressed) {
173
172
  // press
174
- if (i == GamepadLayout.LeftTrigger) {
173
+ if ((i as GamepadLayout) === GamepadLayout.LeftTrigger) {
175
174
  // UEs left analog has a button index of 5
176
175
  toStreamerHandlers.get('GamepadAnalog')([controllerId, 5, currentButton.value]);
177
- } else if (i == GamepadLayout.RightTrigger) {
176
+ } else if ((i as GamepadLayout) === GamepadLayout.RightTrigger) {
178
177
  // UEs right analog has a button index of 6
179
178
  toStreamerHandlers.get('GamepadAnalog')([controllerId, 6, currentButton.value]);
180
179
  } else {
@@ -186,10 +185,10 @@ export class GamepadController implements IInputController {
186
185
  }
187
186
  } else if (!currentButton.pressed && previousButton.pressed) {
188
187
  // release
189
- if (i == GamepadLayout.LeftTrigger) {
188
+ if ((i as GamepadLayout) === GamepadLayout.LeftTrigger) {
190
189
  // UEs left analog has a button index of 5
191
190
  toStreamerHandlers.get('GamepadAnalog')([controllerId, 5, 0]);
192
- } else if (i == GamepadLayout.RightTrigger) {
191
+ } else if ((i as GamepadLayout) === GamepadLayout.RightTrigger) {
193
192
  // UEs right analog has a button index of 6
194
193
  toStreamerHandlers.get('GamepadAnalog')([controllerId, 6, 0]);
195
194
  } else {
@@ -56,7 +56,7 @@ export class InputClassesFactory {
56
56
  * register mouse events based on a control type
57
57
  * @param controlScheme - if the mouse is either hovering or locked
58
58
  */
59
- registerMouse(controlScheme: ControlSchemeType) {
59
+ registerMouse(controlScheme: ControlSchemeType, config: Config) {
60
60
  Logger.Info('Register Mouse Events');
61
61
  let mouseController: MouseController;
62
62
  if (controlScheme == ControlSchemeType.HoveringMouse) {
@@ -64,14 +64,16 @@ export class InputClassesFactory {
64
64
  this.toStreamerMessagesProvider,
65
65
  this.videoElementProvider,
66
66
  this.coordinateConverter,
67
- this.activeKeys
67
+ this.activeKeys,
68
+ config
68
69
  );
69
70
  } else {
70
71
  mouseController = new MouseControllerLocked(
71
72
  this.toStreamerMessagesProvider,
72
73
  this.videoElementProvider,
73
74
  this.coordinateConverter,
74
- this.activeKeys
75
+ this.activeKeys,
76
+ config
75
77
  );
76
78
  }
77
79
 
@@ -110,5 +110,17 @@ export const CodeToKeyCode: ICodeToKeyCode = Object.freeze({
110
110
  PageDown: 34,
111
111
  Insert: 45,
112
112
  Delete: 46,
113
- ContextMenu: 93
113
+ ContextMenu: 93,
114
+ // macOS Command and Windows Meta keys. The UE side maps key codes 91/92
115
+ // to LeftWindowKey/RightWindowKey (currently routed to EKeys::Invalid in
116
+ // stock UE — Epic-internal ticket UE-228795 enables them). Sending the
117
+ // codes from the frontend is harmless when UE has no binding and lets
118
+ // applications that patch UE handle Cmd/Win shortcuts.
119
+ MetaLeft: 91,
120
+ MetaRight: 92,
121
+ // Legacy KeyboardEvent.code values some browsers historically emitted
122
+ // for the same physical keys. Keep them mapped so we don't drop input
123
+ // on older browsers.
124
+ OSLeft: 91,
125
+ OSRight: 92
114
126
  });
@@ -50,7 +50,7 @@ export class KeyboardController implements IInputController {
50
50
  }
51
51
 
52
52
  const toStreamerHandlers = this.streamMessageController.toStreamerHandlers;
53
- toStreamerHandlers.get('KeyDown')?.([this.getKeycode(keyboardEvent)!, keyboardEvent.repeat ? 1 : 0]);
53
+ toStreamerHandlers.get('KeyDown')?.([this.getKeycode(keyboardEvent), keyboardEvent.repeat ? 1 : 0]);
54
54
  const activeKeys = this.activeKeys.getActiveKeys();
55
55
  activeKeys.push(keyCode);
56
56
 
@@ -130,6 +130,16 @@ export class KeyboardController implements IInputController {
130
130
  return SpecialKeyCodes.rightControl;
131
131
  } else if (keyboardEvent.keyCode === SpecialKeyCodes.alt && keyboardEvent.code === 'AltRight') {
132
132
  return SpecialKeyCodes.rightAlt;
133
+ } else if (keyboardEvent.code === 'MetaLeft' || keyboardEvent.code === 'OSLeft') {
134
+ // Browsers disagree on the legacy keyCode for the left Cmd/Win
135
+ // key (Chrome/Safari report 91, Firefox on Mac reports 224).
136
+ // Normalize using `code`. UE LeftWindowKey is 91.
137
+ return CodeToKeyCode['MetaLeft'];
138
+ } else if (keyboardEvent.code === 'MetaRight' || keyboardEvent.code === 'OSRight') {
139
+ // Right Cmd/Win has the same browser disagreement, and on
140
+ // Chrome/Safari it shares keyCode 93 with the ContextMenu key.
141
+ // Normalize to 92 (UE RightWindowKey).
142
+ return CodeToKeyCode['MetaRight'];
133
143
  } else {
134
144
  return keyboardEvent.keyCode;
135
145
  }