@vkontakte/calls-sdk 2.8.13-dev.7195a780.0 → 2.8.13-dev.8897f036.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/calls-sdk.esm.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * @vkontakte/calls-sdk v2.8.13-dev.7195a780.0
3
- * Wed, 09 Sep 2026 12:14:39 GMT
2
+ * @vkontakte/calls-sdk v2.8.13-dev.8897f036.0
3
+ * Thu, 17 Sep 2026 15:54:56 GMT
4
4
  * https://calls-sdk.cdn-vk.ru/doc/latest/index.html
5
5
  */
6
6
 
@@ -1029,7 +1029,7 @@ var w;
1029
1029
  function g() {
1030
1030
  if (!yt || yt.readyState === "ended") {
1031
1031
  let e = w.getAudioContext(), t = e.createMediaStreamDestination(), n = e.createGain();
1032
- n.gain.value = 1e-5, n.connect(t), n.connect(e.destination);
1032
+ n.gain.value = 1e-5, n.connect(t), w.browserName() === "Safari" && n.connect(e.destination);
1033
1033
  let r = e.createOscillator();
1034
1034
  r.type = "sine", r.frequency.value = 0, r.connect(n), r.start(), yt = t.stream.getAudioTracks()[0];
1035
1035
  }
@@ -2155,7 +2155,7 @@ var yn = vn.getInstance(), M = class e {
2155
2155
  return 1.1;
2156
2156
  }
2157
2157
  static get sdkVersion() {
2158
- return "2.8.13-dev.7195a780.0";
2158
+ return "2.8.13-dev.8897f036.0";
2159
2159
  }
2160
2160
  static get debug() {
2161
2161
  return e._params.debug;
@@ -3065,6 +3065,10 @@ var xn;
3065
3065
  P("onPeerRegistered", e, t);
3066
3066
  }
3067
3067
  e.onPeerRegistered = ot;
3068
+ function st(e, t) {
3069
+ P("onNonFatalError", e, t);
3070
+ }
3071
+ e.onNonFatalError = st;
3068
3072
  })(xn || (xn = {}));
3069
3073
  var L = xn, Sn = /* @__PURE__ */ function(e) {
3070
3074
  return e.DEBUG = "DEBUG", e.LOG = "LOG", e.WARN = "WARN", e.ERROR = "ERROR", e;
@@ -3971,7 +3975,11 @@ var Mr = class {
3971
3975
  let { rtt: t, loss: n, bitrate: r } = e || {};
3972
3976
  this._remoteNetworkStat.rtt = t || 0, this._remoteNetworkStat.loss = n || 0, this._remoteNetworkStat.bitrate = r || 0;
3973
3977
  }
3974
- }, Gr = 30 * 1e3, Kr = class e extends Nr {
3978
+ }, Gr = 30 * 1e3, Kr = class extends Error {
3979
+ constructor() {
3980
+ super("Ice restart failed"), this.name = "IceRestartTimeoutError";
3981
+ }
3982
+ }, qr = class e extends Nr {
3975
3983
  constructor(e, t, n, r, i, a = R, o = null, s = null, c = null, l = null) {
3976
3984
  super(n, r, l), h(this, "_participantId", void 0), h(this, "_isMaster", void 0), h(this, "_remoteSDP", {}), h(this, "_remoteCandidates", {}), h(this, "_lastRemoteSDP", null), h(this, "_animojiDataChannel", null), h(this, "_animojiReceiver", null), h(this, "_animojiSender", null), h(this, "_remoteAnimojiVersion", 1), h(this, "_isOpen", !1), h(this, "_remotePeerId", null), h(this, "_statInterval", null), h(this, "_settingsInterval", null), h(this, "_failedOnCreate", null), h(this, "_remoteStream", null), h(this, "_iceRestartTimeout", null), h(this, "_reconnectionTimeout", null), h(this, "_reconnectionPrevented", !1), h(this, "_remoteHold", !1), h(this, "_lastStat", null), h(this, "_fingerprint", null), h(this, "_neverConnected", !0), h(this, "_serverSettings", void 0), h(this, "_prevConsumerSettings", {}), h(this, "_networkLimitsForVideo", {
3977
3985
  bad: {
@@ -3986,7 +3994,7 @@ var Mr = class {
3986
3994
  worst: 320,
3987
3995
  bad: 640,
3988
3996
  good: 1280
3989
- }), h(this, "_lastVideoMaxDimension", this._videoMaxDimensionsForNet.good), h(this, "_lastBadConnection", 0), h(this, "_perfStatReporter", void 0), h(this, "_directStatReporter", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_codecStatsAggregator", void 0), this._participantId = e, this._isMaster = t, this._serverSettings = i, this._debug = a, this._logger = o, this._statAggregator = s, this._codecStatsAggregator = c, this._perfStatReporter = new pa(this, n, this._statAggregator, !0, this._debug), this._directStatReporter = new Wr(n, this._debug), this.subscribe(this._signaling, G.NOTIFICATION, this._onSignalingNotification.bind(this)), this.subscribe(this._mediaSource, qt.TRACK_REPLACED, this._onReplacedTrack.bind(this)), this.subscribe(this._mediaSource, qt.SOURCE_CHANGED, this._applySettings.bind(this)), this.subscribe(this._directStatReporter, X.NETWORK_STATUS, this._onNetworkStatus.bind(this));
3997
+ }), h(this, "_lastVideoMaxDimension", this._videoMaxDimensionsForNet.good), h(this, "_lastBadConnection", 0), h(this, "_perfStatReporter", void 0), h(this, "_directStatReporter", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_codecStatsAggregator", void 0), this._participantId = e, this._isMaster = t, this._serverSettings = i, this._debug = a, this._logger = o, this._statAggregator = s, this._codecStatsAggregator = c, this._perfStatReporter = new ma(this, n, this._statAggregator, !0, this._debug), this._directStatReporter = new Wr(n, this._debug), this.subscribe(this._signaling, G.NOTIFICATION, this._onSignalingNotification.bind(this)), this.subscribe(this._mediaSource, qt.TRACK_REPLACED, this._onReplacedTrack.bind(this)), this.subscribe(this._mediaSource, qt.SOURCE_CHANGED, this._applySettings.bind(this)), this.subscribe(this._directStatReporter, X.NETWORK_STATUS, this._onNetworkStatus.bind(this));
3990
3998
  try {
3991
3999
  this._pc = this._createPeerConnection();
3992
4000
  } catch (e) {
@@ -4113,10 +4121,10 @@ var Mr = class {
4113
4121
  this._isOpen && this._finishClose(e);
4114
4122
  }
4115
4123
  _finishClose(e) {
4116
- this._isOpen = !1, this._stopReconnection(), this._stopStatInterval(), this._stopSettingsInterval(), this._disposePeerConnection(), this._onNetworkStatus(1), this.unsubscribe(), e ? (this._debug.error("DirectTransport: Closed", e, { participantId: this._participantId }), this._setState(q.FAILED)) : (this._debug.debug("DirectTransport: Closed", { participantId: this._participantId }), this._setState(q.CLOSED)), this._triggerEvent(X.PEER_CONNECTION_CLOSED);
4124
+ this._isOpen = !1, this._stopReconnection(), this._stopStatInterval(), this._stopSettingsInterval(), this._disposePeerConnection(), this._onNetworkStatus(1), this.unsubscribe(), e ? (this._debug.error("DirectTransport: Closed", e, { participantId: this._participantId }), this._setState(q.FAILED, e)) : (this._debug.debug("DirectTransport: Closed", { participantId: this._participantId }), this._setState(q.CLOSED)), this._triggerEvent(X.PEER_CONNECTION_CLOSED);
4117
4125
  }
4118
- _setState(e) {
4119
- this._state !== e && (this._debug.debug(`DirectTransport: State changed to ${e}`, { participantId: this._participantId }), this._state = e, this._triggerEvent(X.STATE_CHANGED, e));
4126
+ _setState(e, t) {
4127
+ this._state !== e && (this._debug.debug(`DirectTransport: State changed to ${e}`, { participantId: this._participantId }), this._state = e, this._triggerEvent(X.STATE_CHANGED, e, t));
4120
4128
  }
4121
4129
  _onSignalingNotification(e) {
4122
4130
  switch (e.notification) {
@@ -4264,7 +4272,7 @@ var Mr = class {
4264
4272
  }
4265
4273
  _startIceRestart() {
4266
4274
  this._isMaster ? (this._logger?.log(C.ICE_RESTART), this._debug.log("Ice restart", { participantId: this._participantId }), this._createOffer(!0).catch(this.close.bind(this))) : this._debug.debug("Waiting for ice restart...", { participantId: this._participantId }), this._iceRestartTimeout = window.setTimeout(() => {
4267
- this._iceRestartTimeout = null, this._debug.error("Ice restart failed", { participantId: this._participantId }), this._logger?.log(C.ERROR, "iceRestart-direct"), this._requestTopologySwitch();
4275
+ this._iceRestartTimeout = null, this._debug.error("Ice restart failed", { participantId: this._participantId }), this._logger?.log(C.ERROR, "iceRestart-direct"), this.close(new Kr());
4268
4276
  }, M.iceRestartWaitTime);
4269
4277
  }
4270
4278
  async _createOffer(t) {
@@ -4450,9 +4458,9 @@ var Mr = class {
4450
4458
  }, n(r)) : this._debug.error(`[${t}] data channel open failed, state [${e}]`);
4451
4459
  };
4452
4460
  }
4453
- }, qr = /* @__PURE__ */ function(e) {
4461
+ }, Jr = /* @__PURE__ */ function(e) {
4454
4462
  return e.AUDIO_MIX = "audio-mix", e.PARTICIPANT_AGNOSTIC_TRACK_PREFIX = "pat", e.TRANSPARENT_AUDIO_TRACK_PREFIX = "ta", e;
4455
- }({}), Jr = 16, Yr = class e {
4463
+ }({}), Yr = 16, Xr = class e {
4456
4464
  constructor(e, t, n, r = R) {
4457
4465
  h(this, "_datachannel", void 0), h(this, "_participantIdRegistry", void 0), h(this, "_asrCallback", void 0), h(this, "_textDecoder", void 0), h(this, "_debug", void 0), this._debug = r, this._debug.debug("AsrReceiver started"), this._datachannel = e, this._participantIdRegistry = t, this._asrCallback = n, this._textDecoder = new TextDecoder(), this._datachannel.onmessage = (e) => this._onDataChannelMessage(e.data);
4458
4466
  }
@@ -4466,7 +4474,7 @@ var Mr = class {
4466
4474
  ssrc: a,
4467
4475
  timestamp: o,
4468
4476
  duration: s,
4469
- data: e.slice(Jr)
4477
+ data: e.slice(Yr)
4470
4478
  };
4471
4479
  }
4472
4480
  _onDataChannelMessage(t) {
@@ -4486,7 +4494,7 @@ var Mr = class {
4486
4494
  destroy() {
4487
4495
  this._datachannel.onmessage = null;
4488
4496
  }
4489
- }, Xr, Zr = class {
4497
+ }, Zr, Qr = class {
4490
4498
  constructor() {
4491
4499
  h(this, "_value", 1);
4492
4500
  }
@@ -4497,10 +4505,10 @@ var Mr = class {
4497
4505
  this._value = e;
4498
4506
  }
4499
4507
  };
4500
- Xr = Zr, h(Zr, "_instance", null), h(Zr, "getInstance", () => (Xr._instance || (Xr._instance = new Xr()), Xr._instance));
4508
+ Zr = Qr, h(Qr, "_instance", null), h(Qr, "getInstance", () => (Zr._instance || (Zr._instance = new Zr()), Zr._instance));
4501
4509
  //#endregion
4502
4510
  //#region src/classes/ParticipantIdRegistry.ts
4503
- var Qr = class {
4511
+ var $r = class {
4504
4512
  constructor(e = R) {
4505
4513
  h(this, "streamDescriptionByCompactId", /* @__PURE__ */ new Map()), h(this, "compactIdByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_debug", void 0), this._debug = e;
4506
4514
  }
@@ -4616,7 +4624,7 @@ var Qr = class {
4616
4624
  this._debug.error("unexpected null sequenceNumber", e, r);
4617
4625
  continue;
4618
4626
  }
4619
- let l = qr.PARTICIPANT_AGNOSTIC_TRACK_PREFIX + "-" + e, u = i ? i >>> 0 : null;
4627
+ let l = Jr.PARTICIPANT_AGNOSTIC_TRACK_PREFIX + "-" + e, u = i ? i >>> 0 : null;
4620
4628
  n.push({
4621
4629
  participantStreamDescription: c,
4622
4630
  streamId: l,
@@ -4634,7 +4642,7 @@ var Qr = class {
4634
4642
  }
4635
4643
  }, Y = /* @__PURE__ */ function(e) {
4636
4644
  return e.INIT = "init", e.READY = "ready", e.FRAME = "frame", e.SET_BITRATE = "set_bitrate", e.ERROR = "error", e.DEBUG = "debug", e.LOG_ERROR = "log_error", e;
4637
- }({}), $r = class {
4645
+ }({}), ei = class {
4638
4646
  constructor(e = R, t = null) {
4639
4647
  h(this, "_worker", null), h(this, "_debug", void 0), h(this, "_logger", void 0), this._debug = e, this._logger = t;
4640
4648
  }
@@ -4699,7 +4707,7 @@ var Qr = class {
4699
4707
  static isBrowserSupported() {
4700
4708
  throw Error("Not implemented");
4701
4709
  }
4702
- }, ei = class extends $r {
4710
+ }, ti = class extends ei {
4703
4711
  constructor(e = R, t = null) {
4704
4712
  super(e, t);
4705
4713
  }
@@ -4723,7 +4731,7 @@ var Qr = class {
4723
4731
  static isBrowserSupported() {
4724
4732
  return "WebAssembly" in window && "Worker" in window;
4725
4733
  }
4726
- }, ti = class extends $r {
4734
+ }, ni = class extends ei {
4727
4735
  constructor(e = R, t = null) {
4728
4736
  super(e, t);
4729
4737
  }
@@ -4746,7 +4754,7 @@ var Qr = class {
4746
4754
  static isBrowserSupported() {
4747
4755
  return "VideoDecoder" in window && "Worker" in window && "VideoFrame" in window && !T.isBrokenVP9Decoder() && T.browserName() !== "Firefox";
4748
4756
  }
4749
- }, ni = class {
4757
+ }, ri = class {
4750
4758
  constructor(e = null, t = 0) {
4751
4759
  h(this, "_counter", 0), h(this, "_interval", 0), h(this, "_lastCalculationTime", Date.now()), h(this, "_onCalculated", null), this._onCalculated = e, t && (this._interval = window.setInterval(() => this.calculate(), t));
4752
4760
  }
@@ -4760,7 +4768,7 @@ var Qr = class {
4760
4768
  destroy() {
4761
4769
  window.clearInterval(this._interval), this._interval = 0;
4762
4770
  }
4763
- }, ri = class {
4771
+ }, ii = class {
4764
4772
  constructor(e, t) {
4765
4773
  h(this, "_participantId", void 0), h(this, "_statAggregator", void 0), h(this, "_firstFrameReceived", !1), this._participantId = e, this._statAggregator = t;
4766
4774
  }
@@ -4775,14 +4783,14 @@ var Qr = class {
4775
4783
  height: t
4776
4784
  });
4777
4785
  }
4778
- }, ii = 65536, ai = "MARK_SCREENSHARE_FREEZE_DURATION", oi = class e {
4786
+ }, ai = 65536, oi = "MARK_SCREENSHARE_FREEZE_DURATION", si = class e {
4779
4787
  constructor(e, t, n, r, i, a = R) {
4780
- h(this, "_participantId", void 0), h(this, "_onStream", void 0), h(this, "_onStat", void 0), h(this, "_onKeyFrameRequested", void 0), h(this, "_statScreenShareFirstFrame", void 0), h(this, "_debug", void 0), h(this, "_chunks", []), this._participantId = e, this._onStream = t, this._onStat = n, this._onKeyFrameRequested = i, this._statScreenShareFirstFrame = new ri(e, r), this._debug = a;
4788
+ h(this, "_participantId", void 0), h(this, "_onStream", void 0), h(this, "_onStat", void 0), h(this, "_onKeyFrameRequested", void 0), h(this, "_statScreenShareFirstFrame", void 0), h(this, "_debug", void 0), h(this, "_chunks", []), this._participantId = e, this._onStream = t, this._onStat = n, this._onKeyFrameRequested = i, this._statScreenShareFirstFrame = new ii(e, r), this._debug = a;
4781
4789
  }
4782
4790
  appendChunk(t) {
4783
4791
  let n = this._chunks.length;
4784
4792
  if (t.start) this._measureFreezeDuration(!1), this._measureFreezeDuration(!0), n && (this._debug.warn("[FrameBuilder] Cleanup buffer", Array.prototype.slice.call(this._chunks)), this._chunks = []);
4785
- else if (!n || (this._chunks[n - 1].sequence + 1) % ii !== t.sequence) {
4793
+ else if (!n || (this._chunks[n - 1].sequence + 1) % ai !== t.sequence) {
4786
4794
  this._debug.warn("[FrameBuilder] Got incorrect chunk");
4787
4795
  return;
4788
4796
  }
@@ -4799,7 +4807,7 @@ var Qr = class {
4799
4807
  }
4800
4808
  }
4801
4809
  destroy() {
4802
- W.clearMark(ai), W.clearMark(W.getMarkNameScreenshareFirstFrame(this._participantId)), this._chunks = [];
4810
+ W.clearMark(oi), W.clearMark(W.getMarkNameScreenshareFirstFrame(this._participantId)), this._chunks = [];
4803
4811
  }
4804
4812
  _processFrameData() {
4805
4813
  let e = this._chunks;
@@ -4822,13 +4830,13 @@ var Qr = class {
4822
4830
  }
4823
4831
  _measureFreezeDuration(e) {
4824
4832
  if (e) {
4825
- W.setMark(ai);
4833
+ W.setMark(oi);
4826
4834
  return;
4827
4835
  }
4828
- let t = W.measureMark(ai);
4836
+ let t = W.measureMark(oi);
4829
4837
  t !== null && t > 1e3 && this._onStat({ freeze_duration: t });
4830
4838
  }
4831
- }, si = class {
4839
+ }, ci = class {
4832
4840
  constructor(e) {
4833
4841
  h(this, "_onStream", void 0), this._onStream = e;
4834
4842
  }
@@ -4841,7 +4849,7 @@ var Qr = class {
4841
4849
  static isBrowserSupported() {
4842
4850
  throw Error("Method `isBrowserSupported` is not implemented");
4843
4851
  }
4844
- }, ci = class extends si {
4852
+ }, li = class extends ci {
4845
4853
  constructor(e, t = R) {
4846
4854
  super(e), h(this, "_useImageBitmap", void 0), h(this, "_canvas", null), h(this, "_canvasContext", null), h(this, "_stream", null), h(this, "_track", null), h(this, "_debug", void 0), this._debug = t, this._debug.debug("CanvasRenderer started"), this._useImageBitmap = "ImageBitmap" in window;
4847
4855
  }
@@ -4901,7 +4909,7 @@ var Qr = class {
4901
4909
  static isBrowserSupported() {
4902
4910
  return ("CanvasCaptureMediaStream" in window || "CanvasCaptureMediaStreamTrack" in window) && !(T.browserName() === "Safari" && Number(T.browserVersion()) === 15);
4903
4911
  }
4904
- }, li = class extends si {
4912
+ }, ui = class extends ci {
4905
4913
  constructor(e, t = R) {
4906
4914
  super(e), h(this, "_generator", void 0), h(this, "_writer", void 0), h(this, "_stream", void 0), h(this, "_debug", void 0), this._debug = t, this._debug.debug("TrackGeneratorRenderer started"), this._generator = new MediaStreamTrackGenerator({ kind: k.video }), this._writer = this._generator.writable.getWriter(), this._stream = new MediaStream([this._generator]), this._onStream(this._stream);
4907
4915
  }
@@ -4912,34 +4920,38 @@ var Qr = class {
4912
4920
  this._writer.releaseLock(), this._generator.writable.close().then(() => this._generator.stop()), this._debug.debug("TrackGeneratorRenderer destroyed");
4913
4921
  }
4914
4922
  static isBrowserSupported() {
4915
- return "VideoFrame" in window && "MediaStreamTrackGenerator" in window && ti.isBrowserSupported();
4923
+ return "VideoFrame" in window && "MediaStreamTrackGenerator" in window && ni.isBrowserSupported();
4916
4924
  }
4917
- }, ui = class extends oi {
4925
+ }, di = class extends si {
4918
4926
  constructor(e, t, n, r, i, a = R, o = null) {
4919
- super(e, t, n, r, i, a), h(this, "_renderer", void 0), h(this, "_decoder", void 0), h(this, "_decoderReady", !1), h(this, "_decoderBusy", !1), h(this, "_decoderQueue", []), h(this, "_fpsMeter", void 0), h(this, "_logger", void 0), this._logger = o, this._debug.debug(`StreamBuilder started for participant [${e}]`), this._initFpsMeter(), this._initRenderer(), this._initDecoder();
4927
+ super(e, t, n, r, i, a), h(this, "_renderer", void 0), h(this, "_decoder", void 0), h(this, "_decoderReady", !1), h(this, "_decoderBusy", !1), h(this, "_decoderQueue", []), h(this, "_webCodecsRetryAttempted", !1), h(this, "_fpsMeter", void 0), h(this, "_logger", void 0), this._logger = o, this._debug.debug(`StreamBuilder started for participant [${e}]`), this._initFpsMeter(), this._initRenderer(), this._initDecoder();
4920
4928
  }
4921
4929
  _processFrame(e) {
4922
4930
  e.keyframe && (this._decoderQueue = []), this._decoderQueue.push(e), this._decodeQueue();
4923
4931
  }
4924
4932
  _initFpsMeter() {
4925
- this._fpsMeter = new ni((e) => this._debug.log(`[StreamBuilder][${this._participantId}] fps: ${e}`), 2e4);
4933
+ this._fpsMeter = new ri((e) => this._debug.log(`[StreamBuilder][${this._participantId}] fps: ${e}`), 2e4);
4926
4934
  }
4927
4935
  _initRenderer(e = !1) {
4928
- e || !li.isBrowserSupported() ? this._renderer = new ci(this._onStream, this._debug) : this._renderer = new li(this._onStream, this._debug);
4936
+ e || !ui.isBrowserSupported() ? this._renderer = new li(this._onStream, this._debug) : this._renderer = new ui(this._onStream, this._debug);
4929
4937
  }
4930
4938
  _initDecoder(e = !1) {
4931
- e || !ti.isBrowserSupported() ? this._decoder = new ei(this._debug, this._logger) : this._decoder = new ti(this._debug, this._logger), this._decoder.init(async (e) => {
4939
+ e || !ni.isBrowserSupported() ? this._decoder = new ti(this._debug, this._logger) : this._decoder = new ni(this._debug, this._logger), this._decoder.init(async (e) => {
4932
4940
  this._decoderBusy = !1, "VideoFrame" in window && e instanceof VideoFrame ? await this._renderer.drawFrame(e) : await this._renderer.drawImage(e), this._fpsMeter.increment(), this._decodeQueue();
4933
4941
  }, (e) => {
4934
- this._decoderBusy = !1, this._decodeQueue(), this._decoder instanceof ti && typeof e == "string" && e.includes("EncodingError") && this._switchToLibVPXDecoder();
4942
+ if (this._decoderBusy = !1, this._decoder instanceof ni && typeof e == "string" && e.includes("EncodingError")) {
4943
+ this._decoderQueue = [], !this._webCodecsRetryAttempted && e.includes("reset because error during decoding") ? (this._webCodecsRetryAttempted = !0, this._debug.warn("StreamBuilder retry WebCodecs with software decoder"), this._onKeyFrameRequested?.()) : this._switchToLibVPXDecoder();
4944
+ return;
4945
+ }
4946
+ this._decodeQueue();
4935
4947
  }, this._onKeyFrameRequested).then(() => {
4936
4948
  this._decoderReady = !0, this._decodeQueue();
4937
4949
  }).catch((e) => {
4938
- this._debug.warn("StreamBuilder decoder init failed", e), this._decoder instanceof ti && this._switchToLibVPXDecoder();
4950
+ this._debug.warn("StreamBuilder decoder init failed", e), this._decoder instanceof ni && this._switchToLibVPXDecoder();
4939
4951
  });
4940
4952
  }
4941
4953
  _switchToLibVPXDecoder() {
4942
- this._debug.warn("StreamBuilder switch to LibVPX decoder"), this._fpsMeter && this._fpsMeter.destroy(), this._decoder && (this._decoderReady = !1, this._decoderBusy = !1, this._decoder.destroy()), this._renderer && this._renderer.destroy(), this._initFpsMeter(), this._initRenderer(!0), this._initDecoder(!0);
4954
+ this._debug.warn("StreamBuilder switch to LibVPX decoder"), this._decoderQueue = [], this._fpsMeter && this._fpsMeter.destroy(), this._decoder && (this._decoderReady = !1, this._decoderBusy = !1, this._decoder.destroy()), this._renderer && this._renderer.destroy(), this._initFpsMeter(), this._initRenderer(!0), this._initDecoder(!0), this._onKeyFrameRequested?.();
4943
4955
  }
4944
4956
  _decodeQueue() {
4945
4957
  if (!this._decoderReady || this._decoderBusy) return;
@@ -4950,20 +4962,20 @@ var Qr = class {
4950
4962
  super.destroy(), this._fpsMeter.destroy(), this._decoder.destroy(), this._renderer.destroy(), this._debug.debug(`StreamBuilder destroyed for participant ${this._participantId}`);
4951
4963
  }
4952
4964
  static isBrowserSupported() {
4953
- return ci.isBrowserSupported() || li.isBrowserSupported();
4965
+ return li.isBrowserSupported() || ui.isBrowserSupported();
4954
4966
  }
4955
- }, di = 1, fi = 1, pi = 2, mi = 0, hi = 1, gi = 2, _i = 4, vi = 8;
4956
- function yi(e, t, n, r, i, a, o) {
4967
+ }, fi = 1, pi = 1, mi = 2, hi = 0, gi = 1, _i = 2, vi = 4, yi = 8;
4968
+ function bi(e, t, n, r, i, a, o) {
4957
4969
  let s = 0;
4958
- t && (s |= hi), n && (s |= gi), r && (s |= _i), o || (s |= vi);
4970
+ t && (s |= gi), n && (s |= _i), r && (s |= vi), o || (s |= yi);
4959
4971
  let c = /* @__PURE__ */ new ArrayBuffer(11), l = new DataView(c);
4960
- if (l.setUint8(0, di), l.setUint16(1, i), l.setUint32(3, e), l.setUint8(7, +!!a), l.setUint16(8, mi), l.setUint8(10, s), !o) return c;
4972
+ if (l.setUint8(0, fi), l.setUint16(1, i), l.setUint32(3, e), l.setUint8(7, +!!a), l.setUint16(8, hi), l.setUint8(10, s), !o) return c;
4961
4973
  let u = new Uint8Array(c.byteLength + o.byteLength);
4962
4974
  return u.set(new Uint8Array(c), 0), u.set(new Uint8Array(o), c.byteLength), u.buffer;
4963
4975
  }
4964
- function bi(e) {
4965
- let t = new DataView(e), n = t.getUint8(0), r = t.getUint16(1), i = t.getUint32(3), a = t.getUint8(7) === 1, o = t.getUint16(8), s = t.getUint8(10), c = !!(s & hi), l = !!(s & gi), u = !!(s & _i), d = !!(s & vi);
4966
- if (n !== di) throw Error(`Unexpected protocol version. Got ${n}, expected ${di}`);
4976
+ function xi(e) {
4977
+ let t = new DataView(e), n = t.getUint8(0), r = t.getUint16(1), i = t.getUint32(3), a = t.getUint8(7) === 1, o = t.getUint16(8), s = t.getUint8(10), c = !!(s & gi), l = !!(s & _i), u = !!(s & vi), d = !!(s & yi);
4978
+ if (n !== fi) throw Error(`Unexpected protocol version. Got ${n}, expected ${fi}`);
4967
4979
  return {
4968
4980
  timestamp: i,
4969
4981
  start: c,
@@ -4976,26 +4988,26 @@ function bi(e) {
4976
4988
  data: e.slice(11)
4977
4989
  };
4978
4990
  }
4979
- function xi(e) {
4991
+ function Si(e) {
4980
4992
  if (!e || !e.byteLength || e.byteLength !== 4) return !1;
4981
4993
  let t = new DataView(e);
4982
- return !(t.getUint8(0) !== di || t.getUint8(1) !== fi || t.getUint16(2) !== mi);
4994
+ return !(t.getUint8(0) !== fi || t.getUint8(1) !== pi || t.getUint16(2) !== hi);
4983
4995
  }
4984
- function Si(e) {
4996
+ function Ci(e) {
4985
4997
  if (!e || !e.byteLength || e.byteLength !== 10) return null;
4986
4998
  let t = new DataView(e);
4987
- return t.getUint8(0) !== di || t.getUint8(1) !== pi || t.getUint16(2) !== mi ? null : {
4999
+ return t.getUint8(0) !== fi || t.getUint8(1) !== mi || t.getUint16(2) !== hi ? null : {
4988
5000
  seq: t.getUint16(4),
4989
5001
  ts2: t.getUint32(6)
4990
5002
  };
4991
5003
  }
4992
- function Ci(e) {
5004
+ function wi(e) {
4993
5005
  let t = /* @__PURE__ */ new ArrayBuffer(4), n = new DataView(t);
4994
- return n.setUint8(0, di), n.setUint8(1, fi), n.setUint16(2, e), t;
5006
+ return n.setUint8(0, fi), n.setUint8(1, pi), n.setUint16(2, e), t;
4995
5007
  }
4996
5008
  //#endregion
4997
5009
  //#region src/classes/screenshare/WebmBuilder.ts
4998
- var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5010
+ var Ti = 2 ** 15 - 1, Ei = 1, Di = 5, Oi = 5, ki = class e {
4999
5011
  constructor(e, t = R) {
5000
5012
  h(this, "_mediaSource", void 0), h(this, "_codec", void 0), h(this, "_sourceBuffer", null), h(this, "_queue", []), h(this, "_clearBufferTill", 0), h(this, "_debug", void 0), this._mediaSource = new MediaSource(), this._codec = e, this._debug = t;
5001
5013
  let n = () => {
@@ -5038,8 +5050,8 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5038
5050
  this._mediaSource?.readyState === "open" && this._sourceBuffer?.abort();
5039
5051
  let e = this._sourceBuffer?.buffered, t = e?.length;
5040
5052
  if (!t) return;
5041
- let n = e.start(0), r = Math.max(0, e.end(t - 1) - Ei);
5042
- r - n > Di && (this._clearBufferTill = r);
5053
+ let n = e.start(0), r = Math.max(0, e.end(t - 1) - Di);
5054
+ r - n > Oi && (this._clearBufferTill = r);
5043
5055
  }
5044
5056
  destroy() {
5045
5057
  this._queue = [], this._mediaSource.readyState === "open" && (this._sourceBuffer?.abort(), this._mediaSource.endOfStream()), this._sourceBuffer = null, this._clearBufferTill = 0;
@@ -5053,7 +5065,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5053
5065
  get buffered() {
5054
5066
  return this._sourceBuffer?.buffered;
5055
5067
  }
5056
- }, ki = class e extends oi {
5068
+ }, Ai = class e extends si {
5057
5069
  constructor(e, t, n, r, i = R) {
5058
5070
  super(e, t, n, r, void 0, i), h(this, "_mediaBuffer", null), h(this, "_video", null), h(this, "_stream", null), h(this, "_earliestTimestamp", 0), h(this, "_clusterStartTime", 0), h(this, "_lastFrameTimestamp", 0), this._debug.debug(`[WebmBuilder] started for participant [${e}]`);
5059
5071
  }
@@ -5077,8 +5089,8 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5077
5089
  u.element(u.ID.MuxingApp, u.string("vk-webm-builder")),
5078
5090
  u.element(u.ID.WritingApp, u.string("vk-webm-builder"))
5079
5091
  ]), i = [u.element(u.ID.PixelWidth, u.number(e)), u.element(u.ID.PixelHeight, u.number(t))], a = u.element(u.ID.Tracks, u.element(u.ID.TrackEntry, [
5080
- u.element(u.ID.TrackNumber, u.number(Ti)),
5081
- u.element(u.ID.TrackUID, u.number(Ti)),
5092
+ u.element(u.ID.TrackNumber, u.number(Ei)),
5093
+ u.element(u.ID.TrackUID, u.number(Ei)),
5082
5094
  u.element(u.ID.TrackType, u.number(1)),
5083
5095
  u.element(u.ID.FlagLacing, u.number(0)),
5084
5096
  u.element(u.ID.DefaultDuration, u.number(1e9)),
@@ -5091,7 +5103,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5091
5103
  return u.unknownSizeElement(u.ID.Cluster, [u.element(u.ID.Timecode, u.number(Math.round(e)))]);
5092
5104
  }
5093
5105
  _createVideo(e) {
5094
- this._mediaBuffer = new Oi(e, this._debug), this._video = document.createElement("video"), this._video.autoplay = !0, this._video.controls = !1, this._video.muted = !0, this._video.style.pointerEvents = "none", this._video.style.visibility = "hidden", this._video.style.position = "absolute", this._video.style.width = "160px", this._video.style.height = "90px", this._video.style.bottom = "0", this._video.style.right = "0", this._video.style.zIndex = "5000", this._video.src = URL.createObjectURL(this._mediaBuffer.mediaSource), document.body.appendChild(this._video);
5106
+ this._mediaBuffer = new ki(e, this._debug), this._video = document.createElement("video"), this._video.autoplay = !0, this._video.controls = !1, this._video.muted = !0, this._video.style.pointerEvents = "none", this._video.style.visibility = "hidden", this._video.style.position = "absolute", this._video.style.width = "160px", this._video.style.height = "90px", this._video.style.bottom = "0", this._video.style.right = "0", this._video.style.zIndex = "5000", this._video.src = URL.createObjectURL(this._mediaBuffer.mediaSource), document.body.appendChild(this._video);
5095
5107
  let t = () => {
5096
5108
  if (this._video?.src) {
5097
5109
  this._debug.warn(`[WebmBuilder] Video paused for participant [${this._participantId}], try to play again`);
@@ -5118,13 +5130,13 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5118
5130
  this._mediaBuffer?.append(a);
5119
5131
  }
5120
5132
  let i = Math.round(r - this._clusterStartTime);
5121
- if (i > wi && (this._clusterStartTime = r, i = 0), i === 0) {
5133
+ if (i > Ti && (this._clusterStartTime = r, i = 0), i === 0) {
5122
5134
  this._debug.debug(`[WebmBuilder] Cluster header for participant [${this._participantId}]`);
5123
5135
  let t = e._genClusterHeader(this._clusterStartTime);
5124
5136
  this._mediaBuffer?.append(t);
5125
5137
  }
5126
5138
  let a = u.element(u.ID.SimpleBlock, [
5127
- u.vintEncodedNumber(Ti),
5139
+ u.vintEncodedNumber(Ei),
5128
5140
  u.bytes(e._intToU16BE(i)),
5129
5141
  u.number(!!t.keyframe << 7),
5130
5142
  u.bytes(t.frameData)
@@ -5137,12 +5149,12 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5137
5149
  static isBrowserSupported() {
5138
5150
  return "captureStream" in window.HTMLVideoElement?.prototype && window.MediaSource?.isTypeSupported("video/webm; codecs=\"vp8\"") && window.MediaSource?.isTypeSupported("video/webm; codecs=\"vp9\"");
5139
5151
  }
5140
- }, Ai = class {
5152
+ }, ji = class {
5141
5153
  constructor(e, t, n, r, i, a = null, o = R, s = null) {
5142
5154
  h(this, "_datachannel", void 0), h(this, "_participantIdRegistry", null), h(this, "_streamBuilders", {}), h(this, "_onStream", () => {}), h(this, "_onEos", () => {}), h(this, "_onStat", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), this._debug = o, this._logger = s, this._statAggregator = a, this._debug.debug("ScreenCaptureReceiver started"), this._datachannel = e, this._participantIdRegistry = t, this._onStream = n, this._onEos = r, this._onStat = i, this._datachannel.onmessage = (e) => this._onDataChannelMessage(e.data);
5143
5155
  }
5144
5156
  _onDataChannelMessage(e) {
5145
- let t = bi(e), n = this._participantIdRegistry?.getStreamDescription(t.ssrc)?.participantId;
5157
+ let t = xi(e), n = this._participantIdRegistry?.getStreamDescription(t.ssrc)?.participantId;
5146
5158
  if (!n) {
5147
5159
  this._debug.warn(`Participant id for ssrc ${t.ssrc} not found in registry`);
5148
5160
  return;
@@ -5154,7 +5166,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5154
5166
  let r = this._streamBuilders[n];
5155
5167
  if (!r) {
5156
5168
  let e = (e) => this._onStream(n, e);
5157
- r = M.screenShareWebmBuilder && ki.isBrowserSupported() ? new ki(n, e, this._onStat, this._statAggregator, this._debug) : new ui(n, e, this._onStat, this._statAggregator, () => {
5169
+ r = M.screenShareWebmBuilder && Ai.isBrowserSupported() ? new Ai(n, e, this._onStat, this._statAggregator, this._debug) : new di(n, e, this._onStat, this._statAggregator, () => {
5158
5170
  this._requestKeyFrame(t.ssrc);
5159
5171
  }, this._debug, this._logger), this._streamBuilders[n] = r;
5160
5172
  }
@@ -5162,7 +5174,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5162
5174
  }
5163
5175
  _requestKeyFrame(e) {
5164
5176
  if (!(!this._datachannel || this._datachannel.readyState !== "open")) try {
5165
- let t = Ci(e);
5177
+ let t = wi(e);
5166
5178
  this._datachannel.send(t), this._debug.debug(`ScreenCaptureReceiver request for keyframe for ssrc ${e}`);
5167
5179
  } catch (e) {
5168
5180
  this._debug.warn("Failed to send keyframe request", e);
@@ -5175,7 +5187,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5175
5187
  destroy() {
5176
5188
  this._datachannel.onbufferedamountlow = null, this._datachannel.onmessage = null, this._onStream = () => {}, Object.values(this._streamBuilders).forEach((e) => e.destroy()), this._streamBuilders = {}, this._participantIdRegistry = null, this._debug.debug("ScreenCaptureReceiver destroyed");
5177
5189
  }
5178
- }, ji = class {
5190
+ }, Mi = class {
5179
5191
  constructor(e, t, n) {
5180
5192
  h(this, "_prev", void 0), h(this, "_next", void 0), h(this, "_data", void 0), this._next = n, n && (n.prev = this), this._prev = t, t && (t.next = this), this._data = e;
5181
5193
  }
@@ -5194,7 +5206,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5194
5206
  get data() {
5195
5207
  return this._data;
5196
5208
  }
5197
- }, Mi = class {
5209
+ }, Ni = class {
5198
5210
  constructor() {
5199
5211
  h(this, "_head", null), h(this, "_tail", null), h(this, "_length", 0);
5200
5212
  }
@@ -5202,7 +5214,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5202
5214
  return this._length;
5203
5215
  }
5204
5216
  push(...e) {
5205
- for (let t of e) this._tail = new ji(t, this._tail, null), this._head || (this._head = this._tail), this._length++;
5217
+ for (let t of e) this._tail = new Mi(t, this._tail, null), this._head || (this._head = this._tail), this._length++;
5206
5218
  }
5207
5219
  merge(e) {
5208
5220
  this._tail && (this._tail.next = e._head), this._head || (this._head = e._head), this._tail = e._tail, this._length += e._length, e.clear();
@@ -5232,7 +5244,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5232
5244
  for (; t !== null;) e.push(t.data), t = t.next;
5233
5245
  return e.length ? JSON.stringify(e, (e, t) => t instanceof Error ? String(t) : t) : "";
5234
5246
  }
5235
- }, Ni = 1e3, Pi = class extends $r {
5247
+ }, Pi = 1e3, Fi = class extends ei {
5236
5248
  constructor(e, t, n, r, i = R, a = null) {
5237
5249
  super(i, a), h(this, "_sourceTrack", void 0), h(this, "_onFrame", void 0), h(this, "_useCongestionControl", void 0), h(this, "_maxBitrate", void 0), h(this, "_useImageCapture", void 0), h(this, "_video", null), h(this, "_imageCapture", null), h(this, "_canvas", null), h(this, "_canvasCtx", null), h(this, "_frameReadTimeout", 0), h(this, "_lastFrame", null), this._sourceTrack = e, this._onFrame = t, this._useCongestionControl = n, this._maxBitrate = r, this._useImageCapture = "ImageCapture" in window && ImageCapture.prototype.grabFrame !== void 0 && "ImageBitmap" in window, (e.readyState !== "live" || !e.enabled || e.muted) && (this._useImageCapture = !1);
5238
5250
  }
@@ -5318,7 +5330,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5318
5330
  let t = this._drawFrameData(this._lastFrame);
5319
5331
  this._encode(t, e);
5320
5332
  } else this._onFrame(null);
5321
- }, Ni), this._getFrameBitmap().then((t) => {
5333
+ }, Pi), this._getFrameBitmap().then((t) => {
5322
5334
  window.clearTimeout(this._frameReadTimeout), this._lastFrame?.close(), this._lastFrame = t;
5323
5335
  let n = this._drawFrameData(t);
5324
5336
  this._encode(n, e);
@@ -5339,7 +5351,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5339
5351
  destroy() {
5340
5352
  this._removeWorker(), this._removeStream(), this._removeDom(), this._debug.debug("LibVPxEncoder destroyed");
5341
5353
  }
5342
- }, Fi = class extends $r {
5354
+ }, Ii = class extends ei {
5343
5355
  constructor(e, t, n, r, i, a, o = R, s = null) {
5344
5356
  super(o, s), h(this, "_sourceTrack", void 0), h(this, "_trackProcessor", void 0), h(this, "_onFrame", void 0), h(this, "_useCongestionControl", void 0), h(this, "_maxBitrate", void 0), h(this, "_useCbr", void 0), h(this, "_frameRate", void 0), this._sourceTrack = e, this._onFrame = t, this._useCongestionControl = n, this._maxBitrate = r, this._useCbr = i, this._frameRate = a, this._trackProcessor = new MediaStreamTrackProcessor({ track: e });
5345
5357
  }
@@ -5385,11 +5397,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5385
5397
  static isBrowserSupported() {
5386
5398
  return "VideoEncoder" in window && "Worker" in window && "EncodedVideoChunk" in window && "MediaStreamTrackProcessor" in window;
5387
5399
  }
5388
- }, Ii = 2100, Li = 600, Ri = 1.2, zi = .8, Bi = 2e3, Vi = 8e3, Hi = 8e3, Ui = 16e3, Wi = 4, Gi = 2e3, Ki = /* @__PURE__ */ function(e) {
5400
+ }, Li = 2100, Ri = 600, zi = 1.2, Bi = .8, Vi = 2e3, Hi = 8e3, Ui = 8e3, Wi = 16e3, Gi = 4, Ki = 2e3, qi = /* @__PURE__ */ function(e) {
5389
5401
  return e[e.NONE = 0] = "NONE", e[e.UP = 1] = "UP", e[e.DOWN = 2] = "DOWN", e;
5390
- }(Ki || {}), qi = class {
5402
+ }(qi || {}), Ji = class {
5391
5403
  constructor(e, t, n, r, i, a, o, s = R) {
5392
- h(this, "_onCongestion", void 0), h(this, "_ccEnabled", void 0), h(this, "_fastSharing", void 0), h(this, "_trendDelayThreshold", void 0), h(this, "_highDelayThreshold", void 0), h(this, "_targetFps", void 0), h(this, "_minBitrate", void 0), h(this, "_maxBitrate", void 0), h(this, "_targetBitrate", void 0), h(this, "_lastDown", void 0), h(this, "_lastUp", void 0), h(this, "_lastProbing", void 0), h(this, "_lastCheckDelay", void 0), h(this, "_upPenalty", 0), h(this, "_probing", void 0), h(this, "_delayAvgShort", -1), h(this, "_delayAvgLong", -1), h(this, "_minDelay", Number.MAX_VALUE), h(this, "_maxDelay", 0), h(this, "_largeDelayDuration", 0), h(this, "_lastFpsCalcMs", void 0), h(this, "_frames", 0), h(this, "_fps", 0), h(this, "_debug", void 0), this._onCongestion = e, this._ccEnabled = r, this._debug = s, this._minBitrate = t, this._maxBitrate = n, this._fastSharing = i, this._targetFps = o, a > 0 ? this._highDelayThreshold = a : this._highDelayThreshold = Ii, i && (this._highDelayThreshold = Li), this._trendDelayThreshold = Math.round(this._highDelayThreshold / 3), this._targetBitrate = this._maxBitrate, this._probing = !1;
5404
+ h(this, "_onCongestion", void 0), h(this, "_ccEnabled", void 0), h(this, "_fastSharing", void 0), h(this, "_trendDelayThreshold", void 0), h(this, "_highDelayThreshold", void 0), h(this, "_targetFps", void 0), h(this, "_minBitrate", void 0), h(this, "_maxBitrate", void 0), h(this, "_targetBitrate", void 0), h(this, "_lastDown", void 0), h(this, "_lastUp", void 0), h(this, "_lastProbing", void 0), h(this, "_lastCheckDelay", void 0), h(this, "_upPenalty", 0), h(this, "_probing", void 0), h(this, "_delayAvgShort", -1), h(this, "_delayAvgLong", -1), h(this, "_minDelay", Number.MAX_VALUE), h(this, "_maxDelay", 0), h(this, "_largeDelayDuration", 0), h(this, "_lastFpsCalcMs", void 0), h(this, "_frames", 0), h(this, "_fps", 0), h(this, "_debug", void 0), this._onCongestion = e, this._ccEnabled = r, this._debug = s, this._minBitrate = t, this._maxBitrate = n, this._fastSharing = i, this._targetFps = o, a > 0 ? this._highDelayThreshold = a : this._highDelayThreshold = Li, i && (this._highDelayThreshold = Ri), this._trendDelayThreshold = Math.round(this._highDelayThreshold / 3), this._targetBitrate = this._maxBitrate, this._probing = !1;
5393
5405
  let c = Date.now();
5394
5406
  this._lastDown = 0, this._lastUp = c, this._lastProbing = c, this._lastCheckDelay = 0, this._lastFpsCalcMs = 0;
5395
5407
  }
@@ -5399,27 +5411,27 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5399
5411
  let i = 0, a = this._delayAvgShort - this._delayAvgLong, o = Math.round(Math.abs(a) * 100 / this._delayAvgLong), s = a > 40 && o > 30 && this._delayAvgShort > this._trendDelayThreshold, c = this._delayAvgShort > this._highDelayThreshold;
5400
5412
  s || c ? i = 2 : Math.abs(a) < 40 && o < 10 && !c && (i = 1);
5401
5413
  let l = Math.round(this._targetBitrate / 1e3), u = n;
5402
- e % 20 == 0 && this._debug.debug(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${Ki[i]} tr=${l} br=${n}`);
5414
+ e % 20 == 0 && this._debug.debug(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${qi[i]} tr=${l} br=${n}`);
5403
5415
  let d = r - this._lastDown;
5404
- if (i === 2 && d > Bi) {
5405
- this._probing && (this._upPenalty = Math.min(++this._upPenalty, Wi), this._probing = !1);
5406
- let n = zi * u * 1e3;
5407
- if (n >= this._targetBitrate && (n = this._targetBitrate * zi), n = Math.max(n, this._minBitrate), n < this._targetBitrate) {
5408
- let r = Math.round(n / 1e3), s = Math.round(this._upPenalty * Hi / 1e3);
5409
- this._debug.log(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${Ki[i]}`), this._debug.log(`#${e}: cc: DOWN delay=${t} bitrate=${u} target=${l} -> newBitrate=${r} penalty=${s}s`), this._setBitrate(n, !0), this._targetBitrate = n;
5416
+ if (i === 2 && d > Vi) {
5417
+ this._probing && (this._upPenalty = Math.min(++this._upPenalty, Gi), this._probing = !1);
5418
+ let n = Bi * u * 1e3;
5419
+ if (n >= this._targetBitrate && (n = this._targetBitrate * Bi), n = Math.max(n, this._minBitrate), n < this._targetBitrate) {
5420
+ let r = Math.round(n / 1e3), s = Math.round(this._upPenalty * Ui / 1e3);
5421
+ this._debug.log(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${qi[i]}`), this._debug.log(`#${e}: cc: DOWN delay=${t} bitrate=${u} target=${l} -> newBitrate=${r} penalty=${s}s`), this._setBitrate(n, !0), this._targetBitrate = n;
5410
5422
  }
5411
5423
  this._lastDown = r;
5412
5424
  }
5413
- let f = r - this._lastUp, p = Vi + this._upPenalty * Hi;
5425
+ let f = r - this._lastUp, p = Hi + this._upPenalty * Ui;
5414
5426
  if (i === 1 && f > p && d > p) {
5415
- let n = Math.min(this._targetBitrate * Ri, this._maxBitrate);
5427
+ let n = Math.min(this._targetBitrate * zi, this._maxBitrate);
5416
5428
  if (n > this._targetBitrate) {
5417
- let s = Math.round(n / 1e3), c = Math.round(this._targetBitrate / 1e3), l = Math.round(this._upPenalty * Hi / 1e3);
5418
- this._debug.log(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${Ki[i]}`), this._debug.log(`#${e}: cc: UP bitrate=${u} target=${c} -> newBitrate=${s} penalty=${l}s`), this._setBitrate(n, !1), this._targetBitrate = n, this._probing = !0, this._lastProbing = r, this._lastUp = r;
5429
+ let s = Math.round(n / 1e3), c = Math.round(this._targetBitrate / 1e3), l = Math.round(this._upPenalty * Ui / 1e3);
5430
+ this._debug.log(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${qi[i]}`), this._debug.log(`#${e}: cc: UP bitrate=${u} target=${c} -> newBitrate=${s} penalty=${l}s`), this._setBitrate(n, !1), this._targetBitrate = n, this._probing = !0, this._lastProbing = r, this._lastUp = r;
5419
5431
  }
5420
5432
  }
5421
5433
  let m = r - this._lastProbing;
5422
- this._probing && m > Ui && (this._probing = !1);
5434
+ this._probing && m > Wi && (this._probing = !1);
5423
5435
  let ee = r - this._lastDown;
5424
5436
  this._upPenalty > 0 && ee > 3 * p && (this._debug.log(`#${e}: cc: UP reset penalty: oldPenalty=${this._upPenalty}`), this._upPenalty = 0);
5425
5437
  }
@@ -5430,7 +5442,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5430
5442
  }
5431
5443
  _calcDelay(e, t) {
5432
5444
  if (!(e <= 0)) {
5433
- if (this._delayAvgShort === -1 && (this._delayAvgShort = e, this._delayAvgLong = e), this._delayAvgShort = Math.round((this._delayAvgShort * 3 + e) / 4), this._delayAvgLong = Math.round((this._delayAvgLong * 23 + e) / 24), e > 0 && e < this._minDelay ? this._minDelay = e : e > this._maxDelay && (this._maxDelay = e), this._lastCheckDelay === 0 && (this._lastCheckDelay = t), e > Gi) {
5445
+ if (this._delayAvgShort === -1 && (this._delayAvgShort = e, this._delayAvgLong = e), this._delayAvgShort = Math.round((this._delayAvgShort * 3 + e) / 4), this._delayAvgLong = Math.round((this._delayAvgLong * 23 + e) / 24), e > 0 && e < this._minDelay ? this._minDelay = e : e > this._maxDelay && (this._maxDelay = e), this._lastCheckDelay === 0 && (this._lastCheckDelay = t), e > Ki) {
5434
5446
  let e = t - this._lastCheckDelay;
5435
5447
  this._largeDelayDuration += e;
5436
5448
  }
@@ -5459,7 +5471,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5459
5471
  this._fps === 0 ? this._fps = Math.round(r) : this._fps = Math.round((this._fps * 3 + r) / 4), this._frames = 0, this._fps !== n && this._debug.log(`cc: fps=${this._fps}`);
5460
5472
  }
5461
5473
  }
5462
- }, Ji = class {
5474
+ }, Yi = class {
5463
5475
  constructor(e) {
5464
5476
  h(this, "_maxSize", void 0), h(this, "_size", 0), h(this, "_buffer", void 0), h(this, "_head", 0), h(this, "_tail", 0), this._maxSize = e, this._buffer = Array(e);
5465
5477
  }
@@ -5533,11 +5545,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5533
5545
  clear() {
5534
5546
  this._buffer.fill(void 0), this._size = 0, this._head = 0, this._tail = 0;
5535
5547
  }
5536
- }, Yi = 65536, Xi = 50, Zi = 400, Qi = 1e6, $i = 3e5, ea = 3e4, ta = 2e3, na = 5, ra = 0, ia = class {
5548
+ }, Xi = 65536, Zi = 50, Qi = 400, $i = 1e6, ea = 3e5, ta = 3e4, na = 2e3, ra = 5, ia = 0, aa = class {
5537
5549
  constructor(e, t, n, r, i = R, a = null) {
5538
- h(this, "_encoder", void 0), h(this, "_datachannel", void 0), h(this, "_signaling", void 0), h(this, "_fastSharing", void 0), h(this, "_destroyed", !1), h(this, "_needKeyframe", !0), h(this, "DATA_SIZE", void 0), h(this, "_congestionControl", void 0), h(this, "_frameNum", 0), h(this, "_width", void 0), h(this, "_height", void 0), h(this, "_feedback", new Ji(1024)), h(this, "_lastSentFrameSeq", 0), h(this, "_lastDeliveredFrameSeq", 0), h(this, "_lastFrameDelay", 0), h(this, "_lastFramerateReduced", Date.now()), h(this, "_lastSharingStat", Date.now()), h(this, "_congestionControlEnabled", void 0), h(this, "_queue", new Mi()), h(this, "_fpsMeter", void 0), h(this, "_maxFrameDelay", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), this._debug = i, this._logger = a, this._debug.debug("ScreenCaptureSender started"), this.DATA_SIZE = M.consumerScreenDataChannelPacketSize - 11, this._datachannel = t, this._signaling = n, this._fastSharing = r, this._congestionControlEnabled = M.screenShareCongestionControl || this._fastSharing, this._width = e.getSettings().width, this._height = e.getSettings().height, this._maxFrameDelay = this._fastSharing ? M.screenShareCongestionControlThreshold : M.screenShareCongestionControlThreshold * 2;
5550
+ h(this, "_encoder", void 0), h(this, "_datachannel", void 0), h(this, "_signaling", void 0), h(this, "_fastSharing", void 0), h(this, "_destroyed", !1), h(this, "_needKeyframe", !0), h(this, "DATA_SIZE", void 0), h(this, "_congestionControl", void 0), h(this, "_frameNum", 0), h(this, "_width", void 0), h(this, "_height", void 0), h(this, "_feedback", new Yi(1024)), h(this, "_lastSentFrameSeq", 0), h(this, "_lastDeliveredFrameSeq", 0), h(this, "_lastFrameDelay", 0), h(this, "_lastFramerateReduced", Date.now()), h(this, "_lastSharingStat", Date.now()), h(this, "_congestionControlEnabled", void 0), h(this, "_queue", new Ni()), h(this, "_fpsMeter", void 0), h(this, "_maxFrameDelay", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), this._debug = i, this._logger = a, this._debug.debug("ScreenCaptureSender started"), this.DATA_SIZE = M.consumerScreenDataChannelPacketSize - 11, this._datachannel = t, this._signaling = n, this._fastSharing = r, this._congestionControlEnabled = M.screenShareCongestionControl || this._fastSharing, this._width = e.getSettings().width, this._height = e.getSettings().height, this._maxFrameDelay = this._fastSharing ? M.screenShareCongestionControlThreshold : M.screenShareCongestionControlThreshold * 2;
5539
5551
  let o = M.getScreenFrameRate(this._fastSharing), { minBitrate: s, maxBitrate: c } = this._calcMinMaxBitrate(this._width, this._height), l = this._onCongestionCallback.bind(this);
5540
- this._debug.log(`ScreenCaptureSender: CongestionControl: enabled=${this._congestionControlEnabled} minBitrate=${Math.round(s / 1e3)}k maxBitrate=${Math.round(c / 1e3)}k delayThreshold=${M.screenShareCongestionControlThreshold}`), this._congestionControl = new qi(l, s, c, this._congestionControlEnabled, this._fastSharing, M.screenShareCongestionControlThreshold, o, this._debug);
5552
+ this._debug.log(`ScreenCaptureSender: CongestionControl: enabled=${this._congestionControlEnabled} minBitrate=${Math.round(s / 1e3)}k maxBitrate=${Math.round(c / 1e3)}k delayThreshold=${M.screenShareCongestionControlThreshold}`), this._congestionControl = new Ji(l, s, c, this._congestionControlEnabled, this._fastSharing, M.screenShareCongestionControlThreshold, o, this._debug);
5541
5553
  let u = (e, t) => {
5542
5554
  if (this._destroyed) return;
5543
5555
  if (!e) {
@@ -5548,23 +5560,23 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5548
5560
  let n = this._sliceFrame(e);
5549
5561
  this._queue.merge(n), this._handleQueue(), this._sendSharingStat();
5550
5562
  };
5551
- if (Fi.isBrowserSupported()) {
5563
+ if (Ii.isBrowserSupported()) {
5552
5564
  let t = this._fastSharing;
5553
- this._encoder = new Fi(e, u, this._congestionControlEnabled, c, t, o, this._debug, this._logger);
5554
- } else this._encoder = new Pi(e, u, this._congestionControlEnabled, c, this._debug, this._logger);
5565
+ this._encoder = new Ii(e, u, this._congestionControlEnabled, c, t, o, this._debug, this._logger);
5566
+ } else this._encoder = new Fi(e, u, this._congestionControlEnabled, c, this._debug, this._logger);
5555
5567
  this._datachannel.onmessage = (e) => {
5556
- xi(e.data) && (this._debug.debug(`[${this._datachannel.label}] Requested keyframe`), this._needKeyframe = !0);
5557
- let t = Si(e.data);
5568
+ Si(e.data) && (this._debug.debug(`[${this._datachannel.label}] Requested keyframe`), this._needKeyframe = !0);
5569
+ let t = Ci(e.data);
5558
5570
  t !== null && this._checkCcFeedback(t);
5559
- }, this._encoder.init().then(() => this._handleQueue()).catch((e) => this._debug.warn("ScreenCaptureSender init failed", e)), this._fpsMeter = new ni((e) => this._debug.log(`[ScreenCaptureSender] fps: ${e}`), 5e3);
5571
+ }, this._encoder.init().then(() => this._handleQueue()).catch((e) => this._debug.warn("ScreenCaptureSender init failed", e)), this._fpsMeter = new ri((e) => this._debug.log(`[ScreenCaptureSender] fps: ${e}`), 5e3);
5560
5572
  }
5561
5573
  _handleQueue() {
5562
5574
  if (this._destroyed) return;
5563
5575
  let e = this._queue.shift();
5564
5576
  if (!e) {
5565
- if ((this._lastSentFrameSeq - this._lastDeliveredFrameSeq + Yi) % Yi > na && this._lastFrameDelay > this._maxFrameDelay) {
5577
+ if ((this._lastSentFrameSeq - this._lastDeliveredFrameSeq + Xi) % Xi > ra && this._lastFrameDelay > this._maxFrameDelay) {
5566
5578
  let e = Date.now();
5567
- e - this._lastFramerateReduced > ta && (this._lastFramerateReduced = e, this._debug.debug(`[ScreenCaptureSender] reduce framerate: delay=${this._lastFrameDelay} maxDelay=${this._maxFrameDelay}`));
5579
+ e - this._lastFramerateReduced > na && (this._lastFramerateReduced = e, this._debug.debug(`[ScreenCaptureSender] reduce framerate: delay=${this._lastFrameDelay} maxDelay=${this._maxFrameDelay}`));
5568
5580
  } else this._requestFrame();
5569
5581
  return;
5570
5582
  }
@@ -5590,7 +5602,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5590
5602
  this._destroyed || (this._encoder.requestFrame(this._needKeyframe), this._needKeyframe = !1);
5591
5603
  }
5592
5604
  _sliceFrame(e) {
5593
- let t = e.type === "key", n = e.data.byteLength, r = new Mi();
5605
+ let t = e.type === "key", n = e.data.byteLength, r = new Ni();
5594
5606
  for (let i = 0; i < n; i += this.DATA_SIZE) {
5595
5607
  let a = e.data.slice(i, i + this.DATA_SIZE), o = i === 0, s = n <= i + a.byteLength, c = this._wrapHeader(e.timestamp, o, s, t, a);
5596
5608
  r.push({
@@ -5606,11 +5618,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5606
5618
  return r;
5607
5619
  }
5608
5620
  _wrapHeader(e, t, n, r, i) {
5609
- let a = yi(e, t, n, r, ra, this._encoder.isVP9(), i), o = {
5610
- sequence: ra,
5621
+ let a = bi(e, t, n, r, ia, this._encoder.isVP9(), i), o = {
5622
+ sequence: ia,
5611
5623
  data: a
5612
5624
  };
5613
- return ra = (ra + 1) % Yi, o;
5625
+ return ia = (ia + 1) % Xi, o;
5614
5626
  }
5615
5627
  _stopPacket() {
5616
5628
  return this._wrapHeader(Date.now(), !1, !1, !1, null).data;
@@ -5627,7 +5639,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5627
5639
  this._queue.clear(), this._fpsMeter.destroy(), this._datachannel.onmessage = null, this._feedback.clear(), this._datachannel.readyState === "open" && this._datachannel.send(this._stopPacket()), this._destroyed = !0, this._encoder.destroy(), this._debug.debug("ScreenCaptureSender destroyed");
5628
5640
  }
5629
5641
  static isBrowserSupported() {
5630
- return Fi.isBrowserSupported() || Pi.isBrowserSupported();
5642
+ return Ii.isBrowserSupported() || Fi.isBrowserSupported();
5631
5643
  }
5632
5644
  _onCongestionCallback(e, t, n) {
5633
5645
  this._encoder.setBitrate(e, t, n);
@@ -5640,8 +5652,8 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5640
5652
  (e === void 0 || e < 640) && (e = 640), (t === void 0 || t < 360) && (t = 360);
5641
5653
  let n = e * t / 256;
5642
5654
  return {
5643
- minBitrate: Math.max($i, Math.min(Qi, Math.round(n * Xi))),
5644
- maxBitrate: Math.round(n * Zi)
5655
+ minBitrate: Math.max(ea, Math.min($i, Math.round(n * Zi))),
5656
+ maxBitrate: Math.round(n * Qi)
5645
5657
  };
5646
5658
  }
5647
5659
  _checkCcFeedback(e) {
@@ -5655,14 +5667,14 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5655
5667
  }
5656
5668
  _sendSharingStat() {
5657
5669
  let e = Date.now();
5658
- if (e - this._lastSharingStat > ea) {
5670
+ if (e - this._lastSharingStat > ta) {
5659
5671
  let t = this._congestionControl.getStat();
5660
5672
  t !== null && (this._debug.debug(`cc: send stats: ${JSON.stringify(t)}`), this._signaling.reportSharingStat(t).catch((e) => {
5661
5673
  !(e instanceof wn) && !(e instanceof Tn) && this._debug.warn("Unable to send sharing stats", e);
5662
5674
  })), this._lastSharingStat = e;
5663
5675
  }
5664
5676
  }
5665
- }, aa = class {
5677
+ }, oa = class {
5666
5678
  constructor(e, t, n, r = R, i = null) {
5667
5679
  h(this, "_pc", null), h(this, "_transceiver", null), h(this, "_currentSimulcastInfo", null), h(this, "_signaling", void 0), h(this, "_mediaSource", void 0), h(this, "_getCameraSettings", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), this._signaling = e, this._mediaSource = t, this._getCameraSettings = n, this._debug = r, this._logger = i;
5668
5680
  }
@@ -5794,9 +5806,9 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5794
5806
  if (!(e instanceof Tn)) throw e;
5795
5807
  }
5796
5808
  }
5797
- }, oa = 90, sa = 4294967295, ca = class e extends Nr {
5809
+ }, sa = 90, ca = 4294967295, la = class e extends Nr {
5798
5810
  constructor(e, t, n, r = R, i = null, a = null, o = null, s = null) {
5799
- super(e, t, s), h(this, "_producerNotification", null), h(this, "_producerCommand", null), h(this, "_producerScreen", null), h(this, "_consumerScreen", null), h(this, "_asr", null), h(this, "_animojiDataChannel", null), h(this, "_animojiReceiver", null), h(this, "_animojiSender", null), h(this, "_isOpen", !1), h(this, "_observer", !1), h(this, "_reconnectionPrevented", !1), h(this, "_statInterval", null), h(this, "_settingsInterval", null), h(this, "_monitorRtpShareInterval", null), h(this, "_statBytes", {}), h(this, "_ssrcMap", {}), h(this, "_ssrcMapUpdated", !1), h(this, "_perfStatReporter", void 0), h(this, "_producerOfferIsProcessing", !1), h(this, "_producerNextOffer", null), h(this, "_producerNextSessionId", null), h(this, "_lastStat", null), h(this, "_serverSettings", void 0), h(this, "_prevConsumerSettings", {}), h(this, "_prevConsumerFastSharingSettings", {}), h(this, "_asrTrack", null), h(this, "_captureSender", null), h(this, "_captureReceiver", null), h(this, "_participantIdRegistry", null), h(this, "_disabledSenders", /* @__PURE__ */ new Set()), h(this, "_rtpReceiversByStreamId", {}), h(this, "_producerSessionId", ""), h(this, "_newAudioShareTrack", null), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_codecStatsAggregator", void 0), h(this, "_simulcast", void 0), this._debug = r, this._logger = i, this._statAggregator = a, this._codecStatsAggregator = o, this._serverSettings = n, this._simulcast = new aa(e, t, () => this._serverSettings.camera, r, i), this.subscribe(this._signaling, G.NOTIFICATION, this._onSignalingNotification.bind(this)), this.subscribe(this._mediaSource, qt.TRACK_REPLACED, this._onReplacedTrack.bind(this)), this.subscribe(this._mediaSource, qt.SOURCE_CHANGED, this._onSourcesChanged.bind(this)), this.subscribe(this._mediaSource, qt.SCREEN_STATUS, this._onScreenSharingStatus.bind(this)), this._createPerfStatsReporter(), this._debug.debug("ServerTransport: Created");
5811
+ super(e, t, s), h(this, "_producerNotification", null), h(this, "_producerCommand", null), h(this, "_producerScreen", null), h(this, "_consumerScreen", null), h(this, "_asr", null), h(this, "_animojiDataChannel", null), h(this, "_animojiReceiver", null), h(this, "_animojiSender", null), h(this, "_isOpen", !1), h(this, "_observer", !1), h(this, "_reconnectionPrevented", !1), h(this, "_statInterval", null), h(this, "_settingsInterval", null), h(this, "_monitorRtpShareInterval", null), h(this, "_statBytes", {}), h(this, "_ssrcMap", {}), h(this, "_ssrcMapUpdated", !1), h(this, "_perfStatReporter", void 0), h(this, "_producerOfferIsProcessing", !1), h(this, "_producerNextOffer", null), h(this, "_producerNextSessionId", null), h(this, "_lastStat", null), h(this, "_serverSettings", void 0), h(this, "_prevConsumerSettings", {}), h(this, "_prevConsumerFastSharingSettings", {}), h(this, "_asrTrack", null), h(this, "_captureSender", null), h(this, "_captureReceiver", null), h(this, "_participantIdRegistry", null), h(this, "_disabledSenders", /* @__PURE__ */ new Set()), h(this, "_rtpReceiversByStreamId", {}), h(this, "_producerSessionId", ""), h(this, "_newAudioShareTrack", null), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_codecStatsAggregator", void 0), h(this, "_simulcast", void 0), this._debug = r, this._logger = i, this._statAggregator = a, this._codecStatsAggregator = o, this._serverSettings = n, this._simulcast = new oa(e, t, () => this._serverSettings.camera, r, i), this.subscribe(this._signaling, G.NOTIFICATION, this._onSignalingNotification.bind(this)), this.subscribe(this._mediaSource, qt.TRACK_REPLACED, this._onReplacedTrack.bind(this)), this.subscribe(this._mediaSource, qt.SOURCE_CHANGED, this._onSourcesChanged.bind(this)), this.subscribe(this._mediaSource, qt.SCREEN_STATUS, this._onScreenSharingStatus.bind(this)), this._createPerfStatsReporter(), this._debug.debug("ServerTransport: Created");
5800
5812
  }
5801
5813
  updateStatisticsInterval() {
5802
5814
  this._stopStatInterval();
@@ -5835,7 +5847,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5835
5847
  await this._simulcast.sync();
5836
5848
  }
5837
5849
  _createPerfStatsReporter() {
5838
- this._perfStatReporter?.destroy(), this._perfStatReporter = new pa(this, this._signaling, this._statAggregator, !1, this._debug);
5850
+ this._perfStatReporter?.destroy(), this._perfStatReporter = new ma(this, this._signaling, this._statAggregator, !1, this._debug);
5839
5851
  }
5840
5852
  _closeConnection() {
5841
5853
  this._signaling.resetProducerConnection(), this._ssrcMap = {}, this._ssrcMapUpdated = !0, this._disposeFirstMediaSentProbe(), this._stopStatInterval(), this._stopSettingsInterval(), this._stopMonitorRtpShareInterval(), this._removeAsrTrack(), this._removeCaptureSender(), this._removeCaptureReceiver(), this._simulcast.reset(), this._pc && (this._rtpReceiversByStreamId = {}, this._disabledSenders.forEach((e) => e.track?.stop()), this._disabledSenders.clear(), this._pc.ontrack = null, this._pc.onconnectionstatechange = null, this._pc.onsignalingstatechange = null, this._participantIdRegistry = null, e._closeDataChannel(this._producerNotification), e._closeDataChannel(this._producerCommand), e._closeDataChannel(this._producerScreen), e._closeDataChannel(this._consumerScreen), e._closeDataChannel(this._asr), e._closeDataChannel(this._animojiDataChannel), this._pc.close(), this._pc = null, this._producerOfferIsProcessing = !1, this._producerNextOffer = null), this._triggerEvent(X.PEER_CONNECTION_CLOSED);
@@ -5864,14 +5876,14 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5864
5876
  }
5865
5877
  this._pc.ontrack = this._onAddTrack.bind(this, this._pc), this._pc.onconnectionstatechange = j.debounce((e) => {
5866
5878
  this._pc && this._onConnectionStateChange(this._pc, e);
5867
- }, 500), this._pc.onsignalingstatechange = this._onSignalingStateChange.bind(this, this._pc), this._participantIdRegistry = new Qr(this._debug), this._signaling.setParticipantIdRegistry(this._participantIdRegistry), this._createDataChannel(this._pc, Sr.producerNotification, (e) => {
5879
+ }, 500), this._pc.onsignalingstatechange = this._onSignalingStateChange.bind(this, this._pc), this._participantIdRegistry = new $r(this._debug), this._signaling.setParticipantIdRegistry(this._participantIdRegistry), this._createDataChannel(this._pc, Sr.producerNotification, (e) => {
5868
5880
  this._producerNotification = e, this._producerNotification.binaryType = "arraybuffer", this._signaling.setProducerNotificationDataChannel(e);
5869
5881
  }), this._signaling.useCommandDataChannel(!0), this._createDataChannel(this._pc, Sr.producerCommand, (e) => {
5870
5882
  this._producerCommand = e, this._signaling.setProducerCommandDataChannel(e);
5871
5883
  }), this._createDataChannel(this._pc, Sr.producerScreenShare, (e) => {
5872
5884
  this._producerScreen = e, this._producerScreen.binaryType = "arraybuffer", this._createCaptureReceiver();
5873
5885
  }), M.asrDataChannel && this._createDataChannel(this._pc, Sr.asr, (e) => {
5874
- this._asr = e, this._asr.binaryType = "arraybuffer", this._removeAsrTrack(), this._asrTrack = new Yr(e, this._participantIdRegistry, (e) => {
5886
+ this._asr = e, this._asr.binaryType = "arraybuffer", this._removeAsrTrack(), this._asrTrack = new Xr(e, this._participantIdRegistry, (e) => {
5875
5887
  this._onAsrTranscription(e);
5876
5888
  }, this._debug);
5877
5889
  }), M.vmoji && this._createDataChannel(this._pc, Sr.animoji, (e) => {
@@ -5909,19 +5921,19 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5909
5921
  }
5910
5922
  _updateSSRCMap(e) {
5911
5923
  e && (this._ssrcMap = {}, this._ssrcMapUpdated = !0, ln(e.sdp).forEach((e) => {
5912
- let t = `a=ssrc:([0-9]+) label:(audio|video)-((?:[ug]?[\\d]+)|(?:mix)|(?:${qr.PARTICIPANT_AGNOSTIC_TRACK_PREFIX}-[0-9]+)|(?:${qr.TRANSPARENT_AUDIO_TRACK_PREFIX}-[0-9]+))`, n = new RegExp(t).exec(e);
5924
+ let t = `a=ssrc:([0-9]+) label:(audio|video)-((?:[ug]?[\\d]+)|(?:mix)|(?:${Jr.PARTICIPANT_AGNOSTIC_TRACK_PREFIX}-[0-9]+)|(?:${Jr.TRANSPARENT_AUDIO_TRACK_PREFIX}-[0-9]+))`, n = new RegExp(t).exec(e);
5913
5925
  n && (this._ssrcMap[n[1]] = n[3]);
5914
5926
  }));
5915
5927
  }
5916
5928
  _createCaptureSender(e) {
5917
5929
  let t = this._mediaSource.mediaSettings;
5918
- !e || !this._consumerScreen || !t.isScreenSharingEnabled || (this._captureSender && this._removeCaptureSender(), this._captureSender = new ia(e, this._consumerScreen, this._signaling, t.isFastScreenSharingEnabled, this._debug, this._logger));
5930
+ !e || !this._consumerScreen || !t.isScreenSharingEnabled || (this._captureSender && this._removeCaptureSender(), this._captureSender = new aa(e, this._consumerScreen, this._signaling, t.isFastScreenSharingEnabled, this._debug, this._logger));
5919
5931
  }
5920
5932
  _removeCaptureSender() {
5921
5933
  this._captureSender?.destroy(), this._captureSender = null;
5922
5934
  }
5923
5935
  _createCaptureReceiver() {
5924
- this._producerScreen && (this._captureReceiver && this._removeCaptureReceiver(), this._captureReceiver = new Ai(this._producerScreen, this._participantIdRegistry, (e, t) => {
5936
+ this._producerScreen && (this._captureReceiver && this._removeCaptureReceiver(), this._captureReceiver = new ji(this._producerScreen, this._participantIdRegistry, (e, t) => {
5925
5937
  this._triggerEvent(X.REMOTE_STREAM_SECOND, e, t);
5926
5938
  }, (e) => {
5927
5939
  this._triggerEvent(X.REMOTE_STREAM_SECOND, e, null);
@@ -6031,7 +6043,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6031
6043
  _detectStaleTracks(e) {
6032
6044
  let t = e.rtps.find((e) => e.type === "inbound-rtp" && e.kind === "audio" && this._ssrcMap[e.ssrc] === "mix");
6033
6045
  if (!t) return;
6034
- let n = qr.AUDIO_MIX, r = this._statBytes[n], i = !1;
6046
+ let n = Jr.AUDIO_MIX, r = this._statBytes[n], i = !1;
6035
6047
  if (r) {
6036
6048
  let e = t.bytesReceived - r.bytesReceived;
6037
6049
  e >= 0 && e <= 5 && (i = !0), r.stalled !== i && this._triggerEvent(X.AUDIO_MIX_STALL, i);
@@ -6043,7 +6055,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6043
6055
  }
6044
6056
  _allocateConsumer() {
6045
6057
  if (!this._signaling.ready) return;
6046
- let e = ya.get();
6058
+ let e = ba.get();
6047
6059
  !M.videoTracksCount && !this._observer && this._debug.warn("Setting videoTracksCount to 0 is deprecated"), this._signaling.allocateConsumer(null, e).catch((e) => {
6048
6060
  e instanceof wn || this._debug.warn("ServerTransport: Unable to allocate consumer", e);
6049
6061
  });
@@ -6219,11 +6231,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6219
6231
  if (!r || !r.length) return this._debug.log(`Cannot get stream waiting time, ${e} receiver has no synchronization sources`), 0;
6220
6232
  let i = r[0].rtpTimestamp;
6221
6233
  if (!Number.isInteger(i)) return this._logger?.log(C.PAT_WAITING_TIME_ERROR, "timestampNotInteger"), this._debug.error(`Cannot get stream waiting time, ${e} receiver's RTP timestamp is not an integer: ${i}`), 0;
6222
- let a = t - i & sa, o = Math.ceil(a / oa);
6234
+ let a = t - i & ca, o = Math.ceil(a / sa);
6223
6235
  return Math.min(100, Math.max(0, o));
6224
6236
  }
6225
6237
  async _monitorRtpShare() {
6226
- let e = Zr.getInstance().value;
6238
+ let e = Qr.getInstance().value;
6227
6239
  if (!this._mediaSource.mediaSettings.isFastScreenSharingEnabled || !M.consumerFastScreenShare || e < .6) return;
6228
6240
  let t = this._pc?.getSenders().find((e) => e.track?.kind === k.video && e.track?.contentHint === "motion");
6229
6241
  t && (await t.getStats()).forEach((e) => {
@@ -6254,7 +6266,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6254
6266
  }
6255
6267
  }, X = /* @__PURE__ */ function(e) {
6256
6268
  return e.REMOTE_TRACK_ADDED = "REMOTE_TRACK_ADDED", e.REMOTE_TRACK_REMOVED = "REMOTE_TRACK_REMOVED", e.REMOTE_STREAM_SECOND = "REMOTE_STREAM_SECOND", e.AUDIO_MIX_STALL = "AUDIO_MIX_STALL", e.REMOTE_DATA_STATS = "REMOTE_DATA_STATS", e.STATE_CHANGED = "STATE_CHANGED", e.LOCAL_STATE_CHANGED = "LOCAL_STATE_CHANGED", e.SIGNALLED_ACTIVE_PARTICIPANTS = "SIGNALLED_ACTIVE_PARTICIPANTS", e.SIGNALLED_SPEAKER_CHANGED = "SIGNALLED_SPEAKER_CHANGED", e.SIGNALLED_STALLED_PARTICIPANTS = "SIGNALLED_STALLED_PARTICIPANTS", e.TOPOLOGY_CHANGED = "TOPOLOGY_CHANGED", e.NETWORK_STATUS = "NETWORK_STATUS", e.PEER_CONNECTION_CLOSED = "PEER_CONNECTION_CLOSED", e.ASR_TRANSCRIPTION = "ASR_TRANSCRIPTION", e.ANIMOJI_STREAM = "ANIMOJI_STREAM", e.ANIMOJI_ERROR = "ANIMOJI_ERROR", e.SCREEN_SHARING_STAT = "SCREEN_SHARING_STAT", e;
6257
- }({}), la = class extends b {
6269
+ }({}), ua = class extends b {
6258
6270
  constructor(e, t, n, r, i = R, a = null, o = null, s = null, c = null) {
6259
6271
  super(), h(this, "_signaling", void 0), h(this, "_mediaSource", void 0), h(this, "_topology", void 0), h(this, "_allocated", []), h(this, "_opened", []), h(this, "_directTransport", null), h(this, "_serverTransport", null), h(this, "_serverSettings", void 0), h(this, "_dtListeners", []), h(this, "_stListeners", []), h(this, "_states", {}), h(this, "_localState", q.IDLE), h(this, "_animojiReceiver", null), h(this, "_animojiSender", null), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_codecStatsAggregator", void 0), h(this, "_onFirstMediaSent", void 0), h(this, "_firstMediaSentProbeStopped", !1), h(this, "_vadController", null), h(this, "_updateVadTrack", () => {
6260
6272
  this._vadController?.setSendTrack(this._mediaSource.getSendAudioTrack());
@@ -6342,8 +6354,8 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6342
6354
  let n = e.filter((e) => this._states[e] === t ? !1 : (this._states[e] = t, !0));
6343
6355
  n.length && this._triggerEvent("STATE_CHANGED", n, t);
6344
6356
  }
6345
- _setLocalState(e) {
6346
- this._localState !== e && (this._localState = e, this._triggerEvent("LOCAL_STATE_CHANGED", e));
6357
+ _setLocalState(e, t) {
6358
+ this._localState !== e && (this._localState = e, this._triggerEvent("LOCAL_STATE_CHANGED", e, t));
6347
6359
  }
6348
6360
  _onSignalingNotification(e) {
6349
6361
  if (e.notification === K.TOPOLOGY_CHANGED) return this._onTopologyChanged(e);
@@ -6375,11 +6387,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6375
6387
  }
6376
6388
  }
6377
6389
  _createDirectTransport(e, t = !1) {
6378
- let n = new Kr(e, t, this._signaling, this._mediaSource, this._serverSettings, this._debug, this._logger, this._statAggregator, this._codecStatsAggregator, this._getFirstMediaSentCallback());
6390
+ let n = new qr(e, t, this._signaling, this._mediaSource, this._serverSettings, this._debug, this._logger, this._statAggregator, this._codecStatsAggregator, this._getFirstMediaSentCallback());
6379
6391
  return this._dtListeners.length > 0 && this._debug.warn(`The list of direct listeners for the participant [${e}] is not empty`), this._dtListeners = [], this._dtListeners.push(n.addEventListener("REMOTE_TRACK_ADDED", this._onRemoteTrackAdded.bind(this, e)), n.addEventListener("REMOTE_TRACK_REMOVED", this._onRemoteTrackRemoved.bind(this, e)), n.addEventListener("REMOTE_DATA_STATS", this._onRemoteDataStats.bind(this)), n.addEventListener("STATE_CHANGED", this._onDirectTransportChanged.bind(this)), n.addEventListener("NETWORK_STATUS", this._onTransportNetworkStatus.bind(this)), n.addEventListener("PEER_CONNECTION_CLOSED", this._onPeerConnectionClosed.bind(this, J.DIRECT))), this._animojiReceiver && this._animojiSender && n.setAnimojiTransport(this._animojiReceiver, this._animojiSender), n;
6380
6392
  }
6381
6393
  _createServerTransport() {
6382
- let e = new ca(this._signaling, this._mediaSource, this._serverSettings, this._debug, this._logger, this._statAggregator, this._codecStatsAggregator, this._getFirstMediaSentCallback());
6394
+ let e = new la(this._signaling, this._mediaSource, this._serverSettings, this._debug, this._logger, this._statAggregator, this._codecStatsAggregator, this._getFirstMediaSentCallback());
6383
6395
  return this._stListeners.length > 0 && this._debug.warn("The list of server transport listeners is not empty"), this._stListeners = [], this._stListeners.push(e.addEventListener("REMOTE_TRACK_ADDED", this._onRemoteTrackAdded.bind(this)), e.addEventListener("REMOTE_TRACK_REMOVED", this._onRemoteTrackRemoved.bind(this)), e.addEventListener("AUDIO_MIX_STALL", this._onServerAudioMixStall.bind(this)), e.addEventListener("REMOTE_DATA_STATS", this._onRemoteDataStats.bind(this)), e.addEventListener("STATE_CHANGED", this._onServerTransportChanged.bind(this)), e.addEventListener("SIGNALLED_ACTIVE_PARTICIPANTS", this._onTransportActiveParticipants.bind(this)), e.addEventListener("SIGNALLED_SPEAKER_CHANGED", this._onTransportSpeakerChanged.bind(this)), e.addEventListener("SIGNALLED_STALLED_PARTICIPANTS", this._onTransportStalledParticipants.bind(this)), e.addEventListener("NETWORK_STATUS", this._onTransportNetworkStatus.bind(this)), e.addEventListener("REMOTE_STREAM_SECOND", this._onRemoteStreamSecond.bind(this)), e.addEventListener("PEER_CONNECTION_CLOSED", this._onPeerConnectionClosed.bind(this, J.SERVER)), e.addEventListener("ASR_TRANSCRIPTION", this._onAsrTranscription.bind(this))), this._animojiReceiver && this._animojiSender && e.setAnimojiTransport(this._animojiReceiver, this._animojiSender), e;
6384
6396
  }
6385
6397
  _releaseDirectTransport() {
@@ -6392,15 +6404,15 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6392
6404
  for (let e of this._stListeners) e.dispose();
6393
6405
  this._stListeners = [];
6394
6406
  }
6395
- _onDirectTransportChanged(e) {
6396
- let t = this._directTransport?.participantId;
6407
+ _onDirectTransportChanged(e, t) {
6408
+ let n = this._directTransport?.participantId;
6397
6409
  if (e === q.CONNECTED && this._topology === J.DIRECT && this._releaseServerTransport(), (e === q.CLOSED || e === q.FAILED) && (this._releaseDirectTransport(), this._topology === J.DIRECT)) {
6398
- let e = this._opened.indexOf(t);
6410
+ let e = this._opened.indexOf(n);
6399
6411
  e >= 0 && this._opened.splice(e, 1);
6400
- let n = this._allocated.indexOf(t);
6401
- n >= 0 && this._allocated.splice(n, 1);
6412
+ let t = this._allocated.indexOf(n);
6413
+ t >= 0 && this._allocated.splice(t, 1);
6402
6414
  }
6403
- this._topology === J.DIRECT && t && (this._setStates([t], e), this._setLocalState(e));
6415
+ this._topology === J.DIRECT && n && (this._setStates([n], e), this._setLocalState(e, t));
6404
6416
  }
6405
6417
  _onServerTransportChanged(e) {
6406
6418
  let t = this._opened.slice();
@@ -6471,7 +6483,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6471
6483
  getStreamWaitingTimeMs(e, t) {
6472
6484
  return this._topology === J.SERVER ? this._serverTransport ? this._serverTransport.getStreamWaitingTimeMs(e, t) : (this._logger?.log(C.PAT_WAITING_TIME_ERROR, "noTransport"), this._debug.error("Cannot get stream waiting time, server transport is not initialized"), 0) : (this._logger?.log(C.PAT_WAITING_TIME_ERROR, "wrongTopology"), this._debug.error(`Cannot get stream waiting time, incorrect topology: ${this._topology}`), 0);
6473
6485
  }
6474
- }, ua = "videochat-epi", da = 5e3, fa = 500, pa = class extends b {
6486
+ }, da = "videochat-epi", fa = 5e3, pa = 500, ma = class extends b {
6475
6487
  constructor(e, t, n = null, r = !1, i = R) {
6476
6488
  super(), h(this, "_previousPerfStatReportTimestamp", 0), h(this, "_previousNetworkStatReportTimestamp", Date.now()), h(this, "_previousCallStatReportTimestamp", Date.now()), h(this, "_previousCallStatReport", null), h(this, "_previousRemoteInboundRtps", /* @__PURE__ */ new Map()), h(this, "_screenShareStats", []), h(this, "_signaling", void 0), h(this, "_directTopology", void 0), h(this, "_debug", void 0), h(this, "_statAggregator", void 0), h(this, "_handleScreenSharingStat", (e) => {
6477
6489
  this._screenShareStats.push(e);
@@ -6484,7 +6496,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6484
6496
  }
6485
6497
  static getEstimatedPerformanceIndex() {
6486
6498
  try {
6487
- let e = parseInt(localStorage.getItem(ua) || "", 10);
6499
+ let e = parseInt(localStorage.getItem(da) || "", 10);
6488
6500
  return isNaN(e) ? 0 : e;
6489
6501
  } catch {
6490
6502
  return 0;
@@ -6493,9 +6505,9 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6493
6505
  async _handleStats(e) {
6494
6506
  if (!e.inbound || !e.inbound.rtps) return;
6495
6507
  let t = Date.now();
6496
- !this._directTopology && M.perfStatReportEnabled && this._previousPerfStatReportTimestamp + da <= t && (await this.reportPerfStats(e), this._previousPerfStatReportTimestamp = t);
6508
+ !this._directTopology && M.perfStatReportEnabled && this._previousPerfStatReportTimestamp + fa <= t && (await this.reportPerfStats(e), this._previousPerfStatReportTimestamp = t);
6497
6509
  let n = e.outbound.transport.local?.protocol === "tcp";
6498
- !this._directTopology && n && this._previousNetworkStatReportTimestamp + fa <= t && (await this.reportNetworkStats(e), this._previousNetworkStatReportTimestamp = t), M.callStatReportEnabled && this._previousCallStatReportTimestamp + M.statisticsInterval <= t && (this._reportCallStats(e), this._previousCallStatReportTimestamp = t);
6510
+ !this._directTopology && n && this._previousNetworkStatReportTimestamp + pa <= t && (await this.reportNetworkStats(e), this._previousNetworkStatReportTimestamp = t), M.callStatReportEnabled && this._previousCallStatReportTimestamp + M.statisticsInterval <= t && (this._reportCallStats(e), this._previousCallStatReportTimestamp = t);
6499
6511
  }
6500
6512
  async reportPerfStats(e) {
6501
6513
  let t = e.inbound.rtps.reduce((e, t) => (t.kind === "video" && (e.framesDecoded += t.framesDecoded || 0, e.framesReceived += t.framesReceived || 0), e), {
@@ -6504,7 +6516,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6504
6516
  });
6505
6517
  if (t.framesDecoded) try {
6506
6518
  let e = await this._signaling.reportPerfStat(t);
6507
- localStorage.setItem(ua, e.estimatedPerformanceIndex);
6519
+ localStorage.setItem(da, e.estimatedPerformanceIndex);
6508
6520
  } catch {}
6509
6521
  }
6510
6522
  async reportNetworkStats(e) {
@@ -6544,11 +6556,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6544
6556
  rtt: Math.round(e.inbound.transport.currentRoundTripTime * 1e3),
6545
6557
  ss_freeze_count: 0,
6546
6558
  ss_total_freezes_duration: 0,
6547
- local_address: ha(e.inbound.transport.local),
6559
+ local_address: ga(e.inbound.transport.local),
6548
6560
  local_connection_type: e.inbound.transport.local?.type,
6549
6561
  network_type: e.inbound.transport.local?.networkType,
6550
6562
  transport: e.inbound.transport.local?.protocol,
6551
- remote_address: ha(e.inbound.transport.remote),
6563
+ remote_address: ga(e.inbound.transport.remote),
6552
6564
  remote_connection_type: e.inbound.transport.remote?.type
6553
6565
  };
6554
6566
  this._previousCallStatReport || (this._previousCallStatReport = Object.assign({}, t));
@@ -6569,11 +6581,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6569
6581
  frames_dropped: Math.max(0, t.frames_dropped - this._previousCallStatReport.frames_dropped),
6570
6582
  rtt: Math.max(0, t.rtt)
6571
6583
  };
6572
- if (M.simulcast && (i.is_simulcast = !0), navigator.hardwareConcurrency && (i.cpu_hardware_concurrency = navigator.hardwareConcurrency), n && !ga(t.jitter_video) && (i.jitter_video = Math.round(t.jitter_video)), r && !ga(t.jitter_audio) && (i.jitter_audio = Math.round(t.jitter_audio)), n && !ga(t.interframe_delay_variance) && (i.interframe_delay_variance = t.interframe_delay_variance), t.freeze_count && t.total_freezes_duration && (i.freeze_count = t.freeze_count, i.total_freezes_duration = Math.round(t.total_freezes_duration * 1e3)), t.ss_freeze_count && t.ss_total_freezes_duration && (i.ss_freeze_count = t.ss_freeze_count, i.ss_total_freezes_duration = t.ss_total_freezes_duration), r && !ga(t.total_audio_samples_received)) {
6584
+ if (M.simulcast && (i.is_simulcast = !0), navigator.hardwareConcurrency && (i.cpu_hardware_concurrency = navigator.hardwareConcurrency), n && !_a(t.jitter_video) && (i.jitter_video = Math.round(t.jitter_video)), r && !_a(t.jitter_audio) && (i.jitter_audio = Math.round(t.jitter_audio)), n && !_a(t.interframe_delay_variance) && (i.interframe_delay_variance = t.interframe_delay_variance), t.freeze_count && t.total_freezes_duration && (i.freeze_count = t.freeze_count, i.total_freezes_duration = Math.round(t.total_freezes_duration * 1e3)), t.ss_freeze_count && t.ss_total_freezes_duration && (i.ss_freeze_count = t.ss_freeze_count, i.ss_total_freezes_duration = t.ss_total_freezes_duration), r && !_a(t.total_audio_samples_received)) {
6573
6585
  let e = Math.max(0, t.total_audio_samples_received - this._previousCallStatReport.total_audio_samples_received), n = Math.max(0, t.inserted_audio_samples_for_deceleration - this._previousCallStatReport.inserted_audio_samples_for_deceleration), r = Math.max(0, t.removed_audio_samples_for_acceleration - this._previousCallStatReport.removed_audio_samples_for_acceleration), a = Math.max(0, t.concealed_audio_samples - this._previousCallStatReport.concealed_audio_samples), o = Math.max(0, t.silent_concealed_audio_samples - this._previousCallStatReport.silent_concealed_audio_samples), s = Math.max(0, t.audio_concealment_events - this._previousCallStatReport.audio_concealment_events);
6574
- i.inserted_audio_samples_for_deceleration = _a(n / e * 1e3), i.removed_audio_samples_for_acceleration = _a(r / e * 1e3), i.concealed_audio_samples = _a(a / e * 1e3), i.concealed_silent_audio_samples = _a(o / e * 1e3), i.concealment_audio_avg_size = _a(a / s), i.total_audio_energy = t.total_audio_energy;
6586
+ i.inserted_audio_samples_for_deceleration = va(n / e * 1e3), i.removed_audio_samples_for_acceleration = va(r / e * 1e3), i.concealed_audio_samples = va(a / e * 1e3), i.concealed_silent_audio_samples = va(o / e * 1e3), i.concealment_audio_avg_size = va(a / s), i.total_audio_energy = t.total_audio_energy;
6575
6587
  }
6576
- ma(t, "local_address", "local_connection_type", "network_type", "transport") && (i.local_address = t.local_address, i.local_connection_type = t.local_connection_type, i.network_type = t.network_type, i.transport = t.transport), ma(t, "remote_address", "remote_connection_type") && (i.remote_address = t.remote_address, i.remote_connection_type = t.remote_connection_type);
6588
+ ha(t, "local_address", "local_connection_type", "network_type", "transport") && (i.local_address = t.local_address, i.local_connection_type = t.local_connection_type, i.network_type = t.network_type, i.transport = t.transport), ha(t, "remote_address", "remote_connection_type") && (i.remote_address = t.remote_address, i.remote_connection_type = t.remote_connection_type);
6577
6589
  let a = this._calculatePacketLoss(e.remoteInbound.rtps);
6578
6590
  a.video !== void 0 && (i.video_loss = a.video), a.audio !== void 0 && (i.audio_loss = a.audio), this._statAggregator?.logCallStat(i), M.enableLogPerfStatReport && this._debug.log("Sent call stats", i), this._previousCallStatReport = t;
6579
6591
  }
@@ -6605,26 +6617,26 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6605
6617
  return r;
6606
6618
  }
6607
6619
  };
6608
- function ma(e, ...t) {
6620
+ function ha(e, ...t) {
6609
6621
  for (let n of t) if (!Object.hasOwn(e, n) || e[n] === void 0) return !1;
6610
6622
  return !0;
6611
6623
  }
6612
- function ha(e, t = !1) {
6624
+ function ga(e, t = !1) {
6613
6625
  if (e?.address) return e.address + (t ? `:${e.port}` : "");
6614
6626
  }
6615
- function ga(e) {
6627
+ function _a(e) {
6616
6628
  return e === void 0;
6617
6629
  }
6618
- function _a(e) {
6630
+ function va(e) {
6619
6631
  return Number.isNaN(e) ? 0 : e;
6620
6632
  }
6621
6633
  //#endregion
6622
6634
  //#region src/static/Capabilities.ts
6623
- var va;
6635
+ var ya;
6624
6636
  (function(e) {
6625
6637
  function t() {
6626
6638
  return {
6627
- estimatedPerformanceIndex: pa.getEstimatedPerformanceIndex(),
6639
+ estimatedPerformanceIndex: ma.getEstimatedPerformanceIndex(),
6628
6640
  audioMix: !0,
6629
6641
  consumerUpdate: !0,
6630
6642
  producerNotificationDataChannelVersion: 8,
@@ -6650,8 +6662,8 @@ var va;
6650
6662
  };
6651
6663
  }
6652
6664
  e.get = t;
6653
- })(va || (va = {}));
6654
- var ya = va, ba = {
6665
+ })(ya || (ya = {}));
6666
+ var ba = ya, xa = {
6655
6667
  producerScreenTrack: () => !0,
6656
6668
  videoTracksCount: () => M.videoTracksCount > 0,
6657
6669
  waitingHall: () => !0,
@@ -6671,28 +6683,28 @@ var ya = va, ba = {
6671
6683
  p2pRelay: () => !1,
6672
6684
  waitForAdmin: () => M.waitForAdminInGroupCalls,
6673
6685
  hold: () => M.hold
6674
- }, xa = class {
6686
+ }, Sa = class {
6675
6687
  static getFlags() {
6676
- let e = Object.values(ba), t = 0;
6688
+ let e = Object.values(xa), t = 0;
6677
6689
  for (let n = 0; n < e.length; n++) e[n]() && (t |= 1 << n);
6678
6690
  return t.toString(16).toUpperCase();
6679
6691
  }
6680
6692
  static parseCapabilities(e) {
6681
6693
  let t = parseInt(e || "0", 16);
6682
- return Object.keys(ba).reduce((e, n, r) => (e[n] = !!(t & 1 << r), e), {});
6694
+ return Object.keys(xa).reduce((e, n, r) => (e[n] = !!(t & 1 << r), e), {});
6683
6695
  }
6684
- }, Sa = 63n, Ca = 16383n, wa = 1073741823, Ta = 4611686018427387903n, Ea = class {
6696
+ }, Ca = 63n, wa = 16383n, Ta = 1073741823, Ea = 4611686018427387903n, Da = class {
6685
6697
  encode(e) {
6686
6698
  let t = typeof e == "number" ? BigInt(e) : e;
6687
- if (t <= Sa) return new Uint8Array([Number(t)]);
6688
- if (t <= Ca) return new Uint8Array([64 | Number(t >> 8n), Number(t & 255n)]);
6689
- if (t <= BigInt(wa)) return new Uint8Array([
6699
+ if (t <= Ca) return new Uint8Array([Number(t)]);
6700
+ if (t <= wa) return new Uint8Array([64 | Number(t >> 8n), Number(t & 255n)]);
6701
+ if (t <= BigInt(Ta)) return new Uint8Array([
6690
6702
  128 | Number(t >> 24n),
6691
6703
  Number(t >> 16n & 255n),
6692
6704
  Number(t >> 8n & 255n),
6693
6705
  Number(t & 255n)
6694
6706
  ]);
6695
- if (t <= Ta) return new Uint8Array([
6707
+ if (t <= Ea) return new Uint8Array([
6696
6708
  192 | Number(t >> 56n),
6697
6709
  Number(t >> 48n & 255n),
6698
6710
  Number(t >> 40n & 255n),
@@ -6704,7 +6716,7 @@ var ya = va, ba = {
6704
6716
  ]);
6705
6717
  throw RangeError("Number is too large to encode using varint");
6706
6718
  }
6707
- }, Da = class {
6719
+ }, Oa = class {
6708
6720
  decode(e) {
6709
6721
  let t = this.getNumBytesForLengthInteger(e);
6710
6722
  if (t < 0) throw Error("Invalid length prefix");
@@ -6730,9 +6742,9 @@ var ya = va, ba = {
6730
6742
  let t = e[0] & 192;
6731
6743
  return t === 0 ? 1 : t === 64 ? 2 : t === 128 ? 4 : t === 192 ? 8 : -1;
6732
6744
  }
6733
- }, Oa = class {
6745
+ }, ka = class {
6734
6746
  constructor(e) {
6735
- h(this, "encoder", void 0), h(this, "compression", void 0), h(this, "lengthEncoder", void 0), this.encoder = new TextEncoder(), this.lengthEncoder = new Ea(), this.compression = e ?? null;
6747
+ h(this, "encoder", void 0), h(this, "compression", void 0), h(this, "lengthEncoder", void 0), this.encoder = new TextEncoder(), this.lengthEncoder = new Da(), this.compression = e ?? null;
6736
6748
  }
6737
6749
  encode(e) {
6738
6750
  let t = this.encoder.encode(e);
@@ -6749,9 +6761,9 @@ var ya = va, ba = {
6749
6761
  default: return e;
6750
6762
  }
6751
6763
  }
6752
- }, ka = class {
6764
+ }, Aa = class {
6753
6765
  constructor(e) {
6754
- h(this, "decoder", void 0), h(this, "compression", void 0), h(this, "lengthDecoder", void 0), h(this, "buffer", void 0), h(this, "expectedLength", void 0), h(this, "offset", void 0), h(this, "lengthPrefixLength", void 0), this.decoder = new TextDecoder(), this.lengthDecoder = new Da(), this.compression = e ?? null, this.buffer = new Uint8Array(), this.expectedLength = null, this.offset = 0;
6766
+ h(this, "decoder", void 0), h(this, "compression", void 0), h(this, "lengthDecoder", void 0), h(this, "buffer", void 0), h(this, "expectedLength", void 0), h(this, "offset", void 0), h(this, "lengthPrefixLength", void 0), this.decoder = new TextDecoder(), this.lengthDecoder = new Oa(), this.compression = e ?? null, this.buffer = new Uint8Array(), this.expectedLength = null, this.offset = 0;
6755
6767
  }
6756
6768
  decode(e) {
6757
6769
  let t = [];
@@ -6781,12 +6793,12 @@ var ya = va, ba = {
6781
6793
  default: return e;
6782
6794
  }
6783
6795
  }
6784
- }, Aa = class {
6796
+ }, ja = class {
6785
6797
  static isBrowserSupported() {
6786
6798
  return !(!("WebTransport" in window && typeof WebTransport == "function") || T.browserName() === "Safari");
6787
6799
  }
6788
6800
  constructor(e, t = {}, n = R) {
6789
- h(this, "onopen", null), h(this, "onmessage", null), h(this, "onerror", null), h(this, "onclose", null), h(this, "readyState", WebSocket.CONNECTING), h(this, "webTransport", null), h(this, "writer", null), h(this, "url", void 0), h(this, "options", void 0), h(this, "compression", void 0), h(this, "encoder", void 0), h(this, "decoder", void 0), h(this, "_debug", void 0), this._debug = n, this.url = e, this.options = t, this.compression = this.getCompressionTypeFromUrl(e), this.encoder = new Oa(this.compression), this.decoder = new ka(this.compression), this.connect();
6801
+ h(this, "onopen", null), h(this, "onmessage", null), h(this, "onerror", null), h(this, "onclose", null), h(this, "readyState", WebSocket.CONNECTING), h(this, "webTransport", null), h(this, "writer", null), h(this, "url", void 0), h(this, "options", void 0), h(this, "compression", void 0), h(this, "encoder", void 0), h(this, "decoder", void 0), h(this, "_debug", void 0), this._debug = n, this.url = e, this.options = t, this.compression = this.getCompressionTypeFromUrl(e), this.encoder = new ka(this.compression), this.decoder = new Aa(this.compression), this.connect();
6790
6802
  }
6791
6803
  async send(e) {
6792
6804
  if (this.readyState !== WebSocket.OPEN) {
@@ -6912,9 +6924,9 @@ var ya = va, ba = {
6912
6924
  compression: this.compression
6913
6925
  }, n;
6914
6926
  }
6915
- }, ja = /* @__PURE__ */ function(e) {
6927
+ }, Ma = /* @__PURE__ */ function(e) {
6916
6928
  return e.EMPTY_ENDPOINT = "EMPTY_ENDPOINT", e.NETWORK_ERROR = "NETWORK_ERROR", e.ABORTED = "ABORTED", e;
6917
- }({}), Ma = class {
6929
+ }({}), Na = class {
6918
6930
  constructor(e = R, t) {
6919
6931
  h(this, "handlers", void 0), h(this, "socket", null), h(this, "endpoint", ""), h(this, "wtEndpoint", null), h(this, "peerId", null), h(this, "lastStamp", 0), h(this, "connectionType", void 0), h(this, "reconnectCount", 0), h(this, "reconnectTimer", 0), h(this, "doctorTimer", 0), h(this, "forceWebSocket", !1), h(this, "abortSignal", void 0), h(this, "manualClose", !1), h(this, "currentType", yr.WEBSOCKET), h(this, "_debug", void 0), this.handlers = t, this._debug = e;
6920
6932
  }
@@ -6964,7 +6976,7 @@ var ya = va, ba = {
6964
6976
  return;
6965
6977
  }
6966
6978
  let e = this._buildUrl(this.wtEndpoint, !0);
6967
- this.currentType = yr.WEBTRANSPORT, this.socket = new Aa(e, { congestionControl: "low-latency" }, this._debug), this._setSocketHandlers();
6979
+ this.currentType = yr.WEBTRANSPORT, this.socket = new ja(e, { congestionControl: "low-latency" }, this._debug), this._setSocketHandlers();
6968
6980
  }
6969
6981
  _connectWebSocket() {
6970
6982
  if (!this.endpoint) {
@@ -6987,10 +6999,10 @@ var ya = va, ba = {
6987
6999
  }
6988
7000
  _buildUrl(e, t) {
6989
7001
  let n = new URL(e), r = n.searchParams;
6990
- return r.set("platform", M.platform), r.set("appVersion", String(M.appVersion)), r.set("version", String(M.protocolVersion)), r.set("device", M.device), r.set("capabilities", xa.getFlags()), r.set("clientType", M.clientType), this.connectionType && r.set("tgt", this.connectionType), this.connectionType === vr.RETRY && this.lastStamp && r.set("recoverTs", String(this.lastStamp)), M.useParticipantListChunk && (r.set("partIdx", String(M.participantListChunkInitIndex)), M.participantListChunkInitCount !== null && r.set("partCount", String(M.participantListChunkInitCount))), t && (r.set("compression", "deflate-raw"), r.set("ua", navigator.userAgent)), this.peerId !== null && r.set("peerId", String(this.peerId)), n.toString();
7002
+ return r.set("platform", M.platform), r.set("appVersion", String(M.appVersion)), r.set("version", String(M.protocolVersion)), r.set("device", M.device), r.set("capabilities", Sa.getFlags()), r.set("clientType", M.clientType), this.connectionType && r.set("tgt", this.connectionType), this.connectionType === vr.RETRY && this.lastStamp && r.set("recoverTs", String(this.lastStamp)), M.useParticipantListChunk && (r.set("partIdx", String(M.participantListChunkInitIndex)), M.participantListChunkInitCount !== null && r.set("partCount", String(M.participantListChunkInitCount))), t && (r.set("compression", "deflate-raw"), r.set("ua", navigator.userAgent)), this.peerId !== null && r.set("peerId", String(this.peerId)), n.toString();
6991
7003
  }
6992
7004
  _canUseWebTransport() {
6993
- return !this.forceWebSocket && Aa.isBrowserSupported() && this.wtEndpoint !== null && M.webtransport;
7005
+ return !this.forceWebSocket && ja.isBrowserSupported() && this.wtEndpoint !== null && M.webtransport;
6994
7006
  }
6995
7007
  _onOpen() {
6996
7008
  this._startDoctor(), this.handlers.onOpen();
@@ -7044,31 +7056,31 @@ var ya = va, ba = {
7044
7056
  _stopDoctor() {
7045
7057
  window.clearTimeout(this.doctorTimer), this.doctorTimer = 0;
7046
7058
  }
7047
- }, Na = "open", Pa = 10, Fa = {
7059
+ }, Pa = "open", Fa = 10, Ia = {
7048
7060
  CONVERSATION_ENDED: "conversation-ended",
7049
7061
  OBSOLETE_CLIENT: "gen.obsoleteClient",
7050
7062
  INVALID_TOKEN: "invalid-token",
7051
7063
  PARTICIPANT_NOT_FOUND: "participant-not-found",
7052
7064
  ILLEGAL_PARTICIPANT_STATE: "illegal-participant-state",
7053
7065
  SERVICE_UNAVAILABLE: "service-unavailable"
7054
- }, Ia = {
7055
- [Fa.CONVERSATION_ENDED]: "conversation-ended",
7056
- [Fa.OBSOLETE_CLIENT]: "obsolete-client",
7057
- [Fa.INVALID_TOKEN]: "invalid-token",
7058
- [Fa.PARTICIPANT_NOT_FOUND]: "participant-not-found",
7059
- [Fa.ILLEGAL_PARTICIPANT_STATE]: "illegal-participant-state",
7060
- [Fa.SERVICE_UNAVAILABLE]: "service-unavailable"
7066
+ }, La = {
7067
+ [Ia.CONVERSATION_ENDED]: "conversation-ended",
7068
+ [Ia.OBSOLETE_CLIENT]: "obsolete-client",
7069
+ [Ia.INVALID_TOKEN]: "invalid-token",
7070
+ [Ia.PARTICIPANT_NOT_FOUND]: "participant-not-found",
7071
+ [Ia.ILLEGAL_PARTICIPANT_STATE]: "illegal-participant-state",
7072
+ [Ia.SERVICE_UNAVAILABLE]: "service-unavailable"
7061
7073
  };
7062
- function La(e, t) {
7074
+ function Ra(e, t) {
7063
7075
  return e.errorMessage ?? e.message ?? e.error ?? t;
7064
7076
  }
7065
- var Ra = new Set([
7077
+ var za = new Set([
7066
7078
  D.CALLER_IS_BLOCKED,
7067
7079
  D.ENDED,
7068
7080
  D.NOT_FOUND,
7069
7081
  D.PARTICIPANT_LIMIT_REACHED,
7070
7082
  D.SERVICE_UNAVAILABLE
7071
- ]), za = class e extends En {
7083
+ ]), Ba = class e extends En {
7072
7084
  static get WAIT_CONNECTION_DELAY() {
7073
7085
  return M.waitConnectionDelay;
7074
7086
  }
@@ -7079,7 +7091,7 @@ var Ra = new Set([
7079
7091
  return !this.disposed && this.transport.readyState !== null;
7080
7092
  }
7081
7093
  constructor(e = R, t = null, n = null, r = null, i = null) {
7082
- super(), h(this, "transport", void 0), h(this, "sequence", 1), h(this, "lastStamp", 0), h(this, "websocketCommandsQueue", []), h(this, "datachannelCommandsQueue", []), h(this, "incomingCache", []), h(this, "responseHandlers", {}), h(this, "disposed", !1), h(this, "connectionType", void 0), h(this, "conversationResolve", null), h(this, "conversationReject", null), h(this, "connected", !1), h(this, "listenersReady", !1), h(this, "peerId", null), h(this, "connectionMessageWaitTimer", 0), h(this, "participantIdRegistry", null), h(this, "producerNotificationDataChannel", null), h(this, "producerCommandDataChannel", null), h(this, "producerCommandDataChannelEnabled", !1), h(this, "producerCommandSerializationService", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_statPings", void 0), h(this, "_statSignalingCommands", void 0), this._debug = e, this._logger = t, this._statAggregator = n, this._statPings = r, this._statSignalingCommands = i, this.producerCommandSerializationService = new $n(e), this.transport = new Ma(e, {
7094
+ super(), h(this, "transport", void 0), h(this, "sequence", 1), h(this, "lastStamp", 0), h(this, "websocketCommandsQueue", []), h(this, "datachannelCommandsQueue", []), h(this, "incomingCache", []), h(this, "responseHandlers", {}), h(this, "disposed", !1), h(this, "connectionType", void 0), h(this, "conversationResolve", null), h(this, "conversationReject", null), h(this, "connected", !1), h(this, "listenersReady", !1), h(this, "peerId", null), h(this, "connectionMessageWaitTimer", 0), h(this, "participantIdRegistry", null), h(this, "producerNotificationDataChannel", null), h(this, "producerCommandDataChannel", null), h(this, "producerCommandDataChannelEnabled", !1), h(this, "producerCommandSerializationService", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_statPings", void 0), h(this, "_statSignalingCommands", void 0), this._debug = e, this._logger = t, this._statAggregator = n, this._statPings = r, this._statSignalingCommands = i, this.producerCommandSerializationService = new $n(e), this.transport = new Na(e, {
7083
7095
  onConnecting: this._onTransportConnecting.bind(this),
7084
7096
  onOpen: this._onOpen.bind(this),
7085
7097
  onMessage: this._onMessage.bind(this),
@@ -7166,20 +7178,20 @@ var Ra = new Set([
7166
7178
  return this._send(B.TRANSMIT_DATA, {
7167
7179
  participantId: e,
7168
7180
  data: r
7169
- }, !0, Pa);
7181
+ }, !0, Fa);
7170
7182
  }
7171
7183
  async acceptCall(e) {
7172
7184
  return this._send(B.ACCEPT_CALL, { mediaSettings: e });
7173
7185
  }
7174
7186
  async changeMediaSettings(e) {
7175
- return this._send(B.CHANGE_MEDIA_SETTINGS, { mediaSettings: e }, !0, Pa);
7187
+ return this._send(B.CHANGE_MEDIA_SETTINGS, { mediaSettings: e }, !0, Fa);
7176
7188
  }
7177
7189
  async changeParticipantState(e, t) {
7178
7190
  let n = { participantState: { state: e } };
7179
7191
  return t && (n.participantId = t), this._sendRaw(B.CHANGE_PARTICIPANT_STATE, n);
7180
7192
  }
7181
7193
  async hold(e) {
7182
- let t = ya.get();
7194
+ let t = ba.get();
7183
7195
  return this._send(B.HOLD, {
7184
7196
  hold: e,
7185
7197
  capabilities: e ? void 0 : t
@@ -7411,7 +7423,7 @@ var Ra = new Set([
7411
7423
  if (this.disposed) throw new wn(e);
7412
7424
  switch (t.route) {
7413
7425
  case "producer":
7414
- this.datachannelCommandsQueue.push(t), this.producerCommandDataChannel?.readyState === Na && this._handleCommandsQueue(this.datachannelCommandsQueue);
7426
+ this.datachannelCommandsQueue.push(t), this.producerCommandDataChannel?.readyState === Pa && this._handleCommandsQueue(this.datachannelCommandsQueue);
7415
7427
  break;
7416
7428
  case "websocket":
7417
7429
  if (this.transport.readyState === null) {
@@ -7481,9 +7493,9 @@ var Ra = new Set([
7481
7493
  }
7482
7494
  _handleErrorMessage(e) {
7483
7495
  this._logger?.log(C.SOCKET_ACTION, `error-${e.error}`);
7484
- let t = this._getSocketType(), n = e.error ? this._createSignalingCallError(e.error, e.errorCode, t) : void 0, r = La(e, "Unknown signaling error");
7496
+ let t = this._getSocketType(), n = e.error ? this._createSignalingCallError(e.error, e.errorCode, t) : void 0, r = Ra(e, "Unknown signaling error");
7485
7497
  switch (this._debug.debug(`[signaling] error message [${e.sequence}]`, e), e.sequence && this.responseHandlers[e.sequence] && this._handleCommandResponse(!1, e), e.error) {
7486
- case Fa.SERVICE_UNAVAILABLE:
7498
+ case Ia.SERVICE_UNAVAILABLE:
7487
7499
  let i = new O(D.SERVICE_UNAVAILABLE, {
7488
7500
  callError: n,
7489
7501
  message: r,
@@ -7495,7 +7507,7 @@ var Ra = new Set([
7495
7507
  reason: D.SERVICE_UNAVAILABLE
7496
7508
  });
7497
7509
  break;
7498
- case Fa.CONVERSATION_ENDED:
7510
+ case Ia.CONVERSATION_ENDED:
7499
7511
  this.conversationReject ? this.conversationReject(new O(e.reason || x.SIGNALING_FAILED, {
7500
7512
  callError: n,
7501
7513
  message: r,
@@ -7506,22 +7518,22 @@ var Ra = new Set([
7506
7518
  reason: e.reason
7507
7519
  });
7508
7520
  break;
7509
- case Fa.ILLEGAL_PARTICIPANT_STATE:
7510
- case Fa.PARTICIPANT_NOT_FOUND:
7521
+ case Ia.ILLEGAL_PARTICIPANT_STATE:
7522
+ case Ia.PARTICIPANT_NOT_FOUND:
7511
7523
  this._throwError(new O(x.SIGNALING_FAILED, {
7512
7524
  callError: n,
7513
7525
  message: r,
7514
7526
  remote: !0
7515
7527
  }));
7516
7528
  break;
7517
- case Fa.OBSOLETE_CLIENT:
7529
+ case Ia.OBSOLETE_CLIENT:
7518
7530
  this.conversationReject?.(new O(e.reason || D.OBSOLETE_CLIENT, {
7519
7531
  callError: n,
7520
7532
  message: r,
7521
7533
  remote: !0
7522
7534
  }));
7523
7535
  break;
7524
- case Fa.INVALID_TOKEN:
7536
+ case Ia.INVALID_TOKEN:
7525
7537
  default:
7526
7538
  if (e.sequence || t === yr.WEBTRANSPORT) break;
7527
7539
  if (this.connected) this._throwError(new O(e.reason || x.SIGNALING_FAILED, {
@@ -7623,13 +7635,13 @@ var Ra = new Set([
7623
7635
  let r = this.responseHandlers[n.sequence];
7624
7636
  window.clearTimeout(r.responseTimer);
7625
7637
  let i = W.measureMark(r.statMarkName);
7626
- i !== null && this._statSignalingCommands?.mark(r.name, i, this._getSocketType()), this._debug.debug(`[signaling] command response [${n.sequence}]`, n), t ? (delete this.responseHandlers[n.sequence], r.resolve(n)) : n.type === "error" ? (delete this.responseHandlers[n.sequence], this._logger?.log(C.SOCKET_ACTION, "response-error"), r.reject(Error(La(n, `Response error [${r.name}]`)), !0)) : this.transport.readyState === WebSocket.OPEN ? (delete this.responseHandlers[n.sequence], this._logger?.log(C.SOCKET_ACTION, "response-timeout"), r.reject(Error(La(n, `Response timeout [${r.name}]`)))) : r.responseTimer = window.setTimeout(() => this._handleCommandResponse(t, n), e.WAIT_RESPONSE_DELAY);
7638
+ i !== null && this._statSignalingCommands?.mark(r.name, i, this._getSocketType()), this._debug.debug(`[signaling] command response [${n.sequence}]`, n), t ? (delete this.responseHandlers[n.sequence], r.resolve(n)) : n.type === "error" ? (delete this.responseHandlers[n.sequence], this._logger?.log(C.SOCKET_ACTION, "response-error"), r.reject(Error(Ra(n, `Response error [${r.name}]`)), !0)) : this.transport.readyState === WebSocket.OPEN ? (delete this.responseHandlers[n.sequence], this._logger?.log(C.SOCKET_ACTION, "response-timeout"), r.reject(Error(Ra(n, `Response timeout [${r.name}]`)))) : r.responseTimer = window.setTimeout(() => this._handleCommandResponse(t, n), e.WAIT_RESPONSE_DELAY);
7627
7639
  }
7628
7640
  _handleCommandsQueue(e) {
7629
7641
  for (; e.length > 0;) {
7630
7642
  let t = e.shift();
7631
7643
  if (this._debug.debug(`[signaling] command send [${t.sequence}]`, `'${t.name}'`, t.params), t.route === "producer") {
7632
- if (this.producerCommandDataChannel?.readyState !== Na) {
7644
+ if (this.producerCommandDataChannel?.readyState !== Pa) {
7633
7645
  t.reject(/* @__PURE__ */ Error(`Invalid data channel state: ${this.producerCommandDataChannel?.readyState}`));
7634
7646
  return;
7635
7647
  }
@@ -7714,7 +7726,7 @@ var Ra = new Set([
7714
7726
  }
7715
7727
  _onTransportFailed(e) {
7716
7728
  switch (e.failure) {
7717
- case ja.EMPTY_ENDPOINT:
7729
+ case Ma.EMPTY_ENDPOINT:
7718
7730
  this.conversationReject?.(new O(x.SIGNALING_FAILED, {
7719
7731
  callError: {
7720
7732
  scope: "internal",
@@ -7725,7 +7737,7 @@ var Ra = new Set([
7725
7737
  remote: e.remote
7726
7738
  }));
7727
7739
  break;
7728
- case ja.NETWORK_ERROR:
7740
+ case Ma.NETWORK_ERROR:
7729
7741
  this._fail(new O(D.NETWORK_ERROR, { callError: {
7730
7742
  scope: "network",
7731
7743
  source: e.source,
@@ -7733,7 +7745,7 @@ var Ra = new Set([
7733
7745
  description: "connection-failed"
7734
7746
  } }));
7735
7747
  break;
7736
- case ja.ABORTED:
7748
+ case Ma.ABORTED:
7737
7749
  this._debug.debug("[signaling] aborted reconnect"), this._fail(new O(D.CANCELED));
7738
7750
  break;
7739
7751
  }
@@ -7745,7 +7757,7 @@ var Ra = new Set([
7745
7757
  this._debug.warn("[signaling] socket is dead, trying to reconnect"), this._logTransportStat(br.FAILED_PINGS);
7746
7758
  }
7747
7759
  _attachNotificationCallError(e) {
7748
- e.callError || !e.reason || e.reason === D.FAILED || e.reason === D.UNKNOWN_ERROR || !Ra.has(e.reason) && !e.errorCode || (e.callError = {
7760
+ e.callError || !e.reason || e.reason === D.FAILED || e.reason === D.UNKNOWN_ERROR || !za.has(e.reason) && !e.errorCode || (e.callError = {
7749
7761
  scope: "server",
7750
7762
  source: this._getSocketType(),
7751
7763
  code: e.errorCode || "protocol",
@@ -7753,7 +7765,7 @@ var Ra = new Set([
7753
7765
  });
7754
7766
  }
7755
7767
  _createSignalingCallError(e, t, n) {
7756
- let r = Ia[e];
7768
+ let r = La[e];
7757
7769
  if (r) return {
7758
7770
  scope: "server",
7759
7771
  source: n,
@@ -7775,39 +7787,39 @@ var Ra = new Set([
7775
7787
  ...t
7776
7788
  });
7777
7789
  }
7778
- }, Ba = /* @__PURE__ */ function(e) {
7790
+ }, Va = /* @__PURE__ */ function(e) {
7779
7791
  return e.INCOMING = "INCOMING", e.OUTGOING = "OUTGOING", e.JOINING = "JOINING", e;
7780
- }(Ba || {}), Va = /* @__PURE__ */ function(e) {
7781
- return e.USER = "USER", e.GROUP = "GROUP", e.CHAT = "CHAT", e;
7782
7792
  }(Va || {}), Ha = /* @__PURE__ */ function(e) {
7783
- return e.ATTENDEE = "ATTENDEE", e.HAND_UP = "HAND_UP", e;
7793
+ return e.USER = "USER", e.GROUP = "GROUP", e.CHAT = "CHAT", e;
7784
7794
  }(Ha || {}), Ua = /* @__PURE__ */ function(e) {
7785
- return e.ADD_PARTICIPANT = "ADD_PARTICIPANT", e.RECORD = "RECORD", e.MOVIE_SHARE = "MOVIE_SHARE", e;
7795
+ return e.ATTENDEE = "ATTENDEE", e.HAND_UP = "HAND_UP", e;
7786
7796
  }(Ua || {}), Wa = /* @__PURE__ */ function(e) {
7797
+ return e.ADD_PARTICIPANT = "ADD_PARTICIPANT", e.RECORD = "RECORD", e.MOVIE_SHARE = "MOVIE_SHARE", e;
7798
+ }(Wa || {}), Ga = /* @__PURE__ */ function(e) {
7787
7799
  return e.REQUIRE_AUTH_TO_JOIN = "REQUIRE_AUTH_TO_JOIN", e.AUDIENCE_MODE = "AUDIENCE_MODE", e.WAITING_HALL = "WAITING_HALL", e.WAIT_FOR_ADMIN = "WAIT_FOR_ADMIN", e.ADMIN_IS_HERE = "ADMIN_IS_HERE", e.ASR = "ASR", e.FEEDBACK = "FEEDBACK", e.RECURRING = "RECURRING", e;
7788
- }(Wa || {});
7789
- function Ga(e, t) {
7800
+ }(Ga || {});
7801
+ function Ka(e, t) {
7790
7802
  if (e.length !== t.length) return !1;
7791
7803
  for (let n of e) if (!t.includes(n)) return !1;
7792
7804
  return !0;
7793
7805
  }
7794
- function Ka(e, t) {
7806
+ function qa(e, t) {
7795
7807
  let n = new Set(e);
7796
7808
  for (let [e, r] of Object.entries(t)) r ? n.add(e) : n.delete(e);
7797
7809
  return Array.from(n);
7798
7810
  }
7799
7811
  //#endregion
7800
7812
  //#region src/enums/MuteState.ts
7801
- var qa = /* @__PURE__ */ function(e) {
7813
+ var Ja = /* @__PURE__ */ function(e) {
7802
7814
  return e.UNMUTE = "UNMUTE", e.MUTE = "MUTE", e.MUTE_PERMANENT = "MUTE_PERMANENT", e;
7803
- }(qa || {}), Z = /* @__PURE__ */ function(e) {
7815
+ }(Ja || {}), Z = /* @__PURE__ */ function(e) {
7804
7816
  return e.CALLED = "CALLED", e.ACCEPTED = "ACCEPTED", e.REJECTED = "REJECTED", e.HUNGUP = "HUNGUP", e;
7805
- }(Z || {}), Ja = /* @__PURE__ */ function(e) {
7817
+ }(Z || {}), Ya = /* @__PURE__ */ function(e) {
7806
7818
  return e.UPDATE = "UPDATE", e.REMOVE = "REMOVE", e.ACTIVATE = "ACTIVATE", e.TIMEOUT = "TIMEOUT", e;
7807
- }(Ja || {}), Ya = /* @__PURE__ */ function(e) {
7819
+ }(Ya || {}), Xa = /* @__PURE__ */ function(e) {
7808
7820
  return e.NO_AVAILABLE_TRACKS = "no-available-tracks", e.UNKNOWN_ERROR = "unknown-error", e;
7809
- }(Ya || {});
7810
- function Xa(e) {
7821
+ }(Xa || {});
7822
+ function Za(e) {
7811
7823
  switch (e) {
7812
7824
  case 1: return "no-available-tracks";
7813
7825
  default: return "unknown-error";
@@ -7815,17 +7827,17 @@ function Xa(e) {
7815
7827
  }
7816
7828
  //#endregion
7817
7829
  //#region src/enums/UserRole.ts
7818
- var Za = /* @__PURE__ */ function(e) {
7830
+ var Qa = /* @__PURE__ */ function(e) {
7819
7831
  return e.CREATOR = "CREATOR", e.ADMIN = "ADMIN", e;
7820
- }(Za || {});
7821
- function Qa(e, t) {
7832
+ }(Qa || {});
7833
+ function $a(e, t) {
7822
7834
  if (e.length !== t.length) return !1;
7823
7835
  for (let n of e) if (!t.includes(n)) return !1;
7824
7836
  return !0;
7825
7837
  }
7826
7838
  //#endregion
7827
7839
  //#region src/static/ParticipantConnectionStatusUtils.ts
7828
- var $a;
7840
+ var eo;
7829
7841
  (function(e) {
7830
7842
  function t(e) {
7831
7843
  let t = e?.transport ?? e?.lastEffective ?? N.WAITING, n = {
@@ -7877,8 +7889,8 @@ var $a;
7877
7889
  shouldNotify: !0
7878
7890
  });
7879
7891
  }
7880
- })($a || ($a = {}));
7881
- var eo = $a, to = /* @__PURE__ */ function(e) {
7892
+ })(eo || (eo = {}));
7893
+ var to = eo, no = /* @__PURE__ */ function(e) {
7882
7894
  return e.USER = "USER", e.ANONYM = "ANONYM", e.GROUP = "GROUP", e;
7883
7895
  }({}), Q;
7884
7896
  (function(e) {
@@ -7941,7 +7953,7 @@ var eo = $a, to = /* @__PURE__ */ function(e) {
7941
7953
  })(Q || (Q = {}));
7942
7954
  //#endregion
7943
7955
  //#region src/types/WaitingHall.ts
7944
- function no(e) {
7956
+ function ro(e) {
7945
7957
  try {
7946
7958
  return btoa(JSON.stringify(e));
7947
7959
  } catch (t) {
@@ -7949,7 +7961,7 @@ function no(e) {
7949
7961
  }
7950
7962
  return null;
7951
7963
  }
7952
- function ro(e) {
7964
+ function io(e) {
7953
7965
  try {
7954
7966
  return JSON.parse(atob(e));
7955
7967
  } catch (t) {
@@ -7959,12 +7971,12 @@ function ro(e) {
7959
7971
  }
7960
7972
  //#endregion
7961
7973
  //#region src/utils/Conversation.ts
7962
- var io = (e, t) => j.objectReduce(e, (e, n, r) => (n === t && e.push(r), e), []);
7963
- function ao(e) {
7974
+ var ao = (e, t) => j.objectReduce(e, (e, n, r) => (n === t && e.push(r), e), []);
7975
+ function oo(e) {
7964
7976
  if (e.conversation?.muteStates) return e.conversation.muteStates;
7965
7977
  if (e.muteState && e.muteOptions) return e.muteOptions.reduce((t, n) => (t[n] = e.muteState, t), {});
7966
7978
  }
7967
- function oo(e, t) {
7979
+ function so(e, t) {
7968
7980
  switch (e) {
7969
7981
  case S.AUDIO: return !!t.isAudioEnabled;
7970
7982
  case S.AUDIO_SHARING: return !!t.isAudioSharingEnabled;
@@ -7973,12 +7985,12 @@ function oo(e, t) {
7973
7985
  default: return !1;
7974
7986
  }
7975
7987
  }
7976
- function so(e, t) {
7988
+ function co(e, t) {
7977
7989
  return j.objectReduce(e, (e, n, r) => {
7978
7990
  switch (n) {
7979
- case qa.MUTE:
7980
- case qa.MUTE_PERMANENT:
7981
- oo(r, t) || (e[r] = n);
7991
+ case Ja.MUTE:
7992
+ case Ja.MUTE_PERMANENT:
7993
+ so(r, t) || (e[r] = n);
7982
7994
  break;
7983
7995
  default:
7984
7996
  e[r] = n;
@@ -7987,19 +7999,19 @@ function so(e, t) {
7987
7999
  return e;
7988
8000
  }, {});
7989
8001
  }
7990
- function co(e) {
8002
+ function lo(e) {
7991
8003
  let { muteStates: t = {}, mediaSettings: n } = e;
7992
- return so(t, n);
8004
+ return co(t, n);
7993
8005
  }
7994
- function lo(e, t) {
8006
+ function uo(e, t) {
7995
8007
  let n = e.conversation.participants.find((t) => j.comparePeerId(t.peerId, e.peerId));
7996
8008
  if (!n) return t;
7997
8009
  let { mediaSettings: r } = n;
7998
- return so(t, r);
8010
+ return co(t, r);
7999
8011
  }
8000
8012
  //#endregion
8001
8013
  //#region src/utils/IceServers.ts
8002
- function uo(e) {
8014
+ function fo(e) {
8003
8015
  if (!e) return null;
8004
8016
  let t = Array.from(new Set((e.urls ?? []).map((e) => e.trim()).filter((e) => e.length > 0)));
8005
8017
  return t.length ? {
@@ -8007,8 +8019,8 @@ function uo(e) {
8007
8019
  urls: t
8008
8020
  } : null;
8009
8021
  }
8010
- function fo(e, t) {
8011
- let n = [], r = uo(e), i = uo(t);
8022
+ function po(e, t) {
8023
+ let n = [], r = fo(e), i = fo(t);
8012
8024
  if (r && n.push(r), i) {
8013
8025
  let e = [...i.urls];
8014
8026
  e.push(`${e[e.length - 1]}?transport=tcp`), n.push({
@@ -8020,7 +8032,7 @@ function fo(e, t) {
8020
8032
  }
8021
8033
  //#endregion
8022
8034
  //#region src/utils/Lz4.ts
8023
- function po(e, t) {
8035
+ function mo(e, t) {
8024
8036
  let n = new Uint8Array(t), r = 0, i = 0;
8025
8037
  for (; r < e.length && i < t;) {
8026
8038
  let a = e[r++], o = a >> 4, s = a & 15;
@@ -8047,7 +8059,7 @@ function po(e, t) {
8047
8059
  }
8048
8060
  //#endregion
8049
8061
  //#region src/utils/SerializeLatest.ts
8050
- function mo(e) {
8062
+ function ho(e) {
8051
8063
  let t, n = !1, r, i = async () => {
8052
8064
  let t = !1, i;
8053
8065
  for (; n;) {
@@ -8068,7 +8080,7 @@ function mo(e) {
8068
8080
  }
8069
8081
  //#endregion
8070
8082
  //#region src/classes/AudioFix.ts
8071
- var ho = class {
8083
+ var go = class {
8072
8084
  constructor(e, t = R, n = null) {
8073
8085
  h(this, "_fixNoPacketsApplied", !1), h(this, "_fixNoPacketsChecked", !1), h(this, "_fixTooManyPacketsApplied", !1), h(this, "_fixTooManyPacketsSucceeded", !1), h(this, "_fixTooManyPacketsFailed", !1), h(this, "_fixTooManyPacketsTime", void 0), h(this, "_mediaSource", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_lastPacketsSent", void 0), h(this, "_lastPacketsSentTime", void 0), h(this, "_toggleAudioPromise", null), h(this, "_fixNoPacketsAppliedVideo", !1), this._mediaSource = e, this._debug = t, this._logger = n;
8074
8086
  }
@@ -8106,7 +8118,7 @@ var ho = class {
8106
8118
  this._debug.warn("[AudioFix] Failed to fix RV (no packets): video restart", e);
8107
8119
  }));
8108
8120
  }
8109
- }, go = class {
8121
+ }, _o = class {
8110
8122
  constructor(e, t = !1, n = R, r = null) {
8111
8123
  h(this, "_audioElement", null), h(this, "_debug", void 0), h(this, "_preparedAudioElement", void 0), h(this, "_audioTracks", /* @__PURE__ */ new Map()), h(this, "_allowMultipleTracks", void 0), h(this, "_volume", 1), h(this, "_features", { setSinkId: !!Audio.prototype.setSinkId }), h(this, "_statFirstMediaReceived", void 0), h(this, "_logger", void 0), this._statFirstMediaReceived = e, this._allowMultipleTracks = t, this._debug = n, this._logger = r, this._preparedAudioElement = this._prepareAudioElement();
8112
8124
  }
@@ -8207,13 +8219,13 @@ var ho = class {
8207
8219
  };
8208
8220
  //#endregion
8209
8221
  //#region src/classes/conversation/ConversationResponseValidator.ts
8210
- function _o(e, t) {
8211
- e || yo(t, "response-empty"), e.id || yo(t, "id-empty"), e.endpoint || yo(t, "endpoint-empty"), !vo(e.stun_server) && !vo(e.turn_server) && yo(t, "ice-servers-empty");
8222
+ function vo(e, t) {
8223
+ e || bo(t, "response-empty"), e.id || bo(t, "id-empty"), e.endpoint || bo(t, "endpoint-empty"), !yo(e.stun_server) && !yo(e.turn_server) && bo(t, "ice-servers-empty");
8212
8224
  }
8213
- function vo(e) {
8225
+ function yo(e) {
8214
8226
  return Array.isArray(e?.urls) && e.urls.length > 0;
8215
8227
  }
8216
- function yo(e, t) {
8228
+ function bo(e, t) {
8217
8229
  let n = e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`), r = e === "fastStart" || e === "fastJoin";
8218
8230
  throw new O(r ? e === "fastStart" ? D.FAST_START_ERROR : D.FAST_JOIN_ERROR : D.UNKNOWN_ERROR, {
8219
8231
  message: `Invalid ${e} response: ${t}`,
@@ -8232,7 +8244,7 @@ function yo(e, t) {
8232
8244
  }
8233
8245
  //#endregion
8234
8246
  //#region src/classes/DebugInfo.ts
8235
- var bo = 90, xo = 3, So = class extends b {
8247
+ var xo = 90, So = 3, Co = class extends b {
8236
8248
  constructor(e = R) {
8237
8249
  super(), h(this, "_lastMemoryStat", {
8238
8250
  percent: 0,
@@ -8248,11 +8260,11 @@ var bo = 90, xo = 3, So = class extends b {
8248
8260
  let e = window?.performance?.memory;
8249
8261
  if (!e || !e.usedJSHeapSize || !e.jsHeapSizeLimit) return;
8250
8262
  let t = Number((100 * e.usedJSHeapSize / e.jsHeapSizeLimit).toFixed(2)), n = Number((e.usedJSHeapSize / 1024 / 1024).toFixed(1));
8251
- t > bo ? this._debug.warn(`High memory usage: ${t}% (${n} MiB)`) : (!this._lastMemoryStat.percent || Math.abs(t - this._lastMemoryStat.percent) >= xo) && (this._debug.debug(`Memory usage: ${t}% (${n} MiB)`), this._lastMemoryStat.percent = t, this._lastMemoryStat.bytes = e.usedJSHeapSize);
8263
+ t > xo ? this._debug.warn(`High memory usage: ${t}% (${n} MiB)`) : (!this._lastMemoryStat.percent || Math.abs(t - this._lastMemoryStat.percent) >= So) && (this._debug.debug(`Memory usage: ${t}% (${n} MiB)`), this._lastMemoryStat.percent = t, this._lastMemoryStat.bytes = e.usedJSHeapSize);
8252
8264
  }
8253
- }, Co = class {
8254
- constructor({ api: e, debug: t, getParticipants: n, isMe: r, updateDisplayLayout: i }) {
8255
- h(this, "_api", void 0), h(this, "_debug", void 0), h(this, "_getParticipants", void 0), h(this, "_isMe", void 0), h(this, "_updateDisplayLayout", void 0), h(this, "_requestedLayouts", {}), h(this, "_uncertainLayouts", {}), h(this, "_pendingRequests", null), h(this, "_pendingPromises", []), h(this, "_lastRequests", null), h(this, "_timer", null), h(this, "_inFlight", !1), h(this, "_lastFlushAt", null), h(this, "_generation", 0), h(this, "_forceNextFlush", !1), this._api = e, this._debug = t, this._getParticipants = n, this._isMe = r, this._updateDisplayLayout = i;
8265
+ }, wo = class {
8266
+ constructor({ api: e, debug: t, getParticipants: n, isMe: r, updateDisplayLayout: i, onNonFatalError: a }) {
8267
+ h(this, "_api", void 0), h(this, "_debug", void 0), h(this, "_getParticipants", void 0), h(this, "_isMe", void 0), h(this, "_updateDisplayLayout", void 0), h(this, "_onNonFatalError", void 0), h(this, "_requestedLayouts", {}), h(this, "_uncertainLayouts", {}), h(this, "_pendingRequests", null), h(this, "_pendingPromises", []), h(this, "_lastRequests", null), h(this, "_timer", null), h(this, "_inFlight", !1), h(this, "_lastFlushAt", null), h(this, "_generation", 0), h(this, "_forceNextFlush", !1), this._api = e, this._debug = t, this._getParticipants = n, this._isMe = r, this._updateDisplayLayout = i, this._onNonFatalError = a;
8256
8268
  }
8257
8269
  request(e) {
8258
8270
  this._pendingRequests = e.slice(), this._lastRequests = e.slice();
@@ -8288,11 +8300,16 @@ var bo = 90, xo = 3, So = class extends b {
8288
8300
  this._pendingRequests = null, this._pendingPromises = [];
8289
8301
  let r = {};
8290
8302
  try {
8291
- r = this._getRequestLayouts(t);
8292
- let i = this._forceNextFlush || Object.keys(this._uncertainLayouts).length > 0;
8303
+ let i = this._getRequestLayouts(t);
8304
+ if (!i) {
8305
+ n.forEach(({ resolve: e }) => e());
8306
+ return;
8307
+ }
8308
+ r = i;
8309
+ let a = this._forceNextFlush || Object.keys(this._uncertainLayouts).length > 0;
8293
8310
  this._forceNextFlush = !1;
8294
- let a = this._getDiff(r, i);
8295
- a.length && await this._updateDisplayLayout(a), e === this._generation && (this._requestedLayouts = r, this._uncertainLayouts = {}), n.forEach(({ resolve: e }) => e());
8311
+ let o = this._getDiff(r, a);
8312
+ o.length && await this._updateDisplayLayout(o), e === this._generation && (this._requestedLayouts = r, this._uncertainLayouts = {}), n.forEach(({ resolve: e }) => e());
8296
8313
  } catch (t) {
8297
8314
  e === this._generation ? (this._uncertainLayouts = {
8298
8315
  ...this._uncertainLayouts,
@@ -8303,30 +8320,30 @@ var bo = 90, xo = 3, So = class extends b {
8303
8320
  }
8304
8321
  }
8305
8322
  _getRequestLayouts(e) {
8306
- let t = {}, n = this._getParticipants();
8307
- for (let r of e) {
8308
- let e = typeof r.uid == "object" ? r.uid : Q.fromId(r.uid), i = this._api.getCachedOkIdByExternalId(e);
8309
- if (!i) {
8310
- this._debug.log(`Unknown participant external ID ${typeof r.uid == "object" ? Q.toString(r.uid) : r.uid}`);
8323
+ let t = {}, n = [], r = this._getParticipants();
8324
+ for (let i of e) {
8325
+ let e = typeof i.uid == "object" ? i.uid : Q.fromId(i.uid), a = this._api.getCachedParticipantIdByExternalId(e);
8326
+ if (!a) {
8327
+ this._debug.log(`Unknown participant external ID ${typeof i.uid == "object" ? Q.toString(i.uid) : i.uid}`), n.push(e.id);
8311
8328
  continue;
8312
8329
  }
8313
- if (!n[i] && !this._isMe(i)) continue;
8314
- let a = Mn({
8315
- participantId: i,
8316
- mediaType: r.mediaType,
8317
- streamName: r.streamName
8330
+ if (!r[a] && !this._isMe(a)) continue;
8331
+ let o = Mn({
8332
+ participantId: a,
8333
+ mediaType: i.mediaType,
8334
+ streamName: i.streamName
8318
8335
  });
8319
- t[a] = {
8320
- uid: r.uid,
8321
- mediaType: r.mediaType,
8322
- width: r.width,
8323
- height: r.height,
8324
- fit: r.cover ? "cv" : "cn",
8325
- ...r.priority === void 0 ? {} : { priority: r.priority },
8326
- ...r.streamName === void 0 ? {} : { streamName: r.streamName }
8336
+ t[o] = {
8337
+ uid: i.uid,
8338
+ mediaType: i.mediaType,
8339
+ width: i.width,
8340
+ height: i.height,
8341
+ fit: i.cover ? "cv" : "cn",
8342
+ ...i.priority === void 0 ? {} : { priority: i.priority },
8343
+ ...i.streamName === void 0 ? {} : { streamName: i.streamName }
8327
8344
  };
8328
8345
  }
8329
- return t;
8346
+ return n.length ? (this._onNonFatalError(`Participant ID mapping not found for external IDs "${Array.from(new Set(n)).join("\", \"")}" while handling requestDisplayLayout`), null) : t;
8330
8347
  }
8331
8348
  _getDiff(e, t = !1) {
8332
8349
  let n = [];
@@ -8360,12 +8377,12 @@ var bo = 90, xo = 3, So = class extends b {
8360
8377
  let n = e, r = t;
8361
8378
  return n.width !== r.width || n.height !== r.height || n.fit !== r.fit || n.priority !== r.priority;
8362
8379
  }
8363
- }, wo = 44100, To = class {
8380
+ }, To = 44100, Eo = class {
8364
8381
  constructor(e, t) {
8365
8382
  h(this, "_analyser", null), h(this, "_gainNode", null), h(this, "_fftBins", null), h(this, "_mediaStreamSource", null), h(this, "_lastSmoothedLevel", 0), h(this, "_trackId", void 0), h(this, "_track", void 0), h(this, "_stream", void 0), this._trackId = e, this._track = t, this._stream = new MediaStream([t]);
8366
8383
  try {
8367
8384
  let e = T.getAudioContext();
8368
- this._gainNode = e.createGain(), this._gainNode.gain.value = 1e-5, this._gainNode.connect(e.destination), this._analyser = e.createAnalyser(), this._analyser.fftSize = 1024, this._analyser.smoothingTimeConstant = 0, this._analyser.connect(this._gainNode), this._fftBins = new Uint8Array(this._analyser.frequencyBinCount), this._mediaStreamSource = e.createMediaStreamSource(this._stream), this._mediaStreamSource.connect(this._analyser);
8385
+ this._analyser = e.createAnalyser(), this._analyser.fftSize = 1024, this._analyser.smoothingTimeConstant = 0, T.browserName() === "Safari" && (this._gainNode = e.createGain(), this._gainNode.gain.value = 1e-5, this._gainNode.connect(e.destination), this._analyser.connect(this._gainNode)), this._fftBins = new Uint8Array(this._analyser.frequencyBinCount), this._mediaStreamSource = e.createMediaStreamSource(this._stream), this._mediaStreamSource.connect(this._analyser);
8369
8386
  } catch {}
8370
8387
  }
8371
8388
  get track() {
@@ -8377,7 +8394,7 @@ var bo = 90, xo = 3, So = class extends b {
8377
8394
  _getBins() {
8378
8395
  if (!this._fftBins || !this._analyser) return new Uint8Array();
8379
8396
  this._analyser.getByteFrequencyData(this._fftBins);
8380
- let e = wo / this._fftBins.length, t = Math.ceil(M.voiceParams.minFreq / e), n = Math.floor(M.voiceParams.maxFreq / e);
8397
+ let e = To / this._fftBins.length, t = Math.ceil(M.voiceParams.minFreq / e), n = Math.floor(M.voiceParams.maxFreq / e);
8381
8398
  return this._fftBins.subarray(t, n);
8382
8399
  }
8383
8400
  getLevel() {
@@ -8390,7 +8407,7 @@ var bo = 90, xo = 3, So = class extends b {
8390
8407
  destroy() {
8391
8408
  this._mediaStreamSource && (this._mediaStreamSource.disconnect(), this._mediaStreamSource = null), this._gainNode && (this._gainNode.disconnect(), this._gainNode = null), this._analyser && (this._analyser.disconnect(), this._analyser = null, this._fftBins = null, this._lastSmoothedLevel = 0), this._stream.removeTrack(this._track);
8392
8409
  }
8393
- }, Eo = class extends b {
8410
+ }, Do = class extends b {
8394
8411
  constructor(e) {
8395
8412
  super(), h(this, "_detector", null), h(this, "_interval", null);
8396
8413
  let t = () => {
@@ -8406,7 +8423,7 @@ var bo = 90, xo = 3, So = class extends b {
8406
8423
  }), this.subscribe(e, qt.SOURCE_READY, n), n();
8407
8424
  }
8408
8425
  init(e) {
8409
- this._stopDetector(), this._detector = new To("local", e.clone());
8426
+ this._stopDetector(), this._detector = new Eo("local", e.clone());
8410
8427
  }
8411
8428
  _stopDetector() {
8412
8429
  this._detector && (this._detector.track.stop(), this._detector.destroy(), this._detector = null);
@@ -8414,7 +8431,7 @@ var bo = 90, xo = 3, So = class extends b {
8414
8431
  destroy() {
8415
8432
  this.unsubscribe(), this._interval && (window.clearTimeout(this._interval), this._interval = null), this._stopDetector();
8416
8433
  }
8417
- }, Do = class {
8434
+ }, Oo = class {
8418
8435
  constructor(e, t = R) {
8419
8436
  h(this, "processor", void 0), h(this, "queue", []), h(this, "isProcessing", !1), h(this, "_debug", void 0), this.processor = e, this._debug = t;
8420
8437
  }
@@ -8434,9 +8451,9 @@ var bo = 90, xo = 3, So = class extends b {
8434
8451
  this.isProcessing = !1;
8435
8452
  }
8436
8453
  }
8437
- }, Oo = /* @__PURE__ */ function(e) {
8454
+ }, ko = /* @__PURE__ */ function(e) {
8438
8455
  return e.VOLUMES_DETECTED = "VOLUMES_DETECTED", e;
8439
- }({}), ko = class extends b {
8456
+ }({}), Ao = class extends b {
8440
8457
  constructor(e) {
8441
8458
  super(), h(this, "_detectors", /* @__PURE__ */ new Map()), h(this, "_interval", null), h(this, "_activeParticipants", void 0), h(this, "_removedParticipants", void 0), h(this, "_topology", void 0), this._topology = e.getTopology(), this.subscribe(e, X.REMOTE_TRACK_ADDED, this._onRemoteTrackAdded.bind(this)), this.subscribe(e, X.REMOTE_TRACK_REMOVED, this._onRemoteTrackRemoved.bind(this)), this.subscribe(e, X.SIGNALLED_ACTIVE_PARTICIPANTS, this._onSignalledActiveParticipants.bind(this)), this.subscribe(e, X.TOPOLOGY_CHANGED, this._onTopologyChanged.bind(this));
8442
8459
  }
@@ -8444,7 +8461,7 @@ var bo = 90, xo = 3, So = class extends b {
8444
8461
  this._interval && (window.clearTimeout(this._interval), this._interval = null), this.unsubscribe(), this._destroyDetectors();
8445
8462
  }
8446
8463
  _onRemoteTrackAdded(e, t, n) {
8447
- if (n.kind === k.audio && (this._detectors.get(e)?.destroy(), this._detectors.set(e, new To(e, n)), !this._interval)) {
8464
+ if (n.kind === k.audio && (this._detectors.get(e)?.destroy(), this._detectors.set(e, new Eo(e, n)), !this._interval)) {
8448
8465
  let e = () => {
8449
8466
  this._collectVolumes(), this._interval = window.setTimeout(e, M.voiceParams.interval);
8450
8467
  };
@@ -8476,14 +8493,14 @@ var bo = 90, xo = 3, So = class extends b {
8476
8493
  }
8477
8494
  _getAudioTrackLevelByParticipantId(e) {
8478
8495
  if (this._isTransparentAudioMode()) return this._getTransparentAudioLevelByParticipantId(e);
8479
- let t = this._detectors.get(qr.AUDIO_MIX);
8496
+ let t = this._detectors.get(Jr.AUDIO_MIX);
8480
8497
  return t ? t.getLevel() : null;
8481
8498
  }
8482
8499
  _getTransparentAudioLevelByParticipantId(e) {
8483
8500
  if (!this._activeParticipants?.includes(e)) return null;
8484
8501
  let t = null;
8485
8502
  return this._detectors.forEach((e, n) => {
8486
- if (!n.startsWith(`${qr.TRANSPARENT_AUDIO_TRACK_PREFIX}-`)) return;
8503
+ if (!n.startsWith(`${Jr.TRANSPARENT_AUDIO_TRACK_PREFIX}-`)) return;
8487
8504
  let r = e.getLevel();
8488
8505
  (!t || r.real > t.real) && (t = r);
8489
8506
  }), t;
@@ -8502,11 +8519,11 @@ var bo = 90, xo = 3, So = class extends b {
8502
8519
  e.destroy();
8503
8520
  }), this._detectors.clear();
8504
8521
  }
8505
- }, Ao = /* @__PURE__ */ function(e) {
8522
+ }, jo = /* @__PURE__ */ function(e) {
8506
8523
  return e.SPEAKER_CHANGED = "SPEAKER_CHANGED", e;
8507
- }({}), jo = class extends b {
8524
+ }({}), Mo = class extends b {
8508
8525
  constructor(e, t, n) {
8509
- super(), h(this, "_speakerId", null), h(this, "_serverSideSpeakerDetection", !1), this._serverSideSpeakerDetection = n === J.SERVER, this.subscribe(e, Oo.VOLUMES_DETECTED, this._onVolumesDetected.bind(this)), this.subscribe(t, X.SIGNALLED_SPEAKER_CHANGED, this._onServerSpeakerChanged.bind(this)), this.subscribe(t, X.TOPOLOGY_CHANGED, this._onTopologyChanged.bind(this));
8526
+ super(), h(this, "_speakerId", null), h(this, "_serverSideSpeakerDetection", !1), this._serverSideSpeakerDetection = n === J.SERVER, this.subscribe(e, ko.VOLUMES_DETECTED, this._onVolumesDetected.bind(this)), this.subscribe(t, X.SIGNALLED_SPEAKER_CHANGED, this._onServerSpeakerChanged.bind(this)), this.subscribe(t, X.TOPOLOGY_CHANGED, this._onTopologyChanged.bind(this));
8510
8527
  }
8511
8528
  destroy() {
8512
8529
  this.unsubscribe();
@@ -8528,9 +8545,9 @@ var bo = 90, xo = 3, So = class extends b {
8528
8545
  _onTopologyChanged(e) {
8529
8546
  this._serverSideSpeakerDetection = e === J.SERVER;
8530
8547
  }
8531
- }, Mo = 15e3, No = 15e3, Po = class extends b {
8548
+ }, No = 15e3, Po = 15e3, Fo = class extends b {
8532
8549
  constructor(e, t, n, r = R, i = null) {
8533
- super(), h(this, "_transport", void 0), h(this, "_volumes", {}), h(this, "_participants", {}), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_connectionTimeout", 0), h(this, "_connectionTimeoutSuppressed", !1), h(this, "_volumeTimeout", 0), this._transport = e, this._participants = n, this._debug = r, this._logger = i, this.subscribe(e, X.STATE_CHANGED, this._onTransportStateChanged.bind(this)), this.subscribe(t, Oo.VOLUMES_DETECTED, this._onVolumesDetected.bind(this));
8550
+ super(), h(this, "_transport", void 0), h(this, "_volumes", {}), h(this, "_participants", {}), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_connectionTimeout", 0), h(this, "_connectionTimeoutSuppressed", !1), h(this, "_volumeTimeout", 0), this._transport = e, this._participants = n, this._debug = r, this._logger = i, this.subscribe(e, X.STATE_CHANGED, this._onTransportStateChanged.bind(this)), this.subscribe(t, ko.VOLUMES_DETECTED, this._onVolumesDetected.bind(this));
8534
8551
  }
8535
8552
  destroy() {
8536
8553
  this.unsubscribe(), this._connectionTimeout && window.clearTimeout(this._connectionTimeout), this._volumeTimeout && window.clearTimeout(this._volumeTimeout);
@@ -8542,10 +8559,10 @@ var bo = 90, xo = 3, So = class extends b {
8542
8559
  this._connectionTimeout || !this._connectionTimeoutSuppressed || this._reportConnectionTimeout();
8543
8560
  }
8544
8561
  _getConnectionTimeout() {
8545
- return this._transport.getTopology() === J.DIRECT ? Mo : M.specListenerParams.connectionTimeout;
8562
+ return this._transport.getTopology() === J.DIRECT ? No : M.specListenerParams.connectionTimeout;
8546
8563
  }
8547
8564
  _getVolumeTimeout() {
8548
- return this._transport.getTopology() === J.DIRECT ? No : M.specListenerParams.volumeTimeout;
8565
+ return this._transport.getTopology() === J.DIRECT ? Po : M.specListenerParams.volumeTimeout;
8549
8566
  }
8550
8567
  _onTransportStateChanged(e, t) {
8551
8568
  t === q.OPENED && (this._connectionTimeout || (this._connectionTimeoutSuppressed = !1, this._connectionTimeout = window.setTimeout(this._onConnectionTimeout.bind(this), this._getConnectionTimeout()))), t === q.CONNECTED && (this._volumeTimeout || (this._volumeTimeout = window.setTimeout(this._onVolumeTimeout.bind(this), this._getVolumeTimeout())), this._volumeTimeout && (window.clearTimeout(this._volumeTimeout), this._volumeTimeout = window.setTimeout(this._onVolumeTimeout.bind(this), this._getVolumeTimeout()))), t === q.FAILED && this._connectionTimeout && (this._debug.warn("Transport failed, send callSpecError"), this._logger?.log(C.CALL_SPEC_ERROR, `${this._transport.getTopology()}_CONNECTION_TIMEOUT`));
@@ -8578,7 +8595,7 @@ var bo = 90, xo = 3, So = class extends b {
8578
8595
  r && r.platform && (n = r.platform), e.indexOf(n) < 0 && (e.push(n), this._logger?.log(C.CALL_SPEC_ERROR, `${this._transport.getTopology()}_VOLUME_TIMEOUT_${n}`));
8579
8596
  }), e.length && this._debug.warn("There is silent participant, send callSpecError"), this._volumeTimeout = 0;
8580
8597
  }
8581
- }, Fo = class extends f {
8598
+ }, Io = class extends f {
8582
8599
  constructor(e, t, n, r = () => void 0) {
8583
8600
  super(), h(this, "_externalLogger", void 0), h(this, "_api", void 0), h(this, "_conversationIdProvider", void 0), h(this, "_topologyProvider", void 0), h(this, "_batchInterval", 3e3), h(this, "_batchedClientStats", []), h(this, "_batchTimeout", null), h(this, "_serverTimeDelta", 0), h(this, "_waitingForServerTime", !0), h(this, "_deferredClientStats", []), this._api = e, this._externalLogger = t, this._conversationIdProvider = n, this._topologyProvider = r, this._calculateServerTimeDelta();
8584
8601
  }
@@ -8658,7 +8675,7 @@ var bo = 90, xo = 3, So = class extends b {
8658
8675
  _now() {
8659
8676
  return Date.now() - this._serverTimeDelta;
8660
8677
  }
8661
- }, Io = "invalid-error-metadata", Lo = 64, Ro = new Set(Object.values(D)), zo = new Set(Object.values(x)), Bo = {
8678
+ }, Lo = "invalid-error-metadata", Ro = 64, zo = new Set(Object.values(D)), Bo = new Set(Object.values(x)), Vo = {
8662
8679
  [D.CANCELED]: {
8663
8680
  type: "semantic",
8664
8681
  reason: "canceled"
@@ -8779,7 +8796,7 @@ var bo = 90, xo = 3, So = class extends b {
8779
8796
  type: "semantic",
8780
8797
  reason: "obsolete_client"
8781
8798
  }
8782
- }, Vo = {
8799
+ }, Ho = {
8783
8800
  [x.MIC_CAMERA_PERMISSION]: {
8784
8801
  type: "direct-error",
8785
8802
  error: {
@@ -8868,14 +8885,14 @@ var bo = 90, xo = 3, So = class extends b {
8868
8885
  }
8869
8886
  }
8870
8887
  };
8871
- function Ho(e) {
8872
- if (typeof e != "string" && typeof e != "number" || typeof e == "number" && !Number.isFinite(e)) return Io;
8888
+ function Uo(e) {
8889
+ if (typeof e != "string" && typeof e != "number" || typeof e == "number" && !Number.isFinite(e)) return Lo;
8873
8890
  let t = String(e).trim();
8874
- if (!t) return Io;
8891
+ if (!t) return Lo;
8875
8892
  let n = t.toLowerCase().replace(/[\s_:]+/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "");
8876
- return !n || !/^[a-z0-9.-]+$/.test(n) ? Io : n.length > Lo ? `${n.slice(0, Lo - 3)}...` : n;
8893
+ return !n || !/^[a-z0-9.-]+$/.test(n) ? Lo : n.length > Ro ? `${n.slice(0, Ro - 3)}...` : n;
8877
8894
  }
8878
- function Uo(e) {
8895
+ function Wo(e) {
8879
8896
  if (!e || typeof e != "object") return !1;
8880
8897
  let t = e;
8881
8898
  switch (t.scope) {
@@ -8887,49 +8904,49 @@ function Uo(e) {
8887
8904
  default: return !1;
8888
8905
  }
8889
8906
  }
8890
- function Wo(e) {
8891
- let t = Ho(e.description);
8907
+ function Go(e) {
8908
+ let t = Uo(e.description);
8892
8909
  if (e.scope === "unknown") return `unknown:${t}`;
8893
- let n = Ho(e.code);
8910
+ let n = Uo(e.code);
8894
8911
  return e.scope === "internal" ? `internal:${n}:${t}` : `${e.scope}:${e.source}:${n}:${t}`;
8895
8912
  }
8896
- function Go(e, t) {
8913
+ function Ko(e, t) {
8897
8914
  return t === null ? e.type === "direct-error" ? {
8898
8915
  reason: "error",
8899
- string_value: Wo(e.error)
8900
- } : { reason: "failed" } : Uo(t) ? {
8916
+ string_value: Go(e.error)
8917
+ } : { reason: "failed" } : Wo(t) ? {
8901
8918
  reason: "error",
8902
- string_value: Wo(t)
8919
+ string_value: Go(t)
8903
8920
  } : { reason: "failed" };
8904
8921
  }
8905
- function Ko(e) {
8922
+ function qo(e) {
8906
8923
  if (e.hangup) {
8907
- let t = Bo[e.hangup];
8924
+ let t = Vo[e.hangup];
8908
8925
  return t ? t.type === "semantic" ? e.hangup === D.OBSOLETE_CLIENT && e.custom_error?.vchat_detailed_api_error.code ? {
8909
8926
  reason: t.reason,
8910
8927
  string_value: e.custom_error.vchat_detailed_api_error.code
8911
- } : { reason: t.reason } : Go(t, e.callError) : { reason: "failed" };
8928
+ } : { reason: t.reason } : Ko(t, e.callError) : { reason: "failed" };
8912
8929
  }
8913
8930
  if (e.error) {
8914
- let t = Vo[e.error];
8915
- return t ? Go(t, e.callError) : { reason: "failed" };
8931
+ let t = Ho[e.error];
8932
+ return t ? Ko(t, e.callError) : { reason: "failed" };
8916
8933
  }
8917
8934
  return { reason: "failed" };
8918
8935
  }
8919
- function qo(e) {
8920
- return e instanceof O ? Ko(e) : typeof e == "string" && (Ro.has(e) || zo.has(e)) ? Ko(new O(e)) : { reason: "failed" };
8936
+ function Jo(e) {
8937
+ return e instanceof O ? qo(e) : typeof e == "string" && (zo.has(e) || Bo.has(e)) ? qo(new O(e)) : { reason: "failed" };
8921
8938
  }
8922
8939
  //#endregion
8923
8940
  //#region src/classes/stat/CallLifecycleStats.ts
8924
- var Jo = {
8941
+ var Yo = {
8925
8942
  wallNow: () => Date.now(),
8926
8943
  monotonicNow: () => performance.now()
8927
8944
  };
8928
- function Yo(e) {
8945
+ function Xo(e) {
8929
8946
  return e === "anonym_join" ? "join" : e;
8930
8947
  }
8931
- var Xo = class {
8932
- constructor(e, t = Jo) {
8948
+ var Zo = class {
8949
+ constructor(e, t = Yo) {
8933
8950
  h(this, "_logger", void 0), h(this, "_clock", void 0), h(this, "_conversationId", null), h(this, "_callStartLabel", null), h(this, "_lifecycleStartedAtMonotonic", 0), h(this, "_pendingEvents", []), h(this, "_callStarted", !1), h(this, "_accepted", !1), h(this, "_firstMediaSent", !1), h(this, "_finished", !1), h(this, "_destroyed", !1), this._logger = e, this._clock = t;
8934
8951
  }
8935
8952
  get firstMediaSentReported() {
@@ -8941,7 +8958,7 @@ var Xo = class {
8941
8958
  markInitializationStarted({ source: e, conversationId: t }) {
8942
8959
  if (this._destroyed || this._callStartLabel !== null) return;
8943
8960
  let n = this._clock.wallNow();
8944
- this._callStartLabel = Yo(e), this._lifecycleStartedAtMonotonic = this._clock.monotonicNow(), t && (this._conversationId = t), this._record({
8961
+ this._callStartLabel = Xo(e), this._lifecycleStartedAtMonotonic = this._clock.monotonicNow(), t && (this._conversationId = t), this._record({
8945
8962
  name: H.CALL_INIT,
8946
8963
  source: e
8947
8964
  }, n);
@@ -8969,7 +8986,7 @@ var Xo = class {
8969
8986
  !this._canRecord() || this._firstMediaSent || (this._firstMediaSent = !0, this._record({ name: H.FIRST_MEDIA_SENT }));
8970
8987
  }
8971
8988
  markFinished(e) {
8972
- this._finish(qo(e));
8989
+ this._finish(Jo(e));
8973
8990
  }
8974
8991
  markTerminated() {
8975
8992
  this._finish({ reason: "terminated" });
@@ -9020,7 +9037,7 @@ var Xo = class {
9020
9037
  ...n && { immediately: !0 }
9021
9038
  });
9022
9039
  }
9023
- }, Zo = class {
9040
+ }, Qo = class {
9024
9041
  constructor(e, t) {
9025
9042
  h(this, "_logger", void 0), h(this, "_codecUsages", /* @__PURE__ */ new Map()), h(this, "getCurrentTransportTopology", void 0), this._logger = e, this.getCurrentTransportTopology = t;
9026
9043
  }
@@ -9083,7 +9100,7 @@ var Xo = class {
9083
9100
  this.report(e);
9084
9101
  }), this._codecUsages.clear();
9085
9102
  }
9086
- }, Qo = class {
9103
+ }, $o = class {
9087
9104
  constructor(e) {
9088
9105
  h(this, "_logger", void 0), h(this, "_eventualLogs", /* @__PURE__ */ new Set()), h(this, "_lastCallStatContext", null), this._logger = e;
9089
9106
  }
@@ -9121,7 +9138,7 @@ var Xo = class {
9121
9138
  ...this._lastCallStatContext ?? {}
9122
9139
  }, { occurredAt: t });
9123
9140
  }
9124
- }, $o = class {
9141
+ }, es = class {
9125
9142
  constructor(e) {
9126
9143
  if (h(this, "q", void 0), h(this, "inits", []), h(this, "n", [
9127
9144
  1,
@@ -9180,7 +9197,7 @@ var Xo = class {
9180
9197
  5
9181
9198
  ];
9182
9199
  }
9183
- }, es = class {
9200
+ }, ts = class {
9184
9201
  constructor() {
9185
9202
  h(this, "n", 0), h(this, "mean", 0);
9186
9203
  }
@@ -9192,9 +9209,9 @@ var Xo = class {
9192
9209
  get avg() {
9193
9210
  return this.n ? this.mean : NaN;
9194
9211
  }
9195
- }, ts = class {
9212
+ }, ns = class {
9196
9213
  constructor() {
9197
- h(this, "count", 0), h(this, "minVal", Infinity), h(this, "maxVal", -Infinity), h(this, "mean", new es()), h(this, "p50", new $o(.5)), h(this, "p95", new $o(.95));
9214
+ h(this, "count", 0), h(this, "minVal", Infinity), h(this, "maxVal", -Infinity), h(this, "mean", new ts()), h(this, "p50", new es(.5)), h(this, "p95", new es(.95));
9198
9215
  }
9199
9216
  add(e) {
9200
9217
  e < this.minVal && (this.minVal = e), e > this.maxVal && (this.maxVal = e), this.mean.add(e), this.p50.add(e), this.p95.add(e), this.count++;
@@ -9212,11 +9229,11 @@ var Xo = class {
9212
9229
  get hasData() {
9213
9230
  return this.count > 0;
9214
9231
  }
9215
- }, ns = class {
9232
+ }, rs = class {
9216
9233
  constructor(e) {
9217
9234
  h(this, "_logger", void 0), h(this, "trackerByTransport", {
9218
- ws: new ts(),
9219
- wt: new ts()
9235
+ ws: new ns(),
9236
+ wt: new ns()
9220
9237
  }), h(this, "lastSeen", {}), this._logger = e;
9221
9238
  }
9222
9239
  mark(e) {
@@ -9245,17 +9262,17 @@ var Xo = class {
9245
9262
  }
9246
9263
  destroy() {
9247
9264
  this.trackerByTransport = {
9248
- ws: new ts(),
9249
- wt: new ts()
9265
+ ws: new ns(),
9266
+ wt: new ns()
9250
9267
  }, this.lastSeen = {};
9251
9268
  }
9252
- }, rs = class {
9269
+ }, is = class {
9253
9270
  constructor(e) {
9254
9271
  h(this, "_logger", void 0), h(this, "trackerByCommand", /* @__PURE__ */ new Map()), this._logger = e;
9255
9272
  }
9256
9273
  mark(e, t, n) {
9257
9274
  let r = `${e}|${n}`, i;
9258
- this.trackerByCommand.has(r) ? i = this.trackerByCommand.get(r) : (i = new ts(), this.trackerByCommand.set(r, i)), i.add(t);
9275
+ this.trackerByCommand.has(r) ? i = this.trackerByCommand.get(r) : (i = new ns(), this.trackerByCommand.set(r, i)), i.add(t);
9259
9276
  }
9260
9277
  logMetrics() {
9261
9278
  for (let [e, t] of this.trackerByCommand.entries()) {
@@ -9277,9 +9294,9 @@ var Xo = class {
9277
9294
  destroy() {
9278
9295
  this.trackerByCommand.clear();
9279
9296
  }
9280
- }, is = class {
9297
+ }, as = class {
9281
9298
  constructor(e, t, n, r) {
9282
- h(this, "logger", void 0), h(this, "lifecycle", void 0), h(this, "statAggregator", void 0), h(this, "codecStatsAggregator", void 0), h(this, "pings", void 0), h(this, "signalingCommands", void 0), this.logger = new Fo(e, t, n, r), this.lifecycle = new Xo(this.logger), this.statAggregator = new Qo(this.logger), this.codecStatsAggregator = new Zo(this.logger, r), this.pings = new ns(this.logger), this.signalingCommands = new rs(this.logger);
9299
+ h(this, "logger", void 0), h(this, "lifecycle", void 0), h(this, "statAggregator", void 0), h(this, "codecStatsAggregator", void 0), h(this, "pings", void 0), h(this, "signalingCommands", void 0), this.logger = new Io(e, t, n, r), this.lifecycle = new Zo(this.logger), this.statAggregator = new $o(this.logger), this.codecStatsAggregator = new Qo(this.logger, r), this.pings = new rs(this.logger), this.signalingCommands = new is(this.logger);
9283
9300
  }
9284
9301
  logHangup(e) {
9285
9302
  this.lifecycle.markFinished(e);
@@ -9290,7 +9307,7 @@ var Xo = class {
9290
9307
  destroy() {
9291
9308
  this.lifecycle.markTerminated(), this.lifecycle.destroy(), this.statAggregator.destroy(), this.codecStatsAggregator.destroy(), this.pings.destroy(), this.signalingCommands.destroy(), this.logger.destroy();
9292
9309
  }
9293
- }, as = class {
9310
+ }, os = class {
9294
9311
  constructor(e) {
9295
9312
  h(this, "_statAggregator", void 0), h(this, "_isCallMarked", !1), h(this, "_isFinished", !1), h(this, "_callType", null), this._statAggregator = e;
9296
9313
  }
@@ -9315,8 +9332,8 @@ var Xo = class {
9315
9332
  call_type: this._callType
9316
9333
  }));
9317
9334
  }
9318
- }, os = 1e3, ss = 1e4;
9319
- function cs(e, t, n, r) {
9335
+ }, ss = 1e3, cs = 1e4;
9336
+ function ls(e, t, n, r) {
9320
9337
  return new O(e, {
9321
9338
  callError: {
9322
9339
  scope: "external",
@@ -9327,11 +9344,11 @@ function cs(e, t, n, r) {
9327
9344
  message: r
9328
9345
  });
9329
9346
  }
9330
- var ls = 15, $ = class e extends b {
9347
+ var us = 15, $ = class e extends b {
9331
9348
  constructor(e, t) {
9332
- super(), h(this, "_api", void 0), h(this, "_signaling", void 0), h(this, "_signalingActor", void 0), h(this, "_displayLayoutRequester", void 0), h(this, "_mediaSource", null), h(this, "_conversation", null), h(this, "_myLastRequestedLayouts", {}), h(this, "_state", "IDLE"), h(this, "_previousState", null), h(this, "_waitingHallHoldPending", !1), h(this, "_participantState", Z.CALLED), h(this, "_participants", {}), h(this, "_directTransportIsMaster", void 0), h(this, "_transport", null), h(this, "_debugInfo", null), h(this, "_debug", R.createSessionLogger()), h(this, "_volumesDetector", null), h(this, "_speakerDetector", null), h(this, "_localVolumeDetector", null), h(this, "_specListener", null), h(this, "_activeSpeakerId", null), h(this, "_lastSignalledActiveSpeakerId", null), h(this, "_isRealTimeAsrRequested", !1), h(this, "_serverSettings", kr()), h(this, "_serverTimeOffset", 0), h(this, "_delayedHangup", !1), h(this, "_onFastHangup", void 0), h(this, "_hangupEmitted", !1), h(this, "_hangupPromise", null), h(this, "_abortController", null), h(this, "_registeredPeerReceived", !1), h(this, "_calleeUnavailableTimer", null), h(this, "_reservedId", null), h(this, "_onUnload", void 0), h(this, "_audioOutput", void 0), h(this, "_stats", void 0), h(this, "_lastStalled", {}), h(this, "_audioMixStalled", !1), h(this, "_audioFix", null), h(this, "_streamByStreamId", /* @__PURE__ */ new Map()), h(this, "_streamIdByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_streamWaitTimerByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_sequenceNumberByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_cooldownTimestampByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_cooldownQueueCleanupTimer", null), h(this, "_statFirstMediaReceived", void 0), h(this, "_toggleLocalVideo", mo((e) => {
9349
+ super(), h(this, "_api", void 0), h(this, "_signaling", void 0), h(this, "_signalingActor", void 0), h(this, "_displayLayoutRequester", void 0), h(this, "_mediaSource", null), h(this, "_conversation", null), h(this, "_myLastRequestedLayouts", {}), h(this, "_state", "IDLE"), h(this, "_previousState", null), h(this, "_waitingHallHoldPending", !1), h(this, "_participantState", Z.CALLED), h(this, "_participants", {}), h(this, "_directTransportIsMaster", void 0), h(this, "_transport", null), h(this, "_debugInfo", null), h(this, "_debug", R.createSessionLogger()), h(this, "_volumesDetector", null), h(this, "_speakerDetector", null), h(this, "_localVolumeDetector", null), h(this, "_specListener", null), h(this, "_activeSpeakerId", null), h(this, "_lastSignalledActiveSpeakerId", null), h(this, "_isRealTimeAsrRequested", !1), h(this, "_serverSettings", kr()), h(this, "_serverTimeOffset", 0), h(this, "_delayedHangup", !1), h(this, "_onFastHangup", void 0), h(this, "_hangupEmitted", !1), h(this, "_hangupPromise", null), h(this, "_abortController", null), h(this, "_registeredPeerReceived", !1), h(this, "_calleeUnavailableTimer", null), h(this, "_reservedId", null), h(this, "_onUnload", void 0), h(this, "_audioOutput", void 0), h(this, "_stats", void 0), h(this, "_lastStalled", {}), h(this, "_audioMixStalled", !1), h(this, "_audioFix", null), h(this, "_streamByStreamId", /* @__PURE__ */ new Map()), h(this, "_streamIdByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_streamWaitTimerByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_sequenceNumberByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_cooldownTimestampByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_cooldownQueueCleanupTimer", null), h(this, "_statFirstMediaReceived", void 0), h(this, "_toggleLocalVideo", ho((e) => {
9333
9350
  if (this._mediaSource) return this._stats.logger.log(C.MEDIA_STATUS, e ? "video_1" : "video_0"), this._mediaSource.toggleVideo(e);
9334
- })), h(this, "_toggleLocalAudio", mo((e) => {
9351
+ })), h(this, "_toggleLocalAudio", ho((e) => {
9335
9352
  if (this._mediaSource) return this._stats.logger.log(C.MEDIA_STATUS, e ? "audio_1" : "audio_0"), this._mediaSource.toggleAudio(e);
9336
9353
  })), h(this, "_changeMediaSettings", j.debounce(async (e) => {
9337
9354
  if (this._signaling.ready) try {
@@ -9343,21 +9360,22 @@ var ls = 15, $ = class e extends b {
9343
9360
  captureAudio: !1
9344
9361
  });
9345
9362
  }
9346
- }, 100)), this._stats = new is(e, t, () => this._conversation?.id || null, () => this._transport?.getTopology() ?? this._conversation?.topology), this._api = e, this._signaling = new za(this._debug, this._stats.logger, this._stats.statAggregator, this._stats.pings, this._stats.signalingCommands), this._signalingActor = new Do(this._onSignalingNotification.bind(this), this._debug), this._displayLayoutRequester = new Co({
9363
+ }, 100)), this._stats = new as(e, t, () => this._conversation?.id || null, () => this._transport?.getTopology() ?? this._conversation?.topology), this._api = e, this._signaling = new Ba(this._debug, this._stats.logger, this._stats.statAggregator, this._stats.pings, this._stats.signalingCommands), this._signalingActor = new Oo(this._onSignalingNotification.bind(this), this._debug), this._displayLayoutRequester = new wo({
9347
9364
  api: this._api,
9348
9365
  debug: this._debug,
9349
9366
  getParticipants: () => this._participants,
9350
9367
  isMe: (e) => this._isMe(e),
9351
- updateDisplayLayout: (e) => this.updateDisplayLayout(e)
9368
+ updateDisplayLayout: (e) => this.updateDisplayLayout(e),
9369
+ onNonFatalError: (e) => this._onNonFatalError(e)
9352
9370
  }), this._onUnload = () => {
9353
9371
  this._stopFirstMediaSentProbe(), this._conversation && this._api && this._sendHangupApi(this._conversation.id, this._state === "IDLE" ? D.CANCELED : D.HUNGUP), this._stats.destroy();
9354
- }, window.addEventListener("pagehide", this._onUnload), this._statFirstMediaReceived = new as(this._stats.statAggregator), this._audioOutput = new go(this._statFirstMediaReceived, M.transparentAudio, this._debug, this._stats.logger), M.videoTracksCount > 0 && (this._cooldownQueueCleanupTimer = window.setInterval(this._cleanupCooldownQueue.bind(this), os));
9372
+ }, window.addEventListener("pagehide", this._onUnload), this._statFirstMediaReceived = new os(this._stats.statAggregator), this._audioOutput = new _o(this._statFirstMediaReceived, M.transparentAudio, this._debug, this._stats.logger), M.videoTracksCount > 0 && (this._cooldownQueueCleanupTimer = window.setInterval(this._cleanupCooldownQueue.bind(this), ss));
9355
9373
  }
9356
9374
  static current() {
9357
9375
  return z.getActive() ?? (M.hold ? null : z.getFirst());
9358
9376
  }
9359
9377
  static hangupAfterInit(e) {
9360
- let t = us;
9378
+ let t = ds;
9361
9379
  if (t) {
9362
9380
  if (typeof e == "function" && (t._onFastHangup = e), t._delayedHangup === !1 && !t._conversation) {
9363
9381
  t._delayedHangup = !0, t._abortController?.abort(new O(D.CANCELED));
@@ -9384,6 +9402,9 @@ var ls = 15, $ = class e extends b {
9384
9402
  get isCallHeld() {
9385
9403
  return this._state === "HELD";
9386
9404
  }
9405
+ get isIncomingRinging() {
9406
+ return this._conversation?.direction === Va.INCOMING && this._state === "IDLE";
9407
+ }
9387
9408
  static debugSessionId() {
9388
9409
  return e.current()?.debugSessionId ?? null;
9389
9410
  }
@@ -9401,8 +9422,14 @@ var ls = 15, $ = class e extends b {
9401
9422
  get debugSessionId() {
9402
9423
  return this._debug.sessionId;
9403
9424
  }
9404
- getCachedRawOkIdByExternalId(e) {
9405
- return this._api.getCachedRawOkIdByExternalId(e);
9425
+ getCachedParticipantIdByExternalId(e) {
9426
+ return this._api.getCachedParticipantIdByExternalId(e);
9427
+ }
9428
+ _onNonFatalError(e) {
9429
+ L.onNonFatalError(Error(e), this.id);
9430
+ }
9431
+ getIncomingCallerExternalId() {
9432
+ return this._conversation?.direction === Va.INCOMING ? Object.values(this._participants).find((e) => !this._isMe(e.id))?.externalId ?? null : null;
9406
9433
  }
9407
9434
  _buildInternalParams() {
9408
9435
  let e = {
@@ -9412,24 +9439,24 @@ var ls = 15, $ = class e extends b {
9412
9439
  platform: M.platform,
9413
9440
  protocolVersion: M.protocolVersion,
9414
9441
  domainId: M.domain,
9415
- capabilities: xa.getFlags()
9442
+ capabilities: Sa.getFlags()
9416
9443
  };
9417
9444
  return JSON.stringify(e);
9418
9445
  }
9419
9446
  async onStart({ opponentIds: e, opponentType: t, mediaOptions: n, payload: r = "", joiningAllowed: i = !1, requireAuthToJoin: a = !1, onlyAdminCanShareMovie: o, externalIds: s, onFastStart: c, conversationId: l }) {
9420
- let u = l ?? j.uuid(), d = (e?.length ?? 0) + (s?.length ?? 0), f = t === Va.USER && d === 1 ? M.calleeUnavailableWaitingTime : void 0;
9447
+ let u = l ?? j.uuid(), d = (e?.length ?? 0) + (s?.length ?? 0), f = t === Ha.USER && d === 1 ? M.calleeUnavailableWaitingTime : void 0;
9421
9448
  this._stats.lifecycle.markInitializationStarted({
9422
9449
  source: "outgoing",
9423
9450
  conversationId: u
9424
- }), this._debug.setConversationId(u), us = this, this._abortController = new AbortController(), this._api.setAbortSignal(this._abortController?.signal), this._signaling.setAbortSignal(this._abortController?.signal);
9451
+ }), this._debug.setConversationId(u), ds = this, this._abortController = new AbortController(), this._api.setAbortSignal(this._abortController?.signal), this._signaling.setAbortSignal(this._abortController?.signal);
9425
9452
  try {
9426
9453
  this._mediaSource = this._createMediaSource(), await this._mediaSource.request(n);
9427
9454
  let l = this._mediaSource.mediaSettings;
9428
- t === Va.CHAT || e && e.length > 1 ? this._logWithMediaSettings(C.OUTGOING_MULTIPARTY_CALL, l) : this._logWithMediaSettings(C.OUTGOING_CALL, l);
9455
+ t === Ha.CHAT || e && e.length > 1 ? this._logWithMediaSettings(C.OUTGOING_MULTIPARTY_CALL, l) : this._logWithMediaSettings(C.OUTGOING_CALL, l);
9429
9456
  let d = await this._startConversation({
9430
9457
  opponentIds: e,
9431
9458
  opponentType: t,
9432
- direction: Ba.OUTGOING,
9459
+ direction: Va.OUTGOING,
9433
9460
  mediaOptions: n,
9434
9461
  payload: r,
9435
9462
  joiningAllowed: i,
@@ -9445,22 +9472,26 @@ var ls = 15, $ = class e extends b {
9445
9472
  description: "not-initialized-after-start"
9446
9473
  } });
9447
9474
  if (this._participantState = Z.ACCEPTED, this._changeMediaSettings(l), await this._processConnection(d), this._allocateTransport(), this._createSpeakerDetector(), this._createSpecListener(), this._signaling.readyToSend(), this._delayedHangup) throw new O(D.CANCELED);
9448
- return this._debug.debug("Outgoing call", {
9475
+ if (this._debug.debug("Outgoing call", {
9449
9476
  opponentIds: e,
9450
9477
  opponentType: t,
9451
9478
  mediaOptions: n
9452
- }), this._processConnectionSharedMovieInfo(d), this._processConversationUrlSharingInfo(d), L.onLocalStream(this._mediaSource.getStream(), this._mediaSource.mediaSettings, this.id), L.onConversation(this._conversation.externalId, this._conversation.mediaModifiers, this._getMuteStatesForCurrentRoom(), this._getMainRoomParticipants(), void 0, this.id), this._onConversationParticipantListChunk(d), this._processPinnedParticipants(d), L.onLocalStatus(N.WAITING, this.id), this._toggleJoinAvailability(), this._changeFeatureSet(), this._changeNeedRate(), z.add(this), await z.setActive(this.id), us = null, this._conversation.concurrent && await this._acceptConcurrent(), f && !this._registeredPeerReceived && this._state !== "CLOSE" && (this._calleeUnavailableTimer = window.setTimeout(() => {
9479
+ }), this._processConnectionSharedMovieInfo(d), this._processConversationUrlSharingInfo(d), L.onLocalStream(this._mediaSource.getStream(), this._mediaSource.mediaSettings, this.id), L.onConversation(this._conversation.externalId, this._conversation.mediaModifiers, this._getMuteStatesForCurrentRoom(), this._getMainRoomParticipants(), void 0, this.id), this._onConversationParticipantListChunk(d), this._processPinnedParticipants(d), L.onLocalStatus(N.WAITING, this.id), this._toggleJoinAvailability(), this._changeFeatureSet(), this._changeNeedRate(), this._conversation?.concurrent) {
9480
+ let e = z.get(this._conversation.id);
9481
+ e && e !== this && e._close(new O(D.HUNGUP, { remote: !0 }));
9482
+ }
9483
+ return z.add(this), await z.setActive(this.id), ds = null, this._conversation.concurrent && await this._acceptConcurrent(), f && !this._registeredPeerReceived && this._state !== "CLOSE" && (this._calleeUnavailableTimer = window.setTimeout(() => {
9453
9484
  this._calleeUnavailableTimer = null, this._close(new O(D.CALLEE_UNAVAILABLE), { signalingReason: D.CANCELED });
9454
9485
  }, f)), this._conversation;
9455
9486
  } catch (e) {
9456
- throw us = null, this._cleanupRegistry(), this._close(e, { errorText: "Unable to start conversation" }), e;
9487
+ throw ds = null, this._cleanupRegistry(), this._close(e, { errorText: "Unable to start conversation" }), e;
9457
9488
  }
9458
9489
  }
9459
9490
  async onJoin(e) {
9460
9491
  this._stats.lifecycle.markInitializationStarted({
9461
9492
  source: e.anonymous ? "anonym_join" : "join",
9462
9493
  conversationId: e.conversationId
9463
- }), us = this, this._state = "PROCESSING", this._debug.setConversationId(e.conversationId ?? null), this._abortController = new AbortController(), this._api.setAbortSignal(this._abortController?.signal), this._signaling.setAbortSignal(this._abortController?.signal);
9494
+ }), ds = this, this._state = "PROCESSING", this._debug.setConversationId(e.conversationId ?? null), this._abortController = new AbortController(), this._api.setAbortSignal(this._abortController?.signal), this._signaling.setAbortSignal(this._abortController?.signal);
9464
9495
  try {
9465
9496
  let t = !!e.observedIds?.length;
9466
9497
  if (t && M.videoTracksCount > 0) throw this._debug.error("Observer mode: please set videoTracksCount=0"), new O(D.UNSUPPORTED, { callError: {
@@ -9477,9 +9508,9 @@ var ls = 15, $ = class e extends b {
9477
9508
  code: "conversation",
9478
9509
  description: "not-initialized-after-join"
9479
9510
  } });
9480
- return this._conversation.observer = t, L.onLocalStream(this._mediaSource.getStream(), n, this.id), this._conversation.waitForAdmin || this._conversation.waitingHall ? (this._debug.log(this._conversation.waitForAdmin ? "Wait for admin" : "In waiting hall"), z.add(this), us = null, this._signaling.readyToSend(), L.onLocalStatus(this._conversation.waitForAdmin ? N.WAIT_FOR_ADMIN : N.WAITING_HALL, this.id), this._conversation) : this._onJoinPart2(r);
9511
+ return this._conversation.observer = t, L.onLocalStream(this._mediaSource.getStream(), n, this.id), this._conversation.waitForAdmin || this._conversation.waitingHall ? (this._debug.log(this._conversation.waitForAdmin ? "Wait for admin" : "In waiting hall"), z.add(this), ds = null, this._signaling.readyToSend(), L.onLocalStatus(this._conversation.waitForAdmin ? N.WAIT_FOR_ADMIN : N.WAITING_HALL, this.id), this._conversation) : this._onJoinPart2(r);
9481
9512
  } catch (e) {
9482
- throw us = null, this._cleanupRegistry(), this._close(e, { errorText: "Unable to join conversation" }), e;
9513
+ throw ds = null, this._cleanupRegistry(), this._close(e, { errorText: "Unable to join conversation" }), e;
9483
9514
  }
9484
9515
  }
9485
9516
  async _onJoinPart2(e, t = !0, n = !1) {
@@ -9494,7 +9525,7 @@ var ls = 15, $ = class e extends b {
9494
9525
  if (this._delayedHangup) throw new O(D.CANCELED);
9495
9526
  this._processConnectionSharedMovieInfo(e), this._processConversationUrlSharingInfo(e), this._processConnectionAsrInfo(e);
9496
9527
  let r = this._extractExternalRoomsData(e.rooms?.rooms, e.rooms?.roomId);
9497
- L.onConversation(this._conversation.externalId, this._conversation.mediaModifiers, this._getMuteStatesForCurrentRoom(), this._getMainRoomParticipants(), r, this.id), this._onConversationParticipantListChunk(e), this._processPinnedParticipants(e), L.onLocalStatus(N.WAITING, this.id), this._toggleJoinAvailability(), this._changeNeedRate(), t && (this._state = "ACTIVE"), this._changeFeatureSet(), t && (z.add(this), n ? await this._holdLocally() : await z.setActive(this.id), us = null);
9528
+ L.onConversation(this._conversation.externalId, this._conversation.mediaModifiers, this._getMuteStatesForCurrentRoom(), this._getMainRoomParticipants(), r, this.id), this._onConversationParticipantListChunk(e), this._processPinnedParticipants(e), L.onLocalStatus(N.WAITING, this.id), this._toggleJoinAvailability(), this._changeNeedRate(), t && (this._state = "ACTIVE"), this._changeFeatureSet(), t && (z.add(this), n ? await this._holdLocally() : await z.setActive(this.id), ds = null);
9498
9529
  let i = this._extractLocalParticipantFromConnection(e);
9499
9530
  if (i) {
9500
9531
  let e = j.mapParticipantState(i);
@@ -9502,11 +9533,15 @@ var ls = 15, $ = class e extends b {
9502
9533
  }
9503
9534
  return t && this._openTransport(Object.values(this._participants), !1), this._conversation;
9504
9535
  } catch (e) {
9505
- throw us = null, this._cleanupRegistry(), this._close(e, { errorText: "Unable to join conversation" }), e;
9536
+ throw ds = null, this._cleanupRegistry(), this._close(e, { errorText: "Unable to join conversation" }), e;
9506
9537
  }
9507
9538
  }
9508
9539
  _extractExternalRooms(e) {
9509
- return e.map(this._convertRoomToExternal.bind(this)).filter((e) => !!e);
9540
+ let t = [], n = [];
9541
+ return e.forEach((e) => {
9542
+ let { room: r, missingParticipantIds: i } = this._convertRoomToExternal(e);
9543
+ r && n.push(r), t.push(...i);
9544
+ }), this._reportMissingExternalIds(t, "EXTRACT_EXTERNAL_ROOMS"), n.filter((e) => !!e);
9510
9545
  }
9511
9546
  _extractExternalRoomsData(e, t) {
9512
9547
  if (!e || !e.length) return;
@@ -9518,7 +9553,7 @@ var ls = 15, $ = class e extends b {
9518
9553
  z.reserve(e), this._reservedId = e, this._stats.lifecycle.markInitializationStarted({
9519
9554
  source: "incoming",
9520
9555
  conversationId: e
9521
- }), this._debug.setConversationId(e), us = this, this._abortController = new AbortController(), this._api.setAbortSignal(this._abortController?.signal), this._signaling.setAbortSignal(this._abortController?.signal), a && this._api.setUserId(a);
9556
+ }), this._debug.setConversationId(e), ds = this, this._abortController = new AbortController(), this._api.setAbortSignal(this._abortController?.signal), this._signaling.setAbortSignal(this._abortController?.signal), a && this._api.setUserId(a);
9522
9557
  try {
9523
9558
  let a = await this._prepareConversation(e, t, n, r, i);
9524
9559
  if (this._mediaSource = this._createMediaSource(), !this._conversation) throw new O(D.UNKNOWN_ERROR, { callError: {
@@ -9527,20 +9562,20 @@ var ls = 15, $ = class e extends b {
9527
9562
  description: "incoming-not-initialized"
9528
9563
  } });
9529
9564
  if (!a.conversation.participants.find((e) => e.state === Z.CALLED && e.id === this._conversation?.userId)) throw this._debug.log("Push rejected (there is an active call)"), this._stats.logger.log(C.PUSH, "rejected"), new O(D.REJECTED);
9530
- if (await this._processConnection(a), this._extractConnectionUrlSharingInfo(a), this._allocateTransport(), this._createSpeakerDetector(), this._createSpecListener(), this._processPinnedParticipants(a), this._signaling.readyToSend(), this._stats.lifecycle.markCallStarted(), this._stats.logger.log(C.PUSH, "accepted"), z.add(this), us = null, this._delayedHangup) throw new O(D.CANCELED);
9565
+ if (await this._processConnection(a), this._extractConnectionUrlSharingInfo(a), this._allocateTransport(), this._createSpeakerDetector(), this._createSpecListener(), this._processPinnedParticipants(a), this._signaling.readyToSend(), this._stats.lifecycle.markCallStarted(), this._stats.logger.log(C.PUSH, "accepted"), z.add(this), ds = null, this._delayedHangup) throw new O(D.CANCELED);
9531
9566
  } catch (e) {
9532
- throw us = null, this._cleanupRegistry(), this._close(e, {
9567
+ throw ds = null, this._cleanupRegistry(), this._close(e, {
9533
9568
  errorText: "Unable to handle inbound call push",
9534
9569
  signalingReason: e instanceof O && e.hangup === D.BUSY ? D.BUSY : void 0
9535
9570
  }), e;
9536
9571
  }
9537
9572
  }
9538
9573
  _isInWaitingHall(e) {
9539
- return !e.conversation || !e.conversation.options.includes(Wa.WAITING_HALL) ? !1 : this._isRestricted(e);
9574
+ return !e.conversation || !e.conversation.options.includes(Ga.WAITING_HALL) ? !1 : this._isRestricted(e);
9540
9575
  }
9541
9576
  _isWaitForAdmin(e) {
9542
9577
  if (!e.conversation) return !1;
9543
- let t = e.conversation.options.includes(Wa.WAIT_FOR_ADMIN), n = e.conversation.options.includes(Wa.ADMIN_IS_HERE);
9578
+ let t = e.conversation.options.includes(Ga.WAIT_FOR_ADMIN), n = e.conversation.options.includes(Ga.ADMIN_IS_HERE);
9544
9579
  return !t || t && n ? !1 : this._isRestricted(e);
9545
9580
  }
9546
9581
  _isRestricted(e) {
@@ -9548,7 +9583,7 @@ var ls = 15, $ = class e extends b {
9548
9583
  return t && t.restricted || !1;
9549
9584
  }
9550
9585
  _isAudienceMode(e) {
9551
- return e.conversation?.options?.includes(Wa.AUDIENCE_MODE) || !1;
9586
+ return e.conversation?.options?.includes(Ga.AUDIENCE_MODE) || !1;
9552
9587
  }
9553
9588
  _isAudienceModeListener() {
9554
9589
  return this._conversation?.audienceMode && this._conversation?.restricted;
@@ -9578,7 +9613,7 @@ var ls = 15, $ = class e extends b {
9578
9613
  let i = atob(n), a = new Uint8Array(i.length);
9579
9614
  for (let e = 0; e < i.length; e++) a[e] = i.charCodeAt(e);
9580
9615
  try {
9581
- let e = po(a, r).reduce((e, t) => (e += String.fromCharCode(t), e), ""), { srcp: t, stne: n, tkn: i, trne: o, trnp: s, trnu: c, wse: l, wte: u } = JSON.parse(e);
9616
+ let e = mo(a, r).reduce((e, t) => (e += String.fromCharCode(t), e), ""), { srcp: t, stne: n, tkn: i, trne: o, trnp: s, trnu: c, wse: l, wte: u } = JSON.parse(e);
9582
9617
  return {
9583
9618
  token: i,
9584
9619
  endpoint: l,
@@ -9731,7 +9766,8 @@ var ls = 15, $ = class e extends b {
9731
9766
  D.CALLEE_IS_OFFLINE,
9732
9767
  D.CALLEE_UNAVAILABLE,
9733
9768
  D.CALLER_IS_BLOCKED,
9734
- D.CALLER_IS_REJECTED
9769
+ D.CALLER_IS_REJECTED,
9770
+ D.HAS_ACTIVE_CALL
9735
9771
  ].indexOf(e.hangup) !== -1 || e.hangup === D.REJECTED && !e.remote) {
9736
9772
  this._emitHangupOnce(e, i), this._destroy(r);
9737
9773
  return;
@@ -9780,10 +9816,10 @@ var ls = 15, $ = class e extends b {
9780
9816
  let t = await this._api.getConversationParams(e);
9781
9817
  this._debug.debug("Api.getConversationParams", t);
9782
9818
  let { turn_server: n, stun_server: r } = t;
9783
- return M.iceServers = fo(r, n), M.wssBase = t.endpoint, t.wt_endpoint && (M.wtsBase = t.wt_endpoint), M.wssToken = t.token, t.client_type && (M.clientType = t.client_type), t.external_user_type && (M.externalUserType = t.external_user_type), t;
9819
+ return M.iceServers = po(r, n), M.wssBase = t.endpoint, t.wt_endpoint && (M.wtsBase = t.wt_endpoint), M.wssToken = t.token, t.client_type && (M.clientType = t.client_type), t.external_user_type && (M.externalUserType = t.external_user_type), t;
9784
9820
  }
9785
9821
  _setConversationParams({ turn_server: e, stun_server: t, endpoint: n, wt_endpoint: r, token: i, client_type: a }) {
9786
- M.iceServers = fo(t, e), M.wssBase = n, M.wssToken = i, r && (M.wtsBase = r), a && (M.clientType = a);
9822
+ M.iceServers = po(t, e), M.wssBase = n, M.wssToken = i, r && (M.wtsBase = r), a && (M.clientType = a);
9787
9823
  }
9788
9824
  _buildSignalingEndpoint({ baseEndpoint: e, userId: t, type: n, deviceIdx: r, conversationId: i, token: a, conversationParams: o }) {
9789
9825
  let s = new URL(e), c = s.searchParams;
@@ -9815,10 +9851,10 @@ var ls = 15, $ = class e extends b {
9815
9851
  isVideo: f,
9816
9852
  joiningAllowed: a,
9817
9853
  requireAuthToJoin: o
9818
- }, this._abortController?.signal), !e) throw cs(D.FAST_START_ERROR, "invalid-response", "fast-start-response-empty");
9854
+ }, this._abortController?.signal), !e) throw ls(D.FAST_START_ERROR, "invalid-response", "fast-start-response-empty");
9819
9855
  if (!e.internalCallerParams) {
9820
9856
  let t = e.rejectedParticipants[0]?.status;
9821
- throw cs(D.FAST_START_ERROR, t ? "fast-start" : "invalid-response", t ?? "fast-start-internal-caller-params-empty", JSON.stringify(e));
9857
+ throw ls(D.FAST_START_ERROR, t ? "fast-start" : "invalid-response", t ?? "fast-start-internal-caller-params-empty", JSON.stringify(e));
9822
9858
  }
9823
9859
  } catch (e) {
9824
9860
  throw this._delayedHangup && this._abortController?.signal.aborted ? new O(D.CANCELED) : e instanceof O ? e : e instanceof Error ? new O(D.FAST_START_ERROR, { message: e.message }) : new O(D.FAST_START_ERROR, { message: String(e) });
@@ -9840,10 +9876,10 @@ var ls = 15, $ = class e extends b {
9840
9876
  token: new URL(t.endpoint).searchParams.get("token") ?? ""
9841
9877
  }, this._debug.debug("FastStart", p), m = "fastStart";
9842
9878
  } catch {
9843
- throw cs(D.FAST_START_ERROR, "invalid-response", "fast-start-internal-caller-params-invalid");
9879
+ throw ls(D.FAST_START_ERROR, "invalid-response", "fast-start-internal-caller-params-invalid");
9844
9880
  }
9845
9881
  } else p = await this._api.startConversation(d, e, t, f, i, a, o, { onlyAdminCanShareMovie: s }, c), this._debug.debug("Api.startConversation", p), m = "startConversation";
9846
- _o(p, m), this._setConversationParams(p), this._stats.lifecycle.bindConversationId(p.id);
9882
+ vo(p, m), this._setConversationParams(p), this._stats.lifecycle.bindConversationId(p.id);
9847
9883
  let ee = await this._connectSignaling(vr.START, p);
9848
9884
  return this._setConversation(p, ee, n), this._stats.lifecycle.markCallStarted(), ee;
9849
9885
  }
@@ -9868,9 +9904,9 @@ var ls = 15, $ = class e extends b {
9868
9904
  joinLink: i,
9869
9905
  isVideo: c,
9870
9906
  internalParams: this._buildInternalParams()
9871
- }, this._abortController?.signal), !e) throw cs(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-response-empty");
9872
- if (!e.internalCallerParams) throw cs(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-internal-caller-params-empty", JSON.stringify(e));
9873
- if (!e.conversationId) throw cs(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-conversation-id-empty", JSON.stringify(e));
9907
+ }, this._abortController?.signal), !e) throw ls(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-response-empty");
9908
+ if (!e.internalCallerParams) throw ls(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-internal-caller-params-empty", JSON.stringify(e));
9909
+ if (!e.conversationId) throw ls(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-conversation-id-empty", JSON.stringify(e));
9874
9910
  } catch (e) {
9875
9911
  throw this._delayedHangup && this._abortController?.signal.aborted ? new O(D.CANCELED) : e instanceof O ? e : e instanceof Error ? new O(D.FAST_JOIN_ERROR, { message: e.message }) : new O(D.FAST_JOIN_ERROR, { message: String(e) });
9876
9912
  }
@@ -9888,7 +9924,7 @@ var ls = 15, $ = class e extends b {
9888
9924
  token: new URL(t.endpoint).searchParams.get("token") ?? ""
9889
9925
  }, this._debug.debug("FastJoin", l), u = "fastJoin";
9890
9926
  } catch (e) {
9891
- throw e instanceof O ? e : cs(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-internal-caller-params-invalid");
9927
+ throw e instanceof O ? e : ls(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-internal-caller-params-invalid");
9892
9928
  }
9893
9929
  } else if (t) l = await this._api.joinConversation(t, c, r), u = "joinConversation";
9894
9930
  else if (i) l = await this._api.joinConversationByLink(i, c, a, o), u = "joinConversationByLink";
@@ -9897,13 +9933,13 @@ var ls = 15, $ = class e extends b {
9897
9933
  code: "join",
9898
9934
  description: "target-missing"
9899
9935
  } });
9900
- if (this._debug.debug("Api.joinConversation", l), l.id && this._stats.lifecycle.bindConversationId(l.id), _o(l, u), l.id) {
9936
+ if (this._debug.debug("Api.joinConversation", l), l.id && this._stats.lifecycle.bindConversationId(l.id), vo(l, u), l.id) {
9901
9937
  if (z.has(l.id)) throw new O(D.HAS_ACTIVE_CALL);
9902
9938
  z.reserve(l.id), this._reservedId = l.id;
9903
9939
  }
9904
9940
  this._setConversationParams(l);
9905
9941
  let d = await this._connectSignaling(vr.JOIN, l);
9906
- return this._setConversation(l, d, Ba.JOINING), this._stats.lifecycle.markCallStarted(), d;
9942
+ return this._setConversation(l, d, Va.JOINING), this._stats.lifecycle.markCallStarted(), d;
9907
9943
  }
9908
9944
  async _prepareConversation(e, t = A.USER, n, r, i) {
9909
9945
  W.setMark(H.SIGNALING_CONNECTED), this._debug.debug("Conversation: push", {
@@ -9965,7 +10001,7 @@ var ls = 15, $ = class e extends b {
9965
10001
  }), l.wt_endpoint = c);
9966
10002
  }
9967
10003
  let u = await this._connectSignaling(vr.ACCEPT, l);
9968
- return z.callsLength >= M.maxParallelCalls || !M.hold && z.callsLength > 0 ? (this._debug.log("Push rejected (busy)"), this._stats.logger.log(C.PUSH, "busy"), Promise.reject(new O(D.BUSY))) : (this._setConversation(l, u, Ba.INCOMING, t), u);
10004
+ return z.callsLength >= M.maxParallelCalls || !M.hold && z.callsLength > 0 ? (this._debug.log("Push rejected (busy)"), this._stats.logger.log(C.PUSH, "busy"), Promise.reject(new O(D.BUSY))) : (this._setConversation(l, u, Va.INCOMING, t), u);
9969
10005
  }
9970
10006
  _createParticipant(e, t, n = !0) {
9971
10007
  let r = Object.assign({
@@ -9988,19 +10024,17 @@ var ls = 15, $ = class e extends b {
9988
10024
  isInRoom: !1,
9989
10025
  markers: null
9990
10026
  }, e), i = !!r.externalId;
9991
- return i || (r.externalId = this._getParticipantId(t ?? r.id)), n && i && this._api.cacheExternalId(t ?? r.id, r.externalId), t && this._api.mapDecorativeId(t, r.id), r.observedIds?.length && (r.externalId.observer = !0), e.markers && (r.markers = this._denormalizeMarkers(r.id, e.markers)), r.connectionStatus = eo.create(r.connectionStatus), r;
10027
+ if (!i) {
10028
+ let e = this._getParticipantId(t ?? r.id);
10029
+ e && (r.externalId = e);
10030
+ }
10031
+ return n && i && this._api.cacheExternalId(t ?? r.id, r.externalId), t && this._api.mapDecorativeId(t, r.id), r.observedIds?.length && r.externalId && (r.externalId.observer = !0), e.markers && (r.markers = this._denormalizeMarkers(r.id, e.markers)), r.connectionStatus = to.create(r.connectionStatus), r;
9992
10032
  }
9993
10033
  _getParticipantId(e) {
9994
- try {
9995
- return this._api.userId(e);
9996
- } catch (e) {
9997
- throw this._close(e instanceof O ? e : new O(D.NETWORK_ERROR, { callError: {
9998
- scope: "network",
9999
- source: "api",
10000
- code: "fetch-failed",
10001
- description: "request-failed"
10002
- } }), { errorText: e }), e;
10003
- }
10034
+ let t = this._api.userId(e);
10035
+ if (t) return t;
10036
+ let { compositeUserId: n, deviceIdx: r } = j.decomposeParticipantId(e), { id: i, type: a } = j.decomposeId(n);
10037
+ return a === A.GROUP ? Q.fromId(String(i), void 0, r) : null;
10004
10038
  }
10005
10039
  _cacheParticipantExternalIds(e) {
10006
10040
  e.forEach((e) => {
@@ -10008,7 +10042,7 @@ var ls = 15, $ = class e extends b {
10008
10042
  if (n) {
10009
10043
  this._api.cacheExternalId(t, n);
10010
10044
  let r = j.composeDecorativeId(e), i = Q.fromSignalingParticipant(e);
10011
- r && i && (this._api.cacheExternalId(r, i), this._api.mapDecorativeId(e.decorativeUserId, e.id));
10045
+ r && i && (this._api.cacheExternalId(r, i), this._api.mapDecorativeId(r, t));
10012
10046
  }
10013
10047
  });
10014
10048
  }
@@ -10057,7 +10091,11 @@ var ls = 15, $ = class e extends b {
10057
10091
  audienceMode: this._isAudienceMode(t),
10058
10092
  restricted: this._isRestricted(t),
10059
10093
  urlSharingInfoByRoom: /* @__PURE__ */ new Map()
10060
- }, this._debug.setConversationId(t.conversation.id || e.id), e.p2p_forbidden && (M.forceRelayPolicy = e.p2p_forbidden), this._stats.logger.log(C.RELAY_POLICY, M.forceRelayPolicy ? "1" : "0"), this._changeFeatureSet(), this._changeFeaturesPerRole(), this._logDevices();
10094
+ }, this._debug.setConversationId(t.conversation.id || e.id), e.p2p_forbidden && (M.forceRelayPolicy = e.p2p_forbidden), this._stats.logger.log(C.RELAY_POLICY, M.forceRelayPolicy ? "1" : "0");
10095
+ let l = z.get(this._conversation.id);
10096
+ if (l && l !== this) this._conversation.concurrent = !0;
10097
+ else if (!M.hold && z.callsLength > 0) throw new O(D.HAS_ACTIVE_CALL);
10098
+ this._changeFeatureSet(), this._changeFeaturesPerRole(), this._logDevices();
10061
10099
  }
10062
10100
  _updateConversation(e) {
10063
10101
  if (!this._conversation) throw new O(D.UNKNOWN_ERROR, { callError: {
@@ -10069,7 +10107,7 @@ var ls = 15, $ = class e extends b {
10069
10107
  }
10070
10108
  _createMediaSource() {
10071
10109
  let e = new Yt(this._debug, this._stats.logger);
10072
- return this.subscribe(e, qt.SOURCE_CHANGED, this._onLocalMediaStreamChanged.bind(this)), this.subscribe(e, qt.SCREEN_STATUS, this._onScreenSharingStatus.bind(this)), this._audioFix = new ho(e, this._debug, this._stats.logger), e;
10110
+ return this.subscribe(e, qt.SOURCE_CHANGED, this._onLocalMediaStreamChanged.bind(this)), this.subscribe(e, qt.SCREEN_STATUS, this._onScreenSharingStatus.bind(this)), this._audioFix = new go(e, this._debug, this._stats.logger), e;
10073
10111
  }
10074
10112
  async _connectSignaling(e, t) {
10075
10113
  this._signaling.setEndpoint(t.endpoint), this._signaling.setWebTransportEndpoint(t.wt_endpoint ? t.wt_endpoint : null), this.subscribe(this._signaling, G.NOTIFICATION, (e) => this._signalingActor.add(e)), this.subscribe(this._signaling, G.FAILED, this._onSignalingFailed.bind(this)), this.subscribe(this._signaling, G.RECONNECT, this._onSignalingReconnect.bind(this));
@@ -10077,7 +10115,7 @@ var ls = 15, $ = class e extends b {
10077
10115
  return this._stats.statAggregator.logEventualStat({ name: H.SIGNALING_CONNECTED }), n;
10078
10116
  }
10079
10117
  async _processConnection(e) {
10080
- await this._registerConnectionParticipants(e), this._processRooms(e), this._processMuteStates(e), this._processRecordInfos(e), this._onOptionsChanged(e.conversation.options), e.chatRoom && e.chatRoom.totalCount && this._onChatRoomUpdated(Ha.ATTENDEE, e.chatRoom.totalCount, e.chatRoom.firstParticipants, null, null);
10118
+ await this._registerConnectionParticipants(e), this._processRooms(e), this._processMuteStates(e), this._processRecordInfos(e), this._onOptionsChanged(e.conversation.options), e.chatRoom && e.chatRoom.totalCount && this._onChatRoomUpdated(Ua.ATTENDEE, e.chatRoom.totalCount, e.chatRoom.firstParticipants, null, null);
10081
10119
  }
10082
10120
  _onConversationParticipantListChunk(e) {
10083
10121
  let t = e.participants;
@@ -10146,7 +10184,7 @@ var ls = 15, $ = class e extends b {
10146
10184
  _registerParticipantLocalMuteState({ muteStates: e, unmuteOptions: t }) {
10147
10185
  if (!e) return;
10148
10186
  let n = async () => {
10149
- let n = io(e, qa.MUTE), r = io(e, qa.MUTE_PERMANENT);
10187
+ let n = ao(e, Ja.MUTE), r = ao(e, Ja.MUTE_PERMANENT);
10150
10188
  for (let i of [n, r]) i.length && await this._onMuteParticipant({
10151
10189
  muteStates: e,
10152
10190
  unmuteOptions: t,
@@ -10160,8 +10198,8 @@ var ls = 15, $ = class e extends b {
10160
10198
  if (!(!M.enableSessionStateUpdates || this._isMe(e))) return t;
10161
10199
  }
10162
10200
  _buildConnectionStatus(e, t, n, r = !1) {
10163
- return eo.create({
10164
- transport: r ? N.ONHOLD : eo.fromTransportState(n) ?? N.WAITING,
10201
+ return to.create({
10202
+ transport: r ? N.ONHOLD : to.fromTransportState(n) ?? N.WAITING,
10165
10203
  sessionState: this._remoteParticipantSessionState(e, t),
10166
10204
  sessionStateApplicable: this._isParticipantSessionStateApplicable(e)
10167
10205
  });
@@ -10170,12 +10208,12 @@ var ls = 15, $ = class e extends b {
10170
10208
  return M.enableSessionStateUpdates && !this._isMe(e) && this._conversation?.topology === J.SERVER;
10171
10209
  }
10172
10210
  _setTransportStatus(e, t) {
10173
- return eo.setTransport(e.connectionStatus, t);
10211
+ return to.setTransport(e.connectionStatus, t);
10174
10212
  }
10175
10213
  _setSessionState(e, t) {
10176
- let n = eo.setSessionStateApplicable(e.connectionStatus, this._isParticipantSessionStateApplicable(e.id));
10214
+ let n = to.setSessionStateApplicable(e.connectionStatus, this._isParticipantSessionStateApplicable(e.id));
10177
10215
  this._emitParticipantTransition(e, n);
10178
- let r = e.connectionStatus.sessionStateApplicable && e.id === this._activeSpeakerId && e.connectionStatus.transport === N.CONNECTED, i = eo.setSessionState(e.connectionStatus, t, r);
10216
+ let r = e.connectionStatus.sessionStateApplicable && e.id === this._activeSpeakerId && e.connectionStatus.transport === N.CONNECTED, i = to.setSessionState(e.connectionStatus, t, r);
10179
10217
  return this._emitParticipantTransition(e, i), i;
10180
10218
  }
10181
10219
  _emitParticipantTransition(e, t, n = null) {
@@ -10187,33 +10225,40 @@ var ls = 15, $ = class e extends b {
10187
10225
  _getExistedParticipantByIdOrCreate(e) {
10188
10226
  let t = this._participants[e];
10189
10227
  if (t) return t;
10190
- let n = this._api.getDecorativeIdByInitialId(j.decomposeId(e).id), r = n ? j.composeUserId(n) : void 0, i = this._getParticipantId(e), { deviceIdx: a } = j.decomposeParticipantId(e);
10228
+ let n = this._api.getDecorativeIdByInitialId(e), r = this._getParticipantId(e), { deviceIdx: i } = j.decomposeParticipantId(e);
10191
10229
  return this._createParticipant({
10192
10230
  id: e,
10193
- externalId: {
10194
- ...i,
10195
- deviceIdx: a
10196
- }
10197
- }, r, !1);
10231
+ externalId: r ? {
10232
+ ...r,
10233
+ deviceIdx: i
10234
+ } : void 0
10235
+ }, n, !1);
10198
10236
  }
10199
10237
  _getExternalIdByParticipantId(e) {
10200
- if (this._isMe(e)) return this._conversation?.externalId;
10238
+ if (this._isMe(e)) return this._conversation?.externalId ?? null;
10201
10239
  if (M.useParticipantListChunk) return this._getExistedParticipantByIdOrCreate(e).externalId;
10202
10240
  let t = this._participants;
10203
10241
  if (t[e]?.externalId) return t[e].externalId;
10204
- {
10205
- let t = this._getParticipantId(e);
10206
- return this._api.cacheExternalId(e, t), t;
10207
- }
10242
+ let n = this._api.getCachedExternalIdByParticipantId(e);
10243
+ if (n) return n;
10244
+ let r = this._getParticipantId(e);
10245
+ return r && this._api.cacheExternalId(e, r), r;
10246
+ }
10247
+ _getExternalIdsByParticipantIds(e) {
10248
+ let t = [], n = [];
10249
+ return e.forEach((e) => {
10250
+ let r = this._getExternalIdByParticipantId(e);
10251
+ r ? t.push(r) : n.push(e);
10252
+ }), {
10253
+ externalIds: t,
10254
+ missingIds: n
10255
+ };
10208
10256
  }
10209
- _getExternalIdsByOkIdsFromCache(e) {
10210
- return e.map((e) => this._api.getCachedExternalIdByOkId(e) ?? Q.fromId(String(e)));
10257
+ _reportMissingExternalIds(e, t) {
10258
+ e.length && this._onNonFatalError(`External ID mapping not found for participants "${Array.from(new Set(e)).join("\", \"")}" while handling ${t}`);
10211
10259
  }
10212
- _getOrCacheExternalIdByCompositeId(e) {
10213
- let t = j.extractOkId(e), n = this._api.getCachedExternalIdByOkId(t);
10214
- if (n) return n;
10215
- let r = Q.fromId(String(t));
10216
- return this._api.cacheExternalId(e, r), r;
10260
+ _reportMissingExternalIdsById(e, t) {
10261
+ e.length && this._onNonFatalError(`Participant ID mapping not found for external IDs "${Array.from(new Set(e)).join("\", \"")}" while handling ${t}`);
10217
10262
  }
10218
10263
  _registerParticipantAndSetMarkersIfChunkEnabled(e, t) {
10219
10264
  if (M.useParticipantListChunk) {
@@ -10239,11 +10284,11 @@ var ls = 15, $ = class e extends b {
10239
10284
  this._onRoomSwitched(t, !0);
10240
10285
  }
10241
10286
  _processMuteStates(e, t = !1) {
10242
- let n = ao(e);
10287
+ let n = oo(e);
10243
10288
  this._setMuteStatesForRoomId(n, null);
10244
10289
  for (let t of e.rooms?.rooms ?? []) this._setMuteStatesForRoomId(t.muteStates, t.id);
10245
10290
  let r = this._getMuteStatesForCurrentRoom();
10246
- t && (r = lo(e, r));
10291
+ t && (r = uo(e, r));
10247
10292
  let i = Object.keys(r), a = this._conversation?.roomId;
10248
10293
  i.length && this._onMuteParticipant({
10249
10294
  muteStates: r,
@@ -10263,15 +10308,15 @@ var ls = 15, $ = class e extends b {
10263
10308
  }
10264
10309
  _allocateTransport() {
10265
10310
  if (!this._conversation || !this._mediaSource) return;
10266
- this._transport = new la(this._conversation.topology, this._signaling, this._mediaSource, this._serverSettings, this._debug, this._stats.logger, this._stats.statAggregator, this._stats.codecStatsAggregator, this._getFirstMediaSentCallback()), this._debugInfo = new So(this._debug), this.subscribe(this._transport, X.STATE_CHANGED, this._onTransportStateChanged.bind(this)), this.subscribe(this._transport, X.LOCAL_STATE_CHANGED, this._onTransportLocalStateChanged.bind(this)), this.subscribe(this._transport, X.REMOTE_TRACK_ADDED, this._onRemoteTrackAdded.bind(this)), this.subscribe(this._transport, X.REMOTE_TRACK_REMOVED, this._onRemoteTrackRemoved.bind(this)), this.subscribe(this._transport, X.AUDIO_MIX_STALL, this._onAudioMixStall.bind(this)), this.subscribe(this._transport, X.REMOTE_DATA_STATS, this._onRemoteDataStats.bind(this)), this.subscribe(this._transport, X.SIGNALLED_STALLED_PARTICIPANTS, this._onRemoteSignalledStall.bind(this)), this.subscribe(this._transport, X.TOPOLOGY_CHANGED, this._onTopologyChanged.bind(this)), this.subscribe(this._transport, X.NETWORK_STATUS, this._onNetworkStatus.bind(this)), this.subscribe(this._transport, X.REMOTE_STREAM_SECOND, this._onRemoteStreamSecond.bind(this)), this.subscribe(this._transport, X.PEER_CONNECTION_CLOSED, this._onPeerConnectionClosed.bind(this)), this.subscribe(this._transport, X.ASR_TRANSCRIPTION, this._onAsrTranscription.bind(this)), this.subscribe(this._transport, X.ANIMOJI_STREAM, this._onAnimojiStream.bind(this)), this.subscribe(this._transport, X.ANIMOJI_ERROR, this._onAnimojiError.bind(this));
10267
- let e = this._conversation.direction === Ba.OUTGOING && !this._conversation.concurrent, t = this._participants;
10311
+ this._transport = new ua(this._conversation.topology, this._signaling, this._mediaSource, this._serverSettings, this._debug, this._stats.logger, this._stats.statAggregator, this._stats.codecStatsAggregator, this._getFirstMediaSentCallback()), this._debugInfo = new Co(this._debug), this.subscribe(this._transport, X.STATE_CHANGED, this._onTransportStateChanged.bind(this)), this.subscribe(this._transport, X.LOCAL_STATE_CHANGED, this._onTransportLocalStateChanged.bind(this)), this.subscribe(this._transport, X.REMOTE_TRACK_ADDED, this._onRemoteTrackAdded.bind(this)), this.subscribe(this._transport, X.REMOTE_TRACK_REMOVED, this._onRemoteTrackRemoved.bind(this)), this.subscribe(this._transport, X.AUDIO_MIX_STALL, this._onAudioMixStall.bind(this)), this.subscribe(this._transport, X.REMOTE_DATA_STATS, this._onRemoteDataStats.bind(this)), this.subscribe(this._transport, X.SIGNALLED_STALLED_PARTICIPANTS, this._onRemoteSignalledStall.bind(this)), this.subscribe(this._transport, X.TOPOLOGY_CHANGED, this._onTopologyChanged.bind(this)), this.subscribe(this._transport, X.NETWORK_STATUS, this._onNetworkStatus.bind(this)), this.subscribe(this._transport, X.REMOTE_STREAM_SECOND, this._onRemoteStreamSecond.bind(this)), this.subscribe(this._transport, X.PEER_CONNECTION_CLOSED, this._onPeerConnectionClosed.bind(this)), this.subscribe(this._transport, X.ASR_TRANSCRIPTION, this._onAsrTranscription.bind(this)), this.subscribe(this._transport, X.ANIMOJI_STREAM, this._onAnimojiStream.bind(this)), this.subscribe(this._transport, X.ANIMOJI_ERROR, this._onAnimojiError.bind(this));
10312
+ let e = this._conversation.direction === Va.OUTGOING && !this._conversation.concurrent, t = this._participants;
10268
10313
  for (let n of Object.values(t)) (n.state === Z.ACCEPTED || n.state === Z.CALLED) && this._allocateParticipantTransport(n.id, e);
10269
10314
  }
10270
10315
  _createSpeakerDetector() {
10271
- this._transport && this._conversation && (this._volumesDetector = new ko(this._transport), this.subscribe(this._volumesDetector, Oo.VOLUMES_DETECTED, this._onVolumesDetected.bind(this)), this._speakerDetector = new jo(this._volumesDetector, this._transport, this._conversation.topology), this.subscribe(this._speakerDetector, Ao.SPEAKER_CHANGED, this._onSpeakerChanged.bind(this)), this._localVolumeDetector = new Eo(this._mediaSource));
10316
+ this._transport && this._conversation && (this._volumesDetector = new Ao(this._transport), this.subscribe(this._volumesDetector, ko.VOLUMES_DETECTED, this._onVolumesDetected.bind(this)), this._speakerDetector = new Mo(this._volumesDetector, this._transport, this._conversation.topology), this.subscribe(this._speakerDetector, jo.SPEAKER_CHANGED, this._onSpeakerChanged.bind(this)), this._localVolumeDetector = new Do(this._mediaSource));
10272
10317
  }
10273
10318
  _createSpecListener() {
10274
- this._transport && this._volumesDetector && (this._specListener = new Po(this._transport, this._volumesDetector, this._participants, this._debug, this._stats.logger));
10319
+ this._transport && this._volumesDetector && (this._specListener = new Fo(this._transport, this._volumesDetector, this._participants, this._debug, this._stats.logger));
10275
10320
  }
10276
10321
  _logDevices() {
10277
10322
  let e = T.getCameras().length, t = T.getMicrophones().length;
@@ -10370,7 +10415,7 @@ var ls = 15, $ = class e extends b {
10370
10415
  _onRemoveParticipant(e) {
10371
10416
  this._debug.debug(`Remove participant [${e}]`);
10372
10417
  let t = [], n = this._participants;
10373
- for (let r = 0; r <= ls; r++) {
10418
+ for (let r = 0; r <= us; r++) {
10374
10419
  let i = n[j.compose(e, r)];
10375
10420
  i && t.push(i);
10376
10421
  }
@@ -10460,11 +10505,11 @@ var ls = 15, $ = class e extends b {
10460
10505
  this._waitingHallHoldPending = !1, await this._resumeLocalMedia(t, this._getWaitingForPromotionStatus()), this._allocateTransport(), this._createSpeakerDetector(), this._createSpecListener();
10461
10506
  return;
10462
10507
  }
10463
- let n = ya.get();
10508
+ let n = ba.get();
10464
10509
  await this._signaling.hold(!1, n), this._restoreStateAfterHold();
10465
10510
  let r = null;
10466
10511
  if (this._state === "IDLE" && this._participantState === Z.ACCEPTED && (r = Object.values(this._participants), r.some((e) => e.state === Z.ACCEPTED) && (this._state = "ACTIVE", this._changeFeatureSet())), await this._resumeLocalMedia(t, N.WAITING), this._allocateTransport(), this._createSpeakerDetector(), this._createSpecListener(), this._state === "ACTIVE") {
10467
- let e = this._conversation?.direction === Ba.OUTGOING && !this._conversation.concurrent;
10512
+ let e = this._conversation?.direction === Va.OUTGOING && !this._conversation.concurrent;
10468
10513
  this._openTransport(r ?? Object.values(this._participants), e);
10469
10514
  }
10470
10515
  }
@@ -10498,30 +10543,34 @@ var ls = 15, $ = class e extends b {
10498
10543
  async updateDisplayLayout(e) {
10499
10544
  if (e.length < 1 || !this._signaling.ready) return;
10500
10545
  this._debug.log(`Update display layout request [${this._signaling.getNextCommandSequenceNumber()}]`, e);
10501
- let t = {}, n = [], r = this._participants;
10502
- for (let i of e) {
10503
- let e = typeof i.uid == "object" ? i.uid : Q.fromId(i.uid), a = this._api.getCachedOkIdByExternalId(e);
10504
- if (!a) {
10546
+ let t = {}, n = [], r = [], i = this._participants;
10547
+ for (let a of e) {
10548
+ let e = typeof a.uid == "object" ? a.uid : Q.fromId(a.uid), o = this._api.getCachedParticipantIdByExternalId(e);
10549
+ if (!o) {
10505
10550
  let t = Q.toString(e);
10506
- this._debug.log(`Unknown participant external ID ${t}`);
10551
+ this._debug.log(`Unknown participant external ID ${t}`), r.push(e.id);
10507
10552
  continue;
10508
10553
  }
10509
- let o = Mn({
10510
- participantId: a,
10511
- mediaType: i.mediaType,
10512
- streamName: i.streamName
10513
- }), s = r[a];
10514
- s ? n.push(() => {
10515
- s.lastRequestedLayouts[o] = i;
10516
- }) : this._isMe(a) && n.push(() => {
10517
- this._myLastRequestedLayouts[o] = i;
10518
- }), Dn(i) ? (this._isMe(a) && n.push(() => {
10519
- delete this._myLastRequestedLayouts[o];
10520
- }), this._streamIdByStreamDescription.has(o) && !this._cooldownTimestampByStreamDescription.has(o) && this._cooldownTimestampByStreamDescription.set(o, Date.now())) : (this._cooldownTimestampByStreamDescription.delete(o), !this._streamIdByStreamDescription.has(o) && M.videoTracksCount > 0 && this._streamIdByStreamDescription.set(o, null), t[o] = i), i.mediaType === V.SCREEN && !Dn(i) && W.setMark(W.getMarkNameScreenshareFirstFrame(a));
10521
- }
10522
- let i = this._cooldownTimestampByStreamDescription.keys();
10554
+ let s = Mn({
10555
+ participantId: o,
10556
+ mediaType: a.mediaType,
10557
+ streamName: a.streamName
10558
+ }), c = i[o];
10559
+ c ? n.push(() => {
10560
+ c.lastRequestedLayouts[s] = a;
10561
+ }) : this._isMe(o) && n.push(() => {
10562
+ this._myLastRequestedLayouts[s] = a;
10563
+ }), Dn(a) ? (this._isMe(o) && n.push(() => {
10564
+ delete this._myLastRequestedLayouts[s];
10565
+ }), this._streamIdByStreamDescription.has(s) && !this._cooldownTimestampByStreamDescription.has(s) && this._cooldownTimestampByStreamDescription.set(s, Date.now())) : (this._cooldownTimestampByStreamDescription.delete(s), !this._streamIdByStreamDescription.has(s) && M.videoTracksCount > 0 && this._streamIdByStreamDescription.set(s, null), t[s] = a), a.mediaType === V.SCREEN && !Dn(a) && W.setMark(W.getMarkNameScreenshareFirstFrame(o));
10566
+ }
10567
+ if (r.length) {
10568
+ this._reportMissingExternalIdsById(r, "updateDisplayLayout");
10569
+ return;
10570
+ }
10571
+ let a = this._cooldownTimestampByStreamDescription.keys();
10523
10572
  for (; this._streamIdByStreamDescription.size > M.videoTracksCount;) {
10524
- let e = i.next();
10573
+ let e = a.next();
10525
10574
  if (e.done) {
10526
10575
  this._debug.error("Cannot accommodate all streaming requests: tracks available " + M.videoTracksCount + "; requested streams: " + Array.from(this._streamIdByStreamDescription.keys()));
10527
10576
  break;
@@ -10583,13 +10632,13 @@ var ls = 15, $ = class e extends b {
10583
10632
  let n = Nn(e), a = i[n.participantId];
10584
10633
  if (a) {
10585
10634
  let e;
10586
- typeof t == "number" ? e = Xa(t) : (this._debug.warn(`Unexpected error code ${t} received for participant ${n.participantId}`), e = Ya.UNKNOWN_ERROR), r.push({
10635
+ typeof t == "number" ? e = Za(t) : (this._debug.warn(`Unexpected error code ${t} received for participant ${n.participantId}`), e = Xa.UNKNOWN_ERROR), r.push({
10587
10636
  externalId: a.externalId,
10588
10637
  errorReason: e
10589
10638
  });
10590
10639
  }
10591
10640
  }
10592
- if (r && r.length && (this._debug.warn("Could not allocate one or more participants", r), t)) throw new ds("Could not allocate one or more participants", r);
10641
+ if (r && r.length && (this._debug.warn("Could not allocate one or more participants", r), t)) throw new fs("Could not allocate one or more participants", r);
10593
10642
  }
10594
10643
  async _cleanupCooldownQueue() {
10595
10644
  let e = {}, t = this._cooldownTimestampByStreamDescription.entries();
@@ -10597,7 +10646,7 @@ var ls = 15, $ = class e extends b {
10597
10646
  let n = t.next();
10598
10647
  if (n.done) break;
10599
10648
  let r = n.value;
10600
- if (r[1] + ss > Date.now()) break;
10649
+ if (r[1] + cs > Date.now()) break;
10601
10650
  let i = r[0];
10602
10651
  await this._stopStreaming(i), e[i] = { stopStream: !0 };
10603
10652
  } while (!0);
@@ -10613,17 +10662,22 @@ var ls = 15, $ = class e extends b {
10613
10662
  async _onParticipantPromoted(e) {
10614
10663
  this._conversation && this._conversation.audienceMode ? (this._debug.log("Promoted in audience mode", !e.demote), this._conversation.restricted = e.demote, this._processRecordInfos(e), !e.demote && this._mediaSource && this._changeMediaSettings(this._mediaSource.mediaSettings)) : (this._debug.log("Promoted in waiting hall", !e.demote), e.demote ? (this._debug.log("Kicked from waiting hall"), this._close(new O(D.REMOVED))) : (this._updateConversation(e), this._waitingHallHoldPending ? (await this._signaling.hold(!0), await this._onJoinPart2(e, !1), this._waitingHallHoldPending = !1) : z.getActive() && M.hold ? (await this._signaling.hold(!0), await this._onJoinPart2(e, !0, !0), this._waitingHallHoldPending = !1) : await this._onJoinPart2(e))), L.onPromoted(e.demote, this.id);
10615
10664
  }
10616
- async _onChatRoomUpdated(e, t = 0, n = [], r, i) {
10665
+ _onChatRoomUpdated(e, t = 0, n = [], r, i) {
10617
10666
  this._debug.log(`Chat room updated: ${e}`);
10618
- let a = [];
10667
+ let a = [], o = [];
10619
10668
  n.length && n.forEach((e) => {
10620
10669
  if (e.externalId) {
10621
10670
  let t = Q.fromSignaling(e.externalId);
10622
10671
  a.push(t), this._api.cacheExternalId(e.id.id, t);
10623
- } else a.push(this._getOrCacheExternalIdByCompositeId(e.id.id));
10672
+ } else {
10673
+ let t = this._getExternalIdByParticipantId(e.id.id);
10674
+ t ? a.push(t) : o.push(e.id.id);
10675
+ }
10624
10676
  });
10625
- let o = r?.map((e) => this._getOrCacheExternalIdByCompositeId(e)) ?? [], s = i?.map((e) => this._getOrCacheExternalIdByCompositeId(e)) ?? [];
10626
- L.onChatRoomUpdated(e, t, a, o, s, this.id);
10677
+ let { externalIds: s, missingIds: c } = this._getExternalIdsByParticipantIds(r ?? []);
10678
+ o.push(...c);
10679
+ let { externalIds: l, missingIds: u } = this._getExternalIdsByParticipantIds(i ?? []);
10680
+ o.push(...u), this._reportMissingExternalIds(o, "CHAT_ROOM_UPDATED"), L.onChatRoomUpdated(e, t, a, s, l, this.id);
10627
10681
  }
10628
10682
  _onSharedMovieUpdate(e) {
10629
10683
  let t = this._conversation?.externalId;
@@ -10796,10 +10850,10 @@ var ls = 15, $ = class e extends b {
10796
10850
  throw Error("transport is not initialized");
10797
10851
  }
10798
10852
  _isCallAdmin() {
10799
- return this._conversation ? j.includesOneOf(this._conversation.roles, [Za.ADMIN, Za.CREATOR]) : !1;
10853
+ return this._conversation ? j.includesOneOf(this._conversation.roles, [Qa.ADMIN, Qa.CREATOR]) : !1;
10800
10854
  }
10801
10855
  _checkAdminRole() {
10802
- if (this._conversation && !j.includesOneOf(this._conversation.roles, [Za.ADMIN, Za.CREATOR])) throw Error("You don't have the required permission");
10856
+ if (this._conversation && !j.includesOneOf(this._conversation.roles, [Qa.ADMIN, Qa.CREATOR])) throw Error("You don't have the required permission");
10803
10857
  }
10804
10858
  _isCalledState() {
10805
10859
  return this._participantState === Z.CALLED;
@@ -10837,43 +10891,46 @@ var ls = 15, $ = class e extends b {
10837
10891
  async changeOptions(e) {
10838
10892
  if (this._signaling.ready && this._conversation) {
10839
10893
  this._checkAdminRole(), await this._signaling.changeOptions(e);
10840
- let t = Ka(this._conversation.options, e);
10894
+ let t = qa(this._conversation.options, e);
10841
10895
  this._onOptionsChanged(t);
10842
10896
  }
10843
10897
  }
10844
10898
  async getWaitingHall(e, t, n) {
10845
10899
  if (!this._signaling) return Promise.reject();
10846
10900
  let r = null;
10847
- if (e && (r = ro(e), r)) {
10901
+ if (e && (r = io(e), r)) {
10848
10902
  let e = this._api.getDecorativeIdByInitialId(r.id);
10849
- r.id = e ? j.composeUserId(e) : r.id;
10903
+ r.id = e ?? r.id;
10850
10904
  }
10851
10905
  let i = await this._signaling.getWaitingHall(r, t, n);
10852
10906
  if (i.error) return Promise.reject(i.message);
10853
- let a = i.participants || [], { externalIds: o } = await this._resolveWaitingHallExternalIds(a), s = null;
10854
- return a.length && i.hasMore && (s = no(a[a.length - 1].id)), {
10907
+ let a = i.participants || [], { externalIds: o } = this._resolveWaitingHallExternalIds(a, "getWaitingHall"), s = null;
10908
+ return a.length && i.hasMore && (s = ro(a[a.length - 1].id)), {
10855
10909
  participants: o,
10856
10910
  pageMarker: s,
10857
10911
  totalCount: i.totalCount || 0
10858
10912
  };
10859
10913
  }
10860
- async _resolveWaitingHallExternalIds(e) {
10861
- let t = [], n = [];
10914
+ _resolveWaitingHallExternalIds(e, t) {
10915
+ let n = [], r = [], i = [];
10862
10916
  return e.length && e.forEach((e) => {
10863
10917
  if (e.externalId) {
10864
- let r = Q.fromSignaling(e.externalId);
10865
- t.push(e.id.addedTs), n.push(r), this._api.cacheExternalId(e.id.id, r);
10866
- } else n.push(this._getOrCacheExternalIdByCompositeId(e.id.id)), t.push(e.id.addedTs);
10867
- }), {
10868
- externalIds: n,
10869
- timestamps: t
10918
+ let t = Q.fromSignaling(e.externalId);
10919
+ n.push(e.id.addedTs), r.push(t), this._api.cacheExternalId(e.id.id, t);
10920
+ } else {
10921
+ let t = this._getExternalIdByParticipantId(e.id.id);
10922
+ t ? (r.push(t), n.push(e.id.addedTs)) : i.push(e.id.id);
10923
+ }
10924
+ }), this._reportMissingExternalIds(i, t), {
10925
+ externalIds: r,
10926
+ timestamps: n
10870
10927
  };
10871
10928
  }
10872
10929
  async getAudienceModeHands() {
10873
10930
  if (!this._signaling.ready) throw Error("Signaling is not ready");
10874
10931
  let e = await this._signaling.getHandQueue();
10875
10932
  if (e.error) return Promise.reject(e.message);
10876
- let t = e.participants || [], { externalIds: n, timestamps: r } = await this._resolveWaitingHallExternalIds(t);
10933
+ let t = e.participants || [], { externalIds: n, timestamps: r } = this._resolveWaitingHallExternalIds(t, "getAudienceModeHands");
10877
10934
  return {
10878
10935
  timestamps: r,
10879
10936
  participants: n,
@@ -10882,7 +10939,7 @@ var ls = 15, $ = class e extends b {
10882
10939
  }
10883
10940
  async promoteParticipant(e, t) {
10884
10941
  if (this._signaling && this._conversation) try {
10885
- if (!j.includesOneOf(this._conversation.options, [Wa.WAITING_HALL, Wa.AUDIENCE_MODE])) throw Error("Unable to promote a participant in the conversation with current options");
10942
+ if (!j.includesOneOf(this._conversation.options, [Ga.WAITING_HALL, Ga.AUDIENCE_MODE])) throw Error("Unable to promote a participant in the conversation with current options");
10886
10943
  if (this._checkAdminRole(), !e && t) throw Error("participantId is required");
10887
10944
  await this._signaling.promoteParticipant(e, t);
10888
10945
  } catch (t) {
@@ -11042,7 +11099,7 @@ var ls = 15, $ = class e extends b {
11042
11099
  unmuteOptions: e.unmuteOptions || [],
11043
11100
  observedIds: e.observedIds || [],
11044
11101
  markers: this._denormalizeMarkers(t, e.markers)
11045
- }, e.decorativeUserId);
11102
+ }, j.composeDecorativeId(e));
11046
11103
  }));
11047
11104
  }
11048
11105
  async getParticipantListChunk(e) {
@@ -11054,7 +11111,7 @@ var ls = 15, $ = class e extends b {
11054
11111
  let a = this._transport?.getState();
11055
11112
  return n.participants.forEach((e) => {
11056
11113
  let t = j.composeId(e), n = r[t];
11057
- this._updateParticipantExternalId(n, e), this._setSessionState(n, this._remoteParticipantSessionState(t, e.sessionState)), n.isOnHold || this._setTransportStatus(n, eo.fromTransportState(a) ?? N.WAITING), n.movieShareInfos = e.movieShareInfos, Object.assign(n.mediaSettings, E(e.mediaSettings)), Object.assign(n.muteStates, e.muteStates), n.unmuteOptions = e.unmuteOptions ?? n.unmuteOptions, this._openTransport([n], !0);
11114
+ this._updateParticipantExternalId(n, e), this._setSessionState(n, this._remoteParticipantSessionState(t, e.sessionState)), n.isOnHold || this._setTransportStatus(n, to.fromTransportState(a) ?? N.WAITING), n.movieShareInfos = e.movieShareInfos, Object.assign(n.mediaSettings, E(e.mediaSettings)), Object.assign(n.muteStates, e.muteStates), n.unmuteOptions = e.unmuteOptions ?? n.unmuteOptions, this._openTransport([n], !0);
11058
11115
  }), this._participantListChunkToExternalChunk(n);
11059
11116
  }
11060
11117
  async _getInitialParticiapntListChunk() {
@@ -11068,7 +11125,7 @@ var ls = 15, $ = class e extends b {
11068
11125
  _onLocalMediaStreamChanged(e) {
11069
11126
  if (!this._conversation || !this._mediaSource) return;
11070
11127
  let t = this._mediaSource.mediaSettings;
11071
- this._debug.debug("Local media stream changed", t), e.kind === k.audio && this._mediaSource && (this._audioFix = new ho(this._mediaSource, this._debug, this._stats.logger)), L.onLocalStreamUpdate(t, e.kind, this.id), !this._conversation?.waitingHall && !this._conversation?.observer && !this._isAudienceModeListener() && this._changeMediaSettings(t);
11128
+ this._debug.debug("Local media stream changed", t), e.kind === k.audio && this._mediaSource && (this._audioFix = new go(this._mediaSource, this._debug, this._stats.logger)), L.onLocalStreamUpdate(t, e.kind, this.id), !this._conversation?.waitingHall && !this._conversation?.observer && !this._isAudienceModeListener() && this._changeMediaSettings(t);
11072
11129
  }
11073
11130
  _onScreenSharingStatus(e) {
11074
11131
  let t = this.mediaSettings;
@@ -11088,7 +11145,7 @@ var ls = 15, $ = class e extends b {
11088
11145
  this._warnParticipantNotInConversation(e);
11089
11146
  return;
11090
11147
  }
11091
- r.mediaSettings = t, ["ACTIVE", "HELD"].includes(this._state) && L.onRemoteMediaSettings(r.externalId, t, r.markers, this.id), this._specListener && this._specListener.onChangeRemoteMediaSettings(e, t);
11148
+ r.mediaSettings = t, ["ACTIVE", "HELD"].includes(this._state) && (r.externalId ? L.onRemoteMediaSettings(r.externalId, t, r.markers, this.id) : this._reportMissingExternalIds([e], "REMOTE_MEDIA_SETTINGS")), this._specListener && this._specListener.onChangeRemoteMediaSettings(e, t);
11092
11149
  }
11093
11150
  _extractLocalParticipantFromConnection(e) {
11094
11151
  let t = this._api.getUserId();
@@ -11104,7 +11161,7 @@ var ls = 15, $ = class e extends b {
11104
11161
  this._warnParticipantNotInConversation(e);
11105
11162
  return;
11106
11163
  }
11107
- n.participantState = t || {}, ["ACTIVE", "HELD"].includes(this._state) && L.onRemoteParticipantState(n.externalId, n.participantState, n.markers, this.id);
11164
+ n.participantState = t || {}, ["ACTIVE", "HELD"].includes(this._state) && (n.externalId ? L.onRemoteParticipantState(n.externalId, n.participantState, n.markers, this.id) : this._reportMissingExternalIds([e], "REMOTE_PARTICIPANT_STATE"));
11108
11165
  }
11109
11166
  _changeMultipleParticipantState(e, t) {
11110
11167
  this._debug.debug("Multiple participants state changed", e);
@@ -11198,9 +11255,9 @@ var ls = 15, $ = class e extends b {
11198
11255
  for (let n of e.conversation.participants) {
11199
11256
  let e = j.composeId(n), i = n.roles || [];
11200
11257
  if (this._isMe(e)) {
11201
- Qa(this._conversation.roles, i) || this._onRolesChanged(e, i), t = () => {
11258
+ $a(this._conversation.roles, i) || this._onRolesChanged(e, i), t = () => {
11202
11259
  this._registerParticipantLocalMuteState({
11203
- muteStates: co(n),
11260
+ muteStates: lo(n),
11204
11261
  unmuteOptions: n.unmuteOptions
11205
11262
  });
11206
11263
  };
@@ -11218,7 +11275,7 @@ var ls = 15, $ = class e extends b {
11218
11275
  let t = E(n.mediaSettings);
11219
11276
  Wt(t, a.mediaSettings) || this._changeRemoteMediaSettings(e, t);
11220
11277
  let r = j.mapParticipantState(n), o = a.participantState;
11221
- j.isEqualParticipantState(r, o) || await this._changeRemoteParticipantState(e, r), Qa(i, a.roles) || this._onRolesChanged(a.id, i), !!n.onHold != !!a.isOnHold && (a.isOnHold = !!n.onHold, this._setParticipantsStatus([a], n.onHold ? N.ONHOLD : N.CONNECTED));
11278
+ j.isEqualParticipantState(r, o) || await this._changeRemoteParticipantState(e, r), $a(i, a.roles) || this._onRolesChanged(a.id, i), !!n.onHold != !!a.isOnHold && (a.isOnHold = !!n.onHold, this._setParticipantsStatus([a], n.onHold ? N.ONHOLD : N.CONNECTED));
11222
11279
  }
11223
11280
  }
11224
11281
  let i = this._participants;
@@ -11239,30 +11296,37 @@ var ls = 15, $ = class e extends b {
11239
11296
  async _onAcceptedCall(e) {
11240
11297
  let t = j.composeMessageId(e), n = j.getPeerIdString(e.peerId);
11241
11298
  if (this._debug.debug(`Participant accepted call [${t}]`), this._statFirstMediaReceived.markAcceptedCall(this._transport?.getTopology()), this._conversation && this._isMe(t)) {
11299
+ if (this._conversation.concurrent) return;
11242
11300
  this._close(new O(D.MISSED), { errorText: "Call accepted on other device" });
11243
11301
  return;
11244
11302
  }
11245
- this._conversation?.direction === Ba.OUTGOING && !this._conversation.concurrent && this._stats.lifecycle.markOutgoingAccepted();
11303
+ this._conversation?.direction === Va.OUTGOING && !this._conversation.concurrent && this._stats.lifecycle.markOutgoingAccepted();
11246
11304
  let r = this._getParticipant(t);
11247
11305
  if (!r) {
11248
- let n = this._api.getDecorativeIdByInitialId(t), i = n ? j.composeUserId(n, e.participantType) : void 0;
11306
+ let n = this._api.getDecorativeIdByInitialId(t);
11249
11307
  r = this._registerParticipantInCache(this._createParticipant({
11250
11308
  id: t,
11251
11309
  externalId: e.externalId ? Q.fromSignaling(e.externalId, e.deviceIdx) : void 0,
11252
11310
  mediaSettings: E(e.mediaSettings)
11253
- }, i));
11311
+ }, n));
11254
11312
  } else if (e.externalId) {
11255
11313
  let t = Q.fromSignaling(e.externalId, e.deviceIdx);
11256
11314
  r.externalId = t, this._api.cacheExternalId(r.id, t);
11257
11315
  }
11258
- r.state = Z.ACCEPTED, r.mediaSettings = E(e.mediaSettings), this._logWithMediaSettings(C.ACCEPTED_OUTGOING, r.mediaSettings), this._conversation && this._conversation.direction === Ba.OUTGOING && (this._state === "IDLE" || this._state === "PROCESSING") && (this._state = "ACTIVE", this._changeFeatureSet()), this._state === "ACTIVE" && this._transport && this._transport.open([r.id], n), this._changeRemoteMediaSettings(t, r.mediaSettings), await this._changeRemoteParticipantState(t);
11316
+ r.state = Z.ACCEPTED, r.mediaSettings = E(e.mediaSettings), this._logWithMediaSettings(C.ACCEPTED_OUTGOING, r.mediaSettings), this._conversation && this._conversation.direction === Va.OUTGOING && (this._state === "IDLE" || this._state === "PROCESSING") && (this._state = "ACTIVE", this._changeFeatureSet()), this._state === "ACTIVE" && this._transport && this._transport.open([r.id], n), this._changeRemoteMediaSettings(t, r.mediaSettings), await this._changeRemoteParticipantState(t);
11259
11317
  let i = Object.keys(r.muteStates);
11260
- i.length && this._onMuteParticipant({
11318
+ if (i.length && this._onMuteParticipant({
11261
11319
  muteStates: r.muteStates,
11262
11320
  mediaOptions: i,
11263
11321
  stateUpdated: !0,
11264
11322
  participantId: t
11265
- }), ["ACTIVE", "HELD"].includes(this._state) && L.onAcceptedCall(r.externalId, xa.parseCapabilities(e.capabilities), this.id);
11323
+ }), ["ACTIVE", "HELD"].includes(this._state)) {
11324
+ if (!r.externalId) {
11325
+ this._reportMissingExternalIds([t], "ACCEPTED_CALL");
11326
+ return;
11327
+ }
11328
+ L.onAcceptedCall(r.externalId, Sa.parseCapabilities(e.capabilities), this.id);
11329
+ }
11266
11330
  }
11267
11331
  async _onHungup(e) {
11268
11332
  this._debug.debug(`Participant hungup [${e.participantId}]`, { reason: e.reason });
@@ -11298,7 +11362,7 @@ var ls = 15, $ = class e extends b {
11298
11362
  return;
11299
11363
  }
11300
11364
  if (e.connected) {
11301
- let e = eo.fromTransportState(this._transport?.getState());
11365
+ let e = to.fromTransportState(this._transport?.getState());
11302
11366
  e && this._setTransportStatus(n, e);
11303
11367
  }
11304
11368
  this._setSessionState(n, { connected: e.connected });
@@ -11331,7 +11395,7 @@ var ls = 15, $ = class e extends b {
11331
11395
  return;
11332
11396
  }
11333
11397
  if (!n) {
11334
- let { participant: r } = e, i = r.decorativeUserId;
11398
+ let { participant: r } = e, i = j.composeDecorativeId(r);
11335
11399
  this._registerParticipant({
11336
11400
  id: t,
11337
11401
  externalId: Q.fromSignalingParticipant(r, !0, !0),
@@ -11358,7 +11422,7 @@ var ls = 15, $ = class e extends b {
11358
11422
  return;
11359
11423
  }
11360
11424
  if (!n) {
11361
- let { participant: r } = e, i = r.decorativeUserId;
11425
+ let { participant: r } = e, i = j.composeDecorativeId(r);
11362
11426
  this._registerParticipant({
11363
11427
  id: t,
11364
11428
  externalId: Q.fromSignalingParticipant(r, !0, !0),
@@ -11375,7 +11439,7 @@ var ls = 15, $ = class e extends b {
11375
11439
  isOnHold: !!r.onHold
11376
11440
  }, i), n = this._getParticipant(t);
11377
11441
  }
11378
- this._conversation && this._conversation.direction === Ba.OUTGOING && (this._state === "IDLE" || this._state === "PROCESSING") && (this._state = "ACTIVE", this._changeFeatureSet()), n.state = Z.ACCEPTED, n.mediaSettings = E(e.mediaSettings), n.participantState = j.mapParticipantState(e.participant), n.roles = e.participant.roles || [], this._updateParticipantSessionState(n, t, e.participant.sessionState), e.participant.onHold ? (n.isOnHold = !0, this._setParticipantsStatus([n], N.ONHOLD)) : this._transport?.isAllocated(n.id) ? this._setParticipantsStatus([n], N.CONNECTED) : this._setParticipantsStatus([n], N.WAITING), r && this._emitParticipantEffectiveStatusIfSessionOverridesTransport(n), this._state !== "IDLE" && this._transport && (this._transport.isAllocated(n.id) || this._allocateParticipantTransport(n.id, !0), this._transport.open([n.id], null, !!this._conversation?.observer)), L.onParticipantJoined(n.externalId, n.markers, this.id), this._changeRemoteMediaSettings(t, n.mediaSettings), await this._changeRemoteParticipantState(t, n.participantState), this._invokeRolesChangedCallbackIfNeeded(n);
11442
+ this._conversation && this._conversation.direction === Va.OUTGOING && (this._state === "IDLE" || this._state === "PROCESSING") && (this._state = "ACTIVE", this._changeFeatureSet()), n.state = Z.ACCEPTED, n.mediaSettings = E(e.mediaSettings), n.participantState = j.mapParticipantState(e.participant), n.roles = e.participant.roles || [], this._updateParticipantSessionState(n, t, e.participant.sessionState), e.participant.onHold ? (n.isOnHold = !0, this._setParticipantsStatus([n], N.ONHOLD)) : this._transport?.isAllocated(n.id) ? this._setParticipantsStatus([n], N.CONNECTED) : this._setParticipantsStatus([n], N.WAITING), r && this._emitParticipantEffectiveStatusIfSessionOverridesTransport(n), this._state !== "IDLE" && this._transport && (this._transport.isAllocated(n.id) || this._allocateParticipantTransport(n.id, !0), this._transport.open([n.id], null, !!this._conversation?.observer)), L.onParticipantJoined(n.externalId, n.markers, this.id), this._changeRemoteMediaSettings(t, n.mediaSettings), await this._changeRemoteParticipantState(t, n.participantState), this._invokeRolesChangedCallbackIfNeeded(n);
11379
11443
  let i = Object.keys(n.muteStates);
11380
11444
  i.length && this._onMuteParticipant({
11381
11445
  muteStates: n.muteStates,
@@ -11401,7 +11465,7 @@ var ls = 15, $ = class e extends b {
11401
11465
  _onParticipantsStateChanged(e) {
11402
11466
  let { participants: t, roomId: n } = e;
11403
11467
  t.map(({ id: e, markers: t }) => this._registerParticipantAndSetMarkersIfChunkEnabled(e, t));
11404
- let r = /* @__PURE__ */ new Map(), i = t.map(({ id: e, participantState: t }) => [e, this._getExternalIdByParticipantId(e) && j.mapParticipantState({ participantState: t })]);
11468
+ let r = /* @__PURE__ */ new Map(), i = t.map(({ id: e, participantState: t }) => [e, this._getExternalIdByParticipantId(e) ? j.mapParticipantState({ participantState: t }) : void 0]);
11405
11469
  try {
11406
11470
  i.forEach(([e, t]) => {
11407
11471
  t && r.set(e, t);
@@ -11566,15 +11630,15 @@ var ls = 15, $ = class e extends b {
11566
11630
  L.onAsrTranscription(t, e.text, e.timestamp, e.duration, this.id);
11567
11631
  }
11568
11632
  async _onRolesChanged(e, t) {
11569
- if (this._conversation && this._isMe(e) && !Qa(this._conversation.roles, t)) {
11633
+ if (this._conversation && this._isMe(e) && !$a(this._conversation.roles, t)) {
11570
11634
  this._debug.debug(`Local roles changed: ${t}`), this._conversation.roles = t, L.onLocalRolesChanged(t, !1, this.id), this._processMuteState({
11571
- mediaOptions: io(this._getMuteStatesForCurrentRoom(), qa.MUTE_PERMANENT),
11635
+ mediaOptions: ao(this._getMuteStatesForCurrentRoom(), Ja.MUTE_PERMANENT),
11572
11636
  stateUpdated: !0
11573
- }), j.includesOneOf(t, [Za.ADMIN, Za.CREATOR]) ? this._refreshRooms(!0) : t.length || this._onRoomSwitched(null);
11637
+ }), j.includesOneOf(t, [Qa.ADMIN, Qa.CREATOR]) ? this._refreshRooms(!0) : t.length || this._onRoomSwitched(null);
11574
11638
  return;
11575
11639
  }
11576
11640
  let n = this._getParticipant(e);
11577
- n && !Qa(n.roles, t) && (this._debug.debug(`Roles for participant [${e}] changed: ${t}`), n.roles = t, L.onRolesChanged(n.externalId, t, !1, this.id));
11641
+ n && !$a(n.roles, t) && (this._debug.debug(`Roles for participant [${e}] changed: ${t}`), n.roles = t, L.onRolesChanged(n.externalId, t, !1, this.id));
11578
11642
  }
11579
11643
  async _onMuteParticipant(e, t = !1) {
11580
11644
  if (!this._conversation) return;
@@ -11623,7 +11687,7 @@ var ls = 15, $ = class e extends b {
11623
11687
  let { mediaOptions: t = [], muteAll: n, unmute: r, stateUpdated: i, requestedMedia: a, roomId: o = null, unmuteOptions: s = [] } = e, c = e.adminId ? this._getExternalIdByParticipantId(e.adminId) : null, l = Object.assign({}, e.muteStates ?? this._getMuteStatesForRoomId(o)), u = this._mediaSource.mediaSettings, d = Object.entries(l);
11624
11688
  for (let [e, i] of d) {
11625
11689
  let a = this._isCallAdmin() && n;
11626
- if (!(i !== qa.MUTE && i !== qa.MUTE_PERMANENT || a) && (this._isCallAdmin() && i === qa.MUTE_PERMANENT && !n && (l[e] = qa.MUTE), !(!t.includes(e) || r))) switch (e) {
11690
+ if (!(i !== Ja.MUTE && i !== Ja.MUTE_PERMANENT || a) && (this._isCallAdmin() && i === Ja.MUTE_PERMANENT && !n && (l[e] = Ja.MUTE), !(!t.includes(e) || r))) switch (e) {
11627
11691
  case S.VIDEO:
11628
11692
  u.isVideoEnabled && (L.onDeviceSwitched(S.VIDEO, !1, this.id), await this.toggleLocalVideo(!1));
11629
11693
  break;
@@ -11660,7 +11724,7 @@ var ls = 15, $ = class e extends b {
11660
11724
  this._conversation.pinnedParticipantIdByRoom.set(r, t ? null : e);
11661
11725
  }
11662
11726
  _onOptionsChanged(e) {
11663
- this._conversation && !Ga(this._conversation.options, e) && (this._conversation.options = e, L.onOptionsChanged(e, this.id), e.includes(Wa.ADMIN_IS_HERE) ? this._conversation.restricted && this._conversation.waitingHall && L.onLocalStatus(N.WAITING_HALL, this.id) : e.includes(Wa.WAIT_FOR_ADMIN) && this._conversation.restricted && L.onLocalStatus(N.WAIT_FOR_ADMIN, this.id));
11727
+ this._conversation && !Ka(this._conversation.options, e) && (this._conversation.options = e, L.onOptionsChanged(e, this.id), e.includes(Ga.ADMIN_IS_HERE) ? this._conversation.restricted && this._conversation.waitingHall && L.onLocalStatus(N.WAITING_HALL, this.id) : e.includes(Ga.WAIT_FOR_ADMIN) && this._conversation.restricted && L.onLocalStatus(N.WAIT_FOR_ADMIN, this.id));
11664
11728
  }
11665
11729
  async _onNetworkStatus(e) {
11666
11730
  if (this._conversation) {
@@ -11670,7 +11734,7 @@ var ls = 15, $ = class e extends b {
11670
11734
  if (this._isMe(r) || r === "") e = this._conversation.networkRating;
11671
11735
  else if (n[r]) e = n[r].networkRating;
11672
11736
  else continue;
11673
- if (e !== i) if (this._isMe(r) || r === "") this._conversation.networkRating = i, Zr.getInstance().value = i, L.onLocalNetworkStatusChanged(i, this.id);
11737
+ if (e !== i) if (this._isMe(r) || r === "") this._conversation.networkRating = i, Qr.getInstance().value = i, L.onLocalNetworkStatusChanged(i, this.id);
11674
11738
  else {
11675
11739
  let e = n[r];
11676
11740
  e.networkRating = i, t.push({
@@ -11715,7 +11779,7 @@ var ls = 15, $ = class e extends b {
11715
11779
  }
11716
11780
  _changeFeatureSet() {
11717
11781
  if (this._conversation) {
11718
- let e = this._state === "ACTIVE", t = this._conversation.features.includes(Ua.ADD_PARTICIPANT);
11782
+ let e = this._state === "ACTIVE", t = this._conversation.features.includes(Wa.ADD_PARTICIPANT);
11719
11783
  L.onCallState(e, t, this._conversation, this.id);
11720
11784
  }
11721
11785
  }
@@ -11749,7 +11813,7 @@ var ls = 15, $ = class e extends b {
11749
11813
  let n = this._getParticipant(e);
11750
11814
  if (n) {
11751
11815
  if (n.connectionStatus.sessionStateApplicable && n.connectionStatus.sessionState?.connected === !1) {
11752
- let e = eo.fromTransportState(this._transport?.getState());
11816
+ let e = to.fromTransportState(this._transport?.getState());
11753
11817
  e && this._setTransportStatus(n, e), n.connectionStatus.sessionStateConnectedBySpeaker = !0;
11754
11818
  let t = this._setTransportStatus(n, n.connectionStatus.transport);
11755
11819
  this._emitParticipantTransition(n, t);
@@ -11759,7 +11823,7 @@ var ls = 15, $ = class e extends b {
11759
11823
  }
11760
11824
  async _onTransportStateChanged(e, t) {
11761
11825
  this._debug.debug(`Transport state has changed: ${t}`, e);
11762
- let n = eo.fromTransportState(t);
11826
+ let n = to.fromTransportState(t);
11763
11827
  if (!n) return;
11764
11828
  let r = this._participants, i = [], a = e.reduce((e, n) => {
11765
11829
  if (n in r) {
@@ -11770,20 +11834,34 @@ var ls = 15, $ = class e extends b {
11770
11834
  }, []);
11771
11835
  a.length && (this._updateDisplayLayoutFromCache(i), this._setParticipantsStatus(a, n));
11772
11836
  }
11773
- async _onTransportLocalStateChanged(e) {
11837
+ async _onTransportLocalStateChanged(e, t) {
11774
11838
  if (this._debug.debug(`Local transport state has changed: ${e}`), e === q.CONNECTED && (T.releaseFirefoxMicrophonePermissionWarmup(), L.onLocalStatus(N.CONNECTED, this.id), this._transport?.getTopology() === J.SERVER)) {
11775
11839
  let e = Object.values(this._myLastRequestedLayouts);
11776
11840
  await this.updateDisplayLayout(e), this._displayLayoutRequester.resend();
11777
11841
  }
11778
- this._state !== "HELD" && ((e === q.CONNECTING || e === q.RECONNECTING) && this._areTransportParticipantsOnHold() || (e === q.CONNECTING && L.onLocalStatus(N.CONNECTING, this.id), e === q.RECONNECTING && L.onLocalStatus(N.RECONNECT, this.id), e === q.FAILED && this._transport && this._transport.allocated().length === 0 && this._close(new O(D.FAILED, { callError: {
11779
- scope: "network",
11780
- source: "rtc",
11781
- code: "connection-failed",
11782
- description: "transport-failed"
11783
- } }), {
11784
- errorText: "Transport failed",
11785
- signalingReason: D.FAILED
11786
- })));
11842
+ if (this._state !== "HELD" && !((e === q.CONNECTING || e === q.RECONNECTING) && this._areTransportParticipantsOnHold()) && (e === q.CONNECTING && L.onLocalStatus(N.CONNECTING, this.id), e === q.RECONNECTING && L.onLocalStatus(N.RECONNECT, this.id), e === q.FAILED && this._transport && this._transport.allocated().length === 0)) {
11843
+ if (t instanceof Kr) {
11844
+ this._close(new O(D.TIMEOUT, { callError: {
11845
+ scope: "network",
11846
+ source: "rtc",
11847
+ code: "reconnect-timeout",
11848
+ description: "peer-connection-timeout"
11849
+ } }), {
11850
+ errorText: "Peer connection reconnect timeout",
11851
+ signalingReason: D.TIMEOUT
11852
+ });
11853
+ return;
11854
+ }
11855
+ this._close(new O(D.FAILED, { callError: {
11856
+ scope: "network",
11857
+ source: "rtc",
11858
+ code: "connection-failed",
11859
+ description: "transport-failed"
11860
+ } }), {
11861
+ errorText: "Transport failed",
11862
+ signalingReason: D.FAILED
11863
+ });
11864
+ }
11787
11865
  }
11788
11866
  _areTransportParticipantsOnHold() {
11789
11867
  if (!M.hold || !this._transport) return !1;
@@ -11793,15 +11871,15 @@ var ls = 15, $ = class e extends b {
11793
11871
  return e.every((e) => t[e]?.isOnHold);
11794
11872
  }
11795
11873
  _onRemoteTrackAdded(e, t, n) {
11796
- if (e.endsWith(qr.AUDIO_MIX)) this._debug.debug("Remote audio mix track added"), this._audioOutput.add(e, n), L.onRemoteMixedAudioStream(t, this.id);
11797
- else if (e.startsWith(qr.TRANSPARENT_AUDIO_TRACK_PREFIX)) this._debug.debug(`Remote transparent audio track added: ${e}`), this._audioOutput.add(e, n);
11798
- else if (e.startsWith(qr.PARTICIPANT_AGNOSTIC_TRACK_PREFIX)) this._debug.debug(`Participant-agnostic track added: ${e}`), this._streamByStreamId.set(e, t);
11874
+ if (e.endsWith(Jr.AUDIO_MIX)) this._debug.debug("Remote audio mix track added"), this._audioOutput.add(e, n), L.onRemoteMixedAudioStream(t, this.id);
11875
+ else if (e.startsWith(Jr.TRANSPARENT_AUDIO_TRACK_PREFIX)) this._debug.debug(`Remote transparent audio track added: ${e}`), this._audioOutput.add(e, n);
11876
+ else if (e.startsWith(Jr.PARTICIPANT_AGNOSTIC_TRACK_PREFIX)) this._debug.debug(`Participant-agnostic track added: ${e}`), this._streamByStreamId.set(e, t);
11799
11877
  else {
11800
11878
  this._debug.debug(`Remote track added on the participant [${e}]`, { kind: n.kind });
11801
11879
  let r = this._getParticipant(e);
11802
11880
  if (!r) {
11803
- let t = this._api.getDecorativeIdByInitialId(e), n = t ? j.composeUserId(t) : void 0;
11804
- this._debug.warn(`Conversation: track added before participant [id: ${e}, decorativeId: ${n}]`), this._registerParticipant({ id: e }, n), r = this._getParticipant(e), this._setParticipantsStatus([r], N.WAITING), this._activeSpeakerId === e && this._lastSignalledActiveSpeakerId !== e && (L.onSpeakerChanged(r.externalId, this.id), this._lastSignalledActiveSpeakerId = e);
11881
+ let t = this._api.getDecorativeIdByInitialId(e);
11882
+ this._debug.warn(`Conversation: track added before participant [id: ${e}, decorativeId: ${t}]`), this._registerParticipant({ id: e }, t), r = this._getParticipant(e), this._setParticipantsStatus([r], N.WAITING), this._activeSpeakerId === e && this._lastSignalledActiveSpeakerId !== e && (L.onSpeakerChanged(r.externalId, this.id), this._lastSignalledActiveSpeakerId = e);
11805
11883
  }
11806
11884
  if (this._transport && !this._transport.isAllocated(r.id) && this._allocateParticipantTransport(r.id, !1), n.kind === k.audio && (this._audioOutput.add(e, n), M.preserveAudioTracks || (r.remoteAudioTrack = n, t.removeTrack(n))), r.remoteStream !== t && t.getTracks().length) {
11807
11885
  if (r.remoteStream = t, r.secondStream) return;
@@ -11822,7 +11900,7 @@ var ls = 15, $ = class e extends b {
11822
11900
  }
11823
11901
  }
11824
11902
  async _removeAudioTrack(e, t, n) {
11825
- if (e !== qr.AUDIO_MIX) {
11903
+ if (e !== Jr.AUDIO_MIX) {
11826
11904
  let n = this._getParticipant(e);
11827
11905
  if (!n || n.remoteStream && n.remoteStream !== t) return;
11828
11906
  }
@@ -11837,7 +11915,7 @@ var ls = 15, $ = class e extends b {
11837
11915
  if (this._statFirstMediaReceived.markTopologyChanged(e), e === J.DIRECT && (this._onRemoteSignalledStall([]), this._onAudioMixStall(!1)), this._conversation) {
11838
11916
  this._conversation.topology = e;
11839
11917
  for (let e of Object.values(this._participants)) {
11840
- let t = eo.setSessionStateApplicable(e.connectionStatus, this._isParticipantSessionStateApplicable(e.id));
11918
+ let t = to.setSessionStateApplicable(e.connectionStatus, this._isParticipantSessionStateApplicable(e.id));
11841
11919
  this._emitParticipantTransition(e, t);
11842
11920
  }
11843
11921
  this._changeFeatureSet(), this._forceOpenTransportForAloneInCall();
@@ -11893,7 +11971,7 @@ var ls = 15, $ = class e extends b {
11893
11971
  ].includes(t) ? null : this._setTransportStatus(e, t), n);
11894
11972
  }
11895
11973
  _setParticipantsStalled(e, t) {
11896
- this._updateParticipantsStatus(e, (e) => eo.setStalled(e.connectionStatus, t));
11974
+ this._updateParticipantsStatus(e, (e) => to.setStalled(e.connectionStatus, t));
11897
11975
  }
11898
11976
  _updateParticipantsStatus(e, t, n = null) {
11899
11977
  let r = e.reduce((e, n) => {
@@ -11911,46 +11989,63 @@ var ls = 15, $ = class e extends b {
11911
11989
  }
11912
11990
  _onRoomsUpdated(e) {
11913
11991
  if (this._isCalledState()) return;
11914
- let t = {};
11915
- for (let n of Object.keys(Ja)) {
11916
- let r = e.updates[n];
11917
- r && (t[n] = {
11918
- rooms: r?.rooms?.map(this._convertRoomToExternal.bind(this)) || [],
11919
- roomIds: r?.roomIds,
11920
- deactivated: r?.deactivated
11992
+ let t = {}, n = [], r = [];
11993
+ for (let i of Object.keys(Ya)) {
11994
+ let a = e.updates[i];
11995
+ a && (a?.rooms?.forEach((e) => {
11996
+ let { room: t, missingParticipantIds: i } = this._convertRoomToExternal(e);
11997
+ t && n.push(t), r.push(...i);
11998
+ }), t[i] = {
11999
+ rooms: n,
12000
+ roomIds: a?.roomIds,
12001
+ deactivated: a?.deactivated
11921
12002
  });
11922
12003
  }
11923
- L.onRoomsUpdated(t, this.id);
12004
+ this._reportMissingExternalIds(r, "ROOMS_UPDATED"), L.onRoomsUpdated(t, this.id);
11924
12005
  }
11925
12006
  _onRoomUpdated(e) {
11926
- let t = this._convertRoomToExternal(e.room || null);
11927
- e.events.some((e) => e === Ja.UPDATE) && (e.muteStates !== void 0 && this._setMuteStatesForRoomId(e.muteStates, e.roomId), e.recordInfo !== void 0 && this._conversation?.recordsInfoByRoom.set(e.roomId, e.recordInfo), e.asrInfo !== void 0 && this._conversation?.asrInfoByRoom.set(e.roomId, e.asrInfo)), this._isCalledState() || L.onRoomUpdated(e.events, e.roomId, t, e.deactivate || null, this.id);
12007
+ let { room: t, missingParticipantIds: n } = this._convertRoomToExternal(e.room || null);
12008
+ e.events.some((e) => e === Ya.UPDATE) && (e.muteStates !== void 0 && this._setMuteStatesForRoomId(e.muteStates, e.roomId), e.recordInfo !== void 0 && this._conversation?.recordsInfoByRoom.set(e.roomId, e.recordInfo), e.asrInfo !== void 0 && this._conversation?.asrInfoByRoom.set(e.roomId, e.asrInfo)), this._isCalledState() || (this._reportMissingExternalIds(n, "ROOM_UPDATED"), L.onRoomUpdated(e.events, e.roomId, t, e.deactivate || null, this.id));
11928
12009
  }
11929
12010
  _convertRoomToExternal(e) {
11930
- if (!e) return null;
11931
- let t = e.participantIds?.map((e) => this._getExternalIdByParticipantId(e)) || [], n = e.addParticipantIds?.map((e) => this._getExternalIdByParticipantId(e)) || [], r = e.removeParticipantIds?.map?.((e) => this._getExternalIdByParticipantId(e)) || [], i = e.pinnedParticipantId ? this._getExternalIdByParticipantId(e.pinnedParticipantId) : void 0;
12011
+ if (!e) return {
12012
+ room: null,
12013
+ missingParticipantIds: []
12014
+ };
12015
+ let t = [], { externalIds: n, missingIds: r } = this._getExternalIdsByParticipantIds(e.participantIds ?? []), { externalIds: i, missingIds: a } = this._getExternalIdsByParticipantIds(e.addParticipantIds ?? []), { externalIds: o, missingIds: s } = this._getExternalIdsByParticipantIds(e.removeParticipantIds ?? []);
12016
+ t.push(...r, ...a, ...s);
12017
+ let c;
12018
+ if (e.pinnedParticipantId) {
12019
+ let n = this._getExternalIdByParticipantId(e.pinnedParticipantId);
12020
+ n ? c = n : t.push(e.pinnedParticipantId);
12021
+ }
11932
12022
  return {
11933
- id: e.id,
11934
- name: e.name,
11935
- participantCount: e.participantCount,
11936
- participantIds: t,
11937
- addParticipantIds: n,
11938
- removeParticipantIds: r,
11939
- participants: e.participants?.participants ? this._participantListChunkToExternalChunk(e.participants) : void 0,
11940
- active: e.active,
11941
- muteStates: e.muteStates,
11942
- pinnedParticipantId: i,
11943
- countdownSec: e.countdownSec,
11944
- timeoutMs: e.timeoutMs
12023
+ room: {
12024
+ id: e.id,
12025
+ name: e.name,
12026
+ participantCount: e.participantCount,
12027
+ participantIds: n,
12028
+ addParticipantIds: i,
12029
+ removeParticipantIds: o,
12030
+ participants: e.participants?.participants ? this._participantListChunkToExternalChunk(e.participants) : void 0,
12031
+ active: e.active,
12032
+ muteStates: e.muteStates,
12033
+ pinnedParticipantId: c,
12034
+ countdownSec: e.countdownSec,
12035
+ timeoutMs: e.timeoutMs
12036
+ },
12037
+ missingParticipantIds: t
11945
12038
  };
11946
12039
  }
11947
12040
  async _onRoomParticipantsUpdated(e) {
11948
- let t = this._transport?.getState(), n = e.roomId ?? null, r = e.addedParticipantIds?.map((e) => j.decomposeId(e).id) || [], i = this._getExternalIdsByOkIdsFromCache(r), a = e.addedParticipants;
11949
- if (i.length && a?.length !== i.length && !this._isCalledState()) {
12041
+ let t = this._transport?.getState(), n = e.roomId ?? null, r = [], { externalIds: i, missingIds: a } = this._getExternalIdsByParticipantIds(e.addedParticipantIds ?? []);
12042
+ r.push(...a);
12043
+ let o = e.addedParticipants;
12044
+ if (i.length && o?.length !== i.length && !this._isCalledState()) {
11950
12045
  let e = this._convertExternalIdsToServerExternalIds(i);
11951
- a = (await this._signaling.getParticipants(e)).participants;
12046
+ o = (await this._signaling.getParticipants(e)).participants;
11952
12047
  }
11953
- let o = a?.map((e) => {
12048
+ let s = o?.map((e) => {
11954
12049
  let r = j.composeId(e);
11955
12050
  return this._createParticipant({
11956
12051
  id: r,
@@ -11966,38 +12061,38 @@ var ls = 15, $ = class e extends b {
11966
12061
  observedIds: e.observedIds || [],
11967
12062
  markers: this._denormalizeMarkers(r, e.markers),
11968
12063
  isInRoom: n !== null
11969
- }, e.decorativeUserId);
11970
- }) || [], s = !1;
11971
- for (let e of o) e.id === this._conversation?.compositeUserId && (s = !0), this._registerParticipantInCache(e);
11972
- this._transport?.getState() === q.IDLE && !this._isCalledState() && this._openTransport(o, !0);
11973
- let c = [];
12064
+ }, j.composeDecorativeId(e));
12065
+ }) || [], c = !1;
12066
+ for (let e of s) e.id === this._conversation?.compositeUserId && (c = !0), this._registerParticipantInCache(e);
12067
+ this._transport?.getState() === q.IDLE && !this._isCalledState() && this._openTransport(s, !0);
12068
+ let l = [];
11974
12069
  if (e?.removedParticipantMarkers) {
11975
12070
  for (let t of e.removedParticipantMarkers) if (t.GRID?.id) {
11976
12071
  let e = this._getExternalIdByParticipantId(t.GRID.id);
11977
- c.push(e);
12072
+ e ? l.push(e) : r.push(t.GRID.id);
11978
12073
  }
11979
12074
  }
11980
- if (s && await this._onRoomSwitched(n), c) {
12075
+ if (this._reportMissingExternalIds(r, "ROOM_PARTICIPANTS_UPDATED"), c && await this._onRoomSwitched(n), l) {
11981
12076
  let e = this._conversation?.pinnedParticipantIdByRoom.get(n);
11982
12077
  if (e) {
11983
12078
  let t = this._getExternalIdByParticipantId(e);
11984
12079
  if (t) {
11985
- for (let e of c) if (Q.compare(t, e)) {
12080
+ for (let e of l) if (Q.compare(t, e)) {
11986
12081
  this._conversation?.pinnedParticipantIdByRoom.delete(n);
11987
12082
  break;
11988
12083
  }
11989
12084
  }
11990
12085
  }
11991
12086
  }
11992
- let l = {
12087
+ let u = {
11993
12088
  roomId: n,
11994
12089
  participantCount: e.participantCount,
11995
12090
  addedParticipantIds: i,
11996
- addedParticipants: j.mapSharedParticipants(o),
12091
+ addedParticipants: j.mapSharedParticipants(s),
11997
12092
  removedParticipantMarkers: e?.removedParticipantMarkers,
11998
- removedParticipantIds: c
12093
+ removedParticipantIds: l
11999
12094
  };
12000
- this._isCalledState() || L.onRoomParticipantsUpdated(l, this.id);
12095
+ this._isCalledState() || L.onRoomParticipantsUpdated(u, this.id);
12001
12096
  }
12002
12097
  async _onRoomSwitched(e, t = !1) {
12003
12098
  if (!this._conversation || this._conversation.roomId === e) return;
@@ -12017,11 +12112,11 @@ var ls = 15, $ = class e extends b {
12017
12112
  if (this._setMuteStatesForRoomId(t.muteStates, n), this._conversation?.recordsInfoByRoom.set(n, t.recordInfo ?? null), this._conversation?.pinnedParticipantIdByRoom.set(n, t.pinnedParticipantId ?? null), t.asrInfo && this._conversation?.asrInfoByRoom.set(n, t.asrInfo), t.urlSharingInfo ? this._conversation?.urlSharingInfoByRoom.set(n, t.urlSharingInfo) : this._conversation?.urlSharingInfoByRoom.delete(n), e) {
12018
12113
  let e = this._participants;
12019
12114
  await this._registerParticipants(t?.participants?.participants?.filter((t) => !e[j.composeId(t)]) || [], !0);
12020
- let n = this._convertRoomToExternal(t);
12115
+ let { room: n } = this._convertRoomToExternal(t);
12021
12116
  n && r.push(n);
12022
12117
  }
12023
12118
  }
12024
- r.length && !this._isCalledState() && L.onRoomsUpdated({ [Ja.UPDATE]: { rooms: r } }, this.id);
12119
+ r.length && !this._isCalledState() && L.onRoomsUpdated({ [Ya.UPDATE]: { rooms: r } }, this.id);
12025
12120
  }
12026
12121
  _onFeedback(e) {
12027
12122
  let t = [];
@@ -12051,7 +12146,9 @@ var ls = 15, $ = class e extends b {
12051
12146
  return;
12052
12147
  }
12053
12148
  let o = Q.fromSignaling(r, a.deviceIdx);
12054
- if (L.onParticipantIdChanged(a, o, this.id), this._api.cacheExternalId(n, o), this._api.mapDecorativeId(n, t), i) this._conversation.externalId = o;
12149
+ L.onParticipantIdChanged(a, o, this.id);
12150
+ let s = j.compose(n, a.deviceIdx), c = j.compose(t, a.deviceIdx);
12151
+ if (this._api.cacheExternalId(s, o), this._api.mapDecorativeId(s, c), i) this._conversation.externalId = o;
12055
12152
  else {
12056
12153
  let e = this._participants;
12057
12154
  e[t].externalId = o;
@@ -12095,19 +12192,19 @@ var ls = 15, $ = class e extends b {
12095
12192
  _getParticipant(e) {
12096
12193
  return this._participants[e];
12097
12194
  }
12098
- }, us = null, ds = class e extends Error {
12195
+ }, ds = null, fs = class e extends Error {
12099
12196
  constructor(t, n) {
12100
12197
  super(t), h(this, "participantErrors", void 0), Object.setPrototypeOf(this, e.prototype), this.participantErrors = n;
12101
12198
  }
12102
- }, fs = null, ps = null, ms = 64 * 1024;
12103
- function hs() {
12104
- fs = null, ps = null;
12199
+ }, ps = null, ms = null, hs = 64 * 1024;
12200
+ function gs() {
12201
+ ps = null, ms = null;
12105
12202
  }
12106
- function gs(e) {
12203
+ function _s(e) {
12107
12204
  return e?.endsWith("/") ? e.slice(0, -1) : e;
12108
12205
  }
12109
- async function _s(e = null, t) {
12110
- let n = gs(e ?? M.apiBaseUrl);
12206
+ async function vs(e = null, t) {
12207
+ let n = _s(e ?? M.apiBaseUrl);
12111
12208
  if (n) return n;
12112
12209
  if ((t ?? M.apiEnv) !== "AUTO") return M.apiEndpoint(t);
12113
12210
  try {
@@ -12122,25 +12219,25 @@ async function _s(e = null, t) {
12122
12219
  return R.warn("Failed to resolve API endpoint using DNS, default is used", e), M.apiEndpoint(t);
12123
12220
  }
12124
12221
  }
12125
- async function vs() {
12126
- return fs || ps || (ps = _s(), fs = await ps, ps = null, fs);
12222
+ async function ys() {
12223
+ return ps || ms || (ms = vs(), ps = await ms, ms = null, ps);
12127
12224
  }
12128
- async function ys(e, t = {}, n = !1) {
12225
+ async function bs(e, t = {}, n = !1) {
12129
12226
  if (!window.Blob || !window.navigator.sendBeacon) return;
12130
- await vs();
12131
- let r = Ts(e, t, n), i = new window.Blob([r], { type: "application/x-www-form-urlencoded" });
12132
- window.navigator.sendBeacon(`${fs}/fb.do`, i);
12227
+ await ys();
12228
+ let r = Es(e, t, n), i = new window.Blob([r], { type: "application/x-www-form-urlencoded" });
12229
+ window.navigator.sendBeacon(`${ps}/fb.do`, i);
12133
12230
  }
12134
- async function bs(e, t = {}, n = !1, r) {
12135
- return await vs(), Ss(Ts(e, t, n), r);
12231
+ async function xs(e, t = {}, n = !1, r) {
12232
+ return await ys(), Cs(Es(e, t, n), r);
12136
12233
  }
12137
- async function xs(e, t = {}, n = !1) {
12138
- await vs();
12139
- let r = Ts(e, t, n);
12140
- return Ss(r, void 0, new Blob([r]).size <= ms);
12234
+ async function Ss(e, t = {}, n = !1) {
12235
+ await ys();
12236
+ let r = Es(e, t, n);
12237
+ return Cs(r, void 0, new Blob([r]).size <= hs);
12141
12238
  }
12142
- async function Ss(e, t, n = !1) {
12143
- let r = `${t ?? fs}/fb.do`, i = new AbortController(), a = new O(x.NETWORK, { callError: {
12239
+ async function Cs(e, t, n = !1) {
12240
+ let r = `${t ?? ps}/fb.do`, i = new AbortController(), a = new O(x.NETWORK, { callError: {
12144
12241
  scope: "network",
12145
12242
  source: "api",
12146
12243
  code: "timeout",
@@ -12159,16 +12256,16 @@ async function Ss(e, t, n = !1) {
12159
12256
  } catch {
12160
12257
  o = { result: a };
12161
12258
  }
12162
- if (!t.ok && !Cs(o)) throw new O(x.API, { callError: {
12259
+ if (!t.ok && !ws(o)) throw new O(x.API, { callError: {
12163
12260
  scope: "server",
12164
12261
  source: "api",
12165
12262
  code: `http-${t.status}`,
12166
12263
  description: "http-error"
12167
12264
  } });
12168
- if (Cs(o)) throw o;
12265
+ if (ws(o)) throw o;
12169
12266
  return o;
12170
12267
  } catch (e) {
12171
- throw e instanceof O ? e : i.signal.aborted ? a : Cs(e) ? e : new O(x.NETWORK, { callError: {
12268
+ throw e instanceof O ? e : i.signal.aborted ? a : ws(e) ? e : new O(x.NETWORK, { callError: {
12172
12269
  scope: "network",
12173
12270
  source: "api",
12174
12271
  code: "fetch-failed",
@@ -12178,12 +12275,12 @@ async function Ss(e, t, n = !1) {
12178
12275
  clearTimeout(o);
12179
12276
  }
12180
12277
  }
12181
- function Cs(e) {
12278
+ function ws(e) {
12182
12279
  if (typeof e != "object" || !e) return !1;
12183
12280
  let t = e;
12184
12281
  return typeof t.error_code == "number" && typeof t.error_msg == "string";
12185
12282
  }
12186
- async function ws(e, t) {
12283
+ async function Ts(e, t) {
12187
12284
  try {
12188
12285
  let n = await fetch(e, {
12189
12286
  method: "POST",
@@ -12196,7 +12293,7 @@ async function ws(e, t) {
12196
12293
  throw R.warn("Failed to send form data", e), e;
12197
12294
  }
12198
12295
  }
12199
- function Ts(e, t = {}, n = !1) {
12296
+ function Es(e, t = {}, n = !1) {
12200
12297
  t.method = e, t.format = "JSON", t.application_key || (t.application_key = M.apiKey), n || (y.sessionKey ? t.session_key = y.sessionKey : y.accessToken && (t.access_token = y.accessToken));
12201
12298
  for (let [e, n] of Object.entries(t)) typeof n == "object" && (t[e] = JSON.stringify(n));
12202
12299
  let r = "";
@@ -12205,7 +12302,7 @@ function Ts(e, t = {}, n = !1) {
12205
12302
  }
12206
12303
  //#endregion
12207
12304
  //#region src/abstract/BaseApi.ts
12208
- var Es = class {
12305
+ var Ds = class {
12209
12306
  constructor() {
12210
12307
  h(this, "_abortSignal", void 0);
12211
12308
  }
@@ -12223,22 +12320,16 @@ var Es = class {
12223
12320
  }
12224
12321
  log(e) {}
12225
12322
  logClientStats(e) {}
12226
- getCachedOkIdByExternalId(e) {
12227
- return null;
12228
- }
12229
- getCachedRawOkIdByExternalId(e) {
12323
+ getCachedParticipantIdByExternalId(e) {
12230
12324
  return null;
12231
12325
  }
12232
- getCachedExternalIdByOkId(e) {
12326
+ getCachedExternalIdByParticipantId(e) {
12233
12327
  return null;
12234
12328
  }
12235
12329
  cacheExternalId(e, t) {}
12236
12330
  mapDecorativeId(e, t) {}
12237
12331
  unmapDecorativeId(e) {}
12238
12332
  getDecorativeIdByInitialId(e) {}
12239
- replaceByInitialIdIdIfExists(e) {
12240
- return typeof e == "string" ? parseInt(e, 10) : e;
12241
- }
12242
12333
  hangupConversation(e, t = D.HUNGUP, n) {}
12243
12334
  async removeHistoryRecords(e) {}
12244
12335
  async getServerTime() {
@@ -12248,78 +12339,62 @@ var Es = class {
12248
12339
  async getInbounds() {
12249
12340
  return [];
12250
12341
  }
12251
- }, Ds = class e {
12342
+ }, Os = class e {
12252
12343
  constructor() {
12253
- h(this, "_okIdToExternalId", /* @__PURE__ */ new Map()), h(this, "_externalIdToOkId", /* @__PURE__ */ new Map()), h(this, "_decorativeIdToInitialId", /* @__PURE__ */ new Map()), h(this, "_initialIdToDecorativeId", /* @__PURE__ */ new Map());
12344
+ h(this, "_participantIdToExternalId", /* @__PURE__ */ new Map()), h(this, "_externalIdToParticipantId", /* @__PURE__ */ new Map()), h(this, "_decorativeIdToInitialId", /* @__PURE__ */ new Map()), h(this, "_initialIdToDecorativeId", /* @__PURE__ */ new Map());
12254
12345
  }
12255
12346
  static _normalizeType(e) {
12256
- return e.type === to.GROUP ? {
12347
+ return e.type === no.GROUP ? {
12257
12348
  ...e,
12258
- type: to.USER
12349
+ type: no.USER
12259
12350
  } : e;
12260
12351
  }
12261
- getOkId(t) {
12262
- let n = Q.toString(e._normalizeType(t)), r = this._externalIdToOkId.get(n);
12263
- return r == null ? null : this.replaceByInitialIdIdIfExists(r);
12264
- }
12265
12352
  getExternalId(e) {
12266
- let t = this.getDecorativeIdByInitialId(e) ?? e, n = this._okIdToExternalId.get(t);
12353
+ let t = this._initialIdToDecorativeId.get(e) ?? e, n = this._participantIdToExternalId.get(t);
12267
12354
  return n == null ? null : Q.fromString(n);
12268
12355
  }
12269
- hasByExternalId(t) {
12270
- return this._externalIdToOkId.has(Q.toString(e._normalizeType(t)));
12271
- }
12272
- hasByOkId(e) {
12273
- return this._okIdToExternalId.has(e);
12356
+ getParticipantId(t) {
12357
+ let n = Q.toString(e._normalizeType(t)), r = this._externalIdToParticipantId.get(n);
12358
+ return r == null ? null : this._decorativeIdToInitialId.get(r) ?? r;
12274
12359
  }
12275
12360
  cache(t, n) {
12276
- let r = j.extractOkId(t), i = e._normalizeType(n), a = Q.toString(i);
12277
- this._okIdToExternalId.set(r, a), this._externalIdToOkId.set(a, r);
12361
+ let r = e._normalizeType(n), i = Q.toString(r);
12362
+ this._participantIdToExternalId.set(t, i), this._externalIdToParticipantId.set(i, t);
12278
12363
  }
12279
12364
  mapDecorativeId(e, t) {
12280
- let n = j.extractOkId(e), r = j.extractOkId(t);
12281
- this._decorativeIdToInitialId.set(n, r), this._initialIdToDecorativeId.set(r, n);
12365
+ this._decorativeIdToInitialId.set(e, t), this._initialIdToDecorativeId.set(t, e);
12282
12366
  }
12283
12367
  unmapDecorativeId(e) {
12284
- let t = j.extractOkId(e), n = this.getDecorativeIdByInitialId(t);
12285
- n && this._decorativeIdToInitialId.delete(n), this._initialIdToDecorativeId.delete(t);
12368
+ let t = this._initialIdToDecorativeId.get(e);
12369
+ t && this._decorativeIdToInitialId.delete(t), this._initialIdToDecorativeId.delete(e);
12286
12370
  }
12287
12371
  getDecorativeIdByInitialId(e) {
12288
- let t = j.extractOkId(e);
12289
- return this._initialIdToDecorativeId.get(t);
12290
- }
12291
- replaceByInitialIdIdIfExists(e) {
12292
- let t = j.extractOkId(e);
12293
- return this._decorativeIdToInitialId.get(t) ?? t;
12294
- }
12295
- getParticipantIdByExternalId(e) {
12296
- let t = this.getOkId(e);
12297
- return t == null ? null : j.composeParticipantId(t, A.USER, e.deviceIdx ?? 0);
12372
+ return this._initialIdToDecorativeId.get(e);
12298
12373
  }
12299
12374
  clear() {
12300
- this._okIdToExternalId.clear(), this._externalIdToOkId.clear(), this._decorativeIdToInitialId.clear(), this._initialIdToDecorativeId.clear();
12375
+ this._participantIdToExternalId.clear(), this._externalIdToParticipantId.clear(), this._decorativeIdToInitialId.clear(), this._initialIdToDecorativeId.clear();
12301
12376
  }
12302
- }, Os = "anonymLogin:", ks = 700, As = 3e3;
12303
- function js(e) {
12377
+ }, ks = "anonymLogin:", As = 700, js = 3e3;
12378
+ function Ms(e) {
12304
12379
  let t = e.error_code;
12305
12380
  switch (t) {
12306
- case 2: return Ms(D.SERVICE_UNAVAILABLE, t, "service-unavailable");
12307
- case 4: return e.error_msg.includes("participants.limit.exceeded") ? Ms(D.PARTICIPANT_LIMIT_REACHED, t, "participants-limit-exceeded") : Ms(x.API, t, "request-error");
12308
- case 300: return Ms(D.NOT_FOUND, t, "not-found");
12309
- case 1101: return Ms(D.SERVICE_DISABLED, t, "vchat-service-disabled");
12310
- case 1102: return Ms(D.CALLEE_IS_OFFLINE, t, "target-user-unavailable");
12311
- case 1103: return Ms(D.NOT_FRIENDS, t, "friendship-required");
12312
- case 1104: return Ns(t, "youla-api-error");
12313
- case 1106: return Ns(t, "vk-api-error");
12314
- case 1113: return Ms(D.CALLER_IS_REJECTED, t, "caller-is-rejected");
12381
+ case 2: return Ns(D.SERVICE_UNAVAILABLE, t, "service-unavailable");
12382
+ case 4: return e.error_msg.includes("participants.limit.exceeded") ? Ns(D.PARTICIPANT_LIMIT_REACHED, t, "participants-limit-exceeded") : Ns(x.API, t, "request-error");
12383
+ case 300: return Ns(D.NOT_FOUND, t, "not-found");
12384
+ case 1101: return Ns(D.SERVICE_DISABLED, t, "vchat-service-disabled");
12385
+ case 1102: return Ns(D.CALLEE_IS_OFFLINE, t, "target-user-unavailable");
12386
+ case 1103: return Ns(D.NOT_FRIENDS, t, "friendship-required");
12387
+ case 1104: return Ps(t, "youla-api-error");
12388
+ case 1106: return Ps(t, "vk-api-error");
12389
+ case 1113: return Ns(D.CALLER_IS_REJECTED, t, "caller-is-rejected");
12315
12390
  case 1114: {
12316
12391
  let n = e.custom_error?.vchat_detailed_api_error?.code, r = n?.startsWith("obsolete_client");
12317
- return Ms(r ? D.OBSOLETE_CLIENT : D.VCHAT_DETAILED_ERROR, t, n ?? "detailed-error", r ? n : void 0);
12392
+ return Ns(r ? D.OBSOLETE_CLIENT : D.VCHAT_DETAILED_ERROR, t, n ?? "detailed-error", r ? n : void 0);
12318
12393
  }
12319
- default: return Ms(x.API, t, "api-error");
12394
+ default: return Ns(x.API, t, "api-error");
12320
12395
  }
12321
12396
  }
12322
- function Ms(e, t, n, r) {
12397
+ function Ns(e, t, n, r) {
12323
12398
  return {
12324
12399
  type: e,
12325
12400
  callError: {
@@ -12331,7 +12406,7 @@ function Ms(e, t, n, r) {
12331
12406
  message: r
12332
12407
  };
12333
12408
  }
12334
- function Ns(e, t) {
12409
+ function Ps(e, t) {
12335
12410
  return {
12336
12411
  type: D.EXTERNAL_API_ERROR,
12337
12412
  callError: {
@@ -12342,19 +12417,19 @@ function Ns(e, t) {
12342
12417
  }
12343
12418
  };
12344
12419
  }
12345
- var Ps = class extends Es {
12420
+ var Fs = class extends Ds {
12346
12421
  constructor(...e) {
12347
- super(...e), h(this, "_uuid", void 0), h(this, "_idCache", new Ds());
12422
+ super(...e), h(this, "_uuid", void 0), h(this, "_idCache", new Os());
12348
12423
  }
12349
12424
  async _callUnsafe(e, t = {}, n = !1) {
12350
12425
  let r = async (i) => {
12351
12426
  try {
12352
- return await bs(e, t, n);
12427
+ return await xs(e, t, n);
12353
12428
  } catch (t) {
12354
12429
  if (!t || typeof t != "object" || !Object.hasOwn(t, "error_msg")) {
12355
12430
  i++;
12356
12431
  let n = t && (typeof t == "object" || typeof t == "function") ? Object.getOwnPropertyNames(t).map((e) => `${e}: ${JSON.stringify(t[e])}`) : [String(t)];
12357
- if (R.debug(`${e} network error, attempt ${i}: ${n.join("\n ")}`), this._abortSignal?.aborted && (R.debug(`${e} aborted`), this._abortSignal.throwIfAborted()), i < M.apiMaxAttempt) return await j.delay(Math.min(i * ks, As), { signal: this._abortSignal }), r(i);
12432
+ if (R.debug(`${e} network error, attempt ${i}: ${n.join("\n ")}`), this._abortSignal?.aborted && (R.debug(`${e} aborted`), this._abortSignal.throwIfAborted()), i < M.apiMaxAttempt) return await j.delay(Math.min(i * As, js), { signal: this._abortSignal }), r(i);
12358
12433
  }
12359
12434
  throw R.warn(e, "error", t), t;
12360
12435
  }
@@ -12377,16 +12452,19 @@ var Ps = class extends Es {
12377
12452
  message: i?.error_msg,
12378
12453
  code: i?.error_code
12379
12454
  };
12380
- if (i.custom_error && (a.custom_error = i.custom_error), Fs(i)) {
12381
- let e = js(i);
12455
+ if (i.custom_error && (a.custom_error = i.custom_error), Is(i)) {
12456
+ let e = Ms(i);
12382
12457
  throw a.callError = e.callError, a.message = e.message ?? a.message, new O(e.type, a);
12383
12458
  }
12384
12459
  throw new O(x.API, a);
12385
12460
  }
12386
12461
  }
12387
12462
  userId(e) {
12388
- let { compositeUserId: t } = j.decomposeParticipantId(e), { id: n } = j.decomposeId(t);
12389
- return y.isEmpty() ? Q.fromId(String(n)) : this._idCache.getExternalId(n) || Q.fromId(String(n));
12463
+ if (y.isEmpty()) {
12464
+ let { compositeUserId: t } = j.decomposeParticipantId(e), { id: n } = j.decomposeId(t);
12465
+ return Q.fromId(String(n));
12466
+ }
12467
+ return this._idCache.getExternalId(e);
12390
12468
  }
12391
12469
  async authorize() {
12392
12470
  if (this._ensureUuid(), !M.apiKey) throw new O(x.API, {
@@ -12424,17 +12502,17 @@ var Ps = class extends Es {
12424
12502
  });
12425
12503
  }
12426
12504
  _getAnonymLoginCacheKey() {
12427
- return M.authToken ? `${Os}${M.authToken}` : null;
12505
+ return M.authToken ? `${ks}${M.authToken}` : null;
12428
12506
  }
12429
12507
  _getCachedAnonymLogin() {
12430
12508
  let e = this._getAnonymLoginCacheKey();
12431
12509
  if (!e) return null;
12432
12510
  let t = at.get(e);
12433
- return Is(t) ? t : (t && at.remove(e), null);
12511
+ return Ls(t) ? t : (t && at.remove(e), null);
12434
12512
  }
12435
12513
  _setCachedAnonymLogin(e) {
12436
12514
  let t = this._getAnonymLoginCacheKey();
12437
- !t || !Is(e) || at.set(t, {
12515
+ !t || !Ls(e) || at.set(t, {
12438
12516
  session_key: e.session_key,
12439
12517
  session_secret_key: e.session_secret_key,
12440
12518
  uid: e.uid
@@ -12452,7 +12530,7 @@ var Ps = class extends Es {
12452
12530
  }
12453
12531
  async _sendClientStats(e, t = !0) {
12454
12532
  try {
12455
- (await xs("vchat.clientStats", e))?.items_responses?.forEach((e) => {
12533
+ (await Ss("vchat.clientStats", e))?.items_responses?.forEach((e) => {
12456
12534
  e.errors && R.error("[vchat.clientStats]", e);
12457
12535
  });
12458
12536
  } catch (n) {
@@ -12482,14 +12560,14 @@ var Ps = class extends Es {
12482
12560
  }, a = await this._callUnsafe("vchat.getLogUploadUrl", i), o = new FormData(), s = new Blob([r], { type: "application/json" });
12483
12561
  o.append("file", s, "log.json");
12484
12562
  let c = new URL(a.upload_url);
12485
- return c.searchParams.append("size", s.size.toString()), ws(c.toString(), o);
12563
+ return c.searchParams.append("size", s.size.toString()), Ts(c.toString(), o);
12486
12564
  }
12487
12565
  async joinConversation(e, t = !1, n) {
12488
12566
  let r = {
12489
12567
  conversationId: e,
12490
12568
  isVideo: t,
12491
12569
  protocolVersion: M.protocolVersion,
12492
- capabilities: xa.getFlags()
12570
+ capabilities: Sa.getFlags()
12493
12571
  };
12494
12572
  return n && (r.chatId = n), this._call("vchat.joinConversation", r);
12495
12573
  }
@@ -12521,13 +12599,13 @@ var Ps = class extends Es {
12521
12599
  externalIds: l
12522
12600
  });
12523
12601
  if (t && t.length) switch (n) {
12524
- case Va.USER:
12602
+ case Ha.USER:
12525
12603
  u.uids = t.join(",");
12526
12604
  break;
12527
- case Va.GROUP:
12605
+ case Ha.GROUP:
12528
12606
  u.gid = t[0];
12529
12607
  break;
12530
- case Va.CHAT:
12608
+ case Ha.CHAT:
12531
12609
  u.chatId = t[0];
12532
12610
  break;
12533
12611
  }
@@ -12570,17 +12648,14 @@ var Ps = class extends Es {
12570
12648
  joinLink: e,
12571
12649
  isVideo: t,
12572
12650
  protocolVersion: M.protocolVersion,
12573
- capabilities: xa.getFlags()
12651
+ capabilities: Sa.getFlags()
12574
12652
  };
12575
12653
  return n?.length && (i.observedIds = n.join(",")), M.anonymToken && (i.anonymToken = M.anonymToken), r && (i.payload = r), this._call("vchat.joinConversationByLink", i);
12576
12654
  }
12577
- getCachedOkIdByExternalId(e) {
12578
- return this._idCache.getParticipantIdByExternalId(e);
12579
- }
12580
- getCachedRawOkIdByExternalId(e) {
12581
- return this._idCache.getOkId(e);
12655
+ getCachedParticipantIdByExternalId(e) {
12656
+ return this._idCache.getParticipantId(e);
12582
12657
  }
12583
- getCachedExternalIdByOkId(e) {
12658
+ getCachedExternalIdByParticipantId(e) {
12584
12659
  return this._idCache.getExternalId(e);
12585
12660
  }
12586
12661
  cacheExternalId(e, t) {
@@ -12595,9 +12670,6 @@ var Ps = class extends Es {
12595
12670
  getDecorativeIdByInitialId(e) {
12596
12671
  return this._idCache.getDecorativeIdByInitialId(e);
12597
12672
  }
12598
- replaceByInitialIdIdIfExists(e) {
12599
- return this._idCache.replaceByInitialIdIdIfExists(e);
12600
- }
12601
12673
  async getConversationParams(e) {
12602
12674
  let t = {};
12603
12675
  return M.anonymToken && (t.anonymToken = M.anonymToken), e && (t.conversationId = e), this._call("vchat.getConversationParams", t);
@@ -12613,7 +12685,7 @@ var Ps = class extends Es {
12613
12685
  conversationId: e,
12614
12686
  reason: t
12615
12687
  };
12616
- M.anonymToken && (r.anonymToken = M.anonymToken), n?.peerId && (r.peerId = n.peerId), ys("vchat.hangupConversation", r);
12688
+ M.anonymToken && (r.anonymToken = M.anonymToken), n?.peerId && (r.peerId = n.peerId), bs("vchat.hangupConversation", r);
12617
12689
  }
12618
12690
  async removeHistoryRecords(e) {
12619
12691
  await this._call("vchat.removeHistoryRecords", { recordIds: e.join(",") });
@@ -12629,19 +12701,19 @@ var Ps = class extends Es {
12629
12701
  return Array.isArray(e?.inbounds) ? e.inbounds : [];
12630
12702
  }
12631
12703
  };
12632
- function Fs(e) {
12704
+ function Is(e) {
12633
12705
  return typeof e == "object" && !!e && "error_code" in e && "error_msg" in e;
12634
12706
  }
12635
- function Is(e) {
12707
+ function Ls(e) {
12636
12708
  return typeof e == "object" && !!e && "session_key" in e && "session_secret_key" in e && typeof e.session_key == "string" && e.session_key.length > 0 && typeof e.session_secret_key == "string" && e.session_secret_key.length > 0;
12637
12709
  }
12638
12710
  //#endregion
12639
12711
  //#region src/enums/RecordRole.ts
12640
- var Ls = /* @__PURE__ */ function(e) {
12712
+ var Rs = /* @__PURE__ */ function(e) {
12641
12713
  return e.KING = "KING", e.PAWN = "PAWN", e;
12642
- }(Ls || {}), Rs = /* @__PURE__ */ function(e) {
12714
+ }(Rs || {}), zs = /* @__PURE__ */ function(e) {
12643
12715
  return e.OFF = "0", e.ON = "1", e;
12644
- }({}), zs = class {
12716
+ }({}), Bs = class {
12645
12717
  constructor(e) {
12646
12718
  h(this, "_queue", void 0), h(this, "_readCursor", void 0), h(this, "_writeCursor", void 0), h(this, "_moveReadCursor", void 0), h(this, "_left", void 0), this._queue = Array(e).fill(null), this._readCursor = this._writeCursor = this._left = 0, this._moveReadCursor = !1;
12647
12719
  }
@@ -12664,12 +12736,12 @@ var Ls = /* @__PURE__ */ function(e) {
12664
12736
  let e = this._queue[this._readCursor];
12665
12737
  return e && (this._moveReadCursor = !1, this._queue[this._readCursor] = null, this._readCursor = this.nextCursor(this._readCursor), --this._left), e;
12666
12738
  }
12667
- }, Bs = class {
12739
+ }, Vs = class {
12668
12740
  constructor(e, t, n, r = null) {
12669
12741
  h(this, "_uuid", void 0), h(this, "_apiKey", void 0), h(this, "_callToken", void 0), h(this, "_apiEnv", void 0), h(this, "_baseApiUrl", void 0), h(this, "_sessionKey", void 0), this._uuid = j.uuid(), this._apiKey = t, this._callToken = n, this._apiEnv = e, this._baseApiUrl = r;
12670
12742
  }
12671
12743
  async authorize() {
12672
- let e = await bs("auth.anonymLogin", {
12744
+ let e = await xs("auth.anonymLogin", {
12673
12745
  session_data: {
12674
12746
  device_id: this._uuid,
12675
12747
  client_version: M.appVersion,
@@ -12678,7 +12750,7 @@ var Ls = /* @__PURE__ */ function(e) {
12678
12750
  version: 3
12679
12751
  },
12680
12752
  application_key: this._apiKey
12681
- }, !0, await _s(this._baseApiUrl, this._apiEnv));
12753
+ }, !0, await vs(this._baseApiUrl, this._apiEnv));
12682
12754
  return j.isObject(e) && !("error_msg" in e) ? (this._sessionKey = e.session_key, !0) : !1;
12683
12755
  }
12684
12756
  async hangupConversation(e, t) {
@@ -12688,9 +12760,9 @@ var Ls = /* @__PURE__ */ function(e) {
12688
12760
  application_key: this._apiKey,
12689
12761
  session_key: this._sessionKey
12690
12762
  };
12691
- t?.peerId && (n.peerId = t.peerId), await bs("vchat.hangupConversation", n, !0, await _s(this._baseApiUrl, this._apiEnv));
12763
+ t?.peerId && (n.peerId = t.peerId), await xs("vchat.hangupConversation", n, !0, await vs(this._baseApiUrl, this._apiEnv));
12692
12764
  }
12693
- }, Vs, Hs = null, Us = {
12765
+ }, Hs, Us = null, Ws = {
12694
12766
  getCameras: T.getCameras,
12695
12767
  getMicrophones: T.getMicrophones,
12696
12768
  getOutput: T.getOutput,
@@ -12716,27 +12788,27 @@ var Ls = /* @__PURE__ */ function(e) {
12716
12788
  baseChromeVersion: T.baseChromeVersion,
12717
12789
  getAudioContext: T.getAudioContext,
12718
12790
  isAudioShareSupported: T.isAudioShareSupported
12719
- }, Ws = { participantMarkerCompare: j.participantMarkerCompare };
12720
- function Gs(e) {
12721
- Hs = e;
12722
- }
12791
+ }, Gs = { participantMarkerCompare: j.participantMarkerCompare };
12723
12792
  function Ks(e) {
12724
- M.videoEffects = e;
12793
+ Us = e;
12725
12794
  }
12726
12795
  function qs(e) {
12796
+ M.videoEffects = e;
12797
+ }
12798
+ function Js(e) {
12727
12799
  M.audioEffects = e;
12728
12800
  }
12729
- function Js(e, t = {}) {
12801
+ function Ys(e, t = {}) {
12730
12802
  M.vad = e, M.vadOptions = t;
12731
12803
  }
12732
- function Ys(e, t = null, n = {}, r = 1) {
12804
+ function Xs(e, t = null, n = {}, r = 1) {
12733
12805
  M.vmoji = e, M.vmojiOptions = {
12734
12806
  protocolVersion: r,
12735
12807
  renderingOptions: n
12736
12808
  }, t && e.setSDK(t);
12737
12809
  }
12738
- async function Xs(t) {
12739
- M.set(t), Vs || (Vs = new Ps()), e.disableLog(!M.debug), R.toggle(M.debug), R.log(`Calls SDK ${M.sdkVersion}`, t), await T.init();
12810
+ async function Zs(t) {
12811
+ M.set(t), Hs || (Hs = new Fs()), e.disableLog(!M.debug), R.toggle(M.debug), R.log(`Calls SDK ${M.sdkVersion}`, t), await T.init();
12740
12812
  let n = T.getBrowserSupportFailure();
12741
12813
  if (n) throw new O(x.UNSUPPORTED, { callError: {
12742
12814
  scope: "internal",
@@ -12745,13 +12817,19 @@ async function Xs(t) {
12745
12817
  } });
12746
12818
  R.log("UserAgent:", navigator.userAgent), R.log("Screen resolution:", `${window.screen.width}x${window.screen.height}`), R.log("Permissions:", `Camera: ${T.hasCameraPermission()}, Mic: ${T.hasMicrophonePermission()}`), R.log("Simulcast:", `${t.simulcast} => ${M.simulcast}`);
12747
12819
  }
12748
- async function Zs(e, t = [S.AUDIO], n = "", r = !1, i = !1, a, o, s) {
12820
+ async function Qs(e, t = [S.AUDIO], n = "", r = !1, i = !1, a, o, s) {
12749
12821
  let c = [];
12750
- return Array.isArray(e) ? c = e.length ? e : [] : e && (c = [e]), Qs([], Va.USER, t, n, r, i, a, c, o, s);
12822
+ return Array.isArray(e) ? c = e.length ? e : [] : e && (c = [e]), ec([], Ha.USER, t, n, r, i, a, c, o, s);
12751
12823
  }
12752
- async function Qs(e, t = Va.USER, n, r = "", i = !1, a = !1, o, s, c, l) {
12753
- if (!M.hold && z.callsLength > 0) throw R.error("There is already active call"), new O(D.HAS_ACTIVE_CALL);
12754
- return new $(new Ps(), Hs).onStart({
12824
+ function $s(e, t = []) {
12825
+ let n = e.getIncomingCallerExternalId();
12826
+ return n ? t.length === 1 && t[0].id === n.id && t[0].type === n.type : !1;
12827
+ }
12828
+ async function ec(e, t = Ha.USER, n, r = "", i = !1, a = !1, o, s, c, l) {
12829
+ if (!M.hold && z.getActive()) throw R.error("There is already active call"), new O(D.HAS_ACTIVE_CALL);
12830
+ let u = z.getAll().find((e) => e.isIncomingRinging);
12831
+ if (!M.hold && u && !$s(u, s)) throw R.error("There is already incoming call"), new O(D.HAS_ACTIVE_CALL);
12832
+ return new $(new Fs(), Us).onStart({
12755
12833
  opponentIds: e,
12756
12834
  opponentType: t,
12757
12835
  mediaOptions: n,
@@ -12764,40 +12842,40 @@ async function Qs(e, t = Va.USER, n, r = "", i = !1, a = !1, o, s, c, l) {
12764
12842
  conversationId: l
12765
12843
  });
12766
12844
  }
12767
- async function $s(e, t) {
12768
- return ec(e, A.USER, void 0, t);
12845
+ async function tc(e, t) {
12846
+ return nc(e, A.USER, void 0, t);
12769
12847
  }
12770
- async function ec(e, t = A.USER, n, r, i, a) {
12848
+ async function nc(e, t = A.USER, n, r, i, a) {
12771
12849
  if (e === $.id()) throw Error("Push has already been processed");
12772
- return new $(new Ps(), Hs).onPush(e, t, n, r, i, a);
12850
+ return new $(new Fs(), Us).onPush(e, t, n, r, i, a);
12773
12851
  }
12774
- async function tc() {
12775
- return Vs.getInbounds();
12852
+ async function rc() {
12853
+ return Hs.getInbounds();
12776
12854
  }
12777
- async function nc(e, t) {
12778
- return e && (M.authToken = e), t !== void 0 && M.apiBaseUrl !== t && (M.apiBaseUrl = t, hs()), Vs.authorize();
12855
+ async function ic(e, t) {
12856
+ return e && (M.authToken = e), t !== void 0 && M.apiBaseUrl !== t && (M.apiBaseUrl = t, gs()), Hs.authorize();
12779
12857
  }
12780
- async function rc(e = [S.AUDIO], t) {
12781
- return El(t).accept(e);
12858
+ async function ac(e = [S.AUDIO], t) {
12859
+ return Al(t).accept(e);
12782
12860
  }
12783
- async function ic(e) {
12784
- let t = Tl(e?.conversationId);
12861
+ async function oc(e) {
12862
+ let t = Dl(e?.conversationId);
12785
12863
  if (t) return t.decline(e);
12786
12864
  }
12787
- async function ac(e, t = [S.AUDIO]) {
12788
- return oc(e, t);
12865
+ async function sc(e, t = [S.AUDIO]) {
12866
+ return cc(e, t);
12789
12867
  }
12790
- async function oc(e, t, n) {
12868
+ async function cc(e, t, n) {
12791
12869
  if (!M.hold && z.callsLength > 0) throw R.error("There is already active call"), new O(D.HAS_ACTIVE_CALL);
12792
- return new $(new Ps(), Hs).onJoin({
12870
+ return new $(new Fs(), Us).onJoin({
12793
12871
  conversationId: e,
12794
12872
  mediaOptions: t,
12795
12873
  chatId: n
12796
12874
  });
12797
12875
  }
12798
- async function sc(e, t = [S.AUDIO], n, r, i, a) {
12876
+ async function lc(e, t = [S.AUDIO], n, r, i, a) {
12799
12877
  if (!M.hold && z.callsLength > 0) throw R.error("There is already active call"), new O(D.HAS_ACTIVE_CALL);
12800
- return n && (M.anonymToken = n), new $(new Ps(), Hs).onJoin({
12878
+ return n && (M.anonymToken = n), new $(new Fs(), Us).onJoin({
12801
12879
  joinLink: e,
12802
12880
  mediaOptions: t,
12803
12881
  observedIds: r,
@@ -12806,30 +12884,30 @@ async function sc(e, t = [S.AUDIO], n, r, i, a) {
12806
12884
  anonymous: !!M.anonymToken
12807
12885
  });
12808
12886
  }
12809
- function cc(e) {
12810
- let t = Tl(e?.conversationId);
12887
+ function uc(e) {
12888
+ let t = Dl(e?.conversationId);
12811
12889
  return t ? t.hangup(e) : ($.hangupAfterInit(e?.onFastHangup), Promise.resolve());
12812
12890
  }
12813
- async function lc(e, t) {
12891
+ async function dc(e, t) {
12814
12892
  let n = Array.isArray(e) ? e : [e], r = $.current();
12815
12893
  r && await r.addParticipant(n, t);
12816
12894
  }
12817
- async function uc(e, t) {
12895
+ async function fc(e, t) {
12818
12896
  let n = $.current();
12819
12897
  if (n) {
12820
12898
  let r = e.map((e) => j.composeUserId(e));
12821
12899
  await n.addParticipantLegacy(r, t);
12822
12900
  }
12823
12901
  }
12824
- async function dc(e, t = !1) {
12825
- let n = $.current()?.getCachedRawOkIdByExternalId(e) ?? null;
12826
- if (!n) {
12827
- R.warn("removeParticipant: externalId not found in cache", e);
12828
- return;
12902
+ async function pc(e, t = !1) {
12903
+ let n = jl(e, "removeParticipant");
12904
+ if (n) try {
12905
+ await n.conversation.removeParticipant(j.decomposeParticipantId(n.participantId).compositeUserId, t);
12906
+ } catch (e) {
12907
+ R.warn(`Failed to remove participant ${n.participantId}. Perhaps he is no longer on the call. ${e}`);
12829
12908
  }
12830
- return fc(n, t);
12831
12909
  }
12832
- async function fc(e, t = !1) {
12910
+ async function mc(e, t = !1) {
12833
12911
  let n = $.current();
12834
12912
  if (n) try {
12835
12913
  await n.removeParticipant(j.composeUserId(e), t);
@@ -12837,13 +12915,13 @@ async function fc(e, t = !1) {
12837
12915
  R.warn(`Failed to remove participant ${e}. Perhaps he is no longer on the call. ${t}`);
12838
12916
  }
12839
12917
  }
12840
- async function pc(e, t) {
12918
+ async function hc(e, t) {
12841
12919
  let n = $.current();
12842
12920
  if (e === "videoinput" && jt.contains(t)) return M.videoFacingMode = t, n ? (T.isMobile() && n.stopVideoTrack(), n.changeDevice(e)) : void 0;
12843
12921
  if (!await T._saveDeviceId(e, t)) throw Error(`Device not found: ${t}`);
12844
12922
  if (n) return n.changeDevice(e);
12845
12923
  }
12846
- async function mc(e, t) {
12924
+ async function gc(e, t) {
12847
12925
  let n = typeof e == "object" ? {
12848
12926
  ...e,
12849
12927
  fastScreenSharing: e.captureScreen && e.fastScreenSharing,
@@ -12852,267 +12930,264 @@ async function mc(e, t) {
12852
12930
  captureScreen: e,
12853
12931
  fastScreenSharing: !1,
12854
12932
  captureAudio: !1
12855
- }, r = Tl(t);
12933
+ }, r = Dl(t);
12856
12934
  return r ? r.toggleScreenCapturing(n) : Promise.reject();
12857
12935
  }
12858
- function hc(e) {
12936
+ function _c(e) {
12859
12937
  let t = $.current();
12860
12938
  t && t.toggleAnimojiCapturing(e);
12861
12939
  }
12862
- async function gc(e, t = !1) {
12940
+ async function vc(e, t = !1) {
12863
12941
  let n = $.current();
12864
12942
  n && await n.setVideoStream(e, t);
12865
12943
  }
12866
- async function _c(e, t) {
12867
- let n = Tl(t);
12944
+ async function yc(e, t) {
12945
+ let n = Dl(t);
12868
12946
  n && await n.toggleLocalVideo(e);
12869
12947
  }
12870
- async function vc(e, t) {
12871
- let n = Tl(t);
12948
+ async function bc(e, t) {
12949
+ let n = Dl(t);
12872
12950
  n && await n.toggleLocalAudio(e);
12873
12951
  }
12874
- async function yc(e) {
12952
+ async function xc(e) {
12875
12953
  let t = $.current();
12876
12954
  if (t) return t.setLocalResolution(e);
12877
12955
  }
12878
- async function bc(e) {
12956
+ async function Sc(e) {
12879
12957
  let t = $.current();
12880
12958
  t && await t.changePriorities(e);
12881
12959
  }
12882
- async function xc(e, t) {
12960
+ async function Cc(e, t) {
12883
12961
  let n = $.current();
12884
12962
  if (n) {
12885
- let r;
12886
12963
  if (t) {
12887
- let e = n.getCachedRawOkIdByExternalId(t);
12888
- if (!e) {
12889
- R.warn("changeParticipantState: externalId not found in cache", t);
12964
+ let r = n.getCachedParticipantIdByExternalId(t);
12965
+ if (!r) {
12966
+ Ol(t, "changeParticipantState", n);
12890
12967
  return;
12891
12968
  }
12892
- r = j.composeParticipantId(e, A.USER, t.deviceIdx);
12969
+ await n.changeParticipantState(e, r);
12970
+ return;
12893
12971
  }
12894
- await n.changeParticipantState(e, r);
12972
+ await n.changeParticipantState(e);
12895
12973
  }
12896
12974
  }
12897
- async function Sc() {
12975
+ async function wc() {
12898
12976
  let e = $.current();
12899
12977
  e && await e.putHandsDown();
12900
12978
  }
12901
- async function Cc(e) {
12979
+ async function Tc(e) {
12902
12980
  let t = $.current();
12903
12981
  t && await t.updateDisplayLayout(e);
12904
12982
  }
12905
- async function wc(e) {
12983
+ async function Ec(e) {
12906
12984
  let t = $.current();
12907
12985
  t && await t.requestDisplayLayout(e);
12908
12986
  }
12909
- async function Tc(e, t, n = !1) {
12910
- let r = $.current()?.getCachedRawOkIdByExternalId(e) ?? null;
12911
- if (!r) {
12912
- R.warn("grantRoles: externalId not found in cache", e);
12913
- return;
12914
- }
12915
- return Ec(r, Q.getDeviceIdx(e), t, n);
12987
+ async function Dc(e, t, n = !1) {
12988
+ let r = jl(e, "grantRoles");
12989
+ r && await r.conversation.grantRoles(r.participantId, t, n);
12916
12990
  }
12917
- async function Ec(e, t, n, r = !1) {
12991
+ async function Oc(e, t, n, r = !1) {
12918
12992
  let i = $.current();
12919
12993
  i && await i.grantRoles(j.composeParticipantId(e, A.USER, t), n, r);
12920
12994
  }
12921
- async function Dc({ externalId: e = null, muteStates: t, requestedMedia: n = [], roomId: r = null }) {
12922
- let i = null;
12923
- return e && (i = $.current()?.getCachedRawOkIdByExternalId(e) ?? null, i || R.warn("muteParticipant: externalId not found in cache", e)), Oc({
12924
- uid: i,
12925
- muteStates: t,
12926
- requestedMedia: n,
12927
- deviceIdx: Q.getDeviceIdx(e),
12928
- roomId: r
12929
- });
12995
+ async function kc({ externalId: e = null, muteStates: t, requestedMedia: n = [], roomId: r = null }) {
12996
+ if (e) {
12997
+ let i = jl(e, "muteParticipant");
12998
+ return i ? i.conversation.muteParticipant(i.participantId, t, n, r) : void 0;
12999
+ }
13000
+ let i = $.current();
13001
+ i && await i.muteParticipant(null, t, n, r);
12930
13002
  }
12931
- async function Oc({ uid: e = null, muteStates: t, requestedMedia: n = [], deviceIdx: r = 0, roomId: i = null }) {
13003
+ async function Ac({ uid: e = null, muteStates: t, requestedMedia: n = [], deviceIdx: r = 0, roomId: i = null }) {
12932
13004
  let a = $.current();
12933
13005
  if (a) {
12934
13006
  let o = e ? j.composeParticipantId(e, A.USER, r) : null;
12935
13007
  await a.muteParticipant(o, t, n, i);
12936
13008
  }
12937
13009
  }
12938
- async function kc(e, t = !1, n = null) {
12939
- let r = $.current()?.getCachedRawOkIdByExternalId(e) ?? null;
12940
- if (!r) {
12941
- R.warn("pinParticipant: externalId not found in cache", e);
12942
- return;
12943
- }
12944
- return Ac(r, t, Q.getDeviceIdx(e), n);
13010
+ async function jc(e, t = !1, n = null) {
13011
+ let r = jl(e, "pinParticipant");
13012
+ r && await r.conversation.pinParticipant(r.participantId, t, n);
12945
13013
  }
12946
- async function Ac(e, t = !1, n = 0, r = null) {
13014
+ async function Mc(e, t = !1, n = 0, r = null) {
12947
13015
  let i = $.current();
12948
13016
  i && await i.pinParticipant(j.composeParticipantId(e, A.USER, n), t, r);
12949
13017
  }
12950
- async function jc(e) {
13018
+ async function Nc(e) {
12951
13019
  let t = $.current();
12952
13020
  t && await t.updateMediaModifiers(e);
12953
13021
  }
12954
- async function Mc(e) {
13022
+ async function Pc(e) {
12955
13023
  let t = $.current();
12956
13024
  t && await t.enableVideoSuspend(e);
12957
13025
  }
12958
- async function Nc(e) {
13026
+ async function Fc(e) {
12959
13027
  let t = $.current();
12960
13028
  t && await t.enableVideoSuspendSuggest(e);
12961
13029
  }
12962
- async function Pc(e) {
13030
+ async function Ic(e) {
12963
13031
  let t = $.current();
12964
13032
  t && await t.changeOptions(e);
12965
13033
  }
12966
- async function Fc(e, t = null) {
12967
- let n = null;
12968
- return t && (n = $.current()?.getCachedRawOkIdByExternalId(t) ?? null, n || R.warn("chatMessage: externalId not found in cache", t)), Ic(e, n);
13034
+ async function Lc(e, t = null) {
13035
+ if (t) {
13036
+ let n = jl(t, "chatMessage");
13037
+ return n ? n.conversation.chatMessage(e, j.decomposeParticipantId(n.participantId).compositeUserId) : void 0;
13038
+ }
13039
+ let n = $.current();
13040
+ n && await n.chatMessage(e, null);
12969
13041
  }
12970
- async function Ic(e, t = null) {
13042
+ async function Rc(e, t = null) {
12971
13043
  let n = $.current();
12972
13044
  if (n) {
12973
13045
  let r = t ? j.composeUserId(t) : null;
12974
13046
  await n.chatMessage(e, r);
12975
13047
  }
12976
13048
  }
12977
- async function Lc(e = 10) {
13049
+ async function zc(e = 10) {
12978
13050
  let t = $.current();
12979
13051
  if (t) return t.chatHistory(e);
12980
13052
  }
12981
- async function Rc(e, t = null) {
12982
- let n = null;
12983
- return t && (n = $.current()?.getCachedRawOkIdByExternalId(t) ?? null, n || R.warn("customData: externalId not found in cache", t)), zc(e, n, Q.getDeviceIdx(t));
13053
+ async function Bc(e, t = null) {
13054
+ if (t) {
13055
+ let n = jl(t, "customData");
13056
+ return n ? n.conversation.customData(e, n.participantId) : void 0;
13057
+ }
13058
+ let n = $.current();
13059
+ n && await n.customData(e, null);
12984
13060
  }
12985
- async function zc(e, t = null, n = 0) {
13061
+ async function Vc(e, t = null, n = 0) {
12986
13062
  let r = $.current();
12987
13063
  if (r) {
12988
13064
  let i = t ? j.composeParticipantId(t, A.USER, n) : null;
12989
13065
  await r.customData(e, i);
12990
13066
  }
12991
13067
  }
12992
- async function Bc(e = "", t = !1, { onlyAdminCanShareMovie: n = !1, waitForAdmin: r = !1, closedConversation: i = !1 } = {}, a) {
12993
- return (await Vs.createConversation(a ?? j.uuid(), e, t, {
13068
+ async function Hc(e = "", t = !1, { onlyAdminCanShareMovie: n = !1, waitForAdmin: r = !1, closedConversation: i = !1 } = {}, a) {
13069
+ return (await Hs.createConversation(a ?? j.uuid(), e, t, {
12994
13070
  onlyAdminCanShareMovie: n,
12995
13071
  waitForAdmin: r,
12996
13072
  closedConversation: i
12997
13073
  })).join_link;
12998
13074
  }
12999
- async function Vc(e = "", t = !1, { onlyAdminCanShareMovie: n = !1, audioOnly: r = !1 } = {}, i) {
13075
+ async function Uc(e = "", t = !1, { onlyAdminCanShareMovie: n = !1, audioOnly: r = !1 } = {}, i) {
13000
13076
  let a = i.map((e) => Q.fromId(e));
13001
- return (await Vs.createConversation(j.uuid(), e, t, {
13077
+ return (await Hs.createConversation(j.uuid(), e, t, {
13002
13078
  onlyAdminCanShareMovie: n,
13003
13079
  audienceMode: !0,
13004
13080
  audioOnly: r
13005
13081
  }, a)).join_link;
13006
13082
  }
13007
- async function Hc() {
13083
+ async function Wc() {
13008
13084
  let e = $.current();
13009
13085
  return e ? e.createJoinLink() : Promise.reject();
13010
13086
  }
13011
- async function Uc() {
13087
+ async function Gc() {
13012
13088
  let e = $.current();
13013
13089
  return e ? e.removeJoinLink() : Promise.reject();
13014
13090
  }
13015
- async function Wc(e, t) {
13016
- return Vs.getAnonymTokenByLink(e, t);
13091
+ async function Kc(e, t) {
13092
+ return Hs.getAnonymTokenByLink(e, t);
13017
13093
  }
13018
- function Gc(e) {
13094
+ function qc(e) {
13019
13095
  let t = $.current();
13020
13096
  t && t.setVolume(e);
13021
13097
  }
13022
- function Kc(e) {
13098
+ function Jc(e) {
13023
13099
  M.forceRelayPolicy = e;
13024
13100
  }
13025
- async function qc(e = !1, t = null, n = null, r = "DIRECT_LINK", i = null, a = null) {
13101
+ async function Yc(e = !1, t = null, n = null, r = "DIRECT_LINK", i = null, a = null) {
13026
13102
  let o = $.current();
13027
13103
  return o ? o.startStream(e, t, n, r, i, a) : Promise.reject();
13028
13104
  }
13029
- async function Jc(e = null, t) {
13105
+ async function Xc(e = null, t) {
13030
13106
  let n = $.current();
13031
13107
  return n ? n.stopStream(e, t) : Promise.reject();
13032
13108
  }
13033
- async function Yc(e = null) {
13109
+ async function Zc(e = null) {
13034
13110
  let t = $.current();
13035
13111
  return t ? t.publishStream(e) : Promise.reject();
13036
13112
  }
13037
- async function Xc() {
13113
+ async function Qc() {
13038
13114
  let e = $.current();
13039
13115
  return e ? e.getStreamInfo() : Promise.reject();
13040
13116
  }
13041
- async function Zc(e) {
13117
+ async function $c(e) {
13042
13118
  let t = $.current();
13043
13119
  return t ? t.addMovie(e) : Promise.reject();
13044
13120
  }
13045
- async function Qc(e) {
13121
+ async function el(e) {
13046
13122
  let t = $.current();
13047
13123
  return t ? t.updateMovie(e) : Promise.reject();
13048
13124
  }
13049
- async function $c(e) {
13125
+ async function tl(e) {
13050
13126
  let t = $.current();
13051
13127
  return t ? t.removeMovie(e) : Promise.reject();
13052
13128
  }
13053
- async function el(e, t) {
13129
+ async function nl(e, t) {
13054
13130
  let n = $.current();
13055
13131
  if (n) {
13056
- let r = [];
13132
+ let r = [], i = [];
13057
13133
  for (let t of e) {
13058
- let e, i;
13134
+ let e, a;
13059
13135
  t.addParticipantIds && (e = [], t.addParticipantIds.forEach((t) => {
13060
- let r = n.getCachedRawOkIdByExternalId(t);
13061
- r ? e.push(j.composeUserId(r)) : R.warn("updateRooms addParticipant: externalId not found in cache", t);
13062
- })), t.removeParticipantIds && (i = [], t.removeParticipantIds.forEach((e) => {
13063
- let t = n.getCachedRawOkIdByExternalId(e);
13064
- t ? i.push(j.composeUserId(t)) : R.warn("updateRooms removeParticipant: externalId not found in cache", e);
13136
+ let r = n.getCachedParticipantIdByExternalId(t);
13137
+ r ? e.push(j.decomposeParticipantId(r).compositeUserId) : i.push(t.id);
13138
+ })), t.removeParticipantIds && (a = [], t.removeParticipantIds.forEach((e) => {
13139
+ let t = n.getCachedParticipantIdByExternalId(e);
13140
+ t ? a.push(j.decomposeParticipantId(t).compositeUserId) : i.push(e.id);
13065
13141
  })), r.push({
13066
13142
  id: t.id,
13067
13143
  name: t.name,
13068
13144
  participantCount: t.participantCount,
13069
13145
  addParticipantIds: e,
13070
- removeParticipantIds: i,
13146
+ removeParticipantIds: a,
13071
13147
  countdownSec: t.countdownSec
13072
13148
  });
13073
13149
  }
13150
+ if (i.length) {
13151
+ kl(i, "updateRooms", n);
13152
+ return;
13153
+ }
13074
13154
  return n.updateRooms(r, t);
13075
13155
  }
13076
13156
  return Promise.reject();
13077
13157
  }
13078
- async function tl(e, t) {
13158
+ async function rl(e, t) {
13079
13159
  let n = $.current();
13080
13160
  return n ? n.activateRooms(e, t) : Promise.reject();
13081
13161
  }
13082
- async function nl(e = null, t = null) {
13162
+ async function il(e = null, t = null) {
13083
13163
  let n = $.current();
13084
13164
  if (!n) return Promise.reject();
13085
13165
  let r;
13086
- if (t) {
13087
- let e = n.getCachedRawOkIdByExternalId(t);
13088
- if (!e) {
13089
- R.warn("switchRoom: externalId not found in cache", t);
13090
- return;
13091
- }
13092
- let i = Q.getDeviceIdx(t);
13093
- r = j.composeParticipantId(e, A.USER, i);
13166
+ if (t && (r = n.getCachedParticipantIdByExternalId(t) ?? void 0, !r)) {
13167
+ Ol(t, "switchRoom", n);
13168
+ return;
13094
13169
  }
13095
13170
  return n.switchRoom(e, r);
13096
13171
  }
13097
- async function rl(e) {
13172
+ async function al(e) {
13098
13173
  let t = $.current();
13099
13174
  return t ? t.removeRooms(e) : Promise.reject();
13100
13175
  }
13101
- function il(e) {
13176
+ function ol(e) {
13102
13177
  M.statisticsInterval = e;
13103
13178
  let t = $.current();
13104
13179
  if (t) return t.updateStatisticsInterval();
13105
13180
  }
13106
- function al(t) {
13181
+ function sl(t) {
13107
13182
  e.disableLog(!t), R.toggle(t);
13108
13183
  }
13109
- function ol(e, ...t) {
13184
+ function cl(e, ...t) {
13110
13185
  M.debugLog && ($.debugMessage(e, "[external]", ...t) || R.send(e, "[external]", ...t));
13111
13186
  }
13112
- function sl(e, t, ...n) {
13187
+ function ll(e, t, ...n) {
13113
13188
  M.debugLog && ($.debugMessageWithContext(e, t, "[external]", ...n) || R.send(e, "[external]", ...n));
13114
13189
  }
13115
- var cl = {
13190
+ var ul = {
13116
13191
  list: Ne,
13117
13192
  get: Pe,
13118
13193
  getJson: Fe,
@@ -13120,7 +13195,7 @@ var cl = {
13120
13195
  clear: Le,
13121
13196
  stats: Re
13122
13197
  };
13123
- function ll() {
13198
+ function dl() {
13124
13199
  let e = [
13125
13200
  [`Calls SDK ${M.sdkVersion}`, M.toJSON()],
13126
13201
  ["UserAgent:", navigator.userAgent],
@@ -13137,124 +13212,139 @@ function ll() {
13137
13212
  d: e
13138
13213
  }));
13139
13214
  }
13140
- async function ul() {
13215
+ async function fl() {
13141
13216
  let e = $.id(), t = $.debugSessionId();
13142
13217
  if (!t || !e) throw R.error("[uploadDebugLogs]", "No conversation id found"), Error("No conversation id found");
13143
13218
  let n = await Pe({ sessionId: t });
13144
13219
  if (n.length === 0) throw R.error("[uploadDebugLogs]", "No logs found"), Error("No logs found");
13145
13220
  let r = n[0].t, i = n[n.length - 1].t;
13146
13221
  try {
13147
- return Vs?.uploadDebugLogs(e, r, i, JSON.stringify([...ll(), ...n]));
13222
+ return Hs?.uploadDebugLogs(e, r, i, JSON.stringify([...dl(), ...n]));
13148
13223
  } catch (e) {
13149
13224
  throw R.error("[uploadDebugLogs]", "Error while uploading logs", e), Error("Error while uploading logs", { cause: e });
13150
13225
  }
13151
13226
  }
13152
- async function dl(e) {
13227
+ async function pl(e) {
13153
13228
  let t = $.current();
13154
13229
  if (t) return t.videoEffect(e);
13155
13230
  }
13156
- async function fl(e, t) {
13231
+ async function ml(e, t) {
13157
13232
  let n = $.current();
13158
13233
  if (n) return n.audioEffect(e.length > 0 ? e : null, t);
13159
13234
  }
13160
- async function pl(e) {
13235
+ async function hl(e) {
13161
13236
  let t = $.current();
13162
13237
  t && await t.setAudioStream(e);
13163
13238
  }
13164
- async function ml(e, t = null, n = null) {
13239
+ async function gl(e, t = null, n = null) {
13165
13240
  let r = $.current();
13166
13241
  if (!r) return;
13167
13242
  let i = n ?? t?.id, a = null;
13168
- if (t) {
13169
- let e = r.getCachedRawOkIdByExternalId(t);
13170
- if (!e) throw Error("Could not get user id to set animoji svg");
13171
- a = j.composeParticipantId(e, A.USER, Q.getDeviceIdx(t));
13243
+ if (t && (a = r.getCachedParticipantIdByExternalId(t), !a)) {
13244
+ Ol(t, "setVmojiSvg", r);
13245
+ return;
13172
13246
  }
13173
13247
  r.setAnimojiSvg(e, a, i);
13174
13248
  }
13175
- function hl(e) {
13249
+ function _l(e) {
13176
13250
  let t = $.current();
13177
13251
  t && t.setAnimojiFill(e);
13178
13252
  }
13179
- async function gl(e = null, t, n = !1) {
13180
- return El().getWaitingHall(e, t, n);
13253
+ async function vl(e = null, t, n = !1) {
13254
+ return Al().getWaitingHall(e, t, n);
13181
13255
  }
13182
- async function _l() {
13183
- return El().getAudienceModeHands();
13256
+ async function yl() {
13257
+ return Al().getAudienceModeHands();
13184
13258
  }
13185
- async function vl(e, t = !1) {
13186
- let n = El(), r;
13259
+ async function bl(e, t = !1) {
13260
+ let n = Al(), r;
13187
13261
  if (e) {
13188
- let t = n.getCachedRawOkIdByExternalId(e);
13262
+ let t = n.getCachedParticipantIdByExternalId(e);
13189
13263
  if (!t) {
13190
- R.warn("promoteParticipant: externalId not found in cache", e);
13264
+ Ol(e, "promoteParticipant", n);
13191
13265
  return;
13192
13266
  }
13193
- r = j.composeUserId(t);
13267
+ r = j.decomposeParticipantId(t).compositeUserId;
13194
13268
  }
13195
13269
  return n.promoteParticipant(r, t);
13196
13270
  }
13197
- async function yl(e = !1) {
13198
- return El().requestPromotion(e);
13271
+ async function xl(e = !1) {
13272
+ return Al().requestPromotion(e);
13199
13273
  }
13200
- async function bl(e = !1) {
13201
- return El().acceptPromotion(e);
13274
+ async function Sl(e = !1) {
13275
+ return Al().acceptPromotion(e);
13202
13276
  }
13203
- async function xl(e) {
13204
- return El().getParticipantListChunk(e);
13277
+ async function Cl(e) {
13278
+ return Al().getParticipantListChunk(e);
13205
13279
  }
13206
- async function Sl(e) {
13207
- return El().getParticipants(e);
13280
+ async function wl(e) {
13281
+ return Al().getParticipants(e);
13208
13282
  }
13209
- async function Cl(e) {
13210
- return El().feedback(e);
13283
+ async function Tl(e) {
13284
+ return Al().feedback(e);
13211
13285
  }
13212
- async function wl(e, t, n) {
13213
- return El(n).enableFeatureForRoles(e, t);
13286
+ async function El(e, t, n) {
13287
+ return Al(n).enableFeatureForRoles(e, t);
13214
13288
  }
13215
- function Tl(e) {
13289
+ function Dl(e) {
13216
13290
  return e ? z.get(e) ?? null : $.current() ?? z.getFirst();
13217
13291
  }
13218
- function El(e) {
13219
- let t = Tl(e);
13292
+ function Ol(e, t, n) {
13293
+ L.onNonFatalError(/* @__PURE__ */ Error(`Participant ID mapping not found for external ID "${e.id}" while handling ${t}`), n.id);
13294
+ }
13295
+ function kl(e, t, n) {
13296
+ let r = Array.from(new Set(e));
13297
+ L.onNonFatalError(/* @__PURE__ */ Error(`Participant ID mapping not found for external IDs "${r.join("\", \"")}" while handling ${t}`), n.id);
13298
+ }
13299
+ function Al(e) {
13300
+ let t = Dl(e);
13220
13301
  if (!t) throw Error("Conversation not found");
13221
13302
  return t;
13222
13303
  }
13223
- async function Dl(e) {
13224
- await Vs.removeHistoryRecords(e);
13304
+ function jl(e, t) {
13305
+ let n = $.current();
13306
+ if (!n) return null;
13307
+ let r = n.getCachedParticipantIdByExternalId(e);
13308
+ return r ? {
13309
+ conversation: n,
13310
+ participantId: r
13311
+ } : (Ol(e, t, n), null);
13312
+ }
13313
+ async function Ml(e) {
13314
+ await Hs.removeHistoryRecords(e);
13225
13315
  }
13226
- async function Ol(e) {
13316
+ async function Nl(e) {
13227
13317
  let t = $.current() ?? z.getFirst();
13228
13318
  t && await t.startAsr(e);
13229
13319
  }
13230
- async function kl(e) {
13320
+ async function Pl(e) {
13231
13321
  let t = $.current() ?? z.getFirst();
13232
13322
  t && await t.stopAsr(e);
13233
13323
  }
13234
- async function Al(e) {
13324
+ async function Fl(e) {
13235
13325
  let t = $.current() ?? z.getFirst();
13236
13326
  t && await t.requestAsr(e);
13237
13327
  }
13238
- async function jl(e) {
13328
+ async function Il(e) {
13239
13329
  let t = $.current();
13240
13330
  return t ? t.startUrlSharing(e) : Promise.reject();
13241
13331
  }
13242
- async function Ml() {
13332
+ async function Ll() {
13243
13333
  let e = $.current();
13244
13334
  return e ? e.stopUrlSharing() : Promise.reject();
13245
13335
  }
13246
- async function Nl(e) {
13336
+ async function Rl(e) {
13247
13337
  await z.switchCall(e);
13248
13338
  }
13249
- function Pl() {
13339
+ function zl() {
13250
13340
  return z.getActiveId();
13251
13341
  }
13252
- function Fl() {
13342
+ function Bl() {
13253
13343
  return $.getSyncedTime();
13254
13344
  }
13255
- function Il() {
13345
+ function Vl() {
13256
13346
  return M.sdkVersion;
13257
13347
  }
13258
13348
  typeof window < "u" && (window.__CALLS_SDK = yn);
13259
13349
  //#endregion
13260
- export { Ps as Api, Bs as ApiExternal, zs as ArrayDequeue, y as AuthData, f as BaseLogger, Ba as CallDirection, Va as CallType, Ha as ChatRoomEventType, Ua as ConversationFeature, Wa as ConversationOption, Sn as DebugMessageType, to as ExternalIdType, jt as FacingMode, x as FatalError, O as HangupReason, D as HangupType, S as MediaOption, k as MediaTrackKind, V as MediaType, qa as MuteState, Z as ParticipantState, Rs as ParticipantStateDataValue, N as ParticipantStatus, Ls as RecordRole, Ja as RoomsEventType, za as Signaling, B as SignalingCommandType, vr as SignalingConnectionType, K as SignalingNotification, J as TransportTopology, Za as UserRole, A as UserType, To as VolumeDetector, rc as acceptCall, bl as acceptPromotion, tl as activateRooms, Zc as addMovie, lc as addParticipant, uc as addParticipantInternal, nc as authorize, Us as browser, Qs as callInternal, Zs as callTo, mc as captureScreen, hc as captureVmoji, fl as changeAudioEffect, Pc as changeConversationOptions, pc as changeDevice, xc as changeParticipantState, bc as changePriorities, dl as changeVideoEffect, Lc as chatHistory, Fc as chatMessage, Ic as chatMessageInternal, Hc as createJoinLink, Rc as customData, zc as customDataInternal, al as debug, cl as debugLogs, ol as debugMessage, sl as debugMessageWithContext, ic as declineCall, wl as enableFeatureForRoles, Mc as enableVideoSuspend, Nc as enableVideoSuspendSuggest, Cl as feedback, Kc as forceRelayPolicy, Pl as getActiveCallId, Wc as getAnonymTokenByLink, _l as getAudienceModeHands, tc as getInbounds, xl as getParticipantListChunk, Sl as getParticipants, Xc as getStreamInfo, Fl as getSyncedTime, gl as getWaitingHall, Tc as grantRoles, Ec as grantRolesInternal, cc as hangup, Xs as init, ac as joinCall, sc as joinCallByLink, oc as joinCallInternal, Dc as muteParticipant, Oc as muteParticipantInternal, kc as pinParticipant, Ac as pinParticipantInternal, $s as processPush, ec as processPushInternal, vl as promoteParticipant, Yc as publishStream, Sc as putHandsDown, Dl as removeHistoryRecords, Uc as removeJoinLink, $c as removeMovie, dc as removeParticipant, fc as removeParticipantInternal, rl as removeRooms, Al as requestAsr, wc as requestDisplayLayout, yl as requestPromotion, qs as setAudioEffects, pl as setAudioStream, yc as setLocalResolution, Gs as setLogger, jc as setMediaModifiers, il as setStatisticsInterval, Js as setVad, Ks as setVideoEffects, gc as setVideoStream, Ys as setVmoji, hl as setVmojiFill, ml as setVmojiSvg, Gc as setVolume, Ol as startAsr, Vc as startAudienceConversation, Bc as startConversation, qc as startStream, jl as startUrlSharing, kl as stopAsr, Jc as stopStream, Ml as stopUrlSharing, Nl as switchCall, nl as switchRoom, vc as toggleLocalAudio, _c as toggleLocalVideo, Cc as updateDisplayLayout, Qc as updateMovie, el as updateRooms, ul as uploadDebugLogs, Ws as utils, Il as version };
13350
+ export { Fs as Api, Vs as ApiExternal, Bs as ArrayDequeue, y as AuthData, f as BaseLogger, Va as CallDirection, Ha as CallType, Ua as ChatRoomEventType, Wa as ConversationFeature, Ga as ConversationOption, Sn as DebugMessageType, no as ExternalIdType, jt as FacingMode, x as FatalError, O as HangupReason, D as HangupType, S as MediaOption, k as MediaTrackKind, V as MediaType, Ja as MuteState, Z as ParticipantState, zs as ParticipantStateDataValue, N as ParticipantStatus, Rs as RecordRole, Ya as RoomsEventType, Ba as Signaling, B as SignalingCommandType, vr as SignalingConnectionType, K as SignalingNotification, J as TransportTopology, Qa as UserRole, A as UserType, Eo as VolumeDetector, ac as acceptCall, Sl as acceptPromotion, rl as activateRooms, $c as addMovie, dc as addParticipant, fc as addParticipantInternal, ic as authorize, Ws as browser, ec as callInternal, Qs as callTo, gc as captureScreen, _c as captureVmoji, ml as changeAudioEffect, Ic as changeConversationOptions, hc as changeDevice, Cc as changeParticipantState, Sc as changePriorities, pl as changeVideoEffect, zc as chatHistory, Lc as chatMessage, Rc as chatMessageInternal, Wc as createJoinLink, Bc as customData, Vc as customDataInternal, sl as debug, ul as debugLogs, cl as debugMessage, ll as debugMessageWithContext, oc as declineCall, El as enableFeatureForRoles, Pc as enableVideoSuspend, Fc as enableVideoSuspendSuggest, Tl as feedback, Jc as forceRelayPolicy, zl as getActiveCallId, Kc as getAnonymTokenByLink, yl as getAudienceModeHands, rc as getInbounds, Cl as getParticipantListChunk, wl as getParticipants, Qc as getStreamInfo, Bl as getSyncedTime, vl as getWaitingHall, Dc as grantRoles, Oc as grantRolesInternal, uc as hangup, Zs as init, sc as joinCall, lc as joinCallByLink, cc as joinCallInternal, kc as muteParticipant, Ac as muteParticipantInternal, jc as pinParticipant, Mc as pinParticipantInternal, tc as processPush, nc as processPushInternal, bl as promoteParticipant, Zc as publishStream, wc as putHandsDown, Ml as removeHistoryRecords, Gc as removeJoinLink, tl as removeMovie, pc as removeParticipant, mc as removeParticipantInternal, al as removeRooms, Fl as requestAsr, Ec as requestDisplayLayout, xl as requestPromotion, Js as setAudioEffects, hl as setAudioStream, xc as setLocalResolution, Ks as setLogger, Nc as setMediaModifiers, ol as setStatisticsInterval, Ys as setVad, qs as setVideoEffects, vc as setVideoStream, Xs as setVmoji, _l as setVmojiFill, gl as setVmojiSvg, qc as setVolume, Nl as startAsr, Uc as startAudienceConversation, Hc as startConversation, Yc as startStream, Il as startUrlSharing, Pl as stopAsr, Xc as stopStream, Ll as stopUrlSharing, Rl as switchCall, il as switchRoom, bc as toggleLocalAudio, yc as toggleLocalVideo, Tc as updateDisplayLayout, el as updateMovie, nl as updateRooms, fl as uploadDebugLogs, Gs as utils, Vl as version };