Files
T

27 lines
14 KiB
JavaScript

const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./logbook-view-C3X0A817.js","./rolldown-runtime-DkW27tQK.js","./control-ui-core-pH6nakZ-.js","./control-ui-foundation-CeFMP1Ly.js","./lit-runtime-BEtFSUCp.js","./control-ui-core-DGVkFhVB.js","./control-ui-core-Br5DB0Zj.js","./gateway-runtime-DUNO4Mi1.js","./control-ui-core-C8H8-RSs.css","./control-ui-boot-Cdpgu1Gm.js","./control-ui-boot-wpHCbPL9.js","./control-ui-boot-gfE6fZcA.js","./config-runtime-C4gfjhZc.js","./control-ui-boot-CKTkvwFZ.js","./control-ui-boot-BPFwXC8p.js","./control-ui-boot-DdPrPuw0.js","./control-ui-boot-9_2QGLIL.js","./control-ui-boot-J-x6DHHT.js","./control-ui-boot-B1lcIXow.js","./control-ui-boot-Clhp68JE.js","./control-ui-boot-D1DWJlBr.js","./control-ui-boot-CQvujP8f.js","./control-ui-boot-BW_XZcbY.js","./control-ui-boot-__AsqpzJ.css","./markdown-runtime-BcrsAQtF.js","./logbook-controller-CNu_bIUT.js","./logbook-view-Da1oyswH.css","./logbook-controller-KhrazFCX.js"])))=>i.map(i=>d[i]);
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{Nr as t,Pr as n,er as r}from"./control-ui-foundation-CeFMP1Ly.js";import{Yi as i,Zi as a,dl as o,ml as s,vr as c,yr as l}from"./control-ui-core-pH6nakZ-.js";import{G as u,J as d,W as f,Z as p,at as m,rt as h}from"./lit-runtime-BEtFSUCp.js";import{Bt as g,Ft as _,Jt as v,Rt as y,Wt as b,m as x,p as S,zt as C}from"./control-ui-core-DGVkFhVB.js";import{Dt as w,Ht as T,Ot as E,St as D,Tt as O,qt as k}from"./control-ui-core-Br5DB0Zj.js";import{In as A,Ln as j}from"./control-ui-boot-wpHCbPL9.js";import{Ai as M,Di as N}from"./control-ui-boot-Cdpgu1Gm.js";import{$ as P,Q as F,Y as I,Z as L,et as R}from"./control-ui-boot-BPFwXC8p.js";function z(e,t){if(!t.path||e.pluginId!==t.pluginId)return!1;let n=R(t.path);return n?e.match===`exact`?n===e.path:n===e.path||n.startsWith(e.path)&&(e.path.endsWith(`/`)||n.at(e.path.length)===`/`):!1}var B,V,H,U;function W(){return(W=e((()=>{j(),f(),p(),P(),x(),v(),_(),D(),w(),T(),N(),s(),l(),i(),n(),B=1e4,V=5e3,H={"logbook/logbook":async()=>{let[{renderLogbook:e},{stopLogbookPolling:n}]=await Promise.all([t(()=>import(`./logbook-view-C3X0A817.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]),import.meta.url),t(()=>import(`./logbook-controller-KhrazFCX.js`),__vite__mapDeps([27,25,1,2,3,4,5,6,7,8]),import.meta.url)]);return{render:e,stop:n}}},U=class extends o{constructor(...e){super(...e),this.pluginId=``,this.tabId=``,this.bundledViewState={status:`idle`},this.externalAuthReadyKey=null,this.externalAuthUnavailableKey=null,this.bundledViewHost={},this.gatewayClient=null,this.gatewayConnected=!1,this.externalAuthTargetKey=null,this.externalAuthRefreshMarker=null,this.externalAuthRefreshAbortController=null,this.externalAuthRefreshWatchdog=null,this.externalAuthProbeMarker=null,this.externalAuthProbeAbortController=null,this.externalAuthRestartKey=null,this.externalAuthRefreshTimer=null,this.externalAuthExpiryTimer=null,this.externalAuthRefreshedAt=0,this.subscriptions=new c(this).watch(()=>this.context?.gateway,(e,t)=>e.subscribe(t),e=>this.updateGatewaySource(e)).watch(()=>this.context?.sessions,(e,t)=>e.subscribe(t)),this.handleVisibilityChange=()=>{if(!(document.visibilityState!==`visible`||!this.externalAuthTargetKey)){if(Date.now()-this.externalAuthRefreshedAt>=3e5){this.externalAuthReadyKey=null,this.externalAuthRefreshedAt=0,this.requestExternalTabAuthRestart(this.externalAuthTargetKey);return}this.refreshExternalTabAuth(this.externalAuthTargetKey)}},this.retryBundledView=()=>{let e=this.bundledViewState;e.status!==`error`||!this.hasCurrentBundledDescriptor(e.id)||(y(e.error)?C():this.bundledViewState={status:`idle`})}}connectedCallback(){super.connectedCallback(),document.addEventListener(`visibilitychange`,this.handleVisibilityChange)}disconnectedCallback(){document.removeEventListener(`visibilitychange`,this.handleVisibilityChange),this.clearExternalTabAuth(),this.subscriptions.clear(),this.stopBundledView(),super.disconnectedCallback()}tabKey(){return a({pluginId:this.pluginId,id:this.tabId})}loadBundledView(e){let t=H[e];return t?t():Promise.reject(Error(`Unknown bundled plugin tab: ${e}`))}hasCurrentBundledDescriptor(e){return this.tabKey()===e&&this.tabInfo()!==void 0&&e in H}startBundledViewLoad(e){let t={status:`loading`,id:e,token:{}};this.bundledViewState=t;let n=n=>{this.bundledViewState.status!==`loading`||this.bundledViewState.token!==t.token||!this.hasCurrentBundledDescriptor(e)||(this.bundledViewState=n,n.status===`error`&&y(n.error)&&g())};this.loadBundledView(e).then(t=>n({status:`ready`,id:e,view:t}),t=>n({status:`error`,id:e,error:t}))}willUpdate(){if(!this.isConnected)return;let e=this.tabKey(),t=this.tabInfo(),n=t!==void 0&&e in H,r=this.bundledViewState;r.status!==`idle`&&(r.id!==e||!n)&&this.stopBundledView(),this.bundledViewState.status===`idle`&&n&&this.startBundledViewLoad(e),this.syncExternalTabAuth(t,n)}externalTabAuthKey(e,t){return e?.path&&e.requiresGatewayAuth===!0&&!t&&this.isExternalTabAuthSupported()?`${this.tabKey()}\n${e.path}`:null}isExternalTabAuthSupported(){return window.isSecureContext}probeExternalTabAuth(e,t){let n=new URL(e,window.location.href);if(n.origin!==window.location.origin)return Promise.resolve(!1);let r=new Uint8Array(16);crypto.getRandomValues(r);let i=Array.from(r,e=>e.toString(16).padStart(2,`0`)).join(``);return n.searchParams.set(F,i),n.searchParams.set(L,window.location.origin),new Promise(e=>{let r=document.createElement(`iframe`);r.hidden=!0,r.setAttribute(`aria-hidden`,`true`),r.setAttribute(`sandbox`,`allow-scripts`);let a=null,o=n=>{a&&clearTimeout(a),window.removeEventListener(`message`,s),t.removeEventListener(`abort`,c),r.remove(),e(n)},s=e=>{e.source===r.contentWindow&&e.data?.type===`openclaw-plugin-frame-auth-probe`&&e.data?.nonce===i&&o(!0)},c=()=>o(!1);window.addEventListener(`message`,s),t.addEventListener(`abort`,c,{once:!0}),a=setTimeout(()=>o(!1),V),r.src=n.toString(),document.body.append(r)})}syncExternalTabAuth(e,t){let n=this.externalTabAuthKey(e,t);this.externalAuthTargetKey!==n&&(this.clearExternalTabAuth(),this.externalAuthTargetKey=n),n&&this.externalAuthReadyKey!==n&&this.externalAuthUnavailableKey!==n&&this.refreshExternalTabAuth(n)}refreshExternalTabAuth(e){let t=this.context;if(!t||t.gateway.snapshot.phase!==`connected`||this.externalAuthTargetKey!==e||this.externalAuthRefreshMarker||this.externalAuthProbeMarker)return;let n={},r=Date.now(),i=new AbortController;this.externalAuthUnavailableKey=null,this.externalAuthRefreshMarker=n,this.externalAuthRefreshAbortController=i,this.externalAuthRefreshWatchdog=setTimeout(()=>{this.externalAuthRefreshMarker===n&&this.requestExternalTabAuthRestart(e)},B),t.config.refresh({signal:i.signal}).then(t=>{if(this.externalAuthRefreshMarker!==n||this.externalAuthTargetKey!==e)return;if(this.finishExternalTabAuthRefreshAttempt(e)){this.refreshExternalTabAuth(e);return}let i=this.tabInfo(),a=i?.path;t!==null&&i!==void 0&&a!==void 0&&t.pluginFrameGrants.some(e=>z(e,i))?this.startExternalTabAuthProbe(e,a,r):t?(this.externalAuthReadyKey=null,this.externalAuthUnavailableKey=e,this.externalAuthRefreshedAt=0):this.scheduleExternalTabAuthRefresh(e,!1)}).catch(()=>{this.externalAuthRefreshMarker===n&&this.externalAuthTargetKey===e&&(this.finishExternalTabAuthRefreshAttempt(e)?this.refreshExternalTabAuth(e):this.scheduleExternalTabAuthRefresh(e,!1))})}startExternalTabAuthProbe(e,t,n){this.cancelExternalTabAuthProbe();let r={},i=new AbortController;this.externalAuthProbeMarker=r,this.externalAuthProbeAbortController=i;let a;try{a=this.probeExternalTabAuth(t,i.signal)}catch{a=Promise.resolve(!1)}a.catch(()=>!1).then(t=>{if(this.externalAuthProbeMarker===r&&this.externalAuthTargetKey===e){if(this.externalAuthProbeMarker=null,this.externalAuthProbeAbortController=null,t){this.externalAuthReadyKey=e,this.externalAuthRefreshedAt=n,this.scheduleExternalTabAuthExpiry(e,n),this.scheduleExternalTabAuthRefresh(e,!0);return}this.externalAuthReadyKey=null,this.externalAuthUnavailableKey=e,this.externalAuthRefreshedAt=0,this.externalAuthRefreshTimer&&=(clearTimeout(this.externalAuthRefreshTimer),null),this.externalAuthExpiryTimer&&=(clearTimeout(this.externalAuthExpiryTimer),null)}})}cancelExternalTabAuthProbe(){this.externalAuthProbeMarker=null;let e=this.externalAuthProbeAbortController;this.externalAuthProbeAbortController=null,e?.abort()}finishExternalTabAuthRefreshAttempt(e){let t=this.externalAuthRestartKey===e;return this.externalAuthRefreshWatchdog&&clearTimeout(this.externalAuthRefreshWatchdog),this.externalAuthRefreshWatchdog=null,this.externalAuthRefreshAbortController=null,this.externalAuthRefreshMarker=null,this.externalAuthRestartKey=null,t}requestExternalTabAuthRestart(e){if(this.externalAuthTargetKey===e){if(this.externalAuthRefreshMarker){this.externalAuthRestartKey=e,this.externalAuthRefreshAbortController?.abort();return}this.externalAuthProbeMarker&&this.cancelExternalTabAuthProbe(),this.refreshExternalTabAuth(e)}}scheduleExternalTabAuthExpiry(e,t){this.externalAuthExpiryTimer&&clearTimeout(this.externalAuthExpiryTimer);let n=Math.max(0,t+I-Date.now());this.externalAuthExpiryTimer=setTimeout(()=>{this.externalAuthExpiryTimer=null,this.externalAuthTargetKey===e&&this.externalAuthReadyKey===e&&(this.externalAuthReadyKey=null,this.externalAuthRefreshedAt=0,this.externalAuthRefreshTimer&&=(clearTimeout(this.externalAuthRefreshTimer),null),this.requestExternalTabAuthRestart(e))},n)}scheduleExternalTabAuthRefresh(e,t){this.externalAuthRefreshTimer&&clearTimeout(this.externalAuthRefreshTimer);let n=t?I/2:5e3;this.externalAuthRefreshTimer=setTimeout(()=>{this.externalAuthRefreshTimer=null,this.refreshExternalTabAuth(e)},n)}clearExternalTabAuth(){this.externalAuthRefreshTimer&&clearTimeout(this.externalAuthRefreshTimer),this.externalAuthExpiryTimer&&clearTimeout(this.externalAuthExpiryTimer),this.externalAuthRefreshWatchdog&&clearTimeout(this.externalAuthRefreshWatchdog),this.externalAuthRefreshAbortController?.abort(),this.cancelExternalTabAuthProbe(),this.externalAuthRefreshTimer=null,this.externalAuthExpiryTimer=null,this.externalAuthRefreshWatchdog=null,this.externalAuthRefreshAbortController=null,this.externalAuthRefreshMarker=null,this.externalAuthRestartKey=null,this.externalAuthTargetKey=null,this.externalAuthReadyKey=null,this.externalAuthUnavailableKey=null,this.externalAuthRefreshedAt=0}resetExternalTabAuthForGatewayChange(e,t){this.externalAuthRefreshTimer&&=(clearTimeout(this.externalAuthRefreshTimer),null),this.externalAuthExpiryTimer&&=(clearTimeout(this.externalAuthExpiryTimer),null),this.externalAuthReadyKey=null,this.externalAuthUnavailableKey=null,this.externalAuthRefreshedAt=0,this.externalAuthTargetKey=e,this.cancelExternalTabAuthProbe(),this.externalAuthRefreshMarker?(this.externalAuthRestartKey=t?e:null,this.externalAuthRefreshAbortController?.abort()):t&&this.refreshExternalTabAuth(e)}stopBundledView(){this.replaceBundledViewHost(),this.bundledViewState={status:`idle`}}replaceBundledViewHost(){this.bundledViewState.status===`ready`&&this.bundledViewState.view.stop(this.bundledViewHost),this.bundledViewHost={}}updateGatewaySource(e){let{client:t}=e.snapshot,n=e.snapshot.phase===`connected`;if(this.gatewaySource===e&&this.gatewayClient===t&&this.gatewayConnected===n)return;let r=this.externalAuthTargetKey;this.replaceBundledViewHost(),this.gatewaySource=e,this.gatewayClient=t,this.gatewayConnected=n,r&&this.resetExternalTabAuthForGatewayChange(r,n)}tabInfo(){return(this.context?.gateway.snapshot.hello?.controlUiTabs??[]).find(e=>e.pluginId===this.pluginId&&e.id===this.tabId)}render(){let e=this.context;if(!e)return u;let t=this.tabInfo();if(t&&this.tabKey()in H){let t=this.bundledViewState;if(t.status===`loading`)return E();if(t.status===`error`)return O({error:t.error,onRetry:this.retryBundledView,stale:y(t.error)});if(t.status!==`ready`)return u;let n=e.gateway.snapshot,r=e.config?.current;return t.view.render({host:this.bundledViewHost,client:n.client,connected:n.phase===`connected`,embed:r?{embedSandboxMode:r.embedSandboxMode,allowExternalEmbedUrls:r.allowExternalEmbedUrls}:void 0,onRequestUpdate:()=>this.requestUpdate(),basePath:e.basePath,sessionKey:n.sessionKey,sessionListRevision:e.sessions?.canonicalListRevision,canApproveWidgets:b(n.hello?.auth??null)})}if(t?.path){if(t.requiresGatewayAuth===!0&&!this.isExternalTabAuthSupported())return d`
<section class="card lazy-view-state" role="status">
<div class="card-title">${k(`login.failure.insecure.title`)}</div>
<div class="card-sub">${k(`login.failure.insecure.stepHttps`)}</div>
</section>
`;let n=this.externalTabAuthKey(t,!1);return t.requiresGatewayAuth===!0&&this.externalAuthUnavailableKey===n?d`
<section class="card lazy-view-state" role="status">
<div class="card-title">${k(`pluginTabs.unavailableTitle`)}</div>
<div class="card-sub">${k(`pluginTabs.unavailableSubtitle`)}</div>
</section>
`:t.requiresGatewayAuth===!0&&this.externalAuthReadyKey!==n?u:d`
<section class="plugin-tab-embed">
<iframe
class="plugin-tab-embed__frame"
src=${t.path}
title=${t.label}
sandbox=${M(e.config.current.embedSandboxMode)}
></iframe>
</section>
`}return d`
<section class="card lazy-view-state" role="status">
<div class="card-title">${k(`pluginTabs.unavailableTitle`)}</div>
<div class="card-sub">${k(`pluginTabs.unavailableSubtitle`)}</div>
</section>
`}},r([m({attribute:!1})],U.prototype,`pluginId`,void 0),r([m({attribute:!1})],U.prototype,`tabId`,void 0),r([A({context:S,subscribe:!0})],U.prototype,`context`,void 0),r([h()],U.prototype,`bundledViewState`,void 0),r([h()],U.prototype,`externalAuthReadyKey`,void 0),r([h()],U.prototype,`externalAuthUnavailableKey`,void 0),customElements.get(`openclaw-plugin-page`)||customElements.define(`openclaw-plugin-page`,U)})))()}W();
//# sourceMappingURL=plugin-page-CzJYqRX_.js.map