mediasfu-shared 1.2.2 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/audioProcessing-0z5KlcmO.js +35 -0
  3. package/dist/audioProcessing-0z5KlcmO.js.map +1 -0
  4. package/dist/audioProcessing-BpbrdCk-.cjs +34 -0
  5. package/dist/audioProcessing-BpbrdCk-.cjs.map +1 -0
  6. package/dist/consumers/audioProcessing.d.ts +8 -0
  7. package/dist/consumers/audioProcessing.d.ts.map +1 -0
  8. package/dist/consumers/connectIps.d.ts.map +1 -1
  9. package/dist/consumers/createSendTransport.d.ts.map +1 -1
  10. package/dist/consumers/gridLayout/addVideosGrid.engine.d.ts +6 -0
  11. package/dist/consumers/gridLayout/addVideosGrid.engine.d.ts.map +1 -1
  12. package/dist/consumers/index.cjs +3 -2
  13. package/dist/consumers/index.cjs.map +1 -1
  14. package/dist/consumers/index.js +14 -13
  15. package/dist/consumers/signalNewConsumerTransport.d.ts.map +1 -1
  16. package/dist/consumers/switchUserAudio.d.ts +3 -1
  17. package/dist/consumers/switchUserAudio.d.ts.map +1 -1
  18. package/dist/consumers/transportRecovery.d.ts +8 -0
  19. package/dist/consumers/transportRecovery.d.ts.map +1 -0
  20. package/dist/{getParticipantMedia-BH3d_-Q1.cjs → getParticipantMedia-CP4hE5Rg.cjs} +9 -4
  21. package/dist/getParticipantMedia-CP4hE5Rg.cjs.map +1 -0
  22. package/dist/{getParticipantMedia-CGqnSb93.js → getParticipantMedia-CvXdDj03.js} +9 -4
  23. package/dist/getParticipantMedia-CvXdDj03.js.map +1 -0
  24. package/dist/index.cjs +138 -25
  25. package/dist/index.cjs.map +1 -1
  26. package/dist/index.d.ts +2 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +205 -92
  29. package/dist/index.js.map +1 -1
  30. package/dist/index.native.cjs +8 -7
  31. package/dist/index.native.cjs.map +1 -1
  32. package/dist/index.native.js +19 -18
  33. package/dist/{joinLocalRoom-7ibqv7zZ.js → joinLocalRoom-Cx1y3Ojj.js} +4 -4
  34. package/dist/{joinLocalRoom-7ibqv7zZ.js.map → joinLocalRoom-Cx1y3Ojj.js.map} +1 -1
  35. package/dist/{joinLocalRoom-BJBDvTYh.cjs → joinLocalRoom-DNJ2zb8W.cjs} +10 -10
  36. package/dist/{joinLocalRoom-BJBDvTYh.cjs.map → joinLocalRoom-DNJ2zb8W.cjs.map} +1 -1
  37. package/dist/{joinRoomOnMediaSFU-y6vJ1OBo.js → joinRoomOnMediaSFU-BnAWLciF.js} +9 -3
  38. package/dist/joinRoomOnMediaSFU-BnAWLciF.js.map +1 -0
  39. package/dist/{joinRoomOnMediaSFU-CC8RVJgr.cjs → joinRoomOnMediaSFU-D2C7q1GK.cjs} +9 -3
  40. package/dist/joinRoomOnMediaSFU-D2C7q1GK.cjs.map +1 -0
  41. package/dist/methods/index.cjs +3 -3
  42. package/dist/methods/index.js +3 -3
  43. package/dist/methods/stream/clickAudio.d.ts +3 -1
  44. package/dist/methods/stream/clickAudio.d.ts.map +1 -1
  45. package/dist/methods/stream/switchAudio.d.ts +3 -1
  46. package/dist/methods/stream/switchAudio.d.ts.map +1 -1
  47. package/dist/methods/utils/headless/virtualBackground.d.ts +15 -1
  48. package/dist/methods/utils/headless/virtualBackground.d.ts.map +1 -1
  49. package/dist/methods/utils/virtualBackgroundCompositor.d.ts +4 -0
  50. package/dist/methods/utils/virtualBackgroundCompositor.d.ts.map +1 -1
  51. package/dist/methods/utils/virtualBackgroundFrameLoop.d.ts +10 -0
  52. package/dist/methods/utils/virtualBackgroundFrameLoop.d.ts.map +1 -0
  53. package/dist/sockets/SocketManager.d.ts +0 -27
  54. package/dist/sockets/SocketManager.d.ts.map +1 -1
  55. package/dist/{translationConsumerSwitch-C20MfNNq.cjs → translationConsumerSwitch-BAsQUpH6.cjs} +9 -1
  56. package/dist/translationConsumerSwitch-BAsQUpH6.cjs.map +1 -0
  57. package/dist/{translationConsumerSwitch-zKuS5wgH.js → translationConsumerSwitch-BUODiT6o.js} +20 -12
  58. package/dist/translationConsumerSwitch-BUODiT6o.js.map +1 -0
  59. package/dist/types/index.cjs +3 -3
  60. package/dist/types/index.js +3 -3
  61. package/dist/types/shared-base-types.d.ts +12 -0
  62. package/dist/types/shared-base-types.d.ts.map +1 -1
  63. package/dist/{updateParticipantAudioDecibels-bZ6R8WHj.cjs → updateParticipantAudioDecibels-BJ2PxJJD.cjs} +287 -58
  64. package/dist/updateParticipantAudioDecibels-BJ2PxJJD.cjs.map +1 -0
  65. package/dist/{updateParticipantAudioDecibels-C_MygF6q.js → updateParticipantAudioDecibels-DiJ_LFfH.js} +284 -55
  66. package/dist/updateParticipantAudioDecibels-DiJ_LFfH.js.map +1 -0
  67. package/package.json +1 -1
  68. package/src/consumers/audioProcessing.ts +26 -0
  69. package/src/consumers/connectIps.ts +46 -7
  70. package/src/consumers/createSendTransport.ts +5 -20
  71. package/src/consumers/gridLayout/addVideosGrid.engine.ts +13 -0
  72. package/src/consumers/signalNewConsumerTransport.ts +7 -25
  73. package/src/consumers/switchUserAudio.ts +18 -5
  74. package/src/consumers/transportRecovery.ts +170 -0
  75. package/src/index.ts +2 -0
  76. package/src/methods/stream/clickAudio.ts +13 -5
  77. package/src/methods/stream/switchAudio.ts +10 -1
  78. package/src/methods/utils/headless/virtualBackground.ts +55 -15
  79. package/src/methods/utils/virtualBackgroundCompositor.ts +18 -1
  80. package/src/methods/utils/virtualBackgroundFrameLoop.ts +69 -0
  81. package/src/sockets/SocketManager.ts +54 -7
  82. package/src/types/shared-base-types.ts +3 -0
  83. package/dist/getParticipantMedia-BH3d_-Q1.cjs.map +0 -1
  84. package/dist/getParticipantMedia-CGqnSb93.js.map +0 -1
  85. package/dist/joinRoomOnMediaSFU-CC8RVJgr.cjs.map +0 -1
  86. package/dist/joinRoomOnMediaSFU-y6vJ1OBo.js.map +0 -1
  87. package/dist/translationConsumerSwitch-C20MfNNq.cjs.map +0 -1
  88. package/dist/translationConsumerSwitch-zKuS5wgH.js.map +0 -1
  89. package/dist/updateParticipantAudioDecibels-C_MygF6q.js.map +0 -1
  90. package/dist/updateParticipantAudioDecibels-bZ6R8WHj.cjs.map +0 -1
  91. package/dist/validateAlphanumeric-DKn5BsUP.cjs +0 -15
  92. package/dist/validateAlphanumeric-DKn5BsUP.cjs.map +0 -1
  93. package/dist/validateAlphanumeric-Dk1JB80W.js +0 -16
  94. package/dist/validateAlphanumeric-Dk1JB80W.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
- import { a, b, d, c, e, f, j, m, p, u } from "./joinLocalRoom-7ibqv7zZ.js";
2
- import { Y, Z, a as a2, _, $, b as b2, W, d as d2, e as e2, f as f2, g, h, aa, i, j as j2, k, l, m as m2, a8, c as c2, a0, n, o, p as p2, q, a9, r, s, a1, a2 as a22, a3, t, X, T, v, U, w, x, y, V, C, G, z, A, a4, B, D, E, F, a5, N, H, I, J, K, L, M, O, P, Q, R, S, u as u2, a6, a7 } from "./updateParticipantAudioDecibels-C_MygF6q.js";
3
- import { Q as Q2, u as u3, m as m3, A as A2, f as f3, e as e3, a as a10, c as c3, b as b3, d as d3, l as l2, y as y2, p as p3, D as D2, g as g2, k as k2, x as x2, o as o2, C as C2, h as h2, j as j3, q as q2, z as z2, r as r2, E as E2, F as F2, s as s2, i as i2, w as w2, n as n2, B as B2, t as t2, v as v2 } from "./joinRoomOnMediaSFU-y6vJ1OBo.js";
4
- import { b as b4, d as d4, c as c4, f as f4, e as e4, k as k3, j as j4, h as h3, i as i3, p as p4, a as a11, r as r3, g as g3, s as s3, l as l3 } from "./translationConsumerSwitch-zKuS5wgH.js";
5
- import { _ as getCurrentParams, W as getLocalVideoStream } from "./getParticipantMedia-CGqnSb93.js";
6
- import { aD, aR, w as w3, x as x3, f as f5, y as y3, aP, ar, aU, aS, ab, at, aI, a4 as a42, Z as Z2, au, aV, aL, az, X as X2, aG, a7 as a72, N as N2, a8 as a82, b0, a2 as a23, aM, aQ, aq, aO, aw, av, ai, V as V2, U as U2, T as T2, Y as Y2, a6 as a62, aN, ax, aA, an, q as q3, t as t3, h as h4, Q as Q3, a as a12, R as R2, u as u4, l as l4, b as b5, c as c5, S as S2, g as g4, d as d5, i as i4, j as j5, k as k4, n as n3, v as v3, z as z3, H as H2, J as J2, O as O2, $ as $2, a5 as a52, a3 as a32, o as o3, m as m4, e as e5, ad, aa as aa2, p as p5, ak, aY, a_, aZ, aW, aT, aF, A as A3, B as B3, C as C3, D as D3, ae, r as r4, a$, ag, I as I2, P as P2, af, al, a1 as a13, a0 as a02, s as s4, aC, ah, a9 as a92, aB, aK, ay, E as E3, aj, ao, aE, ac, aX, F as F3, am, ap, K as K2, aH, aJ, L as L2, M as M2, G as G2, as } from "./getParticipantMedia-CGqnSb93.js";
1
+ import { a, b, d, c, e, f, j, m, p, u } from "./joinLocalRoom-Cx1y3Ojj.js";
2
+ import { Y, Z, a as a2, _, $, b as b2, W, d as d2, e as e2, f as f2, g, h, aa, i, j as j2, k, l, m as m2, a8, c as c2, a0, n, o, p as p2, q, a9, r, s, a1, a2 as a22, a3, t, X, T, v, U, w, x, y, V, C, G, z, A, a4, B, D, E, F, a5, N, H, I, J, K, L, M, O, P, Q, R, S, u as u2, a6, a7 } from "./updateParticipantAudioDecibels-DiJ_LFfH.js";
3
+ import { Q as Q2, u as u3, m as m3, A as A2, f as f3, e as e3, a as a10, c as c3, b as b3, d as d3, l as l2, y as y2, p as p3, D as D2, g as g2, k as k2, x as x2, o as o2, C as C2, h as h2, j as j3, q as q2, z as z2, r as r2, E as E2, F as F2, s as s2, i as i2, w as w2, n as n2, B as B2, t as t2, v as v2 } from "./joinRoomOnMediaSFU-BnAWLciF.js";
4
+ import { b as b4, e as e4, d as d4, g as g3, f as f4, l as l3, k as k3, j as j4, i as i3, p as p4, c as c4, a as a11, r as r3, h as h3, s as s3, m as m4 } from "./translationConsumerSwitch-BUODiT6o.js";
5
+ import { _ as getCurrentParams, W as getLocalVideoStream } from "./getParticipantMedia-CvXdDj03.js";
6
+ import { aD, aR, w as w3, x as x3, f as f5, y as y3, aP, ar, aU, aS, ab, at, aI, a4 as a42, Z as Z2, au, aV, aL, az, X as X2, aG, a7 as a72, N as N2, a8 as a82, b0, a2 as a23, aM, aQ, aq, aO, aw, av, ai, V as V2, U as U2, T as T2, Y as Y2, a6 as a62, aN, ax, aA, an, q as q3, t as t3, h as h4, Q as Q3, a as a12, R as R2, u as u4, l as l4, b as b5, c as c5, S as S2, g as g4, d as d5, i as i4, j as j5, k as k4, n as n3, v as v3, z as z3, H as H2, J as J2, O as O2, $ as $2, a5 as a52, a3 as a32, o as o3, m as m5, e as e5, ad, aa as aa2, p as p5, ak, aY, a_, aZ, aW, aT, aF, A as A3, B as B3, C as C3, D as D3, ae, r as r4, a$, ag, I as I2, P as P2, af, al, a1 as a13, a0 as a02, s as s4, aC, ah, a9 as a92, aB, aK, ay, E as E3, aj, ao, aE, ac, aX, F as F3, am, ap, K as K2, aH, aJ, L as L2, M as M2, G as G2, as } from "./getParticipantMedia-CvXdDj03.js";
7
7
  import { COMMON_LANGUAGE_CODES, MediaStream as MediaStream2, MediaStreamTrack, RTCView, SUPPORTED_LANGUAGE_CODES, SoundPlayer, TTS_PROVIDERS, addPanelist, addedAsPanelist, allMembers, allMembersRest, allWaitingRoomMembers, banParticipant, bulkUpdateParticipantPermissions, clickChat, controlMediaHost, createLiveSubtitle, createResponseJoinRoom, createRoomOnMediaSFU, disconnect, disconnectUserSelf, fetchLanguagesViaSocket, fetchVoicesViaSocket, focusPanelists, formatNumber, generateRandomMessages, generateRandomParticipants, generateRandomPolls, generateRandomRequestList, generateRandomWaitingRoomList, getAvailableVoices, getCommonLanguages, getDomains, getLanguageMetadata, getLanguageName, getLanguageNativeName, getOverlayPosition, getSubtitleForSpeaker, getSupportedLanguages, handleCreateRoom, handleJoinRoom, handleWelcomeRequest, initialValuesState, isLanguageSupported, isSubtitleExpired, launchPanelists, launchPermissions, mediaDevices, meetingEnded, meetingStillThere, meetingTimeRemaining, normalizeLanguageCode, panelistControlMedia, panelistFocusChanged, panelistsUpdated, participantRequested, permissionConfigUpdated, permissionUpdated, personJoined, pollUpdated, producerMediaClosed, producerMediaPaused, producerMediaResumed, pruneExpiredSubtitles, reInitiateRecording, receiveMessage, recordingNotice, registerGlobals, removePanelist, removedFromPanelists, roomRecordParams, screenProducerId, sleep, startMeetingProgressTimer, startRecords, stoppedRecording, translationChannelsAvailable, translationConfigUpdated, translationError, translationLanguageSet, translationMemberState, translationProducerClosed, translationProducerReady, translationRoomConfig, translationSpeakerOutputChanged, translationSubscribed, translationTranscript, translationUnsubscribed, unfocusPanelists, updateConsumingDomains, updateLiveSubtitlesFromTranscript, updateMediaSettings, updatePanelists, updateParticipantPermission, updatePermissionConfig, updatedCoHost, userWaiting, validateWelcomeAlphanumeric, validateWelcomeInputs } from "./methods/index.js";
8
- import { v as v4 } from "./validateAlphanumeric-Dk1JB80W.js";
8
+ import { v as v4 } from "./audioProcessing-0z5KlcmO.js";
9
9
  var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
10
10
  var selfie_segmentation = {};
11
11
  var hasRequiredSelfie_segmentation;
@@ -304,8 +304,8 @@ function requireSelfie_segmentation() {
304
304
  };
305
305
  b6.prototype.l = function() {
306
306
  function f6(l5) {
307
- return function(m5) {
308
- k5 || (k5 = true, l5.call(h5, m5));
307
+ return function(m6) {
308
+ k5 || (k5 = true, l5.call(h5, m6));
309
309
  };
310
310
  }
311
311
  var h5 = this, k5 = false;
@@ -394,15 +394,15 @@ function requireSelfie_segmentation() {
394
394
  try {
395
395
  l5(p6(q4));
396
396
  } catch (t4) {
397
- m5(t4);
397
+ m6(t4);
398
398
  }
399
399
  } : n4;
400
400
  }
401
- var l5, m5, r5 = new b6(function(p6, n4) {
401
+ var l5, m6, r5 = new b6(function(p6, n4) {
402
402
  l5 = p6;
403
- m5 = n4;
403
+ m6 = n4;
404
404
  });
405
- this.T(k5(f6, l5), k5(h5, m5));
405
+ this.T(k5(f6, l5), k5(h5, m6));
406
406
  return r5;
407
407
  };
408
408
  b6.prototype.catch = function(f6) {
@@ -433,12 +433,12 @@ function requireSelfie_segmentation() {
433
433
  };
434
434
  b6.race = function(f6) {
435
435
  return new b6(function(h5, k5) {
436
- for (var l5 = A4(f6), m5 = l5.next(); !m5.done; m5 = l5.next()) d6(m5.value).T(h5, k5);
436
+ for (var l5 = A4(f6), m6 = l5.next(); !m6.done; m6 = l5.next()) d6(m6.value).T(h5, k5);
437
437
  });
438
438
  };
439
439
  b6.all = function(f6) {
440
440
  var h5 = A4(f6), k5 = h5.next();
441
- return k5.done ? d6([]) : new b6(function(l5, m5) {
441
+ return k5.done ? d6([]) : new b6(function(l5, m6) {
442
442
  function r5(q4) {
443
443
  return function(t4) {
444
444
  p6[q4] = t4;
@@ -448,7 +448,7 @@ function requireSelfie_segmentation() {
448
448
  }
449
449
  var p6 = [], n4 = 0;
450
450
  do
451
- p6.push(void 0), n4++, d6(k5.value).T(r5(p6.length - 1), m5), k5 = h5.next();
451
+ p6.push(void 0), n4++, d6(k5.value).T(r5(p6.length - 1), m6), k5 = h5.next();
452
452
  while (!k5.done);
453
453
  });
454
454
  };
@@ -560,8 +560,8 @@ function requireSelfie_segmentation() {
560
560
  function Ga(a14, b6) {
561
561
  function c6(k5) {
562
562
  for (; d6 < a14.length; ) {
563
- var l5 = a14.charAt(d6++), m5 = Ea[l5];
564
- if (null != m5) return m5;
563
+ var l5 = a14.charAt(d6++), m6 = Ea[l5];
564
+ if (null != m6) return m6;
565
565
  if (!/^[\s\xa0]*$/.test(l5)) throw Error("Unknown base64 encoding at char: " + l5);
566
566
  }
567
567
  return k5;
@@ -945,7 +945,7 @@ function requireSelfie_segmentation() {
945
945
  f6 = !!(Q4(h5) & 2);
946
946
  var l5 = h5;
947
947
  !e6 && f6 && (h5 = Array.prototype.slice.call(h5));
948
- for (var m5 = f6, r5 = 0; r5 < h5.length; r5++) {
948
+ for (var m6 = f6, r5 = 0; r5 < h5.length; r5++) {
949
949
  var p6 = h5[r5];
950
950
  var n4 = b6, q4 = false;
951
951
  q4 = void 0 === q4 ? false : q4;
@@ -957,15 +957,15 @@ function requireSelfie_segmentation() {
957
957
  k5 && (t4 |= 16);
958
958
  t4 != q4 && R3(n4, t4);
959
959
  n4 = t4;
960
- m5 = m5 || !!(2 & n4);
960
+ m6 = m6 || !!(2 & n4);
961
961
  g5.push(p6);
962
962
  }
963
963
  }
964
964
  a14.h[c6] = g5;
965
965
  k5 = Q4(h5);
966
966
  b6 = k5 | 33;
967
- b6 = m5 ? b6 & -9 : b6 | 8;
968
- k5 != b6 && (m5 = h5, Object.isFrozen(m5) && (m5 = Array.prototype.slice.call(m5)), R3(m5, b6), h5 = m5);
967
+ b6 = m6 ? b6 & -9 : b6 | 8;
968
+ k5 != b6 && (m6 = h5, Object.isFrozen(m6) && (m6 = Array.prototype.slice.call(m6)), R3(m6, b6), h5 = m6);
969
969
  l5 !== h5 && Kb(
970
970
  a14,
971
971
  c6,
@@ -1144,13 +1144,13 @@ function requireSelfie_segmentation() {
1144
1144
  if (e6) if (128 & l5) d6 = 0;
1145
1145
  else {
1146
1146
  if (0 < a14.length) {
1147
- var m5 = a14[a14.length - 1];
1148
- if (Eb(m5) && "g" in m5) {
1147
+ var m6 = a14[a14.length - 1];
1148
+ if (Eb(m6) && "g" in m6) {
1149
1149
  d6 = 0;
1150
1150
  l5 |= 128;
1151
- delete m5.g;
1151
+ delete m6.g;
1152
1152
  var r5 = true, p6;
1153
- for (p6 in m5) {
1153
+ for (p6 in m6) {
1154
1154
  r5 = false;
1155
1155
  break;
1156
1156
  }
@@ -1205,12 +1205,12 @@ function requireSelfie_segmentation() {
1205
1205
  for (e6 in c6) {
1206
1206
  var g5 = c6[e6], f6 = g5.ra;
1207
1207
  f6 || (d6.J = g5.xa || g5.oa.W, g5.ia ? (d6.aa = cc(g5.ia), f6 = /* @__PURE__ */ (function(h5) {
1208
- return function(k5, l5, m5) {
1209
- return h5.J(k5, l5, m5, h5.aa);
1208
+ return function(k5, l5, m6) {
1209
+ return h5.J(k5, l5, m6, h5.aa);
1210
1210
  };
1211
1211
  })(d6)) : g5.ka ? (d6.Z = dc(g5.da.P, g5.ka), f6 = /* @__PURE__ */ (function(h5) {
1212
- return function(k5, l5, m5) {
1213
- return h5.J(k5, l5, m5, h5.Z);
1212
+ return function(k5, l5, m6) {
1213
+ return h5.J(k5, l5, m6, h5.Z);
1214
1214
  };
1215
1215
  })(d6)) : f6 = d6.J, g5.ra = f6);
1216
1216
  f6(b6, a14, g5.da);
@@ -1324,8 +1324,8 @@ function requireSelfie_segmentation() {
1324
1324
  }
1325
1325
  function vc(a14, b6, c6, d6, e6, g5) {
1326
1326
  var f6 = dc(d6, g5), h5 = c6.W;
1327
- a14.push(b6, function(k5, l5, m5) {
1328
- return h5(k5, l5, m5, d6, f6);
1327
+ a14.push(b6, function(k5, l5, m6) {
1328
+ return h5(k5, l5, m6, d6, f6);
1329
1329
  });
1330
1330
  }
1331
1331
  function qc(a14) {
@@ -1347,14 +1347,14 @@ function requireSelfie_segmentation() {
1347
1347
  }
1348
1348
  function yc(a14, b6, c6, d6, e6) {
1349
1349
  var g5 = c6.U, f6 = gc(d6), h5 = hc(d6).P;
1350
- a14[b6] = function(k5, l5, m5) {
1351
- return g5(k5, l5, m5, h5, f6, e6);
1350
+ a14[b6] = function(k5, l5, m6) {
1351
+ return g5(k5, l5, m6, h5, f6, e6);
1352
1352
  };
1353
1353
  }
1354
1354
  function zc(a14, b6, c6, d6, e6, g5, f6) {
1355
1355
  var h5 = c6.U, k5 = fc(d6, e6, g5);
1356
- a14[b6] = function(l5, m5, r5) {
1357
- return h5(l5, m5, r5, d6, k5, f6);
1356
+ a14[b6] = function(l5, m6, r5) {
1357
+ return h5(l5, m6, r5, d6, k5, f6);
1358
1358
  };
1359
1359
  }
1360
1360
  function hc(a14) {
@@ -1501,7 +1501,7 @@ function requireSelfie_segmentation() {
1501
1501
  h5 = e6;
1502
1502
  d6 = h5 + d6;
1503
1503
  e6 = [];
1504
- for (var k5 = null, l5, m5; h5 < d6; ) l5 = a14[h5++], 128 > l5 ? e6.push(l5) : 224 > l5 ? h5 >= d6 ? K3() : (m5 = a14[h5++], 194 > l5 || 128 !== (m5 & 192) ? (h5--, K3()) : e6.push((l5 & 31) << 6 | m5 & 63)) : 240 > l5 ? h5 >= d6 - 1 ? K3() : (m5 = a14[h5++], 128 !== (m5 & 192) || 224 === l5 && 160 > m5 || 237 === l5 && 160 <= m5 || 128 !== ((g5 = a14[h5++]) & 192) ? (h5--, K3()) : e6.push((l5 & 15) << 12 | (m5 & 63) << 6 | g5 & 63)) : 244 >= l5 ? h5 >= d6 - 2 ? K3() : (m5 = a14[h5++], 128 !== (m5 & 192) || 0 !== (l5 << 28) + (m5 - 144) >> 30 || 128 !== ((g5 = a14[h5++]) & 192) || 128 !== ((f6 = a14[h5++]) & 192) ? (h5--, K3()) : (l5 = (l5 & 7) << 18 | (m5 & 63) << 12 | (g5 & 63) << 6 | f6 & 63, l5 -= 65536, e6.push((l5 >> 10 & 1023) + 55296, (l5 & 1023) + 56320))) : K3(), 8192 <= e6.length && (k5 = ab2(k5, e6), e6.length = 0);
1504
+ for (var k5 = null, l5, m6; h5 < d6; ) l5 = a14[h5++], 128 > l5 ? e6.push(l5) : 224 > l5 ? h5 >= d6 ? K3() : (m6 = a14[h5++], 194 > l5 || 128 !== (m6 & 192) ? (h5--, K3()) : e6.push((l5 & 31) << 6 | m6 & 63)) : 240 > l5 ? h5 >= d6 - 1 ? K3() : (m6 = a14[h5++], 128 !== (m6 & 192) || 224 === l5 && 160 > m6 || 237 === l5 && 160 <= m6 || 128 !== ((g5 = a14[h5++]) & 192) ? (h5--, K3()) : e6.push((l5 & 15) << 12 | (m6 & 63) << 6 | g5 & 63)) : 244 >= l5 ? h5 >= d6 - 2 ? K3() : (m6 = a14[h5++], 128 !== (m6 & 192) || 0 !== (l5 << 28) + (m6 - 144) >> 30 || 128 !== ((g5 = a14[h5++]) & 192) || 128 !== ((f6 = a14[h5++]) & 192) ? (h5--, K3()) : (l5 = (l5 & 7) << 18 | (m6 & 63) << 12 | (g5 & 63) << 6 | f6 & 63, l5 -= 65536, e6.push((l5 >> 10 & 1023) + 55296, (l5 & 1023) + 56320))) : K3(), 8192 <= e6.length && (k5 = ab2(k5, e6), e6.length = 0);
1505
1505
  h5 = ab2(k5, e6);
1506
1506
  }
1507
1507
  U3(b6, c6, h5);
@@ -1812,7 +1812,7 @@ function requireSelfie_segmentation() {
1812
1812
  return Promise.resolve();
1813
1813
  };
1814
1814
  function fd(a14) {
1815
- var b6, c6, d6, e6, g5, f6, h5, k5, l5, m5, r5;
1815
+ var b6, c6, d6, e6, g5, f6, h5, k5, l5, m6, r5;
1816
1816
  return E4(function(p6) {
1817
1817
  switch (p6.h) {
1818
1818
  case 1:
@@ -1844,7 +1844,7 @@ function requireSelfie_segmentation() {
1844
1844
  t4.i = w4.i;
1845
1845
  w4.h = 0;
1846
1846
  });
1847
- }), m5 = (function() {
1847
+ }), m6 = (function() {
1848
1848
  return E4(function(n4) {
1849
1849
  a14.h.graph && a14.h.graph.url ? n4 = D4(
1850
1850
  n4,
@@ -1853,7 +1853,7 @@ function requireSelfie_segmentation() {
1853
1853
  ) : (n4.h = 0, n4 = void 0);
1854
1854
  return n4;
1855
1855
  });
1856
- })(), D4(p6, Promise.all([l5, k5, m5]), 7);
1856
+ })(), D4(p6, Promise.all([l5, k5, m6]), 7);
1857
1857
  if ("function" !== typeof importScripts) throw Error("solutions can only be loaded on a web page or in a web worker");
1858
1858
  d6 = b6.filter(function(n4) {
1859
1859
  return void 0 === n4.simd || n4.simd && c6 || !n4.simd && !c6;
@@ -1926,11 +1926,11 @@ function requireSelfie_segmentation() {
1926
1926
  var k5 = b6[h5];
1927
1927
  void 0 !== k5 && (k5.onChange && (g5.X = k5.onChange, g5.Y = a14[h5], d6.push(/* @__PURE__ */ (function(l5) {
1928
1928
  return function() {
1929
- var m5;
1929
+ var m6;
1930
1930
  return E4(function(r5) {
1931
1931
  if (1 == r5.h) return D4(r5, l5.X(l5.Y), 2);
1932
- m5 = r5.i;
1933
- true === m5 && (c6.u = true);
1932
+ m6 = r5.i;
1933
+ true === m6 && (c6.u = true);
1934
1934
  r5.h = 0;
1935
1935
  });
1936
1936
  };
@@ -2009,7 +2009,7 @@ function requireSelfie_segmentation() {
2009
2009
  this.j && this.j.clearOverriddenFiles();
2010
2010
  };
2011
2011
  x4.send = function(a14, b6) {
2012
- var c6 = this, d6, e6, g5, f6, h5, k5, l5, m5, r5;
2012
+ var c6 = this, d6, e6, g5, f6, h5, k5, l5, m6, r5;
2013
2013
  return E4(function(p6) {
2014
2014
  switch (p6.h) {
2015
2015
  case 1:
@@ -2088,14 +2088,14 @@ function requireSelfie_segmentation() {
2088
2088
  }
2089
2089
  }
2090
2090
  l5 = q4;
2091
- m5 = k5.stream;
2091
+ m6 = k5.stream;
2092
2092
  switch (k5.type) {
2093
2093
  case "video":
2094
- e6.pushTexture2d(Object.assign({}, l5, { stream: m5, timestamp: d6 }));
2094
+ e6.pushTexture2d(Object.assign({}, l5, { stream: m6, timestamp: d6 }));
2095
2095
  break;
2096
2096
  case "detections":
2097
2097
  r5 = l5;
2098
- r5.stream = m5;
2098
+ r5.stream = m6;
2099
2099
  r5.timestamp = d6;
2100
2100
  e6.pushDetectionList(r5);
2101
2101
  break;
@@ -2111,7 +2111,7 @@ function requireSelfie_segmentation() {
2111
2111
  });
2112
2112
  };
2113
2113
  function kd(a14, b6, c6) {
2114
- var d6, e6, g5, f6, h5, k5, l5, m5, r5, p6, n4, q4, t4, w4;
2114
+ var d6, e6, g5, f6, h5, k5, l5, m6, r5, p6, n4, q4, t4, w4;
2115
2115
  return E4(function(v5) {
2116
2116
  switch (v5.h) {
2117
2117
  case 1:
@@ -2128,9 +2128,9 @@ function requireSelfie_segmentation() {
2128
2128
  v5.h = 4;
2129
2129
  break;
2130
2130
  }
2131
- m5 = f6.value;
2132
- r5 = c6[m5];
2133
- if ("string" === typeof r5) return t4 = d6, w4 = m5, D4(v5, ld(a14, m5, b6[r5]), 14);
2131
+ m6 = f6.value;
2132
+ r5 = c6[m6];
2133
+ if ("string" === typeof r5) return t4 = d6, w4 = m6, D4(v5, ld(a14, m6, b6[r5]), 14);
2134
2134
  p6 = b6[r5.stream];
2135
2135
  if ("detection_list" === r5.type) {
2136
2136
  if (p6) {
@@ -2143,7 +2143,7 @@ function requireSelfie_segmentation() {
2143
2143
  }
2144
2144
  B4 = u5;
2145
2145
  } else B4 = [];
2146
- d6[m5] = B4;
2146
+ d6[m6] = B4;
2147
2147
  v5.h = 7;
2148
2148
  break;
2149
2149
  }
@@ -2153,7 +2153,7 @@ function requireSelfie_segmentation() {
2153
2153
  for (J3 = 0; J3 < p6.size(); J3++) B4[J3] = p6.get(J3);
2154
2154
  p6.delete();
2155
2155
  } else B4 = [];
2156
- d6[m5] = B4;
2156
+ d6[m6] = B4;
2157
2157
  v5.h = 7;
2158
2158
  break;
2159
2159
  }
@@ -2162,23 +2162,23 @@ function requireSelfie_segmentation() {
2162
2162
  break;
2163
2163
  }
2164
2164
  if ("float_list" === r5.type) {
2165
- d6[m5] = p6;
2165
+ d6[m6] = p6;
2166
2166
  v5.h = 7;
2167
2167
  break;
2168
2168
  }
2169
2169
  if ("proto" === r5.type) {
2170
- d6[m5] = p6;
2170
+ d6[m6] = p6;
2171
2171
  v5.h = 7;
2172
2172
  break;
2173
2173
  }
2174
2174
  if ("texture" !== r5.type) throw Error("Unknown output config type: '" + r5.type + "'");
2175
- n4 = a14.v[m5];
2176
- n4 || (n4 = new Wc(a14.i, a14.K), a14.v[m5] = n4);
2175
+ n4 = a14.v[m6];
2176
+ n4 || (n4 = new Wc(a14.i, a14.K), a14.v[m6] = n4);
2177
2177
  return D4(v5, Xc(n4, p6, a14.M), 13);
2178
2178
  case 13:
2179
- q4 = v5.i, d6[m5] = q4;
2179
+ q4 = v5.i, d6[m6] = q4;
2180
2180
  case 7:
2181
- r5.transform && d6[m5] && (d6[m5] = r5.transform(d6[m5]));
2181
+ r5.transform && d6[m6] && (d6[m6] = r5.transform(d6[m6]));
2182
2182
  v5.h = 3;
2183
2183
  break;
2184
2184
  case 14:
@@ -2202,9 +2202,9 @@ function requireSelfie_segmentation() {
2202
2202
  for (var c6 = b6.name || "$", d6 = [].concat(ea(b6.wants)), e6 = new a14.i.StringList(), g5 = A4(b6.wants), f6 = g5.next(); !f6.done; f6 = g5.next()) e6.push_back(f6.value);
2203
2203
  g5 = a14.i.PacketListener.implement({ onResults: function(h5) {
2204
2204
  for (var k5 = {}, l5 = 0; l5 < b6.wants.length; ++l5) k5[d6[l5]] = h5.get(l5);
2205
- var m5 = a14.listeners[c6];
2206
- m5 && (a14.I = kd(a14, k5, b6.outs).then(function(r5) {
2207
- r5 = m5(r5);
2205
+ var m6 = a14.listeners[c6];
2206
+ m6 && (a14.I = kd(a14, k5, b6.outs).then(function(r5) {
2207
+ r5 = m6(r5);
2208
2208
  for (var p6 = 0; p6 < b6.wants.length; ++p6) {
2209
2209
  var n4 = k5[d6[p6]];
2210
2210
  "object" === typeof n4 && n4.hasOwnProperty && n4.hasOwnProperty("delete") && n4.delete();
@@ -2283,6 +2283,11 @@ function requireSelfie_segmentation() {
2283
2283
  return selfie_segmentation;
2284
2284
  }
2285
2285
  var selfie_segmentationExports = /* @__PURE__ */ requireSelfie_segmentation();
2286
+ const VIRTUAL_BACKGROUND_BLUR = "blur";
2287
+ const DEFAULT_BACKGROUND_BLUR_PIXELS = 16;
2288
+ function isVirtualBackgroundBlur(value) {
2289
+ return value === VIRTUAL_BACKGROUND_BLUR;
2290
+ }
2286
2291
  function compositeVirtualBackgroundFrame({
2287
2292
  ctx,
2288
2293
  segmentationMask,
@@ -2308,7 +2313,14 @@ function compositeVirtualBackgroundFrame({
2308
2313
  ctx.fillRect(0, 0, width, height);
2309
2314
  } else if (blurFallbackPixels > 0) {
2310
2315
  ctx.filter = `blur(${blurFallbackPixels}px)`;
2311
- ctx.drawImage(sourceImage, 0, 0, width, height);
2316
+ const bleed = Math.max(2, blurFallbackPixels * 2);
2317
+ ctx.drawImage(
2318
+ sourceImage,
2319
+ -bleed,
2320
+ -bleed,
2321
+ width + bleed * 2,
2322
+ height + bleed * 2
2323
+ );
2312
2324
  }
2313
2325
  } finally {
2314
2326
  ctx.filter = previousFilter || "none";
@@ -2316,6 +2328,86 @@ function compositeVirtualBackgroundFrame({
2316
2328
  ctx.restore();
2317
2329
  }
2318
2330
  }
2331
+ const activeLoops = /* @__PURE__ */ new WeakMap();
2332
+ const activeFrames = /* @__PURE__ */ new WeakMap();
2333
+ function startVirtualBackgroundFrameLoop({
2334
+ owner,
2335
+ processFrame,
2336
+ shouldContinue,
2337
+ keepProcessingWhenHidden = true
2338
+ }) {
2339
+ activeLoops.get(owner)?.();
2340
+ let stopped = false;
2341
+ let inFlight = false;
2342
+ let animationFrameId = null;
2343
+ let timeoutId = null;
2344
+ const cancelScheduledFrame = () => {
2345
+ if (animationFrameId !== null) cancelAnimationFrame(animationFrameId);
2346
+ if (timeoutId !== null) clearTimeout(timeoutId);
2347
+ animationFrameId = null;
2348
+ timeoutId = null;
2349
+ };
2350
+ const stop = () => {
2351
+ if (stopped) return;
2352
+ stopped = true;
2353
+ cancelScheduledFrame();
2354
+ document.removeEventListener("visibilitychange", onVisibilityChange);
2355
+ if (activeLoops.get(owner) === stop) activeLoops.delete(owner);
2356
+ };
2357
+ const schedule = () => {
2358
+ if (stopped || inFlight) return;
2359
+ if (!shouldContinue()) {
2360
+ stop();
2361
+ return;
2362
+ }
2363
+ if (document.hidden && keepProcessingWhenHidden) {
2364
+ timeoutId = setTimeout(() => {
2365
+ void runFrame();
2366
+ }, 1e3);
2367
+ } else {
2368
+ animationFrameId = requestAnimationFrame(() => {
2369
+ void runFrame();
2370
+ });
2371
+ }
2372
+ };
2373
+ const runFrame = async () => {
2374
+ animationFrameId = null;
2375
+ timeoutId = null;
2376
+ if (stopped || inFlight) return;
2377
+ if (!shouldContinue()) {
2378
+ stop();
2379
+ return;
2380
+ }
2381
+ inFlight = true;
2382
+ try {
2383
+ const previousFrame = activeFrames.get(owner);
2384
+ if (previousFrame) await previousFrame.catch(() => void 0);
2385
+ if (stopped || !shouldContinue()) {
2386
+ stop();
2387
+ return;
2388
+ }
2389
+ const currentFrame = Promise.resolve(processFrame());
2390
+ activeFrames.set(owner, currentFrame);
2391
+ try {
2392
+ await currentFrame;
2393
+ } finally {
2394
+ if (activeFrames.get(owner) === currentFrame) activeFrames.delete(owner);
2395
+ }
2396
+ } catch {
2397
+ } finally {
2398
+ inFlight = false;
2399
+ schedule();
2400
+ }
2401
+ };
2402
+ const onVisibilityChange = () => {
2403
+ cancelScheduledFrame();
2404
+ schedule();
2405
+ };
2406
+ activeLoops.set(owner, stop);
2407
+ document.addEventListener("visibilitychange", onVisibilityChange);
2408
+ void runFrame();
2409
+ return stop;
2410
+ }
2319
2411
  const MEDIAPIPE_CDN = "https://cdn.jsdelivr.net/npm/@mediapipe/selfie_segmentation";
2320
2412
  let session = null;
2321
2413
  function loadImage(src) {
@@ -2333,7 +2425,9 @@ async function applyVirtualBackground({
2333
2425
  frameRate = 30,
2334
2426
  modelSelection = 1,
2335
2427
  publish = true,
2336
- assetPath = MEDIAPIPE_CDN
2428
+ assetPath = MEDIAPIPE_CDN,
2429
+ blurPixels = 0,
2430
+ keepProcessingWhenHidden = true
2337
2431
  }) {
2338
2432
  const live = getCurrentParams({ parameters });
2339
2433
  if (live.audioOnlyRoom) {
@@ -2353,7 +2447,8 @@ async function applyVirtualBackground({
2353
2447
  const settings = sourceTrack.getSettings ? sourceTrack.getSettings() : {};
2354
2448
  const width = Number(settings.width) || 640;
2355
2449
  const height = Number(settings.height) || 360;
2356
- const backgroundImage = typeof image === "string" ? await loadImage(image) : image;
2450
+ const resolvedBlurPixels = Math.max(0, Number(blurPixels) || 0);
2451
+ const backgroundImage = resolvedBlurPixels > 0 ? null : typeof image === "string" ? await loadImage(image) : image;
2357
2452
  const producer = publish ? live.videoProducer || live.localVideoProducer : null;
2358
2453
  const processingTrack = sourceTrack.clone?.();
2359
2454
  if (!processingTrack) throw new Error("This camera cannot create the isolated track required for a virtual background.");
@@ -2389,32 +2484,34 @@ async function applyVirtualBackground({
2389
2484
  sourceImage: results.image,
2390
2485
  backgroundImage,
2391
2486
  width: canvas.width,
2392
- height: canvas.height
2487
+ height: canvas.height,
2488
+ blurFallbackPixels: resolvedBlurPixels
2393
2489
  });
2394
2490
  } catch {
2395
2491
  }
2396
2492
  });
2397
2493
  let stopped = false;
2398
- let frameHandle = 0;
2399
- const pump = async () => {
2400
- if (stopped) return;
2401
- try {
2402
- if (video.readyState >= 2) await segmentation.send({ image: video });
2403
- } catch {
2404
- }
2405
- frameHandle = window.requestAnimationFrame(() => {
2406
- void pump();
2407
- });
2408
- };
2409
- void pump();
2410
- const processed = canvas.captureStream(frameRate);
2494
+ const stopFrameLoop = startVirtualBackgroundFrameLoop({
2495
+ owner: segmentation,
2496
+ keepProcessingWhenHidden,
2497
+ shouldContinue: () => !stopped && processingTrack.readyState === "live",
2498
+ processFrame: () => video.readyState >= 2 ? segmentation.send({ image: video }) : void 0
2499
+ });
2500
+ let processed;
2501
+ try {
2502
+ processed = canvas.captureStream(frameRate);
2503
+ } catch (error) {
2504
+ stopFrameLoop();
2505
+ throw error;
2506
+ }
2411
2507
  if (!processed?.getVideoTracks?.().length) {
2508
+ stopFrameLoop();
2412
2509
  throw new Error("The processed background stream produced no video track.");
2413
2510
  }
2414
2511
  const stop = () => {
2415
2512
  if (stopped) return;
2416
2513
  stopped = true;
2417
- window.cancelAnimationFrame(frameHandle);
2514
+ stopFrameLoop();
2418
2515
  try {
2419
2516
  segmentation.close();
2420
2517
  } catch {
@@ -2451,6 +2548,16 @@ async function applyVirtualBackground({
2451
2548
  };
2452
2549
  }
2453
2550
  }
2551
+ function applyBackgroundBlur({
2552
+ blurPixels = DEFAULT_BACKGROUND_BLUR_PIXELS,
2553
+ ...options
2554
+ }) {
2555
+ return applyVirtualBackground({
2556
+ ...options,
2557
+ image: null,
2558
+ blurPixels
2559
+ });
2560
+ }
2454
2561
  async function clearVirtualBackground({
2455
2562
  parameters
2456
2563
  }) {
@@ -2481,6 +2588,7 @@ function isVirtualBackgroundRunning() {
2481
2588
  }
2482
2589
  export {
2483
2590
  COMMON_LANGUAGE_CODES,
2591
+ DEFAULT_BACKGROUND_BLUR_PIXELS,
2484
2592
  MediaStream2 as MediaStream,
2485
2593
  MediaStreamTrack,
2486
2594
  Q2 as QnHDCons,
@@ -2491,6 +2599,7 @@ export {
2491
2599
  SUPPORTED_LANGUAGE_CODES,
2492
2600
  SoundPlayer,
2493
2601
  TTS_PROVIDERS,
2602
+ VIRTUAL_BACKGROUND_BLUR,
2494
2603
  f3 as aParams,
2495
2604
  addPanelist,
2496
2605
  a as addVideosGrid,
@@ -2498,6 +2607,7 @@ export {
2498
2607
  allMembers,
2499
2608
  allMembersRest,
2500
2609
  allWaitingRoomMembers,
2610
+ applyBackgroundBlur,
2501
2611
  applyVirtualBackground,
2502
2612
  aD as assignParticipantToBreakoutRoom,
2503
2613
  aR as attachPlayback,
@@ -2505,10 +2615,10 @@ export {
2505
2615
  banParticipant,
2506
2616
  b as breakoutRoomUpdated,
2507
2617
  b4 as buildAddVideosGridPlan,
2508
- d4 as buildMainHostCardPlan,
2509
- c4 as buildMainScreenState,
2510
- f4 as buildPrepopulateUserMediaPlan,
2511
- e4 as buildScreenShareHostCardPlan,
2618
+ e4 as buildMainHostCardPlan,
2619
+ d4 as buildMainScreenState,
2620
+ g3 as buildPrepopulateUserMediaPlan,
2621
+ f4 as buildScreenShareHostCardPlan,
2512
2622
  bulkUpdateParticipantPermissions,
2513
2623
  Z as calculateRowsAndColumns,
2514
2624
  e3 as captureCanvasStream,
@@ -2568,7 +2678,7 @@ export {
2568
2678
  y2 as fhdConsNeu,
2569
2679
  p3 as fhdConsPort,
2570
2680
  D2 as fhdFrameRate,
2571
- k3 as findOriginalProducerForSpeaker,
2681
+ l3 as findOriginalProducerForSpeaker,
2572
2682
  aI as flipCamera,
2573
2683
  focusPanelists,
2574
2684
  formatNumber,
@@ -2579,7 +2689,7 @@ export {
2579
2689
  generateRandomRequestList,
2580
2690
  generateRandomWaitingRoomList,
2581
2691
  a42 as getActiveSpeaker,
2582
- j4 as getActiveTranslationConsumers,
2692
+ k3 as getActiveTranslationConsumers,
2583
2693
  Z2 as getAudioGridComponents,
2584
2694
  getAvailableVoices,
2585
2695
  au as getBreakoutState,
@@ -2640,10 +2750,11 @@ export {
2640
2750
  C2 as hdFrameRate,
2641
2751
  h2 as hostRequestResponse,
2642
2752
  initialValuesState,
2643
- h3 as isConsumingTranslationForSpeaker,
2753
+ j4 as isConsumingTranslationForSpeaker,
2644
2754
  isLanguageSupported,
2645
2755
  i3 as isSpeakerInMyBreakoutRoom,
2646
2756
  isSubtitleExpired,
2757
+ isVirtualBackgroundBlur,
2647
2758
  isVirtualBackgroundRunning,
2648
2759
  X as joinConRoom,
2649
2760
  T as joinConsumeRoom,
@@ -2677,7 +2788,7 @@ export {
2677
2788
  meetingTimeRemaining,
2678
2789
  o3 as messageParticipants,
2679
2790
  v as mixStreams,
2680
- m4 as modifyCoHostSettings,
2791
+ m5 as modifyCoHostSettings,
2681
2792
  e5 as modifyDisplaySettings,
2682
2793
  m as modifySettings,
2683
2794
  ad as muteEveryone,
@@ -2734,13 +2845,14 @@ export {
2734
2845
  B as reorderStreams,
2735
2846
  a$ as replaceProducerTrack,
2736
2847
  D as requestScreenShare,
2737
- a11 as resolveHostVideoStream,
2738
- r3 as resolveMainHostRenderMode,
2848
+ c4 as resolveHostVideoStream,
2849
+ a11 as resolveMainHostRenderMode,
2850
+ r3 as resolveSidePanelForceFullDisplay,
2739
2851
  ag as respondToParticipantRequest,
2740
2852
  I2 as respondToRequests,
2741
2853
  P2 as respondToWaiting,
2742
2854
  af as respondToWaitingParticipant,
2743
- g3 as resumeOriginalProducer,
2855
+ h3 as resumeOriginalProducer,
2744
2856
  E as resumePauseAudioStreams,
2745
2857
  F as resumePauseStreams,
2746
2858
  al as resumeRoomRecording,
@@ -2770,6 +2882,7 @@ export {
2770
2882
  startRecords,
2771
2883
  aj as startRoomRecording,
2772
2884
  I as startShareScreen,
2885
+ startVirtualBackgroundFrameLoop,
2773
2886
  ao as startWhiteboard,
2774
2887
  aE as stopBreakoutRooms,
2775
2888
  s3 as stopConsumingTranslation,
@@ -2792,7 +2905,7 @@ export {
2792
2905
  R as switchUserVideoAlt,
2793
2906
  L2 as switchVideo,
2794
2907
  M2 as switchVideoAlt,
2795
- l3 as syncTranslationStateAfterBreakoutChange,
2908
+ m4 as syncTranslationStateAfterBreakoutChange,
2796
2909
  t2 as timeLeftRecording,
2797
2910
  translationChannelsAvailable,
2798
2911
  translationConfigUpdated,