@epicgames-ps/lib-pixelstreamingfrontend-ue5.5 0.1.4 → 0.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.
- package/.eslintrc.js +1 -1
- package/.prettierrc.json +1 -0
- package/dist/commonjs/AFK/AFKController.js +110 -0
- package/dist/commonjs/AFK/AFKController.js.map +1 -0
- package/dist/commonjs/Config/Config.js +560 -0
- package/dist/commonjs/Config/Config.js.map +1 -0
- package/dist/commonjs/Config/SettingBase.js +99 -0
- package/dist/commonjs/Config/SettingBase.js.map +1 -0
- package/dist/commonjs/Config/SettingFlag.js +50 -0
- package/dist/commonjs/Config/SettingFlag.js.map +1 -0
- package/dist/commonjs/Config/SettingNumber.js +84 -0
- package/dist/commonjs/Config/SettingNumber.js.map +1 -0
- package/dist/commonjs/Config/SettingOption.js +85 -0
- package/dist/commonjs/Config/SettingOption.js.map +1 -0
- package/dist/commonjs/Config/SettingText.js +43 -0
- package/dist/commonjs/Config/SettingText.js.map +1 -0
- package/dist/commonjs/DataChannel/DataChannelController.js +107 -0
- package/dist/commonjs/DataChannel/DataChannelController.js.map +1 -0
- package/dist/commonjs/DataChannel/DataChannelLatencyTestController.js +95 -0
- package/dist/commonjs/DataChannel/DataChannelLatencyTestController.js.map +1 -0
- package/dist/commonjs/DataChannel/DataChannelLatencyTestResults.js +19 -0
- package/dist/commonjs/DataChannel/DataChannelLatencyTestResults.js.map +1 -0
- package/dist/commonjs/DataChannel/DataChannelSender.js +44 -0
- package/dist/commonjs/DataChannel/DataChannelSender.js.map +1 -0
- package/dist/commonjs/DataChannel/InitialSettings.js +42 -0
- package/dist/commonjs/DataChannel/InitialSettings.js.map +1 -0
- package/dist/commonjs/DataChannel/LatencyTestResults.js +61 -0
- package/dist/commonjs/DataChannel/LatencyTestResults.js.map +1 -0
- package/dist/commonjs/FreezeFrame/FreezeFrame.js +94 -0
- package/dist/commonjs/FreezeFrame/FreezeFrame.js.map +1 -0
- package/dist/commonjs/FreezeFrame/FreezeFrameController.js +96 -0
- package/dist/commonjs/FreezeFrame/FreezeFrameController.js.map +1 -0
- package/dist/commonjs/Inputs/GamepadController.js +189 -0
- package/dist/commonjs/Inputs/GamepadController.js.map +1 -0
- package/dist/commonjs/Inputs/GamepadTypes.js +22 -0
- package/dist/commonjs/Inputs/GamepadTypes.js.map +1 -0
- package/dist/commonjs/Inputs/IInputController.js +3 -0
- package/dist/commonjs/Inputs/IInputController.js.map +1 -0
- package/dist/commonjs/Inputs/InputClassesFactory.js +97 -0
- package/dist/commonjs/Inputs/InputClassesFactory.js.map +1 -0
- package/dist/commonjs/Inputs/KeyCodes.js +113 -0
- package/dist/commonjs/Inputs/KeyCodes.js.map +1 -0
- package/dist/commonjs/Inputs/KeyboardController.js +138 -0
- package/dist/commonjs/Inputs/KeyboardController.js.map +1 -0
- package/dist/commonjs/Inputs/MouseButtons.js +29 -0
- package/dist/commonjs/Inputs/MouseButtons.js.map +1 -0
- package/dist/commonjs/Inputs/MouseController.js +98 -0
- package/dist/commonjs/Inputs/MouseController.js.map +1 -0
- package/dist/commonjs/Inputs/MouseControllerHovering.js +94 -0
- package/dist/commonjs/Inputs/MouseControllerHovering.js.map +1 -0
- package/dist/commonjs/Inputs/MouseControllerLocked.js +154 -0
- package/dist/commonjs/Inputs/MouseControllerLocked.js.map +1 -0
- package/dist/commonjs/Inputs/SpecialKeyCodes.js +20 -0
- package/dist/commonjs/Inputs/SpecialKeyCodes.js.map +1 -0
- package/dist/commonjs/Inputs/TouchController.js +124 -0
- package/dist/commonjs/Inputs/TouchController.js.map +1 -0
- package/dist/commonjs/Inputs/TouchControllerFake.js +92 -0
- package/dist/commonjs/Inputs/TouchControllerFake.js.map +1 -0
- package/dist/commonjs/Inputs/XRGamepadController.js +125 -0
- package/dist/commonjs/Inputs/XRGamepadController.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/AggregatedStats.js +253 -0
- package/dist/commonjs/PeerConnectionController/AggregatedStats.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/CandidatePairStats.js +11 -0
- package/dist/commonjs/PeerConnectionController/CandidatePairStats.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/CandidateStat.js +11 -0
- package/dist/commonjs/PeerConnectionController/CandidateStat.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/CodecStats.js +11 -0
- package/dist/commonjs/PeerConnectionController/CodecStats.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/DataChannelStats.js +11 -0
- package/dist/commonjs/PeerConnectionController/DataChannelStats.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/InboundRTPStats.js +23 -0
- package/dist/commonjs/PeerConnectionController/InboundRTPStats.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/InboundTrackStats.js +11 -0
- package/dist/commonjs/PeerConnectionController/InboundTrackStats.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/OutBoundRTPStats.js +17 -0
- package/dist/commonjs/PeerConnectionController/OutBoundRTPStats.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/PeerConnectionController.js +585 -0
- package/dist/commonjs/PeerConnectionController/PeerConnectionController.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/SessionStats.js +11 -0
- package/dist/commonjs/PeerConnectionController/SessionStats.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/StreamStats.js +11 -0
- package/dist/commonjs/PeerConnectionController/StreamStats.js.map +1 -0
- package/dist/commonjs/PixelStreaming/PixelStreaming.js +608 -0
- package/dist/commonjs/PixelStreaming/PixelStreaming.js.map +1 -0
- package/dist/commonjs/UI/OnScreenKeyboard.js +83 -0
- package/dist/commonjs/UI/OnScreenKeyboard.js.map +1 -0
- package/dist/commonjs/UeInstanceMessage/ResponseController.js +39 -0
- package/dist/commonjs/UeInstanceMessage/ResponseController.js.map +1 -0
- package/dist/commonjs/UeInstanceMessage/SendMessageController.js +121 -0
- package/dist/commonjs/UeInstanceMessage/SendMessageController.js.map +1 -0
- package/dist/commonjs/UeInstanceMessage/StreamMessageController.js +211 -0
- package/dist/commonjs/UeInstanceMessage/StreamMessageController.js.map +1 -0
- package/dist/commonjs/UeInstanceMessage/ToStreamerMessagesController.js +50 -0
- package/dist/commonjs/UeInstanceMessage/ToStreamerMessagesController.js.map +1 -0
- package/dist/commonjs/Util/EventEmitter.js +387 -0
- package/dist/commonjs/Util/EventEmitter.js.map +1 -0
- package/dist/commonjs/Util/FileUtil.js +109 -0
- package/dist/commonjs/Util/FileUtil.js.map +1 -0
- package/dist/commonjs/Util/IURLSearchParams.js +26 -0
- package/dist/commonjs/Util/IURLSearchParams.js.map +1 -0
- package/dist/commonjs/Util/InputCoordTranslator.js +50 -0
- package/dist/commonjs/Util/InputCoordTranslator.js.map +1 -0
- package/dist/commonjs/Util/RTCUtils.js +41 -0
- package/dist/commonjs/Util/RTCUtils.js.map +1 -0
- package/dist/commonjs/VideoPlayer/StreamController.js +68 -0
- package/dist/commonjs/VideoPlayer/StreamController.js.map +1 -0
- package/dist/commonjs/VideoPlayer/VideoPlayer.js +178 -0
- package/dist/commonjs/VideoPlayer/VideoPlayer.js.map +1 -0
- package/dist/commonjs/WebRtcPlayer/WebRtcPlayerController.js +1224 -0
- package/dist/commonjs/WebRtcPlayer/WebRtcPlayerController.js.map +1 -0
- package/dist/commonjs/WebXR/WebXRController.js +361 -0
- package/dist/commonjs/WebXR/WebXRController.js.map +1 -0
- package/dist/commonjs/pixelstreamingfrontend.js +71 -0
- package/dist/commonjs/pixelstreamingfrontend.js.map +1 -0
- package/dist/esm/AFK/AFKController.js +106 -0
- package/dist/esm/AFK/AFKController.js.map +1 -0
- package/dist/esm/Config/Config.js +552 -0
- package/dist/esm/Config/Config.js.map +1 -0
- package/dist/esm/Config/SettingBase.js +95 -0
- package/dist/esm/Config/SettingBase.js.map +1 -0
- package/dist/esm/Config/SettingFlag.js +46 -0
- package/dist/esm/Config/SettingFlag.js.map +1 -0
- package/dist/esm/Config/SettingNumber.js +80 -0
- package/dist/esm/Config/SettingNumber.js.map +1 -0
- package/dist/esm/Config/SettingOption.js +81 -0
- package/dist/esm/Config/SettingOption.js.map +1 -0
- package/dist/esm/Config/SettingText.js +39 -0
- package/dist/esm/Config/SettingText.js.map +1 -0
- package/dist/esm/DataChannel/DataChannelController.js +103 -0
- package/dist/esm/DataChannel/DataChannelController.js.map +1 -0
- package/dist/esm/DataChannel/DataChannelLatencyTestController.js +91 -0
- package/dist/esm/DataChannel/DataChannelLatencyTestController.js.map +1 -0
- package/dist/esm/DataChannel/DataChannelLatencyTestResults.js +15 -0
- package/dist/esm/DataChannel/DataChannelLatencyTestResults.js.map +1 -0
- package/dist/esm/DataChannel/DataChannelSender.js +40 -0
- package/dist/esm/DataChannel/DataChannelSender.js.map +1 -0
- package/dist/esm/DataChannel/InitialSettings.js +35 -0
- package/dist/esm/DataChannel/InitialSettings.js.map +1 -0
- package/dist/esm/DataChannel/LatencyTestResults.js +57 -0
- package/dist/esm/DataChannel/LatencyTestResults.js.map +1 -0
- package/dist/esm/FreezeFrame/FreezeFrame.js +90 -0
- package/dist/esm/FreezeFrame/FreezeFrame.js.map +1 -0
- package/dist/esm/FreezeFrame/FreezeFrameController.js +92 -0
- package/dist/esm/FreezeFrame/FreezeFrameController.js.map +1 -0
- package/dist/esm/Inputs/GamepadController.js +185 -0
- package/dist/esm/Inputs/GamepadController.js.map +1 -0
- package/dist/esm/Inputs/GamepadTypes.js +18 -0
- package/dist/esm/Inputs/GamepadTypes.js.map +1 -0
- package/dist/esm/Inputs/IInputController.js +2 -0
- package/dist/esm/Inputs/IInputController.js.map +1 -0
- package/dist/esm/Inputs/InputClassesFactory.js +92 -0
- package/dist/esm/Inputs/InputClassesFactory.js.map +1 -0
- package/dist/esm/Inputs/KeyCodes.js +110 -0
- package/dist/esm/Inputs/KeyCodes.js.map +1 -0
- package/dist/esm/Inputs/KeyboardController.js +134 -0
- package/dist/esm/Inputs/KeyboardController.js.map +1 -0
- package/dist/esm/Inputs/MouseButtons.js +24 -0
- package/dist/esm/Inputs/MouseButtons.js.map +1 -0
- package/dist/esm/Inputs/MouseController.js +94 -0
- package/dist/esm/Inputs/MouseController.js.map +1 -0
- package/dist/esm/Inputs/MouseControllerHovering.js +90 -0
- package/dist/esm/Inputs/MouseControllerHovering.js.map +1 -0
- package/dist/esm/Inputs/MouseControllerLocked.js +150 -0
- package/dist/esm/Inputs/MouseControllerLocked.js.map +1 -0
- package/dist/esm/Inputs/SpecialKeyCodes.js +16 -0
- package/dist/esm/Inputs/SpecialKeyCodes.js.map +1 -0
- package/dist/esm/Inputs/TouchController.js +120 -0
- package/dist/esm/Inputs/TouchController.js.map +1 -0
- package/dist/esm/Inputs/TouchControllerFake.js +88 -0
- package/dist/esm/Inputs/TouchControllerFake.js.map +1 -0
- package/dist/esm/Inputs/XRGamepadController.js +121 -0
- package/dist/esm/Inputs/XRGamepadController.js.map +1 -0
- package/dist/esm/PeerConnectionController/AggregatedStats.js +249 -0
- package/dist/esm/PeerConnectionController/AggregatedStats.js.map +1 -0
- package/dist/esm/PeerConnectionController/CandidatePairStats.js +7 -0
- package/dist/esm/PeerConnectionController/CandidatePairStats.js.map +1 -0
- package/dist/esm/PeerConnectionController/CandidateStat.js +7 -0
- package/dist/esm/PeerConnectionController/CandidateStat.js.map +1 -0
- package/dist/esm/PeerConnectionController/CodecStats.js +7 -0
- package/dist/esm/PeerConnectionController/CodecStats.js.map +1 -0
- package/dist/esm/PeerConnectionController/DataChannelStats.js +7 -0
- package/dist/esm/PeerConnectionController/DataChannelStats.js.map +1 -0
- package/dist/esm/PeerConnectionController/InboundRTPStats.js +17 -0
- package/dist/esm/PeerConnectionController/InboundRTPStats.js.map +1 -0
- package/dist/esm/PeerConnectionController/InboundTrackStats.js +7 -0
- package/dist/esm/PeerConnectionController/InboundTrackStats.js.map +1 -0
- package/dist/esm/PeerConnectionController/OutBoundRTPStats.js +12 -0
- package/dist/esm/PeerConnectionController/OutBoundRTPStats.js.map +1 -0
- package/dist/esm/PeerConnectionController/PeerConnectionController.js +581 -0
- package/dist/esm/PeerConnectionController/PeerConnectionController.js.map +1 -0
- package/dist/esm/PeerConnectionController/SessionStats.js +7 -0
- package/dist/esm/PeerConnectionController/SessionStats.js.map +1 -0
- package/dist/esm/PeerConnectionController/StreamStats.js +7 -0
- package/dist/esm/PeerConnectionController/StreamStats.js.map +1 -0
- package/dist/esm/PixelStreaming/PixelStreaming.js +604 -0
- package/dist/esm/PixelStreaming/PixelStreaming.js.map +1 -0
- package/dist/esm/UI/OnScreenKeyboard.js +79 -0
- package/dist/esm/UI/OnScreenKeyboard.js.map +1 -0
- package/dist/esm/UeInstanceMessage/ResponseController.js +35 -0
- package/dist/esm/UeInstanceMessage/ResponseController.js.map +1 -0
- package/dist/esm/UeInstanceMessage/SendMessageController.js +117 -0
- package/dist/esm/UeInstanceMessage/SendMessageController.js.map +1 -0
- package/dist/esm/UeInstanceMessage/StreamMessageController.js +206 -0
- package/dist/esm/UeInstanceMessage/StreamMessageController.js.map +1 -0
- package/dist/esm/UeInstanceMessage/ToStreamerMessagesController.js +46 -0
- package/dist/esm/UeInstanceMessage/ToStreamerMessagesController.js.map +1 -0
- package/dist/esm/Util/EventEmitter.js +346 -0
- package/dist/esm/Util/EventEmitter.js.map +1 -0
- package/dist/esm/Util/FileUtil.js +104 -0
- package/dist/esm/Util/FileUtil.js.map +1 -0
- package/dist/esm/Util/IURLSearchParams.js +22 -0
- package/dist/esm/Util/IURLSearchParams.js.map +1 -0
- package/dist/esm/Util/InputCoordTranslator.js +46 -0
- package/dist/esm/Util/InputCoordTranslator.js.map +1 -0
- package/dist/esm/Util/RTCUtils.js +37 -0
- package/dist/esm/Util/RTCUtils.js.map +1 -0
- package/dist/esm/VideoPlayer/StreamController.js +64 -0
- package/dist/esm/VideoPlayer/StreamController.js.map +1 -0
- package/dist/esm/VideoPlayer/VideoPlayer.js +174 -0
- package/dist/esm/VideoPlayer/VideoPlayer.js.map +1 -0
- package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js +1220 -0
- package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js.map +1 -0
- package/dist/esm/WebXR/WebXRController.js +357 -0
- package/dist/esm/WebXR/WebXRController.js.map +1 -0
- package/dist/esm/pixelstreamingfrontend.js +25 -0
- package/dist/esm/pixelstreamingfrontend.js.map +1 -0
- package/{types → dist/types}/AFK/AFKController.d.ts +38 -39
- package/{types → dist/types}/Config/Config.d.ts +220 -219
- package/{types → dist/types}/Config/SettingBase.d.ts +43 -30
- package/{types → dist/types}/Config/SettingFlag.d.ts +24 -33
- package/{types → dist/types}/Config/SettingNumber.d.ts +41 -45
- package/{types → dist/types}/Config/SettingOption.d.ts +41 -43
- package/{types → dist/types}/Config/SettingText.d.ts +21 -29
- package/{types → dist/types}/DataChannel/DataChannelController.d.ts +59 -59
- package/{types → dist/types}/DataChannel/DataChannelLatencyTestController.d.ts +25 -26
- package/{types → dist/types}/DataChannel/DataChannelLatencyTestResults.d.ts +46 -46
- package/{types → dist/types}/DataChannel/DataChannelSender.d.ts +21 -21
- package/{types → dist/types}/DataChannel/InitialSettings.d.ts +44 -44
- package/{types → dist/types}/DataChannel/LatencyTestResults.d.ts +31 -31
- package/{types → dist/types}/FreezeFrame/FreezeFrame.d.ts +36 -36
- package/{types → dist/types}/FreezeFrame/FreezeFrameController.d.ts +37 -37
- package/dist/types/Inputs/GamepadController.d.ts +61 -0
- package/dist/types/Inputs/GamepadTypes.d.ts +15 -0
- package/dist/types/Inputs/IInputController.d.ts +16 -0
- package/{types → dist/types}/Inputs/InputClassesFactory.d.ts +53 -54
- package/dist/types/Inputs/KeyCodes.d.ts +5 -0
- package/dist/types/Inputs/KeyboardController.d.ts +34 -0
- package/{types → dist/types}/Inputs/MouseButtons.d.ts +22 -22
- package/dist/types/Inputs/MouseController.d.ts +40 -0
- package/dist/types/Inputs/MouseControllerHovering.d.ts +26 -0
- package/dist/types/Inputs/MouseControllerLocked.d.ts +31 -0
- package/{types → dist/types}/Inputs/SpecialKeyCodes.d.ts +14 -14
- package/dist/types/Inputs/TouchController.d.ts +28 -0
- package/dist/types/Inputs/TouchControllerFake.d.ts +29 -0
- package/{types → dist/types}/Inputs/XRGamepadController.d.ts +15 -22
- package/{types → dist/types}/PeerConnectionController/AggregatedStats.d.ts +82 -84
- package/{types → dist/types}/PeerConnectionController/CandidatePairStats.d.ts +22 -22
- package/{types → dist/types}/PeerConnectionController/CandidateStat.d.ts +13 -13
- package/{types → dist/types}/PeerConnectionController/CodecStats.d.ts +14 -14
- package/{types → dist/types}/PeerConnectionController/DataChannelStats.d.ts +15 -15
- package/{types → dist/types}/PeerConnectionController/InboundRTPStats.d.ts +141 -141
- package/{types → dist/types}/PeerConnectionController/InboundTrackStats.d.ts +32 -32
- package/{types → dist/types}/PeerConnectionController/OutBoundRTPStats.d.ts +23 -23
- package/{types → dist/types}/PeerConnectionController/PeerConnectionController.d.ts +143 -140
- package/{types → dist/types}/PeerConnectionController/SessionStats.d.ts +8 -8
- package/{types → dist/types}/PeerConnectionController/StreamStats.d.ts +9 -9
- package/{types → dist/types}/PixelStreaming/PixelStreaming.d.ts +271 -259
- package/{types → dist/types}/UI/OnScreenKeyboard.d.ts +30 -30
- package/{types → dist/types}/UeInstanceMessage/ResponseController.d.ts +19 -19
- package/{types → dist/types}/UeInstanceMessage/SendMessageController.d.ts +18 -18
- package/{types → dist/types}/UeInstanceMessage/StreamMessageController.d.ts +29 -29
- package/{types → dist/types}/UeInstanceMessage/ToStreamerMessagesController.d.ts +32 -32
- package/{types → dist/types}/Util/EventEmitter.d.ts +429 -429
- package/{types → dist/types}/Util/FileUtil.d.ts +32 -32
- package/dist/types/Util/IURLSearchParams.d.ts +9 -0
- package/dist/types/Util/InputCoordTranslator.d.ts +29 -0
- package/{types → dist/types}/Util/RTCUtils.d.ts +8 -8
- package/{types → dist/types}/VideoPlayer/StreamController.d.ts +22 -24
- package/{types → dist/types}/VideoPlayer/VideoPlayer.d.ts +78 -78
- package/{types → dist/types}/WebRtcPlayer/WebRtcPlayerController.d.ts +379 -377
- package/{types → dist/types}/WebXR/WebXRController.d.ts +42 -42
- package/{types → dist/types}/pixelstreamingfrontend.d.ts +23 -22
- package/package.json +14 -17
- package/readme.md +9 -1
- package/src/AFK/AFKController.ts +10 -32
- package/src/Config/Config.ts +232 -205
- package/src/Config/SettingBase.ts +61 -2
- package/src/Config/SettingFlag.ts +10 -48
- package/src/Config/SettingNumber.ts +23 -33
- package/src/Config/SettingOption.ts +41 -56
- package/src/Config/SettingText.ts +9 -37
- package/src/DataChannel/DataChannelController.ts +6 -26
- package/src/DataChannel/DataChannelLatencyTestController.ts +43 -38
- package/src/DataChannel/DataChannelLatencyTestResults.ts +8 -10
- package/src/DataChannel/DataChannelSender.ts +5 -15
- package/src/DataChannel/LatencyTestResults.ts +5 -15
- package/src/FreezeFrame/FreezeFrame.ts +7 -19
- package/src/FreezeFrame/FreezeFrameController.ts +3 -14
- package/src/Inputs/GamepadController.ts +123 -221
- package/src/Inputs/GamepadTypes.ts +23 -0
- package/src/Inputs/IInputController.ts +17 -0
- package/src/Inputs/InputClassesFactory.ts +38 -45
- package/src/Inputs/KeyCodes.ts +114 -0
- package/src/Inputs/KeyboardController.ts +49 -232
- package/src/Inputs/MouseController.ts +71 -297
- package/src/Inputs/MouseControllerHovering.ts +118 -0
- package/src/Inputs/MouseControllerLocked.ts +194 -0
- package/src/Inputs/TouchController.ts +49 -105
- package/src/Inputs/TouchControllerFake.ts +132 -0
- package/src/Inputs/XRGamepadController.ts +35 -44
- package/src/PeerConnectionController/AggregatedStats.ts +46 -75
- package/src/PeerConnectionController/CandidatePairStats.ts +1 -1
- package/src/PeerConnectionController/CandidateStat.ts +1 -1
- package/src/PeerConnectionController/PeerConnectionController.ts +214 -170
- package/src/PixelStreaming/PixelStreaming.ts +174 -226
- package/src/UI/OnScreenKeyboard.ts +14 -9
- package/src/UeInstanceMessage/ResponseController.ts +6 -15
- package/src/UeInstanceMessage/SendMessageController.ts +16 -18
- package/src/UeInstanceMessage/StreamMessageController.ts +3 -12
- package/src/UeInstanceMessage/ToStreamerMessagesController.ts +3 -9
- package/src/Util/EventEmitter.ts +17 -22
- package/src/Util/FileUtil.ts +11 -34
- package/src/Util/IURLSearchParams.ts +25 -0
- package/src/Util/InputCoordTranslator.ts +73 -0
- package/src/Util/RTCUtils.ts +23 -15
- package/src/VideoPlayer/StreamController.ts +6 -23
- package/src/VideoPlayer/VideoPlayer.ts +9 -30
- package/src/WebRtcPlayer/WebRtcPlayerController.ts +328 -690
- package/src/WebXR/WebXRController.ts +82 -94
- package/src/pixelstreamingfrontend.ts +8 -6
- package/tsconfig.cjs.json +9 -0
- package/tsconfig.esm.json +7 -0
- package/tsconfig.json +4 -6
- package/dist/lib-pixelstreamingfrontend.esm.js +0 -1
- package/dist/lib-pixelstreamingfrontend.js +0 -1
- package/src/Inputs/FakeTouchController.ts +0 -199
- package/src/Inputs/HoveringMouseEvents.ts +0 -192
- package/src/Inputs/IMouseEvents.ts +0 -64
- package/src/Inputs/ITouchController.ts +0 -29
- package/src/Inputs/LockedMouseEvents.ts +0 -287
- package/src/Util/CoordinateConverter.ts +0 -290
- package/src/Util/EventListenerTracker.ts +0 -29
- package/types/Inputs/FakeTouchController.d.ts +0 -61
- package/types/Inputs/GamepadController.d.ts +0 -85
- package/types/Inputs/GamepadTypes.d.ts +0 -8
- package/types/Inputs/HoveringMouseEvents.d.ts +0 -56
- package/types/Inputs/IMouseEvents.d.ts +0 -53
- package/types/Inputs/ITouchController.d.ts +0 -24
- package/types/Inputs/KeyboardController.d.ts +0 -62
- package/types/Inputs/LockedMouseEvents.d.ts +0 -80
- package/types/Inputs/MouseController.d.ts +0 -75
- package/types/Inputs/TouchController.d.ts +0 -53
- package/types/Util/CoordinateConverter.d.ts +0 -100
- package/types/Util/EventListenerTracker.d.ts +0 -14
- package/webpack.common.js +0 -35
- package/webpack.dev.js +0 -35
- package/webpack.prod.js +0 -36
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An event that is emitted when AFK disconnect is about to happen.
|
|
3
|
+
* Can be cancelled by calling the callback function provided as part of the event.
|
|
4
|
+
*/
|
|
5
|
+
export class AfkWarningActivateEvent extends Event {
|
|
6
|
+
constructor(data) {
|
|
7
|
+
super('afkWarningActivate');
|
|
8
|
+
this.data = data;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* An event that is emitted when the AFK disconnect countdown is updated.
|
|
13
|
+
*/
|
|
14
|
+
export class AfkWarningUpdateEvent extends Event {
|
|
15
|
+
constructor(data) {
|
|
16
|
+
super('afkWarningUpdate');
|
|
17
|
+
this.data = data;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* An event that is emitted when AFK warning is deactivated.
|
|
22
|
+
*/
|
|
23
|
+
export class AfkWarningDeactivateEvent extends Event {
|
|
24
|
+
constructor() {
|
|
25
|
+
super('afkWarningDeactivate');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* An event that is emitted when AFK countdown reaches 0 and the user is disconnected.
|
|
30
|
+
*/
|
|
31
|
+
export class AfkTimedOutEvent extends Event {
|
|
32
|
+
constructor() {
|
|
33
|
+
super('afkTimedOut');
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* An event that is emitted when we receive new video quality value.
|
|
38
|
+
*/
|
|
39
|
+
export class VideoEncoderAvgQPEvent extends Event {
|
|
40
|
+
constructor(data) {
|
|
41
|
+
super('videoEncoderAvgQP');
|
|
42
|
+
this.data = data;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* An event that is emitted after a WebRtc connection has been negotiated.
|
|
47
|
+
*/
|
|
48
|
+
export class WebRtcSdpEvent extends Event {
|
|
49
|
+
constructor() {
|
|
50
|
+
super('webRtcSdp');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* An event that is emitted when auto connecting.
|
|
55
|
+
*/
|
|
56
|
+
export class WebRtcAutoConnectEvent extends Event {
|
|
57
|
+
constructor() {
|
|
58
|
+
super('webRtcAutoConnect');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* An event that is emitted when sending a WebRtc offer.
|
|
63
|
+
*/
|
|
64
|
+
export class WebRtcConnectingEvent extends Event {
|
|
65
|
+
constructor() {
|
|
66
|
+
super('webRtcConnecting');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* An event that is emitted when WebRtc connection has been established.
|
|
71
|
+
*/
|
|
72
|
+
export class WebRtcConnectedEvent extends Event {
|
|
73
|
+
constructor() {
|
|
74
|
+
super('webRtcConnected');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* An event that is emitted if WebRtc connection has failed.
|
|
79
|
+
*/
|
|
80
|
+
export class WebRtcFailedEvent extends Event {
|
|
81
|
+
constructor() {
|
|
82
|
+
super('webRtcFailed');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* An event that is emitted if WebRtc connection is disconnected.
|
|
87
|
+
*/
|
|
88
|
+
export class WebRtcDisconnectedEvent extends Event {
|
|
89
|
+
constructor(data) {
|
|
90
|
+
super('webRtcDisconnected');
|
|
91
|
+
this.data = data;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* An event that is emitted when RTCDataChannel is opened.
|
|
96
|
+
*/
|
|
97
|
+
export class DataChannelOpenEvent extends Event {
|
|
98
|
+
constructor(data) {
|
|
99
|
+
super('dataChannelOpen');
|
|
100
|
+
this.data = data;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* An event that is emitted when RTCDataChannel is closed.
|
|
105
|
+
*/
|
|
106
|
+
export class DataChannelCloseEvent extends Event {
|
|
107
|
+
constructor(data) {
|
|
108
|
+
super('dataChannelClose');
|
|
109
|
+
this.data = data;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* An event that is emitted on RTCDataChannel errors.
|
|
114
|
+
*/
|
|
115
|
+
export class DataChannelErrorEvent extends Event {
|
|
116
|
+
constructor(data) {
|
|
117
|
+
super('dataChannelError');
|
|
118
|
+
this.data = data;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* An event that is emitted when the video stream has been initialized.
|
|
123
|
+
*/
|
|
124
|
+
export class VideoInitializedEvent extends Event {
|
|
125
|
+
constructor() {
|
|
126
|
+
super('videoInitialized');
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* An event that is emitted when video stream loading starts.
|
|
131
|
+
*/
|
|
132
|
+
export class StreamLoadingEvent extends Event {
|
|
133
|
+
constructor() {
|
|
134
|
+
super('streamLoading');
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* An event that is emitted when video stream loading has finished.
|
|
139
|
+
*/
|
|
140
|
+
export class StreamPreConnectEvent extends Event {
|
|
141
|
+
constructor() {
|
|
142
|
+
super('streamConnect');
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* An event that is emitted when video stream has stopped.
|
|
147
|
+
*/
|
|
148
|
+
export class StreamPreDisconnectEvent extends Event {
|
|
149
|
+
constructor() {
|
|
150
|
+
super('streamDisconnect');
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* An event that is emitted when video stream is reconnecting.
|
|
155
|
+
*/
|
|
156
|
+
export class StreamReconnectEvent extends Event {
|
|
157
|
+
constructor() {
|
|
158
|
+
super('streamReconnect');
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* An event that is emitted if there are errors loading the video stream.
|
|
163
|
+
*/
|
|
164
|
+
export class PlayStreamErrorEvent extends Event {
|
|
165
|
+
constructor(data) {
|
|
166
|
+
super('playStreamError');
|
|
167
|
+
this.data = data;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* An event that is emitted before trying to start video playback.
|
|
172
|
+
*/
|
|
173
|
+
export class PlayStreamEvent extends Event {
|
|
174
|
+
constructor() {
|
|
175
|
+
super('playStream');
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* An event that is emitted if the browser rejects video playback. Can happen for example if
|
|
180
|
+
* video auto-play without user interaction is refused by the browser.
|
|
181
|
+
*/
|
|
182
|
+
export class PlayStreamRejectedEvent extends Event {
|
|
183
|
+
constructor(data) {
|
|
184
|
+
super('playStreamRejected');
|
|
185
|
+
this.data = data;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* An event that is emitted when receiving a full FreezeFrame image from UE.
|
|
190
|
+
*/
|
|
191
|
+
export class LoadFreezeFrameEvent extends Event {
|
|
192
|
+
constructor(data) {
|
|
193
|
+
super('loadFreezeFrame');
|
|
194
|
+
this.data = data;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* An event that is emitted when receiving UnfreezeFrame message from UE and video playback is about to be resumed.
|
|
199
|
+
*/
|
|
200
|
+
export class HideFreezeFrameEvent extends Event {
|
|
201
|
+
constructor() {
|
|
202
|
+
super('hideFreezeFrame');
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* An event that is emitted when receiving WebRTC statistics.
|
|
207
|
+
*/
|
|
208
|
+
export class StatsReceivedEvent extends Event {
|
|
209
|
+
constructor(data) {
|
|
210
|
+
super('statsReceived');
|
|
211
|
+
this.data = data;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* An event that is emitted when streamer list changes.
|
|
216
|
+
*/
|
|
217
|
+
export class StreamerListMessageEvent extends Event {
|
|
218
|
+
constructor(data) {
|
|
219
|
+
super('streamerListMessage');
|
|
220
|
+
this.data = data;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* An event that is emitted when a subscribed to streamer's id changes.
|
|
225
|
+
*/
|
|
226
|
+
export class StreamerIDChangedMessageEvent extends Event {
|
|
227
|
+
constructor(data) {
|
|
228
|
+
super('StreamerIDChangedMessage');
|
|
229
|
+
this.data = data;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* An event that is emitted when receiving latency test results.
|
|
234
|
+
*/
|
|
235
|
+
export class LatencyTestResultEvent extends Event {
|
|
236
|
+
constructor(data) {
|
|
237
|
+
super('latencyTestResult');
|
|
238
|
+
this.data = data;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* An event that is emitted when receiving data channel latency test response from server.
|
|
243
|
+
* This event is handled by DataChannelLatencyTestController
|
|
244
|
+
*/
|
|
245
|
+
export class DataChannelLatencyTestResponseEvent extends Event {
|
|
246
|
+
constructor(data) {
|
|
247
|
+
super('dataChannelLatencyTestResponse');
|
|
248
|
+
this.data = data;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* An event that is emitted when data channel latency test results are ready.
|
|
253
|
+
*/
|
|
254
|
+
export class DataChannelLatencyTestResultEvent extends Event {
|
|
255
|
+
constructor(data) {
|
|
256
|
+
super('dataChannelLatencyTestResult');
|
|
257
|
+
this.data = data;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* An event that is emitted when receiving initial settings from UE.
|
|
262
|
+
*/
|
|
263
|
+
export class InitialSettingsEvent extends Event {
|
|
264
|
+
constructor(data) {
|
|
265
|
+
super('initialSettings');
|
|
266
|
+
this.data = data;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* An event that is emitted when PixelStreaming settings change.
|
|
271
|
+
*/
|
|
272
|
+
export class SettingsChangedEvent extends Event {
|
|
273
|
+
constructor(data) {
|
|
274
|
+
super('settingsChanged');
|
|
275
|
+
this.data = data;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Event emitted when an XR Session starts
|
|
280
|
+
*/
|
|
281
|
+
export class XrSessionStartedEvent extends Event {
|
|
282
|
+
constructor() {
|
|
283
|
+
super('xrSessionStarted');
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Event emitted when an XR Session ends
|
|
288
|
+
*/
|
|
289
|
+
export class XrSessionEndedEvent extends Event {
|
|
290
|
+
constructor() {
|
|
291
|
+
super('xrSessionEnded');
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Event emitted when an XR Frame is complete
|
|
296
|
+
*/
|
|
297
|
+
export class XrFrameEvent extends Event {
|
|
298
|
+
constructor(data) {
|
|
299
|
+
super('xrFrame');
|
|
300
|
+
this.data = data;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* An event that is emitted when receiving a player count from the signalling server
|
|
305
|
+
*/
|
|
306
|
+
export class PlayerCountEvent extends Event {
|
|
307
|
+
constructor(data) {
|
|
308
|
+
super('playerCount');
|
|
309
|
+
this.data = data;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* An event that is emitted when the webRTC connections is relayed over TCP.
|
|
314
|
+
*/
|
|
315
|
+
export class WebRtcTCPRelayDetectedEvent extends Event {
|
|
316
|
+
constructor() {
|
|
317
|
+
super('webRtcTCPRelayDetected');
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
export class EventEmitter extends EventTarget {
|
|
321
|
+
/**
|
|
322
|
+
* Dispatch a new event.
|
|
323
|
+
* @param e event
|
|
324
|
+
* @returns
|
|
325
|
+
*/
|
|
326
|
+
dispatchEvent(e) {
|
|
327
|
+
return super.dispatchEvent(e);
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Register an event handler.
|
|
331
|
+
* @param type event name
|
|
332
|
+
* @param listener event handler function
|
|
333
|
+
*/
|
|
334
|
+
addEventListener(type, listener) {
|
|
335
|
+
super.addEventListener(type, listener);
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Remove an event handler.
|
|
339
|
+
* @param type event name
|
|
340
|
+
* @param listener event handler function
|
|
341
|
+
*/
|
|
342
|
+
removeEventListener(type, listener) {
|
|
343
|
+
super.removeEventListener(type, listener);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
//# sourceMappingURL=EventEmitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventEmitter.js","sourceRoot":"","sources":["../../../src/Util/EventEmitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
2
|
+
import { Logger } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
|
|
3
|
+
/**
|
|
4
|
+
* Utility function for populate file information from byte buffers.
|
|
5
|
+
*/
|
|
6
|
+
export class FileUtil {
|
|
7
|
+
/**
|
|
8
|
+
* Processes a files extension when received over data channel
|
|
9
|
+
* @param view - the file extension data
|
|
10
|
+
*/
|
|
11
|
+
static setExtensionFromBytes(view, file) {
|
|
12
|
+
// Reset file if we got a file message and we are not "receiving" it yet
|
|
13
|
+
if (!file.receiving) {
|
|
14
|
+
file.mimetype = '';
|
|
15
|
+
file.extension = '';
|
|
16
|
+
file.receiving = true;
|
|
17
|
+
file.valid = false;
|
|
18
|
+
file.size = 0;
|
|
19
|
+
file.data = [];
|
|
20
|
+
file.timestampStart = new Date().getTime();
|
|
21
|
+
Logger.Info('Received first chunk of file');
|
|
22
|
+
}
|
|
23
|
+
const extensionAsString = new TextDecoder('utf-16').decode(view.slice(1));
|
|
24
|
+
Logger.Info(extensionAsString);
|
|
25
|
+
file.extension = extensionAsString;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Processes a files mime type when received over data channel
|
|
29
|
+
* @param view - the file mime type data
|
|
30
|
+
*/
|
|
31
|
+
static setMimeTypeFromBytes(view, file) {
|
|
32
|
+
// Reset file if we got a file message and we are not "receiving" it yet
|
|
33
|
+
if (!file.receiving) {
|
|
34
|
+
file.mimetype = '';
|
|
35
|
+
file.extension = '';
|
|
36
|
+
file.receiving = true;
|
|
37
|
+
file.valid = false;
|
|
38
|
+
file.size = 0;
|
|
39
|
+
file.data = [];
|
|
40
|
+
file.timestampStart = new Date().getTime();
|
|
41
|
+
Logger.Info('Received first chunk of file');
|
|
42
|
+
}
|
|
43
|
+
const mimeAsString = new TextDecoder('utf-16').decode(view.slice(1));
|
|
44
|
+
Logger.Info(mimeAsString);
|
|
45
|
+
file.mimetype = mimeAsString;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Processes a files contents when received over data channel
|
|
49
|
+
* @param view - the file contents data
|
|
50
|
+
*/
|
|
51
|
+
static setContentsFromBytes(view, file) {
|
|
52
|
+
// If we haven't received the initial setup instructions, return
|
|
53
|
+
if (!file.receiving)
|
|
54
|
+
return;
|
|
55
|
+
// Extract the total size of the file (across all chunks)
|
|
56
|
+
file.size = Math.ceil(new DataView(view.slice(1, 5).buffer).getInt32(0, true) /
|
|
57
|
+
16379 /* The maximum number of payload bits per message*/);
|
|
58
|
+
// Get the file part of the payload
|
|
59
|
+
const fileBytes = view.slice(1 + 4);
|
|
60
|
+
// Append to existing data that holds the file
|
|
61
|
+
file.data.push(fileBytes);
|
|
62
|
+
// Uncomment for debug
|
|
63
|
+
Logger.Info(`Received file chunk: ${file.data.length}/${file.size}`);
|
|
64
|
+
if (file.data.length === file.size) {
|
|
65
|
+
file.receiving = false;
|
|
66
|
+
file.valid = true;
|
|
67
|
+
Logger.Info('Received complete file');
|
|
68
|
+
const transferDuration = new Date().getTime() - file.timestampStart;
|
|
69
|
+
const transferBitrate = Math.round((file.size * 16 * 1024) / transferDuration);
|
|
70
|
+
Logger.Info(`Average transfer bitrate: ${transferBitrate}kb/s over ${transferDuration / 1000} seconds`);
|
|
71
|
+
// File reconstruction
|
|
72
|
+
/**
|
|
73
|
+
* Example code to reconstruct the file
|
|
74
|
+
*
|
|
75
|
+
* This code reconstructs the received data into the original file based on the mime type and extension provided and then downloads the reconstructed file
|
|
76
|
+
*/
|
|
77
|
+
const received = new Blob(file.data, { type: file.mimetype });
|
|
78
|
+
const a = document.createElement('a');
|
|
79
|
+
a.setAttribute('href', URL.createObjectURL(received));
|
|
80
|
+
a.setAttribute('download', `transfer.${file.extension}`);
|
|
81
|
+
document.body.append(a);
|
|
82
|
+
// if you are so inclined to make it auto-download, do something like: a.click();
|
|
83
|
+
a.remove();
|
|
84
|
+
}
|
|
85
|
+
else if (file.data.length > file.size) {
|
|
86
|
+
file.receiving = false;
|
|
87
|
+
Logger.Error(`Received bigger file than advertised: ${file.data.length}/${file.size}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* A class that represents a template for a downloaded file
|
|
93
|
+
*/
|
|
94
|
+
export class FileTemplate {
|
|
95
|
+
constructor() {
|
|
96
|
+
this.mimetype = '';
|
|
97
|
+
this.extension = '';
|
|
98
|
+
this.receiving = false;
|
|
99
|
+
this.size = 0;
|
|
100
|
+
this.data = [];
|
|
101
|
+
this.valid = false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=FileUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileUtil.js","sourceRoot":"","sources":["../../../src/Util/FileUtil.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AAEtE;;GAEG;AACH,MAAM,OAAO,QAAQ;IACjB;;;OAGG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAgB,EAAE,IAAkB;QAC7D,wEAAwE;QACxE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YACd,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;YACf,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;SAC/C;QAED,MAAM,iBAAiB,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,oBAAoB,CAAC,IAAgB,EAAE,IAAkB;QAC5D,wEAAwE;QACxE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YACd,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;YACf,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;SAC/C;QAED,MAAM,YAAY,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,oBAAoB,CAAC,IAAgB,EAAE,IAAkB;QAC5D,gEAAgE;QAChE,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAE5B,yDAAyD;QACzD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CACjB,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC;YACnD,KAAK,CAAC,mDAAmD,CAChE,CAAC;QAEF,mCAAmC;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEpC,8CAA8C;QAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE1B,sBAAsB;QACtB,MAAM,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAErE,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE;YAChC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACtC,MAAM,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;YACpE,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;YAC/E,MAAM,CAAC,IAAI,CACP,6BAA6B,eAAe,aAAa,gBAAgB,GAAG,IAAI,UAAU,CAC7F,CAAC;YAEF,sBAAsB;YACtB;;;;eAIG;YACH,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC9D,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACtC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;YACtD,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACzD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,iFAAiF;YACjF,CAAC,CAAC,MAAM,EAAE,CAAC;SACd;aAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE;YACrC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,yCAAyC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SAC1F;IACL,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,YAAY;IAAzB;QACI,aAAQ,GAAG,EAAE,CAAC;QACd,cAAS,GAAG,EAAE,CAAC;QACf,cAAS,GAAG,KAAK,CAAC;QAClB,SAAI,GAAG,CAAC,CAAC;QACT,SAAI,GAAsB,EAAE,CAAC;QAC7B,UAAK,GAAG,KAAK,CAAC;IAElB,CAAC;CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A case insensitive, partial implementation of URLSearchParams
|
|
3
|
+
*/
|
|
4
|
+
export class IURLSearchParams {
|
|
5
|
+
constructor(search) {
|
|
6
|
+
this._urlParams = {};
|
|
7
|
+
const urlParams = new URLSearchParams(search);
|
|
8
|
+
for (const [name, value] of urlParams) {
|
|
9
|
+
this._urlParams[name.toLowerCase()] = value;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
has(name) {
|
|
13
|
+
return name.toLowerCase() in this._urlParams;
|
|
14
|
+
}
|
|
15
|
+
get(name) {
|
|
16
|
+
if (this.has(name)) {
|
|
17
|
+
return this._urlParams[name.toLowerCase()];
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=IURLSearchParams.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IURLSearchParams.js","sourceRoot":"","sources":["../../../src/Util/IURLSearchParams.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAGzB,YAAY,MAAc;QACtB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QAC9C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE;YACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC;SAC/C;IACL,CAAC;IAEM,GAAG,CAAC,IAAY;QACnB,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC;IACjD,CAAC;IAEM,GAAG,CAAC,IAAY;QACnB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAChB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;SAC9C;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
2
|
+
/**
|
|
3
|
+
* Converts coordinates from element relative coordinates to values normalized within the value range of a short (and back again)
|
|
4
|
+
*/
|
|
5
|
+
export class InputCoordTranslator {
|
|
6
|
+
// we dont use a constructor here because the object is created and passed around to various locations
|
|
7
|
+
// possibly before this method is called.
|
|
8
|
+
reconfigure(playerSize, videoSize) {
|
|
9
|
+
const playerAspectRatio = playerSize.height / playerSize.width;
|
|
10
|
+
const videoAspectRatio = videoSize.height / videoSize.width;
|
|
11
|
+
this.playerIsLarger = playerAspectRatio > videoAspectRatio;
|
|
12
|
+
this.playerSize = playerSize;
|
|
13
|
+
this.ratio = this.playerIsLarger
|
|
14
|
+
? playerAspectRatio / videoAspectRatio
|
|
15
|
+
: videoAspectRatio / playerAspectRatio;
|
|
16
|
+
}
|
|
17
|
+
translateUnsigned(x, y) {
|
|
18
|
+
const normalizedX = this.playerIsLarger
|
|
19
|
+
? x / this.playerSize.width
|
|
20
|
+
: this.ratio * (x / this.playerSize.width - 0.5) + 0.5;
|
|
21
|
+
const normalizedY = this.playerIsLarger
|
|
22
|
+
? this.ratio * (y / this.playerSize.height - 0.5) + 0.5
|
|
23
|
+
: y / this.playerSize.height;
|
|
24
|
+
if (normalizedX < 0.0 || normalizedX > 1.0 || normalizedY < 0.0 || normalizedY > 1.0) {
|
|
25
|
+
return { inRange: false, x: 65535, y: 65535 };
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
return { inRange: true, x: normalizedX * 65536, y: normalizedY * 65536 };
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
translateSigned(x, y) {
|
|
32
|
+
const normalizedX = this.playerIsLarger
|
|
33
|
+
? x / (0.5 * this.playerSize.width)
|
|
34
|
+
: (this.ratio * x) / (0.5 * this.playerSize.width);
|
|
35
|
+
const normalizedY = this.playerIsLarger
|
|
36
|
+
? (this.ratio * y) / (0.5 * this.playerSize.height)
|
|
37
|
+
: y / (0.5 * this.playerSize.height);
|
|
38
|
+
return { x: normalizedX * 32767, y: normalizedY * 32767 };
|
|
39
|
+
}
|
|
40
|
+
untranslateUnsigned(x, y) {
|
|
41
|
+
const normalizedX = this.playerIsLarger ? x / 65536 : (x / 65536 - 0.5) / this.ratio + 0.5;
|
|
42
|
+
const normalizedY = this.playerIsLarger ? (y / 65536 - 0.5) / this.ratio + 0.5 : y / 65536;
|
|
43
|
+
return { x: normalizedX * this.playerSize.width, y: normalizedY * this.playerSize.height };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=InputCoordTranslator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputCoordTranslator.js","sourceRoot":"","sources":["../../../src/Util/InputCoordTranslator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export class RTCUtils {
|
|
2
|
+
static isVideoTransceiver(transceiver) {
|
|
3
|
+
return this.canTransceiverReceiveVideo(transceiver) || this.canTransceiverSendVideo(transceiver);
|
|
4
|
+
}
|
|
5
|
+
static canTransceiverReceiveVideo(transceiver) {
|
|
6
|
+
return (!!transceiver &&
|
|
7
|
+
(transceiver.direction === 'sendrecv' || transceiver.direction === 'recvonly') &&
|
|
8
|
+
transceiver.receiver &&
|
|
9
|
+
transceiver.receiver.track &&
|
|
10
|
+
transceiver.receiver.track.kind === 'video');
|
|
11
|
+
}
|
|
12
|
+
static canTransceiverSendVideo(transceiver) {
|
|
13
|
+
return (!!transceiver &&
|
|
14
|
+
(transceiver.direction === 'sendrecv' || transceiver.direction === 'sendonly') &&
|
|
15
|
+
transceiver.sender &&
|
|
16
|
+
transceiver.sender.track &&
|
|
17
|
+
transceiver.sender.track.kind === 'video');
|
|
18
|
+
}
|
|
19
|
+
static isAudioTransceiver(transceiver) {
|
|
20
|
+
return this.canTransceiverReceiveAudio(transceiver) || this.canTransceiverSendAudio(transceiver);
|
|
21
|
+
}
|
|
22
|
+
static canTransceiverReceiveAudio(transceiver) {
|
|
23
|
+
return (!!transceiver &&
|
|
24
|
+
(transceiver.direction === 'sendrecv' || transceiver.direction === 'recvonly') &&
|
|
25
|
+
transceiver.receiver &&
|
|
26
|
+
transceiver.receiver.track &&
|
|
27
|
+
transceiver.receiver.track.kind === 'audio');
|
|
28
|
+
}
|
|
29
|
+
static canTransceiverSendAudio(transceiver) {
|
|
30
|
+
return (!!transceiver &&
|
|
31
|
+
(transceiver.direction === 'sendrecv' || transceiver.direction === 'sendonly') &&
|
|
32
|
+
transceiver.sender &&
|
|
33
|
+
transceiver.sender.track &&
|
|
34
|
+
transceiver.sender.track.kind === 'audio');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=RTCUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RTCUtils.js","sourceRoot":"","sources":["../../../src/Util/RTCUtils.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAQ;IACjB,MAAM,CAAC,kBAAkB,CAAC,WAA0C;QAChE,OAAO,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;IACrG,CAAC;IAED,MAAM,CAAC,0BAA0B,CAAC,WAA0C;QACxE,OAAO,CACH,CAAC,CAAC,WAAW;YACb,CAAC,WAAW,CAAC,SAAS,KAAK,UAAU,IAAI,WAAW,CAAC,SAAS,KAAK,UAAU,CAAC;YAC9E,WAAW,CAAC,QAAQ;YACpB,WAAW,CAAC,QAAQ,CAAC,KAAK;YAC1B,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAC9C,CAAC;IACN,CAAC;IAED,MAAM,CAAC,uBAAuB,CAAC,WAA0C;QACrE,OAAO,CACH,CAAC,CAAC,WAAW;YACb,CAAC,WAAW,CAAC,SAAS,KAAK,UAAU,IAAI,WAAW,CAAC,SAAS,KAAK,UAAU,CAAC;YAC9E,WAAW,CAAC,MAAM;YAClB,WAAW,CAAC,MAAM,CAAC,KAAK;YACxB,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAC5C,CAAC;IACN,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,WAA0C;QAChE,OAAO,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;IACrG,CAAC;IAED,MAAM,CAAC,0BAA0B,CAAC,WAA0C;QACxE,OAAO,CACH,CAAC,CAAC,WAAW;YACb,CAAC,WAAW,CAAC,SAAS,KAAK,UAAU,IAAI,WAAW,CAAC,SAAS,KAAK,UAAU,CAAC;YAC9E,WAAW,CAAC,QAAQ;YACpB,WAAW,CAAC,QAAQ,CAAC,KAAK;YAC1B,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAC9C,CAAC;IACN,CAAC;IAED,MAAM,CAAC,uBAAuB,CAAC,WAA0C;QACrE,OAAO,CACH,CAAC,CAAC,WAAW;YACb,CAAC,WAAW,CAAC,SAAS,KAAK,UAAU,IAAI,WAAW,CAAC,SAAS,KAAK,UAAU,CAAC;YAC9E,WAAW,CAAC,MAAM;YAClB,WAAW,CAAC,MAAM,CAAC,KAAK;YACxB,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAC5C,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
2
|
+
import { Logger } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
|
|
3
|
+
/**
|
|
4
|
+
* Video Player Controller handles the creation of the video HTML element and all handlers
|
|
5
|
+
*/
|
|
6
|
+
export class StreamController {
|
|
7
|
+
/**
|
|
8
|
+
* @param videoElementProvider Video Player instance
|
|
9
|
+
*/
|
|
10
|
+
constructor(videoElementProvider) {
|
|
11
|
+
this.videoElementProvider = videoElementProvider;
|
|
12
|
+
this.audioElement = document.createElement('Audio');
|
|
13
|
+
this.videoElementProvider.setAudioElement(this.audioElement);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Handles when the Peer connection has a track event
|
|
17
|
+
* @param rtcTrackEvent - RTC Track Event
|
|
18
|
+
*/
|
|
19
|
+
handleOnTrack(rtcTrackEvent) {
|
|
20
|
+
Logger.Info('handleOnTrack ' + JSON.stringify(rtcTrackEvent.streams));
|
|
21
|
+
// Do not add the track if the ID is `probator` as this is special track created by mediasoup for bitrate probing.
|
|
22
|
+
// Refer to https://github.com/EpicGamesExt/PixelStreamingInfrastructure/pull/86 for more details.
|
|
23
|
+
if (rtcTrackEvent.streams.length < 1 || rtcTrackEvent.streams[0].id == 'probator') {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const videoElement = this.videoElementProvider.getVideoElement();
|
|
27
|
+
if (rtcTrackEvent.track) {
|
|
28
|
+
Logger.Info('Got track - ' +
|
|
29
|
+
rtcTrackEvent.track.kind +
|
|
30
|
+
' id=' +
|
|
31
|
+
rtcTrackEvent.track.id +
|
|
32
|
+
' readyState=' +
|
|
33
|
+
rtcTrackEvent.track.readyState);
|
|
34
|
+
}
|
|
35
|
+
if (rtcTrackEvent.track.kind == 'audio') {
|
|
36
|
+
this.CreateAudioTrack(rtcTrackEvent.streams[0]);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
else if (rtcTrackEvent.track.kind == 'video' &&
|
|
40
|
+
videoElement.srcObject !== rtcTrackEvent.streams[0]) {
|
|
41
|
+
videoElement.srcObject = rtcTrackEvent.streams[0];
|
|
42
|
+
Logger.Info('Set video source from video track ontrack.');
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Creates the audio device when receiving an RTCTrackEvent with the kind of "audio"
|
|
48
|
+
* @param audioMediaStream - Audio Media stream track
|
|
49
|
+
*/
|
|
50
|
+
CreateAudioTrack(audioMediaStream) {
|
|
51
|
+
const videoElement = this.videoElementProvider.getVideoElement();
|
|
52
|
+
// do nothing the video has the same media stream as the audio track we have here (they are linked)
|
|
53
|
+
if (videoElement.srcObject == audioMediaStream) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
// video element has some other media stream that is not associated with this audio track
|
|
57
|
+
else if (videoElement.srcObject && videoElement.srcObject !== audioMediaStream) {
|
|
58
|
+
// create a new audio element
|
|
59
|
+
this.audioElement.srcObject = audioMediaStream;
|
|
60
|
+
Logger.Info('Created new audio element to play separate audio stream.');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=StreamController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamController.js","sourceRoot":"","sources":["../../../src/VideoPlayer/StreamController.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AAGtE;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAIzB;;OAEG;IACH,YAAY,oBAAiC;QACzC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAqB,CAAC;QACxE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjE,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,aAA4B;QACtC,MAAM,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QACtE,kHAAkH;QAClH,kGAAkG;QAClG,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,EAAE;YAC/E,OAAO;SACV;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,CAAC;QAEjE,IAAI,aAAa,CAAC,KAAK,EAAE;YACrB,MAAM,CAAC,IAAI,CACP,cAAc;gBACV,aAAa,CAAC,KAAK,CAAC,IAAI;gBACxB,MAAM;gBACN,aAAa,CAAC,KAAK,CAAC,EAAE;gBACtB,cAAc;gBACd,aAAa,CAAC,KAAK,CAAC,UAAU,CACrC,CAAC;SACL;QAED,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,EAAE;YACrC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,OAAO;SACV;aAAM,IACH,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO;YACnC,YAAY,CAAC,SAAS,KAAK,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EACrD;YACE,YAAY,CAAC,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;YAC1D,OAAO;SACV;IACL,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,gBAA6B;QAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,CAAC;QAEjE,mGAAmG;QACnG,IAAI,YAAY,CAAC,SAAS,IAAI,gBAAgB,EAAE;YAC5C,OAAO;SACV;QACD,yFAAyF;aACpF,IAAI,YAAY,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS,KAAK,gBAAgB,EAAE;YAC5E,6BAA6B;YAC7B,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,gBAAgB,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;SAC3E;IACL,CAAC;CACJ"}
|