mediasfu-shared 1.0.5 → 1.1.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 (496) hide show
  1. package/HEADLESS_GUIDE.md +156 -0
  2. package/README.md +113 -62
  3. package/dist/ProducerClient/producerClientEmits/createDeviceClient.d.ts +23 -0
  4. package/dist/ProducerClient/producerClientEmits/createDeviceClient.d.ts.map +1 -0
  5. package/dist/ProducerClient/producerClientEmits/joinRoomClient.d.ts +22 -0
  6. package/dist/ProducerClient/producerClientEmits/joinRoomClient.d.ts.map +1 -0
  7. package/dist/ProducerClient/producerClientEmits/updateRoomParametersClient.d.ts +85 -0
  8. package/dist/ProducerClient/producerClientEmits/updateRoomParametersClient.d.ts.map +1 -0
  9. package/dist/consumers/addVideosGrid.d.ts +10 -0
  10. package/dist/consumers/addVideosGrid.d.ts.map +1 -0
  11. package/dist/consumers/autoAdjust.d.ts +41 -0
  12. package/dist/consumers/autoAdjust.d.ts.map +1 -0
  13. package/dist/consumers/calculateRowsAndColumns.d.ts +24 -0
  14. package/dist/consumers/calculateRowsAndColumns.d.ts.map +1 -0
  15. package/dist/consumers/changeVids.d.ts +252 -0
  16. package/dist/consumers/changeVids.d.ts.map +1 -0
  17. package/dist/consumers/checkGrid.d.ts +42 -0
  18. package/dist/consumers/checkGrid.d.ts.map +1 -0
  19. package/dist/consumers/checkPermission.d.ts +42 -0
  20. package/dist/consumers/checkPermission.d.ts.map +1 -0
  21. package/dist/consumers/checkScreenShare.d.ts +59 -0
  22. package/dist/consumers/checkScreenShare.d.ts.map +1 -0
  23. package/dist/consumers/closeAndResize.d.ts +157 -0
  24. package/dist/consumers/closeAndResize.d.ts.map +1 -0
  25. package/dist/consumers/compareActiveNames.d.ts +50 -0
  26. package/dist/consumers/compareActiveNames.d.ts.map +1 -0
  27. package/dist/consumers/compareScreenStates.d.ts +55 -0
  28. package/dist/consumers/compareScreenStates.d.ts.map +1 -0
  29. package/dist/consumers/connectIps.d.ts +66 -0
  30. package/dist/consumers/connectIps.d.ts.map +1 -0
  31. package/dist/consumers/connectLocalIps.d.ts +52 -0
  32. package/dist/consumers/connectLocalIps.d.ts.map +1 -0
  33. package/dist/consumers/connectRecvTransport.d.ts +64 -0
  34. package/dist/consumers/connectRecvTransport.d.ts.map +1 -0
  35. package/dist/consumers/connectSendTransport.d.ts +75 -0
  36. package/dist/consumers/connectSendTransport.d.ts.map +1 -0
  37. package/dist/consumers/connectSendTransportAudio.d.ts +62 -0
  38. package/dist/consumers/connectSendTransportAudio.d.ts.map +1 -0
  39. package/dist/consumers/connectSendTransportScreen.d.ts +72 -0
  40. package/dist/consumers/connectSendTransportScreen.d.ts.map +1 -0
  41. package/dist/consumers/connectSendTransportVideo.d.ts +75 -0
  42. package/dist/consumers/connectSendTransportVideo.d.ts.map +1 -0
  43. package/dist/consumers/consumerResume.d.ts +16 -0
  44. package/dist/consumers/consumerResume.d.ts.map +1 -0
  45. package/dist/consumers/controlMedia.d.ts +61 -0
  46. package/dist/consumers/controlMedia.d.ts.map +1 -0
  47. package/dist/consumers/createSendTransport.d.ts +80 -0
  48. package/dist/consumers/createSendTransport.d.ts.map +1 -0
  49. package/dist/consumers/disconnectSendTransportAudio.d.ts +79 -0
  50. package/dist/consumers/disconnectSendTransportAudio.d.ts.map +1 -0
  51. package/dist/consumers/disconnectSendTransportScreen.d.ts +61 -0
  52. package/dist/consumers/disconnectSendTransportScreen.d.ts.map +1 -0
  53. package/dist/consumers/disconnectSendTransportVideo.d.ts +72 -0
  54. package/dist/consumers/disconnectSendTransportVideo.d.ts.map +1 -0
  55. package/dist/consumers/dispStreams.d.ts +189 -0
  56. package/dist/consumers/dispStreams.d.ts.map +1 -0
  57. package/dist/consumers/frameworkConsumerContract.d.ts +2 -0
  58. package/dist/consumers/frameworkConsumerContract.d.ts.map +1 -0
  59. package/dist/consumers/generatePageContent.d.ts +68 -0
  60. package/dist/consumers/generatePageContent.d.ts.map +1 -0
  61. package/dist/consumers/getEstimate.d.ts +62 -0
  62. package/dist/consumers/getEstimate.d.ts.map +1 -0
  63. package/dist/consumers/getPipedProducersAlt.d.ts +62 -0
  64. package/dist/consumers/getPipedProducersAlt.d.ts.map +1 -0
  65. package/dist/consumers/getProducersPiped.d.ts +49 -0
  66. package/dist/consumers/getProducersPiped.d.ts.map +1 -0
  67. package/dist/consumers/getVideos.d.ts +49 -0
  68. package/dist/consumers/getVideos.d.ts.map +1 -0
  69. package/dist/consumers/gridLayout/addVideosGrid.engine.d.ts +19 -0
  70. package/dist/consumers/gridLayout/addVideosGrid.engine.d.ts.map +1 -0
  71. package/dist/consumers/gridLayout/prepopulateUserMedia.engine.d.ts +138 -0
  72. package/dist/consumers/gridLayout/prepopulateUserMedia.engine.d.ts.map +1 -0
  73. package/dist/consumers/mixStreams.d.ts +37 -0
  74. package/dist/consumers/mixStreams.d.ts.map +1 -0
  75. package/dist/consumers/onScreenChanges.d.ts +62 -0
  76. package/dist/consumers/onScreenChanges.d.ts.map +1 -0
  77. package/dist/consumers/prepopulateUserMedia.d.ts +10 -0
  78. package/dist/consumers/prepopulateUserMedia.d.ts.map +1 -0
  79. package/dist/consumers/processConsumerTransports.d.ts +73 -0
  80. package/dist/consumers/processConsumerTransports.d.ts.map +1 -0
  81. package/dist/consumers/processConsumerTransportsAudio.d.ts +57 -0
  82. package/dist/consumers/processConsumerTransportsAudio.d.ts.map +1 -0
  83. package/dist/consumers/rePort.d.ts +63 -0
  84. package/dist/consumers/rePort.d.ts.map +1 -0
  85. package/dist/consumers/reUpdateInter.d.ts +142 -0
  86. package/dist/consumers/reUpdateInter.d.ts.map +1 -0
  87. package/dist/consumers/readjust.d.ts +68 -0
  88. package/dist/consumers/readjust.d.ts.map +1 -0
  89. package/dist/consumers/receiveAllPipedTransports.d.ts +44 -0
  90. package/dist/consumers/receiveAllPipedTransports.d.ts.map +1 -0
  91. package/dist/consumers/receiveRoomMessages.d.ts +31 -0
  92. package/dist/consumers/receiveRoomMessages.d.ts.map +1 -0
  93. package/dist/consumers/reorderStreams.d.ts +98 -0
  94. package/dist/consumers/reorderStreams.d.ts.map +1 -0
  95. package/dist/consumers/requestScreenShare.d.ts +47 -0
  96. package/dist/consumers/requestScreenShare.d.ts.map +1 -0
  97. package/dist/consumers/resumePauseAudioStreams.d.ts +85 -0
  98. package/dist/consumers/resumePauseAudioStreams.d.ts.map +1 -0
  99. package/dist/consumers/resumePauseStreams.d.ts +68 -0
  100. package/dist/consumers/resumePauseStreams.d.ts.map +1 -0
  101. package/dist/consumers/resumeSendTransportAudio.d.ts +65 -0
  102. package/dist/consumers/resumeSendTransportAudio.d.ts.map +1 -0
  103. package/dist/consumers/signalNewConsumerTransport.d.ts +59 -0
  104. package/dist/consumers/signalNewConsumerTransport.d.ts.map +1 -0
  105. package/dist/consumers/socketReceiveMethods/joinConsumeRoom.d.ts +76 -0
  106. package/dist/consumers/socketReceiveMethods/joinConsumeRoom.d.ts.map +1 -0
  107. package/dist/consumers/socketReceiveMethods/newPipeProducer.d.ts +119 -0
  108. package/dist/consumers/socketReceiveMethods/newPipeProducer.d.ts.map +1 -0
  109. package/dist/consumers/socketReceiveMethods/producerClosed.d.ts +53 -0
  110. package/dist/consumers/socketReceiveMethods/producerClosed.d.ts.map +1 -0
  111. package/dist/consumers/startShareScreen.d.ts +58 -0
  112. package/dist/consumers/startShareScreen.d.ts.map +1 -0
  113. package/dist/consumers/stopShareScreen.d.ts +127 -0
  114. package/dist/consumers/stopShareScreen.d.ts.map +1 -0
  115. package/dist/consumers/streamSuccessAudio.d.ts +149 -0
  116. package/dist/consumers/streamSuccessAudio.d.ts.map +1 -0
  117. package/dist/consumers/streamSuccessAudioSwitch.d.ts +131 -0
  118. package/dist/consumers/streamSuccessAudioSwitch.d.ts.map +1 -0
  119. package/dist/consumers/streamSuccessScreen.d.ts +109 -0
  120. package/dist/consumers/streamSuccessScreen.d.ts.map +1 -0
  121. package/dist/consumers/streamSuccessVideo.d.ts +160 -0
  122. package/dist/consumers/streamSuccessVideo.d.ts.map +1 -0
  123. package/dist/consumers/switchUserAudio.d.ts +56 -0
  124. package/dist/consumers/switchUserAudio.d.ts.map +1 -0
  125. package/dist/consumers/switchUserVideo.d.ts +77 -0
  126. package/dist/consumers/switchUserVideo.d.ts.map +1 -0
  127. package/dist/consumers/switchUserVideoAlt.d.ts +69 -0
  128. package/dist/consumers/switchUserVideoAlt.d.ts.map +1 -0
  129. package/dist/consumers/translationConsumerSwitch.d.ts +67 -0
  130. package/dist/consumers/translationConsumerSwitch.d.ts.map +1 -0
  131. package/dist/consumers/trigger.d.ts +71 -0
  132. package/dist/consumers/trigger.d.ts.map +1 -0
  133. package/dist/consumers/updateMiniCardsGrid.d.ts +65 -0
  134. package/dist/consumers/updateMiniCardsGrid.d.ts.map +1 -0
  135. package/dist/consumers/updateParticipantAudioDecibels.d.ts +31 -0
  136. package/dist/consumers/updateParticipantAudioDecibels.d.ts.map +1 -0
  137. package/dist/getParticipantMedia-D9ChmEqq.js +15265 -0
  138. package/dist/getParticipantMedia-D9ChmEqq.js.map +1 -0
  139. package/dist/getParticipantMedia-DWvIhPPY.cjs +15281 -0
  140. package/dist/getParticipantMedia-DWvIhPPY.cjs.map +1 -0
  141. package/dist/index.cjs +2677 -13213
  142. package/dist/index.cjs.map +1 -1
  143. package/dist/index.d.ts +191 -11233
  144. package/dist/index.d.ts.map +1 -0
  145. package/dist/index.js +2668 -13186
  146. package/dist/index.js.map +1 -1
  147. package/dist/index.native.cjs +346 -0
  148. package/dist/index.native.cjs.map +1 -0
  149. package/dist/index.native.d.ts +204 -0
  150. package/dist/index.native.d.ts.map +1 -0
  151. package/dist/index.native.js +346 -0
  152. package/dist/index.native.js.map +1 -0
  153. package/dist/methods/background/launchBackground.d.ts +10 -0
  154. package/dist/methods/background/launchBackground.d.ts.map +1 -0
  155. package/dist/methods/breakoutRooms/breakoutRoomUpdated.d.ts +67 -0
  156. package/dist/methods/breakoutRooms/breakoutRoomUpdated.d.ts.map +1 -0
  157. package/dist/methods/breakoutRooms/handleStartBreakout.d.ts +42 -0
  158. package/dist/methods/breakoutRooms/handleStartBreakout.d.ts.map +1 -0
  159. package/dist/methods/breakoutRooms/handleStopBreakout.d.ts +33 -0
  160. package/dist/methods/breakoutRooms/handleStopBreakout.d.ts.map +1 -0
  161. package/dist/methods/breakoutRooms/index.d.ts +5 -0
  162. package/dist/methods/breakoutRooms/index.d.ts.map +1 -0
  163. package/dist/methods/breakoutRooms/launchBreakoutRooms.d.ts +25 -0
  164. package/dist/methods/breakoutRooms/launchBreakoutRooms.d.ts.map +1 -0
  165. package/dist/methods/coHost/launchCoHost.d.ts +25 -0
  166. package/dist/methods/coHost/launchCoHost.d.ts.map +1 -0
  167. package/dist/methods/coHostMethods/index.d.ts +3 -0
  168. package/dist/methods/coHostMethods/index.d.ts.map +1 -0
  169. package/dist/methods/coHostMethods/modifyCoHostSettings.d.ts +49 -0
  170. package/dist/methods/coHostMethods/modifyCoHostSettings.d.ts.map +1 -0
  171. package/dist/methods/displaySettings/index.d.ts +2 -0
  172. package/dist/methods/displaySettings/index.d.ts.map +1 -0
  173. package/dist/methods/displaySettings/launchDisplaySettings.d.ts +25 -0
  174. package/dist/methods/displaySettings/launchDisplaySettings.d.ts.map +1 -0
  175. package/dist/methods/displaySettings/modifyDisplaySettings.d.ts +106 -0
  176. package/dist/methods/displaySettings/modifyDisplaySettings.d.ts.map +1 -0
  177. package/dist/methods/exit/confirmExit.d.ts +38 -0
  178. package/dist/methods/exit/confirmExit.d.ts.map +1 -0
  179. package/dist/methods/exit/index.d.ts +3 -0
  180. package/dist/methods/exit/index.d.ts.map +1 -0
  181. package/dist/methods/exit/launchConfirmExit.d.ts +23 -0
  182. package/dist/methods/exit/launchConfirmExit.d.ts.map +1 -0
  183. package/dist/methods/index.d.ts +66 -0
  184. package/dist/methods/index.d.ts.map +1 -0
  185. package/dist/methods/mediaSettings/launchMediaSettings.d.ts +38 -0
  186. package/dist/methods/mediaSettings/launchMediaSettings.d.ts.map +1 -0
  187. package/dist/methods/menu/launchMenuModal.d.ts +22 -0
  188. package/dist/methods/menu/launchMenuModal.d.ts.map +1 -0
  189. package/dist/methods/message/index.d.ts +2 -0
  190. package/dist/methods/message/index.d.ts.map +1 -0
  191. package/dist/methods/message/launchMessages.d.ts +24 -0
  192. package/dist/methods/message/launchMessages.d.ts.map +1 -0
  193. package/dist/methods/message/sendMessage.d.ts +63 -0
  194. package/dist/methods/message/sendMessage.d.ts.map +1 -0
  195. package/dist/methods/panelists/focusPanelists.d.ts +24 -0
  196. package/dist/methods/panelists/focusPanelists.d.ts.map +1 -0
  197. package/dist/methods/panelists/index.d.ts +4 -0
  198. package/dist/methods/panelists/index.d.ts.map +1 -0
  199. package/dist/methods/panelists/launchPanelists.d.ts +7 -0
  200. package/dist/methods/panelists/launchPanelists.d.ts.map +1 -0
  201. package/dist/methods/panelists/updatePanelists.d.ts +35 -0
  202. package/dist/methods/panelists/updatePanelists.d.ts.map +1 -0
  203. package/dist/methods/participants/index.d.ts +4 -0
  204. package/dist/methods/participants/index.d.ts.map +1 -0
  205. package/dist/methods/participants/launchParticipants.d.ts +22 -0
  206. package/dist/methods/participants/launchParticipants.d.ts.map +1 -0
  207. package/dist/methods/participants/messageParticipants.d.ts +43 -0
  208. package/dist/methods/participants/messageParticipants.d.ts.map +1 -0
  209. package/dist/methods/participants/muteParticipants.d.ts +41 -0
  210. package/dist/methods/participants/muteParticipants.d.ts.map +1 -0
  211. package/dist/methods/participants/removeParticipants.d.ts +47 -0
  212. package/dist/methods/participants/removeParticipants.d.ts.map +1 -0
  213. package/dist/methods/permissions/index.d.ts +4 -0
  214. package/dist/methods/permissions/index.d.ts.map +1 -0
  215. package/dist/methods/permissions/launchPermissions.d.ts +7 -0
  216. package/dist/methods/permissions/launchPermissions.d.ts.map +1 -0
  217. package/dist/methods/permissions/updateParticipantPermission.d.ts +25 -0
  218. package/dist/methods/permissions/updateParticipantPermission.d.ts.map +1 -0
  219. package/dist/methods/permissions/updatePermissionConfig.d.ts +22 -0
  220. package/dist/methods/permissions/updatePermissionConfig.d.ts.map +1 -0
  221. package/dist/methods/polls/handleCreatePoll.d.ts +39 -0
  222. package/dist/methods/polls/handleCreatePoll.d.ts.map +1 -0
  223. package/dist/methods/polls/handleEndPoll.d.ts +34 -0
  224. package/dist/methods/polls/handleEndPoll.d.ts.map +1 -0
  225. package/dist/methods/polls/handleVotePoll.d.ts +39 -0
  226. package/dist/methods/polls/handleVotePoll.d.ts.map +1 -0
  227. package/dist/methods/polls/index.d.ts +4 -0
  228. package/dist/methods/polls/index.d.ts.map +1 -0
  229. package/dist/methods/polls/launchPoll.d.ts +22 -0
  230. package/dist/methods/polls/launchPoll.d.ts.map +1 -0
  231. package/dist/methods/polls/pollUpdated.d.ts +38 -0
  232. package/dist/methods/polls/pollUpdated.d.ts.map +1 -0
  233. package/dist/methods/prejoin/handleCreateRoom.d.ts +77 -0
  234. package/dist/methods/prejoin/handleCreateRoom.d.ts.map +1 -0
  235. package/dist/methods/prejoin/handleJoinRoom.d.ts +56 -0
  236. package/dist/methods/prejoin/handleJoinRoom.d.ts.map +1 -0
  237. package/dist/methods/prejoin/index.d.ts +5 -0
  238. package/dist/methods/prejoin/index.d.ts.map +1 -0
  239. package/dist/methods/recording/checkPauseState.d.ts +34 -0
  240. package/dist/methods/recording/checkPauseState.d.ts.map +1 -0
  241. package/dist/methods/recording/checkResumeState.d.ts +30 -0
  242. package/dist/methods/recording/checkResumeState.d.ts.map +1 -0
  243. package/dist/methods/recording/confirmRecording.d.ts +46 -0
  244. package/dist/methods/recording/confirmRecording.d.ts.map +1 -0
  245. package/dist/methods/recording/launchRecording.d.ts +56 -0
  246. package/dist/methods/recording/launchRecording.d.ts.map +1 -0
  247. package/dist/methods/recording/recordPauseTimer.d.ts +31 -0
  248. package/dist/methods/recording/recordPauseTimer.d.ts.map +1 -0
  249. package/dist/methods/recording/recordResumeTimer.d.ts +29 -0
  250. package/dist/methods/recording/recordResumeTimer.d.ts.map +1 -0
  251. package/dist/methods/recording/recordStartTimer.d.ts +45 -0
  252. package/dist/methods/recording/recordStartTimer.d.ts.map +1 -0
  253. package/dist/methods/recording/recordUpdateTimer.d.ts +29 -0
  254. package/dist/methods/recording/recordUpdateTimer.d.ts.map +1 -0
  255. package/dist/methods/recording/startRecording.d.ts +122 -0
  256. package/dist/methods/recording/startRecording.d.ts.map +1 -0
  257. package/dist/methods/recording/stopRecording.d.ts +36 -0
  258. package/dist/methods/recording/stopRecording.d.ts.map +1 -0
  259. package/dist/methods/recording/timeLeftRecording.d.ts +13 -0
  260. package/dist/methods/recording/timeLeftRecording.d.ts.map +1 -0
  261. package/dist/methods/recording/updateRecording.d.ts +49 -0
  262. package/dist/methods/recording/updateRecording.d.ts.map +1 -0
  263. package/dist/methods/requests/hostRequestResponse.d.ts +33 -0
  264. package/dist/methods/requests/hostRequestResponse.d.ts.map +1 -0
  265. package/dist/methods/requests/index.d.ts +2 -0
  266. package/dist/methods/requests/index.d.ts.map +1 -0
  267. package/dist/methods/requests/launchRequests.d.ts +22 -0
  268. package/dist/methods/requests/launchRequests.d.ts.map +1 -0
  269. package/dist/methods/requests/respondToRequests.d.ts +38 -0
  270. package/dist/methods/requests/respondToRequests.d.ts.map +1 -0
  271. package/dist/methods/settings/index.d.ts +3 -0
  272. package/dist/methods/settings/index.d.ts.map +1 -0
  273. package/dist/methods/settings/launchSettings.d.ts +22 -0
  274. package/dist/methods/settings/launchSettings.d.ts.map +1 -0
  275. package/dist/methods/settings/modifySettings.d.ts +45 -0
  276. package/dist/methods/settings/modifySettings.d.ts.map +1 -0
  277. package/dist/methods/socketReceive/allMembers.d.ts +117 -0
  278. package/dist/methods/socketReceive/allMembers.d.ts.map +1 -0
  279. package/dist/methods/socketReceive/allMembersRest.d.ts +122 -0
  280. package/dist/methods/socketReceive/allMembersRest.d.ts.map +1 -0
  281. package/dist/methods/socketReceive/allWaitingRoomMembers.d.ts +24 -0
  282. package/dist/methods/socketReceive/allWaitingRoomMembers.d.ts.map +1 -0
  283. package/dist/methods/socketReceive/banParticipant.d.ts +44 -0
  284. package/dist/methods/socketReceive/banParticipant.d.ts.map +1 -0
  285. package/dist/methods/socketReceive/controlMediaHost.d.ts +62 -0
  286. package/dist/methods/socketReceive/controlMediaHost.d.ts.map +1 -0
  287. package/dist/methods/socketReceive/disconnect.d.ts +24 -0
  288. package/dist/methods/socketReceive/disconnect.d.ts.map +1 -0
  289. package/dist/methods/socketReceive/disconnectUserSelf.d.ts +29 -0
  290. package/dist/methods/socketReceive/disconnectUserSelf.d.ts.map +1 -0
  291. package/dist/methods/socketReceive/getDomains.d.ts +48 -0
  292. package/dist/methods/socketReceive/getDomains.d.ts.map +1 -0
  293. package/dist/methods/socketReceive/meetingEnded.d.ts +27 -0
  294. package/dist/methods/socketReceive/meetingEnded.d.ts.map +1 -0
  295. package/dist/methods/socketReceive/meetingStillThere.d.ts +19 -0
  296. package/dist/methods/socketReceive/meetingStillThere.d.ts.map +1 -0
  297. package/dist/methods/socketReceive/panelistReceiveMethods.d.ts +66 -0
  298. package/dist/methods/socketReceive/panelistReceiveMethods.d.ts.map +1 -0
  299. package/dist/methods/socketReceive/participantRequested.d.ts +28 -0
  300. package/dist/methods/socketReceive/participantRequested.d.ts.map +1 -0
  301. package/dist/methods/socketReceive/permissionReceiveMethods.d.ts +23 -0
  302. package/dist/methods/socketReceive/permissionReceiveMethods.d.ts.map +1 -0
  303. package/dist/methods/socketReceive/personJoined.d.ts +24 -0
  304. package/dist/methods/socketReceive/personJoined.d.ts.map +1 -0
  305. package/dist/methods/socketReceive/producerMediaClosed.d.ts +66 -0
  306. package/dist/methods/socketReceive/producerMediaClosed.d.ts.map +1 -0
  307. package/dist/methods/socketReceive/producerMediaPaused.d.ts +70 -0
  308. package/dist/methods/socketReceive/producerMediaPaused.d.ts.map +1 -0
  309. package/dist/methods/socketReceive/producerMediaResumed.d.ts +53 -0
  310. package/dist/methods/socketReceive/producerMediaResumed.d.ts.map +1 -0
  311. package/dist/methods/socketReceive/reInitiateRecording.d.ts +33 -0
  312. package/dist/methods/socketReceive/reInitiateRecording.d.ts.map +1 -0
  313. package/dist/methods/socketReceive/receiveMessage.d.ts +36 -0
  314. package/dist/methods/socketReceive/receiveMessage.d.ts.map +1 -0
  315. package/dist/methods/socketReceive/recordingNotice.d.ts +98 -0
  316. package/dist/methods/socketReceive/recordingNotice.d.ts.map +1 -0
  317. package/dist/methods/socketReceive/roomRecordParams.d.ts +60 -0
  318. package/dist/methods/socketReceive/roomRecordParams.d.ts.map +1 -0
  319. package/dist/methods/socketReceive/screenProducerId.d.ts +36 -0
  320. package/dist/methods/socketReceive/screenProducerId.d.ts.map +1 -0
  321. package/dist/methods/socketReceive/startRecords.d.ts +31 -0
  322. package/dist/methods/socketReceive/startRecords.d.ts.map +1 -0
  323. package/dist/methods/socketReceive/stoppedRecording.d.ts +24 -0
  324. package/dist/methods/socketReceive/stoppedRecording.d.ts.map +1 -0
  325. package/dist/methods/socketReceive/translationReceiveMethods.d.ts +227 -0
  326. package/dist/methods/socketReceive/translationReceiveMethods.d.ts.map +1 -0
  327. package/dist/methods/socketReceive/updateConsumingDomains.d.ts +60 -0
  328. package/dist/methods/socketReceive/updateConsumingDomains.d.ts.map +1 -0
  329. package/dist/methods/socketReceive/updateMediaSettings.d.ts +28 -0
  330. package/dist/methods/socketReceive/updateMediaSettings.d.ts.map +1 -0
  331. package/dist/methods/socketReceive/updatedCoHost.d.ts +38 -0
  332. package/dist/methods/socketReceive/updatedCoHost.d.ts.map +1 -0
  333. package/dist/methods/socketReceive/userWaiting.d.ts +30 -0
  334. package/dist/methods/socketReceive/userWaiting.d.ts.map +1 -0
  335. package/dist/methods/stream/clickAudio.d.ts +71 -0
  336. package/dist/methods/stream/clickAudio.d.ts.map +1 -0
  337. package/dist/methods/stream/clickChat.d.ts +11 -0
  338. package/dist/methods/stream/clickChat.d.ts.map +1 -0
  339. package/dist/methods/stream/clickScreenShare.d.ts +45 -0
  340. package/dist/methods/stream/clickScreenShare.d.ts.map +1 -0
  341. package/dist/methods/stream/clickVideo.d.ts +101 -0
  342. package/dist/methods/stream/clickVideo.d.ts.map +1 -0
  343. package/dist/methods/stream/index.d.ts +5 -0
  344. package/dist/methods/stream/index.d.ts.map +1 -0
  345. package/dist/methods/stream/switchAudio.d.ts +40 -0
  346. package/dist/methods/stream/switchAudio.d.ts.map +1 -0
  347. package/dist/methods/stream/switchVideo.d.ts +56 -0
  348. package/dist/methods/stream/switchVideo.d.ts.map +1 -0
  349. package/dist/methods/stream/switchVideoAlt.d.ts +55 -0
  350. package/dist/methods/stream/switchVideoAlt.d.ts.map +1 -0
  351. package/dist/methods/utils/SoundPlayer.d.ts +19 -0
  352. package/dist/methods/utils/SoundPlayer.d.ts.map +1 -0
  353. package/dist/methods/utils/checkLimitsAndMakeRequest.d.ts +30 -0
  354. package/dist/methods/utils/checkLimitsAndMakeRequest.d.ts.map +1 -0
  355. package/dist/methods/utils/createResponseJoinRoom.d.ts +24 -0
  356. package/dist/methods/utils/createResponseJoinRoom.d.ts.map +1 -0
  357. package/dist/methods/utils/createRoomOnMediaSFU.d.ts +28 -0
  358. package/dist/methods/utils/createRoomOnMediaSFU.d.ts.map +1 -0
  359. package/dist/methods/utils/formatNumber.d.ts +21 -0
  360. package/dist/methods/utils/formatNumber.d.ts.map +1 -0
  361. package/dist/methods/utils/generateRandomMessages.d.ts +11 -0
  362. package/dist/methods/utils/generateRandomMessages.d.ts.map +1 -0
  363. package/dist/methods/utils/generateRandomParticipants.d.ts +10 -0
  364. package/dist/methods/utils/generateRandomParticipants.d.ts.map +1 -0
  365. package/dist/methods/utils/generateRandomPolls.d.ts +7 -0
  366. package/dist/methods/utils/generateRandomPolls.d.ts.map +1 -0
  367. package/dist/methods/utils/generateRandomRequestList.d.ts +10 -0
  368. package/dist/methods/utils/generateRandomRequestList.d.ts.map +1 -0
  369. package/dist/methods/utils/generateRandomWaitingRoomList.d.ts +4 -0
  370. package/dist/methods/utils/generateRandomWaitingRoomList.d.ts.map +1 -0
  371. package/dist/methods/utils/getModalPosition.d.ts +7 -0
  372. package/dist/methods/utils/getModalPosition.d.ts.map +1 -0
  373. package/dist/methods/utils/getOverlayPosition.d.ts +22 -0
  374. package/dist/methods/utils/getOverlayPosition.d.ts.map +1 -0
  375. package/dist/methods/utils/getParticipantMedia.d.ts +55 -0
  376. package/dist/methods/utils/getParticipantMedia.d.ts.map +1 -0
  377. package/dist/methods/utils/headless/getCurrentParams.d.ts +27 -0
  378. package/dist/methods/utils/headless/getCurrentParams.d.ts.map +1 -0
  379. package/dist/methods/utils/headless/getMediaStreams.d.ts +96 -0
  380. package/dist/methods/utils/headless/getMediaStreams.d.ts.map +1 -0
  381. package/dist/methods/utils/headless/getRoomReadiness.d.ts +25 -0
  382. package/dist/methods/utils/headless/getRoomReadiness.d.ts.map +1 -0
  383. package/dist/methods/utils/headless/headlessTypes.d.ts +89 -0
  384. package/dist/methods/utils/headless/headlessTypes.d.ts.map +1 -0
  385. package/dist/methods/utils/headless/index.d.ts +29 -0
  386. package/dist/methods/utils/headless/index.d.ts.map +1 -0
  387. package/dist/methods/utils/headless/mediaPermissions.d.ts +53 -0
  388. package/dist/methods/utils/headless/mediaPermissions.d.ts.map +1 -0
  389. package/dist/methods/utils/headless/mediaProduction.d.ts +177 -0
  390. package/dist/methods/utils/headless/mediaProduction.d.ts.map +1 -0
  391. package/dist/methods/utils/headless/moderation.d.ts +157 -0
  392. package/dist/methods/utils/headless/moderation.d.ts.map +1 -0
  393. package/dist/methods/utils/headless/participantState.d.ts +128 -0
  394. package/dist/methods/utils/headless/participantState.d.ts.map +1 -0
  395. package/dist/methods/utils/headless/playback.d.ts +106 -0
  396. package/dist/methods/utils/headless/playback.d.ts.map +1 -0
  397. package/dist/methods/utils/headless/roomActions.d.ts +88 -0
  398. package/dist/methods/utils/headless/roomActions.d.ts.map +1 -0
  399. package/dist/methods/utils/headless/sessionControls.d.ts +159 -0
  400. package/dist/methods/utils/headless/sessionControls.d.ts.map +1 -0
  401. package/dist/methods/utils/headless/sessionExtras.d.ts +291 -0
  402. package/dist/methods/utils/headless/sessionExtras.d.ts.map +1 -0
  403. package/dist/methods/utils/headless/sessionFeatures.d.ts +159 -0
  404. package/dist/methods/utils/headless/sessionFeatures.d.ts.map +1 -0
  405. package/dist/methods/utils/headless/viewerSession.d.ts +125 -0
  406. package/dist/methods/utils/headless/viewerSession.d.ts.map +1 -0
  407. package/dist/methods/utils/headless/virtualBackground.d.ts +72 -0
  408. package/dist/methods/utils/headless/virtualBackground.d.ts.map +1 -0
  409. package/dist/methods/utils/initialValuesState.d.ts +388 -0
  410. package/dist/methods/utils/initialValuesState.d.ts.map +1 -0
  411. package/dist/methods/utils/joinRoomOnMediaSFU.d.ts +56 -0
  412. package/dist/methods/utils/joinRoomOnMediaSFU.d.ts.map +1 -0
  413. package/dist/methods/utils/liveSubtitle.d.ts +36 -0
  414. package/dist/methods/utils/liveSubtitle.d.ts.map +1 -0
  415. package/dist/methods/utils/meetingTimeRemaining.d.ts +15 -0
  416. package/dist/methods/utils/meetingTimeRemaining.d.ts.map +1 -0
  417. package/dist/methods/utils/meetingTimer/startMeetingProgressTimer.d.ts +35 -0
  418. package/dist/methods/utils/meetingTimer/startMeetingProgressTimer.d.ts.map +1 -0
  419. package/dist/methods/utils/producer/aParams.d.ts +3 -0
  420. package/dist/methods/utils/producer/aParams.d.ts.map +1 -0
  421. package/dist/methods/utils/producer/hParams.d.ts +3 -0
  422. package/dist/methods/utils/producer/hParams.d.ts.map +1 -0
  423. package/dist/methods/utils/producer/screenParams.d.ts +3 -0
  424. package/dist/methods/utils/producer/screenParams.d.ts.map +1 -0
  425. package/dist/methods/utils/producer/vParams.d.ts +3 -0
  426. package/dist/methods/utils/producer/vParams.d.ts.map +1 -0
  427. package/dist/methods/utils/producer/videoCaptureConstraints.d.ts +145 -0
  428. package/dist/methods/utils/producer/videoCaptureConstraints.d.ts.map +1 -0
  429. package/dist/methods/utils/resolveMediaSFURoomApi.d.ts +4 -0
  430. package/dist/methods/utils/resolveMediaSFURoomApi.d.ts.map +1 -0
  431. package/dist/methods/utils/sleep.d.ts +21 -0
  432. package/dist/methods/utils/sleep.d.ts.map +1 -0
  433. package/dist/methods/utils/translationLanguages.d.ts +100 -0
  434. package/dist/methods/utils/translationLanguages.d.ts.map +1 -0
  435. package/dist/methods/utils/validateAlphanumeric.d.ts +21 -0
  436. package/dist/methods/utils/validateAlphanumeric.d.ts.map +1 -0
  437. package/dist/methods/utils/webrtc.d.ts +18 -0
  438. package/dist/methods/utils/webrtc.d.ts.map +1 -0
  439. package/dist/methods/waiting/index.d.ts +2 -0
  440. package/dist/methods/waiting/index.d.ts.map +1 -0
  441. package/dist/methods/waiting/launchWaiting.d.ts +23 -0
  442. package/dist/methods/waiting/launchWaiting.d.ts.map +1 -0
  443. package/dist/methods/waiting/respondToWaiting.d.ts +40 -0
  444. package/dist/methods/waiting/respondToWaiting.d.ts.map +1 -0
  445. package/dist/methods/welcome/handleWelcomeRequest.d.ts +47 -0
  446. package/dist/methods/welcome/handleWelcomeRequest.d.ts.map +1 -0
  447. package/dist/methods/welcome/index.d.ts +3 -0
  448. package/dist/methods/welcome/index.d.ts.map +1 -0
  449. package/dist/methods/whiteboard/captureCanvasStream.d.ts +38 -0
  450. package/dist/methods/whiteboard/captureCanvasStream.d.ts.map +1 -0
  451. package/dist/methods/whiteboard/handleStartWhiteboard.d.ts +31 -0
  452. package/dist/methods/whiteboard/handleStartWhiteboard.d.ts.map +1 -0
  453. package/dist/methods/whiteboard/handleStopWhiteboard.d.ts +25 -0
  454. package/dist/methods/whiteboard/handleStopWhiteboard.d.ts.map +1 -0
  455. package/dist/methods/whiteboard/index.d.ts +5 -0
  456. package/dist/methods/whiteboard/index.d.ts.map +1 -0
  457. package/dist/methods/whiteboard/launchConfigureWhiteboard.d.ts +23 -0
  458. package/dist/methods/whiteboard/launchConfigureWhiteboard.d.ts.map +1 -0
  459. package/dist/producers/producerEmits/joinConRoom.d.ts +54 -0
  460. package/dist/producers/producerEmits/joinConRoom.d.ts.map +1 -0
  461. package/dist/producers/producerEmits/joinLocalRoom.d.ts +30 -0
  462. package/dist/producers/producerEmits/joinLocalRoom.d.ts.map +1 -0
  463. package/dist/producers/producerEmits/joinRoom.d.ts +35 -0
  464. package/dist/producers/producerEmits/joinRoom.d.ts.map +1 -0
  465. package/dist/readme/mediasfu-platform-capabilities.webp +0 -0
  466. package/dist/sockets/SocketManager.d.ts +102 -0
  467. package/dist/sockets/SocketManager.d.ts.map +1 -0
  468. package/dist/types/shared-base-types.d.ts +656 -0
  469. package/dist/types/shared-base-types.d.ts.map +1 -0
  470. package/dist/types/types.d.ts +124 -0
  471. package/dist/types/types.d.ts.map +1 -0
  472. package/package.json +106 -99
  473. package/src/consumers/connectSendTransportScreen.ts +4 -1
  474. package/src/consumers/createSendTransport.ts +74 -20
  475. package/src/consumers/streamSuccessVideo.ts +34 -5
  476. package/src/index.native.ts +24 -1
  477. package/src/index.ts +5 -0
  478. package/src/methods/exit/confirmExit.ts +11 -4
  479. package/src/methods/utils/getParticipantMedia.ts +112 -0
  480. package/src/methods/utils/headless/getCurrentParams.ts +44 -0
  481. package/src/methods/utils/headless/getMediaStreams.ts +256 -0
  482. package/src/methods/utils/headless/getRoomReadiness.ts +49 -0
  483. package/src/methods/utils/headless/headlessTypes.ts +102 -0
  484. package/src/methods/utils/headless/index.ts +28 -0
  485. package/src/methods/utils/headless/mediaPermissions.ts +124 -0
  486. package/src/methods/utils/headless/mediaProduction.ts +505 -0
  487. package/src/methods/utils/headless/moderation.ts +455 -0
  488. package/src/methods/utils/headless/participantState.ts +254 -0
  489. package/src/methods/utils/headless/playback.ts +336 -0
  490. package/src/methods/utils/headless/roomActions.ts +230 -0
  491. package/src/methods/utils/headless/sessionControls.ts +335 -0
  492. package/src/methods/utils/headless/sessionExtras.ts +593 -0
  493. package/src/methods/utils/headless/sessionFeatures.ts +480 -0
  494. package/src/methods/utils/headless/viewerSession.ts +246 -0
  495. package/src/methods/utils/headless/virtualBackground.ts +265 -0
  496. package/src/methods/utils/resolveMediaSFURoomApi.ts +2 -2
@@ -0,0 +1,177 @@
1
+ import { HeadlessOptions } from './headlessTypes';
2
+ import { HeadlessActionResult } from './roomActions';
3
+ export type ProducerKind = 'video' | 'audio' | 'screen';
4
+ export interface CaptureLimits {
5
+ width: number;
6
+ height: number;
7
+ frameRate: number;
8
+ }
9
+ export interface GetCaptureLimitsOptions extends HeadlessOptions {
10
+ /** Camera and screen share have separate ceilings. Defaults to camera. */
11
+ kind?: ProducerKind;
12
+ }
13
+ export type GetCaptureLimitsType = (options: GetCaptureLimitsOptions) => CaptureLimits;
14
+ /**
15
+ * The room's allowed capture ceiling — the same `vidCons` / `frameRate` that
16
+ * `clickVideo` feeds to `getUserMedia`. Zero means "no ceiling published".
17
+ */
18
+ export declare function getCaptureLimits({ parameters, kind }: GetCaptureLimitsOptions): CaptureLimits;
19
+ export interface ProduceMediaOptions extends HeadlessOptions {
20
+ /** The stream to publish. Must carry at least one live track of the right kind. */
21
+ stream: MediaStream;
22
+ /** What to publish it as. */
23
+ kind: ProducerKind;
24
+ /**
25
+ * Publish even when the source exceeds the room's `vidCons`/`frameRate`
26
+ * ceiling and cannot be clamped. Off by default: the ceiling is a room
27
+ * entitlement, so bypassing it must be a deliberate, visible choice.
28
+ */
29
+ allowUnconstrained?: boolean;
30
+ }
31
+ export type ProduceMediaType = (options: ProduceMediaOptions) => Promise<HeadlessActionResult>;
32
+ /**
33
+ * Publish **any** MediaStream to the room — not just the camera or microphone.
34
+ *
35
+ * `clickVideo` / `clickAudio` call `getUserMedia` internally, so they can only
36
+ * ever publish a real device. Anything else — a `<canvas>` capture, a `<video>`
37
+ * element playing a file, a Web Audio destination, a processed or synthesised
38
+ * track, a virtual camera — previously required monkey-patching
39
+ * `navigator.mediaDevices.getUserMedia` around the call, which is racy and
40
+ * leaks if the control throws. This publishes your stream directly.
41
+ *
42
+ * The stream stays yours: stop its tracks when you are done, or call
43
+ * {@link stopProducing} to tear the producer down first.
44
+ *
45
+ * @example Publish a canvas as your camera
46
+ * ```ts
47
+ * import { produceMedia } from 'mediasfu-shared';
48
+ *
49
+ * const canvas = document.querySelector('canvas')!;
50
+ * const stream = canvas.captureStream(30);
51
+ * await produceMedia({ parameters, stream, kind: 'video' });
52
+ * ```
53
+ *
54
+ * @example Publish a video file's audio and video
55
+ * ```ts
56
+ * const el = document.querySelector('video')!;
57
+ * const stream = (el as any).captureStream();
58
+ * await produceMedia({ parameters, stream, kind: 'video' });
59
+ * await produceMedia({ parameters, stream, kind: 'audio' });
60
+ * ```
61
+ */
62
+ export declare function produceMedia({ parameters, stream, kind, allowUnconstrained, }: ProduceMediaOptions): Promise<HeadlessActionResult>;
63
+ export interface StopProducingOptions extends HeadlessOptions {
64
+ kind: ProducerKind;
65
+ }
66
+ export type StopProducingType = (options: StopProducingOptions) => Promise<HeadlessActionResult>;
67
+ /**
68
+ * Tear down one of your producers without touching the others.
69
+ *
70
+ * `clickVideo`/`clickAudio` toggle capture *and* transport together. When you
71
+ * published a custom stream you usually want to stop only the transport and
72
+ * keep owning the stream (to swap sources without a visible gap, for example).
73
+ *
74
+ * @example Swap the published camera for a canvas without dropping the call
75
+ * ```ts
76
+ * await stopProducing({ parameters, kind: 'video' });
77
+ * await produceMedia({ parameters, stream: canvasStream, kind: 'video' });
78
+ * ```
79
+ */
80
+ export declare function stopProducing({ parameters, kind, }: StopProducingOptions): Promise<HeadlessActionResult>;
81
+ export interface ProduceCanvasOptions extends HeadlessOptions {
82
+ canvas: HTMLCanvasElement;
83
+ /** Capture frame rate. Defaults to 30. */
84
+ frameRate?: number;
85
+ /** Publish as the camera (default) or as a screen share. */
86
+ as?: 'video' | 'screen';
87
+ }
88
+ export type ProduceCanvasType = (options: ProduceCanvasOptions) => Promise<HeadlessActionResult & {
89
+ stream: MediaStream | null;
90
+ }>;
91
+ /**
92
+ * Publish a `<canvas>` as video — slides, a whiteboard, a game, a generated
93
+ * overlay, a test pattern.
94
+ *
95
+ * Returns the captured stream so you can stop its tracks when finished.
96
+ *
97
+ * @example
98
+ * ```ts
99
+ * const { ok, stream } = await produceCanvas({ parameters, canvas, frameRate: 15 });
100
+ * // later
101
+ * stream?.getTracks().forEach((track) => track.stop());
102
+ * ```
103
+ */
104
+ export declare function produceCanvas({ parameters, canvas, frameRate, as, }: ProduceCanvasOptions): Promise<HeadlessActionResult & {
105
+ stream: MediaStream | null;
106
+ }>;
107
+ export interface ProduceElementOptions extends HeadlessOptions {
108
+ /** A playing `<video>` or `<audio>` element. */
109
+ element: HTMLMediaElement;
110
+ /** Publish the video track. Defaults to true for `<video>`. */
111
+ withVideo?: boolean;
112
+ /** Publish the audio track. Defaults to true. */
113
+ withAudio?: boolean;
114
+ }
115
+ export type ProduceElementType = (options: ProduceElementOptions) => Promise<HeadlessActionResult & {
116
+ stream: MediaStream | null;
117
+ }>;
118
+ /**
119
+ * Publish a playing `<video>` or `<audio>` element — media co-watching, a
120
+ * pre-recorded intro, background music, an HLS or MP4 source.
121
+ *
122
+ * The element must actually be playing: a paused element captures no frames, and
123
+ * browsers block autoplay with audio until the user has interacted with the page.
124
+ *
125
+ * @example
126
+ * ```ts
127
+ * const el = document.querySelector('video')!;
128
+ * await el.play();
129
+ * await produceElement({ parameters, element: el });
130
+ * ```
131
+ */
132
+ export declare function produceElement({ parameters, element, withVideo, withAudio, }: ProduceElementOptions): Promise<HeadlessActionResult & {
133
+ stream: MediaStream | null;
134
+ }>;
135
+ export interface ProduceDisplayOptions extends HeadlessOptions {
136
+ /** Passed to `getDisplayMedia`. Defaults to `{ video: true }`. */
137
+ constraints?: DisplayMediaStreamOptions;
138
+ /** Also publish the captured system/tab audio when the user shares it. */
139
+ withAudio?: boolean;
140
+ }
141
+ export type ProduceDisplayType = (options: ProduceDisplayOptions) => Promise<HeadlessActionResult & {
142
+ stream: MediaStream | null;
143
+ }>;
144
+ /**
145
+ * Start a screen share from a headless surface.
146
+ *
147
+ * `getDisplayMedia` must be called from a user gesture, so invoke this directly
148
+ * in a click handler — not after an `await`.
149
+ *
150
+ * @example
151
+ * ```tsx
152
+ * <button onClick={() => produceDisplay({ parameters })}>Share screen</button>
153
+ * ```
154
+ */
155
+ export declare function produceDisplay({ parameters, constraints, withAudio, }: ProduceDisplayOptions): Promise<HeadlessActionResult & {
156
+ stream: MediaStream | null;
157
+ }>;
158
+ export interface ReplaceProducerTrackOptions extends HeadlessOptions {
159
+ /** The replacement track. Its kind decides which producer is swapped. */
160
+ track: MediaStreamTrack;
161
+ }
162
+ export type ReplaceProducerTrackType = (options: ReplaceProducerTrackOptions) => Promise<HeadlessActionResult>;
163
+ /**
164
+ * Swap the track on a live producer without renegotiating.
165
+ *
166
+ * This is the seamless path for switching camera, applying or removing a
167
+ * background effect, or moving between media sources: remote participants see
168
+ * no interruption, because the producer and its transport stay up.
169
+ *
170
+ * @example
171
+ * ```ts
172
+ * const processed = applyBackgroundBlur(cameraTrack);
173
+ * await replaceProducerTrack({ parameters, track: processed });
174
+ * ```
175
+ */
176
+ export declare function replaceProducerTrack({ parameters, track, }: ReplaceProducerTrackOptions): Promise<HeadlessActionResult>;
177
+ //# sourceMappingURL=mediaProduction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mediaProduction.d.ts","sourceRoot":"","sources":["../../../../src/methods/utils/headless/mediaProduction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ import { HeadlessOptions } from './headlessTypes';
2
+ import { HeadlessActionResult } from './roomActions';
3
+ /** The co-host responsibility keys MediaSFU recognises. */
4
+ export type ModerationArea = 'media' | 'participants' | 'chat' | 'waiting';
5
+ export interface ModerationPermissions {
6
+ /** True when the local user is the host (islevel '2'). */
7
+ isHost: boolean;
8
+ /** True when the local user is the room's co-host. */
9
+ isCoHost: boolean;
10
+ /** Turn other participants' camera/mic/screen off. */
11
+ canControlMedia: boolean;
12
+ /** Remove or ban participants. */
13
+ canManageParticipants: boolean;
14
+ /** Moderate chat. */
15
+ canManageChat: boolean;
16
+ /** Admit or deny people in the waiting room. */
17
+ canManageWaitingRoom: boolean;
18
+ }
19
+ export type GetModerationPermissionsType = (options: HeadlessOptions) => ModerationPermissions;
20
+ /**
21
+ * What the local user is allowed to moderate.
22
+ *
23
+ * MediaSFU's rule is `islevel === '2' || (coHost === member && <area>.value)`,
24
+ * and it is enforced *inside* each action — an unauthorised call is swallowed
25
+ * with an alert rather than returning an error. That makes it very easy to ship
26
+ * a moderation button that silently does nothing for co-hosts. Gate your UI on
27
+ * this instead.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * import { getModerationPermissions } from 'mediasfu-shared';
32
+ *
33
+ * const perms = getModerationPermissions({ parameters });
34
+ * <button disabled={!perms.canControlMedia}>Mute everyone</button>
35
+ * ```
36
+ */
37
+ export declare function getModerationPermissions({ parameters, }: HeadlessOptions): ModerationPermissions;
38
+ export interface SetParticipantMediaOptions extends HeadlessOptions {
39
+ /** Participant display name. */
40
+ name?: string;
41
+ /** Participant id. Takes precedence over `name`. */
42
+ id?: string;
43
+ /** Which media to switch off. */
44
+ kind: 'audio' | 'video' | 'screenshare' | 'all';
45
+ }
46
+ export type SetParticipantMediaType = (options: SetParticipantMediaOptions) => Promise<HeadlessActionResult>;
47
+ /**
48
+ * Turn a participant's media off as host or authorised co-host.
49
+ *
50
+ * This is one-directional by design: MediaSFU lets a moderator *stop* someone's
51
+ * camera, microphone or screen share, but cannot start it on their behalf — the
52
+ * participant must re-enable it themselves.
53
+ *
54
+ * The SDK's own `controlMedia` consumer only emits for `type: 'audio'` and
55
+ * `type: 'video'`; `'all'` and `'screenshare'` fall through its guard and do
56
+ * nothing. This helper emits the `controlMedia` event directly with the same
57
+ * permission and self-protection checks applied uniformly, so every kind works.
58
+ * Hosts (`islevel === '2'`) cannot be muted by anyone, including other hosts.
59
+ *
60
+ * @example
61
+ * ```ts
62
+ * import { setParticipantMedia } from 'mediasfu-shared';
63
+ *
64
+ * await setParticipantMedia({ parameters, name: 'Paul', kind: 'video' });
65
+ * await setParticipantMedia({ parameters, name: 'Paul', kind: 'all' });
66
+ * ```
67
+ */
68
+ export declare function setParticipantMedia({ parameters, name, id, kind, }: SetParticipantMediaOptions): Promise<HeadlessActionResult>;
69
+ export interface ModerateParticipantOptions extends HeadlessOptions {
70
+ name?: string;
71
+ id?: string;
72
+ }
73
+ /** Mute a participant's microphone. See {@link setParticipantMedia}. */
74
+ export declare function muteParticipant(options: ModerateParticipantOptions): Promise<HeadlessActionResult>;
75
+ /** Turn a participant's camera off. See {@link setParticipantMedia}. */
76
+ export declare function disableParticipantVideo(options: ModerateParticipantOptions): Promise<HeadlessActionResult>;
77
+ /** Stop a participant's screen share. See {@link setParticipantMedia}. */
78
+ export declare function stopParticipantScreenShare(options: ModerateParticipantOptions): Promise<HeadlessActionResult>;
79
+ export interface MuteEveryoneOptions extends HeadlessOptions {
80
+ /** Which media to switch off for everyone. Defaults to `audio`. */
81
+ kind?: 'audio' | 'video' | 'screenshare' | 'all';
82
+ }
83
+ export type MuteEveryoneType = (options: MuteEveryoneOptions) => Promise<HeadlessActionResult>;
84
+ /**
85
+ * Turn media off for every non-host participant.
86
+ *
87
+ * MediaSFU has no bulk primitive, so this fans out per participant. Hosts and
88
+ * the local user are skipped. Succeeds if at least one participant was
89
+ * actioned; reports the failure otherwise.
90
+ */
91
+ export declare function muteEveryone({ parameters, kind, }: MuteEveryoneOptions): Promise<HeadlessActionResult>;
92
+ export type RemoveParticipantType = (options: ModerateParticipantOptions) => Promise<HeadlessActionResult>;
93
+ /**
94
+ * Remove a participant from the room.
95
+ *
96
+ * @example
97
+ * ```ts
98
+ * await removeParticipant({ parameters, name: 'Paul' });
99
+ * ```
100
+ */
101
+ export declare function removeParticipant({ parameters, name, id, }: ModerateParticipantOptions): Promise<HeadlessActionResult>;
102
+ export interface RespondToWaitingParticipantOptions extends HeadlessOptions {
103
+ name?: string;
104
+ id?: string;
105
+ /** True to admit, false to deny. */
106
+ admit: boolean;
107
+ }
108
+ export type RespondToWaitingParticipantType = (options: RespondToWaitingParticipantOptions) => Promise<HeadlessActionResult>;
109
+ /**
110
+ * Admit or deny somebody waiting to join.
111
+ *
112
+ * Reads `waitingRoomList` off the bag, so you only supply the person's name or
113
+ * id and whether to let them in.
114
+ *
115
+ * @example
116
+ * ```ts
117
+ * for (const person of parameters.waitingRoomList ?? []) {
118
+ * await respondToWaitingParticipant({ parameters, id: person.id, admit: true });
119
+ * }
120
+ * ```
121
+ */
122
+ export declare function respondToWaitingParticipant({ parameters, name, id, admit, }: RespondToWaitingParticipantOptions): Promise<HeadlessActionResult>;
123
+ export interface RespondToParticipantRequestOptions extends HeadlessOptions {
124
+ /** The request id from `parameters.requestList`. */
125
+ requestId?: string;
126
+ /** Or match by requester name. */
127
+ name?: string;
128
+ /** True to approve, false to reject. */
129
+ approve: boolean;
130
+ }
131
+ export type RespondToParticipantRequestType = (options: RespondToParticipantRequestOptions) => Promise<HeadlessActionResult>;
132
+ /**
133
+ * Approve or reject a participant request (raise hand, ask to share, ask to
134
+ * speak). Requests live on `parameters.requestList`; each carries an `icon`
135
+ * naming the capability being asked for.
136
+ */
137
+ export declare function respondToParticipantRequest({ parameters, requestId, name, approve, }: RespondToParticipantRequestOptions): Promise<HeadlessActionResult>;
138
+ export interface SetCoHostOptions extends HeadlessOptions {
139
+ /** Participant to promote. Pass '' to clear the current co-host. */
140
+ name: string;
141
+ /** Areas the co-host may moderate. Defaults to media + participants. */
142
+ areas?: ModerationArea[];
143
+ }
144
+ export type SetCoHostType = (options: SetCoHostOptions) => Promise<HeadlessActionResult>;
145
+ /**
146
+ * Promote a participant to co-host and choose what they may moderate.
147
+ *
148
+ * Only the host may do this. Areas not listed are explicitly disabled, so this
149
+ * sets the complete responsibility set rather than merging with the previous one.
150
+ *
151
+ * @example
152
+ * ```ts
153
+ * await setCoHost({ parameters, name: 'Paul', areas: ['media', 'waiting'] });
154
+ * ```
155
+ */
156
+ export declare function setCoHost({ parameters, name, areas, }: SetCoHostOptions): Promise<HeadlessActionResult>;
157
+ //# sourceMappingURL=moderation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moderation.d.ts","sourceRoot":"","sources":["../../../../src/methods/utils/headless/moderation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ import { Participant } from '../../../types/types';
2
+ import { HeadlessOptions } from './headlessTypes';
3
+ export interface ParticipantMediaState {
4
+ participant: Participant | null;
5
+ /** The participant's own display name, or '' when unresolved. */
6
+ name: string;
7
+ /** True when this row is the local user. */
8
+ isSelf: boolean;
9
+ /** True when the participant is a host (islevel '2'). */
10
+ isHost: boolean;
11
+ /** True when the participant is publishing a camera. */
12
+ hasVideo: boolean;
13
+ /** True when the participant is publishing a microphone. */
14
+ hasAudio: boolean;
15
+ /** True when the participant's microphone is muted. */
16
+ muted: boolean;
17
+ /** The camera producer id, or '' when not publishing. */
18
+ videoProducerId: string;
19
+ /** The microphone producer id, or '' when not publishing. */
20
+ audioProducerId: string;
21
+ }
22
+ export interface GetParticipantMediaStateOptions extends HeadlessOptions {
23
+ /** Match by display name. */
24
+ name?: string;
25
+ /** Match by participant id. Takes precedence over `name`. */
26
+ id?: string;
27
+ }
28
+ export type GetParticipantMediaStateType = (options: GetParticipantMediaStateOptions) => ParticipantMediaState;
29
+ /**
30
+ * Whether a participant is publishing, and what to label them.
31
+ *
32
+ * "Is this person on camera?" is not `participant.muted` and not the presence of
33
+ * a stream in your grid — it is whether `videoID` holds a real producer
34
+ * reference. MediaSFU writes the string `'none'` rather than an empty value when
35
+ * there is no producer, which is why a naive truthiness check reports everyone
36
+ * as publishing.
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * import { getParticipantMediaState } from 'mediasfu-shared';
41
+ *
42
+ * const paul = getParticipantMediaState({ parameters, name: 'Paul' });
43
+ * if (paul.hasVideo) renderCamera(paul.videoProducerId);
44
+ * ```
45
+ */
46
+ export declare function getParticipantMediaState({ parameters, name, id, }: GetParticipantMediaStateOptions): ParticipantMediaState;
47
+ export type ListParticipantMediaStatesType = (options: HeadlessOptions) => ParticipantMediaState[];
48
+ /** {@link getParticipantMediaState} for everyone currently in the room. */
49
+ export declare function listParticipantMediaStates({ parameters, }: HeadlessOptions): ParticipantMediaState[];
50
+ export interface ActiveSpeaker {
51
+ /** Loudest participant's display name, or '' when the room is quiet. */
52
+ name: string;
53
+ /** That participant's average loudness. */
54
+ level: number;
55
+ participant: Participant | null;
56
+ }
57
+ export type GetActiveSpeakerType = (options: HeadlessOptions) => ActiveSpeaker;
58
+ /**
59
+ * The loudest participant right now.
60
+ *
61
+ * Reads `audioDecibels`, which the SDK maintains per participant. MediaSFU's own
62
+ * grids treat roughly 127.5 as the noise floor, so quieter rooms report no
63
+ * active speaker rather than flickering between people.
64
+ *
65
+ * @example
66
+ * ```ts
67
+ * const speaker = getActiveSpeaker({ parameters });
68
+ * if (speaker.name) highlight(speaker.name);
69
+ * ```
70
+ */
71
+ export declare function getActiveSpeaker({ parameters }: HeadlessOptions): ActiveSpeaker;
72
+ export interface MediaDeviceList {
73
+ cameras: MediaDeviceInfo[];
74
+ microphones: MediaDeviceInfo[];
75
+ }
76
+ export type ListMediaDevicesType = (options: HeadlessOptions) => Promise<MediaDeviceList>;
77
+ /**
78
+ * Cameras and microphones available for a device picker.
79
+ *
80
+ * Uses the SDK's own `getMediaDevicesList` when the bag exposes it, so the
81
+ * result reflects the same `mediaDevices` instance the SDK captures with;
82
+ * otherwise falls back to `navigator.mediaDevices.enumerateDevices()`.
83
+ *
84
+ * Labels are blank until the user has granted permission once — call this after
85
+ * the first successful capture if you need readable device names.
86
+ *
87
+ * @example
88
+ * ```ts
89
+ * const { cameras } = await listMediaDevices({ parameters });
90
+ * await runMediaControl({
91
+ * parameters,
92
+ * control: 'switchVideo',
93
+ * extra: { videoPreference: cameras[1].deviceId },
94
+ * });
95
+ * ```
96
+ */
97
+ export declare function listMediaDevices({ parameters, }: HeadlessOptions): Promise<MediaDeviceList>;
98
+ export interface SelectedDevices {
99
+ /** Device id of the camera currently in use, or '' when none is selected. */
100
+ cameraId: string;
101
+ /** Device id of the microphone currently in use, or '' when none is selected. */
102
+ microphoneId: string;
103
+ /** Cameras the SDK has enumerated for this room. */
104
+ cameras: MediaDeviceInfo[];
105
+ /** Microphones the SDK has enumerated for this room. */
106
+ microphones: MediaDeviceInfo[];
107
+ }
108
+ export type GetSelectedDevicesType = (options: HeadlessOptions) => SelectedDevices;
109
+ /**
110
+ * Which camera and microphone the SDK is actually using, plus the device lists
111
+ * it has already enumerated.
112
+ *
113
+ * Unlike {@link listMediaDevices} this is synchronous and needs no permission
114
+ * prompt: it reads `userDefaultVideoInputDevice` / `userDefaultAudioInputDevice`
115
+ * and the `videoInputs` / `audioInputs` the SDK populated during setup. Use it
116
+ * to mark the current entry in a device picker; use `listMediaDevices` when you
117
+ * need a freshly enumerated list.
118
+ *
119
+ * @example
120
+ * ```tsx
121
+ * const { cameras, cameraId } = getSelectedDevices({ parameters });
122
+ * <select value={cameraId} onChange={(e) => room.controls.selectCamera(e.target.value)}>
123
+ * {cameras.map((d) => <option key={d.deviceId} value={d.deviceId}>{d.label}</option>)}
124
+ * </select>
125
+ * ```
126
+ */
127
+ export declare function getSelectedDevices({ parameters }: HeadlessOptions): SelectedDevices;
128
+ //# sourceMappingURL=participantState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"participantState.d.ts","sourceRoot":"","sources":["../../../../src/methods/utils/headless/participantState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAsB,MAAM,iBAAiB,CAAC;AAkBtE,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,EAAE,OAAO,CAAC;IAChB,yDAAyD;IACzD,MAAM,EAAE,OAAO,CAAC;IAChB,wDAAwD;IACxD,QAAQ,EAAE,OAAO,CAAC;IAClB,4DAA4D;IAC5D,QAAQ,EAAE,OAAO,CAAC;IAClB,uDAAuD;IACvD,KAAK,EAAE,OAAO,CAAC;IACf,yDAAyD;IACzD,eAAe,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,+BAAgC,SAAQ,eAAe;IACtE,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,4BAA4B,GAAG,CACzC,OAAO,EAAE,+BAA+B,KACrC,qBAAqB,CAAC;AAE3B;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,UAAU,EACV,IAAS,EACT,EAAO,GACR,EAAE,+BAA+B,GAAG,qBAAqB,CA0BzD;AAED,MAAM,MAAM,8BAA8B,GAAG,CAC3C,OAAO,EAAE,eAAe,KACrB,qBAAqB,EAAE,CAAC;AAE7B,2EAA2E;AAC3E,wBAAgB,0BAA0B,CAAC,EACzC,UAAU,GACX,EAAE,eAAe,GAAG,qBAAqB,EAAE,CAS3C;AAED,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,eAAe,KAAK,aAAa,CAAC;AAE/E;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,UAAU,EAAE,EAAE,eAAe,GAAG,aAAa,CAkB/E;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,WAAW,EAAE,eAAe,EAAE,CAAC;CAChC;AAED,MAAM,MAAM,oBAAoB,GAAG,CACjC,OAAO,EAAE,eAAe,KACrB,OAAO,CAAC,eAAe,CAAC,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,UAAU,GACX,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAqB5C;AAED,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,YAAY,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,wDAAwD;IACxD,WAAW,EAAE,eAAe,EAAE,CAAC;CAChC;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,eAAe,KAAK,eAAe,CAAC;AAEnF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,UAAU,EAAE,EAAE,eAAe,GAAG,eAAe,CAQnF"}
@@ -0,0 +1,106 @@
1
+ import { HeadlessOptions } from './headlessTypes';
2
+ /**
3
+ * Explicit playback: HLS and WHEP.
4
+ *
5
+ * **This is deliberately not part of the media-card surface.** WebRTC media is
6
+ * *auto-consumed* — the SDK subscribes for you, and `getRemoteVideoStreams` /
7
+ * `getAudioGridComponents` hand you what already arrived. HLS and WHEP are the
8
+ * opposite: nothing is consumed until you ask, because each one opens a
9
+ * connection the room did not ask for and would otherwise pay for.
10
+ *
11
+ * So the API here is imperative — `attachPlayback` / `detachPlayback` — rather
12
+ * than a reactive getter. Mixing these into the media cards would mean every
13
+ * room silently opened an HLS or WHEP connection whether or not anything
14
+ * rendered it.
15
+ *
16
+ * When to reach for which:
17
+ *
18
+ * | | latency | cost per viewer | use it for |
19
+ * | --- | --- | --- | --- |
20
+ * | WebRTC (auto) | sub-second | an SFU consumer | anyone who takes part |
21
+ * | WHEP | sub-second | an SFU consumer | standards-based egress to non-SDK players |
22
+ * | HLS | seconds | a CDN request | audiences too large to fan out over the SFU |
23
+ *
24
+ * A large passive audience on HLS is the reason this exists: it moves the
25
+ * expensive part — media fan-out — off the SFU.
26
+ */
27
+ export type PlaybackProtocol = 'hls' | 'whep';
28
+ export interface PlaybackSource {
29
+ protocol: PlaybackProtocol;
30
+ url: string;
31
+ }
32
+ /**
33
+ * Playback URLs the server has published for this room.
34
+ *
35
+ * Returns nothing when the room has none — HLS and WHEP are provisioned
36
+ * server-side, so absence means "not enabled for this room", not an error.
37
+ */
38
+ export declare function getPlaybackSources({ parameters }: HeadlessOptions): PlaybackSource[];
39
+ /** A running playback. Always `detachPlayback` it — none of this is garbage-collected. */
40
+ export interface PlaybackHandle {
41
+ protocol: PlaybackProtocol;
42
+ url: string;
43
+ /** The media, when the protocol produces one directly (WHEP). */
44
+ stream: MediaStream | null;
45
+ /** Release the connection, the player, and the element's source. */
46
+ detach: () => void;
47
+ }
48
+ export interface AttachPlaybackOptions {
49
+ /** Playback URL, or a `PlaybackSource` from `getPlaybackSources`. */
50
+ source: string | PlaybackSource;
51
+ /** The element to play into. Required for HLS; optional for WHEP. */
52
+ video?: HTMLVideoElement | null;
53
+ /** Force a protocol. Inferred from the URL when omitted. */
54
+ protocol?: PlaybackProtocol;
55
+ /**
56
+ * Factory returning an hls.js instance, e.g. `() => new Hls({ lowLatencyMode: true })`.
57
+ *
58
+ * Required for HLS anywhere except Safari, and injected rather than imported
59
+ * so hls.js never becomes a dependency of this SDK — most rooms never play
60
+ * HLS, and React Native cannot use it at all.
61
+ */
62
+ hlsFactory?: () => any;
63
+ /** Extra headers for the WHEP POST, e.g. an auth token. */
64
+ headers?: Record<string, string>;
65
+ /** ICE servers for WHEP. Defaults to the room's own when available. */
66
+ iceServers?: RTCIceServer[];
67
+ }
68
+ export type AttachPlaybackType = (options: AttachPlaybackOptions) => Promise<PlaybackHandle>;
69
+ /**
70
+ * Start an explicit playback.
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * import Hls from 'hls.js';
75
+ *
76
+ * const [source] = getPlaybackSources({ parameters });
77
+ * const handle = await attachPlayback({
78
+ * source,
79
+ * video: videoRef.current,
80
+ * hlsFactory: () => new Hls({ lowLatencyMode: true }),
81
+ * });
82
+ * // later, always:
83
+ * detachPlayback(handle);
84
+ * ```
85
+ */
86
+ export declare function attachPlayback({ source, video, protocol, hlsFactory, headers, iceServers, }: AttachPlaybackOptions): Promise<PlaybackHandle>;
87
+ /** Stop a playback and release everything it holds. Safe to call twice. */
88
+ export declare function detachPlayback(handle: PlaybackHandle | null | undefined): void;
89
+ export interface PublishWhipOptions {
90
+ /** The WHIP endpoint. */
91
+ url: string;
92
+ /** The stream to publish. */
93
+ stream: MediaStream;
94
+ headers?: Record<string, string>;
95
+ iceServers?: RTCIceServer[];
96
+ }
97
+ /**
98
+ * Publish a stream to a WHIP endpoint.
99
+ *
100
+ * The symmetric counterpart of WHEP, and equally explicit. This is *not* how
101
+ * you publish into a MediaSFU room — use `produceMedia` for that, which goes
102
+ * through the room's own transport and respects its capture entitlements. WHIP
103
+ * is for pushing to a standards-based ingest that is not this room.
104
+ */
105
+ export declare function publishWhip({ url, stream, headers, iceServers, }: PublishWhipOptions): Promise<PlaybackHandle>;
106
+ //# sourceMappingURL=playback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playback.d.ts","sourceRoot":"","sources":["../../../../src/methods/utils/headless/playback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAsB,MAAM,iBAAiB,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,MAAM,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,UAAU,EAAE,EAAE,eAAe,GAAG,cAAc,EAAE,CASpF;AAED,0FAA0F;AAC1F,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,iEAAiE;IACjE,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,oEAAoE;IACpE,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC;IAChC,qEAAqE;IACrE,KAAK,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChC,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC;IACvB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,uEAAuE;IACvE,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;CAC7B;AAkJD,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAE7F;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,cAAc,CAAC,EACnC,MAAM,EACN,KAAK,EACL,QAAQ,EACR,UAAU,EACV,OAAO,EACP,UAAU,GACX,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CAUjD;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAG9E;AAMD,MAAM,WAAW,kBAAkB;IACjC,yBAAyB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,EAChC,GAAG,EACH,MAAM,EACN,OAAY,EACZ,UAAU,GACX,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAsC9C"}