var h=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var H=(t,e)=>{for(var s in e)h(t,s,{get:e[s],enumerable:!0})},$=(t,e,s,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of I(e))!U.call(t,c)&&c!==s&&h(t,c,{get:()=>e[c],enumerable:!(i=x(e,c))||i.enumerable});return t};var F=t=>$(h({},"__esModule",{value:!0}),t);var O={};H(O,{createClient:()=>T});module.exports=F(O);var E="remote-browser-sdk",R="remote-browser-frame";var w=class{constructor(){this.handlers={}}$on(e,s){let i=this.handlers[e];i?i.push(s):this.handlers[e]=[s]}$off(e,s){let c=(this.handlers[e]||[]).filter(d=>d!==s);this.handlers[e]=c}$emit(e,s){let i=this.handlers[e];i&&i.forEach(c=>{c(s)})}$removeListeners(){this.handlers={}}};function L(t){return btoa(t).replace(/\+/g,"-").replace(/\//g,"_")}function S(t){let e=new URL(decodeURIComponent(t));return e.protocol=e.protocol.replace("http","ws"),e.searchParams.append("isSDK","true"),e.toString()}function C(){let t,e={linkClicked:[]};function s(o,n){(e[o]||[]).forEach(m=>{m(n)})}function i(o){t&&t.close(),t=new WebSocket(o),t.addEventListener("open",n=>{}),t.addEventListener("message",n=>{let{data:m}=n;try{let l=JSON.parse(m);switch(l.name){case"LINK_CLICKED":s("linkClicked",l.payload);break}}catch(l){console.log(l)}})}function c(){t&&t.close(),Object.keys(e).forEach(o=>{e[o]=[]})}function d(o,n){e[o].push(n)}function f(o,n){e[o]=e[o].filter(m=>m!==n)}function u(o){return Object.keys(e).includes(o)}return{init:i,destroy:c,registerMessageHandler:d,unregisterMessageHandler:f,isWSEvent:u,isConnected(){return Boolean(t)}}}function M(t){return{userName:"Guest",role:"",allowFullscreen:!1,disableAudio:!1,targetOrigin:"https://rooms.remotehq.com",logoUrl:"",barLocation:"top-right",...t}}function A(t){let e=document.createElement("iframe");return e.setAttribute("allowFullscreen",""),e.setAttribute("allow","autoplay; fullscreen"),e.src=t,e.style.border="0",e}function K({targetOrigin:t,instanceURN:e,iframeSource:s,userName:i,role:c,allowFullscreen:d,disableAudio:f,logoUrl:u,barLocation:o}){let n=new URL(`${t}/embed/remote-browser/${e}`);return n.searchParams.set("iframeSource",s),n.searchParams.set("userName",i),n.searchParams.set("role",c),d&&n.searchParams.set("allowFullscreen","true"),f&&n.searchParams.set("disableAudio","true"),u&&n.searchParams.set("logo",L(u)),o&&n.searchParams.set("barLocation",o),n.toString()}function T({instanceURN:t,iframeSource:e,...s}){let{userName:i,role:c,allowFullscreen:d,disableAudio:f,targetOrigin:u,logoUrl:o,barLocation:n}=M(s),m=K({targetOrigin:u,instanceURN:t,iframeSource:e,userName:i,role:c,allowFullscreen:d,disableAudio:f,logoUrl:o,barLocation:n}),l=C(),b=A(m),y=!1,g=null,v=new w;function D(r){g=r,y&&r.src&&l.init(S(r.src))}function p(r){var a;(a=b.contentWindow)==null||a.postMessage(r,u)}function k(r){let a=r.data;if(!(!a||a.source!==R))switch(a.name){case"error":W(`${a.data.eventSource}:error`,a.data.error);break;case"instanceDataAvailable":D(a.data);break;default:throw new Error("received unsupported message: "+JSON.stringify(r.data))}}function B(r,a){if(l.isWSEvent(r))return(g==null?void 0:g.src)&&!l.isConnected()?l.init(S(g.src)):y=!0,l.registerMessageHandler(r,a);v.$on(r,a)}function P(r,a){if(l.isWSEvent(r))return l.unregisterMessageHandler(r,a);v.$off(r,a)}function W(r,a){v.$emit(r,a)}return{attach(r){if(!r)throw new Error("attach() failed, no element found");r.innerHTML="",r.appendChild(b),window.addEventListener("message",k)},destroy(){b.remove(),window.removeEventListener("message",k),v.$removeListeners(),l.destroy()},on:B,off:P,openInCurrentTab(r){p({source:E,name:"openInCurrentTab",data:{url:r}})},openInNewTab(r){p({source:E,name:"openInNewTab",data:{url:r}})},startRecording(){p({source:E,name:"startRecording",data:null})},stopRecording(){p({source:E,name:"stopRecording",data:null})}}}