clay-server 5.5.0 → 5.5.1-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/public/modules/app-messages.js +4 -3
- package/lib/public/modules/sidebar-sessions.js +45 -0
- package/lib/public/modules/sidebar.js +12 -0
- package/lib/public/modules/split-session-boundary.js +11 -1
- package/lib/public/pane-assets/{app-BNMUDWD5.js → app-EYGYCM2T.js} +1 -1
- package/lib/public/pane-assets/{chunk-D2BDBUG5.js → chunk-2JXAANCI.js} +1 -1
- package/lib/public/pane-assets/chunk-4MBLPK54.js +1 -0
- package/lib/public/pane-assets/chunk-546IPPXQ.js +1 -0
- package/lib/public/pane-assets/chunk-6TSFZ4FL.js +1 -0
- package/lib/public/pane-assets/{chunk-B4JTSONS.js → chunk-C2FSPTQF.js} +1 -1
- package/lib/public/pane-assets/{chunk-HY74JLC5.js → chunk-F7KXA6MA.js} +1 -1
- package/lib/public/pane-assets/{chunk-FWEHZLDA.js → chunk-GSFLTR5F.js} +1 -1
- package/lib/public/pane-assets/{chunk-FDZ37JGF.js → chunk-JFPKTZNT.js} +93 -93
- package/lib/public/pane-assets/{chunk-ULGL2YFP.js → chunk-LYYAXURP.js} +1 -1
- package/lib/public/pane-assets/{chunk-YXTZSYUM.js → chunk-M3R7EZRU.js} +1 -1
- package/lib/public/pane-assets/{chunk-FA454EFE.js → chunk-MACWHBDE.js} +1 -1
- package/lib/public/pane-assets/{chunk-ENPPQJSX.js → chunk-MIY5SZAA.js} +1 -1
- package/lib/public/pane-assets/{chunk-ZY4WB3PH.js → chunk-NNR4GHCN.js} +1 -1
- package/lib/public/pane-assets/{chunk-AF5TDQTT.js → chunk-OAAIBT72.js} +1 -1
- package/lib/public/pane-assets/chunk-PP5WRIOP.js +1 -0
- package/lib/public/pane-assets/{chunk-LH46GC2K.js → chunk-SMMJMW5H.js} +1 -1
- package/lib/public/pane-assets/chunk-T2H4XKIR.js +1 -0
- package/lib/public/pane-assets/{chunk-U3KC4P2F.js → chunk-VDPYWAHD.js} +1 -1
- package/lib/public/pane-assets/{chunk-4FKXTJ6O.js → chunk-WT5P53UH.js} +1 -1
- package/lib/public/pane-assets/{chunk-WI3BTTUY.js → chunk-YEKR6TQM.js} +1 -1
- package/lib/public/pane-assets/chunk-YHEALGET.js +1 -0
- package/lib/public/pane-assets/{chunk-SQC7XIGG.js → chunk-YM5Z4AR6.js} +1 -1
- package/lib/public/pane-assets/chunk-ZJF5GGAU.js +1 -0
- package/lib/public/pane-assets/manifest.json +400 -400
- package/package.json +1 -1
- package/lib/public/pane-assets/chunk-3EA7GMQB.js +0 -1
- package/lib/public/pane-assets/chunk-4WIT6JEU.js +0 -1
- package/lib/public/pane-assets/chunk-A5YYSG4B.js +0 -1
- package/lib/public/pane-assets/chunk-ENWMPEO2.js +0 -1
- package/lib/public/pane-assets/chunk-PDHV6Q3E.js +0 -1
- package/lib/public/pane-assets/chunk-TIEOZRO2.js +0 -1
- package/lib/public/pane-assets/chunk-W3KJANR2.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$d as p,Md as a,Nd as b,Od as c,Pd as d,Qd as e,Rd as f,Sd as g,Td as h,Ud as i,Vd as j,Wd as k,Xd as l,Yd as m,Zd as n,_d as o,ae as q,be as r,ce as s,de as t,ee as u,fe as v}from"./chunk-
|
|
1
|
+
import{$d as p,Md as a,Nd as b,Od as c,Pd as d,Qd as e,Rd as f,Sd as g,Td as h,Ud as i,Vd as j,Wd as k,Xd as l,Yd as m,Zd as n,_d as o,ae as q,be as r,ce as s,de as t,ee as u,fe as v}from"./chunk-JFPKTZNT.js";import"./chunk-SMMJMW5H.js";import"./chunk-YHBTK56T.js";import"./chunk-M3R7EZRU.js";import"./chunk-C2FSPTQF.js";import"./chunk-YEKR6TQM.js";import"./chunk-R7QVVFUG.js";import"./chunk-2JXAANCI.js";import"./chunk-EGCR2MH4.js";export{c as closeFileViewer,b as focusFileTree,v as getPendingNavigate,o as handleDirChanged,t as handleFileAt,q as handleFileChanged,r as handleFileHistory,n as handleFsList,p as handleFsRead,m as handleFsSearch,s as handleGitDiff,a as initFileBrowser,j as loadRootDirectory,u as navigateToEdit,f as openFile,h as openWorkingTreeDiff,i as presentMarkdownEdit,l as refreshIfOpen,k as refreshTree,g as reopenFileViewer,e as resetFileBrowser,d as setFileViewerFullscreen};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as Y,l as Oe,m as D,n as X,y as Ce}from"./chunk-WI3BTTUY.js";import{a as q}from"./chunk-R7QVVFUG.js";import{G as Ae,I as Z,J as be,Q as me,a as z,c as Le,d as R,e as v}from"./chunk-D2BDBUG5.js";import{d as n}from"./chunk-EGCR2MH4.js";function M(){return n.get("paneBrowserSource")||null}function $(){var e=n.get("projectSplitViewFocusedOrigin")||n.get("projectSplitViewSingletonOrigin");if(e)return e;var r=(n.get("projectSplitViews")||[]).find(function(t){return t.id===n.get("projectSplitViewActiveId")});return r&&r.activeSessionOriginId||n.get("sessionOriginId")||null}var Te=null,ee=null,ye={state_request:[],open:["url","newTab","incognito"],view:["browserId","visible"],control:["browserId","control"],close:["browserId"],end:["browserId"],input:["browserId","epoch","event"]};function re(){return Array.from(document.querySelectorAll("#split-host .split-pane:not(.split-pane-cached) .split-pane-frame"))}function Se(){return!n.get("paneMode")&&re().some(function(e){return!!e.clayPane||!!Oe(n.snap(),n.get("paneBindingSessions")||[],Number(e.dataset.sessionId))})}function P(){var e=M();if(!e||e.socket!==q()||e.owner!==n.get("myUserId")||e.project!==n.get("currentSlug"))return!1;var r=e.frame;return re().includes(r)&&r.contentWindow===e.window&&r.contentDocument===e.document&&!r.dataset.requestedSessionId&&D(r,{paneBinding:e.binding})}function Be(){return P()?M().binding.sessionId:null}function ae(){var e=M();return P()?e.binding.requestId+":"+e.binding.generation:null}function Pe(){return!!M()}function ie(e,r){var t=M();if(!e||!r||!re().includes(e)||e.dataset.requestedSessionId||!D(e,{paneBinding:r}))return!1;if(P()&&t.frame===e&&Y(t.binding,r))return t.focusedOrigin!==$()&&n.set({paneBrowserSource:Object.assign({},t,{focusedOrigin:$()})}),!0;var o=n.get("sharedBrowser");return P()&&o&&de("view",{browserId:o.id,visible:!1}),n.set({paneBrowserSource:{frame:e,window:e.contentWindow,document:e.contentDocument,binding:r,socket:q(),owner:n.get("myUserId"),project:n.get("currentSlug"),focusedOrigin:$()},paneBrowserTarget:r}),ee&&ee(!0),!0}function F(){if(P()&&M().focusedOrigin===$())return!0;var e=re(),r=$(),t=e.find(function(a){return r&&a.dataset.sessionOriginId===r})||e.find(function(a){var s=a.closest(".split-pane");return s&&s.dataset.active==="true"})||e[0],o=t&&t.clayPane&&t.clayPane.identity();return!!o&&ie(t,o.binding)}function de(e,r){var t=M();return Object.prototype.hasOwnProperty.call(ye,e)?!t&&!Se()?null:!P()||!t.frame.clayPane||typeof t.frame.clayPane.browserCommand!="function"?!1:t.frame.clayPane.browserCommand(e,r||{},t.binding):!1}function gr(e,r,t){var o=Object.prototype.hasOwnProperty.call(ye,e)&&ye[e],a=q();if(!o||!a||a.readyState!==1||!Y(t,X())||!n.get("connected")||n.get("panePendingBinding")||n.get("activeSessionId")!==t.sessionId)return!1;var s={type:"shared_browser_"+e,sessionId:t.sessionId,paneBinding:t};return o.forEach(function(i){Object.prototype.hasOwnProperty.call(r,i)&&(s[i]=r[i])}),a.send(JSON.stringify(s)),!0}function Me(e){var r=window.frameElement;if(!n.get("paneMode")||!r||!r.clayPane||["shared_browser_state","shared_browser_frame","shared_browser_error"].indexOf(e.type)<0)return!1;var t=X();return t&&Y(t,e.paneActivation)&&window.parent.postMessage({type:"clay-pane-browser-update",paneBinding:t,message:e},location.origin),!0}function He(e,r){n.get("paneMode")||(Te=e,ee=r,window.addEventListener("message",function(t){var o=t.data;if(!(t.origin!==location.origin||!o||o.type!=="clay-pane-browser-update"||!o.message)){var a=re().find(function(d){return d.contentWindow===t.source}),s=o.message,i=M();!a||!D(a,o)||!Y(o.paneBinding,s.paneActivation)||s.sessionId!==o.paneBinding.sessionId||["shared_browser_state","shared_browser_frame","shared_browser_error"].indexOf(s.type)<0||(!P()||i.frame!==a||!Y(i.binding,o.paneBinding))&&(s.type!=="shared_browser_state"||!s.present||!ie(a,o.paneBinding))||Te(s,!0)}}),document.addEventListener("clay-pane-ready",function(){queueMicrotask(function(){!P()&&F()&&de("state_request",{})})},!0),n.subscribe(function(){var t=M();t&&!P()&&(n.set({paneBrowserSource:null,paneBrowserTarget:null}),ee&&ee(!1))}))}function Ue(e){return!n.get("paneMode")||window.parent===window?!1:(window.parent.postMessage({type:"clay-pane-open-browser",paneBinding:X(),url:e,projectSlug:n.get("currentSlug"),sessionId:String(n.get("activeSessionId"))},window.location.origin),!0)}function Sr(e,r){if(!e||e.origin!==window.location.origin||!r||!e.data||e.data.type!=="clay-pane-open-browser")return!1;var t=e.data,o=Object.assign({},n.snap()),a=Array.from(r.querySelectorAll(".split-pane-frame")).find(function(p){return p.contentWindow===e.source}),s=a&&a.clayPane?{slug:a.dataset.projectSlug,sessionId:a.dataset.sessionId}:a&&o.splitPanes&&o.splitPanes.panes&&o.splitPanes.panes.find(function(p){return String(p.slug)===a.dataset.projectSlug&&String(p.sessionId)===a.dataset.sessionId});if(!o.connected||!s||t.projectSlug!==o.currentSlug||t.projectSlug!==a.dataset.projectSlug||String(t.sessionId)!==a.dataset.sessionId)return!0;var i=new URL("/p/"+encodeURIComponent(s.slug)+"/?pane=1&session="+encodeURIComponent(s.sessionId),window.location.href).href;if(a.clayPane?!D(a,t):a.src!==i)return!0;var d=a.clayPane&&a.clayPane.identity().binding,c=a.contentDocument;function u(){var p=n.snap();return!p.connected||p.currentSlug!==o.currentSlug||p.myUserId!==o.myUserId||p.currentProjectOwnerId!==o.currentProjectOwnerId||p.projectSplitViewSocketGeneration!==o.projectSplitViewSocketGeneration||a.contentWindow!==e.source||a.contentDocument!==c||a.dataset.projectSlug!==t.projectSlug||String(a.dataset.sessionId)!==String(t.sessionId)||!Array.from(r.querySelectorAll(".split-pane-frame")).includes(a)?!1:d?!!a.clayPane&&D(a,t)&&a.clayPane.identity().binding===d:a.src===i&&!!(p.splitPanes&&p.splitPanes.panes.some(function(I){return String(I.slug)===s.slug&&String(I.sessionId)===String(s.sessionId)}))}return import("./chunk-ENPPQJSX.js").then(function(p){!u()||d&&!ie(a,d)||p.openSharedBrowserAt(t.url)}).catch(function(p){z(p.message||"Could not open the browser.","warn")}),!0}function te(e){return String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function le(e){if(typeof e!="string"||!e.startsWith("browser:")||e.length>8200)return null;var r=e.slice(8);if(!/^https?:\/\//i.test(r)||/[\u0000-\u0020]/.test(r))return null;try{var t=new URL(r);return t.username||t.password||!["http:","https:"].includes(t.protocol)?null:t.href}catch{return null}}function or(e,r,t){var o=le(e);if(!o)return null;var a=String(t||"").replace(/<[^>]*>/g,"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").trim();return(!a||a===e||a===o)&&(a=new URL(o).host),'<button type="button" class="clay-browser-link clayos-record-link" data-browser-url="'+te(o)+'" data-browser-project="'+te(n.get("currentSlug")||"")+'" title="'+te("Open in Clay Browser \xB7 "+o)+'" aria-label="'+te("Open in Clay Browser: "+a)+'">'+v("globe")+"<span>Browser</span><small>"+te(a)+"</small></button>"}function Er(e){!e||typeof document>"u"||(e.querySelectorAll("a[href]").forEach(function(r){if(!r.closest("pre, code, button")){var t=or(r.getAttribute("href"),"",r.textContent);if(t){var o=document.createElement("template");o.innerHTML=t,r.replaceWith(o.content)}}}),ke(),R())}function ke(){n.get("browserLinksBound")||(n.set({browserLinksBound:!0}),document.addEventListener("click",function(e){var r=e.target.closest&&e.target.closest(".clay-browser-link");if(r){e.preventDefault(),e.stopPropagation();var t=le("browser:"+r.dataset.browserUrl);if(!t){z("This browser link is invalid.","warn");return}if(r.dataset.browserProject&&r.dataset.browserProject!==n.get("currentSlug")){z("Open this link from its original project.","warn");return}Ue(t)||import("./chunk-ENPPQJSX.js").then(function(o){o.openSharedBrowserAt(t)}).catch(function(o){z(o.message||"Could not open the browser.","warn")})}}))}function b(e){return Le(String(e)).replace(/"/g,""").replace(/'/g,"'")}function B(){return n.get("sharedBrowserSettings")||{}}function S(e){n.set({sharedBrowserSettings:Object.assign({},B(),e)})}function E(){return document.getElementById("shared-browser-settings")}function L(e,r,t,o){return'<button type="button" data-settings-action="'+r+'" data-target="'+b(t||"")+'" data-label="'+b(o||t||"")+'">'+b(e)+"</button>"}function Ie(e,r){var t=q();if(!t||t.readyState!==1){S({error:"Reconnect to manage browser data.",pending:!1}),O();return}var o=crypto.randomUUID();S({pending:!0,requestId:o,error:"",notice:""}),t.send(JSON.stringify({type:"shared_browser_settings",sessionId:n.get("activeSessionId"),requestId:o,operation:e,target:r})),O(),setTimeout(function(){B().requestId===o&&B().pending&&(S({pending:!1,error:"The request timed out. Refresh to check the saved state."}),O())},15e3)}function ne(e){var r=!!B().open;S({open:!1,review:null}),O();var t=document.querySelector('[data-action="settings"]');t&&r&&e!==!1&&t.focus()}function _e(){return'<section id="shared-browser-settings" class="shared-browser-settings" aria-label="Browser settings" hidden></section>'}function je(e){e.querySelector('[data-action="settings"]').onclick=function(){S({open:!0,page:"sites",data:null,review:null,filter:""}),Ie("list"),E().querySelector('[data-settings-action="back"]').focus()},E().addEventListener("keydown",function(r){r.key==="Escape"&&(r.preventDefault(),r.stopPropagation(),ne())}),E().addEventListener("input",function(r){r.target.matches("[data-settings-filter]")&&(S({filter:r.target.value}),Re(),E().dataset.key=JSON.stringify([B(),n.get("connected")]))}),E().addEventListener("click",function(r){var t=r.target.closest("[data-settings-action]");if(!(!t||t.disabled)){var o=t.dataset.settingsAction;if(o==="back"){ne();return}if(o==="sites"||o==="history"){S({page:o,filter:"",review:null,notice:"",error:""}),O();return}if(o==="refresh"){Ie("list");return}if(o==="cancel"){S({review:null}),O(),E().querySelector('[data-settings-action="refresh"]').focus();return}if(o==="confirm"){var a=B().review;a&&Ie(a.action,a.target);return}S({notice:"",error:"",review:{action:o,target:t.dataset.target,label:t.dataset.label||t.dataset.target}}),O(),E().querySelector('[data-settings-action="cancel"]').focus()}})}function Re(){var e=E(),r=B();if(!(!e||!r.open)){var t=e.querySelector(".browser-settings-rows");if(t){var o=(r.filter||"").toLowerCase(),a=r.data||{sites:[],history:[]};r.page==="history"?t.innerHTML=a.history.filter(function(s){return s.url.toLowerCase().includes(o)}).map(function(s){return'<div class="browser-settings-row"><div><span class="browser-settings-url">'+b(s.url)+"</span><small>"+b(new Date(s.at).toLocaleString())+"</small></div>"+L("Remove","delete_history",s.id,s.url)+"</div>"}).join(""):t.innerHTML=a.sites.filter(function(s){return s.host.toLowerCase().includes(o)}).map(function(s){return"<details><summary>"+b(s.host)+"<small>"+s.cookies.length+(s.cookies.length===1?" cookie \xB7 ":" cookies \xB7 ")+s.origins.length+(s.origins.length===1?" storage origin":" storage origins")+'</small></summary><div class="browser-settings-row"><span>Cookies and site storage</span>'+L("Remove site data","delete_site",s.host)+"</div>"+s.origins.map(function(i){return'<p class="browser-settings-origin">'+b(i.origin)+"<small>"+i.localStorage+" localStorage entries \xB7 "+i.databases+" IndexedDB databases</small></p>"}).join("")+s.cookies.map(function(i){var d=i.domain+i.path+" \xB7 "+(i.expires===-1?"Session cookie":"Expires "+new Date(i.expires*1e3).toLocaleDateString())+(i.httpOnly?" \xB7 HttpOnly":"")+(i.secure?" \xB7 Secure":"")+(i.partitioned?" \xB7 Partitioned":"");return'<div class="browser-settings-row"><div><span>'+b(i.name)+"</span><small>"+b(d)+"</small></div>"+L("Remove cookie","delete_cookie",i.id,i.name+" \xB7 "+i.domain+i.path)+"</div>"}).join("")+"</details>"}).join(""),t.innerHTML||(t.innerHTML='<p class="browser-settings-muted">'+(r.pending&&!r.data?"Loading saved data\u2026":o?"No matching entries.":r.page==="history"?"No saved browsing history.":"No saved cookies or site data.")+"</p>"),t.querySelectorAll("button").forEach(function(s){s.disabled=!!r.pending||!n.get("connected")})}}}function O(){var e=E();if(e){var r=B(),t=e.closest(".shared-browser-panel"),o=n.get("sharedBrowser"),a=t.querySelector('[data-action="settings"]');if(a.hidden=!(o&&o.personalCookiesAvailable),a.disabled=!n.get("connected"),a.setAttribute("aria-expanded",String(!!r.open)),e.hidden=!r.open,t.classList.toggle("browser-settings-open",!!r.open),!!r.open){var s=JSON.stringify([r,n.get("connected")]);if(e.dataset.key!==s){e.dataset.key=s;var i=r.page||"sites";e.innerHTML='<div class="browser-settings-heading">'+L("Back to browser","back")+'<h3>Browser settings</h3></div><p class="browser-settings-muted">Personal \xB7 Shared across your Mates. Incognito tabs do not save data here.</p><nav aria-label="Browser settings sections">'+L("Cookies & site data","sites")+L("History","history")+'</nav><p class="browser-settings-muted">'+(i==="sites"?"Cookies, localStorage and IndexedDB are saved for your account. New personal tabs restore saved site storage. Removing data may sign you out. Removals also apply to open personal tabs. Sites may create new data afterwards.":"Your latest 500 page visits. Clearing this list leaves open tabs, their Back/Forward navigation and conversation activity unchanged.")+'</p><div class="browser-settings-tools"><input data-settings-filter aria-label="Filter saved browser data" placeholder="'+(i==="sites"?"Find a site":"Find a page")+'" value="'+b(r.filter||"")+'">'+L("Refresh","refresh")+L(i==="sites"?"Clear all site data":"Clear history",i==="sites"?"clear_data":"clear_history")+'</div><p class="browser-settings-feedback" role="status">'+b(r.error||(n.get("connected")?r.pending?"Updating\u2026":r.notice||"":"Disconnected. Reconnect and refresh to see current saved data."))+"</p>"+(r.review?'<div class="browser-settings-review" role="group" aria-label="Confirm removal"><strong>'+(r.review.action.includes("history")?"Remove browsing history?":"Remove saved site data?")+"</strong><p>"+(r.review.action.includes("history")?"This removes "+(r.review.action==="clear_history"?"all saved visits":"this saved visit")+" from your personal history.":r.review.action==="delete_cookie"?"This removes "+b(r.review.label)+" across your personal Mate browsers and may sign you out.":"This removes "+(r.review.action==="clear_data"?"all cookies and site storage":"cookies and storage for "+b(r.review.target))+" across your personal Mate browsers and may sign you out.")+"</p>"+L("Cancel","cancel")+L("Remove","confirm")+"</div>":"")+'<div class="browser-settings-rows"></div>',e.querySelector('[data-settings-action="'+i+'"]').setAttribute("aria-current","page"),e.querySelectorAll("button").forEach(function(d){d.disabled=d.dataset.settingsAction!=="back"&&(!!r.pending||!n.get("connected"))}),Re()}}}}function De(e){if(!e.requestId||e.requestId!==B().requestId)return!1;if(e.type==="shared_browser_settings"){var r=!!B().review;S({data:e.settings,pending:!1,review:null,error:"",notice:r?"Removed from your saved browser data.":""})}else if(e.type==="shared_browser_error")S({pending:!1,error:e.error});else return!1;return O(),B().open&&r&&E().querySelector('[data-settings-action="refresh"]').focus(),!0}function Ne(e,r,t){var o=e.querySelector(".shared-browser-tabs"),a=n.get("sharedBrowsers")||[],s=n.get("sharedBrowser"),i=JSON.stringify([a.map(function(l){return[l.id,l.url,l.control,l.phase,l.incognito,l.personalCookiesAvailable,l.sourceSessionId,l.sourceRole,l.sourceTitle,l.sourceGeneration]}),s&&s.id,n.get("connected")]);if(o.dataset.key===i)return;var d=o.contains(document.activeElement)?document.activeElement:null,c=d&&d.dataset.browserId,u=d&&d.dataset.tabAction,p=o.dataset.selected,I=o.querySelector(".shared-browser-tab-list"),fe=I?I.scrollLeft:0;o.dataset.key=i,o.dataset.selected=s&&s.id||"",o.replaceChildren();var H=document.createElement("div");H.className="shared-browser-tab-list",H.setAttribute("role","presentation"),o.appendChild(H),a.forEach(function(l,_){var j=document.createElement("div");j.className="shared-browser-tab",j.setAttribute("role","presentation");var se=!!s&&s.id===l.id,w=document.createElement("button");w.type="button",w.setAttribute("role","tab"),w.dataset.browserId=l.id,w.dataset.tabAction="select",w.setAttribute("aria-selected",String(se)),w.tabIndex=se?0:-1;var g="New tab";try{l.url&&(g=new URL(l.url).hostname||"New tab")}catch{}var ge=l.sourceRole==="worker"?"Worker #"+l.sourceSessionId:"";ge&&(g=ge+" \xB7 "+g);var nr=l.phase==="ended"?"Ended":l.phase==="starting"?"Starting":l.control==="agent"?"You and Clay can control this tab":"Only you can control this tab. Clay is paused.",Ee=g+(ge?" \xB7 "+l.sourceTitle+" \xB7 Gen "+l.sourceGeneration:"")+" \xB7 "+(l.incognito===!1?"Personal browser":"Incognito")+" \xB7 "+nr,he=document.createElement("span");he.className="shared-browser-tab-label",he.textContent=g,w.innerHTML=v(l.personalCookiesAvailable&&l.incognito?"glasses":"globe"),w.appendChild(he),w.setAttribute("aria-label",Ee),w.setAttribute("data-tip",Ee),j.dataset.phase=l.phase,j.dataset.control=l.control,w.onclick=function(){r(l.id)},w.onkeydown=function(V){var ve=V.key==="ArrowRight"?(_+1)%a.length:V.key==="ArrowLeft"?(_+a.length-1)%a.length:V.key==="Home"?0:V.key==="End"?a.length-1:-1;ve<0||(V.preventDefault(),r(a[ve].id),o.querySelectorAll('[role="tab"]')[ve].focus())};var x=document.createElement("button");x.type="button",x.className="shared-browser-tab-close",x.innerHTML=v("x"),x.dataset.browserId=l.id,x.dataset.tabAction="close",x.setAttribute("aria-label","Close browser tab "+(_+1)),x.setAttribute("data-tip","Close tab"),x.disabled=!n.get("connected"),x.onclick=function(){t("close",{browserId:l.id})},j.append(w,x),H.appendChild(j)});function Q(l,_,j,se,w){var g=document.createElement("button");g.type="button",g.className="shared-browser-new-tab",g.innerHTML=v(l),g.dataset.tabAction=w,g.setAttribute("aria-label",_),g.setAttribute("data-tip",j),g.disabled=!n.get("connected"),g.onclick=function(){t("open",se)},o.appendChild(g)}Q("plus","New browser tab",s&&s.personalCookiesAvailable?"New tab \xB7 Personal browser":"New incognito tab",{newTab:!0},"new"),s&&s.personalCookiesAvailable&&Q("glasses","New incognito tab","New incognito tab \xB7 Site data is not saved",{newTab:!0,incognito:!0},"incognito"),R(),H.scrollLeft=fe;var y=Array.from(o.querySelectorAll("button")),we=d&&y.find(function(l){return l.dataset.browserId===c&&l.dataset.tabAction===u});d&&(we||o.querySelector('[aria-selected="true"]')||y[0]).focus({preventScroll:!0});var U=o.querySelector('[aria-selected="true"]');U&&p!==o.dataset.selected&&U.scrollIntoView({block:"nearest",inline:"nearest"})}function C(){var e=n.get("sharedBrowser");return e&&!e.handoff&&e.phase==="live"&&n.get("connected")}var We=50,Ve=2e3;function A(e){n.set({sharedBrowserUi:Object.assign({},n.get("sharedBrowserUi"),e)})}function K(){var e=n.get("sharedBrowserUi")||{};clearTimeout(e.moveTimer),clearTimeout(e.wheelTimer),A({moveTimer:null,move:null,wheelTimer:null,wheelDelta:0,pointer:null,composing:!1})}function ze(e,r){function t(i){var d=e.getBoundingClientRect(),c=Math.min(d.width/e.width,d.height/e.height),u=(i.clientX-d.left-(d.width-e.width*c)/2)/c,p=(i.clientY-d.top-(d.height-e.height*c)/2)/c;return{x:Math.max(0,Math.min(e.width-1,u)),y:Math.max(0,Math.min(e.height-1,p))}}function o(){var i=n.get("sharedBrowserUi")||{};clearTimeout(i.moveTimer);var d=i.move;A({move:null,moveTimer:null}),d&&C()&&m(Object.assign({kind:"move"},d))}function a(){var i=n.get("sharedBrowserUi")||{};clearTimeout(i.wheelTimer);var d=i.wheelDelta||0;if(!C()){A({wheelDelta:0,wheelTimer:null});return}var c=Math.max(-Ve,Math.min(Ve,d)),u=d-c;A({wheelDelta:u,wheelTimer:u?setTimeout(a,We):null}),c&&m({kind:"wheel",deltaY:c})}e.addEventListener("pointermove",function(i){if(C()){var d=n.get("sharedBrowserUi")||{};A({move:t(i),moveTimer:d.moveTimer||setTimeout(o,40)})}}),e.addEventListener("pointerdown",function(i){!C()||i.button!==0||(i.preventDefault(),o(),a(),e.setPointerCapture(i.pointerId),A({pointer:i.pointerId}),r.focus({preventScroll:!0}),m(Object.assign({kind:"down"},t(i))))});function s(i){var d=n.get("sharedBrowserUi")||{};d.pointer===i.pointerId&&(o(),A({pointer:null}),C()&&m(Object.assign({kind:"up"},t(i))),e.hasPointerCapture(i.pointerId)&&e.releasePointerCapture(i.pointerId))}e.addEventListener("pointerup",s),e.addEventListener("pointercancel",s),e.addEventListener("lostpointercapture",s),e.addEventListener("wheel",function(i){if(C()){i.preventDefault();var d=n.get("sharedBrowserUi")||{};A({wheelDelta:(d.wheelDelta||0)+i.deltaY,wheelTimer:d.wheelTimer||setTimeout(a,We)})}},{passive:!1}),e.addEventListener("focus",function(){C()&&r.focus({preventScroll:!0})}),r.addEventListener("compositionstart",function(){A({composing:!0})}),r.addEventListener("compositionend",function(){A({composing:!1}),C()&&r.value&&m({kind:"text",text:r.value}),r.value=""}),r.addEventListener("input",function(){(n.get("sharedBrowserUi")||{}).composing||(C()&&r.value&&m({kind:"text",text:r.value}),r.value="")}),r.addEventListener("keydown",function(i){if(!(!C()||i.isComposing)){var d=i.key;(i.ctrlKey||i.metaKey)&&d.toLowerCase()==="a"?d="ControlOrMeta+A":d==="Tab"&&i.shiftKey&&(d="Shift+Tab"),/^(Tab|Shift\+Tab|Enter|Backspace|Delete|Escape|ArrowLeft|ArrowRight|ArrowUp|ArrowDown|Home|End|ControlOrMeta\+A)$/.test(d)&&(i.preventDefault(),m({kind:"key",key:d}))}})}function Ye(){return'<div class="shared-browser-activity"><div class="shared-browser-caption-history" role="log" aria-live="off" aria-label="Browser caption history" tabindex="0"></div><button type="button" class="shared-browser-caption-latest" hidden>Back to live \u2193</button><span class="shared-browser-caption-announcement" role="status" aria-live="polite"></span></div>'}function xe(e){n.set({sharedBrowserUi:Object.assign({},n.get("sharedBrowserUi"),e)})}function sr(e,r,t){var o=e.querySelector(".shared-browser-activity"),a=e.querySelector(".shared-browser-caption-history"),s=e.querySelector(".shared-browser-caption-latest");a.dataset.bound||(a.dataset.bound="true",a.addEventListener("scroll",function(){var y=a.scrollHeight-a.clientHeight-a.scrollTop<20;xe({captionPinned:y}),o.dataset.reviewing=String(!y),s.hidden=y}),s.onclick=function(){a.scrollTop=a.scrollHeight,xe({captionPinned:!0}),s.hidden=!0,o.dataset.reviewing="false"});var i=r&&r.activityHistory||[];o.hidden=!i.length;var d=i[i.length-1],c=r&&r.id+":"+i.length+":"+(d?d.id+":"+d.phase+":"+d.text:"empty"),u=n.get("sharedBrowserUi")||{};if(u.captionHistoryKey!==c){var p=u.captionBrowserId!==(r&&r.id),I=p||u.captionPinned!==!1,fe=a.scrollTop;a.replaceChildren(),i.forEach(function(y,we){var U=document.createElement("div");U.className="shared-browser-caption-row",U.dataset.age=String(Math.min(i.length-we-1,3));var l=document.createElement("span");if(l.className="shared-browser-activity-text",l.textContent=y.text,U.appendChild(l),y.phase==="failed"||y.phase==="interrupted"){var _=document.createElement("small");_.textContent=y.phase==="failed"?"This step could not be completed.":"This step was interrupted.",U.appendChild(_)}a.appendChild(U)}),xe({captionHistoryKey:c,captionBrowserId:r&&r.id,captionPinned:I}),a.scrollTop=I?a.scrollHeight:fe,s.hidden=I,o.dataset.reviewing=String(!I);var H=e.querySelector(".shared-browser-caption-announcement"),Q=t&&d?d.text+(d.phase==="failed"?" This step could not be completed.":""):"";H.textContent!==Q&&(H.textContent=Q)}}function Fe(e,r,t){var o=r&&r.phase==="live"&&r.control==="agent"&&!r.handoff&&t;sr(e,r,o);var a=e.querySelector("canvas"),s=o&&r.pointer,i=e.querySelector(".shared-browser-pointer");if(i.hidden=!s||s.width!==a.width||s.height!==a.height,!i.hidden){i.style.left=100*s.x/a.width+"%",i.style.top=100*s.y/a.height+"%";var d=r.id+":"+r.epoch+":"+s.sequence;(n.get("sharedBrowserUi")||{}).pointerAnimationKey!==d&&(n.set({sharedBrowserUi:Object.assign({},n.get("sharedBrowserUi"),{pointerAnimationKey:d})}),s.clicked&&!window.matchMedia("(prefers-reduced-motion: reduce)").matches&&i.querySelector("i").animate([{opacity:.8,transform:"scale(.3)"},{opacity:0,transform:"scale(1.8)"}],{duration:650}))}}var qe=["1280,800","1440,900","1024,768","800,600","375,667","390,844"];function ar(){return document.getElementById("shared-browser-resolution")}function Ke(e){n.set({sharedBrowserUi:Object.assign({},n.get("sharedBrowserUi"),{viewportMenuOpen:e})});var r=ar();r&&(r.querySelector("[data-viewport-trigger]").setAttribute("aria-expanded",String(e)),r.querySelector('[role="menu"]').hidden=!e)}function T(){Ke(!1)}function Je(){return'<div id="shared-browser-resolution" class="shared-browser-resolution"><button type="button" data-viewport-trigger aria-label="Browser viewport" aria-haspopup="menu" aria-expanded="false" aria-controls="shared-browser-resolutions"><span>1280 \xD7 800</span>'+v("chevron-up")+'</button><div id="shared-browser-resolutions" class="shared-browser-resolution-menu" role="menu" aria-label="Browser resolutions" hidden></div></div>'}function Ge(e,r,t){var o=e.querySelector(".shared-browser-resolution"),a=o.querySelector("[data-viewport-trigger]");a.disabled=!t,(!t||!n.get("sharedBrowserOpen"))&&T();var s=r?r.width+","+r.height:"1280,800";a.querySelector("span").textContent=s.replace(","," \xD7 ");var i=o.querySelector('[role="menu"]');if(i.dataset.size!==s){i.dataset.size=s;var d=qe.includes(s)?qe:qe.concat([s]);i.replaceChildren(),d.forEach(function(c){var u=document.createElement("button");u.type="button",u.setAttribute("role","menuitemradio"),u.setAttribute("aria-checked",String(c===s)),u.dataset.size=c,u.tabIndex=-1,u.textContent=c.replace(","," \xD7 "),u.setAttribute("aria-label",u.textContent),i.appendChild(u)})}}function Qe(e){var r=e.querySelector(".shared-browser-resolution"),t=r.querySelector("[data-viewport-trigger]"),o=r.querySelector('[role="menu"]');function a(s){if(!t.disabled){Ke(!0);var i=o.querySelectorAll("button"),d=o.querySelector('[aria-checked="true"]');(s?i[i.length-1]:d||i[0]).focus()}}t.onclick=function(){(n.get("sharedBrowserUi")||{}).viewportMenuOpen?T():a(!1)},t.onkeydown=function(s){(s.key==="ArrowDown"||s.key==="ArrowUp")&&(s.preventDefault(),a(s.key==="ArrowUp"))},o.onclick=function(s){var i=s.target.closest("[data-size]");if(!(!i||t.disabled)){var d=i.dataset.size.split(",");T(),t.focus(),m({kind:"resize",width:Number(d[0]),height:Number(d[1])})}},r.addEventListener("keydown",function(s){if(s.key==="Escape"){s.preventDefault(),s.stopPropagation(),T(),t.focus();return}if(s.key==="Tab"){T();return}if(!(s.target===t||!["ArrowDown","ArrowUp","Home","End"].includes(s.key))){s.preventDefault();var i=Array.from(o.querySelectorAll("button")),d=i.indexOf(document.activeElement);d=s.key==="Home"?0:s.key==="End"?i.length-1:(d+(s.key==="ArrowDown"?1:-1)+i.length)%i.length,i[d].focus()}}),document.addEventListener("pointerdown",function(s){r.contains(s.target)||T()}),r.addEventListener("focusout",function(s){r.contains(s.relatedTarget)||T()})}function W(){return window.matchMedia("(min-width: 1024px)").matches}function Ze(){var e=n.get("permissions");return W()&&!!n.get("currentSlug")&&!n.get("dmMode")&&(!e||e.terminal!==!1)}function oe(){return Ze()&&!!n.get("activeSessionId")}function G(){return document.getElementById("shared-browser-panel")}function k(e){n.set({sharedBrowserUi:Object.assign({},n.get("sharedBrowserUi"),e)})}function f(e,r){var t=n.get("sharedBrowser"),o=de(e,Object.assign({browserId:t&&t.id,epoch:t&&t.epoch},r||{}));if(o!==null)return o;var a=q();return!a||a.readyState!==1||!n.get("activeSessionId")?!1:(a.send(JSON.stringify(Object.assign({type:"shared_browser_"+e,sessionId:n.get("activeSessionId"),browserId:t&&t.id,epoch:t&&t.epoch},r||{}))),!0)}function m(e){k({error:""}),f("input",{event:e})}function $e(){var e=G();if(!(!e||!n.get("sharedBrowserOpen"))){var r=e.querySelector(".shared-browser-viewport"),t=e.querySelector("canvas"),o=t.width===800&&t.height===600?"mac":t.width===1024&&t.height===768?"crt":t.width<t.height?"phone":"laptop";r.dataset.skin=o;var a=Math.min((r.clientWidth-96)/t.width,(r.clientHeight-140-e.querySelector(".shared-browser-caption").offsetHeight)/t.height,1);if(!(a<=0)){var s=e.querySelector(".shared-browser-monitor");s.style.width=Math.floor(t.width*a)+"px",s.style.height=Math.floor(t.height*a)+"px",e.querySelector(".shared-browser-monitor-label").textContent=t.width+" \xD7 "+t.height+" \xB7 "+Math.round(a*100)+"%"}}}function N(e,r,t){return'<button type="button" data-action="'+e+'" title="'+t+'" aria-label="'+t+'">'+v(r)+"</button>"}function ue(){if(!G()){var e=document.getElementById("main-panels");if(e){var r=document.createElement("section");r.id="shared-browser-panel",r.className="shared-browser-panel hidden",r.setAttribute("aria-label","Shared browser"),r.innerHTML='<header class="shared-browser-header"><span class="shared-browser-title">'+v("globe")+'Browser</span><span class="shared-browser-phase" role="status">Ready</span><div class="shared-browser-window">'+N("settings","settings-2","Browser settings")+N("wide","chevrons-left-right","Widen browser panel")+N("fullscreen","maximize-2","Toggle browser fullscreen")+N("hide","x","Hide browser panel")+'</div></header><div class="shared-browser-tabs" role="tablist" aria-label="Browser tabs"></div><form class="shared-browser-address">'+N("back","arrow-left","Back")+N("forward","arrow-right","Forward")+N("reload","rotate-cw","Reload")+'<input aria-label="Browser address" placeholder="Enter a URL" type="text" autocomplete="off" spellcheck="false"><button type="submit" aria-label="Open address">'+v("arrow-right")+"</button></form>"+_e()+'<div class="shared-browser-viewport"><div class="shared-browser-monitor"><div class="shared-browser-pointer-layer" aria-hidden="true"><div class="shared-browser-pointer" hidden><svg viewBox="0 0 24 28"><path d="M3 2 L3 22 L8 17 L12 26 L16 24 L12 15 L20 15 Z"/></svg><i></i></div></div><canvas width="1280" height="800" tabindex="0" aria-label="Shared browser page"></canvas><div class="shared-browser-empty">'+v("globe")+'<h3>A browser you can use with Clay</h3><p>Enter an address to browse together.<br>Localhost connects to the Clay host.</p><p class="shared-browser-private">Site data lasts only for this browser session.</p></div><textarea class="shared-browser-keyboard" aria-label="Type into shared browser" autocomplete="off" autocapitalize="off" spellcheck="false"></textarea><span class="shared-browser-monitor-brand" aria-hidden="true">Clay Studio</span><span class="shared-browser-monitor-detail" aria-hidden="true"></span><span class="shared-browser-monitor-stand" aria-hidden="true"></span></div><div class="shared-browser-caption"><span class="shared-browser-monitor-label"></span>'+Ye()+'</div></div><p class="shared-browser-error hidden" role="status"></p><footer class="shared-browser-footer"><div class="shared-browser-control"><span class="shared-browser-control-status" role="status" aria-live="polite">You and Clay can control this browser</span><button type="button" data-action="control" aria-pressed="false"></button></div><div class="shared-browser-details"><span class="shared-browser-cookie-mode"></span>'+Je()+'<button type="button" data-action="end">End browser</button></div></footer>',e.appendChild(r),r.querySelector('[data-action="hide"]').onclick=J,r.querySelector('[data-action="wide"]').onclick=function(){var o=!(n.get("sharedBrowserUi")||{}).wide;k({wide:o}),h()},r.querySelector('[data-action="fullscreen"]').onclick=function(){var o=!(n.get("sharedBrowserUi")||{}).fullscreen;tr(o),me("browser",o)},["back","forward","reload"].forEach(function(o){r.querySelector('[data-action="'+o+'"]').onclick=function(){m({kind:o})}}),r.querySelector("form").onsubmit=function(o){o.preventDefault(),m({kind:"navigate",url:r.querySelector("form input").value})},r.querySelector('[data-action="control"]').onclick=function(){var o=n.get("sharedBrowser");o&&f("control",{control:o.control==="user"?"agent":"user"})},r.querySelector('[data-action="end"]').onclick=function(){var o=n.get("sharedBrowser");f(o&&o.phase==="ended"?"open":"end",o&&o.phase==="ended"?{incognito:o.incognito}:void 0)},Qe(r),je(r);var t=new ResizeObserver($e);t.observe(r.querySelector(".shared-browser-viewport")),ze(r.querySelector("canvas"),r.querySelector("textarea")),R()}}}function ce(){var e=n.get("sharedBrowser"),r=(n.get("sharedBrowsers")||[]).length,t=!!n.get("connected")&&!!n.get("activeSessionId"),o=n.get("connected")?n.get("activeSessionId")?e?"View browser":"Open browser":"Browser \xB7 Loading session\u2026":"Browser \xB7 Connecting\u2026";["shared-browser-btn","shared-browser-toggle-btn"].forEach(function(a){var s=document.getElementById(a);if(s){var i=a==="shared-browser-toggle-btn"&&t&&n.get("sharedBrowserOpen")?"Hide browser":o;if(a==="shared-browser-toggle-btn"){var d=s.querySelector(".shared-browser-count");d&&(d.textContent=String(r),d.classList.toggle("hidden",r===0)),r&&(i+=" \xB7 "+r+(r===1?" tab":" tabs"))}s.classList.toggle("hidden",!Ze()),s.title=t&&e?i+" \xB7 "+e.phase:i,s.setAttribute("aria-label",i),s.setAttribute("aria-expanded",String(!!n.get("sharedBrowserOpen"))),s.disabled=!t}})}function ir(e,r,t){return t?r?e.handoff?"Switching control\u2026":e.control==="user"?"Only you can control this browser. Clay is paused.":e.activity&&e.activity.phase==="running"?"Clay is working. You can also use this browser":"You and Clay can control this browser":e&&e.phase==="starting"?"Starting\u2026":"Ended":"Disconnected. Status returns on reconnect."}function dr(e,r,t,o){var a=e.querySelector(".shared-browser-control-status"),s=ir(r,t,o);a.textContent!==s&&(a.textContent=s);var i=e.querySelector('[data-action="control"]'),d=!!r&&r.control==="user",c=String(d);i.dataset.mode!==c&&(i.dataset.mode=c,i.innerHTML=v(d?"lock":"lock-open")+"<span>"+(d?"Resume shared control":"Pause Clay control")+"</span>",R()),i.title=d?"Let Clay act in this browser again. You keep control too.":"Make this browser exclusively yours until you resume shared control. You can use it either way.",i.setAttribute("aria-pressed",String(d))}function h(){ce();var e=G();if(e){Ne(e,lr,f);var r=n.get("sharedBrowser"),t=n.get("sharedBrowserUi")||{},o=n.get("connected"),a=r&&r.phase==="live",s=a&&!r.handoff&&o;e.classList.toggle("hidden",!n.get("sharedBrowserOpen")||!oe()),e.classList.toggle("shared-browser-wide",!!t.wide),e.classList.toggle("panel-fullscreen",!!t.fullscreen),e.querySelector('[data-action="wide"]').setAttribute("aria-pressed",t.wide?"true":"false"),e.querySelector('[data-action="fullscreen"]').setAttribute("aria-pressed",t.fullscreen?"true":"false"),e.querySelector(".shared-browser-phase").textContent=o?r?{starting:"Starting\u2026",live:"Live",ended:"Ended \xB7 Last frame"}[r.phase]:"Ready":"Disconnected",e.querySelector(".shared-browser-phase").dataset.live=a&&o?"true":"false",e.querySelector(".shared-browser-monitor").dataset.live=a&&o?"true":"false";var i=e.querySelector("form input");document.activeElement!==i&&(i.value=r?r.url:""),e.querySelectorAll("form input, form button").forEach(function(u){u.disabled=!s}),e.querySelector("textarea").disabled=!s,e.querySelector("canvas").style.cursor=s?"default":"not-allowed",dr(e,r,a,o),e.querySelector('[data-action="control"]').disabled=!a||!!r.handoff||!o,e.querySelector('[data-action="control"]').hidden=!a,e.querySelector('[data-action="end"]').disabled=!r||!o,e.querySelector('[data-action="end"]').textContent=r&&r.phase==="ended"?"New browser":"End browser";var d=r&&r.incognito===!1;e.querySelector(".shared-browser-cookie-mode").textContent=d?"Personal browser":"Incognito",e.querySelector(".shared-browser-cookie-mode").title=d?"Cookies and site storage are saved for your account across your Mates.":"Cookies and site storage are isolated and discarded when this tab ends.",e.querySelector(".shared-browser-private").textContent=d?"Your cookies and site storage are remembered across your Mates and browser restarts.":"Site data lasts only for this browser session.";var c=t.error||r&&r.error||"";e.querySelector(".shared-browser-error").textContent=c,e.querySelector(".shared-browser-error").classList.toggle("hidden",!c),e.querySelector(".shared-browser-empty").classList.toggle("hidden",!!(r&&r.url&&t.hasFrame)),Ge(e,r,s),O(),Fe(e,r,o),$e()}}function pe(e){var r=n.get("sharedBrowser");if(n.set({sharedBrowser:e}),!r||!e||r.id!==e.id){K(),T(),k({hasFrame:!1,error:"",decoding:!1,captionHistoryKey:null});var t=G();t&&t.querySelector("canvas").getContext("2d").clearRect(0,0,1920,1200)}else r.epoch!==e.epoch&&K()}function lr(e){var r=(n.get("sharedBrowsers")||[]).find(function(t){return t.id===e});r&&(pe(r),f("view",{visible:W()&&!document.hidden}),h())}function er(){return JSON.stringify([n.get("myUserId"),n.get("currentSlug"),n.get("projectSplitViewActiveId"),n.get("sessionOriginId"),n.get("projectSplitViewSocketGeneration")])}function rr(e){n.set({pendingBrowserOpen:null}),!f("open",e)&&n.set({pendingBrowserOpen:{context:er(),socket:q(),fields:e||{},expires:Date.now()+15e3}})}function cr(){var e=n.get("pendingBrowserOpen");if(e){if(e.context!==er()||e.socket!==q()||e.expires<Date.now()||!n.get("connected")||!n.get("sharedBrowserOpen")){n.set({pendingBrowserOpen:null});return}F()&&(n.set({pendingBrowserOpen:null}),f("open",e.fields)||n.set({pendingBrowserOpen:e}))}}function ot(e){F();var r=le("browser:"+e);if(!r)throw new Error("Enter a valid HTTP or HTTPS browser address.");if(!W())throw new Error("Clay Browser is available on desktop screens.");if(!oe())throw new Error("Browser access is unavailable in this conversation.");if(!n.get("connected"))throw new Error("Reconnect before opening this browser link.");ue(),ne(!1),Z("browser"),n.set({sharedBrowserOpen:!0}),k({error:""}),rr({url:r}),h()}function Xe(){if(F(),!(!oe()||!n.get("connected"))){ue(),Z("browser"),n.set({sharedBrowserOpen:!0});var e=n.get("sharedBrowser");e?f("view",{visible:!0}):rr(),h()}}function J(){tr(!1),me("browser",!1),n.get("savedWorkspaceApplying")||n.set({pendingBrowserOpen:null}),T(),ne(),K(),n.get("sharedBrowserOpen")&&f("view",{visible:!1}),n.set({sharedBrowserOpen:!1}),be("browser"),h()}function ur(e,r){if(!e.type||e.type.indexOf("shared_browser_")!==0)return!1;if(Me(e)||Pe()&&!r||String(e.sessionId)!==String(Be()||n.get("activeSessionId"))||De(e))return!0;if(e.type==="shared_browser_state"){var t=n.get("sharedBrowser"),o=e.browsers||(e.browser?[e.browser]:[]);n.set({sharedBrowsers:o});var a=!e.focus&&t&&o.find(function(u){return u.id===t.id});a=a||e.browser||o[0]||null,pe(a),n.set({savedViewBrowserListReady:!0}),e.present&&oe()&&(ue(),Z("browser"),n.set({sharedBrowserOpen:!0})),n.get("sharedBrowserOpen")&&a&&f("view",{visible:W()&&!document.hidden}),h()}else if(e.type==="shared_browser_error")k({error:e.error}),h();else if(e.type==="shared_browser_frame"){var s=n.get("sharedBrowser");if(!W()||!n.get("sharedBrowserOpen")||!s||s.id!==e.browserId||(n.get("sharedBrowserUi")||{}).decoding)return!0;var i=n.get("activeSessionId"),d=ae();k({decoding:!0});var c=new Image;c.onload=function(){var u=n.get("sharedBrowser");if(u&&u.id===e.browserId&&ae()===d&&n.get("activeSessionId")===i&&G()){var p=G().querySelector("canvas");p.width=c.naturalWidth,p.height=c.naturalHeight,p.getContext("2d").drawImage(c,0,0),k({decoding:!1,hasFrame:!0}),h(),Ce(e,p,null,p)}},c.onerror=function(){ae()===d&&n.get("activeSessionId")===i&&k({decoding:!1})},c.src="data:image/jpeg;base64,"+e.data}return!0}function st(){He(ur,function(t){var o=n.get("savedWorkspaceApplying");n.set({savedWorkspaceApplying:!0,savedViewBrowserListReady:!1});try{K(),pe(null),n.set({sharedBrowsers:[],sharedBrowserUi:{},sharedBrowserSettings:{}}),t||J(),h()}finally{n.set({savedWorkspaceApplying:o})}}),document.addEventListener("clay-pane-ready",function(){queueMicrotask(cr)},!0),ke();var e=document.getElementById("shared-browser-btn");e&&(e.onclick=Xe);var r=document.getElementById("shared-browser-toggle-btn");r&&(r.onclick=function(){n.get("sharedBrowserOpen")?J():Xe()}),window.matchMedia("(min-width: 1024px)").addEventListener("change",function(){W()||J(),ce()}),document.addEventListener("visibilitychange",function(){n.get("sharedBrowserOpen")&&f("view",{visible:!document.hidden&&W()})}),R(),ce(),n.get("connected")&&f("state_request")}Ae("browser",J);n.subscribe(function(e,r){if(e.currentSlug!==r.currentSlug||e.activeSessionId!==r.activeSessionId||e.myUserId!==r.myUserId){if(Be()!==null){h();return}K(),be("browser"),n.set({sharedBrowser:null,sharedBrowsers:[],savedViewBrowserListReady:!1,sharedBrowserOpen:!1,sharedBrowserUi:{},sharedBrowserSettings:{}}),e.connected&&f("state_request"),h()}else e.connected!==r.connected?(n.set({savedViewBrowserListReady:!1}),e.connected&&f("state_request"),h()):(e.permissions!==r.permissions||e.dmMode!==r.dmMode)&&(oe()||J(),ce())});function at(e){if(Se()&&!F())return"pending";if(!n.get("savedViewBrowserListReady"))return f("state_request"),"pending";if(!n.get("connected")||!n.get("controlRuntimeId"))return"pending";ue();var r=(n.get("sharedBrowsers")||[]).find(function(o){return o.id===e.id&&o.phase!=="ended"}),t=r&&e.runtimeId===n.get("controlRuntimeId")&&e.sessionOriginId===n.get("sessionOriginId");return Z("browser"),n.set({sharedBrowserOpen:!0}),t?(pe(r),f("view",{visible:!0}),k({error:""}),h(),"restored"):(k({error:"This saved browser is unavailable in the current conversation. No replacement browser was opened."}),h(),"unavailable")}function tr(e){k({fullscreen:!!e}),document.getElementById("shared-browser-panel")&&h()}export{gr as a,m as b,ot as c,Xe as d,J as e,ur as f,st as g,at as h,tr as i,Sr as j,or as k,Er as l};
|
|
1
|
+
import{j as Y,l as Oe,m as D,n as X,y as Ce}from"./chunk-YEKR6TQM.js";import{a as q}from"./chunk-R7QVVFUG.js";import{G as Ae,I as Z,J as be,Q as me,a as z,c as Le,d as R,e as v}from"./chunk-2JXAANCI.js";import{d as n}from"./chunk-EGCR2MH4.js";function M(){return n.get("paneBrowserSource")||null}function $(){var e=n.get("projectSplitViewFocusedOrigin")||n.get("projectSplitViewSingletonOrigin");if(e)return e;var r=(n.get("projectSplitViews")||[]).find(function(t){return t.id===n.get("projectSplitViewActiveId")});return r&&r.activeSessionOriginId||n.get("sessionOriginId")||null}var Te=null,ee=null,ye={state_request:[],open:["url","newTab","incognito"],view:["browserId","visible"],control:["browserId","control"],close:["browserId"],end:["browserId"],input:["browserId","epoch","event"]};function re(){return Array.from(document.querySelectorAll("#split-host .split-pane:not(.split-pane-cached) .split-pane-frame"))}function Se(){return!n.get("paneMode")&&re().some(function(e){return!!e.clayPane||!!Oe(n.snap(),n.get("paneBindingSessions")||[],Number(e.dataset.sessionId))})}function P(){var e=M();if(!e||e.socket!==q()||e.owner!==n.get("myUserId")||e.project!==n.get("currentSlug"))return!1;var r=e.frame;return re().includes(r)&&r.contentWindow===e.window&&r.contentDocument===e.document&&!r.dataset.requestedSessionId&&D(r,{paneBinding:e.binding})}function Be(){return P()?M().binding.sessionId:null}function ae(){var e=M();return P()?e.binding.requestId+":"+e.binding.generation:null}function Pe(){return!!M()}function ie(e,r){var t=M();if(!e||!r||!re().includes(e)||e.dataset.requestedSessionId||!D(e,{paneBinding:r}))return!1;if(P()&&t.frame===e&&Y(t.binding,r))return t.focusedOrigin!==$()&&n.set({paneBrowserSource:Object.assign({},t,{focusedOrigin:$()})}),!0;var o=n.get("sharedBrowser");return P()&&o&&de("view",{browserId:o.id,visible:!1}),n.set({paneBrowserSource:{frame:e,window:e.contentWindow,document:e.contentDocument,binding:r,socket:q(),owner:n.get("myUserId"),project:n.get("currentSlug"),focusedOrigin:$()},paneBrowserTarget:r}),ee&&ee(!0),!0}function F(){if(P()&&M().focusedOrigin===$())return!0;var e=re(),r=$(),t=e.find(function(a){return r&&a.dataset.sessionOriginId===r})||e.find(function(a){var s=a.closest(".split-pane");return s&&s.dataset.active==="true"})||e[0],o=t&&t.clayPane&&t.clayPane.identity();return!!o&&ie(t,o.binding)}function de(e,r){var t=M();return Object.prototype.hasOwnProperty.call(ye,e)?!t&&!Se()?null:!P()||!t.frame.clayPane||typeof t.frame.clayPane.browserCommand!="function"?!1:t.frame.clayPane.browserCommand(e,r||{},t.binding):!1}function gr(e,r,t){var o=Object.prototype.hasOwnProperty.call(ye,e)&&ye[e],a=q();if(!o||!a||a.readyState!==1||!Y(t,X())||!n.get("connected")||n.get("panePendingBinding")||n.get("activeSessionId")!==t.sessionId)return!1;var s={type:"shared_browser_"+e,sessionId:t.sessionId,paneBinding:t};return o.forEach(function(i){Object.prototype.hasOwnProperty.call(r,i)&&(s[i]=r[i])}),a.send(JSON.stringify(s)),!0}function Me(e){var r=window.frameElement;if(!n.get("paneMode")||!r||!r.clayPane||["shared_browser_state","shared_browser_frame","shared_browser_error"].indexOf(e.type)<0)return!1;var t=X();return t&&Y(t,e.paneActivation)&&window.parent.postMessage({type:"clay-pane-browser-update",paneBinding:t,message:e},location.origin),!0}function He(e,r){n.get("paneMode")||(Te=e,ee=r,window.addEventListener("message",function(t){var o=t.data;if(!(t.origin!==location.origin||!o||o.type!=="clay-pane-browser-update"||!o.message)){var a=re().find(function(d){return d.contentWindow===t.source}),s=o.message,i=M();!a||!D(a,o)||!Y(o.paneBinding,s.paneActivation)||s.sessionId!==o.paneBinding.sessionId||["shared_browser_state","shared_browser_frame","shared_browser_error"].indexOf(s.type)<0||(!P()||i.frame!==a||!Y(i.binding,o.paneBinding))&&(s.type!=="shared_browser_state"||!s.present||!ie(a,o.paneBinding))||Te(s,!0)}}),document.addEventListener("clay-pane-ready",function(){queueMicrotask(function(){!P()&&F()&&de("state_request",{})})},!0),n.subscribe(function(){var t=M();t&&!P()&&(n.set({paneBrowserSource:null,paneBrowserTarget:null}),ee&&ee(!1))}))}function Ue(e){return!n.get("paneMode")||window.parent===window?!1:(window.parent.postMessage({type:"clay-pane-open-browser",paneBinding:X(),url:e,projectSlug:n.get("currentSlug"),sessionId:String(n.get("activeSessionId"))},window.location.origin),!0)}function Sr(e,r){if(!e||e.origin!==window.location.origin||!r||!e.data||e.data.type!=="clay-pane-open-browser")return!1;var t=e.data,o=Object.assign({},n.snap()),a=Array.from(r.querySelectorAll(".split-pane-frame")).find(function(p){return p.contentWindow===e.source}),s=a&&a.clayPane?{slug:a.dataset.projectSlug,sessionId:a.dataset.sessionId}:a&&o.splitPanes&&o.splitPanes.panes&&o.splitPanes.panes.find(function(p){return String(p.slug)===a.dataset.projectSlug&&String(p.sessionId)===a.dataset.sessionId});if(!o.connected||!s||t.projectSlug!==o.currentSlug||t.projectSlug!==a.dataset.projectSlug||String(t.sessionId)!==a.dataset.sessionId)return!0;var i=new URL("/p/"+encodeURIComponent(s.slug)+"/?pane=1&session="+encodeURIComponent(s.sessionId),window.location.href).href;if(a.clayPane?!D(a,t):a.src!==i)return!0;var d=a.clayPane&&a.clayPane.identity().binding,c=a.contentDocument;function u(){var p=n.snap();return!p.connected||p.currentSlug!==o.currentSlug||p.myUserId!==o.myUserId||p.currentProjectOwnerId!==o.currentProjectOwnerId||p.projectSplitViewSocketGeneration!==o.projectSplitViewSocketGeneration||a.contentWindow!==e.source||a.contentDocument!==c||a.dataset.projectSlug!==t.projectSlug||String(a.dataset.sessionId)!==String(t.sessionId)||!Array.from(r.querySelectorAll(".split-pane-frame")).includes(a)?!1:d?!!a.clayPane&&D(a,t)&&a.clayPane.identity().binding===d:a.src===i&&!!(p.splitPanes&&p.splitPanes.panes.some(function(I){return String(I.slug)===s.slug&&String(I.sessionId)===String(s.sessionId)}))}return import("./chunk-MIY5SZAA.js").then(function(p){!u()||d&&!ie(a,d)||p.openSharedBrowserAt(t.url)}).catch(function(p){z(p.message||"Could not open the browser.","warn")}),!0}function te(e){return String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function le(e){if(typeof e!="string"||!e.startsWith("browser:")||e.length>8200)return null;var r=e.slice(8);if(!/^https?:\/\//i.test(r)||/[\u0000-\u0020]/.test(r))return null;try{var t=new URL(r);return t.username||t.password||!["http:","https:"].includes(t.protocol)?null:t.href}catch{return null}}function or(e,r,t){var o=le(e);if(!o)return null;var a=String(t||"").replace(/<[^>]*>/g,"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").trim();return(!a||a===e||a===o)&&(a=new URL(o).host),'<button type="button" class="clay-browser-link clayos-record-link" data-browser-url="'+te(o)+'" data-browser-project="'+te(n.get("currentSlug")||"")+'" title="'+te("Open in Clay Browser \xB7 "+o)+'" aria-label="'+te("Open in Clay Browser: "+a)+'">'+v("globe")+"<span>Browser</span><small>"+te(a)+"</small></button>"}function Er(e){!e||typeof document>"u"||(e.querySelectorAll("a[href]").forEach(function(r){if(!r.closest("pre, code, button")){var t=or(r.getAttribute("href"),"",r.textContent);if(t){var o=document.createElement("template");o.innerHTML=t,r.replaceWith(o.content)}}}),ke(),R())}function ke(){n.get("browserLinksBound")||(n.set({browserLinksBound:!0}),document.addEventListener("click",function(e){var r=e.target.closest&&e.target.closest(".clay-browser-link");if(r){e.preventDefault(),e.stopPropagation();var t=le("browser:"+r.dataset.browserUrl);if(!t){z("This browser link is invalid.","warn");return}if(r.dataset.browserProject&&r.dataset.browserProject!==n.get("currentSlug")){z("Open this link from its original project.","warn");return}Ue(t)||import("./chunk-MIY5SZAA.js").then(function(o){o.openSharedBrowserAt(t)}).catch(function(o){z(o.message||"Could not open the browser.","warn")})}}))}function b(e){return Le(String(e)).replace(/"/g,""").replace(/'/g,"'")}function B(){return n.get("sharedBrowserSettings")||{}}function S(e){n.set({sharedBrowserSettings:Object.assign({},B(),e)})}function E(){return document.getElementById("shared-browser-settings")}function L(e,r,t,o){return'<button type="button" data-settings-action="'+r+'" data-target="'+b(t||"")+'" data-label="'+b(o||t||"")+'">'+b(e)+"</button>"}function Ie(e,r){var t=q();if(!t||t.readyState!==1){S({error:"Reconnect to manage browser data.",pending:!1}),O();return}var o=crypto.randomUUID();S({pending:!0,requestId:o,error:"",notice:""}),t.send(JSON.stringify({type:"shared_browser_settings",sessionId:n.get("activeSessionId"),requestId:o,operation:e,target:r})),O(),setTimeout(function(){B().requestId===o&&B().pending&&(S({pending:!1,error:"The request timed out. Refresh to check the saved state."}),O())},15e3)}function ne(e){var r=!!B().open;S({open:!1,review:null}),O();var t=document.querySelector('[data-action="settings"]');t&&r&&e!==!1&&t.focus()}function _e(){return'<section id="shared-browser-settings" class="shared-browser-settings" aria-label="Browser settings" hidden></section>'}function je(e){e.querySelector('[data-action="settings"]').onclick=function(){S({open:!0,page:"sites",data:null,review:null,filter:""}),Ie("list"),E().querySelector('[data-settings-action="back"]').focus()},E().addEventListener("keydown",function(r){r.key==="Escape"&&(r.preventDefault(),r.stopPropagation(),ne())}),E().addEventListener("input",function(r){r.target.matches("[data-settings-filter]")&&(S({filter:r.target.value}),Re(),E().dataset.key=JSON.stringify([B(),n.get("connected")]))}),E().addEventListener("click",function(r){var t=r.target.closest("[data-settings-action]");if(!(!t||t.disabled)){var o=t.dataset.settingsAction;if(o==="back"){ne();return}if(o==="sites"||o==="history"){S({page:o,filter:"",review:null,notice:"",error:""}),O();return}if(o==="refresh"){Ie("list");return}if(o==="cancel"){S({review:null}),O(),E().querySelector('[data-settings-action="refresh"]').focus();return}if(o==="confirm"){var a=B().review;a&&Ie(a.action,a.target);return}S({notice:"",error:"",review:{action:o,target:t.dataset.target,label:t.dataset.label||t.dataset.target}}),O(),E().querySelector('[data-settings-action="cancel"]').focus()}})}function Re(){var e=E(),r=B();if(!(!e||!r.open)){var t=e.querySelector(".browser-settings-rows");if(t){var o=(r.filter||"").toLowerCase(),a=r.data||{sites:[],history:[]};r.page==="history"?t.innerHTML=a.history.filter(function(s){return s.url.toLowerCase().includes(o)}).map(function(s){return'<div class="browser-settings-row"><div><span class="browser-settings-url">'+b(s.url)+"</span><small>"+b(new Date(s.at).toLocaleString())+"</small></div>"+L("Remove","delete_history",s.id,s.url)+"</div>"}).join(""):t.innerHTML=a.sites.filter(function(s){return s.host.toLowerCase().includes(o)}).map(function(s){return"<details><summary>"+b(s.host)+"<small>"+s.cookies.length+(s.cookies.length===1?" cookie \xB7 ":" cookies \xB7 ")+s.origins.length+(s.origins.length===1?" storage origin":" storage origins")+'</small></summary><div class="browser-settings-row"><span>Cookies and site storage</span>'+L("Remove site data","delete_site",s.host)+"</div>"+s.origins.map(function(i){return'<p class="browser-settings-origin">'+b(i.origin)+"<small>"+i.localStorage+" localStorage entries \xB7 "+i.databases+" IndexedDB databases</small></p>"}).join("")+s.cookies.map(function(i){var d=i.domain+i.path+" \xB7 "+(i.expires===-1?"Session cookie":"Expires "+new Date(i.expires*1e3).toLocaleDateString())+(i.httpOnly?" \xB7 HttpOnly":"")+(i.secure?" \xB7 Secure":"")+(i.partitioned?" \xB7 Partitioned":"");return'<div class="browser-settings-row"><div><span>'+b(i.name)+"</span><small>"+b(d)+"</small></div>"+L("Remove cookie","delete_cookie",i.id,i.name+" \xB7 "+i.domain+i.path)+"</div>"}).join("")+"</details>"}).join(""),t.innerHTML||(t.innerHTML='<p class="browser-settings-muted">'+(r.pending&&!r.data?"Loading saved data\u2026":o?"No matching entries.":r.page==="history"?"No saved browsing history.":"No saved cookies or site data.")+"</p>"),t.querySelectorAll("button").forEach(function(s){s.disabled=!!r.pending||!n.get("connected")})}}}function O(){var e=E();if(e){var r=B(),t=e.closest(".shared-browser-panel"),o=n.get("sharedBrowser"),a=t.querySelector('[data-action="settings"]');if(a.hidden=!(o&&o.personalCookiesAvailable),a.disabled=!n.get("connected"),a.setAttribute("aria-expanded",String(!!r.open)),e.hidden=!r.open,t.classList.toggle("browser-settings-open",!!r.open),!!r.open){var s=JSON.stringify([r,n.get("connected")]);if(e.dataset.key!==s){e.dataset.key=s;var i=r.page||"sites";e.innerHTML='<div class="browser-settings-heading">'+L("Back to browser","back")+'<h3>Browser settings</h3></div><p class="browser-settings-muted">Personal \xB7 Shared across your Mates. Incognito tabs do not save data here.</p><nav aria-label="Browser settings sections">'+L("Cookies & site data","sites")+L("History","history")+'</nav><p class="browser-settings-muted">'+(i==="sites"?"Cookies, localStorage and IndexedDB are saved for your account. New personal tabs restore saved site storage. Removing data may sign you out. Removals also apply to open personal tabs. Sites may create new data afterwards.":"Your latest 500 page visits. Clearing this list leaves open tabs, their Back/Forward navigation and conversation activity unchanged.")+'</p><div class="browser-settings-tools"><input data-settings-filter aria-label="Filter saved browser data" placeholder="'+(i==="sites"?"Find a site":"Find a page")+'" value="'+b(r.filter||"")+'">'+L("Refresh","refresh")+L(i==="sites"?"Clear all site data":"Clear history",i==="sites"?"clear_data":"clear_history")+'</div><p class="browser-settings-feedback" role="status">'+b(r.error||(n.get("connected")?r.pending?"Updating\u2026":r.notice||"":"Disconnected. Reconnect and refresh to see current saved data."))+"</p>"+(r.review?'<div class="browser-settings-review" role="group" aria-label="Confirm removal"><strong>'+(r.review.action.includes("history")?"Remove browsing history?":"Remove saved site data?")+"</strong><p>"+(r.review.action.includes("history")?"This removes "+(r.review.action==="clear_history"?"all saved visits":"this saved visit")+" from your personal history.":r.review.action==="delete_cookie"?"This removes "+b(r.review.label)+" across your personal Mate browsers and may sign you out.":"This removes "+(r.review.action==="clear_data"?"all cookies and site storage":"cookies and storage for "+b(r.review.target))+" across your personal Mate browsers and may sign you out.")+"</p>"+L("Cancel","cancel")+L("Remove","confirm")+"</div>":"")+'<div class="browser-settings-rows"></div>',e.querySelector('[data-settings-action="'+i+'"]').setAttribute("aria-current","page"),e.querySelectorAll("button").forEach(function(d){d.disabled=d.dataset.settingsAction!=="back"&&(!!r.pending||!n.get("connected"))}),Re()}}}}function De(e){if(!e.requestId||e.requestId!==B().requestId)return!1;if(e.type==="shared_browser_settings"){var r=!!B().review;S({data:e.settings,pending:!1,review:null,error:"",notice:r?"Removed from your saved browser data.":""})}else if(e.type==="shared_browser_error")S({pending:!1,error:e.error});else return!1;return O(),B().open&&r&&E().querySelector('[data-settings-action="refresh"]').focus(),!0}function Ne(e,r,t){var o=e.querySelector(".shared-browser-tabs"),a=n.get("sharedBrowsers")||[],s=n.get("sharedBrowser"),i=JSON.stringify([a.map(function(l){return[l.id,l.url,l.control,l.phase,l.incognito,l.personalCookiesAvailable,l.sourceSessionId,l.sourceRole,l.sourceTitle,l.sourceGeneration]}),s&&s.id,n.get("connected")]);if(o.dataset.key===i)return;var d=o.contains(document.activeElement)?document.activeElement:null,c=d&&d.dataset.browserId,u=d&&d.dataset.tabAction,p=o.dataset.selected,I=o.querySelector(".shared-browser-tab-list"),fe=I?I.scrollLeft:0;o.dataset.key=i,o.dataset.selected=s&&s.id||"",o.replaceChildren();var H=document.createElement("div");H.className="shared-browser-tab-list",H.setAttribute("role","presentation"),o.appendChild(H),a.forEach(function(l,_){var j=document.createElement("div");j.className="shared-browser-tab",j.setAttribute("role","presentation");var se=!!s&&s.id===l.id,w=document.createElement("button");w.type="button",w.setAttribute("role","tab"),w.dataset.browserId=l.id,w.dataset.tabAction="select",w.setAttribute("aria-selected",String(se)),w.tabIndex=se?0:-1;var g="New tab";try{l.url&&(g=new URL(l.url).hostname||"New tab")}catch{}var ge=l.sourceRole==="worker"?"Worker #"+l.sourceSessionId:"";ge&&(g=ge+" \xB7 "+g);var nr=l.phase==="ended"?"Ended":l.phase==="starting"?"Starting":l.control==="agent"?"You and Clay can control this tab":"Only you can control this tab. Clay is paused.",Ee=g+(ge?" \xB7 "+l.sourceTitle+" \xB7 Gen "+l.sourceGeneration:"")+" \xB7 "+(l.incognito===!1?"Personal browser":"Incognito")+" \xB7 "+nr,he=document.createElement("span");he.className="shared-browser-tab-label",he.textContent=g,w.innerHTML=v(l.personalCookiesAvailable&&l.incognito?"glasses":"globe"),w.appendChild(he),w.setAttribute("aria-label",Ee),w.setAttribute("data-tip",Ee),j.dataset.phase=l.phase,j.dataset.control=l.control,w.onclick=function(){r(l.id)},w.onkeydown=function(V){var ve=V.key==="ArrowRight"?(_+1)%a.length:V.key==="ArrowLeft"?(_+a.length-1)%a.length:V.key==="Home"?0:V.key==="End"?a.length-1:-1;ve<0||(V.preventDefault(),r(a[ve].id),o.querySelectorAll('[role="tab"]')[ve].focus())};var x=document.createElement("button");x.type="button",x.className="shared-browser-tab-close",x.innerHTML=v("x"),x.dataset.browserId=l.id,x.dataset.tabAction="close",x.setAttribute("aria-label","Close browser tab "+(_+1)),x.setAttribute("data-tip","Close tab"),x.disabled=!n.get("connected"),x.onclick=function(){t("close",{browserId:l.id})},j.append(w,x),H.appendChild(j)});function Q(l,_,j,se,w){var g=document.createElement("button");g.type="button",g.className="shared-browser-new-tab",g.innerHTML=v(l),g.dataset.tabAction=w,g.setAttribute("aria-label",_),g.setAttribute("data-tip",j),g.disabled=!n.get("connected"),g.onclick=function(){t("open",se)},o.appendChild(g)}Q("plus","New browser tab",s&&s.personalCookiesAvailable?"New tab \xB7 Personal browser":"New incognito tab",{newTab:!0},"new"),s&&s.personalCookiesAvailable&&Q("glasses","New incognito tab","New incognito tab \xB7 Site data is not saved",{newTab:!0,incognito:!0},"incognito"),R(),H.scrollLeft=fe;var y=Array.from(o.querySelectorAll("button")),we=d&&y.find(function(l){return l.dataset.browserId===c&&l.dataset.tabAction===u});d&&(we||o.querySelector('[aria-selected="true"]')||y[0]).focus({preventScroll:!0});var U=o.querySelector('[aria-selected="true"]');U&&p!==o.dataset.selected&&U.scrollIntoView({block:"nearest",inline:"nearest"})}function C(){var e=n.get("sharedBrowser");return e&&!e.handoff&&e.phase==="live"&&n.get("connected")}var We=50,Ve=2e3;function A(e){n.set({sharedBrowserUi:Object.assign({},n.get("sharedBrowserUi"),e)})}function K(){var e=n.get("sharedBrowserUi")||{};clearTimeout(e.moveTimer),clearTimeout(e.wheelTimer),A({moveTimer:null,move:null,wheelTimer:null,wheelDelta:0,pointer:null,composing:!1})}function ze(e,r){function t(i){var d=e.getBoundingClientRect(),c=Math.min(d.width/e.width,d.height/e.height),u=(i.clientX-d.left-(d.width-e.width*c)/2)/c,p=(i.clientY-d.top-(d.height-e.height*c)/2)/c;return{x:Math.max(0,Math.min(e.width-1,u)),y:Math.max(0,Math.min(e.height-1,p))}}function o(){var i=n.get("sharedBrowserUi")||{};clearTimeout(i.moveTimer);var d=i.move;A({move:null,moveTimer:null}),d&&C()&&m(Object.assign({kind:"move"},d))}function a(){var i=n.get("sharedBrowserUi")||{};clearTimeout(i.wheelTimer);var d=i.wheelDelta||0;if(!C()){A({wheelDelta:0,wheelTimer:null});return}var c=Math.max(-Ve,Math.min(Ve,d)),u=d-c;A({wheelDelta:u,wheelTimer:u?setTimeout(a,We):null}),c&&m({kind:"wheel",deltaY:c})}e.addEventListener("pointermove",function(i){if(C()){var d=n.get("sharedBrowserUi")||{};A({move:t(i),moveTimer:d.moveTimer||setTimeout(o,40)})}}),e.addEventListener("pointerdown",function(i){!C()||i.button!==0||(i.preventDefault(),o(),a(),e.setPointerCapture(i.pointerId),A({pointer:i.pointerId}),r.focus({preventScroll:!0}),m(Object.assign({kind:"down"},t(i))))});function s(i){var d=n.get("sharedBrowserUi")||{};d.pointer===i.pointerId&&(o(),A({pointer:null}),C()&&m(Object.assign({kind:"up"},t(i))),e.hasPointerCapture(i.pointerId)&&e.releasePointerCapture(i.pointerId))}e.addEventListener("pointerup",s),e.addEventListener("pointercancel",s),e.addEventListener("lostpointercapture",s),e.addEventListener("wheel",function(i){if(C()){i.preventDefault();var d=n.get("sharedBrowserUi")||{};A({wheelDelta:(d.wheelDelta||0)+i.deltaY,wheelTimer:d.wheelTimer||setTimeout(a,We)})}},{passive:!1}),e.addEventListener("focus",function(){C()&&r.focus({preventScroll:!0})}),r.addEventListener("compositionstart",function(){A({composing:!0})}),r.addEventListener("compositionend",function(){A({composing:!1}),C()&&r.value&&m({kind:"text",text:r.value}),r.value=""}),r.addEventListener("input",function(){(n.get("sharedBrowserUi")||{}).composing||(C()&&r.value&&m({kind:"text",text:r.value}),r.value="")}),r.addEventListener("keydown",function(i){if(!(!C()||i.isComposing)){var d=i.key;(i.ctrlKey||i.metaKey)&&d.toLowerCase()==="a"?d="ControlOrMeta+A":d==="Tab"&&i.shiftKey&&(d="Shift+Tab"),/^(Tab|Shift\+Tab|Enter|Backspace|Delete|Escape|ArrowLeft|ArrowRight|ArrowUp|ArrowDown|Home|End|ControlOrMeta\+A)$/.test(d)&&(i.preventDefault(),m({kind:"key",key:d}))}})}function Ye(){return'<div class="shared-browser-activity"><div class="shared-browser-caption-history" role="log" aria-live="off" aria-label="Browser caption history" tabindex="0"></div><button type="button" class="shared-browser-caption-latest" hidden>Back to live \u2193</button><span class="shared-browser-caption-announcement" role="status" aria-live="polite"></span></div>'}function xe(e){n.set({sharedBrowserUi:Object.assign({},n.get("sharedBrowserUi"),e)})}function sr(e,r,t){var o=e.querySelector(".shared-browser-activity"),a=e.querySelector(".shared-browser-caption-history"),s=e.querySelector(".shared-browser-caption-latest");a.dataset.bound||(a.dataset.bound="true",a.addEventListener("scroll",function(){var y=a.scrollHeight-a.clientHeight-a.scrollTop<20;xe({captionPinned:y}),o.dataset.reviewing=String(!y),s.hidden=y}),s.onclick=function(){a.scrollTop=a.scrollHeight,xe({captionPinned:!0}),s.hidden=!0,o.dataset.reviewing="false"});var i=r&&r.activityHistory||[];o.hidden=!i.length;var d=i[i.length-1],c=r&&r.id+":"+i.length+":"+(d?d.id+":"+d.phase+":"+d.text:"empty"),u=n.get("sharedBrowserUi")||{};if(u.captionHistoryKey!==c){var p=u.captionBrowserId!==(r&&r.id),I=p||u.captionPinned!==!1,fe=a.scrollTop;a.replaceChildren(),i.forEach(function(y,we){var U=document.createElement("div");U.className="shared-browser-caption-row",U.dataset.age=String(Math.min(i.length-we-1,3));var l=document.createElement("span");if(l.className="shared-browser-activity-text",l.textContent=y.text,U.appendChild(l),y.phase==="failed"||y.phase==="interrupted"){var _=document.createElement("small");_.textContent=y.phase==="failed"?"This step could not be completed.":"This step was interrupted.",U.appendChild(_)}a.appendChild(U)}),xe({captionHistoryKey:c,captionBrowserId:r&&r.id,captionPinned:I}),a.scrollTop=I?a.scrollHeight:fe,s.hidden=I,o.dataset.reviewing=String(!I);var H=e.querySelector(".shared-browser-caption-announcement"),Q=t&&d?d.text+(d.phase==="failed"?" This step could not be completed.":""):"";H.textContent!==Q&&(H.textContent=Q)}}function Fe(e,r,t){var o=r&&r.phase==="live"&&r.control==="agent"&&!r.handoff&&t;sr(e,r,o);var a=e.querySelector("canvas"),s=o&&r.pointer,i=e.querySelector(".shared-browser-pointer");if(i.hidden=!s||s.width!==a.width||s.height!==a.height,!i.hidden){i.style.left=100*s.x/a.width+"%",i.style.top=100*s.y/a.height+"%";var d=r.id+":"+r.epoch+":"+s.sequence;(n.get("sharedBrowserUi")||{}).pointerAnimationKey!==d&&(n.set({sharedBrowserUi:Object.assign({},n.get("sharedBrowserUi"),{pointerAnimationKey:d})}),s.clicked&&!window.matchMedia("(prefers-reduced-motion: reduce)").matches&&i.querySelector("i").animate([{opacity:.8,transform:"scale(.3)"},{opacity:0,transform:"scale(1.8)"}],{duration:650}))}}var qe=["1280,800","1440,900","1024,768","800,600","375,667","390,844"];function ar(){return document.getElementById("shared-browser-resolution")}function Ke(e){n.set({sharedBrowserUi:Object.assign({},n.get("sharedBrowserUi"),{viewportMenuOpen:e})});var r=ar();r&&(r.querySelector("[data-viewport-trigger]").setAttribute("aria-expanded",String(e)),r.querySelector('[role="menu"]').hidden=!e)}function T(){Ke(!1)}function Je(){return'<div id="shared-browser-resolution" class="shared-browser-resolution"><button type="button" data-viewport-trigger aria-label="Browser viewport" aria-haspopup="menu" aria-expanded="false" aria-controls="shared-browser-resolutions"><span>1280 \xD7 800</span>'+v("chevron-up")+'</button><div id="shared-browser-resolutions" class="shared-browser-resolution-menu" role="menu" aria-label="Browser resolutions" hidden></div></div>'}function Ge(e,r,t){var o=e.querySelector(".shared-browser-resolution"),a=o.querySelector("[data-viewport-trigger]");a.disabled=!t,(!t||!n.get("sharedBrowserOpen"))&&T();var s=r?r.width+","+r.height:"1280,800";a.querySelector("span").textContent=s.replace(","," \xD7 ");var i=o.querySelector('[role="menu"]');if(i.dataset.size!==s){i.dataset.size=s;var d=qe.includes(s)?qe:qe.concat([s]);i.replaceChildren(),d.forEach(function(c){var u=document.createElement("button");u.type="button",u.setAttribute("role","menuitemradio"),u.setAttribute("aria-checked",String(c===s)),u.dataset.size=c,u.tabIndex=-1,u.textContent=c.replace(","," \xD7 "),u.setAttribute("aria-label",u.textContent),i.appendChild(u)})}}function Qe(e){var r=e.querySelector(".shared-browser-resolution"),t=r.querySelector("[data-viewport-trigger]"),o=r.querySelector('[role="menu"]');function a(s){if(!t.disabled){Ke(!0);var i=o.querySelectorAll("button"),d=o.querySelector('[aria-checked="true"]');(s?i[i.length-1]:d||i[0]).focus()}}t.onclick=function(){(n.get("sharedBrowserUi")||{}).viewportMenuOpen?T():a(!1)},t.onkeydown=function(s){(s.key==="ArrowDown"||s.key==="ArrowUp")&&(s.preventDefault(),a(s.key==="ArrowUp"))},o.onclick=function(s){var i=s.target.closest("[data-size]");if(!(!i||t.disabled)){var d=i.dataset.size.split(",");T(),t.focus(),m({kind:"resize",width:Number(d[0]),height:Number(d[1])})}},r.addEventListener("keydown",function(s){if(s.key==="Escape"){s.preventDefault(),s.stopPropagation(),T(),t.focus();return}if(s.key==="Tab"){T();return}if(!(s.target===t||!["ArrowDown","ArrowUp","Home","End"].includes(s.key))){s.preventDefault();var i=Array.from(o.querySelectorAll("button")),d=i.indexOf(document.activeElement);d=s.key==="Home"?0:s.key==="End"?i.length-1:(d+(s.key==="ArrowDown"?1:-1)+i.length)%i.length,i[d].focus()}}),document.addEventListener("pointerdown",function(s){r.contains(s.target)||T()}),r.addEventListener("focusout",function(s){r.contains(s.relatedTarget)||T()})}function W(){return window.matchMedia("(min-width: 1024px)").matches}function Ze(){var e=n.get("permissions");return W()&&!!n.get("currentSlug")&&!n.get("dmMode")&&(!e||e.terminal!==!1)}function oe(){return Ze()&&!!n.get("activeSessionId")}function G(){return document.getElementById("shared-browser-panel")}function k(e){n.set({sharedBrowserUi:Object.assign({},n.get("sharedBrowserUi"),e)})}function f(e,r){var t=n.get("sharedBrowser"),o=de(e,Object.assign({browserId:t&&t.id,epoch:t&&t.epoch},r||{}));if(o!==null)return o;var a=q();return!a||a.readyState!==1||!n.get("activeSessionId")?!1:(a.send(JSON.stringify(Object.assign({type:"shared_browser_"+e,sessionId:n.get("activeSessionId"),browserId:t&&t.id,epoch:t&&t.epoch},r||{}))),!0)}function m(e){k({error:""}),f("input",{event:e})}function $e(){var e=G();if(!(!e||!n.get("sharedBrowserOpen"))){var r=e.querySelector(".shared-browser-viewport"),t=e.querySelector("canvas"),o=t.width===800&&t.height===600?"mac":t.width===1024&&t.height===768?"crt":t.width<t.height?"phone":"laptop";r.dataset.skin=o;var a=Math.min((r.clientWidth-96)/t.width,(r.clientHeight-140-e.querySelector(".shared-browser-caption").offsetHeight)/t.height,1);if(!(a<=0)){var s=e.querySelector(".shared-browser-monitor");s.style.width=Math.floor(t.width*a)+"px",s.style.height=Math.floor(t.height*a)+"px",e.querySelector(".shared-browser-monitor-label").textContent=t.width+" \xD7 "+t.height+" \xB7 "+Math.round(a*100)+"%"}}}function N(e,r,t){return'<button type="button" data-action="'+e+'" title="'+t+'" aria-label="'+t+'">'+v(r)+"</button>"}function ue(){if(!G()){var e=document.getElementById("main-panels");if(e){var r=document.createElement("section");r.id="shared-browser-panel",r.className="shared-browser-panel hidden",r.setAttribute("aria-label","Shared browser"),r.innerHTML='<header class="shared-browser-header"><span class="shared-browser-title">'+v("globe")+'Browser</span><span class="shared-browser-phase" role="status">Ready</span><div class="shared-browser-window">'+N("settings","settings-2","Browser settings")+N("wide","chevrons-left-right","Widen browser panel")+N("fullscreen","maximize-2","Toggle browser fullscreen")+N("hide","x","Hide browser panel")+'</div></header><div class="shared-browser-tabs" role="tablist" aria-label="Browser tabs"></div><form class="shared-browser-address">'+N("back","arrow-left","Back")+N("forward","arrow-right","Forward")+N("reload","rotate-cw","Reload")+'<input aria-label="Browser address" placeholder="Enter a URL" type="text" autocomplete="off" spellcheck="false"><button type="submit" aria-label="Open address">'+v("arrow-right")+"</button></form>"+_e()+'<div class="shared-browser-viewport"><div class="shared-browser-monitor"><div class="shared-browser-pointer-layer" aria-hidden="true"><div class="shared-browser-pointer" hidden><svg viewBox="0 0 24 28"><path d="M3 2 L3 22 L8 17 L12 26 L16 24 L12 15 L20 15 Z"/></svg><i></i></div></div><canvas width="1280" height="800" tabindex="0" aria-label="Shared browser page"></canvas><div class="shared-browser-empty">'+v("globe")+'<h3>A browser you can use with Clay</h3><p>Enter an address to browse together.<br>Localhost connects to the Clay host.</p><p class="shared-browser-private">Site data lasts only for this browser session.</p></div><textarea class="shared-browser-keyboard" aria-label="Type into shared browser" autocomplete="off" autocapitalize="off" spellcheck="false"></textarea><span class="shared-browser-monitor-brand" aria-hidden="true">Clay Studio</span><span class="shared-browser-monitor-detail" aria-hidden="true"></span><span class="shared-browser-monitor-stand" aria-hidden="true"></span></div><div class="shared-browser-caption"><span class="shared-browser-monitor-label"></span>'+Ye()+'</div></div><p class="shared-browser-error hidden" role="status"></p><footer class="shared-browser-footer"><div class="shared-browser-control"><span class="shared-browser-control-status" role="status" aria-live="polite">You and Clay can control this browser</span><button type="button" data-action="control" aria-pressed="false"></button></div><div class="shared-browser-details"><span class="shared-browser-cookie-mode"></span>'+Je()+'<button type="button" data-action="end">End browser</button></div></footer>',e.appendChild(r),r.querySelector('[data-action="hide"]').onclick=J,r.querySelector('[data-action="wide"]').onclick=function(){var o=!(n.get("sharedBrowserUi")||{}).wide;k({wide:o}),h()},r.querySelector('[data-action="fullscreen"]').onclick=function(){var o=!(n.get("sharedBrowserUi")||{}).fullscreen;tr(o),me("browser",o)},["back","forward","reload"].forEach(function(o){r.querySelector('[data-action="'+o+'"]').onclick=function(){m({kind:o})}}),r.querySelector("form").onsubmit=function(o){o.preventDefault(),m({kind:"navigate",url:r.querySelector("form input").value})},r.querySelector('[data-action="control"]').onclick=function(){var o=n.get("sharedBrowser");o&&f("control",{control:o.control==="user"?"agent":"user"})},r.querySelector('[data-action="end"]').onclick=function(){var o=n.get("sharedBrowser");f(o&&o.phase==="ended"?"open":"end",o&&o.phase==="ended"?{incognito:o.incognito}:void 0)},Qe(r),je(r);var t=new ResizeObserver($e);t.observe(r.querySelector(".shared-browser-viewport")),ze(r.querySelector("canvas"),r.querySelector("textarea")),R()}}}function ce(){var e=n.get("sharedBrowser"),r=(n.get("sharedBrowsers")||[]).length,t=!!n.get("connected")&&!!n.get("activeSessionId"),o=n.get("connected")?n.get("activeSessionId")?e?"View browser":"Open browser":"Browser \xB7 Loading session\u2026":"Browser \xB7 Connecting\u2026";["shared-browser-btn","shared-browser-toggle-btn"].forEach(function(a){var s=document.getElementById(a);if(s){var i=a==="shared-browser-toggle-btn"&&t&&n.get("sharedBrowserOpen")?"Hide browser":o;if(a==="shared-browser-toggle-btn"){var d=s.querySelector(".shared-browser-count");d&&(d.textContent=String(r),d.classList.toggle("hidden",r===0)),r&&(i+=" \xB7 "+r+(r===1?" tab":" tabs"))}s.classList.toggle("hidden",!Ze()),s.title=t&&e?i+" \xB7 "+e.phase:i,s.setAttribute("aria-label",i),s.setAttribute("aria-expanded",String(!!n.get("sharedBrowserOpen"))),s.disabled=!t}})}function ir(e,r,t){return t?r?e.handoff?"Switching control\u2026":e.control==="user"?"Only you can control this browser. Clay is paused.":e.activity&&e.activity.phase==="running"?"Clay is working. You can also use this browser":"You and Clay can control this browser":e&&e.phase==="starting"?"Starting\u2026":"Ended":"Disconnected. Status returns on reconnect."}function dr(e,r,t,o){var a=e.querySelector(".shared-browser-control-status"),s=ir(r,t,o);a.textContent!==s&&(a.textContent=s);var i=e.querySelector('[data-action="control"]'),d=!!r&&r.control==="user",c=String(d);i.dataset.mode!==c&&(i.dataset.mode=c,i.innerHTML=v(d?"lock":"lock-open")+"<span>"+(d?"Resume shared control":"Pause Clay control")+"</span>",R()),i.title=d?"Let Clay act in this browser again. You keep control too.":"Make this browser exclusively yours until you resume shared control. You can use it either way.",i.setAttribute("aria-pressed",String(d))}function h(){ce();var e=G();if(e){Ne(e,lr,f);var r=n.get("sharedBrowser"),t=n.get("sharedBrowserUi")||{},o=n.get("connected"),a=r&&r.phase==="live",s=a&&!r.handoff&&o;e.classList.toggle("hidden",!n.get("sharedBrowserOpen")||!oe()),e.classList.toggle("shared-browser-wide",!!t.wide),e.classList.toggle("panel-fullscreen",!!t.fullscreen),e.querySelector('[data-action="wide"]').setAttribute("aria-pressed",t.wide?"true":"false"),e.querySelector('[data-action="fullscreen"]').setAttribute("aria-pressed",t.fullscreen?"true":"false"),e.querySelector(".shared-browser-phase").textContent=o?r?{starting:"Starting\u2026",live:"Live",ended:"Ended \xB7 Last frame"}[r.phase]:"Ready":"Disconnected",e.querySelector(".shared-browser-phase").dataset.live=a&&o?"true":"false",e.querySelector(".shared-browser-monitor").dataset.live=a&&o?"true":"false";var i=e.querySelector("form input");document.activeElement!==i&&(i.value=r?r.url:""),e.querySelectorAll("form input, form button").forEach(function(u){u.disabled=!s}),e.querySelector("textarea").disabled=!s,e.querySelector("canvas").style.cursor=s?"default":"not-allowed",dr(e,r,a,o),e.querySelector('[data-action="control"]').disabled=!a||!!r.handoff||!o,e.querySelector('[data-action="control"]').hidden=!a,e.querySelector('[data-action="end"]').disabled=!r||!o,e.querySelector('[data-action="end"]').textContent=r&&r.phase==="ended"?"New browser":"End browser";var d=r&&r.incognito===!1;e.querySelector(".shared-browser-cookie-mode").textContent=d?"Personal browser":"Incognito",e.querySelector(".shared-browser-cookie-mode").title=d?"Cookies and site storage are saved for your account across your Mates.":"Cookies and site storage are isolated and discarded when this tab ends.",e.querySelector(".shared-browser-private").textContent=d?"Your cookies and site storage are remembered across your Mates and browser restarts.":"Site data lasts only for this browser session.";var c=t.error||r&&r.error||"";e.querySelector(".shared-browser-error").textContent=c,e.querySelector(".shared-browser-error").classList.toggle("hidden",!c),e.querySelector(".shared-browser-empty").classList.toggle("hidden",!!(r&&r.url&&t.hasFrame)),Ge(e,r,s),O(),Fe(e,r,o),$e()}}function pe(e){var r=n.get("sharedBrowser");if(n.set({sharedBrowser:e}),!r||!e||r.id!==e.id){K(),T(),k({hasFrame:!1,error:"",decoding:!1,captionHistoryKey:null});var t=G();t&&t.querySelector("canvas").getContext("2d").clearRect(0,0,1920,1200)}else r.epoch!==e.epoch&&K()}function lr(e){var r=(n.get("sharedBrowsers")||[]).find(function(t){return t.id===e});r&&(pe(r),f("view",{visible:W()&&!document.hidden}),h())}function er(){return JSON.stringify([n.get("myUserId"),n.get("currentSlug"),n.get("projectSplitViewActiveId"),n.get("sessionOriginId"),n.get("projectSplitViewSocketGeneration")])}function rr(e){n.set({pendingBrowserOpen:null}),!f("open",e)&&n.set({pendingBrowserOpen:{context:er(),socket:q(),fields:e||{},expires:Date.now()+15e3}})}function cr(){var e=n.get("pendingBrowserOpen");if(e){if(e.context!==er()||e.socket!==q()||e.expires<Date.now()||!n.get("connected")||!n.get("sharedBrowserOpen")){n.set({pendingBrowserOpen:null});return}F()&&(n.set({pendingBrowserOpen:null}),f("open",e.fields)||n.set({pendingBrowserOpen:e}))}}function ot(e){F();var r=le("browser:"+e);if(!r)throw new Error("Enter a valid HTTP or HTTPS browser address.");if(!W())throw new Error("Clay Browser is available on desktop screens.");if(!oe())throw new Error("Browser access is unavailable in this conversation.");if(!n.get("connected"))throw new Error("Reconnect before opening this browser link.");ue(),ne(!1),Z("browser"),n.set({sharedBrowserOpen:!0}),k({error:""}),rr({url:r}),h()}function Xe(){if(F(),!(!oe()||!n.get("connected"))){ue(),Z("browser"),n.set({sharedBrowserOpen:!0});var e=n.get("sharedBrowser");e?f("view",{visible:!0}):rr(),h()}}function J(){tr(!1),me("browser",!1),n.get("savedWorkspaceApplying")||n.set({pendingBrowserOpen:null}),T(),ne(),K(),n.get("sharedBrowserOpen")&&f("view",{visible:!1}),n.set({sharedBrowserOpen:!1}),be("browser"),h()}function ur(e,r){if(!e.type||e.type.indexOf("shared_browser_")!==0)return!1;if(Me(e)||Pe()&&!r||String(e.sessionId)!==String(Be()||n.get("activeSessionId"))||De(e))return!0;if(e.type==="shared_browser_state"){var t=n.get("sharedBrowser"),o=e.browsers||(e.browser?[e.browser]:[]);n.set({sharedBrowsers:o});var a=!e.focus&&t&&o.find(function(u){return u.id===t.id});a=a||e.browser||o[0]||null,pe(a),n.set({savedViewBrowserListReady:!0}),e.present&&oe()&&(ue(),Z("browser"),n.set({sharedBrowserOpen:!0})),n.get("sharedBrowserOpen")&&a&&f("view",{visible:W()&&!document.hidden}),h()}else if(e.type==="shared_browser_error")k({error:e.error}),h();else if(e.type==="shared_browser_frame"){var s=n.get("sharedBrowser");if(!W()||!n.get("sharedBrowserOpen")||!s||s.id!==e.browserId||(n.get("sharedBrowserUi")||{}).decoding)return!0;var i=n.get("activeSessionId"),d=ae();k({decoding:!0});var c=new Image;c.onload=function(){var u=n.get("sharedBrowser");if(u&&u.id===e.browserId&&ae()===d&&n.get("activeSessionId")===i&&G()){var p=G().querySelector("canvas");p.width=c.naturalWidth,p.height=c.naturalHeight,p.getContext("2d").drawImage(c,0,0),k({decoding:!1,hasFrame:!0}),h(),Ce(e,p,null,p)}},c.onerror=function(){ae()===d&&n.get("activeSessionId")===i&&k({decoding:!1})},c.src="data:image/jpeg;base64,"+e.data}return!0}function st(){He(ur,function(t){var o=n.get("savedWorkspaceApplying");n.set({savedWorkspaceApplying:!0,savedViewBrowserListReady:!1});try{K(),pe(null),n.set({sharedBrowsers:[],sharedBrowserUi:{},sharedBrowserSettings:{}}),t||J(),h()}finally{n.set({savedWorkspaceApplying:o})}}),document.addEventListener("clay-pane-ready",function(){queueMicrotask(cr)},!0),ke();var e=document.getElementById("shared-browser-btn");e&&(e.onclick=Xe);var r=document.getElementById("shared-browser-toggle-btn");r&&(r.onclick=function(){n.get("sharedBrowserOpen")?J():Xe()}),window.matchMedia("(min-width: 1024px)").addEventListener("change",function(){W()||J(),ce()}),document.addEventListener("visibilitychange",function(){n.get("sharedBrowserOpen")&&f("view",{visible:!document.hidden&&W()})}),R(),ce(),n.get("connected")&&f("state_request")}Ae("browser",J);n.subscribe(function(e,r){if(e.currentSlug!==r.currentSlug||e.activeSessionId!==r.activeSessionId||e.myUserId!==r.myUserId){if(Be()!==null){h();return}K(),be("browser"),n.set({sharedBrowser:null,sharedBrowsers:[],savedViewBrowserListReady:!1,sharedBrowserOpen:!1,sharedBrowserUi:{},sharedBrowserSettings:{}}),e.connected&&f("state_request"),h()}else e.connected!==r.connected?(n.set({savedViewBrowserListReady:!1}),e.connected&&f("state_request"),h()):(e.permissions!==r.permissions||e.dmMode!==r.dmMode)&&(oe()||J(),ce())});function at(e){if(Se()&&!F())return"pending";if(!n.get("savedViewBrowserListReady"))return f("state_request"),"pending";if(!n.get("connected")||!n.get("controlRuntimeId"))return"pending";ue();var r=(n.get("sharedBrowsers")||[]).find(function(o){return o.id===e.id&&o.phase!=="ended"}),t=r&&e.runtimeId===n.get("controlRuntimeId")&&e.sessionOriginId===n.get("sessionOriginId");return Z("browser"),n.set({sharedBrowserOpen:!0}),t?(pe(r),f("view",{visible:!0}),k({error:""}),h(),"restored"):(k({error:"This saved browser is unavailable in the current conversation. No replacement browser was opened."}),h(),"unavailable")}function tr(e){k({fullscreen:!!e}),document.getElementById("shared-browser-panel")&&h()}export{gr as a,m as b,ot as c,Xe as d,J as e,ur as f,st as g,at as h,tr as i,Sr as j,or as k,Er as l};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Ad as c,Bd as d,Cd as e,Dd as f,Ed as g,Fd as h,Gd as i,Hd as j,Id as k,Jd as l,Kd as m,Ld as n,yd as a,zd as b}from"./chunk-
|
|
1
|
+
import{Ad as c,Bd as d,Cd as e,Dd as f,Ed as g,Fd as h,Gd as i,Hd as j,Id as k,Jd as l,Kd as m,Ld as n,yd as a,zd as b}from"./chunk-JFPKTZNT.js";import"./chunk-SMMJMW5H.js";import"./chunk-YHBTK56T.js";import"./chunk-M3R7EZRU.js";import"./chunk-C2FSPTQF.js";import"./chunk-YEKR6TQM.js";import"./chunk-R7QVVFUG.js";import"./chunk-2JXAANCI.js";import"./chunk-EGCR2MH4.js";export{d as closeProjectLogs,k as handleProjectLogCommentReviewed,j as handleProjectLogCommented,l as handleProjectLogDeleted,f as handleProjectLogEntry,m as handleProjectLogUpdated,n as handleProjectLogsError,e as handleProjectLogsState,h as handleScheduledTaskResultCreated,i as handleScheduledTaskResultSession,g as handleScheduledTaskResultsState,a as initProjectLogs,c as openProjectLog,b as openProjectLogs};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as a,c as b,d as c,e as d,f as e,g as f,h as g,i as h}from"./chunk-
|
|
1
|
+
import{b as a,c as b,d as c,e as d,f as e,g as f,h as g,i as h}from"./chunk-M3R7EZRU.js";import"./chunk-YEKR6TQM.js";import"./chunk-R7QVVFUG.js";import"./chunk-2JXAANCI.js";import"./chunk-EGCR2MH4.js";export{e as handleSharedBrowserMessage,d as hideSharedBrowser,f as initSharedBrowser,c as openSharedBrowser,b as openSharedBrowserAt,g as restoreExistingBrowser,a as sendBrowserInput,h as setBrowserExpanded};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{pa as a,qa as b,ra as c,sa as d,ta as e,ua as f,va as g,wa as h,xa as i,ya as j,za as k}from"./chunk-
|
|
1
|
+
import{pa as a,qa as b,ra as c,sa as d,ta as e,ua as f,va as g,wa as h,xa as i,ya as j,za as k}from"./chunk-JFPKTZNT.js";import"./chunk-SMMJMW5H.js";import"./chunk-YHBTK56T.js";import"./chunk-M3R7EZRU.js";import"./chunk-C2FSPTQF.js";import"./chunk-YEKR6TQM.js";import"./chunk-R7QVVFUG.js";import"./chunk-2JXAANCI.js";import"./chunk-EGCR2MH4.js";export{g as actOnFilePane,f as closeFilePane,b as filePaneState,a as filePaneStates,h as mountFilePane,i as openIndependentFile,e as repaintFilePane,k as resetFilePanes,j as routeFilePaneMessage,d as sendFilePaneRequest,c as updateFilePaneState};
|