1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/agora-screen-sharing-BIzOHj36.js","assets/dayjs.min-F1KNxQo3.js","assets/index-C38E2mBW.js","assets/index-FSSVxXas.css","assets/AgoraRTC_N-production-jNICQWFk.js","assets/my.spaces._id_.editor.__viewerId__-D7queCmx.js","assets/ViewersApi-C69VoKFy.js","assets/FileSchema-Cx8HAR-e.js","assets/handler-In0-8p_5.js","assets/refresh-rounded-DsD_zMFI.js","assets/babylonjs-BJ4KKJpI.js","assets/constants-Ct4NoS72.js","assets/RenderingsModal.vue_vue_type_script_setup_true_lang-BmhkI-og.js","assets/delete-outline-rounded-CVmtMBuT.js","assets/keyboard-arrow-left-BwUGyBF5.js","assets/RooomSelect.vue_vue_type_script_setup_true_lang-Cuo8Vqr8.js","assets/RooomText-CQMf_cLH.js","assets/SmoothHeightTransition.vue_vue_type_script_setup_true_lang-BcoW6QZM.js","assets/RooomTooltip.vue_vue_type_script_setup_true_lang-D69AOjyz.js","assets/info-rounded-IueYNQsz.js","assets/getUUID-CxWX2AWs.js","assets/RooomCheckbox.vue_vue_type_script_setup_true_lang-CaAeaBUB.js","assets/check-rounded-Bn7p-4Wo.js","assets/RooomButtonGroup.vue_vue_type_script_setup_true_lang-DM1rY-nT.js","assets/error-DekL2CNG.js","assets/folder-outline-rounded-BX0OstaK.js","assets/RenderingsApi-BgFSU-nT.js","assets/ViewSwitch.vue_vue_type_script_setup_true_lang-D0fRpcdh.js","assets/file-CebuULBS.js","assets/RooomLabel.vue_vue_type_script_setup_true_lang-z62LGz6O.js","assets/useSpaceAvatarSystem-B9trFW0T.js","assets/index.esm-DeXglqAN.js","assets/RooomColorInput-DCvicRot.js","assets/RooomInput.vue_vue_type_script_setup_true_lang-DiZLQq08.js","assets/RooomColorInput-CqNv-vyc.css","assets/PlanesApi-BIToQfo5.js","assets/schema-D-NiFuhU.js","assets/SpacesApi-sVrR9KTI.js","assets/UploadSchema-DAeD7X89.js","assets/index-DIvkfNlD.js","assets/RooomInfo-DaruShAH.js","assets/FactorInputGroup.vue_vue_type_script_setup_true_lang-aCFeh_nM.js","assets/RooomInlineSelect.vue_vue_type_script_setup_true_lang-C8aC9tfV.js","assets/photo-camera-outline-rounded-BykMBz3A.js","assets/arrow-upward-rounded-D9ToArAA.js","assets/RooomTextarea.vue_vue_type_script_setup_true_lang-NDUNr03a.js","assets/vee-validate-zod-DFspTPV4.js","assets/vee-validate-DMGsPIgB.js","assets/RooomContentCopy.vue_vue_type_script_setup_true_lang-BjnscKGC.js","assets/RooomSeparator.vue_vue_type_script_setup_true_lang-Bpba5t5N.js","assets/RooomRadioGroup-BVMNP4O6.js","assets/visibility-off-outline-rounded-CfoVM8hT.js","assets/visibility-outline-rounded-CX4lFtI8.js","assets/EmptyEntries.vue_vue_type_script_setup_true_lang-BqaVSUoA.js","assets/chevron-right-rounded-DZgroGA1.js","assets/logout-rounded-DWvqeFxM.js","assets/my.spaces._id_.editor-C7U-V-ZX.css","assets/ConnectionTokenService-pw_JggHq.js","assets/screen-sharing-DMp7FLWl.js"])))=>i.map(i=>d[i]); 2import{be as D,bK as E,bg as O,N as h,b3 as o,aa as l,_ as u}from"./index-C38E2mBW.js";import{b as S}from"./ViewersApi-C69VoKFy.js";import{E as p,S as f,e as P,g as T,h as b,i as y,j as m,k as N,l as I,m as A,n as C,o as V}from"./my.spaces._id_.editor.__viewerId__-D7queCmx.js";import{ConnectionTokenService as _}from"./ConnectionTokenService-pw_JggHq.js";try{let c=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new c.Error().stack;e&&(c._sentryDebugIds=c._sentryDebugIds||{},c._sentryDebugIds[e]="e5ce0258-19d6-41d9-b6ef-66b475fd1fbc",c._sentryDebugIdIdentifier="sentry-dbid-e5ce0258-19d6-41d9-b6ef-66b475fd1fbc")}catch{}const v="screen_sharing_start",H="permissionRequested",R="permissionGranted",k="permissionDenied",M=3e3,g="Permission denied",x="Permission request timeout";class d{static _instance;_handlers=new Map;_events=new p;static getInstance(){return this._instance||(this._instance=new d),this._instance}registerHandler(e,n){this._handlers.has(e)||this._handlers.set(e,[]),this._handlers.get(e).push(n)}unregisterHandler(e,n){const r=this._handlers.get(e);if(r){const t=r.indexOf(n);t>-1&&r.splice(t,1),r.length===0&&this._handlers.delete(e)}}async requestPermission(e){this._events.notify(H,e);const n=this._handlers.get(e.action)||[];if(n.length===0){const a={granted:!0};return this._events.notify(R,e),a}const r=e.timeout||M,t=new Promise((a,s)=>{setTimeout(()=>s(new Error(x)),r)}),i=this._runValidationChain(n,e);try{const a=await Promise.race([i,t]);return a.granted?this._events.notify(R,e):this._events.notify(k,{request:e,reason:a.reason||g}),a}catch(a){const s={granted:!1,reason:a instanceof Error?a.message:g};return this._events.notify(k,{request:e,reason:s.reason}),s}}get events(){return this._events}async _runValidationChain(e,n){const r=e.map(t=>t(n));try{const t=await Promise.all(r);if(!t.every(a=>a.granted))throw new Error(t.find(a=>!a.granted)?.reason||g);return{granted:!0}}catch(t){return{granted:!1,reason:t instanceof Error?t.message:g}}}clearHandlers(){this._handlers.clear()}getHandlerCount(e){return this._handlers.get(e)?.length||0}}const G=1e4;class L{constructor(e,n,r=!1){this._userId=e,this._scene=n,this._cloudProxyEnabled=r,this._registerPermissionHandlers()}events=new p;_screenSharingPlanes=null;_lockedPlanes=new Map;_agoraScreenSharing=null;get screenSharingPlanes(){return this._screenSharingPlanes}
2get agoraScreenSharing(){return this._agoraScreenSharing}async init(){await this._initScreenSharing(),D(E,this._handlePlaneScreenSharingOverlayDoublePick)}async dispose(){await this.agoraScreenSharing?.leaveSharing(),d.getInstance().unregisterHandler(v,this._handleScreenSharingPermission),O(E,this._handlePlaneScreenSharingOverlayDoublePick),this._agoraScreenSharing?.events.unsubscribe(f,this._notifyOnSharing),this._agoraScreenSharing?.events.unsubscribe(P,this._notifyOnSharingStarted),this._agoraScreenSharing?.events.unsubscribe(T,this._handleScreenSharingEnded),this._agoraScreenSharing?.events.unsubscribe(b,this._handleSharingTokenExpiration),this._agoraScreenSharing?.events.unsubscribe(y,this._handleScreenSharingDisconnected),this._agoraScreenSharing?.events.unsubscribe(m,this._handleScreenSharingReconnected),this._agoraScreenSharing?.events.unsubscribe(N,this.handleScreenSharingVideoAdded),this._agoraScreenSharing?.events.unsubscribe(I,this.handleScreenSharingVideoRemoved)}async startScreenSharing(e,n){if(this._lockedPlanes.get(n)?.[e.id]){h.info(o.$t("screen_sharing.occupied.title"),o.$t("screen_sharing.occupied.text"));return}this._agoraScreenSharing||await this._initScreenSharing(),this._agoraScreenSharing?.createLocalStream({plane:e,objectId:n})}async handlePlaneScreenSharing(e,n){this._screenSharingPlanes||(this._screenSharingPlanes={}),this._screenSharingPlanes[n.id]=[...this._screenSharingPlanes[n.id]??[],e.id],this._agoraScreenSharing&&this._agoraScreenSharing.addSharedPlanes([e.id],n.id)}async _initScreenSharing(){if(!this._screenSharingPlanes)return;if(this._agoraScreenSharing){l.error("ScreenSharingController._startScreenSharingSession","Screen sharing session has already started",{sendToSentry:!1});return}const e=_.getInstance();let n=e.getChannel(S["rtc-screen-sharing"]);if(!n&&([n]=await e.generateTokens([S["rtc-screen-sharing"]]),!n))return;const r={scene:this._scene,channel:n.name,token:n.token,uid:this._userId},{default:t}=await u(async()=>{const{default:s}=await import("./agora-screen-sharing-BIzOHj36.js");return{default:s}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57])),{default:i}=await u(async()=>{const{default:s}=await import("./screen-sharing-DMp7FLWl.js");return{default:s}},__vite__mapDeps([58,2,3])),a=new t(r,this._scene,this._scene.metadata.viewer.token,void 0,this._cloudProxyEnabled);this._agoraScreenSharing=new i(a),this._agoraScreenSharing.events.subscribe(f,this._notifyOnSharing),this._agoraScreenSharing.events.subscribe(P,this._notifyOnSharingStarted),this._agoraScreenSharing.events.subscribe(T,this._handleScreenSharingEnded),this._agoraScreenSharing.events.subscribe(b,this._handleSharingTokenExpiration),this._agoraScreenSharing.events.subscribe(y,this._handleScreenSharingDisconnected),this._agoraScreenSharing.events.subscribe(m,this._handleScreenSharingReconnected),this._agoraScreenSharing.events.subscribe(N,this.handleScreenSharingVideoAdded),this._agoraScreenSharing.events.subscribe(I,this.handleScreenSharingVideoRemoved),Object.entries(this._screenSharingPlanes).forEach(([s,w])=>{this._agoraScreenSharing?.addSharedPlanes(w,s)}),await a.joinChat()}handleScreenSharingVideoRemoved=({plane:e,objectId:n})=>{this._unlockPlane(e,n)};handleScreenSharingVideoAdded=({plane:e,objectId:n})=>{this._lockPlane(e,n)};_notifyOnSharing=e=>{this.events.notify(A,e)};_notifyOnSharingStarted=({uid:e,planeId:n})=>{this.events.notify(C,{uid:e,planeId:n})};_notifySharingEnded(e){this.events.notify(V,e)}_handleScreenSharingEnded=({uid:e})=>{this._notifySharingEnded(e)};_handlePlaneScreenSharingOverlayDoublePick=async e=>{const{plane:n,objectId:r}=e.detail;await this.startScreenSharing(n,r)};_handleSharingTokenExpiration=async e=>{e?await this._handleSharingTokenExpired():await this._handleSharingTokenWillExpire()};async _handleSharingTokenWillExpire(){const e=_.getInstance(),[n]=await e.generateTokens([S["rtc-screen-sharing"]]);if(!n){l.error("ScreenSharingController","Unable to generate new token",{sendToSentry:!1});return}await this._agoraScreenSharing?.updateConnectionToken(n.token)}async _handleSharingTokenExpired(){const e=_.getInstance(),[n]=await e.generateTokens([S["rtc-screen-sharing"]]);if(!n){l.error("ScreenSharingController","Unable to generate new token",{sendToSentry:!1});return}try{await this._agoraScreenSharing?.rejoinConnection(n.token)}catch{h.warning(o.$t("screen_sharing.connectionErrorTitle"),o.$t("screen_sharing.connectionError"),{duration:15e3})}}_handleScreenSharingDisconnected=()=>{h.warning(o.$t("screen_sharing.connectionInterruptedTitle"),o.$t("screen_sharing.connectionInterrupted"),{duration:15e3})};_handleScreenSharingReconnected=()=>{h.info(o.$t("screen_sharing.connectionReconnectedTitle"),o.$t("screen_sharing.connectionReconnected"),{duration:15e3})};
2_lockPlane(e,n){const t=this._lockedPlanes.get(n)?.[e.id];t&&clearTimeout(t);const i=setTimeout(()=>{this._unlockPlane(e,n)},G);this._lockedPlanes.set(n,{...this._lockedPlanes.get(n)??{},[e.id]:i})}_unlockPlane(e,n){const r=this._lockedPlanes.get(n);if(!r)return;const{[e.id]:t}=r;t&&clearTimeout(t);const i={...r};delete i[e.id],Object.keys(i).length===0?this._lockedPlanes.delete(n):this._lockedPlanes.set(n,i)}_registerPermissionHandlers(){d.getInstance().registerHandler(v,this._handleScreenSharingPermission)}_handleScreenSharingPermission=e=>{const{planeId:n,objectId:r}=e.context;return typeof n!="string"||typeof r!="string"?{granted:!1,reason:"Invalid request context: planeId and objectId must be strings"}:this._lockedPlanes.get(r)?.[n]?{granted:!1,reason:"Plane is already in use, please wait a moment and try again"}:{granted:!0}}}const W=Object.freeze(Object.defineProperty({__proto__:null,ScreenSharingController:L},Symbol.toStringTag,{value:"Module"}));export{d as P,W as S,v as a};
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.