@sv-print/plugin-cloud 0.0.0-stage → 0.1.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.
@@ -0,0 +1,30 @@
1
+ (function(te,ke){typeof exports=="object"&&typeof module!="undefined"?ke(exports,require("sv-print")):typeof define=="function"&&define.amd?define(["exports","sv-print"],ke):(te=typeof globalThis!="undefined"?globalThis:te||self,ke(te.pluginCloud={},te.SVPrint))})(this,function(te,ke){"use strict";var Ni=Object.defineProperty,Ji=Object.defineProperties;var Ri=Object.getOwnPropertyDescriptors;var kn=Object.getOwnPropertySymbols;var Hi=Object.prototype.hasOwnProperty,Bi=Object.prototype.propertyIsEnumerable;var Ht=(te,ke,Ce)=>ke in te?Ni(te,ke,{enumerable:!0,configurable:!0,writable:!0,value:Ce}):te[ke]=Ce,Xe=(te,ke)=>{for(var Ce in ke||(ke={}))Hi.call(ke,Ce)&&Ht(te,Ce,ke[Ce]);if(kn)for(var Ce of kn(ke))Bi.call(ke,Ce)&&Ht(te,Ce,ke[Ce]);return te},lt=(te,ke)=>Ji(te,Ri(ke));var le=(te,ke,Ce)=>Ht(te,typeof ke!="symbol"?ke+"":ke,Ce);var X=(te,ke,Ce)=>new Promise((_t,ht)=>{var vt=Ke=>{try{nt(Ce.next(Ke))}catch(at){ht(at)}},mt=Ke=>{try{nt(Ce.throw(Ke))}catch(at){ht(at)}},nt=Ke=>Ke.done?_t(Ke.value):Promise.resolve(Ke.value).then(vt,mt);nt((Ce=Ce.apply(te,ke)).next())});function Ce(n,e){!n||n.__cloudExtended||(n.serverRender=function(t={}){var l,s;return e.render(lt(Xe({},t),{template:(s=t.template)!=null?s:(l=n.getJson)==null?void 0:l.call(n)}))},n.cloudPrint=function(t){var l,s;return e.cloudPrint(lt(Xe({},t),{template_data:(s=t.template_data)!=null?s:(l=n.getJson)==null?void 0:l.call(n)}))},n.transitPrint=function(t={}){var l,s;return e.transitPrint(lt(Xe({},t),{template:(s=t.template)!=null?s:(l=n.getJson)==null?void 0:l.call(n)}))},n.restoreCloud=function(){delete n.serverRender,delete n.cloudPrint,delete n.transitPrint,delete n.restoreCloud,delete n.__cloudExtended},n.__cloudExtended=!0)}const _t="cloud-template-center";function ht(n,e,t){const l=e.templateCenter||{};if(l.enable===!1)return;const s=n==null?void 0:n.header;if(!(s!=null&&s.updateMenuList))return;const i={cloudMenu:_t,icon:l.icon||"sv-templates",title:l.menuTitle||"模板中心",click:()=>t()};s.updateMenuList(c=>{var f;if(c.some(_=>_&&_.cloudMenu===_t))return;const o=(f=l.menuOrder)!=null?f:0,p=o<0?Math.max(0,c.length+1+o):Math.min(o,c.length);c.splice(p,0,i)})}class vt{constructor(e){le(this,"host");le(this,"tokenGetter");le(this,"onUnauthorizedCb");le(this,"adapter");this.host=(e.host||"").replace(/\/+$/,""),this.adapter=e.requestAdapter}setTokenGetter(e){this.tokenGetter=e}setOnUnauthorized(e){this.onUnauthorizedCb=e}notifyUnauthorized(){var e;try{(e=this.onUnauthorizedCb)==null||e.call(this)}catch(t){}}apiUrl(e){if(/^https?:\/\//i.test(e))return e;const t=e.startsWith("/")?e:`/${e}`;return`${this.host}/api${t}`}absUrl(e){return/^https?:\/\//i.test(e)?e:`${this.host}${e.startsWith("/")?e:`/${e}`}`}buildUrl(e,t){let l=this.apiUrl(e);if(t){const s=new URLSearchParams;Object.keys(t).forEach(c=>{const o=t[c];o==null||o===""||(Array.isArray(o)?o.forEach(p=>s.append(c,String(p))):s.append(c,String(o)))});const i=s.toString();i&&(l+=(l.includes("?")?"&":"?")+i)}return l}buildHeaders(e,t=!0){var s;const l=Xe({"Content-Type":"application/json"},e||{});if(t){const i=(s=this.tokenGetter)==null?void 0:s.call(this);i&&(l.Authorization=`Bearer ${i}`)}return l}request(s,i){return X(this,arguments,function*(e,t,l={}){const c=this.buildUrl(t,l.params),o=this.buildHeaders(l.headers,l.auth!==!1);if(this.adapter){const f=yield this.adapter({url:c,method:e.toUpperCase(),headers:o,body:l.body});return this.unwrap(f)}const p=yield fetch(c,{method:e.toUpperCase(),headers:o,body:l.body===void 0?void 0:JSON.stringify(l.body)});return this.parseResponse(p)})}parseResponse(e){return X(this,null,function*(){const t=yield e.text();let l;try{l=t?JSON.parse(t):void 0}catch(s){l=void 0}if(!e.ok){e.status===401&&this.notifyUnauthorized();const s=(l==null?void 0:l.msg)||(l==null?void 0:l.message)||`HTTP ${e.status}`;throw new Error(s)}if(l!==void 0)return this.unwrap(l)})}unwrap(e){if(e&&typeof e=="object"&&"code"in e){if(!(e.code===1||e.isOk===!0))throw(e.code===401||e.statusCode===401)&&this.notifyUnauthorized(),new Error(e.msg||e.message||"请求失败");return e.data!==void 0?e.data:e}return e}get(e,t){return this.request("GET",e,t)}post(e,t){return this.request("POST",e,t)}patch(e,t){return this.request("PATCH",e,t)}del(e,t){return this.request("DELETE",e,t)}}const mt="sv-print-oauth",nt="sv_print_cloud_auth",Ke=`${nt}_active`,at="sv_print_cloud_oauth_state_",yn="sv_print_cloud_oauth_code_";function Bt(n,e){var p;let t;try{t=new URL(n,((p=globalThis.location)==null?void 0:p.origin)||"http://localhost")}catch(f){return null}const l=t.hash.replace(/^#\/?/,""),s=f=>t.searchParams.get(f)||new URLSearchParams(l).get(f),i=s("state")||void 0;if(e&&i&&i!==e)return null;const c=s("error")||s("error_description");if(c)return{state:i,error:c};const o=s("code");return o?{state:i,code:o}:null}function zt(n){return`${yn}${n}`}function wn(n){var e;try{return((e=globalThis.localStorage)==null?void 0:e.getItem(zt(n)))||null}catch(t){return null}}function Tn(n){var e;try{(e=globalThis.localStorage)==null||e.removeItem(zt(n))}catch(t){}}function jt(){var l,s;const n=Bt(((l=globalThis.location)==null?void 0:l.href)||"");if(!(n!=null&&n.code))return!1;const e=globalThis.opener;if(!e)return!1;const t=n.state||"";try{(s=globalThis.localStorage)==null||s.setItem(zt(t),n.code)}catch(i){}try{e.postMessage({type:mt,code:n.code,state:t},"*")}catch(i){}try{history.replaceState(null,"",globalThis.location.pathname+globalThis.location.hash)}catch(i){}try{globalThis.close()}catch(i){}return!0}class Ft{constructor(e){le(this,"id","oauth");le(this,"label","授权登录");le(this,"autoLogin");this.oauth=e}canLogin(){var e,t;return!!((e=this.oauth)!=null&&e.clientId&&((t=this.oauth)!=null&&t.authorizeOrigin))}get stateKey(){var e;return`${at}${((e=this.oauth)==null?void 0:e.clientId)||"default"}`}redirectUri(){var e,t;return((e=this.oauth)==null?void 0:e.redirectUri)||((t=globalThis.location)==null?void 0:t.origin)||""}scopeStr(){var t;const e=(t=this.oauth)==null?void 0:t.scope;return e?Array.isArray(e)?e.join(","):e:""}randomState(){const e=globalThis.crypto;return e!=null&&e.randomUUID?e.randomUUID():`svp-${Date.now()}-${Math.random().toString(36).slice(2)}`}authorizeBase(){var e;return(((e=this.oauth)==null?void 0:e.authorizeOrigin)||"").replace(/\/+$/,"")}isAbsoluteAuthorize(){return/^https?:\/\//i.test(this.authorizeBase())}expectedMessageOrigin(){var t;const e=this.authorizeBase();if(!this.isAbsoluteAuthorize())return((t=globalThis.location)==null?void 0:t.origin)||"";try{return new URL(e).origin}catch(l){return e}}buildAuthorizeUrl(e){var s;const t=new URLSearchParams({client_id:((s=this.oauth)==null?void 0:s.clientId)||"",redirect_uri:this.redirectUri(),state:e}),l=this.scopeStr();return l&&t.set("scope",l),`${this.authorizeBase()}/oauth/authorize?${t.toString()}`}parseMessage(e,t){const l=this.expectedMessageOrigin();if(l&&e.origin!==l)return null;const s=e.data;return!s||s.type!==mt||s.state!==t?null:{code:s.code,error:s.error}}waitInIframe(e,t){return new Promise((l,s)=>{let i=!1,c=null;const o=document.createElement("div");o.className="svp-cloud-oauth-overlay",o.innerHTML=`
2
+ <div class="svp-cloud-oauth-box">
3
+ <div class="svp-cloud-oauth-head">
4
+ <span>登录 sv-print-cloud</span>
5
+ <button type="button" class="svp-cloud-oauth-close" aria-label="关闭">×</button>
6
+ </div>
7
+ <iframe class="svp-cloud-oauth-frame" allow="clipboard-write"></iframe>
8
+ </div>`;const p=o.querySelector("iframe");p.src=e;const f=o.querySelector(".svp-cloud-oauth-close"),_=()=>{window.removeEventListener("message",v),c&&clearTimeout(c),o.remove()},u=m=>{i||(i=!0,_(),m())},v=m=>{const P=this.parseMessage(m,t);P&&(P.error?u(()=>s(new Error(`授权被拒绝:${P.error}`))):P.code&&u(()=>l(P.code)))};f.onclick=()=>u(()=>s(new Error("已取消授权"))),o.onclick=m=>{m.target===o&&u(()=>s(new Error("已取消授权")))},window.addEventListener("message",v),c=setTimeout(()=>u(()=>s(new Error("授权超时,请重试"))),5*60*1e3),document.body.appendChild(o)})}waitInWindow(e,t,l){return new Promise((s,i)=>{const c=`svp-cloud-oauth-${this.id}`,o=l?window.open(e,c,l):window.open(e,c);if(!o){i(new Error("授权窗口被浏览器拦截,请允许弹窗后重试"));return}let p=!1,f=null,_=null;const u=()=>{window.removeEventListener("message",m),f&&clearTimeout(f),_&&clearInterval(_),Tn(t)},v=P=>{if(!p){p=!0,u();try{o.close()}catch(C){}P()}},m=P=>{const C=this.parseMessage(P,t);C&&(C.error?v(()=>i(new Error(`授权被拒绝:${C.error}`))):C.code&&v(()=>s(C.code)))};window.addEventListener("message",m),_=setInterval(()=>{const P=wn(t);if(P){v(()=>s(P));return}try{const C=Bt(o.location.href,t);if(C!=null&&C.error){v(()=>i(new Error(`授权被拒绝:${C.error}`)));return}if(C!=null&&C.code){v(()=>s(C.code));return}}catch(C){}o.closed&&v(()=>i(new Error("已取消授权")))},300),f=setTimeout(()=>v(()=>i(new Error("授权超时,请重试"))),5*60*1e3)})}waitForCode(e){var s,i;const t=this.buildAuthorizeUrl(e),l=((s=this.oauth)==null?void 0:s.mode)||"iframe";if(l==="custom"){const c=(i=this.oauth)==null?void 0:i.authorize;return c?Promise.resolve(c(t,e)).then(o=>{if(!o)throw new Error("自定义授权未返回 code");return o}):Promise.reject(new Error("mode=custom 需配置 authorize 回调"))}return l==="popup"?this.waitInWindow(t,e,"width=520,height=720,menubar=no,toolbar=no,location=yes,status=no,resizable=yes,scrollbars=yes"):l==="page"?this.waitInWindow(t,e,""):this.waitInIframe(t,e)}exchangeToken(e,t,l){return X(this,null,function*(){var i,c,o;if((i=this.oauth)!=null&&i.exchangeToken)return this.oauth.exchangeToken(t,l);const s=(c=this.oauth)==null?void 0:c.clientSecret;if(!s)throw new Error("未配置 clientSecret 或 exchangeToken,无法换取 token");return e.client.post("/auth/member/oauth/token",{auth:!1,body:{code:t,client_id:(o=this.oauth)==null?void 0:o.clientId,client_secret:s}})})}login(e){return X(this,null,function*(){var s;if(!this.canLogin())throw new Error("未配置 OAuth(缺少 clientId 或 authorizeOrigin)");const t=this.randomState();try{(s=globalThis.sessionStorage)==null||s.setItem(this.stateKey,t)}catch(i){}const l=yield this.waitForCode(t);return this.exchangeToken(e,l,t)})}logout(e){return X(this,null,function*(){try{yield e.client.post("/auth/member/oauth/revoke",{auth:!0})}catch(t){}})}getUser(e){return X(this,null,function*(){var l;const t=((l=this.oauth)==null?void 0:l.getProfileUrl)||"/auth/member/profile";return e.client.get(t,{auth:!0})})}getClientInfo(e){return X(this,null,function*(){var t;return(t=this.oauth)!=null&&t.clientId?e.client.get(`/auth/member/oauth/client/${this.oauth.clientId}`,{auth:!1}):null})}}class Kt{constructor(e){le(this,"id","token");le(this,"label","访问令牌");le(this,"token");this.token=e.token}canLogin(){return!0}init(e){var l;const t=(l=this.token)==null?void 0:l.trim();t&&e.emit({accessToken:t})}login(){return X(this,null,function*(){var t;const e=(t=this.token)==null?void 0:t.trim();if(!e)throw new Error("请先填写访问令牌");return{accessToken:e}})}renderLogin(e,t){e.innerHTML=`
9
+ <div class="svp-cloud-auth-form">
10
+ <p class="svp-cloud-auth-hint">粘贴访问令牌(accessToken),保存后立即生效。</p>
11
+ <textarea class="svp-cloud-auth-input svp-cloud-auth-textarea" rows="3" placeholder="accessToken"></textarea>
12
+ <div class="svp-cloud-auth-error"></div>
13
+ <div class="svp-cloud-auth-actions">
14
+ <button type="button" class="svp-btn svp-btn-primary svp-btn-sm svp-cloud-auth-submit">保存并登录</button>
15
+ </div>
16
+ </div>`;const l=e.querySelector("textarea"),s=e.querySelector(".svp-cloud-auth-error"),i=e.querySelector(".svp-cloud-auth-submit");this.token&&(l.value=this.token),i.onclick=()=>{const c=l.value.trim();if(!c){s.textContent="请输入访问令牌";return}s.textContent="",this.token=c,t.emit({accessToken:c})}}destroyLogin(e){e.innerHTML=""}}class Gt{constructor(e){le(this,"id","host");le(this,"label","宿主托管");le(this,"getUser");le(this,"getClientInfo");this.cfg=e,e.getUser&&(this.getUser=()=>e.getUser()),e.getClientInfo&&(this.getClientInfo=()=>e.getClientInfo())}canLogin(){var e;return typeof((e=this.cfg)==null?void 0:e.getToken)=="function"}init(e){return X(this,null,function*(){try{const t=yield this.cfg.getToken();t!=null&&t.accessToken&&e.emit(t)}catch(t){}})}login(){return X(this,null,function*(){const e=yield this.cfg.getToken();if(!(e!=null&&e.accessToken))throw new Error("宿主未返回有效令牌");return e})}logout(){return X(this,null,function*(){var e,t;yield(t=(e=this.cfg).logout)==null?void 0:t.call(e)})}}class Vt{constructor(e){le(this,"id","local");le(this,"label","本地账号");le(this,"getUser");this.cfg=e,e.getUser&&(this.getUser=()=>e.getUser())}canLogin(){var e;return typeof((e=this.cfg)==null?void 0:e.login)=="function"}login(){return X(this,null,function*(){throw new Error("请在设置面板的账户中登录")})}logout(){return X(this,null,function*(){var e,t;yield(t=(e=this.cfg).logout)==null?void 0:t.call(e)})}renderLogin(e,t){const l=this.cfg.title||"账号登录";e.innerHTML=`
17
+ <div class="svp-cloud-auth-form">
18
+ <p class="svp-cloud-auth-hint">${l}</p>
19
+ <input class="svp-cloud-auth-input svp-cloud-auth-user" type="text" autocomplete="username" placeholder="账号" />
20
+ <input class="svp-cloud-auth-input svp-cloud-auth-pass" type="password" autocomplete="current-password" placeholder="密码" />
21
+ <div class="svp-cloud-auth-error"></div>
22
+ <div class="svp-cloud-auth-actions">
23
+ <button type="button" class="svp-btn svp-btn-primary svp-btn-sm svp-cloud-auth-submit">登录</button>
24
+ </div>
25
+ </div>`;const s=e.querySelector(".svp-cloud-auth-user"),i=e.querySelector(".svp-cloud-auth-pass"),c=e.querySelector(".svp-cloud-auth-error"),o=e.querySelector(".svp-cloud-auth-submit");o&&(o.onclick=()=>X(this,null,function*(){const p=s.value.trim(),f=i.value;if(!p||!f){c.textContent="请输入账号与密码";return}c.textContent="",o.disabled=!0;const _=o.textContent;o.textContent="登录中...";try{const u=yield this.cfg.login(p,f);if(!(u!=null&&u.accessToken))throw new Error("登录返回的凭据无效");t.emit(u)}catch(u){c.textContent=(u==null?void 0:u.message)||"登录失败"}finally{o.disabled=!1,o.textContent=_}}))}destroyLogin(e){e.innerHTML=""}}class St{constructor(){le(this,"id","none");le(this,"label","未配置")}canLogin(){return!1}login(){return X(this,null,function*(){throw new Error("未配置登录方式")})}}function Wt(n){if(!n)return[];const e=Array.isArray(n)?n:[n],t=new Set,l=[];for(const s of e){const i=s==null?void 0:s.type;if(i){if(t.has(i)){console.warn(`[cloud] 重复的登录方式已忽略:${i}`);continue}t.add(i),l.push(s)}}return l}function Yt(n,e=!1){let t;switch(n.type){case"oauth":t=new Ft(n);break;case"token":t=new Kt(n);break;case"host":t=new Gt(n);break;case"local":t=new Vt(n);break;default:return new St}return e&&n.type!=="local"&&(t.autoLogin=!0),t}function Xt(n){return`${nt}_${n||"default"}`}function Qt(){return Zt(Ke,null)||null}function bt(n){$t(Ke,n)}function Zt(n,e){var l;const t=globalThis;return(l=t.SVPrint)!=null&&l.getPreferences?t.SVPrint.getPreferences(n,e):ke.getPreferences(n,e)}function $t(n,e){var l;const t=globalThis;if((l=t.SVPrint)!=null&&l.setPreferences){t.SVPrint.setPreferences(n,e);return}ke.setPreferences(n,e)}class Cn{constructor(e){this.key=e}get(){return Zt(this.key,null)||null}set(e){$t(this.key,e)}}class zn{constructor(e){this.key=e}get(){var e;try{const t=(e=globalThis.sessionStorage)==null?void 0:e.getItem(this.key);return t?JSON.parse(t):null}catch(t){return null}}set(e){var t,l;try{e?(t=globalThis.sessionStorage)==null||t.setItem(this.key,JSON.stringify(e)):(l=globalThis.sessionStorage)==null||l.removeItem(this.key)}catch(s){}}}class Sn{constructor(){le(this,"token",null)}get(){return this.token}set(e){this.token=e}}function xt(n){return new Cn(n)}function Pn(n){return new zn(n)}function En(){return new Sn}function Pt(n,e,t=!1){return n.storageKey?t?`${n.storageKey}_${e}`:n.storageKey:Xt(e)}function el(n,e,t=!1){return n.storage?n.storage:xt(Pt(n,e,t))}class tl{constructor(e,t){le(this,"client");le(this,"config");le(this,"entries",[]);le(this,"storages",new Map);le(this,"active");le(this,"multi");le(this,"token",null);le(this,"listeners",[]);le(this,"loginEl");this.config=e,this.client=t,this.entries=Wt(e.auth).map(s=>({cfg:s,provider:Yt(s,!!e.autoLogin)})),this.entries.length||(this.entries=[{cfg:null,provider:new St}]),this.multi=this.entries.length>1,this.active=this.pickInitial(),this.token=this.storageOf(this.active).get(),this.client.setTokenGetter(()=>{var s;return((s=this.token)==null?void 0:s.accessToken)||null}),this.client.setOnUnauthorized(()=>this.onUnauthorized());const l=jt();this.runInit(!l)}pickInitial(){const e=Qt(),t=e?this.entries.find(c=>c.provider.id===e):void 0;if(t)return t;const l=this.config.defaultAuth?this.entries.find(c=>c.provider.id===this.config.defaultAuth):void 0;if(l)return bt(l.provider.id),l;const i=this.entries.find(c=>{var o;return(o=this.storageOf(c).get())==null?void 0:o.accessToken})||this.entries[0];return bt(i.provider.id),i}storageOf(e){const t=e.provider.id;let l=this.storages.get(t);return l||(l=el(this.config,t,this.multi),this.storages.set(t,l)),l}ctx(){return{client:this.client,config:this.config,storage:this.storageOf(this.active),emit:e=>this.writeToken(e)}}runInit(e=!1){var t,l;try{const s=(l=(t=this.active.provider).init)==null?void 0:l.call(t,this.ctx());s&&typeof s.then=="function"&&s.catch(()=>{})}catch(s){}e&&this.maybeAutoLogin()}maybeAutoLogin(){this.active.provider.autoLogin&&(this.isLoggedIn()||!this.canLogin()||this.login().catch(e=>console.warn("[cloud] 自动登录失败:",(e==null?void 0:e.message)||e)))}writeToken(e){this.token=e,this.storageOf(this.active).set(e),this.notify()}notify(){this.listeners.forEach(e=>e(this.token))}onUnauthorized(){this.token&&this.writeToken(null)}get type(){return this.active.provider.id}get label(){return this.active.provider.label}get activeId(){return this.active.provider.id}get providers(){return this.entries.map(e=>({id:e.provider.id,label:e.provider.label,canLogin:e.provider.canLogin()}))}get providerConfig(){return this.active.cfg}get storageKey(){return Pt(this.config,this.active.provider.id,this.multi)}get hasCustomLoginUI(){return typeof this.active.provider.renderLogin=="function"}renderLogin(e){var t,l;this.loginEl=e,(l=(t=this.active.provider).renderLogin)==null||l.call(t,e,this.ctx())}destroyLogin(e){var t,l;(l=(t=this.active.provider).destroyLogin)==null||l.call(t,e),this.loginEl===e&&(this.loginEl=void 0)}switchProvider(e){return X(this,null,function*(){var l,s;const t=this.entries.find(i=>i.provider.id===e);if(!(!t||t===this.active)){if(this.loginEl)try{(s=(l=this.active.provider).destroyLogin)==null||s.call(l,this.loginEl)}catch(i){}this.active=t,bt(e),this.token=this.storageOf(t).get(),this.notify(),this.runInit()}})}canLogin(){return this.active.provider.canLogin()}isLoggedIn(){var e;return!!((e=this.token)!=null&&e.accessToken)}getToken(){var e;return((e=this.token)==null?void 0:e.accessToken)||null}onChange(e){return this.listeners.push(e),()=>{this.listeners=this.listeners.filter(t=>t!==e)}}login(){return X(this,null,function*(){if(!this.canLogin())throw new Error("未配置登录方式");const e=yield this.active.provider.login(this.ctx());if(!(e!=null&&e.accessToken))throw new Error("登录返回的凭据无效");return this.writeToken(e),e})}logout(){return X(this,null,function*(){var e,t;try{yield(t=(e=this.active.provider).logout)==null?void 0:t.call(e,this.ctx())}catch(l){}this.writeToken(null)})}getUser(){return X(this,null,function*(){const e=this.active.provider.getUser;return e?e(this.ctx()):this.client.get(this.profileUrl(),{auth:!0})})}getClientInfo(){return X(this,null,function*(){const e=this.active.provider.getClientInfo;if(e)return e(this.ctx());const t=this.clientId();return t?this.client.get(`/auth/member/oauth/client/${t}`,{auth:!1}):null})}oauthCfg(){const e=this.active.cfg;return e&&e.type==="oauth"?e:null}profileUrl(){var e;return((e=this.oauthCfg())==null?void 0:e.getProfileUrl)||"/auth/member/profile"}clientId(){var e;return(e=this.oauthCfg())==null?void 0:e.clientId}}const Ln="/api/socket.io",ll="/socket.io";class nl{constructor(e){le(this,"host");le(this,"socket",null);le(this,"connecting",null);le(this,"generation",0);le(this,"printing",!1);le(this,"pending",new Set);le(this,"stateListeners",new Set);le(this,"handlers",new Map);this.host=(e.host||"").replace(/\/+$/,"")}onConnectionChange(e){return this.stateListeners.add(e),e(this.isConnected()),()=>this.stateListeners.delete(e)}notifyState(){for(const e of this.stateListeners)e(this.isConnected())}failPending(e){for(const t of[...this.pending])t(e)}getIo(){const e=globalThis.io;if(!e)throw new Error("未检测到 socket.io(window.io),无法连接中转服务");return e}resolveBase(){var t;const e=((t=globalThis.location)==null?void 0:t.origin)||"";if(!this.host)return{origin:e,path:Ln};if(/^https?:\/\//i.test(this.host)){const l=new URL(this.host);return{origin:l.origin,path:`${l.pathname.replace(/\/+$/,"")}${ll}`}}return{origin:e,path:`${this.host.replace(/\/+$/,"")}${ll}`}}ensureNetworkPermission(){return X(this,null,function*(){try{const e=globalThis.hiwebSocket;if(e!=null&&e.requestNetworkPermission){const t=yield e.requestNetworkPermission();if(t&&t.granted===!1)throw new Error(t.msg||"本地网络访问权限被拒绝")}}catch(e){if(e!=null&&e.message)throw e}})}attachHandlers(e){for(const[t,l]of this.handlers)for(const s of l)e.on(t,s)}on(e,t){var l,s;this.handlers.has(e)||this.handlers.set(e,new Set),this.handlers.get(e).add(t),(s=(l=this.socket)==null?void 0:l.on)==null||s.call(l,e,t)}off(e,t){var l,s,i,c,o;t?((l=this.handlers.get(e))==null||l.delete(t),(i=(s=this.socket)==null?void 0:s.off)==null||i.call(s,e,t)):(this.handlers.delete(e),(o=(c=this.socket)==null?void 0:c.off)==null||o.call(c,e))}waitFor(e,t=15e3){return new Promise((l,s)=>{const i=()=>{clearTimeout(p),this.off(e,o),this.pending.delete(c)},c=f=>{i(),s(f)},o=f=>{i(),l(f)},p=setTimeout(()=>c(new Error(`等待中转事件 ${e} 超时`)),t);this.pending.add(c),this.on(e,o)})}emit(e,t={}){var l;return(l=this.socket)!=null&&l.connected?(this.socket.emit(e,t),!0):!1}connect(e){return X(this,null,function*(){var s;if((s=this.socket)!=null&&s.connected)return this.socket;if(this.connecting)return this.connecting;this.disconnect();const t=this.generation,l=X(this,null,function*(){if(yield this.ensureNetworkPermission(),t!==this.generation)throw new Error("中转连接已取消");const i=this.getIo(),c=`/${(e.namespace||"transit").replace(/^\/+/,"")}`,{origin:o,path:p}=this.resolveBase();return new Promise((f,_)=>{const u=i(`${o}${c}`,{auth:{token:e.ticket,clientType:"web"},path:p,transports:["websocket","polling"],reconnection:!0});this.socket=u;const v=()=>{clearTimeout(C),u.off("connect",P),this.pending.delete(m)},m=w=>{v(),this.socket===u&&this.disconnect(),_(w)},P=()=>{v(),f(u)},C=setTimeout(()=>m(new Error("连接中转服务超时")),1e4);this.pending.add(m),this.attachHandlers(u),u.on("connect",P),u.on("connect",()=>this.notifyState()),u.on("disconnect",()=>{this.notifyState(),this.failPending(new Error("中转连接已断开,打印结果可能未知,请勿自动重试"))}),u.on("connect_error",w=>{m(new Error((w==null?void 0:w.message)||"连接中转服务失败"))})})});this.connecting=l;try{return yield l}finally{this.connecting===l&&(this.connecting=null)}})}getClients(e=8e3){return X(this,null,function*(){if(!this.isConnected())throw new Error("中转服务未连接");const t=this.waitFor("clients",e);this.emit("getClients",{});const l=yield t;return Array.isArray(l)?l:l&&typeof l=="object"?Object.values(l):[]})}getPrinters(e,t=6e3){return X(this,null,function*(){const l=Date.now()+t;let s=yield this.getClients(Math.max(1,t)),i=e?s.find(o=>o.clientId===e):s.find(o=>o.clientType==="electron");if(!i)throw new Error("目标中转客户端已离线");if(Array.isArray(i.printerList))return i.printerList;const c=i.clientId;if(!this.emit("refreshPrinterList",{client:c}))throw new Error("中转服务未连接");for(;Date.now()<l;){if(yield new Promise(o=>setTimeout(o,Math.min(250,l-Date.now()))),s=yield this.getClients(Math.max(1,l-Date.now())),i=s.find(o=>o.clientId===c),!i)throw new Error("目标中转客户端已离线");if(Array.isArray(i.printerList))return i.printerList}throw new Error("获取中转打印机列表超时")})}print(e,t=6e4){return X(this,null,function*(){var l;if(!(e!=null&&e.client))throw new Error("缺少目标客户端 client");if(!((l=this.socket)!=null&&l.connected))throw new Error("中转服务未连接");if(this.printing)throw new Error("已有中转打印等待回执,请稍后再试");this.printing=!0;try{return yield new Promise((s,i)=>{const c=()=>{clearTimeout(_),this.off("success",p),this.off("error",f),this.pending.delete(o)},o=u=>{c(),i(u)},p=u=>{c(),s(u||{})},f=u=>o(new Error((u==null?void 0:u.msg)||"客户端打印失败")),_=setTimeout(()=>{o(new Error("等待打印回执超时,打印结果未知,请勿自动重试")),this.disconnect()},t);this.pending.add(o),this.on("success",p),this.on("error",f);try{this.socket.emit("print",e)}catch(u){o(u instanceof Error?u:new Error(String(u)))}})}finally{this.printing=!1}})}isConnected(){var e;return!!((e=this.socket)!=null&&e.connected)}disconnect(){var e,t,l,s;this.generation++,this.connecting=null,this.failPending(new Error("中转连接已断开,打印结果可能未知,请勿自动重试"));try{(t=(e=this.socket)==null?void 0:e.removeAllListeners)==null||t.call(e),(s=(l=this.socket)==null?void 0:l.disconnect)==null||s.call(l)}catch(i){}this.socket=null,this.notifyState()}}class sl{constructor(e,t,l,s){le(this,"client");le(this,"transit");le(this,"auth");le(this,"config");this.config=e,this.client=t,this.transit=l,this.auth=s}requireLogin(){var e;if(!((e=this.auth)!=null&&e.canLogin()))throw new Error("未配置登录方式");if(!this.auth.isLoggedIn())throw new Error("请先登录后再使用模板")}render(){return X(this,arguments,function*(e={}){var s,i,c,o;const t=this.du(),l={template:(c=e.template)!=null?c:(i=(s=t==null?void 0:t.printTemplate)==null?void 0:s.getJson)==null?void 0:i.call(s),print_data:(o=e.print_data)!=null?o:t==null?void 0:t.printData,options:e.options,renderer_id:e.renderer_id,type:e.type};return e.template_id!==void 0&&(delete l.template,l.template_id=e.template_id),this.client.post(e.sync?"/print/render/sync":"/print/render",{body:l})})}getRenderTask(e){return this.client.get(`/print/render/tasks/${e}`)}waitRender(l){return X(this,arguments,function*(e,t={}){var o,p;const s=(o=t.interval)!=null?o:1500,i=(p=t.timeout)!=null?p:6e4,c=Date.now();for(;;){const f=yield this.getRenderTask(e),_=Number(f.status);if(_===2)return f;if(_===3||_===4||_===5)throw new Error(f.error_message||`渲染失败(status=${_})`);if(Date.now()-c>i)throw new Error("渲染超时");yield new Promise(u=>setTimeout(u,s))}})}cloudPrint(e){var i,c,o,p;const t=this.du(),l=f=>typeof f=="string"?f:JSON.stringify(f),s={device_id:e.device_id,template_id:e.template_id,template_data:l((o=e.template_data)!=null?o:(c=(i=t==null?void 0:t.printTemplate)==null?void 0:i.getJson)==null?void 0:c.call(i)),preview_data:l((p=e.preview_data)!=null?p:t==null?void 0:t.printData),print_type:e.print_type,print_options:l(e.print_options),remark:e.remark};return this.client.post("/member/cloud/print/submit",{body:s})}getDevices(){return this.client.get("/member/cloud/device")}getDevicePrinters(e){return this.client.get(`/member/cloud/device/${encodeURIComponent(e)}/printers`)}getJobs(e){return this.client.get("/member/cloud/print/jobs",{params:e})}cancelJob(e){return this.client.post(`/member/cloud/print/jobs/${e}/cancel`)}retryJob(e){return this.client.post(`/member/cloud/print/jobs/${e}/retry`)}getTransitTicket(){return this.client.post("/member/transit/ticket",{body:{}})}onTransitConnectionChange(e){return this.transit.onConnectionChange(e)}ensureTransitConnected(){return X(this,null,function*(){if(!this.transit.isConnected()){const e=yield this.getTransitTicket();yield this.transit.connect(e)}return this.transit})}getTransitClients(){return X(this,null,function*(){return(yield this.ensureTransitConnected()).getClients()})}getTransitPrinters(e){return X(this,null,function*(){return(yield this.ensureTransitConnected()).getPrinters(e)})}transitPrint(){return X(this,arguments,function*(e={}){var o,p,f,_,u;if(!e.clientId)throw new Error("请选择目标中转客户端");if(!e.printer)throw new Error("请选择打印机");const t=yield this.ensureTransitConnected(),l=this.du(),s=(f=e.template)!=null?f:(p=(o=l==null?void 0:l.printTemplate)==null?void 0:o.getJson)==null?void 0:p.call(o),i=typeof s=="string"?s:JSON.stringify(s!=null?s:null),c=typeof e.print_options=="string"?e.print_options:e.print_options?JSON.stringify(e.print_options):void 0;return t.print({client:e.clientId,template:i,printer:e.printer,template_snapshot:i,preview_data:(u=(_=e.preview_data)!=null?_:l==null?void 0:l.printData)!=null?u:null,print_type:e.print_type||"template",print_options:c})})}disconnectTransit(){this.transit.disconnect()}listTemplates(e={}){var t,l,s;return this.client.get("/print/template",{auth:!1,params:{keyword:e.keyword,category_id:e.category_id,industry_id:e.industry_id,template_type:e.template_type,is_free:e.is_free,is_recommend:e.is_recommend,page:(t=e.page)!=null?t:1,pageSize:(s=(l=e.pageSize)!=null?l:this.config.templateCenterPageSize)!=null?s:12}})}getTemplateData(e){return this.client.get(`/print/template/${e}/data`)}applyTemplate(e){return X(this,null,function*(){var c,o;this.requireLogin();const t=yield this.getTemplateData(e.template_id),l=this.parseMaybeJson((c=t==null?void 0:t.template_data)!=null?c:t),s=this.parseMaybeJson(t==null?void 0:t.preview_data),i=this.du();if(!((o=i==null?void 0:i.printTemplate)!=null&&o.update))throw new Error("设计器未就绪");return i.printTemplate.update(l),s!=null&&(i.printData=s),this.useTemplate(e.template_id).catch(()=>{}),{template_data:l,preview_data:s}})}useRandomTemplate(){return X(this,arguments,function*(e={}){var _;this.requireLogin();const t=(_=e.pageSize)!=null?_:20,l=yield this.listTemplates(lt(Xe({},e),{page:1,pageSize:t})),s=l.total||0;if(!s&&!(l.list||[]).length)throw new Error("没有可用模板");const i=Math.max(1,Math.ceil(s/t)),c=Math.floor(Math.random()*i)+1,p=((c===1?l:yield this.listTemplates(lt(Xe({},e),{page:c,pageSize:t}))).list||[]).slice();for(let u=p.length-1;u>0;u--){const v=Math.floor(Math.random()*(u+1));[p[u],p[v]]=[p[v],p[u]]}let f=null;for(const u of p.slice(0,5))try{return yield this.applyTemplate(u),u}catch(v){f=v}throw f||new Error("没有可用模板")})}parseMaybeJson(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch(t){return e}}useTemplate(e){return this.client.post(`/print/template/use/${e}`)}getCategories(){return this.client.get("/print/category",{auth:!1})}getIndustries(){return this.client.get("/print/industry",{auth:!1})}du(){return globalThis.__cloudDesignerUtils}}let ut;function In(n){ut=n,typeof globalThis!="undefined"&&(globalThis.__cloudDesignerUtils=n)}function il(){return ut||(typeof globalThis!="undefined"&&globalThis.__cloudDesignerUtils&&(ut=globalThis.__cloudDesignerUtils),ut)}let st;function qn(n){st=n}function Mn(){return st}function rl(n){if((st==null?void 0:st.config)===n)return st;const e=new vt(n),t=new tl(n,e),l=new nl(n),s=new sl(n,e,l,t),i={config:n,client:e,auth:t,transit:l,service:s};return qn(i),i}const An=n=>({hook:"onDesigned",name:"cloudOnDesigned",description:"云打印插件 - 挂载模板中心/API/菜单",priority:1,run:({designerUtils:e})=>{const t=globalThis,{auth:l,service:s}=rl(n);In(e),setTimeout(()=>{const i=t.$("#SVPrint");if(!i||!i.length){console.warn("[cloud] #SVPrint not found");return}Promise.resolve().then(()=>rs).then(({default:c})=>{var _;let o=null;try{o=new c({target:i[0],props:{auth:l,service:s,designerUtils:e,pageSize:(_=n.templateCenterPageSize)!=null?_:12}})}catch(u){console.error("[cloud] template center mount error:",u)}const f={render:u=>s.render(u),getRenderTask:u=>s.getRenderTask(u),cloudPrint:u=>s.cloudPrint(u),getDevices:()=>s.getDevices(),getDevicePrinters:u=>s.getDevicePrinters(u),getJobs:u=>s.getJobs(u),cancelJob:u=>s.cancelJob(u),retryJob:u=>s.retryJob(u),transitPrint:u=>s.transitPrint(u),getTransitClients:()=>s.getTransitClients(),getTransitPrinters:u=>s.getTransitPrinters(u),applyTemplate:u=>s.applyTemplate(u),useRandomTemplate:u=>s.useRandomTemplate(u),templateCenter:{show:()=>{var u;return(u=o==null?void 0:o.show)==null?void 0:u.call(o)},hide:()=>{var u;return(u=o==null?void 0:o.hide)==null?void 0:u.call(o)},toggle:()=>{var u;return(u=o==null?void 0:o.toggle)==null?void 0:u.call(o)},isOpen:()=>{var u;return!!((u=o==null?void 0:o.isOpen)!=null&&u.call(o))},list:u=>s.listTemplates(u)},auth:{type:l.type,label:l.label,providers:l.providers,activeId:l.activeId,switchProvider:u=>l.switchProvider(u),canLogin:()=>l.canLogin(),isLoggedIn:()=>l.isLoggedIn(),getToken:()=>l.getToken(),login:()=>l.login(),logout:()=>l.logout(),getUser:()=>l.getUser(),getClientInfo:()=>l.getClientInfo(),onChange:u=>l.onChange(u)},config:n};e.cloud=f,ht(e,n,()=>{var u;return(u=o==null?void 0:o.show)==null?void 0:u.call(o)}),e.printTemplate&&Ce(e.printTemplate,s)}).catch(c=>{console.error("[cloud] component init error:",c)})},200)}}),Et=new WeakMap,On=n=>({hook:"onSettings",name:"cloudOnSettings",description:"云打印插件 - 设置面板 tab",priority:1,run:e=>{if((e==null?void 0:e.type)==="tabs"&&n.enableSettingsTab!==!1)return{key:"cloud",label:"云打印",icon:"sv-cloud",sort:n.settingsTabSort||2,render:t=>{const l=Mn();if(!l){t.innerHTML='<div class="settings-empty">云打印插件未初始化</div>';return}Promise.resolve().then(()=>ui).then(({default:s})=>{const i=new s({target:t,props:{config:l.config,auth:l.auth,service:l.service}});Et.set(t,i)})},destroy:t=>{var s;const l=Et.get(t);(s=l==null?void 0:l.$destroy)==null||s.call(l),Et.delete(t)}}}}),Dn=n=>({hook:"newPrintTemplate",name:"cloudNewPrintTemplate",description:"云打印插件 - 模板扩展",priority:1,run:({template:e})=>{if(!e)return;const t=rl(n);Ce(e,t.service)}});function Un(n={}){return{name:"cloud",description:"sv-print plugin: cloud",hooks:[An(n),On(n),Dn(n)],leastHiprintVersion:"0.3.42"}}function fe(){}function ol(n){return n()}function cl(){return Object.create(null)}function Pe(n){n.forEach(ol)}function al(n){return typeof n=="function"}function Nn(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}let gt;function Je(n,e){return gt||(gt=document.createElement("a")),gt.href=e,n===gt.href}function Lt(n,e){return n!=n?e==e:n!==e}function Jn(n){return Object.keys(n).length===0}function Ge(n){return n==null?"":n}function r(n,e){n.appendChild(e)}function k(n,e,t){n.insertBefore(e,t||null)}function g(n){n.parentNode&&n.parentNode.removeChild(n)}function Rn(n,e){for(let t=0;t<n.length;t+=1)n[t]&&n[t].d(e)}function d(n){return document.createElement(n)}function E(n){return document.createTextNode(n)}function T(){return E(" ")}function xe(){return E("")}function W(n,e,t,l){return n.addEventListener(e,t,l),()=>n.removeEventListener(e,t,l)}function a(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function Hn(n){let e;return{p(...t){e=t,e.forEach(l=>n.push(l))},r(){e.forEach(t=>n.splice(n.indexOf(t),1))}}}function Ve(n){return n===""?null:+n}function Bn(n){return Array.from(n.childNodes)}function G(n,e){e=""+e,n.data!==e&&(n.data=e)}function Le(n,e){n.value=e==null?"":e}function Ue(n,e,t,l){t==null?n.style.removeProperty(e):n.style.setProperty(e,t,"")}function Ae(n,e,t){for(let l=0;l<n.options.length;l+=1){const s=n.options[l];if(s.__value===e){s.selected=!0;return}}(!t||e!==void 0)&&(n.selectedIndex=-1)}function Qe(n){const e=n.querySelector(":checked");return e&&e.__value}function Oe(n,e,t){n.classList[t?"add":"remove"](e)}let ft;function dt(n){ft=n}function jn(){if(!ft)throw new Error("Function called outside component initialization");return ft}function Fn(n){jn().$$.on_mount.push(n)}const it=[],pt=[];let rt=[];const It=[],Kn=Promise.resolve();let qt=!1;function Gn(){qt||(qt=!0,Kn.then(fl))}function He(n){rt.push(n)}function ul(n){It.push(n)}const Mt=new Set;let ot=0;function fl(){if(ot!==0)return;const n=ft;do{try{for(;ot<it.length;){const e=it[ot];ot++,dt(e),Vn(e.$$)}}catch(e){throw it.length=0,ot=0,e}for(dt(null),it.length=0,ot=0;pt.length;)pt.pop()();for(let e=0;e<rt.length;e+=1){const t=rt[e];Mt.has(t)||(Mt.add(t),t())}rt.length=0}while(it.length);for(;It.length;)It.pop()();qt=!1,Mt.clear(),dt(n)}function Vn(n){if(n.fragment!==null){n.update(),Pe(n.before_update);const e=n.dirty;n.dirty=[-1],n.fragment&&n.fragment.p(n.ctx,e),n.after_update.forEach(He)}}function Wn(n){const e=[],t=[];rt.forEach(l=>n.indexOf(l)===-1?e.push(l):t.push(l)),t.forEach(l=>l()),rt=e}const kt=new Set;let et;function At(){et={r:0,c:[],p:et}}function Ot(){et.r||Pe(et.c),et=et.p}function Re(n,e){n&&n.i&&(kt.delete(n),n.i(e))}function Ze(n,e,t,l){if(n&&n.o){if(kt.has(n))return;kt.add(n),et.c.push(()=>{kt.delete(n),l&&(t&&n.d(1),l())}),n.o(e)}else l&&l()}function Be(n,e){n.d(1),e.delete(n.key)}function je(n,e,t,l,s,i,c,o,p,f,_,u){let v=n.length,m=i.length,P=v;const C={};for(;P--;)C[n[P].key]=P;const w=[],b=new Map,h=new Map,z=[];for(P=m;P--;){const y=u(s,i,P),L=t(y);let M=c.get(L);M?z.push(()=>M.p(y,e)):(M=f(L,y),M.c()),b.set(L,w[P]=M),L in C&&h.set(L,Math.abs(P-C[L]))}const D=new Set,J=new Set;function H(y){Re(y,1),y.m(o,_),c.set(y.key,y),_=y.first,m--}for(;v&&m;){const y=w[m-1],L=n[v-1],M=y.key,A=L.key;y===L?(_=y.first,v--,m--):b.has(A)?!c.has(M)||D.has(M)?H(y):J.has(A)?v--:h.get(M)>h.get(A)?(J.add(M),H(y)):(D.add(A),v--):(p(L,c),v--)}for(;v--;){const y=n[v];b.has(y.key)||p(y,c)}for(;m;)H(w[m-1]);return Pe(z),w}function dl(n,e,t){const l=n.$$.props[e];l!==void 0&&(n.$$.bound[l]=t,t(n.$$.ctx[l]))}function pl(n){n&&n.c()}function Dt(n,e,t,l){const{fragment:s,after_update:i}=n.$$;s&&s.m(e,t),l||He(()=>{const c=n.$$.on_mount.map(ol).filter(al);n.$$.on_destroy?n.$$.on_destroy.push(...c):Pe(c),n.$$.on_mount=[]}),i.forEach(He)}function Ut(n,e){const t=n.$$;t.fragment!==null&&(Wn(t.after_update),Pe(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function Yn(n,e){n.$$.dirty[0]===-1&&(it.push(n),Gn(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<<e%31}function Nt(n,e,t,l,s,i,c,o=[-1]){const p=ft;dt(n);const f=n.$$={fragment:null,ctx:[],props:i,update:fe,not_equal:s,bound:cl(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(e.context||(p?p.$$.context:[])),callbacks:cl(),dirty:o,skip_bound:!1,root:e.target||(p?p.$$.root:null)};c&&c(f.root);let _=!1;if(f.ctx=t?t(n,e.props||{},(u,v,...m)=>{const P=m.length?m[0]:v;return f.ctx&&s(f.ctx[u],f.ctx[u]=P)&&(!f.skip_bound&&f.bound[u]&&f.bound[u](P),_&&Yn(n,u)),v}):[],f.update(),_=!0,Pe(f.before_update),f.fragment=l?l(f.ctx):!1,e.target){if(e.hydrate){const u=Bn(e.target);f.fragment&&f.fragment.l(u),u.forEach(g)}else f.fragment&&f.fragment.c();e.intro&&Re(n.$$.fragment),Dt(n,e.target,e.anchor,e.customElement),fl()}dt(p)}class Jt{$destroy(){Ut(this,1),this.$destroy=fe}$on(e,t){if(!al(t))return fe;const l=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return l.push(t),()=>{const s=l.indexOf(t);s!==-1&&l.splice(s,1)}}$set(e){this.$$set&&!Jn(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}function _l(n,e,t){const l=n.slice();return l[46]=e[t],l}function hl(n,e,t){const l=n.slice();return l[49]=e[t],l}function vl(n,e,t){const l=n.slice();return l[52]=e[t],l}function ml(n){let e,t,l;return{c(){e=d("button"),e.textContent="×",a(e,"class","tc-search-clear svelte-1qg2qyu"),a(e,"aria-label","清空搜索")},m(s,i){k(s,e,i),t||(l=W(e,"click",n[17]),t=!0)},p:fe,d(s){s&&g(e),t=!1,l()}}}function bl(n,e){let t,l=e[52].industry_name+"",s,i,c;function o(){return e[33](e[52])}return{key:n,first:null,c(){t=d("button"),s=E(l),a(t,"class","tc-chip svelte-1qg2qyu"),Oe(t,"active",e[2]===e[52].industry_id),this.first=t},m(p,f){k(p,t,f),r(t,s),i||(c=W(t,"click",o),i=!0)},p(p,f){e=p,f[0]&2048&&l!==(l=e[52].industry_name+"")&&G(s,l),f[0]&2052&&Oe(t,"active",e[2]===e[52].industry_id)},d(p){p&&g(t),i=!1,c()}}}function gl(n,e){let t,l=e[49].category_name+"",s,i,c;function o(){return e[35](e[49])}return{key:n,first:null,c(){t=d("button"),s=E(l),a(t,"class","tc-chip svelte-1qg2qyu"),Oe(t,"active",e[10]===e[49].category_id),this.first=t},m(p,f){k(p,t,f),r(t,s),i||(c=W(t,"click",o),i=!0)},p(p,f){e=p,f[0]&8192&&l!==(l=e[49].category_name+"")&&G(s,l),f[0]&9216&&Oe(t,"active",e[10]===e[49].category_id)},d(p){p&&g(t),i=!1,c()}}}function Xn(n){let e;return{c(){e=d("div"),e.textContent="暂无模板",a(e,"class","settings-empty")},m(t,l){k(t,e,l)},p:fe,d(t){t&&g(e)}}}function Qn(n){let e;return{c(){e=d("div"),e.textContent="加载中...",a(e,"class","settings-empty")},m(t,l){k(t,e,l)},p:fe,d(t){t&&g(e)}}}function Zn(n){let e,t;return{c(){e=d("div"),t=E(n[6]),a(e,"class","settings-empty")},m(l,s){k(l,e,s),r(e,t)},p(l,s){s[0]&64&&G(t,l[6])},d(l){l&&g(e)}}}function $n(n){let e;return{c(){e=d("div"),e.innerHTML='<i class="svicon sv-preview"></i>',a(e,"class","tc-noimg svelte-1qg2qyu")},m(t,l){k(t,e,l)},p:fe,d(t){t&&g(e)}}}function xn(n){let e,t,l;return{c(){e=d("img"),Je(e.src,t=n[46].preview_img)||a(e,"src",t),a(e,"alt",l=n[46].template_name),a(e,"loading","lazy"),a(e,"class","svelte-1qg2qyu")},m(s,i){k(s,e,i)},p(s,i){i[0]&128&&!Je(e.src,t=s[46].preview_img)&&a(e,"src",t),i[0]&128&&l!==(l=s[46].template_name)&&a(e,"alt",l)},d(s){s&&g(e)}}}function kl(n){let e;return{c(){e=d("span"),e.textContent="查看大图",a(e,"class","tc-zoom svelte-1qg2qyu")},m(t,l){k(t,e,l)},d(t){t&&g(e)}}}function es(n){var i;let e,t=((i=n[46].price)!=null?i:0)+"",l,s;return{c(){e=d("span"),l=E(t),s=E(" 积分"),a(e,"class","tc-tag paid svelte-1qg2qyu")},m(c,o){k(c,e,o),r(e,l),r(e,s)},p(c,o){var p;o[0]&128&&t!==(t=((p=c[46].price)!=null?p:0)+"")&&G(l,t)},d(c){c&&g(e)}}}function ts(n){let e;return{c(){e=d("span"),e.textContent="免费",a(e,"class","tc-tag svelte-1qg2qyu")},m(t,l){k(t,e,l)},p:fe,d(t){t&&g(e)}}}function yl(n){let e;return{c(){e=d("span"),e.textContent="推荐",a(e,"class","tc-tag rec svelte-1qg2qyu")},m(t,l){k(t,e,l)},d(t){t&&g(e)}}}function wl(n){let e,t=n[46].industry_name+"",l;return{c(){e=d("span"),l=E(t),a(e,"class","tc-tag plain svelte-1qg2qyu")},m(s,i){k(s,e,i),r(e,l)},p(s,i){i[0]&128&&t!==(t=s[46].industry_name+"")&&G(l,t)},d(s){s&&g(e)}}}function Tl(n){let e,t=n[46].category_name+"",l;return{c(){e=d("span"),l=E(t),a(e,"class","tc-tag plain svelte-1qg2qyu")},m(s,i){k(s,e,i),r(e,l)},p(s,i){i[0]&128&&t!==(t=s[46].category_name+"")&&G(l,t)},d(s){s&&g(e)}}}function Cl(n,e){var we,Ie;let t,l,s,i,c,o,p=e[46].template_name+"",f,_,u,v,m,P,C,w,b,h,z,D,J=((we=e[46].use_cnt)!=null?we:0)+"",H,y,L,M,A=((Ie=e[46].share_cnt)!=null?Ie:0)+"",j,K,I,N,O,U,ee;function ve(me,F){return me[46].preview_img?xn:$n}let Y=ve(e),B=Y(e),Q=e[46].preview_img&&kl();function q(){return e[36](e[46])}function V(me,F){return me[46].is_free?ts:es}let x=V(e),pe=x(e),_e=e[46].is_recommend&&yl(),oe=e[46].industry_name&&wl(e),ne=e[46].category_name&&Tl(e);function be(){return e[37](e[46])}return{key:n,first:null,c(){t=d("div"),l=d("div"),B.c(),s=T(),Q&&Q.c(),i=T(),c=d("div"),o=d("div"),f=E(p),u=T(),v=d("div"),pe.c(),m=T(),_e&&_e.c(),P=T(),oe&&oe.c(),C=T(),ne&&ne.c(),w=T(),b=d("div"),h=d("div"),z=d("span"),D=E("使用 "),H=E(J),y=T(),L=d("span"),M=E("分享 "),j=E(A),K=T(),I=d("button"),N=E("去使用"),O=T(),a(l,"class","tc-thumb svelte-1qg2qyu"),a(o,"class","tc-name svelte-1qg2qyu"),a(o,"title",_=e[46].template_name),a(v,"class","tc-tags svelte-1qg2qyu"),a(c,"class","tc-meta svelte-1qg2qyu"),a(z,"title","使用量"),a(L,"title","分享量"),a(h,"class","tc-stats svelte-1qg2qyu"),a(I,"class","svp-btn svp-btn-xs svp-btn-primary tc-use svelte-1qg2qyu"),I.disabled=e[5],a(b,"class","tc-actions svelte-1qg2qyu"),a(t,"class","tc-card svelte-1qg2qyu"),this.first=t},m(me,F){k(me,t,F),r(t,l),B.m(l,null),r(l,s),Q&&Q.m(l,null),r(t,i),r(t,c),r(c,o),r(o,f),r(c,u),r(c,v),pe.m(v,null),r(v,m),_e&&_e.m(v,null),r(v,P),oe&&oe.m(v,null),r(v,C),ne&&ne.m(v,null),r(t,w),r(t,b),r(b,h),r(h,z),r(z,D),r(z,H),r(h,y),r(h,L),r(L,M),r(L,j),r(b,K),r(b,I),r(I,N),r(t,O),U||(ee=[W(l,"click",q),W(I,"click",be)],U=!0)},p(me,F){var he,re;e=me,Y===(Y=ve(e))&&B?B.p(e,F):(B.d(1),B=Y(e),B&&(B.c(),B.m(l,s))),e[46].preview_img?Q||(Q=kl(),Q.c(),Q.m(l,null)):Q&&(Q.d(1),Q=null),F[0]&128&&p!==(p=e[46].template_name+"")&&G(f,p),F[0]&128&&_!==(_=e[46].template_name)&&a(o,"title",_),x===(x=V(e))&&pe?pe.p(e,F):(pe.d(1),pe=x(e),pe&&(pe.c(),pe.m(v,m))),e[46].is_recommend?_e||(_e=yl(),_e.c(),_e.m(v,P)):_e&&(_e.d(1),_e=null),e[46].industry_name?oe?oe.p(e,F):(oe=wl(e),oe.c(),oe.m(v,C)):oe&&(oe.d(1),oe=null),e[46].category_name?ne?ne.p(e,F):(ne=Tl(e),ne.c(),ne.m(v,null)):ne&&(ne.d(1),ne=null),F[0]&128&&J!==(J=((he=e[46].use_cnt)!=null?he:0)+"")&&G(H,J),F[0]&128&&A!==(A=((re=e[46].share_cnt)!=null?re:0)+"")&&G(j,A),F[0]&32&&(I.disabled=e[5])},d(me){me&&g(t),B.d(),Q&&Q.d(),pe.d(),_e&&_e.d(),oe&&oe.d(),ne&&ne.d(),U=!1,Pe(ee)}}}function zl(n){let e,t,l,s,i,c,o;return{c(){e=d("div"),t=d("img"),s=T(),i=d("button"),i.innerHTML='<i class="svicon sv-close"></i>',Je(t.src,l=n[12])||a(t,"src",l),a(t,"alt","模板预览"),a(t,"class","svelte-1qg2qyu"),a(i,"class","svp-cloud-tc-preview-close svelte-1qg2qyu"),a(i,"aria-label","关闭"),a(e,"class","svp-cloud-tc-preview svelte-1qg2qyu")},m(p,f){k(p,e,f),r(e,t),r(e,s),r(e,i),c||(o=[W(i,"click",n[40]),W(e,"click",n[41])],c=!0)},p(p,f){f[0]&4096&&!Je(t.src,l=p[12])&&a(t,"src",l)},d(p){p&&g(e),c=!1,Pe(o)}}}function ls(n){let e,t,l,s,i,c,o,p,f,_,u,v,m,P,C,w,b,h=[],z=new Map,D,J,H,y,L,M,A=[],j=new Map,K,I,N,O,U=[],ee=new Map,ve,Y,B,Q,q,V,x,pe,_e,oe,ne,be,we,Ie,me,F,he,re,ce,de,ge,ae,ye=n[9]&&ml(n),qe=n[11];const De=R=>R[52].industry_id;for(let R=0;R<qe.length;R+=1){let Z=vl(n,qe,R),se=De(Z);z.set(se,h[R]=bl(se,Z))}let We=n[13];const Fe=R=>R[49].category_id;for(let R=0;R<We.length;R+=1){let Z=hl(n,We,R),se=Fe(Z);j.set(se,A[R]=gl(se,Z))}function Ye(R,Z){if(R[6])return Zn;if(R[4]&&R[7].length===0)return Qn;if(R[7].length===0)return Xn}let Te=Ye(n),ze=Te&&Te(n),Ne=n[7];const $e=R=>R[46].template_id;for(let R=0;R<Ne.length;R+=1){let Z=_l(n,Ne,R),se=$e(Z);ee.set(se,U[R]=Cl(se,Z))}let Ee=n[12]&&zl(n);return{c(){e=d("div"),t=d("div"),l=d("div"),s=d("div"),s.textContent="模板中心",i=T(),c=d("div"),o=d("input"),p=T(),ye&&ye.c(),f=T(),_=d("button"),_.innerHTML='<i class="svicon sv-close"></i>',u=T(),v=d("div"),m=d("div"),P=d("span"),P.textContent="行业",C=T(),w=d("button"),w.textContent="全部",b=T();for(let R=0;R<h.length;R+=1)h[R].c();D=T(),J=d("div"),H=d("span"),H.textContent="分类",y=T(),L=d("button"),L.textContent="全部",M=T();for(let R=0;R<A.length;R+=1)A[R].c();K=T(),I=d("div"),ze&&ze.c(),N=T(),O=d("div");for(let R=0;R<U.length;R+=1)U[R].c();ve=T(),Y=d("div"),B=d("button"),Q=E("上一页"),V=T(),x=d("span"),pe=E(n[8]),_e=E(" / "),oe=E(n[14]),ne=E("(共 "),be=E(n[1]),we=E(")"),Ie=T(),me=d("button"),F=E("下一页"),ce=T(),Ee&&Ee.c(),de=xe(),a(s,"class","svp-cloud-tc-title svelte-1qg2qyu"),a(o,"class","svp-input svp-cloud-tc-search svelte-1qg2qyu"),a(o,"placeholder","搜索模板名称"),a(c,"class","tc-search-wrap svelte-1qg2qyu"),a(_,"class","svp-btn svp-btn-xs svp-btn-outline"),a(_,"aria-label","关闭"),a(l,"class","svp-cloud-tc-head svelte-1qg2qyu"),a(P,"class","tc-filter-label svelte-1qg2qyu"),a(w,"class","tc-chip svelte-1qg2qyu"),Oe(w,"active",n[2]===""),a(m,"class","tc-filter svelte-1qg2qyu"),a(H,"class","tc-filter-label svelte-1qg2qyu"),a(L,"class","tc-chip svelte-1qg2qyu"),Oe(L,"active",n[10]===""),a(J,"class","tc-filter svelte-1qg2qyu"),a(v,"class","svp-cloud-tc-filters svelte-1qg2qyu"),a(O,"class","svp-cloud-tc-grid svelte-1qg2qyu"),a(I,"class","svp-cloud-tc-body svelte-1qg2qyu"),a(B,"class","svp-btn svp-btn-xs svp-btn-outline"),B.disabled=q=n[8]<=1||n[4],a(x,"class","tc-page svelte-1qg2qyu"),a(me,"class","svp-btn svp-btn-xs svp-btn-outline"),me.disabled=he=n[8]>=n[14]||n[4],a(Y,"class","svp-cloud-tc-foot svelte-1qg2qyu"),a(t,"class","svp-modal-box svp-cloud-tc-box svelte-1qg2qyu"),a(t,"role","dialog"),a(t,"aria-modal","true"),a(e,"class",re=Ge(`svp-modal svp-cloud-tc ${n[3]?"svp-modal-open modal-open":""}`)+" svelte-1qg2qyu")},m(R,Z){k(R,e,Z),r(e,t),r(t,l),r(l,s),r(l,i),r(l,c),r(c,o),Le(o,n[9]),r(c,p),ye&&ye.m(c,null),r(l,f),r(l,_),r(t,u),r(t,v),r(v,m),r(m,P),r(m,C),r(m,w),r(m,b);for(let se=0;se<h.length;se+=1)h[se]&&h[se].m(m,null);r(v,D),r(v,J),r(J,H),r(J,y),r(J,L),r(J,M);for(let se=0;se<A.length;se+=1)A[se]&&A[se].m(J,null);r(t,K),r(t,I),ze&&ze.m(I,null),r(I,N),r(I,O);for(let se=0;se<U.length;se+=1)U[se]&&U[se].m(O,null);r(t,ve),r(t,Y),r(Y,B),r(B,Q),r(Y,V),r(Y,x),r(x,pe),r(x,_e),r(x,oe),r(x,ne),r(x,be),r(x,we),r(Y,Ie),r(Y,me),r(me,F),k(R,ce,Z),Ee&&Ee.m(R,Z),k(R,de,Z),ge||(ae=[W(o,"input",n[31]),W(o,"input",n[16]),W(_,"click",n[0]),W(w,"click",n[32]),W(L,"click",n[34]),W(B,"click",n[38]),W(me,"click",n[39]),W(t,"click",ns),W(e,"click",n[22])],ge=!0)},p(R,Z){Z[0]&512&&o.value!==R[9]&&Le(o,R[9]),R[9]?ye?ye.p(R,Z):(ye=ml(R),ye.c(),ye.m(c,null)):ye&&(ye.d(1),ye=null),Z[0]&4&&Oe(w,"active",R[2]===""),Z[0]&526340&&(qe=R[11],h=je(h,Z,De,1,R,qe,z,m,Be,bl,null,vl)),Z[0]&1024&&Oe(L,"active",R[10]===""),Z[0]&271360&&(We=R[13],A=je(A,Z,Fe,1,R,We,j,J,Be,gl,null,hl)),Te===(Te=Ye(R))&&ze?ze.p(R,Z):(ze&&ze.d(1),ze=Te&&Te(R),ze&&(ze.c(),ze.m(I,N))),Z[0]&3145888&&(Ne=R[7],U=je(U,Z,$e,1,R,Ne,ee,O,Be,Cl,null,_l)),Z[0]&272&&q!==(q=R[8]<=1||R[4])&&(B.disabled=q),Z[0]&256&&G(pe,R[8]),Z[0]&16384&&G(oe,R[14]),Z[0]&2&&G(be,R[1]),Z[0]&16656&&he!==(he=R[8]>=R[14]||R[4])&&(me.disabled=he),Z[0]&8&&re!==(re=Ge(`svp-modal svp-cloud-tc ${R[3]?"svp-modal-open modal-open":""}`)+" svelte-1qg2qyu")&&a(e,"class",re),R[12]?Ee?Ee.p(R,Z):(Ee=zl(R),Ee.c(),Ee.m(de.parentNode,de)):Ee&&(Ee.d(1),Ee=null)},i:fe,o:fe,d(R){R&&g(e),ye&&ye.d();for(let Z=0;Z<h.length;Z+=1)h[Z].d();for(let Z=0;Z<A.length;Z+=1)A[Z].d();ze&&ze.d();for(let Z=0;Z<U.length;Z+=1)U[Z].d();R&&g(ce),Ee&&Ee.d(R),R&&g(de),ge=!1,Pe(ae)}}}function ns(n){n.stopPropagation()}function ss(n,e,t){let l,s,{auth:i}=e,{service:c}=e,{designerUtils:o}=e,{pageSize:p=12}=e,f=!1,_=!1,u=!1,v="",m=[],P=0,C=1,w="",b="",h="",z=[],D=[],J="",H=!1,y=null;function L(){t(3,f=!0),H||K(),I(1)}function M(){t(3,f=!1),t(12,J="")}function A(){f?M():L()}function j(){return f}function K(){return X(this,null,function*(){H=!0;try{const[F,he]=yield Promise.all([c.getCategories().catch(()=>[]),c.getIndustries().catch(()=>[])]);t(30,z=F||[]),t(11,D=he||[])}catch(F){}})}function I(F=1){return X(this,null,function*(){var he;t(4,_=!0),t(6,v="");try{const re=yield c.listTemplates({keyword:w,category_id:b===""?void 0:b,industry_id:h===""?void 0:h,page:F,pageSize:p}),ce=(re==null?void 0:re.list)||(re==null?void 0:re.items)||(Array.isArray(re)?re:[]);t(7,m=ce),t(1,P=(he=re==null?void 0:re.total)!=null?he:ce.length),t(8,C=F)}catch(re){t(6,v=(re==null?void 0:re.message)||"加载模板失败"),t(7,m=[]),t(1,P=0)}finally{t(4,_=!1)}})}function N(){clearTimeout(y),y=setTimeout(()=>I(1),350)}function O(){t(9,w=""),I(1)}function U(F){t(10,b=b===F?"":F),I(1)}function ee(F){h!==F&&t(10,b=""),t(2,h=h===F?"":F),I(1)}function ve(F){F.preview_img&&t(12,J=F.preview_img)}function Y(){return X(this,null,function*(){var F;return i.isLoggedIn()?!0:((F=o==null?void 0:o.showModal)==null||F.call(o,{title:"需要登录",content:"使用模板中心模板需要先登录 sv-print 账号。",showCancel:!0,submitText:"去登录",submit:()=>X(this,null,function*(){var he;try{yield i.login(),yield I(C)}catch(re){(he=o==null?void 0:o.showToast)==null||he.call(o,(re==null?void 0:re.message)||"登录失败",{type:"error"})}})}),!1)})}function B(F){return X(this,null,function*(){var he;(yield Y())&&((he=o==null?void 0:o.showModal)==null||he.call(o,{title:"使用模板",content:`确定使用「${F.template_name}」?将覆盖当前设计内容与打印数据。`,submitText:"覆盖使用",submit:()=>X(this,null,function*(){var re,ce;t(5,u=!0);try{yield c.applyTemplate(F),(re=o==null?void 0:o.showToast)==null||re.call(o,"模板已应用",{type:"success"}),M()}catch(de){(ce=o==null?void 0:o.showToast)==null||ce.call(o,(de==null?void 0:de.message)||"模板应用失败",{type:"error"})}finally{t(5,u=!1)}})}))})}function Q(){M()}function q(){w=this.value,t(9,w)}const V=()=>{t(2,h=""),I(1)},x=F=>ee(F.industry_id),pe=()=>{t(10,b=""),I(1)},_e=F=>U(F.category_id),oe=F=>ve(F),ne=F=>B(F),be=()=>I(C-1),we=()=>I(C+1),Ie=()=>t(12,J=""),me=()=>t(12,J="");return n.$$set=F=>{"auth"in F&&t(23,i=F.auth),"service"in F&&t(24,c=F.service),"designerUtils"in F&&t(25,o=F.designerUtils),"pageSize"in F&&t(26,p=F.pageSize)},n.$$.update=()=>{n.$$.dirty[0]&67108866&&t(14,l=Math.max(1,Math.ceil(P/p))),n.$$.dirty[0]&1073741828&&t(13,s=h===""?z:z.filter(F=>F.industry_id==null||F.industry_id===h))},[M,P,h,f,_,u,v,m,C,w,b,D,J,s,l,I,N,O,U,ee,ve,B,Q,i,c,o,p,L,A,j,z,q,V,x,pe,_e,oe,ne,be,we,Ie,me]}class is extends Jt{constructor(e){super(),Nt(this,e,ss,ls,Lt,{auth:23,service:24,designerUtils:25,pageSize:26,show:27,hide:0,toggle:28,isOpen:29},null,[-1,-1])}get show(){return this.$$.ctx[27]}get hide(){return this.$$.ctx[0]}get toggle(){return this.$$.ctx[28]}get isOpen(){return this.$$.ctx[29]}}const rs=Object.freeze(Object.defineProperty({__proto__:null,default:is},Symbol.toStringTag,{value:"Module"}));function os(n,e,t){const l=n.slice();return l[15]=e[t],l}function cs(n){let e,t;return{c(){e=d("option"),t=E(n[15]),e.__value=["Letter","Legal","Tabloid"].includes(n[15])?n[15].toLowerCase():n[15],e.value=e.__value},m(l,s){k(l,e,s),r(e,t)},p:fe,d(l){l&&g(e)}}}function Sl(n){let e,t,l,s,i,c,o,p,f;return{c(){e=d("label"),t=E("宽度(mm)"),l=d("input"),s=T(),i=d("label"),c=E("高度(mm)"),o=d("input"),a(l,"class","svp-input svp-input-sm svelte-ye0rpk"),a(l,"type","number"),a(l,"min","1"),a(l,"max","2000"),a(l,"step","0.1"),a(e,"class","svelte-ye0rpk"),a(o,"class","svp-input svp-input-sm svelte-ye0rpk"),a(o,"type","number"),a(o,"min","1"),a(o,"max","2000"),a(o,"step","0.1"),a(i,"class","svelte-ye0rpk")},m(_,u){k(_,e,u),r(e,t),r(e,l),Le(l,n[0].width),k(_,s,u),k(_,i,u),r(i,c),r(i,o),Le(o,n[0].height),p||(f=[W(l,"input",n[4]),W(o,"input",n[5])],p=!0)},p(_,u){u&1&&Ve(l.value)!==_[0].width&&Le(l,_[0].width),u&1&&Ve(o.value)!==_[0].height&&Le(o,_[0].height)},d(_){_&&g(e),_&&g(s),_&&g(i),p=!1,Pe(f)}}}function as(n){let e,t,l,s,i,c,o,p,f,_,u,v,m,P,C,w,b,h,z,D,J,H,y,L,M,A,j,K,I,N,O,U,ee,ve,Y,B,Q,q,V,x,pe,_e,oe,ne,be,we,Ie,me,F,he,re,ce,de,ge,ae,ye,qe,De,We,Fe,Ye,Te,ze,Ne,$e,Ee,R=["A4","A3","A5","B4","B5","Letter","Legal","Tabloid"],Z=[];for(let ue=0;ue<8;ue+=1)Z[ue]=cs(os(n,R,ue));let se=n[0].pageSize==="custom"&&Sl(n);return{c(){e=d("fieldset"),t=d("legend"),t.textContent="打印参数",l=T(),s=d("div"),i=d("label"),c=E(`纸张
26
+ `),o=d("select"),p=d("option"),p.textContent="使用模板 / 客户端设置";for(let ue=0;ue<8;ue+=1)Z[ue].c();f=d("option"),f.textContent="自定义尺寸",_=T(),u=d("label"),v=E("份数"),m=d("input"),P=T(),se&&se.c(),C=T(),w=d("label"),b=E("方向"),h=d("select"),z=d("option"),z.textContent="纵向",D=d("option"),D.textContent="横向",J=T(),H=d("label"),y=E("双面"),L=d("select"),M=d("option"),M.textContent="单面",A=d("option"),A.textContent="长边翻转",j=d("option"),j.textContent="短边翻转",K=T(),I=d("label"),N=E("缩放(%)"),O=d("input"),U=T(),ee=d("label"),ve=E("每张纸页数"),Y=d("input"),B=T(),Q=d("label"),q=E("边距"),V=d("select"),x=d("option"),x.textContent="无边距",pe=d("option"),pe.textContent="默认",_e=d("option"),_e.textContent="最小",oe=T(),ne=d("div"),be=d("label"),we=d("input"),Ie=E(" 彩色"),me=T(),F=d("label"),he=d("input"),re=E(" 打印背景"),ce=T(),de=d("label"),ge=d("input"),ae=E(" 静默打印"),ye=T(),qe=d("details"),De=d("summary"),De.textContent="附加打印选项(JSON)",We=T(),Fe=d("label"),Ye=E(`附加参数
27
+ `),Te=d("textarea"),ze=T(),Ne=d("p"),Ne.textContent="填写 JSON 对象,可覆盖同名常规参数;打印机和双面方式以当前选择为准。",a(t,"class","svelte-ye0rpk"),p.__value="",p.value=p.__value,f.__value="custom",f.value=f.__value,a(o,"class","svp-select svp-select-sm svelte-ye0rpk"),n[0].pageSize===void 0&&He(()=>n[2].call(o)),a(i,"class","svelte-ye0rpk"),a(m,"class","svp-input svp-input-sm svelte-ye0rpk"),a(m,"type","number"),a(m,"min","1"),a(m,"max","99"),a(m,"step","1"),a(u,"class","svelte-ye0rpk"),z.__value=!1,z.value=z.__value,D.__value=!0,D.value=D.__value,a(h,"class","svp-select svp-select-sm svelte-ye0rpk"),n[0].landscape===void 0&&He(()=>n[6].call(h)),a(w,"class","svelte-ye0rpk"),M.__value="simplex",M.value=M.__value,A.__value="longEdge",A.value=A.__value,j.__value="shortEdge",j.value=j.__value,a(L,"class","svp-select svp-select-sm svelte-ye0rpk"),n[0].duplexMode===void 0&&He(()=>n[7].call(L)),a(H,"class","svelte-ye0rpk"),a(O,"class","svp-input svp-input-sm svelte-ye0rpk"),a(O,"type","number"),a(O,"min","10"),a(O,"max","200"),a(I,"class","svelte-ye0rpk"),a(Y,"class","svp-input svp-input-sm svelte-ye0rpk"),a(Y,"type","number"),a(Y,"min","1"),a(Y,"max","16"),a(Y,"step","1"),a(ee,"class","svelte-ye0rpk"),x.__value="none",x.value=x.__value,pe.__value="default",pe.value=pe.__value,_e.__value="minimum",_e.value=_e.__value,a(V,"class","svp-select svp-select-sm svelte-ye0rpk"),n[0].marginType===void 0&&He(()=>n[10].call(V)),a(Q,"class","svelte-ye0rpk"),a(s,"class","options-grid svelte-ye0rpk"),a(we,"type","checkbox"),a(be,"class","svelte-ye0rpk"),a(he,"type","checkbox"),a(F,"class","svelte-ye0rpk"),a(ge,"type","checkbox"),a(de,"class","svelte-ye0rpk"),a(ne,"class","options-checks svelte-ye0rpk"),a(De,"class","svelte-ye0rpk"),a(Te,"class","svp-textarea svp-w-full"),a(Te,"rows","3"),a(Te,"placeholder",'例如:{"collate":true}'),a(Fe,"class","extra-label svelte-ye0rpk"),a(Ne,"class","svelte-ye0rpk"),a(e,"class","print-options svelte-ye0rpk"),e.disabled=n[1]},m(ue,Me){k(ue,e,Me),r(e,t),r(e,l),r(e,s),r(s,i),r(i,c),r(i,o),r(o,p);for(let ct=0;ct<8;ct+=1)Z[ct]&&Z[ct].m(o,null);r(o,f),Ae(o,n[0].pageSize,!0),r(s,_),r(s,u),r(u,v),r(u,m),Le(m,n[0].copies),r(s,P),se&&se.m(s,null),r(s,C),r(s,w),r(w,b),r(w,h),r(h,z),r(h,D),Ae(h,n[0].landscape,!0),r(s,J),r(s,H),r(H,y),r(H,L),r(L,M),r(L,A),r(L,j),Ae(L,n[0].duplexMode,!0),r(s,K),r(s,I),r(I,N),r(I,O),Le(O,n[0].scaleFactor),r(s,U),r(s,ee),r(ee,ve),r(ee,Y),Le(Y,n[0].pagesPerSheet),r(s,B),r(s,Q),r(Q,q),r(Q,V),r(V,x),r(V,pe),r(V,_e),Ae(V,n[0].marginType,!0),r(e,oe),r(e,ne),r(ne,be),r(be,we),we.checked=n[0].color,r(be,Ie),r(ne,me),r(ne,F),r(F,he),he.checked=n[0].printBackground,r(F,re),r(ne,ce),r(ne,de),r(de,ge),ge.checked=n[0].silent,r(de,ae),r(e,ye),r(e,qe),r(qe,De),r(qe,We),r(qe,Fe),r(Fe,Ye),r(Fe,Te),Le(Te,n[0].extra),r(qe,ze),r(qe,Ne),$e||(Ee=[W(o,"change",n[2]),W(m,"input",n[3]),W(h,"change",n[6]),W(L,"change",n[7]),W(O,"input",n[8]),W(Y,"input",n[9]),W(V,"change",n[10]),W(we,"change",n[11]),W(he,"change",n[12]),W(ge,"change",n[13]),W(Te,"input",n[14])],$e=!0)},p(ue,[Me]){Me&1&&Ae(o,ue[0].pageSize),Me&1&&Ve(m.value)!==ue[0].copies&&Le(m,ue[0].copies),ue[0].pageSize==="custom"?se?se.p(ue,Me):(se=Sl(ue),se.c(),se.m(s,C)):se&&(se.d(1),se=null),Me&1&&Ae(h,ue[0].landscape),Me&1&&Ae(L,ue[0].duplexMode),Me&1&&Ve(O.value)!==ue[0].scaleFactor&&Le(O,ue[0].scaleFactor),Me&1&&Ve(Y.value)!==ue[0].pagesPerSheet&&Le(Y,ue[0].pagesPerSheet),Me&1&&Ae(V,ue[0].marginType),Me&1&&(we.checked=ue[0].color),Me&1&&(he.checked=ue[0].printBackground),Me&1&&(ge.checked=ue[0].silent),Me&1&&Le(Te,ue[0].extra),Me&2&&(e.disabled=ue[1])},i:fe,o:fe,d(ue){ue&&g(e),Rn(Z,ue),se&&se.d(),$e=!1,Pe(Ee)}}}function us(n,e,t){let{value:l}=e,{disabled:s=!1}=e;function i(){l.pageSize=Qe(this),t(0,l)}function c(){l.copies=Ve(this.value),t(0,l)}function o(){l.width=Ve(this.value),t(0,l)}function p(){l.height=Ve(this.value),t(0,l)}function f(){l.landscape=Qe(this),t(0,l)}function _(){l.duplexMode=Qe(this),t(0,l)}function u(){l.scaleFactor=Ve(this.value),t(0,l)}function v(){l.pagesPerSheet=Ve(this.value),t(0,l)}function m(){l.marginType=Qe(this),t(0,l)}function P(){l.color=this.checked,t(0,l)}function C(){l.printBackground=this.checked,t(0,l)}function w(){l.silent=this.checked,t(0,l)}function b(){l.extra=this.value,t(0,l)}return n.$$set=h=>{"value"in h&&t(0,l=h.value),"disabled"in h&&t(1,s=h.disabled)},[l,s,i,c,o,p,f,_,u,v,m,P,C,w,b]}class Pl extends Jt{constructor(e){super(),Nt(this,e,us,as,Nn,{value:0,disabled:1})}}function El(){return{pageSize:"",width:210,height:297,copies:1,landscape:!1,duplexMode:"simplex",color:!0,silent:!0,printBackground:!0,scaleFactor:100,pagesPerSheet:1,marginType:"none",extra:""}}function Ll(n,e){if(!e.trim())throw new Error("请选择打印机");let t={};if(n.extra.trim()){try{t=JSON.parse(n.extra)}catch(i){throw new Error("附加打印选项不是合法的 JSON")}if(!t||typeof t!="object"||Array.isArray(t))throw new Error("附加打印选项 JSON 顶层必须是对象")}const l=(i,c,o,p,f=!1)=>{if(!Number.isFinite(i)||i<o||i>p||f&&!Number.isInteger(i))throw new Error(`${c}必须为 ${o}–${p} 范围内的${f?"整数":"数值"}`);return i},s={copies:l(n.copies,"份数",1,99,!0),landscape:n.landscape,color:n.color,silent:n.silent,printBackground:n.printBackground,scaleFactor:l(n.scaleFactor,"缩放比例",10,200),pagesPerSheet:l(n.pagesPerSheet,"每张纸页数",1,16,!0),margins:{marginType:n.marginType}};return n.pageSize==="custom"?s.pageSize={width:Math.round(l(n.width,"纸张宽度",1,2e3)*1e3),height:Math.round(l(n.height,"纸张高度",1,2e3)*1e3)}:n.pageSize&&(s.pageSize=n.pageSize),lt(Xe(Xe({},s),t),{printer:e,duplexMode:n.duplexMode})}function Il(n,e,t){const l=n.slice();return l[103]=e[t],l}function ql(n,e,t){const l=n.slice();return l[119]=e[t],l}function Ml(n,e,t){const l=n.slice();return l[109]=e[t],l}function Al(n,e,t){const l=n.slice();return l[103]=e[t],l}function Ol(n,e,t){const l=n.slice();return l[114]=e[t],l}function Dl(n,e,t){const l=n.slice();return l[106]=e[t],l}function Ul(n,e,t){const l=n.slice();return l[103]=e[t],l}function Nl(n,e,t){const l=n.slice();return l[122]=e[t],l}function Jl(n,e){let t,l,s,i=e[122].label+"",c,o,p,f,_;function u(){return e[72](e[122])}return{key:n,first:null,c(){t=d("button"),l=d("i"),s=T(),c=E(i),o=T(),a(l,"class","svicon "+e[122].icon+" svelte-1v5czrr"),a(t,"class",p=Ge(`cloud-nav-item ${e[6]===e[122].key?"cloud-nav-active":""}`)+" svelte-1v5czrr"),this.first=t},m(v,m){k(v,t,m),r(t,l),r(t,s),r(t,c),r(t,o),f||(_=W(t,"click",u),f=!0)},p(v,m){e=v,m[0]&64&&p!==(p=Ge(`cloud-nav-item ${e[6]===e[122].key?"cloud-nav-active":""}`)+" svelte-1v5czrr")&&a(t,"class",p)},d(v){v&&g(t),f=!1,_()}}}function fs(n){let e,t,l,s,i,c,o=(n[0].host||"/api")+"",p,f,_,u,v,m,P,C,w,b,h,z,D,J,H,y=n[5]&&Rl(n);return{c(){e=d("div"),t=d("div"),t.textContent="连接配置",l=T(),s=d("div"),i=d("span"),i.textContent="服务端 host",c=d("code"),p=E(o),f=T(),_=d("span"),_.textContent="登录方式",u=d("code"),v=E(n[45]),m=E("("),P=E(n[2]),C=E(")"),w=T(),b=d("span"),b.textContent="存储 key",h=d("code"),z=E(n[44]),D=T(),y&&y.c(),J=T(),H=d("div"),H.textContent="以上为插件初始化时的只读配置;实际使用时请通过插件设置修改。",a(t,"class","settings-subtitle"),a(i,"class","svelte-1v5czrr"),a(c,"class","svelte-1v5czrr"),a(_,"class","svelte-1v5czrr"),a(u,"class","svelte-1v5czrr"),a(b,"class","svelte-1v5czrr"),a(h,"class","svelte-1v5czrr"),a(s,"class","cloud-kv svelte-1v5czrr"),a(H,"class","settings-hint"),a(e,"class","settings-section")},m(L,M){k(L,e,M),r(e,t),r(e,l),r(e,s),r(s,i),r(s,c),r(c,p),r(s,f),r(s,_),r(s,u),r(u,v),r(u,m),r(u,P),r(u,C),r(s,w),r(s,b),r(s,h),r(h,z),r(s,D),y&&y.m(s,null),r(e,J),r(e,H)},p(L,M){M[0]&1&&o!==(o=(L[0].host||"/api")+"")&&G(p,o),M[1]&16384&&G(v,L[45]),M[0]&4&&G(P,L[2]),M[1]&8192&&G(z,L[44]),L[5]?y?y.p(L,M):(y=Rl(L),y.c(),y.m(s,null)):y&&(y.d(1),y=null)},i:fe,o:fe,d(L){L&&g(e),y&&y.d()}}}function ds(n){let e,t,l,s,i,c=n[36]?"已连接":"未连接",o,p,f,_,u,v,m,P;function C(z,D){return z[36]?bs:ms}let w=C(n),b=w(n),h=n[36]&&Hl(n);return{c(){e=d("div"),t=d("div"),l=d("div"),l.textContent="中转打印",s=T(),i=d("span"),o=E(c),f=T(),_=d("p"),_.textContent=`通过短期 ticket
28
+ 直连中转服务(socket.io),打印指令实时送达本地客户端,不产生云打印任务记录。`,u=T(),v=d("div"),b.c(),m=T(),h&&h.c(),a(l,"class","settings-subtitle"),Ue(l,"margin","0"),a(i,"class",p=Ge(`svp-badge svp-badge-sm ${n[36]?"badge-on":""}`)+" svelte-1v5czrr"),a(t,"class","svp-flex-row svp-justify-between"),Ue(t,"margin-bottom","10px"),a(_,"class","settings-hint"),a(v,"class","form-actions"),a(e,"class","settings-section")},m(z,D){k(z,e,D),r(e,t),r(t,l),r(t,s),r(t,i),r(i,o),r(e,f),r(e,_),r(e,u),r(e,v),b.m(v,null),r(e,m),h&&h.m(e,null),P=!0},p(z,D){(!P||D[1]&32)&&c!==(c=z[36]?"已连接":"未连接")&&G(o,c),(!P||D[1]&32&&p!==(p=Ge(`svp-badge svp-badge-sm ${z[36]?"badge-on":""}`)+" svelte-1v5czrr"))&&a(i,"class",p),w===(w=C(z))&&b?b.p(z,D):(b.d(1),b=w(z),b&&(b.c(),b.m(v,null))),z[36]?h?(h.p(z,D),D[1]&32&&Re(h,1)):(h=Hl(z),h.c(),Re(h,1),h.m(e,null)):h&&(At(),Ze(h,1,1,()=>{h=null}),Ot())},i(z){P||(Re(h),P=!0)},o(z){Ze(h),P=!1},d(z){z&&g(e),b.d(),h&&h.d()}}}function ps(n){let e,t,l,s,i,c,o,p,f,_,u,v,m,P,C,w,b,h,z,D,J,H,y,L,M,A,j,K;function I(B,Q){return B[21]?Ps:B[20].length===0?Ss:zs}let N=I(n),O=N(n),U=n[23]&&Vl(n);function ee(B,Q){return B[30]?Ms:B[29].length===0?qs:Is}let ve=ee(n),Y=ve(n);return{c(){e=d("div"),t=d("div"),l=d("div"),l.textContent="云设备",s=T(),i=d("button"),c=d("i"),o=E(" 刷新"),p=T(),O.c(),f=T(),U&&U.c(),_=T(),u=d("div"),v=d("button"),m=d("i"),P=E(" 下发云打印"),w=T(),b=d("div"),h=T(),z=d("div"),D=d("div"),D.textContent="打印任务",J=T(),H=d("button"),y=d("i"),L=E(" 刷新"),M=T(),Y.c(),a(l,"class","settings-subtitle"),Ue(l,"margin","0"),a(c,"class","svicon sv-refresh"),a(i,"class","svp-btn svp-btn-ghost svp-btn-xs"),i.disabled=n[21],a(t,"class","svp-flex-row svp-justify-between"),Ue(t,"margin-bottom","10px"),a(m,"class","svicon sv-print"),a(v,"class","svp-btn svp-btn-primary svp-btn-sm"),v.disabled=C=n[10]||n[21]||n[26]||!n[23]||!n[25].trim(),a(u,"class","form-actions"),a(b,"class","settings-divider"),a(D,"class","settings-subtitle"),Ue(D,"margin","0"),a(y,"class","svicon sv-refresh"),a(H,"class","svp-btn svp-btn-ghost svp-btn-xs"),H.disabled=n[30],a(z,"class","svp-flex-row svp-justify-between"),Ue(z,"margin-bottom","10px"),a(e,"class","settings-section")},m(B,Q){k(B,e,Q),r(e,t),r(t,l),r(t,s),r(t,i),r(i,c),r(i,o),r(e,p),O.m(e,null),r(e,f),U&&U.m(e,null),r(e,_),r(e,u),r(u,v),r(v,m),r(v,P),r(e,w),r(e,b),r(e,h),r(e,z),r(z,D),r(z,J),r(z,H),r(H,y),r(H,L),r(e,M),Y.m(e,null),A=!0,j||(K=[W(i,"click",n[57]),W(v,"click",n[61]),W(H,"click",n[60])],j=!0)},p(B,Q){(!A||Q[0]&2097152)&&(i.disabled=B[21]),N===(N=I(B))&&O?O.p(B,Q):(O.d(1),O=N(B),O&&(O.c(),O.m(e,f))),B[23]?U?(U.p(B,Q),Q[0]&8388608&&Re(U,1)):(U=Vl(B),U.c(),Re(U,1),U.m(e,_)):U&&(At(),Ze(U,1,1,()=>{U=null}),Ot()),(!A||Q[0]&127927296&&C!==(C=B[10]||B[21]||B[26]||!B[23]||!B[25].trim()))&&(v.disabled=C),(!A||Q[0]&1073741824)&&(H.disabled=B[30]),ve===(ve=ee(B))&&Y?Y.p(B,Q):(Y.d(1),Y=ve(B),Y&&(Y.c(),Y.m(e,null)))},i(B){A||(Re(U),A=!0)},o(B){Ze(U),A=!1},d(B){B&&g(e),O.d(),U&&U.d(),Y.d(),j=!1,Pe(K)}}}function _s(n){let e,t,l,s,i,c,o,p,f,_,u,v,m,P,C,w,b,h,z,D,J,H,y;function L(I,N){return I[10]?Os:As}let M=L(n),A=M(n),j=n[19]&&Zl(),K=n[4]&&$l(n);return{c(){e=d("div"),t=d("div"),t.textContent="服务端渲染",l=T(),s=d("p"),s.textContent="使用当前设计器模板与打印数据提交服务端渲染。",i=T(),c=d("div"),o=d("label"),o.textContent="输出类型",p=T(),f=d("select"),_=d("option"),_.textContent="pdf",u=d("option"),u.textContent="img",v=d("option"),v.textContent="html",m=T(),P=d("label"),C=d("input"),w=E(`
29
+ 同步返回`),b=T(),h=d("div"),z=d("button"),A.c(),D=T(),j&&j.c(),J=T(),K&&K.c(),a(t,"class","settings-subtitle"),a(s,"class","settings-hint"),a(o,"class","form-label"),_.__value="pdf",_.value=_.__value,u.__value="img",u.value=u.__value,v.__value="html",v.value=v.__value,a(f,"class","svp-select svp-select-sm"),n[17]===void 0&&He(()=>n[79].call(f)),a(c,"class","form-row"),a(C,"type","checkbox"),a(C,"class","svp-checkbox svp-checkbox-sm svp-checkbox-primary"),a(P,"class","cloud-checkbox-label svelte-1v5czrr"),a(z,"class","svp-btn svp-btn-primary svp-btn-sm"),z.disabled=n[10],a(h,"class","form-actions"),a(e,"class","settings-section")},m(I,N){k(I,e,N),r(e,t),r(e,l),r(e,s),r(e,i),r(e,c),r(c,o),r(c,p),r(c,f),r(f,_),r(f,u),r(f,v),Ae(f,n[17],!0),r(e,m),r(e,P),r(P,C),C.checked=n[18],r(P,w),r(e,b),r(e,h),r(h,z),A.m(z,null),r(e,D),j&&j.m(e,null),r(e,J),K&&K.m(e,null),H||(y=[W(f,"change",n[79]),W(C,"change",n[80]),W(z,"click",n[56])],H=!0)},p(I,N){N[0]&131072&&Ae(f,I[17]),N[0]&262144&&(C.checked=I[18]),M!==(M=L(I))&&(A.d(1),A=M(I),A&&(A.c(),A.m(z,null))),N[0]&1024&&(z.disabled=I[10]),I[19]?j||(j=Zl(),j.c(),j.m(e,J)):j&&(j.d(1),j=null),I[4]?K?K.p(I,N):(K=$l(I),K.c(),K.m(e,null)):K&&(K.d(1),K=null)},i:fe,o:fe,d(I){I&&g(e),A.d(),j&&j.d(),K&&K.d(),H=!1,Pe(y)}}}function hs(n){let e,t,l,s,i,c,o,p,f,_,u,v,m,P,C,w,b,h,z,D,J,H;function y(A,j){return A[16]?Fs:A[15].length===0?js:Bs}let L=y(n),M=L(n);return{c(){e=d("div"),t=d("div"),l=d("div"),l.textContent="模板中心",s=T(),i=d("button"),c=d("i"),o=E(" 随机使用模板"),_=T(),u=d("p"),u.textContent="一键更新当前设计器的模板 JSON 与打印数据(需登录)。列表浏览免登录。",v=T(),m=d("div"),P=d("input"),C=T(),w=d("button"),b=E("搜索"),h=T(),z=d("button"),z.textContent="弹窗浏览",D=T(),M.c(),a(l,"class","settings-subtitle"),Ue(l,"margin","0"),a(c,"class","svicon sv-refresh"),a(i,"class","svp-btn svp-btn-primary svp-btn-xs"),i.disabled=p=n[10]||!n[7],a(i,"title",f=n[7]?"随机取一个模板并覆盖当前设计内容与打印数据":"请先登录"),a(t,"class","svp-flex-row svp-justify-between"),Ue(t,"margin-bottom","10px"),a(u,"class","settings-hint"),a(P,"class","svp-input svp-input-sm svp-w-full"),a(P,"placeholder","搜索模板名称"),a(w,"class","svp-btn svp-btn-outline svp-btn-sm"),w.disabled=n[16],a(z,"class","svp-btn svp-btn-ghost svp-btn-sm"),a(z,"title","打开模板中心弹窗"),a(m,"class","cloud-search-row svelte-1v5czrr"),a(e,"class","settings-section")},m(A,j){k(A,e,j),r(e,t),r(t,l),r(t,s),r(t,i),r(i,c),r(i,o),r(e,_),r(e,u),r(e,v),r(e,m),r(m,P),Le(P,n[14]),r(m,C),r(m,w),r(w,b),r(m,h),r(m,z),r(e,D),M.m(e,null),J||(H=[W(i,"click",n[54]),W(P,"input",n[75]),W(P,"keydown",n[76]),W(w,"click",n[53]),W(z,"click",n[77])],J=!0)},p(A,j){j[0]&1152&&p!==(p=A[10]||!A[7])&&(i.disabled=p),j[0]&128&&f!==(f=A[7]?"随机取一个模板并覆盖当前设计内容与打印数据":"请先登录")&&a(i,"title",f),j[0]&16384&&P.value!==A[14]&&Le(P,A[14]),j[0]&65536&&(w.disabled=A[16]),L===(L=y(A))&&M?M.p(A,j):(M.d(1),M=L(A),M&&(M.c(),M.m(e,null)))},i:fe,o:fe,d(A){A&&g(e),M.d(),J=!1,Pe(H)}}}function vs(n){let e,t,l,s,i,c,o,p,f,_=n[46]&&nn(n);function u(b,h){return b[9]?Qs:Xs}let v=u(n),m=v(n);function P(b,h){return b[7]?xs:b[2]==="none"?$s:Zs}let C=P(n),w=C(n);return{c(){e=d("div"),t=d("div"),l=d("div"),l.textContent="账户",s=T(),i=d("span"),c=E(n[45]),o=T(),_&&_.c(),p=T(),m.c(),f=T(),w.c(),a(l,"class","settings-subtitle"),Ue(l,"margin","0"),a(i,"class","svp-badge svp-badge-sm"),a(t,"class","svp-flex-row svp-justify-between"),Ue(t,"margin-bottom","10px"),a(e,"class","settings-section")},m(b,h){k(b,e,h),r(e,t),r(t,l),r(t,s),r(t,i),r(i,c),r(e,o),_&&_.m(e,null),r(e,p),m.m(e,null),r(e,f),w.m(e,null)},p(b,h){h[1]&16384&&G(c,b[45]),b[46]?_?_.p(b,h):(_=nn(b),_.c(),_.m(e,p)):_&&(_.d(1),_=null),v===(v=u(b))&&m?m.p(b,h):(m.d(1),m=v(b),m&&(m.c(),m.m(e,f))),C===(C=P(b))&&w?w.p(b,h):(w.d(1),w=C(b),w&&(w.c(),w.m(e,null)))},i:fe,o:fe,d(b){b&&g(e),_&&_.d(),m.d(),w.d()}}}function Rl(n){let e,t,l=(n[5].authorizeOrigin||"未配置")+"",s,i,c,o,p,f,_,u,v=(n[5].clientId||"未配置")+"",m,P,C,w,b;return{c(){e=d("span"),e.textContent="授权页源",t=d("code"),s=E(l),i=T(),c=d("span"),c.textContent="授权方式",o=d("code"),p=E(n[41]),f=T(),_=d("span"),_.textContent="client_id",u=d("code"),m=E(v),P=T(),C=d("span"),C.textContent="scope",w=d("code"),b=E(n[42]),a(e,"class","svelte-1v5czrr"),a(t,"class","svelte-1v5czrr"),a(c,"class","svelte-1v5czrr"),a(o,"class","svelte-1v5czrr"),a(_,"class","svelte-1v5czrr"),a(u,"class","svelte-1v5czrr"),a(C,"class","svelte-1v5czrr"),a(w,"class","svelte-1v5czrr")},m(h,z){k(h,e,z),k(h,t,z),r(t,s),k(h,i,z),k(h,c,z),k(h,o,z),r(o,p),k(h,f,z),k(h,_,z),k(h,u,z),r(u,m),k(h,P,z),k(h,C,z),k(h,w,z),r(w,b)},p(h,z){z[0]&32&&l!==(l=(h[5].authorizeOrigin||"未配置")+"")&&G(s,l),z[1]&1024&&G(p,h[41]),z[0]&32&&v!==(v=(h[5].clientId||"未配置")+"")&&G(m,v),z[1]&2048&&G(b,h[42])},d(h){h&&g(e),h&&g(t),h&&g(i),h&&g(c),h&&g(o),h&&g(f),h&&g(_),h&&g(u),h&&g(P),h&&g(C),h&&g(w)}}}function ms(n){let e,t,l;function s(o,p){return o[10]?ks:gs}let i=s(n),c=i(n);return{c(){e=d("button"),c.c(),a(e,"class","svp-btn svp-btn-primary svp-btn-sm"),e.disabled=n[10]},m(o,p){k(o,e,p),c.m(e,null),t||(l=W(e,"click",n[64]),t=!0)},p(o,p){i!==(i=s(o))&&(c.d(1),c=i(o),c&&(c.c(),c.m(e,null))),p[0]&1024&&(e.disabled=o[10])},d(o){o&&g(e),c.d(),t=!1,l()}}}function bs(n){let e,t,l,s,i,c,o;return{c(){e=d("button"),e.textContent="断开连接",t=T(),l=d("button"),s=d("i"),i=E(" 刷新客户端"),a(e,"class","svp-btn svp-btn-ghost svp-btn-sm"),a(s,"class","svicon sv-refresh"),a(l,"class","svp-btn svp-btn-outline svp-btn-sm"),l.disabled=n[10]},m(p,f){k(p,e,f),k(p,t,f),k(p,l,f),r(l,s),r(l,i),c||(o=[W(e,"click",n[65]),W(l,"click",n[64])],c=!0)},p(p,f){f[0]&1024&&(l.disabled=p[10])},d(p){p&&g(e),p&&g(t),p&&g(l),c=!1,Pe(o)}}}function gs(n){let e,t;return{c(){e=d("i"),t=E(" 连接中转服务"),a(e,"class","svicon sv-flow")},m(l,s){k(l,e,s),k(l,t,s)},d(l){l&&g(e),l&&g(t)}}}function ks(n){let e,t;return{c(){e=d("i"),t=E(" 连接中..."),a(e,"class","svicon sv-refresh svp-spin svelte-1v5czrr")},m(l,s){k(l,e,s),k(l,t,s)},d(l){l&&g(e),l&&g(t)}}}function Hl(n){let e,t,l,s,i,c,o,p,f=[],_=new Map,u,v,m,P,C,w,b,h,z,D,J,H,y,L,M,A;function j(q,V){return q[31].length===0?ws:ys}let K=j(n),I=K(n),N=n[33];const O=q=>q[103].name;for(let q=0;q<N.length;q+=1){let V=Il(n,N,q),x=O(V);_.set(x,f[q]=jl(x,V))}let U=n[32]&&!n[10]&&!n[33].length&&Fl();function ee(q){n[93](q)}let ve={disabled:n[10]||!n[32]};n[35]!==void 0&&(ve.value=n[35]),h=new Pl({props:ve}),pt.push(()=>dl(h,"value",ee));function Y(q,V){return q[10]?Cs:Ts}let B=Y(n),Q=B(n);return{c(){e=d("div"),t=T(),I.c(),l=T(),s=d("div"),i=d("label"),i.textContent="打印机",c=T(),o=d("select"),p=d("option"),p.textContent="请选择打印机";for(let q=0;q<f.length;q+=1)f[q].c();v=T(),m=d("button"),P=d("i"),w=T(),U&&U.c(),b=T(),pl(h.$$.fragment),D=T(),J=d("div"),H=d("button"),Q.c(),a(e,"class","settings-divider"),a(i,"class","form-label"),a(i,"for","transit-printer"),p.__value="",p.value=p.__value,a(o,"id","transit-printer"),a(o,"class","svp-select svp-select-sm svp-w-full"),o.disabled=u=n[10]||!n[32]||!n[33].length,n[34]===void 0&&He(()=>n[91].call(o)),a(P,"class","svicon sv-refresh"),a(m,"class","svp-btn svp-btn-ghost svp-btn-xs"),m.disabled=C=n[10]||!n[32],a(s,"class","form-row"),a(H,"class","svp-btn svp-btn-primary svp-btn-sm"),H.disabled=y=n[10]||!n[32]||!n[34],a(J,"class","form-actions")},m(q,V){k(q,e,V),k(q,t,V),I.m(q,V),k(q,l,V),k(q,s,V),r(s,i),r(s,c),r(s,o),r(o,p);for(let x=0;x<f.length;x+=1)f[x]&&f[x].m(o,null);Ae(o,n[34],!0),r(s,v),r(s,m),r(m,P),k(q,w,V),U&&U.m(q,V),k(q,b,V),Dt(h,q,V),k(q,D,V),k(q,J,V),r(J,H),Q.m(H,null),L=!0,M||(A=[W(o,"change",n[91]),W(m,"click",n[92]),W(H,"click",n[68])],M=!0)},p(q,V){K===(K=j(q))&&I?I.p(q,V):(I.d(1),I=K(q),I&&(I.c(),I.m(l.parentNode,l))),V[1]&4&&(N=q[33],f=je(f,V,O,1,q,N,_,o,Be,jl,null,Il)),(!L||V[0]&1024|V[1]&7&&u!==(u=q[10]||!q[32]||!q[33].length))&&(o.disabled=u),V[1]&12&&Ae(o,q[34]),(!L||V[0]&1024|V[1]&3&&C!==(C=q[10]||!q[32]))&&(m.disabled=C),q[32]&&!q[10]&&!q[33].length?U||(U=Fl(),U.c(),U.m(b.parentNode,b)):U&&(U.d(1),U=null);const x={};V[0]&1024|V[1]&2&&(x.disabled=q[10]||!q[32]),!z&&V[1]&16&&(z=!0,x.value=q[35],ul(()=>z=!1)),h.$set(x),B!==(B=Y(q))&&(Q.d(1),Q=B(q),Q&&(Q.c(),Q.m(H,null))),(!L||V[0]&1024|V[1]&15&&y!==(y=q[10]||!q[32]||!q[34]))&&(H.disabled=y)},i(q){L||(Re(h.$$.fragment,q),L=!0)},o(q){Ze(h.$$.fragment,q),L=!1},d(q){q&&g(e),q&&g(t),I.d(q),q&&g(l),q&&g(s);for(let V=0;V<f.length;V+=1)f[V].d();q&&g(w),U&&U.d(q),q&&g(b),Ut(h,q),q&&g(D),q&&g(J),Q.d(),M=!1,Pe(A)}}}function ys(n){let e,t,l,s,i=[],c=new Map,o,p,f=n[31];const _=u=>u[119].clientId;for(let u=0;u<f.length;u+=1){let v=ql(n,f,u),m=_(v);c.set(m,i[u]=Bl(m,v))}return{c(){e=d("div"),t=d("label"),t.textContent="客户端",l=T(),s=d("select");for(let u=0;u<i.length;u+=1)i[u].c();a(t,"class","form-label"),a(t,"for","transit-client"),a(s,"id","transit-client"),a(s,"class","svp-select svp-select-sm svp-w-full"),s.disabled=n[10],n[32]===void 0&&He(()=>n[89].call(s)),a(e,"class","form-row")},m(u,v){k(u,e,v),r(e,t),r(e,l),r(e,s);for(let m=0;m<i.length;m+=1)i[m]&&i[m].m(s,null);Ae(s,n[32],!0),o||(p=[W(s,"change",n[89]),W(s,"change",n[90])],o=!0)},p(u,v){v[1]&1&&(f=u[31],i=je(i,v,_,1,u,f,c,s,Be,Bl,null,ql)),v[0]&1024&&(s.disabled=u[10]),v[1]&3&&Ae(s,u[32])},d(u){u&&g(e);for(let v=0;v<i.length;v+=1)i[v].d();o=!1,Pe(p)}}}function ws(n){let e;return{c(){e=d("div"),e.textContent="暂无在线客户端(需桌面客户端 sv-print-client 在线)",a(e,"class","settings-empty"),Ue(e,"margin-bottom","10px")},m(t,l){k(t,e,l)},p:fe,d(t){t&&g(e)}}}function Bl(n,e){let t,l=(e[119].hostname||e[119].clientId)+"",s,i=e[119].platform?` · ${e[119].platform}`:"",c,o,p;return{key:n,first:null,c(){t=d("option"),s=E(l),c=E(i),o=T(),t.__value=p=e[119].clientId,t.value=t.__value,this.first=t},m(f,_){k(f,t,_),r(t,s),r(t,c),r(t,o)},p(f,_){e=f,_[1]&1&&l!==(l=(e[119].hostname||e[119].clientId)+"")&&G(s,l),_[1]&1&&i!==(i=e[119].platform?` · ${e[119].platform}`:"")&&G(c,i),_[1]&1&&p!==(p=e[119].clientId)&&(t.__value=p,t.value=t.__value)},d(f){f&&g(t)}}}function jl(n,e){let t,l=yt(e[103])+"",s,i,c;return{key:n,first:null,c(){t=d("option"),s=E(l),t.__value=i=e[103].name,t.value=t.__value,t.disabled=c=e[103].disabled===!0,this.first=t},m(o,p){k(o,t,p),r(t,s)},p(o,p){e=o,p[1]&4&&l!==(l=yt(e[103])+"")&&G(s,l),p[1]&4&&i!==(i=e[103].name)&&(t.__value=i,t.value=t.__value),p[1]&4&&c!==(c=e[103].disabled===!0)&&(t.disabled=c)},d(o){o&&g(t)}}}function Fl(n){let e;return{c(){e=d("p"),e.textContent="该客户端暂无可用打印机,请检查桌面客户端后刷新。",a(e,"class","settings-hint")},m(t,l){k(t,e,l)},d(t){t&&g(e)}}}function Ts(n){let e,t;return{c(){e=d("i"),t=E(" 直发打印"),a(e,"class","svicon sv-print")},m(l,s){k(l,e,s),k(l,t,s)},d(l){l&&g(e),l&&g(t)}}}function Cs(n){let e,t;return{c(){e=d("i"),t=E(" 发送中..."),a(e,"class","svicon sv-refresh svp-spin svelte-1v5czrr")},m(l,s){k(l,e,s),k(l,t,s)},d(l){l&&g(e),l&&g(t)}}}function zs(n){let e,t,l=n[20].length+"",s,i,c=n[20].filter(tt).length+"",o,p,f,_,u=[],v=new Map,m=n[20];const P=C=>C[114].device_id||C[114].id;for(let C=0;C<m.length;C+=1){let w=Ol(n,m,C),b=P(w);v.set(b,u[C]=Gl(b,w))}return{c(){e=d("div"),t=E("共 "),s=E(l),i=E(" 台设备 · "),o=E(c),p=E(" 台在线"),f=T(),_=d("div");for(let C=0;C<u.length;C+=1)u[C].c();a(e,"class","cloud-device-summary svelte-1v5czrr"),a(_,"class","cloud-device-list svelte-1v5czrr"),a(_,"role","radiogroup"),a(_,"aria-label","选择云打印设备")},m(C,w){k(C,e,w),r(e,t),r(e,s),r(e,i),r(e,o),r(e,p),k(C,f,w),k(C,_,w);for(let b=0;b<u.length;b+=1)u[b]&&u[b].m(_,null)},p(C,w){w[0]&1048576&&l!==(l=C[20].length+"")&&G(s,l),w[0]&1048576&&c!==(c=C[20].filter(tt).length+"")&&G(o,c),w[0]&9438208|w[1]&134217728&&(m=C[20],u=je(u,w,P,1,C,m,v,_,Be,Gl,null,Ol))},d(C){C&&g(e),C&&g(f),C&&g(_);for(let w=0;w<u.length;w+=1)u[w].d()}}}function Ss(n){let e,t=n[22]?"暂无云设备,请在桌面客户端登录当前账户后刷新":"点击刷新获取云设备",l;return{c(){e=d("div"),l=E(t),a(e,"class","settings-empty")},m(s,i){k(s,e,i),r(e,l)},p(s,i){i[0]&4194304&&t!==(t=s[22]?"暂无云设备,请在桌面客户端登录当前账户后刷新":"点击刷新获取云设备")&&G(l,t)},d(s){s&&g(e)}}}function Ps(n){let e;return{c(){e=d("div"),e.innerHTML='<i class="svicon sv-refresh svp-spin svelte-1v5czrr"></i> 正在获取云设备...',a(e,"class","cloud-loading svelte-1v5czrr"),a(e,"role","status")},m(t,l){k(t,e,l)},p:fe,d(t){t&&g(e)}}}function Kl(n){let e,t,l=n[114].client_version+"",s;return{c(){e=d("span"),t=E("v"),s=E(l)},m(i,c){k(i,e,c),r(e,t),r(e,s)},p(i,c){c[0]&1048576&&l!==(l=i[114].client_version+"")&&G(s,l)},d(i){i&&g(e)}}}function Gl(n,e){var de;let t,l,s,i=!1,c,o,p,f,_,u,v=(e[114].device_name||e[114].device_id||"未命名设备")+"",m,P,C,w,b,h=tt(e[114])?"在线":"离线",z,D,J,H,y=_n(e[114])+"",L,M,A,j,K=((de=e[114].printer_count)!=null?de:"-")+"",I,N,O,U,ee,ve,Y=(e[114].device_id||e[114].id)+"",B,Q,q,V,x,pe=(e[114].last_ip||"-")+"",_e,oe,ne,be,we=(e[114].last_heartbeat_time||"-")+"",Ie,me,F,he,re,ce=e[114].client_version&&Kl(e);return F=Hn(e[82][0]),{key:n,first:null,c(){t=d("label"),l=d("input"),c=T(),o=d("span"),o.innerHTML='<i class="svicon sv-client"></i>',p=T(),f=d("span"),_=d("span"),u=d("span"),m=E(v),C=T(),w=d("span"),b=d("span"),z=E(h),D=T(),J=d("span"),H=d("span"),L=E(y),M=T(),ce&&ce.c(),A=T(),j=d("span"),I=E(K),N=E(" 台打印机"),O=T(),U=d("span"),ee=E("设备 ID:"),ve=d("span"),B=E(Y),Q=T(),q=d("span"),V=d("span"),x=E("最近 IP:"),_e=E(pe),oe=T(),ne=d("span"),be=E("最近心跳:"),Ie=E(we),me=T(),a(l,"type","radio"),a(l,"name","cloudDevice"),l.__value=s=String(e[114].device_id||e[114].id),l.value=l.__value,l.disabled=e[10],a(l,"class","svelte-1v5czrr"),a(o,"class","cloud-device-icon svelte-1v5czrr"),a(o,"aria-hidden","true"),a(u,"class","cloud-device-name svelte-1v5czrr"),a(u,"title",P=e[114].device_name||e[114].device_id),a(b,"class","cloud-device-dot svelte-1v5czrr"),a(w,"class","cloud-device-status svelte-1v5czrr"),Oe(w,"online",tt(e[114])),a(_,"class","cloud-device-heading svelte-1v5czrr"),a(j,"class","svelte-1v5czrr"),Oe(j,"cloud-device-no-printers",e[114].printer_count===0),a(J,"class","cloud-device-meta svelte-1v5czrr"),a(ve,"class","svelte-1v5czrr"),a(U,"class","cloud-device-detail svelte-1v5czrr"),a(q,"class","cloud-device-meta svelte-1v5czrr"),a(f,"class","cloud-device-info svelte-1v5czrr"),a(t,"class","cloud-device-item svelte-1v5czrr"),Oe(t,"active",e[23]===String(e[114].device_id||e[114].id)),F.p(l),this.first=t},m(ge,ae){k(ge,t,ae),r(t,l),l.checked=l.__value===e[23],r(t,c),r(t,o),r(t,p),r(t,f),r(f,_),r(_,u),r(u,m),r(_,C),r(_,w),r(w,b),r(w,z),r(f,D),r(f,J),r(J,H),r(H,L),r(J,M),ce&&ce.m(J,null),r(J,A),r(J,j),r(j,I),r(j,N),r(f,O),r(f,U),r(U,ee),r(U,ve),r(ve,B),r(f,Q),r(f,q),r(q,V),r(V,x),r(V,_e),r(q,oe),r(q,ne),r(ne,be),r(ne,Ie),r(t,me),he||(re=[W(l,"change",e[81]),W(l,"change",e[83])],he=!0)},p(ge,ae){var ye;e=ge,ae[0]&1048576&&s!==(s=String(e[114].device_id||e[114].id))&&(l.__value=s,l.value=l.__value,i=!0),ae[0]&1024&&(l.disabled=e[10]),(i||ae[0]&9437184)&&(l.checked=l.__value===e[23]),ae[0]&1048576&&v!==(v=(e[114].device_name||e[114].device_id||"未命名设备")+"")&&G(m,v),ae[0]&1048576&&P!==(P=e[114].device_name||e[114].device_id)&&a(u,"title",P),ae[0]&1048576&&h!==(h=tt(e[114])?"在线":"离线")&&G(z,h),ae[0]&1048576&&Oe(w,"online",tt(e[114])),ae[0]&1048576&&y!==(y=_n(e[114])+"")&&G(L,y),e[114].client_version?ce?ce.p(e,ae):(ce=Kl(e),ce.c(),ce.m(J,A)):ce&&(ce.d(1),ce=null),ae[0]&1048576&&K!==(K=((ye=e[114].printer_count)!=null?ye:"-")+"")&&G(I,K),ae[0]&1048576&&Oe(j,"cloud-device-no-printers",e[114].printer_count===0),ae[0]&1048576&&Y!==(Y=(e[114].device_id||e[114].id)+"")&&G(B,Y),ae[0]&1048576&&pe!==(pe=(e[114].last_ip||"-")+"")&&G(_e,pe),ae[0]&1048576&&we!==(we=(e[114].last_heartbeat_time||"-")+"")&&G(Ie,we),ae[0]&9437184&&Oe(t,"active",e[23]===String(e[114].device_id||e[114].id))},d(ge){ge&&g(t),ce&&ce.d(),F.r(),he=!1,Pe(re)}}}function Vl(n){let e,t,l,s,i,c,o,p,f,_,u,v,m,P,C;function w(y,L){return y[24].length?Ls:Es}let b=w(n),h=b(n),z=n[27]&&Yl(n),D=!n[26]&&!n[24].length&&Xl();function J(y){n[86](y)}let H={disabled:n[10]||n[21]||n[26]};return n[28]!==void 0&&(H.value=n[28]),u=new Pl({props:H}),pt.push(()=>dl(u,"value",J)),{c(){e=d("div"),t=d("label"),t.textContent="打印机",l=T(),h.c(),s=T(),i=d("button"),c=d("i"),p=T(),z&&z.c(),f=T(),D&&D.c(),_=T(),pl(u.$$.fragment),a(t,"class","form-label"),a(t,"for","cloud-printer"),a(c,"class","svicon sv-refresh svelte-1v5czrr"),Oe(c,"svp-spin",n[26]),a(i,"class","svp-btn svp-btn-ghost svp-btn-xs"),i.disabled=o=n[10]||n[21]||n[26],a(i,"aria-label","刷新云设备打印机"),a(e,"class","form-row"),Ue(e,"margin-top","10px")},m(y,L){k(y,e,L),r(e,t),r(e,l),h.m(e,null),r(e,s),r(e,i),r(i,c),k(y,p,L),z&&z.m(y,L),k(y,f,L),D&&D.m(y,L),k(y,_,L),Dt(u,y,L),m=!0,P||(C=W(i,"click",n[59]),P=!0)},p(y,L){b===(b=w(y))&&h?h.p(y,L):(h.d(1),h=b(y),h&&(h.c(),h.m(e,s))),(!m||L[0]&67108864)&&Oe(c,"svp-spin",y[26]),(!m||L[0]&69207040&&o!==(o=y[10]||y[21]||y[26]))&&(i.disabled=o),y[27]?z?z.p(y,L):(z=Yl(y),z.c(),z.m(f.parentNode,f)):z&&(z.d(1),z=null),!y[26]&&!y[24].length?D||(D=Xl(),D.c(),D.m(_.parentNode,_)):D&&(D.d(1),D=null);const M={};L[0]&69207040&&(M.disabled=y[10]||y[21]||y[26]),!v&&L[0]&268435456&&(v=!0,M.value=y[28],ul(()=>v=!1)),u.$set(M)},i(y){m||(Re(u.$$.fragment,y),m=!0)},o(y){Ze(u.$$.fragment,y),m=!1},d(y){y&&g(e),h.d(),y&&g(p),z&&z.d(y),y&&g(f),D&&D.d(y),y&&g(_),Ut(u,y),P=!1,C()}}}function Es(n){let e,t,l,s,i;return{c(){e=d("input"),a(e,"id","cloud-printer"),a(e,"class","svp-input svp-input-sm svp-w-full"),e.disabled=t=n[10]||n[26],a(e,"placeholder",l=n[26]?"正在获取打印机...":"输入设备上的系统打印机名称")},m(c,o){k(c,e,o),Le(e,n[25]),s||(i=W(e,"input",n[85]),s=!0)},p(c,o){o[0]&67109888&&t!==(t=c[10]||c[26])&&(e.disabled=t),o[0]&67108864&&l!==(l=c[26]?"正在获取打印机...":"输入设备上的系统打印机名称")&&a(e,"placeholder",l),o[0]&50331648&&e.value!==c[25]&&Le(e,c[25])},d(c){c&&g(e),s=!1,i()}}}function Ls(n){let e,t,l=[],s=new Map,i,c,o,p=n[24];const f=_=>_[103].name;for(let _=0;_<p.length;_+=1){let u=Al(n,p,_),v=f(u);s.set(v,l[_]=Wl(v,u))}return{c(){e=d("select"),t=d("option"),t.textContent="请选择打印机";for(let _=0;_<l.length;_+=1)l[_].c();t.__value="",t.value=t.__value,a(e,"id","cloud-printer"),a(e,"class","svp-select svp-select-sm svp-w-full"),e.disabled=i=n[10]||n[26],n[25]===void 0&&He(()=>n[84].call(e))},m(_,u){k(_,e,u),r(e,t);for(let v=0;v<l.length;v+=1)l[v]&&l[v].m(e,null);Ae(e,n[25],!0),c||(o=W(e,"change",n[84]),c=!0)},p(_,u){u[0]&16777216&&(p=_[24],l=je(l,u,f,1,_,p,s,e,Be,Wl,null,Al)),u[0]&67109888&&i!==(i=_[10]||_[26])&&(e.disabled=i),u[0]&50331648&&Ae(e,_[25])},d(_){_&&g(e);for(let u=0;u<l.length;u+=1)l[u].d();c=!1,o()}}}function Wl(n,e){let t,l=yt(e[103])+"",s,i,c;return{key:n,first:null,c(){t=d("option"),s=E(l),t.__value=i=e[103].name,t.value=t.__value,t.disabled=c=e[103].disabled===!0,this.first=t},m(o,p){k(o,t,p),r(t,s)},p(o,p){e=o,p[0]&16777216&&l!==(l=yt(e[103])+"")&&G(s,l),p[0]&16777216&&i!==(i=e[103].name)&&(t.__value=i,t.value=t.__value),p[0]&16777216&&c!==(c=e[103].disabled===!0)&&(t.disabled=c)},d(o){o&&g(t)}}}function Yl(n){let e,t;return{c(){e=d("p"),t=E(n[27]),a(e,"class","settings-hint")},m(l,s){k(l,e,s),r(e,t)},p(l,s){s[0]&134217728&&G(t,l[27])},d(l){l&&g(e)}}}function Xl(n){let e;return{c(){e=d("p"),e.textContent="暂无可选打印机,可输入系统打印机名称;离线设备的任务将在上线后投递。",a(e,"class","settings-hint")},m(t,l){k(t,e,l)},d(t){t&&g(e)}}}function Is(n){let e,t,l,s,i=[],c=new Map,o=n[29];const p=f=>f[109].id||f[109].job_id;for(let f=0;f<o.length;f+=1){let _=Ml(n,o,f),u=p(_);c.set(u,i[f]=Ql(u,_))}return{c(){e=d("table"),t=d("thead"),t.innerHTML='<tr><th class="svelte-1v5czrr">ID</th><th class="svelte-1v5czrr">设备</th><th class="svelte-1v5czrr">状态</th><th class="svelte-1v5czrr">操作</th></tr>',l=T(),s=d("tbody");for(let f=0;f<i.length;f+=1)i[f].c();a(e,"class","cloud-table svelte-1v5czrr")},m(f,_){k(f,e,_),r(e,t),r(e,l),r(e,s);for(let u=0;u<i.length;u+=1)i[u]&&i[u].m(s,null)},p(f,_){_[0]&536870912|_[2]&3&&(o=f[29],i=je(i,_,p,1,f,o,c,s,Be,Ql,null,Ml))},d(f){f&&g(e);for(let _=0;_<i.length;_+=1)i[_].d()}}}function qs(n){let e;return{c(){e=d("div"),e.textContent="暂无打印任务",a(e,"class","settings-empty")},m(t,l){k(t,e,l)},p:fe,d(t){t&&g(e)}}}function Ms(n){let e;return{c(){e=d("div"),e.innerHTML='<i class="svicon sv-refresh svp-spin svelte-1v5czrr"></i> 查询中...',a(e,"class","cloud-loading svelte-1v5czrr")},m(t,l){k(t,e,l)},p:fe,d(t){t&&g(e)}}}function Ql(n,e){var L;let t,l,s=(e[109].id||e[109].job_id||"-")+"",i,c,o,p=(e[109].device_id||"-")+"",f,_,u,v=((L=e[109].status)!=null?L:"-")+"",m,P,C,w,b,h,z,D,J;function H(){return e[87](e[109])}function y(){return e[88](e[109])}return{key:n,first:null,c(){t=d("tr"),l=d("td"),i=E(s),c=T(),o=d("td"),f=E(p),_=T(),u=d("td"),m=E(v),P=T(),C=d("td"),w=d("button"),w.textContent="重试",b=T(),h=d("button"),h.textContent="取消",z=T(),a(l,"class","svelte-1v5czrr"),a(o,"class","cloud-cell-ellipsis svelte-1v5czrr"),a(u,"class","svelte-1v5czrr"),a(w,"class","svp-btn svp-btn-ghost svp-btn-xs"),a(h,"class","svp-btn svp-btn-ghost svp-btn-xs"),a(C,"class","cloud-cell-actions svelte-1v5czrr"),this.first=t},m(M,A){k(M,t,A),r(t,l),r(l,i),r(t,c),r(t,o),r(o,f),r(t,_),r(t,u),r(u,m),r(t,P),r(t,C),r(C,w),r(C,b),r(C,h),r(t,z),D||(J=[W(w,"click",H),W(h,"click",y)],D=!0)},p(M,A){var j;e=M,A[0]&536870912&&s!==(s=(e[109].id||e[109].job_id||"-")+"")&&G(i,s),A[0]&536870912&&p!==(p=(e[109].device_id||"-")+"")&&G(f,p),A[0]&536870912&&v!==(v=((j=e[109].status)!=null?j:"-")+"")&&G(m,v)},d(M){M&&g(t),D=!1,Pe(J)}}}function As(n){let e,t;return{c(){e=d("i"),t=E(" 执行渲染"),a(e,"class","svicon sv-cloud-disk")},m(l,s){k(l,e,s),k(l,t,s)},d(l){l&&g(e),l&&g(t)}}}function Os(n){let e,t;return{c(){e=d("i"),t=E(" 渲染中..."),a(e,"class","svicon sv-refresh svp-spin svelte-1v5czrr")},m(l,s){k(l,e,s),k(l,t,s)},d(l){l&&g(e),l&&g(t)}}}function Zl(n){let e;return{c(){e=d("div"),e.innerHTML='<i class="svicon sv-refresh svp-spin svelte-1v5czrr"></i> 渲染中,等待任务完成...',a(e,"class","cloud-loading svelte-1v5czrr")},m(t,l){k(t,e,l)},d(t){t&&g(e)}}}function $l(n){let e,t,l,s,i;function c(f,_){return f[38]?Us:Ds}let o=c(n),p=o(n);return{c(){e=d("div"),t=T(),l=d("div"),l.textContent="渲染结果",s=T(),p.c(),i=xe(),a(e,"class","settings-divider"),a(l,"class","settings-subtitle")},m(f,_){k(f,e,_),k(f,t,_),k(f,l,_),k(f,s,_),p.m(f,_),k(f,i,_)},p(f,_){o===(o=c(f))&&p?p.p(f,_):(p.d(1),p=o(f),p&&(p.c(),p.m(i.parentNode,i)))},d(f){f&&g(e),f&&g(t),f&&g(l),f&&g(s),p.d(f),f&&g(i)}}}function Ds(n){var H;let e,t,l,s=((H=n[4].task_id)!=null?H:"-")+"",i,c,o,p,f=(n[4].file_path||"-")+"",_,u,v,m,P,C,w=n[4].file_size&&xl(n),b=n[4].file_url&&en(n),h=n[4].render_ms&&tn(n);function z(y,L){return y[39]?Js:Ns}let D=z(n),J=D(n);return{c(){e=d("div"),t=d("span"),t.textContent="任务 ID",l=d("code"),i=E(s),c=T(),o=d("span"),o.textContent="文件路径",p=d("code"),_=E(f),u=T(),w&&w.c(),v=T(),b&&b.c(),m=T(),h&&h.c(),P=T(),J.c(),C=xe(),a(t,"class","svelte-1v5czrr"),a(l,"class","svelte-1v5czrr"),a(o,"class","svelte-1v5czrr"),a(p,"class","svelte-1v5czrr"),a(e,"class","cloud-kv svelte-1v5czrr")},m(y,L){k(y,e,L),r(e,t),r(e,l),r(l,i),r(e,c),r(e,o),r(e,p),r(p,_),r(e,u),w&&w.m(e,null),r(e,v),b&&b.m(e,null),r(e,m),h&&h.m(e,null),k(y,P,L),J.m(y,L),k(y,C,L)},p(y,L){var M;L[0]&16&&s!==(s=((M=y[4].task_id)!=null?M:"-")+"")&&G(i,s),L[0]&16&&f!==(f=(y[4].file_path||"-")+"")&&G(_,f),y[4].file_size?w?w.p(y,L):(w=xl(y),w.c(),w.m(e,v)):w&&(w.d(1),w=null),y[4].file_url?b?b.p(y,L):(b=en(y),b.c(),b.m(e,m)):b&&(b.d(1),b=null),y[4].render_ms?h?h.p(y,L):(h=tn(y),h.c(),h.m(e,null)):h&&(h.d(1),h=null),D===(D=z(y))&&J?J.p(y,L):(J.d(1),J=D(y),J&&(J.c(),J.m(C.parentNode,C)))},d(y){y&&g(e),w&&w.d(),b&&b.d(),h&&h.d(),y&&g(P),J.d(y),y&&g(C)}}}function Us(n){let e,t,l,s=(n[4].error_message||"渲染失败")+"",i;return{c(){e=d("div"),t=d("i"),l=T(),i=E(s),a(t,"class","svicon sv-close"),a(e,"class","cloud-msg msg-error svelte-1v5czrr")},m(c,o){k(c,e,o),r(e,t),r(e,l),r(e,i)},p(c,o){o[0]&16&&s!==(s=(c[4].error_message||"渲染失败")+"")&&G(i,s)},d(c){c&&g(e)}}}function xl(n){let e,t,l;return{c(){e=d("span"),e.textContent="文件大小",t=d("code"),l=E(n[37]),a(e,"class","svelte-1v5czrr"),a(t,"class","svelte-1v5czrr")},m(s,i){k(s,e,i),k(s,t,i),r(t,l)},p(s,i){i[1]&64&&G(l,s[37])},d(s){s&&g(e),s&&g(t)}}}function en(n){let e,t,l=n[4].file_url+"",s;return{c(){e=d("span"),e.textContent="文件地址",t=d("code"),s=E(l),a(e,"class","svelte-1v5czrr"),a(t,"class","svelte-1v5czrr")},m(i,c){k(i,e,c),k(i,t,c),r(t,s)},p(i,c){c[0]&16&&l!==(l=i[4].file_url+"")&&G(s,l)},d(i){i&&g(e),i&&g(t)}}}function tn(n){let e,t,l=n[4].render_ms+"",s,i;return{c(){e=d("span"),e.textContent="渲染耗时",t=d("code"),s=E(l),i=E(" ms"),a(e,"class","svelte-1v5czrr"),a(t,"class","svelte-1v5czrr")},m(c,o){k(c,e,o),k(c,t,o),r(t,s),r(t,i)},p(c,o){o[0]&16&&l!==(l=c[4].render_ms+"")&&G(s,l)},d(c){c&&g(e),c&&g(t)}}}function Ns(n){let e;return{c(){e=d("div"),e.textContent="任务未返回文件地址(同步渲染可能只返回文件内容)。",a(e,"class","settings-hint")},m(t,l){k(t,e,l)},p:fe,d(t){t&&g(e)}}}function Js(n){let e,t,l,s,i,c;function o(_,u){return _[17]==="img"?Hs:Rs}let p=o(n),f=p(n);return{c(){e=d("div"),t=d("a"),l=d("i"),s=E(" 下载文件"),i=T(),f.c(),c=xe(),a(l,"class","svicon sv-cloud-disk"),a(t,"class","svp-btn svp-btn-outline svp-btn-sm"),a(t,"href",n[39]),a(t,"target","_blank"),a(t,"rel","noopener"),a(e,"class","form-actions")},m(_,u){k(_,e,u),r(e,t),r(t,l),r(t,s),k(_,i,u),f.m(_,u),k(_,c,u)},p(_,u){u[1]&256&&a(t,"href",_[39]),p===(p=o(_))&&f?f.p(_,u):(f.d(1),f=p(_),f&&(f.c(),f.m(c.parentNode,c)))},d(_){_&&g(e),_&&g(i),f.d(_),_&&g(c)}}}function Rs(n){let e,t;return{c(){e=d("iframe"),a(e,"class","cloud-render-frame svelte-1v5czrr"),Je(e.src,t=n[39])||a(e,"src",t),a(e,"title","渲染结果预览")},m(l,s){k(l,e,s)},p(l,s){s[1]&256&&!Je(e.src,t=l[39])&&a(e,"src",t)},d(l){l&&g(e)}}}function Hs(n){let e,t;return{c(){e=d("img"),a(e,"class","cloud-render-img svelte-1v5czrr"),Ue(e,"object-fit","contain"),Je(e.src,t=n[39])||a(e,"src",t),a(e,"alt","渲染结果")},m(l,s){k(l,e,s)},p(l,s){s[1]&256&&!Je(e.src,t=l[39])&&a(e,"src",t)},d(l){l&&g(e)}}}function Bs(n){let e,t=[],l=new Map,s=n[15];const i=c=>c[106].template_id;for(let c=0;c<s.length;c+=1){let o=Dl(n,s,c),p=i(o);l.set(p,t[c]=ln(p,o))}return{c(){e=d("div");for(let c=0;c<t.length;c+=1)t[c].c();a(e,"class","cloud-tpl-list svelte-1v5czrr")},m(c,o){k(c,e,o);for(let p=0;p<t.length;p+=1)t[p]&&t[p].m(e,null)},p(c,o){o[0]&33920|o[1]&16777216&&(s=c[15],t=je(t,o,i,1,c,s,l,e,Be,ln,null,Dl))},d(c){c&&g(e);for(let o=0;o<t.length;o+=1)t[o].d()}}}function js(n){let e;return{c(){e=d("div"),e.textContent="暂无模板",a(e,"class","settings-empty")},m(t,l){k(t,e,l)},p:fe,d(t){t&&g(e)}}}function Fs(n){let e;return{c(){e=d("div"),e.innerHTML='<i class="svicon sv-refresh svp-spin svelte-1v5czrr"></i> 加载中...',a(e,"class","cloud-loading svelte-1v5czrr")},m(t,l){k(t,e,l)},p:fe,d(t){t&&g(e)}}}function Ks(n){let e;return{c(){e=d("i"),a(e,"class","svicon sv-preview")},m(t,l){k(t,e,l)},p:fe,d(t){t&&g(e)}}}function Gs(n){let e,t,l;return{c(){e=d("img"),Je(e.src,t=n[106].preview_img)||a(e,"src",t),a(e,"alt",l=n[106].template_name),a(e,"loading","lazy"),a(e,"class","svelte-1v5czrr")},m(s,i){k(s,e,i)},p(s,i){i[0]&32768&&!Je(e.src,t=s[106].preview_img)&&a(e,"src",t),i[0]&32768&&l!==(l=s[106].template_name)&&a(e,"alt",l)},d(s){s&&g(e)}}}function Vs(n){var i;let e,t=((i=n[106].price)!=null?i:0)+"",l,s;return{c(){e=E("· "),l=E(t),s=E(" 积分")},m(c,o){k(c,e,o),k(c,l,o),k(c,s,o)},p(c,o){var p;o[0]&32768&&t!==(t=((p=c[106].price)!=null?p:0)+"")&&G(l,t)},d(c){c&&g(e),c&&g(l),c&&g(s)}}}function Ws(n){let e;return{c(){e=E("· 免费")},m(t,l){k(t,e,l)},p:fe,d(t){t&&g(e)}}}function ln(n,e){var ee,ve;let t,l,s,i,c,o=e[106].template_name+"",p,f,_,u,v,m=((ee=e[106].use_cnt)!=null?ee:0)+"",P,C,w=((ve=e[106].share_cnt)!=null?ve:0)+"",b,h,z,D,J,H,y,L,M;function A(Y,B){return Y[106].preview_img?Gs:Ks}let j=A(e),K=j(e);function I(Y,B){return Y[106].is_free?Ws:Vs}let N=I(e),O=N(e);function U(){return e[78](e[106])}return{key:n,first:null,c(){t=d("div"),l=d("div"),K.c(),s=T(),i=d("div"),c=d("span"),p=E(o),_=T(),u=d("span"),v=E("使用 "),P=E(m),C=E(" · 分享 "),b=E(w),h=T(),O.c(),z=T(),D=d("button"),J=E("使用"),y=T(),a(l,"class","cloud-tpl-thumb svelte-1v5czrr"),a(c,"class","cloud-tpl-name svelte-1v5czrr"),a(c,"title",f=e[106].template_name),a(u,"class","cloud-tpl-meta svelte-1v5czrr"),a(i,"class","cloud-tpl-info svelte-1v5czrr"),a(D,"class","svp-btn svp-btn-primary svp-btn-xs"),D.disabled=H=e[10]||!e[7],a(t,"class","cloud-tpl-item svelte-1v5czrr"),this.first=t},m(Y,B){k(Y,t,B),r(t,l),K.m(l,null),r(t,s),r(t,i),r(i,c),r(c,p),r(i,_),r(i,u),r(u,v),r(u,P),r(u,C),r(u,b),r(u,h),O.m(u,null),r(t,z),r(t,D),r(D,J),r(t,y),L||(M=W(D,"click",U),L=!0)},p(Y,B){var Q,q;e=Y,j===(j=A(e))&&K?K.p(e,B):(K.d(1),K=j(e),K&&(K.c(),K.m(l,null))),B[0]&32768&&o!==(o=e[106].template_name+"")&&G(p,o),B[0]&32768&&f!==(f=e[106].template_name)&&a(c,"title",f),B[0]&32768&&m!==(m=((Q=e[106].use_cnt)!=null?Q:0)+"")&&G(P,m),B[0]&32768&&w!==(w=((q=e[106].share_cnt)!=null?q:0)+"")&&G(b,w),N===(N=I(e))&&O?O.p(e,B):(O.d(1),O=N(e),O&&(O.c(),O.m(u,null))),B[0]&1152&&H!==(H=e[10]||!e[7])&&(D.disabled=H)},d(Y){Y&&g(t),K.d(),O.d(),L=!1,M()}}}function nn(n){let e,t=[],l=new Map,s=n[48];const i=c=>c[103].id;for(let c=0;c<s.length;c+=1){let o=Ul(n,s,c),p=i(o);l.set(p,t[c]=sn(p,o))}return{c(){e=d("div");for(let c=0;c<t.length;c+=1)t[c].c();a(e,"class","cloud-provider-tabs svelte-1v5czrr")},m(c,o){k(c,e,o);for(let p=0;p<t.length;p+=1)t[p]&&t[p].m(e,null)},p(c,o){o[0]&1028|o[1]&393216&&(s=c[48],t=je(t,o,i,1,c,s,l,e,Be,sn,null,Ul))},d(c){c&&g(e);for(let o=0;o<t.length;o+=1)t[o].d()}}}function Ys(n){let e;return{c(){e=d("span"),e.textContent="!",a(e,"class","cloud-provider-warn svelte-1v5czrr")},m(t,l){k(t,e,l)},d(t){t&&g(e)}}}function sn(n,e){let t,l=e[103].label+"",s,i,c,o,p,f,_=!e[103].canLogin&&Ys();function u(){return e[73](e[103])}return{key:n,first:null,c(){t=d("button"),s=E(l),i=T(),_&&_.c(),c=T(),a(t,"class",o=Ge(`cloud-provider-tab ${e[103].id===e[2]?"active":""}`)+" svelte-1v5czrr"),t.disabled=e[10],a(t,"title",e[103].canLogin?e[103].label:`${e[103].label}(配置不完整)`),this.first=t},m(v,m){k(v,t,m),r(t,s),r(t,i),_&&_.m(t,null),r(t,c),p||(f=W(t,"click",u),p=!0)},p(v,m){e=v,m[0]&4&&o!==(o=Ge(`cloud-provider-tab ${e[103].id===e[2]?"active":""}`)+" svelte-1v5czrr")&&a(t,"class",o),m[0]&1024&&(t.disabled=e[10])},d(v){v&&g(t),_&&_.d(),p=!1,f()}}}function Xs(n){let e,t,l,s,i=n[5]&&rn(n);return{c(){e=d("p"),t=E(n[40]),l=T(),i&&i.c(),s=xe(),a(e,"class","settings-hint"),Ue(e,"margin","0 0 8px")},m(c,o){k(c,e,o),r(e,t),k(c,l,o),i&&i.m(c,o),k(c,s,o)},p(c,o){o[1]&512&&G(t,c[40]),c[5]?i?i.p(c,o):(i=rn(c),i.c(),i.m(s.parentNode,s)):i&&(i.d(1),i=null)},d(c){c&&g(e),c&&g(l),i&&i.d(c),c&&g(s)}}}function Qs(n){let e,t,l,s,i,c=(n[9].client_name||n[9].client_id)+"",o,p,f,_=n[9].client_id+"",u,v,m=n[9].client_type===2&&on();return{c(){e=d("div"),t=d("i"),l=T(),s=d("div"),i=d("span"),o=E(c),p=T(),f=d("span"),u=E(_),v=T(),m&&m.c(),a(t,"class","svicon sv-cloud svelte-1v5czrr"),a(i,"class","cloud-client-name svelte-1v5czrr"),a(f,"class","cloud-client-id svelte-1v5czrr"),a(s,"class","cloud-client-info svelte-1v5czrr"),a(e,"class","cloud-client-box svelte-1v5czrr")},m(P,C){k(P,e,C),r(e,t),r(e,l),r(e,s),r(s,i),r(i,o),r(s,p),r(s,f),r(f,u),r(e,v),m&&m.m(e,null)},p(P,C){C[0]&512&&c!==(c=(P[9].client_name||P[9].client_id)+"")&&G(o,c),C[0]&512&&_!==(_=P[9].client_id+"")&&G(u,_),P[9].client_type===2?m||(m=on(),m.c(),m.m(e,null)):m&&(m.d(1),m=null)},d(P){P&&g(e),m&&m.d()}}}function rn(n){let e,t,l,s=(n[5].clientId||"未配置")+"",i;return{c(){e=d("div"),t=d("span"),t.textContent="接入方",l=d("code"),i=E(s),a(t,"class","svelte-1v5czrr"),a(l,"class","svelte-1v5czrr"),a(e,"class","cloud-kv svelte-1v5czrr")},m(c,o){k(c,e,o),r(e,t),r(e,l),r(l,i)},p(c,o){o[0]&32&&s!==(s=(c[5].clientId||"未配置")+"")&&G(i,s)},d(c){c&&g(e)}}}function on(n){let e;return{c(){e=d("span"),e.textContent="匿名接入",a(e,"class","svp-badge svp-badge-sm")},m(t,l){k(t,e,l)},d(t){t&&g(e)}}}function Zs(n){let e;function t(i,c){return i[1].hasCustomLoginUI?ti:ei}let l=t(n),s=l(n);return{c(){e=d("div"),s.c(),a(e,"class","cloud-login-box svelte-1v5czrr")},m(i,c){k(i,e,c),s.m(e,null)},p(i,c){l===(l=t(i))&&s?s.p(i,c):(s.d(1),s=l(i),s&&(s.c(),s.m(e,null)))},d(i){i&&g(e),s.d()}}}function $s(n){let e;return{c(){e=d("div"),e.innerHTML='<div class="settings-hint">未配置登录方式,仅可浏览模板中心。</div>',a(e,"class","cloud-login-box svelte-1v5czrr")},m(t,l){k(t,e,l)},p:fe,d(t){t&&g(e)}}}function xs(n){var J,H,y,L;let e,t,l,s,i=(((J=n[8])==null?void 0:J.member_name)||((H=n[8])==null?void 0:H.member_account)||"已登录")+"",c,o,p,f=(((y=n[8])==null?void 0:y.member_account)||"")+"",_,u,v,m,P,C,w;function b(M,A){var j;return(j=M[8])!=null&&j.member_avatar?ii:si}let h=b(n),z=h(n),D=typeof((L=n[8])==null?void 0:L.points)=="number"&&un(n);return{c(){e=d("div"),z.c(),t=T(),l=d("div"),s=d("span"),c=E(i),o=T(),p=d("span"),_=E(f),u=T(),D&&D.c(),v=T(),m=d("button"),P=E("退出登录"),a(s,"class","cloud-user-name svelte-1v5czrr"),a(p,"class","cloud-user-sub svelte-1v5czrr"),a(l,"class","cloud-user-info svelte-1v5czrr"),a(m,"class","svp-btn svp-btn-outline svp-btn-sm"),m.disabled=n[10],a(e,"class","cloud-user-box svelte-1v5czrr")},m(M,A){k(M,e,A),z.m(e,null),r(e,t),r(e,l),r(l,s),r(s,c),r(l,o),r(l,p),r(p,_),r(p,u),D&&D.m(p,null),r(e,v),r(e,m),r(m,P),C||(w=W(m,"click",n[52]),C=!0)},p(M,A){var j,K,I,N;h===(h=b(M))&&z?z.p(M,A):(z.d(1),z=h(M),z&&(z.c(),z.m(e,t))),A[0]&256&&i!==(i=(((j=M[8])==null?void 0:j.member_name)||((K=M[8])==null?void 0:K.member_account)||"已登录")+"")&&G(c,i),A[0]&256&&f!==(f=(((I=M[8])==null?void 0:I.member_account)||"")+"")&&G(_,f),typeof((N=M[8])==null?void 0:N.points)=="number"?D?D.p(M,A):(D=un(M),D.c(),D.m(p,null)):D&&(D.d(1),D=null),A[0]&1024&&(m.disabled=M[10])},d(M){M&&g(e),z.d(),D&&D.d(),C=!1,w()}}}function ei(n){let e,t,l,s,i,c;function o(u,v){return u[10]?ni:li}let p=o(n),f=p(n),_=!n[43]&&cn();return{c(){e=d("button"),f.c(),l=T(),_&&_.c(),s=xe(),a(e,"class","svp-btn svp-btn-primary svp-btn-sm"),e.disabled=t=n[10]||!n[43]},m(u,v){k(u,e,v),f.m(e,null),k(u,l,v),_&&_.m(u,v),k(u,s,v),i||(c=W(e,"click",n[51]),i=!0)},p(u,v){p===(p=o(u))&&f?f.p(u,v):(f.d(1),f=p(u),f&&(f.c(),f.m(e,null))),v[0]&1024|v[1]&4096&&t!==(t=u[10]||!u[43])&&(e.disabled=t),u[43]?_&&(_.d(1),_=null):_||(_=cn(),_.c(),_.m(s.parentNode,s))},d(u){u&&g(e),f.d(),u&&g(l),_&&_.d(u),u&&g(s),i=!1,c()}}}function ti(n){let e=n[2],t,l=an(n);return{c(){l.c(),t=xe()},m(s,i){l.m(s,i),k(s,t,i)},p(s,i){i[0]&4&&Lt(e,e=s[2])?(l.d(1),l=an(s),l.c(),l.m(t.parentNode,t)):l.p(s,i)},d(s){s&&g(t),l.d(s)}}}function li(n){let e,t,l=n[2]==="oauth"?"去授权登录":"登录",s;return{c(){e=d("i"),t=T(),s=E(l),a(e,"class","svicon sv-cloud")},m(i,c){k(i,e,c),k(i,t,c),k(i,s,c)},p(i,c){c[0]&4&&l!==(l=i[2]==="oauth"?"去授权登录":"登录")&&G(s,l)},d(i){i&&g(e),i&&g(t),i&&g(s)}}}function ni(n){let e,t;return{c(){e=d("i"),t=E(" 登录中..."),a(e,"class","svicon sv-refresh svp-spin svelte-1v5czrr")},m(l,s){k(l,e,s),k(l,t,s)},p:fe,d(l){l&&g(e),l&&g(t)}}}function cn(n){let e;return{c(){e=d("div"),e.textContent="登录方式配置不完整,请检查插件配置。",a(e,"class","settings-hint")},m(t,l){k(t,e,l)},d(t){t&&g(e)}}}function an(n){let e;return{c(){e=d("div"),a(e,"class","cloud-auth-custom")},m(t,l){k(t,e,l),n[74](e)},p:fe,d(t){t&&g(e),n[74](null)}}}function si(n){let e;return{c(){e=d("i"),a(e,"class","svicon sv-client cloud-avatar-icon svelte-1v5czrr")},m(t,l){k(t,e,l)},p:fe,d(t){t&&g(e)}}}function ii(n){let e,t;return{c(){e=d("img"),a(e,"class","cloud-avatar svelte-1v5czrr"),Je(e.src,t=n[8].member_avatar)||a(e,"src",t),a(e,"alt","avatar")},m(l,s){k(l,e,s)},p(l,s){s[0]&256&&!Je(e.src,t=l[8].member_avatar)&&a(e,"src",t)},d(l){l&&g(e)}}}function un(n){let e,t=n[8].points+"",l;return{c(){e=E("· 积分 "),l=E(t)},m(s,i){k(s,e,i),k(s,l,i)},p(s,i){i[0]&256&&t!==(t=s[8].points+"")&&G(l,t)},d(s){s&&g(e),s&&g(l)}}}function fn(n){let e,t,l,s;return{c(){e=d("div"),t=d("i"),l=T(),s=E(n[13]),a(t,"class","svicon sv-print"),a(e,"class","cloud-msg msg-success svelte-1v5czrr")},m(i,c){k(i,e,c),r(e,t),r(e,l),r(e,s)},p(i,c){c[0]&8192&&G(s,i[13])},d(i){i&&g(e)}}}function dn(n){let e,t,l,s;return{c(){e=d("div"),t=d("i"),l=T(),s=E(n[11]),a(t,"class","svicon sv-close"),a(e,"class","cloud-msg msg-error svelte-1v5czrr")},m(i,c){k(i,e,c),r(e,t),r(e,l),r(e,s)},p(i,c){c[0]&2048&&G(s,i[11])},d(i){i&&g(e)}}}function pn(n){let e,t;return{c(){e=d("pre"),t=E(n[12]),a(e,"class","cloud-output svelte-1v5czrr")},m(l,s){k(l,e,s),r(e,t)},p(l,s){s[0]&4096&&G(t,l[12])},d(l){l&&g(e)}}}function ri(n){let e,t,l,s,i,c,o,p,f,_=n[7]?"已登录":"未登录",u,v,m=[],P=new Map,C,w,b,h,z,D,J,H,y=n[47];const L=O=>O[122].key;for(let O=0;O<y.length;O+=1){let U=Nl(n,y,O),ee=L(U);P.set(ee,m[O]=Jl(ee,U))}const M=[vs,hs,_s,ps,ds,fs],A=[];function j(O,U){return O[6]==="account"?0:O[6]==="template"?1:O[6]==="render"?2:O[6]==="cloudPrint"?3:O[6]==="transit"?4:O[6]==="config"?5:-1}~(b=j(n))&&(h=A[b]=M[b](n));let K=n[13]&&fn(n),I=n[11]&&dn(n),N=n[12]&&pn(n);return{c(){e=d("p"),e.textContent="通过 sv-print-cloud 云服务进行服务端渲染、云打印与中转打印。首次使用请在「账户」中登录。",t=T(),l=d("div"),s=d("div"),i=d("div"),c=d("span"),p=T(),f=d("span"),u=E(_),v=T();for(let O=0;O<m.length;O+=1)m[O].c();C=T(),w=d("div"),h&&h.c(),z=T(),K&&K.c(),D=T(),I&&I.c(),J=T(),N&&N.c(),a(e,"class","settings-hint"),a(c,"class",o=Ge(`cloud-status-dot ${n[7]?"dot-on":"dot-off"}`)+" svelte-1v5czrr"),a(f,"class","cloud-status-text svelte-1v5czrr"),a(i,"class","cloud-status-bar svelte-1v5czrr"),a(s,"class","cloud-sidebar svelte-1v5czrr"),a(w,"class","cloud-content svelte-1v5czrr"),a(l,"class","cloud-layout svelte-1v5czrr")},m(O,U){k(O,e,U),k(O,t,U),k(O,l,U),r(l,s),r(s,i),r(i,c),r(i,p),r(i,f),r(f,u),r(s,v);for(let ee=0;ee<m.length;ee+=1)m[ee]&&m[ee].m(s,null);r(l,C),r(l,w),~b&&A[b].m(w,null),r(w,z),K&&K.m(w,null),r(w,D),I&&I.m(w,null),r(w,J),N&&N.m(w,null),H=!0},p(O,U){(!H||U[0]&128&&o!==(o=Ge(`cloud-status-dot ${O[7]?"dot-on":"dot-off"}`)+" svelte-1v5czrr"))&&a(c,"class",o),(!H||U[0]&128)&&_!==(_=O[7]?"已登录":"未登录")&&G(u,_),U[0]&64|U[1]&589824&&(y=O[47],m=je(m,U,L,1,O,y,P,s,Be,Jl,null,Nl));let ee=b;b=j(O),b===ee?~b&&A[b].p(O,U):(h&&(At(),Ze(A[ee],1,1,()=>{A[ee]=null}),Ot()),~b?(h=A[b],h?h.p(O,U):(h=A[b]=M[b](O),h.c()),Re(h,1),h.m(w,z)):h=null),O[13]?K?K.p(O,U):(K=fn(O),K.c(),K.m(w,D)):K&&(K.d(1),K=null),O[11]?I?I.p(O,U):(I=dn(O),I.c(),I.m(w,J)):I&&(I.d(1),I=null),O[12]?N?N.p(O,U):(N=pn(O),N.c(),N.m(w,null)):N&&(N.d(1),N=null)},i(O){H||(Re(h),H=!0)},o(O){Ze(h),H=!1},d(O){O&&g(e),O&&g(t),O&&g(l);for(let U=0;U<m.length;U+=1)m[U].d();~b&&A[b].d(),K&&K.d(),I&&I.d(),N&&N.d()}}}function oi(n,e=1){if(!Number.isFinite(n)||n<0)return"—";if(n<1024)return`${n} B`;const t=["KB","MB","GB","TB","PB"];let l=n,s=-1;do l/=1024,s++;while(l>=1024&&s<t.length-1);return`${l.toFixed(e).replace(/\.0+$/,"")} ${t[s]}`}function tt(n){var e,t;return(t=(e=n.online)!=null?e:n.socket_online)!=null?t:!1}function _n(n){return[{darwin:"macOS",win32:"Windows",linux:"Linux"}[n.platform||""]||n.platform,n.arch].filter(Boolean).join(" · ")||"未知平台"}function hn(n){var e;return((e=n.find(t=>t.isDefault&&!t.disabled)||n.find(t=>!t.disabled))==null?void 0:e.name)||""}function yt(n){return`${n.displayName||n.name}${n.isDefault?"(默认)":""}${n.disabled?"(已禁用)":n.isOk===!1?"(状态异常)":""}`}function ci(n,e,t){let l,s,i,c,o,p,f,_,u,v,m,P,C,{config:w}=e,{auth:b}=e,{service:h}=e;const z=[{key:"account",label:"账户",icon:"sv-client"},{key:"template",label:"模板中心",icon:"sv-templates"},{key:"render",label:"服务端渲染",icon:"sv-cloud-disk"},{key:"cloudPrint",label:"云打印",icon:"sv-printer"},{key:"transit",label:"中转打印",icon:"sv-flow"}];w.settingsTabShowConfig!=!1&&z.push({key:"config",label:"连接配置",icon:"sv-setting"});const D={iframe:"设计器内弹层",popup:"独立弹窗",page:"新标签页",custom:"自定义"},J={oauth:"跳转 sv-print 授权页完成授权后获取访问令牌,令牌失效需重新授权。",token:"直接使用访问令牌接入,无需授权流程;令牌由接入方自行提供与维护。",host:"访问令牌由宿主系统提供,插件不参与认证,登录态跟随宿主。",local:"使用宿主账号密码登录,由宿主校验通过后返回访问令牌。",none:"未配置登录方式,仅可浏览模板中心,写操作需先配置登录方式。"};let H="account",y=b.activeId,L=b.providers,M=b.isLoggedIn(),A,j=null,K=null,I=!1,N="",O="",U="",ee="",ve=[],Y=!1,B="pdf",Q=!0,q=null,V=!1,x=[],pe=!1,_e=!1,oe="",ne=[],be="",we=!1,Ie="",me=0,F=El(),he=[],re=!1,ce=[],de="",ge=[],ae="",ye=El(),qe=!1,De=0;Fn(()=>{const S=h.onTransitConnectionChange(ie=>{t(36,qe=ie),ie||(t(10,I=!1),De++,t(31,ce=[]),t(33,ge=[]),t(32,de=""),t(34,ae=""))}),$=b.onChange(ie=>{const Se=!!(ie!=null&&ie.accessToken),Ct=Se!==M;t(7,M=Se),Se||t(8,j=null),Se&&Ct&&Ne()});return We(),M&&Ne(),()=>{$==null||$(),S()}});function We(){b.getClientInfo().then(S=>t(9,K=S)).catch(()=>t(9,K=null))}function Fe(S){return X(this,null,function*(){if(!(S===y||I)){t(10,I=!0),t(11,N="");try{yield b.switchProvider(S),t(2,y=b.activeId),t(7,M=b.isLoggedIn()),t(8,j=null),t(9,K=null),We(),M&&(yield Ne())}catch($){t(11,N=($==null?void 0:$.message)||"切换登录方式失败")}finally{t(10,I=!1)}}})}function Ye(S,$="success"){var ie,Se;(Se=(ie=il())==null?void 0:ie.showToast)==null||Se.call(ie,S,{type:$})}function Te(S){t(13,U=S),setTimeout(()=>t(13,U=""),3e3)}function ze(S){t(6,H=S),t(11,N=""),t(12,O=""),S==="template"&&ve.length===0&&R()}function Ne(){return X(this,null,function*(){try{t(8,j=yield b.getUser())}catch(S){t(8,j=null)}})}function $e(){return X(this,null,function*(){t(10,I=!0),t(11,N="");try{yield b.login(),yield Ne()}catch(S){t(11,N=(S==null?void 0:S.message)||"登录失败")}finally{t(10,I=!1)}})}function Ee(){return X(this,null,function*(){t(10,I=!0),t(11,N="");try{yield b.logout(),t(8,j=null)}finally{t(10,I=!1)}})}function R(){return X(this,null,function*(){t(16,Y=!0),t(11,N="");try{const S=yield h.listTemplates({keyword:ee,page:1,pageSize:5});t(15,ve=(S==null?void 0:S.list)||[])}catch(S){t(11,N=(S==null?void 0:S.message)||"加载模板失败")}finally{t(16,Y=!1)}})}function Z(){return X(this,null,function*(){t(10,I=!0),t(11,N="");try{const S=yield h.useRandomTemplate({keyword:ee||void 0});Te(`已随机应用模板:${S.template_name}`),Ye(`已应用模板:${S.template_name}`)}catch(S){t(11,N=(S==null?void 0:S.message)||"随机使用模板失败")}finally{t(10,I=!1)}})}function se(S){return X(this,null,function*(){t(10,I=!0),t(11,N="");try{yield h.applyTemplate(S),Te(`已应用模板:${S.template_name}`),Ye(`已应用模板:${S.template_name}`)}catch($){t(11,N=($==null?void 0:$.message)||"应用模板失败")}finally{t(10,I=!1)}})}function ue(S,$){return X(this,null,function*(){t(10,I=!0),t(11,N=""),t(12,O=`${S} 调用中...`);try{const ie=yield $();t(12,O=`// ${S}
30
+ ${JSON.stringify(ie,null,2)}`)}catch(ie){t(11,N=`${S} 失败:${(ie==null?void 0:ie.message)||ie}`),t(12,O="")}finally{t(10,I=!1)}})}function Me(){return X(this,null,function*(){t(10,I=!0),t(11,N=""),t(12,O=""),t(4,q=null),t(19,V=!1);try{const S=yield h.render({sync:Q,type:B});if(t(4,q=S),!Q&&(S==null?void 0:S.task_id)!==void 0){t(19,V=!0);try{t(4,q=yield h.waitRender(S.task_id))}finally{t(19,V=!1)}}(Number(q==null?void 0:q.status)===2||!!(q!=null&&q.file_url))&&(Te("渲染成功"),Ye("渲染成功"))}catch(S){t(11,N=`服务端渲染失败:${(S==null?void 0:S.message)||S}`),t(4,q=null)}finally{t(10,I=!1)}})}function ct(){return X(this,null,function*(){t(21,pe=!0),t(11,N="");try{const S=yield h.getDevices();if(t(20,x=(S==null?void 0:S.list)||S||[]),t(22,_e=!0),!x.some($=>String($.device_id||$.id)===oe)){const $=x.find(tt)||x[0];t(23,oe=$?String($.device_id||$.id):"")}yield Rt(),Te(`已获取 ${x.length} 个云设备`)}catch(S){t(11,N=(S==null?void 0:S.message)||"获取云设备失败")}finally{t(21,pe=!1)}})}function vn(S){t(23,oe=S),t(25,be=""),Rt()}function Rt(){return X(this,null,function*(){const S=oe,$=be,ie=++me;if(t(24,ne=[]),t(25,be=""),t(27,Ie=""),t(26,we=!!S),!!S)try{const Se=yield h.getDevicePrinters(S);if(ie!==me||oe!==S)return;t(24,ne=Array.isArray(Se)?Se:[]),t(25,be=ne.some(Ct=>Ct.name===$&&!Ct.disabled)?$:hn(ne))}catch(Se){ie===me&&t(27,Ie=(Se==null?void 0:Se.message)||"获取打印机失败")}finally{ie===me&&t(26,we=!1)}})}function wt(){return X(this,null,function*(){t(30,re=!0),t(11,N="");try{const S=yield h.getJobs({page:1,pageSize:10});t(29,he=(S==null?void 0:S.list)||[])}catch(S){t(11,N=(S==null?void 0:S.message)||"获取云任务失败")}finally{t(30,re=!1)}})}function fi(){return X(this,null,function*(){if(!oe){t(11,N="请先选择云设备");return}let S;try{S=Ll(F,be)}catch($){t(11,N=$.message);return}yield ue("云打印下发",()=>h.cloudPrint({device_id:oe,print_type:"template",print_options:S})),wt()})}function mn(S){return X(this,null,function*(){yield ue("取消云任务",()=>h.cancelJob(S)),wt()})}function bn(S){return X(this,null,function*(){yield ue("重试云任务",()=>h.retryJob(S)),wt()})}function di(){return X(this,null,function*(){var S;t(10,I=!0),t(11,N="");try{const $=yield h.getTransitClients();t(31,ce=$.filter(ie=>ie.clientType==="electron")),t(36,qe=!0),ce.some(ie=>ie.clientId===de)||(De++,t(32,de=((S=ce[0])==null?void 0:S.clientId)||""),t(33,ge=[]),t(34,ae="")),Te(`已连接,${ce.length} 个在线客户端`),de&&(yield Tt(de))}catch($){t(36,qe=!1),t(11,N=($==null?void 0:$.message)||"获取中转客户端失败")}finally{t(10,I=!1)}})}function pi(){De++,h.disconnectTransit(),t(36,qe=!1),t(31,ce=[]),t(33,ge=[]),t(32,de=""),t(34,ae="")}function Tt(){return X(this,arguments,function*(S=de){const $=++De;if(!S){t(11,N="请先选择中转客户端");return}t(10,I=!0),t(11,N="");try{const ie=yield h.getTransitPrinters(S);if($!==De||S!==de)return;t(33,ge=Array.isArray(ie)?ie:(ie==null?void 0:ie.list)||[]),ge.some(Se=>Se.name===ae&&!Se.disabled)||t(34,ae=hn(ge)),Te(`已获取 ${ge.length} 台打印机`)}catch(ie){$===De&&S===de&&t(11,N=(ie==null?void 0:ie.message)||"获取中转打印机失败")}finally{$===De&&t(10,I=!1)}})}function gn(S){t(32,de=S),t(34,ae=""),t(33,ge=[]),Tt(S)}function _i(){return X(this,null,function*(){if(!de){t(11,N="请选择目标中转客户端");return}if(!ae){t(11,N="请选择打印机");return}let S;try{S=Ll(ye,ae)}catch($){t(11,N=$.message);return}t(10,I=!0),t(11,N=""),t(13,U="");try{const $=yield h.transitPrint({clientId:de,printer:ae,print_options:S});t(13,U=`客户端打印成功${$!=null&&$.msg?`:${$.msg}`:""}`),Ye(U)}catch($){t(11,N=`中转打印失败:${($==null?void 0:$.message)||$}`)}finally{t(10,I=!1)}})}const hi=[[]],vi=S=>ze(S.key),mi=S=>Fe(S.id);function bi(S){pt[S?"unshift":"push"](()=>{A=S,t(3,A)})}function gi(){ee=this.value,t(14,ee)}const ki=S=>S.key==="Enter"&&R(),yi=()=>{var S,$,ie,Se;return(Se=(ie=($=(S=il())==null?void 0:S.cloud)==null?void 0:$.templateCenter)==null?void 0:ie.show)==null?void 0:Se.call(ie)},wi=S=>se(S);function Ti(){B=Qe(this),t(17,B)}function Ci(){Q=this.checked,t(18,Q)}function zi(){oe=this.__value,t(23,oe)}const Si=S=>vn(S.currentTarget.value);function Pi(){be=Qe(this),t(25,be),t(24,ne)}function Ei(){be=this.value,t(25,be),t(24,ne)}function Li(S){F=S,t(28,F)}const Ii=S=>bn(S.id||S.job_id),qi=S=>mn(S.id||S.job_id);function Mi(){de=Qe(this),t(32,de),t(31,ce)}const Ai=S=>gn(S.currentTarget.value);function Oi(){ae=Qe(this),t(34,ae),t(33,ge)}const Di=()=>Tt();function Ui(S){ye=S,t(35,ye)}return n.$$set=S=>{"config"in S&&t(0,w=S.config),"auth"in S&&t(1,b=S.auth),"service"in S&&t(69,h=S.service)},n.$$.update=()=>{n.$$.dirty[0]&4&&t(71,s=L.find(S=>S.id===y)),n.$$.dirty[0]&6&&t(70,i=y?b.providerConfig:null),n.$$.dirty[0]&2|n.$$.dirty[2]&512&&t(45,c=(s==null?void 0:s.label)||b.label),n.$$.dirty[0]&6&&t(44,o=y?b.storageKey:""),n.$$.dirty[2]&512&&t(43,p=!!(s!=null&&s.canLogin)),n.$$.dirty[2]&256&&t(5,f=i&&i.type==="oauth"?i:null),n.$$.dirty[0]&32&&t(42,_=Array.isArray(f==null?void 0:f.scope)?f==null?void 0:f.scope.join(", "):(f==null?void 0:f.scope)||"(默认全部)"),n.$$.dirty[0]&32&&t(41,u=D[(f==null?void 0:f.mode)||"iframe"]||"设计器内弹层"),n.$$.dirty[0]&4&&t(40,v=J[y]||""),n.$$.dirty[0]&14&&A&&y&&b.renderLogin(A),n.$$.dirty[0]&16&&t(39,m=(q==null?void 0:q.file_url)||""),n.$$.dirty[0]&16&&t(38,P=Number(q==null?void 0:q.status)===3),n.$$.dirty[0]&16&&t(37,C=oi((q==null?void 0:q.file_size)||0))},t(46,l=L.length>1),[w,b,y,A,q,f,H,M,j,K,I,N,O,U,ee,ve,Y,B,Q,V,x,pe,_e,oe,ne,be,we,Ie,F,he,re,ce,de,ge,ae,ye,qe,C,P,m,v,u,_,p,o,c,l,z,L,Fe,ze,$e,Ee,R,Z,se,Me,ct,vn,Rt,wt,fi,mn,bn,di,pi,Tt,gn,_i,h,i,s,vi,mi,bi,gi,ki,yi,wi,Ti,Ci,zi,hi,Si,Pi,Ei,Li,Ii,qi,Mi,Ai,Oi,Di,Ui]}class ai extends Jt{constructor(e){super(),Nt(this,e,ci,ri,Lt,{config:0,auth:1,service:69},null,[-1,-1,-1,-1,-1])}}const ui=Object.freeze(Object.defineProperty({__proto__:null,default:ai},Symbol.toStringTag,{value:"Module"}));te.AuthManager=tl,te.CloudClient=vt,te.CloudService=sl,te.HostAuthProvider=Gt,te.LocalAuthProvider=Vt,te.NoneAuthProvider=St,te.OAuthAuthProvider=Ft,te.TokenAuthProvider=Kt,te.TransitClient=nl,te.createAuthProvider=Yt,te.default=Un,te.defaultStorageKey=Xt,te.extendTemplate=Ce,te.memoryStorageToken=En,te.normalizeAuthConfig=Wt,te.preferencesTokenStorage=xt,te.readActiveProvider=Qt,te.relayOAuthCallback=jt,te.resolveStorage=el,te.resolveStorageKey=Pt,te.sessionStorageToken=Pn,te.writeActiveProvider=bt,Object.defineProperties(te,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
@@ -0,0 +1,5 @@
1
+ export declare const OAUTH_MESSAGE_TYPE = "sv-print-oauth";
2
+ export declare const AUTH_STORAGE_PREFIX = "sv_print_cloud_auth";
3
+ export declare const AUTH_ACTIVE_KEY = "sv_print_cloud_auth_active";
4
+ export declare const OAUTH_STATE_KEY_PREFIX = "sv_print_cloud_oauth_state_";
5
+ export declare const OAUTH_RELAY_KEY_PREFIX = "sv_print_cloud_oauth_code_";
@@ -0,0 +1,10 @@
1
+ import type { OAuthTokenResult } from "../../types";
2
+ import type { AuthConfig, CloudAuthProvider } from "./types";
3
+ export declare class NoneAuthProvider implements CloudAuthProvider {
4
+ id: string;
5
+ label: string;
6
+ canLogin(): boolean;
7
+ login(): Promise<OAuthTokenResult>;
8
+ }
9
+ export declare function normalizeAuthConfig(auth?: AuthConfig | AuthConfig[]): AuthConfig[];
10
+ export declare function createAuthProvider(auth: AuthConfig, autoLogin?: boolean): CloudAuthProvider;
@@ -0,0 +1,21 @@
1
+ import type { OAuthClientInfo, OAuthTokenResult } from "../../types";
2
+ import type { AuthContext, CloudAuthProvider } from "./types";
3
+ interface HostAuthConfig {
4
+ getToken: () => Promise<OAuthTokenResult> | OAuthTokenResult;
5
+ logout?: () => Promise<void>;
6
+ getUser?: () => Promise<any>;
7
+ getClientInfo?: () => Promise<OAuthClientInfo | null>;
8
+ }
9
+ export declare class HostAuthProvider implements CloudAuthProvider {
10
+ private cfg;
11
+ id: string;
12
+ label: string;
13
+ getUser?: (ctx: AuthContext) => Promise<any>;
14
+ getClientInfo?: (ctx: AuthContext) => Promise<OAuthClientInfo | null>;
15
+ constructor(cfg: HostAuthConfig);
16
+ canLogin(): boolean;
17
+ init(ctx: AuthContext): Promise<void>;
18
+ login(): Promise<OAuthTokenResult>;
19
+ logout(): Promise<void>;
20
+ }
21
+ export {};
@@ -0,0 +1,9 @@
1
+ export * from "./types";
2
+ export { AuthManager } from "./manager";
3
+ export { createAuthProvider, normalizeAuthConfig, NoneAuthProvider } from "./factory";
4
+ export { relayOAuthCallback } from "./oauth-provider";
5
+ export { OAuthAuthProvider } from "./oauth-provider";
6
+ export { TokenAuthProvider } from "./token-provider";
7
+ export { HostAuthProvider } from "./host-provider";
8
+ export { LocalAuthProvider } from "./local-provider";
9
+ export { defaultStorageKey, preferencesTokenStorage, sessionStorageToken, memoryStorageToken, resolveStorage, resolveStorageKey, readActiveProvider, writeActiveProvider, } from "./storage";
@@ -0,0 +1,21 @@
1
+ import type { OAuthTokenResult } from "../../types";
2
+ import type { AuthContext, CloudAuthProvider } from "./types";
3
+ interface LocalAuthConfig {
4
+ login: (username: string, password: string) => Promise<OAuthTokenResult>;
5
+ logout?: () => Promise<void>;
6
+ getUser?: () => Promise<any>;
7
+ title?: string;
8
+ }
9
+ export declare class LocalAuthProvider implements CloudAuthProvider {
10
+ private cfg;
11
+ id: string;
12
+ label: string;
13
+ getUser?: (ctx: AuthContext) => Promise<any>;
14
+ constructor(cfg: LocalAuthConfig);
15
+ canLogin(): boolean;
16
+ login(): Promise<OAuthTokenResult>;
17
+ logout(): Promise<void>;
18
+ renderLogin(el: HTMLElement, ctx: AuthContext): void;
19
+ destroyLogin(el: HTMLElement): void;
20
+ }
21
+ export {};
@@ -0,0 +1,46 @@
1
+ import type { CloudClient } from "../cloud-client";
2
+ import type { CloudAuthProviderInfo, OAuthClientInfo, OAuthTokenResult, PluginConfig } from "../../types";
3
+ import type { AuthConfig } from "./types";
4
+ type TokenChangeCb = (token: OAuthTokenResult | null) => void;
5
+ export declare class AuthManager {
6
+ private client;
7
+ private config;
8
+ private entries;
9
+ private storages;
10
+ private active;
11
+ private multi;
12
+ private token;
13
+ private listeners;
14
+ private loginEl?;
15
+ constructor(config: PluginConfig, client: CloudClient);
16
+ private pickInitial;
17
+ private storageOf;
18
+ private ctx;
19
+ private runInit;
20
+ private maybeAutoLogin;
21
+ private writeToken;
22
+ private notify;
23
+ private onUnauthorized;
24
+ get type(): string;
25
+ get label(): string;
26
+ get activeId(): string;
27
+ get providers(): CloudAuthProviderInfo[];
28
+ get providerConfig(): AuthConfig | null;
29
+ get storageKey(): string;
30
+ get hasCustomLoginUI(): boolean;
31
+ renderLogin(el: HTMLElement): void;
32
+ destroyLogin(el: HTMLElement): void;
33
+ switchProvider(id: string): Promise<void>;
34
+ canLogin(): boolean;
35
+ isLoggedIn(): boolean;
36
+ getToken(): string | null;
37
+ onChange(cb: TokenChangeCb): () => void;
38
+ login(): Promise<OAuthTokenResult>;
39
+ logout(): Promise<void>;
40
+ getUser(): Promise<any>;
41
+ getClientInfo(): Promise<OAuthClientInfo | null>;
42
+ private oauthCfg;
43
+ private profileUrl;
44
+ private clientId;
45
+ }
46
+ export {};
@@ -0,0 +1,28 @@
1
+ import type { OAuthClientInfo, OAuthConfig, OAuthTokenResult } from "../../types";
2
+ import type { AuthContext, CloudAuthProvider } from "./types";
3
+ export declare function relayOAuthCallback(): boolean;
4
+ export declare class OAuthAuthProvider implements CloudAuthProvider {
5
+ private oauth;
6
+ id: string;
7
+ label: string;
8
+ autoLogin?: boolean;
9
+ constructor(oauth: OAuthConfig);
10
+ canLogin(): boolean;
11
+ private get stateKey();
12
+ private redirectUri;
13
+ private scopeStr;
14
+ private randomState;
15
+ private authorizeBase;
16
+ private isAbsoluteAuthorize;
17
+ private expectedMessageOrigin;
18
+ private buildAuthorizeUrl;
19
+ private parseMessage;
20
+ private waitInIframe;
21
+ private waitInWindow;
22
+ private waitForCode;
23
+ private exchangeToken;
24
+ login(ctx: AuthContext): Promise<OAuthTokenResult>;
25
+ logout(ctx: AuthContext): Promise<void>;
26
+ getUser(ctx: AuthContext): Promise<any>;
27
+ getClientInfo(ctx: AuthContext): Promise<OAuthClientInfo | null>;
28
+ }
@@ -0,0 +1,10 @@
1
+ import type { PluginConfig } from "../../types";
2
+ import type { CloudTokenStorage } from "./types";
3
+ export declare function defaultStorageKey(providerId: string): string;
4
+ export declare function readActiveProvider(): string | null;
5
+ export declare function writeActiveProvider(id: string | null): void;
6
+ export declare function preferencesTokenStorage(key: string): CloudTokenStorage;
7
+ export declare function sessionStorageToken(key: string): CloudTokenStorage;
8
+ export declare function memoryStorageToken(): CloudTokenStorage;
9
+ export declare function resolveStorageKey(config: PluginConfig, providerId: string, multi?: boolean): string;
10
+ export declare function resolveStorage(config: PluginConfig, providerId: string, multi?: boolean): CloudTokenStorage;
@@ -0,0 +1,15 @@
1
+ import type { OAuthTokenResult } from "../../types";
2
+ import type { AuthContext, CloudAuthProvider } from "./types";
3
+ export declare class TokenAuthProvider implements CloudAuthProvider {
4
+ id: string;
5
+ label: string;
6
+ private token?;
7
+ constructor(cfg: {
8
+ token?: string;
9
+ });
10
+ canLogin(): boolean;
11
+ init(ctx: AuthContext): void;
12
+ login(): Promise<OAuthTokenResult>;
13
+ renderLogin(el: HTMLElement, ctx: AuthContext): void;
14
+ destroyLogin(el: HTMLElement): void;
15
+ }
@@ -0,0 +1,44 @@
1
+ import type { CloudClient } from "../cloud-client";
2
+ import type { OAuthClientInfo, OAuthConfig, OAuthTokenResult, PluginConfig } from "../../types";
3
+ export type AuthProviderType = "oauth" | "token" | "host" | "local";
4
+ export interface CloudTokenStorage {
5
+ get(): OAuthTokenResult | null;
6
+ set(token: OAuthTokenResult | null): void;
7
+ }
8
+ export type AuthConfig = ({
9
+ type: "oauth";
10
+ } & OAuthConfig) | {
11
+ type: "token";
12
+ token?: string;
13
+ } | {
14
+ type: "host";
15
+ getToken: () => Promise<OAuthTokenResult> | OAuthTokenResult;
16
+ logout?: () => Promise<void>;
17
+ getUser?: () => Promise<any>;
18
+ getClientInfo?: () => Promise<OAuthClientInfo | null>;
19
+ } | {
20
+ type: "local";
21
+ login: (username: string, password: string) => Promise<OAuthTokenResult>;
22
+ logout?: () => Promise<void>;
23
+ getUser?: () => Promise<any>;
24
+ title?: string;
25
+ };
26
+ export interface AuthContext {
27
+ client: CloudClient;
28
+ config: PluginConfig;
29
+ storage: CloudTokenStorage;
30
+ emit(token: OAuthTokenResult | null): void;
31
+ }
32
+ export interface CloudAuthProvider {
33
+ id: AuthProviderType | string;
34
+ label: string;
35
+ canLogin(): boolean;
36
+ autoLogin?: boolean;
37
+ login(ctx: AuthContext): Promise<OAuthTokenResult>;
38
+ init?(ctx: AuthContext): Promise<void> | void;
39
+ logout?(ctx: AuthContext): Promise<void>;
40
+ getUser?(ctx: AuthContext): Promise<any>;
41
+ getClientInfo?(ctx: AuthContext): Promise<OAuthClientInfo | null>;
42
+ renderLogin?(el: HTMLElement, ctx: AuthContext): void;
43
+ destroyLogin?(el: HTMLElement): void;
44
+ }