@kevisual/kv-login 0.1.15 → 0.1.16

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,469 @@
1
+ (function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const a of o.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&n(a)}).observe(document,{childList:!0,subtree:!0});function t(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(r){if(r.ep)return;r.ep=!0;const o=t(r);fetch(r.href,o)}})();const rt=globalThis,dt=s=>s,pe=rt.trustedTypes,ft=pe?pe.createPolicy("lit-html",{createHTML:s=>s}):void 0,cn="$lit$",W=`lit$${Math.random().toFixed(9).slice(2)}$`,un="?"+W,Pn=`<${un}>`,Q=document,ie=()=>Q.createComment(""),ae=s=>s===null||typeof s!="object"&&typeof s!="function",st=Array.isArray,Mn=s=>st(s)||typeof s?.[Symbol.iterator]=="function",Ee=`[
2
+ \f\r]`,se=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,gt=/-->/g,mt=/>/g,V=RegExp(`>|${Ee}(?:([^\\s"'>=/]+)(${Ee}*=${Ee}*(?:[^
3
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),pt=/'/g,yt=/"/g,ln=/^(?:script|style|textarea|title)$/i,qn=s=>(e,...t)=>({_$litType$:s,strings:e,values:t}),D=qn(1),ee=Symbol.for("lit-noChange"),I=Symbol.for("lit-nothing"),wt=new WeakMap,K=Q.createTreeWalker(Q,129);function hn(s,e){if(!st(s)||!s.hasOwnProperty("raw"))throw Error("invalid template strings array");return ft!==void 0?ft.createHTML(e):e}const Bn=(s,e)=>{const t=s.length-1,n=[];let r,o=e===2?"<svg>":e===3?"<math>":"",a=se;for(let c=0;c<t;c++){const i=s[c];let u,l,h=-1,g=0;for(;g<i.length&&(a.lastIndex=g,l=a.exec(i),l!==null);)g=a.lastIndex,a===se?l[1]==="!--"?a=gt:l[1]!==void 0?a=mt:l[2]!==void 0?(ln.test(l[2])&&(r=RegExp("</"+l[2],"g")),a=V):l[3]!==void 0&&(a=V):a===V?l[0]===">"?(a=r??se,h=-1):l[1]===void 0?h=-2:(h=a.lastIndex-l[2].length,u=l[1],a=l[3]===void 0?V:l[3]==='"'?yt:pt):a===yt||a===pt?a=V:a===gt||a===mt?a=se:(a=V,r=void 0);const m=a===V&&s[c+1].startsWith("/>")?" ":"";o+=a===se?i+Pn:h>=0?(n.push(u),i.slice(0,h)+cn+i.slice(h)+W+m):i+W+(h===-2?c:m)}return[hn(s,o+(s[t]||"<?>")+(e===2?"</svg>":e===3?"</math>":"")),n]};class ce{constructor({strings:e,_$litType$:t},n){let r;this.parts=[];let o=0,a=0;const c=e.length-1,i=this.parts,[u,l]=Bn(e,t);if(this.el=ce.createElement(u,n),K.currentNode=this.el.content,t===2||t===3){const h=this.el.content.firstChild;h.replaceWith(...h.childNodes)}for(;(r=K.nextNode())!==null&&i.length<c;){if(r.nodeType===1){if(r.hasAttributes())for(const h of r.getAttributeNames())if(h.endsWith(cn)){const g=l[a++],m=r.getAttribute(h).split(W),d=/([.?@])?(.*)/.exec(g);i.push({type:1,index:o,name:d[2],strings:m,ctor:d[1]==="."?Nn:d[1]==="?"?$n:d[1]==="@"?Fn:ke}),r.removeAttribute(h)}else h.startsWith(W)&&(i.push({type:6,index:o}),r.removeAttribute(h));if(ln.test(r.tagName)){const h=r.textContent.split(W),g=h.length-1;if(g>0){r.textContent=pe?pe.emptyScript:"";for(let m=0;m<g;m++)r.append(h[m],ie()),K.nextNode(),i.push({type:2,index:++o});r.append(h[g],ie())}}}else if(r.nodeType===8)if(r.data===un)i.push({type:2,index:o});else{let h=-1;for(;(h=r.data.indexOf(W,h+1))!==-1;)i.push({type:7,index:o}),h+=W.length-1}o++}}static createElement(e,t){const n=Q.createElement("template");return n.innerHTML=e,n}}function te(s,e,t=s,n){if(e===ee)return e;let r=n!==void 0?t._$Co?.[n]:t._$Cl;const o=ae(e)?void 0:e._$litDirective$;return r?.constructor!==o&&(r?._$AO?.(!1),o===void 0?r=void 0:(r=new o(s),r._$AT(s,t,n)),n!==void 0?(t._$Co??=[])[n]=r:t._$Cl=r),r!==void 0&&(e=te(s,r._$AS(s,e.values),r,n)),e}class Un{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){const{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??Q).importNode(t,!0);K.currentNode=r;let o=K.nextNode(),a=0,c=0,i=n[0];for(;i!==void 0;){if(a===i.index){let u;i.type===2?u=new ue(o,o.nextSibling,this,e):i.type===1?u=new i.ctor(o,i.name,i.strings,this,e):i.type===6&&(u=new zn(o,this,e)),this._$AV.push(u),i=n[++c]}a!==i?.index&&(o=K.nextNode(),a++)}return K.currentNode=Q,r}p(e){let t=0;for(const n of this._$AV)n!==void 0&&(n.strings!==void 0?(n._$AI(e,n,t),t+=n.strings.length-2):n._$AI(e[t])),t++}}class ue{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=I,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode;const t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=te(this,e,t),ae(e)?e===I||e==null||e===""?(this._$AH!==I&&this._$AR(),this._$AH=I):e!==this._$AH&&e!==ee&&this._(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):Mn(e)?this.k(e):this._(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==I&&ae(this._$AH)?this._$AA.nextSibling.data=e:this.T(Q.createTextNode(e)),this._$AH=e}$(e){const{values:t,_$litType$:n}=e,r=typeof n=="number"?this._$AC(e):(n.el===void 0&&(n.el=ce.createElement(hn(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{const o=new Un(r,this),a=o.u(this.options);o.p(t),this.T(a),this._$AH=o}}_$AC(e){let t=wt.get(e.strings);return t===void 0&&wt.set(e.strings,t=new ce(e)),t}k(e){st(this._$AH)||(this._$AH=[],this._$AR());const t=this._$AH;let n,r=0;for(const o of e)r===t.length?t.push(n=new ue(this.O(ie()),this.O(ie()),this,this.options)):n=t[r],n._$AI(o),r++;r<t.length&&(this._$AR(n&&n._$AB.nextSibling,r),t.length=r)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){const n=dt(e).nextSibling;dt(e).remove(),e=n}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}}class ke{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,o){this.type=1,this._$AH=I,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=o,n.length>2||n[0]!==""||n[1]!==""?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=I}_$AI(e,t=this,n,r){const o=this.strings;let a=!1;if(o===void 0)e=te(this,e,t,0),a=!ae(e)||e!==this._$AH&&e!==ee,a&&(this._$AH=e);else{const c=e;let i,u;for(e=o[0],i=0;i<o.length-1;i++)u=te(this,c[n+i],t,i),u===ee&&(u=this._$AH[i]),a||=!ae(u)||u!==this._$AH[i],u===I?e=I:e!==I&&(e+=(u??"")+o[i+1]),this._$AH[i]=u}a&&!r&&this.j(e)}j(e){e===I?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}}class Nn extends ke{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===I?void 0:e}}class $n extends ke{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==I)}}class Fn extends ke{constructor(e,t,n,r,o){super(e,t,n,r,o),this.type=5}_$AI(e,t=this){if((e=te(this,e,t,0)??I)===ee)return;const n=this._$AH,r=e===I&&n!==I||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,o=e!==I&&(n===I||r);r&&this.element.removeEventListener(this.name,this,n),o&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}}class zn{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){te(this,e)}}const jn=rt.litHtmlPolyfillSupport;jn?.(ce,ue),(rt.litHtmlVersions??=[]).push("3.3.2");const dn=(s,e,t)=>{const n=e;let r=n._$litPart$;return r===void 0&&(n._$litPart$=r=new ue(e.insertBefore(ie(),null),null,void 0,{})),r._$AI(s),r};const On={CHILD:2},Hn=s=>(...e)=>({_$litDirective$:s,values:e});class Wn{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,n){this._$Ct=e,this._$AM=t,this._$Ci=n}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}}class nt extends Wn{constructor(e){if(super(e),this.it=I,e.type!==On.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(e){if(e===I||e==null)return this._t=void 0,this.it=e;if(e===ee)return e;if(typeof e!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(e===this.it)return this._t;this.it=e;const t=[e];return t.raw=t,this._t={_$litType$:this.constructor.resultType,strings:t,values:[]}}}nt.directiveName="unsafeHTML",nt.resultType=1;const vt=Hn(nt);var Vn=s=>s?["text/","xml","html","javascript","css","csv","plain","x-www-form-urlencoded","md","json"].some(t=>s.includes(t)):!1,kt=async(s={},e)=>{const t=new AbortController,n=t.signal,r=s.isPostFile||!1,o=s.timeout||6e4*3,a=setTimeout(()=>{t.abort()},o);let c=e?.method||s?.method||"POST",i={...s?.headers,...e?.headers},u="",l;s?.url?.startsWith("http")?l=new URL(s.url):(u=globalThis?.location?.origin||"http://localhost:51515",l=new URL(s?.url||"",u));const h=c==="GET",g=l.searchParams;if(h){let d=new URLSearchParams({...Object.fromEntries(g),...s?.params,...s?.body});l.search=d.toString()}else{const d={...Object.fromEntries(g),...s.params},w=new URLSearchParams(d);if(typeof s.body=="object"&&s.body!==null){let f=s.body||{};!d.path&&f?.path&&(w.set("path",f.path),f?.key&&w.set("key",f.key))}l.search=w.toString()}let m;return h?m=void 0:r?m=s.body:s.body&&typeof s.body=="object"&&!(s.body instanceof FormData)&&(i={"Content-Type":"application/json",...i},m=JSON.stringify(s.body)),fetch(l,{method:c.toUpperCase(),signal:n,body:m,...e,headers:i}).then(async d=>{const w=d.headers.get("Content-Type"),f=w&&w.includes("application/json"),p=d.ok;if(f){const v=await d.json();return v?.code?v:{code:p?200:d.status,status:d.status,data:v}}else return Vn(w)?{code:p?200:d.status,status:d.status,data:await d.text()}:{code:p?200:d.status,status:d.status,data:"非文本非JSON响应, 请手动处理response。",response:d}}).catch(d=>d.name==="AbortError"?{code:408,message:"请求超时"}:{code:500,message:d.message||"网络错误"}).finally(()=>{clearTimeout(a)})},he=({code:s,message:e})=>({code:s||500,message:e||"请求错误"});let ot=class{adapter;baseURL;url;beforeRequest;afterResponse;headers;timeout;stop;qws;tokenName;storage;token;constructor(e){this.adapter=e?.adapter||kt,this.tokenName=e?.tokenName||"token",this.storage=e?.storage||globalThis?.localStorage;const t=e?.isClient?"/client/router":"/api/router";if(this.url=e?.url||t,this.url.startsWith("http")){const n=new URL(this.url);this.baseURL=n.origin}this.baseURL=e?.baseURL||this.baseURL,this.headers=e?.headers||{"Content-Type":"application/json"},this.timeout=e?.timeout||6e4*3,e?.beforeRequest?this.beforeRequest=e.beforeRequest:this.beforeRequest=async n=>{const r=this.token||this.storage?.getItem?.(this.tokenName);return r&&(n.headers={...n.headers,Authorization:`Bearer ${r}`}),n}}setQueryWs(e){this.qws=e}setStop(e){this.stop=e}async get(e,t){return this.post(e,t)}async post(e,t){const n=t?.url||this.url,{headers:r,adapter:o,beforeRequest:a,afterResponse:c,timeout:i,...u}=t||{},l={...this.headers,...r},h=o||this.adapter,g=a||this.beforeRequest,m=c||this.afterResponse,d=i||this.timeout,w={url:n,headers:l,body:e,timeout:d,...u};if(!w.url.startsWith("http")&&this.baseURL){const p=new URL(this.baseURL||globalThis?.location?.origin).origin;w.url=p+w.url}try{if(g&&await g(w)===!1)return he({code:500,message:"请求取消",req:w})}catch(p){return console.error("request beforeFn error",p,w),he({code:500,message:"请求在请求前处理时发生错误"})}if(this.stop&&!t?.noStop){const p=this;if(!await new Promise(y=>{let k=0;const C=setInterval(()=>{p.stop||(clearInterval(C),y(!0)),k++,k>5&&(console.error("等待请求失败:",w.url,k),clearInterval(C),y(!1))},1e3)}))return he({code:500,message:"请求取消,可能是因为用户未登录或者token过期"})}return h(w).then(async p=>{try{return m?await m(p,{req:w,res:p,fetch:o}):p}catch(v){return console.error("请求在响应后处理时发生错误",v,w),he({code:500,message:"请求在响应后处理时发生错误"})}})}before(e){this.beforeRequest=e}after(e){this.afterResponse=e}async fetchText(e,t){let n={...t};typeof e=="string"&&!n.url&&(n.url=e),typeof e=="object"&&(n={...e,...n});const r=await kt({method:"GET",...n,headers:{...this.headers,...n?.headers||{}}});return r&&!r.code?{code:200,data:r}:r}},Kn=class{query;queryDefine;constructor(e){e?.clientQuery?this.query=e.clientQuery:this.query=e?.query,e.queryDefine&&(this.queryDefine=e.queryDefine,this.queryDefine.query=this.query)}get chain(){return this.queryDefine.queryChain}post(e,t){return this.query.post(e,t)}get(e,t){return this.query.get(e,t)}};var Qn=Object.create,Jn=Object.getPrototypeOf,bt=Object.defineProperty,Gn=Object.getOwnPropertyNames,Yn=Object.prototype.hasOwnProperty,Xn=(s,e,t)=>{t=s!=null?Qn(Jn(s)):{};const n=bt(t,"default",{value:s,enumerable:!0});for(let r of Gn(s))Yn.call(n,r)||bt(n,r,{get:()=>s[r],enumerable:!0});return n},Zn=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),er=Zn((s,e)=>{var t=Object.prototype.hasOwnProperty,n="~";function r(){}Object.create&&(r.prototype=Object.create(null),new r().__proto__||(n=!1));function o(u,l,h){this.fn=u,this.context=l,this.once=h||!1}function a(u,l,h,g,m){if(typeof h!="function")throw new TypeError("The listener must be a function");var d=new o(h,g||u,m),w=n?n+l:l;return u._events[w]?u._events[w].fn?u._events[w]=[u._events[w],d]:u._events[w].push(d):(u._events[w]=d,u._eventsCount++),u}function c(u,l){--u._eventsCount===0?u._events=new r:delete u._events[l]}function i(){this._events=new r,this._eventsCount=0}i.prototype.eventNames=function(){var l=[],h,g;if(this._eventsCount===0)return l;for(g in h=this._events)t.call(h,g)&&l.push(n?g.slice(1):g);return Object.getOwnPropertySymbols?l.concat(Object.getOwnPropertySymbols(h)):l},i.prototype.listeners=function(l){var h=n?n+l:l,g=this._events[h];if(!g)return[];if(g.fn)return[g.fn];for(var m=0,d=g.length,w=new Array(d);m<d;m++)w[m]=g[m].fn;return w},i.prototype.listenerCount=function(l){var h=n?n+l:l,g=this._events[h];return g?g.fn?1:g.length:0},i.prototype.emit=function(l,h,g,m,d,w){var f=n?n+l:l;if(!this._events[f])return!1;var p=this._events[f],v=arguments.length,y,k;if(p.fn){switch(p.once&&this.removeListener(l,p.fn,void 0,!0),v){case 1:return p.fn.call(p.context),!0;case 2:return p.fn.call(p.context,h),!0;case 3:return p.fn.call(p.context,h,g),!0;case 4:return p.fn.call(p.context,h,g,m),!0;case 5:return p.fn.call(p.context,h,g,m,d),!0;case 6:return p.fn.call(p.context,h,g,m,d,w),!0}for(k=1,y=new Array(v-1);k<v;k++)y[k-1]=arguments[k];p.fn.apply(p.context,y)}else{var C=p.length,b;for(k=0;k<C;k++)switch(p[k].once&&this.removeListener(l,p[k].fn,void 0,!0),v){case 1:p[k].fn.call(p[k].context);break;case 2:p[k].fn.call(p[k].context,h);break;case 3:p[k].fn.call(p[k].context,h,g);break;case 4:p[k].fn.call(p[k].context,h,g,m);break;default:if(!y)for(b=1,y=new Array(v-1);b<v;b++)y[b-1]=arguments[b];p[k].fn.apply(p[k].context,y)}}return!0},i.prototype.on=function(l,h,g){return a(this,l,h,g,!1)},i.prototype.once=function(l,h,g){return a(this,l,h,g,!0)},i.prototype.removeListener=function(l,h,g,m){var d=n?n+l:l;if(!this._events[d])return this;if(!h)return c(this,d),this;var w=this._events[d];if(w.fn)w.fn===h&&(!m||w.once)&&(!g||w.context===g)&&c(this,d);else{for(var f=0,p=[],v=w.length;f<v;f++)(w[f].fn!==h||m&&!w[f].once||g&&w[f].context!==g)&&p.push(w[f]);p.length?this._events[d]=p.length===1?p[0]:p:c(this,d)}return this},i.prototype.removeAllListeners=function(l){var h;return l?(h=n?n+l:l,this._events[h]&&c(this,h)):(this._events=new r,this._eventsCount=0),this},i.prototype.off=i.prototype.removeListener,i.prototype.addListener=i.prototype.on,i.prefixed=n,i.EventEmitter=i,typeof e<"u"&&(e.exports=i)}),tr=s=>s?["text/","xml","html","javascript","css","csv","plain","x-www-form-urlencoded","md","json"].some(t=>s.includes(t)):!1,Tt=async(s={},e)=>{const t=new AbortController,n=t.signal,r=s.isPostFile||!1,o=s.timeout||6e4*3,a=setTimeout(()=>{t.abort()},o);let c=e?.method||s?.method||"POST",i={...s?.headers,...e?.headers},u="",l;s?.url?.startsWith("http")?l=new URL(s.url):(u=globalThis?.location?.origin||"http://localhost:51515",l=new URL(s?.url||"",u));const h=c==="GET",g=l.searchParams;if(h){let d=new URLSearchParams({...Object.fromEntries(g),...s?.params,...s?.body});l.search=d.toString()}else{const d={...Object.fromEntries(g),...s.params},w=new URLSearchParams(d);if(typeof s.body=="object"&&s.body!==null){let f=s.body||{};!d.path&&f?.path&&(w.set("path",f.path),f?.key&&w.set("key",f.key))}l.search=w.toString()}let m;return h?m=void 0:r?m=s.body:s.body&&typeof s.body=="object"&&!(s.body instanceof FormData)&&(i={"Content-Type":"application/json",...i},m=JSON.stringify(s.body)),fetch(l,{method:c.toUpperCase(),signal:n,body:m,...e,headers:i}).then(async d=>{const w=d.headers.get("Content-Type"),f=w&&w.includes("application/json"),p=d.ok;if(f){const v=await d.json();return v?.code?v:{code:p?200:d.status,status:d.status,data:v}}else return tr(w)?{code:p?200:d.status,status:d.status,data:await d.text()}:{code:p?200:d.status,status:d.status,data:"非文本非JSON响应, 请手动处理response。",response:d}}).catch(d=>d.name==="AbortError"?{code:408,message:"请求超时"}:{code:500,message:d.message||"网络错误"}).finally(()=>{clearTimeout(a)})},de=({code:s,message:e})=>({code:s||500,message:e||"请求错误"});class nr{adapter;baseURL;url;beforeRequest;afterResponse;headers;timeout;stop;qws;tokenName;storage;token;constructor(e){this.adapter=e?.adapter||Tt,this.tokenName=e?.tokenName||"token",this.storage=e?.storage||globalThis?.localStorage;const t=e?.isClient?"/client/router":"/api/router";if(this.url=e?.url||t,this.url.startsWith("http")){const n=new URL(this.url);this.baseURL=n.origin}this.baseURL=e?.baseURL||this.baseURL,this.headers=e?.headers||{"Content-Type":"application/json"},this.timeout=e?.timeout||6e4*3,e?.beforeRequest?this.beforeRequest=e.beforeRequest:this.beforeRequest=async n=>{const r=this.token||this.storage?.getItem?.(this.tokenName);return r&&(n.headers={...n.headers,Authorization:`Bearer ${r}`}),n}}setQueryWs(e){this.qws=e}setStop(e){this.stop=e}async get(e,t){return this.post(e,t)}async post(e,t){const n=t?.url||this.url,{headers:r,adapter:o,beforeRequest:a,afterResponse:c,timeout:i,...u}=t||{},l={...this.headers,...r},h=o||this.adapter,g=a||this.beforeRequest,m=c||this.afterResponse,d=i||this.timeout,w={url:n,headers:l,body:e,timeout:d,...u};if(!w.url.startsWith("http")&&this.baseURL){const p=new URL(this.baseURL||globalThis?.location?.origin).origin;w.url=p+w.url}try{if(g&&await g(w)===!1)return de({code:500,message:"请求取消",req:w})}catch(p){return console.error("request beforeFn error",p,w),de({code:500,message:"请求在请求前处理时发生错误"})}if(this.stop&&!t?.noStop){const p=this;if(!await new Promise(y=>{let k=0;const C=setInterval(()=>{p.stop||(clearInterval(C),y(!0)),k++,k>5&&(console.error("等待请求失败:",w.url,k),clearInterval(C),y(!1))},1e3)}))return de({code:500,message:"请求取消,可能是因为用户未登录或者token过期"})}return h(w).then(async p=>{try{return m?await m(p,{req:w,res:p,fetch:o}):p}catch(v){return console.error("请求在响应后处理时发生错误",v,w),de({code:500,message:"请求在响应后处理时发生错误"})}})}before(e){this.beforeRequest=e}after(e){this.afterResponse=e}async fetchText(e,t){let n={...t};typeof e=="string"&&!n.url&&(n.url=e),typeof e=="object"&&(n={...e,...n});const r=await Tt({method:"GET",...n,headers:{...this.headers,...n?.headers||{}}});return r&&!r.code?{code:200,data:r}:r}}class rr{query;queryDefine;constructor(e){e?.clientQuery?this.query=e.clientQuery:this.query=e?.query,e.queryDefine&&(this.queryDefine=e.queryDefine,this.queryDefine.query=this.query)}get chain(){return this.queryDefine.queryChain}post(e,t){return this.query.post(e,t)}get(e,t){return this.query.get(e,t)}}var fe={loginUsers:[],user:void 0,id:void 0,accessToken:void 0,refreshToken:void 0,accessTokenExpiresIn:void 0,createdAt:void 0};let sr=class{cache;name;cacheData;constructor(e){if(!e.cache)throw new Error("cache is required");this.cache=e.cache,this.cacheData={...fe},this.name=e.name}async setValue(e){return await this.cache.set(this.name,e),this.cacheData=e,e}async delValue(){await this.cache.del(),this.cacheData={...fe}}getValue(){return this.cache.get(this.name)}async init(){const e={...this.cacheData};return new Promise(async t=>{if(this.cache.init)try{const n=await this.cache.init();this.cacheData=n||e}catch(n){console.log("cacheInit error",n)}else this.cacheData=await this.getValue()||e;t(this.cacheData)})}async setLoginUser(e){this.cacheData.loginUsers.find(n=>n.id===e.id)&&(this.cacheData.loginUsers=this.cacheData?.loginUsers?.filter(n=>n?.id&&n.id!==e.id)),this.cacheData.loginUsers.push(e),this.cacheData.user=e.user,this.cacheData.id=e.id,this.cacheData.accessToken=e.accessToken,this.cacheData.refreshToken=e.refreshToken,this.cacheData.accessTokenExpiresIn=e.accessTokenExpiresIn,this.cacheData.createdAt=e.createdAt,await this.setValue(this.cacheData)}getCurrentUser(){const e=this.cacheData;return Promise.resolve(e.user)}getCurrentUserList(){return Promise.resolve(this.cacheData.loginUsers.filter(e=>e?.id))}getRefreshToken(){const e=this.cacheData;return Promise.resolve(e.refreshToken||"")}getAccessToken(){const e=this.cacheData;return Promise.resolve(e.accessToken||"")}getIsExpired(){const e=this.cacheData;if(!e.accessToken)return Promise.resolve(!0);if(!e.createdAt||!e.accessTokenExpiresIn)return Promise.resolve(!1);const t=Date.now(),n=e.createdAt+e.accessTokenExpiresIn*1e3;return Promise.resolve(t>=n)}async clearCurrentUser(){const e=await this.getCurrentUser();this.cacheData.loginUsers.find(o=>o.id===e.id)&&(this.cacheData.loginUsers=this.cacheData?.loginUsers?.filter(o=>o?.id&&o.id!==e.id));const n=this.cacheData.loginUsers.length>0,r=this.cacheData.loginUsers[this.cacheData.loginUsers.length-1];n&&r?(this.cacheData.user=r.user,this.cacheData.id=r.id,this.cacheData.accessToken=r.accessToken,this.cacheData.refreshToken=r.refreshToken,this.cacheData.accessTokenExpiresIn=r.accessTokenExpiresIn,this.cacheData.createdAt=r.createdAt):this.cacheData={...fe},await this.setValue(this.cacheData)}async clearAll(){this.cacheData={...fe},await this.setValue(this.cacheData)}};function or(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var xe={exports:{}},Ct;function ir(){return Ct||(Ct=1,(function(s){var e=Object.prototype.hasOwnProperty,t="~";function n(){}Object.create&&(n.prototype=Object.create(null),new n().__proto__||(t=!1));function r(i,u,l){this.fn=i,this.context=u,this.once=l||!1}function o(i,u,l,h,g){if(typeof l!="function")throw new TypeError("The listener must be a function");var m=new r(l,h||i,g),d=t?t+u:u;return i._events[d]?i._events[d].fn?i._events[d]=[i._events[d],m]:i._events[d].push(m):(i._events[d]=m,i._eventsCount++),i}function a(i,u){--i._eventsCount===0?i._events=new n:delete i._events[u]}function c(){this._events=new n,this._eventsCount=0}c.prototype.eventNames=function(){var u=[],l,h;if(this._eventsCount===0)return u;for(h in l=this._events)e.call(l,h)&&u.push(t?h.slice(1):h);return Object.getOwnPropertySymbols?u.concat(Object.getOwnPropertySymbols(l)):u},c.prototype.listeners=function(u){var l=t?t+u:u,h=this._events[l];if(!h)return[];if(h.fn)return[h.fn];for(var g=0,m=h.length,d=new Array(m);g<m;g++)d[g]=h[g].fn;return d},c.prototype.listenerCount=function(u){var l=t?t+u:u,h=this._events[l];return h?h.fn?1:h.length:0},c.prototype.emit=function(u,l,h,g,m,d){var w=t?t+u:u;if(!this._events[w])return!1;var f=this._events[w],p=arguments.length,v,y;if(f.fn){switch(f.once&&this.removeListener(u,f.fn,void 0,!0),p){case 1:return f.fn.call(f.context),!0;case 2:return f.fn.call(f.context,l),!0;case 3:return f.fn.call(f.context,l,h),!0;case 4:return f.fn.call(f.context,l,h,g),!0;case 5:return f.fn.call(f.context,l,h,g,m),!0;case 6:return f.fn.call(f.context,l,h,g,m,d),!0}for(y=1,v=new Array(p-1);y<p;y++)v[y-1]=arguments[y];f.fn.apply(f.context,v)}else{var k=f.length,C;for(y=0;y<k;y++)switch(f[y].once&&this.removeListener(u,f[y].fn,void 0,!0),p){case 1:f[y].fn.call(f[y].context);break;case 2:f[y].fn.call(f[y].context,l);break;case 3:f[y].fn.call(f[y].context,l,h);break;case 4:f[y].fn.call(f[y].context,l,h,g);break;default:if(!v)for(C=1,v=new Array(p-1);C<p;C++)v[C-1]=arguments[C];f[y].fn.apply(f[y].context,v)}}return!0},c.prototype.on=function(u,l,h){return o(this,u,l,h,!1)},c.prototype.once=function(u,l,h){return o(this,u,l,h,!0)},c.prototype.removeListener=function(u,l,h,g){var m=t?t+u:u;if(!this._events[m])return this;if(!l)return a(this,m),this;var d=this._events[m];if(d.fn)d.fn===l&&(!g||d.once)&&(!h||d.context===h)&&a(this,m);else{for(var w=0,f=[],p=d.length;w<p;w++)(d[w].fn!==l||g&&!d[w].once||h&&d[w].context!==h)&&f.push(d[w]);f.length?this._events[m]=f.length===1?f[0]:f:a(this,m)}return this},c.prototype.removeAllListeners=function(u){var l;return u?(l=t?t+u:u,this._events[l]&&a(this,l)):(this._events=new n,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=t,c.EventEmitter=c,s.exports=c})(xe)),xe.exports}var ar=ir(),cr=or(ar),_t=s=>{const e=s.timeout||3e5,t=s.interval||1e3,n=s?.checkSuccess||(()=>!0),r=s.signal;return new Promise(async(o,a)=>{let c,i=setTimeout(()=>{clearTimeout(c),o({code:500,message:"timeout"})},e);const u=s.fn||(()=>!0),l=async()=>{if(r?.aborted)return clearInterval(c),clearTimeout(i),o({code:499,message:"operation cancelled"});const h=await u();n(h)?(clearInterval(c),clearTimeout(i),o({code:200,data:h})):setTimeout(()=>{l()},t)};r&&r.addEventListener("abort",()=>{clearInterval(c),clearTimeout(i),o({code:499,message:"operation cancelled"})}),l()})};let ur=class{modules=new Map;event;loading;static reRunFn=_t;timeout=300*1e3;constructor(){this.event=new cr,this.loading=!1}listenKey(e,t){const n=t?.timeout??this.timeout;return new Promise(r=>{const o=setTimeout(()=>{this.event.removeListener(e,a),r({code:500,message:"timeout"})},n),a=c=>{if(clearTimeout(o),c)return r({code:500,message:c});const i=this.modules.get(e);i?.loadSuccessClear&&this.remove(e),r({code:200,data:i?.modules})};this.event.once(e,a)})}async hasLoaded(e,t){if(!e)return{code:404,message:"key is required"};if(!this.modules.has(e)){const o=t?.isExist??!0,a=t?.timeout??this.timeout;return o?await this.listenKey(e,{timeout:a}):{code:404}}const r=this.modules.get(e);return r?.status==="loaded"?{code:200,data:r.modules}:r?.status==="loading"?await this.listenKey(e,{timeout:t?.timeout??this.timeout}):r?.status==="error"?{code:500,message:"load error"}:r?.status==="cancel"?{code:499,message:"operation cancelled"}:{code:404}}async loadFn(e,t){const n=t.key;if(!n)return{code:404,message:"key is required"};const r={key:t.key,status:"loading",loading:!0,loadSuccessClear:t.loadSuccessClear??!0};let o="";try{const a=t.isReRun??!1;let c;if(!a)this.modules.set(n,r),c=await e();else{r.controller=new AbortController;const i=r.controller.signal;this.modules.set(n,r);const u=await _t({timeout:t.timeout,interval:t.interval,checkSuccess:t.checkSuccess,fn:e,signal:i});if(r.controller=null,u.code===499)return r.status="cancel",{code:499,message:"operation cancelled"};if(u.code!==200)throw new Error(u.message);c=u.data}return r.modules=c,r.status="loaded",{code:200,data:c}}catch(a){return o=a.message,r.status="error",{code:500,message:a}}finally{r.loading=!1,this.modules.set(t.key,r),o?this.event.emit(t.key,o):this.event.emit(t.key)}}async load(e,t){this.loading=!0;const n=t.key;if(!n)return{code:404,message:"key is required"};if(t?.force&&this.remove(n),this.modules.has(n))return await this.hasLoaded(n);if(typeof e=="function")return this.loadFn(e,t);console.error("loadContent is not a function and not has loaded")}remove(e){this.modules.has(e)&&(this.checkRemoveController(e),this.modules.delete(e))}emitLoaded(e){this.checkRemoveController(e),this.event.emit(e)}setModule(e,t,n){const r={key:e,status:"loaded",loading:!1,modules:t||{},...n};return this.modules.set(e,r),this.emitLoaded(e),r}cancel(e){this.checkRemoveController(e)}checkRemoveController(e){const t=this.modules.get(e);t?.controller&&(t.controller?.abort?.(),delete t.controller,this.modules.set(e,t))}};var lr=Xn(er());let hr=class extends rr{cacheStore;isBrowser;storage;load=!1;status="init";onLoad;emitter=new lr.default;constructor(e){if(super({query:e?.query||new nr}),this.cacheStore=new sr({name:"login",cache:e?.cache}),this.isBrowser=e?.isBrowser??!0,this.init(),this.onLoad=e?.onLoad,this.storage=e?.storage||globalThis?.localStorage,!this.storage)throw new Error("storage is required");this.cacheStore.init().then(()=>{this.onLoad?.(),this.load=!0,this.emitter.emit("load")})}setQuery(e){this.query=e}async init(){return this.load?this.cacheStore.cacheData:new Promise(async e=>{const t=setTimeout(()=>{e(this.cacheStore.cacheData)},2e4),n=()=>{clearTimeout(t),e(this.cacheStore.cacheData)};this.emitter.once("load",n)})}async post(e,t){try{return this.query.post({path:"user",...e},t)}catch(n){return console.log("error",n),{code:400}}}async login(e){const t=await this.post({key:"login",...e});if(t.code===200){const{accessToken:n,refreshToken:r,accessTokenExpiresIn:o}=t?.data||{};this.storage.setItem("token",n||""),await this.beforeSetLoginUser({accessToken:n,refreshToken:r,accessTokenExpiresIn:o})}return t}async loginByCode(e){const t=await this.post({path:"sms",key:"login",data:e});if(t.code===200){const{accessToken:n,refreshToken:r,accessTokenExpiresIn:o}=t?.data||{};this.storage.setItem("token",n||""),await this.beforeSetLoginUser({accessToken:n,refreshToken:r,accessTokenExpiresIn:o})}return t}async setLoginToken(e){const{accessToken:t,refreshToken:n,accessTokenExpiresIn:r}=e;this.storage.setItem("token",t||""),await this.beforeSetLoginUser({accessToken:t,refreshToken:n,accessTokenExpiresIn:r})}async loginByWechat(e){const t=await this.post({path:"wx",key:"open-login",code:e.code});if(t.code===200){const{accessToken:n,refreshToken:r,accessTokenExpiresIn:o}=t?.data||{};this.storage.setItem("token",n||""),await this.beforeSetLoginUser({accessToken:n,refreshToken:r,accessTokenExpiresIn:o})}return t}async loginByCnb(e){const t=await this.post({path:"user",key:"cnb-login",payload:{data:e}});if(t.code===200){const{accessToken:n,refreshToken:r,accessTokenExpiresIn:o}=t?.data||{};this.storage.setItem("token",n||""),await this.beforeSetLoginUser({accessToken:n,refreshToken:r,accessTokenExpiresIn:o})}return t}async checkWechat({onSuccess:e,onError:t}){const n=new URL(window.location.href),r=n.searchParams.get("code"),o=n.searchParams.get("state");if(r&&o){const a=await this.loginByWechat({code:r});a.code===200?e?.(a.data):t?.(a)}}async beforeSetLoginUser(e){const{accessToken:t,refreshToken:n,check401:r,accessTokenExpiresIn:o}=e;if(t&&n){const a=await this.getMe(t,r);if(a.code===200){const c=a.data;c?this.cacheStore.setLoginUser({user:c,id:c.id,accessToken:t,refreshToken:n,accessTokenExpiresIn:o,createdAt:Date.now()}):console.error("登录失败")}return a}return{code:400,message:"登录失败"}}async refreshLoginUser(e){const t=await this.queryRefreshToken(e);if(t.code===200){const{accessToken:n,refreshToken:r,accessTokenExpiresIn:o}=t?.data||{};this.storage.setItem("token",n||""),await this.beforeSetLoginUser({accessToken:n,refreshToken:r,accessTokenExpiresIn:o,check401:!1})}return t}async queryRefreshToken(e){const t=e?.refreshToken;let n=e?.accessToken;const r=t??await this.cacheStore.getRefreshToken();let o={};return n&&(o.accessToken=n),r&&(o.refreshToken=r),r?this.post({key:"refreshToken",data:o},{afterResponse:async(a,c)=>a}):(await this.cacheStore.clearCurrentUser(),{code:401,message:"请先登录",data:{}})}async afterCheck401ToRefreshToken(e,t,n){const r=this;if(e?.code===401){const o=await r.cacheStore.getRefreshToken();if(o){const a=await r.queryRefreshToken({refreshToken:o});if(a.code===200){const{accessToken:c,refreshToken:i,accessTokenExpiresIn:u}=a?.data||{};if(r.storage.setItem("token",c||""),await r.beforeSetLoginUser({accessToken:c,refreshToken:i,accessTokenExpiresIn:u,check401:!1}),n&&t&&t.req&&t.req.url&&t.fetch){await new Promise(d=>setTimeout(d,1500));const l=t.req?.url,h=t.req?.body,g=t.req?.headers;return await t.fetch(l,{method:"POST",body:h,headers:{...g,Authorization:`Bearer ${c}`}})}}else r.storage.removeItem("token"),await r.cacheStore.clearCurrentUser();return a}}return e}async run401Action(e,t,n){const r=this,o=n?.refetch??!1;if(e?.code===401){if(r.query.stop===!0)return{code:500,success:!1,message:"refresh token loading..."};r.query.stop=!0;const a=await r.afterCheck401ToRefreshToken(e,t,o);return r.query.stop=!1,n?.afterCheck?.(a),a.code===401&&n?.afterAlso401?.(a),a}else return e}async getMe(e,t=!0){const n=e||this.storage.getItem("token"),r=this;return r.post({key:"me"},{beforeRequest:async o=>(o.headers&&(o.headers.Authorization=`Bearer ${n}`),n?o:!1),afterResponse:async(o,a)=>o?.code===401&&t&&!e?await r.afterCheck401ToRefreshToken(o,a):o})}async checkLocalUser(){const e=await this.cacheStore.getCurrentUser();return e||null}async checkLocalToken(){return!!this.storage.getItem("token")}async checkTokenValid(){const e=this.storage.getItem("token");if(!e)return null;if(await this.cacheStore.getIsExpired()){console.log("token过期,正在刷新token",this.cacheStore.cacheData);const n=await this.refreshLoginUser();return n.code===200&&n.data?.accessToken||null}return e}async getToken(){return this.storage.getItem("token")||""}async beforeRequest(e={}){const t=this.storage.getItem("token");return t&&(e.headers={...e.headers,Authorization:`Bearer ${t}`}),e}async postSwitchUser(e){return this.post({key:"switchCheck",data:{username:e}})}async switchUser(e){const n=(await this.cacheStore.getCurrentUserList()).find(o=>o.user.username===e);if(n)return this.storage.setItem("token",n.accessToken||""),await this.beforeSetLoginUser({accessToken:n.accessToken,refreshToken:n.refreshToken,accessTokenExpiresIn:n.accessTokenExpiresIn}),{code:200,data:{accessToken:n.accessToken,refreshToken:n.refreshToken,accessTokenExpiresIn:n.accessTokenExpiresIn},success:!0,message:"切换用户成功"};const r=await this.postSwitchUser(e);if(r.code===200){const{accessToken:o,refreshToken:a,accessTokenExpiresIn:c}=r?.data||{};this.storage.setItem("token",o||""),await this.beforeSetLoginUser({accessToken:o,refreshToken:a,accessTokenExpiresIn:c})}return r}async logout(){this.storage.removeItem("token");const t=(await this.cacheStore.getCurrentUserList()).map(n=>n?.accessToken).filter(Boolean);return this.cacheStore.delValue(),this.post({key:"logout",data:{tokens:t}})}async hasUser(e){const t=this;return this.post({path:"org",key:"hasUser",data:{username:e}},{afterResponse:async(n,r)=>n?.code===401?await t.afterCheck401ToRefreshToken(n,r,!0):n})}async checkLoginStatus(e){const t=await this.post({path:"user",key:"checkLoginStatus",loginToken:e});if(t.code===200){const{accessTokenExpiresIn:n,accessToken:r,refreshToken:o}=t.data;return this.storage.setItem("token",r||""),await this.beforeSetLoginUser({accessToken:r,refreshToken:o,accessTokenExpiresIn:n}),t}return!1}loginWithWeb(e,{MD5:t,jsonwebtoken:n}){const r=Math.random().toString(36).substring(2,15),o=Date.now(),a="xiao"+r;let c="";t&&(c=t(`${a}${o}`).toString());let i="";return n?i=n.sign({randomId:r,timestamp:o,sign:c},a,{expiresIn:600}):i=a,{url:`${e}/api/router?path=user&key=webLogin&p&loginToken=${i}&sign=${c}&randomId=${r}`,token:i,tokenSecret:a}}async pollLoginStatus(e){const t=e.token,n=new ur;n.load(async()=>{const o=await this.checkLoginStatus(t);return o.code===500&&n.cancel("check-login-status"),o},{key:"check-login-status",isReRun:!0,checkSuccess:o=>o?.code===200});const r=await n.hasLoaded("check-login-status",{timeout:180*1e3});if(r.code===200&&r.data?.code===200)try{return console.log("网页登录成功"),!0}catch(o){return console.log("登录失败",o),!1}return console.log("登录失败",r),!1}};function P(s){return new Promise((e,t)=>{s.oncomplete=s.onsuccess=()=>e(s.result),s.onabort=s.onerror=()=>t(s.error)})}function fn(s,e){let t;const n=()=>{if(t)return t;const r=indexedDB.open(s);return r.onupgradeneeded=()=>r.result.createObjectStore(e),t=P(r),t.then(o=>{o.onclose=()=>t=void 0},()=>{}),t};return(r,o)=>n().then(a=>o(a.transaction(e,r).objectStore(e)))}var Ae;function U(){return Ae||(Ae=fn("keyval-store","keyval")),Ae}function dr(s,e=U()){return e("readonly",t=>P(t.get(s)))}function fr(s,e,t=U()){return t("readwrite",n=>(n.put(e,s),P(n.transaction)))}function gr(s,e=U()){return e("readwrite",t=>(s.forEach(n=>t.put(n[1],n[0])),P(t.transaction)))}function mr(s,e=U()){return e("readonly",t=>Promise.all(s.map(n=>P(t.get(n)))))}function pr(s,e,t=U()){return t("readwrite",n=>new Promise((r,o)=>{n.get(s).onsuccess=function(){try{n.put(e(this.result),s),r(P(n.transaction))}catch(a){o(a)}}}))}function yr(s,e=U()){return e("readwrite",t=>(t.delete(s),P(t.transaction)))}function wr(s,e=U()){return e("readwrite",t=>(s.forEach(n=>t.delete(n)),P(t.transaction)))}function vr(s=U()){return s("readwrite",e=>(e.clear(),P(e.transaction)))}function it(s,e){return s.openCursor().onsuccess=function(){this.result&&(e(this.result),this.result.continue())},P(s.transaction)}function kr(s=U()){return s("readonly",e=>{if(e.getAllKeys)return P(e.getAllKeys());const t=[];return it(e,n=>t.push(n.key)).then(()=>t)})}function br(s=U()){return s("readonly",e=>{if(e.getAll)return P(e.getAll());const t=[];return it(e,n=>t.push(n.value)).then(()=>t)})}function Tr(s=U()){return s("readonly",e=>{if(e.getAll&&e.getAllKeys)return Promise.all([P(e.getAllKeys()),P(e.getAll())]).then(([n,r])=>n.map((o,a)=>[o,r[a]]));const t=[];return s("readonly",n=>it(n,r=>t.push([r.key,r.value])).then(()=>t))})}let Cr=class{store;constructor(e){this.store=fn(e?.dbName||"default-db",e?.storeName||"cache-store")}async get(e){return dr(e,this.store)}async set(e,t){return fr(e,t,this.store)}async del(e){return yr(e,this.store)}async clear(){return vr(this.store)}async keys(){return kr(this.store)}async values(){return br(this.store)}async entries(){return Tr(this.store)}async update(e,t){return pr(e,t,this.store)}async setMany(e){return gr(e,this.store)}async getMany(e){return mr(e,this.store)}async delMany(e){return wr(e,this.store)}};class _r extends Cr{constructor(e){super(e)}async getData(e){return(await this.get(e)).data}async setData(e,t){return this.set(e,t)}async getCheckData(e){const t=await this.get(e);return t.expireTime&&t.expireTime<Date.now()?(await super.del(e),null):t.data}async setCheckData(e,t,n){const o=Date.now()+(n?.expireTime||1e3*60*60*24*10),a={data:t,updatedAt:n?.updatedAt||Date.now(),expireTime:o};return await this.set(e,a),t}async checkNew(e,t){const n=await this.get(e);if(!n)return!0;if(!t?.updatedAt)return!1;const r=new Date(t.updatedAt).getTime();return isNaN(r)?!1:r>n.updatedAt}async delCheckData(e){return this.del(e)}}let Er=class extends _r{key;constructor(e){const{key:t,...n}=e||{};super(n),this.key=t||"my-cache"}async getData(e=this.key){return super.getCheckData(e)}async setData(e,t){super.setCheckData(this.key,e,t)}async del(){await super.del(this.key)}},xr=class extends hr{constructor(e){super({...e,cache:new Er({key:"login"})})}};const Ar=new ot({}),Lr=new xr({query:Ar,isBrowser:!0,onLoad:()=>{console.log("加载完成")}}),q=Lr;class Sr extends HTMLElement{constructor(){super(),this.timer=null,this.options={type:"success",message:"",duration:2e3,closable:!0}}connectedCallback(){this.render()}setOptions(e){this.options={...this.options,...e},this.render()}render(){const{type:e,message:t,closable:n}=this.options,o=D`
4
+ <style>
5
+ :host {
6
+ display: block;
7
+ margin-bottom: 12px;
8
+ animation: slideIn 0.3s ease-out;
9
+ }
10
+
11
+ .message-container {
12
+ display: flex;
13
+ align-items: center;
14
+ gap: 8px;
15
+ padding: 12px 16px;
16
+ border-radius: 6px;
17
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
18
+ background: white;
19
+ position: relative;
20
+ min-width: 300px;
21
+ max-width: 500px;
22
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
23
+ font-size: 14px;
24
+ line-height: 1.4;
25
+ }
26
+
27
+ .message-container.success {
28
+ border-left: 4px solid #52c41a;
29
+ }
30
+
31
+ .message-container.error {
32
+ border-left: 4px solid #ff4d4f;
33
+ }
34
+
35
+ .message-container.loading {
36
+ border-left: 4px solid #1890ff;
37
+ }
38
+
39
+ .message-icon {
40
+ display: flex;
41
+ align-items: center;
42
+ justify-content: center;
43
+ width: 16px;
44
+ height: 16px;
45
+ flex-shrink: 0;
46
+ }
47
+
48
+ .success .message-icon {
49
+ color: #52c41a;
50
+ font-weight: bold;
51
+ }
52
+
53
+ .error .message-icon {
54
+ color: #ff4d4f;
55
+ font-weight: bold;
56
+ }
57
+
58
+ .loading .message-icon {
59
+ color: #1890ff;
60
+ }
61
+
62
+ .loading-spinner {
63
+ width: 14px;
64
+ height: 14px;
65
+ border: 2px solid #f3f3f3;
66
+ border-top: 2px solid #1890ff;
67
+ border-radius: 50%;
68
+ animation: spin 1s linear infinite;
69
+ }
70
+
71
+ .message-content {
72
+ flex: 1;
73
+ color: #333;
74
+ }
75
+
76
+ .message-close {
77
+ display: flex;
78
+ align-items: center;
79
+ justify-content: center;
80
+ width: 16px;
81
+ height: 16px;
82
+ cursor: pointer;
83
+ color: #999;
84
+ background: none;
85
+ border: none;
86
+ font-size: 12px;
87
+ border-radius: 50%;
88
+ transition: all 0.2s;
89
+ }
90
+
91
+ .message-close:hover {
92
+ color: #666;
93
+ background: #f0f0f0;
94
+ }
95
+
96
+ @keyframes slideIn {
97
+ from {
98
+ transform: translateX(100%);
99
+ opacity: 0;
100
+ }
101
+ to {
102
+ transform: translateX(0);
103
+ opacity: 1;
104
+ }
105
+ }
106
+
107
+ @keyframes slideOut {
108
+ from {
109
+ transform: translateX(0);
110
+ opacity: 1;
111
+ }
112
+ to {
113
+ transform: translateX(100%);
114
+ opacity: 0;
115
+ }
116
+ }
117
+
118
+ @keyframes spin {
119
+ 0% { transform: rotate(0deg); }
120
+ 100% { transform: rotate(360deg); }
121
+ }
122
+
123
+ .removing {
124
+ animation: slideOut 0.3s ease-out forwards;
125
+ }
126
+ </style>
127
+
128
+ <div class="message-container ${e}">
129
+ <div class="message-icon">
130
+ ${(()=>{switch(e){case"success":return"✓";case"error":return"✕";case"loading":return D`<div class="loading-spinner"></div>`;default:return""}})()}
131
+ </div>
132
+ <div class="message-content">${t}</div>
133
+ ${n?D`
134
+ <button class="message-close" @click=${()=>this.remove()}>&times;</button>
135
+ `:""}
136
+ </div>
137
+ `;dn(o,this),e!=="loading"&&this.options.duration&&this.options.duration>0&&this.setTimer()}setTimer(){this.timer&&clearTimeout(this.timer),this.timer=window.setTimeout(()=>{this.remove()},this.options.duration)}remove(){this.timer&&(clearTimeout(this.timer),this.timer=null),this.classList.add("removing"),setTimeout(()=>{this.parentNode&&this.parentNode.removeChild(this)},300)}disconnectedCallback(){this.timer&&(clearTimeout(this.timer),this.timer=null)}}customElements.define("kv-message",Sr);class Z{constructor(){this.container=null,this.defaultPosition="center"}static getInstance(){return Z.instance||(Z.instance=new Z),Z.instance}setDefaultPosition(e){this.defaultPosition=e}getContainer(e){const t=e||this.defaultPosition;return this.container||(this.container=document.getElementById("messages"),this.container||(this.container=document.createElement("div"),this.container.id="messages",t==="center"?this.container.style.cssText=`
138
+ position: fixed;
139
+ top: 20px;
140
+ left: 50%;
141
+ transform: translateX(-50%);
142
+ z-index: 9999;
143
+ display: flex;
144
+ gap: 8px;
145
+ flex-direction: column;
146
+ align-items: center;
147
+ pointer-events: none;
148
+ `:this.container.style.cssText=`
149
+ position: fixed;
150
+ top: 20px;
151
+ right: 20px;
152
+ z-index: 9999;
153
+ display: flex;
154
+ gap: 8px;
155
+ flex-direction: column;
156
+ align-items: flex-end;
157
+ pointer-events: none;
158
+ `,document.body.appendChild(this.container))),this.container}show(e){const t=this.getContainer(e.position),n=document.createElement("kv-message");return n.setOptions(e),n.style.cssText="pointer-events: auto;",t.appendChild(n),n}success(e,t){return this.show({type:"success",message:e,duration:t?.duration||2e3,position:t?.position,closable:t?.closable})}error(e,t){return this.show({type:"error",message:e,duration:t?.duration||3e3,position:t?.position,closable:t?.closable})}loading(e,t){return this.show({type:"loading",message:e,duration:0,position:t?.position,closable:t?.closable})}remove(e){e.remove()}clear(){this.getContainer().querySelectorAll("kv-message").forEach(n=>{n.remove()})}}const gn=()=>Z.getInstance();window.createMessage=gn;let Rr=class{constructor(){this.events=new Map}on(e,t){this.events.has(e)||this.events.set(e,new Set),this.events.get(e).add(t)}off(e,t){this.events.has(e)&&(t?(this.events.get(e).delete(t),this.events.get(e).size===0&&this.events.delete(e)):this.events.delete(e))}emit(e){const{type:t}=e;if(!this.events.has(t))return;this.events.get(t).forEach(r=>{try{r(e)}catch(o){console.error(`Error in event handler for type "${t}":`,o)}})}emitSimple(e,t){this.emit({type:e,data:t})}clear(){this.events.clear()}listenerCount(e){return this.events.get(e)?.size||0}eventNames(){return Array.from(this.events.keys())}hasListeners(e){return this.events.has(e)&&this.events.get(e).size>0}once(e,t){const n=r=>{t(r),this.off(e,n)};this.on(e,n)}};const mn=new Rr,Ir=s=>mn.emit(s),ge={loginUsers:[],user:void 0,id:void 0,accessToken:void 0,refreshToken:void 0,accessTokenExpiresIn:void 0,createdAt:void 0};class Dr{constructor(e){if(!e.cache)throw new Error("cache is required");this.cache=e.cache,this.cacheData={...ge},this.name=e.name}async setValue(e){return await this.cache.set(this.name,e),this.cacheData=e,e}async delValue(){await this.cache.del(),this.cacheData={...ge}}getValue(){return this.cache.get(this.name)}async init(){const e={...this.cacheData};return new Promise(async t=>{if(this.cache.init)try{const n=await this.cache.init();this.cacheData=n||e}catch(n){console.log("cacheInit error",n)}else this.cacheData=await this.getValue()||e;t(this.cacheData)})}async setLoginUser(e){this.cacheData.loginUsers.find(n=>n.id===e.id)&&(this.cacheData.loginUsers=this.cacheData?.loginUsers?.filter(n=>n?.id&&n.id!==e.id)),this.cacheData.loginUsers.push(e),this.cacheData.user=e.user,this.cacheData.id=e.id,this.cacheData.accessToken=e.accessToken,this.cacheData.refreshToken=e.refreshToken,this.cacheData.accessTokenExpiresIn=e.accessTokenExpiresIn,this.cacheData.createdAt=e.createdAt,await this.setValue(this.cacheData)}getCurrentUser(){const e=this.cacheData;return Promise.resolve(e.user)}getCurrentUserList(){return Promise.resolve(this.cacheData.loginUsers.filter(e=>e?.id))}getRefreshToken(){const e=this.cacheData;return Promise.resolve(e.refreshToken||"")}getAccessToken(){const e=this.cacheData;return Promise.resolve(e.accessToken||"")}getIsExpired(){const e=this.cacheData;if(!e.accessToken)return Promise.resolve(!0);if(!e.createdAt||!e.accessTokenExpiresIn)return Promise.resolve(!1);const t=Date.now(),n=e.createdAt+e.accessTokenExpiresIn*1e3;return Promise.resolve(t>=n)}async clearCurrentUser(){const e=await this.getCurrentUser();this.cacheData.loginUsers.find(o=>o.id===e.id)&&(this.cacheData.loginUsers=this.cacheData?.loginUsers?.filter(o=>o?.id&&o.id!==e.id));const n=this.cacheData.loginUsers.length>0,r=this.cacheData.loginUsers[this.cacheData.loginUsers.length-1];n&&r?(this.cacheData.user=r.user,this.cacheData.id=r.id,this.cacheData.accessToken=r.accessToken,this.cacheData.refreshToken=r.refreshToken,this.cacheData.accessTokenExpiresIn=r.accessTokenExpiresIn,this.cacheData.createdAt=r.createdAt):this.cacheData={...ge},await this.setValue(this.cacheData)}async clearAll(){this.cacheData={...ge},await this.setValue(this.cacheData)}}function Pr(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var Le={exports:{}},Et;function Mr(){return Et||(Et=1,(function(s){var e=Object.prototype.hasOwnProperty,t="~";function n(){}Object.create&&(n.prototype=Object.create(null),new n().__proto__||(t=!1));function r(i,u,l){this.fn=i,this.context=u,this.once=l||!1}function o(i,u,l,h,g){if(typeof l!="function")throw new TypeError("The listener must be a function");var m=new r(l,h||i,g),d=t?t+u:u;return i._events[d]?i._events[d].fn?i._events[d]=[i._events[d],m]:i._events[d].push(m):(i._events[d]=m,i._eventsCount++),i}function a(i,u){--i._eventsCount===0?i._events=new n:delete i._events[u]}function c(){this._events=new n,this._eventsCount=0}c.prototype.eventNames=function(){var u=[],l,h;if(this._eventsCount===0)return u;for(h in l=this._events)e.call(l,h)&&u.push(t?h.slice(1):h);return Object.getOwnPropertySymbols?u.concat(Object.getOwnPropertySymbols(l)):u},c.prototype.listeners=function(u){var l=t?t+u:u,h=this._events[l];if(!h)return[];if(h.fn)return[h.fn];for(var g=0,m=h.length,d=new Array(m);g<m;g++)d[g]=h[g].fn;return d},c.prototype.listenerCount=function(u){var l=t?t+u:u,h=this._events[l];return h?h.fn?1:h.length:0},c.prototype.emit=function(u,l,h,g,m,d){var w=t?t+u:u;if(!this._events[w])return!1;var f=this._events[w],p=arguments.length,v,y;if(f.fn){switch(f.once&&this.removeListener(u,f.fn,void 0,!0),p){case 1:return f.fn.call(f.context),!0;case 2:return f.fn.call(f.context,l),!0;case 3:return f.fn.call(f.context,l,h),!0;case 4:return f.fn.call(f.context,l,h,g),!0;case 5:return f.fn.call(f.context,l,h,g,m),!0;case 6:return f.fn.call(f.context,l,h,g,m,d),!0}for(y=1,v=new Array(p-1);y<p;y++)v[y-1]=arguments[y];f.fn.apply(f.context,v)}else{var k=f.length,C;for(y=0;y<k;y++)switch(f[y].once&&this.removeListener(u,f[y].fn,void 0,!0),p){case 1:f[y].fn.call(f[y].context);break;case 2:f[y].fn.call(f[y].context,l);break;case 3:f[y].fn.call(f[y].context,l,h);break;case 4:f[y].fn.call(f[y].context,l,h,g);break;default:if(!v)for(C=1,v=new Array(p-1);C<p;C++)v[C-1]=arguments[C];f[y].fn.apply(f[y].context,v)}}return!0},c.prototype.on=function(u,l,h){return o(this,u,l,h,!1)},c.prototype.once=function(u,l,h){return o(this,u,l,h,!0)},c.prototype.removeListener=function(u,l,h,g){var m=t?t+u:u;if(!this._events[m])return this;if(!l)return a(this,m),this;var d=this._events[m];if(d.fn)d.fn===l&&(!g||d.once)&&(!h||d.context===h)&&a(this,m);else{for(var w=0,f=[],p=d.length;w<p;w++)(d[w].fn!==l||g&&!d[w].once||h&&d[w].context!==h)&&f.push(d[w]);f.length?this._events[m]=f.length===1?f[0]:f:a(this,m)}return this},c.prototype.removeAllListeners=function(u){var l;return u?(l=t?t+u:u,this._events[l]&&a(this,l)):(this._events=new n,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=t,c.EventEmitter=c,s.exports=c})(Le)),Le.exports}var qr=Mr(),Br=Pr(qr);const xt=s=>{const e=s.timeout||3e5,t=s.interval||1e3,n=s?.checkSuccess||(()=>!0),r=s.signal;return new Promise(async(o,a)=>{let c,i=setTimeout(()=>{clearTimeout(c),o({code:500,message:"timeout"})},e);const u=s.fn||(()=>!0),l=async()=>{if(r?.aborted)return clearInterval(c),clearTimeout(i),o({code:499,message:"operation cancelled"});const h=await u();n(h)?(clearInterval(c),clearTimeout(i),o({code:200,data:h})):setTimeout(()=>{l()},t)};r&&r.addEventListener("abort",()=>{clearInterval(c),clearTimeout(i),o({code:499,message:"operation cancelled"})}),l()})};let Ur=class{modules=new Map;event;loading;static reRunFn=xt;timeout=300*1e3;constructor(){this.event=new Br,this.loading=!1}listenKey(e,t){const n=t?.timeout??this.timeout;return new Promise(r=>{const o=setTimeout(()=>{this.event.removeListener(e,a),r({code:500,message:"timeout"})},n),a=c=>{if(clearTimeout(o),c)return r({code:500,message:c});const i=this.modules.get(e);i?.loadSuccessClear&&this.remove(e),r({code:200,data:i?.modules})};this.event.once(e,a)})}async hasLoaded(e,t){if(!e)return{code:404,message:"key is required"};if(!this.modules.has(e)){const o=t?.isExist??!0,a=t?.timeout??this.timeout;return o?await this.listenKey(e,{timeout:a}):{code:404}}const r=this.modules.get(e);return r?.status==="loaded"?{code:200,data:r.modules}:r?.status==="loading"?await this.listenKey(e,{timeout:t?.timeout??this.timeout}):r?.status==="error"?{code:500,message:"load error"}:r?.status==="cancel"?{code:499,message:"operation cancelled"}:{code:404}}async loadFn(e,t){const n=t.key;if(!n)return{code:404,message:"key is required"};const r={key:t.key,status:"loading",loading:!0,loadSuccessClear:t.loadSuccessClear??!0};let o="";try{const a=t.isReRun??!1;let c;if(!a)this.modules.set(n,r),c=await e();else{r.controller=new AbortController;const i=r.controller.signal;this.modules.set(n,r);const u=await xt({timeout:t.timeout,interval:t.interval,checkSuccess:t.checkSuccess,fn:e,signal:i});if(r.controller=null,u.code===499)return r.status="cancel",{code:499,message:"operation cancelled"};if(u.code!==200)throw new Error(u.message);c=u.data}return r.modules=c,r.status="loaded",{code:200,data:c}}catch(a){return o=a.message,r.status="error",{code:500,message:a}}finally{r.loading=!1,this.modules.set(t.key,r),o?this.event.emit(t.key,o):this.event.emit(t.key)}}async load(e,t){this.loading=!0;const n=t.key;if(!n)return{code:404,message:"key is required"};if(t?.force&&this.remove(n),this.modules.has(n))return await this.hasLoaded(n);if(typeof e=="function")return this.loadFn(e,t);console.error("loadContent is not a function and not has loaded")}remove(e){this.modules.has(e)&&(this.checkRemoveController(e),this.modules.delete(e))}emitLoaded(e){this.checkRemoveController(e),this.event.emit(e)}setModule(e,t,n){const r={key:e,status:"loaded",loading:!1,modules:t||{},...n};return this.modules.set(e,r),this.emitLoaded(e),r}cancel(e){this.checkRemoveController(e)}checkRemoveController(e){const t=this.modules.get(e);t?.controller&&(t.controller?.abort?.(),delete t.controller,this.modules.set(e,t))}};function pn(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var Se={exports:{}},At;function Nr(){return At||(At=1,(function(s){var e=Object.prototype.hasOwnProperty,t="~";function n(){}Object.create&&(n.prototype=Object.create(null),new n().__proto__||(t=!1));function r(i,u,l){this.fn=i,this.context=u,this.once=l||!1}function o(i,u,l,h,g){if(typeof l!="function")throw new TypeError("The listener must be a function");var m=new r(l,h||i,g),d=t?t+u:u;return i._events[d]?i._events[d].fn?i._events[d]=[i._events[d],m]:i._events[d].push(m):(i._events[d]=m,i._eventsCount++),i}function a(i,u){--i._eventsCount===0?i._events=new n:delete i._events[u]}function c(){this._events=new n,this._eventsCount=0}c.prototype.eventNames=function(){var u=[],l,h;if(this._eventsCount===0)return u;for(h in l=this._events)e.call(l,h)&&u.push(t?h.slice(1):h);return Object.getOwnPropertySymbols?u.concat(Object.getOwnPropertySymbols(l)):u},c.prototype.listeners=function(u){var l=t?t+u:u,h=this._events[l];if(!h)return[];if(h.fn)return[h.fn];for(var g=0,m=h.length,d=new Array(m);g<m;g++)d[g]=h[g].fn;return d},c.prototype.listenerCount=function(u){var l=t?t+u:u,h=this._events[l];return h?h.fn?1:h.length:0},c.prototype.emit=function(u,l,h,g,m,d){var w=t?t+u:u;if(!this._events[w])return!1;var f=this._events[w],p=arguments.length,v,y;if(f.fn){switch(f.once&&this.removeListener(u,f.fn,void 0,!0),p){case 1:return f.fn.call(f.context),!0;case 2:return f.fn.call(f.context,l),!0;case 3:return f.fn.call(f.context,l,h),!0;case 4:return f.fn.call(f.context,l,h,g),!0;case 5:return f.fn.call(f.context,l,h,g,m),!0;case 6:return f.fn.call(f.context,l,h,g,m,d),!0}for(y=1,v=new Array(p-1);y<p;y++)v[y-1]=arguments[y];f.fn.apply(f.context,v)}else{var k=f.length,C;for(y=0;y<k;y++)switch(f[y].once&&this.removeListener(u,f[y].fn,void 0,!0),p){case 1:f[y].fn.call(f[y].context);break;case 2:f[y].fn.call(f[y].context,l);break;case 3:f[y].fn.call(f[y].context,l,h);break;case 4:f[y].fn.call(f[y].context,l,h,g);break;default:if(!v)for(C=1,v=new Array(p-1);C<p;C++)v[C-1]=arguments[C];f[y].fn.apply(f[y].context,v)}}return!0},c.prototype.on=function(u,l,h){return o(this,u,l,h,!1)},c.prototype.once=function(u,l,h){return o(this,u,l,h,!0)},c.prototype.removeListener=function(u,l,h,g){var m=t?t+u:u;if(!this._events[m])return this;if(!l)return a(this,m),this;var d=this._events[m];if(d.fn)d.fn===l&&(!g||d.once)&&(!h||d.context===h)&&a(this,m);else{for(var w=0,f=[],p=d.length;w<p;w++)(d[w].fn!==l||g&&!d[w].once||h&&d[w].context!==h)&&f.push(d[w]);f.length?this._events[m]=f.length===1?f[0]:f:a(this,m)}return this},c.prototype.removeAllListeners=function(u){var l;return u?(l=t?t+u:u,this._events[l]&&a(this,l)):(this._events=new n,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=t,c.EventEmitter=c,s.exports=c})(Se)),Se.exports}var $r=Nr();const Fr=pn($r);class zr extends Kn{constructor(e){if(super({query:e?.query||new ot}),this.load=!1,this.status="init",this.emitter=new Fr,this.cacheStore=new Dr({name:"login",cache:e?.cache}),this.isBrowser=e?.isBrowser??!0,this.init(),this.onLoad=e?.onLoad,this.storage=e?.storage||globalThis?.localStorage,!this.storage)throw new Error("storage is required");this.cacheStore.init().then(()=>{this.onLoad?.(),this.load=!0,this.emitter.emit("load")})}setQuery(e){this.query=e}async init(){return this.load?this.cacheStore.cacheData:new Promise(async e=>{const t=setTimeout(()=>{e(this.cacheStore.cacheData)},2e4),n=()=>{clearTimeout(t),e(this.cacheStore.cacheData)};this.emitter.once("load",n)})}async post(e,t){try{return this.query.post({path:"user",...e},t)}catch(n){return console.log("error",n),{code:400}}}async login(e){const t=await this.post({key:"login",...e});if(t.code===200){const{accessToken:n,refreshToken:r,accessTokenExpiresIn:o}=t?.data||{};this.storage.setItem("token",n||""),await this.beforeSetLoginUser({accessToken:n,refreshToken:r,accessTokenExpiresIn:o})}return t}async loginByCode(e){const t=await this.post({path:"sms",key:"login",data:e});if(t.code===200){const{accessToken:n,refreshToken:r,accessTokenExpiresIn:o}=t?.data||{};this.storage.setItem("token",n||""),await this.beforeSetLoginUser({accessToken:n,refreshToken:r,accessTokenExpiresIn:o})}return t}async setLoginToken(e){const{accessToken:t,refreshToken:n,accessTokenExpiresIn:r}=e;this.storage.setItem("token",t||""),await this.beforeSetLoginUser({accessToken:t,refreshToken:n,accessTokenExpiresIn:r})}async loginByWechat(e){const t=await this.post({path:"wx",key:"open-login",code:e.code});if(t.code===200){const{accessToken:n,refreshToken:r,accessTokenExpiresIn:o}=t?.data||{};this.storage.setItem("token",n||""),await this.beforeSetLoginUser({accessToken:n,refreshToken:r,accessTokenExpiresIn:o})}return t}async loginByCnb(e){const t=await this.post({path:"user",key:"cnb-login",payload:{data:e}});if(t.code===200){const{accessToken:n,refreshToken:r,accessTokenExpiresIn:o}=t?.data||{};this.storage.setItem("token",n||""),await this.beforeSetLoginUser({accessToken:n,refreshToken:r,accessTokenExpiresIn:o})}return t}async checkWechat({onSuccess:e,onError:t}){const n=new URL(window.location.href),r=n.searchParams.get("code"),o=n.searchParams.get("state");if(r&&o){const a=await this.loginByWechat({code:r});a.code===200?e?.(a.data):t?.(a)}}async beforeSetLoginUser(e){const{accessToken:t,refreshToken:n,check401:r,accessTokenExpiresIn:o}=e;if(t&&n){const a=await this.getMe(t,r);if(a.code===200){const c=a.data;c?this.cacheStore.setLoginUser({user:c,id:c.id,accessToken:t,refreshToken:n,accessTokenExpiresIn:o,createdAt:Date.now()}):console.error("登录失败")}return a}return{code:400,message:"登录失败"}}async refreshLoginUser(e){const t=await this.queryRefreshToken(e);if(t.code===200){const{accessToken:n,refreshToken:r,accessTokenExpiresIn:o}=t?.data||{};this.storage.setItem("token",n||""),await this.beforeSetLoginUser({accessToken:n,refreshToken:r,accessTokenExpiresIn:o,check401:!1})}return t}async queryRefreshToken(e){const t=e?.refreshToken;let n=e?.accessToken;const r=t??await this.cacheStore.getRefreshToken();let o={};return n&&(o.accessToken=n),r&&(o.refreshToken=r),r?this.post({key:"refreshToken",data:o},{afterResponse:async(a,c)=>a}):(await this.cacheStore.clearCurrentUser(),{code:401,message:"请先登录",data:{}})}async afterCheck401ToRefreshToken(e,t,n){const r=this;if(e?.code===401){const o=await r.cacheStore.getRefreshToken();if(o){const a=await r.queryRefreshToken({refreshToken:o});if(a.code===200){const{accessToken:c,refreshToken:i,accessTokenExpiresIn:u}=a?.data||{};if(r.storage.setItem("token",c||""),await r.beforeSetLoginUser({accessToken:c,refreshToken:i,accessTokenExpiresIn:u,check401:!1}),n&&t&&t.req&&t.req.url&&t.fetch){await new Promise(d=>setTimeout(d,1500));const l=t.req?.url,h=t.req?.body,g=t.req?.headers;return await t.fetch(l,{method:"POST",body:h,headers:{...g,Authorization:`Bearer ${c}`}})}}else r.storage.removeItem("token"),await r.cacheStore.clearCurrentUser();return a}}return e}async run401Action(e,t,n){const r=this,o=n?.refetch??!1;if(e?.code===401){if(r.query.stop===!0)return{code:500,success:!1,message:"refresh token loading..."};r.query.stop=!0;const a=await r.afterCheck401ToRefreshToken(e,t,o);return r.query.stop=!1,n?.afterCheck?.(a),a.code===401&&n?.afterAlso401?.(a),a}else return e}async getMe(e,t=!0){const n=e||this.storage.getItem("token"),r=this;return r.post({key:"me"},{beforeRequest:async o=>(o.headers&&(o.headers.Authorization=`Bearer ${n}`),n?o:!1),afterResponse:async(o,a)=>o?.code===401&&t&&!e?await r.afterCheck401ToRefreshToken(o,a):o})}async checkLocalUser(){const e=await this.cacheStore.getCurrentUser();return e||null}async checkLocalToken(){return!!this.storage.getItem("token")}async checkTokenValid(){const e=this.storage.getItem("token");if(!e)return null;if(await this.cacheStore.getIsExpired()){console.log("token过期,正在刷新token",this.cacheStore.cacheData);const n=await this.refreshLoginUser();return n.code===200&&n.data?.accessToken||null}return e}async getToken(){return this.storage.getItem("token")||""}async beforeRequest(e={}){const t=this.storage.getItem("token");return t&&(e.headers={...e.headers,Authorization:`Bearer ${t}`}),e}async postSwitchUser(e){return this.post({key:"switchCheck",data:{username:e}})}async switchUser(e){const n=(await this.cacheStore.getCurrentUserList()).find(o=>o.user.username===e);if(n)return this.storage.setItem("token",n.accessToken||""),await this.beforeSetLoginUser({accessToken:n.accessToken,refreshToken:n.refreshToken,accessTokenExpiresIn:n.accessTokenExpiresIn}),{code:200,data:{accessToken:n.accessToken,refreshToken:n.refreshToken,accessTokenExpiresIn:n.accessTokenExpiresIn},success:!0,message:"切换用户成功"};const r=await this.postSwitchUser(e);if(r.code===200){const{accessToken:o,refreshToken:a,accessTokenExpiresIn:c}=r?.data||{};this.storage.setItem("token",o||""),await this.beforeSetLoginUser({accessToken:o,refreshToken:a,accessTokenExpiresIn:c})}return r}async logout(){this.storage.removeItem("token");const t=(await this.cacheStore.getCurrentUserList()).map(n=>n?.accessToken).filter(Boolean);return this.cacheStore.delValue(),this.post({key:"logout",data:{tokens:t}})}async hasUser(e){const t=this;return this.post({path:"org",key:"hasUser",data:{username:e}},{afterResponse:async(n,r)=>n?.code===401?await t.afterCheck401ToRefreshToken(n,r,!0):n})}async checkLoginStatus(e){const t=await this.post({path:"user",key:"checkLoginStatus",loginToken:e});if(t.code===200){const{accessTokenExpiresIn:n,accessToken:r,refreshToken:o}=t.data;return this.storage.setItem("token",r||""),await this.beforeSetLoginUser({accessToken:r,refreshToken:o,accessTokenExpiresIn:n}),t}return!1}loginWithWeb(e,{MD5:t,jsonwebtoken:n}){const r=Math.random().toString(36).substring(2,15),o=Date.now(),a="xiao"+r;let c="";t&&(c=t(`${a}${o}`).toString());let i="";return n?i=n.sign({randomId:r,timestamp:o,sign:c},a,{expiresIn:600}):i=a,{url:`${e}/api/router?path=user&key=webLogin&p&loginToken=${i}&sign=${c}&randomId=${r}`,token:i,tokenSecret:a}}async pollLoginStatus(e){const t=e.token,n=new Ur;n.load(async()=>{const o=await this.checkLoginStatus(t);return o.code===500&&n.cancel("check-login-status"),o},{key:"check-login-status",isReRun:!0,checkSuccess:o=>o?.code===200});const r=await n.hasLoaded("check-login-status",{timeout:180*1e3});if(r.code===200&&r.data?.code===200)try{return console.log("网页登录成功"),!0}catch(o){return console.log("登录失败",o),!1}return console.log("登录失败",r),!1}}function M(s){return new Promise((e,t)=>{s.oncomplete=s.onsuccess=()=>e(s.result),s.onabort=s.onerror=()=>t(s.error)})}function yn(s,e){let t;const n=()=>{if(t)return t;const r=indexedDB.open(s);return r.onupgradeneeded=()=>r.result.createObjectStore(e),t=M(r),t.then(o=>{o.onclose=()=>t=void 0},()=>{}),t};return(r,o)=>n().then(a=>o(a.transaction(e,r).objectStore(e)))}let Re;function N(){return Re||(Re=yn("keyval-store","keyval")),Re}function jr(s,e=N()){return e("readonly",t=>M(t.get(s)))}function Or(s,e,t=N()){return t("readwrite",n=>(n.put(e,s),M(n.transaction)))}function Hr(s,e=N()){return e("readwrite",t=>(s.forEach(n=>t.put(n[1],n[0])),M(t.transaction)))}function Wr(s,e=N()){return e("readonly",t=>Promise.all(s.map(n=>M(t.get(n)))))}function Vr(s,e,t=N()){return t("readwrite",n=>new Promise((r,o)=>{n.get(s).onsuccess=function(){try{n.put(e(this.result),s),r(M(n.transaction))}catch(a){o(a)}}}))}function Kr(s,e=N()){return e("readwrite",t=>(t.delete(s),M(t.transaction)))}function Qr(s,e=N()){return e("readwrite",t=>(s.forEach(n=>t.delete(n)),M(t.transaction)))}function Jr(s=N()){return s("readwrite",e=>(e.clear(),M(e.transaction)))}function at(s,e){return s.openCursor().onsuccess=function(){this.result&&(e(this.result),this.result.continue())},M(s.transaction)}function Gr(s=N()){return s("readonly",e=>{if(e.getAllKeys)return M(e.getAllKeys());const t=[];return at(e,n=>t.push(n.key)).then(()=>t)})}function Yr(s=N()){return s("readonly",e=>{if(e.getAll)return M(e.getAll());const t=[];return at(e,n=>t.push(n.value)).then(()=>t)})}function Xr(s=N()){return s("readonly",e=>{if(e.getAll&&e.getAllKeys)return Promise.all([M(e.getAllKeys()),M(e.getAll())]).then(([n,r])=>n.map((o,a)=>[o,r[a]]));const t=[];return s("readonly",n=>at(n,r=>t.push([r.key,r.value])).then(()=>t))})}class Zr{constructor(e){this.store=yn(e?.dbName||"default-db",e?.storeName||"cache-store")}async get(e){return jr(e,this.store)}async set(e,t){return Or(e,t,this.store)}async del(e){return Kr(e,this.store)}async clear(){return Jr(this.store)}async keys(){return Gr(this.store)}async values(){return Yr(this.store)}async entries(){return Xr(this.store)}async update(e,t){return Vr(e,t,this.store)}async setMany(e){return Hr(e,this.store)}async getMany(e){return Wr(e,this.store)}async delMany(e){return Qr(e,this.store)}}class es extends Zr{constructor(e){super(e)}async getData(e){return(await this.get(e)).data}async setData(e,t){return this.set(e,t)}async getCheckData(e){const t=await this.get(e);return t.expireTime&&t.expireTime<Date.now()?(await super.del(e),null):t.data}async setCheckData(e,t,n){const o=Date.now()+(n?.expireTime||1e3*60*60*24*10),a={data:t,updatedAt:n?.updatedAt||Date.now(),expireTime:o};return await this.set(e,a),t}async checkNew(e,t){const n=await this.get(e);if(!n)return!0;if(!t?.updatedAt)return!1;const r=new Date(t.updatedAt).getTime();return isNaN(r)?!1:r>n.updatedAt}async delCheckData(e){return this.del(e)}}class ts extends es{constructor(e){const{key:t,...n}=e||{};super(n),this.key=t||"my-cache"}async getData(e=this.key){return super.getCheckData(e)}async setData(e,t){super.setCheckData(this.key,e,t)}async del(){await super.del(this.key)}}class ns extends zr{constructor(e){super({...e,cache:new ts({key:"login"})})}}const B=gn(),rs=()=>{const s=window.location.href,t=new URL(s).searchParams.get("redirect");if(t){setTimeout(()=>{const n=decodeURIComponent(t);window.open(n,"_self"),console.log("重定向到:",n)},2e3);return}},ne=()=>{Ir({type:"login-success",data:{}}),setTimeout(()=>{wn()},2e3)},ss=async s=>{const{loginMethod:e,data:t}=s;switch(e){case"password":await is(t);break;case"phone":await as(t);break;case"wechat-mp":await us(t);break;case"wechat":await cs(t);break;case"web":await os();break;default:console.warn("未知的登录方式:",e)}},os=async s=>{const e=new URL("https://kevisual.cn/api/router"),t=new ot({url:"https://kevisual.cn/api/router"}),n=new ns({query:t}),r=n.loginWithWeb(e.origin,{});console.log("打开网页登录:",r),window.open(r.url,"_blank"),await n.pollLoginStatus(r)?ne():B.error("网页登录失败,请重试")},is=async s=>{console.log("使用用户名密码登录:",s);let e=!0;if(await q.checkLocalToken()&&(await q.checkLocalUser())?.username===s?.username&&(await q.getMe()).code===200&&(e=!1,console.log("已登录,跳过登录步骤"),B.success("已登录")),!e){ne();return}localStorage.removeItem("token");const n=await q.login({username:s.username,password:s.password});n.code===200?(console.log("登录成功"),B.success("登录成功"),ne()):B.error(`登录失败: ${n.message}`)},as=async s=>{console.log("使用手机号登录:",s)},cs=async s=>{console.log("使用微信登录:",s)},us=async s=>{console.log("使用微信公众号登录:",s)},wn=()=>{const s=new URL(window.location.href);s.searchParams.delete("code"),s.searchParams.delete("state"),s.searchParams.delete("user-check"),s.searchParams.delete("redirect"),window.history.replaceState({},document.title,s.toString())},ls=async()=>{const s=new URL(window.location.href),e=s.searchParams.get("code");if(s.searchParams.get("state")?.includes?.("-")||!e)return;const n=await q.loginByWechat({code:e});n.code===200?(B.success("登录成功"),ne()):(B.error(n.message||"登录失败"),wn())},hs=async()=>{const s=new URL(window.location.href),e=s.searchParams.get("state"),[t,n]=e?e.split("-"):[null,null];if(console.log("检查微信公众号登录流程:",t,n,e),t==="1")gs();else if(t==="2"){const r=s.searchParams.get("code"),o=await q.post({path:"wx",key:"mplogin",state:n,code:r});o.code===200?B.success("登录成功"):B.error(o.message||"登录失败"),vn()}},ds=async()=>{const s="user-check",e=new URL(location.href),t=e.searchParams.get("redirect"),n=t?decodeURIComponent(t):"",r=e.searchParams.get(s);if(t&&r&&(await q.getMe()).code===200){B.success("登录插件中...");const a=await q.cacheStore.getAccessToken(),c=new URL(n);return c.searchParams.set("token",a+""),setTimeout(()=>{window.open(c.toString(),"_blank")},2e3),{code:200,data:{redirectUrl:n}}}return{code:400,data:{redirectUrl:""}}},fs=()=>{const s=navigator.userAgent.toLowerCase();return/micromessenger/i.test(s)},vn=(s=2e3)=>{if(!fs()){setTimeout(()=>{window.close()},s);return}window.WeixinJSBridge?setTimeout(()=>{window.WeixinJSBridge.call("closeWindow")},s):setTimeout(()=>{window.close()},s)},gs=async()=>{const s="https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect",e=Ln,t=new URL(window.location.href),n=t.searchParams.get("state");let[r,o]=n?n.split("-"):[null,null];const a=new URL(t.pathname,t.origin);o="2-"+o;const c=encodeURIComponent(a.toString());document.body.innerHTML="<p>正在准备跳转到微信公众号授权页面...</p>";const i="snsapi_userinfo";if(!o){alert("Invalid state. Please try again later."),vn();return}const u=s.replace("APPID",e).replace("REDIRECT_URI",c).replace("SCOPE",i).replace("STATE",o);setTimeout(()=>{window.location.href=u},100)};setTimeout(()=>{hs()},100);const ms=async()=>{const s=await q.post({path:"wx",key:"get-qrcode-ticket"});return s.code!==200?(B.error("获取二维码失败"),null):s?.data},ps=s=>{let e=!0;const t=async()=>{const o=await q.post({path:"wx",key:"check-qrcode-login",payload:{ticket:s}});o.code===200?(B.success("登录成功"),clearTimeout(n),ne()):(o.code===401?console.log("等待扫码登录..."):console.log("扫码登录状态:",o),e&&setTimeout(t,2e3))},n=setTimeout(t,2e3);return()=>{console.log("停止检测扫码登录状态"),clearTimeout(n),e=!1}},Lt=async s=>{let e=s?.redirect_uri;const{appid:t}=s||{};e||(e=window.location.href);const n=new URL(e);if(n.searchParams.delete("code"),n.searchParams.delete("state"),e=n.toString(),console.log("redirect_uri",e),!t){console.error("appid is not cant be empty");return}const r=new WxLogin({self_redirect:!1,id:"weixinLogin",appid:t,scope:"snsapi_login",redirect_uri:encodeURIComponent(e),state:Math.ceil(Math.random()*1e3),stylelite:!0,href:"data:text/css;base64,LmltcG93ZXJCb3ggLnFyY29kZSB7d2lkdGg6IDIwMHB4O30NCi5pbXBvd2VyQm94IC50aXRsZSB7ZGlzcGxheTogbm9uZTt9DQouaW1wb3dlckJveCAuaW5mbyB7d2lkdGg6IDIwMHB4O30NCi5zdGF0dXNfaWNvbiB7ZGlzcGxheTogbm9uZX0NCi5pbXBvd2VyQm94IC5zdGF0dXMge3RleHQtYWxpZ246IGNlbnRlcjt9"}),o=document.querySelector("#weixinLogin");if(o){const a=o.querySelector("iframe");a&&(a.style.height="300px")}return r};function ys(s){const e=document.createElement("script");if(e.type="text/javascript",e.src="//res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js",e.id="weixinLogin-js",document.getElementById("weixinLogin-js")){Lt(s);return}const t=document.body.appendChild(e);t.onload=function(){Lt(s)}}var X={},Ie,St;function ws(){return St||(St=1,Ie=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),Ie}var De={},H={},Rt;function J(){if(Rt)return H;Rt=1;let s;const e=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return H.getSymbolSize=function(n){if(!n)throw new Error('"version" cannot be null or undefined');if(n<1||n>40)throw new Error('"version" should be in range from 1 to 40');return n*4+17},H.getSymbolTotalCodewords=function(n){return e[n]},H.getBCHDigit=function(t){let n=0;for(;t!==0;)n++,t>>>=1;return n},H.setToSJISFunction=function(n){if(typeof n!="function")throw new Error('"toSJISFunc" is not a valid function.');s=n},H.isKanjiModeEnabled=function(){return typeof s<"u"},H.toSJIS=function(n){return s(n)},H}var Pe={},It;function ct(){return It||(It=1,(function(s){s.L={bit:1},s.M={bit:0},s.Q={bit:3},s.H={bit:2};function e(t){if(typeof t!="string")throw new Error("Param is not a string");switch(t.toLowerCase()){case"l":case"low":return s.L;case"m":case"medium":return s.M;case"q":case"quartile":return s.Q;case"h":case"high":return s.H;default:throw new Error("Unknown EC Level: "+t)}}s.isValid=function(n){return n&&typeof n.bit<"u"&&n.bit>=0&&n.bit<4},s.from=function(n,r){if(s.isValid(n))return n;try{return e(n)}catch{return r}}})(Pe)),Pe}var Me,Dt;function vs(){if(Dt)return Me;Dt=1;function s(){this.buffer=[],this.length=0}return s.prototype={get:function(e){const t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)===1},put:function(e,t){for(let n=0;n<t;n++)this.putBit((e>>>t-n-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},Me=s,Me}var qe,Pt;function ks(){if(Pt)return qe;Pt=1;function s(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}return s.prototype.set=function(e,t,n,r){const o=e*this.size+t;this.data[o]=n,r&&(this.reservedBit[o]=!0)},s.prototype.get=function(e,t){return this.data[e*this.size+t]},s.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},s.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},qe=s,qe}var Be={},Mt;function bs(){return Mt||(Mt=1,(function(s){const e=J().getSymbolSize;s.getRowColCoords=function(n){if(n===1)return[];const r=Math.floor(n/7)+2,o=e(n),a=o===145?26:Math.ceil((o-13)/(2*r-2))*2,c=[o-7];for(let i=1;i<r-1;i++)c[i]=c[i-1]-a;return c.push(6),c.reverse()},s.getPositions=function(n){const r=[],o=s.getRowColCoords(n),a=o.length;for(let c=0;c<a;c++)for(let i=0;i<a;i++)c===0&&i===0||c===0&&i===a-1||c===a-1&&i===0||r.push([o[c],o[i]]);return r}})(Be)),Be}var Ue={},qt;function Ts(){if(qt)return Ue;qt=1;const s=J().getSymbolSize,e=7;return Ue.getPositions=function(n){const r=s(n);return[[0,0],[r-e,0],[0,r-e]]},Ue}var Ne={},Bt;function Cs(){return Bt||(Bt=1,(function(s){s.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};const e={N1:3,N2:3,N3:40,N4:10};s.isValid=function(r){return r!=null&&r!==""&&!isNaN(r)&&r>=0&&r<=7},s.from=function(r){return s.isValid(r)?parseInt(r,10):void 0},s.getPenaltyN1=function(r){const o=r.size;let a=0,c=0,i=0,u=null,l=null;for(let h=0;h<o;h++){c=i=0,u=l=null;for(let g=0;g<o;g++){let m=r.get(h,g);m===u?c++:(c>=5&&(a+=e.N1+(c-5)),u=m,c=1),m=r.get(g,h),m===l?i++:(i>=5&&(a+=e.N1+(i-5)),l=m,i=1)}c>=5&&(a+=e.N1+(c-5)),i>=5&&(a+=e.N1+(i-5))}return a},s.getPenaltyN2=function(r){const o=r.size;let a=0;for(let c=0;c<o-1;c++)for(let i=0;i<o-1;i++){const u=r.get(c,i)+r.get(c,i+1)+r.get(c+1,i)+r.get(c+1,i+1);(u===4||u===0)&&a++}return a*e.N2},s.getPenaltyN3=function(r){const o=r.size;let a=0,c=0,i=0;for(let u=0;u<o;u++){c=i=0;for(let l=0;l<o;l++)c=c<<1&2047|r.get(u,l),l>=10&&(c===1488||c===93)&&a++,i=i<<1&2047|r.get(l,u),l>=10&&(i===1488||i===93)&&a++}return a*e.N3},s.getPenaltyN4=function(r){let o=0;const a=r.data.length;for(let i=0;i<a;i++)o+=r.data[i];return Math.abs(Math.ceil(o*100/a/5)-10)*e.N4};function t(n,r,o){switch(n){case s.Patterns.PATTERN000:return(r+o)%2===0;case s.Patterns.PATTERN001:return r%2===0;case s.Patterns.PATTERN010:return o%3===0;case s.Patterns.PATTERN011:return(r+o)%3===0;case s.Patterns.PATTERN100:return(Math.floor(r/2)+Math.floor(o/3))%2===0;case s.Patterns.PATTERN101:return r*o%2+r*o%3===0;case s.Patterns.PATTERN110:return(r*o%2+r*o%3)%2===0;case s.Patterns.PATTERN111:return(r*o%3+(r+o)%2)%2===0;default:throw new Error("bad maskPattern:"+n)}}s.applyMask=function(r,o){const a=o.size;for(let c=0;c<a;c++)for(let i=0;i<a;i++)o.isReserved(i,c)||o.xor(i,c,t(r,i,c))},s.getBestMask=function(r,o){const a=Object.keys(s.Patterns).length;let c=0,i=1/0;for(let u=0;u<a;u++){o(u),s.applyMask(u,r);const l=s.getPenaltyN1(r)+s.getPenaltyN2(r)+s.getPenaltyN3(r)+s.getPenaltyN4(r);s.applyMask(u,r),l<i&&(i=l,c=u)}return c}})(Ne)),Ne}var me={},Ut;function kn(){if(Ut)return me;Ut=1;const s=ct(),e=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],t=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];return me.getBlocksCount=function(r,o){switch(o){case s.L:return e[(r-1)*4+0];case s.M:return e[(r-1)*4+1];case s.Q:return e[(r-1)*4+2];case s.H:return e[(r-1)*4+3];default:return}},me.getTotalCodewordsCount=function(r,o){switch(o){case s.L:return t[(r-1)*4+0];case s.M:return t[(r-1)*4+1];case s.Q:return t[(r-1)*4+2];case s.H:return t[(r-1)*4+3];default:return}},me}var $e={},oe={},Nt;function _s(){if(Nt)return oe;Nt=1;const s=new Uint8Array(512),e=new Uint8Array(256);return(function(){let n=1;for(let r=0;r<255;r++)s[r]=n,e[n]=r,n<<=1,n&256&&(n^=285);for(let r=255;r<512;r++)s[r]=s[r-255]})(),oe.log=function(n){if(n<1)throw new Error("log("+n+")");return e[n]},oe.exp=function(n){return s[n]},oe.mul=function(n,r){return n===0||r===0?0:s[e[n]+e[r]]},oe}var $t;function Es(){return $t||($t=1,(function(s){const e=_s();s.mul=function(n,r){const o=new Uint8Array(n.length+r.length-1);for(let a=0;a<n.length;a++)for(let c=0;c<r.length;c++)o[a+c]^=e.mul(n[a],r[c]);return o},s.mod=function(n,r){let o=new Uint8Array(n);for(;o.length-r.length>=0;){const a=o[0];for(let i=0;i<r.length;i++)o[i]^=e.mul(r[i],a);let c=0;for(;c<o.length&&o[c]===0;)c++;o=o.slice(c)}return o},s.generateECPolynomial=function(n){let r=new Uint8Array([1]);for(let o=0;o<n;o++)r=s.mul(r,new Uint8Array([1,e.exp(o)]));return r}})($e)),$e}var Fe,Ft;function xs(){if(Ft)return Fe;Ft=1;const s=Es();function e(t){this.genPoly=void 0,this.degree=t,this.degree&&this.initialize(this.degree)}return e.prototype.initialize=function(n){this.degree=n,this.genPoly=s.generateECPolynomial(this.degree)},e.prototype.encode=function(n){if(!this.genPoly)throw new Error("Encoder not initialized");const r=new Uint8Array(n.length+this.degree);r.set(n);const o=s.mod(r,this.genPoly),a=this.degree-o.length;if(a>0){const c=new Uint8Array(this.degree);return c.set(o,a),c}return o},Fe=e,Fe}var ze={},je={},Oe={},zt;function bn(){return zt||(zt=1,Oe.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}),Oe}var $={},jt;function Tn(){if(jt)return $;jt=1;const s="[0-9]+",e="[A-Z $%*+\\-./:]+";let t="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";t=t.replace(/u/g,"\\u");const n="(?:(?![A-Z0-9 $%*+\\-./:]|"+t+`)(?:.|[\r
159
+ ]))+`;$.KANJI=new RegExp(t,"g"),$.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),$.BYTE=new RegExp(n,"g"),$.NUMERIC=new RegExp(s,"g"),$.ALPHANUMERIC=new RegExp(e,"g");const r=new RegExp("^"+t+"$"),o=new RegExp("^"+s+"$"),a=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return $.testKanji=function(i){return r.test(i)},$.testNumeric=function(i){return o.test(i)},$.testAlphanumeric=function(i){return a.test(i)},$}var Ot;function G(){return Ot||(Ot=1,(function(s){const e=bn(),t=Tn();s.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},s.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},s.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},s.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},s.MIXED={bit:-1},s.getCharCountIndicator=function(o,a){if(!o.ccBits)throw new Error("Invalid mode: "+o);if(!e.isValid(a))throw new Error("Invalid version: "+a);return a>=1&&a<10?o.ccBits[0]:a<27?o.ccBits[1]:o.ccBits[2]},s.getBestModeForData=function(o){return t.testNumeric(o)?s.NUMERIC:t.testAlphanumeric(o)?s.ALPHANUMERIC:t.testKanji(o)?s.KANJI:s.BYTE},s.toString=function(o){if(o&&o.id)return o.id;throw new Error("Invalid mode")},s.isValid=function(o){return o&&o.bit&&o.ccBits};function n(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"numeric":return s.NUMERIC;case"alphanumeric":return s.ALPHANUMERIC;case"kanji":return s.KANJI;case"byte":return s.BYTE;default:throw new Error("Unknown mode: "+r)}}s.from=function(o,a){if(s.isValid(o))return o;try{return n(o)}catch{return a}}})(je)),je}var Ht;function As(){return Ht||(Ht=1,(function(s){const e=J(),t=kn(),n=ct(),r=G(),o=bn(),a=7973,c=e.getBCHDigit(a);function i(g,m,d){for(let w=1;w<=40;w++)if(m<=s.getCapacity(w,d,g))return w}function u(g,m){return r.getCharCountIndicator(g,m)+4}function l(g,m){let d=0;return g.forEach(function(w){const f=u(w.mode,m);d+=f+w.getBitsLength()}),d}function h(g,m){for(let d=1;d<=40;d++)if(l(g,d)<=s.getCapacity(d,m,r.MIXED))return d}s.from=function(m,d){return o.isValid(m)?parseInt(m,10):d},s.getCapacity=function(m,d,w){if(!o.isValid(m))throw new Error("Invalid QR Code version");typeof w>"u"&&(w=r.BYTE);const f=e.getSymbolTotalCodewords(m),p=t.getTotalCodewordsCount(m,d),v=(f-p)*8;if(w===r.MIXED)return v;const y=v-u(w,m);switch(w){case r.NUMERIC:return Math.floor(y/10*3);case r.ALPHANUMERIC:return Math.floor(y/11*2);case r.KANJI:return Math.floor(y/13);case r.BYTE:default:return Math.floor(y/8)}},s.getBestVersionForData=function(m,d){let w;const f=n.from(d,n.M);if(Array.isArray(m)){if(m.length>1)return h(m,f);if(m.length===0)return 1;w=m[0]}else w=m;return i(w.mode,w.getLength(),f)},s.getEncodedBits=function(m){if(!o.isValid(m)||m<7)throw new Error("Invalid QR Code version");let d=m<<12;for(;e.getBCHDigit(d)-c>=0;)d^=a<<e.getBCHDigit(d)-c;return m<<12|d}})(ze)),ze}var He={},Wt;function Ls(){if(Wt)return He;Wt=1;const s=J(),e=1335,t=21522,n=s.getBCHDigit(e);return He.getEncodedBits=function(o,a){const c=o.bit<<3|a;let i=c<<10;for(;s.getBCHDigit(i)-n>=0;)i^=e<<s.getBCHDigit(i)-n;return(c<<10|i)^t},He}var We={},Ve,Vt;function Ss(){if(Vt)return Ve;Vt=1;const s=G();function e(t){this.mode=s.NUMERIC,this.data=t.toString()}return e.getBitsLength=function(n){return 10*Math.floor(n/3)+(n%3?n%3*3+1:0)},e.prototype.getLength=function(){return this.data.length},e.prototype.getBitsLength=function(){return e.getBitsLength(this.data.length)},e.prototype.write=function(n){let r,o,a;for(r=0;r+3<=this.data.length;r+=3)o=this.data.substr(r,3),a=parseInt(o,10),n.put(a,10);const c=this.data.length-r;c>0&&(o=this.data.substr(r),a=parseInt(o,10),n.put(a,c*3+1))},Ve=e,Ve}var Ke,Kt;function Rs(){if(Kt)return Ke;Kt=1;const s=G(),e=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function t(n){this.mode=s.ALPHANUMERIC,this.data=n}return t.getBitsLength=function(r){return 11*Math.floor(r/2)+6*(r%2)},t.prototype.getLength=function(){return this.data.length},t.prototype.getBitsLength=function(){return t.getBitsLength(this.data.length)},t.prototype.write=function(r){let o;for(o=0;o+2<=this.data.length;o+=2){let a=e.indexOf(this.data[o])*45;a+=e.indexOf(this.data[o+1]),r.put(a,11)}this.data.length%2&&r.put(e.indexOf(this.data[o]),6)},Ke=t,Ke}var Qe,Qt;function Is(){if(Qt)return Qe;Qt=1;const s=G();function e(t){this.mode=s.BYTE,typeof t=="string"?this.data=new TextEncoder().encode(t):this.data=new Uint8Array(t)}return e.getBitsLength=function(n){return n*8},e.prototype.getLength=function(){return this.data.length},e.prototype.getBitsLength=function(){return e.getBitsLength(this.data.length)},e.prototype.write=function(t){for(let n=0,r=this.data.length;n<r;n++)t.put(this.data[n],8)},Qe=e,Qe}var Je,Jt;function Ds(){if(Jt)return Je;Jt=1;const s=G(),e=J();function t(n){this.mode=s.KANJI,this.data=n}return t.getBitsLength=function(r){return r*13},t.prototype.getLength=function(){return this.data.length},t.prototype.getBitsLength=function(){return t.getBitsLength(this.data.length)},t.prototype.write=function(n){let r;for(r=0;r<this.data.length;r++){let o=e.toSJIS(this.data[r]);if(o>=33088&&o<=40956)o-=33088;else if(o>=57408&&o<=60351)o-=49472;else throw new Error("Invalid SJIS character: "+this.data[r]+`
160
+ Make sure your charset is UTF-8`);o=(o>>>8&255)*192+(o&255),n.put(o,13)}},Je=t,Je}var Ge={exports:{}},Gt;function Ps(){return Gt||(Gt=1,(function(s){var e={single_source_shortest_paths:function(t,n,r){var o={},a={};a[n]=0;var c=e.PriorityQueue.make();c.push(n,0);for(var i,u,l,h,g,m,d,w,f;!c.empty();){i=c.pop(),u=i.value,h=i.cost,g=t[u]||{};for(l in g)g.hasOwnProperty(l)&&(m=g[l],d=h+m,w=a[l],f=typeof a[l]>"u",(f||w>d)&&(a[l]=d,c.push(l,d),o[l]=u))}if(typeof r<"u"&&typeof a[r]>"u"){var p=["Could not find a path from ",n," to ",r,"."].join("");throw new Error(p)}return o},extract_shortest_path_from_predecessor_list:function(t,n){for(var r=[],o=n;o;)r.push(o),t[o],o=t[o];return r.reverse(),r},find_path:function(t,n,r){var o=e.single_source_shortest_paths(t,n,r);return e.extract_shortest_path_from_predecessor_list(o,r)},PriorityQueue:{make:function(t){var n=e.PriorityQueue,r={},o;t=t||{};for(o in n)n.hasOwnProperty(o)&&(r[o]=n[o]);return r.queue=[],r.sorter=t.sorter||n.default_sorter,r},default_sorter:function(t,n){return t.cost-n.cost},push:function(t,n){var r={value:t,cost:n};this.queue.push(r),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};s.exports=e})(Ge)),Ge.exports}var Yt;function Ms(){return Yt||(Yt=1,(function(s){const e=G(),t=Ss(),n=Rs(),r=Is(),o=Ds(),a=Tn(),c=J(),i=Ps();function u(p){return unescape(encodeURIComponent(p)).length}function l(p,v,y){const k=[];let C;for(;(C=p.exec(y))!==null;)k.push({data:C[0],index:C.index,mode:v,length:C[0].length});return k}function h(p){const v=l(a.NUMERIC,e.NUMERIC,p),y=l(a.ALPHANUMERIC,e.ALPHANUMERIC,p);let k,C;return c.isKanjiModeEnabled()?(k=l(a.BYTE,e.BYTE,p),C=l(a.KANJI,e.KANJI,p)):(k=l(a.BYTE_KANJI,e.BYTE,p),C=[]),v.concat(y,k,C).sort(function(A,x){return A.index-x.index}).map(function(A){return{data:A.data,mode:A.mode,length:A.length}})}function g(p,v){switch(v){case e.NUMERIC:return t.getBitsLength(p);case e.ALPHANUMERIC:return n.getBitsLength(p);case e.KANJI:return o.getBitsLength(p);case e.BYTE:return r.getBitsLength(p)}}function m(p){return p.reduce(function(v,y){const k=v.length-1>=0?v[v.length-1]:null;return k&&k.mode===y.mode?(v[v.length-1].data+=y.data,v):(v.push(y),v)},[])}function d(p){const v=[];for(let y=0;y<p.length;y++){const k=p[y];switch(k.mode){case e.NUMERIC:v.push([k,{data:k.data,mode:e.ALPHANUMERIC,length:k.length},{data:k.data,mode:e.BYTE,length:k.length}]);break;case e.ALPHANUMERIC:v.push([k,{data:k.data,mode:e.BYTE,length:k.length}]);break;case e.KANJI:v.push([k,{data:k.data,mode:e.BYTE,length:u(k.data)}]);break;case e.BYTE:v.push([{data:k.data,mode:e.BYTE,length:u(k.data)}])}}return v}function w(p,v){const y={},k={start:{}};let C=["start"];for(let b=0;b<p.length;b++){const A=p[b],x=[];for(let T=0;T<A.length;T++){const S=A[T],_=""+b+T;x.push(_),y[_]={node:S,lastCount:0},k[_]={};for(let L=0;L<C.length;L++){const E=C[L];y[E]&&y[E].node.mode===S.mode?(k[E][_]=g(y[E].lastCount+S.length,S.mode)-g(y[E].lastCount,S.mode),y[E].lastCount+=S.length):(y[E]&&(y[E].lastCount=S.length),k[E][_]=g(S.length,S.mode)+4+e.getCharCountIndicator(S.mode,v))}}C=x}for(let b=0;b<C.length;b++)k[C[b]].end=0;return{map:k,table:y}}function f(p,v){let y;const k=e.getBestModeForData(p);if(y=e.from(v,k),y!==e.BYTE&&y.bit<k.bit)throw new Error('"'+p+'" cannot be encoded with mode '+e.toString(y)+`.
161
+ Suggested mode is: `+e.toString(k));switch(y===e.KANJI&&!c.isKanjiModeEnabled()&&(y=e.BYTE),y){case e.NUMERIC:return new t(p);case e.ALPHANUMERIC:return new n(p);case e.KANJI:return new o(p);case e.BYTE:return new r(p)}}s.fromArray=function(v){return v.reduce(function(y,k){return typeof k=="string"?y.push(f(k,null)):k.data&&y.push(f(k.data,k.mode)),y},[])},s.fromString=function(v,y){const k=h(v,c.isKanjiModeEnabled()),C=d(k),b=w(C,y),A=i.find_path(b.map,"start","end"),x=[];for(let T=1;T<A.length-1;T++)x.push(b.table[A[T]].node);return s.fromArray(m(x))},s.rawSplit=function(v){return s.fromArray(h(v,c.isKanjiModeEnabled()))}})(We)),We}var Xt;function qs(){if(Xt)return De;Xt=1;const s=J(),e=ct(),t=vs(),n=ks(),r=bs(),o=Ts(),a=Cs(),c=kn(),i=xs(),u=As(),l=Ls(),h=G(),g=Ms();function m(b,A){const x=b.size,T=o.getPositions(A);for(let S=0;S<T.length;S++){const _=T[S][0],L=T[S][1];for(let E=-1;E<=7;E++)if(!(_+E<=-1||x<=_+E))for(let R=-1;R<=7;R++)L+R<=-1||x<=L+R||(E>=0&&E<=6&&(R===0||R===6)||R>=0&&R<=6&&(E===0||E===6)||E>=2&&E<=4&&R>=2&&R<=4?b.set(_+E,L+R,!0,!0):b.set(_+E,L+R,!1,!0))}}function d(b){const A=b.size;for(let x=8;x<A-8;x++){const T=x%2===0;b.set(x,6,T,!0),b.set(6,x,T,!0)}}function w(b,A){const x=r.getPositions(A);for(let T=0;T<x.length;T++){const S=x[T][0],_=x[T][1];for(let L=-2;L<=2;L++)for(let E=-2;E<=2;E++)L===-2||L===2||E===-2||E===2||L===0&&E===0?b.set(S+L,_+E,!0,!0):b.set(S+L,_+E,!1,!0)}}function f(b,A){const x=b.size,T=u.getEncodedBits(A);let S,_,L;for(let E=0;E<18;E++)S=Math.floor(E/3),_=E%3+x-8-3,L=(T>>E&1)===1,b.set(S,_,L,!0),b.set(_,S,L,!0)}function p(b,A,x){const T=b.size,S=l.getEncodedBits(A,x);let _,L;for(_=0;_<15;_++)L=(S>>_&1)===1,_<6?b.set(_,8,L,!0):_<8?b.set(_+1,8,L,!0):b.set(T-15+_,8,L,!0),_<8?b.set(8,T-_-1,L,!0):_<9?b.set(8,15-_-1+1,L,!0):b.set(8,15-_-1,L,!0);b.set(T-8,8,1,!0)}function v(b,A){const x=b.size;let T=-1,S=x-1,_=7,L=0;for(let E=x-1;E>0;E-=2)for(E===6&&E--;;){for(let R=0;R<2;R++)if(!b.isReserved(S,E-R)){let O=!1;L<A.length&&(O=(A[L]>>>_&1)===1),b.set(S,E-R,O),_--,_===-1&&(L++,_=7)}if(S+=T,S<0||x<=S){S-=T,T=-T;break}}}function y(b,A,x){const T=new t;x.forEach(function(R){T.put(R.mode.bit,4),T.put(R.getLength(),h.getCharCountIndicator(R.mode,b)),R.write(T)});const S=s.getSymbolTotalCodewords(b),_=c.getTotalCodewordsCount(b,A),L=(S-_)*8;for(T.getLengthInBits()+4<=L&&T.put(0,4);T.getLengthInBits()%8!==0;)T.putBit(0);const E=(L-T.getLengthInBits())/8;for(let R=0;R<E;R++)T.put(R%2?17:236,8);return k(T,b,A)}function k(b,A,x){const T=s.getSymbolTotalCodewords(A),S=c.getTotalCodewordsCount(A,x),_=T-S,L=c.getBlocksCount(A,x),E=T%L,R=L-E,O=Math.floor(T/L),re=Math.floor(_/L),Rn=re+1,ut=O-re,In=new i(ut);let be=0;const le=new Array(L),lt=new Array(L);let Te=0;const Dn=new Uint8Array(b.buffer);for(let Y=0;Y<L;Y++){const _e=Y<R?re:Rn;le[Y]=Dn.slice(be,be+_e),lt[Y]=In.encode(le[Y]),be+=_e,Te=Math.max(Te,_e)}const Ce=new Uint8Array(T);let ht=0,F,z;for(F=0;F<Te;F++)for(z=0;z<L;z++)F<le[z].length&&(Ce[ht++]=le[z][F]);for(F=0;F<ut;F++)for(z=0;z<L;z++)Ce[ht++]=lt[z][F];return Ce}function C(b,A,x,T){let S;if(Array.isArray(b))S=g.fromArray(b);else if(typeof b=="string"){let O=A;if(!O){const re=g.rawSplit(b);O=u.getBestVersionForData(re,x)}S=g.fromString(b,O||40)}else throw new Error("Invalid data");const _=u.getBestVersionForData(S,x);if(!_)throw new Error("The amount of data is too big to be stored in a QR Code");if(!A)A=_;else if(A<_)throw new Error(`
162
+ The chosen QR Code version cannot contain this amount of data.
163
+ Minimum version required to store current data is: `+_+`.
164
+ `);const L=y(A,x,S),E=s.getSymbolSize(A),R=new n(E);return m(R,A),d(R),w(R,A),p(R,x,0),A>=7&&f(R,A),v(R,L),isNaN(T)&&(T=a.getBestMask(R,p.bind(null,R,x))),a.applyMask(T,R),p(R,x,T),{modules:R,version:A,errorCorrectionLevel:x,maskPattern:T,segments:S}}return De.create=function(A,x){if(typeof A>"u"||A==="")throw new Error("No input text");let T=e.M,S,_;return typeof x<"u"&&(T=e.from(x.errorCorrectionLevel,e.M),S=u.from(x.version),_=a.from(x.maskPattern),x.toSJISFunc&&s.setToSJISFunction(x.toSJISFunc)),C(A,S,T,_)},De}var Ye={},Xe={},Zt;function Cn(){return Zt||(Zt=1,(function(s){function e(t){if(typeof t=="number"&&(t=t.toString()),typeof t!="string")throw new Error("Color should be defined as hex string");let n=t.slice().replace("#","").split("");if(n.length<3||n.length===5||n.length>8)throw new Error("Invalid hex color: "+t);(n.length===3||n.length===4)&&(n=Array.prototype.concat.apply([],n.map(function(o){return[o,o]}))),n.length===6&&n.push("F","F");const r=parseInt(n.join(""),16);return{r:r>>24&255,g:r>>16&255,b:r>>8&255,a:r&255,hex:"#"+n.slice(0,6).join("")}}s.getOptions=function(n){n||(n={}),n.color||(n.color={});const r=typeof n.margin>"u"||n.margin===null||n.margin<0?4:n.margin,o=n.width&&n.width>=21?n.width:void 0,a=n.scale||4;return{width:o,scale:o?4:a,margin:r,color:{dark:e(n.color.dark||"#000000ff"),light:e(n.color.light||"#ffffffff")},type:n.type,rendererOpts:n.rendererOpts||{}}},s.getScale=function(n,r){return r.width&&r.width>=n+r.margin*2?r.width/(n+r.margin*2):r.scale},s.getImageWidth=function(n,r){const o=s.getScale(n,r);return Math.floor((n+r.margin*2)*o)},s.qrToImageData=function(n,r,o){const a=r.modules.size,c=r.modules.data,i=s.getScale(a,o),u=Math.floor((a+o.margin*2)*i),l=o.margin*i,h=[o.color.light,o.color.dark];for(let g=0;g<u;g++)for(let m=0;m<u;m++){let d=(g*u+m)*4,w=o.color.light;if(g>=l&&m>=l&&g<u-l&&m<u-l){const f=Math.floor((g-l)/i),p=Math.floor((m-l)/i);w=h[c[f*a+p]?1:0]}n[d++]=w.r,n[d++]=w.g,n[d++]=w.b,n[d]=w.a}}})(Xe)),Xe}var en;function Bs(){return en||(en=1,(function(s){const e=Cn();function t(r,o,a){r.clearRect(0,0,o.width,o.height),o.style||(o.style={}),o.height=a,o.width=a,o.style.height=a+"px",o.style.width=a+"px"}function n(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}s.render=function(o,a,c){let i=c,u=a;typeof i>"u"&&(!a||!a.getContext)&&(i=a,a=void 0),a||(u=n()),i=e.getOptions(i);const l=e.getImageWidth(o.modules.size,i),h=u.getContext("2d"),g=h.createImageData(l,l);return e.qrToImageData(g.data,o,i),t(h,u,l),h.putImageData(g,0,0),u},s.renderToDataURL=function(o,a,c){let i=c;typeof i>"u"&&(!a||!a.getContext)&&(i=a,a=void 0),i||(i={});const u=s.render(o,a,i),l=i.type||"image/png",h=i.rendererOpts||{};return u.toDataURL(l,h.quality)}})(Ye)),Ye}var Ze={},tn;function Us(){if(tn)return Ze;tn=1;const s=Cn();function e(r,o){const a=r.a/255,c=o+'="'+r.hex+'"';return a<1?c+" "+o+'-opacity="'+a.toFixed(2).slice(1)+'"':c}function t(r,o,a){let c=r+o;return typeof a<"u"&&(c+=" "+a),c}function n(r,o,a){let c="",i=0,u=!1,l=0;for(let h=0;h<r.length;h++){const g=Math.floor(h%o),m=Math.floor(h/o);!g&&!u&&(u=!0),r[h]?(l++,h>0&&g>0&&r[h-1]||(c+=u?t("M",g+a,.5+m+a):t("m",i,0),i=0,u=!1),g+1<o&&r[h+1]||(c+=t("h",l),l=0)):i++}return c}return Ze.render=function(o,a,c){const i=s.getOptions(a),u=o.modules.size,l=o.modules.data,h=u+i.margin*2,g=i.color.light.a?"<path "+e(i.color.light,"fill")+' d="M0 0h'+h+"v"+h+'H0z"/>':"",m="<path "+e(i.color.dark,"stroke")+' d="'+n(l,u,i.margin)+'"/>',d='viewBox="0 0 '+h+" "+h+'"',f='<svg xmlns="http://www.w3.org/2000/svg" '+(i.width?'width="'+i.width+'" height="'+i.width+'" ':"")+d+' shape-rendering="crispEdges">'+g+m+`</svg>
165
+ `;return typeof c=="function"&&c(null,f),f},Ze}var nn;function Ns(){if(nn)return X;nn=1;const s=ws(),e=qs(),t=Bs(),n=Us();function r(o,a,c,i,u){const l=[].slice.call(arguments,1),h=l.length,g=typeof l[h-1]=="function";if(!g&&!s())throw new Error("Callback required as last argument");if(g){if(h<2)throw new Error("Too few arguments provided");h===2?(u=c,c=a,a=i=void 0):h===3&&(a.getContext&&typeof u>"u"?(u=i,i=void 0):(u=i,i=c,c=a,a=void 0))}else{if(h<1)throw new Error("Too few arguments provided");return h===1?(c=a,a=i=void 0):h===2&&!a.getContext&&(i=c,c=a,a=void 0),new Promise(function(m,d){try{const w=e.create(c,i);m(o(w,a,i))}catch(w){d(w)}})}try{const m=e.create(c,i);u(null,o(m,a,i))}catch(m){u(m)}}return X.create=e.create,X.toCanvas=r.bind(null,t.render),X.toDataURL=r.bind(null,t.renderToDataURL),X.toString=r.bind(null,function(o,a,c){return n.render(o,c)}),X}var $s=Ns();const Fs=pn($s),zs=s=>{var e={errorCorrectionLevel:"H",type:"image/jpeg",margin:1,width:300};let t=null;const n=async i=>{const u=new URL(window.location.href),l=new URL(u.pathname,u.origin);l.searchParams.set("state","1-"+i),console.log("生成登录二维码链接:",l.toString());var h=s||document.getElementById("qrcode");await Fs.toDataURL(h,l.toString(),e)},r=async i=>{const u=await fetch(`/api/router?path=wx&key=checkLogin&state=${i}`).then(l=>l.json());if(u.code===200){console.log(u);const l=u.data;l&&(localStorage.setItem("token",l.accessToken),await q.setLoginToken(l)),c(),ne()}else t=setTimeout(()=>{r(i),console.log("继续检测登录状态")},2e3)},o=Math.random().toString(36).substring(2,15);n(o),r(o);const a=setInterval(()=>{const i=Math.random().toString(36).substring(2,15);clearTimeout(t),n(i),r(i),console.log("更新二维码")},9e4),c=()=>{clearTimeout(t),clearInterval(a),console.log("停止检测登录状态")};return{createQrcode:n,clear:c}};function js(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var et={exports:{}},rn;function Os(){return rn||(rn=1,(function(s){var e=Object.prototype.hasOwnProperty,t="~";function n(){}Object.create&&(n.prototype=Object.create(null),new n().__proto__||(t=!1));function r(i,u,l){this.fn=i,this.context=u,this.once=l||!1}function o(i,u,l,h,g){if(typeof l!="function")throw new TypeError("The listener must be a function");var m=new r(l,h||i,g),d=t?t+u:u;return i._events[d]?i._events[d].fn?i._events[d]=[i._events[d],m]:i._events[d].push(m):(i._events[d]=m,i._eventsCount++),i}function a(i,u){--i._eventsCount===0?i._events=new n:delete i._events[u]}function c(){this._events=new n,this._eventsCount=0}c.prototype.eventNames=function(){var u=[],l,h;if(this._eventsCount===0)return u;for(h in l=this._events)e.call(l,h)&&u.push(t?h.slice(1):h);return Object.getOwnPropertySymbols?u.concat(Object.getOwnPropertySymbols(l)):u},c.prototype.listeners=function(u){var l=t?t+u:u,h=this._events[l];if(!h)return[];if(h.fn)return[h.fn];for(var g=0,m=h.length,d=new Array(m);g<m;g++)d[g]=h[g].fn;return d},c.prototype.listenerCount=function(u){var l=t?t+u:u,h=this._events[l];return h?h.fn?1:h.length:0},c.prototype.emit=function(u,l,h,g,m,d){var w=t?t+u:u;if(!this._events[w])return!1;var f=this._events[w],p=arguments.length,v,y;if(f.fn){switch(f.once&&this.removeListener(u,f.fn,void 0,!0),p){case 1:return f.fn.call(f.context),!0;case 2:return f.fn.call(f.context,l),!0;case 3:return f.fn.call(f.context,l,h),!0;case 4:return f.fn.call(f.context,l,h,g),!0;case 5:return f.fn.call(f.context,l,h,g,m),!0;case 6:return f.fn.call(f.context,l,h,g,m,d),!0}for(y=1,v=new Array(p-1);y<p;y++)v[y-1]=arguments[y];f.fn.apply(f.context,v)}else{var k=f.length,C;for(y=0;y<k;y++)switch(f[y].once&&this.removeListener(u,f[y].fn,void 0,!0),p){case 1:f[y].fn.call(f[y].context);break;case 2:f[y].fn.call(f[y].context,l);break;case 3:f[y].fn.call(f[y].context,l,h);break;case 4:f[y].fn.call(f[y].context,l,h,g);break;default:if(!v)for(C=1,v=new Array(p-1);C<p;C++)v[C-1]=arguments[C];f[y].fn.apply(f[y].context,v)}}return!0},c.prototype.on=function(u,l,h){return o(this,u,l,h,!1)},c.prototype.once=function(u,l,h){return o(this,u,l,h,!0)},c.prototype.removeListener=function(u,l,h,g){var m=t?t+u:u;if(!this._events[m])return this;if(!l)return a(this,m),this;var d=this._events[m];if(d.fn)d.fn===l&&(!g||d.once)&&(!h||d.context===h)&&a(this,m);else{for(var w=0,f=[],p=d.length;w<p;w++)(d[w].fn!==l||g&&!d[w].once||h&&d[w].context!==h)&&f.push(d[w]);f.length?this._events[m]=f.length===1?f[0]:f:a(this,m)}return this},c.prototype.removeAllListeners=function(u){var l;return u?(l=t?t+u:u,this._events[l]&&a(this,l)):(this._events=new n,this._eventsCount=0),this},c.prototype.off=c.prototype.removeListener,c.prototype.addListener=c.prototype.on,c.prefixed=t,c.EventEmitter=c,s.exports=c})(et)),et.exports}var Hs=Os(),Ws=js(Hs),sn=s=>{const e=s.timeout||3e5,t=s.interval||1e3,n=s?.checkSuccess||(()=>!0),r=s.signal;return new Promise(async(o,a)=>{let c,i=setTimeout(()=>{clearTimeout(c),o({code:500,message:"timeout"})},e);const u=s.fn||(()=>!0),l=async()=>{if(r?.aborted)return clearInterval(c),clearTimeout(i),o({code:499,message:"operation cancelled"});const h=await u();n(h)?(clearInterval(c),clearTimeout(i),o({code:200,data:h})):setTimeout(()=>{l()},t)};r&&r.addEventListener("abort",()=>{clearInterval(c),clearTimeout(i),o({code:499,message:"operation cancelled"})}),l()})};class _n{modules=new Map;event;loading;static reRunFn=sn;timeout=300*1e3;constructor(){this.event=new Ws,this.loading=!1}listenKey(e,t){const n=t?.timeout??this.timeout;return new Promise(r=>{const o=setTimeout(()=>{this.event.removeListener(e,a),r({code:500,message:"timeout"})},n),a=c=>{if(clearTimeout(o),c)return r({code:500,message:c});const i=this.modules.get(e);i?.loadSuccessClear&&this.remove(e),r({code:200,data:i?.modules})};this.event.once(e,a)})}async hasLoaded(e,t){if(!e)return{code:404,message:"key is required"};if(!this.modules.has(e)){const o=t?.isExist??!0,a=t?.timeout??this.timeout;return o?await this.listenKey(e,{timeout:a}):{code:404}}const r=this.modules.get(e);return r?.status==="loaded"?{code:200,data:r.modules}:r?.status==="loading"?await this.listenKey(e,{timeout:t?.timeout??this.timeout}):r?.status==="error"?{code:500,message:"load error"}:r?.status==="cancel"?{code:499,message:"operation cancelled"}:{code:404}}async loadFn(e,t){const n=t.key;if(!n)return{code:404,message:"key is required"};const r={key:t.key,status:"loading",loading:!0,loadSuccessClear:t.loadSuccessClear??!0};let o="";try{const a=t.isReRun??!1;let c;if(!a)this.modules.set(n,r),c=await e();else{r.controller=new AbortController;const i=r.controller.signal;this.modules.set(n,r);const u=await sn({timeout:t.timeout,interval:t.interval,checkSuccess:t.checkSuccess,fn:e,signal:i});if(r.controller=null,u.code===499)return r.status="cancel",{code:499,message:"operation cancelled"};if(u.code!==200)throw new Error(u.message);c=u.data}return r.modules=c,r.status="loaded",{code:200,data:c}}catch(a){return o=a.message,r.status="error",{code:500,message:a}}finally{r.loading=!1,this.modules.set(t.key,r),o?this.event.emit(t.key,o):this.event.emit(t.key)}}async load(e,t){this.loading=!0;const n=t.key;if(!n)return{code:404,message:"key is required"};if(t?.force&&this.remove(n),this.modules.has(n))return await this.hasLoaded(n);if(typeof e=="function")return this.loadFn(e,t);console.error("loadContent is not a function and not has loaded")}remove(e){this.modules.has(e)&&(this.checkRemoveController(e),this.modules.delete(e))}emitLoaded(e){this.checkRemoveController(e),this.event.emit(e)}setModule(e,t,n){const r={key:e,status:"loaded",loading:!1,modules:t||{},...n};return this.modules.set(e,r),this.emitLoaded(e),r}cancel(e){this.checkRemoveController(e)}checkRemoveController(e){const t=this.modules.get(e);t?.controller&&(t.controller?.abort?.(),delete t.controller,this.modules.set(e,t))}}var j=globalThis||window||self,En=(s,e="config",t)=>{const n=j[e],r=n||s;return n||(r?j[e]=r:j[e]={}),j[e]},ye=(s,e,t="config",n={})=>{const r=En({},t);if(s&&typeof r[s]<"u")return r[s];if(s&&e){if(typeof e!="function"&&(r[s]=e),typeof e=="function"){const o=e();if(o instanceof Promise)return o.then(a=>(r[s]=a,a));r[s]=o}return r[s]}if(s){const o=new _n,a=async()=>r[s],c=n.timeout||300*1e3;return(async()=>(await o.load(a,{key:s,isReRun:!0,checkSuccess:()=>r[s],timeout:c,interval:1e3})).code!==200?(console.error("load key error"),null):r[s])()}return console.error("key is empty "),null},xn=(s,e="config",t)=>{const n=En({},e),r=t?.timeout;if(s&&delete n[s],t?.getNew&&t.init)return ye(s,t.init,e,{timeout:r});if(t?.getNew)return ye(s,null,e,{timeout:r})},we=(s,e,t)=>t?.isNew?xn(s,"context",{getNew:!0,init:e,...t}):ye(s,e,"context",t),on=we,an=(s,e,t)=>t?.isNew?xn(s,"config",{getNew:!0,init:e,...t}):ye(s,e,"config",t);class ve{static isInit=!1;static init(e){if(ve.isInit)return;const{load:t=!0,page:n=!1}=e||{};ve.isInit=!0,j.useConfigKey=an,j.useContextKey=we,j.use=on,j.webEnv={useConfigKey:an,useContextKey:we,use:on},t&&(j.Load=_n)}}ve.init();const Vs=(s=6)=>"id-"+Math.random().toString(36).slice(2,s+2),An=we("login-emitter",mn),Ln="wxff97d569b1db16b6",Ks='<svg t="1764510467010" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1958" width="32" height="32"><path d="M615.904 388.48c8.8 0 17.536 0.64 26.176 1.6-23.52-109.536-140.608-190.912-274.272-190.912C218.4 199.2 96 301.056 96 430.4c0 74.656 40.736 135.936 108.768 183.488l-27.2 81.792 95.04-47.648c33.984 6.72 61.28 13.632 95.2 13.632 8.544 0 16.992-0.416 25.376-1.088a202.496 202.496 0 0 1-8.384-56.96c0-118.752 101.984-215.136 231.104-215.136zM469.76 314.784c20.48 0 34.016 13.472 34.016 33.92 0 20.352-13.536 34.016-34.016 34.016-20.384 0-40.832-13.664-40.832-34.016 0-20.448 20.448-33.92 40.832-33.92zM279.52 382.72c-20.384 0-40.928-13.664-40.928-34.016 0-20.448 20.544-33.92 40.928-33.92 20.352 0 33.92 13.472 33.92 33.92 0 20.384-13.568 34.016-33.92 34.016z" fill="" p-id="1959"></path><path d="M864 600.352c0-108.672-108.736-197.28-230.88-197.28-129.344 0-231.2 88.576-231.2 197.28 0 108.864 101.856 197.248 231.2 197.248 27.072 0 54.368-6.816 81.568-13.632l74.56 40.8-20.448-67.904C823.328 715.936 864 661.664 864 600.352z m-305.856-34.016c-13.536 0-27.2-13.44-27.2-27.2 0-13.568 13.664-27.2 27.2-27.2 20.576 0 34.016 13.632 34.016 27.2 0 13.76-13.44 27.2-34.016 27.2z m149.536 0c-13.44 0-27.008-13.44-27.008-27.2 0-13.568 13.568-27.2 27.008-27.2 20.352 0 34.016 13.632 34.016 27.2 0 13.76-13.664 27.2-34.016 27.2z" fill="" p-id="1960"></path></svg>',Qs='<svg t="1764511395617" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3882" width="32" height="32"><path d="M256 259.584c-29.184 0-51.2 14.848-51.2 44.032s29.184 44.032 51.2 44.032c29.184 0 44.032-14.848 44.032-44.032s-22.016-44.032-44.032-44.032zM541.184 303.616c0-29.184-14.848-44.032-44.032-44.032-29.184 0-51.2 14.848-51.2 44.032s29.184 44.032 51.2 44.032c29.696 0 44.032-22.016 44.032-44.032zM614.4 508.416c-14.848 0-36.352 14.848-36.352 36.352 0 14.848 14.848 36.352 36.352 36.352 29.184 0 44.032-14.848 44.032-36.352 0-14.336-14.848-36.352-44.032-36.352z" p-id="3883"></path><path d="M1024 625.152c0-138.752-124.416-256-285.184-270.848-29.184-153.6-189.952-263.168-373.248-263.168C160.768 91.648 0 230.4 0 406.016c0 95.232 44.032 175.616 138.752 241.152L109.568 742.4c0 7.168 0 14.848 7.168 22.016h14.848l117.248-58.368h14.848c36.352 7.168 66.048 14.848 109.568 14.848 14.848 0 44.032-7.168 44.032-7.168C460.8 822.784 578.048 896 716.8 896c36.352 0 73.216-7.168 102.4-14.848l87.552 51.2h14.848c7.168-7.168 7.168-7.168 7.168-14.848l-22.016-87.552c80.896-58.368 117.248-131.584 117.248-204.8z m-621.568 51.2h-36.352c-36.352 0-66.048-7.168-95.232-14.848l-22.016-7.168h-7.168L153.6 698.368l22.016-66.048c0-7.168 0-14.848-7.168-14.848C80.384 559.616 36.352 486.4 36.352 398.848 36.352 245.248 182.784 128 358.4 128c160.768 0 300.032 95.232 329.216 226.816-168.448 0-300.032 117.248-300.032 263.168 7.168 22.016 14.848 44.032 14.848 58.368z m467.968 132.096c-7.168 7.168-7.168 7.168-7.168 14.848l14.848 51.2L819.2 844.8h-14.848c-29.184 7.168-66.048 14.848-95.232 14.848-146.432 0-270.848-102.4-270.848-226.816 0-131.584 124.416-233.984 270.848-233.984s270.848 102.4 270.848 226.816c0 65.536-36.352 123.904-109.568 182.784z" p-id="3884"></path><path d="M804.352 508.416c-14.848 0-36.352 14.848-36.352 36.352 0 14.848 14.848 36.352 36.352 36.352 29.184 0 44.032-14.848 44.032-36.352 0-14.336-14.336-36.352-44.032-36.352z" p-id="3885"></path></svg>',Js='<svg t="1764511425462" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5097" width="32" height="32"><path d="M820.409449 797.228346q0 25.19685-10.07874 46.866142t-27.716535 38.299213-41.322835 26.204724-50.897638 9.574803l-357.795276 0q-27.212598 0-50.897638-9.574803t-41.322835-26.204724-27.716535-38.299213-10.07874-46.866142l0-675.275591q0-25.19685 10.07874-47.370079t27.716535-38.80315 41.322835-26.204724 50.897638-9.574803l357.795276 0q27.212598 0 50.897638 9.574803t41.322835 26.204724 27.716535 38.80315 10.07874 47.370079l0 675.275591zM738.771654 170.330709l-455.559055 0 0 577.511811 455.559055 0 0-577.511811zM510.992126 776.062992q-21.165354 0-36.787402 15.11811t-15.622047 37.291339q0 21.165354 15.622047 36.787402t36.787402 15.622047q22.173228 0 37.291339-15.622047t15.11811-36.787402q0-22.173228-15.11811-37.291339t-37.291339-15.11811zM591.622047 84.661417q0-8.062992-5.03937-12.598425t-11.086614-4.535433l-128 0q-5.03937 0-10.582677 4.535433t-5.543307 12.598425 5.03937 12.598425 11.086614 4.535433l128 0q6.047244 0 11.086614-4.535433t5.03937-12.598425z" p-id="5098"></path></svg>',Gs='<svg t="1764511500570" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10511" width="32" height="32"><path d="M768.9216 422.72768 372.06016 422.72768C378.88 365.21984 329.37984 131.42016 512.2048 125.72672c173.83424-6.59456 146.78016 213.34016 146.78016 213.34016l85.13536 0.57344c0 0 24.73984-294.4-231.91552-295.8336C232.09984 58.01984 297.82016 377.18016 289.28 422.72768c1.98656 0 4.56704 0 7.29088 0-55.88992 0-101.21216 45.34272-101.21216 101.21216l0 337.38752c0 55.88992 45.34272 101.21216 101.21216 101.21216l472.35072 0c55.88992 0 101.21216-45.34272 101.21216-101.21216L870.13376 523.93984C870.13376 468.0704 824.79104 422.72768 768.9216 422.72768zM566.4768 717.02528l0 76.84096c0 18.57536-15.1552 33.73056-33.73056 33.73056-18.57536 0-33.73056-15.1552-33.73056-33.73056l0-76.84096c-20.09088-11.69408-33.73056-33.21856-33.73056-58.12224 0-37.2736 30.208-67.4816 67.4816-67.4816 37.2736 0 67.4816 30.208 67.4816 67.4816C600.22784 683.80672 586.58816 705.3312 566.4768 717.02528z" fill="#272636" p-id="10512"></path></svg>',Ys='<svg t="1764511538113" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11994" width="32" height="32"><path d="M512 85.333333C264.533333 85.333333 64 285.866667 64 533.333333s200.533333 448 448 448 448-200.533333 448-448S759.466667 85.333333 512 85.333333z m0 810.666667c-200.533333 0-362.666667-162.133333-362.666667-362.666667S311.466667 170.666667 512 170.666667s362.666667 162.133333 362.666667 362.666667-162.133333 362.666667-362.666667 362.666667z" p-id="11995"></path><path d="M512 298.666667c-119.466667 0-216.533333 97.066667-216.533333 216.533333s97.066667 216.533333 216.533333 216.533333 216.533333-97.066667 216.533333-216.533333-97.066667-216.533333-216.533333-216.533333z m0 362.666666c-80.853333 0-146.133333-65.28-146.133333-146.133333s65.28-146.133333 146.133333-146.133333 146.133333 65.28 146.133333 146.133333-65.28 146.133333-146.133333 146.133333z" p-id="11996"></path></svg>',tt={pwd:Gs,web:Ys,phone:Js,wxmpSvg:Ks,wxOpenSvg:Qs},Sn=[{id:"wechat",name:"微信登录",icon:"wxmpSvg",appid:"wx9378885c8390e09b"},{id:"password",name:"密码登录",icon:"pwd"},{id:"web",name:"网页登录",icon:"web"},{id:"wechat-mp",name:"微信公众号",icon:"wxOpenSvg",appid:Ln},{id:"wechat-mp-ticket",name:"微信公众号",icon:"wxOpenSvg"},{id:"phone",name:"手机号登录",icon:"phone"}],Xs=()=>{let s=window.location.host,e=[];const t=s.includes("cnb.run");switch((s.includes("localhost")||s.endsWith("51515"))&&(s="localhost"),t&&(s="cnb.run"),s){case"kevisual.xiongxiao.me":e=["password","wechat-mp"];break;case"kevisual.cn":e=["password","wechat-mp-ticket","wechat"];break;case"localhost":e=["web","password"];break;case"cnb.run":e=["web","password"];break;default:e=["password","web","phone","wechat","wechat-mp","wechat-mp-ticket"];break}return Sn.filter(r=>e.includes(r.id))},Zs=s=>Sn.find(e=>e.id===s);class eo extends HTMLElement{constructor(){super(),this.selectedMethod="password",this.loginMethods=[],this.#e=null}setLoginMethods(e){this.loginMethods=e,this.render()}connectedCallback(){this.attachShadow({mode:"open"}),this.bindEvents(),ls();const e=this.getAttribute("method");let t=this.id;t||(t=Vs(6),this.id=t);let n=!1;if(e){const r=e?e.split(","):[];if(r.length>0){let o=[];for(const a of r){const c=Zs(a);c?.id&&o.push(c)}o.length>0&&(n=!0,this.loginMethods=o,this.selectedMethod=o[0].id)}}n||(this.loginMethods=Xs(),this.selectedMethod=this.loginMethods[0].id),this.render()}#e;selectLoginMethod(e){this.selectedMethod=e,this.render(),this.#e&&(this.#e(),this.#e=null)}getMethodData(e){return this.loginMethods.find(t=>t.id===e)}bindEvents(){this.shadowRoot&&(this.shadowRoot.addEventListener("click",e=>{const n=e.target.closest(".login-method");if(n){const r=n.getAttribute("data-method");r&&this.selectLoginMethod(r)}}),this.shadowRoot.addEventListener("submit",e=>{const t=e.target;t&&t.id==="loginForm"&&(e.preventDefault(),this.handleLogin())}),An.on("login-success",()=>{console.log("收到登录成功事件,处理后续逻辑")}))}handleLogin(){const e=this.getFormData();ss({loginMethod:this.selectedMethod,data:e}),this.dispatchEvent(new CustomEvent("login",{detail:{method:this.selectedMethod,data:e},bubbles:!0}))}getFormData(){if(!this.shadowRoot)return{};switch(this.selectedMethod){case"password":const e=this.shadowRoot.querySelector("#username"),t=this.shadowRoot.querySelector("#password");return{username:e?.value||"",password:t?.value||""};case"web":return{};case"phone":const n=this.shadowRoot.querySelector("#phone"),r=this.shadowRoot.querySelector("#code");return{phone:n?.value||"",code:r?.value||""};case"wechat":return{wechatCode:"mock_wechat_code"};case"wechat-mp":return{wechatMpCode:"mock_wechat_mp_code"};default:return{}}}renderPasswordForm(){return D`
166
+ <form id="loginForm" class="login-form">
167
+ <div class="form-group">
168
+ <input
169
+ type="text"
170
+ id="username"
171
+ name="username"
172
+ placeholder="请输入用户名"
173
+ autocomplete="username"
174
+ required
175
+ />
176
+ </div>
177
+ <div class="form-group">
178
+ <input
179
+ type="password"
180
+ id="password"
181
+ name="password"
182
+ placeholder="请输入密码"
183
+ autocomplete="current-password"
184
+ required
185
+ />
186
+ </div>
187
+ <button type="submit" class="login-button">登录</button>
188
+ </form>
189
+ `}renderWebForm(){return D`
190
+ <div class="web-login">
191
+ <button type="button" class="refresh-button" @click=${this.handleLogin.bind(this)}>点击登录</button>
192
+ <slot></slot>
193
+ </div>
194
+ `}renderPhoneForm(){return D`
195
+ <form id="loginForm" class="login-form">
196
+ <div class="form-group">
197
+ <input
198
+ type="tel"
199
+ id="phone"
200
+ name="phone"
201
+ placeholder="请输入手机号"
202
+ pattern="[0-9]{11}"
203
+ autocomplete="tel"
204
+ required
205
+ />
206
+ </div>
207
+ <div class="form-group code-group">
208
+ <input
209
+ type="text"
210
+ id="code"
211
+ name="code"
212
+ placeholder="请输入验证码"
213
+ autocomplete="one-time-code"
214
+ required
215
+ />
216
+ <button type="button" class="code-button" @click=${this.sendVerificationCode}>获取验证码</button>
217
+ </div>
218
+ <button type="submit" class="login-button">登录</button>
219
+ </form>
220
+ `}renderWechatForm(){let e=document.querySelector("#weixinLogin");if(!e){e=document.createElement("div"),e.id="weixinLogin";const t=this.id;document.querySelector(`#${t}`).appendChild(e)}return D`
221
+ <div class="wechat-login">
222
+ <slot></slot>
223
+ </div>
224
+ `}renderWechatMpForm(){const e=this;return setTimeout(()=>{const t=e.shadowRoot.querySelector("#qrcode"),{clear:n}=zs(t);e.#e=n},0),D`
225
+ <div class="wechat-login">
226
+ <div class="qr-container">
227
+ <div class="qr-placeholder">
228
+ <canvas id='qrcode' width='300' height='300'></canvas>
229
+ <p class="qr-desc">请使用微信扫描二维码登录</p>
230
+ </div>
231
+ </div>
232
+ </div>
233
+ `}renderWechatMpTicketForm(){const e=this;return setTimeout(async()=>{const t=await ms();if(!t)return;const n=e.shadowRoot.querySelector(".qrcode");if(t.url){n.src=t.url;const r=ps(t.ticket);e.#e=r}},0),D`
234
+ <div class="wechat-login">
235
+ <div class="qr-container">
236
+ <div class="qr-placeholder">
237
+ <img class="qrcode" width="300" height="300" data-appid="" data-size="200" data-ticket=""></img>
238
+ <p class="qr-desc">请使用微信扫描二维码登录</p>
239
+ </div>
240
+ </div>
241
+ </div>
242
+ `}sendVerificationCode(){console.log("发送验证码")}refreshQR(){console.log("刷新二维码")}renderLoginForm(){const e=this.getMethodData(this.selectedMethod);switch(this.selectedMethod){case"password":return this.renderPasswordForm();case"web":return this.renderWebForm();case"phone":return this.renderPhoneForm();case"wechat":return ys({appid:e?.appid||""}),this.renderWechatForm();case"wechat-mp":return this.renderWechatMpForm();case"wechat-mp-ticket":return this.renderWechatMpTicketForm();default:return this.renderPasswordForm()}}render(){if(!this.shadowRoot)return;const e=n=>typeof n=="string"&&!tt[n]?D`<span class="method-icon-emoji">${n}</span>`:typeof n=="string"&&tt[n]?D`<span class="method-icon-svg">${vt(tt[n])}</span>`:typeof n=="string"&&(n.includes("<svg")||n.includes("<?xml"))?D`<span class="method-icon-svg">${vt(n)}</span>`:D`<span class="method-icon-emoji">${n}</span>`,t=D`
243
+ <style>
244
+ :host {
245
+ display: block;
246
+ width: 100%;
247
+ min-width: 400px;
248
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
249
+ }
250
+
251
+ .login-sidebar {
252
+ background: white;
253
+ border-radius: 12px;
254
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
255
+ overflow: hidden;
256
+ }
257
+
258
+ .login-methods {
259
+ display: flex;
260
+ background: #f5f5f5;
261
+ border-bottom: 1px solid #000000;
262
+ }
263
+
264
+ .login-method {
265
+ flex: 1;
266
+ padding: 16px 8px;
267
+ border: none;
268
+ background: none;
269
+ cursor: pointer;
270
+ display: flex;
271
+ flex-direction: column;
272
+ align-items: center;
273
+ gap: 4px;
274
+ transition: all 0.3s ease;
275
+ position: relative;
276
+ }
277
+
278
+ .login-method:hover {
279
+ background: #d0d0d0;
280
+ }
281
+
282
+ .login-method.active {
283
+ background: white;
284
+ color: #000000;
285
+ }
286
+
287
+ .login-method.active::after {
288
+ content: '';
289
+ position: absolute;
290
+ bottom: 0;
291
+ left: 0;
292
+ right: 0;
293
+ height: 2px;
294
+ background: #000000;
295
+ }
296
+
297
+ .method-icon {
298
+ font-size: 20px;
299
+ display: flex;
300
+ align-items: center;
301
+ justify-content: center;
302
+ width: 24px;
303
+ height: 24px;
304
+ }
305
+
306
+ .method-icon-emoji {
307
+ font-size: 20px;
308
+ line-height: 1;
309
+ }
310
+
311
+ .method-icon-svg {
312
+ display: flex;
313
+ align-items: center;
314
+ justify-content: center;
315
+ }
316
+
317
+ .method-icon-svg svg {
318
+ width: 32px;
319
+ height: 32px;
320
+ display: block;
321
+ }
322
+
323
+ .method-name {
324
+ font-size: 12px;
325
+ font-weight: 500;
326
+ }
327
+
328
+ .login-content {
329
+ padding: 32px 24px;
330
+ }
331
+ .impowerBox .qrcode {
332
+ width: 200px !important;
333
+ }
334
+ .login-form {
335
+ display: flex;
336
+ flex-direction: column;
337
+ gap: 16px;
338
+ }
339
+
340
+ .form-group {
341
+ position: relative;
342
+ }
343
+
344
+ .form-group input {
345
+ width: 100%;
346
+ padding: 12px 16px;
347
+ border: 2px solid #cccccc;
348
+ border-radius: 8px;
349
+ font-size: 14px;
350
+ transition: border-color 0.3s ease;
351
+ box-sizing: border-box;
352
+ }
353
+
354
+ .form-group input:focus {
355
+ outline: none;
356
+ border-color: #000000;
357
+ }
358
+
359
+ .code-group {
360
+ display: flex;
361
+ gap: 12px;
362
+ }
363
+
364
+ .code-group input {
365
+ flex: 1;
366
+ }
367
+
368
+ .code-button {
369
+ padding: 0 16px;
370
+ background: #6c757d;
371
+ color: white;
372
+ border: none;
373
+ border-radius: 8px;
374
+ font-size: 14px;
375
+ cursor: pointer;
376
+ white-space: nowrap;
377
+ transition: background-color 0.3s ease;
378
+ }
379
+
380
+ .code-button:hover {
381
+ background: #5a6268;
382
+ }
383
+
384
+ .login-button {
385
+ padding: 12px;
386
+ background: #000000;
387
+ color: white;
388
+ border: none;
389
+ border-radius: 8px;
390
+ font-size: 16px;
391
+ font-weight: 500;
392
+ cursor: pointer;
393
+ transition: background-color 0.3s ease;
394
+ }
395
+
396
+ .login-button:hover {
397
+ background: #333333;
398
+ }
399
+
400
+ .wechat-login {
401
+ display: flex;
402
+ flex-direction: column;
403
+ align-items: center;
404
+ gap: 20px;
405
+ }
406
+
407
+ .qr-container {
408
+ width: 340px;
409
+ height: 340px;
410
+ border: 2px solid #000000;
411
+ border-radius: 8px;
412
+ display: flex;
413
+ align-items: center;
414
+ justify-content: center;
415
+ }
416
+
417
+ .qr-placeholder {
418
+ text-align: center;
419
+ color: #333333;
420
+ }
421
+
422
+ .qr-icon {
423
+ font-size: 48px;
424
+ margin-bottom: 8px;
425
+ }
426
+
427
+ .qr-desc {
428
+ font-size: 12px;
429
+ margin-top: 4px;
430
+ }
431
+
432
+ .refresh-button {
433
+ padding: 8px 16px;
434
+ background: #6c757d;
435
+ color: white;
436
+ border: none;
437
+ border-radius: 6px;
438
+ font-size: 14px;
439
+ cursor: pointer;
440
+ transition: background-color 0.3s ease;
441
+ }
442
+
443
+ .refresh-button:hover {
444
+ background: #5a6268;
445
+ }
446
+ .method-icon svg {
447
+ width: 24px;
448
+ height: 24px;
449
+ }
450
+ </style>
451
+
452
+ <div class="login-sidebar">
453
+ <div class="login-methods">
454
+ ${this.loginMethods.map(n=>D`
455
+ <button
456
+ class="login-method ${this.selectedMethod===n.id?"active":""}"
457
+ data-method="${n.id}"
458
+ >
459
+ ${e(n.icon)}
460
+ <span class="method-name">${n.name}</span>
461
+ </button>
462
+ `)}
463
+ </div>
464
+
465
+ <div class="login-content">
466
+ ${this.renderLoginForm()}
467
+ </div>
468
+ </div>
469
+ `;dn(t,this.shadowRoot)}}customElements.define("kv-login",eo);An.once("login-success",async s=>{(await ds()).code===400&&rs()});