1import{j as e,r as s}from"./react.B-3k8uP_.js";import{c as Xo}from"./react-redux.DK3RbvvZ.js";import{o as de}from"./@opentok.DutRQWhj.js";import{i as Qn}from"./react-intl.Dhuu5ozO.js";import{eX as ze,w as we,dv as eo,cf as an,hp as We,hq as rt,b3 as pe,b4 as _,bI as Re,cz as $e,B as y,bA as C,hr as ue,fk as to,cs as Yo,d2 as Et,hs as mt,ht as qo,C as Qo,k as Wt,hu as no,hv as Be,hw as xe,fw as es,hx as Jt,hy as Ae,hz as K,hA as ts,d4 as oo,hB as jn,hC as Bn,hD as ns,bg as os,c4 as ss,cV as as,hE as Ce,hF as is,aF as b,D as rs,bh as Oe,hG as cs,hH as ls,bi as ds,bj as us,bk as wn,bz as kn,aX as so,aH as Xt,hI as pt,hJ as ms,hK as ps,hL as St,hM as Ss,hN as Qe,fg as Un,g as zt,b as _s,hO as gs,fV as hs,cW as Ts,l as fs,ak as et,eb as bs,S as Es,ar as Ps,o as Vn,a as Hn,n as Fn,hP as Is,dY as vs,gn as Ns,hQ as As,cX as Cs,eZ as Os,N as Ms,aR as xs,aQ as Rs,aB as ys,cj as Ds,aE as Zn}from"./circularDeps.Dk-NTUIt.js";import{aL as Ls,aM as js,aN as Bs,a1 as Gn,aO as Wn,aP as zn,aQ as ws,ad as ks,O as Us}from"./GlobalBanner.DQ6eQcAm.js";import{i as Yt,a as Vs,b as qt,D as Hs,c as $t,d as ht,e as Fs,r as Zs,g as Gs,f as Ws,h as zs,j as $s,k as $n,l as Ks,T as Js,m as Xs,n as Ys,s as qs}from"./ts.x7SJIB0J.js";import{A as Qt}from"./ajv.DnqM6MnI.js";import{c as z}from"./classnames.D0HKmXoa.js";import{t as rn}from"./lodash.throttle.YzejPabi.js";import"./query-string.D3rWib5q.js";import{b as ao}from"./uuid.LkXvHIGs.js";import"./moment.C1FBLBMH.js";import{F as Qs,z as st,l as io,w as en,af as Pt,U as ea,p as Ee,a6 as tn,aC as ta,B as it,aH as at,ak as Tt,v as ot,Q as nn,R as on,o as ft,f as na,a2 as oa,bh as sa,b8 as aa,i as ia,aj as ra,ao as ca,I as He,s as tt,n as sn,a1 as la,bw as ro,r as Kn,Z as da,aK as ua,a$ as ma,bl as pa,b2 as Sa,ba as Jn,K as Xn}from"./ramda.D87RtIFf.js";import{d as _a}from"./lodash.debounce.8h2CdsCQ.js";import{f as ga}from"./redux.DzOgTvac.js";import"./@aws-amplify.RCxhAtfH.js";import"./lodash.B3N2NaP0.js";import"./@aws-crypto.Dcg7aSQk.js";import"./vite-plugin-node-polyfills.C_sj5RDf.js";import"./tslib.CaAMb0zI.js";import"./@aws-sdk.-I2sglbi.js";import"./@smithy.Pksih0Ay.js";import"./bowser.DB4Q_qEr.js";import"./fast-xml-parser.BWWgw8jG.js";import"./strnum.CkrddiOF.js";import"./path-expression-matcher.4N841h87.js";import"./@nodable.BaHavVbx.js";import"./events.BMQySa-3.js";import"./amazon-cognito-identity-js.MLihfeIM.js";import"./isomorphic-unfetch.Bs-cJhb7.js";import"./unfetch.BAWez9MP.js";import"./js-cookie.BjfTeBjV.js";import"./node-stdlib-browser.D5xHmNNu.js";import"./qs.D7975-hp.js";import"./side-channel.CCdDWQL7.js";import"./es-errors.CxTyLFAO.js";import"./object-inspect.DwTOe0Cq.js";import"./side-channel-list.Dh7Jh3BV.js";import"./side-channel-map.DmiMvxEn.js";import"./math-intrinsics.DP1tGiab.js";import"./gopd.C1lCZ5Qs.js";import"./has-symbols.BaUvM3gb.js";import"./get-proto.DtFhVbuR.js";import"./es-object-atoms.BR76m4z7.js";import"./dunder-proto.Dt2EYqHU.js";import"./call-bind-apply-helpers.DiD8owHu.js";import"./function-bind.CHqF18-c.js";import"./hasown.B1sN64jK.js";import"./call-bound.F5hoSnkW.js";import"./side-channel-weakmap.DVnDM03S.js";import"./universal-cookie.CV-EJ62K.js";import"./@formatjs.C1_ZfTE-.js";import"./intl-messageformat.C--v9pf6.js";import"./hoist-non-react-statics.CkEEqia5.js";import"./react-is.CR9CWXne.js";import"./prop-types.BI1hU5iK.js";import"./react-router.CVUZ8eyR.js";import"./@babel.BkJt-Bif.js";import"./history.DcCHPa14.js";import"./resolve-pathname.CnrqBnUv.js";import"./tiny-invariant.BaFNuDhB.js";import"./react-router-dom.CUcqg9wa.js";import"./framer-motion.DRPS0aki.js";import"./motion-dom.BeIloL1I.js";import"./papaparse.CMt4MHvy.js";import"./smoothscroll-polyfill.HeXLeb12.js";import"./reselect.x6WoWeFp.js";import"./html-entities.BdVUIegZ.js";import"./redux-form.DTakLyZV.js";import"./invariant.DzMH8mjW.js";import"./is-promise.BnKLp34n.js";import"./es6-error.eEEcLl11.js";import"./lodash.camelcase.DJj4qLcP.js";import"./dayjs.CCoKo1xb.js";import"./recharts.Bl0RPgSm.js";import"./react-dom.BN6VrI28.js";import"./scheduler.CSTdDqjn.js";import"./es-toolkit.DqhlDB-9.js";import"./d3-scale.CWIRtVrJ.js";import"./internmap.BkD7Hj8s.js";import"./d3-array.DtxjNv8j.js";import"./d3-time-format.B3qUXX48.js";import"./d3-time.6u5kqHrT.js";import"./d3-interpolate.UaQ8xcun.js";import"./d3-color.EvQhL1z5.js";import"./d3-format.DDaubxdo.js";import"./d3-shape.Dqqssz9u.js";import"./d3-path.DKbKBQE1.js";import"./redux-thunk.ClJT1hhx.js";import"./use-sync-external-store.Cwe_1tZA.js";import"./victory-vendor.B_VqiHW5.js";import"./decimal.js-light.ZKFLnszB.js";
1import"./eventemitter3.Cru6anOl.js";import"./linkify-react.D-YqhBaz.js";import"./linkifyjs.fJcvqhvp.js";import"./react-string-replace.DPJFhiU5.js";import"./react-select.DV5Vf0zR.js";import"./@emotion.3fUDdDOO.js";import"./react-input-autosize.BOklxySL.js";import"./memoize-one.CcMeOnPo.js";import"./react-popper.AImPAYnS.js";import"./@popperjs.jroIKPnO.js";import"./warning.BecvMZY8.js";import"./@reduxjs.BrHwrZr3.js";import"./immer.DqxjFn0G.js";import"./@dnd-kit.C_hfJcep.js";import"./react-bootstrap.CHiNoPeM.js";import"./@restart.Cg0kqf3Y.js";import"./dom-helpers.BsN-Z0DW.js";import"./@react-aria.DF6JY-Pj.js";import"./uncontrollable.BP-dpPnb.js";import"./react-transition-group.BOiOCeSX.js";import"./@sentry.D5ZU4aPg.js";import"./@embrace-io.-U0xwoZL.js";import"./@opentelemetry.DgCkngOa.js";import"./web-vitals.CGLc5YFn.js";import"./whatwg-fetch.dh5tls6q.js";import"./jose._EIFwEpO.js";import"./randombytes.rb5iYwSM.js";import"./safe-buffer.60xalS5L.js";import"./create-hash.CRYJNM1x.js";import"./inherits.BICa84dG.js";import"./md5.js.BqdSOdD7.js";import"./readable-stream.CZQqfz9L.js";import"./util.B_7MrkmK.js";import"./is-arguments.CBf-heGq.js";import"./has-tostringtag.B9LL2wif.js";import"./call-bind.BpMSn--X.js";import"./get-intrinsic.DZf8mcOR.js";import"./has-proto.3s11jRC3.js";import"./set-function-length.XTWwSipd.js";import"./define-data-property.YeCN4It1.js";import"./es-define-property.BwAjHEKE.js";import"./has-property-descriptors.B0dzBa-E.js";import"./for-each.Df9zFL0m.js";import"./is-callable.BYFz_UGF.js";import"./available-typed-arrays.CKs-EJ-_.js";import"./possible-typed-array-names.BKRybAhF.js";import"./util-deprecate.CcYh4EiK.js";import"./string_decoder.B_9uXyHU.js";import"./ripemd160.CIQnIikU.js";import"./sha.js.djBd4XnE.js";import"./to-buffer.DWUcXs9C.js";import"./isarray.aIBLcMhd.js";import"./typed-array-buffer.BCK_dF34.js";import"./cipher-base.BYgOMY_G.js";import"./stream-browserify.DE_5laX2.js";import"./hls.js.53ywr5d2.js";import"./es6-promise.D13_Ojbd.js";import"./notistack.DtukjUhS.js";import"./clsx.CH7BE6MN.js";import"./goober.ayqgXLwz.js";import"./object-hash.Chd5PlPB.js";import"./react-datepicker.CXeuyi_d.js";import"./date-fns.B2Z5BISk.js";import"./react-onclickoutside.DVZcPtXS.js";import"./deep-equal.q5HPyh-i.js";import"./object-keys.BRu_Tray.js";import"./object-is.vuxtSMcf.js";import"./define-properties.D7u9wN_s.js";import"./functions-have-names.DRuOgE3b.js";import"./is-date-object.Dmr0Pfsk.js";import"./popper.js.B9X7Ze1I.js";import"./@hypnosphi.Nkg-sqrp.js";import"./gud.DioucThw.js";import"./konva.rp8aN2rw.js";import"./react-konva.CN3Kx5fX.js";import"./react-reconciler.CS1mkc_M.js";import"./its-fine.CRocngIY.js";import"./react-helmet.1An2ID2q.js";import"./react-side-effect.BVndtYHQ.js";import"./react-fast-compare.BZYDOgHv.js";import"./object-assign.BJAVtwsX.js";import"./react-image-crop.BoloEKFJ.js";import"./blueimp-load-image.DpKzNXZm.js";import"./d3-transition.DvdJEKDy.js";import"./d3-timer.D0hdNHWs.js";import"./d3-dispatch.DN60gwnI.js";import"./d3-selection.Bj1BqfTz.js";import"./d3-ease.DRPgKoYJ.js";import"./d3-zoom.CtyVw9El.js";import"./strict-uri-encode.CFIZd5-r.js";import"./decode-uri-component.D7HDsfES.js";import"./uri-js.DStV8ysH.js";import"./fast-deep-equal.C148XJoK.js";import"./json-schema-traverse.p5H0WVx6.js";import"./fast-json-stable-stringify.BXXaKcqg.js";const ha="StreamingSessionPage-module__root___sGZUU",Ta="StreamingSessionPage-module__details___hl8yh",fa="StreamingSessionPage-module__firstPanel___xFWQt",ba="StreamingSessionPage-module__secondPanel___3fmaX",Ea="StreamingSessionPage-module__buttons___b9CBb",Pa="StreamingSessionPage-module__participantContainer___hF0L6",Ia="StreamingSessionPage-module__tabs___--S8I",va="StreamingSessionPage-module__participantListContainer___Py6e5",Na="StreamingSessionPage-module__participantList___a4Jxu",Aa="StreamingSessionPage-module__paginationButtons___jshi1",Ca="StreamingSessionPage-module__toolbarOverflowMenuContent___xw7Pv",Oa="StreamingSessionPage-module__underMainVideo___8PyyF",Ma="StreamingSessionPage-module__mainStreamContainer___M6GgW",xa="StreamingSessionPage-module__screenshareContainer___l5QRo",Ra="StreamingSessionPage-module__mainStream___BuIMo",ya="StreamingSessionPage-module__mainStreamPlaceholder___bo9hZ",Da="StreamingSessionPage-module__hidden___Xt5B-",La="StreamingSessionPage-module__participant___YCJLN",ja="StreamingSessionPage-module__shouldHideVideo___BUQqG",Ba="StreamingSessionPage-module__publisherVideoContainer___c-WlH",wa="StreamingSessionPage-module__isTalking___2Bq-a",ka="StreamingSessionPage-module__avatar___vH-UG",Ua="StreamingSessionPage-module__audioBlockedIcon___1SvhR",Va="StreamingSessionPage-module__participantClickableLayer___QvI1S",Ha="StreamingSessionPage-module__placeholderText___vqxu4",Fa="StreamingSessionPage-module__mainStreamButtonBar___uH9Rs",Za="StreamingSessionPage-module__fullScreenSecondPanelHeader___592oq",Ga="StreamingSessionPage-module__showParticipantsInFullScreenButton___N1y9t",Wa="StreamingSessionPage-module__participantNameContainer___u-J-f",za="StreamingSessionPage-module__hideParticipant___ee5G4",$a="StreamingSessionPage-module__participantMenuContainer___wg9zb",Ka="StreamingSessionPage-module__removePinButton___VBdWI",Ja="StreamingSessionPage-module__participantMenuToggle___-UFH9",Xa="StreamingSessionPage-module__externalLabel___-fgEc",Ya="StreamingSessionPage-module__moderatorLabel___A42i9",qa="StreamingSessionPage-module__participantName___0y9KM",Qa="StreamingSessionPage-module__toolbarButton___hEcip",ei="StreamingSessionPage-module__leadSurgeon___PcRy2",ti="StreamingSessionPage-module__leadSurgeonDetails___z94BC",ni="StreamingSessionPage-module__leadSurgeonName___XcQ2U",oi="StreamingSessionPage-module__leadSurgeonTitle___xCnz4",si="StreamingSessionPage-module__fullScreenButton___6rqgl",ai="StreamingSessionPage-module__fullScreenExitButton___56iNt",ii="StreamingSessionPage-module__loadingOverlay___qdtOQ",ri="StreamingSessionPage-module__deviceMenuHeader___5guKl",ci="StreamingSessionPage-module__deviceMenuDivider___dNpZg",li="StreamingSessionPage-module__deviceMenuItem___-JpZx",di="StreamingSessionPage-module__checkMarkPlaceholder___5OY-K",ui="StreamingSessionPage-module__chatContainer___p0n0S",mi="StreamingSessionPage-module__isVisible___ito8K",pi="StreamingSessionPage-module__chatList___B-OQ4",Si="StreamingSessionPage-module__chatListContainer___b4zUS",_i="StreamingSessionPage-module__hasNewChats___6MqRT",gi="StreamingSessionPage-module__chatInputContainer___PVWC8",hi="StreamingSessionPage-module__topScrollIndicator___sm9K-",Ti="StreamingSessionPage-module__latestMessagesButtonContainer___4-KPC",fi="StreamingSessionPage-module__chatListPlaceholderContainer___Hyk3w",bi="StreamingSessionPage-module__archivingIndicator___PQXHa",Ei="StreamingSessionPage-module__archivingText___QAwXj",Pi="StreamingSessionPage-module__archivingIcon___FDXRW",Ii="StreamingSessionPage-module__grid___gdh4E",vi="StreamingSessionPage-module__row___FtxS-",a={root:ha,details:Ta,firstPanel:fa,secondPanel:ba,buttons:Ea,participantContainer:Pa,tabs:Ia,participantListContainer:va,participantList:Na,paginationButtons:Aa,toolbarOverflowMenuContent:Ca,underMainVideo:Oa,mainStreamContainer:Ma,screenshareContainer:xa,mainStream:Ra,mainStreamPlaceholder:ya,hidden:Da,participant:La,shouldHideVideo:ja,publisherVideoContainer:Ba,isTalking:wa,avatar:ka,audioBlockedIcon:Ua,participantClickableLayer:Va,placeholderText:Ha,mainStreamButtonBar:Fa,fullScreenSecondPanelHeader:Za,showParticipantsInFullScreenButton:Ga,participantNameContainer:Wa,hideParticipant:za,participantMenuContainer:$a,removePinButton:Ka,participantMenuToggle:Ja,externalLabel:Xa,moderatorLabel:Ya,participantName:qa,toolbarButton:Qa,leadSurgeon:ei,leadSurgeonDetails:ti,leadSurgeonName:ni,leadSurgeonTitle:oi,fullScreenButton:si,fullScreenExitButton:ai,loadingOverlay:ii,deviceMenuHeader:ri,deviceMenuDivider:ci,deviceMenuItem:li,checkMarkPlaceholder:di,chatContainer:ui,isVisible:mi,chatList:pi,chatListContainer:Si,hasNewChats:_i,chatInputContainer:gi,topScrollIndicator:hi,latestMessagesButtonContainer:Ti,chatListPlaceholderContainer:fi,archivingIndicator:bi,archivingText:Ei,archivingIcon:Pi,grid:Ii,row:vi},cn=({userName:t,isExternalUser:o,formatMessage:i,isModerator:c,children:g})=>e.jsxs("span",{className:a.participantNameContainer,children:[e.jsx("span",{title:t,className:a.participantName,children:t}),o&&e.jsx("span",{"data-test":"participant-external-label",className:a.externalLabel,children:i({description:"Streaming session page - external user label",defaultMessage:"External",id:"streamingSessionPage--externalUserLabel"})}),c&&e.jsx("span",{"data-test":"participant-moderator-label",className:a.moderatorLabel,children:i({description:"Streaming session page - moderator label",defaultMessage:"Moderator",id:"streamingSessionPage--moderatorLabel__STREAM-1827"})}),g]}),Yn={width:640,height:480},Ni="auto",co=({stream:t,className:o,session:i,onSubscribeError:c,onAudioLevelUpdated:g,mutedParticipants:S,activeSpeakersObj:n,accountMembers:N,formatMessage:d,onPinParticipant:l,onUnpinParticipant:w,shouldDisplayParticipant:h=!0,role:P,
1isPinnedStream:M=!1,onSubscriberAudioBlocked:V,onSubscriberAudioUnblocked:$,onSubscriberUnblockAudioFailed:O,isMutingTabletStreamBetaEnabled:A,userNameFallback:J,shouldHideTileName:Q,onUserTap:I})=>{var ne,ce,Te,q;const[L,ee]=s.useState(!1),[se,H]=s.useState(null),[u,j]=s.useState(!1),[k,G]=s.useState(!1),x=({reason:Z})=>{ee(!1),H(Z)},F=Z=>{var oe;(oe=Z.target.stream)!=null&&oe.hasVideo&&(ee(!0),H(null))},X=s.useMemo(()=>{try{return JSON.parse(t.connection.data).u_uuid}catch{return null}},[(ne=t.connection)==null?void 0:ne.data]),Y=s.useMemo(()=>{try{return JSON.parse(t.connection.data).c_type==="external_client"}catch{return!1}},[(ce=t.connection)==null?void 0:ce.data]),ae=s.useMemo(()=>{if(Yt(t))return!1;if(P)return P===ze.MODERATOR;try{return JSON.parse(t.connection.data).role==="moderator"}catch{return!1}},[(Te=t.connection)==null?void 0:Te.data,P]),T=s.useMemo(()=>{const Z=[Yt,Vs];return(!ae||!A)&&Z.push(qt),!Qs(Z)(t)},[t]),E=s.useMemo(()=>we(st(eo(X,"uuid")))(N),[N,X]),m=an(E)||t.name||J,v=s.useRef(null),U=s.useRef(null),he=s.useCallback(rn(g,We.updateThrottle,{leading:!0,trailing:!0}),[]);s.useEffect(()=>{var Z;if(i&&t){v.current=i.subscribe(t,void 0,{...rt,subscribeToVideo:!t.destroyed&&h,audioVolume:M?0:void 0,preferredResolution:M?Ni:Yn},Pe=>{Pe?c(Pe):G(!0)});const oe=Pe=>{V&&(V(Pe),j(!0))},It=Pe=>{$&&($(Pe),j(!1))},ye=Pe=>{var Ie;(Ie=U.current)==null||Ie.appendChild(Pe.element)};(Z=v.current)==null||Z.on({audioLevelUpdated:he,videoDisabled:x,videoEnabled:F,audioBlocked:oe,audioUnblocked:It,videoElementCreated:ye})}return()=>{i&&v.current&&(v.current.off(),i.unsubscribe(v.current))}},[i,t]),s.useEffect(()=>{var Z,oe;k&&((Z=v.current)==null||Z.subscribeToVideo(h),h&&!M&&((oe=v.current)==null||oe.setPreferredResolution(Yn)))},[h,k]);const ie=s.useMemo(()=>we(io(t.streamId))(S),[t.streamId,S]),ve=ie&&e.jsx(pe,{iconType:_.MICROPHONE_OFF}),Ne=()=>M?"pinned-participant":h?"visible-participant-tile":"hidden-participant-tile",Se=[],te=()=>{i.signal({to:t.connection,type:ue.MUTE_STREAM,data:""},()=>{}),I("live_stream_mute_participant","mute")};return T&&Se.push(e.jsx(Re.Item,{dataTestValue:"mute-menu-item",onClick:te,isDisabled:ie,children:d({description:"Menu option to mute another user when in a Live Stream",defaultMessage:"Mute",id:"streamingSessionPage--muteLabel__STREAM-5581"})},"mute-menu-item")),M||Se.push(e.jsx(Re.Item,{dataTestValue:"pin-menu-item",onClick:()=>l(t.streamId),children:d({description:"Menu option to place a user's video in the enlarged window when streaming",defaultMessage:"Pin",id:"streamingSessionPage--pinLabel__STREAM-5770"})},"pin-menu-item")),e.jsxs("div",{id:`stream-${t.streamId}`,"data-test":Ne(),className:z(o,a.participantContainer,{[a.hideParticipant]:!h}),children:[e.jsxs("div",{className:z(a.participant,{[a.isTalking]:(q=n==null?void 0:n[t.streamId])==null?void 0:q.isTalking,[a.shouldHideVideo]:!L}),children:[e.jsx($e,{iconObj:qt(t)?{iconType:_.CAMERA_IN}:void 0,firstName:(E==null?void 0:E.first_name)||m,lastName:E==null?void 0:E.last_name,email:E==null?void 0:E.email,avatarImgSrc:E==null?void 0:E.profile_picture,className:a.avatar}),e.jsx("div",{ref:U}),u&&e.jsxs(e.Fragment,{children:[e.jsx($e,{iconObj:{iconType:_.VOLUME_MUTE_FILLED},className:z(a.avatar,a.audioBlockedIcon)}),e.jsx("button",{onClick:async()=>{try{await de.unblockAudio()}catch(Z){O(Z)}},"data-test":"unblock-audio-button",className:a.participantClickableLayer})]})]},`stream-${t.streamId}`),e.jsxs("div",{className:a.participantMenuContainer,children:[M&&e.jsx(y,{className:a.removePinButton,labelType:y.labelType.TEXT_ONLY,buttonStyle:y.buttonStyle.MINIMAL,dataTestValue:"remove-pin-button",labelText:d({description:"Menu option to revert a user's video back to a regular sized window when streaming",defaultMessage:"Remove Pin",id:"streamingSessionPage--removePinLabel__STREAM-5770"}),onClick:w}),e.jsx(Re,{className:a.participantMenu,togglerElement:e.jsx(C,{dataTestValue:"participant-menu-button",type:C.type.BUTTON,buttonStyle:C.buttonStyle.SECONDARY,className:a.participantMenuToggle,iconObj:{iconType:_.OVERFLOW_MENU_HORIZONTAL,title:d({description:"Menu - toggle menu icon",defaultMessage:"Toggle Menu Icon",i
1d:"menu--toggleMenuIcon__STREAM-5770"})}}),children:Se})]}),!Q&&e.jsxs(cn,{userName:m,isExternalUser:Y,formatMessage:d,isModerator:ae,children:[ve,!L&&se==="quality"&&e.jsx(pe,{iconType:_.NETWORK})]})]})},Ai=({session:t,participantScreenShare:o,onSubscribeError:i})=>{const c=s.useRef(null);return s.useEffect(()=>{if(o&&t){const g=t.subscribe(o,void 0,rt,n=>{n&&i(n)}),S=n=>{var N;(N=c.current)==null||N.appendChild(n.element)};return g.on({videoElementCreated:S}),()=>{g.off(),t.unsubscribe(g)}}},[t,o]),e.jsxs("div",{className:a.screenshareContainer,"data-test":"participant-screen-share",children:[e.jsx("div",{className:a.mainStream,children:e.jsx("div",{ref:c})},o==null?void 0:o.streamId),e.jsx("span",{className:a.participantNameContainer,children:e.jsx("span",{className:a.participantName,children:Yo(o==null?void 0:o.name)})})]})},Ci=({session:t,ds1Feed:o,onDs1StreamSubscribeError:i})=>{const c=s.useRef(null);return s.useEffect(()=>{if(o&&t){const g=t.subscribe(o,void 0,rt,n=>{n&&i(n)}),S=n=>{var N;(N=c.current)==null||N.appendChild(n.element)};return g.on({videoElementCreated:S}),()=>{g.off(),t.unsubscribe(g)}}},[t,o]),e.jsx("div",{className:a.mainStream,"data-test":"ds1-feed",children:e.jsx("div",{ref:c})},o==null?void 0:o.streamId)},Oi=({session:t,userName:o,onScreenShareError:i,onShareScreenMediaStopped:c})=>{const g=s.useRef(null);return s.useEffect(()=>{if(t){let S=!1;const n=de.initPublisher(void 0,{...rt,name:o,resolution:"1920x1080",videoSource:"screen"},d=>{d&&(S=!0,i(d))});t.publish(n,d=>{d?S||i(d):n.on("mediaStopped",c)});const N=d=>{var l;(l=g.current)==null||l.appendChild(d.element)};return n.on({videoElementCreated:N}),()=>{n.off(),t.unpublish(n),n.destroy()}}},[t]),e.jsxs("div",{className:a.screenshareContainer,"data-test":"publisher-screen-share",children:[e.jsx("div",{className:a.mainStream,children:e.jsx("div",{ref:g})}),e.jsx("span",{className:a.participantNameContainer,children:e.jsx("span",{className:a.participantName,children:o})})]})},Mi=({formatMessage:t})=>e.jsx("div",{className:a.mainStreamPlaceholder,"data-test":"main-video-placeholder",children:e.jsx("p",{className:a.placeholderText,children:t({description:"Streaming session page - video feed placeholder text",defaultMessage:"The video feed is not currently streaming. Please wait.",id:"streamingSessionPage--videoFeedPlaceholder.text"})})}),xi=t=>{var L;const{mainStreamState:o,formatMessage:i,session:c,onSubscribeError:g,onDs1StreamSubscribeError:S,onScreenShareError:n,ds1Feed:N,participantScreenShare:d,onShareScreenMediaStopped:l,userName:w,pinnedStream:h,participantProps:P,updatedRoles:M,shouldHideTileName:V}=t,{SHOWING_PINNED_PARTICIPANT_STREAM:$,SHOWING_ANOTHER_USERS_SCREENSHARE:O,SHOWING_MY_SCREENSHARE:A,SHOWING_LAP_FEED:J,SHOWING_PTZ_FEED:Q,NO_STREAM:I}=to;switch(o){case $:case Q:return h?e.jsx(co,{stream:h,isPinnedStream:!0,role:M[JSON.parse(((L=h.connection)==null?void 0:L.data)||"{}").u_uuid],shouldHideTileName:V,...P},h.streamId):e.jsx("div",{className:a.mainStream});case O:return e.jsx(Ai,{session:c,participantScreenShare:d,onSubscribeError:g});case J:return e.jsx(Ci,{session:c,ds1Feed:N,onDs1StreamSubscribeError:S});case A:return e.jsx(Oi,{session:c,userName:w,onScreenShareError:n,onShareScreenMediaStopped:l});case I:default:return e.jsx(Mi,{formatMessage:i})}};Pt(/rgba\([0-9]{1,3},[0-9]{1,3},[0-9]{1,3},(0(\.\d+)?|1(\.0+)?)\)/);Pt(/rgb\([0-9]{1,3},[0-9]{1,3},[0-9]{1,3}\)/);Pt(/#([a-f0-9]{3}){1,2}\b/i);const Ri=Pt(/#[a-f0-9]{8}\b/i),yi=en(Ri,ea(0,-2)),Di=({session:t,isDrawingEnabled:o=!1,onSendDrawingError:i,onDrawingValidationFailed:c,onTooManyDrawingsOnDraw:g,onTooManyDrawingsOnDrawingReceived:S,myDrawingColor:n=ht[0],onDrawingSent:N})=>{const d=s.useRef([]),l=Et(),w=()=>d.current.length>qo,h=M=>{if(w()){g&&g();return}const V=O=>Ee(aa(2),Qo((A,J)=>J%O?null:A),A=>Tt(ia,A),ra),$=Ee(nn(on("points"),Ee(ft(Ls(mt.roundToDecimalPlaces)),na(Ee(oa,sa(mt.highCompressionLengthThreshold)),V(mt.highCompressionFactor),V(mt.lowCompressionFactor)))),O=>nn(on("color"),we(yi),O))(M);$t($)&&(t.signal({data:JSON.stringify($),type:ue.DRAWING},O=>{O&&i()}),N())},P=M=>{d.current=Tt(ot("uuid",M))(d.current),l()};return s.useEffect(()=>{const M=V=>{if(w()){S&&S();return}const $=Ee(JSON.parse,O=>tn("uuid",ao(),O),O=>ta(A=>!!it("color",A),tn("color",ht[0]),O))(V.data);$t($)&&(d.current=at($)(d.current),l())};return t&&t.on(`signal:${ue.DRAWING}`,M),()=>{t&&t.off(`signal:${ue.DRAWING}`,M)}},[t]),e.jsx(Hs,{isDrawingEnabled:o,lines:d.current,onDrawingEnd:h,onLineDisappear:P,drawingColor:n,isValidTseDrawing:$t,onDrawingValidationFailed:c})},Li="InlaidMenuButton-module__root___47HaI",ji="InlaidMenuButton-module__menu___Mgz3B",Bi="InlaidMenuButton-module__flipped___a-Yxr",Kt={root:Li,menu:ji,flipped:Bi};var bt=(t=>(t.LIGHT="LIGHT",t.DARK="DARK",t))(bt||{});const nt={type:y.type.SUBMIT,isDisabled:!1,dataTestValue:"inlaid-menu-button",isForceActive:!1,buttonStyle:"LIGHT"},qn=t=>{const{className:o,menuToggleOnClick:i,children:c,type:g=nt.type,isDisabled:S=nt.isDisabled,dataTestValue:n=nt.dataTestValue,isForceActive:N=nt.isForceActive,buttonStyle:d=nt.buttonStyle}=t,[l,w]=s.useState(!1),h=ca(["className","menuToggleOnClick","children"])({...t,type:g,dataTestValue:n,isForceActive:N}),P=e.jsx(C,{onClick:M=>{i&&i(M)},iconObj:{iconType:_.CHEVRON_DOWN_SMALL},buttonSize:C.buttonSize.SMALL,buttonStyle:d==="DARK"?C.buttonStyle.PRIMARY_DARK_BACKGROUND:C.buttonStyle.PRIMARY,className:z({[Kt.flipped]:l}),dataTestValue:"inlaid-menu-toggle"});return e.jsxs("div",{className:z(Kt.root,o),children:[e.jsx(y,{...h,labelType:y.labelType.TEXT_WITH_ABOVE_ICON,buttonStyle:d==="DARK"?y.buttonStyle.TERTIARY_ACTION_DARK_BACKGROUND:y.buttonStyle.TERTIARY_ACTION,buttonSize:y.buttonSize.MEDIUM}),!S&&e.jsx(Re,{togglerElement:P,className:Kt.menu,onShow:()=>w(!0),onHide:()=>w(!1),children:c})]})},_t=Re.Item,wi=t=>{const{onMyVideoToggle:o,onMyMicrophoneToggle:i,isMicOn:c,isCameraOn:g,formatMessage:S,publisherRef
1:n,onGetDevicesError:N,onSetActiveDeviceError:d,onGetActiveDeviceError:l,onSetActiveDevice:w,userId:h,publishStatus:P,buttonStyle:M=bt.LIGHT,isVideoFilterSupported:V,onOpenVideoBackgroundModal:$}=t,[O,A]=s.useState([]),[J,Q]=s.useState([]),[I,L]=s.useState([]),[ee,se]=s.useState(null),[H,u]=s.useState(null),[j,k]=s.useState(null),G=Wt(O),x=Wt(J),F=Wt(I),X=(m,v)=>{if(m&&N(m),v){const U=He(ie=>!!ie.deviceId&&!!ie.label&&ie.kind==="audioInput")(v),he=He(ie=>!!ie.deviceId&&!!ie.label&&ie.kind==="videoInput")(v);A(U),Q(he)}},Y=m=>{if(m){const v=He(U=>!!U.deviceId&&!!U.label)(m);L(v)}};no(()=>{de.getDevices(X),de.getAudioOutputDevices().then(Y).catch(N)}),s.useEffect(()=>{P===Be.PUBLISHED&&(de.getDevices((m,v)=>{var U,he;if(X(m,v),v){const ie=He(tt("audioInput","kind"))(v),ve=He(tt("videoInput","kind"))(v),Ne=localStorage.getItem(`${h}_audioInputId`),Se=Ne?st(tt(Ne,"deviceId"))(ie):void 0;Se&&((U=n==null?void 0:n.current)==null||U.setAudioSource(Se.deviceId).then(()=>se(Se.label)));const te=localStorage.getItem(`${h}_videoInputId`),ne=te?st(tt(te,"deviceId"))(ve):void 0;ne&&((he=n==null?void 0:n.current)==null||he.setVideoSource(ne.deviceId).then(()=>k(ne.deviceId)))}}),de.getAudioOutputDevices().then(m=>{if(m){Y(m);const v=localStorage.getItem(`${h}_audioOutputId`),U=v?st(tt(v,"deviceId"))(m):void 0;U&&U.deviceId&&de.setAudioOutputDevice(U.deviceId).then(()=>u(U.label))}}).catch(N))},[P]);const T=()=>{var v;de.getDevices(X),de.getAudioOutputDevices().then(Y).catch(N);const m=n==null?void 0:n.current;m&&(se((v=m.getAudioSource())==null?void 0:v.label),de.getActiveAudioOutputDevice().then(U=>u(U.label)).catch(U=>l(U,xe.SPEAKER)))},E=()=>{var v;de.getDevices(X);const m=n==null?void 0:n.current;m&&k((v=m.getVideoSource())==null?void 0:v.deviceId)};return e.jsxs(e.Fragment,{children:[e.jsxs(qn,{isDisabled:!G&&!F,buttonStyle:M,onClick:i,iconObj:{iconType:c?_.MICROPHONE_ON:_.MICROPHONE_OFF},className:a.toolbarButton,labelText:S(c?{description:"Streaming session page - microphone on button label",defaultMessage:"Mic On",id:"streamingSessionPage--buttonToolbar.microphoneOnButtonLabel"}:{description:"Streaming session page - microphone off button label",defaultMessage:"Mic Off",id:"streamingSessionPage--buttonToolbar.microphoneOffButtonLabel"}),menuToggleOnClick:T,dataTestValue:c?"mute-button":"unmute-button",children:[G?e.jsx("div",{className:a.deviceMenuHeader,children:S({description:"Streaming session page - audio inputs list",defaultMessage:"Select a Microphone",id:"streamingSessionPage--buttonToolbar.audioInputsList"})}):e.jsx(e.Fragment,{}),G?e.jsx(e.Fragment,{children:O.map(m=>e.jsxs(_t,{className:a.deviceMenuItem,onClick:()=>{n!=null&&n.current&&(n==null||n.current.setAudioSource(m.deviceId).then(()=>{se(m.label),localStorage.setItem(`${h}_audioInputId`,m.deviceId),ee!==m.label&&w(xe.MICROPHONE)}).catch(v=>d(v,xe.MICROPHONE)))},children:[ee===m.label?e.jsx(pe,{iconType:_.CHECKMARK}):e.jsx("span",{className:a.checkMarkPlaceholder}),m.label]},m.deviceId))}):e.jsx(e.Fragment,{}),F?e.jsx("div",{className:a.deviceMenuHeader,children:S({description:"Streaming session page - audio outputs list",defaultMessage:"Select a Speaker",id:"streamingSessionPage--buttonToolbar.audioOutputsList"})}):e.jsx(e.Fragment,{}),F?e.jsx(e.Fragment,{children:I.map(m=>e.jsxs(_t,{className:a.deviceMenuItem,onClick:()=>{m.deviceId?de.setAudioOutputDevice(m.deviceId).then(()=>{u(m.label),m.deviceId&&localStorage.setItem(`${h}_audioOutputId`,m.deviceId),H!==m.label&&w(xe.SPEAKER)}).catch(v=>d(v,xe.SPEAKER)):d({name:"Custom device error",message:"Could not get device ID"},xe.SPEAKER)},children:[H===m.label?e.jsx(pe,{iconType:_.CHECKMARK}):e.jsx("span",{className:a.checkMarkPlaceholder}),m.label]},m.deviceId))}):e.jsx(e.Fragment,{})]}),e.jsxs(qn,{buttonStyle:M,onClick:o,iconObj:{iconType:g?_.CAMERA_IN:_.CAMERA_OUT},isDisabled:!x,className:a.toolbarButton,labelText:S(g?{description:"Streaming session page - camera on button label",defaultMessage:"Camera On",id:"streamingSessionPage--buttonToolbar.cameraOnButtonLabel"}:{description:"Streaming session page - camera off button label",defaultMessage:"Camera Off",id:"streamingSessionPage--buttonToolbar.cameraOffButtonLabel"}),menuToggleOnClick:E,dataTestValue:g?"switch-camera-off-button":"switch-camera-on-button",children:[x?e.jsx("div",{className:a.deviceMenuHeader,children:S({description:"Streaming session page - video inputs list",defaultMessage:"Select a Camera",id:"streamingSessionPage--buttonToolbar.videoInputsList"})}):e.jsx(e.Fragment,{}),x?e.jsx(e.Fragment,{children:J.map(m=>e.jsxs(_t,{className:a.deviceMenuItem,onClick:()=>{n!=null&&n.current&&(n==null||n.current.setVideoSource(m.deviceId).then(()=>{k(m.deviceId),localStorage.setItem(`${h}_videoInputId`,m.deviceId),j!==m.deviceId&&w(xe.CAMERA)}).catch(v=>d(v,xe.CAMERA)))},children:[j===m.deviceId?e.jsx(pe,{iconType:_.CHECKMARK}):e.jsx("span",{className:a.checkMarkPlaceholder}),m.label]},m.deviceId))}):e.jsx(e.Fragment,{}),V?e.jsxs(e.Fragment,{children:[e.jsx("hr",{className:a.deviceMenuDivider}),e.jsxs(_t,{className:a.deviceMenuItem,dataTestValue:"video-background-menu-item",onClick:$,children:[e.jsx("span",{className:a.checkMarkPlaceholder}),S({description:"Title for the streaming background selection modal",defaultMessage:"Video background...",id:"streamingSessionPage--buttonToolbar.videoBackgroun
1dLabel__STREAM-9986"})]})]}):e.jsx(e.Fragment,{})]})]})},ki=({onMyVideoToggle:t,onShareMyScreenToggle:o,onMyMicrophoneToggle:i,onIsAbleToDrawToggle:c,onShouldShowPTZControlsToggle:g,onLeave:S,isMicOn:n,isCameraOn:N,shouldShareScreen:d,isDrawingEnabled:l,shouldShowPTZToggle:w,shouldShowPTZControls:h,formatMessage:P,openInviteModal:M,openSimpleModal:V,deleteStreamroom:$,shouldShowModeratorControls:O=!1,isInternalStreamOwner:A,publisherRef:J,onGetDevicesError:Q,onSetActiveDeviceError:I,onGetActiveDeviceError:L,onSetActiveDevice:ee,isMediumOrSmallerSizedScreen:se,isXsSizedScreen:H,userId:u,publishStatus:j,isFullScreen:k,shouldShowNewChatsIndicator:G,onToolbarChatButtonClick:x,isVideoFilterSupported:F,onOpenVideoBackgroundModal:X})=>{const Y=Et(),ae=s.useRef(null),T=s.useMemo(()=>{let q=!1;return de.checkScreenSharingCapability(Z=>{q=Z.supported&&Z.extensionRegistered!==!1}),q},[]);s.useEffect(()=>(ae.current&&ae.current.addEventListener("click",o),()=>{ae.current&&ae.current.removeEventListener("click",o)}));const E=k?y.buttonStyle.TERTIARY_ACTION_DARK_BACKGROUND:y.buttonStyle.TERTIARY_ACTION,m=k?y.buttonStyle.TERTIARY_WARNING_DARK_BACKGROUND:y.buttonStyle.TERTIARY_WARNING,v=e.jsx("div",{className:a.toolbarButton,"data-test":"sharing",children:e.jsx(y,{buttonRef:ae,onClick:()=>null,iconObj:{iconType:d?_.SCREEN_SHARE_ON:_.SCREEN_SHARE_OFF},labelType:y.labelType.TEXT_WITH_ABOVE_ICON,buttonStyle:E,labelText:P(d?{description:"Streaming session page - screen share on button label",defaultMessage:"Sharing On",id:"streamingSessionPage--buttonToolbar.sharingOnButtonLabel"}:{description:"Streaming session page - sharing off button label",defaultMessage:"Sharing Off",id:"streamingSessionPage--buttonToolbar.sharingOffButtonLabel"}),dataTestValue:d?"switch-share-off-button":"switch-share-on-button"})},"sharing"),U=e.jsx("div",{className:a.toolbarButton,"data-test":"drawing",children:e.jsx(y,{onClick:c,iconObj:{iconType:l?_.DRAWING_ON:_.DRAWING_OFF},labelType:y.labelType.TEXT_WITH_ABOVE_ICON,buttonStyle:E,labelText:P(l?{description:"Streaming session page - drawing on button label",defaultMessage:"Draw On",id:"streamingSessionPage--buttonToolbar.drawingOnButtonLabel"}:{description:"Streaming session page - drawing off button label",defaultMessage:"Draw Off",id:"streamingSessionPage--buttonToolbar.drawingOffButtonLabel"}),dataTestValue:"draw-button"})},"drawing"),he=e.jsx("div",{className:a.toolbarButton,"data-test":"ptz",children:e.jsx(y,{onClick:g,iconObj:{iconType:_.PTZ_CAM},labelType:y.labelType.TEXT_WITH_ABOVE_ICON,buttonStyle:E,labelText:h?"PTZ On":"PTZ Off",dataTestValue:"ptz-button"})},"ptz"),ie=e.jsx("div",{className:a.toolbarButton,"data-test":"leave",children:e.jsx(y,{onClick:S,iconObj:{iconType:_.LOGOUT},labelType:y.labelType.TEXT_WITH_ABOVE_ICON,buttonStyle:m,labelText:P({description:"Streaming session page - leave button label",defaultMessage:"Leave",id:"streamingSessionPage--buttonToolbar.leaveButtonLabel"}),dataTestValue:"leave-button"})},"leave"),ve=P({description:"Streaming session page - chat button alt text",defaultMessage:"Chat",id:"streamingSessionPage--buttonToolbar.chatButtonLabel__STREAM-3656"}),Ne=e.jsx("div",{className:a.toolbarButton,"data-test":"chat",children:e.jsx(y,{onClick:x,iconObj:{iconType:G?_.FEEDBACK_NEW:_.FEEDBACK,title:ve},labelText:ve,labelType:y.labelType.TEXT_WITH_ABOVE_ICON,buttonStyle:E,dataTestValue:G?"toolbar-chat-button-with-notification":"toolbar-chat-button"})},"chat"),Se=e.jsx("div",{className:a.toolbarButton,"data-test":"invite-menu-button",children:e.jsx(y,{onClick:M,dataTestValue:"invite-button",iconObj:{iconType:_.USER_FOLLOW,title:P({description:"Streaming session page - invite button alt text",defaultMessage:"Invite",id:"streamingSessionPage--buttonToolbar.inviteButtonAltText__STREAM-1872"})},labelText:P({description:"Streaming session page - invite button label",defaultMessage:"Invite",id:"streamingSessionPage--buttonToolbar.inviteButtonLabel__STREAM-1872"}),labelType:y.labelType.TEXT_WITH_ABOVE_ICON,buttonStyle:E})},"invite"),te=e.jsx("div",{className:a.toolbarButton,"data-test":"end",children:e.jsx(y,{onClick:()=>V({title:"End and delete session",description:"Are you sure you want to end and delete the session for all participants?",primaryButtonText:"End and delete",onPrimaryClick:$,primaryButtonStyle:y.buttonStyle.PRIMARY_WARNING}),dataTestValue:"end-button",iconObj:{iconType:_.TRASH_CAN},labelText:"End",labelType:y.labelType.TEXT_WITH_ABOVE_ICON,buttonStyle:m})},"end"),ne=[],ce=[];
1k&&!H&&ce.push(Ne),se?(T&&ne.push(v),ne.push(U),w&&ne.push(he),!A&&O&&ne.push(Se)):(T&&ce.push(v),ce.push(U),w&&ce.push(he),!A&&O&&ce.push(Se)),H?ne.push(ie):ce.push(ie),A&&(ne.push(Se),ne.push(te));const Te=e.jsx("div",{className:a.toolbarButton,children:e.jsx(y,{iconObj:{iconType:_.OVERFLOW_MENU_HORIZONTAL},labelText:P({description:"Streaming session page - more button label",defaultMessage:"More",id:"streamingSessionPage--buttonToolbar.moreButtonLabel"}),labelType:y.labelType.TEXT_WITH_ABOVE_ICON,buttonStyle:E,dataTestValue:"streaming-more-button"})});return e.jsxs("div",{className:a.buttons,children:[e.jsx(wi,{onMyVideoToggle:t,onMyMicrophoneToggle:i,isMicOn:n,isCameraOn:N,formatMessage:P,publisherRef:J,onGetDevicesError:Q,onSetActiveDeviceError:I,onGetActiveDeviceError:L,onSetActiveDevice:ee,userId:u,publishStatus:j,buttonStyle:k?bt.DARK:bt.LIGHT,isVideoFilterSupported:F,onOpenVideoBackgroundModal:X}),ce,e.jsx(Re,{togglerElement:Te,dataTestValue:"streaming-overflow-menu",contentClassName:a.toolbarOverflowMenuContent,position:Re.position.CENTER,shouldHideDetachedMenu:!1,onHide:Y,onShow:Y,children:ne})]})},Ui=({publisherRef:t,className:o,session:i,user:c,onPublishError:g,onMuteForced:S,activeSpeakersObj:n,onAudioLevelUpdated:N,onPublish:d,isMicOn:l,hasPoorConnectivity:w,isCameraOn:h,formatMessage:P,role:M,onPublisherMediaStopped:V,onGetDevicesError:$,onDevicesDetected:O,publishStatus:A,userNameFallback:J,isParticipantHdLiveStreamingEnabled:Q,isVideoFilterSupported:I,onOpenVideoBackgroundModal:L})=>{var Y,ae,T,E,m,v,U,he,ie,ve,Ne,Se;const ee=Et(),se=s.useMemo(()=>{var te;try{return JSON.parse(((te=i.connection)==null?void 0:te.data)||"{}").c_type==="external_client"}catch{return!1}},[(T=(ae=(Y=t.current)==null?void 0:Y.stream)==null?void 0:ae.connection)==null?void 0:T.data]),H=s.useMemo(()=>{var te;if(M)return M===ze.MODERATOR;try{return JSON.parse(((te=i.connection)==null?void 0:te.data)||"{}").role==="moderator"}catch{return!1}},[(v=(m=(E=t.current)==null?void 0:E.stream)==null?void 0:m.connection)==null?void 0:v.data,M]),u=A===Be.FAILED,j=!l&&!u&&e.jsx(pe,{iconType:_.MICROPHONE_OFF}),k=es(c)||J,G=(he=(U=t.current)==null?void 0:U.stream)==null?void 0:he.streamId,x=s.useCallback(rn(N,We.updateThrottle,{leading:!0,trailing:!0}),[]),F=s.useRef(null);return s.useEffect(()=>{var te;if(i){const ne=(()=>{const q=localStorage.getItem(`${c.id}_streamVideoFilter`);return q?JSON.parse(q):void 0})();t.current=de.initPublisher(void 0,{...rt,...Jt,resolution:Q?"1280x720":"640x480",name:k,videoFilter:ne},q=>{q&&g(q)});const ce=()=>{const q=()=>{i.publish(t.current,Z=>{var oe;Z?g(Z):(d(),(oe=t.current)==null||oe.on({audioLevelUpdated:x,muteForced:S,streamCreated:ee,mediaStopped:V}))})};i.connection?q():i.once("sessionConnected",q)},Te=q=>{var Z;(Z=F.current)==null||Z.appendChild(q.element)};(te=t.current)==null||te.on({accessAllowed:ce,videoElementCreated:Te})}return()=>{t.current&&i&&(t.current.off(),i.unpublish(t.current),t.current.destroy())}},[i]),no(te=>{const ne=(ce,Te)=>{if(ce&&$(ce),Te&&Te.length){const q=He(oe=>!!oe.deviceId&&!!oe.label&&oe.kind==="audioInput")(Te),Z=He(oe=>!!oe.deviceId&&!!oe.label&&oe.kind==="videoInput")(Te);q.length&&Z.length&&O()}};(te.type==="devicechange"||te.currentTarget instanceof PermissionStatus&&te.currentTarget.state==="granted")&&A===Be.FAILED&&de.getDevices(ne)},[A]),e.jsxs("div",{className:z(o,a.participantContainer),"data-publisher-connection-id":(Ne=(ve=(ie=t.current)==null?void 0:ie.session)==null?void 0:ve.connection)==null?void 0:Ne.connectionId,"data-test":"publisher-tile",children:[e.jsxs("div",{className:z(a.participant,{[a.isTalking]:G?(Se=n==null?void 0:n[G])==null?void 0:Se.isTalking:!1,[a.shouldHideVideo]:!h}),children:[e.jsx($e,{firstName:c.first_name||J,lastName:c.last_name,email:c.email,avatarImgSrc:c.profile_picture,className:a.avatar}),e.jsx("div",{className:a.publisherVideoContainer,ref:F})]}),I&&e.jsx("div",{className:a.participantMenuContainer,children:e.jsx(Re,{className:a.participantMenu,togglerElement:e.jsx(C,{dataTestValue:"publisher-menu-button",type:C.type.BUTTON,buttonStyle:C.buttonStyle.SECONDARY,className:a.participantMenuToggle,iconObj:{iconType:_.OVERFLOW_MENU_HORIZONTAL,title:P({description:"Menu - toggle menu icon",defaultMessage:"Toggle Menu Icon",i
1d:"menu--toggleMenuIcon__STREAM-5770"})}}),children:e.jsx(Re.Item,{dataTestValue:"video-background-menu-item",onClick:L,children:P({description:"Title for the streaming background selection modal",defaultMessage:"Video background...",id:"streamingSessionPage--buttonToolbar.videoBackgroundLabel__STREAM-9986"})},"video-background-menu-item")})}),e.jsxs(cn,{userName:k,isExternalUser:se,formatMessage:P,isModerator:H,children:[j,u&&e.jsx(pe,{iconType:_.MICROPHONE_DISABLED}),u&&e.jsx(pe,{iconType:_.CAMERA_DISABLED}),w&&e.jsx(pe,{iconType:_.NETWORK})]})]})},Vi=({title:t,procedure_name:o,lead_surgeon:i})=>e.jsxs("div",{className:a.details,"data-test":"case-details",children:[e.jsx("h2",{children:t}),e.jsx("div",{children:o}),e.jsxs("div",{className:a.leadSurgeon,children:[e.jsx($e,{firstName:i==null?void 0:i.first_name,lastName:i==null?void 0:i.last_name,avatarImgSrc:i==null?void 0:i.signed_profile_picture_url,avatarSize:$e.avatarSize.MEDIUM}),e.jsxs("div",{className:a.leadSurgeonDetails,children:[e.jsxs("div",{className:a.leadSurgeonName,children:[i==null?void 0:i.first_name," ",i==null?void 0:i.last_name]}),e.jsx("div",{className:a.leadSurgeonTitle,children:i==null?void 0:i.profession_title})]})]})]}),Hi="StreamingPTZPresets-module__root___l9Z4r",Fi="StreamingPTZPresets-module__shouldShow___DkHwU",Zi="StreamingPTZPresets-module__PTZPreset___VPuNF",Gi="StreamingPTZPresets-module__isDisabled___0boCO",Wi="StreamingPTZPresets-module__isSelected___MX1aJ",zi="StreamingPTZPresets-module__DeletePresetButton___oM7-w",Ve={root:Hi,shouldShow:Fi,PTZPreset:Zi,isDisabled:Gi,isSelected:Wi,DeletePresetButton:zi},$i=4,Ki=({presets:t,selectedPresetId:o,sendSignal:i,shouldShow:c,openSimpleModal:g,isDisabled:S})=>e.jsxs("div",{className:z(Ve.root,{[Ve.shouldShow]:c}),children:[t.length<$i&&e.jsx(C,{isDisabled:S,className:Ve.PTZPreset,iconObj:{iconType:_.PAD_ZOOM_IN},buttonSize:C.buttonSize.LARGE,onMouseDown:()=>i({type:K.PRESETS,action:Ae.CREATE_PRESET}),dataTestValue:"add-preset-button"}),t.map(n=>e.jsx("div",{className:z(Ve.PTZPreset,{[Ve.isDisabled]:S,[Ve.isSelected]:o===n.preset_uuid}),"data-test":`preset-${n.preset_uuid}`,style:{backgroundImage:`url(data:image/jpeg;base64,${n.thumbnail.replace(/\n/g,"")})`},role:"button",tabIndex:0,onClick:()=>{S||i({type:K.PRESETS,action:Ae.SELECT_PRESET,payload:{preset_uuid:n.preset_uuid}})},children:e.jsx(C,{isDisabled:S,className:Ve.DeletePresetButton,iconObj:{iconType:_.CLOSE},buttonSize:C.buttonSize.SMALL,dataTestValue:`delete-preset-${n.preset_uuid}`,onMouseDown:()=>g({title:"Delete this preset?",description:"This will remove this preset for you and all participants.",primaryButtonText:"Delete",onPrimaryClick:()=>i({type:K.PRESETS,action:Ae.DELETE_PRESET,payload:{preset_uuid:n.preset_uuid}}),primaryButtonStyle:y.buttonStyle.PRIMARY_WARNING})})},n.preset_uuid)).reverse()]}),Ji="StreamingPTZControls-module__root___mVOZp",Xi="StreamingPTZControls-module__isDisabled___f8Ust",Yi="StreamingPTZControls-module__PTZControls___n3X9B",qi="StreamingPTZControls-module__flexRow___GpXOi",Qi="StreamingPTZControls-module__flexCol___q3LLR",er="StreamingPTZControls-module__flexCenter___hMIVK",tr="StreamingPTZControls-module__leftControlButtons___EeuIK",nr="StreamingPTZControls-module__controls___KcFLp",or="StreamingPTZControls-module__panTiltButtons___P6Hzf",sr="StreamingPTZControls-module__PTZButton___IVLBj",ar="StreamingPTZControls-module__small___NT0On",ir="StreamingPTZControls-module__lower___VJdtJ",rr="StreamingPTZControls-module__higher___fYnXk",cr="StreamingPTZControls-module__PTZTopButton___hnPNO",lr="StreamingPTZControls-module__PTZBottomButton___-jRQU",dr="StreamingPTZControls-module__PTZZoomButton___17ZKL",ur="StreamingPTZControls-module__rightControlButtons___8yWi3",mr="StreamingPTZControls-module__fullScreenButton___SqS-W",pr="StreamingPTZControls-module__fullScreenIcon___L3pJL",Sr="StreamingPTZControls-module__participantInControl___by24r",_r="StreamingPTZControls-module__visible___SJ9py",gr="StreamingPTZControls-module__iconControl___GOvIU",R={root:Ji,isDisabled:Xi,PTZControls:Yi,flexRow:qi,flexCol:Qi,flexCenter:er,leftControlButtons:tr,controls:nr,panTiltButtons:or,PTZButton:sr,small:ar,lower:ir,higher:rr,PTZTopButton:cr,PTZBottomButton:lr,PTZZoomButton:dr,rightControlButtons:ur,fullScreenButton:mr,fullScreenIcon:pr,participantInControl:Sr,visible:_r,iconControl:gr},hr="StreamingPTZTappingEffect-module__root___wj4ej",Tr="StreamingPTZTappingEffect-module__icon___0sOGV",fr="StreamingPTZTappingEffect-module__circle___O5nmS",br="StreamingPTZTappingEffect-module__animate___2m3Oy",gt={root:hr,icon:Tr,circle:fr,animate:br},Er=({coordinates:t,duration:o=500})=>{const[i,c]=s.useState(),[g,S]=s.useState(!1);s.useEffect(()=>(t&&(S(!0),c(setTimeout(()=>{S(!1),c(void 0)},o))),()=>{i&&clearTimeout(i)}),[t]);const n={"--duration":`${o/1e3}s`};return e.jsxs("div",{className:z(gt.root,{[gt.animate]:g}),style:{...t?{left:`${t.x}px`,top:`${t.y}px`}:{},...n},children:[e.jsx("div",{className:gt.circle}),e.jsx(pe,{className:gt.icon,iconType:"CROSSHAIR"})]})},Pr=500,Ir=({session:t,userId:o,videoSourceId:i,presets:c,selectedPresetId:g,onSendPTZError:S,onEnterFullScreen:n,isFullScreen:N,openSimpleModal:d,participantControlling:l})=>{const[w,h]=s.useState(null),[P,M]=s.useState(!1),[V,$]=s.useState(!1),O=({type:I,action:L,payload:ee={}})=>{L!=null&&L.isStoppable&&M(!0),t.signal({type:ue.PTZ,data:JSON.stringify({type:I,...L?{action:L.name}:{},payload:{user_id:o,camera_id:i,...ee}})},se=>{(L==null?void 0:L.name)===ts.STOP&&M(!1),se&&S&&S(se)})},A=I=>{P&&O({type:I,action:Ae.STOP})},J=I=>{if(I.nativeEvent.target.id==="tappable-area"){const{x:L,y:ee,height:se,width:H}=I.currentTarget.getBoundingClientRect(),{clientX:u,clientY:j}=I,k={x:H/2,y:se/2},G={x:u-L,y:j-ee},x={x:-(k.x-G.x),y:k.y-G.y},F={x:x.x*100/k.x,y:x.y*100/k.y};O({type:K.TAP_TO_COORDINATE,payload:{position_x:Number(F.x.toFixed(2)),position_y:Number(F.y.toFixed(2))}}),h(G)}},Q=I=>{I.stopPropagation(),$(sn)};return e.jsxs("div",{className:z(R.root,{[R.isDisabled]:l==null?void 0:l.isAnotherUser}),onClick:J,role:"button",id:"tappable-area","data-test":"ptz-control
1s-container",children:[e.jsx(Er,{coordinates:w,duration:Pr}),e.jsx(Ki,{isDisabled:l==null?void 0:l.isAnotherUser,shouldShow:V,presets:c||[],selectedPresetId:g,sendSignal:O,openSimpleModal:d}),e.jsxs("div",{className:z(R.PTZControls,R.flexRow),children:[e.jsxs("div",{className:R.leftControlButtons,children:[e.jsxs("div",{className:R.controls,children:[e.jsx(C,{isDisabled:l==null?void 0:l.isAnotherUser,className:R.PTZButton,iconObj:{iconType:V?_.CLOSE:_.LOCATION_STAR},buttonSize:C.buttonSize.LARGE,onMouseDown:Q,dataTestValue:"ptz-preset-button"}),e.jsx(C,{isDisabled:l==null?void 0:l.isAnotherUser,className:R.PTZButton,iconObj:{iconType:_.HOME},buttonSize:C.buttonSize.LARGE,onMouseDown:()=>O({type:K.PAN_TILT,action:Ae.HOME}),dataTestValue:"ptz-home-button"}),e.jsxs("div",{className:R.flexCol,children:[e.jsx(C,{isDisabled:l==null?void 0:l.isAnotherUser,className:z(R.PTZButton,R.PTZZoomButton,R.PTZTopButton),iconObj:{iconType:_.PAD_ZOOM_IN},buttonSize:C.buttonSize.MEDIUM,onMouseDown:()=>O({type:K.ZOOM,action:Ae.TELE_STANDARD}),onMouseUp:()=>A(K.ZOOM),onMouseLeave:()=>A(K.ZOOM),dataTestValue:"ptz-zoom-in-button"}),e.jsx(C,{isDisabled:l==null?void 0:l.isAnotherUser,className:z(R.PTZButton,R.PTZZoomButton,R.PTZBottomButton),iconObj:{iconType:_.PAD_ZOOM_OUT},buttonSize:C.buttonSize.MEDIUM,onMouseDown:()=>O({type:K.ZOOM,action:Ae.WIDE_STANDARD}),onMouseUp:()=>A(K.ZOOM),onMouseLeave:()=>A(K.ZOOM),dataTestValue:"ptz-zoom-out-button"})]}),e.jsxs("div",{className:z(R.flexCol,R.flexCenter,R.panTiltButtons),children:[e.jsx(C,{isDisabled:l==null?void 0:l.isAnotherUser,className:z(R.PTZButton,R.small,R.lower),iconObj:{iconType:_.CHEVRON_UP},buttonSize:C.buttonSize.LARGE,onMouseDown:()=>O({type:K.PAN_TILT,action:Ae.UP}),onMouseUp:()=>A(K.PAN_TILT),onMouseLeave:()=>A(K.PAN_TILT),dataTestValue:"ptz-up-button"}),e.jsxs("div",{className:R.flexRow,children:[e.jsx(C,{isDisabled:l==null?void 0:l.isAnotherUser,className:z(R.PTZButton,R.small),iconObj:{iconType:_.CHEVRON_LEFT},buttonSize:C.buttonSize.LARGE,onMouseDown:()=>O({type:K.PAN_TILT,action:Ae.LEFT}),onMouseUp:()=>A(K.PAN_TILT),onMouseLeave:()=>A(K.PAN_TILT),dataTestValue:"ptz-left-button"}),e.jsx(C,{isDisabled:l==null?void 0:l.isAnotherUser,className:z(R.PTZButton,R.small),iconObj:{iconType:_.CHEVRON_RIGHT},buttonSize:C.buttonSize.LARGE,onMouseDown:()=>O({type:K.PAN_TILT,action:Ae.RIGHT}),onMouseUp:()=>A(K.PAN_TILT),onMouseLeave:()=>A(K.PAN_TILT),dataTestValue:"ptz-right-button"})]}),e.jsx(C,{isDisabled:l==null?void 0:l.isAnotherUser,className:z(R.PTZButton,R.small,R.higher),iconObj:{iconType:_.CHEVRON_DOWN},buttonSize:C.buttonSize.LARGE,onMouseDown:()=>O({type:K.PAN_TILT,action:Ae.DOWN}),onMouseUp:()=>A(K.PAN_TILT),onMouseLeave:()=>A(K.PAN_TILT),dataTestValue:"ptz-down-button"})]})]}),e.jsxs("div",{className:z(R.participantInControl,{[R.moveRight]:V,[R.visible]:l}),"data-test":"participant-in-control",children:[l!=null&&l.isAnotherUser?e.jsx(pe,{className:R.iconControl,iconType:_.INFORMATION}):null,(l==null?void 0:l.name)??"User",l!=null&&l.isAnotherUser?" is using the PTZ":" PTZ (you)"]})]}),!N&&e.jsx("div",{className:R.rightControlButtons,children:e.jsx("button",{onClick:n,className:R.fullScreenButton,"data-test":"enter-fullscreen-button-ptz",children:e.jsx(pe,{className:R.fullScreenIcon,iconType:_.MAXIMIZE})})})]})]})},vr="https://static.touchsurgery.com/static/media/chatPlaceholder.DMv6M-Sa.svg",Nr=({session:t,accountMembers:o,formatMessage:i,onNewChatReceived:c,selectedTab:g,isFullScreen:S,user:n,onSendChatFailed:N,hasNetworkConnection:d,onDeleteChatFailed:l,userNames:w,onUserTap:h})=>{const[P,M]=s.useState([]),[V,$]=s.useState(!1),[O,A]=s.useState(!1),[J,Q]=s.useState(!1);s.useEffect(()=>{const u=x=>{const F=Ee(it("data"),we(JSON.parse))(x);if(F&&new Qt().validate(ns,F)){const X=Ee(Fs({userNames:w,event:x,user:n,accountMembers:o}),nn(on("text"),la))(F);M(at(X)),c()}},j=x=>{var X;const F=Ee(it("data"),we(JSON.parse))(x);if(F){const Y=JSON.parse(((X=x.from)==null?void 0:X.data)??"{}").u_uuid;M(Zs(F.uuid,Y))}},k=`signal:${ue.CHAT_SEND}`,G=`signal:${ue.CHAT_DELETE}`;return t.on(k,u),t.on(G,j),()=>{t.off(k,u),t.off(G,j)}},[t,o,w,g,S]);const I=s.useRef(null),L=()=>{var j;const u=(j=I.current)==null?void 0:j.lastChild;u==null||u.scrollIntoView({block:"end",behavior:"smooth"})},ee=oo(P)||[];s.useEffect(()=>{var j;((j=I.current)==null?void 0:j.lastChild)&&P.length>ee.length&&(V?A(!0):L())},[P,ee,V]),s.useEffect(()=>{var G;const k=_a(()=>
1{if(I.current){const{scrollTop:x,clientHeight:F,scrollHeight:X}=I.current,ae=F+x+5>=X;$(!ae),Q(x>0),ae&&A(!1)}},300);return(G=I.current)==null||G.addEventListener("scroll",k),()=>{var x;return(x=I.current)==null?void 0:x.removeEventListener("scroll",k)}},[P]);const se=({text:u})=>{t.signal({data:JSON.stringify({uuid:ao(),sent_at:Math.round(Date.now()/1e3),text:u}),type:ue.CHAT_SEND},j=>{j&&N()}),h("live_stream_send_chat","send")},H=u=>{t.signal({data:JSON.stringify({uuid:u}),type:ue.CHAT_DELETE},j=>{j&&l()})};return e.jsxs(e.Fragment,{children:[P!=null&&P.length?e.jsxs("div",{className:a.chatListContainer,children:[e.jsx("div",{className:a.chatList,ref:I,children:P.map(u=>e.jsx(jn,{text:u.text,dateCreated:new Date(u.sent_at*1e3),uuid:u.uuid,author:u.sender,style:jn.styles.CHAT,dataTestValue:"streaming-chat",isDeleteBtnDisplayed:u.sender.uuid===n.id&&d,onDeleteClick:()=>u.sender.uuid===n.id&&H(u.uuid)},u.uuid))}),e.jsx("div",{className:a.latestMessagesButtonContainer,children:O&&e.jsx(y,{dataTestValue:"latest-message-btn",buttonStyle:y.buttonStyle.PRIMARY,buttonSize:y.buttonSize.SMALL,iconObj:{iconType:_.ARROW_DOWN},labelText:i({description:"Label for button allowing user to scroll down to latest chat messages",defaultMessage:"Latest messages",id:"streamingSessionPage--latestMessagesButton__STREAM-3656"}),className:a.latestMessagesButton,labelType:y.labelType.TEXT_WITH_RIGHT_ICON,onClick:L})}),J&&e.jsx("hr",{className:a.topScrollIndicator})]}):e.jsxs("div",{className:a.chatListPlaceholderContainer,"data-test":"empty-chat-list-placeholder",children:[e.jsx("img",{src:vr,alt:i({description:"Alt text for chat placeholder image when there are no chats",defaultMessage:"Two speech bubbles",id:"streamingSessionPage--chatPlaceholderImgAltText__STREAM-3656"})}),e.jsx("h3",{children:i({description:"Chat placeholder when there are no chats - header",defaultMessage:"No messages",id:"streamingSessionPage--chatPlaceholder__STREAM-3656"})})]}),e.jsx("div",{className:a.chatInputContainer,"data-test":"chat-input-container",children:e.jsx(Bn,{onSubmit:se,style:Bn.styles.CHAT,isSubmitDisabled:!d,shouldSubmitOnEnterKey:!0})})]})},Ar=({connection:t,className:o,shouldDisplayParticipant:i,role:c,accountMembers:g,formatMessage:S,userNameFallback:n,userName:N})=>{const d=s.useMemo(()=>{try{return JSON.parse(t.data).u_uuid}catch{return null}},[t.data]),l=s.useMemo(()=>{try{return JSON.parse(t.data).c_type==="external_client"}catch{return!1}},[t.data]),w=s.useMemo(()=>{if(Yt({connection:t}))return!1;if(c)return c===ze.MODERATOR;try{return JSON.parse(t.data).role==="moderator"}catch{return!1}},[t.data,c]),h=s.useMemo(()=>we(st(eo(d,"uuid")))(g),[g,d]),P=an(h)||N||n;return e.jsxs("div",{"data-test":i?"visible-connection-tile":"hidden-connection-tile",className:z(o,a.participantContainer,{[a.hideParticipant]:!i}),children:[e.jsx("div",{className:a.participant,children:e.jsx($e,{firstName:(h==null?void 0:h.first_name)||P,lastName:h==null?void 0:h.last_name,email:h==null?void 0:h.email,avatarImgSrc:h==null?void 0:h.profile_picture,className:a.avatar})}),e.jsxs(cn,{userName:P,isExternalUser:l,formatMessage:S,isModerator:w,children:[e.jsx(pe,{iconType:_.MICROPHONE_DISABLED}),e.jsx(pe,{iconType:_.CAMERA_DISABLED})]})]})},Cr=({intl:{formatMessage:t},session:o,streams:i,user:c,redirectTo:g,redirectToHome:S,addAlert:n,clearAlert:N,procedureDetails:d,screenSize:l,openInviteModal:w,openSimpleModal:h,openVideoBackgroundModal:P,deleteStreamroom:M,accountMembers:V,onPublishError:$,hasCreateAndUpdateRoomAbility:O=!1,onPublish:A,isPublishing:J=!1,publishStatus:Q,logCustomError:I,initialJoinedUsers:L,roomUuid:ee,trackIntercomEvent:se,onSessionConnected:H,onSessionDisconnected:u,isTouchScreenDevice:j,isMutingTabletStreamBetaEnabled:k,connections:G,onUserTap:x,onDrawingSent:F,isParticipantHdLiveStreamingEnabled:X})=>{var On;const[Y,ae]=s.useState(Jt.publishVideo),[T,E]=s.useState(!1),[m,v]=s.useState(!1),[U,he]=s.useState(!1),[ie,ve]=s.useState(!1),[Ne,Se]=s.useState([]),[te,ne]=s.useState(null),[ce,Te]=s.useState(),[q,Z]=s.useState(!1),[oe,It]=s.useState(!1),[ye,Pe]=s.useState(),[Ie,vt]=s.useState(1),[_e,lo]=s.useState(!1),[Ke,ln]=s.useState({}),[dn,uo]=s.useState({}),[ke,Nt]=s.useState(Ce.PARTICIPANTS),[un,At]=s.useState(!1),[mo,Ct]=s.useState(!0),[mn,po]=s.useState(!1),[ct,pn]=s.useState(!0),[Ot,Mt]=s.useState(!1),Sn=s.useMemo(()=>de.hasMediaProcessorSupport(),[]),Je=s.useRef(Jt.publishAudio),Fe=s.useRef([]),Ze=s.useRef({}),xt=s.useRef({}),W=s.useRef(null),Rt=s.useRef(null),Me=Et(),_n=oo(o==null?void 0:o.sessionId);s.useEffect(()=>()=>{var r,p;o!=null&&o.sessionId&&_n===o.sessionId&&se("left_stream",{session_id:o.sessionId,room_uuid:ee,stream_id:(p=(r=W.current)==null?void 0:r.stream)==null?void 0:p.streamId})},[_n,o.sessionId]),s.useEffect(()=>{if(L){const r=L.reduce((p,f)=>(p[f.user_uuid]=f.role,p),{});ln(r)}},[L]);const yt=r=>{var f,D;const p=(f=W.current)==null?void 0:f.getAudioSource();p&&(p.enabled=!1,Je.current=p.enabled,Me(),(D=W.current)!=null&&D.publishAudio&&W.current.publishAudio(p.enabled),r()
1)},So=r=>{r.active!==!1&&(r.target===o?yt(()=>n(b.forceMutedAll)):r.target===W.current&&yt(()=>n(b.forceMuted)))},Dt=s.useCallback(rn(So,is,{leading:!0,trailing:!1}),[]),_o=r=>{n({alertType:zt.messageAlertType.ERROR,alertMessage:"Could not communicate to the PTZ Camera, please try again."}),I("Streaming: Error communicating to PTZ Camera",{err:r})};s.useEffect(()=>{const r=({changedProperty:le,newValue:me,stream:Gt})=>{var Dn,Ln;const yn=Gt.streamId===((Ln=(Dn=W.current)==null?void 0:Dn.stream)==null?void 0:Ln.streamId);le==="hasAudio"?yn||(me?Fe.current=da([Gt.streamId])(Fe.current):Fe.current=ua([Gt.streamId])(Fe.current),Me()):le==="hasVideo"&&(yn||Me())},p=()=>{n(b.forceDisconnected),g("/mysurgeries",{isForceDisconnected:!0}),u(Xt.SESSION_ENDED)},f=({from:le})=>{le===null&&p()},D=({reason:le})=>{le==="forceDisconnected"?p():le==="networkDisconnected"&&(Ct(!1),N(b.attemptingToReconnect),n(b.reconnectionFailed),u(Xt.DISCONNECT))},re=le=>{const me=JSON.parse(le.data);new Qt().validate(ms,me)&&(ln(tn(me.user_uuid,me.role)),me.user_uuid===c.id&&(me.role===ze.MODERATOR?n(b.isNowAModerator):me.role===ze.PARTICIPANT&&n(b.isNoLongerAModerator)))},fe=le=>{if(le.from===null){const me=JSON.parse(le.data);new Qt().validate(ps,me)&&uo(me)}},be=()=>{n(b.attemptingToReconnect),Ct(!1)},B=()=>{N(b.attemptingToReconnect),n(b.successfullyReconnected),Ct(!0)},ge=()=>{o.signal({type:ue.PTZ,data:JSON.stringify({type:K.STATUS_REQUEST})},le=>{le&&I("Streaming: sent a `status_request` signal to check if PTZ-enabled",{error:le})})},Ge=()=>{Me(),H(),ge()},qe=le=>{const me=Ee(it("data"),we(JSON.parse))(le);me!=null&&me.status&&le.from===null&&(me.status===pt.STARTED?Mt(!0):[pt.FAILED,pt.PAUSED,pt.STOPPED].includes(me.status)&&Mt(!1))},Mn=()=>{yt(()=>n(b.forceMuted))},xn=`signal:${ue.ARCHIVING}`,Rn=`signal:${ue.MUTE_STREAM}`;return o&&(o.once("sessionConnected",Ge),o.once("sessionDisconnected",D),o.on("sessionReconnecting",be),o.on("sessionReconnected",B),o.on("muteForced",Dt),o.on("streamPropertyChanged",r),o.on(xn,qe),o.on(Rn,Mn),o.on(`signal:${ue.ROLE_CHANGE}`,re),o.on(`signal:${ue.PARTICIPANT_LIST}`,fe),o.on(`signal:${ue.FORCE_DISCONNECT}`,f)),()=>{o&&(o.off("sessionConnected",Ge),o.off("sessionDisconnected",D),o.off("sessionReconnecting",be),o.off("sessionReconnected",B),o.off("muteForced",Dt),o.off("streamPropertyChanged",r),o.off(xn,qe),o.off(Rn,Mn),o.off(`signal:${ue.ROLE_CHANGE}`,re),o.off(`signal:${ue.FORCE_DISCONNECT}`,f))}},[o]),s.useEffect(()=>{const r=`signal:${ue.PTZ}`,p=f=>{var re,fe,be;const D=Ee(it("data"),we(JSON.parse))(f);if((D==null?void 0:D.type)===K.STATUS&&D.payload&&(he(!!((re=D.payload)!=null&&re.is_ptz_enabled)),"presets"in D.payload&&(Se(D.payload.presets??[]),ne(D.payload.selected_preset_uuid??null)),"ptz_controller_connection_id"in D.payload)){let B;if(D.payload.ptz_controller_connection_id===((fe=o.connection)==null?void 0:fe.connectionId))B={u_uuid:c.id,name:`${c.first_name} ${c.last_name}`,isAnotherUser:!1};else{const ge=i.find(Ge=>{var qe;return Ge.connection.connectionId===((qe=D.payload)==null?void 0:qe.ptz_controller_connection_id)});ge&&(B={u_uuid:JSON.parse(((be=ge==null?void 0:ge.connection)==null?void 0:be.data)??"{}").u_uuid,name:ge.name,isAnotherUser:!0})}Te(B)}};return o&&o.on(r,p),()=>{o&&o.off(r,p)}},[o,i]),s.useEffect(()=>{Fe.current=Gs(i)||[],Me()},[i]);const lt=s.useRef(0),Lt=s.useRef(!1),jt=s.useRef(!1),Bt=()=>{jt.current=!1,Lt.current=!1,lt.current=0,N(b.unmutedButNoAudioError)};s.useEffect(()=>{var p;const r=()=>Bt();return Q===Be.PUBLISHED&&((p=navigator==null?void 0:navigator.mediaDevices)==null||p.addEventListener("devicechange",r)),()=>{var f;return(f=navigator==null?void 0:navigator.mediaDevices)==null?void 0:f.removeEventListener("devicechange",r)}},[Q]);const gn=r=>{var D,re,fe,be;const p=(D=r.target)==null?void 0:D.streamId,f=p&&p===((fe=(re=W.current)==null?void 0:re.stream)==null?void 0:fe.streamId);if(f&&!jt.current&&Je.current){if(r.audioLevel>0)Bt(),jt.current=!0;else if(!Lt.current&&(lt.current+=1,lt.current>1e3/We.updateThrottle)){n(b.unmutedButNoAudioError),Lt.current=!0,lt.current=0;const B=(be=W.current)==null?void 0:be.getAudioSource();I("Streaming: No audio detected when user is not muted",{audioSource:{enabled:B==null?void 0:B.enabled,label:B==null?void 0:B.label,muted:B==null?void 0:B.muted,readyState:B==null?void 0:B.readyState}})}}if(p){const B=Ze.current[p],ge=Date.now();r.audioLevel>We.audioLevelThreshold?B?B.isTalking?B.timestamp=ge:ge-B.timestamp>We.startThreshold&&(B.isTalking=!0,Me(),!f&&Xs(Ze.current)<6&&Ss(`stream-${p}`).then(Ge=>{Ge===!1&&(xt.current=ma([p,"movedIntoViewportAt"],Date.now())(xt.current),Me())})):Ze.current[p]={timestamp:ge,isTalking:!1}
1:B&&ge-B.timestamp>We.dropoffThreshold&&(delete Ze.current[p],Me())}},wt=s.useMemo(()=>b.archivingStarted(`${d.lead_surgeon.first_name} ${d.lead_surgeon.last_name}`),[d.lead_surgeon.first_name,d.lead_surgeon.last_name]),go=s.useCallback(ro(()=>n(wt)),[o.sessionId]);s.useEffect(()=>{Ot?go():N(wt)},[Ot,o.sessionId]),s.useEffect(()=>()=>{N(wt)},[]),s.useEffect(()=>{rs(d==null?void 0:d.is_being_archived)&&Mt(d.is_being_archived)},[d==null?void 0:d.is_being_archived]);const hn=r=>{n(b.subscribeError),I("Streaming: Could not subscribe to feed",{err:r})},ho=r=>{n(b.ds1StreamSubscribeError),I("Streaming: Could not subscribe to DS1 feed",{err:r})},To=()=>n(b.sendDrawingError),fo=()=>n(b.drawingValidationError),bo=()=>n(b.sendChatFailed),Eo=()=>n(b.deleteChatFailed),Tn=r=>{n(b.getDevicesError),I("Streaming: Could not get audio or video devices",{err:r})},Po=(r,p)=>{n(b.setActiveDeviceError),I("Streaming: Could not set audio or video device",{err:r,deviceType:p})},Io=(r,p)=>{n(b.getActiveDeviceError),I("Streaming: Could not get active audio or video device",{err:r,deviceType:p})},vo=r=>{n(b.deviceUpdated(r)),r===xe.MICROPHONE&&Bt()},No=()=>n(b.onTooManyDrawingsOnDraw),Ao=()=>n(b.onTooManyDrawingsOnDrawingReceived),Co=r=>{I("Streaming: Could not share screen",{err:r}),E(!1);const p=[Qe.OT_USER_MEDIA_ACCESS_DENIED,Qe.OT_NO_DEVICES_FOUND];r!=null&&r.name&&p.includes(r.name)?n(b.screenShareAccessDeniedError):n(b.screenShareError)},fn=()=>{var p,f;
1const r=(p=W.current)==null?void 0:p.getVideoSource();r&&(r.enabled=!Y,ae(r.enabled),(f=W.current)!=null&&f.publishVideo&&W.current.publishVideo(r.enabled),x("live_stream_toggle_camera_button",r.enabled?"camera_off":"camera_on"))},Oo=async r=>{if(W.current)try{await W.current.applyVideoFilter(r),localStorage.setItem(`${c.id}_streamVideoFilter`,JSON.stringify(r))}catch{n(b.videoBackgroundError)}},Mo=async()=>{if(W.current)try{await W.current.clearVideoFilter(),localStorage.removeItem(`${c.id}_streamVideoFilter`)}catch{n(b.videoBackgroundError)}},bn=r=>{r?Oo(r):Mo(),Y||h({title:t({description:"Modal title to confirm whether to turn on camera after selecting a video background",defaultMessage:"Turn on camera?",id:"streamingSessionPage--turnOnCameraModalTitle__STREAM-9986"}),primaryButtonText:t({description:"Button to confirm turn on camera after selecting a video background",defaultMessage:"Yes",id:"streamingSessionPage--turnOnCameraModalConfirm__STREAM-9986"}),secondaryButtonText:t({description:"Button to deny turn on camera after selecting a video background",defaultMessage:"Not yet",id:"streamingSessionPage--turnOnCameraModalDeny__STREAM-9986"}),onPrimaryClick:fn,dataTestValue:"turn-camera-on-modal",style:Un.style.CONFIRM,size:Un.size.XSMALL})},xo=r=>{var p;((p=r.track)==null?void 0:p.kind)==="video"&&de.getDevices((f,D)=>{var be;if(f||!D||!D.length){n(b.mediaStoppedError);return}const re=(be=W.current)==null?void 0:be.getVideoSource();if(!re){n(b.mediaStoppedError);return}re.enabled=!1;const fe=D.find(B=>B.kind==="videoInput");if(!fe||!W.current){n(b.mediaStoppedError);return}W.current.setVideoSource(fe.deviceId).then(()=>n(b.mediaStoppedVideoDeviceUpdated)).catch(()=>n(b.mediaStoppedError))})},En=()=>{var p,f;
1const r=(p=W.current)==null?void 0:p.getAudioSource();r&&(r.enabled=!r.enabled,Je.current=r.enabled,Me(),(f=W.current)!=null&&f.publishAudio&&W.current.publishAudio(r.enabled),x("live_stream_toggle_mic_button",r.enabled?"mic_off":"mic_on"))},Ro=r=>{I("Streaming: Subscriber audio blocked by browser",{event:r}),n(b.subscriberAudioBlocked)},yo=r=>{I("Streaming: (info) Subscriber audio unblocked by user",{event:r}),N(b.subscriberAudioBlocked)},Do=r=>{I("Streaming: Subscriber unblock audio failed",{err:r})},Lo=()=>n(b.devicesDetected),jo=r=>{$(r),(r==null?void 0:r.name)===Qe.OT_USER_MEDIA_ACCESS_DENIED?n(b.checkCameraAndMicPermissionsAndRefresh):(r==null?void 0:r.name)===Qe.OT_NO_DEVICES_FOUND?n(b.connectCameraAndMicAndRefresh):(r==null?void 0:r.name)===Qe.OT_HARDWARE_UNAVAILABLE?n(b.devicesUnavailable):n(b.cannotPublishStream)},kt=s.useRef({packetsLost:0,totalPackets:0}),Pn=s.useRef(void 0),In=s.useRef(!1),Bo=()=>{A&&A(),Pn.current=setInterval(()=>{W.current&&W.current.getStats((r,p)=>{if(p){const{stats:{audio:f,video:D}}=p[0],re=f.packetsLost+D.packetsLost,fe=re+f.packetsSent+D.packetsSent,be=re-kt.current.packetsLost,B=fe-kt.current.totalPackets;kt.current={packetsLost:re,totalPackets:fe};const ge=be/B;Z(ge>St.droppedPacketsThreshold),!In.current&&ge>St.droppedPacketsExtremeThreshold&&(In.current=!0,I(`Streaming: Publisher packet loss over ${St.droppedPacketsExtremeThreshold*100}%`,{packetLoss:ge}))}})},St.checkInterval)};s.useEffect(()=>{q&&!oe&&(n(b.poorConnectivityError),It(!0))},[q,oe]);const Xe=Ws(i),De=zs(i),wo=()=>{T?(E(!1),x("live_stream_share_screen_button","sharing_on")):De?n({alertType:zt.messageAlertType.GENERAL,alertMessage:_s.ERROR.STREAMING_SCREEN_SHARE_USER_ALREADY_SHARING_ERROR(De.name||t({description:"Streaming session page - user name fallback",defaultMessage:"A user",id:"streamingSessionPage--userNameFallback"}))}):(ye&&Pe(null),E(!0),x("live_stream_share_screen_button","sharing_off"))};s.useEffect(()=>{const r=({repeat:f,code:D,target:re})=>{!f&&D==="Space"&&!io(re.tagName)(["BUTTON","INPUT","TEXTAREA"])&&En()},p=()=>lo(!!Gn());return window.addEventListener("keydown",r),window.addEventListener("keyup",r),js(p),()=>{window.removeEventListener("keydown",r),window.removeEventListener("keyup",r),clearInterval(Pn.current),Bs(p),N(b.unmutedButNoAudioError),N(b.subscriberAudioBlocked)}},[]),s.useEffect(()=>{j&&(l===Oe.X_SMALL||l===Oe.SMALL)&&!mn&&(n(b.downloadTheApp),po(!0))},[l,mn,j]),s.useEffect(()=>{_e&&Nt(Ce.PARTICIPANTS)},[_e]),s.useEffect(()=>{l===Oe.X_SMALL&&Gn()&&Wn()},[l]);const{SHOWING_PINNED_PARTICIPANT_STREAM:ko,SHOWING_ANOTHER_USERS_SCREENSHARE:vn,SHOWING_MY_SCREENSHARE:Uo,SHOWING_LAP_FEED:Ye,SHOWING_PTZ_FEED:Ut,NO_STREAM:Vt}=to,Le=i&&i.find(r=>r.streamId===ye),Nn=!!Le&&Le.streamId===(Xe==null?void 0:Xe.streamId),An=!!Le&&Le.streamId===(De==null?void 0:De.streamId),je=Le&&U&&qt(Le)?Ut:Le&&!Nn&&!An?ko:Nn?Ye:An||De?vn:T?Uo:Xe?Ye:Vt,Vo=()=>{[Ye,Vt].includes(je)?v(sn):n(b.cannotDrawUnlessViewingDs1Feed)},Ho=()=>{Ut===je?ve(sn):n({alertType:zt.messageAlertType.INFO,alertMessage:"You can only do PTZ commands on a PTZ camera feed."})},Ht=ie&&je===Ut;s.useEffect(()=>{je!==Ye&&v(!1)},[je]);const Fo=r=>{T?n(b.cannotPinWhileScreenSharing):(Pe(r),x("live_stream_pin_participant_button","pin"))},Zo=()=>Pe(null),Ft=s.useMemo(()=>G.filter(r=>{var p;return!i.find(f=>f.connection.connectionId===r.connectionId)&&r.connectionId!==((p=o.connection)==null?void 0:p.connectionId)}),[i,G,o]),dt=$s({mainStreamState:je,speakersMovedIntoViewportObj:xt.current,userPinnedStreamId:ye})(i),Zt=s.useMemo(()=>[Oe.LARGE,Oe.X_LARGE].includes(l)&&!_e?cs:ls,[l,_e]),Go=dt.some(r=>r.streamId===ye),Ue=Math.ceil((dt.length+Ft.length-Number(Go))/Zt)||1;s.useEffect(()=>{Ie>Ue&&vt(Ue)},[Ue,Ie]);const Wo=()=>{Ie>1&&vt(pa)},zo=()=>{Ie<Ue&&vt(Sa)},$o=()=>{(ke!==Ce.CHAT||_e)&&At(!0)},Ko=ws(()=>{At(!1),Nt(Ce.CHAT)});s.useEffect(()=>{ke===Ce.CHAT&&At(!1)},[ke]);const ut=t({description:"User name placeholder when a name is not supplied",defaultMessage:"User",id:"streamingSessionPage--userLabel__STREAM-4916"}),Cn={session:o,onSubscribeError:hn,onAudioLevelUpdated:gn,mutedParticipants:Fe.current,activeSpeakersObj:Ze.current,onPinParticipant:Fo,onUnpinParticipant:Zo,userPinnedStreamId:ye,accountMembers:V,formatMessage:t,onSubscriberAudioBlocked:Ro,onSubscriberAudioUnblocked:yo,onSubscriberUnblockAudioFailed:Do,isMutingTabletStreamBetaEnabled:k,userNameFallback:ut,onUserTap:x},{current:Jo}=s.useRef(ht[Math.floor(Math.random()*ht.length)]);if(o){const r=e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:a.participantList,"data-test":"participant-list",children:[e.jsx(Ui,{publisherRef
1:W,session:o,user:c,onPublishError:jo,activeSpeakersObj:Ze.current,onAudioLevelUpdated:gn,onPublish:Bo,onMuteForced:Dt,isMicOn:Je.current,hasPoorConnectivity:q,isCameraOn:Y,formatMessage:t,role:Ke[c.id],onPublisherMediaStopped:xo,onGetDevicesError:Tn,onDevicesDetected:Lo,publishStatus:Q,userNameFallback:ut,isParticipantHdLiveStreamingEnabled:X,isVideoFilterSupported:Sn,onOpenVideoBackgroundModal:()=>P(bn)}),Kn(ft)((f,D)=>{var re;return e.jsx(co,{stream:f,shouldDisplayParticipant:f.streamId!==ye&&$n({userIndex:D,currentPage:Ie,participantPaginationLimit:Zt}),role:Ke[JSON.parse(((re=f.connection)==null?void 0:re.data)||"{}").u_uuid],...Cn},f.streamId)})(dt),Kn(ft)((f,D)=>e.jsx(Ar,{role:Ke[JSON.parse((f==null?void 0:f.data)||"{}").u_uuid],connection:f,accountMembers:V,formatMessage:t,userName:dn[JSON.parse((f==null?void 0:f.data)||"{}").u_uuid],userNameFallback:ut,shouldDisplayParticipant:$n({userIndex:D+dt.length,currentPage:Ie,participantPaginationLimit:Zt})},f.connectionId))(Ft)]}),Ue>1&&e.jsxs("div",{"data-test":"pagination-buttons",className:a.paginationButtons,children:[e.jsx(C,{onClick:Wo,iconObj:{iconType:_.ARROW_CIRCLE_LEFT},isDisabled:Ie===1,buttonSize:C.buttonSize.MEDIUM}),e.jsxs("span",{children:[Ie," / ",Ue]}),e.jsx(C,{onClick:zo,iconObj:{iconType:_.ARROW_CIRCLE_RIGHT},isDisabled:Ie===Ue,buttonSize:C.buttonSize.MEDIUM})]})]}),p=`${t({description:"Streaming session page - participants tab title",defaultMessage:"Participants",id:"streamingSessionPage--participantsTabTitle"})} (${Ks(i)+Ft.length})`;return e.jsxs("div",{className:a.root,"data-test":"streaming-root","data-is-full-screen":_e,ref:Rt,children:[e.jsx(ds,{fluid:!0,className:a.grid,children:e.jsxs(us,{className:a.row,children:[e.jsxs(wn,{xs:12,sm:_e?ct?10:12:8,className:a.firstPanel,children:[e.jsxs("div",{className:a.mainStreamContainer,"data-test":"main-stream-container",children:[e.jsx(xi,{formatMessage:t,mainStreamState:je,session:o,onSubscribeError:hn,onDs1StreamSubscribeError:ho,onScreenShareError:Co,ds1Feed:Xe,participantScreenShare:De,pinnedStream:Le,userName:an(c)||ut,onShareScreenMediaStopped:()=>E(!1),participantProps:Cn,updatedRoles:Ke,shouldHideTileName:!!ce}),Ot?e.jsxs("div",{className:a.archivingIndicator,"data-test":"archiving-indicator",children:[e.jsx("span",{className:a.archivingIcon,children:"⬤"}),e.jsx("span",{className:a.archivingText,children:t({description:"Streaming session page - indicator to show that the session is being recorded",defaultMessage:"Recording",id:"streamingSessionPage--archivingIndicator__STREAM-1800"})})]}):null,[Ye,Vt].includes(je)?e.jsx(Di,{session:o,isDrawingEnabled:m,onSendDrawingError:To,onDrawingValidationFailed:fo,myDrawingColor:Jo,onTooManyDrawingsOnDraw:No,onTooManyDrawingsOnDrawingReceived:Ao,onDrawingSent:F}):null,!m&&!Ht&&l!==Oe.X_SMALL&&!_e&&e.jsx("div",{className:a.mainStreamButtonBar,children:e.jsx("button",{onClick:()=>zn(Rt.current),className:a.fullScreenButton,"data-test":"enter-fullscreen-button",children:e.jsx(pe,{iconType:_.MAXIMIZE})})}),Ht&&U&&e.jsx(Ir,{onSendPTZError:_o,session:o,userId:c.id,presets:Ne,selectedPresetId:te,participantControlling:ce,videoSourceId:(On=W.current)==null?void 0:On.getVideoSource().deviceId,onEnterFullScreen:()=>zn(Rt.current),isFullScreen:_e,openSimpleModal:h})]}),e.jsxs("div",{className:a.underMainVideo,children:[e.jsx(ki,{publisherRef:W,onMyMicrophoneToggle:En,onMyVideoToggle:fn,onShareMyScreenToggle:wo,onLeave:S,onIsAbleToDrawToggle:Vo,onShouldShowPTZControlsToggle:Ho,onGetDevicesError:Tn,onSetActiveDeviceError:Po,onGetActiveDeviceError:Io,onSetActiveDevice:vo,isMicOn:Je.current,isCameraOn:Y,shouldShareScreen:T,isDrawingEnabled:m,shouldShowPTZToggle:U,shouldShowPTZControls:Ht,formatMessage:t,openInviteModal:w,openSimpleModal:h,deleteStreamroom:M,shouldShowModeratorControls:Ke[c.id]===ze.MODERATOR,isInternalStreamOwner:O&&c.id===d.lead_surgeon.uuid,isMediumOrSmallerSizedScreen:[Oe.X_SMALL,Oe.SMALL,Oe.MEDIUM].includes(l),isXsSizedScreen:l===Oe.X_SMALL,publishStatus:Q,userId:c.id,shouldShowNewChatsIndicator:un,isFullScreen:_e,onToolbarChatButtonClick:Ko,participantScreenShare:De,isVideoFilterSupported:Sn,onOpenVideoBackgroun
1dModal:()=>P(bn)}),e.jsx(Vi,{...d})]})]}),e.jsxs(wn,{xs:12,sm:_e?ct?2:0:4,className:z(a.secondPanel,{[a.hidden]:_e&&!ct}),dataTestValue:"second-panel",children:[_e?e.jsxs("div",{className:a.fullScreenSecondPanelHeader,children:[e.jsxs("span",{children:[e.jsx(pe,{iconType:_.GROUPS}),e.jsx("span",{children:p})]}),e.jsx(C,{onClick:()=>pn(!1),iconObj:{iconType:_.CLOSE},buttonSize:C.buttonSize.SMALL,buttonStyle:C.buttonStyle.PRIMARY_DARK_BACKGROUND,dataTestValue:"hide-fullscreen-participant-list-button"})]}):e.jsx(Js,{tabs:[{name:p,id:Ce.PARTICIPANTS,dataTestValue:"participants-tab"},{name:t({description:"Tab title for chat section on live stream page",defaultMessage:"Chat",id:"streamingSessionPage--chatTabTitle__STREAM-3656"}),id:Ce.CHAT,className:z({[a.hasNewChats]:un}),dataTestValue:"chat-tab"}],activeTabId:ke,onTabClick:f=>{Nt(f),f===Ce.CHAT?x("live_stream_open_chat_button","chat"):x("live_stream_close_chat_button","participants")},className:a.tabs,hasSeparator:!1}),e.jsx("div",{className:z(a.participantListContainer,{[a.isVisible]:ke===Ce.PARTICIPANTS}),"data-test":"participant-container",children:r}),e.jsx("div",{className:z(a.chatContainer,{[a.isVisible]:ke===Ce.CHAT}),"data-test":"chat-container",children:e.jsx(Nr,{session:o,accountMembers:V,formatMessage:t,onNewChatReceived:$o,selectedTab:ke,isFullScreen:_e,user:c,onSendChatFailed:bo,hasNetworkConnection:mo,onDeleteChatFailed:Eo,userNames:dn,onUserTap:x})})]})]})}),_e&&!ct&&e.jsx("div",{className:a.showParticipantsInFullScreenButton,children:e.jsx(kn,{message:t({description:"Tooltip for button that shows the participant list when clicked",defaultMessage:"Open Participants",id:"streamingSessionPage--openParticipantsTooltip__STREAM-5348"}),arrowPoint:kn.arrowPoint.RIGHT,popupWidth:"8rem",children:e.jsx(C,{onClick:()=>pn(!0),iconObj:{iconType:_.CHEVRON_LEFT},buttonSize:C.buttonSize.SMALL,buttonStyle:C.buttonStyle.PRIMARY_DARK_BACKGROUND,dataTestValue:"show-fullscreen-participant-list-button"})})}),_e&&e.jsx("button",{onClick:Wn,"data-test":"exit-fullscreen-button",className:z(a.fullScreenButton,a.fullScreenExitButton),children:e.jsx(pe,{iconType:_.MINIMIZE})}),J&&e.jsx("div",{className:a.loadingOverlay,children:e.jsx(so,{})})]})}return null},Or=Ee(os,ss({parentName:"Touch Surgery",resourceName:"your streaming session"}),as)(Qn(Cr)),Mr=t=>{var F,X,Y,ae;const{actions:o,match:{params:{roomUuid:i}},streamingDetails:c,isLoading:g,error:S,user:n,intl:{formatMessage:N},accountMembers:d,authSessionExpiryTimestamp:l,isMemberOfAccount:w,hasCreateAndUpdateRoomAbility:h,isTouchScreenDevice:P,isMutingTabletStreamBetaEnabled:M,isParticipantHdLiveStreamingEnabled:V}=t,[$,O]=s.useState([]),[A,J]=s.useState([]),[Q,I]=s.useState(null),[L,ee]=s.useState(Be.PENDING),se=(F=c==null?void 0:c.credentials)==null?void 0:F.sessionId;s.useEffect(()=>(i&&o.joinStreamroomByRoomUuid(i),()=>{i&&o.clearStreamingDetailsByRoomUuid(i)}),[i]);const H={roomUuid:i,accountUuid:(X=c==null?void 0:c.procedureDetails)==null?void 0:X.account_uuid,userUuid:n==null?void 0:n.id,sessionId:se},u=s.useMemo(()=>{if(c!=null&&c.credentials)try{const T=de.initSession(c.credentials.apiKey,c.credentials.sessionId);return T.connect(c.credentials.token,E=>{E&&(I(E),o.logCustomError("Streaming: Could not connect to session",{...H,err:E}))}),T}catch(T){I(T),o.logCustomError("Streaming: Could not init session",{...H,err:T})}return null},[(Y=c==null?void 0:c.credentials)==null?void 0:Y.token]),j=s.useCallback(ro(T=>o.onSessionDisconnected({...H,reason:T})),[H]);s.useEffect(()=>(u&&(u.on("streamCreated",T=>{O(en(Jn(ot("streamId",T.stream)),at(T.stream)))}),u.on("streamDestroyed",T=>{O(Tt(ot("streamId",T.stream)))}),u.on("connectionCreated",T=>{J(en(Jn(ot("connectionId",T.connection)),at(T.connection)))}),u.on("connectionDestroyed",T=>{J(Tt(ot("connectionId",T.connection)))})),()=>{u&&(j(Xt.MANUAL_EXIT),u.off(),u.disconnect())}),[u]),s.useEffect(()=>{var E;const T=(E=c==null?void 0:c.procedureDetails)==null?void 0:E.account_uuid;T&&w&&!d&&o.getMembersByAccount(T)},[(ae=c==null?void 0:c.procedureDetails)==null?void 0:ae.account_uuid]),s.useEffect(()=>{let T;if(u&&l){const E=()=>{l-Ts<Date.now()&&o.requestSessionExpiryExtension()};
1E(),T=setInterval(E,1e3*60)}return()=>clearInterval(T)},[l,u]);const k=()=>{u&&o.deleteStreamroom(i,Ee(ft(Xn(["connection","id"])),at(Xn(["connection","id"])(u)))($))},G=()=>ee(Be.PUBLISHED),x=T=>{ee(Be.FAILED),o.logCustomError("Streaming: Publish error",{...H,err:T})};return(g||!u)&&!S&&!Q?e.jsx("div",{className:a.root,children:e.jsx("div",{className:a.loadingOverlay,children:e.jsx(so,{})})}):e.jsx(Or,{isPublishing:L===Be.PENDING,error:S||Q,session:u,streams:$,user:n,redirectToHome:o.redirectToHome,redirectTo:o.redirectTo,addAlert:o.addAlert,clearAlert:o.clearAlert,openInviteModal:()=>o.openModal(hs,{roomUuid:i,sessionId:u==null?void 0:u.sessionId,accountUuid:c==null?void 0:c.procedureDetails.account_uuid,accountMembers:d,user:{uuid:n.id,profile_picture:n.profile_picture}}),openVideoBackgroundModal:T=>o.openModal(gs,{onVideoFilterConfirm:T,userUuid:n.id}),openSimpleModal:o.openSimpleModal,deleteStreamroom:k,procedureDetails:c==null?void 0:c.procedureDetails,initialJoinedUsers:c==null?void 0:c.initialJoinedUsers,shouldWarnOnClose:!!u,leaveMessage:T=>{var E;return((E=T.state)==null?void 0:E.isForceDisconnected)||N({description:"Streaming session page - leave confirmation prompt",defaultMessage:"Are you sure you want to leave the session?",id:"streamingSessionPage--leaveConfirmationPrompt"})},accountMembers:d,onPublishError:x,onPublish:G,publishStatus:L,logCustomError:(T,E={},m)=>o.logCustomError(T,{...H,...E},m),onUserTap:(T,E)=>o.tapEvent({ui_element_name:T,ui_element_value:E,account_uuid:H.accountUuid,stream_session_id:H.sessionId,room_uuid:H.roomUuid}),hasCreateAndUpdateRoomAbility:h,roomUuid:i,trackIntercomEvent:o.trackIntercomEvent,onSessionConnected:()=>o.onSessionConnected(H),onSessionDisconnected:j,onDrawingSent:()=>o.onDrawingSent(H),isTouchScreenDevice:P,isMutingTabletStreamBetaEnabled:M,connections:A,isParticipantHdLiveStreamingEnabled:V})},xr=t=>({actions:ga({joinStreamroomByRoomUuid:et.joinStreamroomByRoomUuid,deleteStreamroom:et.deleteStreamroom,redirectTo:Fn.redirectTo,redirectToHome:Fn.redirectToHome,addAlert:Hn.addAlert,clearAlert:Hn.clearAlert,openModal:Vn.openModal,openSimpleModal:Vn.openSimpleModal,getMembersByAccount:Ps.getMembersByAccount,requestSessionExpiryExtension:Es.requestSessionExpiryExtension,logCustomError:ks.logCustomError,trackIntercomEvent:bs.trackIntercomEvent,onSessionConnected:et.onSessionConnected,onSessionDisconnected:et.onSessionDisconnected,onDrawingSent:et.onDrawingSent,clearStreamingDetailsByRoomUuid:Ys,tapEvent:fs.tapEvent},t)}),Rr=(t,o)=>{var S;const{roomUuid:i}=o.match.params,c=qs(t,i),g=(S=c==null?void 0:c.procedureDetails)==null?void 0:S.account_uuid;return{isLoading:Rs(Zn.JOIN_STREAMROOM_BY_ROOM_UUID,i)(t),error:xs(Zn.JOIN_STREAMROOM_BY_ROOM_UUID,i)(t),streamingDetails:c,user:Ms(t),accountMembers:Os(g)(t),authSessionExpiryTimestamp:Cs(t),isMemberOfAccount:g?As(g,t):!1,hasCreateAndUpdateRoomAbility:Ns(t)([Ds.LIVE_STREAM_CREATE_UPDATE]),isTouchScreenDevice:!!Us(t),isMutingTabletStreamBetaEnabled:vs(t,ys.MUTE_MODERATOR_STREAM),isParticipantHdLiveStreamingEnabled:g?Is(g,t):!1}},yr=Xo(Rr,xr),au=Ee(yr,Qn)(Mr);export{Mr as StreamingSessionPage,au as default}; 2// Injected by Embrace Web CLI: 3!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},l=(new e.Error).stack;l&&(e._EmbraceFileBundleIDs=e._EmbraceFileBundleIDs||{},e._EmbraceFileBundleIDs[l]="4bcbe7f83b4b9053dfad7b7842934317")}catch(e){}}(); 4//# sourceMappingURL=StreamingSessionPage.container.D-LdF2-7.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.