@snapcall/stream-ui 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/stream-ui.js CHANGED
@@ -4,11 +4,11 @@ var $jQDcL$reacthottoast = require("react-hot-toast");
4
4
  var $jQDcL$styledcomponents = require("styled-components");
5
5
  var $jQDcL$react = require("react");
6
6
  require("inobounce");
7
+ var $jQDcL$bowser = require("bowser");
7
8
  var $jQDcL$uuid = require("uuid");
8
9
  var $jQDcL$protooclient = require("protoo-client");
9
10
  var $jQDcL$mediasoupclient = require("mediasoup-client");
10
11
  var $jQDcL$sentrybrowser = require("@sentry/browser");
11
- var $jQDcL$bowser = require("bowser");
12
12
  var $jQDcL$qrcode = require("qrcode");
13
13
 
14
14
  function $parcel$export(e, n, v, s) {
@@ -51,6 +51,7 @@ const $3d32ce4f72782140$export$42a852a2b6b56249 = (0, ($parcel$interopDefault($j
51
51
  flex-direction: row;
52
52
  align-items: center;
53
53
  width: ${(props)=>props.width};
54
+ max-width: 100%;
54
55
  padding-top: 10px;
55
56
  padding-right: ${(props)=>props.hasButton ? 15 : 20}px;
56
57
  padding-bottom: 10px;
@@ -63,6 +64,7 @@ const $3d32ce4f72782140$export$42a852a2b6b56249 = (0, ($parcel$interopDefault($j
63
64
  `;
64
65
  const $3d32ce4f72782140$export$8f314e512d92575f = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
65
66
  display: flex;
67
+ overflow: hidden;
66
68
 
67
69
  svg,
68
70
  img {
@@ -102,8 +104,8 @@ const $3d32ce4f72782140$export$c16180567ca88cd7 = (0, ($parcel$interopDefault($j
102
104
  const $3d32ce4f72782140$export$353f5b6fc5456de1 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
103
105
  display: flex;
104
106
  color: #fff;
105
- background-color: #242324;
106
- border: 2px solid #242324;
107
+ background-color: #2d2d2d;
108
+ border: 2px solid #343434;
107
109
  border-radius: 50px;
108
110
  padding: 4px 10px 6px;
109
111
  font-weight: 700;
@@ -112,7 +114,7 @@ const $3d32ce4f72782140$export$353f5b6fc5456de1 = (0, ($parcel$interopDefault($j
112
114
  box-sizing: border-box;
113
115
 
114
116
  &:hover {
115
- border: 2px solid #8d8d8d;
117
+ border: 2px solid #8d8d8d !important;
116
118
  }
117
119
  `;
118
120
  const $3d32ce4f72782140$export$caedbd4804e2ac32 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
@@ -146,17 +148,17 @@ const $3d32ce4f72782140$export$ccff7fe96c96c97 = (0, ($parcel$interopDefault($jQ
146
148
  `;
147
149
  const $3d32ce4f72782140$export$eed52d0855891930 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
148
150
  display: flex;
149
- min-width: 13px;
150
- min-height: 13px;
151
- max-height: 13px;
152
- max-width: 13px;
151
+ min-width: 14px;
152
+ min-height: 14px;
153
+ max-height: 14px;
154
+ max-width: 14px;
153
155
  margin-right: 5px;
154
156
  overflow: hidden;
155
157
 
156
158
  img,
157
159
  svg {
158
- width: 13px;
159
- height: 13px;
160
+ width: 14px;
161
+ height: 14px;
160
162
  border-radius: 50px;
161
163
  box-sizing: border-box;
162
164
  object-fit: cover;
@@ -164,6 +166,18 @@ const $3d32ce4f72782140$export$eed52d0855891930 = (0, ($parcel$interopDefault($j
164
166
  `;
165
167
 
166
168
 
169
+ const $c0a266a61addea66$export$5640675ad9afe3e2 = (event)=>{
170
+ event.currentTarget.onerror = null;
171
+ const imageContainer = event.currentTarget?.parentElement;
172
+ const notificationContainer = imageContainer?.parentElement;
173
+ if (notificationContainer) notificationContainer.style.paddingLeft = "20px";
174
+ imageContainer?.remove();
175
+ };
176
+ const $c0a266a61addea66$export$d8de94b16800bb18 = (event)=>{
177
+ event.currentTarget.onerror = null;
178
+ const imageContainer = event.currentTarget?.parentElement;
179
+ imageContainer?.remove();
180
+ };
167
181
  const $c0a266a61addea66$export$14834abbfce3b8cd = ({ children: children , options: options = {} })=>{
168
182
  const width = options.width || "auto";
169
183
  const backgroundColor = options.backgroundColor || "rgba(45, 45, 45, 0.75)";
@@ -176,7 +190,8 @@ const $c0a266a61addea66$export$14834abbfce3b8cd = ({ children: children , option
176
190
  options.icon && (typeof options.icon === "string" ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3d32ce4f72782140$export$8f314e512d92575f), {
177
191
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("img", {
178
192
  alt: "Icon",
179
- src: options.icon
193
+ src: options.icon,
194
+ onError: $c0a266a61addea66$export$5640675ad9afe3e2
180
195
  })
181
196
  }) : /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3d32ce4f72782140$export$8f314e512d92575f), {
182
197
  children: options.icon
@@ -215,12 +230,14 @@ const $c0a266a61addea66$export$14834abbfce3b8cd = ({ children: children , option
215
230
  ]
216
231
  }),
217
232
  options.button && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $3d32ce4f72782140$export$353f5b6fc5456de1), {
233
+ style: options.button.style,
218
234
  onClick: options.button.action,
219
235
  children: [
220
236
  options.button.icon && (typeof options.button.icon === "string" ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3d32ce4f72782140$export$caedbd4804e2ac32), {
221
237
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("img", {
222
238
  alt: "Button icon",
223
- src: options.button.icon
239
+ src: options.button.icon,
240
+ onError: $c0a266a61addea66$export$d8de94b16800bb18
224
241
  })
225
242
  }) : /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $3d32ce4f72782140$export$caedbd4804e2ac32), {
226
243
  children: options.button.icon
@@ -298,6 +315,7 @@ const $84c6cbcbb594d072$export$3a57e165650c636f = (message, options = {})=>{
298
315
 
299
316
 
300
317
 
318
+
301
319
  const $6a90fae7e584afd4$var$audioContextConstructor = window.AudioContext || window.webkitAudioContext;
302
320
  const $6a90fae7e584afd4$var$AUDIO_MUTE_DETECTION_TIME = 2000;
303
321
  const $6a90fae7e584afd4$var$SPEAK_DETECTION_TIME = 500;
@@ -392,8 +410,14 @@ class $6a90fae7e584afd4$export$ea669869acd8f177 {
392
410
  this.stream.getTracks().forEach((track)=>{
393
411
  this.stream.removeTrack(track);
394
412
  });
395
- this.audioStreamSource.disconnect(this.analyser);
396
- this.audioContext.close();
413
+ try {
414
+ this.audioStreamSource.disconnect(this.analyser);
415
+ } catch (err1) {
416
+ console.error("audioStreamSource failed to disconnect", err1);
417
+ }
418
+ this.audioContext.close().catch((err)=>{
419
+ console.error("audioContext failed to close", err);
420
+ });
397
421
  this.audioLevels = [];
398
422
  }
399
423
  static isAPIAvailable() {
@@ -402,43 +426,77 @@ class $6a90fae7e584afd4$export$ea669869acd8f177 {
402
426
  }
403
427
 
404
428
 
429
+ class $1bfa11322d1d6377$var$AudioRenderer {
430
+ constructor({ consumerId: consumerId }){
431
+ this.consumerId = consumerId;
432
+ this.audio = new Audio();
433
+ this.audio.id = consumerId;
434
+ this.audio.autoplay = true;
435
+ document.body.appendChild(this.audio);
436
+ }
437
+ destroy() {
438
+ this.audio.pause();
439
+ this.audio.srcObject = null;
440
+ document.body.removeChild(this.audio);
441
+ }
442
+ setSource(srcObject) {
443
+ this.audio.srcObject = srcObject;
444
+ }
445
+ async setSink(sinkId) {
446
+ await this.audio.setSinkId?.(sinkId);
447
+ }
448
+ async play() {
449
+ await this.audio.play().catch((err)=>{
450
+ console.warn("failed to play");
451
+ setTimeout(()=>{
452
+ this.play();
453
+ }, 1000);
454
+ });
455
+ }
456
+ }
457
+ var $1bfa11322d1d6377$export$2e2bcd8739ae039 = $1bfa11322d1d6377$var$AudioRenderer;
458
+
459
+
460
+
461
+ const $67e3b71ab2fb8185$export$218be676a714a9df = '<svg width="103" height="36" fill="none" xmlns="http://www.w3.org/2000/svg"><g opacity=".8" fill="#fff"><path d="M10.994 33.06c.903 0 1.658-.734 1.392-1.581a5.249 5.249 0 0 0-1.279-2.124 5.171 5.171 0 0 0-3.673-1.535 5.171 5.171 0 0 0-3.673 1.535c-.595.6-1.03 1.33-1.28 2.124-.265.847.49 1.582 1.393 1.582h7.12ZM10.65 16.2c-.902 0-1.658.735-1.392 1.582.25.794.685 1.524 1.28 2.124a5.171 5.171 0 0 0 3.672 1.535 5.172 5.172 0 0 0 3.674-1.535 5.25 5.25 0 0 0 1.279-2.124c.266-.847-.49-1.582-1.393-1.582h-7.12ZM14.21 31.455c0 .887.75 1.63 1.606 1.35a5.187 5.187 0 0 0 2.067-1.279 5.264 5.264 0 0 0 1.521-3.706c0-1.39-.547-2.723-1.52-3.705a5.187 5.187 0 0 0-2.068-1.278c-.856-.281-1.606.462-1.606 1.349v7.27ZM7.434 17.806c0-.887-.75-1.63-1.607-1.35a5.186 5.186 0 0 0-2.066 1.279 5.264 5.264 0 0 0-1.522 3.706c0 1.39.548 2.723 1.522 3.705a5.186 5.186 0 0 0 2.066 1.278c.857.281 1.607-.462 1.607-1.349v-7.27Z"/><path d="M32.965 31.098c-1.442 0-2.601-.227-3.478-.68-.865-.465-1.517-1.043-1.955-1.734a.416.416 0 0 1-.052-.187c0-.125.057-.227.173-.306l.986-.731a.286.286 0 0 1 .208-.085c.103 0 .201.062.294.187.773 1.224 2.07 1.836 3.893 1.836.796 0 1.471-.142 2.025-.425.565-.284.848-.737.848-1.36 0-.465-.161-.827-.485-1.088-.311-.26-.796-.493-1.453-.697-.6-.181-.975-.289-1.125-.323-.992-.283-1.707-.504-2.146-.663-1.107-.408-1.84-.878-2.198-1.41-.357-.534-.536-1.089-.536-1.667 0-.476.15-.986.45-1.53.311-.555.796-1.025 1.453-1.41.67-.397 1.506-.595 2.51-.595 1.05 0 1.932.13 2.647.39.716.25 1.396.67 2.042 1.258.081.08.121.159.121.238 0 .114-.057.204-.173.272l-1.107.731a.469.469 0 0 1-.225.085c-.104 0-.202-.05-.294-.153-.692-.725-1.644-1.088-2.856-1.088-.692 0-1.228.102-1.609.306-.37.204-.617.431-.744.68-.115.25-.173.47-.173.663 0 .408.162.737.485.986.323.25.801.476 1.436.68.058.023.502.153 1.332.391.52.136 1.056.29 1.61.46 1.21.396 2.019.9 2.422 1.512.416.612.623 1.201.623 1.768 0 .612-.15 1.196-.45 1.75-.288.556-.801 1.02-1.54 1.395-.727.362-1.713.544-2.959.544ZM44.114 21.766c.865 0 1.667.249 2.405.748.739.487 1.108 1.388 1.108 2.702v5.321a.364.364 0 0 1-.104.272c-.058.057-.144.085-.26.085H46.14a.423.423 0 0 1-.277-.085.407.407 0 0 1-.087-.272v-5.032c-.035-.646-.22-1.155-.554-1.53-.323-.373-.744-.56-1.263-.56-.37 0-.738.102-1.107.306-.358.192-.664.492-.918.9-.253.397-.403.896-.45 1.496v4.42a.365.365 0 0 1-.103.272c-.058.057-.145.085-.26.085h-1.125a.423.423 0 0 1-.276-.085.407.407 0 0 1-.087-.272v-8.193c0-.114.029-.199.087-.255a.378.378 0 0 1 .276-.102h1.125c.116 0 .202.034.26.102.069.056.103.141.103.255v.204c0 .079.012.141.035.187a.168.168 0 0 0 .121.05c.092 0 .214-.062.364-.186a4.02 4.02 0 0 1 1.038-.612c.38-.148.738-.221 1.073-.221ZM57.436 28.207c.023.34.081.607.173.8.093.18.289.322.589.424.184.068.277.165.277.29a.396.396 0 0 1-.052.17l-.485.951c-.092.204-.242.278-.45.221-.669-.147-1.13-.47-1.384-.969-.058-.124-.115-.187-.173-.187-.058 0-.121.046-.19.136-.6.714-1.575 1.071-2.925 1.071-.819 0-1.482-.141-1.99-.425-.496-.283-.848-.623-1.056-1.02-.207-.408-.311-.799-.311-1.173 0-.612.19-1.161.571-1.648.392-.488.975-.828 1.748-1.02.53-.125 1.269-.221 2.215-.29.646-.045 1.113-.09 1.401-.135.231-.034.335-.17.312-.408-.058-.51-.23-.918-.52-1.224-.276-.318-.743-.476-1.4-.476-.428 0-.837.09-1.23.272-.38.17-.674.47-.882.9-.104.216-.254.29-.45.222l-1.055-.29c-.185-.056-.277-.152-.277-.288 0-.034.011-.085.034-.153a3.292 3.292 0 0 1 1.367-1.564c.635-.397 1.46-.595 2.475-.595.992 0 1.834.255 2.526.765.693.498 1.062 1.224 1.108 2.176.011.453.017 1.06.017 1.819.012.759.017 1.308.017 1.648Zm-4.326 1.445c.312 0 .652-.073 1.021-.22.38-.148.715-.403 1.004-.766.3-.374.484-.872.554-1.495v-.034c0-.114-.035-.199-.104-.256-.07-.067-.162-.09-.277-.067l-.675.067c-.75.069-1.361.148-1.834.238-.462.08-.86.227-1.194.442a.984.984 0 0 0-.485.884c0 .465.208.782.623.952.416.17.871.255 1.367.255ZM64.486 21.766c1.107 0 1.967.26 2.578.782.611.51 1.027 1.116 1.246 1.819a6.83 6.83 0 0 1 .329 2.073c0 .692-.11 1.389-.329 2.091-.22.692-.635 1.298-1.246 1.82-.611.509-1.47.764-2.578.764-.9 0-1.65-.238-2.25-.714-.08-.08-.161-.119-.242-.119-.116 0-.173.096-.173.29v3.569c0 .113-.035.198-.104.255-.058.068-.144.102-.26.102H60.42a.378.378 0 0 1-.277-.102c-.058-.057-.086-.142-.086-.255V22.344c0-.114.028-.199.086-.255a.378.378 0 0 1 .277-.102h1.038c.116 0 .202.034.26.102.069.056.104.141.104.255 0 .09.011.164.034.22.035.046.075.069.122.069.057 0 .109-.023.155-.068.612-.533 1.396-.8 2.354-.8Zm-.173 7.785c.888 0 1.54-.3 1.955-.9.427-.601.64-1.338.64-2.21 0-.873-.213-1.61-.64-2.21-.415-.601-1.067-.902-1.955-.902-.877 0-1.518.3-1.921.901-.393.59-.589 1.326-.589 2.21 0 .884.197 1.627.589 2.227.403.59 1.044.884 1.92.884ZM76.268 31.097c-1.316 0-2.452-.277-3.41-.833a5.531 5.531 0 0 1-2.163-2.277c-.484-.975-.726-2.08-.726-3.315 0-1.236.242-2.335.727-3.298a5.507 5.507 0 0 1 2.163-2.295c.957-.555 2.094-.833 3.409-.833 1.246 0 2.324.25 3.236.748a5.437 5.437 0 0 1 2.163 2.09c.034.069.052.131.052.188 0 .125-.087.215-.26.272l-1.298.323a.39.39 0 0 1-.12.017c-.151 0-.266-.074-.347-.221-.715-1.156-1.857-1.734-3.426-1.734-.97 0-1.771.221-2.406.663a3.907 3.907 0 0 0-1.401 1.75c-.3.715-.45 1.491-.45 2.33 0 .838.15 1.615.45 2.329.3.713.767 1.291 1.401 1.733.635.442 1.437.663 2.406.663.911 0 1.701-.21 2.37-.628.681-.42 1.165-1.06 1.454-1.921.08-.216.225-.306.433-.272l1.315.17c.196.034.294.124.294.272 0 .022-.012.079-.035.17-.507 1.303-1.246 2.283-2.215 2.94-.957.646-2.163.97-3.616.97ZM91.216 28.207c.023.34.08.607.173.8.092.18.288.322.588.424.185.068.277.165.277.29a.396.396 0 0 1-.052.17l-.484.951c-.093.204-.243.278-.45.221-.67-.147-1.13-.47-1.385-.969-.057-.124-.115-.187-.173-.187-.057 0-.12.046-.19.136-.6.714-1.575 1.071-2.925 1.071-.819 0-1.482-.141-1.99-.425-.496-.283-.848-.623-1.055-1.02-.208-.408-.312-.799-.312-1.173 0-.612.19-1.161.571-1.648.393-.488.975-.828 1.748-1.02.53-.125 1.27-.221 2.215-.29.646-.045 1.113-.09 1.402-.135.23-.034.334-.17.311-.408-.057-.51-.23-.918-.519-1.224-.277-.318-.744-.476-1.401-.476-.427 0-.837.09-1.23.272-.38.17-.674.47-.882.9-.103.216-.254.29-.45.222l-1.055-.29c-.185-.056-.277-.152-.277-.288a.53.53 0 0 1 .034-.153 3.293 3.293 0 0 1 1.368-1.564c.634-.397 1.459-.595 2.474-.595.992 0 1.834.255 2.527.765.692.498 1.06 1.224 1.107 2.176.012.453.017 1.06.017 1.819.012.759.018 1.308.018 1.648Zm-4.326 1.445c.311 0 .651-.073 1.02-.22.381-.148.716-.403 1.004-.766.3-.374.485-.872.554-1.495v-.034c0-.114-.035-.199-.104-.256-.07-.067-.161-.09-.277-.067l-.675.067c-.75.069-1.36.148-1.834.238-.461.08-.86.227-1.194.442a.984.984 0 0 0-.484.884c0 .465.207.782.622.952.416.17.871.255 1.368.255ZM95.687 30.536a.364.364 0 0 1-.104.272c-.058.057-.144.085-.26.085h-1.125a.424.424 0 0 1-.277-.085.407.407 0 0 1-.086-.272V18.79c0-.114.029-.199.086-.255a.378.378 0 0 1 .277-.102h1.125c.116 0 .202.034.26.102.069.056.104.141.104.255v11.746ZM100.033 30.536a.364.364 0 0 1-.104.272c-.057.057-.144.085-.26.085h-1.124a.423.423 0 0 1-.277-.085.407.407 0 0 1-.086-.272V18.79c0-.114.028-.199.086-.255a.378.378 0 0 1 .277-.102h1.125c.115 0 .202.034.26.102.069.056.103.141.103.255v11.746Z" stroke="#fff" stroke-width=".5"/><path d="M43.151 8.686c.296 0 .554-.036.774-.108.22-.076.402-.182.546-.318.148-.14.258-.308.33-.504.072-.2.108-.422.108-.666a1.75 1.75 0 0 0-.108-.63 1.245 1.245 0 0 0-.324-.48 1.41 1.41 0 0 0-.546-.3 2.516 2.516 0 0 0-.78-.108h-1.206v3.114h1.206Zm0-4.362c.58 0 1.082.068 1.506.204.424.136.774.326 1.05.57.276.244.48.536.612.876.136.34.204.712.204 1.116 0 .42-.07.806-.21 1.158-.14.348-.35.648-.63.9s-.632.448-1.056.588c-.42.14-.912.21-1.476.21h-1.206V13h-1.614V4.324h2.82Zm6.819 2.424c.456 0 .87.074 1.242.222a2.692 2.692 0 0 1 1.578 1.626c.144.392.216.83.216 1.314 0 .488-.072.928-.216 1.32-.144.392-.35.726-.618 1.002a2.653 2.653 0 0 1-.96.636 3.333 3.333 0 0 1-1.242.222c-.46 0-.878-.074-1.254-.222a2.712 2.712 0 0 1-.966-.636 2.922 2.922 0 0 1-.618-1.002 3.807 3.807 0 0 1-.216-1.32c0-.484.072-.922.216-1.314.148-.392.354-.724.618-.996.268-.272.59-.482.966-.63a3.397 3.397 0 0 1 1.254-.222Zm0 5.202c.512 0 .89-.172 1.134-.516.248-.344.372-.848.372-1.512s-.124-1.17-.372-1.518c-.244-.348-.622-.522-1.134-.522-.52 0-.906.176-1.158.528-.248.348-.372.852-.372 1.512s.124 1.164.372 1.512c.252.344.638.516 1.158.516Zm12.85-5.106L60.866 13h-1.188c-.136 0-.23-.088-.282-.264L58.29 9.178c-.036-.12-.07-.238-.102-.354a5.729 5.729 0 0 1-.072-.36 6.81 6.81 0 0 1-.084.366c-.028.12-.06.24-.096.36l-1.122 3.546c-.048.176-.154.264-.318.264h-1.14l-1.95-6.156h1.182c.108 0 .2.026.276.078a.363.363 0 0 1 .15.198l.882 3.288c.044.18.082.356.114.528.036.172.066.344.09.516.044-.172.09-.344.138-.516l.162-.528 1.02-3.3a.382.382 0 0 1 .138-.198.429.429 0 0 1 .258-.078h.654c.104 0 .192.026.264.078a.363.363 0 0 1 .15.198l.99 3.3c.052.18.1.358.144.534.048.172.094.344.138.516.052-.34.126-.69.222-1.05l.906-3.288a.405.405 0 0 1 .15-.198.429.429 0 0 1 .258-.078h1.128Zm4.704 2.37c0-.192-.028-.372-.084-.54a1.25 1.25 0 0 0-.24-.45 1.096 1.096 0 0 0-.414-.3 1.358 1.358 0 0 0-.576-.114c-.428 0-.766.122-1.014.366-.244.244-.4.59-.468 1.038h2.796Zm-2.826.894c.024.316.08.59.168.822.088.228.204.418.348.57.144.148.314.26.51.336.2.072.42.108.66.108.24 0 .446-.028.618-.084a2.76 2.76 0 0 0 .456-.186 7.55 7.55 0 0 0 .342-.186.59.59 0 0 1 .288-.084c.124 0 .216.046.276.138l.426.54a2.536 2.536 0 0 1-.552.486 3.281 3.281 0 0 1-1.32.474 4.79 4.79 0 0 1-.666.048 3.33 3.33 0 0 1-1.194-.21 2.726 2.726 0 0 1-.96-.63 2.993 2.993 0 0 1-.642-1.032c-.156-.412-.234-.888-.234-1.428 0-.42.068-.814.204-1.182.136-.372.33-.694.582-.966.256-.276.566-.494.93-.654.368-.16.782-.24 1.242-.24.388 0 .746.062 1.074.186.328.124.61.306.846.546.236.236.42.528.552.876.136.344.204.738.204 1.182 0 .224-.024.376-.072.456-.048.076-.14.114-.276.114h-3.81Zm6.668-2.196c.192-.368.42-.656.684-.864a1.45 1.45 0 0 1 .936-.318c.284 0 .512.062.684.186l-.096 1.11a.294.294 0 0 1-.09.156.239.239 0 0 1-.15.042c-.06 0-.15-.01-.27-.03a2.01 2.01 0 0 0-.342-.03 1.11 1.11 0 0 0-.786.282c-.1.088-.19.196-.27.324a3.44 3.44 0 0 0-.216.438V13h-1.482V6.844h.87c.152 0 .258.028.318.084.06.052.1.148.12.288l.09.696Zm6.87 1.302c0-.192-.029-.372-.085-.54a1.25 1.25 0 0 0-.24-.45 1.096 1.096 0 0 0-.414-.3 1.358 1.358 0 0 0-.576-.114c-.428 0-.766.122-1.014.366-.244.244-.4.59-.468 1.038h2.796Zm-2.827.894c.024.316.08.59.168.822.088.228.204.418.348.57.144.148.314.26.51.336.2.072.42.108.66.108.24 0 .446-.028.618-.084a2.76 2.76 0 0 0 .456-.186 7.55 7.55 0 0 0 .342-.186.59.59 0 0 1 .288-.084c.124 0 .216.046.276.138l.426.54a2.536 2.536 0 0 1-.552.486 3.281 3.281 0 0 1-1.32.474 4.79 4.79 0 0 1-.666.048 3.33 3.33 0 0 1-1.194-.21 2.726 2.726 0 0 1-.96-.63 2.993 2.993 0 0 1-.642-1.032c-.156-.412-.234-.888-.234-1.428 0-.42.068-.814.204-1.182.136-.372.33-.694.582-.966.256-.276.566-.494.93-.654.368-.16.782-.24 1.242-.24.388 0 .746.062 1.074.186.328.124.61.306.846.546.236.236.42.528.552.876.136.344.204.738.204 1.182 0 .224-.024.376-.072.456-.048.076-.14.114-.276.114h-3.81Zm9.134-1.692a1.451 1.451 0 0 0-.552-.432 1.597 1.597 0 0 0-.636-.126c-.224 0-.426.042-.606.126a1.21 1.21 0 0 0-.462.384 1.8 1.8 0 0 0-.294.648c-.068.26-.102.568-.102.924 0 .36.028.666.084.918.06.248.144.452.252.612.108.156.24.27.396.342.156.068.33.102.522.102.308 0 .57-.064.786-.192.216-.128.42-.31.612-.546v-2.76Zm1.482-4.332V13h-.906c-.196 0-.32-.09-.372-.27l-.126-.594a3.09 3.09 0 0 1-.858.69c-.32.176-.694.264-1.122.264-.336 0-.644-.07-.924-.21a2.098 2.098 0 0 1-.726-.606 3.033 3.033 0 0 1-.468-.99 5.072 5.072 0 0 1-.162-1.344c0-.456.062-.88.186-1.272s.302-.732.534-1.02c.232-.288.51-.512.834-.672a2.384 2.384 0 0 1 1.092-.246c.344 0 .638.054.882.162.244.108.462.254.654.438V4.084h1.482Zm5.863 7.32c.168.204.35.348.546.432.2.084.41.126.63.126.228 0 .432-.04.612-.12.184-.084.34-.212.468-.384a1.93 1.93 0 0 0 .294-.666 4.05 4.05 0 0 0 .102-.972c0-.676-.112-1.164-.336-1.464-.224-.304-.546-.456-.966-.456-.284 0-.532.066-.744.198a2.38 2.38 0 0 0-.606.546v2.76Zm0-3.804a3.02 3.02 0 0 1 .822-.618c.304-.156.65-.234 1.038-.234.356 0 .676.07.96.21.288.14.532.342.732.606.204.26.36.576.468.948.108.372.162.79.162 1.254 0 .5-.062.954-.186 1.362a3.132 3.132 0 0 1-.534 1.05 2.4 2.4 0 0 1-.828.672c-.324.16-.684.24-1.08.24a2.103 2.103 0 0 1-.954-.216 1.891 1.891 0 0 1-.366-.246c-.108-.1-.212-.21-.312-.33l-.066.414c-.024.104-.066.178-.126.222a.37.37 0 0 1-.234.066h-.978V4.084h1.482V7.6Zm10.743-.756-3.354 7.848a.538.538 0 0 1-.174.234c-.068.056-.174.084-.318.084H97.68l1.152-2.472-2.49-5.694h1.302c.116 0 .206.028.27.084.068.056.118.12.15.192l1.308 3.192c.044.108.08.216.108.324.032.108.062.218.09.33a32.3 32.3 0 0 1 .108-.33c.036-.112.076-.222.12-.33l1.236-3.186a.437.437 0 0 1 .408-.276h1.188Z"/></g></svg>';
462
+
405
463
 
406
- const $75b45b359b4a28a4$export$674c90a250a8b2c5 = (video)=>{
464
+ const $3575c8a563f2a1da$var$getWatermarkedCanvas = (canvas)=>new Promise((resolve)=>{
465
+ const dpr = window.devicePixelRatio || 1;
466
+ const context = canvas.getContext("2d");
467
+ const svgBlob = new Blob([
468
+ (0, $67e3b71ab2fb8185$export$218be676a714a9df)
469
+ ], {
470
+ type: "image/svg+xml;charset=utf-8"
471
+ });
472
+ const blobUrl = URL.createObjectURL(svgBlob);
473
+ const watermarkImage = new Image();
474
+ watermarkImage.onload = ()=>{
475
+ const x = canvas.width / dpr - watermarkImage.width - 16;
476
+ const y = canvas.height / dpr - watermarkImage.height - 16;
477
+ context?.drawImage(watermarkImage, x, y);
478
+ resolve(canvas);
479
+ };
480
+ watermarkImage.src = blobUrl;
481
+ });
482
+ const $3575c8a563f2a1da$export$674c90a250a8b2c5 = async (video)=>{
483
+ const { videoWidth: videoWidth , videoHeight: videoHeight } = video;
484
+ const orientation = videoWidth > videoHeight ? "landscape" : "portrait";
485
+ const sourceWidth = orientation === "portrait" ? videoWidth : videoHeight;
486
+ const sourceHeight = orientation === "landscape" ? videoHeight : videoWidth;
487
+ const sourceX = orientation === "landscape" ? (videoWidth - sourceWidth) / 2 : 0;
488
+ const sourceY = orientation === "portrait" ? (videoHeight - sourceHeight) / 2 : 0;
407
489
  const canvas = document.createElement("canvas");
408
490
  const ctx = canvas.getContext("2d");
409
- let offsetHeight = video.offsetHeight;
410
- let offsetWidth = video.offsetWidth;
411
- const stream = video.srcObject;
412
- const track = stream.getVideoTracks()[0];
413
- const settings = track.getSettings();
414
- const width = settings.width || 0;
415
- const height = settings.height || 0;
416
- if (width > height) {
417
- offsetWidth += height - offsetHeight;
418
- offsetHeight = height;
419
- let cropW = width - offsetWidth;
420
- if (cropW < 0) {
421
- cropW = 0;
422
- offsetWidth = width;
423
- }
424
- canvas.width = offsetWidth;
425
- canvas.height = Math.min(offsetHeight, height);
426
- ctx?.drawImage(video, cropW / 2, 0, canvas.width, canvas.height, 0, 0, canvas.width, canvas.height);
427
- } else {
428
- offsetHeight += width - offsetWidth;
429
- offsetWidth = width;
430
- let cropH = height - offsetHeight;
431
- if (cropH < 0) {
432
- cropH = 0;
433
- offsetHeight = height;
434
- }
435
- canvas.width = Math.min(offsetWidth, width);
436
- canvas.height = offsetHeight;
437
- ctx?.drawImage(video, 0, cropH / 2, canvas.width, canvas.height, 0, 0, canvas.width, canvas.height);
438
- }
439
- return canvas.toDataURL("image/jpeg");
491
+ const dpr = window.devicePixelRatio || 1;
492
+ canvas.width = sourceWidth * dpr;
493
+ canvas.height = sourceHeight * dpr;
494
+ ctx?.scale(dpr, dpr);
495
+ ctx?.drawImage(video, sourceX, sourceY, sourceWidth, sourceHeight, 0, 0, canvas.width / dpr, canvas.height / dpr);
496
+ const watermarkedCanvas = await $3575c8a563f2a1da$var$getWatermarkedCanvas(canvas);
497
+ return watermarkedCanvas.toDataURL("image/jpeg");
440
498
  };
441
- const $75b45b359b4a28a4$export$4a210166cc9cb64b = async (src)=>{
499
+ const $3575c8a563f2a1da$export$4a210166cc9cb64b = async (src)=>{
442
500
  const video = document.createElement("video");
443
501
  const stream = new MediaStream();
444
502
  stream.addTrack(src);
@@ -453,7 +511,8 @@ const $75b45b359b4a28a4$export$4a210166cc9cb64b = async (src)=>{
453
511
  canvas.height = video.height;
454
512
  canvas.width = video.width;
455
513
  ctx?.drawImage(video, 0, 0);
456
- return canvas.toDataURL("image/jpeg");
514
+ const watermarkedCanvas = await $3575c8a563f2a1da$var$getWatermarkedCanvas(canvas);
515
+ return watermarkedCanvas.toDataURL("image/jpeg");
457
516
  };
458
517
 
459
518
 
@@ -465,7 +524,7 @@ const $1dedebd5ff3002eb$export$818d60b2e626da0c = {
465
524
  CONSUME_ERROR: "CONS1",
466
525
  SOCKET_LOST: "SOCK1"
467
526
  };
468
- const $1dedebd5ff3002eb$var$VIDEO_CONSTRAINS = {
527
+ const $1dedebd5ff3002eb$export$d21ffcc5eb136bfa = {
469
528
  qvga: {
470
529
  width: {
471
530
  ideal: 320
@@ -528,11 +587,13 @@ const $1dedebd5ff3002eb$var$fetchAgentInfo = async ({ apiKey: apiKey , email: em
528
587
  });
529
588
  return agent;
530
589
  };
531
- class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
590
+ const $1dedebd5ff3002eb$var$StreamerEventTargetType = EventTarget;
591
+ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 extends $1dedebd5ff3002eb$var$StreamerEventTargetType {
532
592
  pendingDeviceRequest = {};
533
593
  joinOptions = {};
534
594
  devicesList = [];
535
595
  constructor(){
596
+ super();
536
597
  navigator.mediaDevices.addEventListener("devicechange", ()=>this.onDeviceChange());
537
598
  this.iceServers = [
538
599
  {
@@ -561,18 +622,59 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
561
622
  this.webcamProducer = null;
562
623
  this.screenshareProducer = null;
563
624
  this.customMessages = new Map();
625
+ this.audioRenderers = {};
626
+ }
627
+ getState() {
628
+ const peers = [];
629
+ this.peers.forEach((peer, key)=>{
630
+ const deviceState = {
631
+ microphone: {
632
+ enabled: false,
633
+ muted: false
634
+ },
635
+ camera: {
636
+ enabled: false
637
+ },
638
+ screenshare: {
639
+ enabled: false
640
+ }
641
+ };
642
+ peer.producersData.forEach((producer)=>{
643
+ if (producer.deviceType === "microphone") {
644
+ deviceState.microphone.enabled = true;
645
+ deviceState.microphone.muted = producer.paused;
646
+ } else if (producer.deviceType === "screen") deviceState.screenshare.enabled = true;
647
+ else if (producer.deviceType === "webcam") deviceState.camera.enabled = true;
648
+ });
649
+ peers.push({
650
+ peerId: key,
651
+ displayName: peer.displayName,
652
+ deviceState: deviceState
653
+ });
654
+ });
655
+ return {
656
+ roomId: this.roomId,
657
+ peerId: this.peerId,
658
+ displayName: this.displayName,
659
+ callId: undefined,
660
+ deviceState: this.getDevicesState(),
661
+ peers: peers
662
+ };
564
663
  }
565
664
  onStartSpeak() {
566
665
  if (this.micProducer && !this.micProducer.paused) {
567
- const event = new CustomEvent("localStartSpeak");
568
- window.dispatchEvent(event);
666
+ const event = new CustomEvent("localStartSpeak", {
667
+ cancelable: true,
668
+ bubbles: true
669
+ });
670
+ this.dispatchEvent(event);
569
671
  this.protoo.notify("startSpeak");
570
672
  }
571
673
  }
572
674
  onStopSpeak() {
573
675
  if (this.micProducer && !this.micProducer.paused) {
574
676
  const event = new CustomEvent("localStopSpeak");
575
- window.dispatchEvent(event);
677
+ this.dispatchEvent(event);
576
678
  this.protoo.notify("stopSpeak");
577
679
  }
578
680
  }
@@ -582,7 +684,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
582
684
  code: code
583
685
  }
584
686
  });
585
- window.dispatchEvent(event);
687
+ this.dispatchEvent(event);
586
688
  }
587
689
  async generateToken(bid) {
588
690
  const url = "https://g.snapcall.io/stream";
@@ -616,7 +718,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
616
718
  url = `${"wss://g.snapcall.io/stream"}/${instanceId}/?roomId=${room}&peerId=${this.peerId}`;
617
719
  } catch (roomError) {
618
720
  const event = new CustomEvent("invalidRoom");
619
- window.dispatchEvent(event);
721
+ this.dispatchEvent(event);
620
722
  }
621
723
  if (!url) throw new Error("Invalid socket URL");
622
724
  this.protooTransport = new $jQDcL$protooclient.WebSocketTransport(url, {
@@ -644,16 +746,17 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
644
746
  const { id: id , displayName: displayName } = notification.data;
645
747
  this.peers.set(id, {
646
748
  id: id,
749
+ peerId: id,
647
750
  displayName: displayName,
648
751
  producersData: []
649
752
  });
650
753
  const event = new CustomEvent("newPeer", {
651
754
  detail: {
652
- id: id,
755
+ peerId: id,
653
756
  displayName: displayName
654
757
  }
655
758
  });
656
- window.dispatchEvent(event);
759
+ this.dispatchEvent(event);
657
760
  } else if (notification.method === "newProducer") {
658
761
  const { peerId: peerId , producerId: producerId , deviceType: deviceType , paused: paused } = notification.data;
659
762
  await this.consumeProducer({
@@ -664,6 +767,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
664
767
  });
665
768
  } else if (notification.method === "peerClosed") {
666
769
  const { peerId: peerId , relatedConsumers: relatedConsumers } = notification.data;
770
+ this.peers.delete(peerId);
667
771
  relatedConsumers.forEach((consumer)=>{
668
772
  this.onConsumerClose({
669
773
  consumerId: consumer.id
@@ -674,7 +778,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
674
778
  peerId: peerId
675
779
  }
676
780
  });
677
- window.dispatchEvent(event);
781
+ this.dispatchEvent(event);
678
782
  } else if (notification.method === "consumerClosed") {
679
783
  const { consumerId: consumerId } = notification.data;
680
784
  this.onConsumerClose({
@@ -688,34 +792,36 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
688
792
  displayName: displayName
689
793
  }
690
794
  });
691
- window.dispatchEvent(event);
795
+ this.dispatchEvent(event);
692
796
  } else if (notification.method === "requestDevice") {
693
797
  this.pendingDeviceRequest[notification.data.requestId] = notification.data;
694
798
  const event = new CustomEvent("requestDevice", {
695
799
  detail: notification.data
696
800
  });
697
- window.dispatchEvent(event);
801
+ this.dispatchEvent(event);
698
802
  } else if (notification.method === "startSpeak") ;
699
803
  else if (notification.method === "stopSpeak") ;
700
804
  else if (notification.method === "producerPaused" || notification.method === "producerResumed") {
805
+ if (notification.data?.deviceType === "microphone") {
806
+ const { peerId: peerId , producerId: producerId } = notification.data;
807
+ const microphoneData = this.peers.get(peerId)?.producersData.find((ele)=>producerId === ele.producerId);
808
+ if (microphoneData) microphoneData.paused = notification.method === "producerPaused" ? true : false;
809
+ }
701
810
  const event = new CustomEvent(notification.method, {
702
811
  detail: notification.data
703
812
  });
704
- window.dispatchEvent(event);
813
+ this.dispatchEvent(event);
705
814
  } else if (notification.method === "requestDeviceResult") {
706
815
  const event = new CustomEvent(notification.method, {
707
816
  detail: notification.data
708
817
  });
709
- window.dispatchEvent(event);
818
+ this.dispatchEvent(event);
710
819
  } else if (notification.method === "terminateRoom") {
711
- this.closeWebrtcTransport(this.sendAudioTransports);
712
- this.closeWebrtcTransport(this.recvAudioTransports);
713
- this.closeWebrtcTransport(this.sendVideoTransports);
714
- this.closeWebrtcTransport(this.recvVideoTransports);
820
+ this.release();
715
821
  const event = new CustomEvent(notification.method, {
716
822
  detail: notification.data
717
823
  });
718
- window.dispatchEvent(event);
824
+ this.dispatchEvent(event);
719
825
  } else if (notification.method === "customMessage") {
720
826
  const { messageId: messageId , chunk: chunk1 , chunkIndex: chunkIndex , totalChunks: totalChunks } = notification.data.event;
721
827
  const existingMessage = this.customMessages.get(messageId);
@@ -743,7 +849,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
743
849
  event: parsedEvent
744
850
  }
745
851
  });
746
- window.dispatchEvent(event);
852
+ this.dispatchEvent(event);
747
853
  this.customMessages.delete(messageId);
748
854
  }
749
855
  }
@@ -767,7 +873,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
767
873
  } catch (error) {
768
874
  console.error(error);
769
875
  $jQDcL$sentrybrowser.captureException(error);
770
- window.dispatchEvent(new CustomEvent("browserDetectionFailed"));
876
+ this.dispatchEvent(new CustomEvent("browserDetectionFailed"));
771
877
  }
772
878
  return new $jQDcL$mediasoupclient.Device({
773
879
  handlerName: "Chrome74"
@@ -907,7 +1013,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
907
1013
  apiKey: this.joinOptions.apiKey,
908
1014
  email: this.joinOptions.email
909
1015
  });
910
- if (agentInfo) window.dispatchEvent(new CustomEvent("agentIdentity", {
1016
+ if (agentInfo) this.dispatchEvent(new CustomEvent("agentIdentity", {
911
1017
  detail: {
912
1018
  success: true,
913
1019
  email: this.joinOptions.email
@@ -915,7 +1021,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
915
1021
  }));
916
1022
  } catch (agentInfoError) {
917
1023
  console.warn(agentInfoError);
918
- window.dispatchEvent(new CustomEvent("agentIdentity", {
1024
+ this.dispatchEvent(new CustomEvent("agentIdentity", {
919
1025
  detail: {
920
1026
  success: false
921
1027
  }
@@ -926,16 +1032,22 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
926
1032
  email: this.joinOptions.email
927
1033
  });
928
1034
  this.peers = new Map(peers.map((peer)=>[
929
- peer.id,
1035
+ peer.id || peer.peerId,
930
1036
  {
931
- ...peer
932
- }
1037
+ ...peer,
1038
+ peerId: peer.id || peer.peerId
1039
+ },
933
1040
  ]));
934
1041
  const callId = await this.getCallId();
935
- window.dispatchEvent(new CustomEvent("enterRoom", {
1042
+ this.dispatchEvent(new CustomEvent("enterRoom", {
936
1043
  detail: {
937
1044
  peerId: this.peerId,
938
- peers: peers,
1045
+ peers: peers.map((peer)=>{
1046
+ return {
1047
+ ...peer,
1048
+ peerId: peer.id || peer.peerId
1049
+ };
1050
+ }),
939
1051
  callId: callId
940
1052
  }
941
1053
  }));
@@ -944,7 +1056,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
944
1056
  // Consume Peers
945
1057
  peers.forEach((peer)=>{
946
1058
  this.consumePeer({
947
- peerId: peer.id,
1059
+ peerId: peer.id || peer.peerId,
948
1060
  producersData: peer.producersData
949
1061
  });
950
1062
  });
@@ -982,13 +1094,15 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
982
1094
  this.micProducer?.close();
983
1095
  this.micProducer = undefined;
984
1096
  const event = new CustomEvent("microphoneMute");
985
- window.dispatchEvent(event);
1097
+ this.dispatchEvent(event);
986
1098
  await this.protoo.request("closeProducer", {
987
1099
  producerId: producerId
988
1100
  });
989
1101
  }
990
1102
  async onDeviceChange() {
991
1103
  console.log("detecting device change");
1104
+ const deviceListChangeEvent = new CustomEvent("devicesListChange");
1105
+ this.dispatchEvent(deviceListChangeEvent);
992
1106
  if (!this.protoo.closed && this.micProducer) {
993
1107
  const lists = await navigator.mediaDevices.enumerateDevices();
994
1108
  const inputs = lists.filter((media)=>media.kind === "audioinput");
@@ -1018,7 +1132,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
1018
1132
  detail: defaultDevice
1019
1133
  });
1020
1134
  this.audioInputDefaultDevice = defaultDevice;
1021
- window.dispatchEvent(event);
1135
+ this.dispatchEvent(event);
1022
1136
  console.log("new default audio input trying to switch new :", defaultDevice.deviceId, defaultDevice.label);
1023
1137
  }
1024
1138
  this.switchMicrophone("default");
@@ -1062,7 +1176,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
1062
1176
  this.micProducer = micProducer;
1063
1177
  this.muted = false;
1064
1178
  const event = new CustomEvent("microphoneEnabled");
1065
- window.dispatchEvent(event);
1179
+ this.dispatchEvent(event);
1066
1180
  }
1067
1181
  }
1068
1182
  async muteMicrophone() {
@@ -1074,7 +1188,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
1074
1188
  });
1075
1189
  this.muted = true;
1076
1190
  const event = new CustomEvent("microphoneMute");
1077
- window.dispatchEvent(event);
1191
+ this.dispatchEvent(event);
1078
1192
  }
1079
1193
  }
1080
1194
  async unMuteMicrophone() {
@@ -1086,7 +1200,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
1086
1200
  });
1087
1201
  this.muted = false;
1088
1202
  const event = new CustomEvent("microphoneUnmute");
1089
- window.dispatchEvent(event);
1203
+ this.dispatchEvent(event);
1090
1204
  }
1091
1205
  }
1092
1206
  async toggleMute() {
@@ -1102,17 +1216,31 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
1102
1216
  };
1103
1217
  }
1104
1218
  }
1105
- endCall() {
1106
- this.protoo.close();
1107
- this.protooTransport.close();
1219
+ release() {
1220
+ console.log("release");
1108
1221
  this.closeWebrtcTransport(this.sendAudioTransports);
1109
1222
  this.closeWebrtcTransport(this.recvAudioTransports);
1110
1223
  this.closeWebrtcTransport(this.sendVideoTransports);
1111
1224
  this.closeWebrtcTransport(this.recvVideoTransports);
1225
+ this.webcamTrack?.stop();
1226
+ this.webcamTrack = null;
1227
+ this.protooTransport.close();
1228
+ this.protoo.close();
1229
+ this.micProducer?.close();
1230
+ this.screenshareProducer?.close();
1231
+ this.webcamProducer?.close();
1232
+ this.consumers.forEach((consumer)=>{
1233
+ consumer.mediaSoupConsumer.close();
1234
+ });
1112
1235
  this.consumers.clear();
1113
1236
  this.audioLevel?.release();
1114
- const event = new CustomEvent("snapcallEvent_callEnd");
1115
- window.dispatchEvent(event);
1237
+ }
1238
+ endCall() {
1239
+ this.release();
1240
+ const event = new CustomEvent("leaveRoom");
1241
+ this.dispatchEvent(event);
1242
+ const deprecatedEvent = new CustomEvent("snapcallEvent_callEnd");
1243
+ this.dispatchEvent(deprecatedEvent);
1116
1244
  }
1117
1245
  terminateRoom() {
1118
1246
  this.protoo.request("terminateRoom");
@@ -1131,7 +1259,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
1131
1259
  numberOfAvailableWebcams: this.webcams.size
1132
1260
  }
1133
1261
  });
1134
- window.dispatchEvent(event);
1262
+ this.dispatchEvent(event);
1135
1263
  }
1136
1264
  isVideoZoomAvailable() {
1137
1265
  return this.webcamZoom.available;
@@ -1183,16 +1311,85 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
1183
1311
  });
1184
1312
  }
1185
1313
  }
1186
- async enableVideo() {
1314
+ scaleVideo() {
1315
+ try {
1316
+ let videoCount = 0;
1317
+ this.consumers.forEach((consumer)=>{
1318
+ if (consumer.mediaSoupConsumer.kind === "video") videoCount++;
1319
+ });
1320
+ if (this.screenshareProducer && !this.screenshareProducer.closed) videoCount++;
1321
+ let scale = {
1322
+ scaleResolutionDownBy: 1
1323
+ };
1324
+ if (videoCount >= 3) scale = {
1325
+ scaleResolutionDownBy: 2
1326
+ };
1327
+ if (videoCount >= 9) scale = {
1328
+ scaleResolutionDownBy: 4
1329
+ };
1330
+ if (this.webcamProducer && !this.webcamProducer.closed) {
1331
+ console.log(`scaling video by ${scale.scaleResolutionDownBy}`);
1332
+ this.webcamProducer?.setRtpEncodingParameters?.(scale).catch((err)=>{
1333
+ console.error("scaleResolutionDownBy not supported", err);
1334
+ });
1335
+ }
1336
+ } catch (error) {
1337
+ console.error("scaleVideo error", error);
1338
+ }
1339
+ }
1340
+ async switchWebcam({ device: device , resolution: resolution , rotate: rotate }) {
1341
+ if (!this.webcam.device) throw new Error("no webcam devices");
1342
+ if (rotate) {
1343
+ const webcams = Array.from(this.webcams.keys());
1344
+ const deviceId = this.webcam?.device?.deviceId || "unknow";
1345
+ let newWebcamIndex = webcams.indexOf(deviceId);
1346
+ if (newWebcamIndex < webcams.length - 1) newWebcamIndex++;
1347
+ else newWebcamIndex = 0;
1348
+ const newWebcamDevice = this.webcams.get(webcams[newWebcamIndex]);
1349
+ if (!newWebcamDevice) throw new Error("no webcam device");
1350
+ this.webcam.device = newWebcamDevice;
1351
+ this.webcam.resolution = "hd";
1352
+ } else {
1353
+ if (device) this.webcam.device = device;
1354
+ if (resolution) this.webcam.resolution = resolution;
1355
+ }
1356
+ const stream = await this.handleGetUserMediaError("webcam", navigator.mediaDevices.getUserMedia({
1357
+ video: {
1358
+ deviceId: {
1359
+ ideal: this.webcam.device.deviceId
1360
+ },
1361
+ ...$1dedebd5ff3002eb$export$d21ffcc5eb136bfa[resolution || this.webcam.resolution]
1362
+ }
1363
+ }));
1364
+ if (!this.sendVideoTransports) throw new Error("video transport not found");
1365
+ const track = stream.getVideoTracks()[0];
1366
+ this.webcamTrack = track;
1367
+ await this.webcamProducer?.replaceTrack?.({
1368
+ track: track
1369
+ });
1370
+ const capabilities = await track.getCapabilities?.() || navigator.mediaDevices.getSupportedConstraints?.();
1371
+ this.webcamZoom = {
1372
+ available: Boolean(capabilities?.zoom),
1373
+ min: capabilities?.zoom?.min || 0,
1374
+ max: capabilities?.zoom?.max || 0
1375
+ };
1376
+ const event = new CustomEvent("localVideoChange", {
1377
+ detail: {
1378
+ camera: this.getCurrentWebcam()
1379
+ }
1380
+ });
1381
+ this.dispatchEvent(event);
1382
+ }
1383
+ async enableVideo(config) {
1187
1384
  await this.updateWebcams();
1188
- const { resolution: resolution } = this.webcam;
1385
+ if (config?.device) this.webcam.device = config.device;
1189
1386
  if (!this.webcam.device) throw new Error("no webcam devices");
1190
1387
  const stream = await this.handleGetUserMediaError("webcam", navigator.mediaDevices.getUserMedia({
1191
1388
  video: {
1192
1389
  deviceId: {
1193
1390
  ideal: this.webcam.device.deviceId
1194
1391
  },
1195
- ...$1dedebd5ff3002eb$var$VIDEO_CONSTRAINS[resolution]
1392
+ ...$1dedebd5ff3002eb$export$d21ffcc5eb136bfa[config?.resolution || this.webcam.resolution]
1196
1393
  }
1197
1394
  }));
1198
1395
  if (!this.sendVideoTransports) throw new Error("video transport not found");
@@ -1204,7 +1401,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
1204
1401
  min: capabilities?.zoom?.min || 0,
1205
1402
  max: capabilities?.zoom?.max || 0
1206
1403
  };
1207
- const encodings = undefined ? $1dedebd5ff3002eb$var$WEBCAM_SIMULCAST_ENCODINGS : undefined;
1404
+ const encodings = undefined;
1208
1405
  const codecOptions = {
1209
1406
  videoGoogleStartBitrate: 1000
1210
1407
  };
@@ -1218,48 +1415,24 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
1218
1415
  deviceType: deviceType
1219
1416
  }
1220
1417
  });
1418
+ this.scaleVideo();
1221
1419
  this.webcamProducer.on("transportclose", ()=>{
1222
1420
  this.webcamProducer = null;
1223
1421
  });
1224
1422
  this.webcamProducer.on("trackended", ()=>{
1225
1423
  this.disableVideo().catch(()=>{});
1226
1424
  });
1227
- const event = new CustomEvent("localVideoAvailable");
1228
- window.dispatchEvent(event);
1229
- }
1230
- async rotateVideo() {
1231
- await this.updateWebcams();
1232
- const webcams = Array.from(this.webcams.keys());
1233
- const deviceId = this.webcam?.device?.deviceId || "unknow";
1234
- let newWebcamIndex = webcams.indexOf(deviceId);
1235
- if (newWebcamIndex < webcams.length - 1) newWebcamIndex++;
1236
- else newWebcamIndex = 0;
1237
- const newWebcamDevice = this.webcams.get(webcams[newWebcamIndex]);
1238
- if (!newWebcamDevice) throw new Error("no webcam device");
1239
- this.webcam.device = newWebcamDevice;
1240
- this.webcam.resolution = "hd";
1241
- this.webcamProducer?.track?.stop?.();
1242
- const stream = await navigator.mediaDevices.getUserMedia({
1243
- video: {
1244
- deviceId: {
1245
- exact: this.webcam.device.deviceId
1246
- },
1247
- ...$1dedebd5ff3002eb$var$VIDEO_CONSTRAINS[this.webcam.resolution]
1425
+ const event = new CustomEvent("localVideoAvailable", {
1426
+ detail: {
1427
+ camera: this.getCurrentWebcam()
1248
1428
  }
1249
1429
  });
1250
- const track = stream.getVideoTracks()[0];
1251
- this.webcamTrack = track;
1252
- await this.webcamProducer?.replaceTrack?.({
1253
- track: track
1430
+ this.dispatchEvent(event);
1431
+ }
1432
+ async rotateVideo() {
1433
+ await this.switchWebcam({
1434
+ rotate: true
1254
1435
  });
1255
- const capabilities = await track.getCapabilities();
1256
- this.webcamZoom = {
1257
- available: Boolean(capabilities.zoom),
1258
- min: capabilities?.zoom?.min || 0,
1259
- max: capabilities?.zoom?.max || 0
1260
- };
1261
- const event = new CustomEvent("localVideoRotate");
1262
- window.dispatchEvent(event);
1263
1436
  }
1264
1437
  async zoomVideo() {
1265
1438
  if (!this.webcamZoom.available) throw new Error("Webcam zoom is not available");
@@ -1291,7 +1464,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
1291
1464
  });
1292
1465
  this.webcamProducer = null;
1293
1466
  const event = new CustomEvent("localVideoUnavailable");
1294
- window.dispatchEvent(event);
1467
+ this.dispatchEvent(event);
1295
1468
  }
1296
1469
  async enableScreenshare() {
1297
1470
  const stream = await this.handleGetUserMediaError("screen", navigator.mediaDevices.getDisplayMedia({
@@ -1313,7 +1486,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
1313
1486
  if (!stream) return;
1314
1487
  if (!this.sendVideoTransports) throw new Error("video screen transport not found");
1315
1488
  const track = stream.getVideoTracks()[0];
1316
- const encodings = undefined ? $1dedebd5ff3002eb$var$SCREEN_SHARING_SIMULCAST_ENCODINGS : undefined;
1489
+ const encodings = undefined;
1317
1490
  const codecOptions = {
1318
1491
  videoGoogleStartBitrate: 1000
1319
1492
  };
@@ -1334,7 +1507,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
1334
1507
  this.disableScreenshare().catch(()=>{});
1335
1508
  });
1336
1509
  const event = new CustomEvent("screenshareEnabled");
1337
- window.dispatchEvent(event);
1510
+ this.dispatchEvent(event);
1338
1511
  }
1339
1512
  async disableScreenshare() {
1340
1513
  if (this.screenshareProducer) {
@@ -1345,30 +1518,29 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
1345
1518
  this.screenshareProducer = null;
1346
1519
  }
1347
1520
  const event = new CustomEvent("screenshareDisabled");
1348
- window.dispatchEvent(event);
1521
+ this.dispatchEvent(event);
1349
1522
  }
1350
1523
  onConsumerClose({ consumerId: consumerId }) {
1351
1524
  const consumer = this.consumers.get(consumerId);
1352
1525
  if (consumer) {
1526
+ const producerId = consumer.mediaSoupConsumer.producerId;
1527
+ this.peers.forEach((value)=>{
1528
+ const index = value.producersData.findIndex((ele)=>ele.producerId === producerId);
1529
+ if (index !== -1) value.producersData.splice(index, 1);
1530
+ });
1353
1531
  consumer.mediaSoupConsumer.close();
1354
1532
  this.consumers.delete(consumerId);
1533
+ this.scaleVideo();
1355
1534
  const event = new CustomEvent("consumerClose", {
1356
1535
  detail: {
1357
1536
  peerId: consumer.mediaSoupConsumer.appData.peerId,
1358
1537
  deviceType: consumer.deviceType
1359
1538
  }
1360
1539
  });
1361
- window.dispatchEvent(event);
1540
+ if (consumer.deviceType === "microphone") this.deleteAudioRenderer(consumerId);
1541
+ this.dispatchEvent(event);
1362
1542
  }
1363
1543
  }
1364
- requestVoice({ consumerId: consumerId , element: element }) {
1365
- const consumer = this.consumers.get(consumerId);
1366
- if (consumer) {
1367
- const mediaStream = new MediaStream();
1368
- mediaStream.addTrack(consumer.mediaSoupConsumer.track);
1369
- element.srcObject = mediaStream;
1370
- } else console.error(`Audio consumer ${consumerId} not found`);
1371
- }
1372
1544
  requestVideo({ consumerId: consumerId , element: element }) {
1373
1545
  const consumer = this.consumers.get(consumerId);
1374
1546
  if (consumer) {
@@ -1381,8 +1553,8 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
1381
1553
  }
1382
1554
  async captureVideo(videoElement) {
1383
1555
  let image;
1384
- if (videoElement) image = (0, $75b45b359b4a28a4$export$674c90a250a8b2c5)(videoElement);
1385
- else if (this.webcamProducer && this.webcamProducer.track) image = await (0, $75b45b359b4a28a4$export$4a210166cc9cb64b)(this.webcamProducer.track);
1556
+ if (videoElement) image = await (0, $3575c8a563f2a1da$export$674c90a250a8b2c5)(videoElement);
1557
+ else if (this.webcamProducer && this.webcamProducer.track) image = await (0, $3575c8a563f2a1da$export$4a210166cc9cb64b)(this.webcamProducer.track);
1386
1558
  else throw new Error("no video to capture");
1387
1559
  return image;
1388
1560
  }
@@ -1427,6 +1599,12 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
1427
1599
  transportId: transport.transport.id,
1428
1600
  rtpCapabilities: this.mediasoupDevice.rtpCapabilities
1429
1601
  });
1602
+ const peer = this.peers.get(peerId);
1603
+ if (peer) peer.producersData.push({
1604
+ producerId: producerId,
1605
+ deviceType: deviceType,
1606
+ paused: paused
1607
+ });
1430
1608
  const { producerId: resolvedProducerId , id: id , kind: kind , rtpParameters: rtpParameters , appData: appData } = data;
1431
1609
  console.log("Data: ", data);
1432
1610
  try {
@@ -1446,6 +1624,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
1446
1624
  mediaSoupConsumer: consumer,
1447
1625
  deviceType: deviceType
1448
1626
  });
1627
+ this.scaleVideo();
1449
1628
  const event = new CustomEvent("newConsumer", {
1450
1629
  detail: {
1451
1630
  peerId: peerId,
@@ -1454,7 +1633,14 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
1454
1633
  paused: paused
1455
1634
  }
1456
1635
  });
1457
- window.dispatchEvent(event);
1636
+ this.dispatchEvent(event);
1637
+ if (consumer.kind === "audio") {
1638
+ const audioRenderer = this.createAudioRenderer(consumer.id);
1639
+ const mediaStream = new MediaStream();
1640
+ mediaStream.addTrack(consumer.track);
1641
+ audioRenderer.setSource(mediaStream);
1642
+ audioRenderer.play();
1643
+ }
1458
1644
  if (consumer.kind === "video") await this.protoo.request("resumeConsumer", {
1459
1645
  consumerId: consumer.id
1460
1646
  });
@@ -1474,7 +1660,7 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
1474
1660
  displayName: displayName
1475
1661
  }
1476
1662
  });
1477
- window.dispatchEvent(event);
1663
+ this.dispatchEvent(event);
1478
1664
  }
1479
1665
  async requestPeerDevice(remotePeerId, deviceType) {
1480
1666
  return this.protoo.request("requestPeerDevice", {
@@ -1550,6 +1736,66 @@ class $1dedebd5ff3002eb$export$2e2bcd8739ae039 {
1550
1736
  });
1551
1737
  await Promise.all(chunksPromises);
1552
1738
  }
1739
+ async listAudioDevices() {
1740
+ const devices = await navigator.mediaDevices.enumerateDevices();
1741
+ return devices.filter((device)=>device.kind === "audioinput" || device.kind === "audiooutput");
1742
+ }
1743
+ async listVideoDevices() {
1744
+ const devices = await navigator.mediaDevices.enumerateDevices();
1745
+ return devices.filter((device)=>device.kind === "videoinput");
1746
+ }
1747
+ isListDevicesSupported() {
1748
+ return Boolean(navigator.mediaDevices?.enumerateDevices);
1749
+ }
1750
+ getCurrentWebcam() {
1751
+ return this.webcam;
1752
+ }
1753
+ getWebcamsList() {
1754
+ return this.webcams;
1755
+ }
1756
+ async setWebcamResolution(resolution) {
1757
+ if (this.webcam.device) await this.switchWebcam({
1758
+ resolution: resolution
1759
+ });
1760
+ else {
1761
+ this.webcam.resolution = resolution;
1762
+ const e = new CustomEvent("localVideoChange", {
1763
+ detail: {
1764
+ camera: this.getCurrentWebcam()
1765
+ }
1766
+ });
1767
+ this.dispatchEvent(e);
1768
+ }
1769
+ }
1770
+ createAudioRenderer(consumerId) {
1771
+ const renderer = new (0, $1bfa11322d1d6377$export$2e2bcd8739ae039)({
1772
+ consumerId: consumerId
1773
+ });
1774
+ this.audioRenderers[consumerId] = renderer;
1775
+ return renderer;
1776
+ }
1777
+ deleteAudioRenderer(consumerId) {
1778
+ this.audioRenderers[consumerId]?.destroy();
1779
+ delete this.audioRenderers[consumerId];
1780
+ }
1781
+ async playAudioRenderer(consumerId) {
1782
+ await this.audioRenderers[consumerId]?.play();
1783
+ }
1784
+ async setAudioSink(sinkId) {
1785
+ const promises = Object.keys(this.audioRenderers).map((consumerId)=>this.audioRenderers[consumerId].setSink(sinkId).catch((err)=>console.warn("Failed to setSinkId on renderer (consumerId: %s): ", consumerId, err)));
1786
+ await Promise.allSettled(promises);
1787
+ }
1788
+ dispatchEvent(event) {
1789
+ const result = super.dispatchEvent(event);
1790
+ window.dispatchEvent(event);
1791
+ return result;
1792
+ }
1793
+ async getShareLinkData(url) {
1794
+ const data = await this.protoo.request("shareLink", {
1795
+ url: url
1796
+ });
1797
+ return data;
1798
+ }
1553
1799
  }
1554
1800
 
1555
1801
 
@@ -1790,46 +2036,46 @@ var $6d8b37b4bd2444ef$export$2e2bcd8739ae039 = $6d8b37b4bd2444ef$var$SnapcallLog
1790
2036
 
1791
2037
 
1792
2038
  const $cce7f1c9e9c29503$export$6546b255bd3a2004 = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
1793
- width: "21",
1794
- height: "20",
1795
- viewBox: "0 0 21 20",
2039
+ width: "24",
2040
+ height: "24",
2041
+ viewBox: "0 0 24 24",
1796
2042
  fill: "none",
1797
2043
  xmlns: "http://www.w3.org/2000/svg",
1798
2044
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
1799
- d: "M17.5 0h-10a3 3 0 0 0-3 3v1h-1a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3v-1h1a3 3 0 0 0 3-3V3a3 3 0 0 0-3-3Zm-3 17a1 1 0 0 1-1 1h-10a1 1 0 0 1-1-1v-7h12v7Zm0-9h-12V7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v1Zm4 5a1 1 0 0 1-1 1h-1V7a3 3 0 0 0-.18-1h2.18v7Zm0-9h-12V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v1Z",
2045
+ d: "M19 2H9a3 3 0 0 0-3 3v1H5a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3v-1h1a3 3 0 0 0 3-3V5a3 3 0 0 0-3-3Zm-3 17a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-7h12v7Zm0-9H4V9a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v1Zm4 5a1 1 0 0 1-1 1h-1V9a3 3 0 0 0-.18-1H20v7Zm0-9H8V5a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v1Z",
1800
2046
  fill: "#fff"
1801
2047
  })
1802
2048
  });
1803
2049
  const $cce7f1c9e9c29503$export$92ce62e1201c4fc0 = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
1804
- width: "19",
1805
- height: "20",
1806
- viewBox: "0 0 19 20",
2050
+ width: "24",
2051
+ height: "24",
2052
+ viewBox: "0 0 24 24",
1807
2053
  fill: "none",
1808
2054
  xmlns: "http://www.w3.org/2000/svg",
1809
2055
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
1810
- d: "M18.5 6.94a1.307 1.307 0 0 0-.06-.27v-.09a1.07 1.07 0 0 0-.19-.28l-6-6a1.07 1.07 0 0 0-.28-.19.32.32 0 0 0-.09 0 .88.88 0 0 0-.33-.11H7.5a3 3 0 0 0-3 3v1h-1a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h8a3 3 0 0 0 3-3v-1h1a3 3 0 0 0 3-3V6.94Zm-6-3.53L15.09 6H13.5a1 1 0 0 1-1-1V3.41Zm0 13.59a1 1 0 0 1-1 1h-8a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h1v7a3 3 0 0 0 3 3h5v1Zm4-4a1 1 0 0 1-1 1h-8a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h3v3a3 3 0 0 0 3 3h3v5Z",
2056
+ d: "M21 8.94a1.307 1.307 0 0 0-.06-.27v-.09a1.07 1.07 0 0 0-.19-.28l-6-6a1.071 1.071 0 0 0-.28-.19.32.32 0 0 0-.09 0 .88.88 0 0 0-.33-.11H10a3 3 0 0 0-3 3v1H6a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h8a3 3 0 0 0 3-3v-1h1a3 3 0 0 0 3-3V8.94Zm-6-3.53L17.59 8H16a1 1 0 0 1-1-1V5.41ZM15 19a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h1v7a3 3 0 0 0 3 3h5v1Zm4-4a1 1 0 0 1-1 1h-8a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h3v3a3 3 0 0 0 3 3h3v5Z",
1811
2057
  fill: "#fff"
1812
2058
  })
1813
2059
  });
1814
2060
  const $cce7f1c9e9c29503$export$6470d09a29d34d08 = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
1815
- width: "23",
1816
- height: "22",
1817
- viewBox: "0 0 23 22",
2061
+ width: "24",
2062
+ height: "24",
2063
+ viewBox: "0 0 24 24",
1818
2064
  fill: "none",
1819
2065
  xmlns: "http://www.w3.org/2000/svg",
1820
2066
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
1821
- d: "M7.5 20h-4a1 1 0 0 1-1-1v-4a1 1 0 1 0-2 0v4a3 3 0 0 0 3 3h4a1 1 0 0 0 0-2Zm14-6a1 1 0 0 0-1 1v4a1 1 0 0 1-1 1h-4a1 1 0 0 0 0 2h4a3 3 0 0 0 3-3v-4a1 1 0 0 0-1-1Zm-2-14h-4a1 1 0 1 0 0 2h4a1 1 0 0 1 1 1v4a1 1 0 0 0 2 0V3a3 3 0 0 0-3-3Zm-18 8a1 1 0 0 0 1-1V3a1 1 0 0 1 1-1h4a1 1 0 0 0 0-2h-4a3 3 0 0 0-3 3v4a1 1 0 0 0 1 1Zm8-4h-4a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1Zm-1 4h-2V6h2v2Zm5 2h4a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1Zm1-4h2v2h-2V6Zm-5 6h-4a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1Zm-1 4h-2v-2h2v2Zm5-1a1 1 0 0 0 1-1 1 1 0 0 0 0-2h-1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1Zm4-3a1 1 0 0 0-1 1v3a1 1 0 0 0 0 2h1a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1Zm-4 4a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z",
2067
+ d: "M8 21H4a1 1 0 0 1-1-1v-4a1 1 0 1 0-2 0v4a3 3 0 0 0 3 3h4a1 1 0 0 0 0-2Zm14-6a1 1 0 0 0-1 1v4a1 1 0 0 1-1 1h-4a1 1 0 0 0 0 2h4a3 3 0 0 0 3-3v-4a1 1 0 0 0-1-1ZM20 1h-4a1 1 0 1 0 0 2h4a1 1 0 0 1 1 1v4a1 1 0 0 0 2 0V4a3 3 0 0 0-3-3ZM2 9a1 1 0 0 0 1-1V4a1 1 0 0 1 1-1h4a1 1 0 0 0 0-2H4a3 3 0 0 0-3 3v4a1 1 0 0 0 1 1Zm8-4H6a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1ZM9 9H7V7h2v2Zm5 2h4a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1Zm1-4h2v2h-2V7Zm-5 6H6a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1Zm-1 4H7v-2h2v2Zm5-1a1 1 0 0 0 1-1 1 1 0 0 0 0-2h-1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1Zm4-3a1 1 0 0 0-1 1v3a1 1 0 0 0 0 2h1a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1Zm-4 4a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z",
1822
2068
  fill: "#fff"
1823
2069
  })
1824
2070
  });
1825
2071
  const $cce7f1c9e9c29503$export$1095c93890fce526 = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
1826
- width: "21",
1827
- height: "20",
1828
- viewBox: "0 0 21 20",
2072
+ width: "24",
2073
+ height: "24",
2074
+ viewBox: "0 0 24 24",
1829
2075
  fill: "none",
1830
2076
  xmlns: "http://www.w3.org/2000/svg",
1831
2077
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
1832
- d: "m19.82 7.55-1.89-.63.89-1.78A1 1 0 0 0 18.63 4L16.5 1.87a1 1 0 0 0-1.15-.19l-1.78.89-.63-1.89A1 1 0 0 0 12 0H9a1 1 0 0 0-.95.68l-.63 1.89-1.78-.89a1 1 0 0 0-1.14.19L2.37 4a1 1 0 0 0-.19 1.15l.89 1.78-1.89.63a1 1 0 0 0-.68.94v3a1 1 0 0 0 .68.95l1.89.63-.89 1.78A1 1 0 0 0 2.37 16l2.13 2.13a1 1 0 0 0 1.15.19l1.78-.89.63 1.89a1 1 0 0 0 .95.68h3a1 1 0 0 0 .95-.68l.63-1.89 1.78.89a1 1 0 0 0 1.13-.19L18.63 16a1 1 0 0 0 .19-1.15l-.89-1.78 1.89-.63a1 1 0 0 0 .68-.94v-3a1 1 0 0 0-.68-.95Zm-1.32 3.23-1.2.4A2 2 0 0 0 16.14 14l.57 1.14-1.1 1.1-1.11-.6a2 2 0 0 0-2.79 1.16l-.4 1.2H9.72l-.4-1.2a2 2 0 0 0-2.82-1.16l-1.14.57-1.1-1.1.6-1.11a2 2 0 0 0-1.16-2.82l-1.2-.4V9.22l1.2-.4A2 2 0 0 0 4.86 6l-.57-1.11 1.1-1.1 1.11.57A2 2 0 0 0 9.32 3.2l.4-1.2h1.56l.4 1.2a2 2 0 0 0 2.82 1.16l1.14-.57 1.1 1.1-.6 1.11a2 2 0 0 0 1.16 2.79l1.2.4v1.59ZM10.5 6a4 4 0 1 0 0 8 4 4 0 0 0 0-8Zm0 6a2 2 0 1 1 0-4 2 2 0 0 1 0 4Z",
2078
+ d: "m21.32 9.55-1.89-.63.89-1.78A1 1 0 0 0 20.13 6L18 3.87a1 1 0 0 0-1.15-.19l-1.78.89-.63-1.89A1 1 0 0 0 13.5 2h-3a1 1 0 0 0-.95.68l-.63 1.89-1.78-.89A1 1 0 0 0 6 3.87L3.87 6a1 1 0 0 0-.19 1.15l.89 1.78-1.89.63a1 1 0 0 0-.68.94v3a1 1 0 0 0 .68.95l1.89.63-.89 1.78A1 1 0 0 0 3.87 18L6 20.13a1 1 0 0 0 1.15.19l1.78-.89.63 1.89a1 1 0 0 0 .95.68h3a1 1 0 0 0 .95-.68l.63-1.89 1.78.89a1 1 0 0 0 1.13-.19L20.13 18a1 1 0 0 0 .19-1.15l-.89-1.78 1.89-.63a1 1 0 0 0 .68-.94v-3a1 1 0 0 0-.68-.95ZM20 12.78l-1.2.4A2 2 0 0 0 17.64 16l.57 1.14-1.1 1.1-1.11-.6a2 2 0 0 0-2.79 1.16l-.4 1.2h-1.59l-.4-1.2A2 2 0 0 0 8 17.64l-1.14.57-1.1-1.1.6-1.11a2 2 0 0 0-1.16-2.82l-1.2-.4v-1.56l1.2-.4A2 2 0 0 0 6.36 8l-.57-1.11 1.1-1.1L8 6.36a2 2 0 0 0 2.82-1.16l.4-1.2h1.56l.4 1.2A2 2 0 0 0 16 6.36l1.14-.57 1.1 1.1-.6 1.11a2 2 0 0 0 1.16 2.79l1.2.4v1.59ZM12 8a4 4 0 1 0 0 8 4 4 0 0 0 0-8Zm0 6a2 2 0 1 1 0-4 2 2 0 0 1 0 4Z",
1833
2079
  fill: "#fff"
1834
2080
  })
1835
2081
  });
@@ -1861,9 +2107,17 @@ const $cce7f1c9e9c29503$export$5170987d58ae338d = ()=>/*#__PURE__*/ (0, $jQDcL$r
1861
2107
  viewBox: "0 0 24 24",
1862
2108
  fill: "none",
1863
2109
  xmlns: "http://www.w3.org/2000/svg",
1864
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
1865
- d: "M12.83 13.45a1 1 0 0 0-1.66 0l-4 6a1 1 0 0 0 0 1A1 1 0 0 0 8 21h8a1 1 0 0 0 .88-.53 1 1 0 0 0-.05-1l-4-6.02ZM9.87 19 12 15.8l2.13 3.2H9.87ZM19 3H5a3 3 0 0 0-3 3v9a3 3 0 0 0 3 3h.85a1 1 0 0 0 0-2H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1h-.85a1 1 0 0 0 0 2H19a3 3 0 0 0 3-3V6a3 3 0 0 0-3-3Z",
1866
- fill: "#fff"
2110
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("g", {
2111
+ clipPath: "url(#pip)",
2112
+ fill: "#fff",
2113
+ children: [
2114
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
2115
+ d: "M0 5v10a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V5a3 3 0 0 0-3-3H3a3 3 0 0 0-3 3Zm17-1a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h14Z"
2116
+ }),
2117
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
2118
+ d: "M10 14v4.879a3 3 0 0 0 3 3h8a3 3 0 0 0 3-3V14a3 3 0 0 0-3-3h-8a3 3 0 0 0-3 3ZM10 11.149c0 .113-.02.226-.06.332a.85.85 0 0 1-.8.519H5.736a.851.851 0 0 1 0-1.702h1.353l-2.792-2.8a.851.851 0 1 1 1.2-1.2l2.8 2.8V7.744a.851.851 0 0 1 1.703 0v3.405Z"
2119
+ })
2120
+ ]
1867
2121
  })
1868
2122
  });
1869
2123
 
@@ -1905,6 +2159,7 @@ const $4890069d0b6c2ba3$export$b286f91cddfedb5a = (0, ($parcel$interopDefault($j
1905
2159
  white-space: nowrap;
1906
2160
  max-height: 70vh;
1907
2161
  overflow: auto;
2162
+ border: 1px solid rgba(255, 255, 255, 0.1);
1908
2163
 
1909
2164
  ${$4890069d0b6c2ba3$export$d00c23c5e97ada8}:not(:last-child) {
1910
2165
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
@@ -1991,7 +2246,7 @@ const $1949f8f101c8cf77$export$1e86fd0e1db89578 = (0, ($parcel$interopDefault($j
1991
2246
  justify-content: space-between;
1992
2247
  align-items: center;
1993
2248
  background-color: ${(props)=>props.theme.backgroundColor};
1994
- height: 60px;
2249
+ height: 65px;
1995
2250
  padding: 0 15px;
1996
2251
 
1997
2252
  @media (max-height: 500px) {
@@ -2008,6 +2263,8 @@ const $1949f8f101c8cf77$export$4dc2e6a0e59ffa13 = (0, ($parcel$interopDefault($j
2008
2263
  line-height: 16px;
2009
2264
  color: #fff;
2010
2265
  margin-left: 5px;
2266
+ position: relative;
2267
+ bottom: 1px;
2011
2268
  `;
2012
2269
  const $1949f8f101c8cf77$export$8376625f8bb18347 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
2013
2270
  display: flex;
@@ -2348,6 +2605,7 @@ class $21395e477f83709c$export$45fabd1ce5e673de {
2348
2605
 
2349
2606
 
2350
2607
  const $e1930b467e7d8845$var$multiPiP = new (0, $21395e477f83709c$export$45fabd1ce5e673de)();
2608
+ const $e1930b467e7d8845$var$browser = $jQDcL$bowser.parse(window.navigator.userAgent);
2351
2609
  const $e1930b467e7d8845$var$Header = ()=>{
2352
2610
  const { setIsQuickConnectPopupVisible: setIsQuickConnectPopupVisible , setIsSettingsMenuVisible: setIsSettingsMenuVisible , options: options , muted: muted , streaming: streaming } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
2353
2611
  const { streams: streams } = (0, $3f6e908c45fcc5b3$export$b5633a7cfbe42d9f)();
@@ -2443,7 +2701,7 @@ const $e1930b467e7d8845$var$Header = ()=>{
2443
2701
  ]
2444
2702
  },
2445
2703
  ];
2446
- if (document.pictureInPictureEnabled) computedCategories[0].items.push({
2704
+ if (document.pictureInPictureEnabled && $e1930b467e7d8845$var$browser.platform.type === "desktop") computedCategories[0].items.push({
2447
2705
  id: "pip",
2448
2706
  title: "Picture-in-Picture",
2449
2707
  jsxIcon: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $cce7f1c9e9c29503$export$5170987d58ae338d), {}),
@@ -2484,25 +2742,26 @@ var $e1930b467e7d8845$export$2e2bcd8739ae039 = $e1930b467e7d8845$var$Header;
2484
2742
 
2485
2743
 
2486
2744
 
2487
- const $e79bb9d030bdcf5b$var$useWindowSize = (element)=>{
2745
+ const $56e1e7a85d8bf4bb$export$2b86bedf890eab8 = (element)=>{
2488
2746
  const [size, setSize] = (0, $jQDcL$react.useState)([
2489
2747
  0,
2490
2748
  0
2491
2749
  ]);
2492
2750
  (0, $jQDcL$react.useLayoutEffect)(()=>{
2493
2751
  const updateSize = ()=>setSize([
2494
- element?.offsetWidth || window.innerWidth,
2495
- element?.offsetHeight || window.innerHeight,
2752
+ element?.offsetWidth || 0,
2753
+ element?.offsetHeight || 0
2496
2754
  ]);
2497
- window.addEventListener("resize", updateSize);
2498
- updateSize();
2499
- return ()=>window.removeEventListener("resize", updateSize);
2755
+ if (element) {
2756
+ const observer = new ResizeObserver(updateSize);
2757
+ observer.observe(element);
2758
+ return ()=>observer.unobserve(element);
2759
+ }
2500
2760
  }, [
2501
2761
  element
2502
2762
  ]);
2503
2763
  return size;
2504
2764
  };
2505
- var $e79bb9d030bdcf5b$export$2e2bcd8739ae039 = $e79bb9d030bdcf5b$var$useWindowSize;
2506
2765
 
2507
2766
 
2508
2767
 
@@ -2512,15 +2771,11 @@ var $e79bb9d030bdcf5b$export$2e2bcd8739ae039 = $e79bb9d030bdcf5b$var$useWindowSi
2512
2771
 
2513
2772
 
2514
2773
 
2515
-
2516
- const $0ac48791ff0bcc8e$var$ThemedPath = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).path`
2517
- fill: ${(props)=>props.theme.controlsIconColor};
2518
- `;
2519
2774
  const $0ac48791ff0bcc8e$var$Microphone = ({ slash: slash , redSlash: redSlash , status: status , deviceRequest: deviceRequest })=>{
2520
2775
  if (slash) return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("svg", {
2521
- width: "25",
2522
- height: "25",
2523
- viewBox: "0 0 25 25",
2776
+ width: "24",
2777
+ height: "24",
2778
+ viewBox: "0 0 24 24",
2524
2779
  fill: "none",
2525
2780
  xmlns: "http://www.w3.org/2000/svg",
2526
2781
  children: [
@@ -2556,13 +2811,13 @@ const $0ac48791ff0bcc8e$var$Microphone = ({ slash: slash , redSlash: redSlash ,
2556
2811
  ]
2557
2812
  });
2558
2813
  if (status) return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
2559
- width: "12",
2560
- height: "13",
2561
- viewBox: "0 0 12 13",
2814
+ width: "14",
2815
+ height: "14",
2816
+ viewBox: "0 0 14 14",
2562
2817
  fill: "none",
2563
2818
  xmlns: "http://www.w3.org/2000/svg",
2564
2819
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
2565
- d: "M5.125 1.676a1.167 1.167 0 0 1 1.72-.082c.211.222.327.517.322.823v1.99a.583.583 0 1 0 1.166 0v-1.99A2.333 2.333 0 0 0 4.25.94a.583.583 0 1 0 .875.735ZM9.92 7.241h.117a.583.583 0 0 0 .583-.472c.042-.282.057-.567.047-.852a.583.583 0 1 0-1.167 0c0 .215-.021.43-.064.642a.584.584 0 0 0 .484.682Zm1.75 3.535L1.17.276a.583.583 0 1 0-.828.823l3.325 3.348v1.47a2.333 2.333 0 0 0 3.5 2.018l.851.852A3.5 3.5 0 0 1 2.5 5.917a.583.583 0 0 0-1.167 0 4.667 4.667 0 0 0 4.084 4.626v1.207H4.25a.583.583 0 0 0 0 1.167h3.5a.583.583 0 0 0 0-1.167H6.583v-1.207a4.59 4.59 0 0 0 2.246-.928l1.983 1.984a.584.584 0 0 0 .829-.823h.029ZM6 7.084a1.167 1.167 0 0 1-1.167-1.167v-.303l1.43 1.435A1.015 1.015 0 0 1 6 7.084Z",
2820
+ d: "M6.125 2.176a1.167 1.167 0 0 1 1.72-.082c.211.222.326.517.321.823v1.99a.583.583 0 1 0 1.167 0v-1.99A2.333 2.333 0 0 0 5.25 1.44a.583.583 0 1 0 .875.735Zm4.795 5.565h.117a.583.583 0 0 0 .583-.472c.042-.282.057-.567.046-.852a.584.584 0 0 0-1.166 0c0 .215-.022.43-.064.642a.583.583 0 0 0 .484.682Zm1.75 3.535L2.17.776a.583.583 0 1 0-.829.823l3.325 3.348v1.47a2.333 2.333 0 0 0 3.5 2.018l.852.852A3.5 3.5 0 0 1 3.5 6.417a.583.583 0 0 0-1.167 0 4.667 4.667 0 0 0 4.083 4.626v1.207H5.25a.583.583 0 0 0 0 1.167h3.5a.583.583 0 0 0 0-1.167H7.583v-1.207a4.59 4.59 0 0 0 2.246-.928l1.983 1.984a.584.584 0 0 0 .829-.823h.029ZM7 7.584a1.167 1.167 0 0 1-1.167-1.167v-.303l1.43 1.435A1.015 1.015 0 0 1 7 7.584Z",
2566
2821
  fill: "#fff"
2567
2822
  })
2568
2823
  });
@@ -2584,13 +2839,14 @@ const $0ac48791ff0bcc8e$var$Microphone = ({ slash: slash , redSlash: redSlash ,
2584
2839
  ]
2585
2840
  });
2586
2841
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
2587
- width: "16",
2588
- height: "22",
2589
- viewBox: "0 0 16 22",
2842
+ width: "24",
2843
+ height: "24",
2844
+ viewBox: "0 0 24 24",
2590
2845
  fill: "none",
2591
2846
  xmlns: "http://www.w3.org/2000/svg",
2592
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($0ac48791ff0bcc8e$var$ThemedPath, {
2593
- d: "M8 14a4 4 0 0 0 4-4V4a4 4 0 1 0-8 0v6a4 4 0 0 0 4 4ZM6 4a2 2 0 1 1 4 0v6a2 2 0 0 1-4 0V4Zm10 6a1 1 0 0 0-2 0 6 6 0 1 1-12 0 1 1 0 0 0-2 0 8 8 0 0 0 7 7.93V20H5a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2H9v-2.07A8 8 0 0 0 16 10Z"
2847
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
2848
+ d: "M12 15a4 4 0 0 0 4-4V5a4 4 0 1 0-8 0v6a4 4 0 0 0 4 4ZM10 5a2 2 0 1 1 4 0v6a2 2 0 0 1-4 0V5Zm10 6a1 1 0 0 0-2 0 6 6 0 1 1-12 0 1 1 0 1 0-2 0 8 8 0 0 0 7 7.93V21H9a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2h-2v-2.07A8 8 0 0 0 20 11Z",
2849
+ fill: "#fff"
2594
2850
  })
2595
2851
  });
2596
2852
  };
@@ -2598,15 +2854,11 @@ var $0ac48791ff0bcc8e$export$2e2bcd8739ae039 = $0ac48791ff0bcc8e$var$Microphone;
2598
2854
 
2599
2855
 
2600
2856
 
2601
-
2602
- const $ab00aedf8a706bfe$var$ThemedPath = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).path`
2603
- fill: ${(props)=>props.theme.controlsIconColor};
2604
- `;
2605
2857
  const $ab00aedf8a706bfe$var$Camera = ({ slash: slash , status: status , deviceRequest: deviceRequest })=>{
2606
2858
  if (slash) return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("svg", {
2607
- width: "25",
2608
- height: "25",
2609
- viewBox: "0 0 25 25",
2859
+ width: "24",
2860
+ height: "24",
2861
+ viewBox: "0 0 24 24",
2610
2862
  fill: "none",
2611
2863
  xmlns: "http://www.w3.org/2000/svg",
2612
2864
  children: [
@@ -2623,13 +2875,13 @@ const $ab00aedf8a706bfe$var$Camera = ({ slash: slash , status: status , deviceRe
2623
2875
  ]
2624
2876
  });
2625
2877
  if (status) return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
2626
- width: "12",
2627
- height: "13",
2628
- viewBox: "0 0 12 13",
2878
+ width: "14",
2879
+ height: "14",
2880
+ viewBox: "0 0 14 14",
2629
2881
  fill: "none",
2630
2882
  xmlns: "http://www.w3.org/2000/svg",
2631
2883
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
2632
- d: "M3.498 3.169 1.164.836a.586.586 0 0 0-.828.828L1.695 3A1.75 1.75 0 0 0 .167 4.75v3.5A1.75 1.75 0 0 0 1.917 10h5.25a1.75 1.75 0 0 0 1.108-.403l2.56 2.567a.582.582 0 0 0 .83 0 .582.582 0 0 0 0-.828L3.497 3.169Zm3.669 5.664h-5.25a.583.583 0 0 1-.584-.583v-3.5a.583.583 0 0 1 .584-.584h.927l4.591 4.597a.583.583 0 0 1-.268.07Zm4.392-5.162a.583.583 0 0 0-.583 0l-2.06 1.015A1.75 1.75 0 0 0 7.167 3h-.781a.583.583 0 1 0 0 1.166h.782a.583.583 0 0 1 .583.584v.875a.944.944 0 0 0 0 .11.38.38 0 0 0 .03.117s.028.035.04.059a.583.583 0 0 0 .088.122s.058.035.087.058l.1.065c.044.006.089.006.133 0a.41.41 0 0 0 .082 0 .949.949 0 0 0 .11 0 .38.38 0 0 0 .118-.03l2.129-1.015v3.337a.584.584 0 0 0 1.166 0V4.166a.583.583 0 0 0-.274-.495Z",
2884
+ d: "M4.497 3.669 2.164 1.336a.586.586 0 1 0-.828.828L2.695 3.5a1.75 1.75 0 0 0-1.529 1.75v3.5a1.75 1.75 0 0 0 1.75 1.75h5.25a1.75 1.75 0 0 0 1.109-.403l2.56 2.567a.583.583 0 0 0 .957-.19.582.582 0 0 0-.128-.638L4.497 3.669Zm3.67 5.664h-5.25a.583.583 0 0 1-.584-.583v-3.5a.583.583 0 0 1 .583-.584h.928l4.59 4.597a.583.583 0 0 1-.268.07Zm4.392-5.162a.583.583 0 0 0-.583 0l-2.06 1.015A1.75 1.75 0 0 0 8.166 3.5h-.781a.583.583 0 0 0 0 1.166h.781a.583.583 0 0 1 .584.584v.875a.944.944 0 0 0 0 .11.38.38 0 0 0 .029.117s.03.035.04.059a.584.584 0 0 0 .088.122s.059.035.088.058l.099.065c.044.006.09.006.134 0a.41.41 0 0 0 .082 0 .949.949 0 0 0 .11 0 .38.38 0 0 0 .117-.03l2.13-1.015v3.337a.583.583 0 0 0 1.166 0V4.666a.584.584 0 0 0-.274-.495Z",
2633
2885
  fill: "#fff"
2634
2886
  })
2635
2887
  });
@@ -2651,13 +2903,14 @@ const $ab00aedf8a706bfe$var$Camera = ({ slash: slash , status: status , deviceRe
2651
2903
  ]
2652
2904
  });
2653
2905
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
2654
- width: "20",
2655
- height: "12",
2656
- viewBox: "0 0 20 12",
2906
+ width: "24",
2907
+ height: "24",
2908
+ viewBox: "0 0 24 24",
2657
2909
  fill: "none",
2658
2910
  xmlns: "http://www.w3.org/2000/svg",
2659
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($ab00aedf8a706bfe$var$ThemedPath, {
2660
- d: "M19.53 1.15a1 1 0 0 0-1 0L15 2.89A3 3 0 0 0 12 0H3a3 3 0 0 0-3 3v6a3 3 0 0 0 3 3h9a3 3 0 0 0 3-2.89l3.56 1.78A1 1 0 0 0 19 11a1 1 0 0 0 .875-.514A1 1 0 0 0 20 10V2a1 1 0 0 0-.47-.85ZM13 9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h9a1 1 0 0 1 1 1v6Zm5-.62-3-1.5V5.12l3-1.5v4.76Z"
2911
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
2912
+ d: "M21.53 7.15a1 1 0 0 0-1 0L17 8.89A3 3 0 0 0 14 6H5a3 3 0 0 0-3 3v6a3 3 0 0 0 3 3h9a3 3 0 0 0 3-2.89l3.56 1.78A1 1 0 0 0 21 17a1 1 0 0 0 .875-.514A1 1 0 0 0 22 16V8a1 1 0 0 0-.47-.85ZM15 15a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h9a1 1 0 0 1 1 1v6Zm5-.62-3-1.5v-1.76l3-1.5v4.76Z",
2913
+ fill: "#fff"
2661
2914
  })
2662
2915
  });
2663
2916
  };
@@ -2675,18 +2928,18 @@ const $f2ca2ee422d05e6e$var$ThemedArrowPath = (0, ($parcel$interopDefault($jQDcL
2675
2928
  `;
2676
2929
  const $f2ca2ee422d05e6e$var$Screen = ({ arrow: arrow , white: white , deviceRequest: deviceRequest })=>{
2677
2930
  if (deviceRequest) return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("svg", {
2678
- width: "31",
2931
+ width: "30",
2679
2932
  height: "30",
2680
- viewBox: "0 0 31 30",
2933
+ viewBox: "0 0 30 30",
2681
2934
  fill: "none",
2682
2935
  xmlns: "http://www.w3.org/2000/svg",
2683
2936
  children: [
2684
2937
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
2685
- d: "M6.75 3.75h17.5A3.75 3.75 0 0 1 28 7.5v10a3.75 3.75 0 0 1-3.75 3.75H6.75A3.75 3.75 0 0 1 3 17.5v-10a3.75 3.75 0 0 1 3.75-3.75Z",
2938
+ d: "M6.25 3.75h17.5A3.75 3.75 0 0 1 27.5 7.5v10a3.75 3.75 0 0 1-3.75 3.75H6.25A3.75 3.75 0 0 1 2.5 17.5v-10a3.75 3.75 0 0 1 3.75-3.75Z",
2686
2939
  fill: "url(#screenTop)"
2687
2940
  }),
2688
2941
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
2689
- d: "M14.25 23.75v-2.5h2.5v2.5h5a1.25 1.25 0 0 1 0 2.5H9.25a1.25 1.25 0 0 1 0-2.5h5Z",
2942
+ d: "M13.75 23.75v-2.5h2.5v2.5h5a1.25 1.25 0 0 1 0 2.5H8.75a1.25 1.25 0 0 1 0-2.5h5Z",
2690
2943
  fill: "url(#screenBottom)"
2691
2944
  })
2692
2945
  ]
@@ -2714,6 +2967,22 @@ var $f2ca2ee422d05e6e$export$2e2bcd8739ae039 = $f2ca2ee422d05e6e$var$Screen;
2714
2967
 
2715
2968
 
2716
2969
 
2970
+
2971
+ const $caac3e068b613ef5$var$ThemedCirclePlain = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).circle`
2972
+ stroke: ${({ theme: theme })=>theme.primaryColor};
2973
+ `;
2974
+ const $caac3e068b613ef5$var$ThemedCircleAlpha = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).circle`
2975
+ stroke: ${({ theme: theme })=>$caac3e068b613ef5$var$hex2rgba(theme.primaryColor, 0.7683870967741935)};
2976
+ `;
2977
+ const $caac3e068b613ef5$var$hex2rgba = (hex, alpha)=>{
2978
+ const rh = hex.slice(1, 3);
2979
+ const gh = hex.slice(3, 5);
2980
+ const bh = hex.slice(5, 7);
2981
+ const rrgb = parseInt(rh, 16);
2982
+ const grgb = parseInt(gh, 16);
2983
+ const brgb = parseInt(bh, 16);
2984
+ return `rgba(${rrgb}, ${grgb}, ${brgb}, ${alpha})`;
2985
+ };
2717
2986
  const $caac3e068b613ef5$var$Ripple = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("svg", {
2718
2987
  xmlns: "http://www.w3.org/2000/svg",
2719
2988
  style: {
@@ -2729,12 +2998,11 @@ const $caac3e068b613ef5$var$Ripple = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntim
2729
2998
  viewBox: "0 0 100 100",
2730
2999
  preserveAspectRatio: "xMidYMid",
2731
3000
  children: [
2732
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("circle", {
3001
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)($caac3e068b613ef5$var$ThemedCirclePlain, {
2733
3002
  cx: "50",
2734
3003
  cy: "50",
2735
3004
  r: "0",
2736
3005
  fill: "none",
2737
- stroke: "#6765fc",
2738
3006
  children: [
2739
3007
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("animate", {
2740
3008
  attributeName: "r",
@@ -2758,12 +3026,11 @@ const $caac3e068b613ef5$var$Ripple = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntim
2758
3026
  })
2759
3027
  ]
2760
3028
  }),
2761
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("circle", {
3029
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)($caac3e068b613ef5$var$ThemedCircleAlpha, {
2762
3030
  cx: "50",
2763
3031
  cy: "50",
2764
3032
  r: "0",
2765
3033
  fill: "none",
2766
- stroke: "rgba(102, 100, 252, 0.7683870967741935)",
2767
3034
  children: [
2768
3035
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("animate", {
2769
3036
  attributeName: "r",
@@ -2794,13 +3061,13 @@ var $caac3e068b613ef5$export$2e2bcd8739ae039 = $caac3e068b613ef5$var$Ripple;
2794
3061
 
2795
3062
 
2796
3063
  const $0319693440f03062$var$User = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
2797
- width: "20",
2798
- height: "22",
2799
- viewBox: "0 0 20 22",
3064
+ width: "24",
3065
+ height: "24",
3066
+ viewBox: "0 0 24 24",
2800
3067
  fill: "none",
2801
3068
  xmlns: "http://www.w3.org/2000/svg",
2802
3069
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
2803
- d: "M13.71 11.71a6 6 0 1 0-7.42 0 10 10 0 0 0-6.22 8.18 1.006 1.006 0 0 0 2 .22 8 8 0 0 1 15.9 0 1 1 0 0 0 1 .89h.11a1 1 0 0 0 .88-1.1 10 10 0 0 0-6.25-8.19ZM10 11a4 4 0 1 1 0-8 4 4 0 0 1 0 8Z",
3070
+ d: "M15.71 12.71a6 6 0 1 0-7.42 0 10 10 0 0 0-6.22 8.18 1.006 1.006 0 1 0 2 .22 8 8 0 0 1 15.9 0 1 1 0 0 0 1 .89h.11a1 1 0 0 0 .88-1.1 10 10 0 0 0-6.25-8.19ZM12 12a4 4 0 1 1 0-8 4 4 0 0 1 0 8Z",
2804
3071
  fill: "#fff"
2805
3072
  })
2806
3073
  });
@@ -2809,33 +3076,250 @@ var $0319693440f03062$export$2e2bcd8739ae039 = $0319693440f03062$var$User;
2809
3076
 
2810
3077
 
2811
3078
 
2812
- const $2c45d365ee8aa1ab$var$Blink = (0, $jQDcL$styledcomponents.keyframes)`
2813
- 50% {
2814
- border-color: #6967fc;
2815
- }
2816
- `;
2817
- const $2c45d365ee8aa1ab$var$Flash = (0, $jQDcL$styledcomponents.keyframes)`
2818
- 0% {
2819
- opacity: 0.9;
2820
- }
2821
- 100% {
2822
- opacity: 0;
2823
- }
2824
- `;
2825
- const $2c45d365ee8aa1ab$export$c983850c6c9d8b0e = (0, $jQDcL$styledcomponents.keyframes)`
2826
- 0% {
2827
- opacity: 0;
2828
- }
2829
- 50% {
2830
- opacity: 1;
2831
- }
2832
- 100% {
2833
- opacity: 0;
2834
- }
3079
+ const $66c45b20958474ec$export$b302ef9d8310f71 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3080
+ display: flex;
3081
+ flex: 1;
3082
+ flex-direction: ${(props)=>props.direction};
3083
+ background-color: ${(props)=>props.theme.backgroundColor};
3084
+ padding: 0 10px;
3085
+ position: relative;
3086
+ overflow: hidden;
2835
3087
  `;
2836
- const $2c45d365ee8aa1ab$var$Resize = (0, $jQDcL$styledcomponents.keyframes)`
2837
- 0% {
2838
- width: 200px;
3088
+ const $66c45b20958474ec$export$5d87c823a66d4f1a = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3089
+ display: flex;
3090
+ width: ${(props)=>{
3091
+ if (props.audioTiles) return "100%";
3092
+ if (props.orientation === "landscape" && props.reduced) return "20%";
3093
+ return "100%";
3094
+ }};
3095
+ height: ${(props)=>{
3096
+ if (props.audioTiles) return "100%";
3097
+ if (props.orientation === "portrait" && props.reduced) return "50%";
3098
+ return "100%";
3099
+ }};
3100
+ flex-direction: row;
3101
+ flex-wrap: wrap;
3102
+ justify-content: center;
3103
+ align-content: center;
3104
+ gap: ${(props)=>props.audioTiles ? "48px" : "15px"};
3105
+ overflow: scroll;
3106
+ `;
3107
+ const $66c45b20958474ec$export$798352b46783b18d = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3108
+ display: flex;
3109
+ justify-content: center;
3110
+ align-items: center;
3111
+ position: relative;
3112
+ background-color: ${(props)=>props.theme.streamTileBackgroundColor};
3113
+ border: ${(props)=>{
3114
+ if (props.activeBorder) return `2px solid ${props.theme.primaryColor}`;
3115
+ else if (props.border) return `2px solid ${props.theme.streamTileBorderColor}`;
3116
+ return `2px solid ${props.theme.backgroundColor}`;
3117
+ }};
3118
+ border-radius: 20px;
3119
+ color: #cbcbcb;
3120
+ box-sizing: border-box;
3121
+ max-height: 100%;
3122
+ cursor: ${(props)=>props.cursor ? props.cursor : "default"};
3123
+ `;
3124
+ const $66c45b20958474ec$export$d574f5511ec1d79a = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).video`
3125
+ position: absolute;
3126
+ top: 0;
3127
+ left: 0;
3128
+ width: 100%;
3129
+ height: 100%;
3130
+ object-fit: cover;
3131
+ border-radius: inherit;
3132
+ transform: ${(props)=>props.mirror ? "scale(-1, 1)" : "none"};
3133
+ z-index: ${(props)=>props.zIndex ? props.zIndex : "unset"};
3134
+ `;
3135
+ const $66c45b20958474ec$export$778ed67917f5eacf = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3136
+ display: flex;
3137
+ position: absolute;
3138
+ top: 8px;
3139
+ left: 8px;
3140
+ gap: 8px;
3141
+ z-index: 15;
3142
+ `;
3143
+ const $66c45b20958474ec$export$92fe811838849d7d = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3144
+ display: flex;
3145
+ justify-content: center;
3146
+ align-items: center;
3147
+ width: 26px;
3148
+ height: 26px;
3149
+ border-radius: 50%;
3150
+ background-color: rgba(28, 32, 36, 0.25);
3151
+ `;
3152
+ const $66c45b20958474ec$export$a878cdfb933a1421 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3153
+ position: absolute;
3154
+ display: flex;
3155
+ align-items: center;
3156
+ gap: 5px;
3157
+ background: rgba(27, 32, 36, 0.25);
3158
+ border-radius: 50px;
3159
+ padding: 5px 10px 5px 5px;
3160
+ bottom: 8px;
3161
+ left: 8px;
3162
+ color: white;
3163
+ z-index: 15;
3164
+ `;
3165
+ const $66c45b20958474ec$export$b430fec6b171ceb5 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).span`
3166
+ display: inline-block;
3167
+ font-size: 11px;
3168
+ font-weight: 700;
3169
+ max-width: 100%;
3170
+ white-space: nowrap;
3171
+ overflow: hidden;
3172
+ text-overflow: ellipsis;
3173
+ box-sizing: border-box;
3174
+ `;
3175
+ const $66c45b20958474ec$export$f6525863ef5a71a9 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3176
+ display: flex;
3177
+ justify-content: center;
3178
+ align-items: center;
3179
+ width: 14px;
3180
+ height: 14px;
3181
+ padding: 3px 4px;
3182
+ box-sizing: border-box;
3183
+ background-color: #2d2d2d;
3184
+ border-radius: 50px;
3185
+ font-size: 9px;
3186
+ font-weight: 700;
3187
+ line-height: 8px;
3188
+ `;
3189
+ const $66c45b20958474ec$export$f217faec90120a0c = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3190
+ display: flex;
3191
+ justify-content: center;
3192
+ align-items: center;
3193
+ flex-direction: column;
3194
+ width: 100%;
3195
+ height: 100%;
3196
+ border-radius: inherit;
3197
+ z-index: 10;
3198
+ background: ${(props)=>props.streaming ? "linear-gradient(0deg, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8))" : "none"};
3199
+ `;
3200
+ const $66c45b20958474ec$export$df42e007689062b0 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).p`
3201
+ text-align: center;
3202
+ font-weight: 600;
3203
+ font-size: ${(props)=>{
3204
+ if (props.size === "small") return "12px";
3205
+ if (props.size === "medium") return "14px";
3206
+ if (props.size === "large") return "16px";
3207
+ return "16px";
3208
+ }};
3209
+ margin: 12px 6px;
3210
+ `;
3211
+ const $66c45b20958474ec$export$81d5557f9199e44d = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3212
+ display: flex;
3213
+ max-width: 90%;
3214
+ background: rgba(45, 45, 45, 0.5);
3215
+ border-radius: 50px;
3216
+ padding: ${(props)=>{
3217
+ if (props.size === "small") return "6px";
3218
+ if (props.size === "medium") return "6px";
3219
+ if (props.size === "large") return "10px";
3220
+ return "10px";
3221
+ }};
3222
+ gap: ${(props)=>{
3223
+ if (props.size === "small") return "8px";
3224
+ if (props.size === "medium") return "12px";
3225
+ if (props.size === "large") return "18px";
3226
+ return "18px";
3227
+ }};
3228
+ gap: 18px;
3229
+ box-sizing: border-box;
3230
+ `;
3231
+ const $66c45b20958474ec$export$2c451b1e9e28138c = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
3232
+ display: flex;
3233
+ justify-content: center;
3234
+ align-items: center;
3235
+ border: none;
3236
+ border-radius: 50%;
3237
+ background-color: #2d2d2d;
3238
+ padding: ${(props)=>{
3239
+ if (props.size === "small") return "2px";
3240
+ if (props.size === "medium") return "6px";
3241
+ if (props.size === "large") return "12px";
3242
+ return 0;
3243
+ }};
3244
+ border: 2px solid transparent;
3245
+
3246
+ &:hover {
3247
+ border: 2px solid ${({ theme: theme })=>theme.primaryColor};
3248
+ box-sizing: border-box;
3249
+ }
3250
+ `;
3251
+ const $66c45b20958474ec$export$6ddfb572d7b6d164 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3252
+ display: flex;
3253
+ justify-content: center;
3254
+ align-items: center;
3255
+ width: 56px;
3256
+ height: 56px;
3257
+ background-color: #2d2d2d;
3258
+ border-radius: 30%;
3259
+ `;
3260
+ const $66c45b20958474ec$export$a2930b41faa750f4 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).span`
3261
+ font-size: 26px;
3262
+ font-weight: 600;
3263
+ line-height: 20px;
3264
+ color: #fff;
3265
+ `;
3266
+ const $66c45b20958474ec$export$2d75367b6e042d67 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).img`
3267
+ width: inherit;
3268
+ height: inherit;
3269
+ border-radius: inherit;
3270
+ `;
3271
+ const $66c45b20958474ec$export$26fe7ec9351ff761 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).img`
3272
+ border: 2px solid #fff;
3273
+ border-radius: 8px;
3274
+ width: 36px;
3275
+ height: 36px;
3276
+ `;
3277
+ const $66c45b20958474ec$export$49ac927a2aaad85 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3278
+ display: flex;
3279
+ justify-content: center;
3280
+ align-items: center;
3281
+ background-color: #2d2d2d;
3282
+ width: 13px;
3283
+ height: 13px;
3284
+ border-radius: 50px;
3285
+ color: #fff;
3286
+ font-size: 7px;
3287
+ font-weight: 700;
3288
+
3289
+ svg {
3290
+ width: 9px;
3291
+ height: 9px;
3292
+ }
3293
+ `;
3294
+
3295
+
3296
+ const $2c45d365ee8aa1ab$var$Blink = (color)=>(0, $jQDcL$styledcomponents.keyframes)`
3297
+ 50% {
3298
+ border-color: ${color};
3299
+ }
3300
+ `;
3301
+ const $2c45d365ee8aa1ab$var$Flash = (0, $jQDcL$styledcomponents.keyframes)`
3302
+ 0% {
3303
+ opacity: 0.9;
3304
+ }
3305
+ 100% {
3306
+ opacity: 0;
3307
+ }
3308
+ `;
3309
+ const $2c45d365ee8aa1ab$export$c983850c6c9d8b0e = (0, $jQDcL$styledcomponents.keyframes)`
3310
+ 0% {
3311
+ opacity: 0;
3312
+ }
3313
+ 50% {
3314
+ opacity: 1;
3315
+ }
3316
+ 100% {
3317
+ opacity: 0;
3318
+ }
3319
+ `;
3320
+ const $2c45d365ee8aa1ab$var$Resize = (0, $jQDcL$styledcomponents.keyframes)`
3321
+ 0% {
3322
+ width: 200px;
2839
3323
  height: 200px;
2840
3324
  }
2841
3325
  100% {
@@ -2869,8 +3353,8 @@ const $2c45d365ee8aa1ab$export$ba5a75b023bcdce2 = (0, ($parcel$interopDefault($j
2869
3353
  position: relative;
2870
3354
  width: 100%;
2871
3355
  height: 100%;
2872
- background-color: ${(props)=>props.theme.streamTileBackgroundColor};
2873
- border: ${(props)=>props.border ? `2px solid ${props.theme.streamTileBorderColor}` : "none"};
3356
+ background-color: ${(props)=>props.border ? props.theme.streamTileBackgroundColor : "transparent"};
3357
+ border: 2px solid ${(props)=>props.border ? props.theme.streamTileBorderColor : "transparent"};
2874
3358
  border-radius: 20px;
2875
3359
  box-sizing: border-box;
2876
3360
 
@@ -2922,7 +3406,7 @@ const $2c45d365ee8aa1ab$export$3f538be5f07ec098 = (0, ($parcel$interopDefault($j
2922
3406
  z-index: 50;
2923
3407
  color: #fff;
2924
3408
  overflow: hidden;
2925
- animation: ${$2c45d365ee8aa1ab$var$Blink} 1.3s infinite;
3409
+ animation: ${(props)=>$2c45d365ee8aa1ab$var$Blink(props.theme.primaryColor)} 1.3s infinite;
2926
3410
  `;
2927
3411
  const $2c45d365ee8aa1ab$export$31bbfacf5347c84a = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
2928
3412
  display: flex;
@@ -2947,8 +3431,8 @@ const $2c45d365ee8aa1ab$export$dfd6aceefcfce0c9 = (0, ($parcel$interopDefault($j
2947
3431
  margin-top: 15px;
2948
3432
  `;
2949
3433
  const $2c45d365ee8aa1ab$export$a85169f132f25a9d = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
2950
- background-color: ${(props)=>props.active ? "#6967fc" : "transparent"};
2951
- border: 2px solid #6967fc;
3434
+ background-color: ${(props)=>props.active ? props.theme.primaryColor : "transparent"};
3435
+ border: 2px solid ${({ theme: theme })=>theme.primaryColor};
2952
3436
  border-radius: 50px;
2953
3437
  padding: 8px 18px;
2954
3438
  color: #fff;
@@ -2957,7 +3441,7 @@ const $2c45d365ee8aa1ab$export$a85169f132f25a9d = (0, ($parcel$interopDefault($j
2957
3441
  line-height: 22px;
2958
3442
 
2959
3443
  &:hover {
2960
- background-color: #6967fc;
3444
+ background-color: ${({ theme: theme })=>theme.primaryColor};
2961
3445
  }
2962
3446
  `;
2963
3447
  const $2c45d365ee8aa1ab$export$e07ea3386b3cb3d9 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
@@ -2990,8 +3474,9 @@ const $2c45d365ee8aa1ab$export$9e533c08c30af08 = (0, ($parcel$interopDefault($jQ
2990
3474
  position: absolute;
2991
3475
  width: 100%;
2992
3476
  height: 100%;
2993
- background-color: rgba(0, 0, 0, 0.75);
2994
- z-index: 16;
3477
+ background-color: ${(props)=>props.show ? "rgba(0, 0, 0, 0.75)" : "transparent"};
3478
+ transition: all ${({ show: show })=>show ? "0.2s" : "0.66s"};
3479
+ z-index: ${({ show: show })=>show ? 16 : -1};
2995
3480
  `;
2996
3481
  const $2c45d365ee8aa1ab$export$2b501aee548bae06 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
2997
3482
  position: absolute;
@@ -3017,240 +3502,29 @@ const $2c45d365ee8aa1ab$export$26fe7ec9351ff761 = (0, ($parcel$interopDefault($j
3017
3502
  width: 36px;
3018
3503
  height: 36px;
3019
3504
  `;
3020
-
3021
-
3022
-
3023
- const $66c45b20958474ec$export$b302ef9d8310f71 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3024
- display: flex;
3025
- flex: 1;
3026
- flex-direction: ${(props)=>props.direction};
3027
- background-color: ${(props)=>props.theme.backgroundColor};
3028
- padding: 16px 10px;
3029
- position: relative;
3030
- overflow: hidden;
3031
- `;
3032
- const $66c45b20958474ec$export$5d87c823a66d4f1a = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3033
- display: flex;
3034
- width: ${(props)=>{
3035
- if (props.audioTiles) return "100%";
3036
- if (props.orientation === "landscape") {
3037
- if (props.reduced) return "20%";
3038
- return "80%";
3039
- }
3040
- return "100%";
3041
- }};
3042
- height: ${(props)=>{
3043
- if (props.audioTiles) return "100%";
3044
- if (props.orientation === "portrait" && props.reduced) return "50%";
3045
- return "100%";
3046
- }};
3047
- flex-direction: row;
3048
- flex-wrap: wrap;
3049
- justify-content: center;
3050
- align-content: center;
3051
- gap: ${(props)=>props.audioTiles ? "48px" : "15px"};
3052
- overflow: scroll;
3053
- `;
3054
- const $66c45b20958474ec$export$798352b46783b18d = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3055
- display: flex;
3056
- justify-content: center;
3057
- align-items: center;
3058
- position: relative;
3059
- background-color: ${(props)=>props.theme.streamTileBackgroundColor};
3060
- border: ${(props)=>{
3061
- if (props.activeBorder) return "2px solid #6967fc";
3062
- else if (props.border) return `2px solid ${props.theme.streamTileBorderColor}`;
3063
- return "none";
3064
- }};
3065
- border-radius: 20px;
3066
- color: #cbcbcb;
3067
- box-sizing: border-box;
3068
- max-height: 100%;
3069
- cursor: ${(props)=>props.cursor ? props.cursor : "default"};
3070
- `;
3071
- const $66c45b20958474ec$export$d574f5511ec1d79a = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).video`
3072
- position: absolute;
3073
- top: 0;
3074
- left: 0;
3075
- width: 100%;
3076
- height: 100%;
3077
- object-fit: cover;
3078
- border-radius: inherit;
3079
- transform: ${(props)=>props.mirror ? "scale(-1, 1)" : "none"};
3080
- z-index: ${(props)=>props.zIndex ? props.zIndex : "unset"};
3081
- `;
3082
- const $66c45b20958474ec$export$778ed67917f5eacf = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3083
- display: flex;
3084
- position: absolute;
3085
- top: 16px;
3086
- left: 16px;
3087
- gap: 8px;
3088
- z-index: 15;
3089
-
3090
- @media (max-width: 500px) {
3091
- top: 8px;
3092
- left: 8px;
3093
- }
3094
- `;
3095
- const $66c45b20958474ec$export$92fe811838849d7d = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3096
- display: flex;
3097
- justify-content: center;
3098
- align-items: center;
3099
- width: 26px;
3100
- height: 26px;
3101
- border-radius: 50%;
3102
- background-color: rgba(28, 32, 36, 0.25);
3103
- `;
3104
- const $66c45b20958474ec$export$b430fec6b171ceb5 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3105
- position: absolute;
3106
- display: flex;
3107
- bottom: 10px;
3108
- left: 16px;
3109
- color: white;
3110
- font-size: 12px;
3111
- right: 16px;
3112
- z-index: 15;
3113
-
3114
- p {
3115
- display: inline-block;
3116
- max-width: 100%;
3117
- background: rgba(27, 33, 39, 0.3);
3118
- border-radius: 10px;
3119
- padding: 10px;
3120
- margin: 0;
3121
- white-space: nowrap;
3122
- overflow: hidden;
3123
- text-overflow: ellipsis;
3124
- box-sizing: border-box;
3125
- }
3126
-
3127
- @media (max-width: 500px) {
3128
- bottom: 7.5px;
3129
- left: 8px;
3130
- }
3131
- `;
3132
- const $66c45b20958474ec$export$f217faec90120a0c = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3133
- display: flex;
3134
- justify-content: center;
3135
- align-items: center;
3136
- flex-direction: column;
3137
- width: 100%;
3138
- height: 100%;
3139
- border-radius: inherit;
3140
- z-index: 10;
3141
- background: ${(props)=>props.streaming ? "linear-gradient(0deg, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8))" : "none"};
3142
- `;
3143
- const $66c45b20958474ec$export$df42e007689062b0 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).p`
3144
- text-align: center;
3145
- font-weight: 600;
3146
- font-size: ${(props)=>{
3147
- if (props.size === "small") return "12px";
3148
- if (props.size === "medium") return "14px";
3149
- if (props.size === "large") return "16px";
3150
- return "16px";
3151
- }};
3152
- margin: 12px 6px;
3153
- `;
3154
- const $66c45b20958474ec$export$81d5557f9199e44d = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3155
- display: flex;
3156
- max-width: 90%;
3157
- background: rgba(45, 45, 45, 0.5);
3158
- border-radius: 50px;
3159
- padding: ${(props)=>{
3160
- if (props.size === "small") return "6px";
3161
- if (props.size === "medium") return "6px";
3162
- if (props.size === "large") return "10px";
3163
- return "10px";
3164
- }};
3165
- gap: ${(props)=>{
3166
- if (props.size === "small") return "8px";
3167
- if (props.size === "medium") return "12px";
3168
- if (props.size === "large") return "18px";
3169
- return "18px";
3170
- }};
3171
- gap: 18px;
3172
- box-sizing: border-box;
3173
- `;
3174
- const $66c45b20958474ec$export$2c451b1e9e28138c = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
3175
- display: flex;
3176
- justify-content: center;
3177
- align-items: center;
3178
- border: none;
3179
- border-radius: 50%;
3180
- background-color: #2d2d2d;
3181
- padding: ${(props)=>{
3182
- if (props.size === "small") return "2px";
3183
- if (props.size === "medium") return "6px";
3184
- if (props.size === "large") return "12px";
3185
- return 0;
3186
- }};
3187
- border: 2px solid transparent;
3188
-
3189
- &:hover {
3190
- border: 2px solid #6967fc;
3191
- box-sizing: border-box;
3192
- }
3193
- `;
3194
- const $66c45b20958474ec$export$6ddfb572d7b6d164 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3195
- display: flex;
3196
- justify-content: center;
3197
- align-items: center;
3198
- width: 56px;
3199
- height: 56px;
3200
- background-color: #2d2d2d;
3201
- border-radius: 30%;
3202
- `;
3203
- const $66c45b20958474ec$export$a2930b41faa750f4 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).span`
3204
- font-size: 26px;
3205
- font-weight: 600;
3206
- line-height: 20px;
3207
- color: #fff;
3208
- `;
3209
- const $66c45b20958474ec$export$2d75367b6e042d67 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).img`
3210
- width: inherit;
3211
- height: inherit;
3212
- border-radius: inherit;
3213
- `;
3214
- const $66c45b20958474ec$export$26fe7ec9351ff761 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).img`
3215
- border: 2px solid #fff;
3216
- border-radius: 8px;
3217
- width: 36px;
3218
- height: 36px;
3219
- `;
3220
- const $66c45b20958474ec$export$49ac927a2aaad85 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
3221
- display: flex;
3222
- justify-content: center;
3223
- align-items: center;
3224
- background-color: #2d2d2d;
3225
- width: 13px;
3226
- height: 13px;
3227
- border-radius: 50px;
3228
- color: #fff;
3229
- font-size: 7px;
3505
+ const $2c45d365ee8aa1ab$export$500c3c5544c37412 = (0, ($parcel$interopDefault($jQDcL$styledcomponents)))((0, $66c45b20958474ec$export$a878cdfb933a1421))`
3506
+ padding: 5px 10px;
3507
+ font-size: 11px;
3230
3508
  font-weight: 700;
3231
-
3232
- svg {
3233
- width: 9px;
3234
- height: 9px;
3235
- }
3509
+ line-height: 13px;
3236
3510
  `;
3237
3511
 
3238
3512
 
3513
+
3239
3514
  const $07e749066c746c7c$var$getRequestButtonSize = (containerWidth)=>{
3240
3515
  if (containerWidth < 200) return "small";
3241
3516
  if (containerWidth < 300) return "medium";
3242
3517
  return "large";
3243
3518
  };
3244
3519
  const $07e749066c746c7c$var$StreamTile = ({ stream: stream , width: width = 0 , height: height = 0 })=>{
3245
- const audioElementRef = (0, $jQDcL$react.useRef)(null);
3246
3520
  const videoElementRef = (0, $jQDcL$react.useRef)(null);
3247
3521
  const [hover, setHover] = (0, $jQDcL$react.useState)(false);
3248
3522
  const [requestingDevice, setRequestingDevice] = (0, $jQDcL$react.useState)(null);
3249
3523
  const [flashAnimation, setFlashAnimation] = (0, $jQDcL$react.useState)(false);
3250
3524
  const requestingDeviceTimeoutRef = (0, $jQDcL$react.useRef)(null);
3251
- const { userInteractionTriggered: userInteractionTriggered } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
3525
+ const { selfPeerId: selfPeerId } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
3252
3526
  const { highlightedTile: highlightedTile } = (0, $3f6e908c45fcc5b3$export$b5633a7cfbe42d9f)();
3253
- const isSharingScreen = highlightedTile?.type === "screenshare" && highlightedTile.data.local;
3527
+ const isSharingScreen = highlightedTile?.type === "screenshare" && highlightedTile.peerId === selfPeerId;
3254
3528
  const microphoneActive = stream.microphone && !stream.muted;
3255
3529
  const showRequestDevice = !requestingDevice && hover && !highlightedTile && (!microphoneActive || !stream.webcam);
3256
3530
  const tileWidth = `${width}px`;
@@ -3270,15 +3544,7 @@ const $07e749066c746c7c$var$StreamTile = ({ stream: stream , width: width = 0 ,
3270
3544
  const requestScreen = ()=>{
3271
3545
  (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).requestPeerDevice(stream.id, "screen");
3272
3546
  setRequestingDevice("screen");
3273
- };
3274
- (0, $jQDcL$react.useEffect)(()=>{
3275
- if (stream.microphone && audioElementRef.current) (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).requestVoice({
3276
- consumerId: stream.microphone,
3277
- element: audioElementRef.current
3278
- });
3279
- }, [
3280
- stream.microphone
3281
- ]);
3547
+ };
3282
3548
  (0, $jQDcL$react.useEffect)(()=>{
3283
3549
  if (!videoElementRef.current) throw new Error("videoElementRef not available");
3284
3550
  if (stream.webcam && videoElementRef.current) (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).requestVideo({
@@ -3320,9 +3586,9 @@ const $07e749066c746c7c$var$StreamTile = ({ stream: stream , width: width = 0 ,
3320
3586
  }
3321
3587
  }
3322
3588
  };
3323
- window.addEventListener("requestDeviceResult", onRequestDeviceResult);
3589
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("requestDeviceResult", onRequestDeviceResult);
3324
3590
  return ()=>{
3325
- window.removeEventListener("requestDeviceResult", onRequestDeviceResult);
3591
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("requestDeviceResult", onRequestDeviceResult);
3326
3592
  };
3327
3593
  }, [
3328
3594
  stream.id,
@@ -3331,52 +3597,17 @@ const $07e749066c746c7c$var$StreamTile = ({ stream: stream , width: width = 0 ,
3331
3597
  (0, $jQDcL$react.useEffect)(()=>{
3332
3598
  const onCustomMessage = async (event)=>{
3333
3599
  const { peerId: peerId } = event.detail;
3334
- const { type: type , imageSrc: imageSrc } = event.detail.event;
3335
- if (type === "snapshot" && peerId === stream.id) {
3336
- setFlashAnimation(true);
3337
- const statusIcon = stream.displayName ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $66c45b20958474ec$export$49ac927a2aaad85), {
3338
- children: stream.displayName.slice(0, 1).toUpperCase()
3339
- }) : /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $66c45b20958474ec$export$49ac927a2aaad85), {
3340
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $0319693440f03062$export$2e2bcd8739ae039), {})
3341
- });
3342
- (0, $84c6cbcbb594d072$export$3a57e165650c636f)("Snapshot shared.", {
3343
- width: "272px",
3344
- icon: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $66c45b20958474ec$export$26fe7ec9351ff761), {
3345
- src: imageSrc
3346
- }),
3347
- messageStyle: {
3348
- fontWeight: 600,
3349
- fontSize: "16px"
3350
- },
3351
- button: {
3352
- text: "Open",
3353
- action: ({ close: close })=>{
3354
- window.open(imageSrc, "_blank");
3355
- close();
3356
- }
3357
- },
3358
- status: {
3359
- text: "From",
3360
- boldText: stream.displayName || "User",
3361
- icon: statusIcon
3362
- },
3363
- duration: 10000
3364
- });
3365
- }
3600
+ const { type: type } = event.detail.event;
3601
+ if (type === "snapshot" && peerId === stream.id) setFlashAnimation(true);
3366
3602
  };
3367
- window.addEventListener("customMessage", onCustomMessage);
3603
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("customMessage", onCustomMessage);
3368
3604
  return ()=>{
3369
- window.removeEventListener("customMessage", onCustomMessage);
3605
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("customMessage", onCustomMessage);
3370
3606
  };
3371
3607
  }, [
3372
3608
  stream.id,
3373
3609
  stream.displayName
3374
3610
  ]);
3375
- (0, $jQDcL$react.useEffect)(()=>{
3376
- if (userInteractionTriggered && audioElementRef.current?.paused) audioElementRef.current.play();
3377
- }, [
3378
- userInteractionTriggered
3379
- ]);
3380
3611
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $66c45b20958474ec$export$798352b46783b18d), {
3381
3612
  onMouseEnter: onMouseEnter,
3382
3613
  onMouseLeave: onMouseLeave,
@@ -3389,10 +3620,6 @@ const $07e749066c746c7c$var$StreamTile = ({ stream: stream , width: width = 0 ,
3389
3620
  cursor: showRequestDevice ? "pointer" : "default",
3390
3621
  "data-peer-id": stream.id,
3391
3622
  children: [
3392
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("audio", {
3393
- ref: audioElementRef,
3394
- autoPlay: true
3395
- }),
3396
3623
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $66c45b20958474ec$export$d574f5511ec1d79a), {
3397
3624
  ref: videoElementRef,
3398
3625
  style: {
@@ -3468,10 +3695,17 @@ const $07e749066c746c7c$var$StreamTile = ({ stream: stream , width: width = 0 ,
3468
3695
  ]
3469
3696
  })
3470
3697
  }),
3471
- !showRequestDevice && stream.displayName && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $66c45b20958474ec$export$b430fec6b171ceb5), {
3472
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("p", {
3473
- children: stream.displayName
3474
- })
3698
+ !showRequestDevice && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $66c45b20958474ec$export$a878cdfb933a1421), {
3699
+ children: [
3700
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $66c45b20958474ec$export$f6525863ef5a71a9), {
3701
+ children: stream.displayName ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
3702
+ children: stream.displayName.slice(0, 1).toUpperCase()
3703
+ }) : /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $0319693440f03062$export$2e2bcd8739ae039), {})
3704
+ }),
3705
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $66c45b20958474ec$export$b430fec6b171ceb5), {
3706
+ children: stream.displayName || "User"
3707
+ })
3708
+ ]
3475
3709
  })
3476
3710
  ]
3477
3711
  });
@@ -3535,33 +3769,11 @@ const $52dcfd8b6b2d6e61$export$a87ec69641e9884 = (0, ($parcel$interopDefault($jQ
3535
3769
 
3536
3770
 
3537
3771
  const $dc81c0e96fbbb967$var$AudioTile = ({ stream: stream })=>{
3538
- const audioElementRef = (0, $jQDcL$react.useRef)(null);
3539
- const isMicrophoneActive = stream.microphone && !stream.muted;
3540
- const onMicrophoneEnabled = ()=>{
3541
- if (audioElementRef.current?.paused) audioElementRef.current.play();
3542
- };
3543
- (0, $jQDcL$react.useEffect)(()=>{
3544
- if (stream.microphone && audioElementRef.current && stream.microphone !== "self") (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).requestVoice({
3545
- consumerId: stream.microphone,
3546
- element: audioElementRef.current
3547
- });
3548
- }, [
3549
- stream.microphone
3550
- ]);
3551
- (0, $jQDcL$react.useEffect)(()=>{
3552
- if (stream.id !== "self") {
3553
- window.addEventListener("microphoneEnabled", onMicrophoneEnabled);
3554
- return ()=>window.removeEventListener("microphoneEnabled", onMicrophoneEnabled);
3555
- }
3556
- }, [
3557
- stream.id
3558
- ]);
3772
+ const { selfPeerId: selfPeerId } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
3773
+ const isSelf = selfPeerId === stream.id;
3774
+ const isMicrophoneActive = (stream.microphone || isSelf) && !stream.muted;
3559
3775
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $52dcfd8b6b2d6e61$export$d669f73461f8cadf), {
3560
3776
  children: [
3561
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("audio", {
3562
- ref: audioElementRef,
3563
- autoPlay: true
3564
- }),
3565
3777
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $52dcfd8b6b2d6e61$export$235e35bd03f702fb), {
3566
3778
  children: [
3567
3779
  stream.displayName && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $66c45b20958474ec$export$a2930b41faa750f4), {
@@ -3607,18 +3819,15 @@ var $c19f00532fd0c23c$export$2e2bcd8739ae039 = $c19f00532fd0c23c$var$Reduce;
3607
3819
 
3608
3820
 
3609
3821
 
3610
-
3611
- const $6f36db3b1217f099$var$ThemedPath = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).path`
3612
- fill: ${(props)=>props.theme.controlsIconColor};
3613
- `;
3614
- const $6f36db3b1217f099$var$Cross = ({ width: width = 15 , height: height = 15 })=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
3615
- width: width,
3616
- height: height,
3617
- viewBox: "0 0 15 15",
3822
+ const $6f36db3b1217f099$var$Cross = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
3823
+ width: "24",
3824
+ height: "24",
3825
+ viewBox: "0 0 24 24",
3618
3826
  fill: "none",
3619
3827
  xmlns: "http://www.w3.org/2000/svg",
3620
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($6f36db3b1217f099$var$ThemedPath, {
3621
- d: "M1.292 1.292a1 1 0 0 1 1.416 0L8 6.586l5.292-5.294a1.002 1.002 0 0 1 1.416 1.416L9.414 8l5.294 5.292a1.001 1.001 0 1 1-1.416 1.416L8 9.414l-5.292 5.294a1 1 0 1 1-1.416-1.416L6.586 8 1.292 2.708a1 1 0 0 1 0-1.416Z"
3828
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
3829
+ d: "M7.21 7.21a.714.714 0 0 1 1.011 0l3.78 3.78 3.778-3.78a.716.716 0 0 1 1.012 1.011l-3.781 3.78 3.78 3.778a.716.716 0 0 1-.779 1.167.716.716 0 0 1-.232-.155L12 13.01l-3.779 3.78a.716.716 0 0 1-1.011-1.01L10.99 12 7.21 8.221a.714.714 0 0 1 0-1.011Z",
3830
+ fill: "#fff"
3622
3831
  })
3623
3832
  });
3624
3833
  var $6f36db3b1217f099$export$2e2bcd8739ae039 = $6f36db3b1217f099$var$Cross;
@@ -3950,7 +4159,7 @@ var $fdb92de69267f341$export$2e2bcd8739ae039 = $fdb92de69267f341$var$MediaSessio
3950
4159
 
3951
4160
 
3952
4161
  const $8393b5c887e16c8c$var$minimumTileWidth = 126;
3953
- const $8393b5c887e16c8c$var$maximumTileWidth = 300;
4162
+ const $8393b5c887e16c8c$var$maximumTileWidth = 150;
3954
4163
  const $8393b5c887e16c8c$var$SelfStreamTile = ({ isSomeonePresenting: isSomeonePresenting , width: width , height: height })=>{
3955
4164
  const [extended, setExtended] = (0, $jQDcL$react.useState)(false);
3956
4165
  const [zoom, setZoom] = (0, $jQDcL$react.useState)(false);
@@ -3964,7 +4173,7 @@ const $8393b5c887e16c8c$var$SelfStreamTile = ({ isSomeonePresenting: isSomeonePr
3964
4173
  const SelfTileRef = (0, $jQDcL$react.useRef)(null);
3965
4174
  const { videosContainerRef: videosContainerRef , remoteTilesContainerRef: remoteTilesContainerRef , selfDisplayName: selfDisplayName , muted: muted , streaming: streaming , orientation: orientation , } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
3966
4175
  const { streams: streams } = (0, $3f6e908c45fcc5b3$export$b5633a7cfbe42d9f)();
3967
- const [containerWidth, containerHeight] = (0, $e79bb9d030bdcf5b$export$2e2bcd8739ae039)(videosContainerRef.current);
4176
+ const [containerWidth, containerHeight] = (0, $56e1e7a85d8bf4bb$export$2b86bedf890eab8)(videosContainerRef.current);
3968
4177
  const isAlone = streams.length < 1;
3969
4178
  const cursor = streaming && !isAlone && !extended ? "pointer" : "default";
3970
4179
  let tileSize = "100%";
@@ -3979,7 +4188,8 @@ const $8393b5c887e16c8c$var$SelfStreamTile = ({ isSomeonePresenting: isSomeonePr
3979
4188
  });
3980
4189
  tileSize = `${computedWidth}px`;
3981
4190
  }
3982
- const onLocalVideoRotate = ()=>{
4191
+ const onLocalVideoChange = (event)=>{
4192
+ if (!event.detail?.camera?.device) return;
3983
4193
  if (!videoElementRef.current) throw new Error("videoElementRef not available");
3984
4194
  const { facingMode: newFacingMode } = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).requestLocalVideo(videoElementRef.current);
3985
4195
  setFacingMode(newFacingMode);
@@ -4044,6 +4254,7 @@ const $8393b5c887e16c8c$var$SelfStreamTile = ({ isSomeonePresenting: isSomeonePr
4044
4254
  if (SelfTileRef.current) (0, $4ee7c4b0b3646a08$export$ab7d69e250642927)({
4045
4255
  element: SelfTileRef.current
4046
4256
  });
4257
+ if (deviceType === "screen") return;
4047
4258
  setDeviceRequest({
4048
4259
  device: deviceType,
4049
4260
  requesterId: peerId
@@ -4100,11 +4311,11 @@ const $8393b5c887e16c8c$var$SelfStreamTile = ({ isSomeonePresenting: isSomeonePr
4100
4311
  extended
4101
4312
  ]);
4102
4313
  (0, $jQDcL$react.useEffect)(()=>{
4103
- window.addEventListener("localVideoRotate", onLocalVideoRotate);
4104
- window.addEventListener("requestDevice", onDeviceRequest);
4314
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("localVideoChange", onLocalVideoChange);
4315
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("requestDevice", onDeviceRequest);
4105
4316
  return ()=>{
4106
- window.removeEventListener("localVideoRotate", onLocalVideoRotate);
4107
- window.removeEventListener("requestDevice", onDeviceRequest);
4317
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("localVideoChange", onLocalVideoChange);
4318
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("requestDevice", onDeviceRequest);
4108
4319
  };
4109
4320
  }, []);
4110
4321
  const content = /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reactjsxruntime.Fragment), {
@@ -4148,8 +4359,8 @@ const $8393b5c887e16c8c$var$SelfStreamTile = ({ isSomeonePresenting: isSomeonePr
4148
4359
  ]
4149
4360
  })
4150
4361
  }),
4151
- !extended && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $66c45b20958474ec$export$b430fec6b171ceb5), {
4152
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("p", {
4362
+ !extended && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $2c45d365ee8aa1ab$export$500c3c5544c37412), {
4363
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
4153
4364
  children: "You"
4154
4365
  })
4155
4366
  }),
@@ -4180,10 +4391,7 @@ const $8393b5c887e16c8c$var$SelfStreamTile = ({ isSomeonePresenting: isSomeonePr
4180
4391
  onClick: onZoomClick,
4181
4392
  children: [
4182
4393
  zoom ? "2" : "1",
4183
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $6f36db3b1217f099$export$2e2bcd8739ae039), {
4184
- width: 8,
4185
- height: 8
4186
- })
4394
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $6f36db3b1217f099$export$2e2bcd8739ae039), {})
4187
4395
  ]
4188
4396
  }),
4189
4397
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
@@ -4229,7 +4437,9 @@ const $8393b5c887e16c8c$var$SelfStreamTile = ({ isSomeonePresenting: isSomeonePr
4229
4437
  })
4230
4438
  ]
4231
4439
  }),
4232
- extended && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $2c45d365ee8aa1ab$export$9e533c08c30af08), {})
4440
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $2c45d365ee8aa1ab$export$9e533c08c30af08), {
4441
+ show: extended
4442
+ })
4233
4443
  ]
4234
4444
  });
4235
4445
  };
@@ -4244,6 +4454,7 @@ var $8393b5c887e16c8c$export$2e2bcd8739ae039 = $8393b5c887e16c8c$var$SelfStreamT
4244
4454
 
4245
4455
 
4246
4456
 
4457
+
4247
4458
  const $90182c377f240da9$export$690f2758eb588c46 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
4248
4459
  display: flex;
4249
4460
  justify-content: center;
@@ -4261,25 +4472,27 @@ const $90182c377f240da9$export$2ccbea1af5dfeb73 = (0, ($parcel$interopDefault($j
4261
4472
  `;
4262
4473
 
4263
4474
 
4264
- const $6e25dd2638faaf71$var$Screenshare = ({ data: data })=>{
4475
+ const $6e25dd2638faaf71$var$ScreenshareTile = (tile)=>{
4476
+ const { selfPeerId: selfPeerId } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
4265
4477
  const videoElementRef = (0, $jQDcL$react.useRef)(null);
4478
+ const isSelf = tile.peerId === selfPeerId;
4266
4479
  (0, $jQDcL$react.useEffect)(()=>{
4267
- if (data.consumerId && videoElementRef.current) (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).requestVideo({
4268
- consumerId: data.consumerId,
4480
+ if (tile.data.consumerId && videoElementRef.current) (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).requestVideo({
4481
+ consumerId: tile.data.consumerId,
4269
4482
  element: videoElementRef.current
4270
4483
  });
4271
4484
  }, [
4272
- data.consumerId
4485
+ tile.data.consumerId
4273
4486
  ]);
4274
4487
  (0, $jQDcL$react.useEffect)(()=>{
4275
- if (data.local && videoElementRef.current) {
4488
+ if (isSelf && videoElementRef.current) {
4276
4489
  (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).requestLocalScreenshare(videoElementRef.current);
4277
4490
  return ()=>{
4278
4491
  (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).disableScreenshare();
4279
4492
  };
4280
4493
  }
4281
4494
  }, [
4282
- data.local
4495
+ isSelf
4283
4496
  ]);
4284
4497
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $90182c377f240da9$export$690f2758eb588c46), {
4285
4498
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $90182c377f240da9$export$2ccbea1af5dfeb73), {
@@ -4290,7 +4503,7 @@ const $6e25dd2638faaf71$var$Screenshare = ({ data: data })=>{
4290
4503
  })
4291
4504
  });
4292
4505
  };
4293
- var $6e25dd2638faaf71$export$2e2bcd8739ae039 = $6e25dd2638faaf71$var$Screenshare;
4506
+ var $6e25dd2638faaf71$export$2e2bcd8739ae039 = $6e25dd2638faaf71$var$ScreenshareTile;
4294
4507
 
4295
4508
 
4296
4509
 
@@ -4306,6 +4519,148 @@ const $81369fe5a359bb1e$export$2cb99e4be0dc4646 = (url)=>new Promise((resolve, r
4306
4519
 
4307
4520
 
4308
4521
 
4522
+
4523
+
4524
+
4525
+
4526
+
4527
+
4528
+ const $d98095a4855ffc64$export$eb5bbbfc393ab8ac = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
4529
+ max-width: 100%;
4530
+ margin-top: 60px;
4531
+ margin-bottom: 20px;
4532
+ padding: 0 25px;
4533
+ box-sizing: border-box;
4534
+ `;
4535
+ const $d98095a4855ffc64$export$ebce8992dc3bd82 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
4536
+ font-size: 20px;
4537
+ font-weight: 700;
4538
+ margin-bottom: 30px;
4539
+ `;
4540
+ const $d98095a4855ffc64$export$e6c0b06d6e2dd9e3 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
4541
+ display: flex;
4542
+ flex-direction: column;
4543
+ gap: 17px;
4544
+ `;
4545
+ const $d98095a4855ffc64$export$8503ce930eaa5c44 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).img`
4546
+ border-radius: 8px;
4547
+ width: 36px;
4548
+ height: 36px;
4549
+ `;
4550
+ const $d98095a4855ffc64$export$a300a79023cea761 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
4551
+ display: flex;
4552
+ justify-content: center;
4553
+ align-items: center;
4554
+ background-color: #2d2d2d;
4555
+ width: 100%;
4556
+ border-radius: 50px;
4557
+ color: #fff;
4558
+ font-size: 7px;
4559
+ font-weight: 700;
4560
+
4561
+ svg {
4562
+ width: 8px;
4563
+ height: 8px;
4564
+ }
4565
+ `;
4566
+
4567
+
4568
+ const $65bf10a117819168$export$e9785ae652b3a722 = (item)=>{
4569
+ const { roomId: roomId } = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getState();
4570
+ if (roomId) {
4571
+ const key = `stream_share_history_${roomId}`;
4572
+ try {
4573
+ const storedHistory = localStorage.getItem(key);
4574
+ if (storedHistory) {
4575
+ const parsedStoredHistory = JSON.parse(storedHistory);
4576
+ parsedStoredHistory.push({
4577
+ ...item,
4578
+ id: parsedStoredHistory.length
4579
+ });
4580
+ const stringifiedHistory = JSON.stringify(parsedStoredHistory);
4581
+ localStorage.setItem(key, stringifiedHistory);
4582
+ } else {
4583
+ const stringifiedHistory = JSON.stringify([
4584
+ {
4585
+ ...item,
4586
+ id: 0
4587
+ },
4588
+ ]);
4589
+ localStorage.setItem(key, stringifiedHistory);
4590
+ }
4591
+ } catch (localStorageError) {
4592
+ console.warn(localStorageError);
4593
+ }
4594
+ } else console.warn("Undefined room ID");
4595
+ };
4596
+ const $65bf10a117819168$export$ad5f39c592532e2d = ()=>{
4597
+ const [history, setHistory] = (0, $jQDcL$react.useState)([]);
4598
+ (0, $jQDcL$react.useEffect)(()=>{
4599
+ try {
4600
+ const { roomId: roomId } = (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getState();
4601
+ const storedHistory = localStorage.getItem(`stream_share_history_${roomId}`);
4602
+ if (storedHistory) {
4603
+ const parsedStoredHistory = JSON.parse(storedHistory);
4604
+ setHistory(parsedStoredHistory);
4605
+ }
4606
+ } catch (localStorageError) {
4607
+ console.warn(localStorageError);
4608
+ }
4609
+ }, []);
4610
+ if (history.length < 1) return null;
4611
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $d98095a4855ffc64$export$eb5bbbfc393ab8ac), {
4612
+ children: [
4613
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $d98095a4855ffc64$export$ebce8992dc3bd82), {
4614
+ children: "Shared with you"
4615
+ }),
4616
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $d98095a4855ffc64$export$e6c0b06d6e2dd9e3), {
4617
+ children: history.map((item)=>{
4618
+ let itemStatus = undefined;
4619
+ if (item.statusText) {
4620
+ itemStatus = {
4621
+ text: "From",
4622
+ boldText: item.statusText
4623
+ };
4624
+ if (item.statusIconUrl) itemStatus.icon = item.statusIconUrl;
4625
+ if (item.statusIconLetter) itemStatus.icon = /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $d98095a4855ffc64$export$a300a79023cea761), {
4626
+ children: item.statusIconLetter.slice(0, 1).toUpperCase()
4627
+ });
4628
+ if (item.statusIconUser) itemStatus.icon = /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $d98095a4855ffc64$export$a300a79023cea761), {
4629
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $0319693440f03062$export$2e2bcd8739ae039), {})
4630
+ });
4631
+ }
4632
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $c0a266a61addea66$export$14834abbfce3b8cd), {
4633
+ options: {
4634
+ width: "325px",
4635
+ backgroundColor: "#2d2d2d",
4636
+ ellipsis: true,
4637
+ icon: item.iconUrl ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $d98095a4855ffc64$export$8503ce930eaa5c44), {
4638
+ style: {
4639
+ ...item.iconStyle
4640
+ },
4641
+ src: item.iconUrl,
4642
+ onError: (0, $c0a266a61addea66$export$5640675ad9afe3e2)
4643
+ }) : undefined,
4644
+ button: {
4645
+ text: "Open",
4646
+ action: ()=>window.open(item.url, "_blank"),
4647
+ style: {
4648
+ backgroundColor: "#515151",
4649
+ border: "2px solid #515151"
4650
+ }
4651
+ },
4652
+ status: itemStatus
4653
+ },
4654
+ children: item.title
4655
+ }, item.id);
4656
+ })
4657
+ })
4658
+ ]
4659
+ });
4660
+ };
4661
+
4662
+
4663
+
4309
4664
  const $b1a83827308c567d$export$f4a8a05247f8d4c = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
4310
4665
  display: flex;
4311
4666
  justify-content: center;
@@ -4334,8 +4689,10 @@ const $c378a92744dc7f32$export$8bd7ff36223ef5c1 = "youtube_start";
4334
4689
  const $c378a92744dc7f32$export$1712c056f28ddd33 = "youtube_play";
4335
4690
  const $c378a92744dc7f32$export$405a29439cf92237 = "youtube_pause";
4336
4691
  const $c378a92744dc7f32$export$649698d6e35b1ef3 = "youtube_stop";
4337
- const $c378a92744dc7f32$var$YoutubeTile = ({ data: data })=>{
4338
- const [player, setPlayer] = (0, $jQDcL$react.useState)(null);
4692
+ const $c378a92744dc7f32$var$YoutubeTile = (tile)=>{
4693
+ const { selfPeerId: selfPeerId } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
4694
+ const [player1, setPlayer] = (0, $jQDcL$react.useState)(null);
4695
+ const isSelf = tile.peerId === selfPeerId;
4339
4696
  const onVideoStateChange = (event)=>{
4340
4697
  const time = event.target.getCurrentTime();
4341
4698
  if (event.data === YT.PlayerState.PAUSED) (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).sendCustomMessageToAll({
@@ -4348,6 +4705,16 @@ const $c378a92744dc7f32$var$YoutubeTile = ({ data: data })=>{
4348
4705
  });
4349
4706
  };
4350
4707
  (0, $jQDcL$react.useEffect)(()=>{
4708
+ const onVideoReady = (event)=>{
4709
+ const player = event.target;
4710
+ if (!isSelf) (0, $65bf10a117819168$export$e9785ae652b3a722)({
4711
+ title: player.videoTitle || "Video",
4712
+ url: `https://youtube.com/watch?v=${tile.data.videoId}`,
4713
+ iconUrl: `https://i.ytimg.com/vi/${tile.data.videoId}/mqdefault.jpg`,
4714
+ statusText: "YouTube",
4715
+ statusIconUrl: "https://stream-assets.snapcall.io/icons/youtube.png"
4716
+ });
4717
+ };
4351
4718
  setPlayer((currentPlayer)=>{
4352
4719
  if (currentPlayer) currentPlayer.destroy();
4353
4720
  return null;
@@ -4356,74 +4723,77 @@ const $c378a92744dc7f32$var$YoutubeTile = ({ data: data })=>{
4356
4723
  const youtubePlayer = new YT.Player("youtube-player", {
4357
4724
  height: "390",
4358
4725
  width: "640",
4359
- videoId: data.videoId,
4726
+ videoId: tile.data.videoId,
4360
4727
  playerVars: {
4361
4728
  autoplay: 1,
4362
- controls: data.local ? 1 : 0,
4729
+ controls: isSelf ? 1 : 0,
4363
4730
  playsinline: 1,
4364
4731
  enablejsapi: 1,
4365
4732
  origin: window.location.origin,
4366
4733
  rel: 0,
4367
- start: data.time || 0
4734
+ start: tile.data.time || 0
4368
4735
  },
4369
4736
  events: {
4370
- onStateChange: data.local ? onVideoStateChange : undefined
4737
+ onReady: onVideoReady,
4738
+ onStateChange: isSelf ? onVideoStateChange : undefined
4371
4739
  }
4372
4740
  });
4373
4741
  setPlayer(youtubePlayer);
4374
4742
  };
4375
4743
  if (window?.YT?.loaded) window.onYouTubeIframeAPIReady();
4376
4744
  else (0, $81369fe5a359bb1e$export$2cb99e4be0dc4646)("https://www.youtube.com/iframe_api");
4377
- if (data.local) {
4745
+ if (isSelf) {
4378
4746
  (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).sendCustomMessageToAll({
4379
4747
  type: $c378a92744dc7f32$export$8bd7ff36223ef5c1,
4380
- videoId: data.videoId
4748
+ videoId: tile.data.videoId
4381
4749
  });
4382
4750
  return ()=>{
4383
4751
  (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).sendCustomMessageToAll({
4384
4752
  type: $c378a92744dc7f32$export$649698d6e35b1ef3,
4385
- videoId: data.videoId
4753
+ videoId: tile.data.videoId
4386
4754
  });
4387
4755
  };
4388
4756
  }
4389
4757
  }, [
4390
- data
4758
+ tile.data,
4759
+ isSelf
4391
4760
  ]);
4392
4761
  (0, $jQDcL$react.useEffect)(()=>{
4393
- if (!data.local && player) {
4762
+ if (!isSelf && player1) {
4394
4763
  const onCustomMessage = (event)=>{
4395
4764
  const { type: type , time: time } = event.detail.event;
4396
4765
  if (type === $c378a92744dc7f32$export$405a29439cf92237) {
4397
- player.pauseVideo();
4398
- player.seekTo(time, true);
4766
+ player1.pauseVideo();
4767
+ player1.seekTo(time, true);
4399
4768
  } else if (type === $c378a92744dc7f32$export$1712c056f28ddd33) {
4400
- player.playVideo();
4401
- player.seekTo(time, true);
4769
+ player1.playVideo();
4770
+ player1.seekTo(time, true);
4402
4771
  }
4403
4772
  };
4404
- window.addEventListener("customMessage", onCustomMessage);
4773
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("customMessage", onCustomMessage);
4405
4774
  return ()=>{
4406
- window.removeEventListener("customMessage", onCustomMessage);
4775
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("customMessage", onCustomMessage);
4407
4776
  };
4408
4777
  }
4409
- if (data.local && player) {
4778
+ if (isSelf && player1) {
4410
4779
  const onNewPeer = (event)=>{
4411
- const { id: id } = event.detail;
4412
- const time = player.getCurrentTime();
4413
- (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).sendCustomMessage(id, {
4780
+ const { peerId: peerId } = event.detail;
4781
+ const time = player1.getCurrentTime();
4782
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).sendCustomMessage(peerId, {
4414
4783
  type: $c378a92744dc7f32$export$8bd7ff36223ef5c1,
4415
- videoId: data.videoId,
4784
+ videoId: tile.data.videoId,
4416
4785
  time: time
4417
4786
  });
4418
4787
  };
4419
- window.addEventListener("newPeer", onNewPeer);
4788
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("newPeer", onNewPeer);
4420
4789
  return ()=>{
4421
- window.removeEventListener("newPeer", onNewPeer);
4790
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("newPeer", onNewPeer);
4422
4791
  };
4423
4792
  }
4424
4793
  }, [
4425
- data,
4426
- player
4794
+ tile.data,
4795
+ isSelf,
4796
+ player1
4427
4797
  ]);
4428
4798
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $b1a83827308c567d$export$f4a8a05247f8d4c), {
4429
4799
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $b1a83827308c567d$export$b0da35797f3be127), {
@@ -4438,7 +4808,190 @@ var $c378a92744dc7f32$export$2e2bcd8739ae039 = $c378a92744dc7f32$var$YoutubeTile
4438
4808
 
4439
4809
 
4440
4810
 
4811
+
4812
+
4813
+
4814
+ const $65992ea9297d23d9$export$e19cf0169f1019bf = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
4815
+ display: flex;
4816
+ position: relative;
4817
+ height: 100%;
4818
+ max-width: 100%;
4819
+ `;
4820
+ const $65992ea9297d23d9$export$6ac7409a4d5f70a2 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).img`
4821
+ max-height: 100%;
4822
+ object-fit: contain;
4823
+ border-radius: 20px;
4824
+ `;
4825
+ const $65992ea9297d23d9$export$1a3b9916b31bd5c3 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
4826
+ display: flex;
4827
+ flex-direction: column;
4828
+ justify-content: space-between;
4829
+ position: absolute;
4830
+ width: 100%;
4831
+ height: 100%;
4832
+ padding: 16px;
4833
+ box-sizing: border-box;
4834
+ `;
4835
+ const $65992ea9297d23d9$export$8b251419efc915eb = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
4836
+ display: flex;
4837
+ justify-content: space-between;
4838
+ align-items: center;
4839
+ `;
4840
+ const $65992ea9297d23d9$export$7c309220fd1fb205 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).span`
4841
+ font-size: 12px;
4842
+ font-weight: 700;
4843
+ color: #fff;
4844
+ text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.15);
4845
+ `;
4846
+ const $65992ea9297d23d9$export$7622450089705ca3 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).a`
4847
+ color: #fff;
4848
+ padding: 6px 12px;
4849
+ font-size: 14px;
4850
+ font-weight: 700;
4851
+ line-height: 16px;
4852
+ background: rgba(28, 32, 36, 0.5);
4853
+ border: none;
4854
+ border-radius: 50px;
4855
+ text-decoration: none;
4856
+ cursor: pointer;
4857
+ `;
4858
+ const $65992ea9297d23d9$export$a06f1c675e846f6f = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
4859
+ display: flex;
4860
+ justify-content: center;
4861
+ `;
4862
+ const $65992ea9297d23d9$export$f9985cea9f8ad92f = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
4863
+ width: 36px;
4864
+ height: 36px;
4865
+ padding: 7px;
4866
+ background: rgba(28, 32, 36, 0.5);
4867
+ border: none;
4868
+ border-radius: 50px;
4869
+ `;
4870
+ const $65992ea9297d23d9$export$26fe7ec9351ff761 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).img`
4871
+ border: 2px solid #fff;
4872
+ border-radius: 8px;
4873
+ width: 36px;
4874
+ height: 36px;
4875
+ `;
4876
+ const $65992ea9297d23d9$export$49ac927a2aaad85 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
4877
+ display: flex;
4878
+ justify-content: center;
4879
+ align-items: center;
4880
+ background-color: #2d2d2d;
4881
+ width: 13px;
4882
+ height: 13px;
4883
+ border-radius: 50px;
4884
+ color: #fff;
4885
+ font-size: 7px;
4886
+ font-weight: 700;
4887
+
4888
+ svg {
4889
+ width: 9px;
4890
+ height: 9px;
4891
+ }
4892
+ `;
4893
+
4894
+
4895
+ const $ee98e2bef25871e5$var$SnapshotTile = (tile)=>{
4896
+ const { dispatch: dispatch } = (0, $3f6e908c45fcc5b3$export$b5633a7cfbe42d9f)();
4897
+ const snapshotImageRef = (0, $jQDcL$react.useRef)(null);
4898
+ const [downloadURL, setDownloadURL] = (0, $jQDcL$react.useState)(tile.data.url);
4899
+ const [containerWidth, setContainerWidth] = (0, $jQDcL$react.useState)("auto");
4900
+ const filename = (0, $jQDcL$react.useMemo)(()=>{
4901
+ const slashSplit = tile.data.url.split("/");
4902
+ const name = slashSplit[slashSplit.length - 1];
4903
+ return name;
4904
+ }, [
4905
+ tile.data.url
4906
+ ]);
4907
+ const onCloseClick = ()=>{
4908
+ dispatch({
4909
+ type: (0, $a4027a5418fcd07a$export$96a9662a3eda31f6).UNSET_HIGHLIGHTED_TILE
4910
+ });
4911
+ };
4912
+ const updateContainerSize = ()=>{
4913
+ if (snapshotImageRef.current) {
4914
+ const { clientWidth: clientWidth } = snapshotImageRef.current;
4915
+ setContainerWidth(`${clientWidth}px`);
4916
+ }
4917
+ };
4918
+ const formattedTime = new Date(tile.data.createdAt).toLocaleTimeString([], {
4919
+ hour: "2-digit",
4920
+ minute: "2-digit"
4921
+ });
4922
+ (0, $jQDcL$react.useEffect)(()=>{
4923
+ const img = document.createElement("img");
4924
+ img.onload = ()=>{
4925
+ const canvas = document.createElement("canvas");
4926
+ const canvasContext = canvas.getContext("2d");
4927
+ canvas.width = img.width;
4928
+ canvas.height = img.height;
4929
+ canvasContext?.drawImage(img, 0, 0);
4930
+ const dataURL = canvas.toDataURL("image/jpeg");
4931
+ setDownloadURL(dataURL);
4932
+ };
4933
+ img.crossOrigin = "anonymous";
4934
+ img.src = tile.data.url;
4935
+ }, [
4936
+ tile.data.url
4937
+ ]);
4938
+ (0, $jQDcL$react.useEffect)(()=>{
4939
+ window.addEventListener("resize", updateContainerSize);
4940
+ return ()=>{
4941
+ window.removeEventListener("resize", updateContainerSize);
4942
+ };
4943
+ }, [
4944
+ snapshotImageRef
4945
+ ]);
4946
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $65992ea9297d23d9$export$e19cf0169f1019bf), {
4947
+ style: {
4948
+ width: containerWidth
4949
+ },
4950
+ children: [
4951
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $65992ea9297d23d9$export$6ac7409a4d5f70a2), {
4952
+ onLoad: updateContainerSize,
4953
+ ref: snapshotImageRef,
4954
+ src: tile.data.url,
4955
+ crossOrigin: "anonymous"
4956
+ }),
4957
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $65992ea9297d23d9$export$1a3b9916b31bd5c3), {
4958
+ children: [
4959
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $65992ea9297d23d9$export$8b251419efc915eb), {
4960
+ children: [
4961
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $65992ea9297d23d9$export$7c309220fd1fb205), {
4962
+ children: [
4963
+ "Snapshot \xb7 ",
4964
+ formattedTime
4965
+ ]
4966
+ }),
4967
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $65992ea9297d23d9$export$7622450089705ca3), {
4968
+ href: downloadURL,
4969
+ target: "_blank",
4970
+ download: filename,
4971
+ children: "Save photo"
4972
+ })
4973
+ ]
4974
+ }),
4975
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $65992ea9297d23d9$export$a06f1c675e846f6f), {
4976
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $65992ea9297d23d9$export$f9985cea9f8ad92f), {
4977
+ onClick: onCloseClick,
4978
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $6f36db3b1217f099$export$2e2bcd8739ae039), {})
4979
+ })
4980
+ })
4981
+ ]
4982
+ })
4983
+ ]
4984
+ });
4985
+ };
4986
+ var $ee98e2bef25871e5$export$2e2bcd8739ae039 = $ee98e2bef25871e5$var$SnapshotTile;
4987
+
4988
+
4989
+
4990
+
4991
+
4992
+
4441
4993
  const $1c0fa9be050932fe$var$ScreenshareEvents = ()=>{
4994
+ const { selfPeerId: selfPeerId } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
4442
4995
  const { dispatch: dispatch , highlightedTile: highlightedTile } = (0, $3f6e908c45fcc5b3$export$b5633a7cfbe42d9f)();
4443
4996
  (0, $jQDcL$react.useEffect)(()=>{
4444
4997
  const onRemoteScreensharingUpdate = (event)=>{
@@ -4449,6 +5002,7 @@ const $1c0fa9be050932fe$var$ScreenshareEvents = ()=>{
4449
5002
  payload: {
4450
5003
  type: "screenshare",
4451
5004
  peerId: peerId,
5005
+ isGlobal: true,
4452
5006
  data: {
4453
5007
  consumerId: consumerId
4454
5008
  }
@@ -4466,29 +5020,29 @@ const $1c0fa9be050932fe$var$ScreenshareEvents = ()=>{
4466
5020
  type: (0, $a4027a5418fcd07a$export$96a9662a3eda31f6).SET_HIGHLIGHTED_TILE,
4467
5021
  payload: {
4468
5022
  type: "screenshare",
4469
- peerId: "self",
4470
- data: {
4471
- local: true
4472
- }
5023
+ peerId: String(selfPeerId),
5024
+ isGlobal: true,
5025
+ data: {}
4473
5026
  }
4474
5027
  });
4475
- else if (highlightedTile?.type === "screenshare" && highlightedTile.data.local) dispatch({
5028
+ else if (highlightedTile?.type === "screenshare" && highlightedTile.peerId === selfPeerId) dispatch({
4476
5029
  type: (0, $a4027a5418fcd07a$export$96a9662a3eda31f6).UNSET_HIGHLIGHTED_TILE
4477
5030
  });
4478
5031
  };
4479
- window.addEventListener("newConsumer", onRemoteScreensharingUpdate);
4480
- window.addEventListener("consumerClose", onRemoteScreensharingUpdate);
4481
- window.addEventListener("screenshareEnabled", onScreensharingUpdate);
4482
- window.addEventListener("screenshareDisabled", onScreensharingUpdate);
5032
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("newConsumer", onRemoteScreensharingUpdate);
5033
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("consumerClose", onRemoteScreensharingUpdate);
5034
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("screenshareEnabled", onScreensharingUpdate);
5035
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("screenshareDisabled", onScreensharingUpdate);
4483
5036
  return ()=>{
4484
- window.removeEventListener("newConsumer", onRemoteScreensharingUpdate);
4485
- window.removeEventListener("consumerClose", onRemoteScreensharingUpdate);
4486
- window.removeEventListener("screenshareEnabled", onScreensharingUpdate);
4487
- window.removeEventListener("screenshareDisabled", onScreensharingUpdate);
5037
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("newConsumer", onRemoteScreensharingUpdate);
5038
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("consumerClose", onRemoteScreensharingUpdate);
5039
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("screenshareEnabled", onScreensharingUpdate);
5040
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("screenshareDisabled", onScreensharingUpdate);
4488
5041
  };
4489
5042
  }, [
4490
5043
  dispatch,
4491
- highlightedTile
5044
+ highlightedTile,
5045
+ selfPeerId
4492
5046
  ]);
4493
5047
  return null;
4494
5048
  };
@@ -4498,6 +5052,7 @@ var $1c0fa9be050932fe$export$2e2bcd8739ae039 = $1c0fa9be050932fe$var$Screenshare
4498
5052
 
4499
5053
 
4500
5054
 
5055
+
4501
5056
  const $45826eb519d8bd73$var$YoutubeEvents = ()=>{
4502
5057
  const { dispatch: dispatch , highlightedTile: highlightedTile } = (0, $3f6e908c45fcc5b3$export$b5633a7cfbe42d9f)();
4503
5058
  (0, $jQDcL$react.useEffect)(()=>{
@@ -4509,29 +5064,120 @@ const $45826eb519d8bd73$var$YoutubeEvents = ()=>{
4509
5064
  payload: {
4510
5065
  type: "youtube",
4511
5066
  peerId: peerId,
5067
+ isGlobal: true,
4512
5068
  data: {
4513
5069
  videoId: videoId,
4514
5070
  time: time
4515
5071
  }
4516
5072
  }
4517
- });
4518
- else if (type === (0, $c378a92744dc7f32$export$649698d6e35b1ef3)) {
4519
- if (highlightedTile?.type === "youtube" && highlightedTile.data.videoId === videoId) dispatch({
4520
- type: (0, $a4027a5418fcd07a$export$96a9662a3eda31f6).UNSET_HIGHLIGHTED_TILE
4521
- });
5073
+ });
5074
+ else if (type === (0, $c378a92744dc7f32$export$649698d6e35b1ef3)) {
5075
+ if (highlightedTile?.type === "youtube" && highlightedTile.data.videoId === videoId) dispatch({
5076
+ type: (0, $a4027a5418fcd07a$export$96a9662a3eda31f6).UNSET_HIGHLIGHTED_TILE
5077
+ });
5078
+ }
5079
+ };
5080
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("customMessage", onCustomMessage);
5081
+ return ()=>{
5082
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("customMessage", onCustomMessage);
5083
+ };
5084
+ }, [
5085
+ dispatch,
5086
+ highlightedTile
5087
+ ]);
5088
+ return null;
5089
+ };
5090
+ var $45826eb519d8bd73$export$2e2bcd8739ae039 = $45826eb519d8bd73$var$YoutubeEvents;
5091
+
5092
+
5093
+
5094
+
5095
+
5096
+
5097
+
5098
+
5099
+
5100
+
5101
+ const $e447bd93acbe2b63$var$SnapshotEvents = ()=>{
5102
+ const { dispatch: dispatch , streams: streams } = (0, $3f6e908c45fcc5b3$export$b5633a7cfbe42d9f)();
5103
+ (0, $jQDcL$react.useEffect)(()=>{
5104
+ const onCustomMessage = async (event)=>{
5105
+ const { peerId: peerId } = event.detail;
5106
+ const { type: type , imageSrc: imageSrc } = event.detail.event;
5107
+ if (type === "snapshot") {
5108
+ const sender = streams.find((stream)=>stream.id === peerId);
5109
+ if (sender) {
5110
+ const statusIcon = sender.displayName ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $65992ea9297d23d9$export$49ac927a2aaad85), {
5111
+ children: sender.displayName.slice(0, 1).toUpperCase()
5112
+ }) : /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $65992ea9297d23d9$export$49ac927a2aaad85), {
5113
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $0319693440f03062$export$2e2bcd8739ae039), {})
5114
+ });
5115
+ const createdAtDate = new Date();
5116
+ const notificationStatus = {
5117
+ text: "From",
5118
+ boldText: sender.displayName || "User",
5119
+ icon: statusIcon
5120
+ };
5121
+ (0, $84c6cbcbb594d072$export$3a57e165650c636f)("Snapshot shared.", {
5122
+ width: "290px",
5123
+ icon: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $65992ea9297d23d9$export$26fe7ec9351ff761), {
5124
+ src: imageSrc,
5125
+ crossOrigin: "anonymous"
5126
+ }),
5127
+ messageStyle: {
5128
+ fontWeight: 600,
5129
+ fontSize: "16px"
5130
+ },
5131
+ button: {
5132
+ text: "Open",
5133
+ action: ({ close: close })=>{
5134
+ dispatch({
5135
+ type: (0, $a4027a5418fcd07a$export$96a9662a3eda31f6).SET_HIGHLIGHTED_TILE,
5136
+ payload: {
5137
+ type: "snapshot",
5138
+ peerId: peerId,
5139
+ isGlobal: false,
5140
+ data: {
5141
+ url: imageSrc,
5142
+ createdAt: createdAtDate.getTime()
5143
+ }
5144
+ }
5145
+ });
5146
+ close();
5147
+ }
5148
+ },
5149
+ status: notificationStatus,
5150
+ duration: 10000
5151
+ });
5152
+ const formattedTime = createdAtDate.toLocaleTimeString([], {
5153
+ hour: "2-digit",
5154
+ minute: "2-digit"
5155
+ });
5156
+ (0, $65bf10a117819168$export$e9785ae652b3a722)({
5157
+ title: `Snapshot · ${formattedTime}`,
5158
+ url: imageSrc,
5159
+ iconUrl: imageSrc,
5160
+ iconStyle: {
5161
+ border: "2px solid #fff"
5162
+ },
5163
+ statusText: notificationStatus.boldText,
5164
+ statusIconLetter: sender.displayName ? sender.displayName.slice(0, 1).toUpperCase() : undefined,
5165
+ statusIconUser: sender.displayName ? false : true
5166
+ });
5167
+ }
4522
5168
  }
4523
5169
  };
4524
- window.addEventListener("customMessage", onCustomMessage);
5170
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("customMessage", onCustomMessage);
4525
5171
  return ()=>{
4526
- window.removeEventListener("customMessage", onCustomMessage);
5172
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("customMessage", onCustomMessage);
4527
5173
  };
4528
5174
  }, [
4529
- dispatch,
4530
- highlightedTile
5175
+ streams,
5176
+ dispatch
4531
5177
  ]);
4532
5178
  return null;
4533
5179
  };
4534
- var $45826eb519d8bd73$export$2e2bcd8739ae039 = $45826eb519d8bd73$var$YoutubeEvents;
5180
+ var $e447bd93acbe2b63$export$2e2bcd8739ae039 = $e447bd93acbe2b63$var$SnapshotEvents;
4535
5181
 
4536
5182
 
4537
5183
 
@@ -4546,16 +5192,20 @@ const $93a4cff288bd45c5$export$ff6e704acc4ce2a3 = (0, ($parcel$interopDefault($j
4546
5192
  `;
4547
5193
 
4548
5194
 
5195
+
4549
5196
  const $c225be5472ba393a$var$HighlightedTile = (tile)=>{
4550
5197
  const { orientation: orientation } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
4551
5198
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $93a4cff288bd45c5$export$ff6e704acc4ce2a3), {
4552
5199
  orientation: orientation,
4553
5200
  children: [
4554
5201
  tile.type === "screenshare" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $6e25dd2638faaf71$export$2e2bcd8739ae039), {
4555
- data: tile.data
5202
+ ...tile
4556
5203
  }),
4557
5204
  tile.type === "youtube" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $c378a92744dc7f32$export$2e2bcd8739ae039), {
4558
- data: tile.data
5205
+ ...tile
5206
+ }),
5207
+ tile.type === "snapshot" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $ee98e2bef25871e5$export$2e2bcd8739ae039), {
5208
+ ...tile
4559
5209
  })
4560
5210
  ]
4561
5211
  });
@@ -4569,9 +5219,9 @@ const $c225be5472ba393a$export$3936649e725efc86 = ()=>{
4569
5219
  type: (0, $a4027a5418fcd07a$export$96a9662a3eda31f6).UNSET_HIGHLIGHTED_TILE
4570
5220
  });
4571
5221
  };
4572
- window.addEventListener("peerClosed", onPeerClosed);
5222
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("peerClosed", onPeerClosed);
4573
5223
  return ()=>{
4574
- window.removeEventListener("peerClosed", onPeerClosed);
5224
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("peerClosed", onPeerClosed);
4575
5225
  };
4576
5226
  }, [
4577
5227
  dispatch,
@@ -4580,7 +5230,8 @@ const $c225be5472ba393a$export$3936649e725efc86 = ()=>{
4580
5230
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reactjsxruntime.Fragment), {
4581
5231
  children: [
4582
5232
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $1c0fa9be050932fe$export$2e2bcd8739ae039), {}),
4583
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $45826eb519d8bd73$export$2e2bcd8739ae039), {})
5233
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $45826eb519d8bd73$export$2e2bcd8739ae039), {}),
5234
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $e447bd93acbe2b63$export$2e2bcd8739ae039), {})
4584
5235
  ]
4585
5236
  });
4586
5237
  };
@@ -4594,6 +5245,10 @@ var $c225be5472ba393a$export$2e2bcd8739ae039 = $c225be5472ba393a$var$Highlighted
4594
5245
 
4595
5246
 
4596
5247
 
5248
+
5249
+ const $e8ac63718934c648$var$ThemedPath = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).path`
5250
+ fill: ${({ theme: theme })=>theme.primaryColor};
5251
+ `;
4597
5252
  const $e8ac63718934c648$export$c4868e4a24d48fad = /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
4598
5253
  width: "14",
4599
5254
  height: "14",
@@ -4612,9 +5267,8 @@ const $e8ac63718934c648$export$edf27be85e5f6da0 = /*#__PURE__*/ (0, $jQDcL$react
4612
5267
  fill: "none",
4613
5268
  xmlns: "http://www.w3.org/2000/svg",
4614
5269
  children: [
4615
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
4616
- d: "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10Z",
4617
- fill: "#6967FC"
5270
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($e8ac63718934c648$var$ThemedPath, {
5271
+ d: "M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10Z"
4618
5272
  }),
4619
5273
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
4620
5274
  d: "M12 17a1 1 0 1 0 0-2 1 1 0 0 0 0 2ZM12 13a1 1 0 0 1-1-1V8a1 1 0 0 1 2 0v4a1 1 0 0 1-1 1Z",
@@ -4623,19 +5277,18 @@ const $e8ac63718934c648$export$edf27be85e5f6da0 = /*#__PURE__*/ (0, $jQDcL$react
4623
5277
  ]
4624
5278
  });
4625
5279
  const $e8ac63718934c648$export$c7df1b15b59b1df2 = /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("svg", {
4626
- width: "25",
5280
+ width: "24",
4627
5281
  height: "24",
4628
- viewBox: "0 0 25 24",
5282
+ viewBox: "0 0 24 24",
4629
5283
  fill: "none",
4630
5284
  xmlns: "http://www.w3.org/2000/svg",
4631
5285
  children: [
4632
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
4633
- d: "M20.558 22H4.443a3.023 3.023 0 0 1-2.617-4.534L9.883 3.511a3.023 3.023 0 0 1 5.235 0l8.057 13.955A3.023 3.023 0 0 1 20.558 22Z",
4634
- fill: "#6967FC"
5286
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($e8ac63718934c648$var$ThemedPath, {
5287
+ d: "M20.058 22H3.943a3.023 3.023 0 0 1-2.617-4.534L9.383 3.511a3.023 3.023 0 0 1 5.235 0l8.057 13.955A3.023 3.023 0 0 1 20.058 22Z"
4635
5288
  }),
4636
5289
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
4637
- d: "M12.5 18a1 1 0 1 0 0-2 1 1 0 0 0 0 2ZM12.5 14a1 1 0 0 1-1-1V9a1 1 0 0 1 2 0v4a1 1 0 0 1-1 1Z",
4638
- fill: "#ffffff"
5290
+ d: "M12 18a1 1 0 1 0 0-2 1 1 0 0 0 0 2ZM12 14a1 1 0 0 1-1-1V9a1 1 0 0 1 2 0v4a1 1 0 0 1-1 1Z",
5291
+ fill: "#fff"
4639
5292
  })
4640
5293
  ]
4641
5294
  });
@@ -4700,13 +5353,13 @@ var $537dcc6df507dc4a$export$2e2bcd8739ae039 = $537dcc6df507dc4a$var$tooltip;
4700
5353
 
4701
5354
 
4702
5355
  const $88b23a8428e67b66$var$Video = ()=>{
4703
- const { videosContainerRef: videosContainerRef , remoteTilesContainerRef: remoteTilesContainerRef , options: options , muted: selfMuted , selfDisplayName: selfDisplayName , orientation: orientation , userInteractionTriggered: userInteractionTriggered , } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
5356
+ const { selfPeerId: selfPeerId , videosContainerRef: videosContainerRef , remoteTilesContainerRef: remoteTilesContainerRef , options: options , muted: selfMuted , selfDisplayName: selfDisplayName , orientation: orientation , userInteractionTriggered: userInteractionTriggered , } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
4704
5357
  const [tileSize, setTileSize] = (0, $jQDcL$react.useState)({
4705
5358
  width: 0,
4706
5359
  height: 0
4707
5360
  });
4708
5361
  const { streams: streams , highlightedTile: highlightedTile , dispatch: dispatch } = (0, $3f6e908c45fcc5b3$export$b5633a7cfbe42d9f)();
4709
- const [windowWidth, windowHeight] = (0, $e79bb9d030bdcf5b$export$2e2bcd8739ae039)();
5362
+ const [containerWidth, containerHeight] = (0, $56e1e7a85d8bf4bb$export$2b86bedf890eab8)(remoteTilesContainerRef.current);
4710
5363
  (0, $jQDcL$react.useEffect)(()=>{
4711
5364
  if (options.GDPRDisclaimer) (0, $537dcc6df507dc4a$export$2e2bcd8739ae039)({
4712
5365
  message: "Para mejorar la calidad de nuestro servicio, esta llamada ser\xe1 grabada",
@@ -4717,13 +5370,12 @@ const $88b23a8428e67b66$var$Video = ()=>{
4717
5370
  options.GDPRDisclaimer
4718
5371
  ]);
4719
5372
  (0, $jQDcL$react.useEffect)(()=>{
4720
- if (remoteTilesContainerRef?.current && windowWidth && windowHeight) {
5373
+ if (remoteTilesContainerRef?.current && containerWidth && containerHeight) {
4721
5374
  const ratio = 1;
4722
5375
  const numberOfTiles = remoteTilesContainerRef.current.childElementCount;
4723
- const { offsetWidth: offsetWidth , offsetHeight: offsetHeight } = remoteTilesContainerRef.current;
4724
5376
  const videoWidth = (0, $7de6ded9bdec6f42$export$4d43009c33055644)({
4725
- availableWidth: offsetWidth - 16 * (numberOfTiles - 1),
4726
- availableHeight: offsetHeight - 16 * (numberOfTiles - 1),
5377
+ availableWidth: containerWidth - 16 * (numberOfTiles - 1),
5378
+ availableHeight: containerHeight - 16 * (numberOfTiles - 1),
4727
5379
  numberOfTiles: numberOfTiles,
4728
5380
  ratio: ratio
4729
5381
  });
@@ -4735,8 +5387,8 @@ const $88b23a8428e67b66$var$Video = ()=>{
4735
5387
  }
4736
5388
  }, [
4737
5389
  remoteTilesContainerRef,
4738
- windowWidth,
4739
- windowHeight,
5390
+ containerWidth,
5391
+ containerHeight,
4740
5392
  streams.length,
4741
5393
  highlightedTile
4742
5394
  ]);
@@ -4751,11 +5403,11 @@ const $88b23a8428e67b66$var$Video = ()=>{
4751
5403
  ]);
4752
5404
  (0, $jQDcL$react.useEffect)(()=>{
4753
5405
  const onNewPeer = (event)=>{
4754
- const { id: id , displayName: displayName } = event.detail;
5406
+ const { peerId: peerId , displayName: displayName } = event.detail;
4755
5407
  dispatch({
4756
5408
  type: (0, $a4027a5418fcd07a$export$96a9662a3eda31f6).ADD_STREAM,
4757
5409
  payload: {
4758
- id: id,
5410
+ id: peerId,
4759
5411
  displayName: displayName
4760
5412
  }
4761
5413
  });
@@ -4793,7 +5445,7 @@ const $88b23a8428e67b66$var$Video = ()=>{
4793
5445
  const onEnterRoom = (event)=>{
4794
5446
  const { peers: peers } = event.detail;
4795
5447
  const roomStreams = peers.map((peer)=>({
4796
- id: peer.id,
5448
+ id: peer.peerId,
4797
5449
  displayName: peer.displayName
4798
5450
  }));
4799
5451
  dispatch({
@@ -4831,27 +5483,27 @@ const $88b23a8428e67b66$var$Video = ()=>{
4831
5483
  }
4832
5484
  });
4833
5485
  };
4834
- window.addEventListener("enterRoom", onEnterRoom);
4835
- window.addEventListener("newPeer", onNewPeer);
4836
- window.addEventListener("peerClosed", onPeerClosed);
4837
- window.addEventListener("newConsumer", onConsumerUpdate);
4838
- window.addEventListener("consumerClose", onConsumerUpdate);
4839
- window.addEventListener("producerPaused", onProducerUpdate);
4840
- window.addEventListener("producerResumed", onProducerUpdate);
4841
- window.addEventListener("displayName", onDisplayName);
4842
- window.addEventListener("peerStartSpeak", onPeerSpeakingUpdate);
4843
- window.addEventListener("peerStopSpeak", onPeerSpeakingUpdate);
5486
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("enterRoom", onEnterRoom);
5487
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("newPeer", onNewPeer);
5488
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("peerClosed", onPeerClosed);
5489
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("newConsumer", onConsumerUpdate);
5490
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("consumerClose", onConsumerUpdate);
5491
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("producerPaused", onProducerUpdate);
5492
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("producerResumed", onProducerUpdate);
5493
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("displayName", onDisplayName);
5494
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("peerStartSpeak", onPeerSpeakingUpdate);
5495
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("peerStopSpeak", onPeerSpeakingUpdate);
4844
5496
  return ()=>{
4845
- window.removeEventListener("enterRoom", onEnterRoom);
4846
- window.removeEventListener("newPeer", onNewPeer);
4847
- window.removeEventListener("peerClosed", onPeerClosed);
4848
- window.removeEventListener("newConsumer", onConsumerUpdate);
4849
- window.removeEventListener("consumerClose", onConsumerUpdate);
4850
- window.removeEventListener("producerPaused", onProducerUpdate);
4851
- window.removeEventListener("producerResumed", onProducerUpdate);
4852
- window.removeEventListener("displayName", onDisplayName);
4853
- window.removeEventListener("peerStartSpeak", onPeerSpeakingUpdate);
4854
- window.removeEventListener("peerStopSpeak", onPeerSpeakingUpdate);
5497
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("enterRoom", onEnterRoom);
5498
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("newPeer", onNewPeer);
5499
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("peerClosed", onPeerClosed);
5500
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("newConsumer", onConsumerUpdate);
5501
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("consumerClose", onConsumerUpdate);
5502
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("producerPaused", onProducerUpdate);
5503
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("producerResumed", onProducerUpdate);
5504
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("displayName", onDisplayName);
5505
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("peerStartSpeak", onPeerSpeakingUpdate);
5506
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("peerStopSpeak", onPeerSpeakingUpdate);
4855
5507
  };
4856
5508
  }, [
4857
5509
  dispatch
@@ -4877,8 +5529,7 @@ const $88b23a8428e67b66$var$Video = ()=>{
4877
5529
  children: [
4878
5530
  options.audioTiles && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $dc81c0e96fbbb967$export$2e2bcd8739ae039), {
4879
5531
  stream: {
4880
- id: "self",
4881
- microphone: "self",
5532
+ id: String(selfPeerId),
4882
5533
  muted: selfMuted,
4883
5534
  displayName: selfDisplayName
4884
5535
  }
@@ -4910,14 +5561,17 @@ var $88b23a8428e67b66$export$2e2bcd8739ae039 = $88b23a8428e67b66$var$Video;
4910
5561
 
4911
5562
 
4912
5563
  const $f09948cc22419e6e$var$HangUp = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
4913
- width: "23",
4914
- height: "11",
4915
- viewBox: "0 0 23 11",
5564
+ width: "25",
5565
+ height: "24",
5566
+ viewBox: "0 0 25 24",
4916
5567
  fill: "none",
4917
5568
  xmlns: "http://www.w3.org/2000/svg",
4918
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
4919
- d: "M6.39 9.965c.133-.133.315-.23.479-.333.329-.21.673-.396 1.029-.557a1.713 1.713 0 0 0 .896-2.107l-.14-.406a10.43 10.43 0 0 1 2.822-.4 10.43 10.43 0 0 1 2.822.4l-.085.424a1.713 1.713 0 0 0 .896 2.107c.355.163.699.35 1.03.557.163.103.326.218.484.34a2.569 2.569 0 0 0 3.324-.31l1.816-1.816a2.57 2.57 0 0 0-.248-3.88 16.269 16.269 0 0 0-19.968.035l-.23.23a2.569 2.569 0 0 0-.584 2.737c.13.339.331.647.59.902l1.816 1.817a2.57 2.57 0 0 0 3.251.26Zm-3.935-3.33a.856.856 0 0 1-.145-1.02.899.899 0 0 1 .242-.288 14.556 14.556 0 0 1 17.855.043.933.933 0 0 1 .345.647.855.855 0 0 1-.248.66l-1.817 1.817a.856.856 0 0 1-1.083.127 9.275 9.275 0 0 0-.582-.4c-.389-.249-.795-.47-1.217-.66l.454-1.24a.856.856 0 0 0-.508-1.103 12.407 12.407 0 0 0-8.477 0 .856.856 0 0 0-.46.46.856.856 0 0 0-.03.66l.472 1.223c-.425.201-.837.428-1.235.679a9.282 9.282 0 0 0-.581.4.856.856 0 0 1-1.084-.128L2.455 6.635Z",
4920
- fill: "#fff"
5569
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("g", {
5570
+ clipPath: "url(#hangup)",
5571
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
5572
+ d: "M6.942 16.21c.144-.145.34-.25.517-.36a8.735 8.735 0 0 1 1.113-.603 1.851 1.851 0 0 0 .969-2.278l-.151-.438a11.279 11.279 0 0 1 3.05-.432c1.032.003 2.058.149 3.05.432l-.091.458a1.852 1.852 0 0 0 .968 2.278 9.55 9.55 0 0 1 1.113.602c.177.111.354.235.524.366a2.777 2.777 0 0 0 3.593-.333l1.964-1.964a2.776 2.776 0 0 0-.269-4.196 17.588 17.588 0 0 0-21.586.04l-.249.248a2.777 2.777 0 0 0-.63 2.958c.14.367.358.7.637.976l1.963 1.964a2.777 2.777 0 0 0 3.515.281Zm-4.254-3.6a.926.926 0 0 1-.156-1.104.98.98 0 0 1 .26-.31 15.736 15.736 0 0 1 19.303.045 1.009 1.009 0 0 1 .373.7.925.925 0 0 1-.269.714l-1.963 1.964a.925.925 0 0 1-1.172.137 9.979 9.979 0 0 0-.628-.432c-.42-.27-.86-.508-1.316-.713l.491-1.342a.925.925 0 0 0-.55-1.191 13.412 13.412 0 0 0-9.163 0 .926.926 0 0 0-.498.497.926.926 0 0 0-.032.714l.51 1.322c-.46.217-.905.462-1.335.733-.214.135-.423.279-.629.432a.926.926 0 0 1-1.171-.138L2.688 12.61Z",
5573
+ fill: "#fff"
5574
+ })
4921
5575
  })
4922
5576
  });
4923
5577
  var $f09948cc22419e6e$export$2e2bcd8739ae039 = $f09948cc22419e6e$var$HangUp;
@@ -4925,18 +5579,15 @@ var $f09948cc22419e6e$export$2e2bcd8739ae039 = $f09948cc22419e6e$var$HangUp;
4925
5579
 
4926
5580
 
4927
5581
 
4928
-
4929
- const $ec8eb252693ca260$var$ThemedPath = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).path`
4930
- fill: ${(props)=>props.theme.controlsIconColor};
4931
- `;
4932
5582
  const $ec8eb252693ca260$var$Rotate = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
4933
- width: "20",
4934
- height: "20",
4935
- viewBox: "0 0 20 20",
5583
+ width: "25",
5584
+ height: "24",
5585
+ viewBox: "0 0 25 24",
4936
5586
  fill: "none",
4937
5587
  xmlns: "http://www.w3.org/2000/svg",
4938
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($ec8eb252693ca260$var$ThemedPath, {
4939
- d: "M17.91 13.51h-4.53a1 1 0 0 0 0 2h2.4A8 8 0 0 1 2 10a1 1 0 0 0-2 0 10 10 0 0 0 16.88 7.23V19a1 1 0 0 0 2 0v-4.5a1 1 0 0 0-.97-.99ZM10 0a10 10 0 0 0-6.88 2.77V1a1 1 0 0 0-2 0v4.5a1 1 0 0 0 1 1h4.5a1 1 0 0 0 0-2h-2.4A8 8 0 0 1 18 10a1 1 0 0 0 2 0A10 10 0 0 0 10 0Z"
5588
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
5589
+ d: "M20.41 15.51h-4.53a1 1 0 0 0 0 2h2.4A8 8 0 0 1 4.5 12a1 1 0 1 0-2 0 10 10 0 0 0 16.88 7.23V21a1 1 0 0 0 2 0v-4.5a1 1 0 0 0-.97-.99ZM12.5 2a10 10 0 0 0-6.88 2.77V3a1 1 0 0 0-2 0v4.5a1 1 0 0 0 1 1h4.5a1 1 0 0 0 0-2h-2.4A8 8 0 0 1 20.5 12a1 1 0 0 0 2 0 10 10 0 0 0-10-10Z",
5590
+ fill: "#F7F7F7"
4940
5591
  })
4941
5592
  });
4942
5593
  var $ec8eb252693ca260$export$2e2bcd8739ae039 = $ec8eb252693ca260$var$Rotate;
@@ -5006,12 +5657,12 @@ var $39ceb925b3865754$export$2e2bcd8739ae039 = $39ceb925b3865754$var$Spinner;
5006
5657
 
5007
5658
  const $3b6953f72db3bb17$var$YoutubeIcon = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
5008
5659
  width: "24",
5009
- height: "16",
5010
- viewBox: "0 0 24 16",
5660
+ height: "25",
5661
+ viewBox: "0 0 24 25",
5011
5662
  fill: "none",
5012
5663
  xmlns: "http://www.w3.org/2000/svg",
5013
5664
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
5014
- d: "M23 5.71a8.499 8.499 0 0 0-.91-4.13 2.92 2.92 0 0 0-1.72-1A78.36 78.36 0 0 0 12 .27a78.45 78.45 0 0 0-8.34.3 2.87 2.87 0 0 0-1.46.74c-.9.83-1 2.25-1.1 3.45a48.29 48.29 0 0 0 0 6.48 9.55 9.55 0 0 0 .3 2c.12.505.365.972.71 1.36a2.86 2.86 0 0 0 1.49.78c2.156.266 4.328.376 6.5.33 3.5.05 6.57 0 10.2-.28a2.88 2.88 0 0 0 1.53-.78c.28-.28.49-.623.61-1 .358-1.097.533-2.246.52-3.4.04-.56.04-3.94.04-4.54ZM9.74 10.85V4.66l5.92 3.11c-1.66.92-3.85 1.96-5.92 3.08Z",
5665
+ d: "M23 10.21a8.499 8.499 0 0 0-.91-4.13 2.92 2.92 0 0 0-1.72-1A78.362 78.362 0 0 0 12 4.77a78.45 78.45 0 0 0-8.34.3 2.87 2.87 0 0 0-1.46.74c-.9.83-1 2.25-1.1 3.45a48.29 48.29 0 0 0 0 6.48 9.55 9.55 0 0 0 .3 2c.12.505.365.972.71 1.36a2.86 2.86 0 0 0 1.49.78c2.156.266 4.328.376 6.5.33 3.5.05 6.57 0 10.2-.28a2.88 2.88 0 0 0 1.53-.78c.28-.28.49-.623.61-1 .358-1.097.533-2.246.52-3.4.04-.56.04-3.94.04-4.54ZM9.74 15.35V9.16l5.92 3.11c-1.66.92-3.85 1.96-5.92 3.08Z",
5015
5666
  fill: "#fff"
5016
5667
  })
5017
5668
  });
@@ -5019,21 +5670,16 @@ var $3b6953f72db3bb17$export$2e2bcd8739ae039 = $3b6953f72db3bb17$var$YoutubeIcon
5019
5670
 
5020
5671
 
5021
5672
 
5022
-
5023
- const $daca1602b495441e$var$ThemedPath = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).path`
5024
- fill: ${(props)=>props.white ? "#fff" : props.theme.controlsIconColor};
5025
- `;
5026
- const $daca1602b495441e$var$Link = ({ size: size , white: white })=>{
5027
- const iconSize = size || 20;
5673
+ const $daca1602b495441e$var$Link = ()=>{
5028
5674
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
5029
- width: iconSize,
5030
- height: iconSize,
5031
- viewBox: `0 0 ${iconSize} ${iconSize}`,
5675
+ width: "24",
5676
+ height: "24",
5677
+ viewBox: "0 0 24 24",
5032
5678
  fill: "none",
5033
5679
  xmlns: "http://www.w3.org/2000/svg",
5034
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($daca1602b495441e$var$ThemedPath, {
5035
- d: "m10.11 13.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1.004 1.004 0 1 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1.004 1.004 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0L8.47 5.19a1.004 1.004 0 1 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.471 2.471 0 0 1 0 3.5l-3.88 3.88a1.002 1.002 0 0 0 .325 1.639.999.999 0 0 0 1.095-.219l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM6.83 13.17a1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.92-4.92a1.004 1.004 0 1 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z",
5036
- white: white
5680
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
5681
+ d: "m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1.004 1.004 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1.004 1.004 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1.004 1.004 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.471 2.471 0 0 1 0 3.5l-3.88 3.88a1.002 1.002 0 0 0 .325 1.639.999.999 0 0 0 1.095-.219l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.92-4.92a1.004 1.004 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z",
5682
+ fill: "#fff"
5037
5683
  })
5038
5684
  });
5039
5685
  };
@@ -5069,7 +5715,7 @@ const $06daeb2618dcfb56$export$6e8af0bd0a2aaa77 = (0, ($parcel$interopDefault($j
5069
5715
  min-height: 48px;
5070
5716
  background-color: ${(props)=>{
5071
5717
  if (props.danger) return "#d84949";
5072
- if (props.primary) return "#6967fc";
5718
+ if (props.primary) return props.theme.primaryColor;
5073
5719
  return props.theme.controlsBackgroundColor;
5074
5720
  }};
5075
5721
  border: ${(props)=>props.danger || props.primary ? "2px solid transparent" : `2px solid ${props.theme.controlsBorderColor}`};
@@ -5088,7 +5734,7 @@ const $06daeb2618dcfb56$export$6e8af0bd0a2aaa77 = (0, ($parcel$interopDefault($j
5088
5734
  border: 2px solid
5089
5735
  ${(props)=>{
5090
5736
  if (props.danger) return "#fc7d7d";
5091
- if (props.primary) return "#9e9cfc";
5737
+ if (props.primary) return "#a3ceff";
5092
5738
  return props.theme.controlsHoverBorderColor;
5093
5739
  }};
5094
5740
  }
@@ -5124,9 +5770,9 @@ const $9dfd9e2286cffa66$var$isScreenshareSupported = Boolean(navigator.mediaDevi
5124
5770
  const $9dfd9e2286cffa66$var$HighlightButton = ()=>{
5125
5771
  const highlightMenuRef = (0, $jQDcL$react.useRef)(null);
5126
5772
  const [isHighlightMenuOpen, setIsHighlightMenuOpen] = (0, $jQDcL$react.useState)(false);
5127
- const { setIsYoutubePopupVisible: setIsYoutubePopupVisible , setIsLinksharePopupVisible: setIsLinksharePopupVisible } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
5773
+ const { setIsYoutubePopupVisible: setIsYoutubePopupVisible , setIsLinksharePopupVisible: setIsLinksharePopupVisible , selfPeerId: selfPeerId } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
5128
5774
  const { highlightedTile: highlightedTile , dispatch: dispatch } = (0, $3f6e908c45fcc5b3$export$b5633a7cfbe42d9f)();
5129
- const isPresenting = Boolean(highlightedTile?.data.local);
5775
+ const isPresenting = Boolean(highlightedTile?.isGlobal && highlightedTile?.peerId === selfPeerId);
5130
5776
  (0, $326cea7dbbcb019a$export$71b2224f1ce5e08e)(highlightMenuRef, ()=>setIsHighlightMenuOpen(false));
5131
5777
  const onHighlightClick = async ()=>{
5132
5778
  if (isPresenting) dispatch({
@@ -5172,11 +5818,16 @@ const $9dfd9e2286cffa66$var$HighlightButton = ()=>{
5172
5818
  ]
5173
5819
  },
5174
5820
  ];
5175
- if ($9dfd9e2286cffa66$var$isScreenshareSupported) menuCategories[0].items.push({
5176
- id: "screensharing",
5177
- title: "Screen Sharing",
5178
- jsxIcon: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $f2ca2ee422d05e6e$export$2e2bcd8739ae039), {}),
5179
- action: onScreenshareClick
5821
+ if ($9dfd9e2286cffa66$var$isScreenshareSupported) menuCategories.push({
5822
+ id: "2",
5823
+ items: [
5824
+ {
5825
+ id: "screensharing",
5826
+ title: "Screen Sharing",
5827
+ jsxIcon: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $f2ca2ee422d05e6e$export$2e2bcd8739ae039), {}),
5828
+ action: onScreenshareClick
5829
+ },
5830
+ ]
5180
5831
  });
5181
5832
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $jQDcL$reactjsxruntime.Fragment), {
5182
5833
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $06daeb2618dcfb56$export$3f103e2d692ed6d2), {
@@ -5263,9 +5914,9 @@ const $a21b2aa064cb6c32$var$ControlBar = ()=>{
5263
5914
  setWebcamCount(numberOfAvailableWebcams);
5264
5915
  };
5265
5916
  (0, $jQDcL$react.useEffect)(()=>{
5266
- window.addEventListener("webcamsUpdate", onNewWebcamCount);
5917
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("webcamsUpdate", onNewWebcamCount);
5267
5918
  return ()=>{
5268
- window.removeEventListener("webcamsUpdate", onNewWebcamCount);
5919
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("webcamsUpdate", onNewWebcamCount);
5269
5920
  };
5270
5921
  }, []);
5271
5922
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $06daeb2618dcfb56$export$b6ba9bc16b3ff153), {
@@ -5345,7 +5996,6 @@ var $a21b2aa064cb6c32$export$2e2bcd8739ae039 = $a21b2aa064cb6c32$var$ControlBar;
5345
5996
 
5346
5997
 
5347
5998
 
5348
-
5349
5999
  const $b387679730856fb1$export$9d03e7b857083c37 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
5350
6000
  position: absolute;
5351
6001
  width: 100%;
@@ -5394,8 +6044,8 @@ const $b387679730856fb1$export$b421c25a8e0ea22e = (0, ($parcel$interopDefault($j
5394
6044
  padding: 0;
5395
6045
 
5396
6046
  svg {
5397
- height: 10px;
5398
- width: 10px;
6047
+ height: 15px;
6048
+ width: 15px;
5399
6049
 
5400
6050
  path {
5401
6051
  fill: #000;
@@ -5426,12 +6076,11 @@ const $b387679730856fb1$export$51760c3b0f5567d2 = (0, ($parcel$interopDefault($j
5426
6076
  const $681806ce8015ae4d$var$QuickConnect = ()=>{
5427
6077
  const QuickConnectContainerRef = (0, $jQDcL$react.useRef)(null);
5428
6078
  const QuickConnectRef = (0, $jQDcL$react.useRef)(null);
5429
- const { selfPeerId: selfPeerId , isQuickConnectPopupVisible: isQuickConnectPopupVisible , setIsQuickConnectPopupVisible: setIsQuickConnectPopupVisible , options: options } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
5430
- const [windowWidth, windowHeight] = (0, $e79bb9d030bdcf5b$export$2e2bcd8739ae039)();
6079
+ const { selfPeerId: selfPeerId , selfDisplayName: selfDisplayName , isQuickConnectPopupVisible: isQuickConnectPopupVisible , setIsQuickConnectPopupVisible: setIsQuickConnectPopupVisible , options: options , orientation: orientation , } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
5431
6080
  (0, $326cea7dbbcb019a$export$71b2224f1ce5e08e)(QuickConnectContainerRef, ()=>{
5432
6081
  if (isQuickConnectPopupVisible) setIsQuickConnectPopupVisible(false);
5433
6082
  });
5434
- const desktop = windowWidth > windowHeight;
6083
+ const desktop = orientation === "landscape";
5435
6084
  const qrCodeURL = (0, $jQDcL$react.useMemo)(()=>{
5436
6085
  let url = new URL(window.location.href);
5437
6086
  if (selfPeerId) {
@@ -5443,11 +6092,13 @@ const $681806ce8015ae4d$var$QuickConnect = ()=>{
5443
6092
  url.searchParams.set("microphone-enabled", "0");
5444
6093
  url.searchParams.set("camera-enabled", "1");
5445
6094
  url.searchParams.set("quick-connect", selfPeerId);
6095
+ if (selfDisplayName) url.searchParams.set("name", selfDisplayName);
5446
6096
  }
5447
6097
  return url.href;
5448
6098
  }, [
5449
6099
  options.sharedURL,
5450
- selfPeerId
6100
+ selfPeerId,
6101
+ selfDisplayName
5451
6102
  ]);
5452
6103
  const onQuickConnectPopupCloseClick = ()=>setIsQuickConnectPopupVisible(false);
5453
6104
  (0, $jQDcL$react.useEffect)(()=>{
@@ -5455,9 +6106,9 @@ const $681806ce8015ae4d$var$QuickConnect = ()=>{
5455
6106
  const { type: type } = event.detail.event;
5456
6107
  if (type === "quick_connect_close") setIsQuickConnectPopupVisible(false);
5457
6108
  };
5458
- window.addEventListener("customMessage", onCustomMessage);
6109
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("customMessage", onCustomMessage);
5459
6110
  return ()=>{
5460
- window.removeEventListener("customMessage", onCustomMessage);
6111
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("customMessage", onCustomMessage);
5461
6112
  };
5462
6113
  }, [
5463
6114
  setIsQuickConnectPopupVisible
@@ -5471,9 +6122,14 @@ const $681806ce8015ae4d$var$QuickConnect = ()=>{
5471
6122
  if (selfPeerId) {
5472
6123
  const urlParams = new URLSearchParams(window.location.href);
5473
6124
  const quickConnectParam = urlParams.get("quick-connect");
5474
- if (quickConnectParam) (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).sendCustomMessage(quickConnectParam, {
5475
- type: "quick_connect_close"
5476
- });
6125
+ const quickConnectNameParam = urlParams.get("name");
6126
+ if (quickConnectParam) {
6127
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).sendCustomMessage(quickConnectParam, {
6128
+ type: "quick_connect_close"
6129
+ });
6130
+ if (quickConnectNameParam) (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).setDisplayName(`${quickConnectNameParam} (mobile)`);
6131
+ else (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).setDisplayName("Mobile");
6132
+ }
5477
6133
  }
5478
6134
  }, [
5479
6135
  selfPeerId
@@ -5522,47 +6178,42 @@ var $660dc8b06ec61ae0$export$2e2bcd8739ae039 = $660dc8b06ec61ae0$var$capitalizeF
5522
6178
 
5523
6179
 
5524
6180
 
5525
-
5526
- const $f5af46abb3b35e58$var$ThemedPath = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).path`
5527
- fill: ${(props)=>props.theme.controlsIconColor};
5528
- `;
5529
6181
  const $f5af46abb3b35e58$var$External = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
5530
- width: "16",
5531
- height: "16",
5532
- viewBox: "0 0 16 16",
6182
+ width: "20",
6183
+ height: "20",
6184
+ viewBox: "0 0 20 20",
5533
6185
  fill: "none",
5534
6186
  xmlns: "http://www.w3.org/2000/svg",
5535
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($f5af46abb3b35e58$var$ThemedPath, {
5536
- d: "M12.5 7.115a.75.75 0 0 0-.75.75v5.385A.75.75 0 0 1 11 14H2.75a.75.75 0 0 1-.75-.75V5a.75.75 0 0 1 .75-.75h5.385a.75.75 0 0 0 0-1.5H2.75A2.25 2.25 0 0 0 .5 5v8.25a2.25 2.25 0 0 0 2.25 2.25H11a2.25 2.25 0 0 0 2.25-2.25V7.865a.75.75 0 0 0-.75-.75Zm2.94-6.15a.75.75 0 0 0-.405-.405.75.75 0 0 0-.285-.06h-4.5a.75.75 0 0 0 0 1.5h2.693L5.218 9.717a.75.75 0 0 0 .244 1.23.751.751 0 0 0 .82-.164L14 3.058V5.75a.75.75 0 1 0 1.5 0v-4.5a.75.75 0 0 0-.06-.285Z"
6187
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
6188
+ d: "M15 9.017a.833.833 0 0 0-.833.833v5.983a.833.833 0 0 1-.833.833H4.167a.833.833 0 0 1-.833-.833V6.667a.833.833 0 0 1 .833-.834h5.983a.833.833 0 0 0 0-1.667H4.167a2.5 2.5 0 0 0-2.5 2.5v9.167a2.5 2.5 0 0 0 2.5 2.5h9.167a2.5 2.5 0 0 0 2.5-2.5V9.85A.833.833 0 0 0 15 9.017Zm3.267-6.834a.834.834 0 0 0-.45-.45.834.834 0 0 0-.317-.067h-5a.833.833 0 0 0 0 1.667h2.992l-8.583 8.575a.832.832 0 0 0 0 1.184.833.833 0 0 0 1.183 0l8.575-8.584V7.5a.833.833 0 1 0 1.667 0v-5a.835.835 0 0 0-.067-.317Z",
6189
+ fill: "#fff"
5537
6190
  })
5538
6191
  });
5539
6192
  var $f5af46abb3b35e58$export$2e2bcd8739ae039 = $f5af46abb3b35e58$var$External;
5540
6193
 
5541
6194
 
5542
6195
 
5543
-
5544
- const $bcd348753bc3b8f8$var$ThemedPath = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).path`
5545
- fill: ${(props)=>props.theme.controlsIconColor};
5546
- `;
5547
- const $bcd348753bc3b8f8$var$Arrow = ({ direction: direction , small: small })=>{
6196
+ const $bcd348753bc3b8f8$var$Arrow = ({ direction: direction })=>{
5548
6197
  if (direction === "right") return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
5549
- width: "8",
5550
- height: "12",
5551
- viewBox: "0 0 8 12",
6198
+ width: "20",
6199
+ height: "20",
6200
+ viewBox: "0 0 20 20",
5552
6201
  fill: "none",
5553
6202
  xmlns: "http://www.w3.org/2000/svg",
5554
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($bcd348753bc3b8f8$var$ThemedPath, {
5555
- d: "M6.83 5.29 2.59 1.05a1 1 0 1 0-1.42 1.41L4.71 6 1.17 9.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1 1 0 0 0 0-1.42Z"
6203
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
6204
+ d: "M8.233 14.37a.834.834 0 0 1-.59-1.423L10.59 10 7.643 7.054a.833.833 0 1 1 1.179-1.179l3.535 3.536a.833.833 0 0 1 0 1.178l-3.535 3.536a.83.83 0 0 1-.59.244Z",
6205
+ fill: "#fff"
5556
6206
  })
5557
6207
  });
5558
6208
  if (direction === "left") return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
5559
- width: "16",
5560
- height: "18",
5561
- viewBox: "0 0 16 18",
6209
+ width: "32",
6210
+ height: "32",
6211
+ viewBox: "0 0 32 32",
5562
6212
  fill: "none",
5563
6213
  xmlns: "http://www.w3.org/2000/svg",
5564
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($bcd348753bc3b8f8$var$ThemedPath, {
5565
- d: "M14.667 7.666H4.547l4.4-4.386a1.339 1.339 0 1 0-1.893-1.894L.387 8.053a1.333 1.333 0 0 0-.28.44 1.333 1.333 0 0 0 0 1.013c.063.164.158.313.28.44l6.667 6.667a1.333 1.333 0 0 0 1.893 0 1.332 1.332 0 0 0 0-1.893l-4.4-4.387h10.12a1.333 1.333 0 1 0 0-2.667Z"
6214
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
6215
+ d: "M22.667 14.666h-10.12l4.4-4.386a1.34 1.34 0 0 0-1.893-1.894l-6.667 6.667a1.334 1.334 0 0 0-.28.44 1.334 1.334 0 0 0 0 1.013c.063.164.158.314.28.44l6.666 6.667a1.333 1.333 0 0 0 1.894 0 1.334 1.334 0 0 0 0-1.893l-4.4-4.387h10.12a1.333 1.333 0 1 0 0-2.667Z",
6216
+ fill: "#fff"
5566
6217
  })
5567
6218
  });
5568
6219
  return null;
@@ -5572,19 +6223,32 @@ var $bcd348753bc3b8f8$export$2e2bcd8739ae039 = $bcd348753bc3b8f8$var$Arrow;
5572
6223
 
5573
6224
 
5574
6225
 
6226
+ const $802dd6755664a000$var$Speaker = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
6227
+ width: "24",
6228
+ height: "24",
6229
+ viewBox: "0 0 24 24",
6230
+ fill: "none",
6231
+ xmlns: "http://www.w3.org/2000/svg",
6232
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
6233
+ d: "M12.43 4.1a1 1 0 0 0-1 .12L6.65 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h3.65l4.73 3.78A1 1 0 0 0 12 20a.91.91 0 0 0 .43-.1A1 1 0 0 0 13 19V5a1 1 0 0 0-.57-.9ZM11 16.92l-3.38-2.7A1 1 0 0 0 7 14H4v-4h3a1 1 0 0 0 .62-.22L11 7.08v9.84Zm8.66-10.58a1.004 1.004 0 1 0-1.42 1.42 5.998 5.998 0 0 1-.38 8.84 1 1 0 0 0 .64 1.76 1 1 0 0 0 .64-.23 8 8 0 0 0 .52-11.79Zm-2.83 2.83a1.003 1.003 0 1 0-1.42 1.42A2 2 0 0 1 16 12a2.001 2.001 0 0 1-.71 1.53.997.997 0 1 0 1.28 1.53A4 4 0 0 0 18 12a4.06 4.06 0 0 0-1.17-2.83Z",
6234
+ fill: "#fff"
6235
+ })
6236
+ });
6237
+ var $802dd6755664a000$export$2e2bcd8739ae039 = $802dd6755664a000$var$Speaker;
6238
+
6239
+
6240
+
5575
6241
 
5576
6242
 
5577
- const $41e530447f5fd995$var$ThemedPath = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).path`
5578
- fill: ${(props)=>props.theme.controlsIconColor};
5579
- `;
5580
6243
  const $41e530447f5fd995$var$Checkmark = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
5581
- width: "12",
5582
- height: "8",
5583
- viewBox: "0 0 12 8",
6244
+ width: "20",
6245
+ height: "20",
6246
+ viewBox: "0 0 20 20",
5584
6247
  fill: "none",
5585
6248
  xmlns: "http://www.w3.org/2000/svg",
5586
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($41e530447f5fd995$var$ThemedPath, {
5587
- d: "M11.032.407a.75.75 0 0 0-1.065 0L4.38 6.002 2.032 3.647A.766.766 0 1 0 .967 4.75l2.88 2.88a.75.75 0 0 0 1.065 0l6.12-6.12a.75.75 0 0 0 0-1.103Z"
6249
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
6250
+ d: "M15.592 6.008a.833.833 0 0 0-1.184 0L8.2 12.225 5.592 9.608a.852.852 0 0 0-1.184 1.225l3.2 3.2a.833.833 0 0 0 1.184 0l6.8-6.8a.834.834 0 0 0 0-1.225Z",
6251
+ fill: "#fff"
5588
6252
  })
5589
6253
  });
5590
6254
  var $41e530447f5fd995$export$2e2bcd8739ae039 = $41e530447f5fd995$var$Checkmark;
@@ -5680,6 +6344,22 @@ const $5f1594faf2dff407$export$db1aade9877208c7 = (0, ($parcel$interopDefault($j
5680
6344
  padding: 16px 18px;
5681
6345
  font-size: 14px;
5682
6346
  color: ${(props)=>props.theme.settingsTextColor};
6347
+
6348
+ span {
6349
+ display: flex;
6350
+ align-items: center;
6351
+ }
6352
+ `;
6353
+ const $5f1594faf2dff407$export$bb67e2c42c95a3ae = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6354
+ display: flex;
6355
+ align-items: center;
6356
+ margin-right: 10px;
6357
+ `;
6358
+ const $5f1594faf2dff407$export$f132d77f01dce0a3 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).p`
6359
+ margin: 0;
6360
+ text-overflow: ellipsis;
6361
+ white-space: nowrap;
6362
+ overflow: hidden;
5683
6363
  `;
5684
6364
  const $5f1594faf2dff407$export$4f015f15aa624b3d = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
5685
6365
  display: flex;
@@ -5692,48 +6372,325 @@ const $5f1594faf2dff407$export$a172e59999e5ae8e = (0, ($parcel$interopDefault($j
5692
6372
  position: relative;
5693
6373
  width: 40px;
5694
6374
  height: 20px;
5695
- background-color: ${(props)=>props.checked ? "#6967fc" : "#b5b5b5"};
6375
+ background-color: ${(props)=>props.checked ? props.theme.primaryColor : "#b5b5b5"};
5696
6376
  border-radius: 10px;
5697
6377
  padding: 5px;
5698
6378
  box-sizing: border-box;
5699
6379
  transition: all 0.4s;
5700
6380
 
5701
- &::after {
5702
- position: absolute;
5703
- display: block;
5704
- content: '';
5705
- right: ${(props)=>props.checked ? "calc(0% + 15px)" : "calc(100% - 5px)"};
5706
- transform: translate(100%, 0);
5707
- background-color: #fff;
5708
- width: 10px;
5709
- height: 10px;
5710
- border-radius: 50%;
5711
- transition: all 0.4s;
5712
- }
5713
- `;
6381
+ &::after {
6382
+ position: absolute;
6383
+ display: block;
6384
+ content: '';
6385
+ right: ${(props)=>props.checked ? "calc(0% + 15px)" : "calc(100% - 5px)"};
6386
+ transform: translate(100%, 0);
6387
+ background-color: #fff;
6388
+ width: 10px;
6389
+ height: 10px;
6390
+ border-radius: 50%;
6391
+ transition: all 0.4s;
6392
+ }
6393
+ `;
6394
+ const $5f1594faf2dff407$export$87d6be27a51dc3c4 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6395
+ display: flex;
6396
+ flex-direction: column;
6397
+ justify-content: center;
6398
+ align-items: center;
6399
+ padding: 22px;
6400
+ gap: 10px;
6401
+ background-color: #686868;
6402
+ border-radius: 15px;
6403
+ `;
6404
+ const $5f1594faf2dff407$export$30ccd51431e4a7b0 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).p`
6405
+ font-weight: 700;
6406
+ font-size: 16px;
6407
+ line-height: 16px;
6408
+ text-align: center;
6409
+ margin: 0;
6410
+ `;
6411
+ const $5f1594faf2dff407$export$73afb47ae3e10bf1 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).p`
6412
+ font-weight: 500;
6413
+ font-size: 14px;
6414
+ line-height: 16px;
6415
+ text-align: center;
6416
+ margin: 0;
6417
+ `;
6418
+
6419
+
6420
+ const $54c346ed2df7d69f$var$languagesList = [
6421
+ "english"
6422
+ ];
6423
+ const $54c346ed2df7d69f$export$604ba5624273df44 = ()=>{
6424
+ try {
6425
+ const storedTheme = localStorage.getItem("stream_ui_language");
6426
+ if (storedTheme) return storedTheme;
6427
+ return "english";
6428
+ } catch (localStorageError) {
6429
+ console.warn(localStorageError);
6430
+ return "english";
6431
+ }
6432
+ };
6433
+ const $54c346ed2df7d69f$var$LanguageSubMenu = ({ back: back })=>{
6434
+ const { language: language , setLanguage: setLanguage } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
6435
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reactjsxruntime.Fragment), {
6436
+ children: [
6437
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$ba6f0acf5af923bd), {
6438
+ children: [
6439
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$edb76fdb8665f52), {
6440
+ children: "Languages"
6441
+ }),
6442
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$b16d2ed9d0485f06), {
6443
+ onClick: back,
6444
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $bcd348753bc3b8f8$export$2e2bcd8739ae039), {
6445
+ direction: "left"
6446
+ })
6447
+ })
6448
+ ]
6449
+ }),
6450
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$b286f91cddfedb5a), {
6451
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$38050e761cbb2b1d), {
6452
+ children: [
6453
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$5caf84ac7a22e7b5), {
6454
+ children: "Language"
6455
+ }),
6456
+ $54c346ed2df7d69f$var$languagesList.map((lang)=>{
6457
+ const checked = language === lang;
6458
+ const onLanguageClick = ()=>{
6459
+ setLanguage(lang);
6460
+ };
6461
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$db1aade9877208c7), {
6462
+ onClick: onLanguageClick,
6463
+ children: [
6464
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$f132d77f01dce0a3), {
6465
+ children: (0, $660dc8b06ec61ae0$export$2e2bcd8739ae039)(lang)
6466
+ }),
6467
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
6468
+ children: checked && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $41e530447f5fd995$export$2e2bcd8739ae039), {})
6469
+ })
6470
+ ]
6471
+ }, lang);
6472
+ })
6473
+ ]
6474
+ })
6475
+ })
6476
+ ]
6477
+ });
6478
+ };
6479
+ var $54c346ed2df7d69f$export$2e2bcd8739ae039 = $54c346ed2df7d69f$var$LanguageSubMenu;
6480
+
6481
+
6482
+
6483
+
6484
+
6485
+
6486
+
6487
+
6488
+
6489
+
6490
+ const $96bb6d4b0a403c60$var$AudioSubMenu = ({ back: back })=>{
6491
+ const [micDevices, setMicDevices] = (0, $jQDcL$react.useState)([]);
6492
+ const [currentMic, setCurrentMic] = (0, $jQDcL$react.useState)(null);
6493
+ const [speakerDevices, setSpeakerDevices] = (0, $jQDcL$react.useState)([]);
6494
+ const [currentSpeaker, setCurrentSpeaker] = (0, $jQDcL$react.useState)(null);
6495
+ const canChangeSpeakers = speakerDevices.length > 0 && "setSinkId" in HTMLAudioElement.prototype;
6496
+ const listDevices = ()=>(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).listAudioDevices().then((devices)=>{
6497
+ const speakers = devices.filter((device)=>device.kind === "audiooutput" && device.label);
6498
+ const mics = devices.filter((device)=>device.kind === "audioinput" && device.label);
6499
+ setMicDevices(mics);
6500
+ setSpeakerDevices(speakers);
6501
+ // For chrome
6502
+ const speaker = speakers.find((device)=>device.deviceId === "default");
6503
+ const mic = mics.find((device)=>device.deviceId === "default");
6504
+ setCurrentMic(mic || null);
6505
+ setCurrentSpeaker(speaker || null);
6506
+ });
6507
+ const onMicClick = (0, $jQDcL$react.useCallback)(async (mic)=>{
6508
+ if (currentMic?.deviceId === mic.deviceId) return;
6509
+ await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).switchMicrophone(mic.deviceId);
6510
+ setCurrentMic(mic);
6511
+ (0, $84c6cbcbb594d072$export$3a57e165650c636f)(`Connected to ${mic.label}`);
6512
+ }, [
6513
+ currentMic
6514
+ ]);
6515
+ const onSpeakerClick = (0, $jQDcL$react.useCallback)((speaker)=>{
6516
+ if (currentSpeaker?.deviceId === speaker.deviceId) return;
6517
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).setAudioSink(speaker.deviceId);
6518
+ setCurrentSpeaker(speaker);
6519
+ (0, $84c6cbcbb594d072$export$3a57e165650c636f)(`Connected to ${speaker.label}`);
6520
+ }, [
6521
+ currentSpeaker
6522
+ ]);
6523
+ (0, $jQDcL$react.useEffect)(()=>{
6524
+ listDevices();
6525
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("devicesListChange", listDevices);
6526
+ return ()=>(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("devicesListChange", listDevices);
6527
+ }, []);
6528
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reactjsxruntime.Fragment), {
6529
+ children: [
6530
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$ba6f0acf5af923bd), {
6531
+ children: [
6532
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$edb76fdb8665f52), {
6533
+ children: "Audio"
6534
+ }),
6535
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$b16d2ed9d0485f06), {
6536
+ onClick: back,
6537
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $bcd348753bc3b8f8$export$2e2bcd8739ae039), {
6538
+ direction: "left"
6539
+ })
6540
+ })
6541
+ ]
6542
+ }),
6543
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$b286f91cddfedb5a), {
6544
+ children: [
6545
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$38050e761cbb2b1d), {
6546
+ children: [
6547
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$5caf84ac7a22e7b5), {
6548
+ children: "Microphone"
6549
+ }),
6550
+ canChangeSpeakers && micDevices.map((mic)=>{
6551
+ const checked = mic.deviceId === currentMic?.deviceId;
6552
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$db1aade9877208c7), {
6553
+ onClick: ()=>onMicClick(mic),
6554
+ children: [
6555
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$f132d77f01dce0a3), {
6556
+ children: mic.label
6557
+ }),
6558
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
6559
+ children: checked && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $41e530447f5fd995$export$2e2bcd8739ae039), {})
6560
+ })
6561
+ ]
6562
+ }, mic.deviceId);
6563
+ }),
6564
+ !canChangeSpeakers && micDevices.length < 1 && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$87d6be27a51dc3c4), {
6565
+ children: [
6566
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$30ccd51431e4a7b0), {
6567
+ children: "Microphone is blocked."
6568
+ }),
6569
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$73afb47ae3e10bf1), {
6570
+ children: "Please accept microphone sharing before accessing these options."
6571
+ })
6572
+ ]
6573
+ })
6574
+ ]
6575
+ }),
6576
+ canChangeSpeakers && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$38050e761cbb2b1d), {
6577
+ children: [
6578
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$5caf84ac7a22e7b5), {
6579
+ children: "Speakers"
6580
+ }),
6581
+ speakerDevices.map((speaker)=>{
6582
+ const checked = speaker.deviceId === currentSpeaker?.deviceId;
6583
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$db1aade9877208c7), {
6584
+ onClick: ()=>onSpeakerClick(speaker),
6585
+ children: [
6586
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$f132d77f01dce0a3), {
6587
+ children: speaker.label
6588
+ }),
6589
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
6590
+ children: checked && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $41e530447f5fd995$export$2e2bcd8739ae039), {})
6591
+ })
6592
+ ]
6593
+ }, speaker.deviceId);
6594
+ })
6595
+ ]
6596
+ })
6597
+ ]
6598
+ })
6599
+ ]
6600
+ });
6601
+ };
6602
+ var $96bb6d4b0a403c60$export$2e2bcd8739ae039 = $96bb6d4b0a403c60$var$AudioSubMenu;
6603
+
5714
6604
 
5715
6605
 
5716
- const $54c346ed2df7d69f$var$languagesList = [
5717
- "english"
5718
- ];
5719
- const $54c346ed2df7d69f$export$604ba5624273df44 = ()=>{
5720
- try {
5721
- const storedTheme = localStorage.getItem("stream_ui_language");
5722
- if (storedTheme) return storedTheme;
5723
- return "english";
5724
- } catch (localStorageError) {
5725
- console.warn(localStorageError);
5726
- return "english";
6606
+
6607
+
6608
+
6609
+
6610
+
6611
+
6612
+
6613
+ const $097072919b56b62a$var$resolutions = Object.keys((0, $1dedebd5ff3002eb$export$d21ffcc5eb136bfa)).map((key)=>{
6614
+ const constraints = (0, $1dedebd5ff3002eb$export$d21ffcc5eb136bfa);
6615
+ switch(constraints[key].height.ideal){
6616
+ case 240:
6617
+ return {
6618
+ name: "Low definition (240p)",
6619
+ key: key
6620
+ };
6621
+ case 480:
6622
+ return {
6623
+ name: "Standard definition (480p)",
6624
+ key: key
6625
+ };
6626
+ case 720:
6627
+ return {
6628
+ name: "Hight definition (720p)",
6629
+ key: key
6630
+ };
6631
+ default:
6632
+ return {
6633
+ name: "",
6634
+ key: key
6635
+ };
5727
6636
  }
5728
- };
5729
- const $54c346ed2df7d69f$var$LanguageSubMenu = ({ back: back })=>{
5730
- const { language: language , setLanguage: setLanguage } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
6637
+ }).filter((def)=>def.name !== "");
6638
+ const $097072919b56b62a$var$VideoSubMenu = ({ back: back })=>{
6639
+ const [cameraDevices, setCameraDevices] = (0, $jQDcL$react.useState)(Array.from((0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getWebcamsList().values()).filter((device)=>device.deviceId));
6640
+ const [currentCamera, setCurrentCamera] = (0, $jQDcL$react.useState)((0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getCurrentWebcam());
6641
+ const listDevices = async ()=>{
6642
+ const devices = await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).listVideoDevices();
6643
+ const authorisedCameras = devices.filter((device)=>device.deviceId);
6644
+ if (authorisedCameras.length > 0) setCameraDevices(authorisedCameras);
6645
+ };
6646
+ const onCameraClick = async (camera)=>{
6647
+ if (currentCamera.device?.deviceId === camera.deviceId) return;
6648
+ if (currentCamera.device) {
6649
+ await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).switchWebcam({
6650
+ device: camera
6651
+ });
6652
+ (0, $84c6cbcbb594d072$export$3a57e165650c636f)(`Connected to ${camera.label}`, {
6653
+ duration: 3000
6654
+ });
6655
+ } else {
6656
+ await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).enableVideo({
6657
+ device: camera,
6658
+ resolution: currentCamera.resolution
6659
+ });
6660
+ (0, $84c6cbcbb594d072$export$3a57e165650c636f)(`Connected to ${camera.label}`, {
6661
+ duration: 3000
6662
+ });
6663
+ }
6664
+ };
6665
+ const onSendResolutionClick = async (resolution)=>{
6666
+ if (currentCamera.resolution === resolution.key) return;
6667
+ await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).setWebcamResolution(resolution.key);
6668
+ (0, $84c6cbcbb594d072$export$3a57e165650c636f)(`Using ${resolution.name} resolution`, {
6669
+ duration: 3000
6670
+ });
6671
+ };
6672
+ const onLocalVideoChange = (event)=>{
6673
+ setCurrentCamera({
6674
+ ...event.detail.camera
6675
+ });
6676
+ };
6677
+ (0, $jQDcL$react.useEffect)(()=>{
6678
+ listDevices();
6679
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("devicesListChange", listDevices);
6680
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("localVideoChange", onLocalVideoChange);
6681
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("localVideoAvailable", onLocalVideoChange);
6682
+ return ()=>{
6683
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("devicesListChange", listDevices);
6684
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("localVideoChange", onLocalVideoChange);
6685
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("localVideoAvailable", onLocalVideoChange);
6686
+ };
6687
+ }, []);
5731
6688
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $jQDcL$reactjsxruntime.Fragment), {
5732
6689
  children: [
5733
6690
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$ba6f0acf5af923bd), {
5734
6691
  children: [
5735
6692
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$edb76fdb8665f52), {
5736
- children: "Languages"
6693
+ children: "Video"
5737
6694
  }),
5738
6695
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$b16d2ed9d0485f06), {
5739
6696
  onClick: back,
@@ -5743,46 +6700,78 @@ const $54c346ed2df7d69f$var$LanguageSubMenu = ({ back: back })=>{
5743
6700
  })
5744
6701
  ]
5745
6702
  }),
5746
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$b286f91cddfedb5a), {
5747
- children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$38050e761cbb2b1d), {
5748
- children: [
5749
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$5caf84ac7a22e7b5), {
5750
- children: "Language"
5751
- }),
5752
- $54c346ed2df7d69f$var$languagesList.map((lang)=>{
5753
- const checked = language === lang;
5754
- const onLanguageClick = ()=>{
5755
- setLanguage(lang);
5756
- };
5757
- return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$db1aade9877208c7), {
5758
- onClick: onLanguageClick,
6703
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$b286f91cddfedb5a), {
6704
+ children: [
6705
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$38050e761cbb2b1d), {
6706
+ children: [
6707
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$5caf84ac7a22e7b5), {
6708
+ children: "Camera"
6709
+ }),
6710
+ cameraDevices.map((camera)=>{
6711
+ const checked = camera.deviceId === currentCamera.device?.deviceId;
6712
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$db1aade9877208c7), {
6713
+ onClick: ()=>onCameraClick(camera),
6714
+ children: [
6715
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$f132d77f01dce0a3), {
6716
+ children: camera.label
6717
+ }),
6718
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
6719
+ children: checked && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $41e530447f5fd995$export$2e2bcd8739ae039), {})
6720
+ })
6721
+ ]
6722
+ }, camera.deviceId);
6723
+ }),
6724
+ cameraDevices.length < 1 && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$87d6be27a51dc3c4), {
5759
6725
  children: [
5760
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
5761
- children: (0, $660dc8b06ec61ae0$export$2e2bcd8739ae039)(lang)
6726
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$30ccd51431e4a7b0), {
6727
+ children: "Camera is blocked."
5762
6728
  }),
5763
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
5764
- children: checked && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $41e530447f5fd995$export$2e2bcd8739ae039), {})
6729
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$73afb47ae3e10bf1), {
6730
+ children: "Please accept camera sharing before accessing these options."
5765
6731
  })
5766
6732
  ]
5767
- }, lang);
5768
- })
5769
- ]
5770
- })
6733
+ })
6734
+ ]
6735
+ }),
6736
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$38050e761cbb2b1d), {
6737
+ children: [
6738
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$5caf84ac7a22e7b5), {
6739
+ children: "Send Resolution (maximum)"
6740
+ }),
6741
+ $097072919b56b62a$var$resolutions.map((resolution)=>{
6742
+ const checked = resolution.key === currentCamera.resolution;
6743
+ return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$db1aade9877208c7), {
6744
+ onClick: ()=>onSendResolutionClick(resolution),
6745
+ children: [
6746
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$f132d77f01dce0a3), {
6747
+ children: resolution.name
6748
+ }),
6749
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
6750
+ children: checked && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $41e530447f5fd995$export$2e2bcd8739ae039), {})
6751
+ })
6752
+ ]
6753
+ }, resolution.key);
6754
+ })
6755
+ ]
6756
+ })
6757
+ ]
5771
6758
  })
5772
6759
  ]
5773
6760
  });
5774
6761
  };
5775
- var $54c346ed2df7d69f$export$2e2bcd8739ae039 = $54c346ed2df7d69f$var$LanguageSubMenu;
6762
+ var $097072919b56b62a$export$2e2bcd8739ae039 = $097072919b56b62a$var$VideoSubMenu;
5776
6763
 
5777
6764
 
5778
6765
 
5779
6766
  const $7d4fa7ceb4c29739$var$Menu = ()=>{
5780
6767
  const [currentMenu, setCurrentMenu] = (0, $jQDcL$react.useState)("base");
5781
6768
  const menuPopupRef = (0, $jQDcL$react.useRef)(null);
5782
- const { isSettingsMenuVisible: isSettingsMenuVisible , setIsSettingsMenuVisible: setIsSettingsMenuVisible , language: language } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
6769
+ const { isSettingsMenuVisible: isSettingsMenuVisible , setIsSettingsMenuVisible: setIsSettingsMenuVisible , language: language , options: options } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
5783
6770
  const onCloseClick = ()=>setIsSettingsMenuVisible(false);
5784
6771
  const menuBack = ()=>setCurrentMenu("base");
5785
6772
  const onLanguageMenuClick = ()=>setCurrentMenu("languages");
6773
+ const onAudioClick = ()=>setCurrentMenu("audio");
6774
+ const onVideoClick = ()=>setCurrentMenu("video");
5786
6775
  /* const onDarkModeClick = () => {
5787
6776
  if (theme === 'dark') {
5788
6777
  setTheme('light');
@@ -5850,6 +6839,49 @@ const $7d4fa7ceb4c29739$var$Menu = ()=>{
5850
6839
  })
5851
6840
  ]
5852
6841
  }),
6842
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$38050e761cbb2b1d), {
6843
+ children: [
6844
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$5caf84ac7a22e7b5), {
6845
+ children: "Devices"
6846
+ }),
6847
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).isListDevicesSupported() && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$db1aade9877208c7), {
6848
+ onClick: onAudioClick,
6849
+ children: [
6850
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("span", {
6851
+ children: [
6852
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$bb67e2c42c95a3ae), {
6853
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $802dd6755664a000$export$2e2bcd8739ae039), {})
6854
+ }),
6855
+ "Audio"
6856
+ ]
6857
+ }),
6858
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$4f015f15aa624b3d), {
6859
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $bcd348753bc3b8f8$export$2e2bcd8739ae039), {
6860
+ direction: "right"
6861
+ })
6862
+ })
6863
+ ]
6864
+ }),
6865
+ !options.audioTiles && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$db1aade9877208c7), {
6866
+ onClick: onVideoClick,
6867
+ children: [
6868
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("span", {
6869
+ children: [
6870
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$bb67e2c42c95a3ae), {
6871
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $ab00aedf8a706bfe$export$2e2bcd8739ae039), {})
6872
+ }),
6873
+ "Video"
6874
+ ]
6875
+ }),
6876
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$4f015f15aa624b3d), {
6877
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $bcd348753bc3b8f8$export$2e2bcd8739ae039), {
6878
+ direction: "right"
6879
+ })
6880
+ })
6881
+ ]
6882
+ })
6883
+ ]
6884
+ }),
5853
6885
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $5f1594faf2dff407$export$38050e761cbb2b1d), {
5854
6886
  children: [
5855
6887
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $5f1594faf2dff407$export$5caf84ac7a22e7b5), {
@@ -5872,6 +6904,12 @@ const $7d4fa7ceb4c29739$var$Menu = ()=>{
5872
6904
  }),
5873
6905
  currentMenu === "languages" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $54c346ed2df7d69f$export$2e2bcd8739ae039), {
5874
6906
  back: menuBack
6907
+ }),
6908
+ currentMenu === "audio" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $96bb6d4b0a403c60$export$2e2bcd8739ae039), {
6909
+ back: menuBack
6910
+ }),
6911
+ currentMenu === "video" && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $097072919b56b62a$export$2e2bcd8739ae039), {
6912
+ back: menuBack
5875
6913
  })
5876
6914
  ]
5877
6915
  });
@@ -5886,7 +6924,6 @@ var $7d4fa7ceb4c29739$export$2e2bcd8739ae039 = $7d4fa7ceb4c29739$var$Menu;
5886
6924
 
5887
6925
 
5888
6926
 
5889
-
5890
6927
  const $219bb3131afe1272$export$b679a9a7caefa4b1 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
5891
6928
  position: absolute;
5892
6929
  width: 100%;
@@ -5981,7 +7018,7 @@ const $219bb3131afe1272$export$176dd61d50c7f3d7 = (0, ($parcel$interopDefault($j
5981
7018
 
5982
7019
  &:focus {
5983
7020
  outline: none;
5984
- border: 1px solid #6967fc;
7021
+ border: 1px solid ${({ theme: theme })=>theme.primaryColor};
5985
7022
  }
5986
7023
  }
5987
7024
  `;
@@ -5996,7 +7033,7 @@ const $219bb3131afe1272$export$baf775d6bf9683d5 = (0, ($parcel$interopDefault($j
5996
7033
  margin-top: 10px;
5997
7034
  `;
5998
7035
  const $219bb3131afe1272$export$3711c5e6a7ba3fdc = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
5999
- background-color: #6967fc;
7036
+ background-color: ${({ theme: theme })=>theme.primaryColor};
6000
7037
  padding: 8px 18px;
6001
7038
  border-radius: 50px;
6002
7039
  margin: 30px auto 0;
@@ -6014,10 +7051,9 @@ const $696ded7a5399bcd4$var$YoutubePopup = ()=>{
6014
7051
  const youtubePopupRef = (0, $jQDcL$react.useRef)(null);
6015
7052
  const [youtubeInputValue, setYoutubeInputValue] = (0, $jQDcL$react.useState)("");
6016
7053
  const [errorMessage, setErrorMessage] = (0, $jQDcL$react.useState)(null);
6017
- const { isYoutubePopupVisible: isYoutubePopupVisible , setIsYoutubePopupVisible: setIsYoutubePopupVisible } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
7054
+ const { isYoutubePopupVisible: isYoutubePopupVisible , setIsYoutubePopupVisible: setIsYoutubePopupVisible , selfPeerId: selfPeerId , orientation: orientation } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
6018
7055
  const { dispatch: dispatch } = (0, $3f6e908c45fcc5b3$export$b5633a7cfbe42d9f)();
6019
- const [windowWidth, windowHeight] = (0, $e79bb9d030bdcf5b$export$2e2bcd8739ae039)();
6020
- const desktop = windowWidth > windowHeight;
7056
+ const desktop = orientation === "landscape";
6021
7057
  (0, $326cea7dbbcb019a$export$71b2224f1ce5e08e)(youtubePopupRef, ()=>{
6022
7058
  if (isYoutubePopupVisible) setIsYoutubePopupVisible(false);
6023
7059
  });
@@ -6030,10 +7066,10 @@ const $696ded7a5399bcd4$var$YoutubePopup = ()=>{
6030
7066
  type: (0, $a4027a5418fcd07a$export$96a9662a3eda31f6).SET_HIGHLIGHTED_TILE,
6031
7067
  payload: {
6032
7068
  type: "youtube",
6033
- peerId: "self",
7069
+ peerId: String(selfPeerId),
7070
+ isGlobal: true,
6034
7071
  data: {
6035
- videoId: videoId,
6036
- local: true
7072
+ videoId: videoId
6037
7073
  }
6038
7074
  }
6039
7075
  });
@@ -6116,103 +7152,14 @@ var $696ded7a5399bcd4$export$2e2bcd8739ae039 = $696ded7a5399bcd4$var$YoutubePopu
6116
7152
 
6117
7153
 
6118
7154
 
6119
-
6120
- const $9ba571e4cbf1ce28$var$LinkNotificationContainer = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6121
- display: flex;
6122
- flex-direction: row;
6123
- align-items: center;
6124
- max-width: 300px;
6125
- `;
6126
- const $9ba571e4cbf1ce28$var$LinkNotificationIcon = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).img`
6127
- width: 36px;
6128
- height: 36px;
6129
- border-radius: 8px;
6130
- margin-right: 10px;
6131
- background-color: #fff;
6132
- `;
6133
- const $9ba571e4cbf1ce28$var$LinkNotificationMessageContainer = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6134
- max-width: 185px;
6135
- `;
6136
- const $9ba571e4cbf1ce28$var$LinkNotificationTitle = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).p`
6137
- margin: 0;
6138
- font-weight: 700;
6139
- font-size: 14px;
6140
- text-overflow: ellipsis;
6141
- white-space: nowrap;
6142
- overflow: hidden;
6143
- `;
6144
- const $9ba571e4cbf1ce28$var$LinkNotificationText = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).p`
6145
- margin: 0;
6146
- font-weigth: 500;
6147
- font-size: 12px;
6148
- text-overflow: ellipsis;
6149
- white-space: nowrap;
6150
- overflow: hidden;
6151
- `;
6152
- const $9ba571e4cbf1ce28$var$LinkNotificationButton = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
6153
- background-color: #2d2d2d;
6154
- font: inherit;
6155
- font-weight: 700;
6156
- color: inherit;
6157
- border: none;
6158
- border-radius: 50px;
6159
- padding: 6px 12px;
6160
- margin-left: 10px;
6161
- cursor: pointer;
6162
- outline: inherit;
6163
- box-sizing: border-box;
6164
- :hover {
6165
- padding: 4px 10px;
6166
- border: 2px solid #8d8d8d;
6167
- }
6168
- `;
6169
- const $9ba571e4cbf1ce28$var$linkToast = async ({ url: url , linkData: linkData })=>{
6170
- const onIconError = ({ currentTarget: currentTarget })=>{
6171
- currentTarget.onerror = null;
6172
- currentTarget.src = `https://www.google.com/s2/favicons?domain=${linkData.domain}&sz=32`;
6173
- };
6174
- (0, ($parcel$interopDefault($jQDcL$reacthottoast)))(/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)($9ba571e4cbf1ce28$var$LinkNotificationContainer, {
6175
- children: [
6176
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($9ba571e4cbf1ce28$var$LinkNotificationIcon, {
6177
- src: linkData.iconSrc,
6178
- alt: `favicon for ${linkData.domain}`,
6179
- onError: onIconError
6180
- }),
6181
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)($9ba571e4cbf1ce28$var$LinkNotificationMessageContainer, {
6182
- children: [
6183
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($9ba571e4cbf1ce28$var$LinkNotificationTitle, {
6184
- children: linkData.title
6185
- }),
6186
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($9ba571e4cbf1ce28$var$LinkNotificationText, {
6187
- children: linkData.domain
6188
- })
6189
- ]
6190
- }),
6191
- /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)($9ba571e4cbf1ce28$var$LinkNotificationButton, {
6192
- onClick: ()=>window.open(url, "_blank"),
6193
- children: "Open"
6194
- })
6195
- ]
6196
- }), {
6197
- style: {
6198
- maxWidth: "300px"
6199
- },
6200
- duration: 10000
6201
- });
6202
- };
6203
- var $9ba571e4cbf1ce28$export$2e2bcd8739ae039 = $9ba571e4cbf1ce28$var$linkToast;
6204
-
6205
-
6206
-
6207
-
6208
7155
  const $769aee0d2f01a70c$var$PaypalWhite = ()=>/*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("svg", {
6209
- width: "14",
6210
- height: "16",
6211
- viewBox: "0 0 14 16",
7156
+ width: "24",
7157
+ height: "24",
7158
+ viewBox: "0 0 24 24",
6212
7159
  fill: "none",
6213
7160
  xmlns: "http://www.w3.org/2000/svg",
6214
7161
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
6215
- d: "M12.625 4.736a2.55 2.55 0 0 0-.382-.349 3.15 3.15 0 0 0-.772-2.493C10.75 1.079 9.517.667 7.81.667H3.667a1.262 1.262 0 0 0-1.242 1.06L.698 12.666a1.022 1.022 0 0 0 1.01 1.19h1.777l-.055.347a.978.978 0 0 0 .966 1.131h2.156a1.174 1.174 0 0 0 1.167-.98l.427-2.687.008-.037h.199c2.688 0 4.367-1.328 4.857-3.841a3.433 3.433 0 0 0-.585-3.052Zm-8.397 4.4-.476 3.023-.057.363H2.07L3.73 2H7.81c1.29 0 2.211.27 2.661.776a1.978 1.978 0 0 1 .405 1.822l-.012.075c-.008.05-.015.1-.029.164a3.898 3.898 0 0 1-1.337 2.447 4.452 4.452 0 0 1-2.811.789H5.47a1.253 1.253 0 0 0-1.243 1.063Zm7.673-1.604c-.367 1.886-1.495 2.764-3.548 2.764H8.03a1.174 1.174 0 0 0-1.168.982l-.433 2.716L4.812 14l.319-2.023.407-2.568h1.146c.105 0 .197-.016.299-.02.24-.008.478-.017.702-.045.137-.017.262-.048.393-.072.182-.034.364-.067.534-.114.127-.036.246-.081.366-.124.16-.057.317-.116.465-.186.112-.053.22-.111.325-.172a4.513 4.513 0 0 0 .685-.475c.126-.108.245-.224.358-.346.075-.08.152-.158.222-.244a4.71 4.71 0 0 0 .32-.462c.05-.082.107-.157.154-.243.135-.247.251-.504.347-.769.006-.016.014-.029.02-.045l.01-.021c.131.477.137.98.017 1.461Z",
7162
+ d: "M20.437 7.104a3.825 3.825 0 0 0-.573-.523 4.727 4.727 0 0 0-1.158-3.74C17.622 1.619 15.775 1 13.214 1H7a1.892 1.892 0 0 0-1.863 1.592l-2.59 16.406a1.533 1.533 0 0 0 1.516 1.785h2.664l-.082.52A1.467 1.467 0 0 0 8.093 23h3.235a1.762 1.762 0 0 0 1.75-1.47l.641-4.031.01-.055h.3c4.032 0 6.55-1.993 7.285-5.762a5.15 5.15 0 0 0-.877-4.578Zm-12.595 6.6-.714 4.535-.087.544H4.606L7.097 3h6.117c1.936 0 3.318.404 3.992 1.164a2.966 2.966 0 0 1 .608 2.733l-.018.113c-.012.076-.023.15-.044.246a5.847 5.847 0 0 1-2.005 3.67 6.678 6.678 0 0 1-4.217 1.183H9.706a1.88 1.88 0 0 0-1.864 1.595ZM19.351 11.3c-.55 2.828-2.242 4.145-5.322 4.145h-.484a1.762 1.762 0 0 0-1.75 1.473l-.65 4.074L8.717 21l.478-3.034.611-3.853h1.72c.156 0 .295-.023.448-.029.359-.012.716-.026 1.053-.067.205-.026.393-.073.59-.11.272-.05.545-.1.8-.17.191-.053.369-.122.55-.186a7.68 7.68 0 0 0 .698-.279c.168-.079.328-.167.486-.257a6.745 6.745 0 0 0 1.027-.713 6.56 6.56 0 0 0 .537-.519c.113-.12.23-.237.334-.367.173-.221.334-.452.48-.693.076-.122.161-.235.231-.363.203-.371.377-.757.521-1.154.009-.024.021-.044.03-.068.004-.01.01-.02.014-.032.198.717.207 1.472.026 2.193Z",
6216
7163
  fill: "#fff"
6217
7164
  })
6218
7165
  });
@@ -6234,22 +7181,22 @@ const $769aee0d2f01a70c$var$PaypalColored = ()=>/*#__PURE__*/ (0, $jQDcL$reactjs
6234
7181
  width: "14",
6235
7182
  height: "14",
6236
7183
  rx: "7",
6237
- fill: "url(#a)"
7184
+ fill: "url(#paypalPattern)"
6238
7185
  }),
6239
7186
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("defs", {
6240
7187
  children: [
6241
7188
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("pattern", {
6242
- id: "a",
7189
+ id: "paypalPattern",
6243
7190
  patternContentUnits: "objectBoundingBox",
6244
7191
  width: "1",
6245
7192
  height: "1",
6246
7193
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("use", {
6247
- xlinkHref: "#b",
7194
+ xlinkHref: "#paypalImage",
6248
7195
  transform: "matrix(.00308 0 0 .00308 .154 .154)"
6249
7196
  })
6250
7197
  }),
6251
7198
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("image", {
6252
- id: "b",
7199
+ id: "paypalImage",
6253
7200
  width: "225",
6254
7201
  height: "225",
6255
7202
  xlinkHref: "data:image/png;base64,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"
@@ -6263,6 +7210,7 @@ var $769aee0d2f01a70c$export$2e2bcd8739ae039 = $769aee0d2f01a70c$var$Paypal;
6263
7210
 
6264
7211
 
6265
7212
 
7213
+
6266
7214
  const $2d8fe9775ff247d9$export$ed0d510542cc4e55 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6267
7215
  position: absolute;
6268
7216
  width: 100%;
@@ -6357,7 +7305,7 @@ const $2d8fe9775ff247d9$export$dcb32b2b413109d8 = (0, ($parcel$interopDefault($j
6357
7305
 
6358
7306
  &:focus {
6359
7307
  outline: none;
6360
- border: 1px solid #6967fc;
7308
+ border: 1px solid ${({ theme: theme })=>theme.primaryColor};
6361
7309
  }
6362
7310
  }
6363
7311
  `;
@@ -6372,7 +7320,7 @@ const $2d8fe9775ff247d9$export$711a92c06f80c3bd = (0, ($parcel$interopDefault($j
6372
7320
  margin-top: 10px;
6373
7321
  `;
6374
7322
  const $2d8fe9775ff247d9$export$aec21c9a4da7a1b7 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
6375
- background-color: #6967fc;
7323
+ background-color: ${({ theme: theme })=>theme.primaryColor};
6376
7324
  padding: 8px 18px;
6377
7325
  border-radius: 50px;
6378
7326
  margin: 30px auto 0;
@@ -6382,12 +7330,55 @@ const $2d8fe9775ff247d9$export$aec21c9a4da7a1b7 = (0, ($parcel$interopDefault($j
6382
7330
  font-weight: 700;
6383
7331
  line-height: 18px;
6384
7332
  `;
7333
+ const $2d8fe9775ff247d9$export$9e155375d8fb1f67 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).img`
7334
+ width: 36px;
7335
+ height: 36px;
7336
+ border-radius: 8px;
7337
+ `;
7338
+ const $2d8fe9775ff247d9$export$5e3f251c730829 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
7339
+ display: flex;
7340
+ gap: 5px;
7341
+ `;
6385
7342
 
6386
7343
 
6387
7344
 
6388
7345
 
6389
7346
  const $e38290b50aaba0e3$export$a1eac7fdbc2db4af = "linkshare_sent";
6390
- const $e38290b50aaba0e3$var$sendPaypalInvoiceNotification = (senderName, url)=>(0, $84c6cbcbb594d072$export$3a57e165650c636f)(`${senderName || "User"} sent you an invoice.`, {
7347
+ const $e38290b50aaba0e3$var$sendLinkNotification = (data)=>{
7348
+ let notificationStatusText = new URL(data.url).hostname;
7349
+ if (notificationStatusText.startsWith("www.")) notificationStatusText = notificationStatusText.slice(4);
7350
+ const notificationIcon = data.ogImage ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $2d8fe9775ff247d9$export$9e155375d8fb1f67), {
7351
+ src: data.ogImage
7352
+ }) : undefined;
7353
+ (0, $84c6cbcbb594d072$export$3a57e165650c636f)(data.title, {
7354
+ width: "350px",
7355
+ icon: notificationIcon,
7356
+ status: {
7357
+ icon: data.favicon,
7358
+ text: "From",
7359
+ boldText: notificationStatusText
7360
+ },
7361
+ button: {
7362
+ text: "Open",
7363
+ action: ({ close: close })=>{
7364
+ window.open(data.url, "_blank");
7365
+ close();
7366
+ }
7367
+ },
7368
+ ellipsis: true,
7369
+ duration: 10000
7370
+ });
7371
+ (0, $65bf10a117819168$export$e9785ae652b3a722)({
7372
+ title: data.title,
7373
+ url: data.url,
7374
+ iconUrl: data.ogImage,
7375
+ statusIconUrl: data.favicon,
7376
+ statusText: notificationStatusText
7377
+ });
7378
+ };
7379
+ const $e38290b50aaba0e3$var$sendPaypalInvoiceNotification = (senderName, url)=>{
7380
+ const title = `${senderName || "User"} sent you an invoice.`;
7381
+ (0, $84c6cbcbb594d072$export$3a57e165650c636f)(title, {
6391
7382
  button: {
6392
7383
  icon: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $769aee0d2f01a70c$export$2e2bcd8739ae039), {}),
6393
7384
  text: "Pay",
@@ -6402,79 +7393,89 @@ const $e38290b50aaba0e3$var$sendPaypalInvoiceNotification = (senderName, url)=>(
6402
7393
  },
6403
7394
  duration: 10000
6404
7395
  });
7396
+ (0, $65bf10a117819168$export$e9785ae652b3a722)({
7397
+ title: title,
7398
+ url: url,
7399
+ statusIconUrl: "https://stream-assets.snapcall.io/icons/paypal.png",
7400
+ statusText: "PayPal"
7401
+ });
7402
+ };
6405
7403
  const $e38290b50aaba0e3$var$LinksharePopup = ()=>{
6406
7404
  const linksharePopupRef = (0, $jQDcL$react.useRef)(null);
7405
+ const linkshareInputRef = (0, $jQDcL$react.useRef)(null);
6407
7406
  const [linkshareInputValue, setLinkshareInputValue] = (0, $jQDcL$react.useState)("");
6408
7407
  const [errorMessage, setErrorMessage] = (0, $jQDcL$react.useState)(null);
6409
- const { isLinksharePopupVisible: isLinksharePopupVisible , setIsLinksharePopupVisible: setIsLinksharePopupVisible } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
6410
- const [windowWidth, windowHeight] = (0, $e79bb9d030bdcf5b$export$2e2bcd8739ae039)();
7408
+ const [isLoading, setIsLoading] = (0, $jQDcL$react.useState)(false);
7409
+ const { isLinksharePopupVisible: isLinksharePopupVisible , setIsLinksharePopupVisible: setIsLinksharePopupVisible , orientation: orientation } = (0, $jQDcL$react.useContext)((0, $8b39f32976a7698a$export$2e2bcd8739ae039));
6411
7410
  const { streams: streams } = (0, $3f6e908c45fcc5b3$export$b5633a7cfbe42d9f)();
6412
- const desktop = windowWidth > windowHeight;
7411
+ const desktop = orientation === "landscape";
6413
7412
  const onCustomMessage = (0, $jQDcL$react.useCallback)((event)=>{
6414
- const { event: eventData } = event.detail;
6415
- if (eventData?.type === $e38290b50aaba0e3$export$a1eac7fdbc2db4af) (0, $9ba571e4cbf1ce28$export$2e2bcd8739ae039)(eventData.data);
6416
- else if (eventData?.type === "paypal_invoice") {
6417
- const sender = streams.find((stream)=>stream.id === eventData.from);
6418
- $e38290b50aaba0e3$var$sendPaypalInvoiceNotification(sender?.displayName, eventData.data.url);
7413
+ const { type: type , data: data } = event.detail.event;
7414
+ if (type === $e38290b50aaba0e3$export$a1eac7fdbc2db4af) $e38290b50aaba0e3$var$sendLinkNotification(data);
7415
+ else if (type === "paypal_invoice") {
7416
+ const sender = streams.find((stream)=>stream.id === event.detail.peerId);
7417
+ $e38290b50aaba0e3$var$sendPaypalInvoiceNotification(sender?.displayName, data.url);
6419
7418
  }
6420
7419
  }, [
6421
7420
  streams
6422
7421
  ]);
6423
- const onShareClick = (0, $jQDcL$react.useCallback)((event)=>{
7422
+ const onShareClick = async (event)=>{
6424
7423
  event.preventDefault();
7424
+ if (!linkshareInputValue) return;
6425
7425
  setErrorMessage(null);
7426
+ setIsLoading(true);
6426
7427
  let url;
6427
7428
  try {
6428
- url = new URL(linkshareInputValue.match(/^http[s]?:\/\//) ? linkshareInputValue : `https://${linkshareInputValue}`);
7429
+ url = new URL(linkshareInputValue);
6429
7430
  if (url.protocol === "http") url.protocol = "https";
6430
7431
  } catch (err) {
6431
7432
  setErrorMessage("Invalid link");
6432
7433
  console.error(err);
6433
- return;
6434
7434
  }
6435
- if (url.href.indexOf("paypal.com/invoice") !== -1) {
6436
- (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).sendCustomMessageToAll({
6437
- type: "paypal_invoice",
6438
- from: (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).peerId,
6439
- data: {
6440
- url: url
7435
+ if (url) {
7436
+ try {
7437
+ if (url.href.indexOf("paypal.com/invoice") !== -1) (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).sendCustomMessageToAll({
7438
+ type: "paypal_invoice",
7439
+ data: {
7440
+ url: url
7441
+ }
7442
+ });
7443
+ else {
7444
+ const data = await (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getShareLinkData(url.href);
7445
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).sendCustomMessageToAll({
7446
+ type: $e38290b50aaba0e3$export$a1eac7fdbc2db4af,
7447
+ data: data
7448
+ });
6441
7449
  }
6442
- });
6443
- if (streams.length < 2) (0, ($parcel$interopDefault($jQDcL$reacthottoast)))(`Link sent to ${streams[0].displayName || "User"}`);
6444
- else (0, ($parcel$interopDefault($jQDcL$reacthottoast)))("Link sent to users");
6445
- } else (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).protoo.request("shareLink", {
6446
- url: url
6447
- }).then((linkData)=>{
6448
- if (!linkData.favicon || !linkData.title || !linkData.domain || !linkData.url) throw new Error("Link Preview Error");
6449
- if (streams.length < 2) {
6450
- (0, ($parcel$interopDefault($jQDcL$reacthottoast)))(`Link sent to ${streams[0].displayName || "User"}`);
6451
- return;
7450
+ if (streams.length < 2) (0, ($parcel$interopDefault($jQDcL$reacthottoast)))(`Link sent to ${streams[0]?.displayName || "User"}`);
7451
+ else (0, ($parcel$interopDefault($jQDcL$reacthottoast)))("Link sent to users");
7452
+ setIsLinksharePopupVisible(false);
7453
+ } catch (err) {
7454
+ console.error(err);
7455
+ (0, ($parcel$interopDefault($jQDcL$reacthottoast)))("Failed to send link", {
7456
+ className: "error"
7457
+ });
6452
7458
  }
6453
- (0, ($parcel$interopDefault($jQDcL$reacthottoast)))("Link sent to users");
6454
- }).catch((error)=>{
6455
- console.error(error);
6456
- (0, ($parcel$interopDefault($jQDcL$reacthottoast)))("Failed to send link", {
6457
- className: "error"
6458
- });
6459
- });
6460
- setIsLinksharePopupVisible(false);
6461
- }, [
6462
- streams,
6463
- linkshareInputValue,
6464
- setIsLinksharePopupVisible
6465
- ]);
7459
+ setLinkshareInputValue("");
7460
+ }
7461
+ setIsLoading(false);
7462
+ };
6466
7463
  const onCloseClick = ()=>setIsLinksharePopupVisible(false);
6467
7464
  (0, $jQDcL$react.useEffect)(()=>{
6468
- window.addEventListener("customMessage", onCustomMessage);
7465
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("customMessage", onCustomMessage);
6469
7466
  return ()=>{
6470
- window.removeEventListener("customMessage", onCustomMessage);
7467
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("customMessage", onCustomMessage);
6471
7468
  };
6472
7469
  }, [
6473
7470
  onCustomMessage
6474
7471
  ]);
7472
+ const onPopupTransitionEnd = ()=>{
7473
+ if (isLinksharePopupVisible) linkshareInputRef.current?.focus();
7474
+ };
6475
7475
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $2d8fe9775ff247d9$export$ed0d510542cc4e55), {
6476
7476
  open: isLinksharePopupVisible,
6477
7477
  desktop: desktop,
7478
+ onTransitionEnd: onPopupTransitionEnd,
6478
7479
  children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $2d8fe9775ff247d9$export$93c2cc854b34757d), {
6479
7480
  ref: linksharePopupRef,
6480
7481
  desktop: desktop,
@@ -6507,6 +7508,7 @@ const $e38290b50aaba0e3$var$LinksharePopup = ()=>{
6507
7508
  }),
6508
7509
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("input", {
6509
7510
  id: "linkshare-popup-input",
7511
+ ref: linkshareInputRef,
6510
7512
  placeholder: "https://www.example.com",
6511
7513
  value: linkshareInputValue,
6512
7514
  onChange: (changeEvent)=>setLinkshareInputValue(changeEvent.target.value),
@@ -6521,8 +7523,17 @@ const $e38290b50aaba0e3$var$LinksharePopup = ()=>{
6521
7523
  }),
6522
7524
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $2d8fe9775ff247d9$export$aec21c9a4da7a1b7), {
6523
7525
  type: "submit",
6524
- disabled: linkshareInputValue.length < 1,
6525
- children: "Share Link"
7526
+ disabled: isLoading,
7527
+ children: isLoading ? /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)((0, $2d8fe9775ff247d9$export$5e3f251c730829), {
7528
+ children: [
7529
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $39ceb925b3865754$export$2e2bcd8739ae039), {
7530
+ size: "18px"
7531
+ }),
7532
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("span", {
7533
+ children: "Link is creating..."
7534
+ })
7535
+ ]
7536
+ }) : "Share Link"
6526
7537
  })
6527
7538
  ]
6528
7539
  })
@@ -6566,6 +7577,7 @@ var $5f509eaff0d9c05a$export$2e2bcd8739ae039 = $5f509eaff0d9c05a$var$Settings;
6566
7577
 
6567
7578
 
6568
7579
 
7580
+
6569
7581
  const $bbe4b943c376008e$export$104f28dc79f055f4 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).div`
6570
7582
  display: flex;
6571
7583
  flex: 1;
@@ -6574,6 +7586,7 @@ const $bbe4b943c376008e$export$104f28dc79f055f4 = (0, ($parcel$interopDefault($j
6574
7586
  align-items: center;
6575
7587
  background-color: #000;
6576
7588
  color: #fff;
7589
+ padding-top: 70px;
6577
7590
  `;
6578
7591
  const $bbe4b943c376008e$export$51071a7ce784448 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).span`
6579
7592
  font-size: 60px;
@@ -6590,7 +7603,7 @@ const $bbe4b943c376008e$export$f4e7b895a81715e9 = (0, ($parcel$interopDefault($j
6590
7603
  margin: 0;
6591
7604
  `;
6592
7605
  const $bbe4b943c376008e$export$3a4deda42b6182b7 = (0, ($parcel$interopDefault($jQDcL$styledcomponents))).button`
6593
- background-color: #6967fc;
7606
+ background-color: ${({ theme: theme })=>theme.primaryColor};
6594
7607
  border: none;
6595
7608
  border-radius: 50px;
6596
7609
  padding: 12px 18px;
@@ -6635,7 +7648,8 @@ const $3d1bfd8f074b99b1$var$EndView = ()=>{
6635
7648
  ended && /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $bbe4b943c376008e$export$3a4deda42b6182b7), {
6636
7649
  onClick: onGoBackClick,
6637
7650
  children: "Go back to call"
6638
- })
7651
+ }),
7652
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $65bf10a117819168$export$ad5f39c592532e2d), {})
6639
7653
  ]
6640
7654
  });
6641
7655
  };
@@ -6644,6 +7658,7 @@ var $3d1bfd8f074b99b1$export$2e2bcd8739ae039 = $3d1bfd8f074b99b1$var$EndView;
6644
7658
 
6645
7659
 
6646
7660
 
7661
+
6647
7662
  const $5dcd9e6925c7037c$var$connected = new Audio("https://cdn.snapcall.io/stream/connected.mp3");
6648
7663
  const $5dcd9e6925c7037c$var$disconnected = new Audio("https://cdn.snapcall.io/stream/disconnected.mp3");
6649
7664
  const $5dcd9e6925c7037c$var$userConnected = new Audio("https://cdn.snapcall.io/stream/user-connected.mp3");
@@ -6681,13 +7696,13 @@ const $5dcd9e6925c7037c$var$Sounds = ()=>{
6681
7696
  }
6682
7697
  };
6683
7698
  (0, $jQDcL$react.useEffect)(()=>{
6684
- window.addEventListener("newPeer", onNewPeer);
6685
- window.addEventListener("peerClosed", onPeerClosed);
6686
- window.addEventListener("snapcallEvent_callEnd", onLeaveRoom);
7699
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("newPeer", onNewPeer);
7700
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("peerClosed", onPeerClosed);
7701
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("leaveRoom", onLeaveRoom);
6687
7702
  return ()=>{
6688
- window.removeEventListener("newPeer", onNewPeer);
6689
- window.removeEventListener("peerClosed", onPeerClosed);
6690
- window.removeEventListener("snapcallEvent_callEnd", onLeaveRoom);
7703
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("newPeer", onNewPeer);
7704
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("peerClosed", onPeerClosed);
7705
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("leaveRoom", onLeaveRoom);
6691
7706
  };
6692
7707
  }, []);
6693
7708
  (0, $jQDcL$react.useEffect)(()=>{
@@ -6806,6 +7821,7 @@ const $9295e87e6b93e693$export$3bfd0d5209a8006a = ()=>{
6806
7821
  }
6807
7822
  };
6808
7823
  const $9295e87e6b93e693$export$f30cb9bc4f736419 = {
7824
+ primaryColor: "#268AFA",
6809
7825
  backgroundColor: "#fff",
6810
7826
  controlBarBackground: "#fff",
6811
7827
  logoColor: "#000",
@@ -6821,6 +7837,7 @@ const $9295e87e6b93e693$export$f30cb9bc4f736419 = {
6821
7837
  settingsCloseBackgroundColor: "#eaebec"
6822
7838
  };
6823
7839
  const $9295e87e6b93e693$export$3e936a8db52a10a0 = {
7840
+ primaryColor: "#268AFA",
6824
7841
  backgroundColor: "#000",
6825
7842
  controlBarBackground: "linear-gradient(180deg, #000000 0%, #131313 100%)",
6826
7843
  logoColor: "#fff",
@@ -6933,9 +7950,9 @@ const $e41262de25602ed2$var$SvgDefinitions = ()=>/*#__PURE__*/ (0, $jQDcL$reactj
6933
7950
  }),
6934
7951
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("linearGradient", {
6935
7952
  id: "screenTop",
6936
- x1: "15.5",
7953
+ x1: "15",
6937
7954
  y1: "3.75",
6938
- x2: "15.5",
7955
+ x2: "15",
6939
7956
  y2: "21.25",
6940
7957
  gradientUnits: "userSpaceOnUse",
6941
7958
  children: [
@@ -6950,9 +7967,9 @@ const $e41262de25602ed2$var$SvgDefinitions = ()=>/*#__PURE__*/ (0, $jQDcL$reactj
6950
7967
  }),
6951
7968
  /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsxs)("linearGradient", {
6952
7969
  id: "screenBottom",
6953
- x1: "15.5",
7970
+ x1: "15",
6954
7971
  y1: "21.25",
6955
- x2: "15.5",
7972
+ x2: "15",
6956
7973
  y2: "26.25",
6957
7974
  gradientUnits: "userSpaceOnUse",
6958
7975
  children: [
@@ -6964,6 +7981,21 @@ const $e41262de25602ed2$var$SvgDefinitions = ()=>/*#__PURE__*/ (0, $jQDcL$reactj
6964
7981
  stopColor: "#969696"
6965
7982
  })
6966
7983
  ]
7984
+ }),
7985
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("clipPath", {
7986
+ id: "hangup",
7987
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
7988
+ fill: "#fff",
7989
+ transform: "translate(.5)",
7990
+ d: "M0 0h24v24H0z"
7991
+ })
7992
+ }),
7993
+ /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("clipPath", {
7994
+ id: "pip",
7995
+ children: /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)("path", {
7996
+ fill: "#fff",
7997
+ d: "M0 0h24v24H0z"
7998
+ })
6967
7999
  })
6968
8000
  ]
6969
8001
  })
@@ -7196,13 +8228,20 @@ const $c3d5253d9d597eb5$var$audioSource = new Blob([
7196
8228
  type: "audio/mpeg"
7197
8229
  });
7198
8230
  const $c3d5253d9d597eb5$var$audioURL = URL.createObjectURL($c3d5253d9d597eb5$var$audioSource);
7199
- const $c3d5253d9d597eb5$export$69078aa817990b40 = async ()=>{
8231
+ let $c3d5253d9d597eb5$var$mediaResult = undefined;
8232
+ const $c3d5253d9d597eb5$export$716eeec86fd18da7 = ()=>{
8233
+ $c3d5253d9d597eb5$var$mediaResult?.getAudioTracks().forEach((track)=>{
8234
+ track.stop();
8235
+ });
8236
+ $c3d5253d9d597eb5$var$mediaResult = undefined;
8237
+ };
8238
+ const $c3d5253d9d597eb5$export$494039379563c94d = async ()=>{
7200
8239
  try {
7201
8240
  const audioObject = new Audio($c3d5253d9d597eb5$var$audioURL);
7202
8241
  await audioObject.play();
7203
8242
  } catch (err) {
7204
8243
  console.warn("User interaction is required, asking audio GUM");
7205
- await navigator.mediaDevices.getUserMedia({
8244
+ $c3d5253d9d597eb5$var$mediaResult = await navigator.mediaDevices.getUserMedia({
7206
8245
  audio: true
7207
8246
  });
7208
8247
  }
@@ -7275,6 +8314,7 @@ const $e3bb2c5d0e5b45b5$export$914ddf2021ea8ee6 = (0, ($parcel$interopDefault($j
7275
8314
 
7276
8315
 
7277
8316
 
8317
+
7278
8318
  const $ee8cb448c2c74888$var$currentTheme = (0, $9295e87e6b93e693$export$3bfd0d5209a8006a)();
7279
8319
  const $ee8cb448c2c74888$var$currentLanguage = (0, $54c346ed2df7d69f$export$604ba5624273df44)();
7280
8320
  let $ee8cb448c2c74888$var$timestampCriticalError = -1;
@@ -7296,14 +8336,14 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options })=>{
7296
8336
  const [screensharing, setScreensharing] = (0, $jQDcL$react.useState)(false);
7297
8337
  const [isAgent, setIsAgent] = (0, $jQDcL$react.useState)(false);
7298
8338
  const [userInteractionTriggered, setUserInteractionTriggered] = (0, $jQDcL$react.useState)(false);
7299
- const [windowWidth, windowHeight] = (0, $e79bb9d030bdcf5b$export$2e2bcd8739ae039)();
7300
- const orientation = windowWidth > windowHeight ? "landscape" : "portrait";
8339
+ const [containerWidth, containerHeight] = (0, $56e1e7a85d8bf4bb$export$2b86bedf890eab8)(streamUIContainerRef.current);
8340
+ const orientation = containerWidth > containerHeight ? "landscape" : "portrait";
7301
8341
  const styledTheme = theme === "dark" ? (0, $9295e87e6b93e693$export$3e936a8db52a10a0) : (0, $9295e87e6b93e693$export$f30cb9bc4f736419);
7302
8342
  const onEnterRoom = async (event)=>{
7303
- const { peerId: peerId } = event.detail;
8343
+ const peerId = event.detail.peerId;
7304
8344
  setSelfPeerId(peerId);
7305
8345
  try {
7306
- await (0, $c3d5253d9d597eb5$export$69078aa817990b40)();
8346
+ await (0, $c3d5253d9d597eb5$export$494039379563c94d)();
7307
8347
  setUserInteractionTriggered(true);
7308
8348
  } catch (userInteractionError) {
7309
8349
  console.error("User interaction trigger failed", userInteractionError);
@@ -7330,6 +8370,7 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options })=>{
7330
8370
  setSelfDisplayName(displayName);
7331
8371
  };
7332
8372
  const onCallEnd = ()=>{
8373
+ (0, $c3d5253d9d597eb5$export$716eeec86fd18da7)();
7333
8374
  setStreamState("ended");
7334
8375
  setMuted(true);
7335
8376
  setStreaming(false);
@@ -7337,6 +8378,7 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options })=>{
7337
8378
  setUserInteractionTriggered(false);
7338
8379
  };
7339
8380
  const onCallTerminated = ()=>{
8381
+ (0, $c3d5253d9d597eb5$export$716eeec86fd18da7)();
7340
8382
  setStreamState("terminated");
7341
8383
  };
7342
8384
  const onInvalidRoom = ()=>{
@@ -7384,37 +8426,37 @@ const $ee8cb448c2c74888$var$StreamUI = ({ options: options })=>{
7384
8426
  language
7385
8427
  ]);
7386
8428
  (0, $jQDcL$react.useEffect)(()=>{
7387
- window.addEventListener("enterRoom", onEnterRoom);
7388
- window.addEventListener("localVideoAvailable", onWebcamUpdate);
7389
- window.addEventListener("localVideoUnavailable", onWebcamUpdate);
7390
- window.addEventListener("screenshareEnabled", onScreenshareUpdate);
7391
- window.addEventListener("screenshareDisabled", onScreenshareUpdate);
7392
- window.addEventListener("microphoneEnabled", onMicrophoneUpdate);
7393
- window.addEventListener("microphoneMute", onMicrophoneUpdate);
7394
- window.addEventListener("microphoneUnmute", onMicrophoneUpdate);
7395
- window.addEventListener("defaultAudioDeviceChange", onDefaultAudioDeviceChange);
7396
- window.addEventListener("selfDisplayName", onSelfDisplayNameUpdate);
7397
- window.addEventListener("terminateRoom", onCallTerminated);
7398
- window.addEventListener("snapcallEvent_callEnd", onCallEnd);
7399
- window.addEventListener("invalidRoom", onInvalidRoom);
7400
- window.addEventListener("agentIdentity", onAgentIdentity);
7401
- window.addEventListener("criticalError", onCriticalError);
8429
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("enterRoom", onEnterRoom);
8430
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("localVideoAvailable", onWebcamUpdate);
8431
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("localVideoUnavailable", onWebcamUpdate);
8432
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("screenshareEnabled", onScreenshareUpdate);
8433
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("screenshareDisabled", onScreenshareUpdate);
8434
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("microphoneEnabled", onMicrophoneUpdate);
8435
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("microphoneMute", onMicrophoneUpdate);
8436
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("microphoneUnmute", onMicrophoneUpdate);
8437
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("defaultAudioDeviceChange", onDefaultAudioDeviceChange);
8438
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("selfDisplayName", onSelfDisplayNameUpdate);
8439
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("terminateRoom", onCallTerminated);
8440
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("leaveRoom", onCallEnd);
8441
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("invalidRoom", onInvalidRoom);
8442
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("agentIdentity", onAgentIdentity);
8443
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener("criticalError", onCriticalError);
7402
8444
  return ()=>{
7403
- window.removeEventListener("enterRoom", onEnterRoom);
7404
- window.removeEventListener("localVideoAvailable", onWebcamUpdate);
7405
- window.removeEventListener("localVideoUnavailable", onWebcamUpdate);
7406
- window.removeEventListener("screenshareEnabled", onScreenshareUpdate);
7407
- window.removeEventListener("screenshareDisabled", onScreenshareUpdate);
7408
- window.removeEventListener("microphoneEnabled", onMicrophoneUpdate);
7409
- window.removeEventListener("microphoneMute", onMicrophoneUpdate);
7410
- window.removeEventListener("microphoneUnmute", onMicrophoneUpdate);
7411
- window.removeEventListener("defaultAudioDeviceChange", onDefaultAudioDeviceChange);
7412
- window.removeEventListener("selfDisplayName", onSelfDisplayNameUpdate);
7413
- window.removeEventListener("terminateRoom", onCallTerminated);
7414
- window.removeEventListener("snapcallEvent_callEnd", onCallEnd);
7415
- window.removeEventListener("invalidRoom", onInvalidRoom);
7416
- window.removeEventListener("agentIdentity", onAgentIdentity);
7417
- window.removeEventListener("criticalError", onCriticalError);
8445
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("enterRoom", onEnterRoom);
8446
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("localVideoAvailable", onWebcamUpdate);
8447
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("localVideoUnavailable", onWebcamUpdate);
8448
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("screenshareEnabled", onScreenshareUpdate);
8449
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("screenshareDisabled", onScreenshareUpdate);
8450
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("microphoneEnabled", onMicrophoneUpdate);
8451
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("microphoneMute", onMicrophoneUpdate);
8452
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("microphoneUnmute", onMicrophoneUpdate);
8453
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("defaultAudioDeviceChange", onDefaultAudioDeviceChange);
8454
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("selfDisplayName", onSelfDisplayNameUpdate);
8455
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("terminateRoom", onCallTerminated);
8456
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("leaveRoom", onCallEnd);
8457
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("invalidRoom", onInvalidRoom);
8458
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("agentIdentity", onAgentIdentity);
8459
+ (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).removeEventListener("criticalError", onCriticalError);
7418
8460
  };
7419
8461
  }, []);
7420
8462
  return /*#__PURE__*/ (0, $jQDcL$reactjsxruntime.jsx)((0, $8b39f32976a7698a$export$2e2bcd8739ae039).Provider, {
@@ -7514,10 +8556,13 @@ const $e68207026aca356b$export$3f94917203ab7078 = {
7514
8556
  window.dispatchEvent(event);
7515
8557
  },
7516
8558
  sendNotification: $84c6cbcbb594d072$export$3a57e165650c636f,
7517
- joinRoom: (...args)=>(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).init(...args),
7518
- leaveRoom: (...args)=>(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).endCall(...args),
7519
- terminateRoom: (...args)=>(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).terminateRoom(...args),
7520
- generateToken: (...args)=>(0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).generateToken(...args)
8559
+ joinRoom: (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).init.bind((0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2)),
8560
+ leaveRoom: (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).endCall.bind((0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2)),
8561
+ terminateRoom: (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).terminateRoom.bind((0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2)),
8562
+ generateToken: (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).generateToken.bind((0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2)),
8563
+ addEventListener: (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).addEventListener.bind((0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2)),
8564
+ dispatchEvent: (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).dispatchEvent.bind((0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2)),
8565
+ getState: (0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2).getState.bind((0, $c48c1ecc38fed4e9$export$2f377c2162fd02b2))
7521
8566
  };
7522
8567
  window.streamUI = $e68207026aca356b$export$3f94917203ab7078;
7523
8568
  // Backward compatibility